Exemplo n.º 1
0
        /// <summary>
        /// Genera linea para los registros
        /// contable
        /// </summary>
        /// <param name="polizas"> </param>
        /// <param name="cargos"> </param>
        /// <param name="abonos"> </param>
        protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos
                                                            , out IList <PolizaInfo> abonos)
        {
            base.GeneraLineaRegistroContable(polizas, out cargos, out abonos);
            cargos.ToList().ForEach(cliente =>
            {
                if (string.IsNullOrWhiteSpace(cliente.Cuenta))
                {
                    cliente.Cuenta = string.Empty;
                }
            });
            cargos = cargos.OrderBy(cliente => cliente.Cuenta).ToList();
            abonos = abonos.OrderBy(cliente => cliente.Cuenta).ToList();

            PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>();
            PolizaRegistroContableModel registroContable;

            foreach (var cargo in cargos)
            {
                registroContable = new PolizaRegistroContableModel
                {
                    Cuenta =
                        string.IsNullOrWhiteSpace(cargo.Cuenta) ? cargo.Cliente : cargo.Cuenta,

                    Descripcion = formulaGenerada,
                    Concepto    = cargo.Concepto,
                    Cargo       =
                        Convert.ToDecimal(cargo.Importe.Replace("-", string.Empty)).ToString(
                            "N2", CultureInfo.CurrentCulture)
                };
                PolizaModel.RegistroContable.Add(registroContable);
            }

            foreach (var abono in abonos)
            {
                registroContable = new PolizaRegistroContableModel
                {
                    Cuenta      = abono.Cuenta,
                    Descripcion = abono.DescripcionProducto,
                    Concepto    = abono.Concepto,
                    Abono       =
                        Convert.ToDecimal(abono.Importe.Replace("-", string.Empty)).ToString(
                            "N2", CultureInfo.CurrentCulture)
                };
                PolizaModel.RegistroContable.Add(registroContable);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Genera linea para los registros
        /// contable
        /// </summary>
        /// <param name="polizas"> </param>
        /// <param name="cargos"> </param>
        /// <param name="abonos"> </param>
        protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos
                                                            , out IList <PolizaInfo> abonos)
        {
            base.GeneraLineaRegistroContable(polizas, out cargos, out abonos);
            cargos.ToList().ForEach(cliente =>
            {
                if (string.IsNullOrWhiteSpace(cliente.Cuenta))
                {
                    cliente.Cuenta = string.Empty;
                }
            });
            cargos = cargos.OrderBy(cliente => cliente.Cuenta).ToList();
            abonos = abonos.OrderBy(cliente => cliente.Cuenta).ToList();

            if (costos == null || !costos.Any())
            {
                costos = ObtenerCostos();
            }

            PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>();
            PolizaRegistroContableModel registroContable;

            foreach (var cargo in cargos)
            {
                CostoInfo descripcionCosto =
                    costos.FirstOrDefault(
                        costo => cargo.Cuenta.EndsWith(costo.ClaveContable));
                if (descripcionCosto == null)
                {
                    descripcionCosto = new CostoInfo
                    {
                        Descripcion = string.Empty
                    };
                }

                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(descripcionCosto.Descripcion.Length > CADENA_LARGA
                                         ? descripcionCosto.Descripcion.Substring(0, CADENA_LARGA - 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);
            }

            foreach (var abono in abonos)
            {
                CostoInfo descripcionCosto =
                    costos.FirstOrDefault(
                        costo => abono.Cuenta.EndsWith(costo.ClaveContable));
                if (descripcionCosto == null)
                {
                    descripcionCosto = new CostoInfo
                    {
                        Descripcion = string.Empty
                    };
                }
                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(descripcionCosto.Descripcion.Length > CADENA_LARGA
                                         ? descripcionCosto.Descripcion.Substring(0, CADENA_LARGA - 1).Trim()
                                         : descripcionCosto.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);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Genera linea para los registros
        /// contable
        /// </summary>
        /// <param name="polizas"> </param>
        /// <param name="cargos"> </param>
        /// <param name="abonos"> </param>
        protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos
                                                            , out IList <PolizaInfo> abonos)
        {
            base.GeneraLineaRegistroContable(polizas, out cargos, out abonos);
            const int CADENA_LARGA = 29;

            IList <CostoInfo> costos = ObtenerCostos();

            PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>();
            PolizaRegistroContableModel registroContable;

            foreach (var cargo in cargos)
            {
                if (string.IsNullOrWhiteSpace(cargo.Descripcion))
                {
                    CostoInfo descripcionCosto =
                        costos.FirstOrDefault(
                            costo =>
                            cargo.Cuenta.EndsWith(costo.ClaveContable));
                    if (descripcionCosto == null)
                    {
                        cargo.Descripcion = string.Empty;
                    }
                    else
                    {
                        cargo.Descripcion = descripcionCosto.Descripcion;
                    }
                }

                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(cargo.Descripcion.Length > CADENA_LARGA
                                         ? cargo.Descripcion.Substring(0, CADENA_LARGA - 1).Trim()
                                         : cargo.Descripcion.Trim());
                registroContable = new PolizaRegistroContableModel
                {
                    Cuenta =
                        Cancelacion
                            ? string.IsNullOrWhiteSpace(cargo.Proveedor)
                                  ? cargo.Cuenta
                                  : cargo.Proveedor
                            : cargo.Cuenta,
                    Descripcion = sbDescripcion.ToString(),
                    Concepto    = cargo.Concepto,
                    Cargo       =
                        Convert.ToDecimal(cargo.Importe.Replace("-", string.Empty)).ToString(
                            "N", CultureInfo.CurrentCulture)
                };
                PolizaModel.RegistroContable.Add(registroContable);
            }

            foreach (var abono in abonos)
            {
                if (string.IsNullOrWhiteSpace(abono.Descripcion))
                {
                    CostoInfo descripcionCosto =
                        costos.FirstOrDefault(
                            costo =>
                            abono.Cuenta.EndsWith(costo.ClaveContable));
                    if (descripcionCosto == null)
                    {
                        abono.Descripcion = string.Empty;
                    }
                    else
                    {
                        abono.Descripcion = descripcionCosto.Descripcion;
                    }
                }

                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(abono.Descripcion.Length > CADENA_LARGA
                                         ? abono.Descripcion.Substring(0, CADENA_LARGA - 1).Trim()
                                         : abono.Descripcion.Trim());
                registroContable = new PolizaRegistroContableModel
                {
                    Cuenta =
                        (string.IsNullOrWhiteSpace(abono.Proveedor)
                             ? abono.Cuenta
                             : abono.Proveedor),
                    Descripcion = sbDescripcion.ToString(),
                    Concepto    = abono.Concepto,
                    Abono       =
                        Convert.ToDecimal(abono.Importe.Replace("-", string.Empty)).ToString(
                            "N", CultureInfo.CurrentCulture)
                };
                PolizaModel.RegistroContable.Add(registroContable);
            }
        }
        protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos, out IList <PolizaInfo> abonos)
        {
            base.GeneraLineaRegistroContable(polizas, out cargos, out abonos);
            const int CADENA_LARGA = 29;

            IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP();
            CuentaSAPInfo         cuentaSAP;

            PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>();
            PolizaRegistroContableModel registroContable;

            foreach (var cargo in cargos)
            {
                if (!(cargo.Cuenta.StartsWith(PrefijoCuentaCentroCosto) ||
                      cargo.Cuenta.StartsWith(PrefijoCuentaCentroBeneficio) ||
                      cargo.Cuenta.StartsWith(PrefijoCuentaCentroGasto)))
                {
                    cuentaSAP = cuentasSAP.FirstOrDefault(clave => clave.CuentaSAP.Equals(cargo.Cuenta));
                    if (cuentaSAP != null)
                    {
                        cargo.Descripcion = cuentaSAP.Descripcion;
                    }
                }
                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(cargo.Descripcion.Length > CADENA_LARGA
                                         ? cargo.Descripcion.Substring(0, CADENA_LARGA - 1).Trim()
                                         : cargo.Descripcion.Trim());
                registroContable = new PolizaRegistroContableModel
                {
                    Cuenta      = string.IsNullOrWhiteSpace(cargo.Cliente) ? cargo.Cuenta : cargo.Cliente,
                    Descripcion = sbDescripcion.ToString(),
                    Concepto    = cargo.Concepto,
                    Cargo       =
                        Convert.ToDecimal(cargo.Importe.Replace("-", string.Empty)).ToString(
                            "N", CultureInfo.CurrentCulture)
                };
                PolizaModel.RegistroContable.Add(registroContable);
            }

            foreach (var abono in abonos)
            {
                if (!(abono.Cuenta.StartsWith(PrefijoCuentaCentroCosto) ||
                      abono.Cuenta.StartsWith(PrefijoCuentaCentroBeneficio) ||
                      abono.Cuenta.StartsWith(PrefijoCuentaCentroGasto)))
                {
                    cuentaSAP = cuentasSAP.FirstOrDefault(clave => clave.CuentaSAP.Equals(abono.Cuenta));
                    if (cuentaSAP == null)
                    {
                        var proveedorBL = new ProveedorBL();
                        var proveedor   = new ProveedorInfo
                        {
                            CodigoSAP = abono.Proveedor
                        };
                        proveedor         = proveedorBL.ObtenerPorCodigoSAP(proveedor);
                        abono.Descripcion = proveedor.Descripcion;
                    }
                    else
                    {
                        abono.Descripcion = cuentaSAP.Descripcion;
                    }
                }
                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(abono.Descripcion.Length > CADENA_LARGA
                                         ? abono.Descripcion.Substring(0, CADENA_LARGA - 1).Trim()
                                         : abono.Descripcion.Trim());
                registroContable = new PolizaRegistroContableModel
                {
                    Cuenta =
                        (string.IsNullOrWhiteSpace(abono.Cliente)
                             ? abono.Cuenta
                             : abono.Cliente),
                    Descripcion = sbDescripcion.ToString(),
                    Concepto    = abono.Concepto,
                    Abono       =
                        Convert.ToDecimal(abono.Importe.Replace("-", string.Empty)).ToString(
                            "N", CultureInfo.CurrentCulture)
                };
                PolizaModel.RegistroContable.Add(registroContable);
            }
        }
        /// <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);
            }
        }
        protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos
                                                            , out IList <PolizaInfo> abonos)
        {
            base.GeneraLineaRegistroContable(polizas, out cargos, out abonos);
            cargos.ToList().ForEach(cliente =>
            {
                if (string.IsNullOrWhiteSpace(cliente.Cuenta))
                {
                    cliente.Cuenta = string.Empty;
                }
            });
            cargos = cargos.OrderBy(cliente => cliente.Cuenta).ToList();
            abonos = abonos.OrderBy(cliente => cliente.Cuenta).ToList();

            cargos = cargos.Where(cuenta => !string.IsNullOrWhiteSpace(cuenta.Cuenta) ||
                                  !string.IsNullOrWhiteSpace(cuenta.Cliente))
                     .GroupBy(grupo => grupo.Cuenta)
                     .Select(datos => new PolizaInfo
            {
                Cuenta  = datos.Key,
                Cliente = datos.Select(cli => cli.Cliente).FirstOrDefault(),
                Importe = Convert.ToString(datos.Sum(imp => Convert.ToDecimal(imp.Importe)))
            }).ToList();
            abonos = abonos.Where(cuenta => !string.IsNullOrWhiteSpace(cuenta.Cuenta)).GroupBy(grupo => grupo.Cuenta)
                     .Select(datos => new PolizaInfo
            {
                Cuenta  = datos.Key,
                Cliente = datos.Select(cli => cli.Cliente).FirstOrDefault(),
                Importe = Convert.ToString(datos.Sum(imp => Convert.ToDecimal(imp.Importe)))
            }).ToList();
            const int CADENA_LARGA = 50;

            PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>();
            PolizaRegistroContableModel registroContable;

            foreach (var cargo in cargos)
            {
                CostoInfo descripcionCosto =
                    costos.FirstOrDefault(
                        costo => cargo.Cuenta.EndsWith(costo.ClaveContable) && string.IsNullOrWhiteSpace(cargo.Cliente));
                if (descripcionCosto == null)
                {
                    descripcionCosto = new CostoInfo
                    {
                        Descripcion = organizacionInfo.Descripcion
                    };
                }

                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(descripcionCosto.Descripcion.Length > CADENA_LARGA
                                         ? descripcionCosto.Descripcion.Substring(0, CADENA_LARGA - 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);
            }

            foreach (var abono in abonos)
            {
                CostoInfo descripcionCosto =
                    costos.FirstOrDefault(
                        costo => abono.Cuenta.EndsWith(costo.ClaveContable));
                if (descripcionCosto == null)
                {
                    descripcionCosto = new CostoInfo();
                }
                var sbDescripcion = new StringBuilder();
                sbDescripcion.Append(descripcionCosto.Descripcion.Length > CADENA_LARGA
                                         ? descripcionCosto.Descripcion.Substring(0, CADENA_LARGA - 1).Trim()
                                         : descripcionCosto.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);
            }
        }
Exemplo n.º 7
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);
            }
        }