示例#1
0
 /// <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);
     }
 }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        /// <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);
            }
        }
示例#6
0
        /// <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);
            }
        }