{ ============================================================================== PROGRAMA : lqprrp009 SISTEMA : Sistema de Liquidacion Materiales Objetivo : Liquidacion Mercancia Compras Exterior REPUESTSO Nota: En los gastos y otros se segrega la entrada "ED.64" PROGRAMADOR : Juan F. Soto FECHA : Noviembre 26, 1996 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 ,p_fecha char(10) DEFINE entra CHAR(14) 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 CHAR(8), debito DECIMAL(10,2) END RECORD DEFINE i SMALLINT DEFINE fecha_inicial,fecha_final DATE DEFINE tasa DECIMAL(8,2) DEFINE primera,imp_entrada CHAR(1), salida VARCHAR(4) 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 CALL lqprrp009() END MAIN FUNCTION lqprrp009() 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), tasa DECIMAL(8,2), mercado CHAR(1), imp_colect DECIMAL(12,2), imp_aduana DECIMAL(12,2), cost_std DECIMAL(12,3), clave CHAR(6) END RECORD LET int_flag = FALSE OPTIONS FORM LINE 8 OPEN FORM lqfmrp009 FROM "lqfmrp009" DISPLAY FORM lqfmrp009 DISPLAY "lqprrp009" AT 4,3 DISPLAY "Liquidacion Partes y Repuestos" AT 6,24 LET tipo_papel = 2 CALL msgrp000(tipo_papel) INPUT BY NAME p_ano,m_mes,elije,imp_entrada,imp,chstd 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 Convert(varchar(10),a.fecha_inicio,103),Convert(varchar(10),a.fecha_corte,103) 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.29-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 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 LET r_filename = 'lqprrp009.4rp' LET preview = 1 IF fgl_report_loadCurrentSettings(r_filename) THEN 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 IF HANDLER IS NOT NULL THEN START REPORT liquida7 TO XML HANDLER HANDLER DISPLAY "<<>>" AT 19,14 ATTRIBUTE(YELLOW) DELETE FROM cttb00032 WHERE mes = m_mes and ano = p_ano AND tipo = '3' DELETE FROM cttb00013 WHERE fecha_lq = fecha_final and tipo_lq = elije AND tipo_orden =3 INSERT INTO cttb000log1 VALUES (GETDATE(),usuarios,'lqprrp009','ELIMINO') DECLARE busca CURSOR FOR SELECT UNIQUE 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,d.prima_us,d.liquidada,c.impuesto,c.otros_g FROM irtb00002 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 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 c.tipo = 3 AND d.status_t is null 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(a.debito-a.credito) INTO busca_datos.imp_colect FROM cgtb00004 a WHERE (a.cuenta_no = "1161-01" and a.status_t is null and a.fecha <= fecha_final and a.cod_sec = a.cod_sec and a.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(a.debito-a.credito) INTO busca_datos.imp_aduana FROM cgtb00004 a WHERE (cuenta_no = "1161" and a.status_t is null and a.fecha <= fecha_final and a.cod_sec = a.cod_sec and a.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 irtb00013 a WHERE a.ano = p_Ano 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.mes_fin = 12 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 liquida7(busca_datos.*) END FOREACH FINISH REPORT liquida7 END IF #IF imp = "S" THEN # RUN imprime #END IF IF imp_entrada = "S" THEN CALL entrada0271() END IF CLEAR SCREEN END FUNCTION REPORT liquida7(x) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion varchar(100), unidad CHAR(3), cod_sp SMALLINT, cod_sp_sec SMALLINT, entrada INTEGER, num_doc INTEGER, num_oc INTEGER, tipo CHAR(10), cantidad DECIMAL(12,2), precio DECIMAL(12,2), flete DECIMAL(12,2), tasa DECIMAL(8,2), mercado CHAR(10), imp_colect DECIMAL(12,2), imp_aduana DECIMAL(12,2), cost_std DECIMAL(12,3), clave CHAR(10) 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) DEFINE tituloFecha, producto_codigo,proveedor,orden_tipo VARCHAR(250) ## DEFINICION DE LAS VARIABLES DE IMPRESION DEFINE doble_on CHAR(2) DEFINE doble_off 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 PAGE LENGTH 150 FORMAT PAGE HEADER LET hora = TIME LET tituloFecha = "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy" FIRST PAGE HEADER PRINTX p_compania.nombre, hora, tituloFecha ## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS { LET l = (210 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 2, comp_on,"lqprrp007", 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 Partes y Repuestos"))/2 PRINT COLUMN l, "Liquidacion Mercancia Partes y Repuestos", 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 128,"GASTO" PRINT COLUMN 50, "Reporte", COLUMN 61, "Ordenes", COLUMN 96, "COSTO &", COLUMN 115, "IMPUESTO", COLUMN 128, "ADUANAL", COLUMN 141, "PRIMA ", COLUMN 153, "COSTO EN", COLUMN 166, "UNIDADES", COLUMN 183, "COSTO", COLUMN 194, "PRECIO", COLUMN 206, "COSTO" PRINT COLUMN 1, "Materiales", COLUMN 50, "Entrada ", COLUMN 61, "Compras", COLUMN 76, "FOB", COLUMN 83, "FLETE", COLUMN 96, "FLETE", COLUMN 104, "SEGURO", COLUMN 115, "COLECTOR", COLUMN 128, "Y OTROS", COLUMN 141, "DOLLAR", COLUMN 153, "PLANTA", COLUMN 166, "RECIBIDA", COLUMN 183, "UNIT.", COLUMN 195, "STD", COLUMN 206, "STD", COLUMN 218, "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 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 BEFORE GROUP OF x.num_oc 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 EVERY ROW # Busca la fecha del reporte de entrada para actualizar la tabla de # liquidacion LET selec = "SELECT DISTINCT a.fecha FROM irtb00006 a ", "WHERE a.num_doc = ? and ", " a.cod_mov in (1,2) ", " and a.status_t IS NULL" PREPARE comando FROM selec EXECUTE comando USING x.entrada INTO p_fecha LET fob = x.precio #----------------------------------------------- LET seguro = 0 #----------------------------------------------- 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 LET producto_codigo = x.cod_n using "&&&&&","-",x.cod_grupo using "&&&&&","-", x.cod_tipo using "&&&&&","-",x.cod_sec using "&&&&&", " ",x.descripcion," ",x.unidad LET proveedor = x.cod_sp using "&&","-",x.cod_sp_sec using "&&&&" LET orden_tipo = x.num_oc using "&&&&&","-",x.tipo DISPLAY producto_codigo, proveedor, orden_tipo, x.entrada using "&&&&&&", fob using "#,###,###.##", x.flete using "##,###.##", c_f using "#,###,###.##", seguro using "##,###.##", x.imp_colect using "#,###,###.##", x.imp_aduana using "###,###.##", valor using "####,###.##", cost_pl using "####,###.##", x.cantidad using "##,###,###.##", costo_unit using "###,###.####", x.cost_std using "####,###.####", precio_std using "#####,###.##", variacion using "--,---,---.##" PRINTX producto_codigo, proveedor, orden_tipo, x.entrada using "&&&&&&", fob using "#,###,###.##", x.flete using "##,###.##", c_f using "#,###,###.##", seguro using "##,###.##", x.imp_colect using "#,###,###.##", x.imp_aduana using "###,###.##", valor using "####,###.##", cost_pl using "####,###.##", x.cantidad using "##,###,###.##", costo_unit using "###,###.####", x.cost_std using "####,###.####", precio_std using "#####,###.##", variacion using "--,---,---.##" IF chstd = "S" THEN SELECT a.cod_n FROM irtb00013 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.mes_ini = "01" AND a.mes_fin = "12" AND a.ano = p_ano IF STATUS = NOTFOUND THEN INSERT INTO irtb00013 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 ,us_mod ,fech_mod,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(),null,null,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) INSERT INTO cttb000log2 (fecha_lq ,fecha ,tipo_lq ,num_oc ,cod_n ,cod_grupo ,cod_tipo ,cod_sec ,cantidad ,costo_lq ,status_t,us_crea ,fech_crea ,us_mod ,fech_mod,tipo_orden,programa) 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(),null,null,x.tipo,'lqprrp007') # 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 using "#,###,###.##", ot_flete using "##,###.##", ot_cf using "###,###.##", ot_seguro using "##,###.##", ot_impcol using "####,###.##", ot_impaduana using "####,###.##", ot_dollar using "##,###,###.##", ot_costopl using "##,###,###.##", ot_costo using "####,###.##", ot_precio using "####,###.####", ot_costst using "##,###,###.####", ot_variacion using "--,---,---.##" SKIP 1 LINE #------------------------------------------------------------------------- ON LAST ROW PRINTX t_fob using "#,###,###.##", t_flete using "##,###.##", t_cf using "###,###.##", t_seguro using "##,###.##", t_impcol using "####,###.##", t_impaduana using "####,###.##", t_dollar using "##,###,###.##", t_costopl using "##,###,###.##", t_costo using "####,###.##", t_precio using "####,###.####", t_costst using "##,###,###.####", t_variacion using "--,---,---.##" END REPORT { ------------------------------------------------------------------------------- PROGRAMA : EDPRRP027 OBJETIVO : Listar las Entrada de Diario Partes y Repuestos PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Noviembre 27, 1996. ------------------------------------------------------------------------------- } FUNCTION entrada0271() DEFINE longitud,u_mes,ultimo,numero_ent SMALLINT, ch_ano,tiempo CHAR(4) # 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 "lqfmfu002" DISPLAY FORM entrada27 DISPLAY "entrada029" AT 4,3 DISPLAY "Entrada de Diario Partes y Repuestos" AT 6,16 LET tipo_papel = 1 CALL msgrp000(tipo_papel) ###### Aceptando los valores para el rango de fecha INPUT BY NAME entra,fecha1,fecha2,afecta,detalla BEFORE INPUT LET numero_ent = 29 LET fecha1 =fecha_inicial LET fecha2 =fecha_final DISPLAY BY NAME fecha1,fecha2 LET entra = 'ED.',numero_ent USING "&&" LET ch_ano = YEAR(fecha1) USING "&&&&" SELECT MAX(mes) INTO u_mes FROM prdtable WHERE @ano = p_ano and fecha_inicio >= fecha1 AND fecha_corte <= fecha2 LET tiempo = u_mes USING "&&",ch_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 = entra CLIPPED,'-',ultimo using "&&&","/", tiempo DISPLAY BY NAME entra 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 (Convert(varchar(10),(a.fecha),103)) 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 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) CALL seleccionarsalida() RETURNING salida CALL configureoutput(salida) RETURNING HANDLER START REPORT entrada641 TO XML HANDLER handler DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) ##### Loop para enviar informacion al reporte DECLARE buscar CURSOR FOR SELECT '1135-01',SUM(c.cantidad_oc*b.costo_st) FROM irtb00013 b,cgtb00018 c,cgtb00017 d WHERE b.status_t IS NULL and (b.cod_n = c.cod_n and b.cod_grupo = c.cod_grupo and b.cod_tipo = c.cod_tipo and b.cod_sec = c.cod_sec) and (c.num_oc = d.num_oc) and d.fecha BETWEEN fecha1 AND fecha2 AND d.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 entrada641(diario1.*,fecha1,fecha2,detalla,entra) END WHILE FINISH REPORT entrada641 END FUNCTION #### Funcion para dar salida ordenada a la informacion requerida de #### una entrada de diario de nominas local REPORT entrada641(x,fecha1,fecha2,detalle1,entrada) DEFINE x RECORD cuenta_no CHAR(8), 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) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 150 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 = (100 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 2, normal,doce,comp_off,comp_on,"lqprrp009", COLUMN l, p_compania.nombre CLIPPED, COLUMN 90, "Pag. ",pageno using "###" LET l = (100 - LENGTH("Sistema de Contabilidad de Costo"))/2 PRINT COLUMN l, "Sistema de Contabilidad de Costo", COLUMN 90, today using "dd/mm/yy" LET l = (100 - LENGTH("Entrada de Diario Liquidacion Partes Y Repuestos"))/2 PRINT COLUMN l, "Entrada de Diario Liquidacion Partes Y Repuestos", COLUMN 90, hora PRINT COLUMN 1, "Del ",fecha_inicial USING "dd/mm/yy"," Al ", fecha_final 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 PRINT COLUMN 4, x.cuenta_no, COLUMN 35, "INVENTARIO REPUESTOS", COLUMN 66, x.debito using "###,###,##&.&&" LET debito = debito + x.debito IF afecta = "S" THEN INSERT INTO cgtb00004 (fecha ,tipo ,ref ,cuenta_no ,detalle_1 ,debito ,credito ,us_crea ,fech_crea ) VALUES(fecha2,1,entrada,x.cuenta_no,detalle1,x.debito,0,SUSER_SNAME(),GETDATE() ) END IF ON LAST ROW IF credito is null THEN LET credito = 0 END IF ###### Acumulando totales por columna PRINT COLUMN 4, "5501", COLUMN 35, "VARIACION COSTO INDIRECTO"; IF t_variacion > 0 THEN PRINT COLUMN 66, t_variacion USING "###,###,##&.&&" LET debito = debito + t_variacion IF afecta = "S" THEN INSERT INTO cgtb00004 (fecha ,tipo ,ref ,cuenta_no ,detalle_1 ,debito ,credito ,us_crea ,fech_crea ) VALUES (fecha2,1,entrada,"5501",detalle1, t_variacion,0,SUSER_SNAME(),GETDATE()) 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 (fecha ,tipo ,ref ,cuenta_no ,detalle_1 ,debito ,credito ,us_crea ,fech_crea ) VALUES (fecha2,1,entrada,"5501",detalle1, 0,t_variacion,SUSER_SNAME(),GETDATE()) 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 (fecha ,tipo ,ref ,cuenta_no ,num_doc ,cod_aux ,cod_sec ,detalle_1 ,debito ,credito ,us_crea ,fech_crea ) VALUES (fecha2,1,entrada,entrada27[i].cuenta_no, entrada27[i].num_doc,entrada27[i].cod_aux, entrada27[i].cod_sec,detalle1,0,entrada27[i].valor,SUSER_SNAME(),GETDATE()) 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