{ ---------------------------------------------------------------------- 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