Files
MBS/PROYECTOS/ipdir/ipprmt008.4gl
T

691 lines
23 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IPPRMT008
OBJETIVO : Capturar Informacion del Conteo Fisico del
Inventario Producto Terminado.
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Febrero 9, 1993.
OBJETIVO : Permitir Numeracion Automatica e Impresion del Documento
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA REALIZACION : Marzo 07, 1996
------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE p_hoy DATE
DEFINE documen INTEGER
DEFINE documento CHAR(6)
DEFINE ano CHAR (4),chimp CHAR(1)
DEFINE opc2,salir,otra,de,mueve CHAR(1)
DEFINE diferencia,cant_ex,ex_mov LIKE iptb00006.cantidad_2
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL ipprmt008()
END MAIN
FUNCTION ipprmt008()
DISPLAY "ipprmt008" AT 4,3
DISPLAY "Conteo Fisico y Ajuste(s)" AT 6,27
OPEN WINDOW cuenta AT 8,7 WITH FORM "ipfmmt008" 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 (BLUE)
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 b.descrip_esp,b.descrip_ing,b.unidad_med
INTO articulos.descrip_esp, articulos.descrip_ing,
articulos.unidad_med
FROM iptb00002 b
WHERE 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 descripcion = articulos.descrip_esp CLIPPED
LET ex_mov = 0
SELECT sum(cantidad_2) INTO ex_mov FROM iptb00006
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 descripcion,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 IS NULL THEN
LET diferencia = p_conteo.cantidad
END IF
IF diferencia < 0 THEN
LET datos_gen.cod_mov = 25
ELSE
LET datos_gen.cod_mov = 11
END IF
DISPLAY BY NAME diferencia
SELECT descrip_mov INTO datos_gen.descrip_mov FROM iptb00005
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 iptb00007 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 iptb00006 a
WHERE a.cod_mov = datos_gen.cod_mov AND a.num_doc = datos_gen.num_doc and
a.fecha > "01012007"
IF STATUS != NOTFOUND THEN
SELECT MAX(a.num_doc) FROM iptb00006 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 Informacion 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
SELECT UNIQUE a.cod_n FROM iptb00011 a WHERE a.fecha = p_conteo.fecha AND
a.cod_n = p_conteo.cod_n and a.cod_grupo = p_conteo.cod_grupo and a.cod_tipo = p_conteo.cod_sec
IF STATUS = NOTFOUND THEN
INSERT INTO iptb00011 VALUES(p_conteo.*,ex_mov,suser_sname(),GETDATE(),null,null)
ELSE
UPDATE iptb00011 set cantidad = p_conteo.cantidad
WHERE a.fecha = p_conteo.fecha AND
a.cod_n = p_conteo.cod_n and a.cod_grupo = p_conteo.cod_grupo and a.cod_tipo = p_conteo.cod_sec
END IF
UPDATE iptb00007 SET num_doc = datos_gen.num_doc
WHERE cod_mov = datos_gen.cod_mov
IF diferencia = 0 or diferencia IS NULL 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 iptb00006(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,SUSER_SNAME(),GETDATE())
PROMPT "Desea Imprimir este documento? " FOR chimp
LET chimp = UPSHIFT(chimp)
IF chimp = "S" THEN
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT ajuste TO archivo
ERROR "Imprsion en Proceso... Espere Por Favor"
OUTPUT TO REPORT ajuste()
FINISH REPORT ajuste
RUN imprime
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 iptb00011
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 iptb00011 values (p_conteo.*,ex_mov,SUSER_SNAME(),GETDATE(),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 iptb00006
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 iptb00011 set cantidad = p_conteo.cantidad,
us_mod = Suser_SNAME(),
fech_mod = GETDATE()
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 = 11 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 iptb00006.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,doble_of 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 doble_of = ASCII 18
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
PRINT doble_of
PRINT COLUMN 26, "AJUSTE DE PRODUCTO TERMINADO"
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 "&&&&&&"
PRINT doble_of
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 "&&&"," ",
descripcion 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
{
FUNCTION ipprmt008()
DEFINE p_hoy DATE
DEFINE p_cantidad,documen INTEGER
DEFINE documento CHAR(6)
DEFINE ano CHAR (4),
p_cia LIKE iptb00002.cod_cia,
p_descrip LIKE iptb00005.descrip_mov
DEFINE existe,salir,otra,de,mueve CHAR(1)
DEFINE dife_ant,diferencia,cant_ex,cant_ant,balance_in,ex_mov DECIMAL(10,2)
DISPLAY "ipprmt008" AT 4,3
DISPLAY "Conteo Fisico y Ajuste(s)" AT 6,27
OPEN WINDOW cuenta AT 8,7 WITH FORM "ipfmmt008" ATTRIBUTE (BORDER,
MESSAGE LINE FIRST,FORM LINE FIRST + 1,COMMENT LINE LAST -1,
PROMPT LINE LAST)
# WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
MESSAGE " <Esc> Graba Registro <Delete> Cancela Operacion"
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 (BLUE)
BEFORE FIELD fecha
INITIALIZE p_conteo.* TO NULL
LET documento = null
AFTER FIELD fecha
LET p_fechas = p_conteo.fecha
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
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 b.descrip_esp,b.unidad_med,b.cod_cia
INTO articulos.descrip_esp, articulos.unidad_med,p_cia
FROM iptb00002 b
WHERE 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 >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
CLEAR SCREEN
RETURN
END IF
END IF
LET descripcion = articulos.descrip_esp CLIPPED
DISPLAY BY NAME descripcion ATTRIBUTE(CYAN)
DISPLAY BY NAME articulos.unidad_med ATTRIBUTE(CYAN)
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
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
LET salir = "S"
GOTO sale
END IF
SELECT sum(cantidad_2) INTO balance FROM iptb00006 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
LET ex_mov = balance
LET ex_mov = ex_mov USING "---,---,---.##"
DISPLAY BY NAME ex_mov
LABEL sale:
EXIT INPUT
END INPUT
IF salir = "S" THEN
GOTO sale1
END IF
LET diferencia = ex_mov - p_conteo.cantidad
IF diferencia < 0 THEN
LET datos_gen.cod_mov = 11
LET diferencia = diferencia * -1
ELSE
LET datos_gen.cod_mov = 25
END IF
DISPLAY BY NAME diferencia
SELECT num_doc INTO documento FROM iptb00007
WHERE cod_mov = datos_gen.cod_mov
IF documento is null THEN
LET documento = 1
END IF
LET documento = documento + 1
DISPLAY datos_gen.cod_mov," ",documento at 11,3
# Este control de que el documento existe fue puesto por orden del Ing. Paulino
SELECT UNIQUE a.num_doc FROM iptb00006 a
WHERE a.num_doc = documento and
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
a.cod_mov = datos_gen.cod_mov
IF status != notfound THEN
LET numero_msg = 12
CALL msg(numero_msg)
GOTO volver
END IF
#A1 COMIENZA
IF diferencia = 0 THEN
PROMPT "No tiene Diferencia, Desea Proseguir (S/N)" FOR CHAR opc
LET opc = upshift(opc)
IF opc = "N" THEN
GOTO volver
LET OPC = NULL
ELSE
SELECT UNIQUE cod_n FROM iptb00011
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 iptb00011 VALUES (p_conteo.*,ex_mov,user,GETDATE(),null,
null)
ELSE
UPDATE iptb00011 SET cantidad = p_conteo.cantidad,
us_mod = user,
fech_mod = GETDATE()
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
END IF
GOTO dif
LET OPC = NULL
END IF
END IF
LABEL dif:
#A1 TERMINA
IF ex_mov != p_conteo.cantidad THEN
LET opc = "N"
PROMPT "Tiene Diferencia el Conteo, Desea Hacer Ajuste (S/N)" FOR OPC
LET opc = upshift(opc)
#A1 COMIENZA
IF opc = "S" THEN
START REPORT formu4 TO "C:\\archivo"
DISPLAY "Codigo de Movimiento" AT 11,3
DISPLAY "Numero Documento " AT 12,3
SELECT descrip_mov,status_mov INTO datos_gen.descrip_mov,mueve
FROM iptb00005 WHERE cod_mov = datos_gen.cod_mov
DISPLAY BY NAME datos_gen.descrip_mov,datos_gen.cod_mov
LABEL err1:
LET datos_gen.num_doc = documento
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
GOTO sale1
END IF
# Llama a la funcion que actializa las tablas que se afectara por el ajuste
CALL introduce(documento,mueve,diferencia,de,cant_ex,ex_mov)
SELECT a.descrip_mov INTO p_descrip
FROM iptb00005 a
WHERE a.cod_mov = datos_gen.cod_mov
SELECT cantidad INTO p_cantidad
FROM vetb00014
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
OUTPUT TO REPORT formu4(documento,p_cia,datos_gen.cod_mov,0,0,
" ",null,null,p_conteo.fecha,p_descrip,
p_conteo.bodega,null,null,null,null,
p_conteo.cod_n,p_conteo.cod_grupo,
p_conteo.cod_tipo,p_conteo.cod_sec,
0,diferencia,articulos.unidad_med,
articulos.descrip_esp,p_cantidad)
FINISH REPORT formu4
RUN "type c:\\archivo > %USPRINT%"
END IF
END IF
IF opc = "N" THEN
SELECT unique cod_n FROM iptb00011
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 iptb00011 VALUES (p_conteo.*,ex_mov,user,GETDATE(),null,null)
ELSE
UPDATE iptb00011 SET cantidad = p_conteo.cantidad,
us_mod = user,
fech_mod = GETDATE()
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
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
IF datos_gen.cod_mov = 25 THEN
LET diferencia = diferencia * -1
END IF
INSERT INTO iptb00006(num_doc,cod_mov,fecha,cod_n,cod_grupo,cod_tipo,
cod_sec,cantidad_2,bodega,us_crea,fech_crea)
VALUES (documento,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,GETDATE())
UPDATE iptb00007 SET num_doc = documento
WHERE cod_mov = datos_gen.cod_mov
SELECT UNIQUE cantidad FROM iptb00011
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 iptb00011 values (p_conteo.*,ex_mov,user,GETDATE(),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 iptb00006
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 iptb00011 SET cantidad = p_conteo.cantidad,
us_mod = user,
fech_mod = GETDATE()
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 = 11 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
}