403 lines
15 KiB
Plaintext
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 |