260 lines
13 KiB
Plaintext
260 lines
13 KiB
Plaintext
{=====================================================
|
|
FUNCION : VENTAS POR EQUIPO DE VENTAS
|
|
OBJETIVO : ***************************
|
|
PROGRAMADOR : Valentin Rodriguez
|
|
FECHA : 15/02/2019
|
|
=====================================================}
|
|
SCHEMA "smarmotech"
|
|
|
|
DEFINE datos RECORD
|
|
fecha_inicial DATE,
|
|
fecha_final DATE
|
|
END RECORD,
|
|
usuarios VARCHAR(20),
|
|
clave VARCHAR(20) ,
|
|
selec STRING,
|
|
pcompanias RECORD LIKE companias.*,
|
|
idx int,tipoReporte VARCHAR(30),
|
|
visualiza CHAR(1)
|
|
|
|
DEFINE ventasArea RECORD
|
|
equipo LIKE seg0008.nombre,
|
|
producto LIKE iptb00002.descrip_esp,
|
|
cantidad_vendida FLOAT,
|
|
valor FLOAT,
|
|
CantidadDevueta FLOAT,
|
|
valorDevuelto FLOAT,
|
|
vendedor VARCHAR(100)
|
|
END RECORD
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CONNECT TO "smarmotech" USER usuarios USING clave
|
|
SELECT * INTO pcompanias.* FROM companias
|
|
CALL despachoTransporte()
|
|
END MAIN
|
|
|
|
FUNCTION despachoTransporte()
|
|
|
|
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
|
|
r_filename STRING, -- filename of Report Design Document including .4rp extension
|
|
r_output STRING, -- output format option
|
|
preview INTEGER, -- TRUE/FALSE, to set preview option
|
|
criterio STRING
|
|
|
|
OPEN WINDOW HOME_FRM WITH FORM 'vefmrp054'
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
INPUT BY NAME datos .*,tipoReporte
|
|
AFTER FIELD fecha_inicial
|
|
IF datos.fecha_inicial IS NULL THEN
|
|
CALL fgl_winmessage("INFO", "DEBE INDICAR UNA FECHA INICIAL DE BUSQUEDA", "INFO")
|
|
NEXT FIELD fecha_inicial
|
|
END IF
|
|
|
|
AFTER FIELD fecha_final
|
|
IF datos.fecha_final IS NULL THEN
|
|
CALL fgl_winmessage("INFO", "DEBE INDICAR UNA FECHA FINAL DE BUSQUEDA", "INFO")
|
|
NEXT FIELD fecha_final
|
|
END IF
|
|
|
|
IF datos.fecha_final < datos.fecha_inicial THEN
|
|
CALL fgl_winmessage("INFO", "LA FECHA FINAL DEBE SER MAS RECIENTE A LA INICIAL", "INFO")
|
|
NEXT FIELD fecha_final
|
|
END IF
|
|
AFTER INPUT
|
|
DISPLAY "DATO ",tipoReporte
|
|
END INPUT
|
|
|
|
CONSTRUCT criterio ON a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, c.depto,x.num_emp
|
|
FROM cod_n,cod_grupo,cod_tipo,cod_sec,equipos,kvendedor
|
|
BEFORE CONSTRUCT
|
|
CALL cequipos()
|
|
CALL cvendedor(usuarios)
|
|
ON ACTION mostrar
|
|
|
|
LET selec = "
|
|
select '('+cast(d.depto as char(5))+')'+d.nombre , '('+cast(a.cod_n as varchar(5))+'-'+
|
|
cast(a.cod_grupo as varchar(5))+'-'+cast(a.cod_tipo as varchar(5))+'-'+
|
|
cast(a.cod_sec as varchar(5))+')' +' '+ ISNULL(e.descrip_esp,' '),
|
|
SUM(A.CANTIDAD),
|
|
SUM((a.cantidad * a.precio) *f.tasa)-SUM((a.cantidad * a.precio) * (a.cantidad_2 / 100)*f.tasa),
|
|
'0', '0','('+CAST(x.num_emp as varchar(10))+')'+ISNULL(RTRIM(x.nom1_emp),' ')+' '+RTRIM(ISNULL(x.apell1_emp,' '))
|
|
FROM VETB00003 as a
|
|
INNER JOIN VETB00002 b on a.factura = b.factura
|
|
INNER JOIN vetb00061 h on b.ventas = h.ventas
|
|
INNER JOIN seg0000 c on b.sec_vend = c.sec_vend
|
|
INNER JOIN prdtable g on b.fecha_factura BETWEEN g.fecha_inicio AND g.fecha_corte
|
|
INNER JOIN cgtb00084 f on b.ventas = f.ventas AND b.tipo_cliente = f.tipo_cliente and f.mes = g.mes and f.ano = g.ano
|
|
inner join seg0008 d on c.depto = d.depto
|
|
inner join iptb00002 e on a.cod_n = e.cod_n AND a.cod_grupo = e.cod_grupo AND a.cod_tipo = e.cod_tipo AND a.cod_sec = e.cod_sec
|
|
inner join iptb00020 i on a.cod_n = i.cod_n
|
|
inner join adtb00003 x on x.num_emp = b.sec_vend
|
|
where " , criterio CLIPPED, " and ","
|
|
b.fecha_factura between '", datos.fecha_inicial USING "mm/dd/yyyy" , "' and '",datos.fecha_final USING "mm/dd/yyyy","' and
|
|
f.mes = g.mes AND f.ano = g.ano and
|
|
b.status_t IS NULL
|
|
group by '('+cast(d.depto as char(5))+')'+d.nombre, e.descrip_esp, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec,x.num_emp,x.nom1_emp,x.apell1_emp
|
|
union
|
|
|
|
SELECT '('+cast(d.depto as char(5))+')'+d.nombre, '('+cast(a.cod_n as varchar(5))+'-'+
|
|
cast(a.cod_grupo as varchar(5))+'-'+cast(a.cod_tipo as varchar(5))+'-'+
|
|
cast(a.cod_sec as varchar(5))+')' +' '+ ISNULL(e.descrip_esp,' '),
|
|
'0', '0',
|
|
SUM(q.cantidad_2) ,
|
|
SUM((q.cantidad_2 * a.precio) *f.tasa)-SUM((q.cantidad_2 * a.precio) * (a.cantidad_2 / 100)*f.tasa),
|
|
'('+CAST(x.num_emp as varchar(10))+')'+ISNULL(RTRIM(x.nom1_emp),' ')+' '+ISNULL(RTRIM(x.apell1_emp),' ')
|
|
FROM
|
|
iptb00006 AS q INNER JOIN
|
|
vetb00002 AS x3 on x3.factura = q.fact_no and x3.tipo_cliente = q.cod_sp and x3.sec_cliente = q.cod_sp_sec
|
|
INNER JOIN
|
|
prdtable AS g ON q.fecha BETWEEN g.fecha_inicio AND g.fecha_corte
|
|
INNER JOIN
|
|
cgtb00084 AS f ON x3.ventas = f.ventas AND q.cod_sp = f.tipo_cliente AND
|
|
f.mes = g.mes and f.ano = g.ano
|
|
INNER JOIN
|
|
vetb00003 AS a ON q.area = a.area AND q.cod_n = a.cod_n AND q.cod_grupo = a.cod_grupo AND
|
|
q.cod_tipo = a.cod_tipo AND q.cod_sec = a.cod_sec AND a.factura = x3.factura INNER JOIN
|
|
iptb00002 AS e ON a.cod_n = e.cod_n AND a.cod_grupo = e.cod_grupo AND a.cod_tipo = e.cod_tipo AND a.cod_sec = e.cod_sec INNER JOIN
|
|
iptb00020 AS i ON a.cod_n = i.cod_n AND a.cod_n = i.cod_n AND x3.factura = q.factura AND x3.factura = a.factura INNER JOIN
|
|
cctb00001 AS p ON q.cod_mov = p.banco AND q.num_doc = p.num_cheque AND q.cod_sp = p.tipo_cliente AND
|
|
q.cod_sp_sec = p.sec_cliente AND x3.factura = p.aplica_a and p.tipo_cliente = x3.tipo_cliente and
|
|
p.sec_cliente = x3.sec_cliente
|
|
INNER JOIN
|
|
vetb00061 AS h ON x3.ventas = h.ventas INNER JOIN
|
|
seg0000 c on p.cod_emp_sec = c.sec_vend INNER JOIN
|
|
seg0008 d on c.depto = d.depto inner join
|
|
adtb00003 x on p.cod_emp_sec = x.num_emp
|
|
WHERE " , criterio CLIPPED, " and ","
|
|
q.cod_mov IN (12, 13) AND
|
|
q.fecha between '", datos.fecha_inicial USING "mm/dd/yyyy" , "' and '",datos.fecha_final USING "mm/dd/yyyy","' and
|
|
p.tipo_doc = 'NC' AND
|
|
q.status_t IS NULL AND
|
|
p.status_t IS NULL
|
|
GROUP BY '('+cast(d.depto as char(5))+')'+d.nombre, e.descrip_esp, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec,x.num_emp,x.nom1_emp,x.apell1_emp
|
|
ORDER BY '('+cast(d.depto as char(5))+')'+d.nombre"
|
|
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE ventasArea_rpt CURSOR FOR comando
|
|
|
|
LET r_filename ="veprrp054.4rp"
|
|
LET idx = 1
|
|
IF tipoReporte = 0 THEN
|
|
LET visualiza=0
|
|
ELSE
|
|
LET visualiza=1
|
|
END IF
|
|
FOREACH ventasArea_rpt INTO ventasArea.*
|
|
IF idx = 1 THEN
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
--LET r_output='SVG'
|
|
LET preview=1
|
|
CALL seleccionarsalida() RETURNING r_output
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
|
|
ELSE
|
|
CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO")
|
|
NEXT FIELD fecha_final
|
|
END IF
|
|
LET idx = 2
|
|
|
|
START REPORT ventasArea_rpt TO XML HANDLER HANDLER
|
|
END IF
|
|
|
|
OUTPUT TO REPORT ventasArea_rpt(ventasArea.*)
|
|
END FOREACH
|
|
|
|
IF idx > 1 THEN
|
|
FINISH REPORT ventasArea_rpt
|
|
END IF
|
|
END CONSTRUCT
|
|
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
CLOSE WINDOW HOME_FRM
|
|
END FUNCTION
|
|
|
|
REPORT ventasArea_rpt(x)
|
|
DEFINE x RECORD
|
|
equipo LIKE seg0008.nombre,
|
|
producto LIKE seg0008.nombre,
|
|
cantidad_vendida FLOAT,
|
|
valor FLOAT,
|
|
CantidadDevueta FLOAT,
|
|
valorDevuelto FLOAT,
|
|
vendedor VARCHAR(100)
|
|
END RECORD,
|
|
ValorNeto DECIMAL(12,2) ,
|
|
totalCantidadVendida DECIMAL(12,2),
|
|
totalValor DECIMAL(12,2),
|
|
totalCantidadDevuelta DECIMAL(12,2),
|
|
totalCantidadNeta DECIMAL(12,2),
|
|
totalValorNeto,total_v,total_v_neto DECIMAL(12,2),
|
|
fecha_reporte char(30),
|
|
totalGenValorNeto,total_v_dev DECIMAL(12,2),
|
|
totalGenCantidadDevuelta,totalValorDevuelto,totalGralValorDev,totalGralvalor DECIMAL(12,2),
|
|
fechas VARCHAR (35)
|
|
ORDER BY x.equipo,x.vendedor
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
LET totalGralValorDev =0
|
|
LET totalGralvalor = 0
|
|
|
|
|
|
BEFORE GROUP OF x.equipo
|
|
|
|
LET totalCantidadVendida = 0
|
|
LET totalValor = 0
|
|
LET totalValorDevuelto=0
|
|
LET totalCantidadDevuelta = 0
|
|
LET totalCantidadNeta = 0
|
|
LET totalValorNeto = 0
|
|
LET fechas = "Desde ",datos.fecha_inicial USING "dd/mm/yyyy"," Hasta ",datos.fecha_final USING "dd/mm/yyyy"
|
|
BEFORE GROUP OF x.vendedor
|
|
LET total_v = 0
|
|
LET total_v_dev =0
|
|
LET total_v_neto = 0
|
|
ON EVERY ROW
|
|
IF x.valor IS NULL THEN
|
|
LET x.valor = 0
|
|
END IF
|
|
LET fecha_reporte = current
|
|
LET ValorNeto = x.valor - x.valorDevuelto
|
|
LET totalGralvalor = x.valor + totalGralvalor
|
|
|
|
PRINTX x.equipo, x.producto, x.cantidad_vendida, x.valor,
|
|
x.CantidadDevueta, x.valorDevuelto, ValorNeto,
|
|
pcompanias.nombre, fecha_reporte,fechas, visualiza
|
|
|
|
AFTER GROUP OF x.equipo
|
|
LET totalCantidadVendida = GROUP SUM(x.cantidad_vendida)
|
|
LET totalValor = GROUP SUM(x.valor)
|
|
LET totalCantidadDevuelta = GROUP SUM(x.CantidadDevueta)
|
|
LET totalCantidadNeta = GROUP SUM(x.valorDevuelto)
|
|
LET totalValorNeto = GROUP SUM(x.valor - x.valorDevuelto)
|
|
LET totalValorDevuelto = GROUP SUM(x.valorDevuelto)
|
|
|
|
PRINTX totalCantidadVendida, totalValor,
|
|
totalCantidadDevuelta, totalCantidadNeta,
|
|
totalValorNeto,totalValorDevuelto
|
|
AFTER GROUP OF x.vendedor
|
|
LET total_v = GROUP SUM(x.valor)
|
|
LET total_v_neto = GROUP SUM(x.valor-x.valorDevuelto)
|
|
LET total_v_dev = GROUP SUM(x.valorDevuelto)
|
|
PRINTX x.vendedor,total_v,total_v_neto,total_v_dev
|
|
|
|
ON LAST ROW
|
|
LET totalGenValorNeto = SUM(x.valor) - sum(x.valorDevuelto)
|
|
LET totalGenCantidadDevuelta = SUM(x.CantidadDevueta)
|
|
LET totalGralValorDev =SUM(x.valorDevuelto)
|
|
#LET totalGralValor = SUM(x.valor)
|
|
PRINTX totalGenValorNeto, totalGenCantidadDevuelta,totalGralValorDev,totalGralValor
|
|
|
|
END REPORT |