111 lines
3.7 KiB
Plaintext
111 lines
3.7 KiB
Plaintext
{
|
|
A- conseguir los numeros de ITEMS por categoria. Con los numeros de semanas. lOS QUE NO SE CONTARON DEBE IR A LA PROXIMOA
|
|
B- Conseguir los numeros de los B pero mensual
|
|
|
|
}
|
|
MAIN
|
|
DEFINE pcategoria CHAR(2),
|
|
pfecha DATE
|
|
CONNECT TO "smarmotech" USER 'jsoto' USING 'lmmjvsd2014'
|
|
DECLARE ciclo CURSOR FOR SELECT a.categoria INTO pcategoria FROM intb00016 a
|
|
WHERE a.categoria = 'A'
|
|
ORDER BY a.categoria
|
|
|
|
FOREACH ciclo
|
|
IF pcategoria = 'A' THEN
|
|
LET pfecha = '02/17/2025'
|
|
END IF
|
|
IF pcategoria = 'B' THEN
|
|
LET pfecha = '03/17/2025'
|
|
END IF
|
|
IF pcategoria = 'C' THEN
|
|
LET pfecha = '04/21/2025'
|
|
END IF
|
|
|
|
CALL generar_ciclo_conteo(pcategoria,pfecha)
|
|
END FOREACH
|
|
END MAIN
|
|
|
|
FUNCTION generar_ciclo_conteo(kcategoria,fecha_proceso)
|
|
DEFINE categoria RECORD
|
|
categoria CHAR(1),
|
|
dias_contar INTEGER,
|
|
ciclo INTEGER
|
|
END RECORD,
|
|
kcategoria CHAR(2),
|
|
fecha_proceso DATE,
|
|
almacen int
|
|
|
|
# DEFINE categoria_a categoria
|
|
# DEFINE categoria_b categoria
|
|
# DEFINE categoria_c categoria
|
|
|
|
DEFINE producto RECORD
|
|
cod_n CHAR(10),
|
|
cod_grupo CHAR(10),
|
|
cod_tipo CHAR(10),
|
|
cod_sec CHAR(10),
|
|
categoria CHAR(1)
|
|
END RECORD
|
|
|
|
DEFINE semana_actual DATE
|
|
DEFINE semana_inicio DATE
|
|
DEFINE semana_fin DATE
|
|
DEFINE dias_contar INTEGER
|
|
DEFINE ciclo,cuenta,cantidad,cuenta_ciclo,cuentaReg,dia_libre INTEGER
|
|
|
|
LET almacen = 4
|
|
DELETE FROM intb00015 WHERE intb00015.CATEGORIA = kcategoria AND estado = 'Pendiente' AND
|
|
bodega = almacen
|
|
LET cuenta = 1
|
|
LET dia_libre = 1
|
|
-- Obtener parámetros de la tabla intb00016
|
|
SELECT a.categoria, a.dias, a.ciclo,COUNT(*)
|
|
INTO categoria.categoria, categoria.dias_contar, categoria.ciclo,cuenta
|
|
FROM intb00016 a INNER JOIN iptb00002 b ON b.categoria = a.categoria AND a.categoria = kcategoria
|
|
GROUP BY a.categoria, a.dias, a.ciclo
|
|
|
|
|
|
LET cantidad = (cuenta / categoria.ciclo) USING "<<<<"
|
|
LET cuentaReg = 0
|
|
-- Obtener la fecha actual para calcular semanas
|
|
LET semana_actual = TODAY
|
|
LET semana_inicio = fecha_proceso
|
|
-- Procesar productos según categoría
|
|
DECLARE buscar CURSOR FOR
|
|
SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.categoria INTO producto.*
|
|
FROM iptb00002 a
|
|
WHERE a.categoria = kcategoria
|
|
ORDER BY categoria,cod_n, cod_grupo, cod_tipo, cod_sec
|
|
FOREACH buscar
|
|
|
|
|
|
LET dias_contar = categoria.dias_contar
|
|
LET ciclo = categoria.ciclo
|
|
LET cuenta_ciclo = cantidad
|
|
|
|
-- Generar ciclos de conteo
|
|
|
|
# WHILE semana_inicio + dias_contar <= semana_inicio + ciclo
|
|
LET semana_fin = semana_inicio + (dias_contar)
|
|
INSERT INTO intb00015 (cod_n, cod_grupo, cod_tipo, cod_sec, semana_del, semana_al,categoria,estado,bodega)
|
|
VALUES (producto.cod_n, producto.cod_grupo, producto.cod_tipo, producto.cod_sec,
|
|
semana_inicio, semana_fin,producto.categoria,'Pendiente',almacen)
|
|
|
|
DISPLAY "data: ",cuenta, " cuenta ciclo: ",cuenta_ciclo," semana_inicia: ",semana_inicio, " fecha ",fecha_proceso
|
|
IF cuentaReg <= cuenta_ciclo THEN
|
|
|
|
|
|
LET cuentaReg = cuentaReg + 1
|
|
ELSE
|
|
-- Reiniciar el contador y avanzar a la próxima semana
|
|
LET semana_inicio = semana_fin + 1+dia_libre
|
|
LET cuentaReg = 1
|
|
END IF
|
|
|
|
# END WHILE
|
|
|
|
|
|
END FOREACH
|
|
END FUNCTION
|