Mueve ipdir (Productos Terminados) de PROYECTOS a PROYECTO
Instruccion de Johnny: todos los directorios de fuentes de inventario deben migrarse de la carpeta temporal PROYECTOS a la carpeta real PROYECTO, ya que PROYECTOS sera eliminada. Se elimino tambien un archivo suelto sin relacion llamado "ipdir" que existia en PROYECTO (del commit inicial) y bloqueaba el nombre de la carpeta. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,701 @@
|
||||
{
|
||||
-------------------------------------------------------------------------------
|
||||
PROGRAMA : IPPRCS007
|
||||
OBJETIVO : CONSULTA DIAS DE PRODUCCION
|
||||
PROGRAMADOR : Tadeo A. Ferreras F.
|
||||
FECHA REALIZACION : Octubre 29, 1992.
|
||||
-------------------------------------------------------------------------------
|
||||
}
|
||||
GLOBALS "ipprgb000.4gl"
|
||||
DEFINE hora CHAR(5)
|
||||
DEFINE segunda,encontre_mov,retorna,salir,salir1,continua,encontre,primera,
|
||||
p_desplega,situacion CHAR(1)
|
||||
DEFINE l,i,e,imp_idx,dias2,dias1,idx_b,idx_c,idx_o,
|
||||
idx_kl,orden_act,dia_orden,idx_o1,idx_o2,idx_f,idx1 SMALLINT
|
||||
DEFINE doc_ant INTEGER
|
||||
DEFINE dia_orden1,dias,d DECIMAL(8,2)
|
||||
|
||||
DEFINE t_pendiente,pendiente,t_recibe,t_remanente,remanente,cantidad,
|
||||
existencia1,consumo,t_cantidad
|
||||
DECIMAL (12,2)
|
||||
DEFINE selec6,selec5,selec1,select_con,select_bal ,
|
||||
selec10 CHAR(1000)
|
||||
|
||||
DEFINE arr_pend ARRAY [30] OF RECORD
|
||||
num_doc INTEGER,
|
||||
ordenada CHAR(14),
|
||||
recibida CHAR(14),
|
||||
cantidad CHAR(14),
|
||||
fecha_llegada DATE
|
||||
END RECORD
|
||||
|
||||
DEFINE fechas_pend1 RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
num_oc INTEGER,
|
||||
cantidad DECIMAL (10,2),
|
||||
fecha DATE
|
||||
END RECORD
|
||||
|
||||
|
||||
DEFINE fechas_pend RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
num_oc INTEGER,
|
||||
cantidad DECIMAL (10,2),
|
||||
fech_ent DATE
|
||||
END RECORD
|
||||
|
||||
DEFINE p_materiales RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descrip_esp CHAR(30),
|
||||
unidad_med CHAR(3),
|
||||
dia_llegada LIKE iptb00002.dia_llegada
|
||||
END RECORD
|
||||
|
||||
DEFINE consumos RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
balances LIKE iptb00006.cantidad_2
|
||||
END RECORD
|
||||
|
||||
DEFINE cant_movi RECORD
|
||||
cod_n LIKE intb00001.cod_n,
|
||||
cod_grupo LIKE intb00001.cod_grupo,
|
||||
cod_tipo LIKE intb00001.cod_tipo,
|
||||
cod_sec LIKE intb00001.cod_sec,
|
||||
num_oc INTEGER,
|
||||
existe1 DECIMAL (12,2),
|
||||
fecha1 DATE
|
||||
END RECORD
|
||||
|
||||
DEFINE balances RECORD
|
||||
cod_n LIKE intb00001.cod_n,
|
||||
cod_grupo LIKE intb00001.cod_grupo,
|
||||
cod_tipo LIKE intb00001.cod_tipo,
|
||||
cod_sec LIKE intb00001.cod_sec,
|
||||
existe1 DECIMAL (12,2)
|
||||
END RECORD
|
||||
|
||||
DEFINE estadis RECORD
|
||||
cod_n LIKE intb00001.cod_n,
|
||||
cod_grupo LIKE intb00001.cod_grupo,
|
||||
cod_tipo LIKE intb00001.cod_tipo,
|
||||
cod_sec LIKE intb00001.cod_sec,
|
||||
descrip_esp LIKE intb00001.descrip_esp,
|
||||
unidad_med LIKE intb00001.unidad_med,
|
||||
dia_llegada LIKE iptb00002.dia_llegada,
|
||||
existe1 CHAR(14),
|
||||
consumo1 CHAR(13),
|
||||
dias_orden CHAR(4)
|
||||
END RECORD
|
||||
|
||||
DEFINE datos_cons1 RECORD
|
||||
fech_in DATE,
|
||||
fech_fi DATE
|
||||
END RECORD
|
||||
|
||||
FUNCTION ipprcs007()
|
||||
|
||||
#WHENEVER ERROR CONTINUE
|
||||
|
||||
OPTIONS
|
||||
FORM LINE 6,
|
||||
ERROR LINE 23,
|
||||
COMMENT LINE 22
|
||||
|
||||
DISPLAY " "
|
||||
AT 23,1
|
||||
|
||||
OPEN WINDOW fechas AT 13,6 WITH FORM "ipfmcs017"
|
||||
ATTRIBUTE (BORDER,FORM LINE FIRST + 1, MESSAGE LINE LAST)
|
||||
|
||||
INPUT BY NAME datos_cons1.fech_in,datos_cons1.fech_fi
|
||||
|
||||
AFTER FIELD fech_in
|
||||
IF datos_cons1.fech_in IS NULL THEN
|
||||
Select min(fecha) INTO datos_cons1.fech_in FROM iptb00006
|
||||
WHERE cod_mov = 99
|
||||
DISPLAY BY NAME datos_cons1.fech_in
|
||||
END IF
|
||||
|
||||
AFTER FIELD fech_fi
|
||||
IF datos_cons1.fech_fi IS NULL THEN
|
||||
LET datos_cons1.fech_fi = today
|
||||
DISPLAY BY NAME datos_cons1.fech_fi
|
||||
END IF
|
||||
AFTER INPUT
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
EXIT INPUT
|
||||
END IF
|
||||
|
||||
IF datos_cons1.fech_in IS NOT NULL AND datos_cons1.fech_fi IS NULL THEN
|
||||
LET numero_msg = 64
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD fech_in
|
||||
END IF
|
||||
|
||||
IF datos_cons1.fech_in IS NULL AND datos_cons1.fech_fi IS NOT NULL THEN
|
||||
LET numero_msg = 64
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD fech_in
|
||||
END IF
|
||||
|
||||
LET dias1 = datos_cons1.fech_fi - datos_cons1.fech_in
|
||||
LET dias1 = dias1 + 1
|
||||
DISPLAY BY NAME dias1
|
||||
SLEEP 2
|
||||
EXIT INPUT
|
||||
END INPUT
|
||||
IF int_flag THEN
|
||||
LET int_flag = FALSE
|
||||
CLOSE WINDOW fechas
|
||||
RETURN
|
||||
END IF
|
||||
CLOSE WINDOW fechas
|
||||
|
||||
CLEAR SCREEN
|
||||
LET retorna = null
|
||||
OPEN FORM ipfmcs007 FROM "ipfmcs007"
|
||||
DISPLAY FORM ipfmcs007
|
||||
DISPLAY "ipprcs007" AT 3,3
|
||||
DISPLAY "E L E C T R O D O M E S T I C O S J U V I A R" AT 3,19
|
||||
ATTRIBUTE (REVERSE,BOLD)
|
||||
DISPLAY "Dias de Inventario en Prod. Terminados" AT 4,23 ATTRIBUTE (BOLD)
|
||||
|
||||
CONSTRUCT criterio ON b.cod_n,b.cod_grupo, b.cod_tipo,b.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
|
||||
|
||||
LABEL vuelve:
|
||||
DISPLAY BY NAME datos_cons1.* ATTRIBUTE (BLUE)
|
||||
|
||||
# Query de los materiales con su descripcion y datos generales
|
||||
|
||||
MESSAGE " Espere Por Favor" ATTRIBUTE (BOLD)
|
||||
|
||||
# Query Para Cantidades Llegadas por Movimientos
|
||||
|
||||
LET selec6 =
|
||||
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.orden_compra, ",
|
||||
" sum(b.cantidad_2) ",
|
||||
"FROM iptb00006 b ",
|
||||
"WHERE b.status_t is null AND b.orden_compra is not null AND ",
|
||||
criterio CLIPPED," GROUP BY 1,2,3,4,5 ORDER BY 1,2,3,4,5 "
|
||||
|
||||
PREPARE busca_movi FROM selec6
|
||||
DECLARE movi_orden SCROLL CURSOR FOR busca_movi
|
||||
OPEN movi_orden
|
||||
|
||||
# Query Para Las Fechas de Entregas
|
||||
|
||||
LET selec10 =
|
||||
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.num_oc,",
|
||||
" sum(b.cantidad),a.fech_oc ",
|
||||
"FROM cotb00015 b,cotb00014 a ",
|
||||
"WHERE a.tipo = b.tipo and a.num_oc = b.num_oc and ",
|
||||
" a.cierre = 'N' and b.status_t is null AND ",
|
||||
criterio CLIPPED," GROUP BY 1,2,3,4,5,7 ORDER BY 1,2,3,4,5"
|
||||
|
||||
PREPARE busca_fechas FROM selec10
|
||||
DECLARE fechas SCROLL CURSOR FOR busca_fechas
|
||||
OPEN fechas
|
||||
|
||||
LET selec = "select a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,",
|
||||
" a.unidad_med,b.dia_llegada ",
|
||||
"FROM intb00001 a,iptb00002 b ",
|
||||
"WHERE ",criterio clipped," and a.cod_n = b.cod_n and ",
|
||||
" a.cod_grupo=b.cod_grupo and a.cod_tipo=b.cod_tipo and ",
|
||||
" a.cod_sec = b.cod_sec and b.status_t is null ",
|
||||
"ORDER BY 1,2,3,4 "
|
||||
|
||||
PREPARE busca_mat FROM selec
|
||||
DECLARE material SCROLL CURSOR FOR busca_mat
|
||||
OPEN material
|
||||
|
||||
LET idx_b = 1
|
||||
LET idx_c = 1
|
||||
LET idx = 1
|
||||
LET consumo = 0
|
||||
LET dias = 0
|
||||
|
||||
FETCH FIRST material INTO p_materiales.*
|
||||
IF status < 0 THEN
|
||||
CALL integridad()
|
||||
|
||||
IF bandera = 1 THEN
|
||||
LET bandera = 0
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
IF status = notfound THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
LET estadis.descrip_esp = p_materiales.descrip_esp
|
||||
LET estadis.unidad_med = p_materiales.unidad_med
|
||||
LET estadis.cod_n = p_materiales.cod_n
|
||||
LET estadis.cod_grupo = p_materiales.cod_grupo
|
||||
LET estadis.cod_tipo = p_materiales.cod_tipo
|
||||
LET estadis.cod_sec = p_materiales.cod_sec
|
||||
LET estadis.dia_llegada = p_materiales.dia_llegada
|
||||
|
||||
LET consumo = 0
|
||||
SELECT sum(b.cantidad_2) INTO consumo FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.cod_mov IN(30,31) AND
|
||||
b.fecha between datos_cons1.fech_in and datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF consumo IS NULL THEN
|
||||
LET consumo = 0
|
||||
END IF
|
||||
LET estadis.consumo1 = consumo
|
||||
|
||||
SELECT sum(b.cantidad_2) INTO estadis.existe1
|
||||
FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.fecha <= datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF estadis.existe1 IS NULL THEN
|
||||
LET estadis.existe1 = 0
|
||||
END IF
|
||||
|
||||
CALL busqueda()
|
||||
|
||||
MENU "OPCION"
|
||||
COMMAND "Siguiente"
|
||||
"Para Ver Siguiente Registro Cumple Condicion o Presione < O > Para Ver Ordenes"
|
||||
LET idx_b = 1
|
||||
LET idx_c = 1
|
||||
LET idx = 1
|
||||
FETCH NEXT material INTO p_materiales.*
|
||||
IF status = notfound THEN
|
||||
LET numero_msg = 4
|
||||
CALL msg(numero_msg)
|
||||
END IF
|
||||
IF status < 0 THEN
|
||||
CALL integridad()
|
||||
|
||||
IF bandera = 1 THEN
|
||||
LET bandera = 0
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
LET estadis.descrip_esp = p_materiales.descrip_esp
|
||||
LET estadis.unidad_med = p_materiales.unidad_med
|
||||
LET estadis.cod_n = p_materiales.cod_n
|
||||
LET estadis.cod_grupo = p_materiales.cod_grupo
|
||||
LET estadis.cod_tipo = p_materiales.cod_tipo
|
||||
LET estadis.cod_sec = p_materiales.cod_sec
|
||||
LET estadis.dia_llegada = p_materiales.dia_llegada
|
||||
|
||||
LET consumo = 0
|
||||
SELECT sum(b.cantidad_2) INTO consumo FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.cod_mov IN(30,31) AND
|
||||
b.fecha between datos_cons1.fech_in and datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF consumo IS NULL THEN
|
||||
LET consumo = 0
|
||||
END IF
|
||||
LET estadis.consumo1 = consumo
|
||||
|
||||
SELECT sum(b.cantidad_2) INTO estadis.existe1
|
||||
FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.fecha <= datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF estadis.existe1 IS NULL THEN
|
||||
LET estadis.existe1 = 0
|
||||
END IF
|
||||
|
||||
CALL busqueda()
|
||||
|
||||
COMMAND "Anterior"
|
||||
"Para Ver Anterior Registro Cumple Condicion o Presione < O > Para Ver Ordenes"
|
||||
LET idx_b = 1
|
||||
LET idx_c = 1
|
||||
LET idx = 1
|
||||
FETCH PREVIOUS material INTO p_materiales.*
|
||||
IF status = notfound THEN
|
||||
LET numero_msg = 5
|
||||
CALL msg(numero_msg)
|
||||
END IF
|
||||
IF status < 0 THEN
|
||||
CALL integridad()
|
||||
|
||||
IF bandera = 1 THEN
|
||||
LET bandera = 0
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
LET estadis.descrip_esp = p_materiales.descrip_esp
|
||||
LET estadis.unidad_med = p_materiales.unidad_med
|
||||
LET estadis.cod_n = p_materiales.cod_n
|
||||
LET estadis.cod_grupo = p_materiales.cod_grupo
|
||||
LET estadis.cod_tipo = p_materiales.cod_tipo
|
||||
LET estadis.cod_sec = p_materiales.cod_sec
|
||||
LET estadis.dia_llegada = p_materiales.dia_llegada
|
||||
|
||||
LET consumo = 0
|
||||
SELECT sum(b.cantidad_2) INTO consumo FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.cod_mov IN(30,31) AND
|
||||
b.fecha between datos_cons1.fech_in and datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF consumo IS NULL THEN
|
||||
LET consumo = 0
|
||||
END IF
|
||||
LET estadis.consumo1 = consumo
|
||||
|
||||
SELECT sum(b.cantidad_2) INTO estadis.existe1
|
||||
FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.fecha <= datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF estadis.existe1 IS NULL THEN
|
||||
LET estadis.existe1 = 0
|
||||
END IF
|
||||
|
||||
CALL busqueda()
|
||||
|
||||
COMMAND "Primero"
|
||||
"Para Ver Primero Registro Cumple Condicion o Presione < O > Para Ver Ordenes"
|
||||
LET idx_b = 1
|
||||
LET idx_c = 1
|
||||
LET idx = 1
|
||||
FETCH FIRST material INTO p_materiales.*
|
||||
IF status = notfound THEN
|
||||
LET numero_msg = 5
|
||||
CALL msg(numero_msg)
|
||||
END IF
|
||||
IF status < 0 THEN
|
||||
CALL integridad()
|
||||
|
||||
IF bandera = 1 THEN
|
||||
LET bandera = 0
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
LET estadis.descrip_esp = p_materiales.descrip_esp
|
||||
LET estadis.unidad_med = p_materiales.unidad_med
|
||||
LET estadis.cod_n = p_materiales.cod_n
|
||||
LET estadis.cod_grupo = p_materiales.cod_grupo
|
||||
LET estadis.cod_tipo = p_materiales.cod_tipo
|
||||
LET estadis.cod_sec = p_materiales.cod_sec
|
||||
LET estadis.dia_llegada = p_materiales.dia_llegada
|
||||
|
||||
LET consumo = 0
|
||||
SELECT sum(b.cantidad_2) INTO consumo FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.cod_mov IN(30,31) AND
|
||||
b.fecha between datos_cons1.fech_in and datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF consumo IS NULL THEN
|
||||
LET consumo = 0
|
||||
END IF
|
||||
LET estadis.consumo1 = consumo
|
||||
|
||||
SELECT sum(b.cantidad_2) INTO estadis.existe1
|
||||
FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.fecha <= datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF estadis.existe1 IS NULL THEN
|
||||
LET estadis.existe1 = 0
|
||||
END IF
|
||||
|
||||
CALL busqueda()
|
||||
|
||||
COMMAND "Ultimo"
|
||||
"Para Ver Ultimo Registro Cumple Condicion o Presione < O > Para Ver Ordenes"
|
||||
LET idx_b = 1
|
||||
LET idx_c = 1
|
||||
LET idx = 1
|
||||
FETCH LAST material INTO p_materiales.*
|
||||
IF status = notfound THEN
|
||||
LET numero_msg = 4
|
||||
CALL msg(numero_msg)
|
||||
END IF
|
||||
IF status < 0 THEN
|
||||
CALL integridad()
|
||||
|
||||
IF bandera = 1 THEN
|
||||
LET bandera = 0
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
LET estadis.descrip_esp = p_materiales.descrip_esp
|
||||
LET estadis.unidad_med = p_materiales.unidad_med
|
||||
LET estadis.cod_n = p_materiales.cod_n
|
||||
LET estadis.cod_grupo = p_materiales.cod_grupo
|
||||
LET estadis.cod_tipo = p_materiales.cod_tipo
|
||||
LET estadis.cod_sec = p_materiales.cod_sec
|
||||
LET estadis.dia_llegada = p_materiales.dia_llegada
|
||||
|
||||
LET consumo = 0
|
||||
SELECT sum(b.cantidad_2) INTO consumo FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.cod_mov IN(30,31) AND
|
||||
b.fecha between datos_cons1.fech_in and datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF consumo IS NULL THEN
|
||||
LET consumo = 0
|
||||
END IF
|
||||
LET estadis.consumo1 = consumo
|
||||
|
||||
SELECT sum(b.cantidad_2) INTO estadis.existe1
|
||||
FROM iptb00006 b
|
||||
WHERE b.status_t is null and b.fecha <= datos_cons1.fech_fi AND
|
||||
b.cod_n = estadis.cod_n AND b.cod_grupo = estadis.cod_grupo AND
|
||||
b.cod_tipo = estadis.cod_tipo AND b.cod_sec = estadis.cod_sec
|
||||
|
||||
IF estadis.existe1 IS NULL THEN
|
||||
LET estadis.existe1 = 0
|
||||
END IF
|
||||
|
||||
CALL busqueda()
|
||||
|
||||
COMMAND "Ordenes"
|
||||
DISPLAY "Buscando Informacion... Espere Por Favor" AT 23,1
|
||||
ATTRIBUTE (BOLD)
|
||||
|
||||
LET p_desplega = "S"
|
||||
|
||||
CALL busca_orden()
|
||||
|
||||
COMMAND "Retornar"
|
||||
LET retorna = "S"
|
||||
EXIT MENU
|
||||
END MENU
|
||||
CLEAR FORM
|
||||
#GOTO vuelve
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION busqueda()
|
||||
|
||||
DISPLAY " " AT 23,1 ATTRIBUTE (BOLD)
|
||||
LET primera = "S"
|
||||
LET salir = "N"
|
||||
LET existencia1 = 0
|
||||
LET estadis.dias_orden = 0 using "&&&"
|
||||
LET t_pendiente = 0
|
||||
LET pendiente = 0
|
||||
LET t_recibe = 0
|
||||
|
||||
# Calculo Para los dias de produccion sin orden
|
||||
|
||||
LET existencia1 = estadis.existe1
|
||||
LET consumo = estadis.consumo1
|
||||
IF consumo < 0 THEN
|
||||
LET consumo = consumo * -1
|
||||
END IF
|
||||
IF consumo > 0 THEN
|
||||
LET dias = (existencia1 / consumo)
|
||||
ELSE
|
||||
LET dias = 0
|
||||
END IF
|
||||
LET estadis.consumo1 = consumo
|
||||
IF existencia1 <= 0 THEN
|
||||
LET dias = 0
|
||||
END IF
|
||||
|
||||
LET dias = dias * dias1
|
||||
LET dias = dias using "#####&"
|
||||
LET dias2 = dias using "#####&"
|
||||
|
||||
DISPLAY BY NAME estadis.*,dias2 ATTRIBUTE (BLUE)
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION busca_orden()
|
||||
LET cantidad = 0
|
||||
LET encontre = "N"
|
||||
LET idx = 1
|
||||
LET idx_o = 1
|
||||
LET primera = "N"
|
||||
LET idx_f = 1
|
||||
LET remanente = 0
|
||||
LET t_remanente = 0
|
||||
LET doc_ant = 0
|
||||
LET encontre_mov = "N"
|
||||
LET situacion = "N"
|
||||
LET t_recibe = 0
|
||||
|
||||
# Loop Para Buscar Las Fechas de Entrega de cada Orden Por Material
|
||||
|
||||
LET salir = "N"
|
||||
WHILE salir != "S"
|
||||
FETCH ABSOLUTE idx_f fechas INTO fechas_pend.*
|
||||
IF status = notfound THEN
|
||||
LET idx_f = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
LET idx_f = idx_f + 1
|
||||
LET remanente = 0
|
||||
LET encontre_mov = "N"
|
||||
IF estadis.cod_n = fechas_pend.cod_n AND
|
||||
estadis.cod_grupo = fechas_pend.cod_grupo AND
|
||||
estadis.cod_tipo = fechas_pend.cod_tipo AND
|
||||
estadis.cod_sec = fechas_pend.cod_sec THEN
|
||||
|
||||
IF fechas_pend.num_oc != doc_ant THEN
|
||||
LET doc_ant = fechas_pend.num_oc
|
||||
LET cantidad = 0
|
||||
END IF
|
||||
LET cantidad = fechas_pend.cantidad + cantidad
|
||||
LET remanente = cantidad
|
||||
|
||||
|
||||
LET idx_kl = idx_f
|
||||
FETCH ABSOLUTE idx_kl fechas INTO fechas_pend1.*
|
||||
IF status = notfound THEN
|
||||
GOTO salta1
|
||||
END IF
|
||||
IF fechas_pend1.num_oc = fechas_pend.num_oc THEN
|
||||
GOTO salta
|
||||
END IF
|
||||
LABEL salta1:
|
||||
LET t_recibe = 0
|
||||
LET encontre = "S"
|
||||
LET salir = "N"
|
||||
WHILE salir != "S"
|
||||
FETCH ABSOLUTE idx_o movi_orden INTO cant_movi.*
|
||||
|
||||
IF status = notfound THEN
|
||||
LET idx_o = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
LET idx_o = idx_o + 1
|
||||
LET encontre_mov = "N"
|
||||
|
||||
IF cant_movi.cod_n = fechas_pend.cod_n AND
|
||||
cant_movi.cod_grupo = fechas_pend.cod_grupo AND
|
||||
cant_movi.cod_tipo = fechas_pend.cod_tipo AND
|
||||
cant_movi.cod_sec = fechas_pend.cod_sec AND
|
||||
cant_movi.num_oc = fechas_pend.num_oc THEN
|
||||
|
||||
LET remanente = cantidad - cant_movi.existe1
|
||||
LET t_recibe = cant_movi.existe1
|
||||
|
||||
LET primera = "S"
|
||||
LET encontre_mov = "S"
|
||||
|
||||
|
||||
LET idx_o = 1
|
||||
EXIT WHILE
|
||||
END IF
|
||||
END WHILE
|
||||
LABEL salta:
|
||||
|
||||
LET t_remanente = remanente + t_remanente
|
||||
LET arr_pend[idx].num_doc = fechas_pend.num_oc
|
||||
LET arr_pend[idx].ordenada = fechas_pend.cantidad using "##,###,###.##"
|
||||
LET arr_pend[idx].recibida = t_recibe using "##,###,###.##"
|
||||
LET arr_pend[idx].cantidad = t_remanente + fechas_pend.cantidad -
|
||||
t_recibe
|
||||
using "---,---,---.##"
|
||||
LET arr_pend[idx].fecha_llegada = fechas_pend.fech_ent
|
||||
LET idx = idx + 1
|
||||
END IF
|
||||
|
||||
END WHILE
|
||||
|
||||
DISPLAY " " AT 23,1
|
||||
|
||||
# Calculo para los dias de produccion con ordenes
|
||||
|
||||
IF consumo > 0 THEN
|
||||
IF t_remanente > 0 THEN
|
||||
LET dia_orden1 = ((existencia1 + t_remanente) / consumo)
|
||||
ELSE
|
||||
LET dia_orden1 = (existencia1/consumo)
|
||||
END IF
|
||||
|
||||
LET dia_orden1 = dia_orden1 * dias1
|
||||
LET dia_orden = dia_orden1 using "####"
|
||||
LET estadis.dias_orden = dia_orden using "####"
|
||||
ELSE
|
||||
LET estadis.dias_orden = 0
|
||||
END IF
|
||||
|
||||
DISPLAY dias at 3,1 attribute (bold)
|
||||
DISPLAY dias1 at 4,1 attribute (bold)
|
||||
DISPLAY BY NAME estadis.dias_orden
|
||||
|
||||
# CALL set_count(idx - 1)
|
||||
LET idx = idx - 1
|
||||
# DISPLAY ARRAY arr_pend TO sp1.* ATTRIBUTE (BOLD)
|
||||
DISPLAY " " AT 23,40
|
||||
|
||||
LET t_cantidad = 0
|
||||
FOR idx1 = 1 TO idx
|
||||
IF arr_pend[idx1].ordenada IS NULL THEN
|
||||
LET arr_pend[idx1].ordenada = 0
|
||||
END IF
|
||||
IF arr_pend[idx1].recibida IS NULL THEN
|
||||
LET arr_pend[idx1].recibida = null
|
||||
END IF
|
||||
LET t_cantidad = t_cantidad + (arr_pend[idx1].ordenada -
|
||||
arr_pend[idx1].recibida)
|
||||
|
||||
LET arr_pend[idx1].cantidad = t_cantidad
|
||||
|
||||
#DISPLAY arr_pend[idx1].num_doc to sp1[idx1].num_oc
|
||||
#DISPLAY arr_pend[idx1].ordenada to sp1[idx1].ordenada
|
||||
#DISPLAY arr_pend[idx1].cantidad to sp1[idx1].cantidad
|
||||
#DISPLAY arr_pend[idx1].recibida to sp1[idx1].recibida
|
||||
#DISPLAY arr_pend[idx1].fecha_llegada to sp1[idx1].fecha_llegada
|
||||
END FOR
|
||||
LET idx = idx + 1
|
||||
|
||||
CALL set_count(idx - 1)
|
||||
DISPLAY ARRAY arr_pend TO sp1.* ATTRIBUTE (BOLD)
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
LET int_flag = false
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
FOR idx = 1 to idx1
|
||||
LET arr_pend[idx].num_doc = null
|
||||
LET arr_pend[idx].cantidad = null
|
||||
LET arr_pend[idx].fecha_llegada = null
|
||||
LET arr_pend[idx].ordenada = null
|
||||
LET arr_pend[idx].recibida = null
|
||||
DISPLAY arr_pend[idx].num_doc to sp1[idx].num_oc
|
||||
DISPLAY arr_pend[idx].ordenada to sp1[idx].ordenada
|
||||
DISPLAY arr_pend[idx].cantidad to sp1[idx].cantidad
|
||||
DISPLAY arr_pend[idx].recibida to sp1[idx].recibida
|
||||
DISPLAY arr_pend[idx].fecha_llegada to sp1[idx].fecha_llegada
|
||||
END FOR
|
||||
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user