280 lines
12 KiB
Plaintext
280 lines
12 KiB
Plaintext
{=====================================================
|
|
FUNCION : REPORTE DESPACHO TRANSPORTE
|
|
OBJETIVO : ***************************
|
|
PROGRAMADOR : Valentin Rodriguez
|
|
FECHA :
|
|
=====================================================}
|
|
SCHEMA "smarmotech"
|
|
GLOBALS "prprgb000.4gl"
|
|
|
|
DEFINE datos RECORD
|
|
fecha_inicial DATE,
|
|
fecha_final DATE,
|
|
tiporeporte VARCHAR(50)
|
|
END RECORD,
|
|
pcompanias RECORD LIKE companias.*,
|
|
valorOrden FLOAT
|
|
|
|
DEFINE despachos RECORD
|
|
orden LIKE iptb00006.num_oc,
|
|
cotizacion LIKE vetb00050.cotizacion_no,
|
|
conduce LIKE iptb00006.num_doc,
|
|
movimiento LIKE iptb00006.cod_mov,
|
|
bodega LIKE intb00009.descripcion,
|
|
cliente LIKE vetb00050.nombre_cliente,
|
|
direccion LIKE vetb00050.direccion_cliente,
|
|
provincia LIKE vetb00020.nombre_provincia,
|
|
conductor LIKE vetb00015.nombre,
|
|
placa LIKE iptb00006.placa,
|
|
precio LIKE vetb00051.precio,
|
|
cantidad LIKE vetb00051.cantidad,
|
|
tasa LIKE cgtb00084.tasa,
|
|
descuento LIKE vetb00051.porc_desc,
|
|
moneda CHAR(4),
|
|
desc_tranporte LIKE vetb00051.descripcion,
|
|
factura INT
|
|
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 'prfmrp019'
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
INPUT BY NAME datos .*
|
|
|
|
--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_inicial IS NULL AND DATOS.fecha_final IS NOT NULL THEN
|
|
CALL fgl_winmessage("INFO", "SI ESPECIFICA UN RANGO DE FECHA DEBE INDICAR FECHA INICIAL", "INFO")
|
|
NEXT FIELD fecha_inicial
|
|
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
|
|
END INPUT
|
|
CONSTRUCT BY NAME criterio ON
|
|
a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, x.tipo_cliente,x.sec_cliente,a.num_oc, a.num_doc
|
|
ON ACTION mostrar
|
|
LET selec =
|
|
" select a.num_oc, g.cotizacion_no, a.num_doc, a.cod_mov, b.descripcion, x.nombre, RTRIM(x1.calle)+' '+x1.urbanizacion, h.descrip,
|
|
cast(e.cod_transp as char(4))+'-'+cast(e.sec_transp as char(10))+' '+e.nombre, isnull(a.placa, 'NO PLACA'), sum(f.precio*f.cantidad),sum(f.cantidad), k.tasa,
|
|
sum((f.precio*f.cantidad)*(f.cantidad_2/100)),m.simbolo,x2.descrip_esp
|
|
from iptb00006 a
|
|
inner join intb00009 b ON b.cod_bodega = a.bodega
|
|
inner join iptb00002 x2 ON x2.cod_n = a.cod_n and x2.cod_grupo = a.cod_grupo and x2.cod_tipo = a.cod_tipo and x2.cod_sec = a.cod_sec
|
|
inner join vetb00004 x ON x.tipo_cliente = a.cod_sp AND x.sec_cliente = a.cod_sp_sec
|
|
inner join vetb00005 x1 ON x.tipo_cliente = x1.tipo_cliente and x.sec_cliente = x1.sec_cliente
|
|
inner join vetb00002 g ON g.orden = a.num_oc and g.status_t is null
|
|
inner join vetb00003 f on a.cod_n = f.cod_n and a.cod_grupo = f.cod_grupo and a.cod_tipo = f.cod_tipo and a.cod_sec = f.cod_sec and
|
|
f.factura = g.factura and f.factura = a.factura AND f.status_t is null
|
|
|
|
inner join vetb00061 m on g.ventas = m.ventas
|
|
LEFT OUTER JOIN vetb00015 e on a.cod_transp = e.cod_transp and a.sec_transp = e.sec_transp and e.status_t is null
|
|
LEFT OUTER JOIN vetb00008 h on h.cod_zona = x.cod_zona and h.status_t is null
|
|
LEFT OUTER join cgtb00084 k on x.tipo_cliente = k.tipo_cliente and g.ventas = k.ventas and k.ano = ",YEAR(datos.fecha_final),
|
|
" and k.mes = ",MONTH(datos.fecha_final),
|
|
|
|
" where
|
|
a.fecha BETWEEN '",datos.fecha_inicial USING "MM/DD/YYYY","' and '",datos.fecha_final USING "MM/DD/YYYY",
|
|
"' and ",
|
|
" a.cod_n in (25) and a.cod_mov in (30,31,55) and ", criterio CLIPPED,
|
|
|
|
" group by a.num_oc, g.cotizacion_no, a.num_doc, a.cod_mov, b.descripcion, x.nombre, RTRIM(x1.calle)+' '+x1.urbanizacion, h.descrip, e.nombre,
|
|
a.placa, k.tasa, m.simbolo,x2.descrip_esp
|
|
order by a.num_oc "
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE reservas CURSOR FOR comando
|
|
|
|
LET idx = 1
|
|
FOREACH reservas INTO despachos.*
|
|
|
|
LET valorOrden = (despachos.precio - despachos.descuento)*despachos.tasa
|
|
|
|
IF idx = 1 THEN
|
|
|
|
IF datos.tiporeporte = 'DE' THEN
|
|
|
|
LET r_filename ="prprrp019.4rp"
|
|
|
|
ELSE
|
|
|
|
LET r_filename ="prprrp019a.4rp"
|
|
|
|
END IF
|
|
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
|
|
IF datos.tiporeporte = "DE" THEN
|
|
START REPORT reserva_rpt TO XML HANDLER HANDLER
|
|
ELSE
|
|
START REPORT resumen TO XML HANDLER HANDLER
|
|
END IF
|
|
END IF
|
|
LET idx = 2
|
|
END IF
|
|
IF datos.tiporeporte = 'DE' THEN
|
|
OUTPUT TO REPORT reserva_rpt(despachos.*, datos.*, valorOrden)
|
|
ELSE
|
|
|
|
OUTPUT TO REPORT resumen(despachos.*)
|
|
END IF
|
|
END FOREACH
|
|
|
|
IF idx > 1 THEN
|
|
IF datos.tiporeporte = "DE" THEN
|
|
FINISH REPORT reserva_rpt
|
|
ELSE
|
|
FINISH REPORT resumen
|
|
END IF
|
|
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
|
|
END CONSTRUCT
|
|
#"file:///e:/marmotechc/imagenes/genero_logo.png"
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
CLOSE WINDOW HOME_FRM
|
|
END FUNCTION
|
|
|
|
REPORT reserva_rpt(x, y, vOrden)
|
|
|
|
DEFINE x RECORD
|
|
orden LIKE iptb00006.num_oc,
|
|
cotizacion LIKE vetb00050.cotizacion_no,
|
|
conduce LIKE iptb00006.num_doc,
|
|
movimiento LIKE iptb00006.cod_mov,
|
|
bodega LIKE intb00009.descripcion,
|
|
cliente LIKE vetb00050.nombre_cliente,
|
|
direccion LIKE vetb00050.direccion_cliente,
|
|
provincia LIKE vetb00020.nombre_provincia,
|
|
conductor LIKE vetb00015.nombre,
|
|
placa LIKE iptb00006.placa,
|
|
precio LIKE vetb00051.precio,
|
|
cantidad LIKE vetb00051.cantidad,
|
|
tasa LIKE cgtb00084.tasa,
|
|
descuento LIKE vetb00051.porc_desc,
|
|
moneda CHAR(4),
|
|
desc_tranporte LIKE vetb00051.descripcion,
|
|
factura INT
|
|
END RECORD
|
|
|
|
DEFINE y RECORD
|
|
fecha_inicial DATE,
|
|
fecha_final DATE,
|
|
tiporeporte VARCHAR(50)
|
|
END RECORD,
|
|
fecha_reporte, rango_fecha CHAR(30),
|
|
total_orden, vOrden FLOAT,
|
|
dir_cliente VARCHAR(100),
|
|
cond_mov CHAR(35),
|
|
Scosto VARCHAR(20),
|
|
ScostoT VARCHAR(20)
|
|
|
|
ORDER BY x.orden,x.desc_tranporte
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.desc_tranporte
|
|
PRINTX x.desc_tranporte
|
|
|
|
BEFORE GROUP OF x.orden
|
|
LET total_orden = 0
|
|
LET ScostoT = ""
|
|
PRINTX x.orden, x.movimiento
|
|
|
|
ON EVERY ROW
|
|
LET fecha_reporte = CURRENT
|
|
LET dir_cliente = x.direccion CLIPPED,',','(',x.provincia CLIPPED,')'
|
|
LET rango_fecha = y.fecha_inicial,'--',y.fecha_final
|
|
LET cond_mov = x.bodega,'-',x.conduce USING "<<<<<<",'-',x.factura USING "<<<<<<<",
|
|
x.movimiento USING "<<<<<" CLIPPED,"-Tasa:",x.tasa USING "<<.##"
|
|
LET Scosto = 'RD$',vOrden USING "<<<,<<<.##" CLIPPED
|
|
|
|
PRINTX cond_mov, x.cliente, dir_cliente, x.conductor, x.placa,
|
|
Scosto, x.moneda, vOrden, pcompanias.nombre, fecha_reporte, rango_fecha
|
|
|
|
AFTER GROUP OF x.orden
|
|
LET total_orden = GROUP SUM(vOrden)
|
|
LET ScostoT = x.moneda,total_orden USING "<<<,<<<.##" CLIPPED
|
|
PRINTX ScostoT
|
|
END REPORT
|
|
|
|
REPORT resumen(x)
|
|
|
|
DEFINE x RECORD
|
|
orden LIKE iptb00006.num_oc,
|
|
cotizacion LIKE vetb00050.cotizacion_no,
|
|
conduce LIKE iptb00006.num_doc,
|
|
movimiento LIKE iptb00006.cod_mov,
|
|
bodega LIKE intb00009.descripcion,
|
|
cliente LIKE vetb00050.nombre_cliente,
|
|
direccion LIKE vetb00050.direccion_cliente,
|
|
provincia LIKE vetb00020.nombre_provincia,
|
|
conductor LIKE vetb00015.nombre,
|
|
placa LIKE iptb00006.placa,
|
|
precio LIKE vetb00051.precio,
|
|
cantidad LIKE vetb00051.cantidad,
|
|
tasa LIKE cgtb00084.tasa,
|
|
descuento LIKE vetb00051.porc_desc,
|
|
moneda CHAR(4),
|
|
desc_tranporte LIKE vetb00051.descripcion,
|
|
factura INT
|
|
END RECORD,
|
|
mvalor,tvalor,bvalor,ttvalor FLOAT,
|
|
fecha_reporte,rango_fecha STRING
|
|
|
|
|
|
ORDER BY x.bodega,x.desc_tranporte
|
|
FORMAT
|
|
FIRST PAGE HEADER
|
|
LET fecha_reporte = CURRENT
|
|
PRINTX fecha_reporte,pcompanias.nombre,rango_Fecha
|
|
AFTER GROUP OF x.bodega
|
|
LET rango_fecha = datos.fecha_inicial,'--',datos.fecha_final
|
|
LET bvalor = GROUP SUM(x.precio*x.cantidad)
|
|
PRINTX bvalor,x.bodega
|
|
|
|
AFTER GROUP OF x.desc_tranporte
|
|
LET tvalor = GROUP SUM(x.precio*x.cantidad)
|
|
PRINTX x.desc_tranporte,tvalor
|
|
|
|
|
|
ON LAST ROW
|
|
LET ttvalor = SUM(x.precio*x.cantidad)
|
|
PRINTX ttvalor
|
|
|
|
END REPORT
|