{===================================================== FUNCION : RELACION ORDENES TRANSPORTADAS OBJETIVO : *************************** PROGRAMADOR : Juan Soto FECHA : 17/05/2021 =====================================================} SCHEMA "smarmotech" GLOBALS "prprgb000.4gl" DEFINE datos RECORD fecha_inicial DATE, fecha_final DATE END RECORD, pcompanias RECORD LIKE companias.*, valorOrden FLOAT DEFINE despachos RECORD desc_tranporte LIKE vetb00051.descripcion, orden LIKE iptb00006.num_oc, movimiento LIKE iptb00006.cod_mov, conduce LIKE iptb00006.num_doc, orden_externa VARCHAR(50), cliente LIKE vetb00050.nombre_cliente, placa LIKE iptb00006.placa, tipo_orden VARCHAR(50), bodega LIKE intb00009.descripcion, direccion LIKE vetb00050.direccion_cliente, telefono,celular VARCHAR(50), ubicacion,referencia_dir,pais,provincia VARCHAR(100), cantidad_bultos INT, contacto_obra,telefono_contacto_obra,tipo_empaque 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 'prfmrp020' 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 b.bodega,d.tipo_orden,b.num_oc, b.num_doc BEFORE CONSTRUCT CALL bodegas('1') ON ACTION mostrar LET selec = " select distinct cast(a.cod_transp as varchar(4))+'-'+cast(a.sec_transp as varchar(10))+' '+ a.nombre,b.num_oc,b.cod_mov,b.num_doc,d.orden_sustituta,c.nombre,b.placa,d.tipo_orden, k1.descripcion,d.direccion,d.telefono,d.fax,d.ubicacion,d.observacion, k2.nombre,k3.nombre_provincia,k4.cantidad_bultos,d.contacto_obra, d.telefono_contacto_obra,k4.tipo from vetb00015 a,iptb00006 b,vetb00004 c,prtb00012 d LEFT OUTER JOIN iptb00056 k4 ON k4.num_oc = d.num_oc,iptb00005 k,intb00009 k1, vetb00017 k2,vetb00020 k3 WHERE (a.cod_transp = b.cod_transp and a.sec_transp = b.sec_transp) and (d.tipo_cliente = c.tipo_cliente and d.sec_cliente = c.sec_cliente) and (b.cod_mov = k.cod_mov) and k.control_clientes ='SI' AND (b.bodega = k1.cod_bodega) AND c.codigo = k3.codigo AND c.codigo = k2.codigo AND C.cod_provincia = k3.cod_provincia AND (b.fecha between '",datos.fecha_inicial USING "mm/dd/yyyy","' and '",datos.fecha_final USING "mm/dd/yyyy","') and b.status_t is null and b.num_oc = d.num_oc and ",criterio clipped PREPARE comando FROM selec DECLARE reservas CURSOR FOR comando LET idx = 1 FOREACH reservas INTO despachos.* IF idx = 1 THEN LET r_filename ="prprrp020.4rp" 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 START REPORT reserva_rpt TO XML HANDLER HANDLER END IF LET idx = 2 END IF OUTPUT TO REPORT reserva_rpt(despachos.*) END FOREACH IF idx > 1 THEN FINISH REPORT reserva_rpt 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 ON ACTION CANCEL CALL msg(2) LET INT_FLAG = FALSE EXIT PROGRAM END DIALOG CLOSE WINDOW HOME_FRM END FUNCTION REPORT reserva_rpt(x) DEFINE x RECORD desc_tranporte LIKE vetb00051.descripcion, orden LIKE iptb00006.num_oc, movimiento LIKE iptb00006.cod_mov, conduce LIKE iptb00006.num_doc, orden_externa VARCHAR(50), cliente LIKE vetb00050.nombre_cliente, placa LIKE iptb00006.placa, tipo_orden VARCHAR(50), bodega LIKE intb00009.descripcion, direccion LIKE vetb00050.direccion_cliente, telefono,celular VARCHAR(50), ubicacion,referencia_dir,pais,provincia VARCHAR(100), cantidad_bultos INT, contacto_obra,telefono_contacto_obra,tipo_empaque VARCHAR(100) 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), encabezado2 STRING ORDER BY 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 = "" ON EVERY ROW LET fecha_reporte = CURRENT LET dir_cliente = x.direccion CLIPPED,',','(',x.provincia CLIPPED,')' LET rango_fecha = datos.fecha_inicial,'--',datos.fecha_final LET cond_mov = x.bodega,'-',x.conduce USING "<<<<<<",'-', x.movimiento USING "<<<<<" LET Scosto = 'RD$',vOrden USING "<<<,<<<.##" CLIPPED LET encabezado2 = "Rango de fechas:",rango_fecha CLIPPED," Reporte Mercancia Despachada por Transportista ",fecha_Reporte PRINTX cond_mov, x.cliente, dir_cliente, x.placa, pcompanias.nombre, fecha_reporte, rango_fecha,x.orden,x.direccion,x.telefono,x.referencia_dir, x.cantidad_bultos, x.movimiento,encabezado2,x.contacto_obra,x.telefono_contacto_obra AFTER GROUP OF x.orden LET total_orden = GROUP SUM(vOrden) LET ScostoT = total_orden USING "<<<,<<<.##" CLIPPED PRINTX ScostoT END REPORT