test sanaviron 2.0.x error en reporte

Hola,

Estamos testeando la versión Sanaviron-Quilmes 2.0.x, y en Inicio > Ventas > Reportes > Listado de cobranzas por ventas, si no se filtras por nada y se presiona “filtrar”, tira el siguiente error:

Se han encontrado los siguientes problemas:
El resultado de SELECT INTO es una tabla resultante de más de una fila o el resultado de la subconsulta de un predicado básico es más de un valor. Más info…
SQLSTATE: db_21000

CODIGO: 7

MENSAJE: ERROR: una subconsulta utilizada como expresión retornó más de un registro

SQL: SELECT \n com.numero_comprobante, \n com.presentacion, \n \n uv.descripcion as unidad_venta_descripcion,\n cve.descripcion as concepto_venta_descripcion, \n v.leyenda,\n \n co.id,\n date_trunc(“seconds”, co.cobrada_en) as cobrada_en,\n co.importe,\n co.id_externo,\n date_trunc(“seconds”, co.liberada_en) as liberada_en,\n co.estado,\n co.id_medio_pago,\n co.id_comprobante,\n \n cv.conciliada_automaticamente,\n date(cv.conciliada_en) conciliada_en,\n cv.conciliada_por,\n cv.importe importe_cobranza_venta,\n \n CASE WHEN p.es_persona_fisica THEN p.nombres || " " ||p.apellido ELSE p.razon_social END cliente,\n \n mp.descripcion medio_de_pago, \n \n v.id id_venta,\n ve.descripcion as venta_estado_descripcion,\n \n (select distinct rp.id_pilaga as id_recaudacion_pilaga from recaudaciones_pilaga rp join recaudaciones_pilaga_cf rpc on rp.id = rpc.id_recaudacion_pilaga and rpc.id_venta = v.id\n where rp.estado = “F”) as id_recaudacion_pilaga\n \n FROM \n ventas v\n LEFT JOIN ventas_articulos va ON va.id_venta = v.id\n LEFT JOIN ventas_estados ve ON v.id_venta_estado = ve.id\n LEFT JOIN conceptos_ventas cve ON va.id_concepto_venta = cve.id\n JOIN cobranzas_ventas cv ON v.id = cv.id_venta\n JOIN cobranzas co ON co.id = cv.id_cobranza\n JOIN medios_pagos mp ON co.id_medio_pago = mp.id\n \n JOIN unidades_ventas uv on uv.id = v.id_unidad_venta\n \n LEFT JOIN clientes cli ON co.id_cliente = cli.id\n LEFT JOIN personas p ON cli.id_persona = p.id\n LEFT JOIN comprobantes com ON co.id_comprobante = com.id\n LEFT JOIN comprobantes_templates ct on com.id_comprobante_template = ct.id\n \n WHERE 1 = 1 \n \n GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21\n ORDER BY v.id desc\n ; – toba_log: 355

Solamente devuelve datos si se selecciona un cliente.

Muchas gracias!!!

Hola Pablo,
Se está recuperando más de un registro en una subconsulta, suena a problema de datos pero por favor cargá un GDS así podemos analizar que pasa exactamente con alguna base núcleo anonimizada tuya.

De nada!
Ana María

Ok! Genero un gds y subo la base.

Mucha gracias!!

Hola:

En /nucleo/src/siu/sq/nucleo/daos/dao_cobranzas.php, en la funcion

public function get_cobranzas_de_venta($filtro = []), en desarrollo probe modificando la consulta (lo q esta en negrita modifique), ya no tira errores, donde tiraba error devuelve todos los datos:

    $sql = "SELECT	
                com.numero_comprobante, 
                com.presentacion, 
                
                uv.descripcion as unidad_venta_descripcion,
                cve.descripcion as concepto_venta_descripcion, 
                v.leyenda,
            
                co.id,
                date_trunc('seconds', co.cobrada_en) as cobrada_en,
                co.importe,
                co.id_externo,
                date_trunc('seconds', co.liberada_en) as liberada_en,
                co.estado,
                co.id_medio_pago,
                co.id_comprobante,
            
                cv.conciliada_automaticamente,
                date(cv.conciliada_en) conciliada_en,
                cv.conciliada_por,
                cv.importe importe_cobranza_venta,
                
                CASE WHEN p.es_persona_fisica THEN p.nombres || ' ' ||p.apellido ELSE p.razon_social END cliente,
                
                mp.descripcion medio_de_pago, 
            
                v.id id_venta,
                ve.descripcion as venta_estado_descripcion,

– (select distinct rp.id_pilaga as id_recaudacion_pilaga
– from recaudaciones_pilaga rp join recaudaciones_pilaga_cf rpc on rp.id = rpc.id_recaudacion_pilaga
– and rpc.id_venta = v.id where rp.estado = ‘" . constantes::RECAUDACION_PILAGA_FINALADA . "’) as id_recaudacion_pilaga
rp.id_pilaga as id_recaudacion_pilaga
FROM
ventas v
LEFT JOIN ventas_articulos va ON va.id_venta = v.id
LEFT JOIN ventas_estados ve ON v.id_venta_estado = ve.id
LEFT JOIN conceptos_ventas cve ON va.id_concepto_venta = cve.id

LEFT JOIN recaudaciones_pilaga_cf rpc ON rpc.id_venta = v.id – agregado
LEFT JOIN recaudaciones_pilaga rp ON rp.id = rpc.id_recaudacion_pilaga and rp.estado = ‘" . constantes::RECAUDACION_PILAGA_FINALADA . "’ – agregado

	    JOIN cobranzas_ventas cv ON v.id = cv.id_venta
                JOIN cobranzas co ON co.id = cv.id_cobranza
                JOIN medios_pagos mp ON co.id_medio_pago = mp.id
            
                JOIN unidades_ventas uv on uv.id = v.id_unidad_venta
            
                LEFT JOIN clientes cli ON co.id_cliente = cli.id
                LEFT JOIN personas p ON cli.id_persona = p.id
                LEFT JOIN comprobantes com ON co.id_comprobante = com.id
                LEFT JOIN comprobantes_templates ct on com.id_comprobante_template = ct.id
                $join
            WHERE 1 = 1 
              $where
            GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 
            ORDER BY v.id desc
			  ;";

gracias!!!