{ ============================================================================== 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,val_64 DECIMAL(12,2) DEFINE orden CHAR(10) DEFINE t_variacion DECIMAL(12,2) DEFINE idz, idy INTEGER ###### 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 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 "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL lqprrp001() END MAIN FUNCTION lqprrp001() DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER 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 LET selec = "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 = '",elije ,"' and d.fecha between '",fecha_inicial USING "mm/dd/yyyy" , "' and '",fecha_final USING "mm/dd/yyyy","' 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" PREPARE comando FROM selec DECLARE busca CURSOR FOR comando LET r_filename ="lqprrp001.4rp" LET idy = 1 FOREACH busca INTO busca_datos.* LET orden = busca_datos.num_oc USING "<<<<" IF elije != "L" THEN 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 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 IF idy = 1 THEN DISPLAY 'entro: ',idy IF fgl_report_loadCurrentSettings(r_filename) THEN LET preview=1 CALL seleccionarsalida() RETURNING r_output -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF LET idy = 2 START REPORT liquida TO XML HANDLER HANDLER END IF OUTPUT TO REPORT liquida(busca_datos.*) END FOREACH IF idy > 1 THEN FINISH REPORT liquida ELSE CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO") --NEXT FIELD fecha_final 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, 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 material, rep_entrada1 STRING DEFINE t_costo, costo_unit DECIMAL(12,4) DEFINE orden_compra CHAR(15) DEFINE hora CHAR(5) FORMAT PAGE HEADER LET hora = time 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 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 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 LET material = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-", x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&"," ",x.descripcion CLIPPED DISPLAY 'material: ',material LET rep_entrada1 = x.cod_sp,"-",x.cod_sp_sec LET orden_compra = x.num_oc,"-",x.tipo PRINTX material, rep_entrada1, x.entrada, orden_compra, fob, x.flete, c_f, seguro, x.imp_colect, x.imp_aduana, valor, cost_pl, x.cantidad, costo_unit, x.cost_std, precio_std, variacion 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 PRINTX ot_fob, ot_flete, ot_cf, ot_seguro,ot_impcol, ot_impaduana, ot_dollar, ot_costopl, ot_costo,ot_precio, ot_costst, ot_variacion 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 PRINTX t_fob, t_flete, t_cf, t_seguro, t_impcol, t_impaduana, t_dollar, t_costo, t_precio, t_costst, t_variacion 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 DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename2 STRING -- filename of Report Design Document including .4rp extension --r_output STRING, -- output format option -- preview INTEGER # WHENEVER ERROR CONTINUE ##### 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 LET idz = 1 LET r_filename2 ="lqprrp002.4rp" # 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 # CALL configureoutput("SVG") RETURNING handler # START REPORT entrada64 TO XML HANDLER handler IF idx = 1 THEN IF fgl_report_loadCurrentSettings(r_filename2) THEN --LET preview=1 CALL fgl_report_selectDevice("SVG") -- changing default --CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF LET idx = 2 START REPORT entrada64 TO XML HANDLER HANDLER END IF 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 fecha1,fecha2 DATE #### Almacena las fecha del rango de busqueda DEFINE hora CHAR(5) DEFINE cuenta CHAR(30) DEFINE entrada, hoy CHAR(14), nombre_cta LIKE cgtb00001.descripcion FORMAT PAGE HEADER LET hora = TIME LET hoy = today using "dd/mm/yy" 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 PRINTX x.cuenta_no, nombre_cta, x.debito 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 LET cuenta = "1152 ",nombre_cta PRINTX cuenta, t_variacion IF t_variacion > 0 THEN --PRINTX t_variacion 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 --PRINTX t_variacion 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 --LET entrada27[i].cuenta_no --LET entrada27[i].cod_aux --LET entrada27[i].cod_sec --LET entrada27[i].num_doc --LET entrada27[i].valor 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 {PRINTX entrada27[i].cuenta_no, entrada27[i].cod_aux, entrada27[i].cod_sec, entrada27[i].num_doc, entrada27[i].valor} IF entrada27[i].valor is not null THEN LET credito = credito + entrada27[i].valor END IF END IF PRINTX entrada27[i].cuenta_no, entrada27[i].cod_aux, entrada27[i].cod_sec, entrada27[i].num_doc, entrada27[i].valor 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 --PRINT COLUMN 35,"Totales-->", PRINTX debito, credito LET debito = 0 LET credito = 0 PRINTX detalle1 END REPORT