|
|
|
|
@ -94,106 +94,118 @@ object srvInfMargenArticulo: TsrvInfMargenArticulo
|
|
|
|
|
' ARTICULOS.PRECIO_NETO) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NE' +
|
|
|
|
|
'TO_ULT_VENT - ARTICULOS.PRECIO_NETO) * 100) / MARGEN_VENTAS.IMPO' +
|
|
|
|
|
'RTE_NETO_ULT_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_ULT_VENT_COMPRA,'#10#10'MAR' +
|
|
|
|
|
'GEN_VENTAS.IMPORTE_NETO_ULT_VENT - MARGEN_COMPRAS.IMPORTE_NETO_U' +
|
|
|
|
|
'LT_COMP AS IMP_MARGEN_ULT_VENT_ULT_COMP,'#10'CASE'#10'WHEN MARGEN_COMPR' +
|
|
|
|
|
'AS.IMPORTE_NETO_ULT_COMP = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMPORT' +
|
|
|
|
|
'E_NETO_ULT_VENT - MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP) > 0 THEN' +
|
|
|
|
|
#10' ((MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - MARGEN_COMPRAS.IMP' +
|
|
|
|
|
'ORTE_NETO_ULT_COMP) * 100) / MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT' +
|
|
|
|
|
#10'ELSE 0'#10'END'#10'AS POR_MARGEN_ULT_VENT_ULT_COMP,'#10#10'MARGEN_VENTAS.IMPO' +
|
|
|
|
|
'RTE_NETO_ULT_VENT - MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP AS IMP_' +
|
|
|
|
|
'MARGEN_ULT_VENT_PRO_COMP,'#10'CASE'#10'WHEN MARGEN_COMPRAS.IMPORTE_NETO' +
|
|
|
|
|
'_PRO_COMP = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT' +
|
|
|
|
|
' - MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP) > 0 THEN'#10' ((MARGEN_' +
|
|
|
|
|
'VENTAS.IMPORTE_NETO_ULT_VENT - MARGEN_COMPRAS.IMPORTE_NETO_PRO_C' +
|
|
|
|
|
'OMP) * 100) / MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT'#10'ELSE 0'#10'END'#10'AS ' +
|
|
|
|
|
'POR_MARGEN_ULT_VENT_PRO_COMP,'#10#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_V' +
|
|
|
|
|
'ENT - ARTICULOS.PRECIO_NETO AS IMP_MARGEN_PRO_VENT_COMPRA,'#10'CASE'#10 +
|
|
|
|
|
'WHEN ARTICULOS.PRECIO_NETO = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMP' +
|
|
|
|
|
'ORTE_NETO_PRO_VENT - ARTICULOS.PRECIO_NETO) > 0 THEN'#10' ((MARG' +
|
|
|
|
|
'EN_VENTAS.IMPORTE_NETO_PRO_VENT - ARTICULOS.PRECIO_NETO) * 100) ' +
|
|
|
|
|
'GEN_VENTAS.IMPORTE_NETO_ULT_VENT - COALESCE(MARGEN_COMPRAS.IMPOR' +
|
|
|
|
|
'TE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) AS IMP_MAR' +
|
|
|
|
|
'GEN_ULT_VENT_ULT_COMP,'#10'CASE'#10'WHEN COALESCE(MARGEN_COMPRAS.IMPORT' +
|
|
|
|
|
'E_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) = 0 THEN 10' +
|
|
|
|
|
'0'#10'WHEN (MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - COALESCE(MARGEN_CO' +
|
|
|
|
|
'MPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0))' +
|
|
|
|
|
') > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - COALESCE' +
|
|
|
|
|
'(MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO' +
|
|
|
|
|
'_NETO, 0))) * 100) / MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT'#10'ELSE 0'#10 +
|
|
|
|
|
'END'#10'AS POR_MARGEN_ULT_VENT_ULT_COMP,'#10#10'MARGEN_VENTAS.IMPORTE_NETO' +
|
|
|
|
|
'_ULT_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP, COALE' +
|
|
|
|
|
'SCE(ARTICULOS.PRECIO_NETO, 0)) AS IMP_MARGEN_ULT_VENT_PRO_COMP,'#10 +
|
|
|
|
|
'CASE'#10'WHEN COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP, COALES' +
|
|
|
|
|
'CE(ARTICULOS.PRECIO_NETO, 0)) = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.I' +
|
|
|
|
|
'MPORTE_NETO_ULT_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_PRO_' +
|
|
|
|
|
'COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0))) > 0 THEN'#10' ((MARGE' +
|
|
|
|
|
'N_VENTAS.IMPORTE_NETO_ULT_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE' +
|
|
|
|
|
'_NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0))) * 100) / MA' +
|
|
|
|
|
'RGEN_VENTAS.IMPORTE_NETO_ULT_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_ULT_V' +
|
|
|
|
|
'ENT_PRO_COMP,'#10#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - ARTICULOS.' +
|
|
|
|
|
'PRECIO_NETO AS IMP_MARGEN_PRO_VENT_COMPRA,'#10'CASE'#10'WHEN ARTICULOS.' +
|
|
|
|
|
'PRECIO_NETO = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMPORTE_NETO_PRO_VE' +
|
|
|
|
|
'NT - ARTICULOS.PRECIO_NETO) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORT' +
|
|
|
|
|
'E_NETO_PRO_VENT - ARTICULOS.PRECIO_NETO) * 100) / MARGEN_VENTAS.' +
|
|
|
|
|
'IMPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_PRO_VENT_COMPRA,'#10 +
|
|
|
|
|
#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - COALESCE(MARGEN_COMPRAS.I' +
|
|
|
|
|
'MPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) AS IMP' +
|
|
|
|
|
'_MARGEN_PRO_VENT_ULT_COMP,'#10'CASE'#10'WHEN COALESCE(MARGEN_COMPRAS.IM' +
|
|
|
|
|
'PORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) = 0 THE' +
|
|
|
|
|
'N 100'#10'WHEN (MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - COALESCE(MARGE' +
|
|
|
|
|
'N_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NETO,' +
|
|
|
|
|
' 0))) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - COAL' +
|
|
|
|
|
'ESCE(MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PR' +
|
|
|
|
|
'ECIO_NETO, 0))) * 100) / MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT'#10'ELS' +
|
|
|
|
|
'E 0'#10'END'#10'AS POR_MARGEN_PRO_VENT_ULT_COMP,'#10#10'MARGEN_VENTAS.IMPORTE_' +
|
|
|
|
|
'NETO_PRO_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP, C' +
|
|
|
|
|
'OALESCE(ARTICULOS.PRECIO_NETO, 0)) AS IMP_MARGEN_PRO_VENT_PRO_CO' +
|
|
|
|
|
'MP,'#10'CASE'#10'WHEN COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP, CO' +
|
|
|
|
|
'ALESCE(ARTICULOS.PRECIO_NETO, 0)) = 0 THEN 100'#10'WHEN (MARGEN_VENT' +
|
|
|
|
|
'AS.IMPORTE_NETO_PRO_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_' +
|
|
|
|
|
'PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0))) > 0 THEN'#10' ((M' +
|
|
|
|
|
'ARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - COALESCE(MARGEN_COMPRAS.IMP' +
|
|
|
|
|
'ORTE_NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0))) * 100) ' +
|
|
|
|
|
'/ MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_P' +
|
|
|
|
|
'RO_VENT_COMPRA,'#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - MARGEN_CO' +
|
|
|
|
|
'MPRAS.IMPORTE_NETO_ULT_COMP AS IMP_MARGEN_PRO_VENT_ULT_COMP,'#10'CAS' +
|
|
|
|
|
'E'#10'WHEN MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP = 0 THEN 100'#10'WHEN (' +
|
|
|
|
|
'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - MARGEN_COMPRAS.IMPORTE_NET' +
|
|
|
|
|
'O_ULT_COMP) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT ' +
|
|
|
|
|
'- MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP) * 100) / MARGEN_VENTAS.I' +
|
|
|
|
|
'MPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_PRO_VENT_ULT_COMP,' +
|
|
|
|
|
#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - MARGEN_COMPRAS.IMPORTE_N' +
|
|
|
|
|
'ETO_PRO_COMP AS IMP_MARGEN_PRO_VENT_PRO_COMP,'#10'CASE'#10'WHEN MARGEN_' +
|
|
|
|
|
'COMPRAS.IMPORTE_NETO_PRO_COMP = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.I' +
|
|
|
|
|
'MPORTE_NETO_PRO_VENT - MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP) > 0' +
|
|
|
|
|
' THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - MARGEN_COMPRA' +
|
|
|
|
|
'S.IMPORTE_NETO_PRO_COMP) * 100) / MARGEN_VENTAS.IMPORTE_NETO_PRO' +
|
|
|
|
|
'_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_PRO_VENT_PRO_COMP'#10#10'FROM'#10#10#10'(SELECT' +
|
|
|
|
|
' ID_EMPRESA, ID_CLIENTE, ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDA' +
|
|
|
|
|
'D_ULT_VENT),0) AS IMPORTE_UNIDAD_ULT_VENT,'#10' COALESCE(SUM(I' +
|
|
|
|
|
'MPORTE_NETO_ULT_VENT),0) AS IMPORTE_NETO_ULT_VENT, COALESCE(SUM(' +
|
|
|
|
|
'IMPORTE_PORTE_ULT_VENT),0) AS IMPORTE_PORTE_ULT_VENT,'#10' COA' +
|
|
|
|
|
'LESCE(SUM(IMPORTE_UNIDAD_PRO_VENT),0) AS IMPORTE_UNIDAD_PRO_VENT' +
|
|
|
|
|
', COALESCE(SUM(IMPORTE_NETO_PRO_VENT),0) AS IMPORTE_NETO_PRO_VEN' +
|
|
|
|
|
'T,'#10' COALESCE(SUM(IMPORTE_PORTE_PRO_VENT),0) AS IMPORTE_POR' +
|
|
|
|
|
'TE_PRO_VENT'#10#10' FROM'#10' (SELECT'#10' ID_EMPRESA, ID_CLIENTE, ID_A' +
|
|
|
|
|
'RTICULO,'#10' IMPORTE_UNIDAD_VENTA AS IMPORTE_UNIDAD_ULT_VENT, ' +
|
|
|
|
|
'IMPORTE_NETO_VENTA AS IMPORTE_NETO_ULT_VENT, IMPORTE_PORTE_VENTA' +
|
|
|
|
|
' AS IMPORTE_PORTE_ULT_VENT,'#10' NULL AS IMPORTE_UNIDAD_PRO_VEN' +
|
|
|
|
|
'T, NULL AS IMPORTE_NETO_PRO_VENT, NULL AS IMPORTE_PORTE_PRO_VENT' +
|
|
|
|
|
#10#10' FROM V_INF_ULTVEN_PORCLIENTE'#10#10' UNION ALL'#10#10' SELECT'#10' ' +
|
|
|
|
|
' FACTURAS_CLIENTE.ID_EMPRESA,'#10' FACTURAS_CLIENTE.ID_CLIEN' +
|
|
|
|
|
'TE,'#10' FACTURAS_CLIENTE_DETALLES.ID_ARTICULO,'#10' NULL, NUL' +
|
|
|
|
|
'L, NULL,'#10' AVG(FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD) AS ' +
|
|
|
|
|
'IMPORTE_UNIDAD_PRO_VENT,'#10' AVG(FACTURAS_CLIENTE_DETALLES.IMP' +
|
|
|
|
|
'ORTE_UNIDAD - (FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD * (FACTU' +
|
|
|
|
|
'RAS_CLIENTE_DETALLES.DESCUENTO / 100))) AS IMPORTE_NETO_PRO_VENT' +
|
|
|
|
|
','#10' AVG(FACTURAS_CLIENTE_DETALLES.IMPORTE_PORTE) AS IMPORTE_' +
|
|
|
|
|
'PORTE_PRO_VENT'#10#10' FROM FACTURAS_CLIENTE_DETALLES'#10' LEFT OUTE' +
|
|
|
|
|
'R JOIN FACTURAS_CLIENTE'#10' ON (FACTURAS_CLIENTE.ID = FACTURAS_C' +
|
|
|
|
|
'LIENTE_DETALLES.ID_FACTURA)'#10#10' WHERE (FACTURAS_CLIENTE_DETALLE' +
|
|
|
|
|
'S.ID_ARTICULO IS NOT NULL) AND (FACTURAS_CLIENTE_DETALLES.ID_ART' +
|
|
|
|
|
'ICULO > 0)'#10' AND (FACTURAS_CLIENTE_DETALLES.CANTIDAD > 0)'#10' ' +
|
|
|
|
|
' AND (FACTURAS_CLIENTE.FECHA_FACTURA BETWEEN :FECHAINI AND :F' +
|
|
|
|
|
'ECHAFIN)'#10' GROUP BY 1, 2, 3)'#10#10' GROUP BY 1, 2, 3'#10' having SUM(IM' +
|
|
|
|
|
'PORTE_NETO_PRO_VENT) > 0 /*Solo queremos aquellos articulos que ' +
|
|
|
|
|
'se hayan vendido en ese periodo de fechas*/'#10' ) MARGEN_VENTAS'#10#10#10 +
|
|
|
|
|
'LEFT JOIN'#10#10#10'(SELECT'#10' ID_EMPRESA, ID_ARTICULO, COALESCE(SUM(IM' +
|
|
|
|
|
'PORTE_UNIDAD_ULT_COMP),0) AS IMPORTE_UNIDAD_ULT_COMP, COALESCE(S' +
|
|
|
|
|
'UM(IMPORTE_NETO_ULT_COMP),0) AS IMPORTE_NETO_ULT_COMP,'#10' COALE' +
|
|
|
|
|
'SCE(SUM(IMPORTE_PORTE_ULT_COMP),0) AS IMPORTE_PORTE_ULT_COMP, CO' +
|
|
|
|
|
'ALESCE(SUM(IMPORTE_UNIDAD_PRO_COMP),SUM(IMPORTE_UNIDAD_ULT_COMP)' +
|
|
|
|
|
') AS IMPORTE_UNIDAD_PRO_COMP,'#10' COALESCE(SUM(IMPORTE_NETO_PRO_' +
|
|
|
|
|
'COMP),SUM(IMPORTE_NETO_ULT_COMP)) AS IMPORTE_NETO_PRO_COMP, COAL' +
|
|
|
|
|
'ESCE(SUM(IMPORTE_PORTE_PRO_COMP),SUM(IMPORTE_PORTE_ULT_COMP)) AS' +
|
|
|
|
|
' IMPORTE_PORTE_PRO_COMP'#10#10' FROM'#10' (SELECT'#10' ID_EMPRESA, ID_A' +
|
|
|
|
|
'RTICULO,'#10' IMPORTE_UNIDAD_COMPRA AS IMPORTE_UNIDAD_ULT_COMP,' +
|
|
|
|
|
' IMPORTE_NETO_COMPRA AS IMPORTE_NETO_ULT_COMP, IMPORTE_PORTE_COM' +
|
|
|
|
|
'PRA AS IMPORTE_PORTE_ULT_COMP,'#10' NULL AS IMPORTE_UNIDAD_PRO_' +
|
|
|
|
|
'COMP, NULL AS IMPORTE_NETO_PRO_COMP, NULL AS IMPORTE_PORTE_PRO_C' +
|
|
|
|
|
'OMP'#10#10' FROM V_INF_ULTCOM_PORARTICULO'#10#10' UNION ALL'#10#10' SELEC' +
|
|
|
|
|
'T'#10' FACTURAS_PROVEEDOR.ID_EMPRESA,'#10' FACTURAS_PROVEEDOR_' +
|
|
|
|
|
'DETALLES.ID_ARTICULO,'#10' NULL, NULL, NULL,'#10' AVG(FACTURAS' +
|
|
|
|
|
'_PROVEEDOR_DETALLES.IMPORTE_UNIDAD) AS IMPORTE_UNIDAD_PRO_COMP,'#10 +
|
|
|
|
|
' AVG(FACTURAS_PROVEEDOR_DETALLES.IMPORTE_UNIDAD - (FACTURAS' +
|
|
|
|
|
'_PROVEEDOR_DETALLES.IMPORTE_UNIDAD * (FACTURAS_PROVEEDOR_DETALLE' +
|
|
|
|
|
'S.DESCUENTO / 100))) AS IMPORTE_NETO_PRO_COMP,'#10' AVG(FACTURA' +
|
|
|
|
|
'S_PROVEEDOR_DETALLES.IMPORTE_PORTE) AS IMPORTE_PORTE_PRO_COMP'#10#10' ' +
|
|
|
|
|
' FROM FACTURAS_PROVEEDOR_DETALLES'#10' LEFT OUTER JOIN FACTURAS' +
|
|
|
|
|
'_PROVEEDOR'#10' ON (FACTURAS_PROVEEDOR.ID = FACTURAS_PROVEEDOR_DE' +
|
|
|
|
|
'TALLES.ID_FACTURA)'#10#10' WHERE (FACTURAS_PROVEEDOR_DETALLES.ID_AR' +
|
|
|
|
|
'TICULO IS NOT NULL) AND (FACTURAS_PROVEEDOR_DETALLES.ID_ARTICULO' +
|
|
|
|
|
' > 0)'#10' AND (FACTURAS_PROVEEDOR_DETALLES.CANTIDAD > 0)'#10' ' +
|
|
|
|
|
' /*Las compras promedio deben de calcularse desde el principio d' +
|
|
|
|
|
'e los tiempos hasta ahora*/'#10' AND (FACTURAS_PROVEEDOR.FECHA_' +
|
|
|
|
|
'FACTURA BETWEEN '#39'12.12.2000'#39' AND current_date)'#10' GROUP BY 1, 2' +
|
|
|
|
|
')'#10#10' GROUP BY 1, 2) MARGEN_COMPRAS'#10#10#10'ON (MARGEN_COMPRAS.ID_EMPRE' +
|
|
|
|
|
'SA = MARGEN_VENTAS.ID_EMPRESA)'#10'AND (MARGEN_COMPRAS.ID_ARTICULO =' +
|
|
|
|
|
' MARGEN_VENTAS.ID_ARTICULO)'#10#10#10'LEFT JOIN ARTICULOS ON (ARTICULOS.' +
|
|
|
|
|
'ID = MARGEN_VENTAS.ID_ARTICULO)'#10'LEFT JOIN CONTACTOS CLIENTES ON ' +
|
|
|
|
|
'(CLIENTES.ID = MARGEN_VENTAS.ID_CLIENTE)'#10'LEFT JOIN CLIENTES_DATO' +
|
|
|
|
|
'S ON (CLIENTES_DATOS.ID_CLIENTE = CLIENTES.ID)'#10'LEFT JOIN CONTACT' +
|
|
|
|
|
'OS AGENTES ON (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)'#10'LEFT JOIN ' +
|
|
|
|
|
'CONTACTOS PROVEEDORES ON (PROVEEDORES.ID = ARTICULOS.ID_PROVEEDO' +
|
|
|
|
|
'R)'#10'WHERE ARTICULOS.INVENTARIABLE = 1) INF_MARGEN_ARTICULOS'
|
|
|
|
|
'RO_VENT_PRO_COMP'#10#10'FROM'#10#10#10'(SELECT ID_EMPRESA, ID_CLIENTE, ID_ARTI' +
|
|
|
|
|
'CULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_VENT),0) AS IMPORTE_UNIDAD' +
|
|
|
|
|
'_ULT_VENT,'#10' COALESCE(SUM(IMPORTE_NETO_ULT_VENT),0) AS IMPO' +
|
|
|
|
|
'RTE_NETO_ULT_VENT, COALESCE(SUM(IMPORTE_PORTE_ULT_VENT),0) AS IM' +
|
|
|
|
|
'PORTE_PORTE_ULT_VENT,'#10' COALESCE(SUM(IMPORTE_UNIDAD_PRO_VEN' +
|
|
|
|
|
'T),0) AS IMPORTE_UNIDAD_PRO_VENT, COALESCE(SUM(IMPORTE_NETO_PRO_' +
|
|
|
|
|
'VENT),0) AS IMPORTE_NETO_PRO_VENT,'#10' COALESCE(SUM(IMPORTE_P' +
|
|
|
|
|
'ORTE_PRO_VENT),0) AS IMPORTE_PORTE_PRO_VENT'#10#10' FROM'#10' (SELECT'#10' ' +
|
|
|
|
|
' ID_EMPRESA, ID_CLIENTE, ID_ARTICULO,'#10' IMPORTE_UNIDAD_VE' +
|
|
|
|
|
'NTA AS IMPORTE_UNIDAD_ULT_VENT, IMPORTE_NETO_VENTA AS IMPORTE_NE' +
|
|
|
|
|
'TO_ULT_VENT, IMPORTE_PORTE_VENTA AS IMPORTE_PORTE_ULT_VENT,'#10' ' +
|
|
|
|
|
' NULL AS IMPORTE_UNIDAD_PRO_VENT, NULL AS IMPORTE_NETO_PRO_VENT' +
|
|
|
|
|
', NULL AS IMPORTE_PORTE_PRO_VENT'#10#10' FROM V_INF_ULTVEN_PORCLIEN' +
|
|
|
|
|
'TE'#10#10' UNION ALL'#10#10' SELECT'#10' FACTURAS_CLIENTE.ID_EMPRESA,' +
|
|
|
|
|
#10' FACTURAS_CLIENTE.ID_CLIENTE,'#10' FACTURAS_CLIENTE_DETAL' +
|
|
|
|
|
'LES.ID_ARTICULO,'#10' NULL, NULL, NULL,'#10' AVG(FACTURAS_CLIE' +
|
|
|
|
|
'NTE_DETALLES.IMPORTE_UNIDAD) AS IMPORTE_UNIDAD_PRO_VENT,'#10' A' +
|
|
|
|
|
'VG(FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD - (FACTURAS_CLIENTE_' +
|
|
|
|
|
'DETALLES.IMPORTE_UNIDAD * (FACTURAS_CLIENTE_DETALLES.DESCUENTO /' +
|
|
|
|
|
' 100))) AS IMPORTE_NETO_PRO_VENT,'#10' AVG(FACTURAS_CLIENTE_DET' +
|
|
|
|
|
'ALLES.IMPORTE_PORTE) AS IMPORTE_PORTE_PRO_VENT'#10#10' FROM FACTURA' +
|
|
|
|
|
'S_CLIENTE_DETALLES'#10' LEFT OUTER JOIN FACTURAS_CLIENTE'#10' ON (' +
|
|
|
|
|
'FACTURAS_CLIENTE.ID = FACTURAS_CLIENTE_DETALLES.ID_FACTURA)'#10#10' ' +
|
|
|
|
|
' WHERE (FACTURAS_CLIENTE_DETALLES.ID_ARTICULO IS NOT NULL) AND (' +
|
|
|
|
|
'FACTURAS_CLIENTE_DETALLES.ID_ARTICULO > 0)'#10' AND (FACTURAS_C' +
|
|
|
|
|
'LIENTE_DETALLES.CANTIDAD > 0)'#10' AND (FACTURAS_CLIENTE.FECHA_' +
|
|
|
|
|
'FACTURA BETWEEN :FECHAINI AND :FECHAFIN)'#10' GROUP BY 1, 2, 3)'#10#10 +
|
|
|
|
|
' GROUP BY 1, 2, 3'#10' having SUM(IMPORTE_NETO_PRO_VENT) > 0 /*Solo ' +
|
|
|
|
|
'queremos aquellos articulos que se hayan vendido en ese periodo ' +
|
|
|
|
|
'de fechas*/'#10' ) MARGEN_VENTAS'#10#10#10'LEFT JOIN'#10#10#10'(SELECT'#10' ID_EMPRE' +
|
|
|
|
|
'SA, ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_COMP),0) AS IMP' +
|
|
|
|
|
'ORTE_UNIDAD_ULT_COMP, COALESCE(SUM(IMPORTE_NETO_ULT_COMP),0) AS ' +
|
|
|
|
|
'IMPORTE_NETO_ULT_COMP,'#10' COALESCE(SUM(IMPORTE_PORTE_ULT_COMP),' +
|
|
|
|
|
'0) AS IMPORTE_PORTE_ULT_COMP, COALESCE(SUM(IMPORTE_UNIDAD_PRO_CO' +
|
|
|
|
|
'MP),SUM(IMPORTE_UNIDAD_ULT_COMP)) AS IMPORTE_UNIDAD_PRO_COMP,'#10' ' +
|
|
|
|
|
' COALESCE(SUM(IMPORTE_NETO_PRO_COMP),SUM(IMPORTE_NETO_ULT_COMP)' +
|
|
|
|
|
') AS IMPORTE_NETO_PRO_COMP, COALESCE(SUM(IMPORTE_PORTE_PRO_COMP)' +
|
|
|
|
|
',SUM(IMPORTE_PORTE_ULT_COMP)) AS IMPORTE_PORTE_PRO_COMP'#10#10' FROM'#10' ' +
|
|
|
|
|
' (SELECT'#10' ID_EMPRESA, ID_ARTICULO,'#10' IMPORTE_UNIDAD_CO' +
|
|
|
|
|
'MPRA AS IMPORTE_UNIDAD_ULT_COMP, IMPORTE_NETO_COMPRA AS IMPORTE_' +
|
|
|
|
|
'NETO_ULT_COMP, IMPORTE_PORTE_COMPRA AS IMPORTE_PORTE_ULT_COMP,'#10' ' +
|
|
|
|
|
' NULL AS IMPORTE_UNIDAD_PRO_COMP, NULL AS IMPORTE_NETO_PRO_C' +
|
|
|
|
|
'OMP, NULL AS IMPORTE_PORTE_PRO_COMP'#10#10' FROM V_INF_ULTCOM_PORAR' +
|
|
|
|
|
'TICULO'#10#10' UNION ALL'#10#10' SELECT'#10' FACTURAS_PROVEEDOR.ID_EM' +
|
|
|
|
|
'PRESA,'#10' FACTURAS_PROVEEDOR_DETALLES.ID_ARTICULO,'#10' NULL' +
|
|
|
|
|
', NULL, NULL,'#10' AVG(FACTURAS_PROVEEDOR_DETALLES.IMPORTE_UNID' +
|
|
|
|
|
'AD) AS IMPORTE_UNIDAD_PRO_COMP,'#10' AVG(FACTURAS_PROVEEDOR_DET' +
|
|
|
|
|
'ALLES.IMPORTE_UNIDAD - (FACTURAS_PROVEEDOR_DETALLES.IMPORTE_UNID' +
|
|
|
|
|
'AD * (FACTURAS_PROVEEDOR_DETALLES.DESCUENTO / 100))) AS IMPORTE_' +
|
|
|
|
|
'NETO_PRO_COMP,'#10' AVG(FACTURAS_PROVEEDOR_DETALLES.IMPORTE_POR' +
|
|
|
|
|
'TE) AS IMPORTE_PORTE_PRO_COMP'#10#10' FROM FACTURAS_PROVEEDOR_DETAL' +
|
|
|
|
|
'LES'#10' LEFT OUTER JOIN FACTURAS_PROVEEDOR'#10' ON (FACTURAS_PROV' +
|
|
|
|
|
'EEDOR.ID = FACTURAS_PROVEEDOR_DETALLES.ID_FACTURA)'#10#10' WHERE (F' +
|
|
|
|
|
'ACTURAS_PROVEEDOR_DETALLES.ID_ARTICULO IS NOT NULL) AND (FACTURA' +
|
|
|
|
|
'S_PROVEEDOR_DETALLES.ID_ARTICULO > 0)'#10' AND (FACTURAS_PROVEE' +
|
|
|
|
|
'DOR_DETALLES.CANTIDAD > 0)'#10' /*Las compras promedio deben de' +
|
|
|
|
|
' calcularse desde el principio de los tiempos hasta ahora*/'#10' ' +
|
|
|
|
|
' AND (FACTURAS_PROVEEDOR.FECHA_FACTURA BETWEEN '#39'12.12.2000'#39' AND' +
|
|
|
|
|
' current_date)'#10' GROUP BY 1, 2)'#10#10' GROUP BY 1, 2) MARGEN_COMPR' +
|
|
|
|
|
'AS'#10#10#10'ON (MARGEN_COMPRAS.ID_EMPRESA = MARGEN_VENTAS.ID_EMPRESA)'#10'A' +
|
|
|
|
|
'ND (MARGEN_COMPRAS.ID_ARTICULO = MARGEN_VENTAS.ID_ARTICULO)'#10#10#10'LE' +
|
|
|
|
|
'FT JOIN ARTICULOS ON (ARTICULOS.ID = MARGEN_VENTAS.ID_ARTICULO)'#10 +
|
|
|
|
|
'LEFT JOIN CONTACTOS CLIENTES ON (CLIENTES.ID = MARGEN_VENTAS.ID_' +
|
|
|
|
|
'CLIENTE)'#10'LEFT JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE ' +
|
|
|
|
|
'= CLIENTES.ID)'#10'LEFT JOIN CONTACTOS AGENTES ON (AGENTES.ID = CLIE' +
|
|
|
|
|
'NTES_DATOS.ID_AGENTE)'#10'LEFT JOIN CONTACTOS PROVEEDORES ON (PROVEE' +
|
|
|
|
|
'DORES.ID = ARTICULOS.ID_PROVEEDOR)'#10'WHERE ARTICULOS.INVENTARIABLE' +
|
|
|
|
|
' = 1) INF_MARGEN_ARTICULOS'#10
|
|
|
|
|
StatementType = stSQL
|
|
|
|
|
ColumnMappings = <
|
|
|
|
|
item
|
|
|
|
|
@ -677,103 +689,115 @@ object srvInfMargenArticulo: TsrvInfMargenArticulo
|
|
|
|
|
'E_NETO_ULT_VENT - ARTICULOS.PRECIO_NETO) > 0 THEN'#10' ((MARGEN_' +
|
|
|
|
|
'VENTAS.IMPORTE_NETO_ULT_VENT - ARTICULOS.PRECIO_NETO) * 100) / M' +
|
|
|
|
|
'ARGEN_VENTAS.IMPORTE_NETO_ULT_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_ULT_' +
|
|
|
|
|
'VENT_COMPRA,'#10#10'MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - MARGEN_COMPR' +
|
|
|
|
|
'AS.IMPORTE_NETO_ULT_COMP AS IMP_MARGEN_ULT_VENT_ULT_COMP,'#10'CASE'#10'W' +
|
|
|
|
|
'HEN MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP = 0 THEN 100'#10'WHEN (MAR' +
|
|
|
|
|
'GEN_VENTAS.IMPORTE_NETO_ULT_VENT - MARGEN_COMPRAS.IMPORTE_NETO_U' +
|
|
|
|
|
'LT_COMP) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - M' +
|
|
|
|
|
'ARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP) * 100) / MARGEN_VENTAS.IMPO' +
|
|
|
|
|
'RTE_NETO_ULT_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_ULT_VENT_ULT_COMP,'#10#10'M' +
|
|
|
|
|
'ARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - MARGEN_COMPRAS.IMPORTE_NETO' +
|
|
|
|
|
'_PRO_COMP AS IMP_MARGEN_ULT_VENT_PRO_COMP,'#10'CASE'#10'WHEN MARGEN_COM' +
|
|
|
|
|
'PRAS.IMPORTE_NETO_PRO_COMP = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMPO' +
|
|
|
|
|
'RTE_NETO_ULT_VENT - MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP) > 0 TH' +
|
|
|
|
|
'EN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - MARGEN_COMPRAS.I' +
|
|
|
|
|
'MPORTE_NETO_PRO_COMP) * 100) / MARGEN_VENTAS.IMPORTE_NETO_ULT_VE' +
|
|
|
|
|
'NT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_ULT_VENT_PRO_COMP,'#10#10#10'MARGEN_VENTAS.I' +
|
|
|
|
|
'MPORTE_NETO_PRO_VENT - ARTICULOS.PRECIO_NETO AS IMP_MARGEN_PRO_V' +
|
|
|
|
|
'ENT_COMPRA,'#10'CASE'#10'WHEN ARTICULOS.PRECIO_NETO = 0 THEN 100'#10'WHEN (' +
|
|
|
|
|
'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - ARTICULOS.PRECIO_NETO) > 0' +
|
|
|
|
|
' THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - ARTICULOS.PRE' +
|
|
|
|
|
'CIO_NETO) * 100) / MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'EN' +
|
|
|
|
|
'D'#10'AS POR_MARGEN_PRO_VENT_COMPRA,'#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO' +
|
|
|
|
|
'_VENT - MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP AS IMP_MARGEN_PRO_V' +
|
|
|
|
|
'ENT_ULT_COMP,'#10'CASE'#10'WHEN MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP = ' +
|
|
|
|
|
'0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - MARGEN_CO' +
|
|
|
|
|
'MPRAS.IMPORTE_NETO_ULT_COMP) > 0 THEN'#10' ((MARGEN_VENTAS.IMPOR' +
|
|
|
|
|
'TE_NETO_PRO_VENT - MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP) * 100) ' +
|
|
|
|
|
'/ MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_P' +
|
|
|
|
|
'RO_VENT_ULT_COMP,'#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - MARGEN_' +
|
|
|
|
|
'COMPRAS.IMPORTE_NETO_PRO_COMP AS IMP_MARGEN_PRO_VENT_PRO_COMP,'#10'C' +
|
|
|
|
|
'ASE'#10'WHEN MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP = 0 THEN 100'#10'WHEN' +
|
|
|
|
|
' (MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - MARGEN_COMPRAS.IMPORTE_N' +
|
|
|
|
|
'ETO_PRO_COMP) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_PRO_VEN' +
|
|
|
|
|
'T - MARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP) * 100) / MARGEN_VENTAS' +
|
|
|
|
|
'.IMPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_PRO_VENT_PRO_COM' +
|
|
|
|
|
'P'#10#10'FROM'#10#10#10'(SELECT ID_EMPRESA,'#10' ID_ARTICULO, COALESCE(SUM(I' +
|
|
|
|
|
'MPORTE_UNIDAD_ULT_VENT),0) AS IMPORTE_UNIDAD_ULT_VENT,'#10' CO' +
|
|
|
|
|
'ALESCE(SUM(IMPORTE_NETO_ULT_VENT),0) AS IMPORTE_NETO_ULT_VENT, C' +
|
|
|
|
|
'OALESCE(SUM(IMPORTE_PORTE_ULT_VENT),0) AS IMPORTE_PORTE_ULT_VENT' +
|
|
|
|
|
','#10' COALESCE(SUM(IMPORTE_UNIDAD_PRO_VENT),0) AS IMPORTE_UNI' +
|
|
|
|
|
'DAD_PRO_VENT, COALESCE(SUM(IMPORTE_NETO_PRO_VENT),0) AS IMPORTE_' +
|
|
|
|
|
'NETO_PRO_VENT,'#10' COALESCE(SUM(IMPORTE_PORTE_PRO_VENT),0) AS' +
|
|
|
|
|
' IMPORTE_PORTE_PRO_VENT'#10#10' FROM'#10' (SELECT'#10' ID_EMPRESA,'#10' ' +
|
|
|
|
|
' ID_ARTICULO,'#10' IMPORTE_UNIDAD_VENTA AS IMPORTE_UNIDAD_ULT_' +
|
|
|
|
|
'VENT, IMPORTE_NETO_VENTA AS IMPORTE_NETO_ULT_VENT, IMPORTE_PORTE' +
|
|
|
|
|
'_VENTA AS IMPORTE_PORTE_ULT_VENT,'#10' NULL AS IMPORTE_UNIDAD_P' +
|
|
|
|
|
'RO_VENT, NULL AS IMPORTE_NETO_PRO_VENT, NULL AS IMPORTE_PORTE_PR' +
|
|
|
|
|
'O_VENT'#10#10' FROM V_INF_ULTVEN_PORARTICULO'#10#10' UNION ALL'#10#10' SE' +
|
|
|
|
|
'LECT'#10' FACTURAS_CLIENTE.ID_EMPRESA,'#10' FACTURAS_CLIENTE_D' +
|
|
|
|
|
'ETALLES.ID_ARTICULO,'#10' NULL, NULL, NULL,'#10' AVG(FACTURAS_' +
|
|
|
|
|
'CLIENTE_DETALLES.IMPORTE_UNIDAD) AS IMPORTE_UNIDAD_PRO_VENT,'#10' ' +
|
|
|
|
|
' AVG(FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD - (FACTURAS_CLIE' +
|
|
|
|
|
'NTE_DETALLES.IMPORTE_UNIDAD * (FACTURAS_CLIENTE_DETALLES.DESCUEN' +
|
|
|
|
|
'TO / 100))) AS IMPORTE_NETO_PRO_VENT,'#10' AVG(FACTURAS_CLIENTE' +
|
|
|
|
|
'_DETALLES.IMPORTE_PORTE) AS IMPORTE_PORTE_PRO_VENT'#10#10' FROM FAC' +
|
|
|
|
|
'TURAS_CLIENTE_DETALLES'#10' LEFT OUTER JOIN FACTURAS_CLIENTE'#10' ' +
|
|
|
|
|
'ON (FACTURAS_CLIENTE.ID = FACTURAS_CLIENTE_DETALLES.ID_FACTURA)'#10 +
|
|
|
|
|
#10' WHERE (FACTURAS_CLIENTE_DETALLES.ID_ARTICULO IS NOT NULL) A' +
|
|
|
|
|
'ND (FACTURAS_CLIENTE_DETALLES.ID_ARTICULO > 0)'#10' AND (FACTUR' +
|
|
|
|
|
'AS_CLIENTE_DETALLES.CANTIDAD > 0)'#10' AND (FACTURAS_CLIENTE.FE' +
|
|
|
|
|
'CHA_FACTURA BETWEEN :FECHAINI AND :FECHAFIN)'#10' GROUP BY 1, 2)'#10 +
|
|
|
|
|
#10' GROUP BY 1, 2'#10' having SUM(IMPORTE_NETO_PRO_VENT) > 0 /*Solo qu' +
|
|
|
|
|
'eremos aquellos articulos que se hayan vendido en ese periodo de' +
|
|
|
|
|
' fechas*/'#10' ) MARGEN_VENTAS'#10#10#10'LEFT JOIN'#10#10#10'(SELECT'#10' ID_EMPRESA' +
|
|
|
|
|
', ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_COMP),0) AS IMPOR' +
|
|
|
|
|
'TE_UNIDAD_ULT_COMP, COALESCE(SUM(IMPORTE_NETO_ULT_COMP),0) AS IM' +
|
|
|
|
|
'PORTE_NETO_ULT_COMP,'#10' COALESCE(SUM(IMPORTE_PORTE_ULT_COMP),0)' +
|
|
|
|
|
' AS IMPORTE_PORTE_ULT_COMP, COALESCE(SUM(IMPORTE_UNIDAD_PRO_COMP' +
|
|
|
|
|
'),COALESCE(SUM(IMPORTE_UNIDAD_ULT_COMP),0)) AS IMPORTE_UNIDAD_PR' +
|
|
|
|
|
'O_COMP,'#10' COALESCE(SUM(IMPORTE_NETO_PRO_COMP),COALESCE(SUM(IMP' +
|
|
|
|
|
'ORTE_NETO_ULT_COMP),0)) AS IMPORTE_NETO_PRO_COMP,'#10' COALESCE(S' +
|
|
|
|
|
'UM(IMPORTE_PORTE_PRO_COMP),COALESCE(SUM(IMPORTE_PORTE_ULT_COMP),' +
|
|
|
|
|
'0)) AS IMPORTE_PORTE_PRO_COMP'#10#10' FROM'#10' (SELECT'#10' ID_EMPRESA' +
|
|
|
|
|
', ID_ARTICULO,'#10' IMPORTE_UNIDAD_COMPRA AS IMPORTE_UNIDAD_ULT' +
|
|
|
|
|
'_COMP, IMPORTE_NETO_COMPRA AS IMPORTE_NETO_ULT_COMP, IMPORTE_POR' +
|
|
|
|
|
'TE_COMPRA AS IMPORTE_PORTE_ULT_COMP,'#10' NULL AS IMPORTE_UNIDA' +
|
|
|
|
|
'D_PRO_COMP, NULL AS IMPORTE_NETO_PRO_COMP, NULL AS IMPORTE_PORTE' +
|
|
|
|
|
'_PRO_COMP'#10#10' FROM V_INF_ULTCOM_PORARTICULO'#10#10' UNION ALL'#10#10' ' +
|
|
|
|
|
' SELECT'#10' FACTURAS_PROVEEDOR.ID_EMPRESA,'#10' FACTURAS_PROV' +
|
|
|
|
|
'EEDOR_DETALLES.ID_ARTICULO,'#10' NULL, NULL, NULL,'#10' AVG(FA' +
|
|
|
|
|
'CTURAS_PROVEEDOR_DETALLES.IMPORTE_UNIDAD) AS IMPORTE_UNIDAD_PRO_' +
|
|
|
|
|
'COMP,'#10' AVG(FACTURAS_PROVEEDOR_DETALLES.IMPORTE_UNIDAD - (FA' +
|
|
|
|
|
'CTURAS_PROVEEDOR_DETALLES.IMPORTE_UNIDAD * (FACTURAS_PROVEEDOR_D' +
|
|
|
|
|
'ETALLES.DESCUENTO / 100))) AS IMPORTE_NETO_PRO_COMP,'#10' AVG(F' +
|
|
|
|
|
'ACTURAS_PROVEEDOR_DETALLES.IMPORTE_PORTE) AS IMPORTE_PORTE_PRO_C' +
|
|
|
|
|
'OMP'#10#10' FROM FACTURAS_PROVEEDOR_DETALLES'#10' LEFT OUTER JOIN FA' +
|
|
|
|
|
'CTURAS_PROVEEDOR'#10' ON (FACTURAS_PROVEEDOR.ID = FACTURAS_PROVEE' +
|
|
|
|
|
'DOR_DETALLES.ID_FACTURA)'#10#10' WHERE (FACTURAS_PROVEEDOR_DETALLES' +
|
|
|
|
|
'.ID_ARTICULO IS NOT NULL) AND (FACTURAS_PROVEEDOR_DETALLES.ID_AR' +
|
|
|
|
|
'TICULO > 0)'#10' AND (FACTURAS_PROVEEDOR_DETALLES.CANTIDAD > 0)' +
|
|
|
|
|
#10' /*Las compras promedio deben de calcularse desde el princ' +
|
|
|
|
|
'ipio de los tiempos hasta ahora*/'#10' AND (FACTURAS_PROVEEDOR.' +
|
|
|
|
|
'FECHA_FACTURA BETWEEN '#39'12.12.2000'#39' AND current_date)'#10' GROUP B' +
|
|
|
|
|
'Y 1, 2)'#10#10' GROUP BY 1, 2) MARGEN_COMPRAS'#10#10#10'ON (MARGEN_COMPRAS.ID' +
|
|
|
|
|
'_EMPRESA = MARGEN_VENTAS.ID_EMPRESA)'#10'AND (MARGEN_COMPRAS.ID_ARTI' +
|
|
|
|
|
'CULO = MARGEN_VENTAS.ID_ARTICULO)'#10#10#10'LEFT JOIN ARTICULOS ON (ARTI' +
|
|
|
|
|
'CULOS.ID = MARGEN_VENTAS.ID_ARTICULO)'#10'LEFT JOIN CONTACTOS PROVEE' +
|
|
|
|
|
'DORES ON (PROVEEDORES.ID = ARTICULOS.ID_PROVEEDOR)'#10'WHERE ARTICUL' +
|
|
|
|
|
'OS.INVENTARIABLE = 1) INF_MARGEN_ARTICULOS'
|
|
|
|
|
'VENT_COMPRA,'#10#10'MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - COALESCE(MAR' +
|
|
|
|
|
'GEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NET' +
|
|
|
|
|
'O, 0)) AS IMP_MARGEN_ULT_VENT_ULT_COMP,'#10'CASE'#10'WHEN COALESCE(MARG' +
|
|
|
|
|
'EN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_NETO' +
|
|
|
|
|
', 0)) = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - C' +
|
|
|
|
|
'OALESCE(MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS' +
|
|
|
|
|
'.PRECIO_NETO, 0))) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_UL' +
|
|
|
|
|
'T_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE' +
|
|
|
|
|
'(ARTICULOS.PRECIO_NETO, 0))) * 100) / MARGEN_VENTAS.IMPORTE_NETO' +
|
|
|
|
|
'_ULT_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_ULT_VENT_ULT_COMP,'#10#10'MARGEN_VE' +
|
|
|
|
|
'NTAS.IMPORTE_NETO_ULT_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE_NET' +
|
|
|
|
|
'O_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) AS IMP_MARGEN_UL' +
|
|
|
|
|
'T_VENT_PRO_COMP,'#10'CASE'#10'WHEN COALESCE(MARGEN_COMPRAS.IMPORTE_NETO' +
|
|
|
|
|
'_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) = 0 THEN 100'#10'WHEN' +
|
|
|
|
|
' (MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - COALESCE(MARGEN_COMPRAS.' +
|
|
|
|
|
'IMPORTE_NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0))) > 0 ' +
|
|
|
|
|
'THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT - COALESCE(MARGE' +
|
|
|
|
|
'N_COMPRAS.IMPORTE_NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO,' +
|
|
|
|
|
' 0))) * 100) / MARGEN_VENTAS.IMPORTE_NETO_ULT_VENT'#10'ELSE 0'#10'END'#10'AS' +
|
|
|
|
|
' POR_MARGEN_ULT_VENT_PRO_COMP,'#10#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_' +
|
|
|
|
|
'VENT - ARTICULOS.PRECIO_NETO AS IMP_MARGEN_PRO_VENT_COMPRA,'#10'CASE' +
|
|
|
|
|
#10'WHEN ARTICULOS.PRECIO_NETO = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IM' +
|
|
|
|
|
'PORTE_NETO_PRO_VENT - ARTICULOS.PRECIO_NETO) > 0 THEN'#10' ((MAR' +
|
|
|
|
|
'GEN_VENTAS.IMPORTE_NETO_PRO_VENT - ARTICULOS.PRECIO_NETO) * 100)' +
|
|
|
|
|
' / MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_' +
|
|
|
|
|
'PRO_VENT_COMPRA,'#10#10'MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - COALESCE' +
|
|
|
|
|
'(MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO' +
|
|
|
|
|
'_NETO, 0)) AS IMP_MARGEN_PRO_VENT_ULT_COMP,'#10'CASE'#10'WHEN COALESCE(' +
|
|
|
|
|
'MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTICULOS.PRECIO_' +
|
|
|
|
|
'NETO, 0)) = 0 THEN 100'#10'WHEN (MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT' +
|
|
|
|
|
' - COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COALESCE(ARTIC' +
|
|
|
|
|
'ULOS.PRECIO_NETO, 0))) > 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NET' +
|
|
|
|
|
'O_PRO_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE_NETO_ULT_COMP, COAL' +
|
|
|
|
|
'ESCE(ARTICULOS.PRECIO_NETO, 0))) * 100) / MARGEN_VENTAS.IMPORTE_' +
|
|
|
|
|
'NETO_PRO_VENT'#10'ELSE 0'#10'END'#10'AS POR_MARGEN_PRO_VENT_ULT_COMP,'#10#10'MARGE' +
|
|
|
|
|
'N_VENTAS.IMPORTE_NETO_PRO_VENT - COALESCE(MARGEN_COMPRAS.IMPORTE' +
|
|
|
|
|
'_NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) AS IMP_MARGE' +
|
|
|
|
|
'N_PRO_VENT_PRO_COMP,'#10'CASE'#10'WHEN COALESCE(MARGEN_COMPRAS.IMPORTE_' +
|
|
|
|
|
'NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0)) = 0 THEN 100'#10 +
|
|
|
|
|
'WHEN (MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - COALESCE(MARGEN_COMP' +
|
|
|
|
|
'RAS.IMPORTE_NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_NETO, 0))) ' +
|
|
|
|
|
'> 0 THEN'#10' ((MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT - COALESCE(M' +
|
|
|
|
|
'ARGEN_COMPRAS.IMPORTE_NETO_PRO_COMP, COALESCE(ARTICULOS.PRECIO_N' +
|
|
|
|
|
'ETO, 0))) * 100) / MARGEN_VENTAS.IMPORTE_NETO_PRO_VENT'#10'ELSE 0'#10'EN' +
|
|
|
|
|
'D'#10'AS POR_MARGEN_PRO_VENT_PRO_COMP'#10#10'FROM'#10#10#10'(SELECT ID_EMPRESA,'#10' ' +
|
|
|
|
|
' ID_ARTICULO, COALESCE(SUM(IMPORTE_UNIDAD_ULT_VENT),0) AS IM' +
|
|
|
|
|
'PORTE_UNIDAD_ULT_VENT,'#10' COALESCE(SUM(IMPORTE_NETO_ULT_VENT' +
|
|
|
|
|
'),0) AS IMPORTE_NETO_ULT_VENT, COALESCE(SUM(IMPORTE_PORTE_ULT_VE' +
|
|
|
|
|
'NT),0) AS IMPORTE_PORTE_ULT_VENT,'#10' COALESCE(SUM(IMPORTE_UN' +
|
|
|
|
|
'IDAD_PRO_VENT),0) AS IMPORTE_UNIDAD_PRO_VENT, COALESCE(SUM(IMPOR' +
|
|
|
|
|
'TE_NETO_PRO_VENT),0) AS IMPORTE_NETO_PRO_VENT,'#10' COALESCE(S' +
|
|
|
|
|
'UM(IMPORTE_PORTE_PRO_VENT),0) AS IMPORTE_PORTE_PRO_VENT'#10#10' FROM'#10' ' +
|
|
|
|
|
' (SELECT'#10' ID_EMPRESA,'#10' ID_ARTICULO,'#10' IMPORTE_UNI' +
|
|
|
|
|
'DAD_VENTA AS IMPORTE_UNIDAD_ULT_VENT, IMPORTE_NETO_VENTA AS IMPO' +
|
|
|
|
|
'RTE_NETO_ULT_VENT, IMPORTE_PORTE_VENTA AS IMPORTE_PORTE_ULT_VENT' +
|
|
|
|
|
','#10' NULL AS IMPORTE_UNIDAD_PRO_VENT, NULL AS IMPORTE_NETO_PR' +
|
|
|
|
|
'O_VENT, NULL AS IMPORTE_PORTE_PRO_VENT'#10#10' FROM V_INF_ULTVEN_PO' +
|
|
|
|
|
'RARTICULO'#10#10' UNION ALL'#10#10' SELECT'#10' FACTURAS_CLIENTE.ID_E' +
|
|
|
|
|
'MPRESA,'#10' FACTURAS_CLIENTE_DETALLES.ID_ARTICULO,'#10' NULL,' +
|
|
|
|
|
' NULL, NULL,'#10' AVG(FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD)' +
|
|
|
|
|
' AS IMPORTE_UNIDAD_PRO_VENT,'#10' AVG(FACTURAS_CLIENTE_DETALLES' +
|
|
|
|
|
'.IMPORTE_UNIDAD - (FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD * (F' +
|
|
|
|
|
'ACTURAS_CLIENTE_DETALLES.DESCUENTO / 100))) AS IMPORTE_NETO_PRO_' +
|
|
|
|
|
'VENT,'#10' AVG(FACTURAS_CLIENTE_DETALLES.IMPORTE_PORTE) AS IMPO' +
|
|
|
|
|
'RTE_PORTE_PRO_VENT'#10#10' FROM FACTURAS_CLIENTE_DETALLES'#10' LEFT ' +
|
|
|
|
|
'OUTER JOIN FACTURAS_CLIENTE'#10' ON (FACTURAS_CLIENTE.ID = FACTUR' +
|
|
|
|
|
'AS_CLIENTE_DETALLES.ID_FACTURA)'#10#10' WHERE (FACTURAS_CLIENTE_DET' +
|
|
|
|
|
'ALLES.ID_ARTICULO IS NOT NULL) AND (FACTURAS_CLIENTE_DETALLES.ID' +
|
|
|
|
|
'_ARTICULO > 0)'#10' AND (FACTURAS_CLIENTE_DETALLES.CANTIDAD > 0' +
|
|
|
|
|
')'#10' AND (FACTURAS_CLIENTE.FECHA_FACTURA BETWEEN :FECHAINI AN' +
|
|
|
|
|
'D :FECHAFIN)'#10' GROUP BY 1, 2)'#10#10' GROUP BY 1, 2'#10' having SUM(IMPO' +
|
|
|
|
|
'RTE_NETO_PRO_VENT) > 0 /*Solo queremos aquellos articulos que se' +
|
|
|
|
|
' hayan vendido en ese periodo de fechas*/'#10' ) MARGEN_VENTAS'#10#10#10'LE' +
|
|
|
|
|
'FT JOIN'#10#10#10'(SELECT'#10' ID_EMPRESA, ID_ARTICULO, COALESCE(SUM(IMPO' +
|
|
|
|
|
'RTE_UNIDAD_ULT_COMP),0) AS IMPORTE_UNIDAD_ULT_COMP, COALESCE(SUM' +
|
|
|
|
|
'(IMPORTE_NETO_ULT_COMP),0) AS IMPORTE_NETO_ULT_COMP,'#10' COALESC' +
|
|
|
|
|
'E(SUM(IMPORTE_PORTE_ULT_COMP),0) AS IMPORTE_PORTE_ULT_COMP, COAL' +
|
|
|
|
|
'ESCE(SUM(IMPORTE_UNIDAD_PRO_COMP),COALESCE(SUM(IMPORTE_UNIDAD_UL' +
|
|
|
|
|
'T_COMP),0)) AS IMPORTE_UNIDAD_PRO_COMP,'#10' COALESCE(SUM(IMPORTE' +
|
|
|
|
|
'_NETO_PRO_COMP),COALESCE(SUM(IMPORTE_NETO_ULT_COMP),0)) AS IMPOR' +
|
|
|
|
|
'TE_NETO_PRO_COMP,'#10' COALESCE(SUM(IMPORTE_PORTE_PRO_COMP),COALE' +
|
|
|
|
|
'SCE(SUM(IMPORTE_PORTE_ULT_COMP),0)) AS IMPORTE_PORTE_PRO_COMP'#10#10' ' +
|
|
|
|
|
'FROM'#10' (SELECT'#10' ID_EMPRESA, ID_ARTICULO,'#10' IMPORTE_UNI' +
|
|
|
|
|
'DAD_COMPRA AS IMPORTE_UNIDAD_ULT_COMP, IMPORTE_NETO_COMPRA AS IM' +
|
|
|
|
|
'PORTE_NETO_ULT_COMP, IMPORTE_PORTE_COMPRA AS IMPORTE_PORTE_ULT_C' +
|
|
|
|
|
'OMP,'#10' NULL AS IMPORTE_UNIDAD_PRO_COMP, NULL AS IMPORTE_NETO' +
|
|
|
|
|
'_PRO_COMP, NULL AS IMPORTE_PORTE_PRO_COMP'#10#10' FROM V_INF_ULTCOM' +
|
|
|
|
|
'_PORARTICULO'#10#10' UNION ALL'#10#10' SELECT'#10' FACTURAS_PROVEEDOR' +
|
|
|
|
|
'.ID_EMPRESA,'#10' FACTURAS_PROVEEDOR_DETALLES.ID_ARTICULO,'#10' ' +
|
|
|
|
|
' NULL, NULL, NULL,'#10' AVG(FACTURAS_PROVEEDOR_DETALLES.IMPORT' +
|
|
|
|
|
'E_UNIDAD) AS IMPORTE_UNIDAD_PRO_COMP,'#10' AVG(FACTURAS_PROVEED' +
|
|
|
|
|
'OR_DETALLES.IMPORTE_UNIDAD - (FACTURAS_PROVEEDOR_DETALLES.IMPORT' +
|
|
|
|
|
'E_UNIDAD * (FACTURAS_PROVEEDOR_DETALLES.DESCUENTO / 100))) AS IM' +
|
|
|
|
|
'PORTE_NETO_PRO_COMP,'#10' AVG(FACTURAS_PROVEEDOR_DETALLES.IMPOR' +
|
|
|
|
|
'TE_PORTE) AS IMPORTE_PORTE_PRO_COMP'#10#10' FROM FACTURAS_PROVEEDOR' +
|
|
|
|
|
'_DETALLES'#10' LEFT OUTER JOIN FACTURAS_PROVEEDOR'#10' ON (FACTURA' +
|
|
|
|
|
'S_PROVEEDOR.ID = FACTURAS_PROVEEDOR_DETALLES.ID_FACTURA)'#10#10' WH' +
|
|
|
|
|
'ERE (FACTURAS_PROVEEDOR_DETALLES.ID_ARTICULO IS NOT NULL) AND (F' +
|
|
|
|
|
'ACTURAS_PROVEEDOR_DETALLES.ID_ARTICULO > 0)'#10' AND (FACTURAS_' +
|
|
|
|
|
'PROVEEDOR_DETALLES.CANTIDAD > 0)'#10' /*Las compras promedio de' +
|
|
|
|
|
'ben de calcularse desde el principio de los tiempos hasta ahora*' +
|
|
|
|
|
'/'#10' AND (FACTURAS_PROVEEDOR.FECHA_FACTURA BETWEEN '#39'12.12.200' +
|
|
|
|
|
'0'#39' AND current_date)'#10' GROUP BY 1, 2)'#10#10' GROUP BY 1, 2) MARGEN' +
|
|
|
|
|
'_COMPRAS'#10#10#10'ON (MARGEN_COMPRAS.ID_EMPRESA = MARGEN_VENTAS.ID_EMPR' +
|
|
|
|
|
'ESA)'#10'AND (MARGEN_COMPRAS.ID_ARTICULO = MARGEN_VENTAS.ID_ARTICULO' +
|
|
|
|
|
')'#10#10#10'LEFT JOIN ARTICULOS ON (ARTICULOS.ID = MARGEN_VENTAS.ID_ARTI' +
|
|
|
|
|
'CULO)'#10'LEFT JOIN CONTACTOS PROVEEDORES ON (PROVEEDORES.ID = ARTIC' +
|
|
|
|
|
'ULOS.ID_PROVEEDOR)'#10'WHERE ARTICULOS.INVENTARIABLE = 1) INF_MARGEN' +
|
|
|
|
|
'_ARTICULOS'#10
|
|
|
|
|
StatementType = stSQL
|
|
|
|
|
ColumnMappings = <
|
|
|
|
|
item
|
|
|
|
|
|