{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP025 OBJETIVO : Listar las Entrada de Diario Ventas a una fecha determinada Ventas Locales PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Julio 28, 1993 ------------------------------------------------------------------------------- } DATABASE marmotech GLOBALS ###### Variables para busqueda de rango de fecha DEFINE detalle CHAR(30), p_compania RECORD LIKE companias.* DEFINE l,mes SMALLINT DEFINE ano CHAR(4) DEFINE tasa DECIMAL(5,2) DEFINE p_fecha,fecha1, fecha2 DATE DEFINE afecta, ventas CHAR(1) DEFINE entra CHAR(14) DEFINE entra1 CHAR(5) DEFINE tipo_papel SMALLINT ###### Variables para almacenar los datos selecionados DEFINE selec5, selec6 CHAR(1500) ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario1 RECORD cod_cia LIKE cctb00001.cod_cia, pend_fact DECIMAL(10,2), descuento DECIMAL(10,2), monto_fac DECIMAL(10,2), itbi DECIMAL(10,2) END RECORD ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario2 RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, factura INTEGER, valor DECIMAL(12,2), sub_total DECIMAL(10,2) END RECORD END GLOBALS MAIN DEFER INTERRUPT CALL edprrp025() END MAIN FUNCTION edprrp025() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp025 FROM "edfmrp025" DISPLAY FORM edfmrp025 CALL pantalla() DISPLAY "edprrp025" AT 4,3 DISPLAY "Entrada de Diario Ventas Locales" AT 6,24 LET tipo_papel = 3 CALL msgrp000(tipo_papel) ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,detalle,afecta AFTER FIELD entra SELECT unique ref FROM cgtb00004 WHERE ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" NEXT FIELD entra END IF LET entra1 = entra BEFORE FIELD fecha1 SELECT MAX(fecha) INTO p_fecha FROM cgtb00004 WHERE ref[1,5] = entra1 LET fecha1 = p_fecha + 1 DISPLAY BY NAME fecha1 AFTER FIELD fecha1 IF fecha1 IS NULL THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha1 END IF IF fecha1 <= p_fecha THEN ERROR "(179) EXISTE ENTRADA DE DIARIO CON ESA FECHA" NEXT FIELD fecha1 END IF AFTER FIELD fecha2 IF fecha2 is null THEN ERROR "(16) CAMPO EN BLANCO" NEXT FIELD fecha2 END IF IF fecha1 > fecha2 THEN ERROR "(149) FECHA NO PUEDE SER MAYOR QUE LA ANTERIOR" NEXT FIELD fecha1 END IF ###### Selecionando en rango de fecha de la tabla de periodo para el fecha2 SELECT UNIQUE ref FROM cgtb00004 where ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" NEXT FIELD fecha2 END IF END INPUT ##### Creando la facilidad para cancelar proceso con DELETE O SUPR IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF # Busca la informacion requerida LET selec5 = "SELECT b.cod_cia,SUM(a.valor), SUM(b.monto_desc),SUM(b.sub_total), ", " SUM(b.monto_itbi) ", "FROM vetb00002 b,cctb00001 a ", "WHERE (a.cod_cia = b.cod_cia and ", "a.num_doc = b.factura and ", "a.fecha_orig between ? and ?) and ", "(a.num_doc= a.num_doc and ", "a.tipo_doc = 'FT') and ", "a.status_t is null and ", "(b.ventas = 1) ", " and b.fech_crea > datetime (1995-01-01 08:00) year to minute ", "GROUP BY 1 ", "ORDER BY 1 " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 17,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM selec5 DECLARE buscar CURSOR FOR comando OPEN buscar USING fecha1,fecha2 ##### Envia la Informacion al printer de contabilidad START REPORT entrada25 TO "C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 17,14 ATTRIBUTE (REVERSE) ##### Loop para enviar informacion al reporte WHILE STATUS != NOTFOUND FETCH buscar INTO diario1.* IF status = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT entrada25(diario1.*,fecha1,fecha2,detalle,entra) END WHILE FINISH REPORT entrada25 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de ventas local REPORT entrada25(x,fecha1,fecha2,detalle1,entrada) DEFINE x RECORD cod_cia LIKE cctb00001.cod_cia, pend_fact DECIMAL(10,2), descuento DECIMAL(10,2), monto_fac DECIMAL(10,2), itbi DECIMAL(10,2) END RECORD #### Acumula los valores de las diferentes cuentas para entrada diario de venta DEFINE detalle1 CHAR(30) DEFINE total1,total2,total3,total4,total5,total6 DECIMAL(12,2) DEFINE total7,total8 DECIMAL(12,2) ## Acumula los totales DEBITO Y CREDITO DEFINE tasa1 DECIMAL(5,2) ## Almacena la tasa de la tasa de cambio DEFINE fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda DEFINE venta CHAR(1) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE comprimido CHAR(3) DEFINE hora CHAR(5) DEFINE dpto INTEGER DEFINE venta1 CHAR(24) DEFINE entrada CHAR(14) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 FORMAT PAGE HEADER LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET hora = time ##### Selecionado la descripcion del fecha2 LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 PRINT COLUMN 1, "edprrp025", COLUMN l, p_compania.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Cuentas por Cobrar")) / 2 PRINT COLUMN l, "Sistema de Cuentas por Cobrar", COLUMN 75, today using "dd/mm/yyyy" LET l = (80 - LENGTH("Entrada de Diario Ventas Locales")) / 2 PRINT COLUMN l, "Entrada de Diario Ventas Locales", COLUMN 78, hora PRINT COLUMN 34, "Del ",fecha1 USING "dd/mm/yyyy", " Al ",fecha2 USING "dd/mm/yyyy" # , negrillas_off SKIP 1 LINE PRINT COLUMN 1,"Entrada de Diario No.", doble_on,entrada,doble_off PRINT COLUMN 01, "Observaciones: _____________________________________" PRINT COLUMN 01, " _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------", negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 56, "Debe", COLUMN 71, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" LET total1 = 0 LET total2 = 0 BEFORE GROUP OF x.cod_cia IF x.cod_cia = 1 THEN LET dpto = 4200 ELSE LET dpto = 4103 END IF ON EVERY ROW LET total1 = total1 + x.pend_fact LET total2 = total2 + x.itbi IF x.cod_cia = "1" THEN LET total3 = x.descuento LET total4 = x.monto_fac ELSE LET total5 = x.descuento LET total6 = x.monto_fac END IF ON LAST ROW ###### Acumulando totales por columna IF total1 IS NULL THEN LET total1 = 0 END IF IF total3 IS NULL THEN LET total3 = 0 END IF IF total5 IS NULL THEN LET total5 = 0 END IF IF total2 IS NULL THEN LET total2 = 0 END IF IF total4 IS NULL THEN LET total4 = 0 END IF IF total6 IS NULL THEN LET total6 = 0 END IF LET total7 = total1 + total3 + total5 LET total8 = total2 + total4 + total6 ####### Imprimiendo total ventas netas PRINT COLUMN 2, "1120", COLUMN 11, "4200", COLUMN 18, "CUENTAS X COBRAR CLIENTES DOM.", COLUMN 50, total1 using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"1120",4200,null,null,null,null, detalle1,null,total1,0,null,user,current,null,null) END IF ##### Imprimendo monto descuento para RAY.O.VAC PRINT COLUMN 2, "4150", COLUMN 11, "4200", COLUMN 18, "DEDUCIONES S/VENTAS", COLUMN 50, total3 using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"4150",4200,null,null,null,null, detalle1,null,total3,0,null,user,current,null,null) END IF ####### Imprimieno Monto bruto para RAY.O.VAC PRINT COLUMN 2, "4180", COLUMN 11, "4200", COLUMN 18, "VENTAS OTROS", COLUMN 65, total4 using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"4180",4200,null,null,null,null, detalle1,null,0,total4,null,user,current,null,null) END IF ##### Imprimiendo monto del ITBI PRINT COLUMN 2, "2128-01", COLUMN 18, "ITBI", COLUMN 65, total2 using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"2128-01",null,null,null,null, null,detalle1,null,0,total2,null,user,current,null,null) END IF ###### Imprime total DEBITO y total CREDITO PRINT COLUMN 1,negrillas_on PRINT COLUMN 35,"Totales-->", COLUMN 50,"--------------", COLUMN 65,"--------------" PRINT COLUMN 50,total7 USING "###,###,##&.&&", COLUMN 65,total8 USING "###,###,##&.&&" SKIP 2 LINE PRINT COLUMN 1, detalle1 PRINT COLUMN 1,comp_off,negrillas_off END REPORT { Esta funcion se utiliza para desplegar mensajes de los reportes de los sistemas de Ray-O-Vac Dominicana. Realizada por Lic. Abner Montalvo y Johnny Soto Agosto 21, 1992 } FUNCTION msgrp000(tipo_papel) DEFINE tipo_papel SMALLINT, longitud CHAR(11), linea_papel CHAR(50) CASE WHEN tipo_papel = 1 LET longitud = " 9 1/2 x 11" WHEN tipo_papel = 2 LET longitud = "14 7/8 x 11" END CASE LET linea_papel = "Coloque papel ",longitud," en la impresora." DISPLAY linea_papel AT 15,14 DISPLAY "Asegurese de que la impresora este encendida." AT 16,14 DISPLAY " Ejecuta impresion Cancela impresion" AT 18,14 RUN "type C:\\archivo > %USPRINT%" END FUNCTION FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) SELECT * INTO p_compania.* FROM companias LET fecha = today USING "dd/mm/yy" LET hora = time LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 DISPLAY p_compania.nombre CLIPPED AT 4,l ATTRIBUTE (REVERSE,YELLOW) DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW) DISPLAY "Sistema de Contabilidad General" AT 5,24 DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW) CALL fgl_drawbox(5,79,3,1) CALL fgl_drawbox(1,79,22,1) RUN "type C:\\archivo > %USPRINT%" END FUNCTION