{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP115 OBJETIVO : Listar las Entrada de Diario Cobros Clientes Locales Ingresos PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Julio 28, 1993 ------------------------------------------------------------------------------- } DATABASE marmotech GLOBALS ###### Variables para busqueda de rango de fecha DEFINE afecta CHAR(1), nombre_cta,detalle CHAR(30), lj,mes SMALLINT , ano CHAR(4) , tasa DECIMAL(5,2) , p_fecha,fecha1, fecha2 DATE , nominas CHAR(1), entra CHAR(14), entra1 CHAR(5), tipo_papel SMALLINT, p_cctb01 RECORD LIKE cctb00001.*, p_companias RECORD LIKE companias.*, mano_obra,sueldo_ind,monto_banco,interes DECIMAL(12,2), ###### Variables para almacenar los datos selecionados selec5, selec6 CHAR(1500) ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario1 RECORD cuenta_no SMALLINT, descripcion CHAR(30), valor DECIMAL(10,2), monto_desc DECIMAL(10,2) END RECORD END GLOBALS MAIN DEFER INTERRUPT SELECT a.* INTO p_companias.* FROM companias a CALL edprrp115() END MAIN FUNCTION edprrp115() OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp115 FROM "edfmrp115" DISPLAY FORM edfmrp115 CALL pantalla() DISPLAY "edprrp115" AT 4,3 DISPLAY "Entrada de Diario Cobros Clientes Locales-Ingresos" AT 6,15 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,afecta,detalle AFTER FIELD entra SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = entra IF STATUS != NOTFOUND THEN ERROR "(12) REGISTRO EXISTE" NEXT FIELD entra END IF LET entra1 = entra BEFORE FIELD fecha1 SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a WHERE a.ref[1,9] = 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 a.ref FROM cgtb00004 a where a.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 DECLARE buscar CURSOR FOR SELECT a.* FROM cctb00001 a WHERE a.status_t IS NULL AND (a.tipo_doc IN ("PG","AV")) AND a.fecha_orig BETWEEN fecha1 AND fecha2 DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) OPEN buscar ##### Envia la Informacion al printer de contabilidad START REPORT entrada14 TO "C:\\archivo" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) ##### Loop para enviar informacion al reporte WHILE STATUS != NOTFOUND FETCH buscar INTO p_cctb01.* IF status = NOTFOUND THEN EXIT WHILE END IF IF p_cctb01.monto_desc is null THEN LET p_cctb01.monto_desc = 0 END IF IF p_cctb01.valor is null THEN LET p_cctb01.valor = 0 END IF IF p_cctb01.tipo_doc = "AV" AND p_cctb01.num_doc != p_cctb01.aplica_a THEN LET p_cctb01.valor = 0 LET p_cctb01.monto_desc = 0 END IF IF p_cctb01.tipo_doc = "AV" THEN LET p_cctb01.valor = p_cctb01.valor * -1 LET p_cctb01.monto_desc = p_cctb01.monto_desc * -1 END IF #LET diario1.monto_desc = diario1.monto_desc * -1 IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = FALSE RETURN END IF OUTPUT TO REPORT entrada14(p_cctb01.*,fecha1,fecha2,detalle,entra) END WHILE FINISH REPORT entrada14 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local REPORT entrada14(x,fecha1,fecha2,detalle1,entrada) DEFINE x RECORD LIKE cctb00001.* ### Acumula los valores de las diferentes cuentas para entrada diario de nomina DEFINE debito,credito DECIMAL(12,2), detalle1 CHAR(30), mano_obra,sueldo_ind,monto_banco DECIMAL(12,2), total1,total2,total3,total4,total5,total6 DECIMAL(12,2), total7,total8 DECIMAL(12,2),## Acumula los totales DEBITO Y CREDITO tasa1 DECIMAL(5,2), ## Almacena la tasa de la tasa de cambio fecha1,fecha2 DATE, #### Almacena las fecha del rango de busqueda nomina CHAR(1), doble_on CHAR(2), doble_off CHAR(2), negrillas_on CHAR(6), negrillas_off CHAR(6), comp_on CHAR(2), comp_off CHAR(2) , doce CHAR(2), normal CHAR(2) , normall CHAR(3) , comprimido CHAR(3), hora CHAR(5), dpto INTEGER , nomina1 CHAR(24), entrada CHAR(14) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 FORMAT PAGE HEADER 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 normal = ASCII 27, ASCII 80 LET hora = time ##### Selecionado la descripcion del fecha2 LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_off PRINT COLUMN 1,"edprrp115", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 73, " Pag. ",pageno using "###" PRINT COLUMN 28, "Sistema de Contabilidad", COLUMN 73, today using "dd/mm/yy" PRINT COLUMN 15, "Entrada de Diario Cobros Clientes Locales-Ingresos", COLUMN 76, hora PRINT COLUMN 28, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" # , negrillas_off SKIP 1 LINE PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entrada,doble_off PRINT COLUMN 1, "Observaciones: _____________________________________" PRINT COLUMN 1, " _____________________________________" PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 56, "Debe", COLUMN 71, "Haber",negrillas_off PRINT COLUMN 1, "----------------------------------------", "----------------------------------------" SKIP 1 LINE ON EVERY ROW IF debito is null THEN LET debito = 0 END IF IF credito is null THEN LET credito = 0 END IF IF total1 IS NULL THEN LET total1 = 0 END IF IF total2 IS NULL THEN LET total2 = 0 END IF IF total4 IS NULL THEN LET total4 = 0 END IF LET total1 = total1 + x.valor LET total2 = total2 + x.monto_desc LET debito = debito + x.valor ON LAST ROW LET nombre_cta = NULL SELECT descripcion INTO nombre_cta FROM cgtb00001 WHERE cuenta_no = "1100" IF nombre_cta IS NULL THEN LET nombre_cta = "CUENTA SIN DESCRIPCION" END IF LET debito = 0 LET debito = SUM(x.valor+x.monto_desc) IF debito IS NULL THEN LET debito = 0 END IF LET debito = debito * -1 PRINT COLUMN 2, "1100", COLUMN 18, nombre_cta CLIPPED, COLUMN 50, debito using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"1100",null,null,null,null, null,detalle1,null,debito,0,null,user,current, null,null) END IF LET nombre_cta = NULL SELECT descripcion INTO nombre_cta FROM cgtb00001 WHERE cuenta_no = "1120" IF nombre_cta IS NULL THEN LET nombre_cta = "CUENTA SIN DESCRIPCION" END IF PRINT COLUMN 2, "1120", COLUMN 11, "4200", COLUMN 18, nombre_cta CLIPPED, COLUMN 65, debito using "###,###,##&.&&" IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,"1120",4200,null,null,null, null,detalle1,null,0,debito,null,user,current, null,null) END IF ###### Imprime total DEBITO y total CREDITO SKIP 1 LINE PRINT COLUMN 1,negrillas_on PRINT COLUMN 50,"--------------", COLUMN 65,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 50,debito USING "###,###,##&.&&", COLUMN 65,debito USING "###,###,##&.&&",negrillas_off SKIP 2 LINE PRINT COLUMN 1, detalle1 SKIP 30 LINE PRINT COLUMN 10,"--------------", COLUMN 35,"--------------", COLUMN 60,"--------------" PRINT COLUMN 10,"PREPARADO POR", COLUMN 35," REVISADO POR ", COLUMN 60,"AUTORIZADO POR" PRINT COLUMN 1,comp_off,negrillas_off SKIP 4 LINE 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 END FUNCTION FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) LET fecha = today USING "dd/mm/yy" LET hora = time LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 DISPLAY p_companias.nombre CLIPPED AT 4,lj ATTRIBUTE (REVERSE,blue) DISPLAY fecha AT 4,70 ATTRIBUTE (blue) DISPLAY "Sistema de Contabilidad General" AT 5,24 DISPLAY hora AT 6,73 ATTRIBUTE(blue) CALL fgl_drawbox(5,79,3,1) CALL fgl_drawbox(1,79,22,1) END FUNCTION