En resumen, la universidad recibió una oferta en dólares por la compra de cierto sistema. Esa oferta debe ser así registrada en el sistema por temas legales. Luego, la misma se convirtió a pesos y se generaron los renglones que figuran con “monto unitario” y “monto total” en pesos. A continuación, en la ficha de dictamen de evaluación el valor “get_sumatoria_renglones_orden_merito” aparece con la moneda en dólares y el importe en pesos.
Mi pregunta es si este es un problema en la generación de datos y de qué forma podría evitarlo. Entiendo que debería calcular mediante el Jasper la suma de renglones preadjudicados por oferente (pero con la moneda correcta).
Hola Elián,
Cómo va?
Te queríamos consultar con respecto al parámetro " USAR_MONEDA_EXTRANJERA_OC" como lo está aplicado? ustedes personalizan las plantillas jasper?
Saludos.
Juan Manuel.
Hola Juan Manuel, muchas gracias por la respuesta.
Si, el parámetro “USAR_MONEDA_EXTRANJERA_OC” figura en “Si” para el valor de la institución (lo estamos usando).
La plantilla de la que estamos hablando está personalizada. El valor de “sum_renglon_orden_merito” se está utilizando para mostrar una leyenda:
"MONTO TOTAL ACONSEJADO PARA LA ADJUDICACION: " + $F{sum_renglon_orden_merito}
Según entiendo, la idea es mostrar la suma de los renglones preadjudicados por oferente.
Hola, pude reunir un poco más de información. El método que genera el campo sum_renglon_orden_merito es “get_sumatoria_renglones_orden_merito”. Aparentemente allí se le asigna como moneda la misma del oferente:
// solo para el caso que se necesite incluir ofertas tipo prorrogas
if(!isset($filtro['incluir_todas_ofertas']) || $filtro['incluir_todas_ofertas'] === false)
$where .=" AND ro.id_oferta_tipo NOT IN ('g')";
$sql="SELECT
sum(ro.monto_total) as sum_renglon_orden_merito
FROM
scp_actos_apertura aa,
scp_oferentes o,
scp_renglones_oferentes ro,
scp_oferentes_estimados_renglones oer
WHERE
aa.id_acto_apertura=o.id_acto_apertura
AND o.id_oferente=ro.id_oferente
AND ro.id_renglon_oferente=oer.id_renglon_oferente
{$where}
AND oer.orden_merito=1";
$rs=consultar_fuente($sql);
if(is_array($rs) && count($rs) > 0 && isset($rs[0]['sum_renglon_orden_merito'])){
[b]$oferentes=$this->get_oferentes_orden_merito($filtro);[/b]
if(isset($oferentes[0])){
[b]$moneda=dao_consultas()->get_moneda($oferentes[0]['id_moneda']);[/b]
$formateo = new diaguita_formateo('html');
$rs[0]['sum_renglon_orden_merito'] = $formateo->formato_moneda($rs[0]['sum_renglon_orden_merito'],$moneda['simbolo']);
return $rs;
}
}
}`
El problema radica al existir una diferencia entre la moneda del oferente y la moneda del renglón del mismo oferente con orden de mérito 1. El sistema termina generando el campo con importe correcto pero le asigna la moneda de la oferta (que podría no coincidir con la del renglón).
Lo mismo pasa con el campo sum_oferente_orden_merito. El método que genera este valor es “get_sumatoria_oferentes_orden_merito”:
` function get_sumatoria_oferentes_orden_merito($id_dictamen=‘’,$id_oferente=‘’)
{
$salida = array(‘sum_oferente_orden_merito’ => 0);
if($id_dictamen !=‘’ && $id_dictamen != ‘’){
$where=" AND oe.id_dictamen_evaluacion=$id_dictamen
AND oe.id_oferente=$id_oferente
";
$sql="SELECT
sum(ro.monto_total) as sum_oferente_orden_merito
FROM
scp_actos_apertura aa,
scp_oferentes o,
scp_oferentes_estimados oe,
scp_renglones_oferentes ro,
scp_oferentes_estimados_renglones oer
WHERE
aa.id_acto_apertura=o.id_acto_apertura
AND o.id_oferente=ro.id_oferente
AND o.id_oferente=oe.id_oferente
AND ro.id_renglon_oferente=oer.id_renglon_oferente
{$where}
AND oer.orden_merito=1
GROUP by o.id_oferente,oer.orden_merito,o.persona;";
$rs=consultar_fuente($sql);
if(is_array($rs) && count($rs) > 0 && isset($rs[0]['sum_oferente_orden_merito'])){
[b]$datos_oferente= dao_acto_apertura()->get_oferentes(array('id_oferente'=>$id_oferente));[/b]
[b]$moneda=dao_consultas()->get_moneda($datos_oferente[0]['id_moneda']);[/b]
$formateo = new diaguita_formateo('html');
$salida['sum_oferente_orden_merito'] = $formateo->formato_moneda($rs[0]['sum_oferente_orden_merito'],$moneda['simbolo']);
}
}
return $salida;
}`
Pasa lo mismo que comenté antes. El signo queda seteado como la oferta y el importe como el renglón.
Por lo que pudimos ver, aparentemente se trataría de un error en la visualización de la moneda cuando las ofertas y los renglones difieren en la moneda. Te pido que crees un GDS, así procedemos a revisar y corregirlo si efectivamente se trata de un error.