420 lines
13 KiB
Plaintext
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
|