/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }