{-------------------------------------------------------------------------- PROGRAMA : VEPRMT036 OBJETIVO : Este programa captura la factura comercial del PLAN RANCHERO es una modificacion del VEPRMT001 para incluir los siguiente: Con el movto 30 (faturacion) se afecta la tabla iptb00017 (-) con mvto 33 y conjuntamente se hace un mvto positivo a la tabla iptb00006 mvto 33 y asi poder facturar. REALIZADO POR : Ing. Jose Alfredo Paulino Alejo. fECHA : Diciembre 23, 1996. -------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE mes_chequeo,vend_cte,tipo_fact1 SMALLINT DEFINE porce,fact_unidades DECIMAL (8,2) DEFINE codigo_provincia INTEGER DEFINE fecha_final DATE, cod_b1 CHAR(13), cod_b2 CHAR(1), cod_b4 CHAR(15) FUNCTION veprmt036() DEFINE valor,valor1,t_valor,valor_p,balance DECIMAL(12,2) DEFINE tipo_fact,p_cod,p_bonif,cantidad_total,ano_act,ano_fe,credito,t_bonif, factor INTEGER, ch_balance CHAR(14), cod_fact SMALLINT DEFINE hoy DATE DEFINE hice,primera,tipo_p,opt2,opt1,opt CHAR(1) DEFINE tipo_f,tipo2 CHAR(2) DEFINE cod_desc,tipo1 SMALLINT DEFINE precio_ant,cantidad_ant,precio DECIMAL(12,3), i,longitud SMALLINT DEFINE tot_porc1,porc_desc,tot_porc DECIMAL(8,3) OPTIONS FORM LINE 2, ERROR LINE 24, COMMENT LINE 23, PROMPT LINE 22 CLEAR SCREEN OPEN FORM vefmmt036 FROM "vefmmt036" DISPLAY FORM vefmmt036 DISPLAY "veprmt036" AT 1,1 ATTRIBUTE (YELLOW) DISPLAY "JAPA " AT 2,1 ATTRIBUTE (YELLOW) LET hoy = today DISPLAY hoy using "dd/mm/yy" AT 1,70 ATTRIBUTE (YELLOW) DISPLAY "PLAN RANCHERO " AT 3,30 ATTRIBUTE (reverse) DISPLAY " Adiciona " AT 3,1 ATTRIBUTE (BOLD) DISPLAY " Cancela Operacion" AT 3,54 ATTRIBUTE (BOLD) # WHENEVER ERROR CONTINUE ERROR "Para Anular Una Factura Que este Hecha Precione Ctrl-B" LABEL exito: INITIALIZE fact_gral.*,primera TO NULL LET porc_desc = 0 LET descrip1 = NULL LET descrip2 = NULL LET p_bonif = NULL LET fact_gral.cod_cia = 1 LET fact_gral.fecha_factura = today LET tot_porc1 = 0 LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 LET tot_porc = 0 DISPLAY BY NAME descrip1,descrip2 FOR idx = 1 to 10 LET fact_det[idx].cod_n = NULL LET fact_det[idx].cod_grupo = NULL LET fact_det[idx].cod_tipo = NULL LET fact_det[idx].cod_sec = NULL LET fact_det[idx].cantidad = NULL LET fact_det[idx].despacho = NULL LET fact_det[idx].existencia = NULL LET fact_det[idx].unidades = NULL LET fact_det[idx].precio = NULL LET fact_det[idx].monto_fact = NULL END FOR FOR idx = 1 to 4 DISPLAY fact_det[idx].cod_n to s_fact[idx].cod_n DISPLAY fact_det[idx].cod_grupo to s_fact[idx].cod_grupo DISPLAY fact_det[idx].cod_tipo to s_fact[idx].cod_tipo DISPLAY fact_det[idx].cod_sec to s_fact[idx].cod_sec DISPLAY fact_det[idx].cantidad to s_fact[idx].cantidad DISPLAY fact_det[idx].despacho to s_fact[idx].despacho DISPLAY fact_det[idx].existencia to s_fact[idx].existencia DISPLAY fact_det[idx].unidades to s_fact[idx].unidades DISPLAY fact_det[idx].precio to s_fact[idx].precio DISPLAY fact_det[idx].monto_fact to s_fact[idx].monto_fact END FOR DISPLAY BY NAME descrip1,descrip2 LABEL vuelve: LET descrip1 = NULL LET descrip2 = NULL LET descrip3 = NULL LET p_bonif = NULL LET tot_porc1 = 0 LET t_valor = 0 LET fact_gral.cond_pago = 2 LET fact_gral.porc_itbi = NULL LET fact_gral.prima_us = NULL DISPLAY BY NAME fact_gral.porc_itbi,fact_gral.prima_us, descrip1,descrip2 LET hice = "S" LET h = 1 INPUT BY NAME fact_gral.* WITHOUT DEFAULTS ATTRIBUTE (YELLOW) ON KEY (CONTROL-B) LET mes_chequeo = MONTH(TODAY) CALL anula() NEXT FIELD cod_cia ON KEY (CONTROL-W) CASE WHEN INFIELD(cod_tarifa) CALL tarifas() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_tarifa END IF LET descrip5 = descrip6[1,15] clipped LET descrip6 = descrip6[16,30] clipped DISPLAY BY NAME descrip5,descrip6 ATTRIBUTE (BOLD) NEXT FIELD nombre_tran WHEN INFIELD(zona) IF fact_gral.ventas = "1" THEN CALL busca_zona1() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD zona END IF ELSE CALL busca_pais() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD zona END IF END IF LET p_cod = fact_gral.zona LET fact_gral.zona = p_cod using "&&&" DISPLAY BY NAME fact_gral.zona,descrip1 ATTRIBUTE (BOLD) NEXT FIELD fecha_factura WHEN INFIELD(cond_pago) CALL condiciones() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cond_pago END IF DISPLAY BY NAME fact_gral.cond_pago ATTRIBUTE(YELLOW) DISPLAY BY NAME fact_gral.descrip ATTRIBUTE(YELLOW) NEXT FIELD orden WHEN INFIELD(sec_vend) CALL consulta_empleados() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD sec_vend END IF LET fact_gral.sec_vend = transportista.sec_transp LET fact_gral.nombre_vend = descrip6 DISPLAY BY NAME fact_gral.sec_vend ATTRIBUTE (YELLOW) DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (YELLOW) NEXT FIELD cod_transp WHEN INFIELD(cod_transp) # CALL cons_transp() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cons_transp END IF DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (YELLOW) DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (YELLOW) DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (YELLOW) NEXT FIELD cod_tarifa WHEN INFIELD(sec_transp) # CALL cons_transp() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cons_transp END IF DISPLAY BY NAME fact_gral.cod_transp ATTRIBUTE (YELLOW) DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (YELLOW) DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (YELLOW) NEXT FIELD cod_tarifa END CASE AFTER FIELD porc_desc IF fact_gral.porc_desc IS NULL THEN LET fact_gral.porc_desc = 0 END IF IF fact_gral.porc_desc > porce THEN LET numero_msg = 145 CALL msg(numero_msg) NEXT FIELD porc_desc END IF AFTER FIELD cod_cia IF fact_gral.cod_cia IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_cia END IF IF fact_gral.cod_cia = 1 THEN LET compania = "R A Y . O . V A C D O M I N I C A N A, S. A." END IF IF fact_gral.cod_cia = 2 THEN LET compania = "DISTRIBUIDORA DOMINICANA DE PILAS, S. A." END IF DISPLAY BY NAME compania ATTRIBUTE (YELLOW) AFTER FIELD ventas IF fact_gral.ventas IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ventas END IF SELECT prima,@itbi,porciento INTO fact_gral.prima_us,fact_gral.porc_itbi,porce FROM vetb00019 WHERE disponible = "S" IF fact_gral.ventas = "1" THEN IF fact_gral.porc_itbi IS NULL THEN LET numero_msg = 87 CALL msg(numero_msg) NEXT FIELD ventas END IF LET tipo_fact = 30 LET tipo_f = "FT" LET fact_gral.nombre_tipo = "LOCAL" LET fact_gral.prima_us = NULL ELSE LET fact_gral.porc_itbi = NULL IF fact_gral.prima_us IS NULL THEN LET numero_msg = 87 CALL msg(numero_msg) NEXT FIELD ventas END IF LET fact_gral.nombre_tipo = "EXPORTACION" LET tipo_fact = 31 LET tipo_f = "FE" END IF DISPLAY BY NAME fact_gral.prima_us,fact_gral.porc_itbi ATTRIBUTE(BOLD) DISPLAY BY NAME fact_gral.nombre_tipo ATTRIBUTE (BOLD) DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD) AFTER FIELD zona LET longitud = LENGTH(fact_gral.zona) IF longitud < 3 THEN LET numero_msg = 77 CALL msg(numero_msg) NEXT FIELD zona END IF LET tipo1 = fact_gral.zona CALL integridad() IF bandera = 1 THEN LET bandera = 0 NEXT FIELD zona END IF LET tipo2 = fact_gral.zona[2,3] IF fact_gral.ventas = "1" THEN SELECT unique descrip INTO descrip1 FROM vetb00008 WHERE cod_zona = tipo1 IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD ventas END IF END IF END IF IF fact_gral.ventas = "2" THEN SELECT unique nom_pais INTO descrip1 FROM cotb00018 WHERE cod_pais = tipo2 IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD ventas END IF END IF END IF SELECT max(ult_factura) INTO fact_gral.factura FROM vetb00001 LET fact_gral.factura = fact_gral.factura + 1 DISPLAY BY NAME fact_gral.factura ATTRIBUTE (YELLOW) DISPLAY BY NAME descrip1 ATTRIBUTE(YELLOW) AFTER FIELD sec_cliente IF fact_gral.sec_cliente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_cliente ELSE SELECT a.nombre,a.limite_credito,a.cod_provincia INTO fact_gral.nombre,credito,codigo_provincia FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.status_t IS NULL IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (YELLOW) SELECT b.calle,b.casa_num,b.barrio INTO descrip1,descrip2,descrip3 FROM vetb00005 b WHERE b.tipo_cliente = fact_gral.tipo_cliente AND b.sec_cliente = fact_gral.sec_cliente SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF END IF LET fact_gral.direccion = descrip1 clipped," ",descrip2 clipped,", ", descrip3 clipped DISPLAY BY NAME fact_gral.direccion ATTRIBUTE (YELLOW) DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (YELLOW) SELECT SUM(@valor+@monto_desc) INTO valor FROM cctb00001 WHERE @fecha_orig <= fact_gral.fecha_factura AND @tipo_cliente = fact_gral.tipo_cliente AND @sec_cliente = fact_gral.sec_cliente AND @status_t IS NULL AND tipo_doc NOT in ("DE","PC") IF valor IS NULL THEN LET valor = 0.00 END IF SELECT SUM(@valor+@monto_desc) INTO valor1 FROM cctb00001 WHERE @fecha_orig <= fact_gral.fecha_factura AND @tipo_cliente = fact_gral.tipo_cliente AND @sec_cliente = fact_gral.sec_cliente AND @status_t IS NULL AND tipo_doc = "DE" AND num_doc = aplica_a IF valor1 IS NULL THEN LET valor1 = 0.00 END IF LET balance = valor - valor1 IF balance IS NULL THEN LET balance = 0 END IF LET ch_balance = balance using "###,###,###.##" DISPLAY BY NAME ch_balance ATTRIBUTE(BOLD) END IF END IF BEFORE FIELD nombre IF fact_gral.sec_cliente != 51 THEN NEXT FIELD porc_desc END IF BEFORE FIELD prima_us IF fact_gral.ventas = "1" THEN NEXT FIELD cond_pago END IF BEFORE FIELD cond_pago LET fact_gral.cond_pago = 2 DISPLAY BY NAME fact_gral.cond_pago AFTER FIELD cond_pago IF fact_gral.cond_pago IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cond_pago END IF SELECT a.* INTO condicion.* FROM vetb00012 a WHERE a.cond_pago = fact_gral.cond_pago IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cond_pago END IF END IF DISPLAY BY NAME condicion.descrip ATTRIBUTE (YELLOW) BEFORE FIELD porc_itbi IF fact_gral.ventas = "2" THEN NEXT FIELD sec_vend END IF AFTER FIELD porc_itbi IF fact_gral.porc_itbi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD porc_itbi END IF AFTER FIELD sec_vend IF fact_gral.sec_vend IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_vend END IF SELECT nom1_emp, apell1_emp INTO descrip5,descrip6 FROM adtb00003 WHERE num_emp = fact_gral.sec_vend IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD sec_vend END IF END IF LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 clipped DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (YELLOW) # Verifica que el vendedor venda al cliente de la factura IF fact_gral.sec_vend != 8888 THEN SELECT unique * FROM vetb00028 WHERE sec_vend = fact_gral.sec_vend AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente IF STATUS = NOTFOUND THEN LET numero_msg = 119 CALL msg(numero_msg) NEXT FIELD sec_vend END IF END IF BEFORE FIELD cod_transp LET fact_gral.nombre_tran = NULL LET p_cedula = NULL LET p_serie = NULL IF fact_gral.cond_pago = 1 or fact_gral.ventas = "2" THEN NEXT FIELD fecha_embarque END IF AFTER FIELD cod_transp IF fact_gral.cod_transp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp END IF AFTER FIELD sec_transp IF fact_gral.sec_transp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD sec_transp END IF SELECT a.nombre,a.cedula,a.serie INTO fact_gral.nombre_tran,p_cedula,p_serie FROM vetb00015 a WHERE a.cod_transp=fact_gral.cod_transp AND a.sec_transp=fact_gral.sec_transp AND a.status_t IS NULL IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_transp END IF END IF DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (YELLOW) AFTER FIELD cod_tarifa IF fact_gral.cod_tarifa IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_tarifa END IF SELECT descrip INTO descrip6 FROM vetb00023 WHERE cod_tarifa = fact_gral.cod_tarifa AND status_t IS NULL LET descrip5 = descrip6[1,15] clipped LET descrip6 = descrip6[16,30] clipped DISPLAY BY NAME descrip5,descrip6 ATTRIBUTE (BOLD) BEFORE FIELD fecha_factura LET fact_gral.fecha_factura = hoy DISPLAY BY NAME fact_gral.fecha_factura { AFTER FIELD fecha_factura LET p_fechas = fact_gral.fecha_factura LET hoy = fact_gral.fecha_factura CALL prd() IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha_factura END IF IF fact_gral.fecha_factura < "310394" THEN LET numero_msg = 58 CALL msg(numero_msg) RETURN END IF } BEFORE FIELD fecha_embarque IF fact_gral.ventas = "1" THEN NEXT FIELD placa_transp END IF AFTER FIELD fecha_embarque IF fact_gral.fecha_embarque IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_embarque END IF # No permite que el usuario introduzca un ano que no corresponda al actual LET ano_act = year(today) LET ano_fe = year(fact_gral.fecha_embarque) IF ano_fe < ano_act THEN LET numero_msg = 59 CALL msg(numero_msg) NEXT FIELD fecha_embarque END IF IF fact_gral.fecha_embarque < fact_gral.fecha_factura THEN LET numero_msg = 100 CALL msg(numero_msg) NEXT FIELD fecha_embarque END IF IF fact_gral.ventas = "2" THEN EXIT INPUT END IF AFTER FIELD placa_transp IF fact_gral.placa_transp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF fact_gral.ventas IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ventas END IF SELECT prima,@itbi,porciento INTO fact_gral.prima_us,fact_gral.porc_itbi,porce FROM vetb00019 WHERE disponible = "S" IF fact_gral.ventas = "1" THEN IF fact_gral.porc_itbi IS NULL THEN LET numero_msg = 87 CALL msg(numero_msg) NEXT FIELD ventas END IF LET tipo_fact = 30 LET tipo_f = "FT" LET fact_gral.nombre_tipo = "LOCAL" LET fact_gral.prima_us = NULL ELSE LET fact_gral.porc_itbi = NULL IF fact_gral.prima_us IS NULL THEN LET numero_msg = 87 CALL msg(numero_msg) NEXT FIELD ventas END IF LET fact_gral.nombre_tipo = "EXPORTACION" LET tipo_fact = 31 LET tipo_f = "FE" END IF DISPLAY BY NAME fact_gral.prima_us,fact_gral.porc_itbi ATTRIBUTE(BOLD) DISPLAY BY NAME fact_gral.nombre_tipo ATTRIBUTE (BOLD) DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD) IF fact_gral.porc_desc > porce THEN LET numero_msg = 145 CALL msg(numero_msg) NEXT FIELD porc_desc END IF IF fact_gral.sec_cliente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 LET tot_porc = 0 LABEL alla: INPUT ARRAY fact_det WITHOUT DEFAULTS FROM s_fact.* BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() ON KEY (CONTROL-W) LET curr = arr_curr() LET scr_l = scr_line() CASE WHEN INFIELD (cod_n) CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_n END IF LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia FROM iptb00002 a,iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = fact_det[curr].cod_n AND b.cod_grupo = fact_det[curr].cod_grupo AND b.cod_tipo = fact_det[curr].cod_tipo AND b.cod_sec = fact_det[curr].cod_sec AND a.status_t IS NULL AND b.status_t IS NULL LET descrip2 = descrip1 DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio DISPLAY BY NAME descrip2 NEXT FIELD cantidad WHEN INFIELD (cod_grupo) CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_n END IF LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia FROM iptb00002 a,iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = fact_det[curr].cod_n AND b.cod_grupo = fact_det[curr].cod_grupo AND b.cod_tipo = fact_det[curr].cod_tipo AND b.cod_sec = fact_det[curr].cod_sec AND a.status_t IS NULL AND b.status_t IS NULL LET descrip2 = descrip1 DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio DISPLAY BY NAME descrip2 NEXT FIELD cantidad WHEN INFIELD (cod_tipo) CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_n END IF LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia FROM iptb00002 a,iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = fact_det[curr].cod_n AND b.cod_grupo = fact_det[curr].cod_grupo AND b.cod_tipo = fact_det[curr].cod_tipo AND b.cod_sec = fact_det[curr].cod_sec AND a.status_t IS NULL AND b.status_t IS NULL LET descrip2 = descrip1 DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio DISPLAY BY NAME descrip2 NEXT FIELD cantidad WHEN INFIELD (cod_sec) CALL busca_pt() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false NEXT FIELD cod_n END IF LET fact_det[curr].cod_n = pterminado.cod_n LET fact_det[curr].cod_grupo = pterminado.cod_grupo LET fact_det[curr].cod_tipo = pterminado.cod_tipo LET fact_det[curr].cod_sec = pterminado.cod_sec CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_n END IF LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip1,p_existencia FROM iptb00002 a,iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = fact_det[curr].cod_n AND b.cod_grupo = fact_det[curr].cod_grupo AND b.cod_tipo = fact_det[curr].cod_tipo AND b.cod_sec = fact_det[curr].cod_sec AND a.status_t IS NULL AND b.status_t IS NULL LET descrip2 = descrip1 DISPLAY fact_det[curr].cod_n TO s_fact[scr_l].cod_n DISPLAY fact_det[curr].cod_grupo TO s_fact[scr_l].cod_grupo DISPLAY fact_det[curr].cod_tipo TO s_fact[scr_l].cod_tipo DISPLAY fact_det[curr].cod_sec TO s_fact[scr_l].cod_sec DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio DISPLAY BY NAME descrip2 NEXT FIELD cantidad END CASE AFTER FIELD cod_n IF fact_det[curr].cod_n IS NOT NULL THEN IF fact_det[curr].cod_n != 3 AND fact_gral.cod_cia = 1 THEN LET numero_msg = 211 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF fact_det[curr].cod_n != 9 AND fact_det[curr].cod_n != 6 AND fact_gral.cod_cia = 2 THEN LET numero_msg = 211 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_grupo END IF END IF AFTER FIELD cod_grupo IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_tipo END IF END IF AFTER FIELD cod_tipo IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_sec END IF END IF AFTER FIELD cod_sec IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN CALL repite_codigo() IF verdad = "S" THEN NEXT FIELD cod_n END IF # Calcula el precio por la cantidad vendida para el monto y el # calculo del precio por la prima digitdada LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF # Busca la descripcion del producto con su existencia SELECT a.descrip_esp,SUM(b.cantidad_2) INTO descrip2,p_existencia FROM iptb00002 a,iptb00006 b WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND b.cod_n = a.cod_n AND b.cod_grupo = a.cod_grupo AND b.cod_tipo = a.cod_tipo AND b.cod_sec = a.cod_sec AND a.status_t IS NULL AND b.status_t IS NULL IF STATUS < 0 THEN CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF ELSE IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END IF DISPLAY BY NAME descrip2 AFTER FIELD cantidad IF fact_det[curr].cod_n IS NOT NULL AND fact_det[curr].cod_grupo IS NOT NULL AND fact_det[curr].cod_tipo IS NOT NULL AND fact_det[curr].cod_sec IS NOT NULL THEN IF fact_det[curr].cantidad IS NULL OR fact_det[curr].cantidad = 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF # Busca factor de conversion de cada pila SELECT a.cantidad INTO p_cantidad FROM vetb00014 a WHERE a.cod_n = fact_det[curr].cod_n AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_sec = fact_det[curr].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 94 CALL msg(numero_msg) NEXT FIELD cod_n END IF SELECT UNIQUE sec_cliente INTO vend_cte FROM vetb00033 WHERE num_emp = fact_gral.sec_vend SELECT sum(cantidad_2) INTO p_existencia FROM iptb00017 WHERE (cod_n = fact_det[curr].cod_n) AND (cod_grupo = fact_det[curr].cod_grupo) AND (cod_tipo = fact_det[curr].cod_tipo) AND (cod_sec = fact_det[curr].cod_sec ) AND (cod_sp_sec = vend_cte) AND status_t IS NULL IF p_existencia IS NULL THEN LET p_existencia = 0 END IF LET fact_det[curr].unidades = fact_det[curr].cantidad * p_cantidad LET fact_det[curr].existencia = p_existencia DISPLAY fact_det[curr].existencia TO s_fact[scr_l].existencia LET excede[curr] = NULL IF fact_gral.ventas = "1" THEN IF fact_det[curr].unidades > p_existencia THEN # LET excede[curr] = "S" LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cantidad END IF END IF DISPLAY fact_det[curr].unidades TO s_fact[scr_l].unidades # Calcula el precio por las unidades y da el monto LET fact_det[curr].monto_fact = fact_det[curr].unidades * fact_det[curr].precio DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio { Convertir la existencia en cajas para desplegarla LET fact_det[curr].despacho = p_existencia LET fact_det[curr].existencia = p_existencia LET cant_pend[curr] = fact_det[curr].despacho * p_cantidad DISPLAY fact_det[curr].existencia TO s_fact[scr_l].existencia DISPLAY fact_det[curr].despacho TO s_fact[scr_l].despacho NEXT FIELD despacho ELSE NEXT FIELD precio END IF} END IF BEFORE FIELD despacho NEXT FIELD precio AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF fact_det[curr].cod_n IS NULL THEN LET fact_det[curr].cantidad = 0 LET fact_det[curr].unidades = 0 LET fact_det[curr].despacho = 0 LET fact_det[curr].existencia = 0 LET fact_det[curr].precio = 0 LET fact_det[curr].monto_fact = 0 END IF IF fact_det[curr].cod_grupo IS NULL THEN LET fact_det[curr].cantidad = 0 LET fact_det[curr].unidades = 0 LET fact_det[curr].despacho = 0 LET fact_det[curr].existencia = 0 LET fact_det[curr].precio = 0 LET fact_det[curr].monto_fact = 0 END IF IF fact_det[curr].cod_tipo IS NULL THEN LET fact_det[curr].cantidad = 0 LET fact_det[curr].unidades = 0 LET fact_det[curr].despacho = 0 LET fact_det[curr].existencia = 0 LET fact_det[curr].precio = 0 LET fact_det[curr].monto_fact = 0 END IF IF fact_det[curr].cod_sec IS NULL THEN LET fact_det[curr].cantidad = 0 LET fact_det[curr].unidades = 0 LET fact_det[curr].despacho = 0 LET fact_det[curr].existencia = 0 LET fact_det[curr].precio = 0 LET fact_det[curr].monto_fact = 0 END IF DISPLAY fact_det[curr].cantidad TO s_fact[scr_l].cantidad DISPLAY fact_det[curr].unidades TO s_fact[scr_l].unidades DISPLAY fact_det[curr].despacho TO s_fact[scr_l].despacho DISPLAY fact_det[curr].existencia TO s_fact[scr_l].existencia DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio DISPLAY fact_det[curr].monto_fact TO s_fact[scr_l].monto_fact # Calculo del sub-total de la factura LET t_costos = 0 LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 FOR idx = 1 to arr_count() IF fact_det[idx].cod_n is not null and fact_det[idx].cod_grupo is not null and fact_det[idx].cod_tipo is not null and fact_det[idx].cod_sec is not null THEN SELECT a.cantidad INTO p_cantidad FROM vetb00014 a WHERE a.cod_n = fact_det[idx].cod_n AND a.cod_grupo = fact_det[idx].cod_grupo AND a.cod_tipo = fact_det[idx].cod_tipo AND a.cod_sec = fact_det[idx].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 94 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET fact_det[idx].unidades = fact_det[idx].cantidad * p_cantidad DISPLAY fact_det[curr].unidades TO s_fact[scr_l].unidades IF fact_det[idx].cod_n != 0 THEN IF fact_det[idx].cantidad IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF IF fact_det[idx].monto_fact IS NOT NULL THEN LET p_costos = 0 LET p_costos = 0 LET t_costos = 0 LET fact_gral.sub_total = fact_gral.sub_total + fact_det[idx].monto_fact END IF END IF END IF END FOR LET cantidad_total = 0 IF primera IS NULL THEN LET primera = "S" END IF # Calculo descuento de la factura IF fact_gral.porc_desc > 0 AND fact_gral.ventas = "1" THEN LET p_desc = fact_gral.sub_total * (fact_gral.porc_desc / 100) LET fact_gral.desc_valor = p_desc END IF IF fact_gral.porc_desc > 0 AND fact_gral.ventas = "2" THEN LET fact_gral.desc_valor = fact_gral.porc_desc END IF IF fact_gral.desc_valor IS NULL THEN LET fact_gral.desc_valor = 0 END IF LET desc_valor = fact_gral.desc_valor using "###,###.##" DISPLAY BY NAME desc_valor ATTRIBUTE (BOLD) # Calcula el porciento de ITBIS de la factura dependiendo del porciento # especificado por el usuario IF fact_gral.porc_itbi IS NOT NULL THEN LET fact_gral.total_fact = fact_gral.sub_total - fact_gral.desc_valor LET fact_gral.itbi = (fact_gral.total_fact * (fact_gral.porc_itbi / 100)) LET itbi = fact_gral.itbi using "###,###,###.##" DISPLAY BY NAME itbi ATTRIBUTE (BOLD) END IF # Calculo total de la factura IF fact_gral.ventas = "1" THEN LET fact_gral.total_fact = fact_gral.sub_total - fact_gral.desc_valor + fact_gral.itbi END IF # Cargos varios por conceptos varios en factura de exportacion IF fact_gral.ventas = "2" THEN LET fact_gral.total_fact = fact_gral.sub_total + fact_gral.desc_valor LET desc_valor = fact_gral.desc_valor using "###,###.##" DISPLAY BY NAME desc_valor ATTRIBUTE (BOLD) END IF LET sub_total = fact_gral.sub_total using "###,###,###.##" LET total_fact = fact_gral.total_fact using "###,###,###.##" DISPLAY BY NAME total_fact ATTRIBUTE (BOLD) DISPLAY BY NAME sub_total ATTRIBUTE (BOLD) IF fact_gral.cond_pago > 1 THEN IF balance > credito THEN LET numero_msg = 80 CALL msg(numero_msg) GO TO vuelve END IF END IF # Si el usuario no introdujo ningun item en el arreglo IF fact_gral.sub_total = 0 or fact_gral.sub_total IS NULL THEN LET numero_msg = 84 CALL msg(numero_msg) NEXT FIELD cod_n END IF EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LABEL anterior: PROMPT "Las Informaciones Estan Correctas (S/N)" FOR CHAR opt LET opt = UPSHIFT(opt) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF opt IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) GOTO anterior END IF IF (opt != "S" AND opt != "N") THEN LET numero_msg = -1301 CALL msg(numero_msg) GOTO anterior END IF IF fact_gral.cond_pago = 1 THEN PROMPT "Presione Cualquier Tecla Para Imprimir Volante de Pago" FOR CHAR opt3 CALL veprfu001() END IF IF opt = "S" THEN LABEL aqui: LET verdad = "S" # Este LET verdad = "N" viene del comentario anterior si usted quita el # comentario anterior debe de borrar este verdad = "N" LET verdad = "N" IF (opt4 != "S" AND opt4 != "s") THEN IF (opt4 != "n" AND opt4 != "N") THEN LET numero_msg = -1301 CALL msg(numero_msg) GOTO aqui END IF END IF # Pregunta sobre si la factura va ser impresa ahora o luego LABEL anterior2: PROMPT "Desea Imprimir Esta Factura Ahora (S/N)" FOR CHAR opt1 LET opt1 = upshift(opt1) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF opt1 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) GOTO anterior2 END IF IF (opt1 != "S" AND opt1 != "s") THEN IF opt1 != "N" AND opt1 != "n" THEN LET numero_msg = -1301 CALL msg(numero_msg) GOTO anterior2 END IF END IF LET impresion = opt1 IF fact_gral.ventas = "1" THEN LET fact_gral.prima_us = 1 END IF # Actualiza la tabla de datos generales de la factura INSERT INTO vetb00002 (cod_cia,factura,fecha_factura,ventas,zona,orden, fecha_orden,conduce,fecha_conduce,tipo_cliente, sec_cliente,cod_vend,sec_vend,cond_pago,porc_itbi, porc_desc,prima_us,sub_total,monto_desc,monto_itbi, neto,fecha_embarque,status_impresion,status_t,us_crea, fech_crea, us_mod, fech_mod) VALUES (fact_gral.cod_cia, fact_gral.factura, fact_gral.fecha_factura, fact_gral.ventas,fact_gral.zona,fact_gral.orden, fact_gral.fecha_orden,fact_gral.conduce,fact_gral.fecha_conduce, fact_gral.tipo_cliente,fact_gral.sec_cliente,NULL,fact_gral.sec_vend, fact_gral.cond_pago,fact_gral.porc_itbi,fact_gral.porc_desc, fact_gral.prima_us,fact_gral.sub_total,fact_gral.desc_valor, fact_gral.itbi,fact_gral.total_fact,fact_gral.fecha_embarque, impresion,NULL,USER,CURRENT,NULL,NULL) # Actualiza la tabla control de la numeracion de la factura UPDATE vetb00001 SET ult_factura = fact_gral.factura, us_crea = USER, fech_crea = CURRENT # Actualizacion de la tabla de cuentas por cobrar IF fact_gral.cond_pago > 1 THEN LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias INSERT INTO cctb00001 VALUES (NULL,fact_gral.cod_cia,tipo_f,fact_gral.factura,fact_gral.tipo_cliente, fact_gral.sec_cliente,NULL,fact_gral.sec_vend, fact_gral.fecha_factura,p_fecha_ven,fact_gral.factura, NULL,NULL, fact_gral.total_fact,NULL,NULL,t_costos,0, NULL, USER,CURRENT, NULL, NULL) END IF FOR idx = 1 TO arr_count() IF fact_det[idx].cod_n > 0 AND fact_det[idx].cod_grupo > 0 AND fact_det[idx].cod_tipo > 0 AND fact_det[idx].cod_sec > 0 THEN IF fact_det[idx].cantidad IS NOT NULL THEN # Actualiza la tabla de datos detallados de la factura INSERT INTO vetb00003 VALUES (fact_gral.cod_cia,fact_gral.factura,fact_det[idx].cod_n, fact_det[idx].cod_grupo,fact_det[idx].cod_tipo,fact_det[idx].cod_sec, fact_det[idx].unidades,0,p_bonifica[idx],fact_det[idx].precio,NULL, USER,CURRENT,NULL,NULL) # Actualizando la tabla de movimientos de inventario cuando la factura es # normal o Tiene Cantidad a despachar LET fact_det[idx].unidades = fact_det[idx].unidades * -1 LET tipo_fact1 = 33 SELECT UNIQUE sec_cliente INTO vend_cte FROM vetb00033 WHERE num_emp = fact_gral.sec_vend INSERT INTO iptb00017 (cod_cia,num_doc,fact_no,fecha,cod_transp,sec_transp, cod_sp,cod_sp_sec,placa,cod_tarifa,cod_mov,cod_n, cod_grupo,cod_tipo,cod_sec,cantidad_2,bodega, us_crea,fech_crea) VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.factura, fact_gral.fecha_factura,fact_gral.cod_transp,fact_gral.sec_transp, fact_gral.tipo_cliente,vend_cte,fact_gral.placa_transp, fact_gral.cod_tarifa,tipo_fact1,fact_det[idx].cod_n, fact_det[idx].cod_grupo,fact_det[idx].cod_tipo, fact_det[idx].cod_sec,fact_det[idx].unidades,1,USER,CURRENT) LET fact_unidades = fact_det[idx].unidades * -1 INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_transp,sec_transp, cod_sp,cod_sp_sec,placa,cod_tarifa,cod_mov,cod_n, cod_grupo,cod_tipo,cod_sec,cantidad_2,bodega, us_crea,fech_crea) VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.factura, fact_gral.fecha_factura,fact_gral.cod_transp,fact_gral.sec_transp, fact_gral.tipo_cliente,vend_cte,fact_gral.placa_transp, fact_gral.cod_tarifa,tipo_fact1,fact_det[idx].cod_n, fact_det[idx].cod_grupo,fact_det[idx].cod_tipo, fact_det[idx].cod_sec,fact_unidades,1,USER,CURRENT) LET fact_det[idx].unidades = fact_unidades * -1 INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_transp,sec_transp, cod_sp,cod_sp_sec,placa,cod_tarifa,cod_mov,cod_n, cod_grupo,cod_tipo,cod_sec,cantidad_2,bodega, us_crea,fech_crea) VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.factura, fact_gral.fecha_factura,fact_gral.cod_transp,fact_gral.sec_transp, fact_gral.tipo_cliente,fact_gral.sec_cliente,fact_gral.placa_transp, fact_gral.cod_tarifa,tipo_fact,fact_det[idx].cod_n, fact_det[idx].cod_grupo,fact_det[idx].cod_tipo, fact_det[idx].cod_sec,fact_det[idx].unidades,1,USER,CURRENT) LET fact_det[idx].unidades = fact_det[idx].unidades * -1 LET cant_pend[idx] = cant_pend[idx] * -1 # Actualiza la tabla maestra de producto terminados en la existencia IF p_bonifica[idx] IS NULL THEN LET p_bonifica[idx] = 0 END IF IF opt4 = "N" or opt4 = "n" THEN LET p_bonifica[idx] = 0 END IF END IF END IF END FOR # Impresion de la factura IF opt1 = "S" or opt1 = "s" THEN START REPORT imp_fact TO "%USHOME%\\archivo" FOR idx = 1 TO arr_count() IF fact_det[idx].cod_n IS NOT NULL AND fact_det[idx].cod_grupo IS NOT NULL AND fact_det[idx].cod_tipo IS NOT NULL AND fact_det[idx].cod_sec IS NOT NULL THEN IF fact_det[idx].cod_n != 0 THEN IF fact_det[idx].cantidad IS NOT NULL THEN LET cod_fact = 2 OUTPUT TO REPORT imp_fact(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact) END IF END IF END IF END FOR FINISH REPORT imp_fact LET impresion = "S" END IF LET numero_msg = 1 CALL msg(numero_msg) FOR idx = 1 to arr_count() LET fact_det[idx].cod_n = NULL LET fact_det[idx].cod_grupo = NULL LET fact_det[idx].cod_tipo = NULL LET fact_det[idx].cod_sec = NULL LET fact_det[idx].cantidad = NULL LET fact_det[idx].despacho = NULL LET fact_det[idx].existencia = NULL LET fact_det[idx].unidades = NULL LET fact_det[idx].precio = NULL LET fact_det[idx].monto_fact = NULL END FOR GOTO exito ELSE # Borra la factura de la tabla de descuentos para cuando el usuario # haga alguna modificacion se le actualice en el proceso destinado para los # descuentos LET primera = NULL DELETE FROM vetb00026 WHERE factura = fact_gral.factura GOTO vuelve END IF FOR idx = 1 to arr_count() LET fact_det[idx].cod_n = NULL LET fact_det[idx].cod_grupo = NULL LET fact_det[idx].cod_tipo = NULL LET fact_det[idx].cod_sec = NULL LET fact_det[idx].cantidad = NULL LET fact_det[idx].despacho = NULL LET fact_det[idx].existencia = NULL LET fact_det[idx].unidades = NULL LET fact_det[idx].precio = NULL LET fact_det[idx].monto_fact = NULL END FOR LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 END FUNCTION FUNCTION anula() OPEN WINDOW anula AT 7,5 WITH FORM "vefmwd006" ATTRIBUTE (BORDER, COMMENT LINE LAST - 1,PROMPT LINE LAST - 2,FORM LINE FIRST + 1) LABEL vuelve: INPUT BY NAME p_fact_no AFTER FIELD p_fact_no SELECT UNIQUE fecha_factura INTO fact_gral.fecha_factura FROM vetb00002 WHERE factura = p_fact_no AND status_t IS NULL AND fech_crea > datetime (1994-03-31 08:00) year to minute IF STATUS = NOTFOUND THEN LET numero_msg = 102 CALL msg(numero_msg) NEXT FIELD p_fact_no END IF IF fact_gral.fecha_factura < "310394" THEN LET numero_msg = 58 CALL msg(numero_msg) GOTO salir END IF LET p_fechas = fact_gral.fecha_factura CALL prd() IF bandera =1 THEN SLEEP 2 EXIT INPUT END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT INPUT END IF EXIT INPUT END INPUT IF bandera = 1 THEN LET bandera = 0 GOTO salir END IF # Este Int_flag es porque tuve que salir del input con el int_flag verdadero # y asi poder salir del window sin problemas IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false GOTO salir END IF LABEL atras: PROMPT "Esta seguro de Anular Esta Factura? (S/N)" FOR CHAR opt3 LET opt3 = UPSHIFT(opt3) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false GOTO salir END IF IF opt3 != "S" AND opt3 != "N" THEN LET numero_msg = -1301 CALL msg(numero_msg) GOTO atras END IF IF opt3 = "N" THEN GOTO salir END IF IF opt3 = "S" THEN UPDATE vetb00002 SET status_t = "E", us_mod = USER, fech_mod = CURRENT WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00) year to minute UPDATE iptb00006 SET status_t = "E", us_mod = USER, fech_mod = CURRENT WHERE num_doc = p_fact_no AND cod_mov IN (30,33) AND fech_crea > datetime (1994-03-31 08:00) year to minute UPDATE iptb00017 SET status_t = "E", us_mod = USER, fech_mod = CURRENT WHERE num_doc = p_fact_no AND cod_mov =33 AND fech_crea > datetime (1994-03-31 08:00) year to minute UPDATE vetb00003 SET status_t = "E", us_mod = USER, fech_mod = CURRENT WHERE factura = p_fact_no AND fech_crea > datetime (1994-03-31 08:00) year to minute UPDATE cctb00001 SET status_t = "E", us_mod = USER, fech_mod = CURRENT WHERE num_doc = p_fact_no AND (tipo_doc = "FT" or tipo_doc = "FE") AND fech_crea > datetime (1994-03-31 08:00) year to minute LET numero_msg = 82 CALL msg(numero_msg) END IF LABEL salir: LET fact_gral.fecha_factura = TODAY #CLOSE FORM vefmwd006 CLOSE WINDOW anula END FUNCTION