455 lines
14 KiB
Plaintext
455 lines
14 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : CTPRRP004
|
|
OBJETIVO : Produccion Diaria
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA : Julio 12, 1993.
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"ctprgb000.4gl"
|
|
|
|
############ Definicion de variables a Imprimir #############
|
|
|
|
DEFINE datos_semana ARRAY[52] OF RECORD
|
|
num_semana INTEGER,
|
|
semana_del DATE,
|
|
semana_al DATE
|
|
END RECORD
|
|
|
|
DEFINE cantidad2,total_1 ARRAY[7] OF DECIMAL(14,4)
|
|
DEFINE selec5,selec2,selec1 CHAR(1000)
|
|
DEFINE ano,anos CHAR(4)
|
|
DEFINE factor1,labor,gasto DECIMAL(14,4)
|
|
DEFINE cantidad1,t_cantidad DECIMAL(12,2)
|
|
DEFINE mes,semana_num,jdx,idx_1,idx_2 INTEGER
|
|
DEFINE salir,salir1,salir2 CHAR(1)
|
|
DEFINE fecha_inicio,fecha_corte,fecha1,fecha2 DATE
|
|
|
|
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 ctprrp004()
|
|
END MAIN
|
|
|
|
FUNCTION ctprrp004()
|
|
|
|
DEFINE prod_dia RECORD
|
|
origen CHAR(30),
|
|
departamento LIKE cttb00008.departamento,
|
|
cod_prod LIKE cttb00008.cod_prod,
|
|
valor_labor LIKE cttb00008.valor_labor,
|
|
gasto_ind LIKE cttb00029.gasto_ind,
|
|
fecha DATE,
|
|
cantidad DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
OPTIONS
|
|
ERROR LINE 24,
|
|
FORM LINE 8
|
|
|
|
OPEN FORM ctfmrp004 FROM "ctfmrp004"
|
|
DISPLAY FORM ctfmrp004
|
|
|
|
|
|
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 semana_num
|
|
AFTER FIELD semana_num
|
|
IF semana_num IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD semana_num
|
|
END IF
|
|
|
|
LET fecha_inicio = NULL
|
|
LET fecha_corte = NULL
|
|
SELECT MAX(a.semana_del),MAX(a.semana_al) INTO fecha_inicio,fecha_corte
|
|
FROM prtb00002 a WHERE a.num_semana = semana_num
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD semana_num
|
|
END IF
|
|
|
|
DISPLAY BY NAME fecha_inicio,fecha_corte
|
|
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 jdx = (fecha_corte - fecha_inicio) + 1
|
|
LET anos = YEAR(fecha_inicio) USING "&&&&"
|
|
########## Selecion de informacion a imprimir ################
|
|
SELECT a.fecha_inicio INTO fecha1 FROM prdtable a
|
|
WHERE a.ano = anos AND a.mes = 1
|
|
|
|
LET selec1 =
|
|
"SELECT COUNT(*) FROM cttb00003 c , OUTER cttb00034 a ",
|
|
"WHERE c.cod_prod = a.cod_prod AND c.cod_prod is not null AND ",
|
|
" c.status_t IS NULL AND c.fecha BETWEEN ? AND ? AND ",
|
|
" a.fecha = ? and ",
|
|
criterio CLIPPED
|
|
|
|
|
|
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 comando1 FROM selec1
|
|
DECLARE busca1 CURSOR FOR comando1
|
|
OPEN busca1 USING fecha_inicio,fecha_corte,fecha1
|
|
|
|
FETCH busca1 INTO regi
|
|
LET p_param = "S"
|
|
|
|
LET selec5 =
|
|
"SELECT UNIQUE d.descripcion,c.departamento,c.cod_prod,a.costo_lab ",
|
|
"FROM cttb00003 c ,cttb00001 e,iptb00022 d, OUTER cttb00034 a ",
|
|
"WHERE c.cod_prod = e.cod_prod and e.cod_cia = d.cod_cia and c.cod_prod = a.cod_prod AND c.cod_prod is not null AND ",
|
|
" c.status_t IS NULL AND c.fecha BETWEEN ? AND ? AND a.fecha= ? and ",
|
|
criterio CLIPPED
|
|
|
|
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 fecha_inicio,fecha_corte,fecha1
|
|
|
|
########## Enviando informacion a la impresora de conmtabilidad ######
|
|
|
|
START REPORT reporte_4 TO "C:\\archivo"
|
|
|
|
DISPLAY "<< "
|
|
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
|
|
|
|
LET factor1 = 1
|
|
SELECT MAX(a.fact_conv) INTO factor1 FROM prtb00006 a
|
|
WHERE a.cod_prod = prod_dia.cod_prod AND a.status_t IS NULL
|
|
|
|
IF factor1 IS NULL THEN
|
|
LET factor1 = 1
|
|
END IF
|
|
IF prod_dia.valor_labor IS NULL THEN
|
|
LET prod_dia.valor_labor = 0
|
|
END IF
|
|
|
|
LET prod_dia.gasto_ind = 0
|
|
SELECT a.costo_ga INTO prod_dia.gasto_ind FROM cttb00034 a
|
|
WHERE a.cod_prod = prod_dia.cod_prod and a.fecha = fecha1
|
|
|
|
IF prod_dia.gasto_ind IS NULL THEN
|
|
LET prod_dia.gasto_ind = 0
|
|
END IF
|
|
LET fecha1 = fecha_inicio
|
|
FOR idx = 1 TO jdx
|
|
LET prod_dia.fecha = fecha1
|
|
LET cantidad1 = 0
|
|
SELECT SUM(a.cantidad) INTO cantidad1 FROM cttb00003 a
|
|
WHERE a.departamento = prod_dia.departamento AND
|
|
a.cod_prod = prod_dia.cod_prod AND
|
|
a.status_t IS NULL AND a.fecha = prod_dia.fecha
|
|
|
|
IF cantidad1 IS NULL THEN
|
|
LET cantidad1 = 0
|
|
END IF
|
|
IF cantidad1 <> 0 THEN
|
|
LET cantidad1 = (cantidad1*factor1) #/1000
|
|
ELSE
|
|
LET cantidad1 = 0
|
|
END IF
|
|
LET prod_dia.cantidad = cantidad1
|
|
OUTPUT TO REPORT reporte_4(prod_dia.*)
|
|
LET fecha1 = fecha1 + 1
|
|
END FOR
|
|
CALL termometro(regi,p_param)
|
|
LET p_param = "N"
|
|
END WHILE
|
|
|
|
FINISH REPORT reporte_4
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
######## Preparando formato en la salida de informacion impresa ########
|
|
|
|
REPORT reporte_4(x)
|
|
DEFINE x RECORD
|
|
origen CHAR(30),
|
|
departamento LIKE cttb00008.departamento,
|
|
cod_prod LIKE cttb00008.cod_prod,
|
|
valor_labor LIKE cttb00008.valor_labor,
|
|
gasto_ind LIKE cttb00029.gasto_ind,
|
|
fecha DATE,
|
|
cantidad DECIMAL(12,2)
|
|
END RECORD
|
|
DEFINE dia ARRAY[7] OF SMALLINT
|
|
DEFINE fecha3,fecha4,fecha5 DATE
|
|
DEFINE i INTEGER
|
|
DEFINE cantidad1,labor,gasto,labor1,gasto1 DECIMAL(12,2)
|
|
|
|
DEFINE unidad,descrp1,nomb,nombre CHAR(20)
|
|
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 j,total1 INTEGER
|
|
DEFINE doce,comp_on,comp_off,normal,negrillas_on,negrillas_off CHAR(2)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 00
|
|
ORDER BY x.origen,x.departamento,x.cod_prod,x.fecha
|
|
|
|
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
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET l = (127 - LENGTH(p_compania.nombre CLIPPED)) /2
|
|
PRINT doce,comp_on,negrillas_on
|
|
PRINT COLUMN 1,"ctprrp004",
|
|
COLUMN l,p_compania.nombre CLIPPED,
|
|
COLUMN 120, "Pag. ",pageno using "###"
|
|
LET l = (127 - LENGTH("INVENTARIO DE PRODUCTOS EN PROCESO")) /2
|
|
PRINT COLUMN l, "INVENTARIO DE PRODUCTOS EN PROCESO",
|
|
COLUMN 120, today using "dd/mm/yyyy"
|
|
LET l = (127 - LENGTH("Reporte de Produccion Diaria")) /2
|
|
PRINT COLUMN l, "Reporte de Produccion Diaria",
|
|
COLUMN 120, time
|
|
PRINT COLUMN 51, "DEL ",fecha_inicio USING "dd/mm/yyyy", " Al ",
|
|
fecha_corte USING "dd/mm/yyyy",comp_on
|
|
SKIP 1 LINE
|
|
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"--------------------------------------------------------------------"
|
|
PRINT COLUMN 29,"|";
|
|
LET i = 30
|
|
FOR idx = 1 to jdx
|
|
|
|
PRINT COLUMN i, " |";
|
|
LET i = i + 11
|
|
END FOR
|
|
PRINT COLUMN i, " Total |",
|
|
COLUMN i+14, " Std |",
|
|
COLUMN i+24, " |",
|
|
COLUMN i+38, " Std |",
|
|
COLUMN i+48, " |"
|
|
PRINT COLUMN 29, "|";
|
|
LET i = 30
|
|
LET fecha1 = fecha_inicio
|
|
FOR idx = 1 to jdx
|
|
PRINT COLUMN i, " Dia(",DAY(fecha1) USING "&&",") |";
|
|
LET i = i + 11
|
|
LET fecha1 = fecha1 + 1
|
|
END FOR
|
|
PRINT COLUMN i, " Semana |",
|
|
COLUMN i+14, " Labor |",
|
|
COLUMN i+24, " Valor |",
|
|
COLUMN i+38, " Gasto |",
|
|
COLUMN i+48, " Valor |"
|
|
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"--------------------------------------------------------------------"
|
|
PRINT negrillas_off
|
|
BEFORE GROUP OF x.origen
|
|
SKIP 1 LINE
|
|
PRINT "ORIGEN: ",x.origen
|
|
SKIP 1 LINE
|
|
BEFORE GROUP OF x.departamento
|
|
PRINT COLUMN 29,"|";
|
|
LET i = 30
|
|
FOR idx = 1 to jdx
|
|
PRINT COLUMN i, " |";
|
|
LET i = i + 11
|
|
END FOR
|
|
PRINT COLUMN i, " |",
|
|
COLUMN i+14, " |",
|
|
COLUMN i+24, " |",
|
|
COLUMN i+38, " |",
|
|
COLUMN i+48, " |"
|
|
|
|
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 33, "|";
|
|
LET i = 34
|
|
FOR idx = 1 to jdx
|
|
PRINT COLUMN i, " |";
|
|
LET i = i + 11
|
|
END FOR
|
|
PRINT COLUMN i, " |",
|
|
COLUMN i+14, " |",
|
|
COLUMN i+24, " |",
|
|
COLUMN i+38, " |",
|
|
COLUMN i+48, " |"
|
|
|
|
IF total1 IS NULL THEN
|
|
LET total1 = 0
|
|
END IF
|
|
|
|
BEFORE GROUP OF x.cod_prod
|
|
LET idx = 1
|
|
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 29,"|";
|
|
|
|
LET i = 30
|
|
ON EVERY ROW
|
|
PRINT COLUMN i,x.cantidad USING "###,##&.&&","|";
|
|
LET i = i + 11
|
|
|
|
AFTER GROUP OF x.cod_prod
|
|
PRINT COLUMN i, GROUP SUM(x.cantidad) USING "##,###,##&.&&","|",
|
|
COLUMN i+14, x.valor_labor USING "##,##&.&&","|",
|
|
COLUMN i+24, (GROUP SUM(x.cantidad))*x.valor_labor
|
|
USING "##,###,##&.&&","|",
|
|
COLUMN i+38, x.gasto_ind USING "##,##&.&&","|",
|
|
COLUMN i+48, (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))* GROUP AVG(x.valor_labor))
|
|
LET gasto = gasto+((GROUP SUM(x.cantidad))* GROUP AVG(x.gasto_ind))
|
|
AFTER GROUP OF x.origen
|
|
PRINT COLUMN 10, x.origen,"---> ",
|
|
COLUMN i, GROUP SUM(x.cantidad) USING "##,###,##&.&&","|",
|
|
COLUMN i+14, x.valor_labor USING "##,##&.&&","|",
|
|
COLUMN i+24, (GROUP SUM(x.cantidad))*x.valor_labor
|
|
USING "##,###,##&.&&","|",
|
|
COLUMN i+38, x.gasto_ind USING "##,##&.&&","|",
|
|
COLUMN i+48, (GROUP SUM(x.cantidad))*x.gasto_ind
|
|
USING "##,###,##&.&&","|"
|
|
|
|
|
|
ON LAST ROW
|
|
|
|
PRINT COLUMN 1,negrillas_on
|
|
PRINT COLUMN 1,
|
|
"----------------------------------------------------------------------------",
|
|
"----------------------------------------------------------------------------",
|
|
"--------------------------------------------------------------------"
|
|
PRINT COLUMN 10,"Totales --->";
|
|
LET j = 30
|
|
FOR idx = 1 TO jdx
|
|
PRINT COLUMN j, " "; #total_1[idx] USING " ";
|
|
LET j = j + 11
|
|
END FOR
|
|
PRINT COLUMN j+2, " ",#SUM(x.cantidad) USING "#,###,###,##&.&&","|",
|
|
COLUMN j+24, labor USING "##,###,##&.&&",
|
|
COLUMN j+48, gasto USING "##,###,##&.&&"
|
|
LET labor = 0
|
|
LET gasto = 0
|
|
|
|
PRINT COLUMN 1,
|
|
"============================================================================",
|
|
"============================================================================",
|
|
"===================================================================="
|
|
FOR idx = 1 to jdx
|
|
LET total_1[idx] = 0
|
|
END FOR
|
|
PRINT COLUMN 1,negrillas_off,normal,comp_off
|
|
END REPORT
|
|
|
|
FUNCTION busca_semana()
|
|
|
|
OPEN WINDOW b_semana AT 10,10 WITH FORM "ctfmwd001"
|
|
ATTRIBUTE(BORDER,FORM LINE FIRST + 1)
|
|
|
|
INPUT BY NAME ano,mes
|
|
|
|
AFTER FIELD ano
|
|
IF ano IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano
|
|
END IF
|
|
|
|
AFTER FIELD mes
|
|
IF mes IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
END INPUT
|
|
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT a.num_semana,a.semana_del,a.semana_al FROM prtb00002 a
|
|
WHERE a.mes = mes AND a.ano = ano
|
|
|
|
LET idx = 1
|
|
FOREACH buscar INTO datos_semana[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY datos_semana TO scr_seman.*
|
|
LET curr = scr_line()
|
|
CLOSE WINDOW b_semana
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION |