GLOBALS "..\\PROYECTO\\vedir\\veprgb000.4gl" DEFINE pperfil, codigo_provincia, tipo_fact, cod_fact,pcod_transp, ano_act,ano_fe,psec_transp,pcodcia SMALLINT, pcontroloutlet,tipo_f,ventas CHAR(2), hoy DATE,num_rnc VARCHAR(11), ch_encabeza, ch_itbi, ch_servicios, cliente_ncf, ncf_cliente CHAR(1), --genera_ncf CHAR(3), descripcion_doc VARCHAR(100), --codigo VARCHAR(15), proforma, aplaca_transp VARCHAR(20), pcotizacion,cuenta_arr,factura_xc,xdocumento_almacen,factura_old,idz INTEGER, xdireccion_proyecto, pubicacion, t_arr VARCHAR(100), credito,valor,valor1,balance,porce,itbis_o, valor_desc, cant_prod,cant_vend DECIMAL(12,2), ch_balance CHAR(14), documento_ref,accesso CHAR(15), porcentaje_n DEC(8,2), exito,execede BOOLEAN, tot_porc DECIMAL(8,3), observacion CHAR(180), genera_ncf CHAR(3), pdocumento_ref VARCHAR(25), obs1,obs2,obs3 CHAR(50),obs4 CHAR(30) DEFINE prtb09 RECORD LIKE prtb00009.* FUNCTION autoFacturacion(datos,movi2) DEFINE datos RECORD cod_cia SMALLINT, num_doc INT, fecha DATE, fact_no char(10), conduce_no char(10), cod_sp SMALLINT, cod_sp_sec SMALLINT, cod_transp SMALLINT, sec_transp SMALLINT, placa char(10), cod_tarifa SMALLINT, cod_mov SMALLINT, detalle varchar(255), area SMALLINT, cod_n INT, cod_grupo INT, cod_tipo INT, cod_sec INT, cantidad_1 decimal(12, 5), cantidad_2 decimal(12, 5), bodega SMALLINT, us_crea char(50), fech_crea date, num_req INT, codigo_bloque char(25), sec_vend SMALLINT, direccion char(500), num_oc INT, bodega_d SMALLINT, num_Doc_retrabajo INT, departamento INT, factura INT, cotizacion_no INT END RECORD DEFINE movi2 DYNAMIC ARRAY OF RECORD area SMALLINT, cod_n LIKE intb00003.cod_n, cod_grupo LIKE intb00003.cod_grupo, cod_tipo LIKE intb00003.cod_tipo, cod_sec LIKE intb00003.cod_sec, cantidad_1 DEC(12,5), cantidad_2 DEC(12,5), cantidad_p DEC(12,5), unidad_med LIKE iptb00002.unidad_med, descrip_esp CHAR(80), existencia DEC(12,5), disponible DEC(12,5), codigo_bloque CHAR(15), id_kit INT END RECORD DEFINE movi3 DYNAMIC ARRAY OF RECORD precio DEC(12,5), descuento DEC(12,5) END RECORD LET ch_itbi = "N" LET ch_encabeza = "S" LET codigodgii = NULL LET descripcion_ncf=NULL LET ch_servicios = 'N' #DATOS DE LA EMPRESA SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax, b.rnc,a.bodega,a.cod_perfil INTO localidad,sucnombre,p_companias.direccion,p_companias.direccion1, p_companias.telefono,p_companias.fax,p_companias.rnc,fact_gral.bodega,pperfil FROM seg0001 a,sucursales b,vetb00020 c WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia DISPLAY "query 1: ", localidad,sucnombre,p_companias.direccion,p_companias.direccion1, p_companias.telefono,p_companias.fax,p_companias.rnc,fact_gral.bodega,pperfil SET CONNECTION "SQL_C" SELECT a.controlOutlet,b.num_emp,b.tipo_cliente,b.sec_cliente INTO pcontroloutlet,fact_gral.sec_vend,fact_gral.tipo_cliente,fact_gral.sec_cliente FROM seg0003 a,seg0001 b WHERE a.usuario = usuarios AND a.usuario = b.usuario DISPLAY "query 2: ",pcontroloutlet,fact_gral.sec_vend,fact_gral.tipo_cliente,fact_gral.sec_cliente IF pcontroloutlet = 'SI' THEN LET fact_gral.cod_transp = 12 LET fact_gral.sec_transp = 8 LET ch_encabeza = 'N' --DISPLAY BY NAME ch_encabeza SELECT a.bodega INTO fact_gral.bodega FROM seg0001 a WHERE a.usuario = usuarios 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 DISPLAY "query 3: ", pcontroloutlet,fact_gral.sec_vend,fact_gral.tipo_cliente,fact_gral.sec_cliente ELSE IF pcontroloutlet <> "SI" THEN DISPLAY datos.cod_sp DISPLAY datos.cod_sp_sec SELECT a.codigodgii INTO codigodgii FROM vetb00004 a WHERE a.tipo_cliente = datos.cod_sp AND a.sec_cliente = datos.cod_sp_sec IF codigodgii IS NULL THEN LET ch_itbi = "N" ELSE LET ch_itbi = "S" END IF DISPLAY "query 4: ", codigodgii DISPLAY "query 4a: ", ch_itbi IF datos.cod_sp = 18 OR datos.cod_sp = 19 THEN LET ch_encabeza = "N" END IF END IF END IF SELECT a.dias,a.descrip INTO condicion.dias,condicion.descrip FROM vetb00012 a WHERE a.cond_pago = fact_gral.cond_pago DISPLAY "query 5: ",condicion.dias,condicion.descrip LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias IF pcontroloutlet <> 'SI' THEN IF ch_itbi ='S' THEN --CALL codigodgii(datos.cod_sp, datos.cod_sp_sec) RETURNING codigo SELECT a.codigodgii INTO codigodgii FROM vetb00004 a WHERE a.tipo_cliente = datos.cod_sp AND a.sec_cliente = datos.cod_sp_sec DISPLAY "query 6: ",codigodgii SELECT a.ncf, a.ventas INTO genera_ncf, ventas FROM vetb00060 a WHERE a.tipo_cliente = datos.cod_sp DISPLAY "query 6a: ",genera_ncf --LET genera_ncf = fgl_winquestion("NCF","DESEA GENERAR FACTURA CON NCF?","YES","NO|YES","QUESTION",0) END IF ELSE SELECT a.cod_zona INTO fact_gral.zona FROM intb00009 a WHERE a.cod_bodega = fact_gral.bodega DISPLAY "query 7: ",fact_gral.zona 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 DISPLAY "query 8: ",fact_gral.nombre,credito,codigo_provincia,cliente_bas.telefono SELECT unique ISNULL(descrip,'NO TIENE') INTO descrip1 FROM vetb00008 WHERE cod_zona = CAST(fact_gral.zona as SMALLINT) DISPLAY "query 9: ",descrip1 END IF --AFTER FIELD bodega IF pcontroloutlet = "SI" THEN --SELECT a.bodega FROM iptb00048 a WHERE a.bodega = fact_gral.bodega AND a.usuario = usuarios --IF STATUS = NOTFOUND THEN -- CALL msg(503) -- NEXT FIELD bodega --END IF SELECT a.cod_zona INTO fact_gral.zona FROM intb00009 a WHERE a.cod_bodega = fact_gral.bodega DISPLAY "query 9: ", fact_gral.zona --SELECT unique ISNULL(descrip,'NO TIENE') INTO descrip1 FROM vetb00008 --WHERE cod_zona = CAST(fact_gral.zona as SMALLINT) --DISPLAY "query 10: ", descrip1 --DISPLAY BY NAME fact_gral.zona,descrip1 END IF --AFTER FIELD codigodgii IF codigodgii IS NOT NULL THEN SET CONNECTION "SQL_E" SELECT UNIQUE a.itbis INTO ch_itbi FROM vetb00071 a WHERE a.tipo_doc = "FT" and a.codigo_dgii = codigodgii AND a.sucid = localidad AND disponible = "S" DISPLAY "query 10: ", ch_itbi END IF IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi=0 END IF SET CONNECTION "SQL_C" LET fact_gral.ventas = ventas IF fact_gral.ventas = "1" THEN LET tipo_f = "FT" END IF IF fact_gral.ventas = "2" THEN LET tipo_f = "FE" END IF IF fact_gral.ventas = "3" THEN LET tipo_f = "FE" END IF IF fact_gral.ventas = "4" THEN LET tipo_f = "FE" END IF DISPLAY "fact_gral.ventas: ",fact_gral.ventas DISPLAY "tipo_f: ",tipo_f SELECT MAX(num_doc) INTO fact_gral.conduce FROM iptb00006 DISPLAY "bodega:", datos.bodega DISPLAY "fact_gral.conduce:", fact_gral.conduce LET fact_gral.tipo_cliente = datos.cod_sp LET fact_gral.sec_cliente = datos.cod_sp_sec LET fact_gral.orden = datos.num_oc LET fact_gral.fecha_conduce = datos.fecha LET fact_gral.cod_transp = datos.cod_transp LET fact_gral.sec_transp = datos.sec_transp LET fact_gral.placa_transp = datos.placa DISPLAY "tipo_cliente: ",fact_gral.tipo_cliente DISPLAY "sec_cliente: ",fact_gral.sec_cliente DISPLAY "orden: ",fact_gral.orden DISPLAY "fecha_conduce: ",fact_gral.fecha_conduce DISPLAY "cod_transp: ",fact_gral.cod_transp DISPLAY "sec_transp: ",fact_gral.sec_transp DISPLAY "placa_transp: ",fact_gral.placa_transp SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono,a.num_rnc INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia, cliente_bas.telefono,cliente_bas.num_rnc FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente DISPLAY "************************************" SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia --SELECT unique descrip INTO descrip1 FROM vetb00008 --WHERE cod_zona = CAST(fact_gral.zona as SMALLINT) DISPLAY "nombre :", fact_gral.nombre DISPLAY "credito :",credito DISPLAY "zona :",fact_gral.zona DISPLAY "codigo_provincia :",codigo_provincia DISPLAY "telefono :",cliente_bas.telefono DISPLAY "num_rnc :",cliente_bas.num_rnc DISPLAY "ciudad :",fact_gral.ciudad # BUSCA EL VENDEDOR LET fact_gral.sec_vend = datos.sec_vend -- SELECT a.sec_vend INTO fact_gral.sec_vend FROM prtb00012 a -- WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND -- a.num_oc = fact_gral.orden -- -- IF STATUS = NOTFOUND THEN -- SELECT a.sec_vend INTO fact_gral.sec_vend FROM vetb00028 a -- WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente -- END IF -- # CONTROL DE REPETICION DE CONDUCES SELECT UNIQUE a.conduce FROM vetb00002 a WHERE a.conduce = fact_gral.conduce AND a.ventas = fact_gral.ventas AND a.fecha_factura > "01/01/2009" AND a.bodega = fact_gral.bodega AND a.status_t IS NULL IF codigodgii IS NOT NULL THEN IF ch_itbi = "S" THEN LET cliente_ncf = "N" SELECT a.ncf INTO cliente_ncf FROM vetb00060 a WHERE a.tipo_cliente = fact_gral.tipo_cliente IF cliente_ncf = "S" THEN DISPLAY "cliente_ncf: ",cliente_ncf SET CONNECTION "SQL_E" --LET codigodgii = NULL LET descripcion = NULL CALL tipoFact('FT', codigodgii) RETURNING descripcion,fecha_vencimiento DISPLAY "codigodgii: ", codigodgii DISPLAY "descripcion: ", descripcion DISPLAY "fecha_vencimiento: ", fecha_vencimiento SET CONNECTION "SQL_C" END IF END IF END IF IF pcontroloutlet = "SI" THEN LET fact_gral.ventas = 1 END IF LET fact_gral.cod_cia = datos.cod_cia DISPLAY "fact_gral.cod_cia:", fact_gral.cod_cia DISPLAY "fact_gral.ventas:", fact_gral.ventas # BUSCA EL CODIGO DEL MOVIMIENTO SELECT UNIQUE a.cod_mov INTO p_codigo FROM vetb00060 a WHERE a.ventas = fact_gral.ventas LET tipo_fact = p_codigo IF fact_gral.ventas = "1" THEN LET tipo_f = "FT" ELSE IF fact_gral.ventas = "2" THEN LET tipo_f = "FE" END IF IF fact_gral.ventas = "3" THEN LET tipo_f = "FE" END IF END IF SELECT prima INTO fact_gral.prima_us FROM vetb00019 WHERE disponible = "S" IF fact_gral.tipo_cliente = 23 OR fact_Gral.tipo_cliente = 24 THEN LET proforma = "PROFORMA" ELSE LET proforma="CONDUCE" END IF IF fact_gral.fecha_factura IS NULL THEN LET fact_gral.fecha_factura = TODAY END IF LET p_fechas = fact_gral.fecha_factura LET hoy = fact_gral.fecha_factura --CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera DISPLAY "proforma: ", proforma DISPLAY "fact_gral.sec_cliente: ",fact_gral.sec_cliente DISPLAY "bandera: ",bandera DISPLAY "fact_gral.sec_cliente: ",fact_gral.sec_cliente DISPLAY "fact_gral.tipo_cliente: ",fact_gral.tipo_cliente SELECT a.nombre,a.limite_credito,a.cod_zona,a.cod_provincia,a.telefono INTO fact_gral.nombre,credito,fact_gral.zona,codigo_provincia, cliente_bas.telefono FROM vetb00004 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente DISPLAY "fact_gral.nombre: ",fact_gral.nombre DISPLAY "fact_gral.zona: ", fact_gral.zona DISPLAY "credito: ", credito DISPLAY "codigo_provincia: ", codigo_provincia DISPLAY "cliente_bas.telefono: ",cliente_bas.telefono LET pcotizacion = NULL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL LET xdireccion_proyecto = NULL SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc FROM vetb00050 a WHERE a.cotizacion_no = pcotizacion DISPLAY "fact_gral.nombre :", fact_gral.nombre DISPLAY "fact_gral.direccion :",fact_gral.direccion DISPLAY "xdireccion_proyecto :",xdireccion_proyecto DISPLAY "num_rnc :",num_rnc SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia DISPLAY "fact_gral.ciudad: ", fact_gral.ciudad #CONTROL TIPO DE CLIENTES MONEDA { SELECT UNIQUE a.ventas FROM vetb00060 a WHERE a.ventas = fact_Gral.ventas AND a.tipo_cliente = fact_gral.tipo_cliente SELECT unique descrip INTO descrip1 FROM vetb00008 WHERE cod_zona = CAST(fact_gral.zona as smallint) } # BUSCA EL VENDEDOR SOLO SI LA FACTURA NO ES PARA EL OUTLET SELECT a.sec_vend INTO fact_gral.sec_vend FROM prtb00012 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente AND a.num_oc = fact_gral.orden IF STATUS = NOTFOUND THEN SELECT a.sec_vend INTO fact_gral.sec_vend FROM vetb00028 a WHERE a.tipo_cliente = fact_gral.tipo_cliente AND a.sec_cliente = fact_gral.sec_cliente END IF 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","AV","AP") 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 = "AV" 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 "pcontroloutlet: ",pcontroloutlet DISPLAY "fact_gral.ventas: ",fact_gral.ventas DISPLAY "fact_gral.sec_vend: ",fact_gral.sec_vend DISPLAY "fact_gral.cod_transp: ",fact_gral.cod_transp --BEFORE FIELD nombre IF pcontroloutlet <> "SI" THEN --NEXT FIELD porc_desc DISPLAY "sali" select a.cond_pago, sum(b.porc_desc) as porc_desc INTO fact_gral.cond_pago from vetb00050 a inner join vetb00051 b on a.cotizacion_no = b.cotizacion_no where a.cotizacion_no = datos.cotizacion_no group by a.cond_pago, b.porc_desc 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 END IF LET pubicacion = NULL LET documento_ref = NULL SELECT UNIQUE a.fecha_oc,a.ubicacion,a.nombre_file, a.cond_pago,b.descrip,b.dias,a.cotizacion_no INTO fact_gral.fecha_orden,pubicacion,documento_ref, fact_gral.cond_pago,condicion.descrip,condicion.dias, pcotizacion FROM prtb00012 a,vetb00012 b 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.cond_pago = b.cond_pago AND a.status_t IS NULL END IF IF fact_gral.ventas = "1" THEN select sum(b.porc_desc) as porc_desc INTO fact_gral.porc_desc from vetb00050 a inner join vetb00051 b on a.cotizacion_no = b.cotizacion_no where a.cotizacion_no = datos.cotizacion_no group by a.cond_pago, b.porc_desc END IF DISPLAY "nombre_tran :",fact_gral.nombre_tran DISPLAY "p_cedula :",p_cedula DISPLAY "p_serie :",p_serie LET pcod_transp = fact_gral.cod_transp LET psec_transp = fact_gral.sec_transp LET fact_gral.cod_tarifa = datos.cod_tarifa LET fact_gral.fecha_factura = hoy # No permite que el usuario introduzca un ano que no corresponda al actual LET ano_act = year(TODAY) DISPLAY "fecha_factura: ",fact_gral.fecha_factura DISPLAY "ano_act: ",ano_act DISPLAY "requisicion: ",datos.num_req IF pcontroloutlet <> "SI" THEN SELECT a.dias INTO condicion.dias FROM vetb00012 a WHERE a.cond_pago = fact_gral.cond_pago LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias LET porcentaje_n = 0 SELECT a.porc_negocio INTO porcentaje_n FROM vetb00086 a WHERE a.cotizacion_no = pcotizacion IF STATUS = NOTFOUND THEN LET porcentaje_n = 0 END IF END IF SELECT a.porc_negocio INTO porcentaje_n FROM vetb00086 a WHERE a.cotizacion_no = pcotizacion IF STATUS = NOTFOUND THEN LET porcentaje_n = 0 END IF LET p_fecha_ven = fact_gral.fecha_factura + condicion.dias DISPLAY "condicion.dias:",condicion.dias DISPLAY "porcentaje_n :",porcentaje_n --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 OR fact_gral.fecha_factura > TODAY THEN LET fact_gral.fecha_factura = TODAY END IF --CALL prd(fact_gral.fecha_factura,usuarios) RETURNING bandera --IF bandera = 1 THEN -- LET bandera = 0 -- NEXT FIELD fecha_factura --END IF DISPLAY "p_fecha_ven: ",p_fecha_ven DISPLAY "fact_gral.ventas: ",fact_gral.ventas # CONTROL LOCALIDAD VENDEDOR SELECT a.sec_vend FROM vetb00084 a WHERE a.sec_vend = fact_gral.sec_vend IF STATUS = NOTFOUND THEN SELECT a.num_emp FROM adtb00003 WHERE a.num_emp = fact_gral.sec_vend END IF IF ch_itbi = 'N' THEN LET fact_gral.porc_itbi=0 END IF SET CONNECTION "SQL_C" IF pcontroloutlet <> "SI" THEN IF fact_gral.orden IS NOT NULL THEN LET pubicacion = NULL LET documento_ref = NULL SELECT UNIQUE a.fecha_oc,a.ubicacion,a.nombre_file, a.cond_pago,b.descrip,b.dias,a.cotizacion_no INTO fact_gral.fecha_orden,pubicacion,documento_ref,fact_gral.cond_pago, condicion.descrip,condicion.dias,pcotizacion FROM prtb00012 a,vetb00012 b 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.cond_pago = b.cond_pago AND a.status_t IS NULL END IF 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" LET itbis_o = fact_gral.itbi IF porcentaje_n > 0 THEN LET fact_gral.porc_itbi = fact_gral.porc_itbi * (porcentaje_n /100) END IF 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.prima_us = NULL ELSE IF fact_gral.ventas = "3" THEN 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 tipo_fact = 31 LET tipo_f = "FE" END IF END IF END IF LET fact_gral.factura = 0 SELECT ult_factura INTO fact_gral.factura FROM vetb00001 LET fact_gral.factura = fact_gral.factura + 1 LET pcotizacion = NULL SELECT a.cotizacion_no INTO pcotizacion FROM prtb00012 a WHERE a.num_oc = fact_gral.orden AND a.status_t IS NULL LET xdireccion_proyecto = NULL SELECT a.nombre_cliente,a.direccion_cliente,a.direccion_proyecto,a.rnc INTO fact_gral.nombre,fact_gral.direccion,xdireccion_proyecto,num_rnc FROM vetb00050 a WHERE a.cotizacion_no = pcotizacion SELECT d.nombre_provincia INTO fact_gral.ciudad FROM vetb00020 d WHERE d.cod_provincia = codigo_provincia -- CALL detalles() 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 IF fact_gral.prima_us IS NULL THEN SELECT a.prima INTO fact_gral.prima_us FROM vetb00019 a WHERE a.disponible = "S" END IF DISPLAY "*************************************" DISPLAY "fact_gral.factura :",fact_gral.factura DISPLAY "pcotizacion :",pcotizacion DISPLAY "fact_gral.nombre :",fact_gral.nombre DISPLAY "fact_gral.direccion :",fact_gral.direccion DISPLAY "xdireccion_proyecto :",xdireccion_proyecto DISPLAY "num_rnc :",num_rnc DISPLAY "fact_gral.ciudad :",fact_gral.ciudad DISPLAY "fact_gral.prima_us :",fact_gral.prima_us DISPLAY "*************************************" DISPLAY "fact_gral.conduce:", fact_gral.conduce DISPLAY "p_codigo:", p_codigo DISPLAY "fact_gral.bodega:", fact_gral.bodega DISPLAY "datos.cotizacion_no:", datos.cotizacion_no #------------------------------------------- #-----------CONSOLIDADO--------------------- --SET CONNECTION "SQL_C" SELECT ult_factura INTO fact_gral.factura FROM vetb00001 LET fact_gral.factura = fact_gral.factura + 1 DISPLAY fact_Gral.factura DISPLAY usuarios IF fact_gral.factura IS NOT NULL THEN 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,documento,placa_transporte,bodega,cotizacion_no, tipo_factura,documento_ref,descripcion_documento,placa, nombre_cliente,direccion_cliente,telefono,rnc) 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,factura_e,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,usuarios,GETDATE(),NULL,NULL,documento_ref,fact_gral.placa_transp, fact_gral.bodega,pcotizacion,proforma,pdocumento_ref,descripcion_doc,fact_gral.placa_transp, fact_gral.nombre,fact_gral.direccion,cliente_bas.telefono,num_rnc) # INSERTA EL DETALLE DE LA FACTURA INSERT INTO vetb00048 VALUES (fact_gral.factura,observacion,NULL,usuarios,GETDATE(),null,NULL) # Actualiza la tabla control de la numeracion de la factura UPDATE vetb00001 SET ult_factura = fact_gral.factura,us_crea = usuarios ,fech_crea = GETDATE() UPDATE iptb00006 SET factura = fact_gral.factura WHERE num_doc = fact_gral.conduce AND cod_sp = fact_gral.tipo_cliente AND cod_sp_sec = fact_gral.sec_cliente AND bodega = fact_gral.bodega END IF DISPLAY "BUSCA AVANCE" CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,pcotizacion, fact_gral.total_fact,fact_gral.fecha_factura, fact_gral.sec_vend,localidad,fact_gral.factura,usuarios) # Actualizacion de la tabla de cuentas por cobrar DISPLAY "fact_gral.cond_pago: ",fact_gral.cond_pago IF fact_gral.cond_pago > 1 THEN INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig, fecha_ven,aplica_a,valor,monto_desc,us_crea,fech_crea,bodega,documento_ref,num_oc) VALUES (fact_gral.cod_cia,tipo_f,fact_gral.factura,fact_gral.tipo_cliente, fact_gral.sec_cliente,fact_gral.sec_vend,fact_gral.fecha_factura, p_fecha_ven,fact_gral.factura, fact_gral.total_fact,'0', SUSER_SNAME(),GETDATE(),fact_gral.bodega,pcotizacion,fact_gral.orden) IF pcontroloutlet = "SI" THEN CALL veprfu001() --CALL veconduce(fact_gral.*,fact_det,usuarios,clave,impresor,localidad,cliente_bas.telefono) RETURNING exito IF NOT exito THEN ROLLBACK WORK 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 DISPLAY "cant_vend: ",cant_vend DISPLAY "cant_prod: ",cant_prod IF cant_vend <> cant_prod THEN 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" DISPLAY "prtb09.detalle: ",prtb09.detalle END IF FOR idz = 1 TO movi2.getLength() IF movi2[idz].cod_n IS NOT NULL THEN select precio, porc_desc INTO movi3[idz].precio, movi3[idz].descuento from vetb00051 where area = movi2[idz].area AND cod_n = movi2[idz].cod_n AND cod_grupo = movi2[idz].cod_grupo AND cod_tipo = movi2[idz].cod_tipo AND cod_sec = movi2[idz].cod_sec AND cotizacion_no = datos.cotizacion_no IF movi2[idz].cantidad_1 < 0 THEN LET movi2[idz].cantidad_1 = movi2[idz].cantidad_1 * -1 END IF IF movi2[idz].cantidad_2 IS NULL THEN LET movi2[idz].cantidad_2 = 0 END IF INSERT INTO vetb00003 VALUES (fact_gral.cod_cia,fact_gral.factura,movi2[idz].area,movi2[idz].cod_n, movi2[idz].cod_grupo,movi2[idz].cod_tipo,movi2[idz].cod_sec, movi2[idz].cantidad_1,movi2[idz].cantidad_2,valor_desc, movi3[idz].precio,NULL,SUSER_SNAME(),GETDATE(),NULL,NULL, localidad,movi2[idz].id_kit) # Actualiza el campo placa cuando la factura es de exportacion IF fact_gral.ventas = 2 THEN UPDATE iptb00006 SET placa = fact_gral.placa_transp WHERE num_doc = fact_gral.conduce AND cod_mov = 31 END IF IF p_bonifica[idz] IS NULL THEN LET p_bonifica[idz] = 0 END IF IF opt4 = "N" or opt4 = "n" THEN LET p_bonifica[idz] = 0 END IF DISPLAY "movi2[idz].area :",movi2[idz].area DISPLAY "movi2[idz].cod_n :",movi2[idz].cod_n DISPLAY "movi2[idz].cod_grupo :",movi2[idz].cod_grupo DISPLAY "movi2[idz].cod_tipo :",movi2[idz].cod_tipo DISPLAY "movi2[idz].cod_sec :",movi2[idz].cod_sec DISPLAY "movi2[idz].cantidad :",movi2[idz].cantidad_1 DISPLAY "movi2[idz].precio :",movi3[idz].precio DISPLAY "movi2[idz].descuento :",movi3[idz].descuento DISPLAY "movi2[idz].cantidad_2 :",movi2[idz].cantidad_2 DISPLAY "movi2[idz].kit_id :",movi2[idz].id_kit END IF END FOR ### ============================== IMPRESION CONSOLIDADO============================= { DISPLAY "CALL defecto" CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia DISPLAY "start report" START REPORT imp_fact TO archivo FOR idz = 1 TO movi2.getLength() IF movi2[idz].cod_n IS NOT NULL AND movi2[idz].cod_grupo IS NOT NULL AND movi2[idz].cod_tipo IS NOT NULL AND movi2[idz].cod_sec IS NOT NULL AND movi2[idz].cantidad_1 IS NOT NULL AND movi2[idz].cantidad_1 > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_fact(fact_gral.*,movi2[idz].*,movi3[idz].*,tot_porc,p_bonifica[idz],cod_fact) END IF END FOR --DISPLAY nombre_m CLIPPED AT 1,1 FINISH REPORT imp_fact RUN imprime} #-> Valida si la factura realmente existe vg S�ado 24 de Marzo de 2001 SELECT DISTINCT a.factura FROM vetb00002 a WHERE a.factura = fact_gral.factura IF STATUS = NOTFOUND THEN DISPLAY "FACTURA NO EXISTE" END IF #------------------------- TERMINA SQL_C---------------------------------------------- # INSERTA EN EXTERIOR CALL verificaNCF(fact_gral.tipo_cliente) RETURNING ncf_cliente DISPLAY ncf_cliente DISPLAY "IMPRESION GRAFICA" IF ncf_cliente = "S" THEN DISPLAY "localidad: ", localidad IF localidad IS NULL THEN --CALL fgl_winmessage("ERROR","LOCALIDAD ESTA EN BLANCO","INFO") RETURN END IF LET kncf = NULL IF codigodgii IS NOT NULL THEN SET CONNECTION "SQL_E" LET factura_xc = fact_gral.factura # Control facturas NCF FOR idz = 1 TO movi2.getLength() IF movi2[idz].cod_n IS NOT NULL THEN CALL verifica_cantidad(movi2[idz].area,movi2[idz].cod_n,movi2[idz].cod_grupo,movi2[idz].cod_tipo, movi2[idz].cod_sec,movi2[idz].cantidad_1, fact_gral.orden) RETURNING execede IF NOT execede THEN CONTINUE FOR ELSE EXIT FOR END IF END IF END FOR DISPLAY "execede: ",execede IF NOT execede THEN SELECT a.ncf INTO kncf FROM vetb00073 a WHERE a.tipo_doc = "FT" AND a.codigo_dgii = codigodgii IF kncf IS NULL THEN LET kncf = 0 END IF LET kncf = kncf + 1 SELECT ult_factura INTO fact_gral.factura FROM vetb00001 WHERE sucid = localidad LET fact_gral.factura = fact_gral.factura + 1 UPDATE vetb00073 SET ncf = kncf,us_crea = usuarios,fech_crea = getdate() WHERE tipo_doc = 'FT' AND codigo_dgii = codigodgii UPDATE vetb00001 SET ult_factura = fact_gral.factura,us_crea = usuarios,fech_crea = GETDATE() WHERE sucid = localidad INSERT INTO vetb00072 VALUES(fact_gral.factura,"FT",codigodgii,kncf,usuarios,getdate(),localidad) 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,documento,placa_transporte,bodega,factura_c,sucid, nombre_cliente,direccion_cliente,direccion_proyecto,conduce_almacen,rnc) 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,pcotizacion,fact_gral.fecha_conduce, fact_gral.tipo_cliente,fact_gral.sec_cliente,factura_e,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,usuarios,GETDATE(),NULL,NULL,documento_ref,fact_gral.placa_transp, fact_gral.bodega,factura_xc,localidad,fact_gral.nombre,fact_gral.direccion, xdireccion_proyecto,fact_gral.conduce,num_rnc) # Actualizacion de la tabla de cuentas por cobrar CALL busca_avance(fact_gral.tipo_cliente,fact_gral.sec_cliente,pcotizacion, fact_gral.total_fact,fact_gral.fecha_factura, fact_gral.sec_vend,localidad,fact_gral.factura,usuarios) IF fact_gral.cond_pago > 1 THEN INSERT INTO cctb00001 (cod_cia,tipo_doc,num_doc,tipo_cliente,sec_cliente,cod_emp_sec,fecha_orig, fecha_ven, aplica_a,valor,monto_desc,us_crea,fech_crea,bodega,sucid,documento_ref,num_oc, factura_ext) VALUES (fact_gral.cod_cia,tipo_f,fact_gral.factura, fact_gral.tipo_cliente,fact_gral.sec_cliente, fact_gral.sec_vend,fact_gral.fecha_factura,p_fecha_ven, fact_gral.factura, fact_gral.total_fact,'0', usuarios,GETDATE(),fact_gral.bodega,localidad,pcotizacion, fact_gral.orden,factura_xc) 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 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 FOR idz = 1 TO movi2.getLength() IF movi2[idz].cantidad_2 IS NULL THEN LET movi2[idz].cantidad_2 = 0 END IF IF movi2[idz].cod_n IS NOT NULL THEN select precio, porc_desc INTO movi3[idz].precio, movi3[idz].descuento from vetb00051 where area = movi2[idz].area AND cod_n = movi2[idz].cod_n AND cod_grupo = movi2[idz].cod_grupo AND cod_tipo = movi2[idz].cod_tipo AND cod_sec = movi2[idz].cod_sec AND cotizacion_no = datos.cotizacion_no INSERT INTO vetb00003 VALUES (fact_gral.cod_cia,fact_gral.factura,movi2[idz].area,movi2[idz].cod_n, movi2[idz].cod_grupo,movi2[idz].cod_tipo, movi2[idz].cod_sec,movi2[idz].cantidad_1,movi2[idz].cantidad_2, valor_desc,movi3[idz].precio,NULL,usuarios,GETDATE(),NULL,NULL,localidad, movi2[idz].id_kit,movi2[idz].descrip_esp) IF movi2[idz].cantidad_1 > 0 THEN LET movi2[idz].cantidad_1 = movi2[idz].cantidad_1 * -1 END IF INSERT INTO iptb00006(cod_cia,num_doc,fecha,fact_no,conduce_no,cod_sp,cod_sp_sec,placa,cod_mov, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad_1,cantidad_2,bodega,us_crea,fech_crea) VALUES (fact_gral.cod_cia,fact_gral.factura,fact_gral.fecha_factura, fact_gral.factura,fact_gral.orden,fact_gral.tipo_cliente, fact_gral.sec_cliente,fact_gral.placa_transp, p_codigo,movi2[idz].cod_n,movi2[idz].cod_grupo, movi2[idz].cod_tipo,movi2[idz].cod_sec, movi2[idz].cantidad_1,movi2[idz].cantidad_1, localidad,usuarios,getdate()) IF movi2[idz].cantidad_1 < 0 THEN LET movi2[idz].cantidad_1 = movi2[idz].cantidad_1 * -1 END IF #Actualiza el campo placa cuando la factura es de exportacion IF fact_gral.ventas = 2 THEN UPDATE iptb00006 SET placa = fact_gral.placa_transp WHERE num_doc = fact_gral.conduce AND cod_mov = 31 END IF IF p_bonifica[idz] IS NULL THEN LET p_bonifica[idz] = 0 END IF IF opt4 = "N" or opt4 = "n" THEN LET p_bonifica[idz] = 0 END IF END IF END FOR FOR idz = 1 TO movi2.getLength() #IDENTIFICA EL PRODUCTO POR SU ORIGEN SELECT a.cod_cia INTO pcodcia FROM iptb00002 a WHERE a.cod_n = movi2[idz].cod_n AND a.cod_grupo = movi2[idz].cod_grupo AND a.cod_tipo = movi2[idz].cod_tipo AND a.cod_Sec = movi2[idz].cod_sec IF pcodcia = 1 OR pcodcia = 2 THEN #BUSCA DOCUMENTO SECUENCIA PRODUCCION SELECT a.num_doc INTO xdocumento_almacen FROM iptb00007 a WHERE cod_mov = 20 IF xdocumento_almacen IS NULL THEN LET xdocumento_almacen =0 END IF LET xdocumento_almacen=xdocumento_almacen +1 UPDATE iptb00007 SET num_doc = xdocumento_almacen WHERE cod_mov = 20 INSERT INTO iptb00006 (cod_cia,num_doc,fact_no,fecha,cod_mov,cod_n, cod_grupo,cod_tipo,cod_sec,cantidad_2, bodega,us_crea,fech_crea,cotizacion_no,num_oc) VALUES (fact_gral.cod_cia,xdocumento_almacen,fact_gral.factura, fact_gral.fecha_factura,20,movi2[idz].cod_n, movi2[idz].cod_grupo,movi2[idz].cod_tipo, movi2[idz].cod_sec,movi2[idz].cantidad_1,localidad,usuarios,getdate(),fact_gral.conduce, fact_gral.orden) END IF END FOR { LET r_filename = "veprmt022.4rp" LET r_output = "PDF" LET preview = 1 IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) LET HANDLER = fgl_report_commitCurrentSettings() -- commit changes END IF IF HANDLER IS NOT NULL THEN -- report engine was configured ok START REPORT imp_factura TO XML HANDLER HANDLER END IF FOR idz = 1 TO movi2.getLength() IF movi2[idz].cod_n IS NOT NULL AND movi2[idz].cod_grupo IS NOT NULL AND movi2[idz].cod_tipo IS NOT NULL AND movi2[idz].cod_sec IS NOT NULL AND movi2[idz].cantidad_1 IS NOT NULL AND movi2[idz].cantidad_1 > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_factura(fact_gral.*,movi2[idz].*,movi3[idz].*,tot_porc, p_bonifica[idz],cod_fact,kncf,codigodgii,descripcion,observacion,usuarios, fecha_vencimiento) END IF END FOR FINISH REPORT imp_factura} # AFECTA REGISTRO PARA LA PRODUCCION. FECHA 15/04/2018. POR JOHNNY SOTO ### IMPRESION FACTURA CON NCF SET CONNECTION "SQL_C" UPDATE vetb00002 SET factura_ext = fact_gral.factura WHERE factura = factura_xc AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente UPDATE cctb00001 SET factura_ext = fact_gral.factura WHERE num_doc = factura_xc AND tipo_Doc IN ('FE','FT') AND tipo_cliente = fact_gral.tipo_cliente AND sec_cliente = fact_gral.sec_cliente --CALL movi2.clear() LET fact_gral.itbi = 0 LET fact_gral.sub_total = 0 LET fact_gral.total_fact = 0 LET fact_gral.desc_valor = 0 INITIALIZE fact_Gral.* TO NULL END IF SET CONNECTION "SQL_E" LET r_filename = "veprmt022.4rp" LET r_output = "PDF" LET preview = 1 IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) LET HANDLER = fgl_report_commitCurrentSettings() -- commit changes END IF IF HANDLER IS NOT NULL THEN -- report engine was configured ok START REPORT imp_factura TO XML HANDLER HANDLER END IF FOR idz = 1 TO movi2.getLength() IF movi2[idz].cod_n IS NOT NULL AND movi2[idz].cod_grupo IS NOT NULL AND movi2[idz].cod_tipo IS NOT NULL AND movi2[idz].cod_sec IS NOT NULL AND movi2[idz].cantidad_1 IS NOT NULL AND movi2[idz].cantidad_1 > 0 THEN LET cod_fact = 1 OUTPUT TO REPORT imp_factura(fact_gral.*,movi2[idz].*,movi3[idz].*,tot_porc, p_bonifica[idz],cod_fact,kncf,codigodgii,descripcion,observacion,usuarios, fecha_vencimiento) END IF END FOR FINISH REPORT imp_factura END IF END IF END FUNCTION FUNCTION verificaNCF(tipo) DEFINE tipo SMALLINT, ncf CHAR(1) SELECT a.ncf INTO ncf FROM vetb00060 a WHERE a.tipo_cliente = tipo RETURN ncf END FUNCTION REPORT imp_factura(x,z,y,porciento,bonifica,cod_f,pncf,pcodigodgii,descripcion,observacion,usuarios,fecha_vencimiento) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas, zona CHAR(3), factura LIKE vetb00002.factura, bodega SMALLINT, conduce LIKE vetb00002.conduce, fecha_conduce DATE, fecha_factura DATE, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(80), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, cond_pago LIKE vetb00002.cond_pago, orden INT, fecha_orden DATE, porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, nombre_vend CHAR(60), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, nombre_tran CHAR(30), fecha_embarque DATE, 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, pncf INT, pcodigodgii CHAR(30), descripcion,descripcion_bodega VARCHAR(100), fecha_vencimiento DATE DEFINE z RECORD area SMALLINT, cod_n LIKE intb00003.cod_n, cod_grupo LIKE intb00003.cod_grupo, cod_tipo LIKE intb00003.cod_tipo, cod_sec LIKE intb00003.cod_sec, cantidad_1 DEC(12,5), cantidad_2 DEC(12,5), cantidad_p DEC(12,5), unidad_med LIKE iptb00002.unidad_med, descrip_esp CHAR(80), existencia DEC(12,5), disponible DEC(12,5), codigo_bloque CHAR(15), id_kit INT END RECORD DEFINE y RECORD precio DEC(12,5), descuento DEC(12,5) END RECORD, telefono char (30),celular char(15), descrip_cond CHAR(50), observacion VARCHAR(100) DEFINE punidad,conduce_alm 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,ch_ncf CHAR(20) DEFINE porciento DECIMAL(8,3) DEFINE valor_porc,monto_factura DECIMAL (12,2) DEFINE rnc CHAR(10) DEFINE nombre_vend,apellido_vend CHAR(15) DEFINE hora CHAR(5), marca,modelo CHAR(25), ldescuento DEC(12,2), p_companias RECORD LIKE companias.*, imagen BYTE, localidad SMALLINT, xconduce_almacen INT, xdireccion,filedestino,nombre_file,sucnombre,chventas,xbodega,direccion_sucursal VARCHAR(100), usuarios,codigo VARCHAR(50), simbolo VARCHAR(4), ch_fechavence VARCHAR(10), vimagen BOOLEAN, cliente_bas RECORD LIKE vetb00004.*, condicion RECORD LIKE vetb00012.*, ch_fecha VARCHAR(10) OUTPUT TOP MARGIN 0 PAGE LENGTH 66 LEFT MARGIN 0 ORDER BY x.factura FORMAT FIRST PAGE HEADER LET xconduce_almacen = x.conduce SELECT a.descripcion INTO descripcion_bodega FROM intb00009 a WHERE a.cod_bodega = x.bodega SELECT a.descrip INTO condicion.descrip FROM vetb00012 a WHERE a.cond_pago = x.cond_pago SELECT a.telefono,a.telex INTO cliente_bas.telefono,cliente_bas.telex FROM vetb00004 a WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente SELECT a.* INTO p_companias.* FROM companias a WHERE a.cod_comp = x.cod_cia SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.bodega INTO localidad,sucnombre,p_companias.direccion,p_companias.direccion1, p_companias.telefono,p_companias.fax,p_companias.rnc FROM seg0001 a,sucursales b,vetb00020 c WHERE a.usuario = usuarios AND a.sucid = b.sucid AND b.localidad = c.cod_provincia SELECT a.descripcion, a.simbolo INTO chventas,simbolo FROM vetb00060 a WHERE a.ventas = x.ventas SELECT a.descripcion INTO xbodega FROM intb00009 a WHERE a.cod_bodega = x.bodega LET conduce_alm = 0 SELECT a.conduce_almacen INTO conduce_alm FROM vetb00002 a WHERE a.factura = x.factura LET vimagen=TRUE LOCATE imagen IN MEMORY SELECT a.firmafactura,a.nombre_file_firma INTO imagen,nombre_file FROM seg0001 a WHERE a.usuario = usuarios LET filedestino = 'E:\\MARMOTECH\\test\\IMAGENES\\tmp\\',usuarios CLIPPED,nombre_file CLIPPED IF imagen IS NULL THEN LET vimagen=FALSE ELSE CALL imagen.writeFile(filedestino) CALL comprimeImagen(filedestino,' -resize 200x200 ') CALL imagen.readFile(filedestino) END IF AFTER GROUP OF x.factura LET telefono = NULL LET rnc = NULL LET tot_n = 0 LET tot_b = 0 LET tot_m = 0 ON EVERY ROW LET codigo = z.cod_n USING "&&&","-",z.cod_grupo USING "&&&&","-",z.cod_tipo USING "&&&&","-", z.cod_Sec USING "&&&&&&&" if x.direccion is null then SELECT b.calle||' '||b.casa_num||''||b.barrio||' '||b.urbanizacion INTO x.direccion FROM vetb00005 b WHERE b.tipo_cliente = x.tipo_cliente AND b.sec_cliente = x.sec_cliente end if LET ch_ncf ="NCF:", pcodigodgii CLIPPED,pncf USING "&&&&&&&&" SELECT a.num_rnc,a.telefono INTO rnc,telefono FROM vetb00004 a WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente AND a.status_t IS NULL SELECT a.descrip INTO descrip_cond FROM vetb00012 a WHERE a.cond_pago = x.cond_pago LET punidad = z.unidad_med LET marca = NULL LET modelo = NULL LET ch_fecha = fecha_vencimiento USING "dd/mm/yyyy" LET monto_factura = y.precio * z.cantidad_1 LET ldescuento = (z.cantidad_2 / 100) * (y.precio*z.cantidad_1) LET xdireccion = x.direccion PRINTX z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_sec, z.cantidad_1,z.unidad_med , z.descrip_esp ,marca , modelo , x.sub_total,ldescuento,monto_factura, direccion_sucursal,p_companias.telefono, p_companias.fax,p_companias.rnc,x.cond_pago, descripcion, pcodigodgii,x.factura , x.fecha_factura, x.sec_vend,x.nombre_vend ,x.nombre,x.tipo_cliente, x.sec_cliente,x.conduce, # x.orden xdireccion , x.porc_desc , x.desc_valor,y.precio, x.porc_itbi, x.itbi,x.total_fact, celular,x.prima_us,rnc, p_companias.nombre,telefono, ch_ncf,descrip_cond,observacion, imagen,chventas,simbolo,x.nombre_tran,x.placa_transp,xbodega, conduce_alm,ch_fecha,fecha_vencimiento,vimagen, cliente_bas.telefono,cliente_bas.telex,descripcion_bodega, condicion.descrip,xconduce_almacen,sucnombre,x.orden END REPORT REPORT imp_fact(x,z,y,porciento,bonifica,cod_f) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas, zona LIKE vetb00002.zona, factura LIKE vetb00002.factura, bodega SMALLINT, conduce LIKE vetb00002.conduce, fecha_conduce LIKE vetb00002.fecha_conduce, fecha_factura LIKE vetb00002.fecha_factura, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(170), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, cond_pago LIKE vetb00002.cond_pago, orden INT, fecha_orden LIKE vetb00002.fecha_orden, 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 area SMALLINT, cod_n LIKE intb00003.cod_n, cod_grupo LIKE intb00003.cod_grupo, cod_tipo LIKE intb00003.cod_tipo, cod_sec LIKE intb00003.cod_sec, cantidad_1 DEC(12,5), cantidad_2 DEC(12,5), cantidad_p DEC(12,5), unidad_med LIKE iptb00002.unidad_med, descrip_esp CHAR(80), existencia DEC(12,5), disponible DEC(12,5), codigo_bloque CHAR(15), id_kit INT END RECORD DEFINE y RECORD precio DEC(12,5), descuento DEC(12,5) END RECORD DEFINE bonifica INTEGER, i,cod_f SMALLINT, plado1,plado2,plado3,pcantidad,pmedida,total_unidades DEC(12,5) DEFINE tot_b,tot_n,tot_m DECIMAL(12,2), ch_fech CHAR(20), descripcion_area CHAR(30) DEFINE porciento DECIMAL(8,3) DEFINE normal,doce,negras,negras_off,doble CHAR(2) DEFINE nombre_vend,apellido_vend CHAR(15) DEFINE comprimido,comprimido_of CHAR(1) DEFINE j,lj,h INTEGER, etiqueta CHAR(30) OUTPUT TOP MARGIN 2 LEFT MARGIN 0 #PAGE LENGTH 65 BOTTOM MARGIN 3 ORDER BY x.factura,z.area,z.cod_n,z.cod_grupo,z.cod_tipo,z.cod_Sec FORMAT PAGE HEADER 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 LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 LET j = (90 - LENGTH(p_companias.direccion CLIPPED))/2 LET i = (90 - LENGTH(p_companias.telefono CLIPPED))/2 LET h = (90 - LENGTH(p_companias.rnc CLIPPED))/2 # IF ch_encabeza = "S" THEN # PRINT COLUMN lj, normal,doble,p_companias.nombre CLIPPED # PRINT COLUMN j+3, p_companias.direccion #PRINT COLUMN i-9, "Tels : ",p_companias.telefono , # " Fax : ",p_companias.fax #PRINT COLUMN h-1, "RNC : ",p_companias.rnc CLIPPED, # COLUMN 100, "Pag. ", pageno using "###" # ELSE # PRINT # PRINT # END IF IF ch_encabeza = "S" THEN PRINT COLUMN 4, normal,doble,"MARMOTECH, S. A." ELSE PRINT END IF PRINT COLUMN 4, doble,proforma CLIPPED,":",x.factura using "<<<<<<<<<" IF descripcion_doc IS NOT NULL THEN PRINT COLUMN 4, descripcion_Doc CLIPPED ELSE SKIP 1 LINE END IF PRINT COLUMN 4, doce,"PAGINA NO. ",pageno USING "<<<" #PRINT normal,comprimido_of IF x.ventas = "1" THEN PRINT COLUMN 4,normal,comprimido_of, negras,"SENORES :" ELSE PRINT COLUMN 4, "SIR :" END IF PRINT COLUMN 4, x.nombre CLIPPED," COD.#",x.tipo_cliente using "&&","-", x.sec_cliente using "&&&&&&" PRINT COLUMN 4, x.direccion[1,55] IF x.direccion[56,106] IS NOT NULL THEN PRINT COLUMN 4, x.direccion[56,106] ELSE PRINT '' END IF IF x.direccion[107,170] IS NOT NULL THEN PRINT COLUMN 4, x.direccion[107,170] ELSE PRINT ' ' END IF PRINT COLUMN 4, "Telefono: ",cliente_bas.telefono PRINT COLUMN 4, x.ciudad CLIPPED," RNC #",cliente_bas.num_rnc PRINT COLUMN 4, pubicacion [1,60] PRINT COLUMN 4, pubicacion[65,100] CLIPPED PRINT comprimido SELECT a.nom1_emp,a.apell1_emp INTO p_adtb03.nom1_emp,p_adtb03.apell1_emp FROM adtb00003 a WHERE a.num_emp = fact_gral.sec_vend 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 = p_adtb03.nom1_emp LET apellido_vend = NULL END IF PRINT "======================================================================================================", "=================================" PRINT COLUMN 1, "SALIDA", COLUMN 15, "ORDEN", COLUMN 25, "FECHA", COLUMN 38, "COTIZACION", COLUMN 52, "FACTURA E", COLUMN 65, "CONDICION", COLUMN 80, "VENDEDOR", COLUMN 113,"DOC.", COLUMN 123, "FECHA FACTURA" PRINT COLUMN 1, x.conduce USING "<<<<<", COLUMN 14, x.orden using "&&&&&&", COLUMN 25, x.fecha_orden using "dd/mm/yyyy", COLUMN 38, pcotizacion USING "&&&&&&", COLUMN 50, factura_e USING "&&&&&&", # COLUMN 65, pcondicion.getitemtext(x.cond_pago) CLIPPED, COLUMN 65, condicion.descrip[1,14], COLUMN 80, "(",x.sec_vend using "&&&&",") ",x.nombre_vend[1,20], COLUMN 113, documento_ref[1,10], COLUMN 126, x.fecha_factura using "dd/mm/yyyy" # PRINT COLUMN 65, condicion.descrip[15,30] PRINT "======================================================================================================", "=================================" LET tot_n = 0 LET tot_b = 0 LET tot_m = 0 PRINT COLUMN 5,"CODIGO", COLUMN 21, "CANTIDAD", COLUMN 37, "UNIDADES", COLUMN 50, "DESCRIPCION", COLUMN 102, "PRECIO", COLUMN 114, "DESC.", COLUMN 131, "TOTAL" PRINT "======================================================================================================", "=================================" BEFORE GROUP OF z.area SELECT a.nombre_area INTO descripcion_area FROM prtb00016 a WHERE a.area_num=Z.area PRINT "AREA: (",z.area USING "<<<",")",descripcion_area SKIP 1 LINE ON EVERY ROW IF z.cantidad_1 <> 0 THEN LET p_iptb01.factor_conv = 1 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 5, z.cod_n USING "&&&&","-",z.cod_grupo USING "&&&&","-", z.cod_tipo USING "&&&&","-",z.cod_sec USING "&&&&&&", COLUMN 13, z.cantidad_1 USING "###,###.#####"," ",z.unidad_med CLIPPED, COLUMN 32, z.cantidad_1/p_iptb01.factor_conv USING "###,###", COLUMN 50, z.descrip_esp CLIPPED, COLUMN 98, y.precio USING "#,###,###.###", COLUMN 114, z.cantidad_2 USING "###.###", COLUMN 123, z.cantidad_1 USING "##,###,###.##" END IF DECLARE busca_d1 CURSOR FOR SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida FROM iptb00025 a WHERE a.area = z.area AND a.cod_n = z.cod_n AND a.cod_grupo = z.cod_grupo AND a.cod_tipo = z.cod_tipo AND a.cod_sec = z.cod_sec AND a.cod_mov = p_codigo AND a.num_Doc = x.conduce LET total_unidades = 0 FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida PRINT COLUMN 53,pcantidad USING "<<<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ", plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####" LET total_unidades = total_unidades + pcantidad END FOREACH # IF total_unidades > 0 THEN # PRINT COLUMN 53, "TOTAL UNIDADES ",total_unidades USING "<,<<<" #END IF ON LAST ROW # Impresion de informaciones que pertenecen a facturas de exportacion IF x.ventas = "2" THEN IF x.desc_valor <> 0 THEN PRINT COLUMN 77, x.porc_desc using "<<<.##"," %DISCOUNT", COLUMN 122, x.desc_valor using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.", COLUMN 119, x.total_fact using "USD$###,###,###.##" PRINT COLUMN 122, "______________" PRINT COLUMN 122, "--------------" 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 IF x.ventas = "1" THEN IF x.desc_valor <> 0 THEN SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" PRINT COLUMN 78, "DESCUENTO", COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##" IF x.porc_itbi > 0 THEN PRINT COLUMN 78, x.porc_itbi using "##.##","%"," ITBIS", COLUMN 122, x.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 122, x.total_fact using "###,###,###.##" PRINT COLUMN 122, "==============" END IF END IF IF x.ventas = "3" THEN SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x.sub_total using "###,###,###.##" IF x.desc_valor <> 0 THEN PRINT COLUMN 78, "DESCUENTO", # COLUMN 93, x.desc_valor using "###,###,###.##" COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 122, x.sub_total-x.desc_valor using "###,###,###.##" IF x.porc_itbi > 0 THEN PRINT COLUMN 61, porcentaje_n USING "###.##","%/ ",itbis_o USING "###.##","% ", x.porc_itbi using "###.##","%"," ITBIS", COLUMN 122, x.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 118, x.total_fact using "USD$###,###,###.##" PRINT COLUMN 122, "==============" 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, "OBSERVACIONES: ",UPSHIFT(obs1) PRINT COLUMN 3, " ",UPSHIFT(obs2) CLIPPED PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED PRINT COLUMN 3, " ",UPSHIFT(obs4) CLIPPED SKIP 3 LINES PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x.nombre_tran, " ", "CEDULA: ",p_cedula using "&&&&&&&&&", " SERIE: ",p_serie using "&&&" IF x.ventas = "2" THEN PRINT COLUMN 4, "FACTURA COMERCIAL: ",x.placa_transp ELSE PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x.placa_transp END IF { SKIP 10 LINES PRINT COLUMN 12, x.nombre CLIPPED CALL convierte(x.total_fact) PRINT COLUMN 05, valor_letras clipped, COLUMN 72, x.total_fact using "###,###,###.##" PRINT COLUMN 72, x.factura using "&&&&&" PRINT COLUMN 10, condicion.dias USING "&&" } SKIP 3 LINES PRINT COLUMN 4,"-------------------------------",20 SPACES, "-------------------------------" PRINT COLUMN 4," FACTURADO POR ",20 SPACES, " REVISADO POR " #SKIP 4 LINES END REPORT 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 = "N" 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 tipoFact(ptipo_doc, codigo) DEFINE ptipo_Doc CHAR(2), codigo,tipo CHAR(5), f_vencimiento DATE DEFINE arrtipofact DYNAMIC ARRAY OF RECORD codigodgii CHAR(14), descripcion CHAR(80), fecha_vencimiento DATE END RECORD, idz,numero_msg,curr1 SMALLINT SET CONNECTION "SQL_E" SELECT a.tipo_ncf,a.fecha_vencimiento INTO tipo, f_vencimiento FROM vetb00071 a WHERE a.tipo_doc = ptipo_doc and a.disponible = "S" AND a.sucid = 1 AND a.codigo_dgii = codigo RETURN tipo,f_vencimiento END FUNCTION #--------------- PAGO AL CONTADO --------------------------------------------# FUNCTION veprfu001() DEFINE pagos RECORD documento LIKE vetb00002.factura, fecha_factura DATE, factura LIKE vetb00002.factura, tipo_cliente INT, sec_cliente INT, nombre VARCHAR(100), direccion VARCHAR(100), ciudad VARCHAR(100), cheque_no LIKE cctb00001.num_cheque, banco LIKE cctb00001.banco, valor_cheque DECIMAL(12,2), valor_efectivo DECIMAL (12,2), monto_cr DEC(12,2), valor_total DEC(12,2) END RECORD LET pagos.tipo_cliente = fact_gral.tipo_cliente LET pagos.sec_cliente = fact_gral.sec_cliente LET pagos.nombre = fact_gral.nombre LET pagos.direccion = fact_gral.direccion LET pagos.ciudad = NULL LET pagos.fecha_factura = fact_gral.fecha_factura LET pagos.valor_efectivo = fact_gral.total_fact LET pagos.factura = fact_gral.factura LET pagos.valor_cheque = 0 LET pagos.valor_efectivo = fact_gral.total_fact LET pagos.valor_total = fact_gral.total_fact LET pagos.monto_cr = 0 LET pagos.fecha_factura = TODAY { 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 LET fact_gral.factura = pagos.factura 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 LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo LET pagos.valor_total = pagos.valor_cheque + pagos.monto_cr + pagos.valor_efectivo {IF pagos.valor_total > fact_gral.total_fact THEN CALL msg(168) NEXT FIELD valor_cheque END IF} {IF pagos.valor_total IS NULL THEN CALL msg(16) NEXT FIELD valor_cheque END IF} 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 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 DELETE FROM cctb00001 WHERE num_doc = pagos.documento AND tipo_doc = "PC" LET pagos.valor_total = pagos.valor_total * -1 DISPLAY ",pagos.documento: ",pagos.documento INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,tipo_cliente,sec_cliente, cod_emp,cod_emp_sec,fecha_orig,aplica_a,valor, monto_desc,us_crea,fech_crea,costo, valor_efectivo,valor_cheque,valor_tarjeta) VALUES (fact_gral.cod_cia,pagos.documento, "PC",fact_gral.tipo_cliente, fact_gral.sec_cliente,localidad,fact_gral.sec_vend, fact_gral.fecha_factura,pagos.factura, pagos.valor_total,'0',usuarios,getdate(),'0', pagos.valor_efectivo,pagos.valor_cheque,pagos.monto_cr) UPDATE cctb00003 SET ult_recibo = pagos.documento,us_mod = usuarios,fech_mod = getdate() WHERE tipo_doc = "PC" END IF END FUNCTION