{ -------------------------------------------------------------------------- PROGRAMA : IPPRMT044 OBJETIVO : Programa Captura Documento Otros Movimientos de Inventario de Producto Terminados. PROGRAMADOR : Juan Soto. FECHA REALIZACION : AGOSTO 1997. ASESOR : JOSE ALFREDO PAULINO ALEJO MODIFICADO POR : VICTOR GOMEZ C. OBJETIVO : ACTUALIZAR EL ARCHIVO DE MONITOREO DE LAS ORDENES DE PRODUCCION FECHA : Saturday, 03 March, 2001 11:01:36 AM -------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE selec_pt CHAR(1000) DEFINE ordenx INTEGER DEFINE cant_ant ARRAY[50] OF INTEGER DEFINE factor_conv ARRAY[200] OF DECIMAL(12,5), cantidad_factura,cantidad_devuelta,total_medida,cantidad_orden,cantidad_recibida,diferencia DEC(12,5) DEFINE ac_cli,reimpresion,pcerrada CHAR(1), xcotizacion INTEGER, pcontrol_cliente CHAR(3) DEFINE prtb09 RECORD LIKE prtb00009.* DEFINE busca_v RECORD sec_cliente INTEGER, nombre CHAR(30) END RECORD DEFINE despiece DYNAMIC ARRAY OF RECORD etiqueta CHAR(20), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, lado_1 DEC(12,5), lado_2 DEC(12,5), lado_3 DEC(12,5), cantidad DEC(12,5), medida DEC(12,5) END RECORD, cantidad_entrada,cantidad_conduce,pendiente DEC(12,5) 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 ipprmt044() END MAIN FUNCTION busca_cliente() LET int_flag = FALSE OPEN WINDOW cliente AT 10,9 WITH FORM "ipfmwd009" ATTRIBUTE(BORDER,FORM LINE FIRST + 2) CONSTRUCT BY NAME criterio ON a.tipo_cliente,a.sec_cliente,a.nombre LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre FROM vetb00004 a ", "WHERE a.status_t IS NULL AND ",criterio CLIPPED, "ORDER BY 1,2" PREPARE comando3 FROM selec DECLARE comp3 CURSOR FOR comando3 LET idx = 1 FOREACH comp3 INTO clientes[idx].* LET idx = idx + 1 IF idx = 49 THEN EXIT FOREACH END IF END FOREACH CALL SET_COUNT(idx - 1) DISPLAY ARRAY clientes TO s_cliente.* LET idx = ARR_CURR() CLOSE WINDOW cliente END FUNCTION FUNCTION ipprmt044() DEFINE fecha CHAR(8) DEFINE hora CHAR(5) CLEAR SCREEN OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 24, PROMPT LINE 24 LET fecha = today USING "dd/mm/yyyy" LET hora = time LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 DISPLAY p_companias.nombre CLIPPED AT 1,lj ATTRIBUTE (REVERSE,BLUE) DISPLAY fecha AT 1,70 ATTRIBUTE (BLUE) DISPLAY hora AT 2,73 ATTRIBUTE (BLUE) DISPLAY "ipprmt044" AT 1,3 ATTRIBUTE (BLUE) DISPLAY "Otros Movimientos" AT 2,30 DISPLAY " Adiciona Registro" AT 3,2 ATTRIBUTE (BLUE,REVERSE) DISPLAY " Cancela Operacion" AT 3,54 ATTRIBUTE (BLUE,REVERSE) OPEN FORM ipfmmt044 FROM "ipfmmt044" DISPLAY FORM ipfmmt044 CALL ipprad44() END FUNCTION FUNCTION ipprad44() DEFINE pcontrol_despacho CHAR(2) # WHENEVER ERROR CONTINUE LET int_flag = FALSE INITIALIZE otros_mov.* TO NULL LABEL otra_vez: LABEL vuelve: IF (OPC = "S" OR OPC = "s") OR opc is null THEN INITIALIZE otros_mov.* TO NULL END IF IF otros_mov.num_doc is null THEN LET otros_mov.num_doc = 0 END IF LET p_fechas = otros_mov.fecha USING "dd/mm/yyyy" CALL prd(p_fechas) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 RETURN END IF LET otros_mov.cod_cia = 1 INPUT BY NAME otros_mov.* WITHOUT DEFAULTS ON KEY (F2) LET reimpresion = "S" CALL consulta() ON KEY(CONTROL-W) IF INFIELD(cod_sp_sec) OR INFIELD(cod_sp) THEN CALL busca_cliente() LET otros_mov.cod_sp = clientes[idx].tipo_cliente LET otros_mov.cod_sp_sec = clientes[idx].sec_cliente LET otros_mov.descrip4 = clientes[idx].nombre DISPLAY BY NAME otros_mov.cod_sp, otros_mov.cod_sp_sec, otros_mov.descrip4 EXIT INPUT END IF AFTER FIELD cod_cia IF otros_mov.cod_cia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_cia END IF IF otros_mov.cod_cia = 1 THEN LET nombre_cia = p_companias.nombre ELSE LET nombre_cia = "" END IF DISPLAY BY NAME nombre_cia BEFORE FIELD bodega LET otros_mov.bodega = 1 DISPLAY BY NAME otros_mov.bodega AFTER FIELD fecha IF otros_mov.fecha > TODAY THEN LET numero_msg = 189 CALL msg(numero_msg) NEXT FIELD fecha END IF LET p_fechas = otros_mov.fecha using "dd/mm/yyyy" CALL prd(p_fechas) RETURNING bandera LET otros_mov.fecha = p_fechas DISPLAY BY NAME otros_mov.fecha IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF AFTER FIELD fact_no LET otros_mov.cod_sp = null LET otros_mov.cod_sp_sec = null IF otros_mov.cod_mov = 12 or otros_mov.cod_mov = 13 THEN IF otros_mov.fact_no is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fact_no END IF SELECT UNIQUE tipo_cliente,sec_cliente INTO otros_mov.cod_sp,otros_mov.cod_sp_sec FROM vetb00002 WHERE factura=otros_mov.fact_no and status_t is null AND CONVERT(CHAR(10),fecha_factura,101) >= '01/01/2007' IF status = NOTFOUND THEN LET numero_msg = 102 CALL msg(numero_msg) NEXT FIELD fact_no END IF # CONTROL DEVOLUCION LET cantidad_factura = 0 LET cantidad_devuelta = 0 SELECT SUM(a.cantidad) INTO cantidad_factura FROM vetb00003 a WHERE a.factura = otros_mov.fact_no AND a.status_t IS NULL AND a.fech_crea > '2009-01-01 08:00' SELECT SUM(a.cantidad_2) INTO cantidad_devuelta FROM iptb00006 a WHERE a.fact_no = otros_mov.fact_no AND a.status_t IS NULL AND a.fech_crea > '2009-01-01 08:00' and a.cod_mov in (12,13) IF cantidad_devuelta + .05 > cantidad_factura THEN LET numero_msg =238 CALL msg(numero_msg) NEXT FIELD fact_no END IF END IF IF otros_mov.fact_no is not null THEN IF otros_mov.cod_mov = 32 THEN SELECT unique cod_n FROM iptb00006 WHERE fact_no = otros_mov.fact_no and cod_mov = otros_mov.cod_mov and CONVERT(CHAR(10), fecha,101) >= "01011994" AND status_t is null IF status != NOTFOUND THEN LET numero_msg = 103 CALL msg(numero_msg) NEXT FIELD fact_no END IF END IF END IF DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec AFTER FIELD cod_transp IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55 THEN IF otros_mov.cod_transp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp END IF END IF AFTER FIELD sec_transp IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55 THEN IF otros_mov.sec_transp is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp END IF SELECT nombre INTO descrip2 FROM vetb00015 WHERE cod_transp=otros_mov.cod_transp and sec_transp=otros_mov.sec_transp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_transp END IF DISPLAY BY NAME descrip2 END IF AFTER FIELD cod_tarifa IF otros_mov.cod_tarifa is null THEN LET numero_msg = 16 CALL msg(numero_msg) # NEXT FIELD cod_tarifa END IF SELECT descrip INTO descrip1 FROM vetb00023 WHERE cod_tarifa = otros_mov.cod_tarifa and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) #NEXT FIELD cod_tarifa END IF DISPLAY BY NAME descrip1 AFTER FIELD bodega SELECT *FROM intb00009 WHERE cod_bodega = otros_mov.bodega IF status >= 0 THEN IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD bodega END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF BEFORE FIELD num_doc SELECT num_doc INTO otros_mov.num_doc FROM iptb00007 WHERE cod_mov = otros_mov.cod_mov IF otros_mov.num_doc IS NULL THEN LET otros_mov.num_doc = 0 END IF LET otros_mov.num_doc = otros_mov.num_doc + 1 DISPLAY BY NAME otros_mov.num_doc LET otros_mov.fecha = today DISPLAY BY NAME otros_mov.fecha AFTER FIELD cod_mov { IF (otros_mov.cod_mov IS NULL OR otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31) THEN LET numero_msg = 1660 CALL msg(numero_msg) NEXT FIELD cod_mov END IF } LET pcontrol_cliente = NULL SELECT a.descrip_mov,a.status_mov,a.control_cliente,a.control_despacho INTO otros_mov.descrip_mov,status_m,pcontrol_cliente,pcontrol_despacho FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov AND a.status_t is null IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_mov END IF ELSE CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if END IF SELECT num_doc INTO otros_mov.num_doc FROM iptb00007 WHERE cod_mov = otros_mov.cod_mov IF otros_mov.num_Doc IS NULL THEN LET otros_mov.num_doc = 1 END IF LET otros_mov.num_Doc = otros_mov.num_doc + 1 DISPLAY BY NAME otros_mov.num_doc DISPLAY BY NAME otros_mov.descrip_mov IF pcontrol_cliente IS NOT NULL THEN SELECT a.cod_mov FROM vetb00060 a WHERE a.cod_mov = otros_mov.cod_mov AND a.tipo_cliente = otros_mov.cod_sp IF STATUS = NOTFOUND THEN LET numero_msg =386 CALL msg(numero_msg) NEXT FIELD cod_mov END IF END IF {C0NTROL DESPACHO} IF pcontrol_despacho = "SI" THEN CALL visualizacion_despacho() RETURNING otros_mov.conduce_no, otros_mov.cod_sp, otros_mov.cod_sp_sec DISPLAY BY NAME otros_mov.conduce_no,otros_mov.cod_sp,otros_mov.cod_sp_Sec END IF { CHEQUEO DE PERMISOS PARA EL USUARIO SELECT * FROM iptb00005 where cod_mov = otros_mov.cod_mov and us_crea = user IF status = notfound THEN LET numero_msg = 139 CALL msg(numero_msg) NEXT FIELD cod_mov END IF } IF otros_mov.cod_mov = 32 or otros_mov.cod_mov = 12 THEN NEXT FIELD fact_no ELSE NEXT FIELD cod_transp END IF AFTER FIELD cod_mov1 IF otros_mov.entrada IS NOT NULL THEN IF otros_mov.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD entrada END IF SELECT a.descrip_mov INTO otros_mov.descrip_mov1 FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov1 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_mov1 END IF DISPLAY BY NAME otros_mov.descrip_mov1 END IF AFTER FIELD conduce_no IF otros_mov.conduce_no IS NOT NULL THEN LET ordenx = otros_mov.conduce_no SELECT a.tipo_cliente,a.sec_cliente,a.cerrada,a.cotizacion_no INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,pcerrada,xcotizacion FROM prtb00012 a WHERE a.num_oc = otros_mov.conduce_no AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD conduce_no END IF IF otros_mov.cod_mov <> 12 AND otros_mov.cod_mov <> 13 THEN IF pcerrada = "S" THEN LET numero_msg = 74 CALL msg(numero_msg) NEXT FIELD conduce_no END IF END IF DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN SELECT UNIQUE a.cod_mov FROM vetb00060 a WHERE a.tipo_cliente = otros_mov.cod_sp and a.cod_mov = otros_mov.cod_mov IF STATUS = NOTFOUND THEN LET numero_msg = 386 CALL msg(numero_msg) NEXT FIELD cod_mov END IF END IF END IF IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55 THEN IF otros_mov.conduce_no IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD conduce_no END IF END IF BEFORE FIELD cod_sp IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN CALL busca_vend() LET otros_mov.cod_sp = 12 LET otros_mov.cod_sp_sec= busca_v.sec_cliente LET otros_mov.descrip4 = busca_v.nombre DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.descrip4 NEXT FIELD cod_sp_sec END IF AFTER FIELD cod_sp IF ac_cli = "S" AND otros_mov.cod_sp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp END IF IF pcontrol_cliente = "SI" THEN SELECT a.cod_mov FROM vetb00060 a WHERE a.cod_mov = otros_mov.cod_mov and a.tipo_cliente = otros_mov.cod_sp END IF AFTER FIELD cod_sp_sec IF ac_cli = "S" AND otros_mov.cod_sp_sec IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp END IF IF otros_mov.cod_mov = 12 THEN IF otros_mov.cod_sp_sec is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sp END IF END IF IF otros_mov.cod_sp_sec is not null THEN SELECT nombre INTO otros_mov.descrip4 FROM vetb00004 WHERE tipo_cliente = otros_mov.cod_sp and sec_cliente = otros_mov.cod_sp_sec and status_t is null IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sp END IF DISPLAY BY NAME otros_mov.descrip4 IF otros_mov.fact_no is not null THEN SELECT sec_cliente FROM vetb00002 WHERE factura = otros_mov.fact_no and sec_cliente = otros_mov.cod_sp_sec IF status = notfound THEN LET numero_msg = 237 CALL msg(numero_msg) NEXT FIELD cod_sp_sec END IF END IF END IF IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN SELECT unique sec_cliente FROM vetb00033 WHERE sec_cliente = otros_mov.cod_sp_sec IF STATUS = NOTFOUND THEN LET numero_msg = -1301 CALL msg(numero_msg) NEXT FIELD cod_sp END IF END IF BEFORE FIELD entrada IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN IF otros_mov.entrada IS NULL THEN # IF otros_mov.entrada IS NOT NULL THEN SELECT MAX(a.num_doc),MAX(a.cod_mov) INTO otros_mov.entrada,otros_mov.cod_mov1 FROM iptb00006 a WHERE (a.conduce_no = otros_mov.conduce_no) AND (a.cod_mov in (70,71,72)) AND a.status_t IS NULL # END IF DISPLAY BY NAME otros_mov.entrada,otros_mov.cod_mov1 END IF END IF AFTER FIELD entrada IF otros_mov.entrada IS NOT NULL THEN SELECT UNIQUE a.num_doc FROM iptb00006 a WHERE a.cod_mov= otros_mov.cod_mov1 and a.num_doc = otros_mov.entrada AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD entrada END IF { LET cantidad_entrada = 0 SELECT SUM(a.cantidad_2) INTO cantidad_entrada FROM iptb00006 a WHERE a.num_doc = otros_mov.placa AND a.cod_mov IN(70,71,72) AND a.status_t IS NULL IF cantidad_entrada IS NULL THEN LET cantidad_entrada = 0 END IF LET cantidad_conduce = 0 SELECT SUM(a.cantidad_2) INTO cantidad_conduce FROM iptb00006 a,iptb00028 b WHERE b.entrada = otros_mov.entrada AND a.num_doc = b.num_doc and a.cod_mov = b.cod_mov AND a.status_t IS NULL IF cantidad_conduce IS NULL THEN LET cantidad_conduce = 0 END IF LET pendiente = cantidad_entrada + cantidad_conduce DISPLAY "CANTIDAD E ",cantidad_entrada," c salida ",cantidad_conduce IF pendiente <= 0 THEN LET numero_msg =46 CALL msg(numero_msg) NEXT FIELD entrada END IF } END IF AFTER FIELD departamento IF otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR otros_mov.conduce_no = 72 THEN IF otros_mov.departamento IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD departamento END IF SELECT a.nom_dpto INTO otros_mov.nombre_depto FROM adtb00001 a WHERE a.departamento = otros_mov.departamento AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD departamento END IF DISPLAY BY NAME otros_mov.nombre_depto,otros_mov.cod_sp,otros_mov.cod_sp_sec END IF AFTER INPUT IF int_flag THEN EXIT INPUT END IF EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE FOR idx = 1 to arr_count() LET movi2[idx].cod_n = null LET movi2[idx].cod_grupo = null LET movi2[idx].cod_tipo = null LET movi2[idx].cod_sec = null LET movi2[idx].cantidad_1 = null LET movi2[idx].cantidad_2 = null LET movi2[idx].cantidad_p = null LET movi2[idx].unidad_med = null LET movi2[idx].descrip_esp = null END FOR SLEEP 1 RETURN END IF IF opc = "S" or opc = "s" OR opc IS NULL THEN FOR idx = 1 to arr_count() LET movi2[idx].cod_n = null LET movi2[idx].cod_grupo = null LET movi2[idx].cod_tipo = null LET movi2[idx].cod_sec = null LET movi2[idx].cantidad_2 = null LET movi2[idx].cantidad_1 = null LET movi2[idx].cantidad_p = null LET movi2[idx].unidad_med = null LET movi2[idx].descrip_esp = null END FOR END IF INITIALIZE ant_art.* TO NULL { IF status_m = "S" THEN PREPARE b_fact FROM selec2 DECLARE facturas CURSOR FOR b_fact OPEN facturas USING otros_mov.fact_no LET idx = 1 FOREACH facturas INTO movi2[idx].*,cajas[idx],cant_ant[idx] IF status = notfound THEN EXIT FOREACH END IF LET idx = idx + 1 END FOREACH END IF } IF otros_mov.conduce_no IS NOT NULL AND (otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR otros_mov.cod_mov = 72) THEN DECLARE busca_orden CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0','0',a.cantidad,b.unidad_med,b.descrip_esp FROM prtb00013 a,iptb00002 b WHERE a.num_oc =otros_mov.conduce_no 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 LET idx = 1 FOREACH busca_orden INTO movi2[idx].* LET idx = idx + 1 END FOREACH END IF IF otros_mov.entrada IS NOT NULL THEN DECLARE busca_20 CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0','0',a.cantidad_2,b.unidad_med,b.descrip_esp FROM iptb00006 a,iptb00002 b WHERE a.conduce_no =otros_mov.conduce_no 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.cod_mov = otros_mov.cod_mov1 and a.num_doc = otros_mov.entrada AND a.status_t IS NULL LET idx = 1 FOREACH busca_20 INTO movi2[idx].* LET idx = idx + 1 END FOREACH END IF IF otros_mov.conduce_no IS NOT NULL AND (otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55) THEN IF otros_mov.entrada IS NOT NULL THEN DECLARE busca_entrada CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad_2,a.cantidad_2*-1,b.unidad_med,b.descrip_esp FROM iptb00006 a,iptb00002 b WHERE a.conduce_no = otros_mov.conduce_no and a.status_t IS NULL AND a.num_Doc = otros_mov.entrada 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 LET idx = 1 FOREACH busca_entrada INTO movi2[idx].* LET idx = idx + 1 END FOREACH END IF IF otros_mov.entrada IS NULL THEN DECLARE busca_orden1 CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0',a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp FROM prtb00013 a,iptb00002 b WHERE a.num_oc = otros_mov.conduce_no and a.status_t IS NULL 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 LET idx = 1 FOREACH busca_orden1 INTO movi2[idx].* LET idx = idx + 1 END FOREACH END IF END IF IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN DECLARE busca_dev CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp FROM vetb00003 a,iptb00002 b WHERE a.factura = otros_mov.fact_no and a.status_t IS NULL 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 LET idx = 1 FOREACH busca_dev INTO movi2[idx].* LET idx = idx + 1 END FOREACH END IF LET decide = null LET selec_pt = NULL CALL set_count(idx - 1) INPUT ARRAY movi2 WITHOUT DEFAULTS FROM s_movi1.* # Este BEFORE FIELD estaba en comentario por disposicion de alguien hace algun # tiempo y ahora no se sabe porque se determino que cuando usted hace una # devolucion le permita al usuario modificar el codigo del producto # Hoy 13 de noviembre de 1993 el Ing. de informatica dispuso que # cuando sea una devolucion a una factura no se permitiera la actualizacion # del codigo del producto BEFORE ROW LET p_act = arr_curr() LET scr_l = scr_line() IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN NEXT FIELD cantidad_1 END IF ON KEY(F10) LET p_act = arr_curr() LET scr_l = scr_line() SELECT UNIQUE a.cod_n FROM iptb00027 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec IF STATUS = NOTFOUND THEN LET numero_msg =399 CALL msg(numero_msg) NEXT FIELD cod_n END IF CALL despiece() # DISPLAY movi2[p_act].cantidad_1 TO smovi1[scr_l].cantidad_1 NEXT FIELD cod_sec ON KEY(CONTROL-W) CASE WHEN INFIELD (cod_n) CALL busca_prod1() LET movi2[p_act].cod_n = busca_p.cod_n LET movi2[p_act].cod_grupo = busca_p.cod_grupo LET movi2[p_act].cod_tipo = busca_p.cod_tipo LET movi2[p_act].cod_sec = busca_p.cod_sec LET movi2[p_act].descrip_esp= busca_p.descrip_esp LET movi2[p_act].unidad_med = busca_p.unidad_med DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo, movi2[p_act].cod_tipo,movi2[p_act].cod_sec, movi2[p_act].descrip_esp,movi2[p_act].unidad_med TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo, s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec, s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med WHEN INFIELD (cod_grupo) CALL busca_prod1() LET movi2[p_act].cod_n = busca_p.cod_n LET movi2[p_act].cod_grupo = busca_p.cod_grupo LET movi2[p_act].cod_tipo = busca_p.cod_tipo LET movi2[p_act].cod_sec = busca_p.cod_sec LET movi2[p_act].descrip_esp= busca_p.descrip_esp LET movi2[p_act].unidad_med = busca_p.unidad_med DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo, movi2[p_act].cod_tipo,movi2[p_act].cod_sec, movi2[p_act].descrip_esp,movi2[p_act].unidad_med TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo, s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec, s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med WHEN INFIELD (cod_tipo) CALL busca_prod1() LET movi2[p_act].cod_n = busca_p.cod_n LET movi2[p_act].cod_grupo = busca_p.cod_grupo LET movi2[p_act].cod_tipo = busca_p.cod_tipo LET movi2[p_act].cod_sec = busca_p.cod_sec LET movi2[p_act].descrip_esp= busca_p.descrip_esp LET movi2[p_act].unidad_med = busca_p.unidad_med DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo, movi2[p_act].cod_tipo,movi2[p_act].cod_sec, movi2[p_act].descrip_esp,movi2[p_act].unidad_med TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo, s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec, s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med WHEN INFIELD (cod_sec) CALL busca_prod1() LET movi2[p_act].cod_n = busca_p.cod_n LET movi2[p_act].cod_grupo = busca_p.cod_grupo LET movi2[p_act].cod_tipo = busca_p.cod_tipo LET movi2[p_act].cod_sec = busca_p.cod_sec LET movi2[p_act].descrip_esp= busca_p.descrip_esp LET movi2[p_act].unidad_med = busca_p.unidad_med DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo, movi2[p_act].cod_tipo,movi2[p_act].cod_sec, movi2[p_act].descrip_esp,movi2[p_act].unidad_med TO s_movi1[scr_l].cod_n, s_movi1[scr_l].cod_grupo, s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec, s_movi1[scr_l].descrip_esp,s_movi1[scr_l].unidad_med END CASE CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if AFTER ROW LET p_act = arr_curr() IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null then LET ant_art.cod_n = movi2[p_act].cod_n LET ant_art.cod_grupo = movi2[p_act].cod_grupo LET ant_art.cod_tipo = movi2[p_act].cod_tipo LET ant_art.cod_sec = movi2[p_act].cod_sec FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi2[idx].cod_n = ant_art.cod_n AND movi2[idx].cod_grupo = ant_art.cod_grupo AND movi2[idx].cod_tipo = ant_art.cod_tipo AND movi2[idx].cod_sec = ant_art.cod_sec THEN LET numero_msg = 21 CALL msg(numero_msg) LET p_act = p_act - 1 NEXT FIELD cod_n END IF END IF END FOR END IF AFTER FIELD cod_n LET p_act = arr_curr() IF movi2[p_act].cod_n is not null then LET ant_art.cod_n = movi2[p_act].cod_n LET ant_art.cod_grupo = movi2[p_act].cod_grupo LET ant_art.cod_tipo = movi2[p_act].cod_tipo LET ant_art.cod_sec = movi2[p_act].cod_sec FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi2[idx].cod_n = ant_art.cod_n AND movi2[idx].cod_grupo = ant_art.cod_grupo AND movi2[idx].cod_tipo = ant_art.cod_tipo AND movi2[idx].cod_sec = ant_art.cod_sec THEN LET p_act = p_act - 1 NEXT FIELD cod_grupo END IF END IF END FOR END IF AFTER FIELD cod_grupo LET p_act = arr_curr() IF movi2[p_act].cod_grupo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET ant_art.cod_n = movi2[p_act].cod_n LET ant_art.cod_grupo = movi2[p_act].cod_grupo LET ant_art.cod_tipo = movi2[p_act].cod_tipo LET ant_art.cod_sec = movi2[p_act].cod_sec FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi2[idx].cod_n = ant_art.cod_n AND movi2[idx].cod_grupo = ant_art.cod_grupo AND movi2[idx].cod_tipo = ant_art.cod_tipo AND movi2[idx].cod_sec = ant_art.cod_sec THEN LET p_act = p_act - 1 NEXT FIELD cod_tipo END IF END IF END FOR AFTER FIELD cod_tipo LET p_act = arr_curr() IF movi2[p_act].cod_tipo is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET ant_art.cod_n = movi2[p_act].cod_n LET ant_art.cod_grupo = movi2[p_act].cod_grupo LET ant_art.cod_tipo = movi2[p_act].cod_tipo LET ant_art.cod_sec = movi2[p_act].cod_sec FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi2[idx].cod_n = ant_art.cod_n AND movi2[idx].cod_grupo = ant_art.cod_grupo AND movi2[idx].cod_tipo = ant_art.cod_tipo AND movi2[idx].cod_sec = ant_art.cod_sec THEN LET p_act = p_act - 1 NEXT FIELD cod_sec END IF END IF END FOR AFTER FIELD cod_sec LET p_act = arr_curr() IF movi2[p_act].cod_sec is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF movi2[p_act].cod_n is null AND movi2[p_act].cod_sec is not null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null then SELECT * INTO p_iptb02.* FROM iptb00002 WHERE cod_n=movi2[p_act].cod_n and cod_grupo = movi2[p_act].cod_grupo and cod_tipo=movi2[p_act].cod_tipo and cod_sec = movi2[p_act].cod_sec and status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF SELECT UNIQUE a.factor_conv INTO factor_conv[p_act] FROM iptb00001 a WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec and a.status_t IS NULL IF STATUS = NOTFOUND THEN CALL msg(94) NEXT FIELD cod_n END IF LET movi2[p_act].descrip_esp = p_iptb02.descrip_esp CLIPPED LET movi2[p_act].unidad_med = p_iptb02.unidad_med CLIPPED DISPLAY movi2[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp ATTRIBUTE(CYAN) DISPLAY movi2[p_act].unidad_med TO s_movi1[scr_l].unidad_med ATTRIBUTE(CYAN) LET ant_art.cod_n = movi2[p_act].cod_n LET ant_art.cod_grupo = movi2[p_act].cod_grupo LET ant_art.cod_tipo = movi2[p_act].cod_tipo LET ant_art.cod_sec = movi2[p_act].cod_sec FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi2[idx].cod_n = ant_art.cod_n AND movi2[idx].cod_grupo = ant_art.cod_grupo AND movi2[idx].cod_tipo = ant_art.cod_tipo AND movi2[idx].cod_sec = ant_art.cod_sec THEN LET numero_msg = 21 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END FOR # CONTROL ITEMS EN LA ORDEN IF otros_mov.conduce_no IS NOT NULL THEN SELECT UNIQUE a.cod_n FROM prtb00013 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.num_oc = otros_mov.conduce_no IF STATUS = NOTFOUND THEN LET numero_msg =397 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF # CONTROL DESPIECE SELECT UNIQUE a.cod_n FROM iptb00027 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec IF STATUS != NOTFOUND THEN SELECT UNIQUE a.cod_n FROM iptb00025 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_Doc IF STATUS = NOTFOUND THEN LET numero_msg =398 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF #CONTROL DEVOLUCION IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN IF movi2[p_Act].cantidad_2 > movi2[p_Act].cantidad_p then LET numero_msg =28 CALL msg(numero_msg) NEXT FIELD cantidad_1 end if DISPLAY movi2[p_Act].cantidad_2 TO s_movi1[scr_l].cantidad_2 END IF END IF # CONTROL CODIGO EN BLANCO AFTER FIELD cantidad_1 LET p_act = arr_curr() IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null THEN IF movi2[p_act].cantidad_1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF IF movi2[p_act].cantidad_2 <0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF SELECT UNIQUE a.factor_conv INTO factor_conv[p_act] FROM iptb00001 a WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec and a.status_t IS NULL IF STATUS = NOTFOUND THEN CALL msg(94) NEXT FIELD cod_n END IF LET movi2[p_act].cantidad_2=movi2[p_act].cantidad_1*factor_conv[p_act] DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2 LET p_iptb06.cantidad_2 = 0 #CONTROL DEVOLUCION IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN IF movi2[p_act].cantidad_2 > movi2[p_act].cantidad_p THEN LET numero_msg =28 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF LET cantidad_factura = 0 SELECT SUM(a.cantidad) INTO cantidad_factura FROM vetb00003 a WHERE a.factura = otros_mov.fact_no AND a.status_t IS NULL AND a.fech_crea > '2009-01-01 08:00' and a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec and a.status_t is null SELECT SUM(a.cantidad_2) INTO cantidad_devuelta FROM iptb00006 a WHERE a.fact_no = otros_mov.fact_no AND a.status_t IS NULL AND a.fech_crea > '2009-01-01 08:00' and a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec and a.cod_mov in (12,13) IF cantidad_devuelta + .05 > cantidad_factura THEN LET numero_msg =238 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF END IF IF status_m = "2" THEN # BUSCA LA EXISTENCIA SELECT SUM(a.cantidad_2) INTO p_iptb06.cantidad_2 FROM iptb00006 a WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec and a.status_t IS NULL IF p_iptb06.cantidad_2 IS NULL THEN LET p_iptb06.cantidad_2 = 0 END IF IF p_iptb02.control_existencia = "SI" THEN IF movi2[p_act].cantidad_2 > p_iptb06.cantidad_2 THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF END IF END IF #================================================================================ # CONTROL CANTIDAD DESPIECE LET total_medida = 0 IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 OR otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR otros_mov.cod_mov = 72 THEN SELECT UNIQUE a.num_doc FROM iptb00025 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_doc IF STATUS != NOTFOUND THEN SELECT SUM(a.medida) INTO total_medida FROM iptb00025 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_doc IF total_medida <> movi2[p_act].cantidad_1 THEN LET numero_msg = 152 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF END IF LET selec_pt = selec_pt CLIPPED,movi2[p_act].descrip_esp," CANTIDAD ", movi2[p_act].cantidad_2," ",movi2[p_act].unidad_med END IF #============================================================================= # CONTROL ORDEN IF otros_mov.conduce_no IS NOT NULL THEN IF otros_mov.cod_mov = 20 THEN LET cantidad_conduce = 0 SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.num_oc = otros_mov.conduce_no AND a.status_t IS NULL IF cantidad_conduce IS NULL THEN LET cantidad_conduce = 0 END IF LET cantidad_recibida = 0 SELECT SUM(a.cantidad_2) INTO cantidad_recibida FROM iptb00006 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.conduce_no = otros_mov.conduce_no AND a.cod_mov = 20 AND a.status_t IS NULL IF cantidad_Recibida IS NULL THEN LET cantidad_Recibida = 0 END IF IF (cantidad_Recibida + movi2[p_act].cantidad_2) > cantidad_conduce THEN LET numero_msg = 46 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF END IF IF otros_mov.cod_mov <> 12 AND otros_mov.cod_mov <> 13 and otros_mov.cod_mov <> 43 THEN LET cantidad_conduce = 0 SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 a WHERE a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.num_oc = otros_mov.conduce_no AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 397 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET cantidad_orden =0 IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN SELECT SUM(a.cantidad_2*-1) INTO cantidad_orden FROM iptb00006 a WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec and a.conduce_no = otros_mov.conduce_no and cod_mov in (30,31,55,12,13,43) and a.status_t IS NULL IF cantidad_orden IS NULL THEN LET cantidad_orden = 0 END IF IF cantidad_conduce IS NULL THEN LET cantidad_conduce = 0 END IF display "AQUI PRIMERO ",cantidad_orden," ",cantidad_conduce LET movi2[p_act].cantidad_p = cantidad_conduce - (cantidad_orden + movi2[p_act].cantidad_2) display "pend ",movi2[p_act].cantidad_p," ",cantidad_conduce," ",cantidad_orden," ",movi2[p_act].cantidad_2 DISPLAY movi2[p_act].cantidad_p TO s_movi1[scr_l].cantidad_p IF movi2[p_act].cantidad_p <-0.005 THEN LET numero_msg = 46 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF # CONTROL ORDENS END IF # CONTROL CONDUCE_NO END IF # CONTROL DEVOLUCION #================================================================================================= LET movi3[p_act].cantidad_2 = movi2[p_act].cantidad_2 END IF AFTER INPUT IF int_flag THEN DELETE FROM iptb00025 WHERE cod_mov = otros_mov.cod_mov and num_doc = otros_mov.num_Doc LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF movi2[p_act].cantidad_2 <0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad_1 END IF END INPUT LABEL sale_boni: PROMPT "Toda la Informacion Esta Correcta? (S/N)" FOR CHAR opc IF OPC = "S" or OPC = "s" THEN # Actualiza tabla control ultimo documento SELECT num_doc INTO otros_mov.num_doc FROM iptb00007 WHERE cod_mov = otros_mov.cod_mov IF status = notfound THEN LET otros_mov.num_doc = 0 INSERT INTO iptb00007 values(1,otros_mov.cod_mov,null,user,getdate(),null,null) END IF LET otros_mov.num_doc = otros_mov.num_doc + 1 UPDATE iptb00007 set num_doc = otros_mov.num_doc, us_crea = user, fech_crea = getdate() WHERE cod_mov = otros_mov.cod_mov DISPLAY BY NAME otros_mov.num_doc ATTRIBUTE (BLUE) # INSERTA REGISTROS DE ENTRADAS CON LOS CONDUCES IF otros_mov.cod_mov1 IS NOT NULL THEN INSERT INTO iptb00028 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.cod_mov1, otros_mov.entrada) END IF # INFORMACIONES CUANDO EL MOVIMIENTO ES DE PRODUCCION IF otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR otros_mov.cod_mov = 72 THEN INSERT INTO iptb00026 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.departamento) END IF FOR idx = 1 TO arr_count() IF movi2[idx].cod_n is not null and movi2[idx].cod_grupo is not null and movi2[idx].cod_tipo is not null and movi2[idx].cod_sec is not null THEN IF movi2[idx].cantidad_2 is not null THEN IF status_m = "2" THEN LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1 END IF INSERT INTO iptb00006 VALUES (otros_mov.cod_cia,otros_mov.num_doc,otros_mov.fecha, otros_mov.fact_no,otros_mov.conduce_no,null,null,otros_mov.cod_sp, otros_mov.cod_sp_sec,otros_mov.cod_transp, otros_mov.sec_transp,otros_mov.placa,otros_mov.cod_tarifa, otros_mov.cod_mov,otros_mov.detalle,movi2[idx].cod_n, movi2[idx].cod_grupo, movi2[idx].cod_tipo,movi2[idx].cod_sec, movi2[idx].cantidad_1,movi2[idx].cantidad_2, null,null,otros_mov.bodega,null,suser_sname(),getdate(),null,null) INSERT INTO prordenlog VALUES (otros_mov.conduce_no,otros_mov.num_doc,movi2[idx].cod_n, movi2[idx].cod_grupo, movi2[idx].cod_tipo,movi2[idx].cod_sec, movi2[idx].cantidad_2,getdate(),otros_mov.cod_mov,movi2[idx].cantidad_1,diferencia) CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if END IF { if de cantidad_2 no NULL } END IF {if cod_n cod_tipo ........ is not null } END FOR # CIERRE ORDENES SELECT SUM(cantidad) INTO cantidad_orden FROM prtb00013 a WHERE a.num_oc = otros_mov.conduce_no #AND #a.fech_Crea > datetime (2007-01-01 08:00) year to minute IF cantidad_orden IS NULL THEN LET cantidad_orden = 0 END IF SELECT SUM(cantidad_2*-1) INTO cantidad_conduce FROM iptb00006 a WHERE a.conduce_no = otros_mov.conduce_no AND a.cod_mov in (12,13,30,31,55,43) AND CONVERT (CHAR(10),a.fecha,101) > "01/01/2007" AND a.status_t is null IF cantidad_conduce IS NULL THEN LET cantidad_conduce = 0 END IF LET diferencia = cantidad_orden - cantidad_conduce IF diferencia < 0 THEN LET diferencia = diferencia * -1 END IF IF diferencia IS NULL THEN LET diferencia = 0 END IF IF diferencia <= .5 THEN IF status_m <> 1 THEN UPDATE prtb00012 set cerrada = "S",us_mod = user,fech_mod = getdate() WHERE num_oc = otros_mov.conduce_no END IF END IF #-> Actualiza la tabla de monitoreo de las ordenes de corte vg. Saturday, 03 March, 2001 10:51:42 AM IF otros_mov.conduce_no IS NOT NULL THEN LET prtb09.detalle =otros_mov.descrip_mov CLIPPED, " CON EL NUMERO DE DOCUMENTO: ",otros_mov.num_doc USING "<<<<<<<", " DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy" INSERT INTO prtb00009 VALUES (ordenx,otros_mov.fecha,NULL,"S",prtb09.detalle,NULL,USER,getdate(),NULL,NULL) END IF PROMPT "Desea Imprimir Formulario Ahora? (S/N)" FOR CHAR opt2 IF opt2 = "S" OR opt2 = "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 formu4 TO archivo LET ya = null FOR idx = 1 TO arr_count() IF movi2[idx].cod_sec IS NOT NULL THEN OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*) END IF END FOR FINISH REPORT formu4 RUN imprime END IF LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM FOR idx = 1 to 6 LET movi2[idx].cod_n = null LET movi2[idx].cod_grupo = null LET movi2[idx].cod_tipo = null LET movi2[idx].cod_sec = null LET movi2[idx].cantidad_2 = null LET movi2[idx].unidad_med = null LET movi2[idx].descrip_esp = null DISPLAY movi2[idx].cod_n to s_movi1[idx].cod_n DISPLAY movi2[idx].cod_grupo to s_movi1[idx].cod_grupo DISPLAY movi2[idx].cod_tipo to s_movi1[idx].cod_tipo DISPLAY movi2[idx].cod_sec to s_movi1[idx].cod_sec DISPLAY movi2[idx].descrip_esp to s_movi1[idx].descrip_esp DISPLAY movi2[idx].unidad_med to s_movi1[idx].unidad_med END FOR FOR idx = 1 to 20 LET movi2[idx].cod_n = null LET movi2[idx].cod_grupo = null LET movi2[idx].cod_tipo = null LET movi2[idx].cod_sec = null LET movi2[idx].cantidad_2 = null LET movi2[idx].unidad_med = null LET movi2[idx].descrip_esp = null LET despiece[idx].cod_n = null LET despiece[idx].cod_grupo = null LET despiece[idx].cod_tipo = null LET despiece[idx].cod_sec = null LET despiece[idx].cantidad = null LET despiece[idx].etiqueta = null LET despiece[idx].lado_1 = null LET despiece[idx].lado_2 = null LET despiece[idx].lado_3 = null LET despiece[idx].medida = null END FOR ELSE GOTO otra_vez END IF GOTO vuelve END FUNCTION REPORT formu4(x,z) DEFINE x RECORD num_doc LIKE iptb00006.num_doc, cod_cia LIKE iptb00006.cod_cia, cod_mov LIKE iptb00006.cod_mov, fact_no LIKE iptb00006.fact_no, cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, placa LIKE iptb00006.placa, fecha LIKE iptb00006.fecha, conduce_no LIKE iptb00006.conduce_no, descrip_mov CHAR(40), #LIKE intb00005.descrip_mov, bodega LIKE iptb00006.bodega, detalle LIKE iptb00006.detalle, cod_sp LIKE iptb00006.cod_sp, cod_sp_sec LIKE iptb00006.cod_sp_sec, departamento SMALLINT, nombre_depto CHAR(30), cod_mov1 SMALLINT, entrada INT, descrip_mov1 CHAR(40), descrip4 CHAR(30) END RECORD DEFINE z RECORD cod_n LIKE intb00003.cod_n, cod_grupo LIKE intb00003.cod_grupo, cod_tipo LIKE intb00003.cod_tipo, cod_sec LIKE intb00003.cod_sec, cantidad_1 LIKE iptb00006.cantidad_1, cantidad_2 LIKE iptb00006.cantidad_2, cantidad_p DEC(12,5), unidad_med LIKE iptb00002.unidad_med, descrip_esp CHAR(70) END RECORD, etiqueta,pcalle,purbanizacion,pcasa_num,ptelefono,pcelular,nombre,apellido CHAR(30), plado1,plado2,plado3,pcantidad,pmedida DEC(12,5), pprovincia SMALLINT, nombre_provincia CHAR(30), nombre_p,direccion_p CHAR(40), total_unidades INT, hora CHAR(5), pobserva,pubica CHAR(60) DEFINE usuario_c CHAR(9) DEFINE signo CHAR(1) DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(2) DEFINE l,cuenta SMALLINT OUTPUT LEFT MARGIN 0 ORDER BY x.num_doc,z.cod_sec FORMAT BEFORE GROUP OF x.num_doc LET doble = ASCII 14 LET doble_of = ASCII 20 LET negras = ASCII 27, ASCII 69 LET negras_off = ASCII 27, ASCII 70 SELECT unique us_crea INTO usuario_c FROM iptb00006 WHERE num_doc = x.num_doc and cod_mov = x.cod_mov and us_crea = user LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time PRINT doce #PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED IF x.cod_sp <> 19 AND x.cod_sp <> 18 THEN PRINT COLUMN 1,doble, "M A R M O T E C H, S. A.",doble_of END IF PRINT COLUMN 71,"No. ",doble,x.num_doc using "<<<<<<" #LET l = (80 - LENGTH ("OTROS MOVIMIENTOS")) / 2 PRINT #COLUMN l, "OTROS MOVIMIENTOS", COLUMN 71, x.fecha using "dd/mm/yyyy" PRINT COLUMN 71, hora LET l = (70 - LENGTH (x.descrip_mov)) / 2 PRINT COLUMN l-2, doble,negras,"(",x.cod_mov using "&&",") ",x.descrip_mov,doble_of PRINT negras_off IF x.cod_mov = 12 THEN PRINT COLUMN 1, "Factura No: ",x.fact_no using "&&&&&&" END IF IF x.detalle is null THEN LET x.detalle = "**************************************" END IF SELECT a.calle,a.casa_num,a.urbanizacion,b.telefono,b.telex,c.nom1_emp,c.apell1_emp,b.cod_provincia INTO pcalle,pcasa_num,purbanizacion,ptelefono,pcelular,nombre,apellido,pprovincia FROM vetb00005 a,vetb00004 b,vetb00028 d,adtb00003 c WHERE a.tipo_cliente = x.cod_sp AND a.sec_cliente = x.cod_sp_sec AND a.tipo_cliente = d.tipo_cliente AND a.sec_cliente = d.sec_cliente AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND d.sec_vend = c.num_emp LET nombre_provincia = NULL IF x.cod_mov = 30 OR x.cod_mov = 31 THEN SELECT a.nombre_provincia INTO nombre_provincia FROM vetb00020 a WHERE a.cod_provincia = pprovincia END IF IF x.cod_mov = 55 THEN SELECT unique a.nom_pais INTO nombre_provincia FROM cotb00018 a WHERE a.cod_pais = pprovincia END IF LET nombre_p = null LET direccion_p = null SELECT a.nombre_proyecto,a.direccion_proyecto INTO nombre_p,direccion_p FROM vetb00050 a WHERE a.tipo_cliente = x.cod_sp AND a.sec_cliente = x.cod_sp_Sec AND a.cotizacion_no = xcotizacion SELECT a.direccion INTO pubica FROM prtb00012 a WHERE a.num_oc = x.conduce_no AND CONVERT (CHAR(10),a.fech_crea,103) > "01/01/2007" # SELECT a.observacion INTO pobserva FROM prtb00014 a # WHERE a.num_oc = x.conduce_no AND a.fech_crea > datetime (2007-01-01 08:00) year to minute PRINT COLUMN 1, "CLIENTE : ",negras, x.descrip4," (", x.cod_sp using "&&","-", x.cod_sp_sec using "&&&&",")",negras_off PRINT COLUMN 1, "DIRECCION: ",pcalle CLIPPED," ",pcasa_num CLIPPED," ",purbanizacion CLIPPED, " TELEFONO: ",ptelefono CLIPPED," CELULAR: ",pcelular PRINT COLUMN 1, "Proyecto : ",nombre_p CLIPPED, " DIRECCION: ",direccion_p CLIPPED PRINT COLUMN 1, "Vendedor : ",nombre clipped," ",apellido PRINT COLUMN 1, "Entrada : ",x.entrada USING "<<<<<<"," (",x.cod_mov1 USING "<<<",") ",x.descrip_mov1 CLIPPED PRINT COLUMN 1, "Orden : ",x.conduce_no, COLUMN 20 #,"Observacion Orden: ",pobserva CLIPPED PRINT COLUMN 1, "Ubicacion: ",pubica CLIPPED IF x.cod_mov = 70 OR x.cod_mov = 71 OR x.cod_mov = 72 THEN PRINT COLUMN 1, "DEPARTAMENTO: ",x.departamento USING "<<<<"," ",x.nombre_depto END IF PRINT doce PRINT COLUMN 1, "-----------------------------------------------------------------------------", "-----------------" PRINT COLUMN 2,doble, "PRODUCTO(S)",doble_of clipped PRINT COLUMN 74, "CANTIDAD" PRINT COLUMN 62, "CANTIDAD", COLUMN 74, "PENDIENTE" PRINT COLUMN 50, "UNIDADES", COLUMN 62, "A DESPACHAR", COLUMN 74, "CON ESTA TRANSACCION" PRINT COLUMN 1, "-----------------------------------------------------------------------------", "-----------------" SKIP 1 LINES ON EVERY ROW IF z.cod_n is not null and z.cod_grupo is not null and z.cod_tipo is not null and z.cod_sec is not null THEN PRINT COLUMN 2, z.cod_n using "&&","-", COLUMN 4, z.cod_grupo using "&&","-", COLUMN 6, z.cod_tipo using "&&&","-", COLUMN 9, z.cod_sec using "&&&", COLUMN 17, z.descrip_esp clipped," "; IF cuenta = 1 THEN LET signo = "+" ELSE LET signo = "-" LET z.cantidad_2 = z.cantidad_2 * -1 END IF IF z.cantidad_2 < 0 THEN LET z.cantidad_2 = z.cantidad_2 * -1 END IF PRINT COLUMN 48, z.cantidad_1 USING "###,###.#####", COLUMN 56, z.cantidad_2 using "###,###.#####"," ",z.unidad_med, COLUMN 75, z.cantidad_p using "###,###.#####" DECLARE busca_d1 CURSOR FOR SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM iptb00025 a WHERE a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec AND a.cod_mov = X.cod_mov AND a.num_Doc = x.num_doc LET total_unidades = 0 FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida PRINT COLUMN 19,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ", plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####" LET total_unidades = total_unidades + pcantidad END FOREACH IF total_unidades > 0 THEN PRINT COLUMN 19, "TOTAL UNIDADES ",total_unidades USING "<,<<<" END IF END IF PAGE TRAILER PRINT COLUMN 1, "OBSERVACIONES: ", UPSHIFT(x.detalle) SKIP 1 LINE PRINT COLUMN 1, "TRANSPORTISTA: ",descrip2 PRINT COLUMN 1, "PLACA : ",x.placa SKIP 4 LINES PRINT COLUMN 1, "------------------", COLUMN 32, "------------------", COLUMN 55, "------------------" PRINT COLUMN 5, "Entregado Por", COLUMN 34, "Recibido Por", COLUMN 58, "Aprobado Por" SKIP 1 LINE PRINT COLUMN 2, "Original: Contabilidad Copia: Vendedor Copia: Ventas Copia: Almacen" PRINT normal END REPORT FUNCTION busca_vend() DEFINE arr_vend ARRAY[200] OF RECORD sec_cliente INTEGER, num_emp INTEGER, nombre CHAR(30) END RECORD OPEN WINDOW busca_1 AT 8,4 WITH FORM "ipfmwd004" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,PROMPT LINE LAST) DECLARE busca_1 CURSOR FOR SELECT a.sec_cliente,a.num_emp,b.nombre FROM vetb00033 a,vetb00004 b WHERE a.sec_cliente = b.sec_cliente AND a.status_t IS NULL AND b.status_t IS NULL ORDER BY 1 LET idx = 1 FOREACH busca_1 INTO arr_vend[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx - 1) DISPLAY ARRAY arr_vend TO sc_vend.* LET idx = ARR_CURR() LET busca_v.sec_cliente = arr_vend[idx].sec_cliente LET busca_v.nombre = arr_vend[idx].nombre CLOSE WINDOW busca_1 END FUNCTION FUNCTION busca_prod1() DEFINE arr_prod ARRAY[500] OF RECORD cod_n INTEGER, cod_grupo INTEGER, cod_tipo INTEGER, cod_sec INTEGER, descrip_esp CHAR(30), unidad_med CHAR(5) END RECORD OPEN WINDOW busca_2 AT 8,4 WITH FORM "ipfmwd001" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,PROMPT LINE LAST) CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp LET selec_pt = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", " a.unidad_med FROM iptb00002 a ", "WHERE a.status_t IS NULL AND ",criterio CLIPPED," ORDER BY a.descrip_esp " PREPARE comando_p FROM selec_pt DECLARE busca_2 CURSOR FOR comando_p LET idx = 1 FOREACH busca_2 INTO arr_prod[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx - 1) DISPLAY ARRAY arr_prod TO s_prod.* LET idx = ARR_CURR() LET busca_p.cod_n = arr_prod[idx].cod_n LET busca_p.cod_grupo = arr_prod[idx].cod_grupo LET busca_p.cod_tipo = arr_prod[idx].cod_tipo LET busca_p.cod_sec = arr_prod[idx].cod_sec LET busca_p.descrip_esp = arr_prod[idx].descrip_esp LET busca_p.unidad_med = arr_prod[idx].unidad_med # para el precio LET p_vetb25.cod_n = arr_prod[idx].cod_n LET p_vetb25.cod_grupo = arr_prod[idx].cod_grupo LET p_vetb25.cod_tipo = arr_prod[idx].cod_tipo LET p_vetb25.cod_sec = arr_prod[idx].cod_sec LET descrip1 = arr_prod[idx].descrip_esp LET medida = arr_prod[idx].unidad_med CLOSE WINDOW busca_2 END FUNCTION FUNCTION despiece() OPEN WINDOW wdespiece AT 5,3 WITH FORM "ipfmwd010" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,PROMPT LINE LAST) DISPLAY BY NAME movi2[p_act].descrip_esp,movi2[p_act].unidad_med IF otros_mov.entrada IS NOT NULL THEN DECLARE busca_ent CURSOR FOR SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM iptb00025 a WHERE a.cod_mov = otros_mov.cod_mov1 AND a.num_doc = otros_mov.entrada AND a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec UNION SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM iptb00025 a WHERE a.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_doc AND a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec LET idx = 1 FOREACH busca_ent INTO despiece[idx].* LET idx = idx + 1 END FOREACH ELSE SELECT UNIQUE a.cod_n FROM iptb00025 a WHERE a.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_doc AND a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec IF STATUS != NOTFOUND THEN DECLARE busca_despiece CURSOR FOR SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM iptb00025 a WHERE a.cod_mov = otros_mov.cod_mov AND a.num_doc = otros_mov.num_doc AND a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec LET idx = 1 FOREACH busca_despiece INTO despiece[idx].* LET idx = idx + 1 END FOREACH ELSE DECLARE busca_despiece1 CURSOR FOR SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM prtb00022 a WHERE a.num_oc = otros_mov.conduce_no AND a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec LET idx = 1 FOREACH busca_despiece1 INTO despiece[idx].* LET idx = idx + 1 END FOREACH END IF END IF LET despiece[1].cod_n = movi2[p_act].cod_n LET despiece[1].cod_grupo = movi2[p_act].cod_grupo LET despiece[1].cod_tipo = movi2[p_act].cod_tipo LET despiece[1].cod_sec = movi2[p_act].cod_sec CALL set_count(idx-1) INPUT ARRAY despiece WITHOUT DEFAULTS FROM sdespiece.* BEFORE ROW LET curr1 = arr_curr() LET fila = scr_line() LET despiece[curr1].cod_n = movi2[p_act].cod_n LET despiece[curr1].cod_grupo = movi2[p_act].cod_grupo LET despiece[curr1].cod_tipo = movi2[p_act].cod_tipo LET despiece[curr1].cod_sec = movi2[p_act].cod_sec IF curr1 > 1 THEN IF despiece[curr1].etiqueta IS NULL THEN LET despiece[curr1].etiqueta = despiece[curr1-1].etiqueta END IF END IF DISPLAY despiece[curr1].etiqueta TO sdespiece[fila].etiqueta DISPLAY movi2[p_act].cod_n TO sdespiece[fila].cod_n DISPLAY movi2[p_act].cod_grupo TO sdespiece[fila].cod_grupo DISPLAY movi2[p_act].cod_tipo TO sdespiece[fila].cod_tipo DISPLAY movi2[p_act].cod_sec TO sdespiece[fila].cod_sec AFTER FIELD cantidad IF movi2[p_act].unidad_med = "M2" THEN LET despiece[curr1].medida = despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2) END IF IF movi2[p_act].unidad_med = "M3" THEN LET despiece[curr1].medida = despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2 * despiece[curr1].lado_3) END IF IF movi2[p_act].unidad_med = "ML" THEN LET despiece[curr1].medida = despiece[curr1].cantidad * despiece[curr1].lado_1 LET despiece[curr1].lado_2 = 0 END IF IF movi2[p_act].unidad_med = "UD" OR movi2[p_act].unidad_med = "GL" THEN LET despiece[curr1].medida = despiece[curr1].cantidad END IF DISPLAY despiece[curr1].medida TO sdespiece[fila].medida AFTER ROW IF despiece[curr1].medida IS NULL AND despiece[curr1].lado_1 IS NOT NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD lado_1 END IF LET total_medida = 0 FOR idx = 1 TO arr_count() IF despiece[idx].medida IS NOT NULL THEN LET total_medida = total_medida + despiece[idx].medida END IF END FOR DISPLAY BY NAME total_medida AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT INPUT END IF LET total_medida = 0 FOR idx = 1 TO arr_count() IF despiece[idx].medida IS NOT NULL THEN LET total_medida = total_medida + despiece[idx].medida END IF END FOR DISPLAY BY NAME total_medida END INPUT IF int_flag THEN LET int_flag = FALSE RETURN END IF DELETE FROM iptb00025 WHERE num_doc = otros_mov.num_doc AND cod_mov = otros_mov.cod_mov AND cod_n = movi2[p_act].cod_n AND cod_grupo = movi2[p_act].cod_grupo AND cod_tipo = movi2[p_act].cod_tipo AND cod_sec = movi2[p_act].cod_sec LET total_medida = 0 FOR idx = 1 TO arr_count() IF despiece[idx].medida IS NOT NULL THEN INSERT INTO iptb00025 VALUES (despiece[idx].etiqueta,otros_mov.cod_mov,otros_mov.num_doc, movi2[p_act].cod_n,movi2[p_act].cod_grupo, movi2[p_act].cod_tipo,movi2[p_act].cod_sec, despiece[idx].lado_1,despiece[idx].lado_2, despiece[idx].lado_3,despiece[idx].cantidad, despiece[idx].medida,null,user,getdate(),null,null) LET total_medida = total_medida + despiece[idx].medida END IF END FOR LET movi2[p_act].cantidad_1 = total_medida CLOSE WINDOW wdespiece END FUNCTION FUNCTION consulta() CONSTRUCT CRITERIO ON iptb00006.num_Doc,iptb00006.cod_mov,iptb00006.fecha,iptb00006.conduce_no, iptb00006.cod_sp,iptb00006.cod_sp_Sec FROM num_doc,cod_mov,fecha,conduce_no,cod_sp,cod_sp_sec { LET selec = "SELECT a.num_doc,a.cod_cia,a.cod_mov,a.fact_no,a.cod_transp,a.sec_transp, ", "a.cod_tarifa,a.placa,CONVERT(CHAR(10),a.fecha,101),a.conduce_no,b.descrip_mov,a.bodega,a.detalle,", "a.cod_sp,a.cod_sp_Sec,f.departamento,e.nom_dpto,d.cod_mov1,d.entrada ", " FROM iptb00006 a,iptb00005 b,OUTER (iptb00028 d,iptb00026 f,adtb00001 e) ", " WHERE ",criterio CLIPPED, " AND a.cod_mov = b.cod_mov ", " AND a.cod_mov = d.cod_mov AND a.num_doc = d.num_doc ", " AND a.cod_mov = f.cod_mov AND a.num_doc = f.num_doc ", " AND f.departamento = e.departamento ", " AND a.status_t IS NULL AND CONVERT(CHAR(10),a.fecha,101) > '01/01/2008' ", " ORDER BY a.cod_mov,a.num_doc" } LET selec = "SELECT iptb00006.num_doc AS Expr1, iptb00006.cod_cia AS Expr2, iptb00006.cod_mov AS Expr3, iptb00006.fact_no AS Expr4, iptb00006.cod_transp AS Expr5, ", "iptb00006.sec_transp AS Expr6, iptb00006.cod_tarifa AS Expr7, iptb00006.placa AS Expr8, iptb00006.fecha AS Expr9, iptb00006.conduce_no AS Expr10,", "iptb00005.descrip_mov AS Expr11, iptb00006.bodega AS Expr12, iptb00006.detalle AS Expr13, iptb00006.cod_sp AS Expr14, ", "iptb00006.cod_sp_sec AS Expr15, iptb00026.departamento AS Expr16, adtb00001.nom_dpto AS Expr17, iptb00028.entrada AS Expr18 ", "FROM adtb00001 INNER JOIN ", "iptb00026 ON adtb00001.departamento = iptb00026.departamento RIGHT OUTER JOIN ", "iptb00006 INNER JOIN ", "iptb00005 ON iptb00006.cod_mov = iptb00005.cod_mov ON iptb00026.num_doc = iptb00006.num_doc AND ", "iptb00026.cod_mov = iptb00006.cod_mov LEFT OUTER JOIN ", "iptb00028 ON iptb00006.num_doc = iptb00028.num_doc AND iptb00006.cod_mov = iptb00028.cod_mov ", "WHERE ", criterio CLIPPED, " and IPTB00006.status_t IS NULL and iptb00006.fecha > '01/01/2009'" display selec CLIPPED PREPARE comando FROM selec DECLARE busca4 SCROLL CURSOR WITH HOLD FOR comando OPEN busca4 FETCH FIRST busca4 INTO otros_mov.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL busca_info() DISPLAY BY NAME otros_mov.* MENU "Busqueda " COMMAND "Siguiete " "Sieguiente Registro Cumpla Condicion" FETCH NEXT busca4 INTO otros_mov.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF CALL busca_info() DISPLAY BY NAME otros_mov.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS busca4 INTO otros_mov.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF CALL busca_info() DISPLAY BY NAME otros_mov.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST busca4 INTO otros_mov.* LET numero_msg = 5 CALL msg(numero_msg) CALL busca_info() DISPLAY BY NAME otros_mov.* COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST busca4 INTO otros_mov.* LET numero_msg = 4 CALL msg(numero_msg) CALL busca_info() DISPLAY BY NAME otros_mov.* COMMAND "Items" "Busca Items" DECLARE busca1 CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.cantidad_1,a.cantidad_2,'0',b.unidad_med,b.descrip_esp FROM iptb00006 a,iptb00002 b WHERE a.num_doc = otros_mov.num_doc AND a.cod_mov = otros_mov.cod_mov 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.fech_crea > '01/01/2009 08:00' ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec LET idx = 1 FOREACH busca1 INTO movi2[idx].* IF movi2[idx].cantidad_2 < 0 THEN LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1 END IF SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 a WHERE a.cod_n = movi2[idx].cod_n AND a.cod_grupo = movi2[idx].cod_grupo AND a.cod_tipo = movi2[idx].cod_tipo AND a.cod_sec = movi2[idx].cod_sec AND a.num_oc = otros_mov.conduce_no AND a.status_t IS NULL LET cantidad_orden =0 IF otros_mov.cod_mov = 30 AND otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN SELECT SUM(a.cantidad_2*-1) INTO cantidad_orden FROM iptb00006 a WHERE a.cod_n=movi2[idx].cod_n and a.cod_grupo=movi2[idx].cod_grupo and a.cod_tipo=movi2[idx].cod_tipo and a.cod_sec=movi2[idx].cod_sec and a.conduce_no = otros_mov.conduce_no and cod_mov in (30,31,55) and a.status_t IS NULL END IF IF cantidad_orden IS NULL THEN LET cantidad_orden = 0 END IF IF cantidad_conduce IS NULL THEN LET cantidad_conduce = 0 END IF LET movi2[idx].cantidad_p = cantidad_conduce - cantidad_orden LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY movi2 TO s_movi1.* PROMPT "Desea Imprimir Formulario Ahora? (S/N)" FOR CHAR opt2 IF opt2 = "S" OR opt2 = "s" THEN #LET archivo = FGL_GETENV("FGLSPOOL"),"\\ipmt44" #START REPORT formu4 TO archivo {START REPORT formu4 TO "C:\\archivo"} 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 formu4 TO archivo FOR idx = 1 TO arr_count() IF movi2[idx].cod_sec IS NOT NULL THEN IF movi2[idx].cantidad_2 IS NOT NULL AND movi2[idx].cantidad_2 != 0 THEN OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*) END IF END IF END FOR FINISH REPORT formu4 IF opt2 = "S" OR opt2 = "s" THEN # LET filename = "TYPE ",archivo CLIPPED," > %USPRINT%" # RUN filename RUN imprime END IF END IF COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION busca_info() SELECT nombre INTO descrip2 FROM vetb00015 WHERE cod_transp=otros_mov.cod_transp and sec_transp=otros_mov.sec_transp and status_t is null SELECT nombre INTO otros_mov.descrip4 FROM vetb00004 WHERE tipo_cliente = otros_mov.cod_sp and sec_cliente = otros_mov.cod_sp_sec and status_t is null SELECT a.descrip_mov INTO otros_mov.descrip_mov1 FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov1 DISPLAY BY NAME descrip2,otros_mov.descrip4,otros_mov.descrip_mov1 END FUNCTION FUNCTION actualiza_st(forden) DEFINE forden INTEGER, prod_total,vent_total DEC(12,5), prtb09 RECORD LIKE prtb00009.* SELECT SUM(a.cantidad) INTO prod_total FROM prtb00013 a WHERE a.num_oc = forden IF STATUS = NOTFOUND THEN LET prod_total = 0 END IF LET vent_total = 0 SELECT SUM(b.cantidad_2) INTO vent_total FROM IPTB00006 a WHERE a.conduce_no = forden AND CONVERT(CHAR(10),a.fecha,101) > "31122006" AND a.cod_sp = otros_mov.cod_sp AND a.sec_cliente = otros_mov.cod_sp_Sec AND a.cod_mov in (30,31,55,12,13) AND a.status_t IS NULL IF vent_total IS NULL THEN LET vent_total = 0 END IF #-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM IF vent_total = prod_total THEN UPDATE prtb00012 SET fecha_cierre = otros_mov.fecha, cerrada = "S" WHERE @num_oc = forden AND @tipo_cliente = otros_mov.cod_sp AND @sec_cliente = otros_mov.cod_sp_Sec LET prtb09.num_oc = forden LET prtb09.fecha = otros_mov.fecha LET prtb09.pendiente = "N" LET prtb09.detalle = "CIERRE DE ORDEN DE PRODUCCION SEGUN CONDUCE # ",otros_mov.num_doc USING "<<<<<<<", " DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy" INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,null,prtb09.pendiente, prtb09.detalle,NULL,USER,getdate(),NULL,NULL) ELSE LET prtb09.num_oc = forden LET prtb09.fecha = otros_mov.fecha LET prtb09.pendiente = "N" LET prtb09.detalle = "DESPACHO ",otros_mov.descrip_mov CLIPPED, " SEGUN CONDUCE # ",otros_mov.num_doc USING "<<<<<<<", " DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"," CONTIENE PRODUCTO(S): ", selec_pt CLIPPED INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,null,prtb09.pendiente, prtb09.detalle,NULL,USER,getdate(),NULL,NULL) END IF END FUNCTION FUNCTION visualizacion_despacho() DEFINE arr_autoriza_desp DYNAMIC ARRAY OF RECORD num_oc INT, cliente CHAR(66), fecha CHAR(10), tipo_cliente SMALLINT, sec_cliente INT END RECORD DECLARE busca_autoriza CURSOR FOR SELECT a.num_oc,rtrim(CAST(b.tipo_cliente AS CHAR(2)) + '-'+CAST(b.sec_cliente AS CHAR(6)) +' '+b.nombre), CAST (d.fecha AS CHAR(10)), b.tipo_cliente,b.sec_cliente FROM cctb00026 a,vetb00004 b,prtb00012 c,cctb00025 d WHERE c.tipo_cliente = b.tipo_cliente AND c.sec_cliente = b.sec_cliente AND a.num_oc = c.num_oc AND c.cerrada = 'N' AND A.num_req = d.num_req LET idx = 1 FOREACH busca_autoriza INTO arr_autoriza_desp[idx].* LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY arr_autoriza_desp TO s_despachos.* AFTER DISPLAY LET idx = arr_curr() IF Int_flag THEN LET int_flag = FALSE RETURN 0,0,0 EXIT DISPLAY ELSE RETURN arr_autoriza_desp[idx].num_oc, arr_autoriza_desp[idx].tipo_cliente, arr_autoriza_desp[idx].sec_cliente END IF END DISPLAY END FUNCTION