{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP001 OBJETIVO : Listar las Entrada de Diario MAT. PRIMA PROGRAMADOR : JUAN F. SOTO FECHA REALIZACION : FEBRERO 20, 1998. ------------------------------------------------------------------------------- } DATABASE exteriro GLOBALS DEFINE salir CHAR(1) DEFINE select_ac,select_ant,select_p CHAR(1000) DEFINE l,idx_ac,ano,idx_a,idx_c SMALLINT DEFINE ano_act,c_ano CHAR(4) DEFINE fecha_2 CHAR(8) DEFINE fecha_ini_per CHAR(8), p_compania RECORD LIKE companias.*, criterio CHAR(100) ###### Variables para busqueda de rango de fecha DEFINE detalle CHAR(30) DEFINE mes SMALLINT DEFINE tasa DECIMAL(5,2) DEFINE p_fecha,fecha1, fecha2 DATE DEFINE nominas CHAR(1) DEFINE entra CHAR(14) DEFINE entra1 CHAR(9) DEFINE tipo_papel SMALLINT DEFINE afecta CHAR(1) DEFINE mano_ob,costo_st,costo_st6,gastos DECIMAL(12,2) ###### Variables para almacenar los datos selecionados DEFINE selec5, selec6 CHAR(1500) ###### Variables que la almacenan la informacion enviada al reporte DEFINE acumulado RECORD cod_mov LIKE intb00006.cod_mov, #cod_cia LIKE intb00006.cod_cia, cod_n LIKE intb00002.cod_n, cod_grupo LIKE intb00002.cod_grupo, cod_tipo LIKE intb00002.cod_tipo, cod_sec LIKE intb00002.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, descrip_mov LIKE intb00005.descrip_mov, consumo LIKE intb00006.cantidad_2, costo_st LIKE intb00013.costo_st, ccosto_st LIKE intb00005.cuenta_1, cuenta_cia LIKE iptb00022.cuenta_no END RECORD DEFINE diario2 RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, costo DECIMAL(12,2) END RECORD DEFINE salir1 CHAR(1) DEFINE idx INTEGER END GLOBALS MAIN DEFER INTERRUPT CALL edprrp506() END MAIN FUNCTION edprrp506() OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM edfmrp001 FROM "edfmrp001" DISPLAY FORM edfmrp001 CALL pantalla() DISPLAY "edprrp001" AT 4,3 DISPLAY "Entrada de Diario de MAT. PRIMA" AT 6,22 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 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 = 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 CONSTRUCT BY NAME criterio ON a.cod_mov IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF # Busca la informacion requerida DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) LET select_ac = "SELECT a.cod_mov,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " e.descrip_esp,e.unidad_med,d.descrip_mov,SUM(a.cantidad_2), ", " MAX(b.costo_st),d.cuenta_1, ", " d.cuenta_2 ", "FROM intb00006 a,intb00002 c,intb00005 d,intb00001 e, OUTER intb00013 b ", "WHERE a.fecha between ? and ? and a.status_t is NULL AND ", " b.ano = YEAR(?) AND ", " b.mes_fin = 12 AND ", " a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ", " a.cod_tipo=b.cod_tipo AND a.cod_sec = b.cod_sec AND ", " a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo=c.cod_tipo AND a.cod_sec = c.cod_sec AND ", " a.cod_n = e.cod_n AND a.cod_grupo = e.cod_grupo AND ", " a.cod_tipo=e.cod_tipo AND a.cod_sec = e.cod_sec AND ", " a.cod_mov = d.cod_mov ", " AND ",criterio CLIPPED, "GROUP BY 1,2,3,4,5,6,7,8,11,12 " PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING fecha1,fecha2,fecha2 DISPLAY " " AT 19,14 ##### Envia la Informacion al printer de contabilidad ##### Loop para enviar informacion al reporte START REPORT opera TO "C:\\archivo" START REPORT xentrada TO "C:\\archivo1" DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) WHILE status != notfound FETCH actual INTO acumulado.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET int_flag = false RETURN END IF OUTPUT TO REPORT opera(acumulado.*,fecha1,fecha2,entra,detalle) OUTPUT TO REPORT xentrada(acumulado.*,fecha1,fecha2,entra,detalle) END WHILE FINISH REPORT opera FINISH REPORT xentrada RUN "type C:\\archivo > %USPRINT%" RUN "type C:\\archivo1 > %USPRINT%" END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local { 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) SELECT * INTO p_compania.* FROM companias LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 LET fecha = today USING "dd/mm/yy" LET hora = time 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) END FUNCTION REPORT opera(x,fecha1,fecha2,entrada,detalle1) DEFINE x RECORD cod_mov LIKE intb00006.cod_mov, #cod_cia LIKE intb00006.cod_cia, cod_n LIKE intb00002.cod_n, cod_grupo LIKE intb00002.cod_grupo, cod_tipo LIKE intb00002.cod_tipo, cod_sec LIKE intb00002.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, descrip_mov LIKE intb00005.descrip_mov, consumo LIKE intb00006.cantidad_2, costo_st LIKE intb00013.costo_st, ccosto_st LIKE intb00005.cuenta_1, cuenta_cia LIKE iptb00022.cuenta_no END RECORD DEFINE fecha1,fecha2 DATE DEFINE l SMALLINT DEFINE c_ano1 char(4) DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE total_p DECIMAL(12,3) DEFINE total_costo_st,t_t_total,t_t_t_total, t_total_costo_st,t_cantidad DECIMAL (12,2) DEFINE ttotal_costo_st,tt_t_total,tt_t_t_total, tt_total_costo_st,tt_cantidad DECIMAL (12,2) DEFINE total1,costo_st2,costo_st1,mano_ob1,gasto1,mano_ob2,gasto2 DECIMAL(12,2) DEFINE entrada CHAR(14) DEFINE detalle1 CHAR(30) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.cod_mov,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec 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 LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 PRINT COLUMN 1, comp_off,"edprrp001", COLUMN l, p_compania.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2 PRINT COLUMN l, "Sistema de Entradas Al Diario", COLUMN 75, today using "dd/mm/yy" { LET l = (80 - LENGTH(x.descrip_mov CLIPPED)) / 2 PRINT COLUMN l, x.descrip_mov CLIPPED,} PRINT COLUMN 78, hora PRINT COLUMN 28, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" PRINT comp_on SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "----------------------------------------" PRINT COLUMN 73, "Costo" PRINT COLUMN 4, "Movimiento", COLUMN 49, "Cantidad", COLUMN 73, "Material", COLUMN 90 , "Total" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "----------------------------------------" BEFORE GROUP OF x.cod_mov PRINT COLUMN 1, x.cod_mov using "&&", COLUMN 7, x.descrip_mov SKIP 1 LINE ON EVERY ROW IF x.consumo IS NOT NULL THEN PRINT COLUMN 1, x.cod_n USING "&","-", COLUMN 3, x.cod_grupo USING "&","-", COLUMN 5, x.cod_tipo USING "&&","-", COLUMN 8, x.cod_sec USING "&&&", COLUMN 13, x.descrip_esp," ", 2 spaces, COLUMN 42, x.consumo USING "###,###.###", COLUMN 70, x.costo_st USING "##,###.#####", COLUMN 90, x.consumo * x.costo_st using "##,###,###.##" END IF AFTER GROUP OF x.cod_mov LET ttotal_costo_st = GROUP SUM(x.costo_st*x.consumo) PRINT COLUMN 42, "--------------", COLUMN 90, "--------------" PRINT negrillas_on PRINT COLUMN 3, "Total ---->", COLUMN 42, GROUP SUM(x.consumo) using "###,###,###.###", COLUMN 90, ttotal_costo_st USING "##,###,###.###" PRINT negrillas_off AFTER GROUP OF x.cod_n LET ttotal_costo_st = GROUP SUM(x.costo_st*x.consumo) PRINT COLUMN 42, "--------------", COLUMN 90, "--------------" PRINT negrillas_on PRINT COLUMN 3, "Total ---->", COLUMN 42, GROUP SUM(x.consumo) using "###,###,###.###", COLUMN 90, ttotal_costo_st USING "##,###,###.###" PRINT negrillas_off END REPORT REPORT xentrada(x,fecha1,fecha2,entrada,detalle1) DEFINE x RECORD cod_mov LIKE intb00006.cod_mov, #cod_cia LIKE intb00006.cod_cia, cod_n LIKE intb00002.cod_n, cod_grupo LIKE intb00002.cod_grupo, cod_tipo LIKE intb00002.cod_tipo, cod_sec LIKE intb00002.cod_sec, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, descrip_mov LIKE intb00005.descrip_mov, consumo LIKE intb00006.cantidad_2, costo_st LIKE intb00013.costo_st, ccosto_st LIKE intb00005.cuenta_1, cuenta_cia LIKE iptb00022.cuenta_no END RECORD, fecha1,fecha2 DATE, nombre_cta CHAR(30) DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3), total_m,total_l,total_g,credito,debito,total_cia DECIMAL(12,4), p_cuenta CHAR(8), hora CHAR(5), entrada CHAR(14), detalle1 CHAR(50) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.cod_mov 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 LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 PRINT COLUMN 1, comp_off,"edprrp000", COLUMN l, p_compania.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" LET l = (80 - LENGTH("Sistema de Entradas Al Diario")) / 2 PRINT COLUMN l, "Sistema de Entradas Al Diario", COLUMN 75, today using "dd/mm/yy" LET l = (80 - LENGTH(x.descrip_mov CLIPPED)) / 2 PRINT COLUMN l, x.descrip_mov CLIPPED, COLUMN 78, hora PRINT COLUMN 28, "Del ",fecha1 USING "dd/mm/yy", " Al ",fecha2 PRINT comp_off PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entrada,doble_off PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------", negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 18, "Concepto", COLUMN 50, "Debe", COLUMN 71, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "----------------------------------------" AFTER GROUP OF x.cod_mov IF credito IS NULL THEN LET credito = 0 END IF IF debito IS NULL THEN LET debito = 0 END IF LET total_cia = GROUP SUM (x.costo_st*x.consumo) LET debito = debito + total_cia SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_cia LET p_cuenta = x.cuenta_cia PRINT COLUMN 2, p_cuenta, #COLUMN 10, x.departamento USING "<<<<", COLUMN 18, nombre_cta CLIPPED; IF total_cia < 0 THEN PRINT COLUMN 65, total_cia using "###,###,##&.&&" ELSE PRINT COLUMN 50, total_cia using "###,###,##&.&&" END IF IF afecta = "S" THEN IF total_cia < 0 THEN LET total_cia = total_cia * - 1 INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,p_cuenta,null,null,null, null,null,detalle1,null,0,total_cia,null,user, current,null,null) ELSE INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,p_cuenta,null,null,null, null,null,detalle1,null,total_cia,0,null,user, current,null,null) END IF END IF #------------------------------------------------------------------------ # MOVIMIENTOS CON CUENTAS QUE SU VALOR VAN DEL LADO DEBITO #------------------------------------------------------------------------ IF x.ccosto_st IS NOT NULL THEN LET total_m = GROUP SUM (x.costo_st*x.consumo) LET credito = total_m + credito IF total_m != 0 THEN SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = x.ccosto_st LET p_cuenta = x.ccosto_st PRINT COLUMN 2, p_cuenta, #COLUMN 10, x.departamento USING "<<<<", COLUMN 18, nombre_cta CLIPPED; IF total_m < 0 THEN PRINT COLUMN 50, total_m using "###,###,##&.&&" ELSE PRINT COLUMN 65, total_m using "###,###,##&.&&" END IF IF afecta = "S" THEN IF total_m < 0 THEN LET total_m = total_m * -1 INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,p_cuenta,null,null,null, null,null,detalle1,null,total_m,0,null,user, current,null,null) ELSE INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,p_cuenta,null,null,null, null,null,detalle1,null,0,total_m,null,user, current,null,null) END IF END IF END IF END IF ON LAST ROW SKIP 1 LINE PRINT COLUMN 1,negrillas_on PRINT COLUMN 50,"--------------", COLUMN 65,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 50,debito USING "###,###,##&.&&", COLUMN 65,credito USING "###,###,##&.&&",negrillas_off SKIP 2 LINE PRINT COLUMN 1, detalle1 SKIP 8 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 END REPORT