{ ============================================================================== PROGRAMA : LQPRRP001 SISTEMA : Sistema de Liquidacion Materiales Objetivo : Liquidacion Mercancia Compras Exterior Mat. Prima Nota: En los gastos y otros se segrega la entrada "ED.64" PROGRAMADOR : Juan F. Soto FECHA : Mayo 13, 1994 MODIFICADO : FECHA : ============================================================================== } GLOBALS "lqprgb000.4gl" ###### Variables para busqueda de rango de fecha DEFINE elije,imp,afecta CHAR(1) DEFINE m_mes,mes SMALLINT DEFINE chequea_ent,p_ano CHAR(4) DEFINE detalla CHAR(30) DEFINE no_entrada CHAR(14) DEFINE fecha1, fecha2 DATE DEFINE entra CHAR(14), p_fecha CHAR(10) DEFINE entra1 CHAR(5) DEFINE t_costst,p_fob,valor,mano_obra,sueldo_ind,monto_banco, interes,val_64 DECIMAL(12,2) DEFINE orden CHAR(10) DEFINE t_variacion DECIMAL(12,2) ###### Variables que la almacenan la informacion enviada al reporte DEFINE diario1 RECORD cuenta_no LIKE cgtb00001.cuenta_no, debito DECIMAL(18,2) END RECORD DEFINE i SMALLINT DEFINE fecha_inicial,fecha_final DATE DEFINE tasa DECIMAL(8,2) DEFINE primera,imp_entrada CHAR(1) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "decomarmol" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL lqprrp001() END MAIN FUNCTION lqprrp001() DEFINE busca_datos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion CHAR(30), unidad CHAR(3), cod_sp SMALLINT, cod_sp_sec SMALLINT, entrada INTEGER, num_doc INTEGER, num_oc INTEGER, tipo CHAR(2), cantidad DECIMAL(12,2), precio DECIMAL(12,2), flete DECIMAL(12,2), imp_colect DECIMAL(12,2), imp_aduana DECIMAL(12,2), tasa DECIMAL(8,2), mercado CHAR(1), cost_std LIKE intb00013.costo_st, clave CHAR(6) END RECORD LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM lqfmrp001 FROM "lqfmrp001" DISPLAY FORM lqfmrp001 LET tipo_papel = 2 CALL msgrp000(tipo_papel) INPUT BY NAME p_ano,m_mes,elije,imp_entrada,imp AFTER FIELD p_ano IF p_ano is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano END IF AFTER FIELD m_mes IF m_mes is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD m_mes END IF SELECT a.fecha_inicio,a.fecha_corte INTO fecha_inicial,fecha_final FROM prdtable a WHERE a.mes = m_mes and a.ano = p_ano DISPLAY BY NAME fecha_inicial,fecha_final ATTRIBUTE(BOLD) LET chequea_ent = m_mes using "&&",p_ano[3,4] LET no_entrada = "ED.27-000/",chequea_ent LET p_fechas = fecha_final using "ddmmyy" CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD p_ano END IF AFTER FIELD elije IF elije = "E" THEN SELECT unique a.ref FROM cgtb00004 a WHERE a.ref = no_entrada IF status != notfound THEN LET numero_msg = 222 CALL msg(numero_msg) #NEXT FIELD p_ano END IF END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET chstd = FGL_WINQUESTION("PREGUNTA","Actualiza Costos STD?","yes","Yes|no","question",0) LET chstd = UPSHIFT(chstd) LET respuesta = FGL_WINQUESTION("IMPRESION","DESEA REPORTE EN PANTALLA?","NO","NO|YES","QUESTION",0) LET primera = "S" CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia IF respuesta = "YES" THEN START REPORT liquida TO SCREEN ELSE START REPORT liquida TO archivo END IF DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) DELETE FROM cttb00032 WHERE mes = m_mes and ano = p_ano AND tipo = '1' DELETE FROM cttb00013 WHERE fecha_lq = fecha_final and tipo_lq = elije AND tipo_orden = 1 DECLARE busca CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.descrip_esp,a.unidad_med, d.cod_sp,d.cod_sp_sec,d.rep_entrada,c.rep_entrada,c.num_oc,c.tipo, c.cantidad_oc,c.cantidad_oc*c.fob,c.costo_flete,c.impuesto,c.otros_g,d.prima_us,d.liquidada FROM intb00001 a,cgtb00018 c,cgtb00017 d WHERE 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 c.rep_entrada = d.rep_entrada and d.liquidada[1] = elije and d.fecha between fecha_inicial and fecha_final and c.status_t is null AND c.num_oc = d.num_oc and c.tipo = d.tipo AND c.status_t IS NULL AND d.status_t is null AND c.tipo = "01" and c.tipo = d.tipo ORDER BY c.num_oc,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FOREACH busca INTO busca_datos.* LET orden = busca_datos.num_oc USING "<<<<" IF elije != "L" THEN # Busca el monto pagado al colector { SELECT sum(debito-credito) INTO busca_datos.imp_colect FROM cgtb00004 WHERE (cuenta_no = "1161-01" and status_t is null and fecha <= fecha_final and cod_sec = cod_sec and num_doc = orden) } IF busca_datos.imp_colect is null THEN LET busca_datos.imp_colect = 0 END IF IF busca_datos.imp_colect < 0 THEN LET busca_datos.imp_colect = busca_datos.imp_colect * -1 END IF #Busca la entrada 64 del rango especificado SELECT sum(a.debito-a.credito) INTO val_64 FROM cgtb00004 a WHERE (a.fecha between fecha_inicial and fecha_final and a.ref[1,5] = "ED.64") AND (a.cod_aux = a.cod_aux and a.cod_sec = a.cod_sec and a.num_doc = orden and a.status_t is null) IF val_64 is null THEN LET val_64 = 0 END IF { # Busca los gastos aduanales SELECT sum(debito-credito) INTO busca_datos.imp_aduana FROM cgtb00004 WHERE (cuenta_no = "1161" and status_t is null and fecha <= fecha_final and cod_sec = cod_sec and num_doc = orden) } END IF IF busca_datos.imp_aduana is null THEN LET busca_datos.imp_aduana = 0 END IF IF busca_datos.imp_aduana < 0 THEN LET busca_datos.imp_aduana = busca_datos.imp_aduana * -1 END IF IF busca_datos.imp_aduana != 0 THEN LET busca_datos.imp_aduana = busca_datos.imp_aduana - val_64 END IF # Busca el costos standard LET busca_datos.cost_std = 0 SELECT a.costo_st INTO busca_datos.cost_std FROM intb00013 a WHERE a.ano = year(fecha_inicial) and a.cod_n = busca_datos.cod_n and a.cod_grupo=busca_datos.cod_grupo and a.cod_tipo=busca_datos.cod_tipo AND a.cod_sec = busca_datos.cod_sec and a.status_t is null IF busca_datos.cost_std is null THEN LET busca_datos.cost_std = 0 END IF LET busca_datos.clave = busca_datos.num_oc using "<<<<",busca_datos.tipo OUTPUT TO REPORT liquida(busca_datos.*) END FOREACH FINISH REPORT liquida IF respuesta <> "YES" THEN IF imp = "S" THEN RUN imprime END IF END IF IF imp_entrada = "S" THEN CALL entrada027() END IF CLEAR SCREEN END FUNCTION REPORT liquida(x) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion CHAR(30), unidad CHAR(3), cod_sp SMALLINT, cod_sp_sec SMALLINT, entrada INTEGER, num_doc INTEGER, num_oc INTEGER, tipo CHAR(2), cantidad DECIMAL(12,2), precio DECIMAL(12,2), flete DECIMAL(12,2), imp_colect DECIMAL(12,2), imp_aduana DECIMAL(12,2), tasa DECIMAL(8,2), mercado CHAR(1), cost_std LIKE intb00013.costo_st, clave CHAR(6) END RECORD DEFINE n_reg SMALLINT # DEFINE fecha1,fecha2 DATE DEFINE variacion,precio_std,fob,c_f,seguro,cost_pl,valor,t_fob,t_flete, t_seguro,t_cf,t_impcol,t_impaduana,t_dollar,t_costopl,t_recibida, t_precio,o_variacion,total_cf,o_impaduana,o_impcolect,o_dollar,o_cf, balan_act, ot_fob, ot_flete, ot_cf, ot_seguro, ot_impcol, ot_impaduana, ot_dollar, ot_costopl, ot_costo, ot_precio, ot_costst, ot_variacion DECIMAL(12,2) DEFINE descrip1 CHAR(30) DEFINE t_costo, costo_unit DECIMAL(12,4) DEFINE p_cuenta CHAR(8) DEFINE otras_cta CHAR(8) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE doble_on CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) OUTPUT ## DEFINICION DE LOS MARGENES DE IMPRESION TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 3 FORMAT PAGE HEADER LET doble_on = ASCII 14 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 doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS LET l = (210 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 2, doce,comp_on,"lqprrp001", COLUMN l, p_compania.nombre CLIPPED, COLUMN 210, "Pag. ",pageno using "###" LET l = (210 - LENGTH("Sistema de Contabilidad de Costo"))/2 PRINT COLUMN l, "Sistema de Contabilidad de Costo", COLUMN 210, today using "dd/mm/yy" LET l = (210 - LENGTH("Liquidacion Mercancia Materia Prima"))/2 PRINT COLUMN l, "Liquidacion Mercancia Materia Prima", COLUMN 210, hora PRINT COLUMN 98, "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy" PRINT negrillas_on PRINT COLUMN 1, "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------", "-------------------------------------------------------" PRINT COLUMN 134,"GASTO" PRINT COLUMN 50, "Reporte", COLUMN 61, "Ordenes", COLUMN 96, " COSTO &", COLUMN 121, " IMPUESTO", 2 SPACES, " ADUANAL", 2 SPACES, " PRIMA ", 2 SPACES, " COSTO EN", 2 SPACES, " UNIDADES", 2 SPACES, " COSTO", 2 SPACES, " PRECIO", 2 SPACES, " COSTO" PRINT COLUMN 1, "Materiales", COLUMN 50, "Entrada ", COLUMN 61, "Compras", COLUMN 76, "FOB ", COLUMN 88, "FLETE", 2 SPACES, " FLETE", 2 SPACES, " SEGURO", 2 SPACES, " COLECTOR", 2 SPACES, " Y OTROS", 2 SPACES, " DOLLAR", 2 SPACES, " PLANTA", 2 SPACES, " RECIBIDA", 2 SPACES, " UNIT.", 2 SPACES, " STD", 2 SPACES, " STD", 14 SPACES, " VARIACION" PRINT COLUMN 1, "----------------------------------------------------", "----------------------------------------------------", "----------------------------------------------------", "----------------------------------------------------", "-----------------------------------------------------" IF primera = "S" THEN LET t_fob = 0 LET t_flete = 0 LET t_seguro = 0 LET t_cf = 0 LET t_impcol = 0 LET t_impaduana = 0 LET t_dollar = 0 LET t_costopl = 0 LET t_recibida = 0 LET t_costo = 0 LET t_precio = 0 LET t_costst = 0 LET t_variacion = 0 LET o_variacion = 0 LET o_impaduana = 0 LET o_impcolect = 0 LET o_dollar = 0 LET o_cf = 0 LET ot_fob = 0 LET ot_flete = 0 LET ot_cf = 0 LET ot_seguro = 0 LET ot_impcol = 0 LET ot_impaduana = 0 LET ot_dollar = 0 LET ot_costopl = 0 LET ot_costo = 0 LET ot_precio = 0 LET ot_costst = 0 LET ot_variacion = 0 LET idx = 1 LET primera = "N" END IF BEFORE GROUP OF x.clave # Busca La suma del costo y flete { SELECT SUM(a.fob+a.costo_flete),count(*) INTO total_cf,n_reg FROM cgtb00018 a,cgtb00017 b WHERE (a.num_oc = x.num_oc) and (a.tipo = x.tipo) and (b.fecha between fecha_inicial and fecha_final) and (a.num_oc = b.num_oc and a.tipo = b.tipo) and (a.status_t is null) and (a.rep_entrada = b.rep_entrada) IF total_cf is null THEN LET total_cf = 0 END IF} PRINT negrillas_off ON EVERY ROW # Busca la fecha del reporte de entrada para actualizar la tabla de # liquidacion SELECT UNIQUE CONVERT(char(10),MAX(fecha),101) INTO p_fecha FROM intb00006 WHERE num_doc = x.entrada and cod_mov in (34,35) AND status_t IS NULL LET seguro = 0 LET fob = x.precio LET c_f = fob + x.flete # Jhonny 10/4/99 LET seguro = (c_f * .10) LET valor = c_f * x.tasa IF n_reg > 1 THEN LET x.imp_aduana = (x.imp_aduana / total_cf) * c_f LET x.imp_colect = (x.imp_colect / total_cf) * c_f END IF IF x.mercado = "L" THEN LET seguro = 0 LET x.imp_colect = 0 LET x.imp_aduana = 0 LET valor = 0 END IF LET cost_pl = seguro + c_f + x.imp_colect + x.imp_aduana + valor LET costo_unit = cost_pl / x.cantidad LET precio_std = x.cantidad * x.cost_std LET variacion = cost_pl - precio_std PRINT COLUMN 1, x.cod_n using "&","-",x.cod_grupo using "&","-", x.cod_tipo using "&&","-",x.cod_sec using "&&&", " ",x.descripcion," ",x.unidad, COLUMN 38, x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&", COLUMN 47, x.entrada using "&&&&&&", COLUMN 60, x.num_oc using "&&&&&","-",x.tipo, COLUMN 69, fob using "##,###,###.##", 2 SPACES, x.flete using "##,###.##", 2 SPACES, c_f using "##,###,###.##", 2 SPACES, seguro using "##,###.##", 2 SPACES, x.imp_colect using "##,###,###.##", 2 SPACES, x.imp_aduana using "##,###,###.##", 2 SPACES, valor using "###,###,###.##", 2 SPACES, cost_pl using "###,###,###.##", 2 SPACES, x.cantidad using "##,###,###.##", 2 SPACES, costo_unit using "##,###,###.####", 2 SPACES, x.cost_std using "##,###,###.####", 2 SPACES, precio_std using "##,###,###.##", 2 SPACES, variacion using "-,---,---,---.##" IF chstd = "YES" THEN SELECT UNIQUE a.cod_n FROM intb00013 a WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec AND a.ano = p_ano and a.mes_ini = 1 AND a.mes_fin = 12 IF STATUS = NOTFOUND THEN INSERT INTO intb00013 VALUES ('01','12',p_ano,x.cod_n,x.cod_grupo,x.cod_tipo, x.cod_sec,costo_unit,null,SUSER_SNAME(),GETDATE(),null, null) END IF END IF INSERT INTO cttb00013 (fecha_lq,fecha,tipo_lq,num_oc,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,costo_lq,status_t,us_crea,fech_crea,tipo_orden) VALUES (fecha_final,p_fecha,elije,x.num_oc,x.cod_n,x.cod_grupo,x.cod_tipo, x.cod_sec,x.cantidad,costo_unit,null,SUSER_SNAME(),GETDATE(),x.tipo) INSERT INTO cttb00032 VALUES (p_ano,m_mes,elije,x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,x.cod_sp, x.cod_sp_sec,x.entrada,x.num_oc,x.tipo,fob,x.flete,c_f,seguro, x.imp_colect,x.imp_aduana,valor,cost_pl,x.cantidad,costo_unit, x.cost_std,precio_std,null,SUSER_SNAME(),GETDATE(),null,null) # Acumulacion de totales LET t_fob = t_fob + fob LET t_flete = t_flete + x.flete LET t_seguro = t_seguro + seguro LET t_cf = t_cf + c_f LET t_impcol = t_impcol + x.imp_colect LET t_impaduana = t_impaduana + x.imp_aduana LET t_dollar = t_dollar + valor LET t_costopl = t_costopl + cost_pl LET t_costo = t_costo + costo_unit LET t_precio = t_precio + x.cost_std LET t_costst = t_costst + precio_std LET t_variacion = t_variacion + variacion LET o_variacion = o_variacion + cost_pl LET o_impaduana = o_impaduana + x.imp_aduana + seguro LET o_impcolect = o_impcolect + x.imp_colect LET o_dollar = o_dollar + valor LET o_cf = o_cf + c_f LET ot_fob = ot_fob + fob LET ot_flete = ot_flete + x.flete LET ot_cf = ot_cf + c_f LET ot_seguro = ot_seguro + seguro LET ot_impcol = ot_impcol + x.imp_colect LET ot_impaduana = ot_impaduana + x.imp_aduana LET ot_dollar = ot_dollar + valor LET ot_costopl = ot_costopl + cost_pl LET ot_costo = ot_costo + costo_unit LET ot_precio = ot_precio + x.cost_std LET ot_costst = ot_costst + precio_std LET ot_variacion = ot_variacion + variacion AFTER GROUP OF x.num_oc # Validacion del arreglo para imprimir la entrada 27 IF imp_entrada = "S" THEN LET entrada27[idx].cuenta_no = "1161" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_impaduana LET o_impaduana = 0 LET idx = idx + 1 LET entrada27[idx].cuenta_no = "1161-01" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_impcolect LET o_impcolect = 0 LET idx = idx + 1 LET entrada27[idx].cuenta_no = "1161-02" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_dollar LET o_dollar = 0 LET idx = idx + 1 LET entrada27[idx].cuenta_no = "1161-03" LET entrada27[idx].cod_aux = x.cod_sp LET entrada27[idx].cod_sec = x.cod_sp_sec LET entrada27[idx].num_doc = x.num_oc LET entrada27[idx].valor = o_cf LET o_cf = 0 LET idx = idx + 1 END IF #------------------------------------------------------------------------- PRINT COLUMN 1,"------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "--------------------------------" PRINT COLUMN 1, "Totales orden-> ", COLUMN 69, ot_fob using "##,###,###.##", 2 SPACES, ot_flete using "##,###.##", 2 SPACES, ot_cf using "##,###,###.##", 2 SPACES, ot_seguro using "##,###.##", 2 SPACES, ot_impcol using "##,###,###.##", 2 SPACES, ot_impaduana using "##,###,###.##", 2 SPACES, ot_dollar using "###,###,###.##", 2 SPACES, ot_costopl using "###,###,###.##", 2 SPACES, ot_costo using "##,###,###.##", 2 SPACES, ot_precio using "##,###,###.####", 2 SPACES, ot_costst using "##,###,###.####", 17 SPACES, ot_variacion using "-,---,---,---.##" LET ot_fob =0 LET ot_flete =0 LET ot_cf =0 LET ot_seguro =0 LET ot_impcol =0 LET ot_impaduana=0 LET ot_dollar =0 LET ot_costopl =0 LET ot_costo =0 LET ot_precio =0 LET ot_costst =0 LET ot_variacion=0 ON LAST ROW PRINT COLUMN 1,"------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "------------------------------------------------------", "----------------------" PRINT COLUMN 1, "Totales ----> ", COLUMN 69,t_fob using "##,###,###.##", 2 SPACES, t_flete using "##,###.##", 2 SPACES, t_cf using "##,###,###.##", 2 SPACES, t_seguro using "##,###.##", 2 SPACES, t_impcol using "##,###,###.##", 2 SPACES, t_impaduana using "##,####,###.##", 2 SPACES, t_dollar using "###,###,###.##", 2 SPACES, t_costopl using "###,###,###.##", 2 SPACES, t_costo using "#,###,###.###", 4 SPACES, t_precio using "###,###.####", 2 SPACES, t_costst using "##,###,###.####", 17 SPACES, t_variacion using "--,---,---,---.##" END REPORT { ------------------------------------------------------------------------------- PROGRAMA : EDPRRP027 OBJETIVO : Listar las Entrada de Diario Mat. Prima Recibida PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Mayo 20, 1994. ------------------------------------------------------------------------------- } FUNCTION entrada027() DEFINE longitud SMALLINT # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 ##### Abriendo y desplegando el formulario de captura de datos OPEN FORM entrada27 FROM "lqfmfu001" DISPLAY FORM entrada27 #CALL pantalla() DISPLAY "entrada027" AT 4,3 DISPLAY "Entrada de Diario Mat. Importada Rec." AT 6,21 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,afecta,detalla AFTER FIELD entra LET longitud = LENGTH(entra) IF longitud != 14 THEN LET numero_msg = 77 CALL msg(numero_msg) NEXT FIELD entra END IF SELECT unique a.ref FROM cgtb00004 a WHERE a.ref=entra AND a.status_t IS NULL 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,5] = entra1 AND a.status_t IS NULL 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 LET existe = "S" 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 LET p_fechas = fecha2 using "ddmmyy" CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha2 END IF AFTER INPUT IF int_flag THEN ERROR "(2) OPERACION CANCELADA" LET int_flag = false RETURN END IF END INPUT ##### Creando la facilidad para cancelar proceso con SUPR LET idx = idx - 1 # Busca la informacion requerida DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) ##### Envia la Informacion al printer de contabilidad CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT entrada64 TO archivo DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) ##### Loop para enviar informacion al reporte DECLARE buscar CURSOR FOR SELECT '1151' as cuenta,SUM(c.cantidad_oc*b.costo_st) FROM intb00013 b,cgtb00018 c,cgtb00017 d WHERE b.status_t IS NULL and b.cod_n = b.cod_n and b.cod_grupo = b.cod_grupo and b.cod_tipo = b.cod_tipo and b.cod_sec = b.cod_sec and c.num_oc = d.num_oc and d.fecha BETWEEN fecha1 AND fecha2 AND d.status_t IS NULL AND c.status_t IS NULL OPEN buscar 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 LET diario1.debito = t_costst OUTPUT TO REPORT entrada64(diario1.*,fecha1,fecha2,detalla,entra) END WHILE FINISH REPORT entrada64 RUN imprime CLEAR SCREEN END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local REPORT entrada64(x,fecha1,fecha2,detalle1,entrada) DEFINE x RECORD cuenta_no LIKE cgtb00001.cuenta_no, debito DECIMAL(10,2) END RECORD ### Acumula los valores de las diferentes cuentas para entrada diario de nomina DEFINE debito,credito DECIMAL(12,2) DEFINE detalle1 CHAR(30) DEFINE mano_obra,sueldo_ind,monto_banco DECIMAL(12,2) 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 nomina 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 normal CHAR(2) DEFINE normall CHAR(3) DEFINE comprimido CHAR(3) DEFINE hora CHAR(5) DEFINE dpto INTEGER DEFINE nomina1 CHAR(24) DEFINE entrada CHAR(14), nombre_cta LIKE cgtb00001.descripcion OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 FORMAT PAGE HEADER LET doble_on = ASCII 14 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 doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time ##### Selecionado la descripcion del fecha2 LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2 PRINT COLUMN 1, comp_off,"edprrp027", COLUMN l, p_compania.nombre CLIPPED, COLUMN 75, "Pag. ",pageno using "###" PRINT COLUMN 35, "Sistema de Contabilidad", COLUMN 75, today using "dd/mm/yy" PRINT COLUMN 24, "Entrada de Diario Mat. Importada Recibida", COLUMN 78, hora PRINT COLUMN 34, "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 PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT doce PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", negrillas_on 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, "--------------------------------------------------", "--------------------------------------------------", negrillas_off SKIP 1 LINE IF debito is null THEN LET debito = 0 END IF ON EVERY ROW SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no PRINT COLUMN 2, x.cuenta_no, COLUMN 35, nombre_cta CLIPPED, COLUMN 66, x.debito using "###,###,##&.&&" LET debito = debito + x.debito IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES(fecha2,1,entrada,x.cuenta_no,null,null,null,null, detalle1,null,null,x.debito,0,null,SUSER_SNAME(),GETDATE(), null,null) END IF ON LAST ROW SELECT a.descripcion INTO nombre_cta FROM cgtb00001 a WHERE a.cuenta_no = "1152" IF credito is null THEN LET credito = 0 END IF ###### Acumulando totales por columna PRINT COLUMN 4, "1152", COLUMN 35, nombre_cta CLIPPED; IF t_variacion > 0 THEN PRINT COLUMN 66, t_variacion USING "###,###,##&.&&" LET debito = debito + t_variacion IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,"1152",null,null,null,null,detalle1, null,null,t_variacion,0,null,SUSER_SNAME(),GETDATE(),null,null) END IF ELSE PRINT COLUMN 84, t_variacion using "###,###,##&.&&" LET t_variacion = t_variacion * -1 LET credito = credito + t_variacion IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,"1152",null,null,null,null,detalle1, null,null,0,t_variacion,null,SUSER_SNAME(),GETDATE(),null,null) END IF END IF # Impresion detalle de la entrada con ordenes de compras FOR i = 1 TO idx IF entrada27[i].cod_aux is not null THEN IF entrada27[i].valor < 0 THEN LET entrada27[i].valor = entrada27[i].valor * -1 END IF PRINT COLUMN 4, entrada27[i].cuenta_no, COLUMN 17, entrada27[i].cod_aux using "&&","-", entrada27[i].cod_sec using "&&&&", COLUMN 26, entrada27[i].num_doc using "&&&&&&", COLUMN 84, entrada27[i].valor using "###,###,##&.&&" IF entrada27[i].valor is not null THEN LET credito = credito + entrada27[i].valor END IF END IF IF afecta = "S" THEN INSERT INTO cgtb00004 VALUES (fecha2,1,entrada,entrada27[i].cuenta_no,null, entrada27[i].num_doc,entrada27[i].cod_aux, entrada27[i].cod_sec,detalle1,null,null,0, entrada27[i].valor,null, SUSER_SNAME(),GETDATE(),null,null) END IF END FOR ###### Imprime total DEBITO y total CREDITO SKIP 1 LINE PRINT COLUMN 1,negrillas_on PRINT COLUMN 66,"--------------", COLUMN 84,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 66,debito USING "###,###,##&.&&", COLUMN 84,credito USING "###,###,##&.&&",negrillas_off LET debito = 0 LET credito = 0 SKIP 2 LINE PRINT COLUMN 1, detalle1 PRINT COLUMN 1,comp_off,negrillas_off SKIP 4 LINE END REPORT