{ ------------------------------------------------------------------ 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 "decomarmol" USER usuarios USING clave SELECT administrador,cod_comp,control2factura,controlordenpedidos,direccion, facturacontrolconduce,fax,fech_crea,fech_mod,nombre,rnc,rutalogocia, status_t,telefono,tipo_db,url,us_crea,us_mod,usuario INTO p_companias.administrador,p_companias.cod_comp, p_companias.control2factura,p_companias.controlordenpedidos,p_companias.direccion, p_companias.facturacontrolconduce,p_companias.fax,p_companias.fech_crea, p_companias.fech_mod,p_companias.nombre,p_companias.rnc,p_companias.rutalogocia, p_companias.status_t,p_companias.telefono,p_companias.tipo_db, p_companias.url,p_companias.us_crea,p_companias.us_mod,p_companias.usuario 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,usuarios) RETURNING bandera 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 CALL selectOutput() RETURNING r_output # IF r_output = 'XLSX' THEN # LET r_output="SVG" # END IF CALL configureOutput(r_output) RETURNING HANDLER START REPORT ajuste TO XML HANDLER HANDLER 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 " Graba Registro 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 }