/// <summary> /// Metodo para Guardar/Modificar una entidad CuentaSAP /// </summary> /// <param name="info">Representa la entidad que se va a grabar</param> public void Guardar(CuentaSAPInfo info) { try { Logger.Info(); var cuentaSAPBL = new CuentaSAPBL(); cuentaSAPBL.Guardar(info); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una lista de CuentaSAPs /// </summary> /// <returns></returns> public IList <CuentaSAPInfo> ObtenerTodos() { try { Logger.Info(); var cuentaSAPBL = new CuentaSAPBL(); IList <CuentaSAPInfo> result = cuentaSAPBL.ObtenerTodos(); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public ResultadoInfo <CuentaSAPInfo> ObtenerPorPaginaSinId(PaginacionInfo pagina, CuentaSAPInfo filtro) { try { Logger.Info(); var cuentaSAPBL = new CuentaSAPBL(); ResultadoInfo <CuentaSAPInfo> result = cuentaSAPBL.ObtenerPorPaginaSinId(pagina, filtro); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una cuenta mediante la interfaz con SAP /// </summary> /// <param name="cuentaSAP"></param> /// <returns></returns> public CuentaSAPInfo ObtenerCuentaSAPInterfaz(CuentaSAPInfo cuentaSAP) { try { Logger.Info(); var cuentaSAPBL = new CuentaSAPBL(); CuentaSAPInfo result = cuentaSAPBL.ObtenerCuentaSAPInterfaz(cuentaSAP); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Separa los nodos de las polizas en cargos y abonos /// </summary> /// <param name="polizas">nodos de la poliza que se separaran como registros</param> /// <param name="cargos">cargos encontrados en los nodos de la poliza</param> /// <param name="abonos">abonos encontrados en los nodos de la poliza</param> protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos, out IList <PolizaInfo> abonos) { try { base.GeneraLineaRegistroContable(polizas, out cargos, out abonos); const int cadenaLarga = 50; //obtiene todos los costos activos: var costosActivos = ObtenerCostos(); if (costosActivos == null) { var ex = new Exception(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_CostosNoEncontrados); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } //filtra la lista de todos los costos activos, solo conservando los costos que se incluyen en la poliza var costoLista = (from costo in costosActivos let tempCosto = detalles.FirstOrDefault(detalle => detalle.CostoId == costo.CostoID) where tempCosto != null select new CostoInfo { CostoID = tempCosto.CostoId, ClaveContable = costo.ClaveContable, Descripcion = costo.Descripcion }).ToList(); costosActivos.Clear(); costosActivos = costoLista; // PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>(); PolizaRegistroContableModel registroContable; foreach (var cargo in cargos) { if (cargo.Descripcion == null) { //al nodo de la poliza le encuentra la descripcion del costo usando la clave contable del mismo: var descripcionCosto = costosActivos.FirstOrDefault( costo => cargo.Cuenta.EndsWith(costo.ClaveContable)); //en caso de no encontrarse, no se asigna descripcion, en caso de encontrarse se asigna la descripcion del costo cargo.Descripcion = descripcionCosto == null ? string.Empty : descripcionCosto.Descripcion; } //si la descripcion es demasiado larga, se solo muestra la cantidad de letras que cabe en la linea var sbDescripcion = new StringBuilder(); sbDescripcion.Append(cargo.Descripcion.Length > cadenaLarga ? cargo.Descripcion.Substring(0, cadenaLarga - 1).Trim() : cargo.Descripcion.Trim()); registroContable = new PolizaRegistroContableModel { Cuenta = Cancelacion ? string.IsNullOrWhiteSpace(cargo.Proveedor) ? cargo.Cuenta : cargo.Proveedor : cargo.Cuenta, Descripcion = sbDescripcion.ToString(), Cargo = Convert.ToDecimal(cargo.Importe.Replace("-", string.Empty)).ToString( "N", CultureInfo.InvariantCulture) }; PolizaModel.RegistroContable.Add(registroContable); } var cuentaSapBL = new CuentaSAPBL(); var cuentaSap = cuentaSapBL.ObtenerTodos(); foreach (var abono in abonos) { var cuenta = cuentaSap.FirstOrDefault(x => x.CuentaSAP == abono.Cuenta); if (cuenta == null) { cuenta = new CuentaSAPInfo(); } //al nodo de la poliza le encuentra la descripcion del costo usando la clave contable del mismo: var sbDescripcion = new StringBuilder(); sbDescripcion.Append(cuenta.Descripcion.Length > cadenaLarga ? cuenta.Descripcion.Substring(0, cadenaLarga - 1).Trim() : cuenta.Descripcion.Trim()); registroContable = new PolizaRegistroContableModel { Cuenta = (string.IsNullOrWhiteSpace(abono.Proveedor) ? abono.Cuenta : abono.Proveedor), Descripcion = sbDescripcion.ToString(), Concepto = string.Empty, Abono = Convert.ToDecimal(abono.Importe.Replace("-", string.Empty)).ToString( "N", CultureInfo.CurrentCulture) }; PolizaModel.RegistroContable.Add(registroContable); } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// metodo que genera las lineas de los registros contables /// </summary> /// <param name="polizas">lista de polizas</param> /// <param name="cargos">lista de cargos</param> /// <param name="abonos">lista de abonos</param> protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos, out IList <PolizaInfo> abonos) { base.GeneraLineaRegistroContable(polizas, out cargos, out abonos); var obtenerCostos = ObtenerCostos(); var costoLista = (from costo in obtenerCostos let tempCosto = detalles.FirstOrDefault(detalle => detalle.CostoId == costo.CostoID) where tempCosto != null select new CostoInfo { CostoID = tempCosto.CostoId, ClaveContable = costo.ClaveContable, Descripcion = costo.Descripcion }).ToList(); obtenerCostos.Clear(); obtenerCostos = costoLista; cargos.ToList().ForEach(cliente => { if (string.IsNullOrWhiteSpace(cliente.Cuenta)) { cliente.Cuenta = string.Empty; } }); const int cadenaLarga = 50; PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>(); PolizaRegistroContableModel registroContable; foreach (var cargo in cargos) { var descripcionCosto = obtenerCostos.FirstOrDefault( costo => cargo.Cuenta.EndsWith(costo.ClaveContable) && string.IsNullOrWhiteSpace(cargo.Cliente)) ?? new CostoInfo { Descripcion = clienteSap.Descripcion }; var sbDescripcion = new StringBuilder(); sbDescripcion.Append(descripcionCosto.Descripcion.Length > cadenaLarga ? descripcionCosto.Descripcion.Substring(0, cadenaLarga - 1).Trim() : descripcionCosto.Descripcion.Trim()); registroContable = new PolizaRegistroContableModel { Cuenta = string.IsNullOrWhiteSpace(cargo.Cuenta) ? cargo.Cliente : cargo.Cuenta, Descripcion = sbDescripcion.ToString(), Cargo = Convert.ToDecimal(cargo.Importe.Replace("-", string.Empty)).ToString( "N", CultureInfo.CurrentCulture) }; PolizaModel.RegistroContable.Add(registroContable); } var cuentaSapBl = new CuentaSAPBL(); var cuentaSap = cuentaSapBl.ObtenerTodos(); foreach (var abono in abonos) { var cuenta = cuentaSap.FirstOrDefault(x => x.CuentaSAP == abono.Cuenta) ?? new CuentaSAPInfo(); var sbDescripcion = new StringBuilder(); sbDescripcion.Append(cuenta.Descripcion.Length > cadenaLarga ? cuenta.Descripcion.Substring(0, cadenaLarga - 1).Trim() : cuenta.Descripcion.Trim()); registroContable = new PolizaRegistroContableModel { Cuenta = abono.Cuenta, Descripcion = sbDescripcion.ToString(), Abono = Convert.ToDecimal(abono.Importe.Replace("-", string.Empty)).ToString( "N", CultureInfo.CurrentCulture) }; PolizaModel.RegistroContable.Add(registroContable); } }