{ -------------------------------------------------------------------------- PROGRAMA : VEPRMT001 OBJETIVO : Este programa captura la factura comercial REALIZADO POR : Ing. Juan Fco. Soto. FECHA : Enero 12,1993. -------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE p_codigo,mes_chequeo SMALLINT DEFINE porce,cant_prod,cant_vend DECIMAL (8,2) DEFINE codigo_provincia INTEGER DEFINE fecha_final DATE, cod_b1 CHAR(13), lleva_parcial,ch_itbi,cod_b2 CHAR(1), cod_b4 CHAR(15), cuenta_arr INTEGER, observacion CHAR(180) , obs1,obs2,obs3 CHAR(50),obs4 CHAR(30) DEFINE prtb09 RECORD LIKE prtb00009.* #-> Monitoreo de la orden de produccion DEFINE f_cctb01 RECORD LIKE cctb00001.*, f_avance,f_total_avance,f_valor_av DEC(10,2), f_num_avance INTEGER FUNCTION veprmt001() 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, cod_fact SMALLINT, ch_balance CHAR(14) 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 vefmmt001 FROM "vefmmt001" DISPLAY FORM vefmmt001 DISPLAY "veprmt001" AT 1,1 ATTRIBUTE (blue) LET hoy = today DISPLAY hoy using "dd/mm/yyyy" AT 1,68 ATTRIBUTE (blue) DISPLAY "Factura de Ventas" AT 3,30 ATTRIBUTE (blue) 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 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].descrip_esp = NULL LET fact_det[idx].unidad_med = NULL LET fact_det[idx].cantidad = 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].descrip_esp to s_fact[idx].descrip_esp DISPLAY fact_det[idx].unidad_med to s_fact[idx].unidad_med DISPLAY fact_det[idx].cantidad to s_fact[idx].cantidad DISPLAY fact_det[idx].precio to s_fact[idx].precio DISPLAY fact_det[idx].monto_fact to s_fact[idx].monto_fact END FOR 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 LET hice = "S" LET h = 1 LABEL otravez: INITIALIZE detalle TO NULL PROMPT "Esta Factura Tiene ITBI? " FOR ch_itbi LET ch_itbi = UPSHIFT(ch_itbi) IF ch_itbi != "S" AND ch_itbi != "N" THEN LET numero_msg = -1301 CALL msg(numero_msg) INITIALIZE fact_gral.* TO NULL GOTO otravez END IF IF ch_itbi = "N" THEN LET fact_gral.porc_itbi = 0 LET fact_gral.itbi = 0 END IF LABEL regresa: INPUT BY NAME fact_gral.* WITHOUT DEFAULTS ATTRIBUTE (blue) ON KEY (CONTROL-B) LET mes_chequeo = MONTH(TODAY) CALL anular() NEXT FIELD cod_cia ON KEY (CONTROL-E) CASE WHEN INFIELD(tipo_cliente) CALL veprmt101() LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente LET fact_gral.sec_cliente = cliente_bas.sec_cliente LET fact_gral.nombre = cliente_bas.nombre CLIPPED LET credito = cliente_bas.limite_credito LET codigo_provincia = cliente_bas.cod_provincia DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.nombre WHEN INFIELD(sec_cliente) CALL veprmt101() LET fact_gral.tipo_cliente = cliente_bas.tipo_cliente LET fact_gral.sec_cliente = cliente_bas.sec_cliente LET fact_gral.nombre = cliente_bas.nombre CLIPPED LET credito = cliente_bas.limite_credito LET codigo_provincia = cliente_bas.cod_provincia DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.nombre END CASE 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 fact_gral.cod_tarifa,descrip6 ATTRIBUTE (BOLD) NEXT FIELD cod_tarifa 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(blue) DISPLAY BY NAME fact_gral.descrip ATTRIBUTE(blue) 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 (blue) DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue) 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 (blue) DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue) 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 (blue) DISPLAY BY NAME fact_gral.sec_transp ATTRIBUTE (blue) DISPLAY BY NAME fact_gral.nombre_tran ATTRIBUTE (blue) END CASE 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 = p_companias.nombre CLIPPED END IF DISPLAY BY NAME compania ATTRIBUTE (blue) AFTER FIELD ventas IF fact_gral.ventas IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ventas END IF IF fact_gral.ventas = "1" THEN LET p_codigo = 30 LET tipo_f = "FT" LET tipo_fact = 30 ELSE LET tipo_fact = 31 LET p_codigo = 31 LET tipo_f = "FE" SELECT prima INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" LET fact_gral.nombre_tipo = "EXPORTACION" END IF IF ch_itbi = "S" THEN 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 fact_gral.porc_itbi = 0 END IF 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 fact_gral.prima_us = 1 END IF LET fact_gral.nombre_tipo = "EXPORTACION" END IF END IF DISPLAY BY NAME fact_gral.porc_desc,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 porc_desc IF fact_gral.porc_desc < 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD zona END IF AFTER FIELD zona IF fact_gral.zona IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD zona END IF LET longitud = LENGTH(fact_gral.zona CLIPPED) IF longitud < 3 THEN LET numero_msg = 77 CALL msg(numero_msg) NEXT FIELD zona END IF LET tipo1 = fact_gral.zona IF fact_gral.ventas = "1" THEN SELECT unique descrip INTO descrip1 FROM vetb00008 WHERE cod_zona = tipo1 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD zona END IF END IF IF fact_gral.ventas = "2" THEN LET tipo2 = NULL LET tipo2 = fact_gral.zona SELECT unique nom_pais INTO descrip1 FROM cotb00018 WHERE cod_pais = tipo1 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD zona END IF END IF LET fact_gral.factura = 0 SELECT ult_factura INTO fact_gral.factura FROM vetb00001 IF fact_gral.factura IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) RETURN END IF LET fact_gral.factura = fact_gral.factura + 1 SELECT UNIQUE a.factura FROM vetb00002 a WHERE a.factura = fact_gral.factura IF STATUS != NOTFOUND THEN LET numero_msg = 382 CALL msg(numero_msg) NEXT FIELD cod_cia END IF DISPLAY BY NAME fact_gral.factura ATTRIBUTE (blue) DISPLAY BY NAME descrip1 ATTRIBUTE(blue) 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 IF fact_gral.fecha_factura IS NULL THEN LET fact_gral.fecha_factura = TODAY DISPLAY BY NAME fact_gral.fecha_factura END IF 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 SELECT a.nombre,a.limite_credito,a.cod_provincia,a.telefono INTO fact_gral.nombre,credito,codigo_provincia, cliente_bas.telefono 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 = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF DISPLAY BY NAME fact_gral.nombre ATTRIBUTE (blue) 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 IF fact_gral.tipo_cliente = 12 THEN SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia 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 (blue) DISPLAY BY NAME fact_gral.ciudad ATTRIBUTE (blue) 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 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 (blue) BEFORE FIELD porc_itbi IF fact_gral.ventas = "2" THEN NEXT FIELD sec_vend 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 IF fact_gral.cond_pago != 1 OR fact_gral.sec_vend !=8888 THEN SELECT nom1_emp, apell1_emp INTO descrip5,descrip6 FROM adtb00003 WHERE num_emp = fact_gral.sec_vend IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD sec_vend END IF LET fact_gral.nombre_vend = descrip5 clipped," ",descrip6 clipped DISPLAY BY NAME fact_gral.nombre_vend ATTRIBUTE (blue) # 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 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 ELSE LET fact_gral.nombre_tran = NULL LET p_cedula = NULL LET p_serie = NULL 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 (blue) END IF AFTER FIELD cod_tarifa IF fact_gral.cod_tarifa IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) #NEXT FIELD cod_tarifa ELSE LET descrip6 = NULL SELECT descrip INTO descrip6 FROM vetb00023 WHERE cod_tarifa = fact_gral.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 LET descrip5 = descrip6[1,15] clipped LET descrip6 = descrip6[16,30] clipped DISPLAY BY NAME descrip5,descrip6 ATTRIBUTE (BOLD) END IF BEFORE FIELD fecha_factura LET fact_gral.fecha_factura = hoy DISPLAY BY NAME fact_gral.fecha_factura 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 orden IF fact_gral.orden IS NOT NULL THEN SELECT UNIQUE a.fecha_oc INTO fact_gral.fecha_orden FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD orden END IF ELSE NEXT FIELD orden END IF DISPLAY BY NAME fact_gral.fecha_orden 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 DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND cod_mov = p_codigo RETURN END IF IF fact_gral.fecha_factura IS NULL THEN LET fact_gral.fecha_factura = TODAY DISPLAY BY NAME fact_gral.fecha_factura END IF 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.ventas IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ventas END IF IF ch_itbi = "S" THEN 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 fact_gral.porc_itbi = 0 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 fact_gral.prima_us = 1 END IF LET fact_gral.nombre_tipo = "EXPORTACION" LET tipo_fact = 31 LET tipo_f = "FE" END IF END IF LET fact_gral.factura = 0 SELECT ult_factura INTO fact_gral.factura FROM vetb00001 IF fact_gral.factura IS NULL THEN LET fact_gral.factura = 0 END IF LET fact_gral.factura = fact_gral.factura + 1 SELECT UNIQUE a.factura FROM vetb00002 a WHERE a.factura = fact_gral.factura IF STATUS != NOTFOUND THEN LET numero_msg = 382 CALL msg(numero_msg) NEXT FIELD cod_cia 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.sec_cliente IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF EXIT INPUT END INPUT CALL detalles() 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: DECLARE buscame CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM prtb00013 a WHERE a.num_oc = fact_gral.orden LET idx = 1 FOREACH buscame INTO fact_det[idx].cod_n, fact_det[idx].cod_grupo, fact_det[idx].cod_tipo, fact_det[idx].cod_sec LET idx = idx + 1 END FOREACH CALL set_count(idx-1) 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,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a,OUTER 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 GROUP BY 1,2 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF 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].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio 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,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a, OUTER 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 GROUP BY 1,2 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF 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].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio 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,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a, OUTER 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 GROUP BY 1,2 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF 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].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio 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,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a, OUTER 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 GROUP BY 1,2 IF p_existencia IS NULL THEN LET p_existencia = 0 END IF 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].descrip_esp TO s_fact[scr_l].descrip_esp DISPLAY fact_det[curr].unidad_med TO s_fact[scr_l].unidad_med DISPLAY fact_det[curr].precio TO s_fact[scr_l].precio END CASE AFTER FIELD cod_n 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 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 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 # Busca la descripcion del producto con su existencia LET p_existencia = 0 SELECT a.descrip_esp,a.unidad_med,SUM(b.cantidad_2) INTO fact_det[curr].descrip_esp,fact_det[curr].unidad_med, p_existencia FROM iptb00002 a,OUTER 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 GROUP BY 1,2 IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF IF p_existencia IS NULL THEN LET p_existencia = 0 END IF # BUSCA LA MARCA DEL PRODUCTO IF p_existencia IS NULL THEN LET p_existencia = 0 END IF LET verdad = NULL CALL precios() IF verdad = "S" THEN NEXT FIELD cod_n END IF DISPLAY fact_det[curr].descrip_esp,fact_det[curr].unidad_med, fact_det[curr].precio TO s_fact[scr_l].descrip_esp,s_fact[scr_l].unidad_med, s_fact[scr_l].precio 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 p_existencia IS NULL THEN LET p_existencia = 0 END IF IF fact_det[curr].cod_n != 5 THEN IF fact_det[curr].cantidad > p_existencia THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cantidad END IF END IF #-> Busca la cantidad ordenada a produccion vg Tuesday, 16 January, 2001 SELECT MAX(a.cantidad) INTO cant_prod FROM prtb00013 a WHERE a.num_oc = fact_gral.orden AND a.cod_n = fact_det[curr].cod_n AND a.cod_tipo = fact_det[curr].cod_tipo AND a.cod_grupo = fact_det[curr].cod_grupo AND a.cod_sec = fact_det[curr].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET cant_prod = 0 END IF #-> Busca la cantidad despachada de la orden vg Tuesday, 16 January, 2001 CALL cantidad_desp(fact_gral.orden,fact_det[curr].cod_n, fact_det[curr].cod_tipo,fact_det[curr].cod_grupo, fact_det[curr].cod_sec) LET cant_vend = cant_vend + fact_det[curr].cantidad IF cant_vend > cant_prod THEN LET numero_msg = 1661 CALL msg(numero_msg) NEXT FIELD cantidad END IF IF fact_det[curr].precio IS NULL THEN LET fact_det[curr].precio = 0 END IF LET fact_det[curr].monto_fact = fact_det[curr].cantidad * fact_det[curr].precio DISPLAY fact_det[curr].monto_fact to s_fact[scr_l].monto_fact # Calculo del sub-total de la factura 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 LET fact_gral.sub_total = fact_gral.sub_total + fact_det[idx].monto_fact END IF END FOR # Calculo descuento de la factura IF fact_gral.porc_desc > 0 THEN LET fact_gral.desc_valor=fact_gral.sub_total * (fact_gral.porc_desc / 100) END IF IF fact_gral.desc_valor IS NULL THEN LET fact_gral.desc_valor = 0 END IF DISPLAY BY NAME fact_gral.sub_total,fact_gral.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.itbi=((fact_gral.sub_total - fact_gral.desc_valor)* (fact_gral.porc_itbi/100)) ELSE LET fact_gral.itbi=0 END IF LET itbi = fact_gral.itbi using "###,###,###.##" DISPLAY BY NAME fact_gral.itbi ATTRIBUTE (BOLD) # Calculo total de la factura LET fact_gral.total_fact= (fact_gral.sub_total-fact_gral.desc_valor) + fact_gral.itbi DISPLAY BY NAME fact_gral.total_fact ATTRIBUTE (BOLD) END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false DELETE FROM vetb00042 WHERE factura = fact_gral.factura AND cod_mov = p_codigo 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 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 LET fact_gral.sub_total = fact_gral.sub_total + fact_det[idx].monto_fact END IF END FOR # Calculo descuento de la factura IF fact_gral.porc_desc > 0 THEN LET fact_gral.desc_valor = fact_gral.sub_total * (fact_gral.porc_desc / 100) END IF IF fact_gral.desc_valor IS NULL THEN LET fact_gral.desc_valor = 0 END IF DISPLAY BY NAME fact_gral.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.itbi=((fact_gral.sub_total - fact_gral.desc_valor)* (fact_gral.porc_itbi/100)) ELSE LET fact_gral.itbi=0 END IF LET itbi = fact_gral.itbi using "###,###,###.##" DISPLAY BY NAME fact_gral.itbi ATTRIBUTE (BOLD) # Calculo total de la factura LET fact_gral.total_fact=fact_gral.sub_total-fact_gral.desc_valor + fact_gral.itbi DISPLAY BY NAME fact_gral.total_fact ATTRIBUTE (BOLD) 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 cuenta_arr = arr_count() 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 opt = "S" THEN LABEL aqui: LET verdad = "S" 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 LET lleva_parcial = "N" LABEL brinca: # Actualiza la tabla de datos generales de la factura IF fact_gral.factura IS NOT NULL THEN INSERT INTO vetb22222 VALUES (fact_gral.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) # INSERTA EL DETALLE DE LA FACTURA INSERT INTO vetb00048 VALUES (fact_gral.factura,observacion,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 END IF # 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) #-> Actualiza los avances de las ordenes, aplicandolos a la facturas. Victor Gomez Sábado 24 de Marzo de 200102:37:58 p.m. SELECT MIN(a.num_doc)INTO f_num_avance FROM cctb00001 a WHERE a.tipo_doc = "AV" AND a.fecha_orig > "31122000" AND a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.num_cheque = fact_gral.orden AND a.status_t IS NULL IF f_num_avance IS NOT NULL THEN #-> VAlidar que la orden no haya sido aplicada en su totalidad Vg SELECT SUM(b.valor) INTO f_avance FROM cctb00001 b WHERE b.tipo_doc = "AV" AND b.fecha_orig > "31122000" AND b.num_doc = f_num_avance AND b.status_t IS NULL IF fact_gral.total_fact < f_avance THEN LET f_valor_av = fact_gral.total_fact ELSE LET f_valor_av = (fact_gral.total_fact - f_avance) END IF IF f_valor_av > 0 THEN LET f_valor_av = f_valor_av * -1 LET tipo_f = "AV" INSERT INTO cctb00001 VALUES (NULL,fact_gral.cod_cia,tipo_f,f_num_avance, 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,f_valor_av,NULL,NULL, t_costos,0, NULL, USER,CURRENT, NULL, NULL) END IF END IF END IF #-> Actulizacion de la tabla de monitoreo de la orden de produccion vg Wednesday, 17 January, 2001 09:33:21 AM LET prtb09.num_oc = fact_gral.orden LET prtb09.fecha = fact_gral.fecha_factura IF cant_vend = cant_prod THEN #-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM UPDATE prtb00012 SET fecha_cierre = fact_gral.fecha_factura WHERE @num_oc = fact_gral.orden AND @tipo_cliente = fact_gral.tipo_cliente AND @sec_cliente = fact_gral.sec_cliente LET prtb09.pendiente = "N" LET prtb09.detalle = "CIERRE DE ORDEN DE PRODUCCION SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<", " DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy" ELSE LET prtb09.pendiente = "S" LET prtb09.detalle = "DESPACHO DE MERCANCIA SEGUN FACT. # ",fact_gral.factura USING "<<<<<<<", " DE FECHA : ",fact_gral.fecha_factura USING "dd/mm/yyyy" END IF INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,prtb09.pendiente, prtb09.detalle,NULL,USER,CURRENT,NULL,NULL) #---------------------------------------------------------------------------------------------------- FOR idx = 1 TO cuenta_arr IF fact_det[idx].cod_n IS NOT NULL AND fact_det[idx].cantidad > 0 THEN 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].cantidad,0,0, 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].cantidad = fact_det[idx].cantidad * -1 IF fact_det[idx].cod_n != 5 THEN 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].cantidad,1,USER,CURRENT) END IF LET fact_det[idx].cantidad = fact_det[idx].cantidad * -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 FOR ELSE GOTO regresa END IF # Impresion de la factura IF opt1 = "S" or opt1 = "s" THEN #-> Valida si la factura realmente existe vg Sábado 24 de Marzo de 2001 SELECT * FROM vetb00002 WHERE @factura = fact_gral.factura IF STATUS = NOTFOUND THEN GOTO regresa END IF START REPORT imp_fact TO "C:\\factura" FOR idx = 1 TO cuenta_arr 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 AND fact_det[idx].cantidad IS NOT NULL AND fact_det[idx].cantidad > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_fact(fact_gral.*,fact_det[idx].*,tot_porc, p_bonifica[idx],cod_fact) END IF END FOR DISPLAY nombre_m CLIPPED AT 1,1 FINISH REPORT imp_fact RUN "TYPE C:\\factura > LPT1" LET impresion = "S" 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 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].descrip_esp = NULL LET fact_det[idx].unidad_med = NULL LET fact_det[idx].cantidad = 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 GOTO otravez END FUNCTION FUNCTION repite_codigo() LET verdad = NULL LET ant_art.cod_n = fact_det[curr].cod_n LET ant_art.cod_grupo = fact_det[curr].cod_grupo LET ant_art.cod_tipo = fact_det[curr].cod_tipo LET ant_art.cod_sec = fact_det[curr].cod_sec FOR idx = 1 TO arr_count() IF idx != curr THEN 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 = ant_art.cod_n AND fact_det[idx].cod_grupo = ant_art.cod_grupo AND fact_det[idx].cod_tipo = ant_art.cod_tipo AND fact_det[idx].cod_sec = ant_art.cod_sec THEN LET numero_msg = 21 CALL msg(numero_msg) LET verdad = "S" ELSE IF verdad != "S" THEN LET verdad = "N" END IF END IF END IF END IF END FOR END FUNCTION FUNCTION tarifas() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd014" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.descrip FROM descrip LET selec2 = "SELECT a.cod_tarifa,a.descrip,a.tarifa_pago FROM vetb00023 a ", "WHERE a.status_t IS NULL AND ",criterio clipped," ORDER BY 1 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_tarifa END IF PREPARE busca_tarifa FROM selec2 IF STATUS >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_tarifa CURSOR FOR busca_tarifa LET idx = 1 FOREACH buscar_tarifa INTO arr_tarifa[idx].* LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Tarifa del Transportista Donde Esta el cursor" DISPLAY ARRAY arr_tarifa TO s_datos.* LET curr1 = arr_curr() LET fact_gral.cod_tarifa = arr_tarifa[curr1].cod_tarifa LET descrip6 = arr_tarifa[curr1].descrip LABEL salir_tarifa: CLOSE WINDOW busqueda END FUNCTION FUNCTION condiciones() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd011" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT BY NAME criterio ON a.descrip LET selec2 = "SELECT a.cond_pago, a.descrip", " FROM vetb00012 a", " WHERE ", "a.status_t IS NULL AND ", criterio clipped, "ORDER BY 1 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_e END IF PREPARE busca_cond1 FROM selec2 IF STATUS >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_cond CURSOR FOR busca_cond1 LET idx = 1 FOREACH buscar_cond INTO arr_condicion[idx].* IF STATUS = NOTFOUND THEN EXIT FOREACH END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Empleado donde esta el cursor" DISPLAY ARRAY arr_condicion TO s_condicion.* LET curr1 = arr_curr() LET fact_gral.cond_pago = arr_condicion[curr1].cond_pago LET fact_gral.descrip = arr_condicion[curr1].descrip LABEL salir_consulta_e: CLOSE WINDOW busqueda END FUNCTION FUNCTION cons_transp() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd012" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.nombre FROM descrip6 LET selec2 = "SELECT a.cod_transp,a.sec_transp, a.nombre FROM vetb00015 a ", "WHERE a.status_t IS NULL AND ",criterio clipped," ORDER BY 1,2" IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_e END IF PREPARE busca_transp1 FROM selec2 IF STATUS >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_transp CURSOR FOR busca_transp1 LET idx = 1 FOREACH buscar_transp INTO arr_transp[idx].* IF STATUS = NOTFOUND THEN EXIT FOREACH END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Empleado donde esta el cursor" DISPLAY ARRAY arr_transp TO s_transp.* LET curr1 = arr_curr() LET fact_gral.cod_transp = arr_transp[curr1].cod_transp LET fact_gral.sec_transp = arr_transp[curr1].sec_transp LET fact_gral.nombre_tran = arr_transp[curr1].nombre LABEL salir_consulta_e: CLOSE WINDOW busqueda END FUNCTION REPORT imp_fact(x,z,porciento,bonifica,cod_f) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas, zona LIKE vetb00002.zona, nombre_tipo CHAR(11), factura LIKE vetb00002.factura, fecha_factura LIKE vetb00002.fecha_factura, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(50), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, nombre_desc CHAR(30), cond_pago LIKE vetb00002.cond_pago, descrip CHAR(30), orden LIkE vetb00002.orden, fecha_orden LIKE vetb00002.fecha_orden, conduce LIKE vetb00002.conduce, fecha_conduce LIKE vetb00002.fecha_conduce, porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, nombre_vend CHAR(30), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, nombre_tran CHAR(30), fecha_embarque LIKE vetb00002.fecha_embarque, placa_transp LIKE iptb00006.placa, sub_total DECIMAL(12,2), desc_valor DECIMAL(12,2), itbi DECIMAL(12,2), total_fact DECIMAL(12,2) END RECORD DEFINE z RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(30), cantidad DECIMAL(12,2), precio DECIMAL(12,3), monto_fact DECIMAL(12,3) END RECORD DEFINE cantidad_p INTEGER, i,cod_f SMALLINT DEFINE c_cajas,bonifica INTEGER DEFINE tot_b,tot_n,tot_m,peso_n,medida,peso_b DECIMAL(12,2), ch_fech CHAR(20) DEFINE porciento DECIMAL(8,3) DEFINE valor_porc DECIMAL (12,2) DEFINE normal,doce,negras,negras_off,doble CHAR(2) DEFINE rnc CHAR(10) DEFINE nombre_vend,apellido_vend CHAR(15) DEFINE comprimido,comprimido_of CHAR(1) DEFINE presenta LIKE iptb00010.conversion OUTPUT TOP MARGIN 0 PAGE LENGTH 66 LEFT MARGIN 0 ORDER BY x.factura,z.cod_n,z.cod_sec FORMAT BEFORE GROUP OF x.factura LET comprimido = ASCII 15 LET comprimido_of = ASCII 18 LET negras = ASCII 27, ASCII 69 LET negras_off = ASCII 27, ASCII 70 LET doble = ASCII 14 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 SELECT num_rnc INTO rnc FROM vetb00004 WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente AND status_t IS NULL PRINT normal,comprimido_of SKIP 12 LINE IF x.ventas = "1" THEN PRINT COLUMN 4, negras,"SENORES" END IF IF x.ventas = "2" THEN PRINT COLUMN 4, "SIR" END IF PRINT COLUMN 4, x.nombre," COD.#",x.tipo_cliente using "&&","-", x.sec_cliente using "&&&&" PRINT COLUMN 4, x.direccion CLIPPED,cliente_bas.telefono PRINT COLUMN 4, x.ciudad CLIPPED," RNC #",rnc, COLUMN 46, doble,"FACTURA ",x.factura using "&&&&&" SKIP 2 LINES PRINT comprimido IF x.cond_pago > 1 AND x.ventas = "1" THEN LET nombre_vend = p_adtb03.nom1_emp CLIPPED LET apellido_vend = p_adtb03.apell1_emp CLIPPED END IF IF x.ventas = "2" THEN LET nombre_vend = x.descrip LET apellido_vend = NULL END IF IF x.cond_pago = 1 THEN LET nombre_vend = x.descrip LET apellido_vend = NULL END IF SKIP 1 LINE PRINT COLUMN 3, x.orden using "<<<<<<", COLUMN 32, x.fecha_orden using "dd/mm/yyyy", COLUMN 60, condicion.descrip CLIPPED, COLUMN 80, "(",x.sec_vend using "&&&",") ",x.nombre_vend CLIPPED, COLUMN 124, x.fecha_factura using "dd/mm/yyyy" SKIP 4 LINE LET tot_n = 0 LET tot_b = 0 LET tot_m = 0 ON EVERY ROW IF z.cantidad <> 0 THEN LET p_iptb01.factor_conv = 0 LET p_iptb01.unidad = z.unidad_med SELECT a.factor_conv,a.unidad INTO p_iptb01.factor_conv,p_iptb01.unidad FROM iptb00001 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 IF p_iptb01.factor_conv IS NULL OR p_iptb01.factor_conv = 0 THEN LET p_iptb01.factor_conv = 1 LET p_iptb01.unidad = z.unidad_med END IF PRINT COLUMN 3, z.cod_n USING "&","-",z.cod_grupo USING "&","-", z.cod_tipo USING "&&","-",z.cod_sec USING "&&&", COLUMN 12, z.cantidad USING "###,###.###"," ", z.unidad_med CLIPPED, COLUMN 31, z.cantidad/p_iptb01.factor_conv USING "###,###,###", COLUMN 46, z.descrip_esp CLIPPED, COLUMN 111, z.precio USING "###,###.###", COLUMN 125, z.monto_fact USING "##,###,###.##" END IF AFTER GROUP OF x.factura # Impresion de informaciones que pertenecen a facturas de exportacion IF x.ventas = "2" THEN IF x.nombre_desc IS NOT NULL THEN PRINT COLUMN 124,"--------------" PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 124, x.sub_total using "###,###,###.##" END IF IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT", COLUMN 124, x.desc_valor using "###,###,###.##" END IF PRINT COLUMN 124, "--------------" PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.", COLUMN 124, x.total_fact using "###,###,###.##" PRINT COLUMN 124, "______________" PRINT COLUMN 124, "--------------" LET ch_fech = x.fecha_embarque using "ddd, mmm. dd, yyyy" LET ch_fech = upshift(ch_fech) PRINT COLUMN 47, "INLAND FREIGHT : COLLECT" PRINT COLUMN 47, "INSURANCE : TO BE COVERED BY CUSTOMER" PRINT COLUMN 47, "TO BE SHIPPED : ", ch_fech END IF # Impresion de datos que concierne solamente a tipos de facturas locales IF x.ventas = "1" THEN PRINT COLUMN 124, "--------------" PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 124, x.sub_total using "###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DESCUENTO", COLUMN 124, x.desc_valor using "###,###,###.##" END IF PRINT COLUMN 124, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 124, x.total_fact - x.itbi using "###,###,###.##" IF x.porc_itbi > 0 THEN PRINT COLUMN 78, x.porc_itbi using "###.##","%"," ITBI", COLUMN 124, x.itbi using "###,###,###.##" END IF PRINT COLUMN 124, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 124, x.total_fact using "###,###,###.##" PRINT COLUMN 124, "==============" END IF PRINT comprimido_of #SKIP 8 LINE PAGE TRAILER PRINT doce,comprimido_of LET obs1=observacion[1,50] LET obs2=observacion[51,101] LET obs3=observacion[102,152] LET obs4=observacion[152,180] PRINT COLUMN 3, obs1 PRINT COLUMN 3, obs2 PRINT COLUMN 3, obs3 PRINT COLUMN 3, obs4 PRINT COLUMN 4, "NOMBRE: ",x.nombre_tran PRINT COLUMN 4, "CEDULA: ",p_cedula using "&&&&&&&&&", " SERIE: ",p_serie using "&&&" PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp SKIP 2 LINES PRINT COLUMN 4, "-------------------" PRINT COLUMN 4, "FIRMA TRANSPORTISTA" END REPORT FUNCTION veprfu001() DEFINE pagos RECORD documento LIKE vetb00002.factura, detalle CHAR(30), factura LIKE vetb00002.factura, cheque_no LIKE cctb00001.num_cheque, banco LIKE cctb00001.banco, valor_cheque DECIMAL(12,2), valor_efectivo DECIMAL (12,2) END RECORD OPEN WINDOW captura AT 7,12 WITH FORM "vefmwd013" ATTRIBUTE (BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST) INPUT BY NAME pagos.* BEFORE FIELD factura LET pagos.factura = fact_gral.factura AFTER FIELD detalle IF pagos.detalle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD detalle END IF AFTER FIELD factura IF pagos.factura IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD factura ELSE SELECT a.fecha_factura,a.tipo_cliente,a.sec_cliente,b.nombre, a.neto,b.cod_provincia,a.sub_total,a.monto_itbi INTO fact_gral.fecha_factura,fact_gral.tipo_cliente, fact_gral.sec_cliente,fact_gral.nombre,fact_gral.total_fact, codigo_provincia,fact_gral.sub_total,fact_gral.itbi FROM vetb00002 a,vetb00004 b WHERE a.factura = pagos.factura AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.status_t IS NULL 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 END IF LET fact_gral.factura = pagos.factura BEFORE FIELD documento LET pagos.documento = 0 SELECT ult_recibo INTO pagos.documento FROM cctb00003 WHERE tipo_doc = "PC" IF pagos.documento IS NULL THEN LET pagos.documento = 0 END IF LET pagos.documento = pagos.documento + 1 DISPLAY BY NAME pagos.documento #NEXT FIELD detalle AFTER FIELD banco LET descrip1 = NULL LET descrip2 = NULL IF pagos.banco IS NOT NULL THEN SELECT nombre_bc,localidad INTO descrip1,descrip2 FROM bancos WHERE cod_banco = pagos.banco IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD banco END IF END IF DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD) AFTER FIELD valor_cheque IF pagos.valor_cheque IS NOT NULL THEN LET pagos.valor_efectivo = fact_gral.total_fact - pagos.valor_cheque ELSE LET pagos.valor_efectivo = fact_gral.total_fact END IF DISPLAY BY NAME pagos.valor_efectivo AFTER INPUT IF int_flag THEN LET int_flag = FALSE RETURN END IF END INPUT LET p_fecha_ven = "01/01/01" LET fact_gral.total_fact = fact_gral.total_fact * -1 IF fact_gral.total_fact IS NULL THEN LET fact_gral.total_fact = 0 END IF IF fact_gral.total_fact <> 0 THEN DELETE FROM cctb00001 WHERE num_doc = pagos.documento AND tipo_doc = "PC" INSERT INTO cctb00001 VALUES (NULL,fact_gral.cod_cia,"PC",pagos.documento, fact_gral.tipo_cliente,fact_gral.sec_cliente,NULL, fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven, fact_gral.factura,pagos.cheque_no,pagos.banco, fact_gral.total_fact,pagos.valor_efectivo,pagos.valor_cheque, 0,0,NULL,USER,CURRENT,NULL, NULL) LET fact_gral.total_fact = fact_gral.total_fact * -1 START REPORT volante TO "C:\\RECIBO" OUTPUT TO REPORT volante(fact_gral.*,pagos.*,descrip1,descrip2) FINISH REPORT volante RUN "TYPE C:\\RECIBO > LPT3" UPDATE cctb00003 SET ult_recibo = pagos.documento WHERE tipo_doc = "PC" CLOSE WINDOW captura END IF END FUNCTION REPORT volante (x,y,t,t1) DEFINE y RECORD documento LIKE vetb00002.factura, detalle CHAR(30), factura LIKE vetb00002.factura, cheque_no LIKE cctb00001.num_cheque, banco LIKE cctb00001.banco, valor_cheque DECIMAL(12,2), valor_efectivo DECIMAL (12,2) END RECORD DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas, zona LIKE vetb00002.zona, nombre_tipo CHAR(11), factura LIKE vetb00002.factura, fecha_factura LIKE vetb00002.fecha_factura, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(50), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, nombre_desc CHAR(30), cond_pago LIKE vetb00002.cond_pago, descrip CHAR(30), orden LIkE vetb00002.orden, fecha_orden LIKE vetb00002.fecha_orden, conduce LIKE vetb00002.conduce, fecha_conduce LIKE vetb00002.fecha_conduce, porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, nombre_vend CHAR(30), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE vetb00023.cod_tarifa, nombre_tran CHAR(30), fecha_embarque LIKE vetb00002.fecha_embarque, placa_transp LIKE iptb00006.placa, sub_total DECIMAL(12,2), desc_valor DECIMAL(12,2), itbi DECIMAL(12,2), total_fact DECIMAL(12,2) END RECORD DEFINE t,t1 CHAR(30) DEFINE doble CHAR(1) DEFINE comp_off,negras,negras_of,italic,italic_of CHAR(2) DEFINE solicitante CHAR(30) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 FORMAT PAGE HEADER LET negras = ASCII 27, ASCII 69 LET negras_of = ASCII 27, ASCII 70 LET doble = ASCII 14 LET italic = ASCII 27, ASCII 52 LET italic_of = ASCII 27, ASCII 53 LET comp_off = ASCII 18 PRINT COLUMN 70,comp_off, ASCII 27, ASCII 80 PRINT COLUMN 70,doble, y.documento using "&&&&&&" PRINT COLUMN 5, negras,p_companias.nombre CLIPPED,negras_of, COLUMN 72, today using "dd/mm/yyyy" PRINT COLUMN 5, p_companias.direccion CLIPPED," TEL. ",p_companias.telefono SKIP 1 LINE PRINT COLUMN 15, italic,"RECIBO DE INGRESO" SKIP 2 LINE LET valor_orig = x.total_fact LET valor_letras = NULL CALL convierte() SELECT solicitante_s INTO solicitante FROM vetb00006 WHERE tipo_cliente_s = x.tipo_cliente AND sec_cliente_s = x.sec_cliente AND status_t IS NULL PRINT COLUMN 5, "RECIBIMOS DE: ",negras,y.detalle,negras_of, COLUMN 40, "ESTABLECIMIENTO: ",negras,x.nombre,negras_of PRINT COLUMN 5, "DIRECCION: ",negras,x.direccion,negras_of PRINT COLUMN 5, "LOCALIDAD: ",negras,x.ciudad,negras_of PRINT COLUMN 5, "LA SUMA DE: ", negras,valor_letras clipped,negras_of#, #COLUMN 56, "RD$ ",negras,x.total_fact using "###,###,###.##",negras_of PRINT COLUMN 5, "VALOR RECIBIDO: ", COLUMN 25,"EN EFECTIVO: ",negras,y.valor_efectivo using "##,###,###.##", negras_of, COLUMN 58, "EN CHEQUES: ",negras,y.valor_cheque using "###,###,###.##", negras_of PRINT COLUMN 5, "CHEQUE NO: ",negras,y.cheque_no,negras_of,"BANCO: ",negras,t clipped, negras_of PRINT COLUMN 5, "LOCALIDAD: ",negras,t1 clipped ,negras_of SKIP 1 LINE PRINT COLUMN 1, "------------------------------------------------------------------------------" PRINT COLUMN 5, "FECHA", COLUMN 20, "FACTURA", COLUMN 39, "VALOR FACTURA", COLUMN 60, "NETO COBRADO" PRINT COLUMN 1, "------------------------------------------------------------------------------" SKIP 1 LINE PRINT COLUMN 3, x.fecha_factura using "dd/mm/yyyy", COLUMN 20, x.factura using "&&&&&&" , COLUMN 38, x.sub_total - x.desc_valor + x.itbi using "###,###,###.##", COLUMN 58, x.total_fact using "###,###,###.##" PRINT italic_of END REPORT FUNCTION anular() OPEN WINDOW anula AT 7,5 WITH FORM "vefmwd006" ATTRIBUTE (BORDER, COMMENT LINE LAST - 1,PROMPT LINE LAST,FORM LINE FIRST + 1) LABEL vuelve: INPUT BY NAME p_fact_no AFTER FIELD p_fact_no SELECT UNIQUE fecha_factura,orden,tipo_cliente,sec_cliente,neto INTO fact_gral.fecha_factura,fact_gral.orden,fact_gral.tipo_cliente, fact_gral.sec_cliente,fact_gral.total_fact 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 SELECT a.nombre INTO fact_gral.nombre FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente DISPLAY BY NAME fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.total_fact,fact_gral.nombre ATTRIBUTE(blue) 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,31,32) 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 UPDATE cctb00001 SET status_t = "E", us_mod = USER, fech_mod = CURRENT WHERE aplica_a = p_fact_no AND tipo_doc = "PC" # ANULACION DE LAS SERIES IF fact_gral.ventas = "1" THEN LET p_codigo = 30 ELSE LET p_codigo = 31 END IF UPDATE vetb00042 set status_t = "E", us_mod = user, fech_mod = current WHERE factura = p_fact_no AND cod_mov = p_codigo 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 FUNCTION precios() # AQUI HAY QUE BUSCAR EL PRECIO PARA CALCULAR POR CLIENTE LET p_costos1 = 0 SELECT precio INTO p_costos1 FROM vetb00025 WHERE ventas = fact_gral.ventas AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente AND 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 status_t IS NULL IF STATUS = NOTFOUND THEN SELECT precio INTO p_costos1 FROM vetb00025 WHERE ventas = fact_gral.ventas AND tipo_cliente IS NULL AND sec_cliente IS NULL AND 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 status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 85 CALL msg(numero_msg) LET verdad = "S" END IF {IF fact_det[curr].cod_n = 2 THEN LET verdad = "N" END IF} END IF LET fact_det[curr].precio = p_costos1 END FUNCTION FUNCTION ver_desc() OPEN WINDOW descuentos AT 10,5 WITH FORM "vefmwd007" ATTRIBUTE (BORDER,FORM LINE FIRST +1,COMMENT LINE LAST -1,MESSAGE LINE LAST) CALL set_count(h-1) DISPLAY ARRAY descuenta TO s_desc.* CLOSE WINDOW descuentos END FUNCTION FUNCTION detalles() OPEN WINDOW wdetalle AT 12,2 WITH FORM "vefmwd075" ATTRIBUTE(BORDER,FORM LINE FIRST +1) INPUT BY NAME observacion WITHOUT DEFAULTS CLOSE WINDOW wdetalle END FUNCTION FUNCTION cantidad_desp(forden,fcod_n,fcod_tipo,fcod_grupo,fcod_sec) DEFINE forden INTEGER, fcod_n,fcod_tipo,fcod_grupo,fcod_sec SMALLINT SELECT SUM(b.cantidad) INTO cant_vend FROM vetb00002 a, vetb00003 b WHERE a.orden = forden AND a.fecha_factura > "31122000" AND a.factura = b.factura AND b.cod_n = fcod_n AND b.cod_tipo = fcod_tipo AND b.cod_grupo = fcod_grupo AND b.cod_sec = fcod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET cant_vend = 0 END IF END FUNCTION