SCHEMA smarmotech GLOBALS DEFINE salida CHAR(2), p_companias RECORD LIKE companias.* END GLOBALS FUNCTION impresion_fact(x,z) DEFINE x RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas , zona LIKE vetb00002.zona , factura LIKE vetb00002.factura, fecha_factura CHAR(10), tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, cond_pago LIKE vetb00002.cond_pago, porc_desc LIKE vetb00002.porc_desc, prima_us LIKE vetb00002.prima_us, orden int, fecha_orden CHAR(10), conduce int, fecha_conduce CHAR(10), porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, fecha_embarque CHAR(10), sub_total LIKE vetb00002.sub_total, desc_valor LIKE vetb00002.monto_desc, itbi LIKE vetb00002.monto_itbi, total_fact LIKE vetb00002.neto, codigo_dgii CHAR(20), kncf INT, descripcion_ncf VARCHAR(40), bodega SMALLINT, nombre CHAR(30), direccion CHAR(50), ciudad CHAR(15), nombre_desc CHAR(25), descrip CHAR(25), nombre_vend CHAR(29), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, nombre_tran LIKE vetb00015.nombre, placa_transp LIKE iptb00006.placa, cod_tarifa LIKE iptb00006.cod_tarifa, descrip5 CHAR(15), descrip6 CHAR(15), descrip1 CHAR(30), nombre_tipo CHAR(15), compania CHAR(50), telefono CHAR(20), rnc CHAR(11) END RECORD DEFINE z DYNAMIC ARRAY OF RECORD cod_n LIKE vetb00003.cod_n, cod_grupo LIKE vetb00003.cod_grupo, cod_tipo LIKE vetb00003.cod_tipo, cod_sec LIKE vetb00003.cod_sec, descrip_esp CHAR(40), unidad_med CHAR(3), cantidad LIKE vetb00003.cantidad, precio LIKE vetb00003.precio, monto_fact DECIMAl(10,2) END RECORD, HANDLER om.SaxDocumentHandler, idx SMALLINT CALL configureoutput("PDF") RETURNING handler START REPORT factura TO XML HANDLER HANDLER FOR idx = 1 TO z.getLength() OUTPUT TO REPORT factura(x.*,z[idx].*) END FOR FINISH REPORT factura END FUNCTION REPORT factura(x1,z1) DEFINE x1 RECORD cod_cia LIKE vetb00002.cod_cia, ventas LIKE vetb00002.ventas , zona LIKE vetb00002.zona , factura LIKE vetb00002.factura, fecha_factura CHAR(10), tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, cond_pago LIKE vetb00002.cond_pago, porc_desc LIKE vetb00002.porc_desc, prima_us LIKE vetb00002.prima_us, orden int, fecha_orden CHAR(10), conduce int, fecha_conduce CHAR(10), porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, fecha_embarque CHAR(10), sub_total LIKE vetb00002.sub_total, desc_valor LIKE vetb00002.monto_desc, itbi LIKE vetb00002.monto_itbi, total_fact LIKE vetb00002.neto, codigo_dgii CHAR(20), kncf INT, descripcion_ncf VARCHAR(40), bodega SMALLINT, nombre CHAR(30), direccion CHAR(50), ciudad CHAR(15), nombre_desc CHAR(25), descrip CHAR(25), nombre_vend CHAR(29), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, nombre_tran LIKE vetb00015.nombre, placa_transp LIKE iptb00006.placa, cod_tarifa LIKE iptb00006.cod_tarifa, descrip5 CHAR(15), descrip6 CHAR(15), descrip1 CHAR(30), nombre_tipo CHAR(15), compania CHAR(50), telefono CHAR(20), rnc CHAR(11) END RECORD DEFINE z1 RECORD cod_n LIKE vetb00003.cod_n, cod_grupo LIKE vetb00003.cod_grupo, cod_tipo LIKE vetb00003.cod_tipo, cod_sec LIKE vetb00003.cod_sec, descrip_esp CHAR(40), unidad_med CHAR(3), cantidad LIKE vetb00003.cantidad, precio LIKE vetb00003.precio, monto_fact DECIMAl(10,2) END RECORD, pubicacion VARCHAR(80), ch_fech CHAR(10) DEFINE xfactor_conv DEC(12,4),xunidad CHAR(4) DEFINE normal,doce,negras,negras_off,doble CHAR(2), observacion,obs1,obs2,obs3,obs4 VARCHAR(180), p_cedula CHAR(11) DEFINE comprimido,comprimido_of CHAR(1), tot_n,tot_b,tot_m DEC(12,2) DEFINE j,lj,h,i INTEGER OUTPUT TOP MARGIN 2 LEFT MARGIN 0 PAGE LENGTH 65 BOTTOM MARGIN 3 ORDER BY x1.factura FORMAT BEFORE GROUP OF x1.factura IF salida = "MA" THEN 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 END IF SELECT b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc INTO p_companias.nombre,p_companias.direccion,p_companias.direccion1, p_companias.telefono,p_companias.fax,p_companias.rnc FROM sucursales b,vetb00020 c WHERE b.sucid=x1.cod_cia AND b.localidad = c.cod_provincia 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 PRINT COLUMN lj, normal,doble,p_companias.nombre CLIPPED PRINT COLUMN j, p_companias.direccion CLIPPED,", ",p_companias.direccion1 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 "###" SELECT UNIQUE a.ubicacion INTO pubicacion FROM prtb00012 a WHERE a.num_oc = x1.orden AND a.tipo_cliente = x1.tipo_cliente AND a.sec_cliente = x1.sec_cliente AND a.status_t IS NULL #PRINT normal,comprimido_of IF x1.ventas = "1" THEN PRINT COLUMN 4,normal,comprimido_of, negras,"SENORES :" ELSE PRINT COLUMN 4, "SIR :" END IF PRINT COLUMN 4, x1.nombre CLIPPED," COD.#",x1.tipo_cliente using "&&","-", x1.sec_cliente using "&&&&" PRINT COLUMN 4, x1.direccion CLIPPED," ",x1.telefono PRINT COLUMN 4, x1.ciudad CLIPPED," RNC #",x1.rnc, COLUMN 50, doble,"FACTURA ",x1.factura using "&&&&&" PRINT COLUMN 4, pubicacion PRINT COLUMN 4, "NCF: ",x1.codigo_dgii CLIPPED,x1.kncf USING "&&&&&&&&" PRINT COLUMN 4, x1.descripcion_ncf PRINT comprimido PRINT "======================================================================================================", "=================================" PRINT COLUMN 15, "ORDEN", COLUMN 35, "FECHA", COLUMN 60, "CONDICION", COLUMN 80, "VENDEDOR", COLUMN 98, "COTIZACION", COLUMN 123, "FECHA FACTURA" PRINT COLUMN 14, x1.orden using "&&&&&&", COLUMN 34, x1.fecha_orden , COLUMN 60, x1.descrip CLIPPED, COLUMN 80, "(",x1.sec_vend using "&&&&",") ",x1.nombre_vend CLIPPED, COLUMN 98, x1.conduce using "&&&&&&", COLUMN 126, x1.fecha_factura 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 "======================================================================================================", "=================================" ON EVERY ROW IF z1.cantidad <> 0 THEN LET xfactor_conv = 1 LET xunidad = z1.unidad_med SELECT a.factor_conv,a.unidad INTO xfactor_conv,xunidad FROM iptb00001 a WHERE a.cod_n = z1.cod_n AND a.cod_grupo = z1.cod_grupo AND a.cod_tipo = z1.cod_tipo AND a.cod_sec = z1.cod_sec IF xfactor_conv IS NULL OR xfactor_conv = 0 THEN LET xfactor_conv = 1 LET xunidad = z1.unidad_med END IF PRINT COLUMN 5, z1.cod_n USING "&&&&","-",z1.cod_grupo USING "&&&&","-", z1.cod_tipo USING "&&&&","-",z1.cod_sec USING "&&&&", COLUMN 13, z1.cantidad USING "###,###.###"," ",z1.unidad_med CLIPPED, COLUMN 32, z1.cantidad/xfactor_conv USING "###,###", COLUMN 50, z1.descrip_esp CLIPPED, COLUMN 98, z1.precio USING "###,###.###", COLUMN 114, z1.cantidad USING "##.&&", COLUMN 123, z1.monto_fact USING "##,###,###.##" END IF AFTER GROUP OF x1.factura # Impresion de informaciones que pertenecen a facturas de exportacion IF x1.ventas = "2" or x1.ventas = "4" THEN PRINT COLUMN 122,"--------------" PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x1.sub_total using "###,###,###.##" IF x1.desc_valor <> 0 THEN PRINT COLUMN 77, x1.porc_desc using "<<<.##"," %DISCOUNT", COLUMN 122, x1.desc_valor using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "TOTAL F.O.B. PLANT, D.R.", COLUMN 122, x1.total_fact using "###,###,###.##" PRINT COLUMN 122, "______________" PRINT COLUMN 122, "--------------" LET ch_fech = x1.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 #PRINT COLUMN 47, "EXCHANGE RATE : ", x.prima_us USING "###.##" END IF # Impresion de datos que concierne solamente a tipos de facturas locales IF x1.ventas = "1" THEN #->PRINT COLUMN 122, "--------------" SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 122, x1.sub_total using "###,###,###.##" IF x1.desc_valor <> 0 THEN PRINT COLUMN 77, x1.porc_desc using "##"," %DESCUENTO", COLUMN 093, x1.desc_valor using "###,###,###.##" #COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 119, x1.sub_total-x1.desc_valor using "RD$###,###,###.##" IF x1.porc_itbi > 0 THEN PRINT COLUMN 78,x1.porc_itbi using "###.##","%"," ITBI", COLUMN 122, x1.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 119, x1.total_fact using "RD$###,###,###.##" PRINT COLUMN 122, "==============" END IF IF x1.ventas = "3" THEN #->PRINT COLUMN 122, "--------------" SKIP 1 LINE PRINT COLUMN 78, "VALOR BRUTO ", COLUMN 118, x1.sub_total using "USD$###,###,###.##" IF x1.desc_valor <> 0 THEN PRINT COLUMN 77, x1.porc_desc using "##"," %DESCUENTO", COLUMN 093, x1.desc_valor using "###,###,###.##" #COLUMN 122, x.desc_valor using "###,###,###.##" END IF #-> PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "SUB-TOTAL", COLUMN 122, x1.sub_total-x1.desc_valor using "###,###,###.##" IF x1.porc_itbi > 0 THEN PRINT COLUMN 78, x1.porc_itbi using "###.##","%"," ITBI", COLUMN 122, x1.itbi using "###,###,###.##" END IF PRINT COLUMN 122, "--------------" PRINT COLUMN 78, "VALOR NETO ", COLUMN 118, x1.total_fact using "USD$###,###,###.##" PRINT COLUMN 122, "==============" END IF PRINT comprimido_of #SKIP 8 LINE PAGE TRAILER SKIP 1 LINE PRINT doce,comprimido_of SELECT a.detalle INTO observacion FROM vetb00048 a WHERE a.factura = x1.factura AND a.sucid = x1.cod_cia 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) CLIPPED," ", UPSHIFT(obs2) CLIPPED PRINT COLUMN 3, " ",UPSHIFT(obs3) CLIPPED," ", UPSHIFT(obs4) CLIPPED # IF x.ventas = 3 THEN # PRINT COLUMN 3, "EXCHANGE RATE : ", x.prima_us USING "###.##" # ELSE # PRINT " " # END IF SKIP 2 LINES SELECT a.nombre,a.cedula INTO x1.nombre_tran,p_cedula FROM vetb00015 a WHERE a.cod_transp = x1.cod_transp AND a.sec_transp = x1.sec_transp AND a.status_t IS NULL PRINT COLUMN 4, "NOMBRE TRANSPORTISTA: ",x1.nombre_tran, " ", "CEDULA: ",p_cedula PRINT COLUMN 4, "PLACA DEL VEHICULO: ",x1.placa_transp { 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