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
+200
View File
@@ -0,0 +1,200 @@
{
-------------------------------------------------------------------------------
PROGRAMA : COPRCS007
OBJETIVO : Consulta Ordenes Organizadas Por Tipo
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Octubre 7, 1992
-------------------------------------------------------------------------------
}
GLOBALS "coprgb000.4gl"
FUNCTION coprcs007()
DEFINE sale CHAR (1)
DEFINE busca_orden RECORD
num_oc integer,
tipo char(2),
fecha date,
cod_sp smallint,
cod_sp_sec smallint,
nombre char(45),
monto decimal(12,2)
END RECORD
DEFINE desp_orden ARRAY[500] OF RECORD
num_oc1 integer,
tipo1 char(2),
fecha1 date,
codigo_s char(7),
nombre1 char(45),
monto1 decimal(12,2)
END RECORD
DEFINE encontrado integer
DEFINE total_d,total_g DECIMAL(12,2)
DEFINE primera char(1)
WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
LET formulario = formulario CLIPPED,"cofmcs007"
OPEN FORM cofmcs007 FROM formulario
DISPLAY FORM cofmcs007
CALL PANTALLA()
DISPLAY "<Esc> Continua Consulta" AT 2,3
DISPLAY "<Delete> Cancela Operacion" AT 2,50
DISPLAY "coprcs007" AT 4,3
DISPLAY "Consulta Ordenes Organizadas Por Tipo " AT 6,23
LABEL volver:
INPUT BY NAME rango.* ATTRIBUTE (YELLOW)
AFTER FIELD fech_in
IF rango.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
AFTER FIELD fech_fi
IF rango.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT INPUT
END INPUT
## Se seleccionan los campos que el usuario debe ver en la pantalla
DISPLAY "Buscando Informacion... Espere Por Favor" AT 21,1 ATTRIBUTE(YELLOW)
SELECT COUNT(*) INTO encontrado FROM cotb00014 WHERE
fech_oc between rango.fech_in and rango.fech_fi
DECLARE accion CURSOR FOR
SELECT a.num_oc ,a.tipo,a.fech_oc,b.cod_sp,b.cod_sp_sec,b.nom_sp,
sum(c.precio)
FROM cotb00014 a, cotb00001 b,cotb00015 c
WHERE a.num_oc = c.num_oc and
a.tipo = c.tipo and
a.cod_sp = b.cod_sp and
a.cod_sp_sec = b.cod_sp_sec and
a.fech_oc between rango.fech_in and rango.fech_fi AND
a.status_t IS NULL
GROUP BY 1,2,3,4,5,6
ORDER BY 2,1
## Busca los registros que cumplan con la condicion dada y verifica si el
## suplidor existe en el catalogo de suplidores
OPEN accion
LET idx = 1
LET primera = "S"
LET total_g = 0
LET total_d = 0
WHILE STATUS != NOTFOUND
FETCH accion INTO busca_orden.*
IF status = notfound AND sale is null THEN
LET desp_orden[idx].codigo_s = null
LET desp_orden[idx].nombre1 = null
LET desp_orden[idx].num_oc1 = null
LET desp_orden[idx].tipo1 = null
LET desp_orden[idx].fecha1 = null
LET idx = idx + 1
LET desp_orden[idx].codigo_s = null
LET desp_orden[idx].nombre1 = null
LET desp_orden[idx].num_oc1 = null
LET desp_orden[idx].tipo1 = null
LET desp_orden[idx].fecha1 = null
LET desp_orden[idx].nombre1 = "Total Tipo Orden ==> "
LET desp_orden[idx].monto1 = total_d using "##,###,###.##"
LET total_g = total_g + total_d
LET sale = "S"
END IF
IF primera = "S" THEN
LET desp_orden[idx].tipo1 = busca_orden.tipo
LET primera = "N"
END IF
IF desp_orden[idx].tipo1 = busca_orden.tipo THEN
LET desp_orden[idx].codigo_s = busca_orden.cod_sp using "&&","-",
busca_orden.cod_sp_sec using "&&&&"
LET desp_orden[idx].nombre1 = busca_orden.nombre
LET desp_orden[idx].num_oc1 = busca_orden.num_oc
LET desp_orden[idx].tipo1 = busca_orden.tipo
LET desp_orden[idx].monto1 = busca_orden.monto
LET desp_orden[idx].fecha1 = busca_orden.fecha using "dd/mm/yy"
LET total_d = total_d + desp_orden[idx].monto1
END IF
IF desp_orden[idx].tipo1 != busca_orden.tipo THEN
LET desp_orden[idx].codigo_s = null
LET desp_orden[idx].nombre1 = null
LET desp_orden[idx].num_oc1 = null
LET desp_orden[idx].tipo1 = null
LET desp_orden[idx].fecha1 = null
LET idx = idx + 1
LET desp_orden[idx].codigo_s = null
LET desp_orden[idx].nombre1 = null
LET desp_orden[idx].num_oc1 = null
LET desp_orden[idx].tipo1 = null
LET desp_orden[idx].fecha1 = null
LET desp_orden[idx].nombre1 = "Total Tipo Orden ==> "
LET desp_orden[idx].monto1 = total_d using "##,###,###.##"
LET total_g = total_g + total_d
LET total_d = 0
LET primera = "S"
LET idx = idx + 1
LET desp_orden[idx].codigo_s = null
LET desp_orden[idx].nombre1 = null
LET desp_orden[idx].num_oc1 = null
LET desp_orden[idx].tipo1 = null
LET desp_orden[idx].fecha1 = null
LET idx = idx + 1
LET desp_orden[idx].codigo_s = null
LET desp_orden[idx].nombre1 = null
LET desp_orden[idx].num_oc1 = null
LET desp_orden[idx].tipo1 = null
LET desp_orden[idx].fecha1 = null
LET desp_orden[idx].codigo_s = busca_orden.cod_sp using "&&","-",
busca_orden.cod_sp_sec using "&&&&"
LET desp_orden[idx].nombre1 = busca_orden.nombre
LET desp_orden[idx].num_oc1 = busca_orden.num_oc
LET desp_orden[idx].tipo1 = busca_orden.tipo
LET desp_orden[idx].monto1 = busca_orden.monto using "##,###,###.##"
LET desp_orden[idx].fecha1 = busca_orden.fecha using "dd/mm/yy"
LET total_d = total_d + desp_orden[idx].monto1
END IF
LET idx = idx + 1
IF sale = "S" THEN
EXIT WHILE
END IF
LET desp_orden[idx].tipo1 = busca_orden.tipo
END WHILE
DISPLAY " " AT 21,1
DISPLAY BY NAME encontrado
DISPLAY BY NAME total_g
CALL set_count (idx-1)
DISPLAY ARRAY desp_orden TO orden.*
## Verifica si el usuario presiono la tecla <Delete>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
ELSE
CLEAR FORM
GOTO volver
END IF
END FUNCTION