Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,710 @@
|
||||
{
|
||||
-------------------------------------------------------------------------------
|
||||
PROGRAMA : CTPRRP033
|
||||
OBJETIVO : Desperdicio de Materiales (Mensual)
|
||||
PROGRAMADOR : Juan F. Soto
|
||||
FECHA REALIZACION : Noviembre 16, 1995
|
||||
-------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
GLOBALS "ctprgb000.4gl"
|
||||
|
||||
DEFINE cantidad_t,cant_env,cant_env1 DECIMAL(12,2)
|
||||
DEFINE ini_fecha CHAR(8)
|
||||
####### Definicion de variables a usar en el reporte #######
|
||||
# Costo de la materia prima
|
||||
DEFINE maestra RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descrip_esp CHAR(30),
|
||||
unidad_med CHAR(3)
|
||||
END RECORD
|
||||
|
||||
DEFINE costos1 RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
costo DECIMAL(12,4)
|
||||
END RECORD
|
||||
|
||||
# Material consumido por los semi-elaborados para sumar al inventario
|
||||
# final
|
||||
DEFINE estandard RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD
|
||||
|
||||
# Inventario inicial
|
||||
DEFINE inicial RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD
|
||||
|
||||
DEFINE inicial1 RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD
|
||||
|
||||
DEFINE final1 RECORD
|
||||
cod_prod SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD
|
||||
|
||||
# Inventario Final
|
||||
DEFINE final RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD
|
||||
# Cantidad de materia prima utilizada en la produccion, codigo 36 de
|
||||
# movimientos
|
||||
DEFINE proceso RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD
|
||||
|
||||
DEFINE cantidad DECIMAL(12,2)
|
||||
|
||||
# Este es el record que se validara para imprimir todas la materia prima
|
||||
|
||||
# Variables para asignarles los selects
|
||||
DEFINE selec1,selec2,selec3,selec4,selec5,selec6,selec7,selec8,
|
||||
selecj,seleck CHAR(1000)
|
||||
|
||||
# Bandera para utilizarla en los loops de busqueda
|
||||
DEFINE salirj,salirk,salir,salir1,salir2,salir3,salir4,salir6,salir5 CHAR(1)
|
||||
|
||||
# Variables de entrada del reporte
|
||||
DEFINE fecha_ini,fecha_fin DATE,
|
||||
cod_n,cod_grupo,cod_tipo,cod_sec SMALLINT,
|
||||
# Indices de busqueda de las informaciones
|
||||
idx_1,idx_2,idx_3,idx_4,idx_6,idx_7,idx_e,idx_d,idx_c,idx_b,idx_a,
|
||||
i,j INTEGER
|
||||
|
||||
# Variables que determinaran el inventario inicial y el inventario final
|
||||
# El mes1 buscara el inventario inicial, mes_fin buscara el final.
|
||||
DEFINE mes_fin SMALLINT
|
||||
DEFINE mes1_1,mes1_2,mes2_1,mes2_2 DATE
|
||||
DEFINE mes1,ano1 SMALLINT
|
||||
# Variable para buscar el costo del ano
|
||||
DEFINE p_ano CHAR(4)
|
||||
|
||||
FUNCTION ctprrp033()
|
||||
#WHENEVER ERROR CONTINUE
|
||||
|
||||
OPTIONS
|
||||
FORM LINE 8,
|
||||
ERROR LINE 23,
|
||||
COMMENT LINE 21
|
||||
|
||||
OPEN FORM ctfmrp033 FROM "ctfmrp033"
|
||||
DISPLAY FORM ctfmrp033
|
||||
CALL pantalla()
|
||||
DISPLAY "ctprrp033" AT 4,3
|
||||
DISPLAY "Desperdicios de Materiales" AT 6,27
|
||||
|
||||
LET tipo_papel = 2
|
||||
CALL msgrp000(tipo_papel)
|
||||
LET p_ano = year(today) USING "&&&&"
|
||||
LET p_ano1= year(today) USING "&&&&"
|
||||
|
||||
########### Captura de valores para el criterio de busqueda ############
|
||||
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
|
||||
|
||||
LET p_ano = ano1 USING "&&&&"
|
||||
LET mes2 = mes1 - 1
|
||||
LET p_ano1 = ano1 USING "&&&&"
|
||||
IF mes1 = 1 THEN
|
||||
LET mes2 = 12
|
||||
LET p_ano1 = ano1 - 1 USING "&&&&"
|
||||
END IF
|
||||
|
||||
SELECT fecha_inicio,fecha_corte INTO mes1_1,mes1_2
|
||||
FROM prdtable WHERE mes = mes1 AND ano = p_ano
|
||||
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD mes
|
||||
END IF
|
||||
|
||||
END INPUT
|
||||
|
||||
########### Facilidad para cancelar la variacioncon la tecla DELETE ####
|
||||
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
LET int_flag = false
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
||||
FROM 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
|
||||
|
||||
# Busqueda del consumo standard del material, esto es
|
||||
# La multiplicacion de las cantidades que ha entrado a almacen de pilas
|
||||
# por el movimiento 20 del inventario de productos terminados por las cantidades
|
||||
# que contienen las formulas
|
||||
|
||||
LET selec4 =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,SUM((b.cantidad/1000)* ",
|
||||
" c.cantidad_2) ",
|
||||
"FROM iptb00006 c, catb00001 b,intb00001 a ",
|
||||
"WHERE b.cod_n_pt = c.cod_n AND b.cod_grupo_pt = c.cod_grupo AND ",
|
||||
" b.cod_tipo_pt = c.cod_tipo AND b.cod_sec_pt = c.cod_sec AND ",
|
||||
" b.cod_n_mp = a.cod_n AND b.cod_grupo_mp = a.cod_grupo AND ",
|
||||
" b.cod_tipo_mp = a.cod_tipo AND b.cod_sec_mp = a.cod_sec AND ",
|
||||
" c.cod_mov=20 AND c.fecha BETWEEN ? AND ? AND c.status_t IS NULL AND ",
|
||||
" b.status_t IS NULL AND ",criterio CLIPPED,
|
||||
" GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 "
|
||||
|
||||
DISPLAY "<<Buscando Consumo Standard ... Espere por Favor. >>" AT 17,14
|
||||
ATTRIBUTE(REVERSE,BOLD)
|
||||
|
||||
PREPARE comando4 FROM selec4
|
||||
DECLARE stand SCROLL CURSOR FOR comando4
|
||||
OPEN stand USING mes1_1,mes1_2
|
||||
|
||||
LET selec8 =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
|
||||
" a.unidad_med FROM intb00001 a,intb00002 b ",
|
||||
"WHERE 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 AND ",
|
||||
" a.status_t is null and b.status_t is null and ",
|
||||
criterio CLIPPED, " ORDER BY 1,2,3,4 "
|
||||
|
||||
DISPLAY "Buscando Materiales ... Espere Por Favor" AT 17,14
|
||||
ATTRIBUTE(BOLD)
|
||||
|
||||
LET selec11 =
|
||||
"SELECT COUNT(*) ",
|
||||
"FROM intb00001 a,intb00002 b ",
|
||||
"WHERE 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 AND ",
|
||||
criterio CLIPPED
|
||||
|
||||
PREPARE comando10 FROM selec11
|
||||
DECLARE busca10 CURSOR FOR comando10
|
||||
OPEN busca10
|
||||
|
||||
FETCH busca10 INTO regi
|
||||
|
||||
PREPARE comando FROM selec8
|
||||
DECLARE busca_ma CURSOR FOR comando
|
||||
OPEN busca_ma
|
||||
|
||||
# busqueda de la sumatoria del consumo del material que sale del almacen
|
||||
LET selec1 =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,sum(a.cantidad_2)*-1 ",
|
||||
"FROM intb00006 a ",
|
||||
"WHERE a.fecha BETWEEN ? AND ? AND a.cod_mov = 36 AND ",
|
||||
" a.status_t is null AND ",criterio CLIPPED,
|
||||
" GROUP BY 1,2,3,4 ORDER BY 1,2,3,4"
|
||||
|
||||
DISPLAY "<< Materiales en Proceso ... Espere Por Favor. >>" AT 17,14
|
||||
ATTRIBUTE(REVERSE,BOLD)
|
||||
|
||||
PREPARE comando8 FROM selec1
|
||||
DECLARE proces SCROLL CURSOR FOR comando8
|
||||
OPEN proces USING mes1_1,mes1_2
|
||||
|
||||
LET selec2 =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,MAX(a.cantidad) ",
|
||||
"FROM cttb00015 a ",
|
||||
"WHERE a.ano = ? AND a.mes = ? AND a.status_t is null AND ",
|
||||
criterio CLIPPED," GROUP BY 1,2,3,4 ORDER BY 1,2,3,4"
|
||||
|
||||
DISPLAY " " AT 17,14
|
||||
DISPLAY "<< Buscando Inv. Inicial ... Espere Por Favor. >>" AT 17,14
|
||||
ATTRIBUTE(REVERSE,BOLD)
|
||||
|
||||
PREPARE comando1 FROM selec2
|
||||
DECLARE inicio SCROLL CURSOR FOR comando1
|
||||
OPEN inicio USING p_ano1,mes2
|
||||
|
||||
# Busqueda del inventario final de la materia prima apartir del mes inicial
|
||||
# y el ano
|
||||
|
||||
LET selec3 =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,MAX(a.cantidad) ",
|
||||
"FROM cttb00015 a ",
|
||||
"WHERE a.mes = ? AND a.ano = ? AND a.status_t IS NULL AND ",
|
||||
criterio CLIPPED,"GROUP BY 1,2,3,4 ORDER BY 1,2,3,4"
|
||||
|
||||
DISPLAY " " AT 17,14
|
||||
DISPLAY "<< Buscando Inv. final ... Espere Por Favor. >>" AT 17,14
|
||||
ATTRIBUTE(REVERSE,BOLD)
|
||||
|
||||
PREPARE comando2 FROM selec3
|
||||
DECLARE fin SCROLL CURSOR FOR comando2
|
||||
OPEN fin USING mes1,ano1
|
||||
|
||||
# Busqueda del costo standard para cada material
|
||||
LET selec5 =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,MAX(a.costo_st) ",
|
||||
"FROM intb00013 a ",
|
||||
"WHERE a.ano = ? and a.status_t is null AND a.mes_fin = 12 AND ",
|
||||
criterio CLIPPED," GROUP BY 1,2,3,4 ORDER BY 1,2,3,4"
|
||||
|
||||
DISPLAY " " AT 17,14
|
||||
DISPLAY "<< Buscando Costos Std ... Espere Por Favor. >>" AT 17,14
|
||||
ATTRIBUTE(REVERSE,BOLD)
|
||||
|
||||
PREPARE comando5 FROM selec5
|
||||
DECLARE cost SCROLL CURSOR FOR comando5
|
||||
OPEN cost USING ano1
|
||||
DISPLAY " " AT 17,14
|
||||
|
||||
START REPORT desperdicio TO PIPE "lp -dcentral"
|
||||
|
||||
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
||||
AT 17,14 ATTRIBUTE (REVERSE)
|
||||
|
||||
# Loop inicial de busqueda de las informaciones de la materia prima
|
||||
|
||||
LET p_param = "S"
|
||||
LET salir = "N"
|
||||
WHILE salir != "S"
|
||||
FETCH busca_ma INTO maestra.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET salir = "S"
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
CALL termometro(regi,p_param)
|
||||
LET p_param = "N"
|
||||
|
||||
IF int_flag THEN
|
||||
LET int_flag = FALSE
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
LET datos1.cod_n = maestra.cod_n
|
||||
LET datos1.cod_grupo = maestra.cod_grupo
|
||||
LET datos1.cod_tipo = maestra.cod_tipo
|
||||
LET datos1.cod_sec = maestra.cod_sec
|
||||
LET datos1.descrip_esp = maestra.descrip_esp
|
||||
LET datos1.unidad_med = maestra.unidad_med
|
||||
LET datos1.mat_proceso = 0
|
||||
LET datos1.inv_inicial = 0
|
||||
LET datos1.cons_real = 0
|
||||
LET datos1.cons_std = 0
|
||||
LET datos1.costo = 0
|
||||
LET inicial1.cantidad = 0
|
||||
|
||||
LET cantidad_t = 0
|
||||
CALL calcula_sm13()
|
||||
IF cantidad_t is null THEN
|
||||
LET cantidad_t = 0
|
||||
END IF
|
||||
LET datos1.cant_env1 = cantidad_t
|
||||
LET cantidad_t = 0
|
||||
CALL calcula_sm3()
|
||||
|
||||
IF cantidad_t is null THEN
|
||||
LET cantidad_t = 0
|
||||
END IF
|
||||
|
||||
LET datos1.cant_env = cantidad_t
|
||||
|
||||
LET salir1 = "N"
|
||||
LET idx_1 = 1
|
||||
WHILE salir1 != "S"
|
||||
FETCH ABSOLUTE idx_1 inicio INTO inicial.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET salir1 = "S"
|
||||
LET idx_1 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
LET idx_1 = idx_1 + 1
|
||||
|
||||
IF datos1.cod_n = inicial.cod_n AND
|
||||
datos1.cod_grupo = inicial.cod_grupo AND
|
||||
datos1.cod_tipo = inicial.cod_tipo AND
|
||||
datos1.cod_sec = inicial.cod_sec THEN
|
||||
|
||||
LET datos1.inv_inicial = inicial.cantidad
|
||||
LET salir1 = "S"
|
||||
LET idx_1 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
END WHILE
|
||||
|
||||
IF datos1.inv_inicial IS NULL THEN
|
||||
LET datos1.inv_inicial = 0
|
||||
END IF
|
||||
|
||||
LET salir2 = "N"
|
||||
LET status = 0
|
||||
LET idx_2 = 1
|
||||
WHILE salir2 != "S"
|
||||
FETCH ABSOLUTE idx_2 fin INTO final.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET salir2 = "S"
|
||||
LET idx_2 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
LET idx_2 = idx_2 + 1
|
||||
|
||||
IF datos1.cod_n = final.cod_n AND
|
||||
datos1.cod_grupo = final.cod_grupo AND
|
||||
datos1.cod_tipo = final.cod_tipo AND
|
||||
datos1.cod_sec = final.cod_sec THEN
|
||||
|
||||
LET datos1.inv_final = final.cantidad
|
||||
LET salir2 = "S"
|
||||
LET idx_2 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
END WHILE
|
||||
|
||||
IF datos1.inv_final IS NULL THEN
|
||||
LET datos1.inv_final = 0
|
||||
END IF
|
||||
|
||||
LET salir3 = "N"
|
||||
LET idx_3 = 1
|
||||
WHILE salir3 != "S"
|
||||
FETCH ABSOLUTE idx_3 proces INTO proceso.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET salir3 = "S"
|
||||
LET idx_3 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
LET idx_3 = idx_3 + 1
|
||||
|
||||
IF datos1.cod_n = proceso.cod_n AND
|
||||
datos1.cod_grupo = proceso.cod_grupo AND
|
||||
datos1.cod_tipo = proceso.cod_tipo AND
|
||||
datos1.cod_sec = proceso.cod_sec THEN
|
||||
|
||||
LET datos1.mat_proceso = proceso.cantidad
|
||||
LET salir3 = "S"
|
||||
LET idx_3 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
END WHILE
|
||||
|
||||
IF datos1.mat_proceso IS NULL THEN
|
||||
LET datos1.mat_proceso = 0
|
||||
END IF
|
||||
|
||||
LET salir4 = "N"
|
||||
LET idx_4 = 1
|
||||
# Loop para la busqueda del consumo Estandard
|
||||
WHILE salir4 != "S"
|
||||
FETCH ABSOLUTE idx_4 stand INTO estandard.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET salir4 = "S"
|
||||
LET idx_4 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
LET idx_4 = idx_4 + 1
|
||||
|
||||
IF maestra.cod_n = estandard.cod_n AND
|
||||
maestra.cod_grupo = estandard.cod_grupo AND
|
||||
maestra.cod_tipo = estandard.cod_tipo AND
|
||||
maestra.cod_sec = estandard.cod_sec THEN
|
||||
|
||||
LET datos1.cons_std = estandard.cantidad
|
||||
LET salir4 = "S"
|
||||
LET idx_4 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
END WHILE
|
||||
|
||||
IF datos1.cons_std IS NULL THEN
|
||||
LET datos1.cons_std = 0
|
||||
END IF
|
||||
|
||||
LET salir6 = "N"
|
||||
LET idx_6 = 1
|
||||
WHILE salir6 != "S"
|
||||
FETCH ABSOLUTE idx_6 cost INTO costos1.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET salir6 = "S"
|
||||
LET idx_6 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
LET idx_6 = idx_6 + 1
|
||||
|
||||
IF maestra.cod_n = costos1.cod_n AND
|
||||
maestra.cod_grupo = costos1.cod_grupo AND
|
||||
maestra.cod_tipo = costos1.cod_tipo AND
|
||||
maestra.cod_sec = costos1.cod_sec THEN
|
||||
|
||||
LET datos1.costo = costos1.costo
|
||||
LET salir6 = "S"
|
||||
LET idx_6 = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
END WHILE
|
||||
|
||||
IF datos1.costo IS NULL THEN
|
||||
LET datos1.costo = 0
|
||||
END IF
|
||||
OUTPUT TO REPORT desperdicio(datos1.*,mes1_1,mes1_2)
|
||||
END WHILE
|
||||
|
||||
FINISH REPORT desperdicio
|
||||
CLEAR SCREEN
|
||||
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
||||
|
||||
# Rutina de Impresion de las informaciones
|
||||
REPORT desperdicio(x,fech1,fech2)
|
||||
|
||||
# Variable para tomar las informaciones
|
||||
DEFINE x RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descrip_esp CHAR(30),
|
||||
unidad_med CHAR(3),
|
||||
inv_inicial DECIMAL(12,2),
|
||||
inv_final DECIMAL(12,2),
|
||||
mat_proceso DECIMAL(12,2),
|
||||
cons_real DECIMAL(12,2),
|
||||
cons_std DECIMAL(12,2),
|
||||
cant_env DECIMAL(12,2),
|
||||
cant_env1 DECIMAL(12,2),
|
||||
costo DECIMAL(12,2)
|
||||
END RECORD,
|
||||
stand DECIMAL(12,2),
|
||||
cons_proc DECIMAL(12,2),
|
||||
cons_real DECIMAL(12,2),
|
||||
var DECIMAL(12,2),
|
||||
var1 DECIMAL(5,2),
|
||||
descrip_esp CHAR(30),
|
||||
unidad_med CHAR(20),
|
||||
in_ini DECIMAL(12,2),
|
||||
in_fin DECIMAL(12,2),
|
||||
desp DECIMAL(12,2)
|
||||
|
||||
# Vaiables para la impresion de caracters ASCII
|
||||
DEFINE fech1,fech2 DATE
|
||||
DEFINE doble_on CHAR(3)
|
||||
DEFINE doble_off CHAR(3)
|
||||
DEFINE negrillas_on CHAR(6)
|
||||
DEFINE negrillas_off CHAR(6)
|
||||
DEFINE comp_on CHAR(3)
|
||||
DEFINE comp_off CHAR(2)
|
||||
DEFINE doce CHAR(3)
|
||||
DEFINE normal CHAR(3)
|
||||
DEFINE hora CHAR(5)
|
||||
|
||||
# Variables para diferentes calculos que se especificaran mas adelante
|
||||
DEFINE val_desp,t_val_desp,valor,t_valor,
|
||||
total_p,total_m DECIMAL(12,2)
|
||||
|
||||
# Variables para el nombre de los meses
|
||||
DEFINE nom_mes1,nom_mes2 CHAR(12)
|
||||
|
||||
OUTPUT
|
||||
TOP MARGIN 0
|
||||
LEFT MARGIN 0
|
||||
BOTTOM MARGIN 2
|
||||
FORMAT
|
||||
|
||||
PAGE HEADER
|
||||
|
||||
# Validacion de los caracteres ascii
|
||||
LET doble_on = ASCII 001
|
||||
LET doble_off = ASCII 002
|
||||
LET negrillas_on = ASCII 27, ASCII 098
|
||||
LET negrillas_off = ASCII 27, ASCII 099
|
||||
LET comp_on = ASCII 31
|
||||
LET comp_off = ASCII 029
|
||||
LET doce = ASCII 030
|
||||
LET normal = ASCII 029
|
||||
LET hora = time
|
||||
LET l = (90 - LENGTH(p_compania.nombre CLIPPED)) / 2
|
||||
# Impresion de los encabezados
|
||||
PRINT comp_off,negrillas_on
|
||||
PRINT COLUMN 1, "ctprrp033",
|
||||
COLUMN l, p_compania.nombre CLIPPED,
|
||||
COLUMN 80, "Pag. ",
|
||||
pageno using "###"
|
||||
|
||||
LET l = (90 - LENGTH("Sistema de Costos")) / 2
|
||||
PRINT COLUMN l, "Sistema de Costos",
|
||||
COLUMN 80, today using "dd/mm/yy"
|
||||
|
||||
LET l = (90 - LENGTH("DESPERDICIOS DE MATERIALES")) / 2
|
||||
PRINT COLUMN l, "DESPERDICIOS DE MATERIALES",
|
||||
COLUMN 80, hora
|
||||
PRINT COLUMN 1,comp_on,negrillas_on
|
||||
PRINT COLUMN 1,"Periodo: ",fech1 USING "dd/mm/yy",
|
||||
" AL ",fech2 USING "dd/mm/yy"
|
||||
PRINT COLUMN 1,
|
||||
"---------------------------------------------------------",
|
||||
"---------------------------------------------------------",
|
||||
"-----------------------------------------------------------"
|
||||
|
||||
PRINT COLUMN 46, "Materiales",
|
||||
COLUMN 58,"Inventario",
|
||||
COLUMN 70, "Inventario"
|
||||
|
||||
PRINT COLUMN 1, "Material",
|
||||
COLUMN 46, "A Proceso",
|
||||
COLUMN 58, "Inicial",
|
||||
COLUMN 70, "Final",
|
||||
COLUMN 87, "Cantidad",
|
||||
COLUMN 97, "Desperdicio",
|
||||
COLUMN 114, "Costo",
|
||||
COLUMN 130, "Valor"
|
||||
|
||||
PRINT COLUMN 58, fech1 using "dd/mm/yy",
|
||||
COLUMN 87, "Standard"
|
||||
|
||||
PRINT COLUMN 1,
|
||||
"--------------------------------------------------------",
|
||||
"--------------------------------------------------------",
|
||||
"----------------------------------------------------------"
|
||||
,negrillas_off
|
||||
|
||||
ON EVERY ROW
|
||||
|
||||
# Calculo para valorizar la variacion
|
||||
IF t_val_desp is null THEN
|
||||
LET t_val_desp = 0
|
||||
END IF
|
||||
|
||||
IF x.costo IS NULL THEN
|
||||
LET x.costo = 0
|
||||
END IF
|
||||
|
||||
|
||||
IF x.mat_proceso < 0 THEN
|
||||
LET x.mat_proceso = x.mat_proceso * -1
|
||||
END IF
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Calculo del desperdicio del material y Valorizacion
|
||||
LET x.inv_final = x.inv_final + x.cant_env
|
||||
LET x.inv_inicial = x.inv_inicial + x.cant_env1
|
||||
|
||||
LET desp = x.mat_proceso + x.inv_inicial - x.inv_inicial - x.cons_std
|
||||
LET val_desp = desp * x.costo
|
||||
|
||||
LET t_val_desp = t_val_desp + val_desp
|
||||
|
||||
PRINT COLUMN 1, x.cod_n using "&",x.cod_grupo USING "&",
|
||||
x.cod_tipo USING "&&",x.cod_sec USING "&&&"," ",
|
||||
x.descrip_esp," ",
|
||||
x.unidad_med,
|
||||
COLUMN 43, x.mat_proceso USING "##,###,###.##",
|
||||
COLUMN 57, x.inv_inicial USING "###,###.##",
|
||||
COLUMN 69, x.inv_final USING "###,###.###",
|
||||
COLUMN 82, x.cons_std USING "(((,(((,((#.##)",
|
||||
COLUMN 96, desp USING "(((,(((,(##.##)",
|
||||
COLUMN 110, x.costo USING "##,###.##",
|
||||
COLUMN 121, val_desp USING "###,###,###.##"
|
||||
|
||||
# Impresion de la totalizacion del valor standard
|
||||
ON LAST ROW
|
||||
PRINT negrillas_on
|
||||
PRINT COLUMN 121, "----------------"
|
||||
|
||||
PRINT COLUMN 118, t_val_desp using "#,###,###,###.##"
|
||||
|
||||
LET t_val_desp = 0
|
||||
LET t_valor = 0
|
||||
|
||||
PRINT negrillas_off,comp_off
|
||||
END REPORT
|
||||
|
||||
FUNCTION calcula_sm13()
|
||||
DEFINE prod RECORD
|
||||
cod_prod SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD,
|
||||
factor,cantidad_f DECIMAL(8,5),
|
||||
cantidad_i DECIMAL(12,3)
|
||||
|
||||
DECLARE busca1 CURSOR FOR
|
||||
SELECT unique a.cod_prod,a.cant_prop,(a.cant_prop * b.cantidad) * 1000
|
||||
FROM cttb00022 a,cttb00014 b
|
||||
WHERE a.cod_n = datos1.cod_n and a.cod_grupo = datos1.cod_grupo and
|
||||
a.cod_tipo = datos1.cod_tipo and a.cod_sec = datos1.cod_sec and
|
||||
a.cod_prod = b.cod_prod and b.mes = mes2 and b.ano = p_ano1 and
|
||||
a.status_t is null
|
||||
|
||||
FOREACH busca1 INTO prod.*,cantidad_i
|
||||
IF prod.cantidad is null THEN
|
||||
LET prod.cantidad = 0
|
||||
END IF
|
||||
LET cantidad_t = cantidad_t + cantidad_i
|
||||
END FOREACH
|
||||
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
||||
|
||||
FUNCTION calcula_sm3()
|
||||
DEFINE prod RECORD
|
||||
cod_prod SMALLINT,
|
||||
cantidad DECIMAL(12,2)
|
||||
END RECORD,
|
||||
factor,cantidad_f DECIMAL(8,5),
|
||||
cantidad_i DECIMAL(12,3)
|
||||
|
||||
DECLARE busca CURSOR FOR
|
||||
SELECT unique a.cod_prod,a.cant_prop,(a.cant_prop*b.cantidad)*1000
|
||||
FROM cttb00022 a,cttb00014 b
|
||||
WHERE a.cod_n = datos1.cod_n and a.cod_grupo = datos1.cod_grupo and
|
||||
a.cod_tipo = datos1.cod_tipo and a.cod_sec = datos1.cod_sec and
|
||||
a.cod_prod = b.cod_prod and b.mes = mes1 and
|
||||
b.ano = ano1 and a.status_t is null
|
||||
|
||||
FOREACH busca INTO prod.*,cantidad_i
|
||||
IF prod.cantidad is null THEN
|
||||
LET prod.cantidad = 0
|
||||
END IF
|
||||
|
||||
LET cantidad_t = cantidad_t + cantidad_i
|
||||
END FOREACH
|
||||
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
||||
Reference in New Issue
Block a user