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

420 lines
13 KiB
Plaintext

{
----------------------------------------------------------------------
Programa : VEPRRP020
Funcion : Impresion de Facturas por Rango
Programador : Tadeo A. Ferreras
Fecha : Junio 04, 1993
----------------------------------------------------------------------
}
GLOBALS
"veprgb000.4gl"
DEFINE codigo_provincia SMALLINT,
cod_b1 CHAR(13),
opt,cod_b2 CHAR(1),
cod_b4 CHAR(15),
descrip7 CHAR(15),
pinicial DECIMAL(12,2)
DEFINE pfactura 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,
cond_pago LIKE vetb00002.cond_pago,
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,
orden LIkE vetb00002.orden,
fecha_orden LIKE vetb00002.fecha_orden,
porc_itbi LIKE vetb00002.porc_itbi,
sec_vend LIKE vetb00002.sec_vend,
nombre_vend CHAR(30),
sub_total DECIMAL(12,2),
desc_valor DECIMAL(12,2),
itbi DECIMAL(12,2),
total_fact DECIMAL(12,2)
END RECORD
FUNCTION veprrp020()
######## Deficion del registro que contiene las variables a imprimir
OPTIONS
FORM LINE 9,
PROMPT LINE 22
CALL PANTALLA()
DISPLAY "veprrp020" AT 4,3 ATTRIBUTE(YELLOW)
DISPLAY "Facturas Por Rango" AT 6,31 ATTRIBUTE(YELLOW)
OPEN FORM vefmrp020 FROM "vefmrp020"
DISPLAY FORM vefmrp020
## Tipo de papel necesario para imprimir el reporte
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
####### Creando criterio de busqueda
INPUT BY NAME detalle
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON a.factura FROM factura
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
###### Seleccionando la informacion a imprimir
LET selec =
"SELECT a.cod_cia,a.ventas,a.zona,' ',a.factura,a.fecha_factura, ",
" a.cond_pago,a.tipo_cliente,a.sec_cliente,' ',' ',' ',a.prima_us, ",
" a.porc_desc,a.orden,a.fecha_orden,",
" a.porc_itbi,a.sec_vend,",
" ' ',",
" a.sub_total,a.monto_desc,a.monto_itbi,a.neto,a.inicial ",
" FROM vetb00002 a ",
" WHERE ",criterio CLIPPED,
" AND a.status_t IS NULL ",
" ORDER BY a.factura"
DISPLAY "<< Reporte Generandose ... Por Favor Espere >>" AT 19,14
ATTRIBUTE (REVERSE)
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
START REPORT imp_fact TO "facturas"
FOREACH busca INTO pfactura.*,pinicial
##### Creando facilidad para cancelar proceso mediante DELETE
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF pfactura.ventas = "1" THEN
LET pfactura.nombre_tipo = "LOCAL"
ELSE
LET pfactura.nombre_tipo = "EXPORTACION"
END IF
SELECT a.nombre,a.cod_provincia
INTO pfactura.nombre,codigo_provincia
FROM vetb00004 a
WHERE a.tipo_cliente = pfactura.tipo_cliente AND
a.sec_cliente = pfactura.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 = pfactura.tipo_cliente AND
b.sec_cliente = pfactura.sec_cliente
SELECT d.nombre_provincia INTO pfactura.ciudad
FROM vetb00020 d
WHERE d.cod_provincia = codigo_provincia
LET pfactura.direccion = descrip1 clipped," ",descrip2 clipped,", ",
descrip3 clipped
SELECT nom1_emp, apell1_emp INTO descrip5,descrip6
FROM adtb00003
WHERE num_emp = pfactura.sec_vend
LET pfactura.nombre_vend = descrip5 clipped," ",descrip6 clipped
IF detalle = "S" THEN
IF pfactura.cond_pago > 0 THEN
CALL imprime_letras()
END IF
END IF
DECLARE busca3 CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,
a.cantidad,'0','0',a.precio,a.cantidad*a.precio
FROM vetb00003 a
WHERE a.factura = pfactura.factura
LET idx = 1
FOREACH busca3 INTO fact_det[idx].*,pinicial
OUTPUT TO REPORT
imp_fact(pfactura.*,fact_det[idx].*,pinicial)
LET idx = idx + 1
END FOREACH
END FOREACH
FINISH REPORT imp_fact
PROMPT "Desea Imprimir Facturas (S/N)? " FOR opt
LET opt = UPSHIFT(opt)
IF opt = "S" THEN
RUN "lp $HOME/facturas"
END IF
LET opt = NULL
PROMPT "Desea Imprimir Letras (S/N)? " FOR opt
LET opt = UPSHIFT(opt)
IF opt = "S" THEN
RUN "lp $HOME/letras"
END IF
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT imp_fact(x,z,xinicial)
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,
cond_pago LIKE vetb00002.cond_pago,
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,
orden LIkE vetb00002.orden,
fecha_orden LIKE vetb00002.fecha_orden,
porc_itbi LIKE vetb00002.porc_itbi,
sec_vend LIKE vetb00002.sec_vend,
nombre_vend CHAR(30),
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(5),
cantidad DECIMAL(12,2),
precio DECIMAL(12,3),
monto_fact DECIMAL(12,3)
END RECORD
DEFINE cantidad_p DECIMAL(12,2),
cod_f SMALLINT
DEFINE c_cajas,bonifica INTEGER
DEFINE xinicial,tot_b,tot_n,tot_m,peso_n,medida,peso_b DECIMAL(12,2),
ch_fech CHAR(20)
DEFINE valor_porc DECIMAL (12,2)
DEFINE normal,doce,negras,negras_off,doble,doble_off 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
LEFT MARGIN 0
PAGE LENGTH 33
ORDER BY x.factura
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 doble_off = ASCII 20
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
PRINT doce
SELECT num_rnc INTO rnc FROM vetb00004
WHERE tipo_cliente = x.tipo_cliente AND sec_cliente = x.sec_cliente AND
status_t IS NULL
IF x.cond_pago > 0 THEN
PRINT COLUMN 72, "VENTAS A CREDITO"
ELSE
PRINT COLUMN 72, "VENTAS AL CONTADO"
END IF
FOR idx = 1 TO 45
PRINT "_";
END FOR
SELECT MAX(fecha_ven) INTO p_fecha_ven
FROM cctb00001 WHERE num_doc[3,6] = x.factura AND
TIPO_DOC = "LE"
IF x.cond_pago = 0 THEN
LET p_fecha_ven = x.fecha_factura
END IF
PRINT " "
PRINT COLUMN 70, "FECHA : ", x.fecha_factura using "dd/mm/yy"
PRINT COLUMN 2, negras,"SE",ASCII 165,"ORES",negras_off,
COLUMN 74, "VENCE : ",p_fecha_ven USING "dd/mm/yy"
PRINT COLUMN 2, x.nombre,
" ","COD.#",x.tipo_cliente using "&&","-",
x.sec_cliente using "&&&&",
COLUMN 70, "ORDEN : ",x.orden using "<<<<<<"
PRINT COLUMN 2, x.direccion CLIPPED," ",cliente_bas.telefono,
COLUMN 70, "FECHA ORDEN: ",x.fecha_orden using "dd/mm/yy"
PRINT COLUMN 2, x.ciudad," ","RNC #",rnc ,negras_off
LET nombre_vend = x.nombre_vend[1,15]
LET apellido_vend = x.nombre_vend[16,30]
FOR idx = 1 TO 45
PRINT "_";
END FOR
PRINT " "
PRINT COLUMN 1, negras,"VENDEDOR : ","(",x.sec_vend using "&&&",")",
nombre_vend,apellido_vend
IF x.cond_pago > 0 THEN
PRINT COLUMN 1, "ESTE DOCUMENTO ESTA ACOMPA",ASCII 165,"ADO DE ",
x.cond_pago USING "<<<"," LETRAS DE CAMBIO O PAGARES",
negras_off
ELSE
SKIP 1 LINE
END IF
FOR idx = 1 TO 96
PRINT "_";
END FOR
PRINT " "
PRINT COLUMN 3, "CODIGO",
COLUMN 12, "CANTIDAD",
COLUMN 22, "DESCRIPCION",
COLUMN 76, "PRECIO",
COLUMN 90, "IMPORTE"
FOR idx = 1 TO 96
PRINT "_";
END FOR
PRINT " ",negras_off
ON EVERY ROW
LET descripcion = NULL
SELECT descrip_esp INTO descrip2 FROM iptb00002
WHERE cod_n = z.cod_n AND cod_grupo = z.cod_grupo AND
cod_tipo = z.cod_tipo AND cod_sec = z.cod_sec
LET descripcion = descrip2 CLIPPED
PRINT COLUMN 3, z.cod_n USING "&","-",
z.cod_grupo USING "&","-",
z.cod_tipo USING "&&","-",
z.cod_sec USING "&&&",
COLUMN 13, z.cantidad USING "##,###.##",
COLUMN 23, descripcion[1,47] CLIPPED;
IF descripcion[48,70] IS NOT NULL THEN
PRINT COLUMN 22, descripcion[48,70] CLIPPED;
END IF
PRINT COLUMN 73, z.precio USING "##,###.##",
COLUMN 84, z.monto_fact USING "##,###,###.##"
AFTER GROUP OF x.factura
# Impresion de datos que concierne solamente a tipos de facturas locales
IF xinicial > 0 THEN
PRINT COLUMN 83, "--------------"
PRINT COLUMN 83, x.sub_total+xinicial using "###,###,###.##"
END IF
IF x.desc_valor > 0 THEN
PRINT COLUMN 61, x.porc_desc using "###.#"," %Descuento",
COLUMN 88, x.desc_valor using "##,###.##"
END IF
IF xinicial > 0 THEN
PRINT COLUMN 83, "--------------"
PRINT COLUMN 50, "INICIAL",
COLUMN 83, xinicial USING "###,###,###.##"
END IF
IF xinicial IS NULL THEN
LET xinicial = 0
END IF
PRINT COLUMN 83, "--------------"
PRINT COLUMN 50, "SALDO",
COLUMN 83,x.total_fact USING "###,###,###.##"
SKIP TO TOP OF PAGE
PAGE TRAILER
PRINT COLUMN 25, "---------------------------",
COLUMN 65, "---------------------------"
PRINT COLUMN 25, "DESPACHADO POR",
COLUMN 65, "RECIBIDO CONFORME"
ON LAST ROW
PRINT comprimido_of
END REPORT
FUNCTION imprime_letras()
DEFINE valor_l,monto_letra DECIMAL(12,2),
fecha_ant DATE,
dias1,mes9 SMALLINT,
numero_letra CHAR(12),
fact CHAR(6),
detalle_l CHAR(70)
LET valor_l = pfactura.total_fact
LET monto_letra = valor_l / pfactura.cond_pago
LET fecha_ant = pfactura.fecha_factura
LET p_fecha_ven = pfactura.fecha_factura
FOR idx = 1 TO pfactura.cond_pago
LET mes9 = MONTH(p_fecha_ven)
SELECT dias_prod INTO dias1
FROM mestable
WHERE mes = mes9
IF mes9 = 1 THEN
LET dias1 = 27
END IF
IF mes9 = 2 THEN
LET dias1 = 30
END IF
LET fecha_ant = fecha_ant + dias1
LET p_fecha_ven = fecha_ant
LET numero_letra = pfactura.factura USING "&&&&&&","-",
idx using "&&","/",pfactura.cond_pago USING "&&"
DISPLAY "Imprimiendo..." AT 24,1 ATTRIBUTE(YELLOW,BLINK)
SELECT a.detalle INTO detalle_l
FROM vetb00002 a WHERE a.factura = pfactura.factura
SELECT valor INTO monto_letra
FROM cctb00001
WHERE num_doc = numero_letra and tipo_doc = "LE"
{
UPDATE cctb00001 SET fecha_orig = pfactura.fecha_factura,
fecha_ven = p_fecha_ven
WHERE num_doc = numero_letra
}
INSERT INTO cctb00111 VALUES
(NULL,pfactura.cod_cia,"LE",numero_letra,pfactura.tipo_cliente,
pfactura.sec_cliente,NULL,pfactura.sec_vend,
pfactura.fecha_factura,p_fecha_ven,numero_letra, NULL,NULL,
monto_letra,NULL,NULL,t_costos,0, NULL, USER,CURRENT, NULL, NULL)
DISPLAY " " AT 24,1
END FOR
DISPLAY " " AT 1,1
RUN "type C:\\archivo > %USPRINT%" END FUNCTION