{ ------------------------------------------------------------------------------- PROGRAMA : EDPRRP071 OBJETIVO : Transferencia de Inventario a Los Vendedores PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Septiembre 19, 1996. ------------------------------------------------------------------------------- } DATABASE rayovac GLOBALS DEFINE tiene CHAR(1) DEFINE mes CHAR(2) DEFINE e36,e31,i1,idx,numero_msg,tipo_papel SMALLINT DEFINE salir2,salir,salir1,primera CHAR(1) DEFINE reporte_20 RECORD cod_mov SMALLINT, sec_cliente INTEGER, cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp CHAR(30), unidad_med CHAR(4), cantidad INTEGER, cuenta_no LIKE vetb00033.cuenta_no, costo DECIMAL(8,4), cod_g LIKE intb00001.cod_n, codigo CHAR(10) END RECORD DEFINE costos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, material LIKE iptb00004.material, labor LIKE iptb00004.labor, gasto_ind LIKE iptb00004.gasto_ind END RECORD DEFINE actual RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp LIKE intb00001.descrip_esp, unidad_med LIKE intb00001.unidad_med, balance LIKE iptb00006.cantidad_2 END RECORD DEFINE anterior RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, balance LIKE iptb00006.cantidad_2 END RECORD DEFINE selec,select_cost,select_act,select_ant CHAR(500) DEFINE entrada71_b ARRAY [200] OF RECORD cuenta_no LIKE cgtb00004.cuenta_no, descripcion CHAR(25), debito LIKE cgtb00004.debito, credito LIKE cgtb00004.credito END RECORD DEFINE entrada71 ARRAY [200] OF RECORD cuenta_no LIKE cgtb00004.cuenta_no, descripcion CHAR(25), debito LIKE cgtb00004.debito, credito LIKE cgtb00004.credito END RECORD, entra CHAR(14), entra1 CHAR(5), fecha1,fecha2,p_fecha DATE, afecta CHAR(1), detalle CHAR(30) END GLOBALS MAIN CALL edprrp071() END MAIN FUNCTION edprrp071() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM edfmrp071 FROM "edfmrp071" DISPLAY FORM edfmrp071 CALL pantalla() DISPLAY "edprrp071" AT 4,3 DISPLAY "Transferencia de Inventario a Los Vendedores" AT 6,23 LET tipo_papel = 1 CALL msgrp000(tipo_papel) 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[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 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET selec = "SELECT a.cod_mov,a.cod_sp_sec,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,", "b.descrip_esp, ", " b.unidad_med,a.cantidad_2,d.cuenta_no ", "FROM iptb00017 a,intb00001 b, vetb00033 d ", "WHERE (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_sp_sec = d.sec_cliente AND ", " a.fecha BETWEEN '010101' AND ?) AND ", " (a.cod_mov IN (33,34)) AND a.status_t IS NULL ", " ORDER BY 2,3,4,5,6" DISPLAY "<< Estoy Buscando Informacion... Espere >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM selec DECLARE busca CURSOR FOR comando OPEN busca USING fecha2 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) START REPORT reprte20 TO PIPE "lp -dcentral" LET idx = 1 WHILE status != notfound FETCH busca INTO reporte_20.* IF status = notfound THEN EXIT WHILE END IF IF reporte_20.cod_n = 3 THEN LET reporte_20.cod_g = 3 ELSE LET reporte_20.cod_g = 6 END IF LET reporte_20.codigo = reporte_20.cod_n USING "&", reporte_20.cod_grupo USING "&", reporte_20.cod_tipo USING "&&", reporte_20.cod_sec USING "&&&" LET tiene = "S" SELECT material+labor+gasto_ind,max(mes_ini),max(mes_fin) INTO reporte_20.costo FROM iptb00004 WHERE (cod_n = reporte_20.cod_n and cod_grupo = reporte_20.cod_grupo and cod_tipo = reporte_20.cod_tipo and cod_sec = reporte_20.cod_sec and ventas = "1" and ano = YEAR(fecha2)) and status_t is null GROUP BY 1 IF STATUS = NOTFOUND THEN LET reporte_20.costo = 0 LET tiene = "N" END IF OUTPUT TO REPORT reprte20(reporte_20.*) END WHILE FINISH REPORT reprte20 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reprte20(x) DEFINE x RECORD cod_mov SMALLINT, sec_cliente INTEGER, cod_n LIKE intb00001.cod_n, cod_grupo LIKE intb00001.cod_grupo, cod_tipo LIKE intb00001.cod_tipo, cod_sec LIKE intb00001.cod_sec, descrip_esp CHAR(30), unidad_med CHAR(4), cantidad INTEGER, cuenta_no LIKE vetb00033.cuenta_no, costo DECIMAL(8,4), cod_g LIKE intb00001.cod_n, codigo CHAR(10) END RECORD, i,salida,entrada INTEGER, dife,t_debito,t_credito,c_salida,c_entrada DECIMAL(12,3), p_descripcion CHAR(25) DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE hora CHAR(5) DEFINE descr CHAR(15) DEFINE nombre1 CHAR(30) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 #ORDER BY x.sec_cliente,x.cod_g,x.codigo FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comp_on = ASCII 31 LET comp_off = ASCII 029 LET doce = ASCII 030 LET hora = time PRINT COLUMN 1,comp_on PRINT COLUMN 1, "edprrp071", COLUMN 49, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 137, "Pag. ",pageno using "###" PRINT COLUMN 49, " Sistema de Contabilidad General", COLUMN 137, today using "dd/mm/yy" PRINT COLUMN 49, " Transferencia de Inventario A Los Vendedores", COLUMN 140, hora BEFORE GROUP OF x.sec_cliente SKIP 1 LINES PRINT COLUMN 1,"Rango de Fecha: Del ", fecha1 USING "dd/mm/yy", " Al ",fecha2 USING "dd/mm/yy" PRINT COLUMN 1,"--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------" PRINT COLUMN 96, "Valor", COLUMN 109, "Valor", COLUMN 118, "Diferencia", COLUMN 135, "Diferencia" PRINT COLUMN 1, "Codigo", COLUMN 53, "Salida", COLUMN 65, "Entrada", COLUMN 85, "Std.", COLUMN 96, "Salida", COLUMN 109, "Entrada", COLUMN 118, "Unidad", COLUMN 135, "Valor" PRINT COLUMN 1,"--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------" SKIP 1 LINE SELECT a.nombre INTO nombre1 FROM vetb00004 a WHERE a.sec_cliente = x.sec_cliente PRINT COLUMN 1, "Cliente: ","(",x.sec_cliente USING "<<<<",")", nombre1 CLIPPED BEFORE GROUP OF x.cod_g IF x.cod_g = 3 THEN LET descr = "RAY.O.VAC" ELSE LET descr = "DISTRIBIDORA" END IF PRINT COLUMN 1, descr AFTER GROUP OF x.codigo LET entrada = GROUP SUM(x.cantidad) WHERE x.cod_mov = 33 LET salida = GROUP SUM(x.cantidad) WHERE x.cod_mov = 34 LET c_entrada = GROUP SUM(x.cantidad * x.costo) WHERE x.cod_mov = 33 LET c_salida = GROUP SUM(x.cantidad * x.costo) WHERE x.cod_mov = 34 IF entrada IS NULL THEN LET entrada = 0 END IF IF salida IS NULL THEN LET salida = 0 END IF IF c_entrada IS NULL THEN LET c_entrada = 0 END IF IF c_salida IS NULL THEN LET c_salida = 0 END IF PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",x.descrip_esp," ",x.unidad_med; IF tiene = "S" THEN PRINT COLUMN 47, salida USING "###,###,###", COLUMN 62, entrada USING "###,###,###", COLUMN 74, x.costo USING "#,###,###.####", COLUMN 89, c_salida USING "##,###,###.##", COLUMN 103, c_entrada USING "##,###,###.##", COLUMN 117, salida + entrada USING "###,###,###", COLUMN 131, c_salida + c_entrada USING "###,###,###.##" ELSE PRINT COLUMN 47, "N O T I E N E C O S T O S T A N D A R D" END IF AFTER GROUP OF x.cod_g LET entrada = GROUP SUM(x.cantidad) WHERE x.cod_mov = 33 LET salida = GROUP SUM(x.cantidad) WHERE x.cod_mov = 34 LET c_entrada = GROUP SUM(x.cantidad * x.costo) WHERE x.cod_mov = 33 LET c_salida = GROUP SUM(x.cantidad * x.costo) WHERE x.cod_mov = 34 IF entrada IS NULL THEN LET entrada = 0 END IF IF salida IS NULL THEN LET salida = 0 END IF IF c_entrada IS NULL THEN LET c_entrada = 0 END IF IF c_salida IS NULL THEN LET c_salida = 0 END IF SKIP 1 LINE PRINT COLUMN 20, "Total Compania", COLUMN 48, salida USING "###,###,###", COLUMN 62, entrada USING "###,###,###", COLUMN 89, c_salida USING "##,###,###.##", COLUMN 103, c_entrada USING "##,###,###.##", COLUMN 117, salida + entrada USING "###,###,###", COLUMN 131, c_salida + c_entrada USING "###,###,###.##" LET dife = c_salida + c_entrada IF dife < 0 THEN LET dife = dife * - 1 END IF IF dife > 0 THEN IF x.cod_g = 3 THEN SELECT a.descripcion INTO p_descripcion FROM cgtb00001 a WHERE a.cuenta_no = "1131" LET entrada71[idx].cuenta_no = "1131" LET entrada71[idx].descripcion = p_descripcion LET entrada71[idx].credito = c_salida + c_entrada LET idx = idx + 1 ELSE SELECT a.descripcion INTO p_descripcion FROM cgtb00001 a WHERE a.cuenta_no = "1136" LET entrada71[idx].cuenta_no = "1136" LET entrada71[idx].descripcion = p_descripcion LET entrada71[idx].credito = c_salida + c_entrada LET idx = idx + 1 END IF END IF SKIP 1 LINE AFTER GROUP OF x.sec_cliente LET entrada = GROUP SUM(x.cantidad) WHERE x.cod_mov = 33 LET salida = GROUP SUM(x.cantidad) WHERE x.cod_mov = 34 LET c_entrada = GROUP SUM(x.cantidad * x.costo) WHERE x.cod_mov = 33 LET c_salida = GROUP SUM(x.cantidad * x.costo) WHERE x.cod_mov = 34 IF entrada IS NULL THEN LET entrada = 0 END IF IF salida IS NULL THEN LET salida = 0 END IF IF c_entrada IS NULL THEN LET c_entrada = 0 END IF IF c_salida IS NULL THEN LET c_salida = 0 END IF PRINT COLUMN 20, "Total Cliente-Vendedor", COLUMN 48, salida USING "###,###,###", COLUMN 62, entrada USING "###,###,###", COLUMN 89, c_salida USING "##,###,###.##", COLUMN 103, c_entrada USING "##,###,###.##", COLUMN 117, salida + entrada USING "###,###,###", COLUMN 131, c_salida + c_entrada USING "###,###,###.##", x.cuenta_no LET dife = c_salida + c_entrada IF dife < 0 THEN LET dife = dife * -1 END IF IF dife > 0 THEN SELECT a.descripcion INTO p_descripcion FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no LET entrada71[idx].cuenta_no = x.cuenta_no LET entrada71[idx].descripcion = p_descripcion LET entrada71[idx].debito = c_salida + c_entrada LET idx = idx + 1 END IF SKIP TO TOP OF PAGE ON LAST ROW LET entrada = SUM(x.cantidad) WHERE x.cod_mov = 33 LET salida = SUM(x.cantidad) WHERE x.cod_mov = 34 LET c_entrada = SUM(x.cantidad * x.costo) WHERE x.cod_mov = 33 LET c_salida = SUM(x.cantidad * x.costo) WHERE x.cod_mov = 34 PRINT COLUMN 20, "Total General ", COLUMN 48, salida USING "###,###,###", COLUMN 62, entrada USING "###,###,###", COLUMN 89, c_salida USING "##,###,###.##", COLUMN 103, c_entrada USING "##,###,###.##", COLUMN 117, salida + entrada USING "###,###,###", COLUMN 131, c_salida + c_entrada USING "###,###,###.##" PRINT COLUMN 1,comp_off SKIP TO TOP OF PAGE PRINT comp_off,doce SKIP 1 LINES PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entra,doble_off PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 17, "Catalogo", COLUMN 26, "Refe", COLUMN 41, "Concepto", COLUMN 75, "Debe", COLUMN 93, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" IF t_debito IS NULL THEN LET t_debito = 0 END IF IF t_credito IS NULL THEN LET t_credito = 0 END IF LET i1 = 1 FOR i = 1 TO idx IF entrada71[i].debito IS NOT NULL THEN LET entrada71_b[i1].cuenta_no = entrada71[i].cuenta_no LET entrada71_b[i1].descripcion = entrada71[i].descripcion LET entrada71_b[i1].debito = entrada71[i].debito LET i1 = i1 + 1 END IF IF entrada71[i].cuenta_no = "1131" THEN LET e31 = i END IF IF entrada71[i].cuenta_no = "1136" THEN LET e36 = i END IF END FOR FOR i = 1 TO idx IF entrada71[i].credito IS NOT NULL THEN IF entrada71[i].cuenta_no = "1131" THEN IF entrada71[i].credito < 0 THEN LET entrada71[i].credito = entrada71[i].credito * -1 END IF IF entrada71_b[e31].credito IS NULL THEN LET entrada71_b[e31].credito = 0 END IF LET entrada71_b[e31].cuenta_no = entrada71[i].cuenta_no LET entrada71_b[e31].descripcion = entrada71[i].descripcion LET entrada71_b[e31].credito = entrada71[i].credito + entrada71_b[e31].credito END IF IF entrada71[i].cuenta_no = "1136" THEN IF entrada71[i].credito < 0 THEN LET entrada71[i].credito = entrada71[i].credito * -1 END IF IF entrada71_b[e36].credito IS NULL THEN LET entrada71_b[e36].credito = 0 END IF LET entrada71_b[e36].cuenta_no = entrada71[i].cuenta_no LET entrada71_b[e36].descripcion = entrada71[i].descripcion LET entrada71_b[e36].credito = entrada71[i].credito + entrada71_b[e36].credito END IF END IF END FOR FOR i = 1 TO idx LET entrada71[i].cuenta_no = null LET entrada71[i].descripcion = null LET entrada71[i].debito = null LET entrada71[i].credito = null END FOR FOR i = 1 TO idx LET entrada71[i].cuenta_no = entrada71_b[i].cuenta_no LET entrada71[i].descripcion = entrada71_b[i].descripcion LET entrada71[i].debito = entrada71_b[i].debito LET entrada71[i].credito = entrada71_b[i].credito END FOR FOR i =1 TO idx IF entrada71[i].cuenta_no IS NOT NULL THEN PRINT COLUMN 2, entrada71[i].cuenta_no, COLUMN 41, entrada71[i].descripcion, COLUMN 68, entrada71[i].debito USING "##,###,###.##", COLUMN 85, entrada71[i].credito USING "##,###,###.##" IF entrada71[i].credito < 0 THEN LET entrada71[i].credito = entrada71[i].credito * -1 END IF IF entrada71[i].debito < 0 THEN LET entrada71[i].debito = entrada71[i].debito * -1 END IF IF entrada71[i].debito IS NOT NULL THEN LET t_debito = t_debito + entrada71[i].debito END IF IF entrada71[i].credito IS NOT NULL THEN LET t_credito= t_credito+ entrada71[i].credito END IF IF entrada71[i].debito IS NULL THEN LET entrada71[i].debito = 0 END IF IF entrada71[i].credito IS NULL THEN LET entrada71[i].credito = 0 END IF IF afecta = "S" THEN IF entrada71[i].debito > 0 or entrada71[i].credito > 0 THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entra, entrada71[i].cuenta_no, null,null, null,null,null, detalle,null, entrada71[i].debito, entrada71[i].credito,null,user, current,null,null) END IF END IF END IF END FOR SKIP 1 LINE PRINT COLUMN 68, "------------", COLUMN 85, "------------" PRINT COLUMN "Totales---> ", COLUMN 68, t_debito USING "##,###,###.##", COLUMN 85, t_credito USING "##,###,###.##" LET t_debito = 0 LET t_credito = 0 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 { Esta funcion se utiliza para desplegar mensajes de errores en todos los sistemas de Ray-O-Vac Dominicana. Esta funcion busca el mensaje deseado en la tabla "msgtable" y lo despliega en la linea de mensajes } FUNCTION msg(numero_msg) DEFINE numero_msg SMALLINT DEFINE descripcion CHAR (60) SELECT desc_msg INTO descripcion FROM msgtable WHERE cod_msg = numero_msg IF status = NOTFOUND THEN LET numero_msg = 22 SELECT desc_msg INTO descripcion FROM msgtable WHERE cod_msg = numero_msg ERROR descripcion ATTRIBUTE(BOLD) ELSE ERROR descripcion ATTRIBUTE(BOLD) LET numero_msg = 0 END IF RUN "type C:\\archivo > %USPRINT%" END FUNCTION FUNCTION pantalla() DEFINE fecha CHAR(8), hora char(5) LET fecha = today USING "dd/mm/yy" LET hora = time DISPLAY "R A Y . O . V A C D O M I N I C A N A, S. A." AT 4,17 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