Files
MBS/PROYECTO/vedir/impresion_factura.4gl
T

403 lines
15 KiB
Plaintext

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