Files
jpeguero efdf8953dd Reorganiza MATERIA PRIMA a PROYECTO y avanza inprmt002/005/013/046
- Mueve todo el contenido de PROYECTOS/indir y varias funciones
  compartidas de PROYECTOS/otrodir hacia PROYECTO, siguiendo
  instruccion de Johnny (PROYECTOS se va a eliminar).
- inprmt002: agrega campo Desglose faltante, corrige typo "eLiminar".
- inprmt005: agrega formulario y 3 campos faltantes (Consumo,
  Requiere Autorizacion, Requisiciones), corrige typo "eLiminar".
- inprmt013: agrega formulario, titulo, corrige typo "eLiminar".
- inprmt046: agrega formulario y varias funciones/dependencias
  faltantes (cincodmov, clasf_bloque, medidas, defecto,
  buscaEmp, consultaTransportista, busca_departamento);
  corrige nombres de campo desalineados con el codigo
  (depto_a, bodega) y los convierte a ComboBox donde el
  codigo lo requiere.
- Corrige dependencia faltante de FORMULARIOS_IN a la libreria
  Database (bloqueaba todo el modulo de MATERIA PRIMA).
2026-08-26 13:31:09 -04:00

353 lines
12 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : INPRMT008
OBJETIVO : Capturar Informacion del Conteo Fisico del
Inventario Materia Prima.
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Septiembre 16, 1992.
MODIFICACION : No acepta el codigo del movimiento, acepta que el usuario
introduzca el documento, chequea que el documento no se
repita en la tabla intb00006 (movimientos).
Ver Puntos (*A1).
FECHA MODIFICACION: Octubre 21, 1992.
PROGRAMADOR : Tadeo A. Ferreras F.
MODIFICACION : Impresion y Numeracion Automatica Documento
FECHA MODIFICACION: Marzo 06, 1996
------------------------------------------------------------------
}
GLOBALS "inprgb000.4gl"
DEFINE p_hoy DATE
DEFINE documen INTEGER
DEFINE documento CHAR(6)
DEFINE opc2,otra,chimp CHAR(1)
DEFINE diferencia,cant_ex,ex_mov LIKE intb00006.cantidad_2
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL inprmt008()
END MAIN
FUNCTION inprmt008()
DISPLAY "inprmt008" AT 4,3
DISPLAY "Conteo Fisico y Ajuste(s)" AT 6,27
OPEN WINDOW cuenta AT 8,7 WITH FORM "infmmt008" ATTRIBUTE (BORDER,
FORM LINE FIRST + 1,COMMENT LINE LAST -1, PROMPT LINE LAST)
WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
LET p_conteo.fecha = today
LABEL volver:
CLEAR FORM
LET cant_ex = 0
LET p_hoy = p_conteo.fecha
INITIALIZE p_conteo.* to null
LET p_conteo.fecha = p_hoy
INPUT BY NAME p_conteo.* WITHOUT DEFAULTS ATTRIBUTE (YELLOW)
BEFORE FIELD fecha
IF otra != "S" THEN
INITIALIZE p_conteo.* TO NULL
LET documento = null
END IF
LET otra = null
AFTER FIELD fecha
LET p_fechas = p_conteo.fecha
CALL prd(p_fechas)
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
IF p_conteo.fecha > TODAY THEN
LET numero_msg = 162
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
AFTER FIELD bodega
SELECT * FROM intb00009 WHERE cod_bodega = p_conteo.bodega
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD bodega
END IF
AFTER FIELD cod_sec
## Verifica que el codigo no exista en el catalogo de unidades. Si existe,
## entonces despliega los datos del registro existente.
SELECT a.descrip_esp,a.unidad_med
INTO articulos.descrip_esp, articulos.unidad_med
FROM intb00001 a,intb00002 b
WHERE a.cod_n = p_conteo.cod_n and a.cod_grupo = p_conteo.cod_grupo and
a.cod_tipo = p_conteo.cod_tipo and a.cod_sec= p_conteo.cod_sec and
b.cod_n = p_conteo.cod_n and b.cod_grupo = p_conteo.cod_grupo and
b.cod_tipo = p_conteo.cod_tipo and b.cod_sec = p_conteo.cod_sec and
b.bodega = p_conteo.bodega
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET ex_mov = 0
SELECT sum(cantidad_2) INTO ex_mov FROM intb00006
WHERE cod_n = p_conteo.cod_n and cod_grupo = p_conteo.cod_grupo and
cod_tipo = p_conteo.cod_tipo and cod_sec = p_conteo.cod_sec and
status_t is null and fecha <= p_conteo.fecha
IF ex_mov IS NULL THEN
LET ex_mov = 0
END IF
LET ex_mov = ex_mov USING "---,---,---.##"
DISPLAY BY NAME articulos.descrip_esp,articulos.unidad_med,ex_mov
LET documen = documento
AFTER FIELD cantidad
IF p_conteo.cantidad IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad
END IF
LET diferencia = (p_conteo.cantidad - ex_mov)
IF diferencia < 0 THEN
LET datos_gen.cod_mov = 25
ELSE
LET datos_gen.cod_mov = 52
END IF
DISPLAY BY NAME diferencia
SELECT descrip_mov INTO datos_gen.descrip_mov FROM intb00005
WHERE cod_mov = datos_gen.cod_mov
DISPLAY BY NAME datos_gen.descrip_mov,datos_gen.cod_mov
SELECT UNIQUE a.num_doc INTO datos_gen.num_doc FROM intb00023 a
WHERE a.cod_mov = datos_gen.cod_mov
IF datos_gen.num_doc IS NULL THEN
LET datos_gen.num_doc = 0
END IF
LET datos_gen.num_doc = datos_gen.num_doc + 1
SELECT UNIQUE a.num_doc FROM intb00006 a
WHERE a.cod_mov = datos_gen.cod_mov AND a.num_doc = datos_gen.num_doc
IF STATUS != NOTFOUND THEN
SELECT MAX(a.num_doc) FROM intb00006 a
WHERE a.cod_mov = datos_gen.cod_mov AND a.num_doc = datos_gen.num_doc
IF datos_gen.num_doc IS NULL THEN
LET datos_gen.num_doc = 0
END IF
LET datos_gen.num_doc = datos_gen.num_doc + 1
END IF
DISPLAY BY NAME datos_gen.num_doc
SLEEP 2
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
GOTO sale1
END IF
LABEL pregu2:
PROMPT "Toda La Informnacion Es Correcta (S/N)" FOR opc2
LET opc2 = upshift (opc2)
IF (opc2 IS NULL) OR (opc2 != "S" AND opc2 != "N") THEN
GOTO pregu2
END IF
IF opc2 = "S" THEN
INSERT INTO intb00011 VALUES(p_conteo.*,ex_mov,user,current,null,null)
UPDATE intb00023 SET num_doc = datos_gen.num_doc
WHERE cod_mov = datos_gen.cod_mov
IF diferencia = 0 THEN
ERROR "No tiene Diferencia, Por lo Tanto No Se Creara Movimiento de Ajuste"
ELSE
LABEL pregu:
PROMPT "Tiene Diferencia el Conteo, Desea Hacer Ajuste (S/N)" FOR opc
LET opc = upshift (opc)
IF (opc IS NULL) OR (opc != "S" AND opc != "N") THEN
GOTO pregu
END IF
IF opc = "S" THEN
# Ejecuta los movimientos dependiendo si es de entrada o salida
LET documento = datos_gen.num_doc
INSERT INTO intb00006(num_doc,cod_mov,fecha,cod_n,cod_grupo,cod_tipo,
cod_sec,cantidad_2,bodega,us_crea,fech_crea)
VALUES (datos_gen.num_doc,datos_gen.cod_mov,p_conteo.fecha,
p_conteo.cod_n,p_conteo.cod_grupo,p_conteo.cod_tipo,
p_conteo.cod_sec,diferencia,p_conteo.bodega,user,current)
PROMPT "Desea Imprimir este docuemtno? " FOR chimp
LET chimp = UPSHIFT(chimp)
IF chimp = "S" THEN
START REPORT ajuste TO "C:\\archivo"
ERROR "Imprsion en Proceso... Espere Por Favor"
OUTPUT TO REPORT ajuste()
FINISH REPORT ajuste
RUN "TYPE C:\\archivo > %USPRINT%"
END IF
END IF
END IF
END IF
CLEAR FORM
GOTO volver
LABEL sale1:
CLOSE WINDOW cuenta
END FUNCTION
FUNCTION introduce(documento,mueve,diferencia,de,cant_ex,ex_mov)
# Funcion actualizadora de las tablas del ajuste y conteo fisico
DEFINE documento CHAR(6)
DEFINE documen INTEGER
DEFINE mueve,de CHAR(1)
DEFINE ex_mov,cant_ex, diferencia DECIMAL(10,2)
LET documen = documento
SELECT unique cantidad FROM intb00011
WHERE fecha = p_conteo.fecha and cod_n = p_conteo.cod_n and
cod_grupo = p_conteo.cod_grupo and cod_tipo = p_conteo.cod_tipo and
cod_sec = p_conteo.cod_sec and bodega = p_conteo.bodega
IF STATUS = NOTFOUND THEN
INSERT INTO intb00011 values (p_conteo.*,ex_mov,user,current,null,null)
ELSE
# Si el conteo existe busca la cantidad que se le digito anterior a este
# conteo
SELECT unique cantidad_2 INTO cant_ex FROM intb00006
WHERE num_doc = documen and cod_mov = datos_gen.cod_mov and
cod_n = p_conteo.cod_n and cod_grupo = p_conteo.cod_grupo and
cod_tipo = p_conteo.cod_tipo and cod_sec = p_conteo.cod_sec and
bodega = p_conteo.bodega
UPDATE intb00011 set cantidad = p_conteo.cantidad,
us_mod = user,
fech_mod = current
WHERE fecha = p_conteo.fecha and cod_n = p_conteo.cod_n and
cod_grupo = p_conteo.cod_grupo and cod_tipo = p_conteo.cod_tipo and
cod_sec = p_conteo.cod_sec and bodega = p_conteo.bodega
IF datos_gen.cod_mov = 52 THEN
LET p_conteo.cantidad = (ex_mov - cant_ex) + diferencia
ELSE
LET p_conteo.cantidad = (ex_mov+ cant_ex) + diferencia
END IF
END IF
IF de = "S" THEN
LET numero_msg = 13
CALL msg(numero_msg)
ELSE
LET numero_msg = 1
CALL msg(numero_msg)
END IF
LET de = null
END FUNCTION
REPORT ajuste( )
DEFINE x RECORD
fecha DATE,
bodega LIKE intb00006.bodega,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad DECIMAL(12,2)
END RECORD
DEFINE doce,normal,negras_of,negras_on,doble_on CHAR(2)
DEFINE l,unidades INTEGER
OUTPUT
TOP MARGIN 0
BOTTOM MARGIN 0
LEFT MARGIN 0
PAGE LENGTH 33
FORMAT
#BEFORE GROUP OF doc
PAGE HEADER
LET negras_on = ASCII 27, ASCII 69
LET negras_of = ASCII 27, ASCII 70
LET doble_on = ASCII 14
LET normal = ASCII 27,ASCII 80
LET doce = ASCII 27,ASCII 77
PRINT COLUMN 1,normal,negras_on,doble_on,
COLUMN 1,p_companias.nombre CLIPPED," " ,
p_companias.rnc CLIPPED
SKIP 1 LINE
PRINT COLUMN 31, "AJUSTE DE MATERIAL"
LET l = (80 - LENGTH(datos_gen.descrip_mov))/2
SKIP 1 LINE
PRINT COLUMN l, negras_on,datos_gen.descrip_mov,negras_of
PRINT negras_on
PRINT COLUMN 1, "Docto. No.",doble_on,datos_gen.num_doc USING "&&&&&&"
SKIP 1 LINE
PRINT COLUMN 1, "Fecha : ",p_conteo.fecha USING "dd/mm/yy"
SKIP 1 LINE
PRINT COLUMN 1, "MATERIAL : ", p_conteo.cod_n USING "&","-",
p_conteo.cod_grupo USING "&","-",
p_conteo.cod_tipo USING "&","-",
p_conteo.cod_sec USING "&&&"," ",
articulos.descrip_esp CLIPPED," ",
articulos.unidad_med
SKIP 1 LINE
PRINT COLUMN 1, "=====================================================",
"==========================="
PRINT COLUMN 5, "EXISTENCIA",
COLUMN 42, "INVENTARIO",
COLUMN 68, "CANTIDAD"
PRINT COLUMN 5, "S/LIBRO ",
COLUMN 42, "FISICO",
COLUMN 68, "AJUSTADA"
PRINT COLUMN 1, "=====================================================",
"==========================="
PRINT negras_of
PRINT COLUMN 1, ex_mov USING "(((,(((,(((.##)",
COLUMN 37, p_conteo.cantidad USING "(((,(((,(((.##)",
COLUMN 61, diferencia USING "(((,(((,(((.##)"
SKIP 4 LINE
PRINT normal
PRINT COLUMN 1,"OBSERVACION :"
PRINT
PRINT COLUMN 1,
"--------------------------------------------------------------------------"
PRINT
PRINT COLUMN 1,
"--------------------------------------------------------------------------"
PRINT
PRINT COLUMN 1,
"--------------------------------------------------------------------------"
END REPORT