475 lines
13 KiB
Plaintext
475 lines
13 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : CTPRRP014
|
|
OBJETIVO : Produccion Mensual
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA : Julio 12, 1993.
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ctprgb000.4gl"
|
|
|
|
############ Definicion de variables a Imprimir #############
|
|
|
|
DEFINE cantidad2,total_cant ARRAY[10] OF DECIMAL(14,4)
|
|
DEFINE selec5,selec2,selec1 CHAR(1000)
|
|
DEFINE ano,anos CHAR(4)
|
|
DEFINE factor1,labor,gasto DECIMAL(14,4)
|
|
DEFINE total_c,t_cantidad DECIMAL(14,4)
|
|
DEFINE cod_ant,ck_sem,mes1,ano1,jdx,idx_1,idx_2 INTEGER
|
|
DEFINE salir,salir1,salir2 CHAR(1)
|
|
DEFINE fecha_inicio,fecha_corte,fecha1,fecha2 DATE
|
|
DEFINE meses CHAR(15)
|
|
DEFINE codgp SMALLINT
|
|
DEFINE tdia INTEGER
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CALL ARG_VAL(3) RETURNING impresor
|
|
|
|
CONNECT to "decomarmol" USER usuarios USING clave
|
|
SELECT a.* INTO p_compania.* FROM companias a
|
|
|
|
CALL ctprrp014()
|
|
END MAIN
|
|
|
|
FUNCTION ctprrp014()
|
|
|
|
DEFINE prod_dia RECORD
|
|
departamento LIKE cttb00008.departamento,
|
|
cod_prod LIKE cttb00008.cod_prod,
|
|
cantidad DECIMAL(14,4),
|
|
semana_num INTEGER,
|
|
valor_labor LIKE cttb00008.valor_labor,
|
|
gasto_ind DECIMAL(12,4),
|
|
semana_del DATE,
|
|
semana_al DATE
|
|
END RECORD
|
|
|
|
OPTIONS
|
|
ERROR LINE 24,
|
|
FORM LINE 8
|
|
|
|
OPEN FORM ctfmrp014 FROM "ctfmrp027"
|
|
|
|
DISPLAY FORM ctfmrp014
|
|
|
|
CONSTRUCT criterio ON c.departamento,c.cod_prod
|
|
FROM departamento,cod_prod
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
INPUT BY NAME ano1,mes1
|
|
|
|
AFTER FIELD ano1
|
|
IF ano1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano1
|
|
END IF
|
|
|
|
AFTER FIELD mes1
|
|
IF mes1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes1
|
|
END IF
|
|
|
|
SELECT a.descrip INTO meses FROM mestable a WHERE a.mes = mes1
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes1
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
########## Proceso para cancelar operacion (Opcional) ##########
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
LET anos = YEAR(fecha_inicio) USING "&&&&"
|
|
########## Selecion de informacion a imprimir ################
|
|
|
|
LET selec5 =
|
|
"SELECT c.departamento,c.cod_prod,SUM(c.cantidad) ,d.num_semana ",
|
|
"FROM cttb00003 c , prtb00002 d ",
|
|
"WHERE c.status_t IS NULL AND d.mes = ? and d.ano = ? and ",
|
|
" c.cod_prod is not null and ",
|
|
" d.status_t is null and ",
|
|
" (c.fecha between d.semana_del and d.semana_al) and ",
|
|
criterio CLIPPED," GROUP BY 1,2,4 ORDER BY 1,2,4 "
|
|
|
|
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE,BOLD)
|
|
|
|
|
|
|
|
########## Preparando puntero para busqueda de informacion que ya esta
|
|
########## en la memoria.
|
|
|
|
PREPARE comando4 FROM selec5
|
|
DECLARE busca4 CURSOR FOR comando4
|
|
OPEN busca4 USING mes1,ano1
|
|
|
|
########## Enviando informacion a la impresora de conmtabilidad ######
|
|
|
|
START REPORT reporte_14 TO "C:\\archivo"
|
|
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >> "
|
|
AT 19,14 ATTRIBUTE(REVERSE)
|
|
|
|
######## Creando loop para enviar informacion a la impresora ########
|
|
WHILE status != NOTFOUND
|
|
FETCH busca4 INTO prod_dia.*
|
|
IF STATUS = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
IF prod_dia.valor_labor IS NULL THEN
|
|
LET prod_dia.valor_labor = 0
|
|
END IF
|
|
IF prod_dia.gasto_ind IS NULL THEN
|
|
LET prod_dia.gasto_ind = 0
|
|
END IF
|
|
|
|
LET factor1 = 1
|
|
SELECT a.fact_conv INTO factor1 FROM prtb00006 a
|
|
WHERE a.cod_prod = prod_dia.cod_prod
|
|
|
|
IF factor1 IS NULL THEN
|
|
LET factor1 = 1
|
|
END IF
|
|
|
|
SELECT a.fecha_inicio INTO fecha1
|
|
FROM prdtable a
|
|
WHERE a.mes = 1 AND a.ano = ano1
|
|
|
|
LET prod_dia.valor_labor = 0
|
|
SELECT AVG(a.costo_lab) INTO prod_dia.valor_labor
|
|
FROM cttb00034 a
|
|
WHERE a.fecha = fecha1 and
|
|
a.cod_prod = prod_dia.cod_prod and
|
|
a.status_t is null
|
|
|
|
IF prod_dia.valor_labor is null THEN
|
|
LET prod_dia.valor_labor = 0
|
|
END IF
|
|
display prod_dia.cod_prod," ",fecha1
|
|
LET prod_dia.gasto_ind = 0
|
|
SELECT a.costo_ga INTO prod_dia.gasto_ind
|
|
FROM cttb00034 a
|
|
WHERE a.fecha = fecha1 AND
|
|
a.cod_prod = prod_dia.cod_prod
|
|
|
|
IF prod_dia.gasto_ind is null THEN
|
|
LET prod_dia.gasto_ind = 0
|
|
END IF
|
|
|
|
LET prod_dia.cantidad = (prod_dia.cantidad * factor1) #/ 1000
|
|
IF prod_dia.cantidad IS NULL THEN
|
|
LET prod_dia.cantidad = 0
|
|
END IF
|
|
DISPLAY prod_dia.departamento,
|
|
prod_dia.cod_prod," "," ",
|
|
prod_dia.cantidad," ",
|
|
ano1 ," ",
|
|
prod_dia.valor_labor," ",
|
|
prod_dia.gasto_ind AT 21,10
|
|
|
|
OUTPUT TO REPORT reporte_14(prod_dia.*)
|
|
END WHILE
|
|
|
|
FINISH REPORT reporte_14
|
|
RUN "type C:\\archivo > %USPRINT%"
|
|
END FUNCTION
|
|
|
|
######## Preparando formato en la salida de informacion impresa ########
|
|
|
|
REPORT reporte_14(x)
|
|
DEFINE x RECORD
|
|
departamento LIKE cttb00008.departamento,
|
|
cod_prod LIKE cttb00008.cod_prod,
|
|
cantidad DECIMAL(14,4),
|
|
semana_num INTEGER,
|
|
valor_labor LIKE cttb00008.valor_labor,
|
|
gasto_ind DECIMAL(12,4),
|
|
semana_del DATE,
|
|
semana_al DATE
|
|
END RECORD,
|
|
cantidad1,cantidad2,cantidad3,cantidad4,cantidad5,tcant1,tcant2,tcant3,
|
|
tcant4,tcant5 DECIMAL(14,4)
|
|
|
|
DEFINE dia ARRAY[7] OF SMALLINT
|
|
DEFINE fecha3,fecha4,fecha5 DATE
|
|
DEFINE pos,j,i INTEGER
|
|
DEFINE labor,gasto,labor1,gasto1 DECIMAL(14,4)
|
|
|
|
DEFINE unidad,descrp1,nomb,nombre CHAR(30)
|
|
DEFINE descr CHAR(20)
|
|
DEFINE total,total2,total3,total4,total5,total6,total7,total8,total9
|
|
DECIMAL(13,8)
|
|
DEFINE fact_hombre,valor_labor,hora_hombre,valor_real,factor_conv
|
|
DECIMAL(13,8)
|
|
DEFINE total1 INTEGER
|
|
DEFINE comp_on,comp_off,normal,negrillas_on,negrillas_off CHAR(2)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 00
|
|
# ORDER BY x.departamento,x.cod_prod,x.semana_num
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET comp_on = ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET normal = ASCII 27,ASCII 80
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
IF tcant1 is null THEN
|
|
LET tcant1 = 0
|
|
END IF
|
|
IF tcant2 is null THEN
|
|
LET tcant2 = 0
|
|
END IF
|
|
IF tcant3 is null THEN
|
|
LET tcant3 = 0
|
|
END IF
|
|
IF tcant4 is null THEN
|
|
LET tcant4 = 0
|
|
END IF
|
|
IF tcant5 is null THEN
|
|
LET tcant5 = 0
|
|
END IF
|
|
PRINT normal
|
|
LET l = (117 - LENGTH(p_compania.nombre CLIPPED))/2
|
|
PRINT comp_on,negrillas_on
|
|
PRINT COLUMN 1,"ctprrp014",
|
|
COLUMN l, p_compania.nombre CLIPPED,
|
|
COLUMN 110, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 41, "INVENTARIO DE PRODUCTOS EN PROCESO",
|
|
COLUMN 110, today using "dd/mm/yy"
|
|
PRINT COLUMN 43, "Reporte de Produccion Mensual",
|
|
COLUMN 110, time
|
|
PRINT COLUMN 43, "De ",meses, " DEL ", ano1 USING "&&&&",comp_on
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"-----------------------------------------"
|
|
PRINT COLUMN 38,"|";
|
|
LET i = 30
|
|
FOR idx = 1 to 5
|
|
PRINT COLUMN i, " |";
|
|
LET i = i + 17
|
|
END FOR
|
|
PRINT COLUMN i, " Total |",
|
|
COLUMN i+17, " Std |",
|
|
COLUMN i+27, " |",
|
|
COLUMN i+41, " Std |",
|
|
COLUMN i+51, " |"
|
|
|
|
PRINT COLUMN 38, "|";
|
|
LET i = 30
|
|
FOR idx = 1 to 5
|
|
PRINT COLUMN i, " SEMANA(",idx USING "&",") |";
|
|
LET i = i + 17
|
|
END FOR
|
|
PRINT COLUMN i, " Mes |",
|
|
COLUMN i+17, " Labor |",
|
|
COLUMN i+27, " Valor |",
|
|
COLUMN i+41, " Gasto |",
|
|
COLUMN i+51, " Valor |"
|
|
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"-----------------------------------------"
|
|
|
|
BEFORE GROUP OF x.departamento
|
|
PRINT COLUMN 38,"|";
|
|
LET i = 30
|
|
FOR idx = 1 to 5
|
|
PRINT COLUMN i, " |";
|
|
LET i = i + 17
|
|
END FOR
|
|
PRINT COLUMN i, " |",
|
|
COLUMN i+17, " |",
|
|
COLUMN i+27, " |",
|
|
COLUMN i+41, " |",
|
|
COLUMN i+51, " |"
|
|
|
|
SELECT b.nom_dpto INTO nomb FROM adtb00001 b
|
|
WHERE b.departamento = x.departamento
|
|
|
|
PRINT COLUMN 1, negrillas_on,x.departamento USING "&&&&"," ",
|
|
nomb clipped,negrillas_off;
|
|
|
|
PRINT COLUMN 38, "|";
|
|
LET i = 34
|
|
FOR idx = 1 to 5
|
|
PRINT COLUMN i, " |";
|
|
LET i = i + 17
|
|
END FOR
|
|
PRINT COLUMN i, " |",
|
|
COLUMN i+17, " |",
|
|
COLUMN i+27, " |",
|
|
COLUMN i+41, " |",
|
|
COLUMN i+51, " |"
|
|
|
|
IF total1 IS NULL THEN
|
|
LET total1 = 0
|
|
END IF
|
|
|
|
BEFORE GROUP OF x.cod_prod
|
|
LET idx = 1
|
|
IF x.cod_prod IS NOT NULL THEN
|
|
# Busca la semana minima para saber que numero de semana es la que se va a
|
|
# imprimir.
|
|
SELECT MIN(a.num_semana) INTO ck_sem
|
|
FROM prtb00002 a
|
|
WHERE a.mes = mes1 and a.ano = ano1 and
|
|
a.status_t is null
|
|
|
|
LET nombre = NULL
|
|
SELECT a.descripcion INTO nombre FROM cttb00001 a
|
|
WHERE a.cod_prod = x.cod_prod
|
|
|
|
PRINT COLUMN 2, x.cod_prod USING "&&&&"," ",
|
|
nombre clipped,
|
|
COLUMN 38,"|";
|
|
END IF
|
|
|
|
LET cantidad1 = 0
|
|
LET cantidad2 = 0
|
|
LET cantidad3 = 0
|
|
LET cantidad4 = 0
|
|
LET cantidad5 = 0
|
|
ON EVERY ROW
|
|
# IF x.cod_prod IS NOT NULL THEN
|
|
LET pos = x.semana_num - ck_sem
|
|
CASE
|
|
WHEN pos = 0
|
|
LET cantidad1 = x.cantidad
|
|
WHEN pos = 1
|
|
LET cantidad2 = x.cantidad
|
|
WHEN pos = 2
|
|
LET cantidad3 = x.cantidad
|
|
WHEN pos = 3
|
|
LET cantidad4 = x.cantidad
|
|
WHEN pos = 4
|
|
LET cantidad5 = x.cantidad
|
|
END CASE
|
|
|
|
#END IF
|
|
|
|
AFTER GROUP OF x.cod_prod
|
|
IF x.cod_prod IS NOT NULL THEN
|
|
IF x.valor_labor IS NULL THEN
|
|
LET x.valor_labor = 0
|
|
END IF
|
|
IF x.gasto_ind IS NULL THEN
|
|
LET x.gasto_ind = 0
|
|
END IF
|
|
IF cantidad1 IS NULL THEN
|
|
LET cantidad1 =0
|
|
END IF
|
|
IF cantidad2 IS NULL THEN
|
|
LET cantidad2 =0
|
|
END IF
|
|
IF cantidad3 IS NULL THEN
|
|
LET cantidad3 =0
|
|
END IF
|
|
IF cantidad4 IS NULL THEN
|
|
LET cantidad4 =0
|
|
END IF
|
|
IF cantidad5 IS NULL THEN
|
|
LET cantidad5 =0
|
|
END IF
|
|
IF cantidad4 IS NULL THEN
|
|
LET cantidad4 =0
|
|
END IF
|
|
|
|
PRINT COLUMN 30, cantidad1 USING "###,###,##&.&&&&","|",
|
|
COLUMN 47, cantidad2 USING "###,###,##&.&&&&","|",
|
|
COLUMN 64, cantidad3 USING "###,###,##&.&&&&","|",
|
|
COLUMN 81, cantidad4 USING "###,###,##&.&&&&","|",
|
|
COLUMN 98, cantidad5 USING "###,###,##&.&&&&","|",
|
|
COLUMN i-4, GROUP SUM(x.cantidad) USING "###,###,##&.&&&&","|",
|
|
COLUMN i+13, x.valor_labor USING "##,##&.&&","|",
|
|
COLUMN i+23, (GROUP SUM(x.cantidad))*x.valor_labor
|
|
USING "###,###,##&.&&&&","|",
|
|
COLUMN i+37, x.gasto_ind USING "##,##&.&&","|",
|
|
COLUMN i+47, (GROUP SUM(x.cantidad))*x.gasto_ind
|
|
USING "###,###,##&.&&&&","|"
|
|
|
|
IF labor IS NULL THEN
|
|
LET labor = 0
|
|
END IF
|
|
IF gasto IS NULL THEN
|
|
LET gasto = 0
|
|
END IF
|
|
|
|
LET labor = labor+((GROUP SUM(x.cantidad))*x.valor_labor)
|
|
LET gasto = gasto+((GROUP SUM(x.cantidad))*x.gasto_ind)
|
|
|
|
LET tcant1 = tcant1 + cantidad1
|
|
LET tcant2 = tcant2 + cantidad2
|
|
LET tcant3 = tcant3 + cantidad3
|
|
LET tcant4 = tcant4 + cantidad4
|
|
LET tcant5 = tcant5 + cantidad5
|
|
|
|
END IF
|
|
LET idx = 1
|
|
ON LAST ROW
|
|
|
|
PRINT COLUMN 1,negrillas_on
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"-----------------------------------------"
|
|
PRINT COLUMN 10,"Totales --->";
|
|
LET j = 30
|
|
PRINT COLUMN 30, tcant1 USING "###,###,##&.&&&&","|",
|
|
COLUMN 47, tcant2 USING "###,###,##&.&&&&","|",
|
|
COLUMN 64, tcant3 USING "###,###,##&.&&&&","|",
|
|
COLUMN 81, tcant4 USING "###,###,##&.&&&&","|",
|
|
COLUMN 98, tcant5 USING "###,###,##&.&&&&","|",
|
|
COLUMN j+4, total_c using "##,###.##",
|
|
COLUMN j+36, labor USING "###,###,##&.&&&&",
|
|
COLUMN j+63, gasto USING "###,###,##&.&&&&"
|
|
LET labor = 0
|
|
LET gasto = 0
|
|
|
|
PRINT COLUMN 1,
|
|
"============================================================================",
|
|
"============================================================================",
|
|
"========================================="
|
|
|
|
LET tcant1 = 0
|
|
LET tcant2 = 0
|
|
LET tcant3 = 0
|
|
LET tcant4 = 0
|
|
LET tcant5 = 0
|
|
|
|
PRINT COLUMN 1,negrillas_off,normal,comp_off
|
|
END REPORT
|