otrodir/selectoutput_simple.4gl definia FUNCTION selectOutput(), mismo nombre que otrodir/vesalidaimpresora.4gl (ya usado por Abel en noprcs006, ipprrp002, ipprrp003, ipprrp039, ipprrp044). Al mezclar ambos commits, cualquier programa que dependiera de FUNCIONESREPORT mas la libreria de Abel rompia por simbolo duplicado. Se renombra la funcion (y se actualizan sus 4 unicos llamados: ipprrp005, ipprrp009, ipprrp035, ipprrp036) sin tocar vesalidaimpresora.4gl, para no afectar los programas que Abel ya tiene funcionando con esa version. Recompilados y verificados los 4 programas tras el cambio. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
329 lines
10 KiB
Plaintext
329 lines
10 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : IPPRRP005
|
|
OBJETIVO : CATALOGO DE PRODUCTOS TERMINADOS CON SU COSTO STD.
|
|
PROGRAMADOR : JUAN SOTO
|
|
FECHA REALIZACION : Febrero 1997
|
|
DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ipprgb000.4gl"
|
|
|
|
DEFINE l INTEGER
|
|
DEFINE precio DECIMAL(8,3)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
SELECT * INTO p_companias.* FROM companias
|
|
CALL ipprrp005()
|
|
END MAIN
|
|
|
|
FUNCTION ipprrp005()
|
|
|
|
DEFINE producto RECORD
|
|
ventas CHAR(1),
|
|
cod_n LIKE iptb00002.cod_n,
|
|
cod_grupo LIKE iptb00002.cod_grupo,
|
|
cod_tipo LIKE iptb00002.cod_tipo,
|
|
cod_sec LIKE iptb00002.cod_sec,
|
|
descrip_esp LIKE iptb00002.descrip_esp,
|
|
unidad_med LIKE iptb00002.unidad_med,
|
|
material DECIMAL(18,2),
|
|
labor DECIMAL(18,2),
|
|
gastos DECIMAL(18,2)
|
|
END RECORD,
|
|
codigo CHAR(4),
|
|
codigo_n smallint,
|
|
nombre_imp CHAR(11),
|
|
progreso, idx, cuenta INT ,
|
|
select_cuenta STRING
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
CLEAR SCREEN
|
|
|
|
OPEN FORM ipfmrp005 FROM "ipfmrp005"
|
|
DISPLAY FORM ipfmrp005
|
|
CALL ui.Window.getCurrent().setText("MAESTRA COSTO STANDARD")
|
|
#CALL pantalla()
|
|
DISPLAY "ipprrp005" AT 4,3
|
|
DISPLAY "Maestra Costos Std." AT 6,31
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
INPUT BY NAME decide
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
LET nombre_ant = "E"
|
|
CONSTRUCT criterio ON a.cod_cia,b.ano,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
FROM cod_cia,ano, cod_n,cod_grupo,cod_tipo,cod_sec
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
{CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
|
doble_on,doble_off,comp_on,comp_off,
|
|
doce,normal,archivo,copia}
|
|
|
|
IF decide = "A" THEN
|
|
LET SELEC =
|
|
"SELECT b.ventas,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,a.descrip_esp, ",
|
|
" a.unidad_med,MAX(b.material),MAX(b.labor),MAX(b.gastos) ",
|
|
"FROM iptb00002 a,iptb00004 b ",
|
|
"WHERE a.status_t IS NULL AND b.status_t IS NULL AND ",
|
|
criterio clipped," AND a.cod_n=b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec ",
|
|
" GROUP BY b.ventas, b.cod_n, b.cod_grupo, b.cod_tipo, b.cod_sec, a.descrip_esp, a.unidad_med
|
|
ORDER BY b.ventas, b.cod_n, b.cod_grupo, b.cod_tipo, b.cod_sec, a.descrip_esp;"
|
|
|
|
LET select_cuenta = "SELECT count(*) ",
|
|
"FROM iptb00002 a,iptb00004 b ",
|
|
"WHERE a.status_t IS NULL AND b.status_t IS NULL AND ",
|
|
criterio clipped," AND a.cod_n=b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec "
|
|
|
|
ELSE
|
|
LET SELEC =
|
|
"SELECT b.ventas,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,a.descrip_esp, ",
|
|
" a.unidad_med,MAX(b.material),MAX(b.labor),MAX(b.gastos) ",
|
|
"FROM iptb00002 a,iptb00004 b ",
|
|
"WHERE a.status_t IS NULL AND b.status_t IS NULL AND ",
|
|
criterio clipped," AND a.cod_n=b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec ",
|
|
" GROUP BY b.ventas, b.cod_n, b.cod_grupo, b.cod_tipo, b.cod_sec, a.descrip_esp, a.unidad_med
|
|
ORDER BY b.ventas, b.cod_n, b.cod_grupo, b.cod_tipo, b.cod_sec, a.descrip_esp;"
|
|
|
|
LET select_cuenta = "SELECT count(*) ",
|
|
"FROM iptb00002 a,iptb00004 b ",
|
|
"WHERE a.status_t IS NULL AND b.status_t IS NULL AND ",
|
|
criterio clipped," AND a.cod_n=b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
|
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec "
|
|
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
DISPLAY "Buscando Informacion ... Espere Por Favor" AT 19,14
|
|
ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
PREPARE busca FROM selec
|
|
|
|
PREPARE busca_cta FROM select_cuenta
|
|
EXECUTE busca_cta INTO cuenta
|
|
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
DECLARE accion CURSOR FOR busca
|
|
|
|
DISPLAY " " AT 19,14
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
LET r_filename ='ipprrp005.4rp'
|
|
LET preview = 1
|
|
|
|
CALL selectOutputSimple() RETURNING r_output
|
|
|
|
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
|
|
CALL fgl_report_selectDevice(r_output) -- changing default
|
|
CALL fgl_report_configurexlsxdevice(null,null,1,null,null,null,1)
|
|
CALL fgl_report_selectPreview(preview) -- changing default
|
|
LET handler = fgl_report_commitCurrentSettings() -- commit changes
|
|
END IF
|
|
|
|
#CALL configureOutput(r_output) RETURNING HANDLER
|
|
|
|
START REPORT maestra_st TO XML HANDLER HANDLER
|
|
|
|
LET idx = 1
|
|
FOREACH accion INTO producto.*
|
|
OUTPUT TO REPORT maestra_st(producto.*)
|
|
|
|
LET progreso = (idx /cuenta )*100
|
|
|
|
DISPLAY Progreso TO progreso
|
|
CALL ui.interface.refresh()
|
|
LET idx = idx + 1
|
|
|
|
END FOREACH
|
|
FINISH REPORT maestra_st
|
|
|
|
CLEAR SCREEN
|
|
|
|
END FUNCTION
|
|
|
|
REPORT maestra_st(x)
|
|
DEFINE x RECORD
|
|
ventas CHAR(1),
|
|
cod_n LIKE iptb00002.cod_n,
|
|
cod_grupo LIKE iptb00002.cod_grupo,
|
|
cod_tipo LIKE iptb00002.cod_tipo,
|
|
cod_sec LIKE iptb00002.cod_sec,
|
|
descrip_esp LIKE iptb00002.descrip_esp,
|
|
unidad_med LIKE iptb00002.unidad_med,
|
|
material DECIMAL(18,2),
|
|
labor DECIMAL(18,2),
|
|
gastos DECIMAL(18,2)
|
|
END RECORD
|
|
|
|
DEFINE nom CHAR(30)
|
|
DEFINE doble_on CHAR(2)
|
|
DEFINE doble_off CHAR(2)
|
|
DEFINE negrillas_on CHAR(2)
|
|
DEFINE negrillas_off CHAR(2)
|
|
DEFINE comp_on CHAR(2)
|
|
DEFINE comp_off CHAR(2)
|
|
DEFINE doce CHAR(2)
|
|
DEFINE hora CHAR(5),
|
|
prec_m,prec_l DECIMAL(12,2)
|
|
DEFINE producto VARCHAR(150)
|
|
DEFINE costo_std, total_producto, total_maestra DECIMAL(12,2)
|
|
DEFINE tipo_reporte VARCHAR (50)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET hora = time
|
|
|
|
LET l = (100 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
{ PRINT COLUMN 1, doce,negrillas_on
|
|
PRINT COLUMN 1, "ipprrp005",
|
|
COLUMN l, p_companias.nombre CLIPPED,
|
|
COLUMN 93, "Pag.",pageno using "###"
|
|
PRINT COLUMN 34, "Sistema de Productos Terminados",
|
|
COLUMN 93, today using "dd/mm/yy"
|
|
PRINT COLUMN 37, "Maestra de Costos Standar",
|
|
COLUMN 96, hora
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------"
|
|
|
|
PRINT COLUMN 1, "Producto",
|
|
COLUMN 51, "Material",
|
|
COLUMN 67, "Labor",
|
|
COLUMN 78, "Gastos",
|
|
COLUMN 88, "Costo Std."
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------"
|
|
PRINT negrillas_off}
|
|
|
|
BEFORE GROUP OF x.ventas
|
|
IF x.ventas = "1" THEN
|
|
LET tipo_reporte = "PRECIO LOCAL"
|
|
ELSE
|
|
LET tipo_reporte = "PRECIO EXPORTACION"
|
|
END IF
|
|
|
|
PRINTX tipo_reporte
|
|
|
|
|
|
BEFORE GROUP OF x.cod_n
|
|
INITIALIZE p_iptb20.* TO NULL
|
|
SELECT a.* INTO p_iptb20.* FROM iptb00020 a
|
|
WHERE a.cod_n = x.cod_n
|
|
|
|
IF p_iptb20.producto IS NULL THEN
|
|
LET producto = "SIN DESCRIPCION"
|
|
END IF
|
|
|
|
{ PRINT negrillas_on
|
|
PRINT COLUMN 1, p_iptb20.producto CLIPPED,negrillas_off}
|
|
|
|
ON EVERY ROW
|
|
LET producto = x.cod_n CLIPPED ||"-" || x.cod_grupo CLIPPED ||"-"||
|
|
x.cod_tipo CLIPPED || "-"||x.cod_sec CLIPPED||
|
|
" "||x.descrip_esp CLIPPED||" "||x.unidad_med CLIPPED
|
|
|
|
IF p_iptb20.producto IS NULL THEN
|
|
LET producto = "SIN DESCRIPCION"
|
|
END IF
|
|
|
|
LET costo_std = x.material+x.labor+x.gastos
|
|
|
|
{ PRINT COLUMN 1,producto,
|
|
COLUMN 47, x.material USING "###,###.####",
|
|
COLUMN 60, x.labor USING "###,###.####",
|
|
COLUMN 73, x.gastos USING "###,###.####",
|
|
COLUMN 86, costo_std USING "###,###.####"}
|
|
|
|
PRINTX producto, x.material USING "###,###.####",x.labor USING "###,###.####",
|
|
x.gastos USING "###,###.####", costo_std USING "###,###.####"
|
|
|
|
{AFTER GROUP OF x.cod_n
|
|
|
|
PRINT negrillas_on
|
|
PRINT "Total Items Por Producto: ", GROUP COUNT(*) USING "<<<,<<<,<<<"
|
|
PRINT negrillas_off
|
|
|
|
ON LAST ROW
|
|
PRINT negrillas_on
|
|
PRINT "Total Items En Maestra: ", COUNT(*) USING "<<<,<<<,<<<"
|
|
PRINT negrillas_off
|
|
PRINT COLUMN 2, ASCII 27, ASCII 80 }
|
|
|
|
END REPORT
|
|
|
|
|
|
FUNCTION integridad()
|
|
DEFINE numero_msg INT,
|
|
bandera SMALLINT
|
|
IF sqlca.sqlcode < 0 THEN
|
|
LET numero_msg = sqlca.sqlcode
|
|
CALL msg(numero_msg)
|
|
DISPLAY numero_msg AT 23,70
|
|
LET bandera = 1
|
|
LET status = 0
|
|
SLEEP 2
|
|
RETURN
|
|
END IF
|
|
RETURN
|
|
END FUNCTION
|
|
|