{ ============================================================================== PROGRAMA : PRPRRP116 SISTEMA : PRODUCCION OBJETIVO : LISTAR ORDENES DE PRODUCCION AUTOR : JUAN F. SOTO FECHA : SEPTIEMBRE 9, 2010 ============================================================================== } GLOBALS "prprgb000.4gl" DEFINE rango RECORD fecha_inicial DATE, fecha_final DATE END RECORD, porpantalla CHAR(1) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CALL ARG_VAL(4) RETURNING copia CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_compania.* FROM companias a CALL prprrp016() END MAIN FUNCTION prprrp016() DEFINE opcion CHAR(1), cantidad_f,cantidad_o DECIMAL(12,2),cant_orden INTEGER 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 DEFINE busqueda RECORD cotizacion_no INT, fecha CHAR(10), tipo_cliente SMALLINT, sec_cliente INT, nombre_proyecto CHAR(40), direccion_proyecto CHAR(40), telefono_r CHAR(15), nombre CHAR(40), num_oc INT, fecha_oc CHAR(10), fecha_entrega CHAR(10), fecha_cierre CHAR(10), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(40), unidad_med CHAR(4), cantidad DEC(12,3), precio DEC(12,2), cantidad_2 DEC(12,3), cod_mov CHAR(60), fecha_doc CHAR(10), documento INT, status_mov SMALLINT, simbolo CHAR(6), vendedor CHAR(50), monto_cotizacion DEC(12,2), condicion CHAR(30), estado_orden CHAR(20), avance CHAR(20), monto_avance DEC(12,2), fecha_avance CHAR(10), codigo CHAR(25), telefono VARCHAR(15), celular VARCHAR(15), email VARCHAR(80) , contacto LIKE vetb00050.contacto END RECORD, salida,visualiza CHAR(20) OPTIONS PROMPT LINE 23, FORM LINE 8, ERROR LINE 23 OPEN FORM prfmrp016 FROM "prfmrp116" DISPLAY FORM prfmrp016 DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM) CONSTRUCT BY NAME criterio ON a.cotizacion_no,c.num_oc,c.cerrada,a.sec_vend,a.fecha,a.tipo_cliente,a.sec_cliente, a.nombre_cliente,a.telefono_r,d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_Sec END CONSTRUCT INPUT BY NAME salida,visualiza,historico END INPUT ON ACTION ejecutar IF historico = 'N' THEN LET selec = "SELECT a.cotizacion_no,CONVERT(CHAR(10),a.fecha,103),a.tipo_cliente,a.sec_cliente,a.nombre_proyecto,", "a.direccion_proyecto,a.telefono_r, ", "b.nombre,c.num_oc,CONVERT(CHAR(10),c.fecha_oc,103),CONVERT(CHAR(10),c.fecha_entrega,103),CONVERT(CHAR(10),c.fecha_cierre,103),d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,", "e.descrip_esp,e.unidad_med, d.cantidad,d.precio,f.cantidad_2,g.descrip_mov + '('+ cast(g.cod_mov as char(3))+')', ", " CONVERT(CHAR(10),f.fecha,103),f.num_doc,g.status_mov,i.simbolo,'('+CAST(a.sec_vend as char(7))+')'+RTRIM(j.nom1_emp)+' '+RTRIM(j.nom2_emp)+' '+RTRIM(j.apell1_emp), ", " a.total_neto, k.descrip,c.cerrada,a.telefono_o,a.celular,a.email,a.contacto ", "FROM vetb00050 a inner join ", " seg0007 l on l.usuario = SUSER_SNAME() AND a.sec_vend = l.sec_vend inner join ", "vetb00012 k on a.cond_pago = k.cond_pago inner join ", "vetb00004 b on a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente inner join ", "vetb00051 d on a.cotizacion_no = d.cotizacion_no ", " inner join vetb00061 i on a.ventas = i.ventas ", "inner join adtb00003 j on a.sec_vend = j.num_emp ", "left outer join ", "prtb00012 c on a.cotizacion_no = c.cotizacion_no and b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and ", "a.cotizacion_no = c.cotizacion_no and c.status_t is null left outer join ", "iptb00006 f on d.cod_n = f.cod_n and d.cod_grupo = f.cod_grupo and d.cod_tipo = f.cod_tipo and d.cod_Sec = f.cod_Sec and ", "cast(c.num_oc as char(6)) = f.conduce_no and f.cod_mov in (30,31,55,12,13) inner join ", "iptb00002 e on d.cod_n = e.cod_n and d.cod_grupo = e.cod_grupo and d.cod_tipo = e.cod_tipo and d.cod_Sec = e.cod_Sec ", "left outer join ", "iptb00005 g on f.cod_mov = g.cod_mov ", "WHERE ",criterio clipped, " and a.status_t is null and f.status_t is null ", # "ORDER BY a.cotizacion_no,d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_Sec,f.fecha,f.cod_mov,f.num_doc", " UNION ", "SELECT a.cotizacion_no,CONVERT(CHAR(10),a.fecha,103),a.tipo_cliente,a.sec_cliente,a.nombre_proyecto,", "a.direccion_proyecto,a.telefono_r, ", "b.nombre,c.num_oc,CONVERT(CHAR(10),c.fecha_oc,103),CONVERT(CHAR(10),c.fecha_entrega,103),CONVERT(CHAR(10),c.fecha_cierre,103),d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,", "e.descrip_esp,e.unidad_med, d.cantidad,d.precio,f.cantidad,'FACTURA VENTA', ", " CONVERT(CHAR(10),g.fecha_factura,103),f.factura,'3',i.simbolo,'('+CAST(a.sec_vend as char(7))+')'+RTRIM(j.nom1_emp)+' '+RTRIM(j.nom2_emp)+' '+RTRIM(j.apell1_emp), ", " a.total_neto, k.descrip,c.cerrada,a.telefono_o,a.celular,a.email,a.contacto ", "FROM vetb00050 a inner join ", " seg0007 l on l.usuario = SUSER_SNAME() AND a.sec_vend = l.sec_vend inner join ", "vetb00012 k on a.cond_pago = k.cond_pago inner join ", "vetb00004 b on a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente inner join ", "vetb00051 d on a.cotizacion_no = d.cotizacion_no ", " inner join vetb00061 i on a.ventas = i.ventas ", "inner join adtb00003 j on a.sec_vend = j.num_emp ", "left outer join ", "prtb00012 c on a.cotizacion_no = c.cotizacion_no and b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and ", "a.cotizacion_no = c.cotizacion_no left outer join ", "vetb00002 g on ", " g.orden = c.num_oc inner join ", "vetb00003 f on d.cod_n = f.cod_n and d.cod_grupo = f.cod_grupo and d.cod_tipo = f.cod_tipo and d.cod_Sec = f.cod_Sec and ", " f.factura = g.factura inner join ", "iptb00002 e on d.cod_n = e.cod_n and d.cod_grupo = e.cod_grupo and d.cod_tipo = e.cod_tipo and d.cod_Sec = e.cod_Sec ", "WHERE ",criterio clipped, " and a.status_t is null and f.status_t is null " # "ORDER BY a.cotizacion_no,d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_Sec,f.fecha,f.cod_mov,f.num_doc" ELSE LET selec = "SELECT a.cotizacion_no,CONVERT(CHAR(10),a.fecha,103),a.tipo_cliente,a.sec_cliente,a.nombre_proyecto,", "a.direccion_proyecto,a.telefono_r, ", "b.nombre,c.num_oc,CONVERT(CHAR(10),c.fecha_oc,103),CONVERT(CHAR(10),c.fecha_entrega,103),CONVERT(CHAR(10),c.fecha_cierre,103),d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,", "e.descrip_esp,e.unidad_med, d.cantidad,d.precio,f.cantidad_2,g.descrip_mov + '('+ cast(g.cod_mov as char(3))+')', ", " CONVERT(CHAR(10),f.fecha,103),f.num_doc,g.status_mov,i.simbolo,'('+CAST(a.sec_vend as char(7))+')'+RTRIM(j.nom1_emp)+' '+RTRIM(j.nom2_emp)+' '+RTRIM(j.apell1_emp), ", " a.total_neto, k.descrip,c.cerrada,a.telefono_o,a.celular,a.email,a.contacto ", "FROM historicoMTECH.dbo.vetb00050 a inner join ", " historicoMTECH.dbo.vetb00012 k on a.cond_pago = k.cond_pago inner join ", "historicoMTECH.dbo.vetb00004 b on a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente inner join ", "historicoMTECH.dbo.vetb00051 d on a.cotizacion_no = d.cotizacion_no ", " inner join historicoMTECH.dbo.vetb00061 i on a.ventas = i.ventas ", "inner join historicoMTECH.dbo.adtb00003 j on a.sec_vend = j.num_emp ", "left outer join ", "historicoMTECH.dbo.prtb00012 c on a.cotizacion_no = c.cotizacion_no and b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and ", "a.cotizacion_no = c.cotizacion_no and c.status_t is null left outer join ", "historicoMTECH.dbo.iptb00006 f on d.cod_n = f.cod_n and d.cod_grupo = f.cod_grupo and d.cod_tipo = f.cod_tipo and d.cod_Sec = f.cod_Sec and ", "cast(c.num_oc as char(6)) = f.conduce_no and f.cod_mov in (30,31,55,12,13) inner join ", "historicoMTECH.dbo.iptb00002 e on d.cod_n = e.cod_n and d.cod_grupo = e.cod_grupo and d.cod_tipo = e.cod_tipo and d.cod_Sec = e.cod_Sec ", "left outer join ", "historicoMTECH.dbo.iptb00005 g on f.cod_mov = g.cod_mov ", "WHERE ",criterio clipped, " and a.status_t is null and f.status_t is null ", " UNION ", "SELECT a.cotizacion_no,CONVERT(CHAR(10),a.fecha,103),a.tipo_cliente,a.sec_cliente,a.nombre_proyecto,", "a.direccion_proyecto,a.telefono_r, ", "b.nombre,c.num_oc,CONVERT(CHAR(10),c.fecha_oc,103),CONVERT(CHAR(10),c.fecha_entrega,103),CONVERT(CHAR(10),c.fecha_cierre,103),d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,", "e.descrip_esp,e.unidad_med, d.cantidad,d.precio,f.cantidad,'FACTURA VENTA', ", " CONVERT(CHAR(10),g.fecha_factura,103),f.factura,'3',i.simbolo,'('+CAST(a.sec_vend as char(7))+')'+RTRIM(j.nom1_emp)+' '+RTRIM(j.nom2_emp)+' '+RTRIM(j.apell1_emp), ", " a.total_neto, k.descrip,c.cerrada,a.telefono_o,a.celular,a.email,a.contacto ", "FROM historicoMTECH.dbo.vetb00050 a inner join ", "historicoMTECH.dbo.vetb00012 k on a.cond_pago = k.cond_pago inner join ", "historicoMTECH.dbo.vetb00004 b on a.tipo_cliente = b.tipo_cliente and a.sec_cliente = b.sec_cliente inner join ", "historicoMTECH.dbo.vetb00051 d on a.cotizacion_no = d.cotizacion_no ", " inner join historicoMTECH.dbo.vetb00061 i on a.ventas = i.ventas ", "inner join historicoMTECH.dbo.adtb00003 j on a.sec_vend = j.num_emp ", "left outer join ", "historicoMTECH.dbo.prtb00012 c on a.cotizacion_no = c.cotizacion_no and b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente and ", "a.cotizacion_no = c.cotizacion_no left outer join ", "historicoMTECH.dbo.vetb00002 g on ", " g.orden = c.num_oc inner join ", "historicoMTECH.dbo.vetb00003 f on d.cod_n = f.cod_n and d.cod_grupo = f.cod_grupo and d.cod_tipo = f.cod_tipo and d.cod_Sec = f.cod_Sec and ", " f.factura = g.factura inner join ", "historicoMTECH.dbo.iptb00002 e on d.cod_n = e.cod_n and d.cod_grupo = e.cod_grupo and d.cod_tipo = e.cod_tipo and d.cod_Sec = e.cod_Sec ", "WHERE ",criterio clipped, " and a.status_t is null and f.status_t is null " END IF PREPARE comando FROM selec DECLARE busca CURSOR FOR comando LET r_filename = salida CLIPPED IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file LET r_output=visualiza CLIPPED LET preview=1 CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT reporte_16 TO XML HANDLER handler FOREACH busca INTO busqueda.cotizacion_no,busqueda.fecha,busqueda.tipo_cliente, busqueda.sec_cliente,busqueda.nombre_proyecto,busqueda.direccion_proyecto, busqueda.telefono_r,busqueda.nombre,busqueda.num_oc,busqueda.fecha_oc, busqueda.fecha_entrega,busqueda.fecha_cierre,busqueda.cod_n, busqueda.cod_grupo,busqueda.cod_tipo,busqueda.cod_sec, busqueda.descrip_esp,busqueda.unidad_med,busqueda.cantidad, busqueda.precio,busqueda.cantidad_2,busqueda.cod_mov, busqueda.fecha_doc,busqueda.documento,busqueda.status_mov, busqueda.simbolo,busqueda.vendedor,busqueda.monto_cotizacion, busqueda.condicion,busqueda.estado_orden,busqueda.telefono, busqueda.celular,busqueda.email,busqueda.contacto IF STATUS = NOTFOUND THEN CALL fgl_winmessage("WARNING","NO EXISTEN REGISTROS CON ESA CONDICION","SOP") EXIT FOREACH END IF IF busqueda.cantidad_2 IS NULL THEN LET busqueda.cantidad_2 = 0 END IF LET busqueda.avance = null LET busqueda.fecha_avance= NULL LET busqueda.monto_avance = NULL SELECT MAX(a.num_doc),MAX(a.fecha_orig) INTO busqueda.avance,busqueda.fecha_avance, busqueda.monto_avance FROM cctb00001 a WHERE a.num_cheque = busqueda.cotizacion_no and a.tipo_Doc = 'AV' and a.tipo_cliente = busqueda.tipo_cliente and a.sec_cliente = busqueda.sec_cliente and a.status_t is null and a.fecha_orig > '08/01/2009' LET busqueda.codigo = busqueda.cod_n using "&&&&","-", busqueda.cod_grupo USING "&&&&","-", busqueda.cod_tipo USING "&&&&","-", busqueda.cod_Sec USING "&&&&" IF busqueda.estado_orden = "N" THEN LET busqueda.estado_orden = "ABIERTA" END IF IF busqueda.estado_orden = "S" THEN LET busqueda.estado_orden = "CERRADA" END IF OUTPUT TO REPORT reporte_16(busqueda.*) END FOREACH FINISH REPORT reporte_16 END IF AFTER DIALOG IF int_flag THEN CALL msg(2) LET int_flag = false RETURN END IF IF salida IS NULL THEN CALL msg(16) NEXT FIELD salida END IF IF visualiza IS NULL THEN CALL msg(16) NEXT FIELD visualiza END IF ON ACTION CANCEL LET INT_FLAG = FALSE EXIT DIALOG END DIALOG END FUNCTION REPORT reporte_16(x) DEFINE x RECORD cotizacion_no INT, fecha CHAR(10), tipo_cliente SMALLINT, sec_cliente INT, nombre_proyecto CHAR(40), direccion_proyecto CHAR(40), telefono_r CHAR(15), nombre CHAR(40), num_oc INT, fecha_oc CHAR(10), fecha_entrega CHAR(10), fecha_cierre CHAR(10), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(40), unidad_med CHAR(4), cantidad DEC(12,3), precio DEC(12,2), cantidad_2 DEC(12,3), cod_mov CHAR(60), fecha_doc CHAR(10), documento INT, status_mov SMALLINT, simbolo CHAR(6), vendedor CHAR(50), monto_cotizacion DEC(12,2), condicion CHAR(30), estado_orden CHAR(20), avance CHAR(20), monto_avance DEC(12,2), fecha_avance CHAR(10), codigo CHAR(25), telefono VARCHAR(15), celular VARCHAR(15), email VARCHAR(80), contacto LIKE vetb00050.contacto END RECORD, balance DEC(12,3), v CHAR(1) ORDER BY x.cotizacion_no,x.num_oc,x.codigo FORMAT BEFORE GROUP OF x.cotizacion_no PRINTX x.cotizacion_no,x.direccion_proyecto,x.nombre_proyecto, x.tipo_cliente,x.sec_cliente,x.telefono_r,x.num_oc,x.fecha,x.fecha_cierre, x.fecha_entrega,x.fecha_oc BEFORE GROUP OF x.codigo PRINTX x.codigo,x.descrip_esp,x.unidad_med LET balance = x.cantidad ON EVERY ROW IF x.status_mov <> 3 THEN LET balance = balance + x.cantidad_2 END IF PRINTX x.nombre,x.cantidad,x.cantidad_2,x.cod_mov,x.fecha_Doc,p_compania.nombre, x.documento,balance,x.precio,x.simbolo,v,x.avance,x.fecha_avance, x.monto_avance,x.vendedor,x.monto_cotizacion,x.condicion,x.status_mov, x.estado_orden,x.telefono,x.celular,x.email,x.contacto LET x.cantidad = 0 END REPORT