diff --git a/2008-12-24_ventas_2008.sql b/2008-12-24_ventas_2008.sql new file mode 100644 index 0000000..e4fa187 --- /dev/null +++ b/2008-12-24_ventas_2008.sql @@ -0,0 +1,13 @@ +SELECT c.id_cliente, c.nombre_cliente, SUM(dvi.valor) AS valor +FROM documento_ventas dv JOIN documento_ventas_has_item dvi ON ( +dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) +JOIN cliente c ON ( c.id_cliente=dv.id_cliente ) +JOIN cliente_has_sucursal cs ON ( c.id_cliente=cs.id_cliente AND +cs.id_sucursal=dv.id_sucursal ) +WHERE +LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" +AND NOT (dv.id_cliente LIKE "999") +AND YEAR(dv.fecha) = YEAR('2008-01-01') +GROUP BY c.id_cliente +ORDER BY c.nombre_cliente ASC + diff --git a/2008-12-24cartera.sql b/2008-12-24cartera.sql new file mode 100644 index 0000000..621afb0 --- /dev/null +++ b/2008-12-24cartera.sql @@ -0,0 +1,16 @@ +SELECT c.id_cliente AS NIT, cl.nombre_cliente AS cliente, +cs.direccion AS Direccion, z.descripcion AS Ciudad, cs.telefono AS Telefono, +cs.nombre_contacto AS Contacto, +SUM( c.valor ) AS Cartera_Actual, cs.cupo AS Cupo_Actual +FROM cartera c +JOIN cliente_has_sucursal cs +ON ( c.id_cliente = cs.id_cliente AND c.id_sucursal = cs.id_sucursal ) +JOIN zona z ON ( cs.ciudad = z.id_zona ) +JOIN cliente cl +ON ( cl.id_cliente = cs.id_cliente AND cl.id_cliente = c.id_cliente ) +WHERE c.valor >0 +GROUP BY c.id_cliente +HAVING ( +SUM( c.valor ) >=3000000 +) +ORDER BY `cl`.`nombre_cliente` ASC diff --git a/2009-03-23_compras.sql b/2009-03-23_compras.sql new file mode 100644 index 0000000..b54f275 --- /dev/null +++ b/2009-03-23_compras.sql @@ -0,0 +1,21 @@ +SELECT '1001' AS 'formato','5007' AS 'concepto',nit,proveedor,sum( movimiento ) +FROM compras +WHERE + ( + codCuenta = "14350101" + AND + tipo REGEXP "([12358]V|AP|DG|FP|FT|CC)" + ) + OR ( + codCuenta = "14350102" + AND + tipo REGEXP "(AP|DG|FP|FT)" + ) + OR ( + codCuenta = "14350201" + AND + tipo REGEXP "(CC)" + ) +AND (length(nit) > 3) +AND nit NOT LIKE "444444%" +GROUP BY nit diff --git a/2010-10-20-items.sql b/2010-10-20-items.sql new file mode 100644 index 0000000..1938f46 --- /dev/null +++ b/2010-10-20-items.sql @@ -0,0 +1 @@ +SELECT * FROM `item` WHERE `tipo` LIKE '1'; diff --git a/2010-10-22_vts.sql b/2010-10-22_vts.sql new file mode 100644 index 0000000..3f497c0 --- /dev/null +++ b/2010-10-22_vts.sql @@ -0,0 +1,9 @@ +SELECT dv.id_sucursal AS suc, dvi.id_item AS item, + SUM(dvi.cantidad * (IF(dvi.valor>0,1,-1))) AS cantidad, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS peso, + SUM(dvi.valor) AS valor, SUM(dvi.costo) AS costo +FROM `documento_ventas_has_item` dvi +JOIN documento_ventas dv USING ( id_documento, id_sucursal ) +JOIN item i USING ( id_item, id_sucursal ) +where fecha like "2010-0%" +group by dvi.id_sucursal, dvi.id_item ; diff --git a/2010-10-25-existencia_a_2010-09-30.sql b/2010-10-25-existencia_a_2010-09-30.sql new file mode 100644 index 0000000..54c4765 --- /dev/null +++ b/2010-10-25-existencia_a_2010-09-30.sql @@ -0,0 +1,6 @@ +SELECT id_item AS item, id_bodega AS bodega, id_sucursal AS suc, +cantidad AS cantidad, costo_unidad AS costo_un, +valor_unidad AS valor +FROM `existencia_historico` +WHERE `fecha` = '2010-09-30' +ORDER BY suc, bodega, item diff --git a/2011-09-19-clientes_desde_2006.sql b/2011-09-19-clientes_desde_2006.sql new file mode 100644 index 0000000..3895c9a --- /dev/null +++ b/2011-09-19-clientes_desde_2006.sql @@ -0,0 +1,42 @@ +-- Clientes por sucursal por año sin lineas + +SELECT c.id_cliente AS Nit, + YEAR(dv.fecha) AS Ano, + dv.id_sucursal AS Sucursal, + c.nombre_cliente AS Cliente, + c.id_vendedor AS CodVendedor, + c.telefono AS Telefono, + c.direccion AS Direccion, + z.descripcion AS Ciudad, + se.id_sector AS CodSector, + se.descripcion AS Sector, + sse.id_sector AS CodSubsector, + sse.descripcion AS Subsector, + SUM(dvi.valor) AS Valor, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso +FROM documento_ventas dv +JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) +JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) +JOIN cliente_has_sucursal c + ON ( dv.id_cliente=c.id_cliente AND dv.id_sucursal=c.id_sucursal ) +JOIN sucursal su + ON ( su.id_sucursal=dv.id_sucursal ) +JOIN vendedor v + ON ( v.id_vendedor=dv.id_vendedor AND dv.id_sucursal=v.id_sucursal ) +JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) +JOIN subsector sse + ON ( sse.id_sector=c.id_sector ) +JOIN zona z + ON ( c.id_zona = z.id_zona ) + +WHERE LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= '2006-01-01' + AND dv.fecha <= '2011-08-31' + +GROUP BY Nit, Sucursal, Ano + diff --git a/2011-09-19-lineas_desde_2006.sql b/2011-09-19-lineas_desde_2006.sql new file mode 100644 index 0000000..0ee48e3 --- /dev/null +++ b/2011-09-19-lineas_desde_2006.sql @@ -0,0 +1,35 @@ +-- Ventas por línea por año por sucursal + +SELECT + CONCAT(dvi.id_sucursal,DATE_FORMAT(MAX(dv.fecha),'%Y'),l.id_linea) AS Llave, + dvi.id_sucursal AS Sucursal, + DATE_FORMAT(MAX(dv.fecha),'%Y-01-01') AS Ano, + l.id_linea AS Linea, + l.descripcion AS Descripcion, + SUM(dvi.valor) AS Valor, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.costo) AS Costo, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = LEFT(i.id_linea,2) AND l.tipo = i.tipo ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= '2006-01-01' + AND dv.fecha <= '2011-08-31' + +GROUP BY + Sucursal, Linea, DATE_FORMAT(dv.fecha,'%Y-%m') + +ORDER BY + Llave ASC + diff --git a/2011-10-14-facturas_por_ano.sql b/2011-10-14-facturas_por_ano.sql new file mode 100644 index 0000000..4515fa5 --- /dev/null +++ b/2011-10-14-facturas_por_ano.sql @@ -0,0 +1,27 @@ +-- Documentos por año con recaudo + +SELECT dv.id_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency, + fp.formapago AS Payment +FROM + documento_ventas_has_item dvi + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN documento_ventas dv + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,1) = "F" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") +GROUP BY Branch_Office, Invoice_No diff --git a/2011-10-14-recaudos_por_ano.sql b/2011-10-14-recaudos_por_ano.sql new file mode 100644 index 0000000..e2a8833 --- /dev/null +++ b/2011-10-14-recaudos_por_ano.sql @@ -0,0 +1,34 @@ +-- Documentos por año con recaudo + +SELECT suc.nombre_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + rec.fecha_vencimiento AS Invoice_Due_Date, + MAX(rec.fecha) AS Payment_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency +FROM + documento_ventas_has_item dvi + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN documento_ventas dv + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) + JOIN recaudo rec + ON ( dv.id_documento = rec.id_documento_cruce AND dv.id_sucursal = rec.id_sucursal ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) +WHERE + YEAR(dv.fecha) = 2011 + AND (rec.id_documento <> rec.id_documento_cruce) + AND LEFT(dv.id_documento,1) = "F" + AND fp.formapago = "Credito" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") +GROUP BY Branch_Office, Invoice_No diff --git a/2011-10-19-ventas.sql b/2011-10-19-ventas.sql new file mode 100644 index 0000000..34c5196 --- /dev/null +++ b/2011-10-19-ventas.sql @@ -0,0 +1,33 @@ +-- Documentos de venta + +SELECT suc.nombre_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + cs.direccion AS Address, + CONCAT_WS(', ',z.nombre_ciudad,z.nombre_depto) AS City, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency, + fp.descripcion AS Payment_conditions, + fp.formapago AS Sale_conditions +FROM + documento_ventas_has_item dvi + JOIN documento_ventas dv + ON ( dv.id_documento = dvi.id_documento AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item AND dvi.id_sucursal = i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal = cs.id_sucursal AND dv.id_cliente = cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) + JOIN view_ciudades AS z + ON (cs.ciudad = z.id_ciudad) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,2) RLIKE 'F|D[^0-9MP]' + AND NOT (dv.id_cliente LIKE "999") +GROUP BY Branch_Office, Invoice_No diff --git a/2011-10-19-ventas_con_documentos_recaudo.sql b/2011-10-19-ventas_con_documentos_recaudo.sql new file mode 100644 index 0000000..472aa1c --- /dev/null +++ b/2011-10-19-ventas_con_documentos_recaudo.sql @@ -0,0 +1,38 @@ +-- Documentos de venta que han sido cruzados con uno o más recaudos +-- Se detalla el documento recaudo y el valor de recaudo + +SELECT suc.nombre_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + rec.fecha_vencimiento AS Invoice_Due_Date, + MAX(rec.fecha) AS Payment_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency, + rec.id_documento AS Payment_Doc, + SUM(rec.valor) / COUNT(dvi.id_item) AS Payed_value, + MAX(rec.valor) AS Payed_value_confirmation +FROM + documento_ventas_has_item dvi + JOIN documento_ventas dv + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN recaudo rec + ON ( dv.id_documento = rec.id_documento_cruce AND dv.id_sucursal = rec.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,2) RLIKE 'F|D[^0-9MP]' + AND NOT (dv.id_cliente LIKE "999") +GROUP BY + Branch_Office, Invoice_No, Payment_Doc +HAVING + Payment_Doc <> Invoice_No diff --git a/2011-10-19-ventas_con_recaudo.sql b/2011-10-19-ventas_con_recaudo.sql new file mode 100644 index 0000000..f997be7 --- /dev/null +++ b/2011-10-19-ventas_con_recaudo.sql @@ -0,0 +1,38 @@ +-- Documentos de venta que han sido cruzados con uno o más recaudos +-- No se detalla el documento recaudo +-- La fecha de pago debería coincidir con la fecha del último pago + +SELECT suc.nombre_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + rec.fecha_vencimiento AS Invoice_Due_Date, + MAX(rec.fecha) AS Payment_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency, + rec.id_documento AS Payment_Doc, + SUM(rec.valor) / COUNT(dvi.id_item) AS Payed_value, + MAX(rec.valor) AS Payed_value_confirmation +FROM + documento_ventas_has_item dvi + JOIN documento_ventas dv + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN recaudo rec + ON ( dv.id_documento = rec.id_documento_cruce AND dv.id_sucursal = rec.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,2) RLIKE 'F|D[^0-9MP]' + AND NOT (dv.id_cliente LIKE "999") + AND (rec.id_documento <> rec.id_documento_cruce) +GROUP BY + Branch_Office, Invoice_No diff --git a/2011-10-20-ventas_desde_views.sql b/2011-10-20-ventas_desde_views.sql new file mode 100644 index 0000000..2a44dd7 --- /dev/null +++ b/2011-10-20-ventas_desde_views.sql @@ -0,0 +1,13 @@ +-- Documentos de venta + + +SELECT + vts.*, + rec.Invoice_Due_Date, + rec.Payment_Date + +FROM + view_ventas vts + LEFT JOIN view_ventas_con_recaudo rec + USING (Branch_Office, Invoice_No) + diff --git a/2011-10-20-view_documentos_recaudo.sql b/2011-10-20-view_documentos_recaudo.sql new file mode 100644 index 0000000..26514fc --- /dev/null +++ b/2011-10-20-view_documentos_recaudo.sql @@ -0,0 +1,41 @@ +-- Documentos de venta que han sido cruzados con uno o más recaudos +-- Se detalla el documento recaudo y el valor de recaudo + +CREATE + ALGORITHM = TEMPTABLE + VIEW view_documentos_recaudo +AS SELECT suc.nombre_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + rec.fecha_vencimiento AS Invoice_Due_Date, + MAX(rec.fecha) AS Payment_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency, + rec.id_documento AS Payment_Doc, + SUM(rec.valor) / COUNT(dvi.id_item) AS Payed_value, + MAX(rec.valor) AS Payed_value_confirmation +FROM + documento_ventas_has_item dvi + JOIN documento_ventas dv + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN recaudo rec + ON ( dv.id_documento = rec.id_documento_cruce AND dv.id_sucursal = rec.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,2) RLIKE 'F|D[^0-9MP]' + AND NOT (dv.id_cliente LIKE "999") +GROUP BY + Branch_Office, Invoice_No, Payment_Doc +HAVING + Payment_Doc <> Invoice_No diff --git a/2011-10-20-view_ventas.sql b/2011-10-20-view_ventas.sql new file mode 100644 index 0000000..ccccaf8 --- /dev/null +++ b/2011-10-20-view_ventas.sql @@ -0,0 +1,32 @@ +-- Documentos de venta + +CREATE + ALGORITHM = TEMPTABLE + VIEW view_ventas +AS SELECT suc.nombre_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency, + fp.descripcion AS Payment_conditions, + fp.formapago AS Sale_conditions +FROM + documento_ventas_has_item dvi + JOIN documento_ventas dv + ON ( dv.id_documento = dvi.id_documento AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item AND dvi.id_sucursal = i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal = cs.id_sucursal AND dv.id_cliente = cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,2) RLIKE 'F|D[^0-9MP]' + AND NOT (dv.id_cliente LIKE "999") +GROUP BY Branch_Office, Invoice_No diff --git a/2011-10-20-view_ventas_con_recaudo.sql b/2011-10-20-view_ventas_con_recaudo.sql new file mode 100644 index 0000000..c8ada0b --- /dev/null +++ b/2011-10-20-view_ventas_con_recaudo.sql @@ -0,0 +1,42 @@ +-- Documentos de venta que han sido cruzados con uno o más recaudos +-- No se detalla el documento recaudo +-- La fecha de pago debería coincidir con la fecha del último pago + +CREATE + ALGORITHM = TEMPTABLE + VIEW view_ventas_con_recaudo +AS SELECT + suc.nombre_sucursal AS Branch_Office, + dv.id_documento AS Invoice_No, + dv.fecha AS Invoice_Date, + rec.fecha_vencimiento AS Invoice_Due_Date, + MAX(rec.fecha) AS Payment_Date, + cs.id_cliente AS ID_Customer, + cs.nombre_cliente AS Customer_Name, + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))) AS Invoice_qty_Kg, + SUM(dvi.valor) AS Amount, + "COP" AS Currency, + rec.id_documento AS Payment_Doc, + SUM(rec.valor) / COUNT(dvi.id_item) AS Payed_value, + MAX(rec.valor) AS Payed_value_confirmation +FROM + documento_ventas_has_item dvi + JOIN documento_ventas dv + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN recaudo rec + ON ( dv.id_documento = rec.id_documento_cruce AND dv.id_sucursal = rec.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN forma_pago fp + ON ( dv.id_formapago = fp.id_formapago AND dv.id_sucursal = fp.id_sucursal ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,2) RLIKE 'F|D[^0-9MP]' + AND NOT (dv.id_cliente LIKE "999") + AND (rec.id_documento <> rec.id_documento_cruce) +GROUP BY + Branch_Office, Invoice_No diff --git a/2011-10-28-clientes.sql b/2011-10-28-clientes.sql new file mode 100644 index 0000000..4ebc360 --- /dev/null +++ b/2011-10-28-clientes.sql @@ -0,0 +1,21 @@ +-- Clientes ha quienes se les ha vendido desde 2008 + +SELECT suc.nombre_sucursal AS Branch_Office, + cs.id_cliente AS ID_Customer, + cs.nombre_contacto AS Customer_Contact, + cs.nombre_cliente AS Customer_Name, + cs.direccion AS Address, + CONCAT_WS(', ',z.nombre_ciudad,z.nombre_depto) AS City +FROM + documento_ventas dv + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal = cs.id_sucursal AND dv.id_cliente = cs.id_cliente ) + JOIN sucursal suc + ON ( dv.id_sucursal = suc.id_sucursal ) + JOIN view_ciudades AS z + ON (cs.ciudad = z.id_ciudad ) +WHERE + YEAR(dv.fecha) >= 2008 + AND LEFT(dv.id_documento,2) RLIKE 'F|D[^0-9MP]' + AND NOT (dv.id_cliente LIKE "999") +GROUP BY Branch_Office, ID_Customer diff --git a/2012-01-16-Ventas por tipo de documento por cliente con sector.sql b/2012-01-16-Ventas por tipo de documento por cliente con sector.sql new file mode 100644 index 0000000..2d2ec66 --- /dev/null +++ b/2012-01-16-Ventas por tipo de documento por cliente con sector.sql @@ -0,0 +1,32 @@ +-- Ventas por tipo de documento por cliente con sector + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + LEFT(dv.id_documento,2) AS TipoDocumento, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN sector se + ON ( se.id_sector = LEFT(cs.id_sector,2) ) + LEFT JOIN subsector sbse + ON ( sbse.id_sector = cs.id_sector ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2011 +GROUP BY + Suc,Nit,TipoDocumento diff --git a/2012-01-26-Ventas por documento por cliente con sector y tipo de documento.sql b/2012-01-26-Ventas por documento por cliente con sector y tipo de documento.sql new file mode 100644 index 0000000..5df8838 --- /dev/null +++ b/2012-01-26-Ventas por documento por cliente con sector y tipo de documento.sql @@ -0,0 +1,38 @@ +-- Ventas por documento por cliente con sector y tipo de documento + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + IF(LEFT(dv.id_documento,1)="F","Factura",IF(LEFT(dv.id_documento,1)="D","Devolucion",IF(LEFT(dv.id_documento,1)="T","Traslado","Desconocido"))) AS ClaseDocumento, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2011 +GROUP BY + Suc,Nit,Documento +ORDER BY + Valor DESC diff --git a/2012-01-26-view_solosector.sql b/2012-01-26-view_solosector.sql new file mode 100644 index 0000000..bbd5227 --- /dev/null +++ b/2012-01-26-view_solosector.sql @@ -0,0 +1,7 @@ +CREATE ALGORITHM = TEMPTABLE VIEW `solosector` ( +id_sector, +descripcion, +nivel +) AS SELECT * +FROM `sector` +WHERE nivel =1 diff --git a/2012-01-27-Existencias_por_mes_por_sucursal_por_linea.sql b/2012-01-27-Existencias_por_mes_por_sucursal_por_linea.sql new file mode 100644 index 0000000..dae595e --- /dev/null +++ b/2012-01-27-Existencias_por_mes_por_sucursal_por_linea.sql @@ -0,0 +1,26 @@ +-- Existencia histórica por línea por sucursal (costo y Kg) + +SELECT + e.fecha AS Mes, + e.id_sucursal AS Sucursal, + l.id_linea AS Linea, + l.descripcion AS Descripcion, + SUM((e.cantidad)*i.peso) AS Peso, + SUM((e.cantidad)*e.costo_unidad) AS Costo + +FROM + existencia_historico e + JOIN item i + ON ( i.id_item=e.id_item AND i.id_sucursal=e.id_sucursal ) + JOIN linea l + ON ( l.id_linea = left(i.id_linea,2) AND l.tipo=i.tipo ) + +WHERE + (e.fecha = LAST_DAY(e.fecha)) + AND (YEAR(e.fecha) = 2012) + +GROUP BY + Sucursal,Linea,Mes + +ORDER BY + Mes,Sucursal,Linea diff --git a/2012-01-27-Ventas_por_mes_por_sucursal_por_linea.sql b/2012-01-27-Ventas_por_mes_por_sucursal_por_linea.sql new file mode 100644 index 0000000..0357562 --- /dev/null +++ b/2012-01-27-Ventas_por_mes_por_sucursal_por_linea.sql @@ -0,0 +1,29 @@ +-- Ventas por mes, sucursal y linea + +SELECT + DATE_FORMAT(dv.fecha,"%Y-%m") AS Mes, + dvi.id_sucursal AS Sucursal, + l.id_linea AS Linea, + l.descripcion AS Descripcion, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) As Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.costo) AS Costo +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = left(i.id_linea,2) AND l.tipo=i.tipo ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha)=2011 +GROUP BY + Sucursal,Linea,Mes +ORDER BY + Sucursal,Linea,Mes + diff --git a/2012-02-03-Ventas por documento por cliente por familia con sector.sql b/2012-02-03-Ventas por documento por cliente por familia con sector.sql new file mode 100644 index 0000000..b8fd146 --- /dev/null +++ b/2012-02-03-Ventas por documento por cliente por familia con sector.sql @@ -0,0 +1,43 @@ +-- Ventas por documento por cliente por familia con sector + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) AS Mes, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2011 + AND l.tipo = 1 +GROUP BY + Suc,Nit,Documento,Familia +ORDER BY + Suc,Nit,Documento,Familia + diff --git a/2012-02-06-ventas 2011 por cliente por familia.sql b/2012-02-06-ventas 2011 por cliente por familia.sql new file mode 100644 index 0000000..d2012d0 --- /dev/null +++ b/2012-02-06-ventas 2011 por cliente por familia.sql @@ -0,0 +1,42 @@ +-- Ventas por cliente por familia con sector + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + MONTH(dv.fecha) AS Mes, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2011 + AND l.tipo = 1 + +GROUP BY + Suc,Nit,Mes,Familia + +ORDER BY + Suc,Nit,Mes,Familia diff --git a/2012-02-27-ventas 2011 por cliente por familia.sql b/2012-02-27-ventas 2011 por cliente por familia.sql new file mode 100644 index 0000000..f458a5b --- /dev/null +++ b/2012-02-27-ventas 2011 por cliente por familia.sql @@ -0,0 +1,50 @@ +-- Ventas por cliente por familia con sector +-- (Agregar nombre de vendedor y líneas) + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + MONTH(dv.fecha) AS Mes, + l.id_linea AS CodLinea, + l.descripcion AS Linea, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2011 + AND l.tipo = 1 + +GROUP BY + Suc,Nit,Mes,CodLinea,CodVendedor + +ORDER BY + Suc,Nit,Mes,CodLinea,CodVendedor diff --git a/2012-02-27-ventas por documento por cliente por familia con sector.sql b/2012-02-27-ventas por documento por cliente por familia con sector.sql new file mode 100644 index 0000000..74a1f7f --- /dev/null +++ b/2012-02-27-ventas por documento por cliente por familia con sector.sql @@ -0,0 +1,45 @@ +-- Ventas por documento por cliente por familia con sector +-- (Agregar líneas por factura) + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) AS Mes, + l.id_linea AS CodLinea, + l.descripcion AS Linea, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2011 + AND l.tipo = 1 +GROUP BY + Suc,Nit,Documento,Linea +ORDER BY + Suc,Nit,Documento,Linea diff --git a/2012-03-02-ventas mensuales por linea por documento por cliente para Google table.sql b/2012-03-02-ventas mensuales por linea por documento por cliente para Google table.sql new file mode 100644 index 0000000..9c717da --- /dev/null +++ b/2012-03-02-ventas mensuales por linea por documento por cliente para Google table.sql @@ -0,0 +1,50 @@ +-- Ventas por documento por cliente por familia con sector +-- (Agregar líneas por factura) + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + l.id_linea AS CodLinea, + l.descripcion AS Linea, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2011 + AND l.tipo = 1 +GROUP BY + Suc,Nit,Documento,CodLinea,CodVendedor +ORDER BY + Suc,Nit,Documento,CodLinea,CodVendedor diff --git a/2012-03-02-ventas mensuales por linea por documento por cliente.sql b/2012-03-02-ventas mensuales por linea por documento por cliente.sql new file mode 100644 index 0000000..9c717da --- /dev/null +++ b/2012-03-02-ventas mensuales por linea por documento por cliente.sql @@ -0,0 +1,50 @@ +-- Ventas por documento por cliente por familia con sector +-- (Agregar líneas por factura) + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + l.id_linea AS CodLinea, + l.descripcion AS Linea, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2011 + AND l.tipo = 1 +GROUP BY + Suc,Nit,Documento,CodLinea,CodVendedor +ORDER BY + Suc,Nit,Documento,CodLinea,CodVendedor diff --git a/2012-03-03-ventas mensuales por linea por cliente.sql b/2012-03-03-ventas mensuales por linea por cliente.sql new file mode 100644 index 0000000..406e872 --- /dev/null +++ b/2012-03-03-ventas mensuales por linea por cliente.sql @@ -0,0 +1,51 @@ +-- Ventas mensuales por linea por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + l.id_linea_analisis AS CodLinea1, + l.linea_analisis AS Linea1, + l.id_linea AS CodLinea2, + l.descripcion AS Linea2, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2011 + +GROUP BY + Suc,Nit,ConsecutivoMes,CodLinea1,CodLinea2,CodVendedor +ORDER BY + Suc,Nit,ConsecutivoMes,CodLinea1,CodLinea2,CodVendedor diff --git a/2012-03-03-ventas mensuales por lineaDirectorio por documento por cliente.sql b/2012-03-03-ventas mensuales por lineaDirectorio por documento por cliente.sql new file mode 100644 index 0000000..72cba4f --- /dev/null +++ b/2012-03-03-ventas mensuales por lineaDirectorio por documento por cliente.sql @@ -0,0 +1,53 @@ +-- Ventas mensuales por linea por documento por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + l.familia AS Familia, + l.id_linea_analisis AS CodLinea1, + l.linea_analisis AS Linea1, + l.id_linea AS CodLinea2, + l.descripcion AS Linea2, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2011 + +GROUP BY + Suc,Nit,Documento,CodLinea1,CodLinea2,CodVendedor +ORDER BY + Suc,Nit,Documento,CodLinea1,CodLinea2,CodVendedor diff --git a/2012-04-24-clientes_desde_2011.sql b/2012-04-24-clientes_desde_2011.sql new file mode 100644 index 0000000..329efda --- /dev/null +++ b/2012-04-24-clientes_desde_2011.sql @@ -0,0 +1,43 @@ +-- Clientes por sucursal por año sin lineas + +SELECT c.id_cliente AS Nit, + dv.id_sucursal AS Sucursal, + c.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + c.telefono AS Telefono, + c.direccion AS Direccion, + z.descripcion AS Ciudad, + se.id_sector AS CodSector, + se.descripcion AS Sector, + sse.id_sector AS CodSubsector, + sse.descripcion AS Subsector, + SUM(dvi.valor) AS Valor + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN cliente_has_sucursal c + ON ( dv.id_cliente=c.id_cliente + AND dv.id_sucursal=c.id_sucursal ) + JOIN sucursal su + ON ( su.id_sucursal=dv.id_sucursal ) + JOIN vendedor vdr + ON ( vdr.id_vendedor=dv.id_vendedor + AND dv.id_sucursal=vdr.id_sucursal ) + JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) + JOIN subsector sse + ON ( sse.id_sector=c.id_sector ) + JOIN zona z + ON ( c.id_zona = z.id_zona ) + +WHERE LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= '2011-01-01' + AND dv.fecha <= '2012-12-31' + +GROUP BY Sucursal, Cliente + +HAVING Valor > 900000 diff --git a/2012-04-27-comisiones por recaudo en kg.sql b/2012-04-27-comisiones por recaudo en kg.sql new file mode 100644 index 0000000..f318786 --- /dev/null +++ b/2012-04-27-comisiones por recaudo en kg.sql @@ -0,0 +1,34 @@ +SELECT + com.id_sucursal AS suc, + com.id_vendedor AS cod_vendedor, + vdr.nombre_vendedor AS nombre_vendedor, + vt.id_tipovendedor AS tipo_vdr, + com.id_documento AS documento, + com.id_documento_cruce AS documento_cruce, + com.id_item AS cod_item, + i.descripcion AS item, + l.descripcion AS linea, + lc.descripcion AS linea_comision, + com.periodo AS periodo, + com.factor_prorrateo AS factor_prorrateo, + com.factor_comision AS comision_cop_por_kg, + mo.descripcion AS rango_mora, + com.cantidad AS cantidad, + com.peso_un AS peso_un, + com.valor_comision AS comision +FROM + valor_comision_recaudo_kg com + LEFT JOIN vendedor vdr + USING (id_vendedor,id_sucursal) + LEFT JOIN vendedor_has_tipovendedor vt + USING (id_vendedor,id_sucursal) + LEFT JOIN item i + USING (id_sucursal,id_item) + LEFT JOIN linea l + ON (i.tipo = l.tipo AND LEFT(i.id_linea,2) = l.id_linea) + LEFT JOIN linea_has_linea_comision lhc + ON (l.id_linea=lhc.id_linea) + LEFT JOIN linea_comision lc + USING (id_linea_comision) + LEFT JOIN tipo_mora mo + USING (id_rangomora) diff --git a/2012-05-03-comisiones mensuales por recaudo en kg.sql b/2012-05-03-comisiones mensuales por recaudo en kg.sql new file mode 100644 index 0000000..b64b129 --- /dev/null +++ b/2012-05-03-comisiones mensuales por recaudo en kg.sql @@ -0,0 +1,38 @@ +-- Comisiones mensuales de acuerdo a recaudos sobre ventas en Kg +SELECT + com.id_sucursal AS suc, + com.id_vendedor AS cod_vendedor, + vdr.nombre_vendedor AS nombre_vendedor, + vt.id_tipovendedor AS tipo_vdr, + com.id_documento AS documento, + com.id_documento_cruce AS documento_cruce, + com.id_item AS cod_item, + i.descripcion AS item, + l.descripcion AS linea, + lc.descripcion AS linea_comision, + com.periodo AS periodo, + com.factor_prorrateo AS factor_prorrateo, + com.factor_comision AS comision_cop_por_kg, + mo.descripcion AS rango_mora, + com.cantidad AS cantidad, + com.peso_un AS peso_un, + com.valor_comision AS comision +FROM + valor_comision_recaudo_kg com + LEFT JOIN vendedor vdr + USING (id_vendedor,id_sucursal) + LEFT JOIN vendedor_has_tipovendedor vt + USING (id_vendedor,id_sucursal) + LEFT JOIN item i + USING (id_sucursal,id_item) + LEFT JOIN linea l + ON (i.tipo = l.tipo AND LEFT(i.id_linea,2) = l.id_linea) + LEFT JOIN linea_has_linea_comision lhc + ON (l.id_linea=lhc.id_linea) + LEFT JOIN linea_comision lc + USING (id_linea_comision) + LEFT JOIN tipo_mora mo + USING (id_rangomora) + +WHERE + EXTRACT(YEAR_MONTH FROM com.periodo) = 201204 diff --git a/2012-05-09-devoluciones de un rango de fechas.sql b/2012-05-09-devoluciones de un rango de fechas.sql new file mode 100644 index 0000000..3696b46 --- /dev/null +++ b/2012-05-09-devoluciones de un rango de fechas.sql @@ -0,0 +1,35 @@ +-- Devoluciones (documento) por cliente por sucursal +-- @jtorres: devoluciones (DV) realizadas a nivel nacional 2011-09 a 2012-03. +-- Cada una debe tener el número de DV, Tercero, Fecha, Valor y Sucursal. +-- Ademas facturas + +SELECT + dv.id_sucursal AS Suc, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + dv.fecha AS Fecha, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= "2011-09-01" + AND dv.fecha <= "2012-04-30" +GROUP BY + Suc,Nit,Documento +ORDER BY + Suc,Nit,Documento diff --git a/2012-05-09-gastos por tercero por cuenta.sql b/2012-05-09-gastos por tercero por cuenta.sql new file mode 100644 index 0000000..bf6ab40 --- /dev/null +++ b/2012-05-09-gastos por tercero por cuenta.sql @@ -0,0 +1,27 @@ +-- Gastos por tercero por cuenta +-- @cmunoz: cuentas de gastos de administracion y ventas en donde pueda ver +-- Sucursal, meses de 2011-01 a 2012-04, tercero, valor + +SELECT + mov.id_sucursal AS suc, + mov.mes AS mes, + mov.id_cuenta AS id_cuenta, + cta.descripcion AS cuenta, + mov.id_cliente AS id_tercero, + cli.nombre_cliente AS tercero, + SUM(mov.valor) AS valor + +FROM + movimiento_documento_cuenta mov + LEFT JOIN cuenta cta USING (id_cuenta,id_sucursal) + LEFT JOIN cliente cli USING (id_cliente) + +WHERE + (id_cuenta LIKE '5%') + AND (mes > 201100) + +GROUP BY + suc,mes,id_cuenta, id_tercero +ORDER BY + suc,mes,id_cuenta, id_tercero + diff --git a/2012-05-31-clientes distintos por sector por subfamilia por vendedor.sql b/2012-05-31-clientes distintos por sector por subfamilia por vendedor.sql new file mode 100644 index 0000000..10fefcd --- /dev/null +++ b/2012-05-31-clientes distintos por sector por subfamilia por vendedor.sql @@ -0,0 +1,44 @@ +SELECT + 'sector_subfamilia_vendedor' AS Nivel, + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + lhs.subfamilia AS Subfamilia, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + JOIN linea_has_subfamilia lhs + ON (l.id_linea = lhs.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = 201205 + +GROUP BY + Suc,CodVendedor,Subfamilia,Sector + +ORDER BY + Suc,CodVendedor,Subfamilia,Sector diff --git a/2012-05-31-clientes distintos por subfamilia por sucursal.sql b/2012-05-31-clientes distintos por subfamilia por sucursal.sql new file mode 100644 index 0000000..83d9bdc --- /dev/null +++ b/2012-05-31-clientes distintos por subfamilia por sucursal.sql @@ -0,0 +1,42 @@ +SELECT + 'subfamilia_sucursal' AS Nivel, + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + lhs.subfamilia AS Subfamilia, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + JOIN linea_has_subfamilia lhs + ON (l.id_linea = lhs.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = 201205 + +GROUP BY + Suc,Subfamilia,Sector + +ORDER BY + Suc,Subfamilia,Sector diff --git a/2012-05-31-clientes distintos por subfamilia por vendedor.sql b/2012-05-31-clientes distintos por subfamilia por vendedor.sql new file mode 100644 index 0000000..f367a11 --- /dev/null +++ b/2012-05-31-clientes distintos por subfamilia por vendedor.sql @@ -0,0 +1,43 @@ +SELECT + 'subfamilia_vendedor' AS Nivel, + dv.id_sucursal AS Suc, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + lhs.subfamilia AS Subfamilia, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + JOIN linea_has_subfamilia lhs + ON (l.id_linea = lhs.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = 201205 + +GROUP BY + Suc,CodVendedor,Subfamilia + +ORDER BY + Suc,CodVendedor,Subfamilia diff --git a/2012-05-31-clientes distintos por sucursal.sql b/2012-05-31-clientes distintos por sucursal.sql new file mode 100644 index 0000000..0132a5e --- /dev/null +++ b/2012-05-31-clientes distintos por sucursal.sql @@ -0,0 +1,40 @@ +SELECT + 'sucursal' AS Nivel, + dv.id_sucursal AS Suc, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + JOIN linea_has_subfamilia lhs + ON (l.id_linea = lhs.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = 201205 + +GROUP BY + Suc + +ORDER BY + Suc diff --git a/2012-05-31-clientes distintos por vendedor.sql b/2012-05-31-clientes distintos por vendedor.sql new file mode 100644 index 0000000..94807e5 --- /dev/null +++ b/2012-05-31-clientes distintos por vendedor.sql @@ -0,0 +1,42 @@ +SELECT + 'vendedor' AS Nivel, + dv.id_sucursal AS Suc, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + JOIN linea_has_subfamilia lhs + ON (l.id_linea = lhs.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = 201205 + +GROUP BY + Suc,CodVendedor + +ORDER BY + Suc,CodVendedor diff --git a/2012-06-02-comisiones mensuales por recaudo en kg.sql b/2012-06-02-comisiones mensuales por recaudo en kg.sql new file mode 100644 index 0000000..bf6c155 --- /dev/null +++ b/2012-06-02-comisiones mensuales por recaudo en kg.sql @@ -0,0 +1,49 @@ +-- Copia de la consulta en agofer_comisiones.pl +SELECT + com.id_sucursal AS suc, + com.id_vendedor AS cod_vendedor, + vdr.nombre_vendedor AS vendedor, + c.id_cliente AS cod_cliente, + c.nombre_cliente AS cliente, + sec.id_sector AS cod_sector, + sec.descripcion AS sector, + vt.id_tipovendedor AS tipo_vdr, + com.id_documento AS documento, + com.id_documento_cruce AS documento_cruce, + com.id_item AS cod_item, + i.descripcion AS item, + l.descripcion AS linea, + lc.descripcion AS linea_comision, + com.periodo AS periodo, + com.factor_prorrateo AS factor_prorrateo, + com.factor_comision AS comision_cop_por_kg, + mo.descripcion AS rango_mora, + com.cantidad AS cantidad, + com.peso_un AS peso_un, + com.valor_comision AS comision +FROM + valor_comision_recaudo_kg com + LEFT JOIN vendedor vdr + USING (id_vendedor,id_sucursal) + LEFT JOIN vendedor_has_tipovendedor vt + USING (id_vendedor,id_sucursal) + LEFT JOIN item i + USING (id_sucursal,id_item) + LEFT JOIN linea l + ON (i.tipo = l.tipo AND LEFT(i.id_linea,2) = l.id_linea) + LEFT JOIN linea_has_linea_comision lhc + ON (l.id_linea=lhc.id_linea) + LEFT JOIN linea_comision lc + USING (id_linea_comision) + LEFT JOIN tipo_mora mo + USING (id_rangomora) + LEFT JOIN recaudo doc + USING (id_sucursal,id_documento,id_documento_cruce) + LEFT JOIN cliente c + USING (id_cliente) + LEFT JOIN sector sec + ON (LEFT(c.id_sector,2)=sec.id_sector) + +WHERE + EXTRACT(YEAR_MONTH FROM com.periodo) = 201205 + diff --git a/2012-07-19-Ventas por sector familia sucursal.sql b/2012-07-19-Ventas por sector familia sucursal.sql new file mode 100644 index 0000000..138bd1e --- /dev/null +++ b/2012-07-19-Ventas por sector familia sucursal.sql @@ -0,0 +1,36 @@ +-- Ventas por sucursal, sector, familia, mes + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + MONTH(dv.fecha) AS Mes, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2011 + AND l.tipo = 1 +GROUP BY + Suc,Sector,Familia,Mes +ORDER BY + Suc,Sector,Familia,Mes + diff --git a/2012-07-20-ventas mensuales por linea por cliente_2010.sql b/2012-07-20-ventas mensuales por linea por cliente_2010.sql new file mode 100644 index 0000000..6619dfe --- /dev/null +++ b/2012-07-20-ventas mensuales por linea por cliente_2010.sql @@ -0,0 +1,52 @@ +-- Ventas mensuales por linea por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +-- Excluye traslados +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2010)*12) AS ConsecutivoMes, + l.id_linea_analisis AS CodLinea1, + l.linea_analisis AS Linea1, + l.id_linea AS CodLinea2, + l.descripcion AS Linea2, + l.familia AS Familia, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) = 2010 + +GROUP BY + Suc,Nit,ConsecutivoMes,CodLinea1,CodLinea2,CodVendedor +ORDER BY + Suc,Nit,ConsecutivoMes,CodLinea1,CodLinea2,CodVendedor diff --git a/2012-09-14-Origen y destino de ventas.sql b/2012-09-14-Origen y destino de ventas.sql new file mode 100644 index 0000000..5cb7f48 --- /dev/null +++ b/2012-09-14-Origen y destino de ventas.sql @@ -0,0 +1,29 @@ +-- Ventas por documento con cliente, ciudad y sucursal + +SELECT + z.id_zona, z.descripcion, SUM(dvi.valor) AS valor, SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS peso, SUM(dvi.valor-dvi.costo) + + dv.id_sucursal AS Suc, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + IF(LEFT(dv.id_documento,1)="F","Factura",IF(LEFT(dv.id_documento,1)="D","Devolucion",IF(LEFT(dv.id_documento,1)="T","Traslado","Desconocido"))) AS ClaseDocumento, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + + ciu.nombre_ciudad AS Ciudad, + ciu.nombre_depto AS Departamento + +FROM documento_ventas dv JOIN documento_ventas_has_item dvi ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) JOIN item i ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) JOIN cliente_has_sucursal cs ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) JOIN zona z ON ( z.id_zona=LEFT(cs.id_zona,8) ) + + + JOIN view_ciudades ciu + ON (ciu.id_ciudad = cli.id_zona) + +WHERE LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPB]" AND NOT (i.tipo LIKE "5") AND NOT (dv.id_cliente LIKE "999") AND dv.fecha = '2012-09-14' AND YEAR(dv.fecha)=YEAR('2012-09-14') + +GROUP BY z.id_zona + +ORDER BY valor DESC diff --git a/2012-09-25-Listas de precios.sql b/2012-09-25-Listas de precios.sql new file mode 100644 index 0000000..85eaf08 --- /dev/null +++ b/2012-09-25-Listas de precios.sql @@ -0,0 +1,26 @@ +SELECT + lp.id_sucursal AS Sucursal, + lp.id_listaprecio AS Lista_Precios, + i.id_linea AS Linea, + lp.id_item AS Cod_Item, + i.descripcion AS Item, + i.unidad1 AS Unidad_Medida, + i.peso AS Peso_Teorico, + lp.precio AS Precio + +FROM + lista_precios lp join item i + +USING + (id_sucursal,id_item) + +WHERE + i.estado = '0' + AND i.tipo = 1 + AND lp.precio > 1 + AND (lp.id_listaprecio = '13B' OR lp.id_listaprecio = '16' OR + lp.id_listaprecio = '17' OR + lp.id_listaprecio = 'AA') + +ORDER BY + Sucursal, Lista_Precios, Cod_Item diff --git a/2012-10-19-Documentos de ventas por mes.sql b/2012-10-19-Documentos de ventas por mes.sql new file mode 100644 index 0000000..cc64784 --- /dev/null +++ b/2012-10-19-Documentos de ventas por mes.sql @@ -0,0 +1,29 @@ +-- Ventas por documento por cliente por familia con sector + +SELECT + dv.id_sucursal AS Suc, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) AS Mes, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = 201208 + AND l.tipo = 1 +GROUP BY + Documento +ORDER BY + Documento + diff --git a/2012-10-19-ventas por mes por item.sql b/2012-10-19-ventas por mes por item.sql new file mode 100644 index 0000000..f2c6494 --- /dev/null +++ b/2012-10-19-ventas por mes por item.sql @@ -0,0 +1,28 @@ +-- Ventas por mes, item + +SELECT + DATE_FORMAT(dv.fecha,"%Y-%m") AS Mes, + i.id_item AS Item, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha)=2012 + +GROUP BY + Item,Mes + +ORDER BY + Item,Mes + diff --git a/2013-02-01-Total cartera por mes por sucursal.sql b/2013-02-01-Total cartera por mes por sucursal.sql new file mode 100644 index 0000000..95f1879 --- /dev/null +++ b/2013-02-01-Total cartera por mes por sucursal.sql @@ -0,0 +1,23 @@ +-- Saldo de Cartera por sucursal con corte al ultimo dia del mes dado + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf -e "set @meses=1; source $HOME/sql/MONTHLY-Analysis_of_Accounts_Receivable.sql" > $HOME/Agofer_Accounts_Receivable_$(date --date="last month" +%Y-%m).csv + +SELECT + ch.fecha_historico AS Fecha_Corte, + s.nombre_sucursal AS Sucursal, + SUM(ch.valor) AS Amount_due + +FROM + cartera_historico ch + JOIN sucursal s + USING (id_sucursal) + +WHERE + ch.fecha_historico = LAST_DAY(ch.fecha_historico) + AND + YEAR(ch.fecha_historico) >= 2010 + +GROUP BY + ch.id_sucursal, ch.fecha_historico + diff --git a/2013-04-23-clientes_distintos_por_linea_por_sucursal.sql b/2013-04-23-clientes_distintos_por_linea_por_sucursal.sql new file mode 100644 index 0000000..5ebe014 --- /dev/null +++ b/2013-04-23-clientes_distintos_por_linea_por_sucursal.sql @@ -0,0 +1,37 @@ +SELECT + YEAR(dv.fecha) AS Ano, + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + l.descripcion AS Linea2, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2010 + AND YEAR(dv.fecha) <= 2012 + +GROUP BY + Ano,Suc,Sector,Linea2 + +ORDER BY + Ano,Suc,Sector,Linea2 diff --git a/2013-04-23-clientes_por_subfamilia_por_sucursal.sql b/2013-04-23-clientes_por_subfamilia_por_sucursal.sql new file mode 100644 index 0000000..7b244cf --- /dev/null +++ b/2013-04-23-clientes_por_subfamilia_por_sucursal.sql @@ -0,0 +1,37 @@ +SELECT + YEAR(dv.fecha) AS Ano, + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + l.descripcion AS Linea2, + dv.id_cliente AS Cliente, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2010 + AND YEAR(dv.fecha) <= 2012 + +GROUP BY + Ano,Suc,Sector,Linea2,Cliente + +ORDER BY + Ano,Suc,Sector,Linea2,Cliente diff --git a/2013-04-24-clientes_distintos_por_año.sql b/2013-04-24-clientes_distintos_por_año.sql new file mode 100644 index 0000000..9c24cd9 --- /dev/null +++ b/2013-04-24-clientes_distintos_por_año.sql @@ -0,0 +1,34 @@ +SELECT + YEAR(dv.fecha) AS Ano, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2010 + AND YEAR(dv.fecha) <= 2012 + +GROUP BY + Ano + +ORDER BY + Ano diff --git a/2013-04-24-clientes_distintos_por_linea.sql b/2013-04-24-clientes_distintos_por_linea.sql new file mode 100644 index 0000000..3d20cbe --- /dev/null +++ b/2013-04-24-clientes_distintos_por_linea.sql @@ -0,0 +1,35 @@ +SELECT + YEAR(dv.fecha) AS Ano, + l.descripcion AS Linea2, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2010 + AND YEAR(dv.fecha) <= 2012 + +GROUP BY + Ano,Linea2 + +ORDER BY + Ano,Linea2 diff --git a/2013-04-24-clientes_distintos_por_linea_por_sucursal_con_plazo.sql b/2013-04-24-clientes_distintos_por_linea_por_sucursal_con_plazo.sql new file mode 100644 index 0000000..e8effe3 --- /dev/null +++ b/2013-04-24-clientes_distintos_por_linea_por_sucursal_con_plazo.sql @@ -0,0 +1,37 @@ +SELECT + YEAR(dv.fecha) AS Ano, + dv.id_sucursal AS Suc, + l.descripcion AS Linea, + fp.dias AS Plazo, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN forma_pago fp + USING (id_formapago) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2010 + AND YEAR(dv.fecha) <= 2012 + +GROUP BY + Ano,Suc,Linea,Plazo + +ORDER BY + Ano,Suc,Linea,Plazo diff --git a/2013-04-24-clientes_distintos_por_sector.sql b/2013-04-24-clientes_distintos_por_sector.sql new file mode 100644 index 0000000..356f265 --- /dev/null +++ b/2013-04-24-clientes_distintos_por_sector.sql @@ -0,0 +1,35 @@ +SELECT + YEAR(dv.fecha) AS Ano, + se.descripcion AS Sector, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2010 + AND YEAR(dv.fecha) <= 2012 + +GROUP BY + Ano,Sector + +ORDER BY + Ano,Sector diff --git a/2013-04-24-clientes_distintos_por_sucursal.sql b/2013-04-24-clientes_distintos_por_sucursal.sql new file mode 100644 index 0000000..dc1153a --- /dev/null +++ b/2013-04-24-clientes_distintos_por_sucursal.sql @@ -0,0 +1,35 @@ +SELECT + YEAR(dv.fecha) AS Ano, + dv.id_sucursal AS Suc, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2010 + AND YEAR(dv.fecha) <= 2012 + +GROUP BY + Ano,Suc + +ORDER BY + Ano,Suc diff --git a/2013-05-16-facturas_y_devoluciones_de_un_rango_de_fechas.sql b/2013-05-16-facturas_y_devoluciones_de_un_rango_de_fechas.sql new file mode 100644 index 0000000..1625b7e --- /dev/null +++ b/2013-05-16-facturas_y_devoluciones_de_un_rango_de_fechas.sql @@ -0,0 +1,36 @@ +-- Facturas y Devoluciones (documento) por cliente por sucursal +-- pwc (via jtorres): +-- Detalle de facturacion entre 2012-10-01 y 2013-03-31 +-- Detalle devolucion en ventas entre 2012-10-01 y 2013-03-31 +-- Todos los documentos en ese periodo. +-- Los datos requeridos para cada uno de ellos son: +-- Número de documento, fecha, valor, NIT y nombre tercero. + +SELECT + dv.id_sucursal AS Suc, + dv.id_documento AS Documento, + dv.fecha AS Fecha, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + +WHERE + NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= "2013-10-01" + AND dv.fecha <= "2013-12-31" + AND LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + +GROUP BY + Suc,Nit,Documento + +ORDER BY + Suc,Nit,Documento diff --git a/2013-08-21-Precio_promedio_lamina_HR.sql b/2013-08-21-Precio_promedio_lamina_HR.sql new file mode 100644 index 0000000..6f6ca08 --- /dev/null +++ b/2013-08-21-Precio_promedio_lamina_HR.sql @@ -0,0 +1,41 @@ +-- Precio de venta promedio de la lamina HR por kilo, mes a mes en 5 años + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg + +FROM + documento_ventas dv + + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) + AND l.tipo = i.tipo ) + +WHERE + + (l.id_linea = 27 OR l.id_linea = 30 OR l.id_linea = 32) + AND LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= '2008-01-01' + + +GROUP BY + + Month + +ORDER BY + + Month diff --git a/2013-09-02-sales_per_line_per_client_2010.sql b/2013-09-02-sales_per_line_per_client_2010.sql new file mode 100644 index 0000000..6fd1545 --- /dev/null +++ b/2013-09-02-sales_per_line_per_client_2010.sql @@ -0,0 +1,81 @@ +-- Ventas mensuales por linea por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +-- Excluye traslados +-- Cambios solicitados en 2013-06-25: Zona y Suc2 + +-- Ejecutar asi: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < $HOME/sql/MONTHLY-sales_per_line_per_client.sql > $HOME/Ventas_por_cliente_$(date --date="last month" +%Y-%m).csv + +SELECT + IF( + dv.id_vendedor IN ('ASJ','RDC','RDCA','EZS','JRM'), + 'bog_estr', + dv.id_sucursal + ) AS Suc_Analisis, + dv.id_sucursal AS Suc_Sistema, + IF( + dv.id_sucursal IN ('arm','per'), + 'eje_cafetero', + IF( + dv.id_sucursal IN ('bar','san'), + 'bar_san', + dv.id_sucursal + ) + ) AS Zona, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + l.id_linea_analisis AS CodLinea1, + l.linea_analisis AS Linea1, + l.id_linea AS CodLinea2, + l.descripcion AS Linea2, + l.familia AS Familia, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1))), 2 + ) AS Peso_Kg, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad, + ls.subfamilia AS Tipo, + YEAR(dv.fecha) AS Ano, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Peso_MT + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + JOIN linea_has_subfamilia ls + ON ( l.id_linea = ls.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MBP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) = 2010 + +GROUP BY + Suc_Sistema,Nit,ConsecutivoMes,CodLinea1,CodLinea2,CodVendedor + +ORDER BY + Suc_Sistema,Nit,ConsecutivoMes,CodLinea1,CodLinea2,CodVendedor diff --git a/2013-09-06-Number_of_invoices_per_line.sql b/2013-09-06-Number_of_invoices_per_line.sql new file mode 100644 index 0000000..4bcbfa4 --- /dev/null +++ b/2013-09-06-Number_of_invoices_per_line.sql @@ -0,0 +1,37 @@ +-- Number of invoices per line per year + +SELECT + YEAR(dv.fecha) AS Year, + l.linea_analisis AS Line, + IF( + LEFT(dv.id_documento,1) = 'F', + 'Invoice', + 'Return' + ) AS Type_of_Document, + COUNT(DISTINCT dv.id_documento) AS Number_of_Documents, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2009 + AND YEAR(dv.fecha) <= 2013 + +GROUP BY + Year, Line, Type_of_Document + +ORDER BY + Year DESC, Line ASC, Type_of_Document ASC diff --git a/2013-09-08-Sales_per_payment_per_line.sql b/2013-09-08-Sales_per_payment_per_line.sql new file mode 100644 index 0000000..f19b496 --- /dev/null +++ b/2013-09-08-Sales_per_payment_per_line.sql @@ -0,0 +1,36 @@ +-- Sales per payment type per line year to year +-- For Board Meeting presentation + +SELECT + YEAR(dv.fecha) AS Year, + IF( + fp.dias <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN formapago_documento fpd + USING (id_documento, id_sucursal) + JOIN forma_pago fp + USING (id_formapago, id_sucursal) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "E?F[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Year, Sale_conditions, Line diff --git a/2013-10-10-Items_con_existencia_o_ventas_recientes.sql b/2013-10-10-Items_con_existencia_o_ventas_recientes.sql new file mode 100644 index 0000000..c322a9e --- /dev/null +++ b/2013-10-10-Items_con_existencia_o_ventas_recientes.sql @@ -0,0 +1,26 @@ +SELECT + i.id_item AS cod_item, + i.descripcion AS item, + i.unidad1 AS unidad_medida, + i.peso AS peso_kg, + IF(i.tipo = 1, 'Producto', 'Servicio') AS tipo, + l.id_linea AS cod_linea, + l.descripcion AS sublinea, + la.id_linea_analisis AS cod_linea_analisis, + la.descripcion AS linea_analisis +FROM + item i + LEFT JOIN linea l + USING (id_linea,tipo) + LEFT JOIN linea_has_linea_analisis lla + ON lla.id_linea = LEFT( i.id_linea, 2 ) + LEFT JOIN linea_analisis la + USING (id_linea_analisis) + +WHERE + i.estado = '0' + AND LENGTH(i.descripcion) > 2 + AND i.id_sucursal = 'bog' + +GROUP BY + cod_item diff --git a/2013-10-23-numero_de_clientes_por_linea_por_sucursal.sql b/2013-10-23-numero_de_clientes_por_linea_por_sucursal.sql new file mode 100644 index 0000000..ef424c0 --- /dev/null +++ b/2013-10-23-numero_de_clientes_por_linea_por_sucursal.sql @@ -0,0 +1,41 @@ +-- Numero de clientes Ene-Sep 2012-2013 por sucursal por linea + +SELECT + YEAR(dv.fecha) AS Ano, + dv.id_sucursal AS Suc, + l.linea_analisis AS Linea, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2012 + AND MONTH(dv.fecha) <= 9 + +GROUP BY + Ano,Suc,Linea + +ORDER BY + Ano,Suc,Linea diff --git a/2013-12-12-Ventas_por_sucursal_por_linea_2013.sql b/2013-12-12-Ventas_por_sucursal_por_linea_2013.sql new file mode 100644 index 0000000..09809f4 --- /dev/null +++ b/2013-12-12-Ventas_por_sucursal_por_linea_2013.sql @@ -0,0 +1,29 @@ +-- Ventas por sucursal y linea + +SELECT + YEAR(dv.fecha) AS Ano, + dvi.id_sucursal AS Sucursal, + l.id_linea AS Linea, + l.descripcion AS Descripcion, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) As Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.costo) AS Costo +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = left(i.id_linea,2) AND l.tipo=i.tipo ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha)=2013 +GROUP BY + Sucursal,Linea +ORDER BY + Sucursal,Linea + diff --git a/2013-12-13-Ventas_por_linea_por_cliente-2012.sql b/2013-12-13-Ventas_por_linea_por_cliente-2012.sql new file mode 100644 index 0000000..7209b53 --- /dev/null +++ b/2013-12-13-Ventas_por_linea_por_cliente-2012.sql @@ -0,0 +1,82 @@ +-- Ventas mensuales por linea por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +-- Excluye traslados +-- Cambios solicitados en 2013-06-25: Zona y Suc2 + +SELECT + IF( + dv.id_vendedor IN ('ASJ','RDC','RDCA','EZS','JRM'), + 'bog_estr', + dv.id_sucursal + ) AS Branch_for_analysis, + dv.id_sucursal AS Branch, + IF( + dv.id_sucursal IN ('arm','per'), + 'eje_cafetero', + IF( + dv.id_sucursal IN ('bar','san'), + 'bar_san', + dv.id_sucursal + ) + ) AS Zone, + se.id_sector AS Id_Sector, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Id_Client, + cs.nombre_cliente AS Client, + dv.id_vendedor AS Id_Salesrep, + vdr.nombre_vendedor AS Salesrep, + YEAR(dv.fecha) AS Year, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS Month_seq, + l.familia AS 'Type', + ls.subfamilia AS Subtype, + l.id_linea_analisis AS Id_Line1, + l.linea_analisis AS Line1, + l.id_linea AS Id_Line2, + l.descripcion AS Line2, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Sales_Kg, + SUM(dvi.valor) AS Sales_COP, + SUM(dvi.valor-dvi.costo) AS Gross_Margin, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Sales_MT + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN linea_has_subfamilia ls + ON ( l.id_linea = ls.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MBPC]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) = 2012 + +GROUP BY + Month_seq,Branch,Id_Client,Month_seq,Id_Line1,Id_Line2,Id_Salesrep + +ORDER BY + Month_seq,Branch,Id_Client,Month_seq,Id_Line1,Id_Line2,Id_Salesrep diff --git a/2013-12-16-Entradas_por_sucursal_por_linea_2013.sql b/2013-12-16-Entradas_por_sucursal_por_linea_2013.sql new file mode 100644 index 0000000..3ac06d8 --- /dev/null +++ b/2013-12-16-Entradas_por_sucursal_por_linea_2013.sql @@ -0,0 +1,27 @@ +-- Entradas por sucursal y linea + +SELECT + YEAR(e.fecha) AS Ano, + e.id_sucursal AS Sucursal, + l.id_linea AS Linea, + l.descripcion AS Descripcion, + SUM(ei.costo*ei.cantidad) AS Costo, + SUM(ei.cantidad*i.peso) AS Peso + +FROM + + entrada e + JOIN entrada_has_item ei + ON ( e.id_entrada=ei.id_entrada AND e.id_sucursal=ei.id_sucursal ) + JOIN item i + ON ( ei.id_item=i.id_item AND ei.id_sucursal=i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = left(i.id_linea,2) AND l.tipo=i.tipo ) + +WHERE + YEAR(e.fecha)=2013 +GROUP BY + Sucursal,Linea +ORDER BY + Sucursal,Linea + diff --git a/2013-12-16-Traslados_por_sucursal_por_linea_2013.sql b/2013-12-16-Traslados_por_sucursal_por_linea_2013.sql new file mode 100644 index 0000000..eb7c13e --- /dev/null +++ b/2013-12-16-Traslados_por_sucursal_por_linea_2013.sql @@ -0,0 +1,29 @@ +-- Traslados por sucursal y linea + +SELECT + YEAR(dv.fecha) AS Ano, + dvi.id_sucursal AS Sucursal, + l.id_linea AS Linea, + l.descripcion AS Descripcion, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) As Peso, + SUM(dvi.valor) AS Valor, + SUM(dvi.costo) AS Costo +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = left(i.id_linea,2) AND l.tipo=i.tipo ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "[TD][0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha)=2013 +GROUP BY + Sucursal,Linea +ORDER BY + Sucursal,Linea + diff --git a/2014-02-05-Precio_por_linea_diario.sql b/2014-02-05-Precio_por_linea_diario.sql new file mode 100644 index 0000000..c10e55e --- /dev/null +++ b/2014-02-05-Precio_por_linea_diario.sql @@ -0,0 +1,36 @@ +-- Evolucion de precio de venta (COP/Kg) por linea dia a dia para un rango +-- de fechas + +SELECT + dv.fecha AS Date, + l.id_linea AS Id_Line, + l.descripcion AS Line, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Sales_Kg, + SUM(dvi.valor) AS Sales_COP, + SUM(dvi.valor-dvi.costo) AS Gross_Margin +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,1) = "F" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND dv.fecha >= "2013-01-01" + AND dv.fecha <= "2014-01-31" +GROUP BY + Date,Line +ORDER BY + Date,Line diff --git a/2014-02-21-clientes_desde_2011.sql b/2014-02-21-clientes_desde_2011.sql new file mode 100644 index 0000000..7dbd420 --- /dev/null +++ b/2014-02-21-clientes_desde_2011.sql @@ -0,0 +1,22 @@ +-- Clientes por sucursal por año sin lineas + +SELECT c.id_cliente AS Nit, + dv.id_sucursal AS Sucursal, + c.nombre_cliente AS Cliente, + SUM(dvi.valor) AS Valor + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN cliente_has_sucursal c + ON ( dv.id_cliente=c.id_cliente + AND dv.id_sucursal=c.id_sucursal ) + +WHERE LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= '2011-01-01' + +GROUP BY Sucursal, Cliente + +HAVING Valor > 10000000 diff --git a/2014-04-03-entradas_por_año.sql b/2014-04-03-entradas_por_año.sql new file mode 100644 index 0000000..4aeb195 --- /dev/null +++ b/2014-04-03-entradas_por_año.sql @@ -0,0 +1,47 @@ +-- Entradas de almacen por linea del mes + +SELECT + e.id_sucursal AS Sucursal, + e.id_entrada AS Entrada, + e.id_proveedor AS Nit_Proveedor, + p.nombre_proveedor AS Nombre_Proveedor, + e.fecha AS Fecha, + i.id_item AS Codigo_item, + i.descripcion AS Item, + l.descripcion AS Linea, + sl.descripcion AS Sublinea, + SUM(ei.costo * ei.cantidad) AS Costo, + SUM(ei.cantidad) AS Cantidad, + SUM(ei.costo) AS Costo_unitario, + ei.unidad AS Unidad_medida, + de.factura AS Factura + +FROM + entrada e + JOIN entrada_has_item ei + ON ( e.id_entrada = ei.id_entrada + AND e.id_sucursal = ei.id_sucursal ) + LEFT JOIN documentos_entrada de + ON (de.id_entrada = e.id_entrada + AND de.id_sucursal = e.id_sucursal ) + JOIN item i + ON ( ei.id_item = i.id_item + AND ei.id_sucursal = i.id_sucursal ) + JOIN view_lineas l + ON ( l.id_linea = left( i.id_linea, 2 ) ) + JOIN linea sl + ON ( sl.id_linea = i.id_linea + AND sl.tipo = i.tipo ) + JOIN proveedor p + ON ( p.id_proveedor = e.id_proveedor ) + JOIN proveedor_has_sucursal ps + ON ( p.id_proveedor = ps.id_proveedor + AND ps.id_sucursal = e.id_sucursal ) + +WHERE + p.id_proveedor > 999 + AND YEAR(e.fecha) = 2013 + +GROUP BY + Entrada, Sucursal, Codigo_item + diff --git a/2014-05-21-items_con_error_en_sublinea.sql b/2014-05-21-items_con_error_en_sublinea.sql new file mode 100644 index 0000000..986a7a4 --- /dev/null +++ b/2014-05-21-items_con_error_en_sublinea.sql @@ -0,0 +1,19 @@ +SELECT +dv.id_sucursal, i.id_item, i.descripcion, SUM( dvi.valor ) AS valor +FROM documento_ventas dv +JOIN documento_ventas_has_item dvi +ON ( dv.id_documento = dvi.id_documento AND dv.id_sucursal = dvi.id_sucursal ) +JOIN item i +ON ( dvi.id_item = i.id_item AND dvi.id_sucursal = i.id_sucursal ) +LEFT JOIN linea l +ON ( l.id_linea = i.id_linea AND l.tipo = i.tipo ) +WHERE +NOT ( + dv.id_cliente LIKE "999" +) +AND YEAR( dv.fecha ) = 2013 +AND ( + l.id_linea IS NULL +) +GROUP BY dv.id_sucursal,dvi.id_item +ORDER BY valor DESC diff --git a/2014-06-09-numero_clientes_por_linea_por_mes.sql b/2014-06-09-numero_clientes_por_linea_por_mes.sql new file mode 100644 index 0000000..17e0dd9 --- /dev/null +++ b/2014-06-09-numero_clientes_por_linea_por_mes.sql @@ -0,0 +1,37 @@ +-- Numero de clientes por linea por mes +-- Para reunion de Directorio + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + l.linea_analisis AS Linea, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2012 + +GROUP BY + Month,Linea + +ORDER BY + Month,Linea diff --git a/2014-06-09-numero_de_clientes_por_linea.sql b/2014-06-09-numero_de_clientes_por_linea.sql new file mode 100644 index 0000000..aafbbab --- /dev/null +++ b/2014-06-09-numero_de_clientes_por_linea.sql @@ -0,0 +1,38 @@ +-- Numero de clientes por linea por año +-- Para reunion de Directorio + +SELECT + YEAR(dv.fecha) AS Ano, + l.linea_analisis AS Linea, + dv.id_cliente AS cliente, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2012 + +GROUP BY + Ano,Linea,cliente + +ORDER BY + Ano,Linea,cliente diff --git a/2014-06-09-numero_de_clientes_por_tipo.sql b/2014-06-09-numero_de_clientes_por_tipo.sql new file mode 100644 index 0000000..2508438 --- /dev/null +++ b/2014-06-09-numero_de_clientes_por_tipo.sql @@ -0,0 +1,37 @@ +-- Numero de clientes por tipo (largos/planos) por mes +-- Para reunion de Directorio + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + ls.subfamilia AS Linea, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN linea_has_subfamilia ls + ON ( LEFT(i.id_linea,2) = ls.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2012 + +GROUP BY + Month,Linea + +ORDER BY + Month,Linea diff --git a/2014-07-21-Entradas_por_item_por_proveedor.sql b/2014-07-21-Entradas_por_item_por_proveedor.sql new file mode 100644 index 0000000..e272aaa --- /dev/null +++ b/2014-07-21-Entradas_por_item_por_proveedor.sql @@ -0,0 +1,33 @@ +-- Entradas por item por proveedor + +SELECT + YEAR(e.fecha) AS Ano, + l.id_linea AS Cod_Linea, + l.descripcion AS Linea, + i.id_item AS Cod_Item, + i.descripcion AS Item, + p.id_proveedor AS Nit, + p.nombre_proveedor AS Proveedor, + SUM(ei.costo*ei.cantidad) AS Costo, + SUM(ei.cantidad*i.peso) AS Peso + +FROM + entrada e + JOIN entrada_has_item ei + ON ( e.id_entrada=ei.id_entrada AND e.id_sucursal=ei.id_sucursal ) + JOIN item i + ON ( ei.id_item=i.id_item AND ei.id_sucursal=i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = left(i.id_linea,2) AND l.tipo=i.tipo ) + LEFT JOIN proveedor p + USING (id_proveedor) + +WHERE + YEAR(e.fecha)=2013 +GROUP BY + Nit, Cod_Item +HAVING + Nit > 999 +ORDER BY + Nit, Cod_Item + diff --git a/2014-07-21-Ventas_por_item_por_cliente.sql b/2014-07-21-Ventas_por_item_por_cliente.sql new file mode 100644 index 0000000..7ef56e7 --- /dev/null +++ b/2014-07-21-Ventas_por_item_por_cliente.sql @@ -0,0 +1,50 @@ +-- Ventas mensuales por linea por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +-- Excluye traslados +-- Cambios solicitados en 2013-06-25: Zona y Suc2 + +SELECT + YEAR(dv.fecha) AS Year, + cs.id_cliente AS Id_Client, + cs.nombre_cliente AS Client, + i.id_item AS Id_Item, + i.descripcion AS Item, + l.id_linea AS Id_Line, + l.descripcion AS Line, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Sales_Kg, + SUM(dvi.valor) AS Sales_COP, + SUM(dvi.costo) AS COGS, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Sales_MT + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MBPC]" + AND (i.tipo != "5") + AND YEAR(dv.fecha) = 2013 + +GROUP BY + Id_Client,Id_Item +HAVING + Id_Client > 999 +ORDER BY + Id_Client,Id_Item diff --git a/2014-08-15-Items_con_entradas_recientes.sql b/2014-08-15-Items_con_entradas_recientes.sql new file mode 100644 index 0000000..233dba0 --- /dev/null +++ b/2014-08-15-Items_con_entradas_recientes.sql @@ -0,0 +1,32 @@ +-- Items con entradas en los ultimos 12 meses + +SELECT + DISTINCT i.id_item AS cod_item, + i.id_sucursal AS sucursal, + i.descripcion AS item, + i.unidad1 AS unidad_medida, + i.peso AS peso_kg, + IF(i.tipo = 1, 'Producto', 'Servicio') AS tipo, + l.id_linea AS cod_linea, + l.descripcion AS linea, + la.id_linea_analisis AS cod_linea_analisis, + la.descripcion AS linea_analisis +FROM + entrada e + JOIN entrada_has_item ei + USING(id_entrada,id_sucursal) + JOIN item i + USING (id_item,id_sucursal) + LEFT JOIN linea l + ON l.id_linea = LEFT( i.id_linea, 2 ) + AND l.tipo = i.tipo + LEFT JOIN linea_has_linea_analisis lla + ON lla.id_linea = LEFT( i.id_linea, 2 ) + LEFT JOIN linea_analisis la + USING (id_linea_analisis) + +WHERE PERIOD_DIFF( + DATE_FORMAT(now(),'%Y%m'), + DATE_FORMAT(e.fecha,'%Y%m') + ) <= 12 + diff --git a/2014-08-15-Items_con_existencia_actual.sql b/2014-08-15-Items_con_existencia_actual.sql new file mode 100644 index 0000000..ef23ed8 --- /dev/null +++ b/2014-08-15-Items_con_existencia_actual.sql @@ -0,0 +1,26 @@ +-- Items con existencia actual + +SELECT + DISTINCT i.id_item AS cod_item, + i.id_sucursal AS sucursal, + i.descripcion AS item, + i.unidad1 AS unidad_medida, + i.peso AS peso_kg, + IF(i.tipo = 1, 'Producto', 'Servicio') AS tipo, + l.id_linea AS cod_linea, + l.descripcion AS sublinea, + la.id_linea_analisis AS cod_linea_analisis, + la.descripcion AS linea_analisis +FROM + existencia_item_bodega ex + JOIN item i + USING (id_item,id_sucursal) + LEFT JOIN linea l + ON l.id_linea = LEFT( i.id_linea, 2 ) + AND l.tipo = i.tipo + LEFT JOIN linea_has_linea_analisis lla + ON lla.id_linea = LEFT( i.id_linea, 2 ) + LEFT JOIN linea_analisis la + USING (id_linea_analisis) + +WHERE ex.cantidad > 0 diff --git a/2014-08-15-Items_con_ventas_recientes.sql b/2014-08-15-Items_con_ventas_recientes.sql new file mode 100644 index 0000000..45867e5 --- /dev/null +++ b/2014-08-15-Items_con_ventas_recientes.sql @@ -0,0 +1,32 @@ +-- Items con ventas en los ultimos 12 meses + +SELECT + DISTINCT i.id_item AS cod_item, + i.id_sucursal AS sucursal, + i.descripcion AS item, + i.unidad1 AS unidad_medida, + i.peso AS peso_kg, + IF(i.tipo = 1, 'Producto', 'Servicio') AS tipo, + l.id_linea AS cod_linea, + l.descripcion AS linea, + la.id_linea_analisis AS cod_linea_analisis, + la.descripcion AS linea_analisis +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING(id_documento,id_sucursal) + JOIN item i + USING (id_item,id_sucursal) + LEFT JOIN linea l + ON l.id_linea = LEFT( i.id_linea, 2 ) + AND l.tipo = i.tipo + LEFT JOIN linea_has_linea_analisis lla + ON lla.id_linea = LEFT( i.id_linea, 2 ) + LEFT JOIN linea_analisis la + USING (id_linea_analisis) + +WHERE PERIOD_DIFF( + DATE_FORMAT(now(),'%Y%m'), + DATE_FORMAT(dv.fecha,'%Y%m') + ) <= 12 + diff --git a/2014-09-23_ventas_por_mes_por_item.sql b/2014-09-23_ventas_por_mes_por_item.sql new file mode 100644 index 0000000..dcd09c2 --- /dev/null +++ b/2014-09-23_ventas_por_mes_por_item.sql @@ -0,0 +1,31 @@ +-- Ventas por mes, item + +SELECT + DATE_FORMAT(dv.fecha,"%Y-%m") AS Mes, + i.id_item AS Codigo, + i.descripcion AS Item, + SUM(dvi.valor) AS Valor, + SUM(dvi.cantidad) AS Cantidad, + i.unidad1 AS UoM + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha)=@ANO + +GROUP BY + Item,Mes + +ORDER BY + Item,Mes + diff --git a/2014-11-23-Clientes_por_plazo_por_linea.sql b/2014-11-23-Clientes_por_plazo_por_linea.sql new file mode 100644 index 0000000..a44c978 --- /dev/null +++ b/2014-11-23-Clientes_por_plazo_por_linea.sql @@ -0,0 +1,42 @@ +-- Sales per payment type per line year to year +-- For Board Meeting presentation + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + dv.id_cliente AS Customer, + COUNT(DISTINCT dv.id_cliente) AS Count_Customers, + IF( + fp.dias <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN formapago_documento fpd + ON (fpd.id_documento = dv.id_documento + AND fpd.id_sucursal = dv.id_sucursal) + LEFT JOIN forma_pago fp + ON (fp.id_formapago = fpd.id_formapago + AND fpd.id_sucursal = fp.id_sucursal) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Month, Sale_conditions, Customer, Line diff --git a/2015-01-21-Clientes_por_plazo.sql b/2015-01-21-Clientes_por_plazo.sql new file mode 100644 index 0000000..c393803 --- /dev/null +++ b/2015-01-21-Clientes_por_plazo.sql @@ -0,0 +1,34 @@ +-- Sales per payment type year to year +-- For Board Meeting presentation + +SELECT + YEAR(dv.fecha) AS Year, + COUNT(DISTINCT dv.id_cliente) AS Num_Customers, + IF( + fp.dias <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN formapago_documento fpd + USING (id_documento, id_sucursal) + JOIN forma_pago fp + USING (id_formapago, id_sucursal) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2012 + +GROUP BY + Year, Sale_conditions diff --git a/2015-01-21-Facturas_por_plazo.sql b/2015-01-21-Facturas_por_plazo.sql new file mode 100644 index 0000000..195e731 --- /dev/null +++ b/2015-01-21-Facturas_por_plazo.sql @@ -0,0 +1,32 @@ +-- Sales per payment type year to year +-- For Board Meeting presentation + +SELECT + YEAR(dv.fecha) AS Year, + dv.id_sucursal AS Branch, + COUNT(DISTINCT dv.id_documento) AS Number_of_Documents, + IF( + (dv.fecha_vencimiento - dv.fecha) <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + ROUND( + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))), 4 + ) AS Weight_Kg, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + USING (id_item) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2016 + +GROUP BY + Year, Sale_conditions diff --git a/2015-01-27-sublineas_por_item.sql b/2015-01-27-sublineas_por_item.sql new file mode 100644 index 0000000..262827c --- /dev/null +++ b/2015-01-27-sublineas_por_item.sql @@ -0,0 +1,20 @@ +SELECT + i.id_linea AS cod_sublinea, + l.descripcion AS sublinea, + i.id_item AS Item, + i.descripcion AS Descripcion + +FROM + item i + LEFT JOIN linea l + ON ( l.id_linea = i.id_linea ) + +WHERE + (i.estado = '0') + +GROUP BY + i.id_item + +ORDER BY + i.id_item DESC + diff --git a/2015-01-27-ventas_por_item_2014.sql b/2015-01-27-ventas_por_item_2014.sql new file mode 100644 index 0000000..394bcf4 --- /dev/null +++ b/2015-01-27-ventas_por_item_2014.sql @@ -0,0 +1,41 @@ +SELECT + dv.id_sucursal AS Sucursal, + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Mes, + l.id_linea AS Line, + i.id_linea AS Sub_line, + i.id_item AS Item, + i.descripcion AS Description, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM( + dvi.cantidad * (IF(dvi.valor >0, 1 , -1)) + ) AS Amount_UoM, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + LEFT JOIN view_lineas l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) ) + +WHERE + LEFT( dv.id_documento, 2 ) RLIKE "F|D[^0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) LIKE '2014%' + +GROUP BY + i.id_item, Sucursal, Mes + +ORDER BY + i.id_item DESC diff --git a/2015-02-02-Customers_per_quarter.sql b/2015-02-02-Customers_per_quarter.sql new file mode 100644 index 0000000..aa93154 --- /dev/null +++ b/2015-02-02-Customers_per_quarter.sql @@ -0,0 +1,42 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_per_fiscal_year.sql > ../Agofer_Customers_per_year_FY$(date +%Y).csv + +-- Nota: El campo Vendedor solo muestra el de una sucursal + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + vdr.nombre_vendedor AS Sales_Associate, + c.telefono AS Phone, + c.direccion AS Address, + z.descripcion AS City, + se.descripcion AS Sector, + SUM(dvi.valor) AS Net_Sales + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN vendedor vdr + USING ( id_vendedor,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + LEFT JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) + LEFT JOIN zona z + USING ( id_zona ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= DATE(CONCAT(YEAR(now())-1,'-10-01')) + AND dv.fecha <= DATE(CONCAT(YEAR(now()),'-09-30')) + +GROUP BY Customer_Id + +HAVING Net_Sales > 0 + +ORDER BY Net_Sales DESC diff --git a/2015-02-02-numero_de_clientes_ultimos_trimestres.sql b/2015-02-02-numero_de_clientes_ultimos_trimestres.sql new file mode 100644 index 0000000..ccd016b --- /dev/null +++ b/2015-02-02-numero_de_clientes_ultimos_trimestres.sql @@ -0,0 +1,33 @@ +-- Numero de clientes distintos del ultimo trimestre de cada año +SELECT + YEAR(dv.fecha) AS Ano, + QUARTER(dv.fecha) AS Trim, + MIN(dv.fecha) AS Fecha_desde, + MAX(dv.fecha) AS Fecha_hasta, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MBPC]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND YEAR(dv.fecha) >= 2011 + +GROUP BY + Ano,Trim + +ORDER BY + Ano,Trim diff --git a/2015-02-24-Entradas_de_IPAC_por_item.sql b/2015-02-24-Entradas_de_IPAC_por_item.sql new file mode 100644 index 0000000..36c5491 --- /dev/null +++ b/2015-02-24-Entradas_de_IPAC_por_item.sql @@ -0,0 +1,32 @@ +-- Entradas por item por proveedor + +SELECT + YEAR(e.fecha) AS Ano, + l.id_linea AS Cod_Linea, + l.descripcion AS Linea, + i.id_item AS Cod_Item, + i.descripcion AS Item, + p.id_proveedor AS Nit, + p.nombre_proveedor AS Proveedor, + i.peso AS Peso + +FROM + entrada e + JOIN entrada_has_item ei + ON ( e.id_entrada=ei.id_entrada AND e.id_sucursal=ei.id_sucursal ) + JOIN item i + ON ( ei.id_item=i.id_item AND ei.id_sucursal=i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = i.id_linea AND l.tipo=i.tipo ) + LEFT JOIN proveedor p + USING (id_proveedor) + +WHERE + YEAR(e.fecha) = 2014 +GROUP BY + Nit, Cod_Item +HAVING + Proveedor LIKE '%IPAC%' +ORDER BY + Nit, Cod_Item + diff --git a/2015-05-14-Ventas_contado_2014.sql b/2015-05-14-Ventas_contado_2014.sql new file mode 100644 index 0000000..46b504b --- /dev/null +++ b/2015-05-14-Ventas_contado_2014.sql @@ -0,0 +1,28 @@ +-- Ventas de contado por documento por año + +SELECT + dv.id_documento AS documento_ventas, cs.nombre_cliente, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS peso, + SUM(dvi.valor) AS valor, SUM(dvi.valor-dvi.costo) AS utilidad +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN formapago_documento fd + ON ( fd.id_documento=dv.id_documento AND fd.id_sucursal=dv.id_sucursal ) + JOIN forma_pago f + ON ( f.id_formapago=fd.id_formapago AND f.id_sucursal=fd.id_sucursal ) +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND fd.id_formapago = '00' + AND YEAR(dv.fecha)=YEAR('2015-01-01') +GROUP BY + dv.id_documento +ORDER BY + valor DESC diff --git a/2015-06-11-Ventas_contado_un_cliente.sql b/2015-06-11-Ventas_contado_un_cliente.sql new file mode 100644 index 0000000..6bc8902 --- /dev/null +++ b/2015-06-11-Ventas_contado_un_cliente.sql @@ -0,0 +1,30 @@ +-- Ventas de contado por documento por año de un solo cliente + +SELECT + dv.fecha AS Fecha, + dv.id_documento AS Documento_ventas, cs.nombre_cliente AS Cliente, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS peso, + SUM(dvi.valor) AS valor, SUM(dvi.valor-dvi.costo) AS utilidad, + f.descripcion AS Forma_pago +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN formapago_documento fd + ON ( fd.id_documento=dv.id_documento AND fd.id_sucursal=dv.id_sucursal ) + JOIN forma_pago f + ON ( f.id_formapago=fd.id_formapago AND f.id_sucursal=fd.id_sucursal ) +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha)=YEAR('2012-01-01') + AND dv.id_cliente = "73104915" +GROUP BY + dv.id_documento +ORDER BY + valor DESC diff --git a/2015-07-07-numero_de_clientes_por_linea_por_sucursal.sql b/2015-07-07-numero_de_clientes_por_linea_por_sucursal.sql new file mode 100644 index 0000000..b2a7eca --- /dev/null +++ b/2015-07-07-numero_de_clientes_por_linea_por_sucursal.sql @@ -0,0 +1,21 @@ +-- Numero de clientes Ene-Sep 2012-2013 por sucursal por linea + +SELECT + dv.id_sucursal AS Suc, + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Mes, + COUNT(DISTINCT dv.id_cliente) AS Clientes + +FROM + documento_ventas dv + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) >= 201507 + AND EXTRACT(YEAR_MONTH FROM dv.fecha) <= 201509 + +GROUP BY + Mes, Suc + +ORDER BY + Mes, Suc diff --git a/2015-08-03-Clientes_por_plazo_por_familia.sql b/2015-08-03-Clientes_por_plazo_por_familia.sql new file mode 100644 index 0000000..3980ced --- /dev/null +++ b/2015-08-03-Clientes_por_plazo_por_familia.sql @@ -0,0 +1,42 @@ +-- Sales per payment type year to year +-- For Board Meeting presentation + +SELECT + YEAR(dv.fecha) AS Year, + COUNT(DISTINCT dv.id_cliente) AS Num_Customers, + IF( + fp.dias <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + IF( + l.id_linea_analisis >= 7 + AND l.id_linea_analisis <= 19, + 'flat', + 'long' + ) AS Family, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN formapago_documento fpd + USING (id_documento, id_sucursal) + JOIN forma_pago fp + USING (id_formapago, id_sucursal) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN view_lineas l + ON (l.id_linea = LEFT(i.id_linea,2)) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2012 + +GROUP BY + Year, Family, Sale_conditions diff --git a/2016-01-15-Sales_per_payment_per_line.sql b/2016-01-15-Sales_per_payment_per_line.sql new file mode 100644 index 0000000..54370e2 --- /dev/null +++ b/2016-01-15-Sales_per_payment_per_line.sql @@ -0,0 +1,39 @@ +-- Sales per payment type per line year to year +-- For Board Meeting presentation + +-- Usando tablas forma_pago, formapago_documento, y linea_analisis + +SELECT + YEAR(dv.fecha) AS Year, + IF( + fp.dias <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING (id_documento, id_sucursal) + JOIN formapago_documento fpd + USING (id_documento, id_sucursal) + JOIN forma_pago fp + USING (id_formapago) + JOIN item i + USING (id_item) + JOIN view_lineas l + USING (id_linea) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Year, Sale_conditions, Line diff --git a/2016-01-16-Sales_per_payment_per_line.sql b/2016-01-16-Sales_per_payment_per_line.sql new file mode 100644 index 0000000..421e9bf --- /dev/null +++ b/2016-01-16-Sales_per_payment_per_line.sql @@ -0,0 +1,33 @@ +-- Sales per payment type per line year to year +-- For Board Meeting presentation + +-- Sin usar tablas forma_pago, formapago_documento, ni linea_analisis + +SELECT + YEAR(dv.fecha) AS Year, + IF( + (dv.fecha_vencimiento - dv.fecha) <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + USING (id_item) + JOIN view_lineas l + USING ( id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "E?F[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Year, Sale_conditions, Line diff --git a/2016-01-17-Clientes_por_plazo_por_linea.sql b/2016-01-17-Clientes_por_plazo_por_linea.sql new file mode 100644 index 0000000..93b1867 --- /dev/null +++ b/2016-01-17-Clientes_por_plazo_por_linea.sql @@ -0,0 +1,37 @@ +-- Sales per payment type per line year to year +-- For Board Meeting presentation + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + dv.id_cliente AS Customer, + COUNT(DISTINCT dv.id_cliente) AS Count_Customers, + IF( + fp.dias <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + USING (id_item) + JOIN view_lineas l + USING (id_linea) + LEFT JOIN formapago_documento fpd + USING (id_documento, id_sucursal) + LEFT JOIN forma_pago fp + USING (id_formapago) + +WHERE + LEFT(dv.id_documento,3) RLIKE "E?F[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Month, Sale_conditions, Customer, Line diff --git a/2016-01-18-Ventas_por_linea.sql b/2016-01-18-Ventas_por_linea.sql new file mode 100644 index 0000000..d1cc9e1 --- /dev/null +++ b/2016-01-18-Ventas_por_linea.sql @@ -0,0 +1,27 @@ +-- Sales per per line year to year +-- For Board Meeting presentation + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value, + SUM(dvi.costo) AS Cost +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + USING (id_item) + JOIN view_lineas l + USING (id_linea) + +WHERE + LEFT(dv.id_documento,3) RLIKE "E?F[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Month, Line diff --git a/2016-01-18-Ventas_por_linea_uno.sql b/2016-01-18-Ventas_por_linea_uno.sql new file mode 100644 index 0000000..244aff1 --- /dev/null +++ b/2016-01-18-Ventas_por_linea_uno.sql @@ -0,0 +1,28 @@ +-- Sales per payment type per line year to year +-- For Board Meeting presentation + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value, + SUM(dvi.costo) AS Cost +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Month, Line diff --git a/2016-01-19-Clientes_por_plazo_por_linea.sql b/2016-01-19-Clientes_por_plazo_por_linea.sql new file mode 100644 index 0000000..5d45ff3 --- /dev/null +++ b/2016-01-19-Clientes_por_plazo_por_linea.sql @@ -0,0 +1,35 @@ +-- Sales per payment type per line year to year +-- For Board Meeting presentation + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + dv.id_cliente AS Customer, + COUNT(DISTINCT dv.id_cliente) AS Count_Customers, + IF( + (dv.fecha_vencimiento - dv.fecha) <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + USING (id_item) + JOIN view_lineas l + USING (id_linea) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Month, Sale_conditions, Customer, Line diff --git a/2016-04-12-Clientes_por_plazo.sql b/2016-04-12-Clientes_por_plazo.sql new file mode 100644 index 0000000..93b1053 --- /dev/null +++ b/2016-04-12-Clientes_por_plazo.sql @@ -0,0 +1,40 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_per_fiscal_year.sql > ../Agofer_Customers_per_year_FY$(date +%Y).csv + +-- Nota: El campo Vendedor solo muestra el de una sucursal + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + vdr.nombre_vendedor AS Sales_Associate, + c.telefono AS Phone, + c.direccion AS Address, + z.descripcion AS City, + se.descripcion AS Sector, + SUM(dvi.valor) AS Net_Sales + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN vendedor vdr + USING ( id_vendedor,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + LEFT JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) + LEFT JOIN zona z + USING ( id_zona ) + +WHERE LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND (dv.id_cliente > 999) + AND dv.fecha >= DATE(CONCAT(YEAR(now())-2,'-10-01')) + AND dv.fecha <= DATE(CONCAT(YEAR(now())-1,'-03-31')) + +GROUP BY Customer_Id + +HAVING Net_Sales > 0 + +ORDER BY Net_Sales DESC diff --git a/2016-04-12-Clientes_por_plazo_Odoo.sql b/2016-04-12-Clientes_por_plazo_Odoo.sql new file mode 100644 index 0000000..2d0b19c --- /dev/null +++ b/2016-04-12-Clientes_por_plazo_Odoo.sql @@ -0,0 +1,40 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_per_fiscal_year.sql > ../Agofer_Customers_per_year_FY$(date +%Y).csv + +-- Nota: El campo Vendedor solo muestra el de una sucursal + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + vdr.nombre_vendedor AS Sales_Associate, + dv.id_sucursal AS Branch, + c.telefono AS Phone, + c.direccion AS Address, + z.descripcion AS City, + se.descripcion AS Sector, + SUM(dvi.valor) AS Net_Sales + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN vendedor vdr + USING ( id_vendedor,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + LEFT JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) + LEFT JOIN zona z + USING ( id_zona ) + +WHERE (dv.id_cliente > 999) + AND dv.fecha >= DATE(CONCAT(YEAR(now())-1,'-10-01')) + AND dv.fecha <= DATE(CONCAT(YEAR(now()),'-09-30')) + +GROUP BY Customer_Id + +HAVING Net_Sales > 0 + +ORDER BY Net_Sales DESC diff --git a/2016-09-06-Clientes_por_plazo_por_sucursal.sql b/2016-09-06-Clientes_por_plazo_por_sucursal.sql new file mode 100644 index 0000000..ab6888c --- /dev/null +++ b/2016-09-06-Clientes_por_plazo_por_sucursal.sql @@ -0,0 +1,37 @@ +-- Sales per payment type per customer/line/branch year to year +-- For Board Meeting presentation + +SELECT + YEAR(dv.fecha) AS Year, + dv.id_sucursal AS Branch, + dv.id_cliente AS Customer, + COUNT(DISTINCT dv.id_cliente) AS Count_Customers, + IF( + (dv.fecha_vencimiento - dv.fecha) <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + USING (id_item) + JOIN view_lineas l + USING (id_linea) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'DE' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI') + AND YEAR(dv.fecha) >= 2019 + +GROUP BY + Year, Branch, Sale_conditions, Customer, Line diff --git a/2016-09-06-Clientes_por_plazo_por_sucursal_uno.sql b/2016-09-06-Clientes_por_plazo_por_sucursal_uno.sql new file mode 100644 index 0000000..57f1f5b --- /dev/null +++ b/2016-09-06-Clientes_por_plazo_por_sucursal_uno.sql @@ -0,0 +1,38 @@ +-- Sales per payment type per customer/line/branch year to year +-- For Board Meeting presentation + +SELECT + YEAR(dv.fecha) AS Year, + dv.id_sucursal AS Branch, + dv.id_cliente AS Customer, + COUNT(DISTINCT dv.id_cliente) AS Count_Customers, + IF( + fp.dias <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + l.linea_analisis AS Line, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1))), 4 + ) AS Weight_Kg, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN formapago_documento fpd + USING (id_documento,id_sucursal) + JOIN forma_pago fp + USING (id_formapago,id_sucursal) + JOIN documento_ventas_has_item dvi + USING (id_documento,id_sucursal) + JOIN item i + USING (id_item,id_sucursal) + JOIN view_lineas l + ON (l.id_linea = LEFT(i.id_linea,2)) + +WHERE + LEFT( dv.id_documento, 2 ) RLIKE "F|D[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2015 + +GROUP BY + Year, Branch, Sale_conditions, Customer, Line diff --git a/2016-09-28-Ventas_por_documento_con_cupo_y_plazo.sql b/2016-09-28-Ventas_por_documento_con_cupo_y_plazo.sql new file mode 100644 index 0000000..b9da06b --- /dev/null +++ b/2016-09-28-Ventas_por_documento_con_cupo_y_plazo.sql @@ -0,0 +1,33 @@ +-- Sales per document with credit limit and conditions +-- For PwC + +SELECT + dv.id_cliente AS Customer_Id, + cs.nombre_cliente AS Customer, + cs.cupo AS Credit_limit, + dv.id_vendedor AS Sales_Rep_Id, + v.nombre_vendedor AS Sales_Rep, + dv.id_documento AS Invoice, + dv.fecha AS Date_document, + dv.fecha_vencimiento AS Date_credit, + fp.descripcion AS Payment_conditions, + dv.valor_total AS Total_incl_taxes +FROM + documento_ventas dv + LEFT JOIN cliente_has_sucursal cs + USING (id_cliente, id_sucursal) + LEFT JOIN vendedor v + ON (dv.id_vendedor = v.id_vendedor + AND dv.id_sucursal = v.id_sucursal) + LEFT JOIN formapago_documento fpd + ON (dv.id_documento = fpd.id_documento + AND dv.id_sucursal = fpd.id_sucursal) + JOIN forma_pago fp + USING (id_formapago) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2016-01-01" + AND dv.fecha <= "2016-08-31" diff --git a/2016-10-19-Ventas_por_documento_con_cupo_y_plazo.sql b/2016-10-19-Ventas_por_documento_con_cupo_y_plazo.sql new file mode 100644 index 0000000..12b9cbd --- /dev/null +++ b/2016-10-19-Ventas_por_documento_con_cupo_y_plazo.sql @@ -0,0 +1,33 @@ +-- Sales per document with credit limit and conditions +-- For PwC + +SELECT + dv.id_cliente AS Customer_Id, + cs.nombre_cliente AS Customer, + cs.cupo AS Credit_limit, + dv.id_vendedor AS Sales_Rep_Id, + v.nombre_vendedor AS Sales_Rep, + dv.id_documento AS Invoice, + dv.fecha AS Date_document, + dv.fecha_vencimiento AS Date_credit, + fp.descripcion AS Payment_conditions, + dv.valor_total AS Total_incl_taxes +FROM + documento_ventas dv + LEFT JOIN cliente_has_sucursal cs + USING (id_cliente, id_sucursal) + LEFT JOIN vendedor v + ON (dv.id_vendedor = v.id_vendedor + AND dv.id_sucursal = v.id_sucursal) + LEFT JOIN formapago_documento fpd + ON (dv.id_documento = fpd.id_documento + AND dv.id_sucursal = fpd.id_sucursal) + JOIN forma_pago fp + USING (id_formapago) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2015-10-01" + AND dv.fecha <= "2016-09-30" diff --git a/2016-10-25_ventas_por_mes_por_item.sql b/2016-10-25_ventas_por_mes_por_item.sql new file mode 100644 index 0000000..493129a --- /dev/null +++ b/2016-10-25_ventas_por_mes_por_item.sql @@ -0,0 +1,33 @@ +-- Ventas por mes, item + +SELECT + DATE_FORMAT(dv.fecha,"%Y-%m") AS Mes, + i.id_item AS Codigo, + i.descripcion AS Item, + SUM(dvi.valor) AS Valor, + COUNT(DISTINCT dv.id_documento) AS Num_facturas, + SUM(dvi.cantidad) AS Cantidad, + ROUND(SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1))), 2) AS Peso_Kg, + dv.id_sucursal AS Suc, + i.unidad1 AS UoM + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND YEAR(dv.fecha)=2016 + +GROUP BY + Item,Mes,Suc + +ORDER BY + Suc,Item,Mes + diff --git a/2016-10-26-Customers_per_quarter.sql b/2016-10-26-Customers_per_quarter.sql new file mode 100644 index 0000000..e7c59ca --- /dev/null +++ b/2016-10-26-Customers_per_quarter.sql @@ -0,0 +1,32 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_per_fiscal_year.sql > ../Agofer_Customers_per_year_FY$(date +%Y).csv + +-- Nota: El campo Vendedor solo muestra el de una sucursal + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + SUM(dvi.valor) AS Net_Sales, + SUM(dvi.costo) AS Cost_of_goods_sold, + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + dv.id_sucursal AS Branch + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= DATE(CONCAT(YEAR(now()),'-01-01')) + AND dv.fecha <= DATE(CONCAT(YEAR(now()),'-10-26')) + +GROUP BY Branch,Customer_Id,Month + +HAVING Net_Sales > 0 + +ORDER BY Net_Sales DESC diff --git a/2016-10-27-Ventas_por_cliente_con_cupo.sql b/2016-10-27-Ventas_por_cliente_con_cupo.sql new file mode 100644 index 0000000..8d4e10e --- /dev/null +++ b/2016-10-27-Ventas_por_cliente_con_cupo.sql @@ -0,0 +1,40 @@ +-- Sales per document with credit limit and conditions +-- For PwC + +SELECT + dv.id_cliente AS Customer_Id, + cs.nombre_cliente AS Customer, + cs.cupo AS Credit_limit, + v.nombre_vendedor AS Sales_Rep, + dv.id_sucursal AS Branch, + z.descripcion AS City, + se.descripcion AS Sector, + SUM(dvi.valor) AS Net_Sales + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN cliente cl + USING ( id_cliente ) + LEFT JOIN cliente_has_sucursal cs + USING ( id_cliente,id_sucursal ) + LEFT JOIN zona z + ON ( cl.id_zona = z.id_zona ) + LEFT JOIN sector se + ON ( cl.id_sector = se.id_sector ) + LEFT JOIN vendedor v + ON (dv.id_vendedor = v.id_vendedor + AND dv.id_sucursal = v.id_sucursal) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= DATE(CONCAT(YEAR(now())-1,'-10-01')) + AND dv.fecha <= DATE(CONCAT(YEAR(now()),'-09-30')) + AND cl.id_cliente > 999 + +GROUP BY Customer_Id + +HAVING Net_Sales > 0 diff --git a/2016-11-02-Promedio_de_mora_de_clientes.sql b/2016-11-02-Promedio_de_mora_de_clientes.sql new file mode 100644 index 0000000..b130047 --- /dev/null +++ b/2016-11-02-Promedio_de_mora_de_clientes.sql @@ -0,0 +1,44 @@ +-- Promedio de mora por documento de clientes 2016 + +SET NAMES 'utf8'; + +SELECT + cl.id_cliente AS Nit, + cl.nombre_cliente AS Cliente, + cs.cupo AS Cupo, + (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente, + SUM(dv.valor) AS total_ventas, + COUNT(dv.id_documento) AS numero_facturas, + SUM(r.valor) AS total_recaudos, + COUNT(r.id_documento) AS numero_recaudos, + AVG(mora) AS promedio_mora, + IFNULL(AVG( + IF( + PERIOD_DIFF(201612,EXTRACT(YEAR_MONTH FROM r.fecha))>=3, + NULL, + IF(mora<0,0,mora) + ) + ),0) AS promedio_mora_ultimos_3meses, + MAX(mora) AS maxima_mora, + COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses +FROM + cliente cl + JOIN cliente_has_sucursal cs + USING (id_cliente) + LEFT JOIN documento_ventas dv + ON (dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente) + LEFT JOIN recaudo r + ON (r.id_cliente = cs.id_cliente + AND r.id_sucursal = cs.id_sucursal + AND r.id_documento = dv.id_documento) +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2016-01-01" + AND dv.fecha <= "2016-12-31" + +GROUP BY + Nit + diff --git a/2016-11-04-Sales_per_item_per_client.sql b/2016-11-04-Sales_per_item_per_client.sql new file mode 100644 index 0000000..ebedbae --- /dev/null +++ b/2016-11-04-Sales_per_item_per_client.sql @@ -0,0 +1,63 @@ +-- Ventas anuales por item por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +-- Excluye traslados +-- Cambios solicitados en 2013-06-25: Zona y Suc2 + +SELECT + dv.id_sucursal AS Branch, + se.id_sector AS Id_Sector, + se.descripcion AS Sector, + cs.id_cliente AS Id_Client, + cs.nombre_cliente AS Client, + dv.id_vendedor AS Id_Salesrep, + vdr.nombre_vendedor AS Salesrep, + l.familia AS 'Type', + i.id_item AS Cod_item, + i.descripcion AS Item, + l.linea_analisis AS Line1, + l.id_linea_analisis AS Id_Line1, + l.linea_analisis AS Line1, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Sales_Kg, + SUM(dvi.valor) AS Sales_COP, + SUM(dvi.valor-dvi.costo) AS Gross_Margin, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Sales_MT + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN linea_has_subfamilia ls + ON ( l.id_linea = ls.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2016-01-01" + AND dv.fecha <= "2016-10-31" + +GROUP BY + Branch,Id_Client,Cod_item,Id_Salesrep + +ORDER BY + Branch,Id_Client,Cod_item,Id_Salesrep diff --git a/2016-11-24-Documentos_por_mes_por_item.sql b/2016-11-24-Documentos_por_mes_por_item.sql new file mode 100644 index 0000000..ae20713 --- /dev/null +++ b/2016-11-24-Documentos_por_mes_por_item.sql @@ -0,0 +1,31 @@ +-- Numero de documentos de ventas por item por sucursal por mes + +SELECT + dv.id_sucursal AS Suc, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + MONTH(dv.fecha) AS Mes, + SUM(dvi.valor) AS Valor + + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2016-01-01" + AND dv.fecha <= "2016-10-31" +GROUP BY + Suc,Mes,Item +ORDER BY + Suc,Mes,Item diff --git a/2016-12-01-Clientes_por_mes_con_costo.sql b/2016-12-01-Clientes_por_mes_con_costo.sql new file mode 100644 index 0000000..d9b6c04 --- /dev/null +++ b/2016-12-01-Clientes_por_mes_con_costo.sql @@ -0,0 +1,45 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_per_fiscal_year.sql > ../Agofer_Customers_per_year_FY$(date +%Y).csv + +-- Nota: El campo Vendedor solo muestra el de una sucursal + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + vdr.nombre_vendedor AS Sales_Associate, + z.descripcion AS City, + SUM(dvi.costo) AS Cost_of_goods_sold, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.valor) AS Net_Sales + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN item i + ON ( dvi.id_item = i.id_item ) + LEFT JOIN vendedor vdr + USING ( id_vendedor,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + LEFT JOIN zona z + USING ( id_zona ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= DATE(CONCAT(YEAR(now()),'-01-01')) + AND dv.fecha <= DATE(CONCAT(YEAR(now()),'-11-30')) + +GROUP BY Customer_Id, Month + +HAVING Net_Sales > 0 + +ORDER BY Net_Sales DESC diff --git a/2017-01-17-numero_de_clientes_ultimos_trimestres.sql b/2017-01-17-numero_de_clientes_ultimos_trimestres.sql new file mode 100644 index 0000000..b474bd9 --- /dev/null +++ b/2017-01-17-numero_de_clientes_ultimos_trimestres.sql @@ -0,0 +1,32 @@ +-- Numero de clientes distintos del ultimo trimestre de cada año +SELECT + YEAR(dv.fecha) AS Ano, + QUARTER(dv.fecha) AS Trim, + MIN(dv.fecha) AS Fecha_desde, + MAX(dv.fecha) AS Fecha_hasta, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND YEAR(dv.fecha) >= 2017 + +GROUP BY + Ano,Trim + +ORDER BY + Ano,Trim diff --git a/2017-01-24-Sales_per_item_per_document.sql b/2017-01-24-Sales_per_item_per_document.sql new file mode 100644 index 0000000..bfe3165 --- /dev/null +++ b/2017-01-24-Sales_per_item_per_document.sql @@ -0,0 +1,48 @@ +-- Ventas mensuales por item por documento cliente +-- Incluye familia, sector, linea, origen y destino + +SELECT + dv.id_sucursal AS Sucursal, + dvi.id_bodega AS Bodega_origen, + cs.id_cliente AS Id_Client, + cs.nombre_cliente AS Client, + ciu.nombre_ciudad AS Ciudad, + ciu.nombre_depto AS Depto, + dv.fecha AS Fecha, + dv.id_documento AS Documento, + dvi.id_item AS Cod_item, + i.descripcion AS Item, + l.linea_analisis AS Line1, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor > 0, 1 , -1)) + ), + 2 + ) AS Sales_Kg, + SUM(dvi.valor) AS Sales_COP + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + LEFT JOIN item i + ON ( dvi.id_item=i.id_item ) + LEFT JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN view_ciudades ciu + ON (ciu.id_ciudad = cs.ciudad) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2016-01-01" + AND dv.fecha <= "2016-12-31" + +GROUP BY + Sucursal, Documento, Cod_item + diff --git a/2017-01-26-Clientes_para_ABC.sql b/2017-01-26-Clientes_para_ABC.sql new file mode 100644 index 0000000..bf949d5 --- /dev/null +++ b/2017-01-26-Clientes_para_ABC.sql @@ -0,0 +1,44 @@ +-- Clientes para clasificacion ABC + +SET NAMES 'utf8'; + +SELECT + cl.id_cliente AS Nit, + cl.nombre_cliente AS Cliente, + cs.cupo AS Cupo, + (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente, + SUM(dv.valor) AS total_ventas, + COUNT(dv.id_documento) AS numero_facturas, + SUM(r.valor) AS total_recaudos, + COUNT(r.id_documento) AS numero_recaudos, + AVG(mora) AS promedio_mora, + IFNULL(AVG( + IF( + PERIOD_DIFF(201708,EXTRACT(YEAR_MONTH FROM r.fecha))>=3, + NULL, + IF(mora<0,0,mora) + ) + ),0) AS promedio_mora_ultimos_3meses, + MAX(mora) AS maxima_mora, + COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses +FROM + cliente cl + JOIN cliente_has_sucursal cs + USING (id_cliente) + LEFT JOIN documento_ventas dv + ON (dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente) + LEFT JOIN recaudo r + ON (r.id_cliente = cs.id_cliente + AND r.id_sucursal = cs.id_sucursal + AND r.id_documento = dv.id_documento) +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2016-11-01" + AND dv.fecha < "2017-11-01" + +GROUP BY + Nit + diff --git a/2017-02-22-Items_para_ABC.sql b/2017-02-22-Items_para_ABC.sql new file mode 100644 index 0000000..24c0005 --- /dev/null +++ b/2017-02-22-Items_para_ABC.sql @@ -0,0 +1,30 @@ +-- Items para clasificacion ABC + +SET NAMES 'utf8'; + +SELECT + i.id_item AS Cod, + i.descripcion AS Descripcion, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor > 0, 1, -1)) + ), + 2 + ) AS Ventas_kg, + SUM(dvi.valor) AS Ventas_COP, + COUNT(dv.id_documento) AS numero_facturas, + COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses +FROM + item i + JOIN documento_ventas_has_item dvi + USING (id_item) + LEFT JOIN documento_ventas dv + ON (dv.id_sucursal = dvi.id_sucursal + AND dv.id_documento = dvi.id_documento) +WHERE + dv.fecha >= "2021-12-01" + AND dv.fecha <= "2022-11-30" + +GROUP BY + Cod + diff --git a/2017-02-22-Items_para_ABC_sucursal.sql b/2017-02-22-Items_para_ABC_sucursal.sql new file mode 100644 index 0000000..eab993b --- /dev/null +++ b/2017-02-22-Items_para_ABC_sucursal.sql @@ -0,0 +1,33 @@ +-- Items para clasificacion ABC por sucursal + +-- $ for SUC in arm bar bog buc bug cal car iba med mon nei pal pas per vil ric mal mar; do echo $SUC; mysql --defaults-file=/home/sistemas/.my_comercial_odoo.cnf --no-auto-rehash --execute "set @SUC='$SUC'; source ~/sql/2017-02-22-Items_para_ABC_sucursal.sql;" > ~/Agofer_Items_para_ABC_${SUC}.csv; done + +SET NAMES 'utf8'; + +SELECT + i.id_item AS Cod, + i.descripcion AS Descripcion, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor > 0, 1, -1)) + ), + 2 + ) AS Ventas_kg, + SUM(dvi.valor) AS Ventas_COP, + COUNT(dv.id_documento) AS numero_facturas, + COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON (dv.id_sucursal = dvi.id_sucursal + AND dv.id_documento = dvi.id_documento) + JOIN item i + USING (id_item) +WHERE + dv.fecha >= "2021-12-01" + AND dv.fecha <= "2022-11-30" + AND dv.id_sucursal = @SUC + +GROUP BY + Cod + diff --git a/2017-07-25-Clientes_con_cupo_por_vendedor.sql b/2017-07-25-Clientes_con_cupo_por_vendedor.sql new file mode 100644 index 0000000..8357b97 --- /dev/null +++ b/2017-07-25-Clientes_con_cupo_por_vendedor.sql @@ -0,0 +1,50 @@ +-- Clientes con cupo por vendedor + +SET NAMES 'utf8'; + +SELECT + cl.id_cliente AS Nit, + cl.nombre_cliente AS Cliente, + cs.cupo AS Cupo, + cs.id_vendedor AS Id_Vendedor, + vdr.nombre_vendedor AS Vendedor, + (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente, + SUM(dv.valor) AS total_ventas, + COUNT(dv.id_documento) AS numero_facturas, + SUM(r.valor) AS total_recaudos, + COUNT(r.id_documento) AS numero_recaudos, + AVG(mora) AS promedio_mora, + IFNULL(AVG( + IF( + PERIOD_DIFF(201901,EXTRACT(YEAR_MONTH FROM r.fecha))>=3, + NULL, + IF(mora<0,0,mora) + ) + ),0) AS promedio_mora_ultimos_3meses, + MAX(mora) AS maxima_mora, + COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses +FROM + cliente cl + JOIN cliente_has_sucursal cs + USING (id_cliente) + LEFT JOIN vendedor vdr + USING (id_vendedor) + LEFT JOIN documento_ventas dv + ON (dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente) + LEFT JOIN recaudo r + ON (r.id_cliente = cs.id_cliente + AND r.id_sucursal = cs.id_sucursal + AND r.id_documento = dv.id_documento) +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,1) = 'F') + + +GROUP BY + Nit + diff --git a/2017-08-07-Terms_per_sector.sql b/2017-08-07-Terms_per_sector.sql new file mode 100644 index 0000000..ed4152b --- /dev/null +++ b/2017-08-07-Terms_per_sector.sql @@ -0,0 +1,40 @@ +-- Sales per payment terms per customer/sector/branch year to year +-- For 5-Year presentation + +SELECT + YEAR(dv.fecha) AS Year, + dv.id_sucursal AS Branch, + z.nombre_depto AS Zone, + se.descripcion AS Sector, + COUNT(DISTINCT dv.id_cliente) AS Count_Customers, + IF( + (dv.fecha_vencimiento - dv.fecha) <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + ROUND( + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))), 4 + ) AS Weight_Kg, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN item i + USING ( id_item ) + LEFT JOIN cliente c + USING ( id_cliente ) + LEFT JOIN view_ciudades z + ON ( c.id_zona = z.id_ciudad ) + LEFT JOIN sector se + USING ( id_sector ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) >= 2015 + +GROUP BY + Year, Branch, Sale_conditions, Zone, Sector diff --git a/2017-08-08-Terms_per_year.sql b/2017-08-08-Terms_per_year.sql new file mode 100644 index 0000000..395e4a4 --- /dev/null +++ b/2017-08-08-Terms_per_year.sql @@ -0,0 +1,34 @@ +-- Sales per payment terms year to year +-- For 5-Year presentation + +SELECT + YEAR(dv.fecha) AS Year, + COUNT(DISTINCT dv.id_cliente) AS Count_Customers, + COUNT(DISTINCT dv.id_documento) AS Count_Invoices, + IF( + (dv.fecha_vencimiento - dv.fecha) <= 5, + 'cash', + 'credit' + ) AS Sale_conditions, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + SUM(dvi.valor) AS Value +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN item i + USING ( id_item ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,1) = 'F') + AND YEAR(dv.fecha) >= 2018 + +GROUP BY + Year, Sale_conditions diff --git a/2017-08-08-Yearly_stats.sql b/2017-08-08-Yearly_stats.sql new file mode 100644 index 0000000..6e65427 --- /dev/null +++ b/2017-08-08-Yearly_stats.sql @@ -0,0 +1,26 @@ +-- Estadísticas anuales + +SELECT YEAR(dv.fecha) AS Year, + COUNT(DISTINCT(dv.id_documento)) AS Number_of_invoices, + COUNT(DISTINCT(c.id_cliente)) AS Number_of_customers, + COUNT(DISTINCT(z.id_depto)) AS Number_of_cities, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))), 4 + ) AS Weight_Kg + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + JOIN item i + USING ( id_item ) + LEFT JOIN cliente c + USING ( id_cliente ) + JOIN view_ciudades z + ON (c.id_zona = z.id_ciudad) + +WHERE (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + +GROUP BY Year diff --git a/2017-08-31-view_ciudades.sql b/2017-08-31-view_ciudades.sql new file mode 100644 index 0000000..84f43a8 --- /dev/null +++ b/2017-08-31-view_ciudades.sql @@ -0,0 +1,11 @@ +CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER +VIEW view_ciudades +AS + SELECT + c.id_zona AS id_ciudad, + c.descripcion AS nombre_ciudad, + d.descripcion AS nombre_depto + FROM + zona c JOIN zona d ON (LEFT(c.id_zona,5) = d.id_zona) + WHERE + (c.nivel = 3 AND d.nivel = 2); diff --git a/2017-09-20-Clientes_de_Palmira.sql b/2017-09-20-Clientes_de_Palmira.sql new file mode 100644 index 0000000..b0b7993 --- /dev/null +++ b/2017-09-20-Clientes_de_Palmira.sql @@ -0,0 +1,27 @@ +-- Ventas de clientes de una sola ciudad (Palmira, Valle) + +SELECT + cs.id_cliente AS NIT, + cs.nombre_cliente AS Cliente, + cs.telefono AS Telefono, + cs.direccion AS Direccion, + YEAR(dv.fecha) AS Ano, + SUM(dvi.valor) AS valor +FROM + documento_ventas dv + LEFT JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + LEFT JOIN item i + ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN zona z + ON ( z.id_zona=LEFT(cs.id_zona,8) ) +WHERE + LEFT(dv.id_documento,2) NOT RLIKE "[TD][0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND z.id_zona = '77076520' +GROUP BY + Ano,NIT +ORDER BY + Ano,NIT diff --git a/2017-09-21-Clientes_de_Palmira_Odoo.sql b/2017-09-21-Clientes_de_Palmira_Odoo.sql new file mode 100644 index 0000000..e06748f --- /dev/null +++ b/2017-09-21-Clientes_de_Palmira_Odoo.sql @@ -0,0 +1,30 @@ +-- Ventas de clientes de una sola ciudad (Palmira, Valle) de Odoo + +SET NAMES 'utf8'; + +SELECT + cs.id_cliente AS NIT, + cs.nombre_cliente AS Cliente, + cs.telefono AS Telefono, + cs.direccion AS Direccion, + YEAR(dv.fecha) AS Ano, + SUM(dvi.valor) AS valor +FROM + documento_ventas dv + LEFT JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + LEFT JOIN item i + ON ( dvi.id_item=i.id_item ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal AND dv.id_cliente=cs.id_cliente ) + JOIN zona z + ON ( z.id_zona=LEFT(cs.id_zona,8) ) +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND z.id_zona = '77076520' +GROUP BY + Ano,NIT +ORDER BY + Ano,NIT diff --git a/2017-11-06-Clientes_para_ABC.sql b/2017-11-06-Clientes_para_ABC.sql new file mode 100644 index 0000000..4e671e6 --- /dev/null +++ b/2017-11-06-Clientes_para_ABC.sql @@ -0,0 +1,49 @@ +-- Clientes para clasificacion ABC + +SET NAMES 'utf8'; + +SELECT + cl.id_cliente AS Nit, + cl.nombre_cliente AS Cliente, + cs.cupo AS Cupo, + (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente, + v.nombre_vendedor AS Asesor_asignado, + cs.id_sucursal AS Sucursal_asesor, + SUM(dv.valor) AS total_ventas, + COUNT(dv.id_documento) AS numero_facturas, + MAX(dv.fecha) AS fecha_ultima_factura, + SUM(r.valor) AS total_recaudos, + COUNT(r.id_documento) AS numero_recaudos, + AVG(mora) AS promedio_mora, + IFNULL(AVG( + IF( + PERIOD_DIFF(201708,EXTRACT(YEAR_MONTH FROM r.fecha))>=3, + NULL, + IF(mora<0,0,mora) + ) + ),0) AS promedio_mora_ultimos_3meses, + MAX(mora) AS maxima_mora, + COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses +FROM + cliente cl + JOIN cliente_has_sucursal cs + USING (id_cliente) + LEFT JOIN documento_ventas dv + ON (dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente) + LEFT JOIN recaudo r + ON (r.id_cliente = cs.id_cliente + AND r.id_sucursal = cs.id_sucursal + AND r.id_documento = dv.id_documento) + LEFT JOIN vendedor v + ON (cs.id_vendedor = v.id_vendedor) +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND dv.fecha >= "2017-01-01" + AND dv.fecha < "2018-01-01" + +GROUP BY + Nit + diff --git a/2018-01-15-numero_de_clientes_ultimos_semestres.sql b/2018-01-15-numero_de_clientes_ultimos_semestres.sql new file mode 100644 index 0000000..4cc0fce --- /dev/null +++ b/2018-01-15-numero_de_clientes_ultimos_semestres.sql @@ -0,0 +1,32 @@ +-- Numero de clientes distintos por semestre +SELECT + YEAR(dv.fecha) AS Ano, + IF(MONTH(dv.fecha) < 7, 1, 2) AS Semestre, + MIN(dv.fecha) AS Fecha_desde, + MAX(dv.fecha) AS Fecha_hasta, + COUNT(DISTINCT dv.id_cliente) AS Clientes, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND YEAR(dv.fecha) >= 2016 + +GROUP BY + Ano,Semestre + +ORDER BY + Ano,Semestre diff --git a/2018-01-17-Sales_per_line_per_client.sql b/2018-01-17-Sales_per_line_per_client.sql new file mode 100644 index 0000000..75b3b2b --- /dev/null +++ b/2018-01-17-Sales_per_line_per_client.sql @@ -0,0 +1,43 @@ +-- Ventas por linea por cliente mes a mes + +SET NAMES 'utf8'; + +SELECT + LAST_DAY(dv.fecha) AS Mes, + dv.id_vendedor AS Id_Asesor, + vdr.nombre_vendedor AS Asesor, + dv.id_cliente AS Id_Cliente, + cs.nombre_cliente AS Cliente, + dv.id_sucursal AS Sucursal, + RIGHT(l.id_linea,2) AS Id_Linea, + l.descripcion AS Linea, + SUM(dvi.valor) AS Ventas_COP, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 4 + ) AS Ventas_MT + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor ) + +WHERE (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND YEAR(dv.fecha) >= 2016 + +GROUP BY + Mes, Id_Asesor, Id_Cliente, Sucursal, Id_Linea + +ORDER BY + Mes, Id_Asesor, Id_Cliente, Sucursal, Id_Linea diff --git a/2018-01-22-Clientes_para_ABC.sql b/2018-01-22-Clientes_para_ABC.sql new file mode 100644 index 0000000..893a146 --- /dev/null +++ b/2018-01-22-Clientes_para_ABC.sql @@ -0,0 +1,46 @@ +-- Clientes para clasificacion ABC (comparacion pareto anual) + +SET NAMES 'utf8'; + +SELECT + cl.id_cliente AS Nit, + cl.nombre_cliente AS Cliente, + cs.cupo AS Cupo, + (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente, + v.nombre_vendedor AS Asesor_asignado, + cs.id_sucursal AS Sucursal_asesor, + SUM(dv.valor) AS ventas_cop, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS ventas_kg, + COUNT(dv.id_documento) AS numero_facturas +FROM + cliente cl + JOIN cliente_has_sucursal cs + USING (id_cliente) + LEFT JOIN documento_ventas dv + ON (dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente) + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + LEFT JOIN recaudo r + ON (r.id_cliente = cs.id_cliente + AND r.id_sucursal = cs.id_sucursal + AND r.id_documento = dv.id_documento) + LEFT JOIN vendedor v + ON (cs.id_vendedor = v.id_vendedor) +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND YEAR(dv.fecha) = 2015 + +GROUP BY + Nit + diff --git a/2019-12-04_Crear-consecutivos.sql b/2019-12-04_Crear-consecutivos.sql new file mode 100644 index 0000000..e6d3acb --- /dev/null +++ b/2019-12-04_Crear-consecutivos.sql @@ -0,0 +1,17 @@ +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('arm', 'AIS', 'Factura electrónica 2.1 - Armenia', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('bar', 'AIX', 'Factura electrónica 2.1 - Barranquilla', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('bog', 'AIY', 'Factura electrónica 2.1 - Bogotá', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('buc', 'AIZ', 'Factura electrónica 2.1 - Bucaramanga', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('bug', 'AIM', 'Factura electrónica 2.1 - Buga', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('cal', 'AIO', 'Factura electrónica 2.1 - Yumbo', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('car', 'AIL', 'Factura electrónica 2.1 - Cartagena', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('iba', 'AIV', 'Factura electrónica 2.1 - Ibagué', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('mal', 'AID', 'Factura electrónica 2.1 - Malambo', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('med', 'AIW', 'Factura electrónica 2.1 - Itagüí', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('nei', 'AIE', 'Factura electrónica 2.1 - Neiva', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('pas', 'AIP', 'Factura electrónica 2.1 - Pasto', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('per', 'AIN', 'Factura electrónica 2.1 - Pereira', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('ric', 'AIR', 'Factura electrónica 2.1 - Ricaurte', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('vil', 'AIK', 'Factura electrónica 2.1 - Villavicencio', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('mar', 'AIT', 'Factura electrónica 2.1 - Mártires', '0'); +INSERT INTO `consecutivo` (`id_sucursal`, `prefijo`, `nombre`, `consecutivo`) VALUES ('mon', 'AIA', 'Factura electrónica 2.1 - Montería', '0'); diff --git a/20200330_Sales-per-client-year.sql b/20200330_Sales-per-client-year.sql new file mode 100644 index 0000000..6cefd28 --- /dev/null +++ b/20200330_Sales-per-client-year.sql @@ -0,0 +1,37 @@ +-- Ventas (Facturas menos devoluciones) por cliente en un año +SELECT + dv.id_cliente AS Nit, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold, + c.nombre_cliente AS Cliente + +FROM + documento_ventas dv + LEFT JOIN cliente c + USING ( id_cliente ) + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,1) = 'F') + AND YEAR(dv.fecha) = 2019 + +GROUP BY + Nit + +ORDER BY + Nit diff --git a/2021-02-09-Sales_per_item_in_tubes.sql b/2021-02-09-Sales_per_item_in_tubes.sql new file mode 100644 index 0000000..1ad32af --- /dev/null +++ b/2021-02-09-Sales_per_item_in_tubes.sql @@ -0,0 +1,43 @@ +-- Ventas por mes por item de las lineas de tuberia + +SET NAMES 'utf8'; + +SELECT + CONCAT(EXTRACT(YEAR_MONTH FROM dv.fecha), '01') AS Mes, + s.nombre_sucursal AS Sucursal, + l.descripcion AS Product_line, + i.id_item AS Item, + i.descripcion AS Description, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM( + dvi.cantidad * (IF(dvi.valor >0, 1 , -1)) + ) AS Amount_UoM, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + LEFT JOIN sucursal s + ON (dv.id_sucursal = s.id_sucursal ) + JOIN item i + USING ( id_item ) + LEFT JOIN view_lineas l + USING ( id_linea ) + +WHERE + YEAR(dv.fecha) >= 2020 + AND i.id_linea IN ('1548', '1560', '1554') + +GROUP BY + Mes, Sucursal, Item + +ORDER BY + Mes, Sucursal, Item diff --git a/2021-05-17-Ventas_por_documento_con_cupo_y_plazo.sql b/2021-05-17-Ventas_por_documento_con_cupo_y_plazo.sql new file mode 100644 index 0000000..2953370 --- /dev/null +++ b/2021-05-17-Ventas_por_documento_con_cupo_y_plazo.sql @@ -0,0 +1,39 @@ +-- Sales per document with credit limit and conditions +-- For Board of Directors + +SELECT + dv.id_cliente AS Customer_Id, + cs.nombre_cliente AS Customer, + cs.cupo AS Credit_limit, + su.nombre_sucursal AS Branch, + dv.id_documento AS Invoice, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + dv.fecha AS Date_document, + dv.fecha_vencimiento AS Date_credit, + fp.descripcion AS Payment_conditions, + dv.valor_total AS Total_incl_taxes +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON (dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal) + JOIN item i + USING (id_item) + JOIN sucursal su + ON (dv.id_sucursal = su.id_sucursal) + LEFT JOIN cliente_has_sucursal cs + ON (dv.id_cliente = cs.id_cliente + AND dv.id_sucursal = cs.id_sucursal) + LEFT JOIN formapago_documento fpd + ON (dv.id_documento = fpd.id_documento + AND dv.id_sucursal = fpd.id_sucursal) + LEFT JOIN forma_pago fp + USING (id_formapago) + +WHERE + dv.fecha >= "2020-01-01" + AND dv.fecha <= "2021-04-30" +GROUP BY + Customer_Id, Invoice diff --git a/20211011_Ventas-por-tercero-plazo.sql b/20211011_Ventas-por-tercero-plazo.sql new file mode 100644 index 0000000..a16c49c --- /dev/null +++ b/20211011_Ventas-por-tercero-plazo.sql @@ -0,0 +1,40 @@ +-- Sales per Client with credit limit and conditions +-- For Board of Directors + +SELECT + dv.id_cliente AS Customer_Id, + cs.nombre_cliente AS Customer, + cs.cupo AS Credit_limit, + su.nombre_sucursal AS Branch, + dv.id_documento AS Invoice, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Weight_MT, + dv.fecha AS Date_document, + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month_document, + dv.fecha_vencimiento AS Date_credit, + fp.formapago AS Payment_condition, + dv.valor_total AS Total_incl_taxes +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON (dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal) + JOIN item i + USING (id_item) + JOIN sucursal su + ON (dv.id_sucursal = su.id_sucursal) + LEFT JOIN cliente_has_sucursal cs + ON (dv.id_cliente = cs.id_cliente + AND dv.id_sucursal = cs.id_sucursal) + LEFT JOIN formapago_documento fpd + ON (dv.id_documento = fpd.id_documento + AND dv.id_sucursal = fpd.id_sucursal) + LEFT JOIN forma_pago fp + USING (id_formapago) + +WHERE + dv.fecha >= "2021-01-01" + AND dv.fecha <= "2021-09-30" +GROUP BY + Customer_Id, Invoice diff --git a/20220105_Ventas-tuberia-por-item-sucursal-mes.sql b/20220105_Ventas-tuberia-por-item-sucursal-mes.sql new file mode 100644 index 0000000..4e65930 --- /dev/null +++ b/20220105_Ventas-tuberia-por-item-sucursal-mes.sql @@ -0,0 +1,36 @@ +SET NAMES 'utf8'; + +SELECT + i.id_linea AS Sub_line, + i.id_item AS Item, + l.descripcion AS Product_line, + i.descripcion AS Description, + su.nombre_sucursal AS Branch, + CONCAT(EXTRACT(YEAR_MONTH FROM dv.fecha), '01') AS Month, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))), 4 + ) AS Weight_Kg, + SUM( + dvi.cantidad * (IF(dvi.valor >0, 1 , -1)) + ) AS Amount_UoM + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + LEFT JOIN sucursal su + ON (dv.id_sucursal = su.id_sucursal ) + + JOIN item i + USING ( id_item ) + LEFT JOIN view_lineas l + USING (id_linea) + +WHERE + YEAR(dv.fecha) >= 2017 + AND l.id_linea IN ('1542', '1548', '1554', '1557', '1560') + +GROUP BY + Item, Branch, Month diff --git a/20220106_Ventas-un-vendedor-varios-meses.sql b/20220106_Ventas-un-vendedor-varios-meses.sql new file mode 100644 index 0000000..a06f530 --- /dev/null +++ b/20220106_Ventas-un-vendedor-varios-meses.sql @@ -0,0 +1,40 @@ +SET NAMES 'utf8'; + +SELECT + dv.id_sucursal AS Suc, + cli.id_cliente AS Nit, + cli.nombre_cliente AS Cliente, + vdr.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + dv.fecha AS Fecha, + dv.id_documento AS Documento, + i.id_item AS CodItem, + i.descripcion AS Item, + l.descripcion AS Linea, + ROUND(SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1))), 2) AS Peso_Kg, + SUM(dvi.valor) AS Valor + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + LEFT JOIN cliente cli + ON ( dv.id_cliente = cli.id_cliente ) + LEFT JOIN view_lineas l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor) + +WHERE + dv.fecha >= "2021-07-01" + AND dv.fecha <= "2021-12-31" + AND vdr.id_vendedor = "66847518" + +GROUP BY + Suc,Nit,Documento,CodVendedor,CodItem + +ORDER BY + Suc,Nit,Documento,CodVendedor,CodItem diff --git a/20221221_Inventario-items-produccion-por-sucursal-mes.sql b/20221221_Inventario-items-produccion-por-sucursal-mes.sql new file mode 100644 index 0000000..4c6a50f --- /dev/null +++ b/20221221_Inventario-items-produccion-por-sucursal-mes.sql @@ -0,0 +1,51 @@ +-- Costo y existencia por sucursal por item, al ultimo dia de cada mes + +SET NAMES 'utf8'; + +SELECT + i.id_item AS Item, + i.descripcion AS Description, + su.nombre_sucursal AS Branch, + e.fecha AS Month, + ROUND(SUM(e.cantidad_bodega * e.costo_unidad), 2) AS Stock_Avg_Cost, + SUM(e.cantidad_bodega) AS Stock_UoM, + ROUND(SUM(e.cantidad_bodega * i.peso), 2) AS Stock_Kg + +FROM + existencia_historico e + LEFT JOIN sucursal su + USING (id_sucursal) + JOIN item i + USING (id_item) + +WHERE + e.fecha >= "2021-03-01" + AND e.fecha <= "2022-11-30" + AND e.fecha = LAST_DAY(e.fecha) + + AND i.id_item IN ('260367', '260375', '260383', '260407', '260414', + '260430', '260438', '260446', '260462', '260470', '260478', + '260566', '260574', '260582', '260590', '260606', '260614', + '260789', '260793', '260797', '260801', '260809', '260817', + '260825', '430170', '430175', '430180', '430185', '430190', + '430195', '430210', '430215', '430235', '430250', '430255', + '430310', '430335', '430345', '430405', '430420', '430425', + '430430', '430440', '430455', '440160', '440165', '440175', + '440180', '440185', '440190', '440205', '440210', '440280', + '440285', '440300', '440305', '440410', '440425', '440430', + '440440', '440560', '440575', '440580', '440885', '440890', + '440900', '480424', '480430', '480433', '480436', '480457', + '480463', '480466', '480469', '480490', '480496', '480499', + '480503', '480533', '540784', '540793', '540796', '540866', + '540869') + AND e.id_sucursal IN ('bog', 'car', 'san', 'smm', 'bar', 'buc', 'ita', + 'ric', 'mal', 'mar','med','mon','pal','val','vlc') + +GROUP BY + Item, Branch, Month + +HAVING + (Stock_Avg_Cost + Stock_Kg > 0) + +ORDER BY + Stock_Avg_Cost DESC diff --git a/20221221_Ventas-items-produccion-por-sucursal-mes.sql b/20221221_Ventas-items-produccion-por-sucursal-mes.sql new file mode 100644 index 0000000..0573bac --- /dev/null +++ b/20221221_Ventas-items-produccion-por-sucursal-mes.sql @@ -0,0 +1,49 @@ +SET NAMES 'utf8'; + +SELECT + i.id_item AS Item, + i.descripcion AS Description, + su.nombre_sucursal AS Branch, + DATE_FORMAT(dv.fecha,"%Y-%m-01") AS Month, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM(dvi.cantidad * i.peso * (IF(dvi.valor>0,1,-1))), 4 + ) AS Sales_Kg, + SUM( + dvi.cantidad * (IF(dvi.valor >0, 1 , -1)) + ) AS Sales_UoM + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + LEFT JOIN sucursal su + ON (dv.id_sucursal = su.id_sucursal ) + + JOIN item i + USING ( id_item ) + +WHERE + dv.fecha >= "2021-04-01" + AND dv.fecha <= "2022-11-30" + AND i.id_item IN ('260367', '260375', '260383', '260407', '260414', + '260430', '260438', '260446', '260462', '260470', '260478', + '260566', '260574', '260582', '260590', '260606', '260614', + '260789', '260793', '260797', '260801', '260809', '260817', + '260825', '430170', '430175', '430180', '430185', '430190', + '430195', '430210', '430215', '430235', '430250', '430255', + '430310', '430335', '430345', '430405', '430420', '430425', + '430430', '430440', '430455', '440160', '440165', '440175', + '440180', '440185', '440190', '440205', '440210', '440280', + '440285', '440300', '440305', '440410', '440425', '440430', + '440440', '440560', '440575', '440580', '440885', '440890', + '440900', '480424', '480430', '480433', '480436', '480457', + '480463', '480466', '480469', '480490', '480496', '480499', + '480503', '480533', '540784', '540793', '540796', '540866', + '540869') + AND dv.id_sucursal IN ('bog', 'car', 'san', 'smm', 'bar', 'buc', 'ita', + 'ric', 'mal', 'mar','med','mon','pal','val','vlc') + +GROUP BY + Item, Branch, Month diff --git a/20230314_Ventas-sublinea-formapago-anuales.sql b/20230314_Ventas-sublinea-formapago-anuales.sql new file mode 100644 index 0000000..f041161 --- /dev/null +++ b/20230314_Ventas-sublinea-formapago-anuales.sql @@ -0,0 +1,26 @@ +SET NAMES 'utf8'; + +SELECT + YEAR(dv.fecha) AS year, + l.id_linea, + l.descripcion AS linea, + f.id_formapago AS id_formapago, + f.descripcion AS formapago, + SUM(dvi.valor) AS valor, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS peso, + SUM(dvi.valor-dvi.costo) AS utilidad +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + LEFT JOIN linea l + ON ( l.id_linea = i.id_linea AND l.tipo= i.tipo ) + LEFT JOIN formapago_documento fd + ON ( fd.id_documento=dv.id_documento AND fd.id_sucursal=dv.id_sucursal ) + LEFT JOIN forma_pago f + ON ( f.id_formapago=fd.id_formapago ) + +GROUP BY + year, linea, id_formapago diff --git a/20230315_Entradas-sublinea-anuales.sql b/20230315_Entradas-sublinea-anuales.sql new file mode 100644 index 0000000..2715b58 --- /dev/null +++ b/20230315_Entradas-sublinea-anuales.sql @@ -0,0 +1,32 @@ +SET NAMES 'utf8'; + +SELECT + YEAR(e.fecha) AS year, + RIGHT(l.id_linea,2) AS cod_linea, + l.descripcion AS linea, + e.id_proveedor AS Nit_Proveedor, + p.nombre_proveedor AS proveedor, + SUM(ei.costo) AS costo, + ROUND(SUM(ei.cantidad * i.peso), 2) AS peso + +FROM + entrada e + JOIN entrada_has_item ei + ON ( e.id_entrada = ei.id_entrada + AND e.id_sucursal = ei.id_sucursal ) + JOIN item i + USING ( id_item ) + LEFT JOIN linea l + ON ( l.id_linea = i.id_linea + AND l.tipo = i.tipo ) + LEFT JOIN proveedor p + ON ( p.id_proveedor = e.id_proveedor ) + LEFT JOIN proveedor_has_sucursal ps + ON ( p.id_proveedor = ps.id_proveedor + AND ps.id_sucursal = e.id_sucursal ) + +GROUP BY + year, linea, proveedor + +HAVING + year > 2015 diff --git a/20230316_Clientes-formapago-anuales.sql b/20230316_Clientes-formapago-anuales.sql new file mode 100644 index 0000000..56b631c --- /dev/null +++ b/20230316_Clientes-formapago-anuales.sql @@ -0,0 +1,28 @@ +SET NAMES 'utf8'; + +SELECT + YEAR(dv.fecha) AS year, + dv.id_sucursal AS sucursal, + IF(DATEDIFF(dv.fecha_vencimiento, dv.fecha) > 8, "Crédito", "Contado") AS plazo, + COUNT(DISTINCT(dv.id_cliente)) AS num_clientes, + COUNT(DISTINCT(dv.id_documento)) AS num_facturas, + SUM(dvi.valor) AS valor, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS peso +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + LEFT JOIN linea l + ON ( l.id_linea = i.id_linea AND l.tipo= i.tipo ) + LEFT JOIN formapago_documento fd + ON ( fd.id_documento=dv.id_documento AND fd.id_sucursal=dv.id_sucursal ) + LEFT JOIN forma_pago f + ON ( f.id_formapago=fd.id_formapago ) + +GROUP BY + year, sucursal, plazo + +HAVING + year > 2015 AND year < 2023 diff --git a/20230316_Documentos-formapago-anuales.sql b/20230316_Documentos-formapago-anuales.sql new file mode 100644 index 0000000..fa11936 --- /dev/null +++ b/20230316_Documentos-formapago-anuales.sql @@ -0,0 +1,27 @@ +SET NAMES 'utf8'; + +SELECT + YEAR(dv.fecha) AS year, + f.id_formapago AS id_formapago, + f.descripcion AS formapago, + dv.id_documento AS factura, + SUM(dvi.valor) AS valor, + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS peso +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item ) + LEFT JOIN linea l + ON ( l.id_linea = i.id_linea AND l.tipo= i.tipo ) + LEFT JOIN formapago_documento fd + ON ( fd.id_documento=dv.id_documento AND fd.id_sucursal=dv.id_sucursal ) + LEFT JOIN forma_pago f + ON ( f.id_formapago=fd.id_formapago ) + +GROUP BY + year, factura, id_formapago + +HAVING + year = 2020 diff --git a/MONTHLY-Analysis_of_Accounts_Receivable.sql b/MONTHLY-Analysis_of_Accounts_Receivable.sql new file mode 100644 index 0000000..7a97443 --- /dev/null +++ b/MONTHLY-Analysis_of_Accounts_Receivable.sql @@ -0,0 +1,40 @@ +-- Saldo de Cartera por documento con corte al ultimo dia del mes anterior + +-- Parametros: @DIA: Fecha del ultimo dia del mes, formato YYYY-MM-DD + +SET NAMES 'utf8'; + +SELECT + ch.fecha_historico AS Date_Current, + ch.id_cliente AS Customer_Id, + cs.nombre_cliente AS Customer_Name, + "" AS Insurance_Concept, + "" AS Customer_Credit_Limit_Insurance, + MAX(cs.cupo) AS Customer_Credit_Limit_Agofer, + ch.id_documento AS Invoice_No, + ch.fecha AS Invoice_Date, + ch.fecha_vencimiento AS Invoice_Due_Date, + ch.plazo AS Payment_Terms, + ROUND(SUM(i.peso * dvi.cantidad),0) AS Invoice_Qty_Kg, + MAX(ch.valor) AS Amount_due, + "COP" AS Currency, + "" AS Comments, + s.nombre_sucursal AS Branch + +FROM + cartera_historico ch + JOIN cliente_has_sucursal cs + USING (id_sucursal, id_cliente) + LEFT JOIN documento_ventas_has_item dvi + USING (id_documento, id_sucursal) + LEFT JOIN item i + USING (id_item, id_sucursal) + JOIN sucursal s + USING (id_sucursal) + +WHERE + ch.fecha_historico = @DIA + +GROUP BY + ch.id_sucursal, ch.id_cliente, ch.id_documento + diff --git a/MONTHLY-Cartera con corte a una fecha.sql b/MONTHLY-Cartera con corte a una fecha.sql new file mode 100644 index 0000000..9085ab7 --- /dev/null +++ b/MONTHLY-Cartera con corte a una fecha.sql @@ -0,0 +1,14 @@ +-- Cartera con corte a una fecha + +SELECT ch.id_sucursal AS Suc,ch.id_cliente AS NIT,c.nombre_cliente AS Cliente, +cs.direccion AS Direccion,z.descripcion AS Ciudad,cs.telefono AS Telefono, +SUM(ch.valor) AS Cartera,MAX(cs.cupo) AS Cupo +FROM `cartera_historico` ch +JOIN cliente c +USING (id_cliente) +JOIN cliente_has_sucursal cs +USING (id_sucursal, id_cliente) +JOIN zona z +ON (cs.ciudad = z.id_zona) +WHERE ch.fecha_historico = '2012-07-31' +GROUP BY ch.id_sucursal, ch.id_cliente diff --git a/MONTHLY-Clientes_para_ABC.sql b/MONTHLY-Clientes_para_ABC.sql new file mode 100644 index 0000000..19e1424 --- /dev/null +++ b/MONTHLY-Clientes_para_ABC.sql @@ -0,0 +1,46 @@ +-- Clientes para clasificacion ABC + +SET NAMES 'utf8'; + +SELECT + cl.id_cliente AS Nit, + cl.nombre_cliente AS Cliente, + cs.cupo AS Cupo, + (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente, + v.nombre_vendedor AS Asesor_asignado, + cs.id_sucursal AS Sucursal_asesor, + SUM(dv.valor) AS total_ventas, + COUNT(dv.id_documento) AS numero_facturas, + MAX(dv.fecha) AS fecha_ultima_factura, + SUM(r.valor) AS total_recaudos, + COUNT(r.id_documento) AS numero_recaudos, + AVG(mora) AS promedio_mora, + IFNULL(AVG( + IF( + PERIOD_DIFF(@PER,EXTRACT(YEAR_MONTH FROM r.fecha))>=3, + NULL, + IF(mora<0,0,mora) + ) + ),0) AS promedio_mora_ultimos_3meses, + MAX(mora) AS maxima_mora, + COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses +FROM + cliente cl + JOIN cliente_has_sucursal cs + USING (id_cliente) + LEFT JOIN documento_ventas dv + ON (dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente) + LEFT JOIN recaudo r + ON (r.id_cliente = cs.id_cliente + AND r.id_sucursal = cs.id_sucursal + AND r.id_documento = dv.id_documento) + LEFT JOIN vendedor v + ON (cs.id_vendedor = v.id_vendedor) +WHERE + dv.fecha >= @INI + AND dv.fecha < @FIN + +GROUP BY + Nit + diff --git a/MONTHLY-Entries_to_inventory_per_line.sql b/MONTHLY-Entries_to_inventory_per_line.sql new file mode 100644 index 0000000..c855241 --- /dev/null +++ b/MONTHLY-Entries_to_inventory_per_line.sql @@ -0,0 +1,34 @@ +-- Entradas de almacen por linea del mes + +SELECT + l.id_linea AS Product_line_code, + l.descripcion AS Product_line, + SUM(ei.costo * ei.cantidad) AS Cost, + ROUND(SUM(ei.cantidad * i.peso), 2) AS Amount_Kg + +FROM + entrada e + JOIN entrada_has_item ei + ON ( e.id_entrada = ei.id_entrada + AND e.id_sucursal = ei.id_sucursal ) + JOIN item i + ON ( ei.id_item = i.id_item + AND ei.id_sucursal = i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = left( i.id_linea, 2 ) + AND l.tipo = i.tipo ) + JOIN proveedor p + ON ( p.id_proveedor = e.id_proveedor ) + JOIN proveedor_has_sucursal ps + ON ( p.id_proveedor = ps.id_proveedor + AND ps.id_sucursal = e.id_sucursal ) + +WHERE + p.id_proveedor > 999 + AND EXTRACT(YEAR_MONTH FROM e.fecha) = @MES + +GROUP BY + l.id_linea + +ORDER BY + Amount_Kg DESC diff --git a/MONTHLY-Entries_to_inventory_per_subline.sql b/MONTHLY-Entries_to_inventory_per_subline.sql new file mode 100644 index 0000000..2f8af6a --- /dev/null +++ b/MONTHLY-Entries_to_inventory_per_subline.sql @@ -0,0 +1,35 @@ +-- Entradas de almacen por linea del mes (sublinea en Odoo) + +SET NAMES 'utf8'; + +SELECT + RIGHT(l.id_linea,2) AS Product_line_code, + l.descripcion AS Product_line, + SUM(ei.costo) AS Cost, + ROUND(SUM(ei.cantidad * i.peso), 2) AS Amount_Kg + +FROM + entrada e + JOIN entrada_has_item ei + ON ( e.id_entrada = ei.id_entrada + AND e.id_sucursal = ei.id_sucursal ) + JOIN item i + USING ( id_item ) + JOIN linea l + ON ( l.id_linea = i.id_linea + AND l.tipo = i.tipo ) + JOIN proveedor p + ON ( p.id_proveedor = e.id_proveedor ) + JOIN proveedor_has_sucursal ps + ON ( p.id_proveedor = ps.id_proveedor + AND ps.id_sucursal = e.id_sucursal ) + +WHERE + p.id_proveedor > 999 + AND EXTRACT(YEAR_MONTH FROM e.fecha) = @MES + +GROUP BY + l.id_linea + +ORDER BY + Amount_Kg DESC diff --git a/MONTHLY-Inventory_per_branch.sql b/MONTHLY-Inventory_per_branch.sql new file mode 100644 index 0000000..bb0230a --- /dev/null +++ b/MONTHLY-Inventory_per_branch.sql @@ -0,0 +1,31 @@ +-- Costo y existencia en Kg por sucursal, al ultimo dia del mes anterior + +-- Parametro @DIA: fecha (historico) de la existencia, en formato YYYY-MM-DD + +SET NAMES 'utf8'; + +SELECT + su.id_sucursal AS Branch_code, + su.nombre_sucursal AS Branch_office, + ROUND(SUM(e.cantidad * e.costo_unidad), 2) AS Stock_Avg_Cost, + ROUND(SUM(e.cantidad * i.peso ), 2) AS Stock_Kg + +FROM + existencia_historico e + JOIN item i + USING ( id_item ) + JOIN sucursal su + ON ( su.id_sucursal = e.id_sucursal) + +WHERE + (e.fecha = @DIA) + +GROUP BY + su.id_sucursal + +HAVING + (Stock_Avg_Cost + Stock_Kg > 0) + +ORDER BY + su.id_sucursal ASC + diff --git a/MONTHLY-Inventory_per_item.sql b/MONTHLY-Inventory_per_item.sql new file mode 100644 index 0000000..e253d6a --- /dev/null +++ b/MONTHLY-Inventory_per_item.sql @@ -0,0 +1,37 @@ +-- Costo y existencia consolidados por item, al ultimo dia del mes anterior + +-- Parametro @DIA: fecha (historico) de la existencia, en formato YYYY-MM-DD + +SET NAMES 'utf8'; + +SELECT + f.subfamilia AS Family, + l.id_linea AS Line, + i.id_linea AS Sub_line, + i.id_item AS Item, + i.descripcion AS Description, + ROUND(SUM(e.cantidad * e.costo_unidad), 2) AS Stock_Avg_Cost, + SUM(e.cantidad) AS Stock_UoM, + ROUND(SUM(e.cantidad * i.peso), 2) AS Stock_Kg + +FROM + existencia_historico e + JOIN item i + USING ( id_item ) + LEFT JOIN view_lineas l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) ) + LEFT JOIN linea_has_subfamilia f + ON ( l.id_linea = f.id_linea ) + +WHERE + (e.fecha = @DIA) + +GROUP BY + i.id_item + +HAVING + (Stock_Avg_Cost + Stock_Kg > 0) + +ORDER BY + Stock_Avg_Cost DESC + diff --git a/MONTHLY-Inventory_per_line.sql b/MONTHLY-Inventory_per_line.sql new file mode 100644 index 0000000..495829b --- /dev/null +++ b/MONTHLY-Inventory_per_line.sql @@ -0,0 +1,33 @@ +-- Costo y existencia en Kg por linea consolidado, al ultimo dia del mes +-- anterior + +-- Parametro @DIA: fecha (historico) de la existencia, en formato YYYY-MM-DD + +SET NAMES 'utf8'; + +SELECT + RIGHT(l.id_linea,2) AS Product_Line_code, + l.descripcion AS Product_Line, + ROUND(SUM(e.costo_unidad * e.cantidad), 2) AS Stock_Avg_Cost, + ROUND(SUM(e.cantidad * i.peso), 2) AS Stock_Kg + +FROM + existencia_historico e + JOIN item i + USING ( id_item ) + JOIN linea l + ON ( l.id_linea = i.id_linea + AND l.tipo = i.tipo ) + +WHERE + (e.fecha = @DIA) + +GROUP BY + l.id_linea + +HAVING + (Stock_Avg_Cost + Stock_Kg > 0) + +ORDER BY + Stock_Avg_Cost DESC + diff --git a/MONTHLY-Saldos por documento con corte a una fecha.sql b/MONTHLY-Saldos por documento con corte a una fecha.sql new file mode 100644 index 0000000..f7d48fe --- /dev/null +++ b/MONTHLY-Saldos por documento con corte a una fecha.sql @@ -0,0 +1,26 @@ +-- Saldos por documento con corte a una fecha + +SELECT + ch.id_sucursal AS Suc, + ch.id_cliente AS NIT, + c.nombre_cliente AS Cliente, + ch.id_documento AS Documento, + ch.fecha_vencimiento AS Fecha_vencimiento, + ch.fecha AS Fecha_apertura, + ch.plazo AS Plazo, + SUM(ch.valor) AS Saldo + +FROM + cartera_historico ch + JOIN cliente c + USING (id_cliente) + JOIN cliente_has_sucursal cs + USING (id_sucursal, id_cliente) + JOIN zona z + ON (cs.ciudad = z.id_zona) + +WHERE + ch.fecha_historico = '2012-09-29' + +GROUP BY + ch.id_sucursal, ch.id_cliente, ch.id_documento diff --git a/MONTHLY-Sales_per_branch.sql b/MONTHLY-Sales_per_branch.sql new file mode 100644 index 0000000..3e2791c --- /dev/null +++ b/MONTHLY-Sales_per_branch.sql @@ -0,0 +1,44 @@ +-- Ventas por sucursal + +-- Parametro: @MES, en formato YYYYMM + +SET NAMES 'utf8'; + +SELECT + su.id_sucursal AS Branch_code, + su.nombre_sucursal AS Branch_office, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor > 0, 1 , -1 )) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + JOIN sucursal su + ON ( su.id_sucursal = dv.id_sucursal ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + su.id_sucursal + +ORDER BY + su.id_sucursal ASC diff --git a/MONTHLY-Sales_per_item.sql b/MONTHLY-Sales_per_item.sql new file mode 100644 index 0000000..746195b --- /dev/null +++ b/MONTHLY-Sales_per_item.sql @@ -0,0 +1,46 @@ +SET NAMES 'utf8'; + +SELECT + f.subfamilia AS Family, + l.id_linea AS Line, + i.id_linea AS Sub_line, + i.id_item AS Item, + i.descripcion AS Description, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM( + dvi.cantidad * (IF(dvi.valor >0, 1 , -1)) + ) AS Amount_UoM, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + LEFT JOIN view_lineas l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) ) + LEFT JOIN linea_has_subfamilia f + ON ( l.id_linea = f.id_linea ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,1) = 'F') + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + i.id_item + +ORDER BY + Amount_Kg DESC diff --git a/MONTHLY-Sales_per_line.sql b/MONTHLY-Sales_per_line.sql new file mode 100644 index 0000000..1023bc4 --- /dev/null +++ b/MONTHLY-Sales_per_line.sql @@ -0,0 +1,35 @@ +SELECT + l.id_linea AS Product_Line_code, + l.descripcion AS Product_line, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) + AND l.tipo = i.tipo ) + +WHERE + LEFT( dv.id_documento, 2 ) RLIKE "F|D[^0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + l.id_linea + +ORDER BY + Amount_Kg DESC diff --git a/MONTHLY-Sales_per_line_per_client.sql b/MONTHLY-Sales_per_line_per_client.sql new file mode 100644 index 0000000..af515cf --- /dev/null +++ b/MONTHLY-Sales_per_line_per_client.sql @@ -0,0 +1,68 @@ +-- Ventas mensuales por linea por cliente +-- Incluye familia, sector, y linea de analisis de Directorio +-- Excluye traslados +-- Cambios solicitados en 2013-06-25: Zona y Suc2 + +SELECT + dv.id_sucursal AS Branch, + se.id_sector AS Id_Sector, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Id_Client, + cs.nombre_cliente AS Client, + dv.id_vendedor AS Id_Salesrep, + vdr.nombre_vendedor AS Salesrep, + YEAR(dv.fecha) AS Year, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS Month_seq, + l.familia AS 'Type', + ls.subfamilia AS Subtype, + l.id_linea_analisis AS Id_Line1, + l.linea_analisis AS Line1, + l.id_linea AS Id_Line2, + l.descripcion AS Line2, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Sales_Kg, + SUM(dvi.valor) AS Sales_COP, + SUM(dvi.valor-dvi.costo) AS Gross_Margin, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Sales_MT + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + LEFT JOIN linea_has_subfamilia ls + ON ( l.id_linea = ls.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MBPC]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + Branch,Id_Client,Month_seq,Id_Line1,Id_Line2,Id_Salesrep + +ORDER BY + Branch,Id_Client,Month_seq,Id_Line1,Id_Line2,Id_Salesrep diff --git a/MONTHLY-Sales_per_line_per_client_odoo.sql b/MONTHLY-Sales_per_line_per_client_odoo.sql new file mode 100644 index 0000000..7cd03f5 --- /dev/null +++ b/MONTHLY-Sales_per_line_per_client_odoo.sql @@ -0,0 +1,69 @@ +-- Ventas mensuales por linea por cliente version ODOO +-- Incluye familia, sector, y linea de analisis de Directorio +-- Excluye traslados +-- Cambios solicitados en 2013-06-25: Zona y Suc2 + +SET NAMES 'utf8'; + +SELECT + dv.id_sucursal AS Branch, + se.id_sector AS Id_Sector, + se.descripcion AS Sector, + '' AS Subsector, + cs.id_cliente AS Id_Client, + cs.nombre_cliente AS Client, + dv.id_vendedor AS Id_Salesrep, + vdr.nombre_vendedor AS Salesrep, + YEAR(dv.fecha) AS Year, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS Month_seq, + l.familia AS 'Type', + '' AS Subtype, + RIGHT(l.id_linea,2) AS Id_Line1, + l.descripcion AS Line1, + '' AS Id_Line2, + '' AS Line2, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Sales_Kg, + SUM(dvi.valor) AS Sales_COP, + SUM(dvi.valor-dvi.costo) AS Gross_Margin, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Sales_MT + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN linea l + ON ( i.id_linea = l.id_linea ) + LEFT JOIN sector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'DE' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,1) = 'F') + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + Branch,Id_Client,Month_seq,Id_Line1,Id_Line2,Id_Salesrep + +ORDER BY + Branch,Id_Client,Month_seq,Id_Line1,Id_Line2,Id_Salesrep diff --git a/MONTHLY-Sales_per_line_per_document_per_client.sql b/MONTHLY-Sales_per_line_per_document_per_client.sql new file mode 100644 index 0000000..372902b --- /dev/null +++ b/MONTHLY-Sales_per_line_per_document_per_client.sql @@ -0,0 +1,64 @@ +-- Ventas mensuales por linea por documento por cliente +-- Incluye familia, sector, y linea de analisis de Directorio + +-- Parametros: @MES, en formato YYYYMM + +SELECT + dv.id_sucursal AS Suc, + se.descripcion AS Sector, + sbse.descripcion AS Subsector, + cs.id_cliente AS Nit, + cs.nombre_cliente AS Cliente, + dv.id_vendedor AS CodVendedor, + vdr.nombre_vendedor AS Vendedor, + dv.id_documento AS Documento, + LEFT(dv.id_documento,2) AS TipoDocumento, + YEAR(dv.fecha) AS Ano, + MONTH(dv.fecha) + ((YEAR(dv.fecha)-2011)*12) AS ConsecutivoMes, + l.familia AS Familia, + ls.subfamilia AS Subfamilia, + l.id_linea_analisis AS CodLinea1, + l.linea_analisis AS Linea1, + l.id_linea AS CodLinea2, + l.descripcion AS Linea2, + ROUND(SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1))), 2) AS Peso_Kg, + ROUND( + SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0, 1, -1)))/1000, 2 + ) AS Peso_MT, + SUM(dvi.valor) AS Valor, + SUM(dvi.valor-dvi.costo) AS Utilidad + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento=dvi.id_documento + AND dv.id_sucursal=dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item=i.id_item + AND dvi.id_sucursal=i.id_sucursal ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal=cs.id_sucursal + AND dv.id_cliente=cs.id_cliente ) + LEFT JOIN view_lineas l + ON ( LEFT(i.id_linea,2) = l.id_linea ) + JOIN linea_has_subfamilia ls + ON ( l.id_linea = ls.id_linea) + LEFT JOIN solosector se + ON ( LEFT(cs.id_sector,2) = se.id_sector ) + LEFT JOIN subsector sbse + ON ( cs.id_sector = sbse.id_sector ) + LEFT JOIN vendedor vdr + ON ( dv.id_vendedor = vdr.id_vendedor + AND dv.id_sucursal = vdr.id_sucursal) + +WHERE + LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MBP]" + AND (i.tipo != "5") + AND (dv.id_cliente != "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + Suc,Nit,Documento,CodLinea1,CodLinea2,CodVendedor + +ORDER BY + Suc,Nit,Documento,CodLinea1,CodLinea2,CodVendedor diff --git a/MONTHLY-Sales_per_line_per_sector.sql b/MONTHLY-Sales_per_line_per_sector.sql new file mode 100644 index 0000000..063315b --- /dev/null +++ b/MONTHLY-Sales_per_line_per_sector.sql @@ -0,0 +1,43 @@ +-- Sales per line per sector +SELECT + se.id_sector AS Sector_code, + se.descripcion AS Sector, + l.id_linea AS Product_Line_code, + l.descripcion AS Product_line, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN linea l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) + AND l.tipo = i.tipo ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente ) + JOIN sector se + ON ( se.id_sector = LEFT(cs.id_sector,2) ) + +WHERE + LEFT( dv.id_documento, 2 ) RLIKE "F|D[^0-9MPBC]" + AND NOT (i.tipo LIKE "5") + AND NOT (dv.id_cliente LIKE "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + se.id_sector,l.id_linea + +ORDER BY + Sector,Product_Line diff --git a/MONTHLY-Sales_per_sector.sql b/MONTHLY-Sales_per_sector.sql new file mode 100644 index 0000000..58c5c63 --- /dev/null +++ b/MONTHLY-Sales_per_sector.sql @@ -0,0 +1,41 @@ +SET NAMES 'utf8'; + +SELECT + se.id_sector AS Sector_code, + se.descripcion AS Sector, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + JOIN cliente_has_sucursal cs + ON ( dv.id_sucursal = cs.id_sucursal + AND dv.id_cliente = cs.id_cliente ) + LEFT JOIN sector se + ON ( se.id_sector = LEFT(cs.id_sector,2) ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,1) = 'F') + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + se.id_sector + +ORDER BY + Sector ASC diff --git a/MONTHLY-Sales_per_subline.sql b/MONTHLY-Sales_per_subline.sql new file mode 100644 index 0000000..b132a8b --- /dev/null +++ b/MONTHLY-Sales_per_subline.sql @@ -0,0 +1,39 @@ +SET NAMES 'utf8'; + +SELECT + RIGHT(l.id_linea,2) AS Product_Line_code, + l.descripcion AS Product_line, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + USING ( id_item ) + JOIN linea l + ON ( l.id_linea = i.id_linea + AND l.tipo = i.tipo ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,1) = 'F') + AND EXTRACT(YEAR_MONTH FROM dv.fecha) = @MES + +GROUP BY + l.id_linea + +ORDER BY + Amount_Kg DESC diff --git a/MONTHLY-clientes_con_cupo_o_cartera.sql b/MONTHLY-clientes_con_cupo_o_cartera.sql new file mode 100644 index 0000000..b5b6ec7 --- /dev/null +++ b/MONTHLY-clientes_con_cupo_o_cartera.sql @@ -0,0 +1,37 @@ +-- Todos los clientes con cupo asignado +-- Usa cartera_historico, a la fecha de ultimo dia del mes anterior + +-- Ejecutar asi: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < $HOME/sql/MONTHLY-clientes_con_cupo_o_cartera.sql > $HOME/clientes_con_cupo_o_cartera_$(date --date="last month" +%Y-%m).csv + +-- Error: el cupo se asigna por agencia (sucursal del cliente), pero los +-- documentos de cartera no vienen con agencia, por lo que clientes con +-- agencias ven su cartera multiplicada. + +SELECT + ca.id_sucursal AS Sucursal, + cl.id_cliente AS NIT, + cl.nombre_cliente AS Nombre_cliente, + ca.id_agencia AS Sucursal_cliente, + TRIM( ca.direccion ) AS Direccion, + z.descripcion AS Ciudad, + TRIM( ca.telefono ) AS Telefono, + ca.cupo AS Cupo + +FROM + cliente cl + JOIN cliente_has_agencia ca + ON ( cl.id_cliente = ca.id_cliente ) + JOIN cliente_has_sucursal cs + ON ( cs.id_sucursal = ca.id_sucursal + AND cs.id_cliente = ca.id_cliente ) + LEFT JOIN zona z + ON ( ca.ciudad = z.id_zona ) + +GROUP BY + Sucursal,NIT,Sucursal_cliente + +ORDER BY + Sucursal,cl.nombre_cliente + +AND ca.cupo > 100 diff --git a/MONTHLY-clientes_con_cupo_por_agencia.sql b/MONTHLY-clientes_con_cupo_por_agencia.sql new file mode 100644 index 0000000..527cd7b --- /dev/null +++ b/MONTHLY-clientes_con_cupo_por_agencia.sql @@ -0,0 +1,35 @@ +-- Todos los clientes con cupo asignado + +-- Ejecutar asi: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < $HOME/sql/MONTHLY-clientes_con_cupo.sql > $HOME/clientes_con_cupo_$(date --date="last month" +%Y-%m).csv + +-- No incluye cartera, porque el cupo se asigna por agencia (sucursal del +-- cliente), pero los documentos de cartera no vienen con agencia, por lo que +-- clientes con agencias verían su cartera multiplicada. + +SELECT + ca.id_sucursal AS Sucursal, + cl.id_cliente AS NIT, + cl.nombre_cliente AS Nombre_cliente, + ca.id_agencia AS Sucursal_cliente, + TRIM( ca.direccion ) AS Direccion, + z.descripcion AS Ciudad, + TRIM( ca.telefono ) AS Telefono, + ca.cupo AS Cupo + +FROM + cliente cl + JOIN cliente_has_agencia ca + ON ( cl.id_cliente = ca.id_cliente ) + JOIN cliente_has_sucursal cs + ON ( cs.id_sucursal = ca.id_sucursal + AND cs.id_cliente = ca.id_cliente ) + LEFT JOIN zona z + ON ( ca.ciudad = z.id_zona ) + +WHERE + ca.cupo > 100000 + AND cl.id_cliente > 999 + +ORDER BY + Sucursal,Nombre_Cliente diff --git a/MONTHLY-clientes_con_cupo_por_nit.sql b/MONTHLY-clientes_con_cupo_por_nit.sql new file mode 100644 index 0000000..20e35fb --- /dev/null +++ b/MONTHLY-clientes_con_cupo_por_nit.sql @@ -0,0 +1,38 @@ +-- Todos los clientes con cupo asignado + +-- Ejecutar asi: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < $HOME/sql/MONTHLY-clientes_con_cupo.sql > $HOME/clientes_con_cupo_$(date --date="last month" +%Y-%m).csv + +-- No incluye cartera, porque el cupo se asigna por agencia (sucursal del +-- cliente), pero los documentos de cartera no vienen con agencia, por lo que +-- clientes con agencias verían su cartera multiplicada. + +SELECT + ca.id_sucursal AS Sucursal, + cl.id_cliente AS NIT, + cl.nombre_cliente AS Nombre_cliente, + COUNT(ca.id_agencia) AS Numero_sucursales_cliente, + MAX(ca.cupo) AS Cupo + +FROM + cliente cl + JOIN cliente_has_agencia ca + ON ( cl.id_cliente = ca.id_cliente ) + JOIN cliente_has_sucursal cs + ON ( cs.id_sucursal = ca.id_sucursal + AND cs.id_cliente = ca.id_cliente ) + LEFT JOIN zona z + ON ( ca.ciudad = z.id_zona ) + + +WHERE + cl.id_cliente > 999 + +GROUP BY + Sucursal,NIT + +HAVING + Cupo >= 100000 + +ORDER BY + Sucursal,Nombre_Cliente diff --git a/MONTHLY-count-clientes_con_cupo_o_cartera.sql b/MONTHLY-count-clientes_con_cupo_o_cartera.sql new file mode 100644 index 0000000..21ad2c8 --- /dev/null +++ b/MONTHLY-count-clientes_con_cupo_o_cartera.sql @@ -0,0 +1,21 @@ +-- Numero de clientes con cupo asignado, tengan o no cartera +-- Usa cartera_historico, a la fecha de ultimo dia del mes anterior + +-- Ejecutar asi: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < $HOME/sql/MONTHLY-count-clientes_con_cupo_o_cartera.sql + +SELECT + COUNT(DISTINCT(CONCAT(ca.id_sucursal,ca.id_cliente))) +FROM + cliente cl + JOIN cliente_has_agencia ca + ON ( cl.id_cliente = ca.id_cliente ) + JOIN cliente_has_sucursal cs + ON ( cs.id_sucursal = ca.id_sucursal + AND cs.id_cliente = ca.id_cliente ) + LEFT JOIN cartera_historico c + ON ( c.id_cliente = cs.id_cliente + AND c.id_sucursal = cs.id_sucursal ) +WHERE + ca.cupo > 1000 + AND EXTRACT(YEAR_MONTH FROM c.fecha_historico) = DATE_FORMAT(LAST_DAY(now() - interval 1 month ),'%Y%m') diff --git a/YEARLY-Customers_per_fiscal_year.sql b/YEARLY-Customers_per_fiscal_year.sql new file mode 100644 index 0000000..20d4156 --- /dev/null +++ b/YEARLY-Customers_per_fiscal_year.sql @@ -0,0 +1,40 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_per_fiscal_year.sql > ../Agofer_Customers_per_year_FY$(date +%Y).csv + +-- Nota: El campo Vendedor solo muestra el de una sucursal + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + vdr.nombre_vendedor AS Sales_Associate, + c.telefono AS Phone, + c.direccion AS Address, + z.descripcion AS City, + se.descripcion AS Sector, + SUM(dvi.valor) AS Net_Sales + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN vendedor vdr + USING ( id_vendedor,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + LEFT JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) + LEFT JOIN zona z + USING ( id_zona ) + +WHERE LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND (dv.id_cliente > 999) + AND dv.fecha >= DATE(CONCAT(YEAR(now())-2,'-10-01')) + AND dv.fecha <= DATE(CONCAT(YEAR(now())-1,'-09-30')) + +GROUP BY Customer_Id + +HAVING Net_Sales > 0 + +ORDER BY Net_Sales DESC diff --git a/YEARLY-Customers_previous-1_calendar_year.sql b/YEARLY-Customers_previous-1_calendar_year.sql new file mode 100644 index 0000000..9a41897 --- /dev/null +++ b/YEARLY-Customers_previous-1_calendar_year.sql @@ -0,0 +1,27 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_previous-1_calendar_year.sql > ../Agofer_Customers_per_year_CY$(date +%Y --date="now - 720 days").csv + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + SUM(dvi.valor) AS Net_Sales + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + +WHERE LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = YEAR(now())-2 + +GROUP BY Customer_Id + +-- HAVING Valor > 900000 +HAVING LENGTH(Customer_Id) > 3 + +ORDER BY Net_Sales DESC diff --git a/YEARLY-Customers_previous_calendar_year.sql b/YEARLY-Customers_previous_calendar_year.sql new file mode 100644 index 0000000..c9a0d5a --- /dev/null +++ b/YEARLY-Customers_previous_calendar_year.sql @@ -0,0 +1,29 @@ +-- Clientes consolidados por año con ventas y devoluciones + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Customers_per_calendar_year.sql > ../Agofer_Customers_per_year_CY$(date +%Y --date="last year").csv + +SELECT c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + SUM(dvi.valor) AS Net_Sales + +FROM documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + +WHERE (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = YEAR(now())-1 + +GROUP BY Customer_Id + +HAVING Net_Sales > (5000 * 2392) +AND LENGTH(Customer_Id) > 3 + +ORDER BY Net_Sales DESC diff --git a/YEARLY-Inventory_valuation_per_item.sql b/YEARLY-Inventory_valuation_per_item.sql new file mode 100644 index 0000000..f659ef3 --- /dev/null +++ b/YEARLY-Inventory_valuation_per_item.sql @@ -0,0 +1,32 @@ +-- Costo, existencia y valor consolidados por item, al ultimo dia del año anterior + +SELECT + l.id_linea AS Linea, + i.id_linea AS Sublinea, + i.id_item AS Item, + i.descripcion AS Descripcion, + ROUND(SUM(e.cantidad * e.costo_unidad), 2) AS Costo_promedio, + ROUND(SUM(e.cantidad * e.valor_unidad), 2) AS Valor, + SUM(e.cantidad) AS Stock_UM, + ROUND(SUM(e.cantidad * i.peso), 2) AS Stock_Kg + +FROM + existencia_historico e + JOIN item i + ON ( i.id_item = e.id_item + AND i.id_sucursal = e.id_sucursal ) + LEFT JOIN view_lineas l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) ) + +WHERE + (e.fecha = '2014-12-31') + +GROUP BY + i.id_item + +HAVING + (Stock_UM > 0) + +ORDER BY + Item DESC + diff --git a/YEARLY-Invoices_per_fiscal_year.sql b/YEARLY-Invoices_per_fiscal_year.sql new file mode 100644 index 0000000..f1ff6b7 --- /dev/null +++ b/YEARLY-Invoices_per_fiscal_year.sql @@ -0,0 +1,52 @@ +-- Facturas y devoluciones por año + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Invoices_per_fiscal_year.sql > ../Agofer_Invoices_per_year_FY$(date +%Y).csv + +SELECT + su.nombre_sucursal AS Branch, + dv.fecha AS Date, + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + dv.id_documento AS Sales_Document, + LEFT(dv.id_documento,2) AS Type_of_Document, + c.id_cliente AS Customer_Id, + c.nombre_cliente AS Customer, + vdr.nombre_vendedor AS Sales_Associate, + c.telefono AS Phone, + c.direccion AS Address, + z.descripcion AS City, + se.descripcion AS Sector, + SUM(dvi.valor) AS Net_Sales + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN vendedor vdr + USING ( id_vendedor,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + LEFT JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) + LEFT JOIN zona z + USING ( id_zona ) + +WHERE + LEFT(dv.id_documento,2) RLIKE "C|E|F|D[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND dv.fecha >= '2014-01-01' + AND dv.fecha <= '2014-03-31' + +-- AND dv.fecha >= DATE(CONCAT(YEAR(now())-1,'-10-01')) +-- AND dv.fecha <= DATE(CONCAT(YEAR(now()), '-09-30')) + +GROUP BY + Branch,Customer_Id, Sales_Document + +HAVING + LENGTH(Customer_Id) > 3 + +ORDER BY + Net_Sales DESC diff --git a/YEARLY-Invoices_per_fiscal_year_2012.sql b/YEARLY-Invoices_per_fiscal_year_2012.sql new file mode 100644 index 0000000..afb0717 --- /dev/null +++ b/YEARLY-Invoices_per_fiscal_year_2012.sql @@ -0,0 +1,39 @@ +-- Facturas y devoluciones por año + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Invoices_per_fiscal_year.sql > ../Agofer_Invoices_per_year_FY$(date +%Y).csv + +SELECT + su.nombre_sucursal AS Branch, + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + COUNT(DISTINCT dv.id_documento) AS Number_of_Documents, + LEFT(dv.id_documento,1) AS Type_of_Document, + SUM(dvi.valor) AS Net_Sales + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + USING ( id_documento,id_sucursal ) + LEFT JOIN vendedor vdr + USING ( id_vendedor,id_sucursal ) + LEFT JOIN cliente_has_sucursal c + USING ( id_cliente,id_sucursal ) + JOIN sucursal su + USING ( id_sucursal ) + LEFT JOIN sector se + ON ( se.id_sector=LEFT(c.id_sector,2) ) + LEFT JOIN zona z + USING ( id_zona ) + +WHERE + dv.fecha >= DATE('2011-10-01') + AND dv.fecha <= DATE('2012-09-30') + AND LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND LENGTH(c.id_cliente) > 3 + +GROUP BY + Branch, Month, Type_of_Document + +ORDER BY + Net_Sales DESC diff --git a/YEARLY-Sales_per_line.sql b/YEARLY-Sales_per_line.sql new file mode 100644 index 0000000..17de149 --- /dev/null +++ b/YEARLY-Sales_per_line.sql @@ -0,0 +1,33 @@ +SELECT + l.id_linea_analisis AS CodLinea1, + l.linea_analisis AS Linea1, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + JOIN view_lineas l + ON ( l.id_linea = LEFT( i.id_linea, 2 ) ) + +WHERE + LEFT( dv.id_documento, 2 ) RLIKE "C|E|F|D[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND YEAR(dv.fecha) = 2013 + +GROUP BY + l.id_linea_analisis + +ORDER BY + Amount_Kg DESC diff --git a/YEARLY-Sales_per_month-odoo.sql b/YEARLY-Sales_per_month-odoo.sql new file mode 100644 index 0000000..e228ff4 --- /dev/null +++ b/YEARLY-Sales_per_month-odoo.sql @@ -0,0 +1,38 @@ +-- Ventas (Facturas menos devoluciones) por año, mes a mes. + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_odoo.cnf < YEARLY-Sales_per_month-odoo.sql + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + dv.id_cliente AS Nit, + c.nombre_cliente AS Cliente, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + LEFT JOIN cliente c + USING ( id_cliente ) + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento ) + JOIN item i + ON ( dvi.id_item = i.id_item ) + +WHERE + LEFT( dv.id_documento, 2 ) RLIKE "E|F|D[^0-9MPBC]" + AND NOT (dv.id_cliente LIKE "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) >= 201410 + AND EXTRACT(YEAR_MONTH FROM dv.fecha) <= 201509 + +GROUP BY + Month,Nit + +ORDER BY + Month,Nit diff --git a/YEARLY-Sales_per_month.sql b/YEARLY-Sales_per_month.sql new file mode 100644 index 0000000..4da4e2c --- /dev/null +++ b/YEARLY-Sales_per_month.sql @@ -0,0 +1,45 @@ +-- Ventas (Facturas menos devoluciones) por año, mes a mes. + +-- Instrucciones de uso: +-- mysql --defaults-file=$HOME/.my_comercial_consultas.cnf < YEARLY-Sales_per_month.sql > ../Agofer_Sales_per_year_FY$(date +%Y).csv + +SELECT + EXTRACT(YEAR_MONTH FROM dv.fecha) AS Month, + dv.id_cliente AS Nit, + c.nombre_cliente AS Cliente, + SUM(dvi.valor) AS Net_Sales, + ROUND( + SUM( + dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1)) + ), + 2 + ) AS Amount_Kg, + SUM(dvi.costo) AS Cost_of_goods_sold + +FROM + documento_ventas dv + LEFT JOIN cliente c + USING ( id_cliente ) + JOIN documento_ventas_has_item dvi + ON ( dv.id_documento = dvi.id_documento + AND dv.id_sucursal = dvi.id_sucursal ) + JOIN item i + ON ( dvi.id_item = i.id_item + AND dvi.id_sucursal = i.id_sucursal ) + +WHERE + (LEFT(dv.id_documento,2) = 'DV' OR + LEFT(dv.id_documento,2) = 'EF' OR + LEFT(dv.id_documento,2) = 'EI' OR + LEFT(dv.id_documento,2) = 'AI' OR + LEFT(dv.id_documento,2) = 'CF' OR + LEFT(dv.id_documento,1) = 'F') + AND NOT (dv.id_cliente LIKE "999") + AND EXTRACT(YEAR_MONTH FROM dv.fecha) >= 201901 + AND EXTRACT(YEAR_MONTH FROM dv.fecha) <= 201912 + +GROUP BY + Month,Nit + +ORDER BY + Month,Nit