Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md

This commit is contained in:
2026-08-18 20:59:52 -04:00
commit 454973e269
5978 changed files with 2664094 additions and 0 deletions
+110
View File
@@ -0,0 +1,110 @@
{
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
+378
View File
@@ -0,0 +1,378 @@
MAIN
CONNECT TO "smarmotech" USER 'jsoto' USING 'lmmjvsd2014'
CALL actualizaExistencia()
#CALL verificadocumento()
# CALL actualizaFecha()
#CALL genera()
#CALL ACTIVADOC()
# CALL generaServicio()
#CALL actualiza()
END MAIN
FUNCTION genera()
DEFINE xbodega,idx,idx1,idx2,idx3 INT
DECLARE busca CURSOR FOR
SELECT a.cod_bodega FROM intb00009 a WHERE cod_bodega = 4
ORDER BY a.cod_bodega
{
DELETE FROM intb00010 WHERE COD_SECCION NOT IN( 1000,0)
DELETE FROM intb00045 WHERE COD_SECCION NOT IN( 1000,0)
DELETE FROM intb00043 WHERE COD_SECCION NOT IN( 1000,0)
DELETE FROM intb00046 WHERE COD_SECCION NOT IN( 1000,0)
}
FOREACH busca INTO xbodega
FOR idx=1 TO 50 #------------------------------------------>>> SECCION
# INSERT INTO intb00010 (cod_bodega,cod_Seccion,descripcion)
# VALUES (xbodega,idx,idx)
# DISPLAY "INSERTE SECCION ",idx
FOR idx1 = 31 TO 50 #--------------------------------->>> TRAMOS
INSERT INTO intb00043 (cod_bodega,cod_Seccion,cod_tramo,descripcion)
VALUES (xbodega,idx,idx1,idx1)
DISPLAY "INSERTE TRAMO ",idx1
FOR idx2=1 TO 100 #--------------------------------------->>> filas
TRY
INSERT INTO intb00045 (cod_bodega,cod_seccion,cod_tramo,cod_fila,titulo)
VALUES (xbodega,idx,idx1,idx2,idx2)
DISPLAY "INSERTE FILA ",idx2
CATCH
DISPLAY "NO INSERTE FILA: ",idx2
END TRY
FOR idx3=1 TO 100 #-------------------------------------->>> POSICION
TRY
INSERT INTO intb00046 (cod_bodega,cod_seccion,cod_tramo,cod_fila,cod_pos,titulo)
VALUES (xbodega,idx,idx1,idx2,idx3,idx3)
DISPLAY "INSERTE POS ",idx3
CATCH
DISPLAY "NO INSERTE ",idx3
END TRY
END FOR
END FOR
END FOR
END FOR
END FOREACH
END FUNCTION
FUNCTION generaServicio()
DEFINE xbodega,xcodn,xcodgrupo,xcodtipo,xcodsec INT
DECLARE buscar_bd CURSOR FOR
SELECT a.cod_bodega FROM intb00009 a WHERE a.cod_bodega = 12
ORDER BY a.cod_bodega
DECLARE buscar_pt CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec INTO xcodn,xcodgrupo,xcodtipo,xcodsec
FROM iptb00002 a WHERE a.cod_n IN (12,25) AND a.status_t IS NULL
DELETE FROM iptb00062 WHERE cod_mov = 99 AND cod_n IN (12,25) AND bodega = 12
FOREACH buscar_bd INTO xbodega
FOREACH buscar_pt
INSERT INTO iptb00062
(num_doc
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cod_mov
,bodega
,cod_seccion
,cod_tramo
,cod_fila
,cod_pos
,cantidad
,cantidad2
,us_crea
,fech_crea)
VALUES
('3'
, xcodn
,xcodgrupo
,xcodtipo
,xcodsec
,99
,xbodega
,0
,0
,0
,0
,0
,0
,'JSOTO'
,GETDATE())
DISPLAY "INSERTE ",xcodn,"-",xcodgrupo,"-",xcodtipo,"-",xcodsec," ",xbodega
END FOREACH
END FOREACH
END FUNCTION
FUNCTION actualiza()
DEFINE datos RECORD
cod_mov,num_doc,bodega,cod_n,cod_grupo,cod_tipo,cod_Sec INT,
cantidad_1,cantidad_2, cantidad2 DEC(12,5)
END RECORD,
idx int
DECLARE bubicacion CURSOR FOR
select a.cod_mov,a.num_doc,a.bodega,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,
a.cantidad_1,a.cantidad_2, b.cantidad2
from iptb00006 a inner join iptb00062 b on 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.cod_mov = b.cod_mov and a.bodega = b.bodega and a.num_doc = b.num_doc
where b.fech_crea >= '2024-07-16' and b.cod_mov <> 99 and a.cantidad_2 <> b.cantidad2
order by a.bodega,a.cod_mov,a.num_Doc
LET idx=1
FOREACH bubicacion INTO datos.*
UPDATE iptb00062 SET cantidad = datos.cantidad_1,cantidad2 = datos.cantidad_2
WHERE cod_mov = datos.cod_mov AND num_Doc = datos.num_doc AND
bodega = datos.bodega AND cod_n = datos.cod_n AND
cod_Grupo = datos.cod_grupo AND cod_tipo = datos.cod_tipo AND
cod_sec = datos.cod_Sec
DISPLAY "CUENTA ",idx
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION ACTIVADOC()
DEFINE pcodmov,pnumdoc,pbodega INT
DECLARE buscadoc CURSOR FOR
select distinct a.bodega,a.num_doc,a.cod_mov,a.fecha,a.status_t,b.status_t
from iptb00006 a inner join iptb00062 b
on b.cod_mov = a.cod_mov and b.num_Doc = b.num_Doc and b.bodega = a.bodega
where a.fecha > '07/15/2024' and a.status_t = 'E' and b.status_t is NULL
FOREACH buscadoc INTO pbodega,pnumdoc,pcodmov
UPDATE IPTB00062 SET STATUS_T = 'E' WHERE cod_mov = pcodmov AND num_Doc = pnumdoc AND
bodega = pbodega
DISPLAY "ACTUALIZANDO....",pcodmov," ",pnumdoc," ",pbodega
END FOREACH
END FUNCTION
FUNCTION actualizaExistencia()
DEFINE existencia DEC(12,5),
pcodn,pcodgrupo,pcodtipo,pcodsec,pbodega INT,
xfecha VARCHAR(10)
LET pbodega = 1
LET xfecha = '2025-11-13'
DELETE FROM iptb00062 WHERE bodega = pbodega
DECLARE bexistencia CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.bodega,SUM(a.cantidad_2)
FROM iptb00006 a,intb00009 b
WHERE a.status_t IS NULL AND a.fecha <= xfecha AND
a.bodega = b.cod_bodega AND A.BODEGA =pbodega
GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.bodega
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.bodega
FOREACH bexistencia INTO pcodn,pcodgrupo,pcodtipo,pcodsec,pbodega,existencia
DISPLAY "DATO: ",pcodn,"-",pcodgrupo,"-",pcodtipo,"-",pcodsec," bodega: ",pbodega,existencia
DELETE FROM iptb00062 WHERE COD_MOV = 99 AND cod_n = pcodn AND cod_grupo=pcodgrupo AND
cod_tipo = pcodtipo AND cod_sec = pcodsec AND
bodega = pbodega
INSERT INTO iptb00062 (num_doc,fecha,cod_mov,us_crea,fech_crea,bodega,cod_seccion,cod_tramo,cod_fila,cod_pos,
cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,cantidad2)
VALUES (1,xfecha,99,'JSOTO',getdate(),pbodega,0,0,0,0,pcodn,pcodgrupo,pcodtipo,pcodsec,existencia,existencia)
END FOREACH
END FUNCTION
FUNCTION verificadocumento()
DEFINE pbodega,pnumdoc,pcodmov,pcodn,pcodgrupo,pcodtipo,pcodsec INT,
pcantidad1,pcantidad2,pcantidad1_62,pcantidad2_62 DEC(12,5),
pfecha DATE
DECLARE verificar CURSOR FOR
SELECT a.bodega,a.num_doc,a.cod_mov,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,SUM(a.cantidad_1),SUM(a.cantidad_2),
a.fecha
FROM iptb00006 a
WHERE a.status_t IS NULL AND a.fecha between '07/16/2024' AND '08/15/2024' AND a.cod_mov <> 99
GROUP BY a.bodega,a.num_doc,a.cod_mov,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.fecha
ORDER BY a.bodega,a.cod_mov,a.num_doc
DELETE FROM tmpdocumentos
FOREACH verificar INTO pbodega,pnumdoc,pcodmov,pcodn,pcodgrupo,pcodtipo,pcodsec,pcantidad1,pcantidad2,
pfecha
LET pcantidad2_62=null
SELECT DISTINCT a.cod_sec
FROM iptb00062 a
WHERE a.bodega = pbodega AND
a.num_doc = pnumdoc AND
a.cod_mov = pcodmov AND
a.cod_n = pcodn AND
a.cod_grupo = pcodgrupo AND
a.cod_tipo = pcodtipo AND
a.cod_Sec = pcodsec AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
INSERT INTO dbo.iptb00062
(num_doc
,fecha
,area
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cod_mov
,bodega
,cod_seccion
,cod_tramo
,cod_fila
,cod_pos
,cantidad
,cantidad2
,us_crea
,fech_crea)
VALUES
(pnumdoc
,pfecha
,1
,pcodn
,pcodgrupo
,pcodtipo
,pcodsec
,pcodmov
,pbodega
,0
,0
,0
,0
,pcantidad1,pcantidad2
,'JSOTO'
,GETDATE())
END IF
{
IF STATUS <> NOTFOUND THEN
DELETE FROM iptb00062
WHERE bodega = pbodega AND
num_doc = pnumdoc AND
cod_mov = pcodmov AND
cod_n = pcodn AND
cod_grupo = pcodgrupo AND
cod_tipo = pcodtipo AND
cod_Sec = pcodsec
END IF }
{ IF STATUS <> NOTFOUND THEN
UPDATE iptb00062 SET status_t = 'E',us_mod='jsoto',fech_mod=getdate()
WHERE bodega = pbodega AND
num_doc = pnumdoc AND
cod_mov = pcodmov AND
cod_n = pcodn AND
cod_grupo = pcodgrupo AND
cod_tipo = pcodtipo AND
cod_Sec = pcodsec
END IF
} {IF STATUS = NOTFOUND THEN
INSERT INTO dbo.iptb00062
(num_doc
,fecha
,area
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cod_mov
,bodega
,cod_seccion
,cod_tramo
,cod_fila
,cod_pos
,cantidad
,cantidad2
,us_crea
,fech_crea)
VALUES
(pnumdoc
,pfecha
,1
,pcodn
,pcodgrupo
,pcodtipo
,pcodsec
,pcodmov
,pbodega
,0
,0
,0
,0
,pcantidad1,pcantidad2
,'JSOTO'
,GETDATE())
END IF
} # IF STATUS <> NOTFOUND THEN
# SELECT ISNULL(SUM(a.cantidad),0),ISNULL(SUM(a.cantidad2),0)
# INTO pcantidad1_62,pcantidad2_62
# FROM iptb00062 a
# WHERE a.bodega = pbodega AND
# a.num_doc = pnumdoc AND
# a.cod_mov = pcodmov AND
# a.cod_n = pcodn AND
# a.cod_grupo = pcodgrupo AND
# a.cod_tipo = pcodtipo AND
# a.cod_Sec = pcodsec
# IF pcantidad2 <> pcantidad2_62 THEN
# UPDATE iptb00062 SET cantidad = pcantidad1,
# cantidad2 = pcantidad2,
# us_mod = 'JSOTO',
# fech_mod = getdate()
# WHERE bodega = pbodega AND cod_mov = pcodmov AND num_doc = pnumdoc AND
# cod_n = pcodn AND cod_Grupo = pcodgrupo AND
# cod_tipo = pcodtipo AND cod_sec = pcodsec
# END IF
# ELSE
# END IF
INSERT INTO tmpdocumentos VALUES (pnumdoc,pcodmov,pbodega,pcodn,pcodgrupo,
pcodtipo,
pcodsec,
pcantidad1,
pcantidad2,
pcantidad1_62,
pcantidad2_62)
DISPLAY "dato: ",pbodega," nu ",pnumdoc," cod ",pcodmov," codigo ",pcodn,"-",pcodgrupo,"-",pcodtipo,"-",pcodsec,"-",pcantidad1," ", pcantidad2
END FOREACH
END FUNCTION
FUNCTION actualizaFecha()
DEFINE pbodega,pnumdoc,pcodmov,pcodn,pcodgrupo,pcodtipo,pcodsec INT,
pfecha DATE
DECLARE buscaFecha CURSOR FOR
SELECT DISTINCT a.fecha,a.bodega,a.cod_mov,a.num_doc,a.cod_n,a.cod_Grupo,a.cod_tipo,
a.cod_sec
FROM iptb00006 a,iptb00062 b
WHERE a.bodega = b.bodega AND
a.cod_mov = b.cod_mov AND a.fecha > '07/14/2024' AND a.cod_mov <> 99 AND
b.cod_mov <> 99 and
a.num_doc = b.num_doc 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
a.status_t IS NULL
FOREACH buscaFecha INTO pfecha,pbodega,pcodmov,pnumdoc,pcodn,pcodgrupo,pcodtipo,pcodsec
UPDATE iptb00062 SET fecha = pfecha,us_mod = 'JSOTO',fech_mod=getdate()
WHERE bodega = pbodega AND cod_mov=pcodmov AND num_doc = pnumdoc AND
cod_n = pcodn AND cod_grupo = pcodgrupo AND cod_tipo = pcodtipo AND
cod_sec = pcodsec
DISPLAY "dato: ",pbodega," nu ",pnumdoc," cod ",pcodmov," codigo ",pcodn,"-",pcodgrupo,"-",pcodtipo,"-",pcodsec
END FOREACH
END FUNCTION
+3
View File
@@ -0,0 +1,3 @@
MAIN
DISPLAY "LO EJECUTE"
END MAIN