369 lines
17 KiB
Plaintext
369 lines
17 KiB
Plaintext
{
|
|
==============================================================================
|
|
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
|