{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP115 OBJETIVO : Listar las Entrada de Diario Cobros Clientes Locales Ingresos PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Julio 28, 1993 ------------------------------------------------------------------------------- } SCHEMA smarmotech GLOBALS ###### Variables para busqueda de rango de fecha DEFINE afecta CHAR(2), HANDLER om.SaxDocumentHandler, numero_ent CHAR(2), nombre_cta,detalle CHAR(100), u_mes,lj,mes,ultimo SMALLINT , p_ano,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 tipo_Doc VARCHAR(2), num_doc,aplica_a INT, fecha DATE, valor,monto_desc DEC(18,2) END RECORD, 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), usuarios,clave CHAR(80), impresor,ventas SMALLINT, tiempo CHAR(4) DEFINE p_entrada RECORD fecha DATE, entrada_no LIKE cgtb00004.ref, detalles LIKE cgtb00004.detalles, detalle_1 LIKE cgtb00004.detalles END RECORD DEFINE normal,negrilla_on,negrillas_of,comp_on,comp_off,doce,doble_on,doble_off CHAR(3),xtipoVentas VARCHAR(50), cmd,imprime,copia CHAR(150),archivo CHAR(80) ###### 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 CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave 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 fecha1,fecha2,entra,afecta,detalle BEFORE INPUT LET ventas = 1 SELECT a.descripcion INTO xtipoventas FROM vetb00061 a WHERE a.ventas = ventas DISPLAY BY NAME xtipoventas 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 LET numero_ent = 15 LET p_ano = YEAR(fecha1) # CUANDO LOS PERIDOS SON DIFERENTES A LOS MESES CALENDARIO DEBEMOS # UTILIZAR ESTE QUERY #SELECT MAX(a.mes) INTO u_mes FROM prdtable a #WHERE a.ano = p_ano and a.fecha_inicio <= p_entrada.fecha AND # a.fecha_corte >= fecha1 CALL controlNumericoED(15,fecha1) RETURNING entra { LET tiempo = MONTH(fecha1) using "&&",p_ano[3,4] SELECT MAX(a.ref[7,9]) INTO ultimo FROM cgtb00004 a WHERE a.ref[4,5] = numero_ent and a.ref[11,14] = tiempo IF ultimo is null THEN LET ultimo = 0 END IF LET ultimo = ultimo + 1 LET entra = "ED.15-",ultimo USING "&&&","/",tiempo } DISPLAY BY NAME entra 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 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 AFTER INPUT IF INT_FLAG THEN ERROR "OPERACION CANCELADA" LET INT_FLAG = FALSE RETURN END IF IF afecta = 'SI' THEN 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 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 { CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia } CALL configureoutput("SVG") RETURNING HANDLER START REPORT entrada14 TO XML HANDLER handler # Busca la informacion requerida DECLARE buscar CURSOR FOR SELECT a.tipo_Doc,a.num_doc,a.aplica_a,a.fecha_orig,a.valor,a.monto_desc FROM cctb00001 a,vetb00060 b WHERE a.status_t IS NULL AND (a.tipo_doc IN ("AV")) AND a.num_doc = a.aplica_a AND a.tipo_cliente = b.tipo_cliente AND b.ventas = ventas AND a.fecha_orig BETWEEN fecha1 AND fecha2 UNION SELECT a.tipo_Doc,a.num_doc,a.aplica_a,a.fecha_orig,a.valor,a.monto_desc FROM cctb00001 a,vetb00060 b WHERE a.status_t IS NULL AND (a.tipo_doc IN ("PG","PC")) AND a.num_doc = a.aplica_a AND a.tipo_cliente = b.tipo_cliente AND b.ventas = ventas 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 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 imprime 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 tipo_Doc VARCHAR(2), num_doc,aplica_a INT, fecha DATE, valor,monto_desc DEC(18,2) END RECORD ### Acumula los valores de las diferentes cuentas para entrada diario de nomina DEFINE debito,credito DECIMAL(12,2), detalle1 CHAR(100), 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: COBROS VENTAS LOCALES" 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 = "SI" THEN INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,detalle_1,debito,credito,us_crea,fech_crea) VALUES(fecha2,1,entrada,"1100", detalle1,debito,0,usuarios,GETDATE()) 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 = "SI" THEN INSERT INTO cgtb00004 (fecha,tipo,ref,cuenta_no,departamento,detalle_1,debito,credito,us_crea,fech_crea) VALUES(fecha2,1,entrada,"1120",4200, detalle1,0,debito,usuarios,GETDATE()) 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 FUNCTION cventas() DEFINE kventas SMALLINT, dventas CHAR(30), pventas ui.combobox LET pventas = ui.combobox.forname("formonly.ventas") DECLARE bventas CURSOR FOR SELECT a.ventas,a.descripcion FROM vetb00061 a CALL pventas.clear() FOREACH bventas INTO kventas,dventas CALL pventas.additem(kventas,dventas) END FOREACH CALL pventas.additem(99,"TODAS") END FUNCTION