1708 lines
67 KiB
Plaintext
1708 lines
67 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : COPRRP011
|
|
OBJETIVO : Reporte Resumido de Proyecciones
|
|
PROGRAMADOR : Lic. Abner Montalvo Z.
|
|
FECHA REALIZACION : Septiembre 19, 1992.
|
|
------------------------------------------------------------------
|
|
}
|
|
DATABASE marmotech
|
|
|
|
GLOBALS
|
|
DEFINE criterio CHAR(1000)
|
|
DEFINE parar,salir,salir1,salir_m CHAR(1),
|
|
formulario,linea_mensaje CHAR(80)
|
|
|
|
DEFINE meses_py SMALLINT,
|
|
fecha_inicial_py DATE,
|
|
fecha_final_py DATE,
|
|
fecha_final CHAR(6)
|
|
|
|
DEFINE mes_ini SMALLINT,
|
|
mes_fin SMALLINT,
|
|
mes1 SMALLINT,
|
|
mes2 SMALLINT,
|
|
mes3 SMALLINT,
|
|
posicion SMALLINT,
|
|
posicion1 SMALLINT,
|
|
posicion2 SMALLINT,
|
|
mes_proceso SMALLINT,
|
|
ano_fin CHAR(4),
|
|
dia_ini SMALLINT,
|
|
rango_p CHAR(4),
|
|
total_registros SMALLINT
|
|
|
|
DEFINE mes_agot1 CHAR(13),
|
|
mes_agot2 CHAR(13),
|
|
mes_reorden CHAR(13),
|
|
primera_vez1 CHAR(1),
|
|
primera_vez2 CHAR(1),
|
|
cantidad1,acum_mvtos,acum_parcial DECIMAL(13,4),
|
|
cantidad2 DECIMAL(13,4),
|
|
fecha1 DATE,
|
|
fecha2 DATE,
|
|
descrip3 CHAR(30),
|
|
tipo_material CHAR(11),
|
|
unidad CHAR(3)
|
|
|
|
DEFINE balances RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
balan_corte DECIMAL(13,4)
|
|
END RECORD
|
|
|
|
DEFINE mat_primas RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT
|
|
END RECORD
|
|
|
|
DEFINE sustituto RECORD
|
|
cod_n_s SMALLINT,
|
|
cod_grupo_s SMALLINT,
|
|
cod_tipo_s SMALLINT,
|
|
cod_sec_s SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT
|
|
END RECORD
|
|
|
|
DEFINE balan_ini DECIMAL(13,4),
|
|
balan_ini_sin_oc DECIMAL(13,4),
|
|
balan_fin DECIMAL(13,4)
|
|
|
|
# DEFINE mvtos RECORD
|
|
# cod_mov SMALLINT,
|
|
# status_mov CHAR(1),
|
|
# cantidad_1 DECIMAL(13,4),
|
|
# cantidad_2 DECIMAL(13,4)
|
|
# END RECORD
|
|
|
|
DEFINE cantidad_usada DECIMAL(13,4),
|
|
cantidad_producir DECIMAL(13,4),
|
|
consumo_mes DECIMAL(13,4),
|
|
monto_orden DECIMAL(13,4),
|
|
cantidad_orden DECIMAL(13,4),
|
|
balance_inicial_periodo DECIMAL(13,4),
|
|
consumo_periodo DECIMAL(13,4),
|
|
ordenes_periodo DECIMAL(13,4),
|
|
balance_final_periodo DECIMAL(13,4)
|
|
|
|
DEFINE consumos RECORD
|
|
meses SMALLINT,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
consumo_mes DECIMAL(13,4)
|
|
END RECORD
|
|
|
|
DEFINE s_sustituto RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cod_n_s SMALLINT,
|
|
cod_grupo_s SMALLINT,
|
|
cod_tipo_s SMALLINT,
|
|
cod_sec_s SMALLINT,
|
|
mes SMALLINT,
|
|
num_orden SMALLINT,
|
|
fecha_entrega DATE,
|
|
cantidad DECIMAL(13,4),
|
|
cantidad_r DECIMAL(13,4),
|
|
precio DECIMAL(13,4),
|
|
base DECIMAL(13,4)
|
|
END RECORD
|
|
|
|
DEFINE p_equivale RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cod_n_e SMALLINT,
|
|
cod_grupo_e SMALLINT,
|
|
cod_tipo_e SMALLINT,
|
|
cod_sec_e SMALLINT,
|
|
mes SMALLINT,
|
|
num_orden SMALLINT,
|
|
fecha_entrega DATE,
|
|
cantidad DECIMAL(13,4),
|
|
cantidad_r DECIMAL(13,4),
|
|
precio DECIMAL(13,4),
|
|
base DECIMAL(13,4)
|
|
END RECORD
|
|
|
|
DEFINE ordenesss RECORD
|
|
cod_n_se SMALLINT,
|
|
cod_grupo_se SMALLINT,
|
|
cod_tipo_se SMALLINT,
|
|
cod_sec_se SMALLINT,
|
|
mes SMALLINT,
|
|
num_orden SMALLINT,
|
|
fecha_entrega DATE,
|
|
cantidad DECIMAL(13,4),
|
|
cantidad_r DECIMAL(13,4),
|
|
precio DECIMAL(13,4),
|
|
base DECIMAL(13,4)
|
|
END RECORD
|
|
|
|
DEFINE mvtos_mp RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
num_orden SMALLINT,
|
|
fecha_mov DATE,
|
|
cantidad DECIMAL(13,4)
|
|
END RECORD
|
|
|
|
DEFINE pb RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad DECIMAL(13,4),
|
|
precio DECIMAL(13,4),
|
|
base DECIMAL(13,4)
|
|
END RECORD
|
|
|
|
DEFINE mes_busca CHAR(2),
|
|
idx_c,idx,idx_b,idx_or,idx_e,idx_s SMALLINT,
|
|
numero_msg SMALLINT,
|
|
limpia_linea CHAR(79)
|
|
|
|
DEFINE bi ARRAY[100] OF RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cod_n_se SMALLINT,
|
|
cod_grupo_se SMALLINT,
|
|
cod_tipo_se SMALLINT,
|
|
cod_sec_se SMALLINT,
|
|
tipo CHAR(1),
|
|
balan_ini DECIMAL (13,4)
|
|
END RECORD
|
|
|
|
DEFINE oc ARRAY[100] OF RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cod_n_se SMALLINT,
|
|
cod_grupo_se SMALLINT,
|
|
cod_tipo_se SMALLINT,
|
|
cod_sec_se SMALLINT,
|
|
mes SMALLINT,
|
|
num_orden SMALLINT,
|
|
fecha_ent DATE,
|
|
cantidad DECIMAL (13,4),
|
|
precio DECIMAL (13,4),
|
|
impuesto DECIMAL (13,4) ,
|
|
bandera CHAR(1)
|
|
END RECORD
|
|
|
|
DEFINE bm ARRAY[100] OF RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes SMALLINT,
|
|
balan_ini DECIMAL (13,4),
|
|
consumo_mes DECIMAL (13,4),
|
|
balan_fin DECIMAL (13,4),
|
|
agot1 CHAR (15),
|
|
agot2 CHAR (15),
|
|
pto_reorden CHAR (15)
|
|
END RECORD
|
|
|
|
DEFINE a, b, c, d, j, tipo_papel SMALLINT
|
|
|
|
DEFINE calc_agot_sin_oc CHAR(1),
|
|
calc_agot_con_oc, encontre CHAR(1),
|
|
cant_orden_mes DECIMAL (13,4),
|
|
agot_sin_oc DECIMAL (13,4),
|
|
agot_con_oc DECIMAL (13,4),
|
|
fecha_agot_sin_oc CHAR(15),
|
|
fecha_agot_con_oc CHAR(15),
|
|
nombre_mes , materia_prima CHAR(10),
|
|
total_precio,consumo_dia, meses_llegada, mes_decimal DECIMAL (10,2),
|
|
fletes, otros_gastos, cf, cif, gravamenes,
|
|
porc_rc, porc1, porc_grav, impuesto, porc_precio, precio_mp,
|
|
cf_mp, g_seguro, recibido, cantidad_imp DECIMAL (13,4),
|
|
dia_agotar, cdll, dias_llegada, mes_entero,
|
|
porc_total_rc, porc_total_grav,idx_10, idx_11 SMALLINT,
|
|
mes_pedido INTEGER,
|
|
pto_reorden CHAR(15)
|
|
|
|
DEFINE select_cons,select_mp,select_bal,select_orden,select_equi,select_s,
|
|
select_sust,select_e, select_princ CHAR(1500)
|
|
END GLOBALS
|
|
|
|
FUNCTION coprrp011()
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 9,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM coprrp011 FROM "cofmrp011"
|
|
DISPLAY FORM coprrp011
|
|
CALL pantalla()
|
|
DISPLAY "coprrp011" AT 4,3
|
|
DISPLAY "Resumen de Proyecciones" AT 6,28
|
|
LET tipo_papel = 2
|
|
CALL msgrp000(tipo_papel)
|
|
CALL copcrp011()
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
FUNCTION copcrp011()
|
|
LET int_flag = FALSE
|
|
|
|
INPUT BY NAME meses_py,
|
|
fecha_inicial_py
|
|
|
|
AFTER FIELD meses_py
|
|
IF meses_py IS NULL OR
|
|
meses_py = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD meses_py
|
|
END IF
|
|
|
|
AFTER FIELD fecha_inicial_py
|
|
IF fecha_inicial_py IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_inicial_py
|
|
END IF
|
|
|
|
LET mes_fin = MONTH(fecha_inicial_py)
|
|
LET ano_fin = YEAR(fecha_inicial_py)
|
|
FOR idx = 1 TO meses_py
|
|
LET mes_fin = mes_fin + 1
|
|
IF mes_fin > 12 THEN
|
|
LET mes_fin = 1
|
|
LET ano_fin = ano_fin + 1
|
|
END IF
|
|
END FOR
|
|
|
|
LET dia_ini = DAY(fecha_inicial_py)
|
|
LET mes_ini = MONTH(fecha_inicial_py)
|
|
|
|
IF dia_ini > 15 THEN
|
|
LET mes2 = mes_fin
|
|
LET mes_fin = mes_fin + 1
|
|
IF mes_fin > 12 THEN
|
|
LET mes_fin = 1
|
|
END IF
|
|
END IF
|
|
|
|
LET rango_p = MONTH(fecha_inicial_py) using "&&",
|
|
mes_fin using "&&"
|
|
|
|
IF dia_ini > 15 THEN
|
|
LET mes_fin = mes2
|
|
LET mes2 = 0
|
|
END IF
|
|
|
|
LET fecha_final = DAY(fecha_inicial_py) using "&&",
|
|
mes_fin using "&&",
|
|
ano_fin[3,4] using "&&"
|
|
LET fecha_final_py = fecha_final
|
|
|
|
LET total_registros = null
|
|
SELECT count(*) INTO total_registros FROM cotb00026
|
|
WHERE rango_plan = rango_p AND
|
|
fecha_ini = fecha_inicial_py AND
|
|
status_t is NULL
|
|
|
|
IF total_registros = 0 OR
|
|
total_registros IS NULL THEN
|
|
LET numero_msg = 48
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD meses_py
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
EXIT INPUT
|
|
|
|
|
|
LET dia_ini = DAY(fecha_inicial_py)
|
|
LET mes_ini = MONTH(fecha_inicial_py)
|
|
LET mes_fin = MONTH(fecha_inicial_py) + meses_py
|
|
|
|
IF dia_ini > 15 THEN
|
|
LET mes2 = mes_fin
|
|
LET mes_fin = mes_fin + 1
|
|
IF mes_fin > 12 THEN
|
|
LET mes_fin = 1
|
|
END IF
|
|
END IF
|
|
|
|
LET rango_p = MONTH(fecha_inicial_py) using "&&",
|
|
mes_fin using "&&"
|
|
|
|
IF dia_ini > 15 THEN
|
|
LET mes_fin = mes2
|
|
LET mes2 = 0
|
|
END IF
|
|
|
|
LET total_registros = null
|
|
SELECT count(*) INTO total_registros FROM cotb00026
|
|
WHERE rango_plan = rango_p AND
|
|
fecha_ini = fecha_inicial_py AND
|
|
status_t is NULL
|
|
|
|
IF total_registros = 0 OR
|
|
total_registros IS NULL THEN
|
|
LET numero_msg = 48
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD meses_py
|
|
END IF
|
|
END INPUT
|
|
|
|
CONSTRUCT criterio ON x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_Sec
|
|
FROM cod_n,cod_grupo,cod_tipo,cod_sec
|
|
|
|
LET total_registros = 0
|
|
LET limpia_linea = " ",
|
|
" ",
|
|
" ",
|
|
" "
|
|
DISPLAY limpia_linea AT 15,1
|
|
DISPLAY limpia_linea AT 16,1
|
|
DISPLAY limpia_linea AT 18,1
|
|
|
|
DISPLAY " Realizando Calculos para el Plan de Produccion "
|
|
AT 15,16 ATTRIBUTE (REVERSE, YELLOW)
|
|
DISPLAY " Por Favor, Espere ... "
|
|
AT 16,28 ATTRIBUTE (REVERSE, YELLOW)
|
|
|
|
# Funcion que actualiza las cantidades parciales con lo recibido
|
|
|
|
# CALL cofurp001()
|
|
|
|
START REPORT proyeccion2 TO "C:\\archivo"
|
|
|
|
LET a = 0
|
|
LET b = 0
|
|
LET c = 0
|
|
|
|
LET select_princ = "SELECT x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec, ",
|
|
"x.orden_compra,x.fecha,x.cantidad_2 ",
|
|
"FROM intb00006 x ",
|
|
"WHERE x.status_t is null and ",
|
|
"x.orden_compra is not null and ",
|
|
"x.cantidad_2 > 0 and ",
|
|
"x.fecha between ? and ? and ",
|
|
criterio clipped,
|
|
" ORDER BY 1,2,3,4,5,6 "
|
|
|
|
DISPLAY "Estoy buscando los movimientos de los materiales" AT 18,15
|
|
PREPARE busca_princ FROM select_princ
|
|
DECLARE mvtos_mater SCROLL CURSOR FOR busca_princ
|
|
OPEN mvtos_mater USING fecha_inicial_py, fecha_final_py
|
|
|
|
LET select_e =
|
|
"SELECT s.cod_n,s.cod_grupo,s.cod_tipo,s.cod_sec, ",
|
|
"s.cod_n_e, s.cod_grupo_e, s.cod_tipo_e, ",
|
|
"s.cod_sec_e ",
|
|
" FROM intb00004 s, intb00002 x ",
|
|
"WHERE s.status_t IS NULL AND ",
|
|
"s.cod_n_e = x.cod_n AND ",
|
|
"s.cod_grupo_e = x.cod_grupo AND ",
|
|
"s.cod_tipo_e = x.cod_tipo AND ",
|
|
"s.cod_sec_e = x.cod_sec AND ",
|
|
"s.status_t IS NULL AND ",
|
|
"x.status_t IS NULL ",
|
|
" ORDER BY 1,2,3,4"
|
|
|
|
DISPLAY "Estoy buscando las materias primas p_equivalentes" AT 18,15
|
|
PREPARE busca_p_equivale FROM select_e
|
|
DECLARE material_equiv SCROLL CURSOR FOR busca_p_equivale
|
|
OPEN material_equiv
|
|
|
|
LET select_s =
|
|
"SELECT o.cod_n,o.cod_grupo,o.cod_tipo,o.cod_sec, ",
|
|
"o.cod_n_s, o.cod_grupo_s, o.cod_tipo_s, ",
|
|
"o.cod_sec_s ",
|
|
"FROM intb00003 o, intb00002 x ",
|
|
"WHERE o.status_t IS NULL AND ",
|
|
"o.cod_n_s = x.cod_n AND ",
|
|
"o.cod_grupo_s = x.cod_grupo AND ",
|
|
"o.cod_tipo_s = x.cod_tipo AND ",
|
|
"o.cod_sec_s = x.cod_sec AND ",
|
|
"o.status_t IS NULL AND ",
|
|
"x.status_t IS NULL ",
|
|
" ORDER BY 1,2,3,4 "
|
|
|
|
DISPLAY "Estoy buscando todas la materias primas sustitutas" AT 18,15
|
|
PREPARE busca_todos_s FROM select_s
|
|
DECLARE material_sust SCROLL CURSOR FOR busca_todos_s
|
|
OPEN material_sust
|
|
|
|
LET select_cons =
|
|
"SELECT MONTH(x.fecha_ini),a4.cod_n_mp,a4.cod_grupo_mp, ",
|
|
" a4.cod_tipo_mp, ",
|
|
"a4.cod_sec_mp,",
|
|
" sum(a4.cantidad * x.cantidad / c4.base_medida) ",
|
|
" FROM catb00001 a4, cotb00026 x, catb00002 c4 ",
|
|
"WHERE a4.cod_n_pt = x.cod_n AND ",
|
|
"a4.cod_grupo_pt = x.cod_grupo AND ",
|
|
"a4.cod_tipo_pt = x.cod_tipo AND ",
|
|
"a4.cod_sec_pt = x.cod_sec AND ",
|
|
"a4.num_formula = c4.num_formula AND ",
|
|
"c4.uso = 'S' AND ",
|
|
"x.rango_plan = ? ",
|
|
" GROUP BY 1,2,3,4,5 ",
|
|
"ORDER BY 2,3,4,5,1 "
|
|
|
|
DISPLAY "Estoy buscando el consumo de las materias primas principales"
|
|
AT 18,10
|
|
PREPARE prep_consumo FROM select_cons
|
|
DECLARE busca_cons SCROLL CURSOR FOR prep_consumo
|
|
OPEN busca_cons USING rango_p
|
|
|
|
LET select_sust =
|
|
"SELECT UNIQUE d2.cod_n,d2.cod_grupo,d2.cod_tipo, ",
|
|
"d2.cod_sec,a2.cod_n, a2.cod_grupo, ",
|
|
"a2.cod_tipo, a2.cod_sec, ",
|
|
"MONTH(c2.fecha_ini), a2.num_oc, ",
|
|
"a2.fech_ent, a2.cantidad, ",
|
|
"a2.cantidad_r, x.precio, e2.base ",
|
|
"FROM cotb00025 a2, cotb00015 x, cotb00026 c2, ",
|
|
"intb00003 d2, intb00002 e2, cotb00014 f2 ",
|
|
"WHERE a2.cod_n = x.cod_n AND ",
|
|
"a2.cod_grupo = x.cod_grupo AND ",
|
|
"a2.cod_tipo = x.cod_tipo AND ",
|
|
"a2.cod_sec = x.cod_sec AND ",
|
|
"a2.cod_n = d2.cod_n_s AND ",
|
|
"a2.cod_grupo = d2.cod_grupo_s AND ",
|
|
"a2.cod_tipo = d2.cod_tipo_s AND ",
|
|
"a2.cod_sec = d2.cod_sec_s AND ",
|
|
"e2.cod_n = a2.cod_n AND ",
|
|
"e2.cod_grupo = a2.cod_grupo AND ",
|
|
"e2.cod_tipo = a2.cod_tipo AND ",
|
|
"e2.cod_sec = a2.cod_sec AND ",
|
|
"a2.num_req = x.num_req AND ",
|
|
"a2.num_oc = x.num_oc AND ",
|
|
"x.num_oc = f2.num_oc AND ",
|
|
"d2.status_t IS NULL AND ",
|
|
"c2.rango_plan = ? AND ",
|
|
"f2.cierre = 'N' AND ",
|
|
"a2.fech_ent between c2.fecha_ini AND ",
|
|
"c2.fecha_fin ",
|
|
" ORDER BY 1,2,3,4,10,11 "
|
|
|
|
DISPLAY " Estoy buscando las ordenes de compras de los sustitutos "
|
|
AT 18,10
|
|
PREPARE busca_sustituto FROM select_sust
|
|
DECLARE ordenes_sust SCROLL CURSOR FOR busca_sustituto
|
|
OPEN ordenes_sust USING rango_p
|
|
|
|
LET select_equi =
|
|
"SELECT UNIQUE d3.cod_n,d3.cod_grupo, ",
|
|
"d3.cod_tipo,d3.cod_sec,",
|
|
"a3.cod_n, a3.cod_grupo, ",
|
|
"a3.cod_tipo, a3.cod_sec, ",
|
|
"MONTH(c3.fecha_ini), a3.num_oc, ",
|
|
"a3.fech_ent, a3.cantidad, ",
|
|
"a3.cantidad_r, x.precio, e3.base ",
|
|
"FROM cotb00025 a3, cotb00015 x, cotb00026 c3, ",
|
|
"intb00004 d3, intb00002 e3, cotb00014 f3 ",
|
|
"WHERE a3.cod_n = x.cod_n AND ",
|
|
"a3.cod_grupo = x.cod_grupo AND ",
|
|
"a3.cod_tipo = x.cod_tipo AND ",
|
|
"a3.cod_sec = x.cod_sec AND ",
|
|
"a3.cod_n = d3.cod_n_e AND ",
|
|
"a3.cod_grupo = d3.cod_grupo_e AND ",
|
|
"a3.cod_tipo = d3.cod_tipo_e AND ",
|
|
"a3.cod_sec = d3.cod_sec_e AND ",
|
|
"e3.cod_n = a3.cod_n AND ",
|
|
"e3.cod_grupo = a3.cod_grupo AND ",
|
|
"e3.cod_tipo = a3.cod_tipo AND ",
|
|
"e3.cod_sec = a3.cod_sec AND ",
|
|
"a3.num_req = x.num_req AND ",
|
|
"a3.num_oc = x.num_oc AND ",
|
|
"x.num_oc = f3.num_oc AND ",
|
|
"c3.rango_plan = ? AND ",
|
|
"f3.cierre = 'N' AND ",
|
|
"d3.status_t IS NULL AND ",
|
|
"a3.fech_ent between c3.fecha_ini AND ",
|
|
"c3.fecha_fin ",
|
|
"ORDER BY 1,2,3,4,10,11 "
|
|
|
|
DISPLAY " Estoy buscando las ordenes de compras de los p_equivalentes "
|
|
AT 18,10
|
|
PREPARE p_equivalentes FROM select_equi
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
DECLARE ordenes_equiv SCROLL CURSOR FOR p_equivalentes
|
|
OPEN ordenes_equiv USING rango_p
|
|
|
|
# Busca los Balances de las Materias Primas
|
|
|
|
LET select_bal =
|
|
"SELECT x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,SUM(x.cantidad_2) ",
|
|
"FROM intb00006 x ",
|
|
"WHERE ",criterio clipped,
|
|
" AND x.fecha < ? AND ",
|
|
"x.status_t IS NULL ",
|
|
" GROUP BY 1,2,3,4 ",
|
|
" ORDER BY 1,2,3,4 "
|
|
|
|
DISPLAY "Estoy buscando los balances iniciales de las materias primas"
|
|
AT 18,10
|
|
PREPARE busca_balan FROM select_bal
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
DECLARE balan_prima SCROLL CURSOR FOR busca_balan
|
|
OPEN balan_prima USING fecha_inicial_py
|
|
|
|
# Busca las Ordenes de cada material con su fecha de entregas parciales
|
|
|
|
LET select_orden =
|
|
"SELECT UNIQUE x.cod_n, x.cod_grupo, ",
|
|
"x.cod_tipo, x.cod_sec, ",
|
|
"MONTH(c1.fecha_ini), a1.num_oc, ",
|
|
"a1.fech_ent, a1.cantidad, a1.cantidad_r, ",
|
|
"x.precio, e1.base ",
|
|
"FROM cotb00025 a1, cotb00015 x, cotb00026 c1,",
|
|
"intb00002 e1, cotb00014 f1 ",
|
|
"WHERE a1.cod_n = x.cod_n AND ",
|
|
"a1.cod_grupo = x.cod_grupo AND ",
|
|
"a1.cod_tipo = x.cod_tipo AND ",
|
|
"a1.cod_sec = x.cod_sec AND ",
|
|
"e1.cod_n = a1.cod_n AND ",
|
|
"e1.cod_grupo = a1.cod_grupo AND ",
|
|
"e1.cod_tipo = a1.cod_tipo AND ",
|
|
"e1.cod_sec = a1.cod_sec AND ",
|
|
"a1.num_req = x.num_req AND ",
|
|
"a1.num_oc = x.num_oc AND ",
|
|
"x.num_oc = f1.num_oc AND ",
|
|
"f1.cierre = 'N' AND ",
|
|
"c1.rango_plan = ? AND ",
|
|
"a1.fech_ent between c1.fecha_ini AND ",
|
|
" c1.fecha_fin ",
|
|
" ORDER BY 1,2,3,4,6,7 "
|
|
|
|
DISPLAY "Estoy buscando las ordenes de las materias primas principales"
|
|
AT 18,10
|
|
PREPARE busca_ordenes FROM select_orden
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
DECLARE ordenes_material SCROLL CURSOR FOR busca_ordenes
|
|
OPEN ordenes_material USING rango_p
|
|
|
|
# Busca el Material Principal y le calcula el balance inicial a la fecha
|
|
|
|
LET select_mp = "SELECT UNIQUE x.cod_n, x.cod_grupo,",
|
|
"x.cod_tipo, x.cod_sec ",
|
|
"FROM intb00002 x, catb00001 y ",
|
|
"WHERE ",criterio clipped,
|
|
" AND x.cod_n = y.cod_n_mp AND ",
|
|
"x.cod_grupo = y.cod_grupo_mp AND ",
|
|
"x.cod_tipo = y.cod_tipo_mp AND ",
|
|
"x.cod_sec = y.cod_sec_mp AND ",
|
|
"x.status_t IS NULL AND ",
|
|
"y.status_t IS NULL ",
|
|
"ORDER BY 1, 2, 3, 4 "
|
|
|
|
DISPLAY " Estoy buscando las materias primas principales "
|
|
AT 18,10
|
|
PREPARE busca_mat_prima FROM select_mp
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
DECLARE material CURSOR FOR busca_mat_prima
|
|
OPEN material
|
|
LET idx_c = 1
|
|
LET idx_e = 1
|
|
LET idx_s = 1
|
|
LET idx_or = 1
|
|
LET idx_b = 1
|
|
LET idx_10 = 1
|
|
|
|
DISPLAY " "
|
|
AT 18,10
|
|
WHILE status != NOTFOUND
|
|
FETCH material INTO mat_primas.*
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
IF status = NOTFOUND THEN
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
DISPLAY mat_primas.cod_n at 18,25
|
|
DISPLAY mat_primas.cod_grupo at 18,35
|
|
DISPLAY mat_primas.cod_tipo using "&&" at 18,45
|
|
DISPLAY mat_primas.cod_sec using "&&&" at 18,55
|
|
|
|
LET b = b + 1
|
|
LET balances.balan_corte = 0
|
|
LET mes_ini = MONTH(fecha_inicial_py)
|
|
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_b balan_prima INTO balances.*
|
|
IF status = notfound THEN
|
|
LET salir = "S"
|
|
LET idx_b = 1
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_b = idx_b + 1
|
|
|
|
IF balances.cod_n = mat_primas.cod_n AND
|
|
balances.cod_grupo = mat_primas.cod_grupo AND
|
|
balances.cod_tipo = mat_primas.cod_tipo AND
|
|
balances.cod_sec = mat_primas.cod_sec THEN
|
|
LET salir = "S"
|
|
END IF
|
|
|
|
IF salir = "S" THEN
|
|
LET idx_b = 1
|
|
EXIT WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
LET bi[b].cod_n = mat_primas.cod_n
|
|
LET bi[b].cod_grupo = mat_primas.cod_grupo
|
|
LET bi[b].cod_tipo = mat_primas.cod_tipo
|
|
LET bi[b].cod_sec = mat_primas.cod_sec
|
|
LET bi[b].cod_n_se = 0
|
|
LET bi[b].cod_grupo_se = 0
|
|
LET bi[b].cod_tipo_se = 0
|
|
LET bi[b].cod_sec_se = 0
|
|
LET bi[b].tipo = "P"
|
|
LET bi[b].balan_ini = balances.balan_corte
|
|
LET balan_ini = balances.balan_corte
|
|
|
|
|
|
# Busca materiales sustitutos del material y le calcula el balance inicial
|
|
# a la fecha
|
|
LET salir1 = "N"
|
|
WHILE salir1 != "S"
|
|
FETCH ABSOLUTE idx_s material_sust INTO sustituto.*
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET idx_s = 1
|
|
LET salir1 = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_s = idx_s + 1
|
|
|
|
IF sustituto.cod_n_s = mat_primas.cod_n AND
|
|
sustituto.cod_grupo_s = mat_primas.cod_grupo AND
|
|
sustituto.cod_tipo_s = mat_primas.cod_tipo AND
|
|
sustituto.cod_sec_s = mat_primas.cod_sec THEN
|
|
LET salir1 = "S"
|
|
LET balances.balan_corte = 0
|
|
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_b balan_prima INTO balances.*
|
|
|
|
IF status = notfound THEN
|
|
LET idx_b = 1
|
|
LET salir = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_b = idx_b + 1
|
|
|
|
IF balances.cod_n = sustituto.cod_n AND
|
|
balances.cod_grupo = sustituto.cod_grupo AND
|
|
balances.cod_tipo = sustituto.cod_tipo AND
|
|
balances.cod_sec = sustituto.cod_sec THEN
|
|
LET salir = "S"
|
|
END IF
|
|
|
|
IF salir = "S" THEN
|
|
LET idx_b = 1
|
|
EXIT WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
LET b = b + 1
|
|
LET bi[b].cod_n = mat_primas.cod_n
|
|
LET bi[b].cod_grupo = mat_primas.cod_grupo
|
|
LET bi[b].cod_tipo = mat_primas.cod_tipo
|
|
LET bi[b].cod_sec = mat_primas.cod_sec
|
|
LET bi[b].cod_n_se = sustituto.cod_n
|
|
LET bi[b].cod_grupo_se = sustituto.cod_grupo
|
|
LET bi[b].cod_tipo_se = sustituto.cod_tipo
|
|
LET bi[b].cod_sec_se = sustituto.cod_sec
|
|
LET bi[b].tipo = "S"
|
|
LET bi[b].balan_ini = balances.balan_corte
|
|
LET balan_ini = balan_ini + balances.balan_corte
|
|
END IF
|
|
|
|
IF salir1 = "S" THEN
|
|
LET idx_s = 1
|
|
EXIT WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
# Busca materiales p_equivalentes del material y le calcula el balance inicial
|
|
# a la fecha
|
|
|
|
LET salir1 = "N"
|
|
WHILE salir1 != "S"
|
|
FETCH ABSOLUTE idx_e material_equiv INTO sustituto.*
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET idx_e = 1
|
|
LET salir1 = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_e = idx_e + 1
|
|
|
|
IF sustituto.cod_n_s = mat_primas.cod_n AND
|
|
sustituto.cod_grupo_s = mat_primas.cod_grupo AND
|
|
sustituto.cod_tipo_s = mat_primas.cod_tipo AND
|
|
sustituto.cod_sec_s = mat_primas.cod_sec THEN
|
|
LET salir1 = "S"
|
|
LET balances.balan_corte = 0
|
|
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_b balan_prima INTO balances.*
|
|
IF status = notfound THEN
|
|
LET idx_b = 1
|
|
LET salir = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_b = idx_b + 1
|
|
|
|
IF balances.cod_n = sustituto.cod_n AND
|
|
balances.cod_grupo = sustituto.cod_grupo AND
|
|
balances.cod_tipo = sustituto.cod_tipo AND
|
|
balances.cod_sec = sustituto.cod_sec THEN
|
|
LET salir = "S"
|
|
END IF
|
|
|
|
IF salir = "S" THEN
|
|
LET idx_b = 1
|
|
EXIT WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
LET b = b + 1
|
|
LET bi[b].cod_n = mat_primas.cod_n
|
|
LET bi[b].cod_grupo = mat_primas.cod_grupo
|
|
LET bi[b].cod_tipo = mat_primas.cod_tipo
|
|
LET bi[b].cod_sec = mat_primas.cod_sec
|
|
LET bi[b].cod_n_se = sustituto.cod_n
|
|
LET bi[b].cod_grupo_se = sustituto.cod_grupo
|
|
LET bi[b].cod_tipo_se = sustituto.cod_tipo
|
|
LET bi[b].cod_sec_se = sustituto.cod_sec
|
|
LET bi[b].tipo = "E"
|
|
LET bi[b].balan_ini = balances.balan_corte
|
|
LET balan_ini = balan_ini + balances.balan_corte
|
|
END IF
|
|
|
|
IF salir1 = "S" THEN
|
|
LET idx_e = 1
|
|
LET salir1 = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
LET balan_ini_sin_oc = balan_ini
|
|
LET calc_agot_sin_oc = "N"
|
|
LET calc_agot_con_oc = "N"
|
|
|
|
# Busca las Ordenes de Compras para el mes "d" de la materia prima
|
|
|
|
FOR d = 1 TO meses_py
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
SELECT UNIQUE fecha_ini, fecha_fin INTO fecha1, fecha2
|
|
FROM cotb00026
|
|
WHERE rango_plan = rango_p AND
|
|
MONTH(fecha_ini) = mes_ini
|
|
|
|
LET cant_orden_mes = 0
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_or ordenes_material INTO ordenesss.*
|
|
IF status = notfound THEN
|
|
LET idx_or = 1
|
|
LET salir = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
LET idx_or = idx_or + 1
|
|
|
|
IF ordenesss.cod_n_se = mat_primas.cod_n AND
|
|
ordenesss.cod_grupo_se = mat_primas.cod_grupo AND
|
|
ordenesss.cod_tipo_se = mat_primas.cod_tipo AND
|
|
ordenesss.cod_sec_se = mat_primas.cod_sec AND
|
|
ordenesss.mes = mes_ini THEN
|
|
|
|
LET cantidad_imp = ordenesss.cantidad - ordenesss.cantidad_r
|
|
|
|
IF cantidad_imp <= 0 THEN
|
|
LET ordenesss.cantidad = 0
|
|
END IF
|
|
|
|
IF cantidad_imp > 0 THEN
|
|
LET ordenesss.cantidad = cantidad_imp
|
|
LET a = a + 1
|
|
LET oc[a].cod_n = mat_primas.cod_n
|
|
LET oc[a].cod_grupo = mat_primas.cod_grupo
|
|
LET oc[a].cod_tipo = mat_primas.cod_tipo
|
|
LET oc[a].cod_sec = mat_primas.cod_sec
|
|
LET oc[a].cod_n_se = 0
|
|
LET oc[a].cod_grupo_se = 0
|
|
LET oc[a].cod_tipo_se = 0
|
|
LET oc[a].cod_sec_se = 0
|
|
LET oc[a].mes = mes_ini
|
|
LET oc[a].num_orden = ordenesss.num_orden
|
|
LET oc[a].fecha_ent = ordenesss.fecha_entrega
|
|
LET oc[a].cantidad = ordenesss.cantidad
|
|
LET oc[a].precio = cf_mp
|
|
LET oc[a].impuesto = precio_mp
|
|
LET oc[a].bandera = "O"
|
|
LET cant_orden_mes = cant_orden_mes + ordenesss.cantidad
|
|
END IF
|
|
END IF
|
|
END WHILE
|
|
|
|
# Busca los reportes de entradas del mes para el material principal
|
|
|
|
LET salir = "N"
|
|
LET idx_10 = 1
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_10 mvtos_mater INTO mvtos_mp.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET idx_10 = 1
|
|
LET salir = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_10 = idx_10 + 1
|
|
|
|
IF mat_primas.cod_n = mvtos_mp.cod_n AND
|
|
mat_primas.cod_grupo = mvtos_mp.cod_grupo AND
|
|
mat_primas.cod_tipo = mvtos_mp.cod_tipo AND
|
|
mat_primas.cod_sec = mvtos_mp.cod_sec AND
|
|
mvtos_mp.fecha_mov >= fecha1 AND
|
|
mvtos_mp.fecha_mov < fecha2 THEN
|
|
|
|
LET a = a + 1
|
|
LET oc[a].cod_n = mat_primas.cod_n
|
|
LET oc[a].cod_grupo = mat_primas.cod_grupo
|
|
LET oc[a].cod_tipo = mat_primas.cod_tipo
|
|
LET oc[a].cod_sec = mat_primas.cod_sec
|
|
LET oc[a].cod_n_se = 0
|
|
LET oc[a].cod_grupo_se = 0
|
|
LET oc[a].cod_tipo_se = 0
|
|
LET oc[a].cod_sec_se = 0
|
|
LET oc[a].mes = mes_ini
|
|
LET oc[a].num_orden = mvtos_mp.num_orden
|
|
LET oc[a].fecha_ent = mvtos_mp.fecha_mov
|
|
LET oc[a].cantidad = mvtos_mp.cantidad
|
|
LET oc[a].precio = null
|
|
LET oc[a].impuesto = null
|
|
LET oc[a].bandera = "M"
|
|
LET cant_orden_mes = cant_orden_mes + mvtos_mp.cantidad
|
|
END IF
|
|
END WHILE
|
|
|
|
# Calcula el consumo en el mes "d" de la materia prima
|
|
|
|
LET consumo_mes = 0
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_c busca_cons INTO consumos.*
|
|
|
|
IF status = notfound THEN
|
|
LET idx_c = 1
|
|
LET salir = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_c = idx_c + 1
|
|
|
|
IF consumos.meses = mes_ini AND
|
|
consumos.cod_n = mat_primas.cod_n AND
|
|
consumos.cod_grupo = mat_primas.cod_grupo AND
|
|
consumos.cod_tipo = mat_primas.cod_tipo AND
|
|
consumos.cod_sec = mat_primas.cod_sec THEN
|
|
LET consumo_mes = consumos.consumo_mes
|
|
LET salir = "S"
|
|
ELSE
|
|
LET consumo_mes = 0
|
|
END IF
|
|
|
|
IF salir = "S" THEN
|
|
LET idx_c = 1
|
|
EXIT WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
# Busca las ordenes de compras de los sustitutos para el mes "d"
|
|
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_s ordenes_sust INTO s_sustituto.*
|
|
IF status = NOTFOUND THEN
|
|
LET idx_s = 1
|
|
LET salir = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
LET idx_s = idx_s + 1
|
|
|
|
IF s_sustituto.cod_n = mat_primas.cod_n AND
|
|
s_sustituto.cod_grupo = mat_primas.cod_grupo AND
|
|
s_sustituto.cod_tipo = mat_primas.cod_tipo AND
|
|
s_sustituto.cod_sec = mat_primas.cod_sec AND
|
|
s_sustituto.mes = mes_ini THEN
|
|
|
|
LET cantidad_imp = s_sustituto.cantidad - s_sustituto.cantidad_r
|
|
|
|
IF cantidad_imp <= 0 THEN
|
|
LET s_sustituto.cantidad = 0
|
|
END IF
|
|
|
|
IF cantidad_imp > 0 THEN
|
|
LET s_sustituto.cantidad = cantidad_imp
|
|
LET a = a + 1
|
|
LET oc[a].cod_n = mat_primas.cod_n
|
|
LET oc[a].cod_grupo = mat_primas.cod_grupo
|
|
LET oc[a].cod_tipo = mat_primas.cod_tipo
|
|
LET oc[a].cod_sec = mat_primas.cod_sec
|
|
LET oc[a].cod_n_se = s_sustituto.cod_n_s
|
|
LET oc[a].cod_grupo_se = s_sustituto.cod_grupo_s
|
|
LET oc[a].cod_tipo_se = s_sustituto.cod_tipo_s
|
|
LET oc[a].cod_sec_se = s_sustituto.cod_sec_s
|
|
LET oc[a].mes = mes_ini
|
|
LET oc[a].num_orden = s_sustituto.num_orden
|
|
LET oc[a].fecha_ent = s_sustituto.fecha_entrega
|
|
LET oc[a].cantidad = s_sustituto.cantidad
|
|
LET oc[a].precio = cf_mp
|
|
LET oc[a].impuesto = precio_mp
|
|
LET oc[a].bandera = "O"
|
|
LET cant_orden_mes = cant_orden_mes + s_sustituto.cantidad
|
|
END IF
|
|
END IF
|
|
END WHILE
|
|
|
|
# Busca los reportes de entradas del mes para los sustitutos :
|
|
|
|
LET idx_11 = 1
|
|
LET salir_m = "N"
|
|
WHILE salir_m != "S"
|
|
FETCH ABSOLUTE idx_11 material_sust INTO sustituto.*
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET idx_11 = 1
|
|
LET salir_m = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_11 = idx_11 + 1
|
|
|
|
IF sustituto.cod_n_s = mat_primas.cod_n AND
|
|
sustituto.cod_grupo_s = mat_primas.cod_grupo AND
|
|
sustituto.cod_tipo_s = mat_primas.cod_tipo AND
|
|
sustituto.cod_sec_s = mat_primas.cod_sec THEN
|
|
|
|
LET salir = "N"
|
|
LET idx_10 = 1
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_10 mvtos_mater INTO mvtos_mp.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET idx_10 = 1
|
|
LET salir = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_10 = idx_10 + 1
|
|
|
|
IF sustituto.cod_n = mvtos_mp.cod_n AND
|
|
sustituto.cod_grupo = mvtos_mp.cod_grupo AND
|
|
sustituto.cod_tipo = mvtos_mp.cod_tipo AND
|
|
sustituto.cod_sec = mvtos_mp.cod_sec AND
|
|
(mvtos_mp.fecha_mov >= fecha1 AND
|
|
mvtos_mp.fecha_mov < fecha2) THEN
|
|
|
|
LET a = a + 1
|
|
LET oc[a].cod_n = mat_primas.cod_n
|
|
LET oc[a].cod_grupo = mat_primas.cod_grupo
|
|
LET oc[a].cod_tipo = mat_primas.cod_tipo
|
|
LET oc[a].cod_sec = mat_primas.cod_sec
|
|
LET oc[a].cod_n_se = sustituto.cod_n
|
|
LET oc[a].cod_grupo_se = sustituto.cod_grupo
|
|
LET oc[a].cod_tipo_se = sustituto.cod_tipo
|
|
LET oc[a].cod_sec_se = sustituto.cod_sec
|
|
LET oc[a].mes = mes_ini
|
|
LET oc[a].num_orden = mvtos_mp.num_orden
|
|
LET oc[a].fecha_ent = mvtos_mp.fecha_mov
|
|
LET oc[a].cantidad = mvtos_mp.cantidad
|
|
LET oc[a].precio = null
|
|
LET oc[a].impuesto = null
|
|
LET oc[a].bandera = "M"
|
|
LET cant_orden_mes = cant_orden_mes + mvtos_mp.cantidad
|
|
END IF
|
|
END WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
# Busca las ordenes de compras de los p_equivalentes para el mes "d"
|
|
|
|
LET salir = "N"
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_e ordenes_equiv INTO p_equivale.*
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET idx_e = 1
|
|
LET salir = "S"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_e = idx_e + 1
|
|
|
|
IF p_equivale.cod_n = mat_primas.cod_n AND
|
|
p_equivale.cod_grupo = mat_primas.cod_grupo AND
|
|
p_equivale.cod_tipo = mat_primas.cod_tipo AND
|
|
p_equivale.cod_sec = mat_primas.cod_sec AND
|
|
p_equivale.mes = mes_ini THEN
|
|
|
|
LET cantidad_imp = p_equivale.cantidad - p_equivale.cantidad_r
|
|
|
|
IF cantidad_imp <= 0 THEN
|
|
LET p_equivale.cantidad = 0
|
|
END IF
|
|
|
|
IF cantidad_imp > 0 THEN
|
|
LET p_equivale.cantidad = cantidad_imp
|
|
LET a = a + 1
|
|
LET oc[a].cod_n = mat_primas.cod_n
|
|
LET oc[a].cod_grupo = mat_primas.cod_grupo
|
|
LET oc[a].cod_tipo = mat_primas.cod_tipo
|
|
LET oc[a].cod_sec = mat_primas.cod_sec
|
|
LET oc[a].cod_n_se = p_equivale.cod_n_e
|
|
LET oc[a].cod_grupo_se = p_equivale.cod_grupo_e
|
|
LET oc[a].cod_tipo_se = p_equivale.cod_tipo_e
|
|
LET oc[a].cod_sec_se = p_equivale.cod_sec_e
|
|
LET oc[a].mes = mes_ini
|
|
LET oc[a].num_orden = p_equivale.num_orden
|
|
LET oc[a].fecha_ent = p_equivale.fecha_entrega
|
|
LET oc[a].cantidad = p_equivale.cantidad
|
|
LET oc[a].precio = cf_mp
|
|
LET oc[a].impuesto = precio_mp
|
|
LET oc[a].bandera = "O"
|
|
LET cant_orden_mes = cant_orden_mes + p_equivale.cantidad
|
|
END IF
|
|
END IF
|
|
END WHILE
|
|
|
|
# Busca los reportes de entradas del mes de los p_equivalentes
|
|
|
|
LET idx_11 = 1
|
|
LET salir_m = "N"
|
|
WHILE salir_m != "S"
|
|
FETCH ABSOLUTE idx_11 material_equiv INTO sustituto.*
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET idx_11 = 1
|
|
LET salir_m = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_11 = idx_11 + 1
|
|
|
|
IF sustituto.cod_n_s = mat_primas.cod_n AND
|
|
sustituto.cod_grupo_s = mat_primas.cod_grupo AND
|
|
sustituto.cod_tipo_s = mat_primas.cod_tipo AND
|
|
sustituto.cod_sec_s = mat_primas.cod_sec THEN
|
|
|
|
LET salir = "N"
|
|
LET idx_10 = 1
|
|
WHILE salir != "S"
|
|
FETCH ABSOLUTE idx_10 mvtos_mater INTO mvtos_mp.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET idx_10 = 1
|
|
LET salir = "N"
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
LET idx_10 = idx_10 + 1
|
|
|
|
IF sustituto.cod_n = mvtos_mp.cod_n AND
|
|
sustituto.cod_grupo = mvtos_mp.cod_grupo AND
|
|
sustituto.cod_tipo = mvtos_mp.cod_tipo AND
|
|
sustituto.cod_sec = mvtos_mp.cod_sec AND
|
|
(mvtos_mp.fecha_mov >= fecha1 AND
|
|
mvtos_mp.fecha_mov < fecha2) THEN
|
|
|
|
LET a = a + 1
|
|
LET oc[a].cod_n = mat_primas.cod_n
|
|
LET oc[a].cod_grupo = mat_primas.cod_grupo
|
|
LET oc[a].cod_tipo = mat_primas.cod_tipo
|
|
LET oc[a].cod_sec = mat_primas.cod_sec
|
|
LET oc[a].cod_n_se = sustituto.cod_n
|
|
LET oc[a].cod_grupo_se = sustituto.cod_grupo
|
|
LET oc[a].cod_tipo_se = sustituto.cod_tipo
|
|
LET oc[a].cod_sec_se = sustituto.cod_sec
|
|
LET oc[a].mes = mes_ini
|
|
LET oc[a].num_orden = mvtos_mp.num_orden
|
|
LET oc[a].fecha_ent = mvtos_mp.fecha_mov
|
|
LET oc[a].cantidad = mvtos_mp.cantidad
|
|
LET oc[a].precio = null
|
|
LET oc[a].impuesto = null
|
|
LET oc[a].bandera = "M"
|
|
LET cant_orden_mes = cant_orden_mes + mvtos_mp.cantidad
|
|
END IF
|
|
END WHILE
|
|
END IF
|
|
END WHILE
|
|
|
|
# Calcula el balance final de la materia prima para el mes "d"
|
|
|
|
LET balan_fin = balan_ini - consumo_mes + cant_orden_mes
|
|
LET fecha_agot_sin_oc = NULL
|
|
LET fecha_agot_con_oc = NULL
|
|
LET pto_reorden = NULL
|
|
|
|
# Determina si hay o no agotamiento, sin tomar en cuenta la ordenes de compras
|
|
|
|
IF calc_agot_sin_oc = "N" THEN
|
|
LET agot_sin_oc = balan_ini_sin_oc - consumo_mes
|
|
IF agot_sin_oc = 0 THEN
|
|
LET mes_proceso = mes_ini
|
|
IF dia_ini > 15 THEN
|
|
LET mes_ini = mes_ini + 1
|
|
IF mes_ini > 12 THEN
|
|
LET mes_ini = 1
|
|
END IF
|
|
END IF
|
|
|
|
SELECT descrip INTO nombre_mes FROM mestable
|
|
WHERE mes = mes_ini
|
|
|
|
LET mes_ini = mes_proceso
|
|
IF mes_ini = 2 THEN
|
|
LET fecha_agot_sin_oc = "28 ",nombre_mes
|
|
ELSE
|
|
LET fecha_agot_sin_oc = "30 ",nombre_mes
|
|
END IF
|
|
END IF
|
|
|
|
IF agot_sin_oc < 0 THEN
|
|
LET consumo_dia = consumo_mes / 30
|
|
LET meses_llegada = balan_ini_sin_oc / consumo_dia
|
|
CALL redondear()
|
|
LET dia_agotar = meses_llegada
|
|
|
|
IF dia_agotar < 0 THEN
|
|
LET dia_agotar = dia_agotar * -1
|
|
END IF
|
|
|
|
IF dia_agotar = 0 THEN
|
|
LET dia_agotar = 30
|
|
END IF
|
|
|
|
LET mes_proceso = mes_ini
|
|
IF dia_ini > 15 THEN
|
|
LET mes_ini = mes_ini + 1
|
|
IF mes_ini > 12 THEN
|
|
LET mes_ini = 1
|
|
END IF
|
|
END IF
|
|
|
|
SELECT descrip INTO nombre_mes FROM mestable
|
|
WHERE mes = mes_ini
|
|
|
|
LET mes_ini = mes_proceso
|
|
|
|
IF dia_agotar > 28 AND mes_ini = 2 THEN
|
|
LET dia_agotar = 28
|
|
END IF
|
|
|
|
LET fecha_agot_sin_oc = dia_agotar using "&&"," ",nombre_mes
|
|
END IF
|
|
END IF
|
|
|
|
# Determina si hay o no agotamiento, tomando en cuenta la ordenes de compras
|
|
|
|
IF calc_agot_con_oc = "N" THEN
|
|
LET agot_con_oc = balan_ini - consumo_mes + cant_orden_mes
|
|
IF agot_con_oc = 0 THEN
|
|
LET mes_proceso = mes_ini
|
|
IF dia_ini > 15 THEN
|
|
LET mes_ini = mes_ini + 1
|
|
IF mes_ini > 12 THEN
|
|
LET mes_ini = 1
|
|
END IF
|
|
END IF
|
|
|
|
SELECT descrip INTO nombre_mes FROM mestable
|
|
WHERE mes = mes_ini
|
|
|
|
LET mes_ini = mes_proceso
|
|
IF mes_ini = 2 THEN
|
|
LET fecha_agot_con_oc = "28 ",nombre_mes
|
|
ELSE
|
|
LET fecha_agot_con_oc = "30 ",nombre_mes
|
|
END IF
|
|
END IF
|
|
|
|
IF agot_con_oc < 0 THEN
|
|
LET consumo_dia = consumo_mes / 30
|
|
LET meses_llegada = balan_ini / consumo_dia
|
|
CALL redondear()
|
|
LET dia_agotar = meses_llegada
|
|
|
|
IF dia_agotar < 0 THEN
|
|
LET dia_agotar = dia_agotar * -1
|
|
END IF
|
|
|
|
IF dia_agotar = 0 THEN
|
|
LET dia_agotar = 30
|
|
END IF
|
|
|
|
LET mes_proceso = mes_ini
|
|
IF dia_ini > 15 THEN
|
|
LET mes_ini = mes_ini + 1
|
|
IF mes_ini > 12 THEN
|
|
LET mes_ini = 1
|
|
END IF
|
|
END IF
|
|
|
|
SELECT descrip INTO nombre_mes FROM mestable
|
|
WHERE mes = mes_ini
|
|
|
|
LET mes_ini = mes_proceso
|
|
IF dia_agotar > 28 AND mes_ini = 2 THEN
|
|
LET dia_agotar = 28
|
|
END IF
|
|
LET fecha_agot_con_oc = dia_agotar using "&&"," ",nombre_mes
|
|
END IF
|
|
|
|
IF agot_con_oc <= 0 THEN
|
|
LET cdll = 0
|
|
SELECT dia_llegada INTO cdll FROM intb00002
|
|
WHERE cod_n = mat_primas.cod_n AND
|
|
cod_grupo = mat_primas.cod_grupo AND
|
|
cod_tipo = mat_primas.cod_tipo AND
|
|
cod_sec = mat_primas.cod_sec AND
|
|
status_t IS NULL
|
|
|
|
IF cdll = 0 OR cdll IS NULL THEN
|
|
CALL parada()
|
|
RETURN
|
|
END IF
|
|
|
|
LET dias_llegada = cdll - dia_agotar
|
|
LET meses_llegada = dias_llegada / 30
|
|
IF dia_agotar <= 15 THEN
|
|
LET meses_llegada = meses_llegada + 1
|
|
END IF
|
|
CALL redondear()
|
|
CALL resta_meses()
|
|
SELECT descrip INTO nombre_mes FROM mestable
|
|
WHERE mes = mes_pedido
|
|
LET pto_reorden = dia_agotar using "&&"," ",nombre_mes
|
|
END IF
|
|
END IF
|
|
|
|
IF agot_sin_oc <= 0 THEN
|
|
IF calc_agot_sin_oc = "N" THEN
|
|
LET calc_agot_sin_oc = "S"
|
|
ELSE
|
|
LET fecha_agot_sin_oc = NULL
|
|
END IF
|
|
END IF
|
|
|
|
IF agot_con_oc <= 0 THEN
|
|
IF calc_agot_con_oc = "N" THEN
|
|
LET calc_agot_con_oc = "S"
|
|
ELSE
|
|
LET fecha_agot_con_oc = NULL
|
|
LET pto_reorden = NULL
|
|
END IF
|
|
END IF
|
|
|
|
LET c = c + 1
|
|
LET bm[c].cod_n = mat_primas.cod_n
|
|
LET bm[c].cod_grupo = mat_primas.cod_grupo
|
|
LET bm[c].cod_tipo = mat_primas.cod_tipo
|
|
LET bm[c].cod_sec = mat_primas.cod_sec
|
|
LET bm[c].mes = mes_ini
|
|
LET bm[c].balan_ini = balan_ini
|
|
LET bm[c].consumo_mes = consumo_mes
|
|
LET bm[c].balan_fin = balan_fin
|
|
LET bm[c].agot1 = fecha_agot_sin_oc
|
|
LET bm[c].agot2 = fecha_agot_con_oc
|
|
LET bm[c].pto_reorden = pto_reorden
|
|
|
|
LET mes_ini = mes_ini + 1
|
|
IF mes_ini = 13 THEN
|
|
LET mes_ini = 1
|
|
END IF
|
|
LET balan_ini = balan_fin
|
|
|
|
# Calcula el balance final sin considerar las ordenes de compras
|
|
|
|
LET balan_ini_sin_oc = balan_ini_sin_oc - consumo_mes
|
|
|
|
END FOR
|
|
|
|
LET a = 0
|
|
LET b = 0
|
|
LET c = 0
|
|
LET d = 0
|
|
|
|
OUTPUT TO REPORT proyeccion2()
|
|
END WHILE
|
|
|
|
FINISH REPORT proyeccion2
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
REPORT proyeccion2()
|
|
DEFINE comprimido_12_on,
|
|
comprimido_12_off,
|
|
negrillas_on,
|
|
negrillas_off,
|
|
comprimido_on,
|
|
comprimido_off,
|
|
doble_on,
|
|
doble_off CHAR(2)
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 0
|
|
TOP MARGIN 1
|
|
BOTTOM MARGIN 3
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET negrillas_on = ASCII 27, ASCII 71
|
|
LET negrillas_off = ASCII 27, ASCII 72
|
|
LET doble_on = ASCII 14
|
|
LET doble_off = ASCII 20
|
|
LET comprimido_on = ASCII 15
|
|
LET comprimido_off = ASCII 18
|
|
LET comprimido_12_on = ASCII 27, ASCII 77
|
|
LET comprimido_12_off = ASCII 27, ASCII 80
|
|
LET comprimido_12_on = ASCII 27, ASCII 77
|
|
LET comprimido_12_off = ASCII 27, ASCII 80
|
|
|
|
LET l = (163 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
PRINT COLUMN 1, comprimido_on, negrillas_on
|
|
PRINT COLUMN 1, "coprrp011",
|
|
COLUMN l, p_companias.nombre CLIPPED,
|
|
COLUMN 156, "Pag. ", pageno using "###"
|
|
PRINT COLUMN 76, "SISTEMA DE COMPRAS",
|
|
COLUMN 156, today using "dd/mm/yy"
|
|
PRINT COLUMN 73, "RESUMEN DE PROYECCIONES"
|
|
PRINT COLUMN 72, "Del ",
|
|
COLUMN 76, fecha_inicial_py using "dd/mmm/yy",
|
|
COLUMN 84, " Al ",
|
|
COLUMN 88, fecha_final_py using "dd/mmm/yy",
|
|
COLUMN 156, time
|
|
SKIP 2 LINES
|
|
|
|
PRINT COLUMN 1, "-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------"
|
|
|
|
PRINT COLUMN 43, "UNIDAD",
|
|
COLUMN 68, "BALANCE",
|
|
COLUMN 81, "ORDENES",
|
|
COLUMN 95, "CONSUMO",
|
|
COLUMN 109, "BALANCE",
|
|
COLUMN 119, "FECHA AGOTA-",
|
|
COLUMN 135, "FECHA AGOTA-",
|
|
COLUMN 150, "FECHA"
|
|
|
|
PRINT COLUMN 14, "MATERIAL",
|
|
COLUMN 43, "MEDIDA",
|
|
COLUMN 51, "TIPO",
|
|
COLUMN 68, "INICIAL",
|
|
COLUMN 81, "PERIODO",
|
|
COLUMN 95, "PERIODO",
|
|
COLUMN 110, "FINAL",
|
|
COLUMN 119, "MIENTO SIN OC",
|
|
COLUMN 135, "MIENTO CON OC",
|
|
COLUMN 150, "REORDEN"
|
|
|
|
PRINT COLUMN 1, "-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------", negrillas_off
|
|
|
|
LET a = 0
|
|
LET b = 0
|
|
LET c = 0
|
|
LET d = 0
|
|
|
|
ON EVERY ROW
|
|
LET balance_inicial_periodo = 0
|
|
FOR c = 1 TO 100
|
|
IF bi[c].cod_n = 0 OR
|
|
bi[c].cod_n IS NULL THEN
|
|
EXIT FOR
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
LET consumo_periodo = 0
|
|
LET ordenes_periodo = 0
|
|
INITIALIZE descrip3, unidad, mes_agot1, mes_agot2,
|
|
mes_reorden, balance_final_periodo TO NULL
|
|
|
|
IF bi[c].tipo = "P" THEN
|
|
CALL buscar_datos_bm()
|
|
CALL buscar_ordenes()
|
|
LET bi[c].cod_n_se = bi[c].cod_n
|
|
LET bi[c].cod_grupo_se = bi[c].cod_grupo
|
|
LET bi[c].cod_tipo_se = bi[c].cod_tipo
|
|
LET bi[c].cod_sec_se = bi[c].cod_sec
|
|
LET balance_final_periodo = bm[meses_py].balan_fin
|
|
ELSE
|
|
INITIALIZE consumo_periodo, ordenes_periodo TO NULL
|
|
END IF
|
|
|
|
SELECT descrip_esp, unidad_med INTO descrip3, unidad
|
|
FROM intb00001
|
|
WHERE cod_n = bi[c].cod_n_se AND
|
|
cod_grupo = bi[c].cod_grupo_se AND
|
|
cod_tipo = bi[c].cod_tipo_se AND
|
|
cod_sec = bi[c].cod_sec_se AND
|
|
status_t IS NULL
|
|
|
|
IF bi[c].tipo = "P" OR
|
|
bi[c].tipo IS NULL THEN
|
|
LET tipo_material = "Principal "
|
|
ELSE
|
|
IF bi[c].tipo = "S" THEN
|
|
LET tipo_material = "Sustituto "
|
|
ELSE
|
|
IF bi[c].tipo = "E" THEN
|
|
LET tipo_material = "Equivalente"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
PRINT COLUMN 2, bi[c].cod_n_se using "&",
|
|
COLUMN 3, "-",
|
|
COLUMN 4, bi[c].cod_grupo_se using "&",
|
|
COLUMN 5, "-",
|
|
COLUMN 6, bi[c].cod_tipo_se using "&&",
|
|
COLUMN 8, "-",
|
|
COLUMN 9, bi[c].cod_sec_se using "&&&",
|
|
COLUMN 13, descrip3,
|
|
COLUMN 45, unidad,
|
|
COLUMN 50, tipo_material,
|
|
COLUMN 62, bi[c].balan_ini using "---,---,--&.&&",
|
|
COLUMN 76, ordenes_periodo using "---,---,--&.&&",
|
|
COLUMN 90, consumo_periodo using "---,---,--&.&&",
|
|
COLUMN 104, balance_final_periodo
|
|
using "---,---,--&.&&",
|
|
COLUMN 119, mes_agot1,
|
|
COLUMN 135, mes_agot2,
|
|
COLUMN 150, mes_reorden
|
|
END FOR
|
|
PRINT COLUMN 1, "-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------------------",
|
|
"-----------------------"
|
|
SKIP 1 LINES
|
|
FOR d = 1 TO 100
|
|
IF ( bi[d].tipo = " " OR bi[d].tipo IS NULL ) AND
|
|
( oc[d].mes = 0 OR oc[d].mes IS NULL ) AND
|
|
( bm[d].mes = 0 OR bm[d].mes IS NULL ) THEN
|
|
EXIT FOR
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
INITIALIZE bi[d].cod_n,
|
|
bi[d].cod_grupo,
|
|
bi[d].cod_tipo,
|
|
bi[d].cod_sec,
|
|
bi[d].cod_n_se,
|
|
bi[d].cod_grupo_se,
|
|
bi[d].cod_tipo_se,
|
|
bi[d].cod_sec_se,
|
|
bi[d].tipo,
|
|
bi[d].balan_ini,
|
|
oc[d].cod_n,
|
|
oc[d].cod_grupo,
|
|
oc[d].cod_tipo,
|
|
oc[d].cod_sec,
|
|
oc[d].cod_n_se,
|
|
oc[d].cod_grupo_se,
|
|
oc[d].cod_tipo_se,
|
|
oc[d].cod_sec_se,
|
|
oc[d].mes,
|
|
oc[d].num_orden,
|
|
oc[d].fecha_ent,
|
|
oc[d].cantidad,
|
|
oc[d].precio,
|
|
oc[d].impuesto,
|
|
bm[d].cod_n,
|
|
bm[d].cod_grupo,
|
|
bm[d].cod_tipo,
|
|
bm[d].cod_sec,
|
|
bm[d].mes,
|
|
bm[d].balan_ini,
|
|
bm[d].consumo_mes,
|
|
bm[d].balan_fin,
|
|
bm[d].agot1,
|
|
bm[d].agot2,
|
|
bm[d].pto_reorden TO NULL
|
|
END FOR
|
|
|
|
LET a = 0
|
|
LET b = 0
|
|
LET c = 0
|
|
LET d = 0
|
|
END REPORT
|
|
|
|
FUNCTION buscar_datos_bm()
|
|
# Esta funcion busca el mes de agotamiento sin y con ordenes de compra y el
|
|
# mes de reorden del material principal y ademas calcula el consumo del periodo
|
|
# de la materia prima principal
|
|
|
|
FOR d = 1 TO meses_py
|
|
IF bm[d].agot1 IS NOT NULL THEN
|
|
LET mes_agot1 = bm[d].agot1
|
|
END IF
|
|
|
|
IF bm[d].agot2 IS NOT NULL THEN
|
|
LET mes_agot2 = bm[d].agot2
|
|
END IF
|
|
|
|
IF bm[d].pto_reorden IS NOT NULL THEN
|
|
LET mes_reorden = bm[d].pto_reorden
|
|
END IF
|
|
|
|
LET consumo_periodo = consumo_periodo + bm[d].consumo_mes
|
|
END FOR
|
|
LET d = 0
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
FUNCTION buscar_ordenes()
|
|
FOR j = 1 TO 100
|
|
IF oc[j].cod_n IS NULL OR
|
|
oc[j].cod_n = 0 THEN
|
|
EXIT FOR
|
|
END IF
|
|
|
|
LET ordenes_periodo = ordenes_periodo + oc[j].cantidad
|
|
END FOR
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|