public void CostoObtenerTodosActivos() { var pl = new CostoPL(); IList <CostoInfo> lista = pl.ObtenerTodos(EstatusEnum.Activo); Assert.AreNotEqual(lista, null); }
/// <summary> /// Genera los nodos correspondientes a la poliza de una salida de ganado en transito por muerte /// </summary> /// <param name="datosPoliza">El objeto SalidaGanadoEnTransitoInfo con la informacion de la salida de ganado en transito por muerte al que se le generara la poliza</param> /// <returns>Regresa la lista de nodos de la poliza generada por la salida de ganado en transito por muerte</returns> public override IList <PolizaInfo> GeneraPoliza(object datosPoliza) { try { IList <PolizaInfo> polizaSalida = new List <PolizaInfo>(); var input = (SalidaGanadoEnTransitoInfo)datosPoliza; detalles = input.DetallesSalida; datos = ObtenerDatosPolizaSalidaPorMuerte(input); var noLinea = 1; //genera el ref3: var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append(Convert.ToString(input.Folio).PadLeft(10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond.ToString(CultureInfo.InvariantCulture)); ref3.Append(datos.PostFijoRef3); // //genera el folio de archivo: var archivoFolio = new StringBuilder(); archivoFolio.Append("P01"); archivoFolio.Append(input.Fecha.ToString("yyyyMMdd")); archivoFolio.Append(DateTime.Now.Minute); archivoFolio.Append(DateTime.Now.Second); archivoFolio.Append(new Random(1).Next(1, 9)); // //busca el costo de ganado var costoGanado = input.Costos.FirstOrDefault(costo => costo.CostoID == Costo.CostoGanado.GetHashCode()); // if (costoGanado != null) { //calcula el importe total sumando los importes de los detalles if (input.DetallesSalida != null) { input.Importe = input.DetallesSalida.Sum(x => x.ImporteCosto); #region Primer nodo : Total de costos de salida //genera un nodo generico de la poliza por salida de ganado en transito por muerte var nodo1 = GenerarNodoPlantillaPolizaMuerteTransito(input, noLinea, ref3.ToString(), archivoFolio.ToString()); // //busca la cuenta de Faltantes / Sobrantes de la organizacion que registro la salida de ganado en transito var parOrganizacion = new ParametroOrganizacionBL(); var claveCuenta = parOrganizacion.ObtenerPorOrganizacionIDClaveParametro(input.OrganizacionID, ParametrosEnum.CTAFALTANTESOBRANTE.ToString()); nodo1.Cuenta = claveCuenta.Valor; if (claveCuenta.Valor.Substring(0, 4) == "5001") { nodo1.CentroCosto = datos.ParametroOrganizacionValor; } // var importeCostos = input.DetallesSalida.Sum(costo => costo.ImporteCosto); nodo1.Importe = "-" + importeCostos.ToString(CultureInfo.InvariantCulture); polizaSalida.Add(nodo1); #endregion #region segundo nodo : Costo de salida correspondiente a salida de ganado noLinea++; ClaveContableInfo clavecontablecargo; var nodo2 = GenerarNodoPlantillaPolizaMuerteTransito(input, noLinea, ref3.ToString(), archivoFolio.ToString()); if (claveCuenta.Valor.Substring(0, 4) == "5001") { nodo2.CentroCosto = datos.ParametroOrganizacionValor; } var salidaPorMuerteEnTransitoDetalle = input.DetallesSalida.FirstOrDefault( detalle => detalle.CostoId == Costo.CostoGanado.GetHashCode()); if (salidaPorMuerteEnTransitoDetalle != null) { nodo2.Importe = salidaPorMuerteEnTransitoDetalle.ImporteCosto.ToString(CultureInfo.InvariantCulture); } else { var ex = new Exception(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_CostosGanadoNoEncontrado); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } costos = ObtenerCostos(); var firstOrDefault = costos.FirstOrDefault(x => x.CostoID == costoGanado.CostoID); if (firstOrDefault != null) { var costoAbonos = new CostoInfo { ClaveContable = firstOrDefault.ClaveContable }; clavecontablecargo = ObtenerCuentaInventario(costoAbonos, input.OrganizacionID, TipoPoliza.SalidaMuerteEnTransito); if (clavecontablecargo != null) { nodo2.Cuenta = clavecontablecargo.Valor; } } else { var ex = new Exception(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_CostosGanadoNoEncontrado); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } polizaSalida.Add(nodo2); #endregion #region nodos de detalles importes costo corral var nodosDetalles = new List <PolizaInfo>(); var costosPl = new CostoPL(); var costosclaves = costosPl.ObtenerTodos(EstatusEnum.Activo); //agrega todos los costos de los detalles excepto el costo de ganado (por que ya se encuentra agregado) foreach ( var costoCargo in input.DetallesSalida.SkipWhile(costo => costo.CostoId == Costo.CostoGanado.GetHashCode()) ) { noLinea++; var temp = GenerarNodoPlantillaPolizaMuerteTransito(input, noLinea, ref3.ToString(), archivoFolio.ToString()); if (costosclaves == null) { var ex = new Exception(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_CostosNoEncontrados); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } var claveCosto = costosclaves.FirstOrDefault(x => x.CostoID == costoCargo.CostoId); if (claveCosto != null) { var costosAbono = new CostoInfo { ClaveContable = claveCosto.ClaveContable }; //busca la clave contable para el costo correspondiente clavecontablecargo = ObtenerCuentaInventario(costosAbono, input.OrganizacionID, TipoPoliza.SalidaMuerteEnTransito); if (clavecontablecargo != null) { temp.Cuenta = clavecontablecargo.Valor; } } else { var ex = new Exception( string.Format(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_CostoIdNoEncontrado, costoCargo.CostoId)); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } if (claveCuenta.Valor.Substring(0, 4) == "5001") { temp.CentroCosto = datos.ParametroOrganizacionValor; } temp.Importe = costoCargo.ImporteCosto.ToString(CultureInfo.InvariantCulture); nodosDetalles.Add(temp); } foreach (var polizaItem in nodosDetalles) { polizaSalida.Add(polizaItem); } #endregion } else { var ex = new Exception(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_DetalleSalidaGanadoTransitoNoProporcionados); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } } else { var ex = new Exception(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_CostosGanadoNoEncontrado); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(polizaSalida); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para armar los objetos para generar poliza /// </summary> /// <param name="datosPoliza">Objeto salidaGanadotransitoInfo</param> /// <returns>poliza</returns> public override IList <PolizaInfo> GeneraPoliza(object datosPoliza) { IList <PolizaInfo> polizaSalida = new List <PolizaInfo>(); var noLinea = 1; var costosPl = new CostoPL(); var cliente = new ClientePL(); var cuentasSap = ObtenerCuentasSAP(); var interfaceBl = new InterfaceSalidaBL(); var parOrganizacion = new ParametroOrganizacionBL(); var parametroCentro = new ParametroOrganizacionInfo(); var input = (SalidaGanadoEnTransitoInfo)datosPoliza; var costosClaves = costosPl.ObtenerTodos(EstatusEnum.Activo); var costoAbono = new CostoInfo { ClaveContable = string.Empty }; var costoGanado = input.Costos.FirstOrDefault(x => x.CostoID == Costo.CostoGanado.GetHashCode()); var claveCuenta = parOrganizacion.ObtenerPorOrganizacionIDClaveParametro(input.OrganizacionID, ParametrosEnum.CTAFALTANTESOBRANTE.ToString()); ClaveContableInfo clavecontablecargo; detalles = input.DetallesSalida; datos = obtenerDatosPolizaSalidaPorVenta(input); input.Cliente = cliente.ObtenerPorID(input.Cliente.ClienteID); //la var datos debe contener datos para poder acceder a su valor en la propiedad PostFijoRef3 var ref3 = Ref3(input); var archivoFolio = ArchivoFolio(input); #region linea1(+) Proveedor var linea1 = InicializarPolizaInfo(input, ref3, archivoFolio, noLinea); linea1.Importe = input.Importe.ToString("N", CultureInfo.InvariantCulture); linea1.Cliente = input.Cliente.CodigoSAP; //linea1.Cuenta = input.Cliente.CodigoSAP; polizaSalida.Add(linea1); noLinea++; #endregion #region linea2(-) Beneficiario var linea2 = InicializarPolizaInfo(input, ref3, archivoFolio, noLinea); //linea2.Cliente = input.Cliente.CodigoSAP; linea2.Importe = "-" + input.Importe.ToString("N", CultureInfo.InvariantCulture); var claveContableAbono = interfaceBl.ObtenerCuentaInventario(costoAbono, input.OrganizacionID, ClaveCuenta.CuentaBeneficioInventario); if (claveContableAbono != null) { var cuentaSap = cuentasSap.FirstOrDefault(clave => clave.CuentaSAP == claveContableAbono.Valor); claveContableAbono.Descripcion = cuentaSap == null ? string.Empty : cuentaSap.Descripcion; } else { claveContableAbono = new ClaveContableInfo { Valor = string.Empty }; } var beneficio = false; if (claveContableAbono.Valor.StartsWith(PrefijoCuentaCentroBeneficio)) { parametroCentro = ObtenerParametroOrganizacionPorClave(input.OrganizacionID, ParametrosEnum.CTACENTROBENEFICIOENG.ToString()); if (parametroCentro == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE BENEFICIO NO CONFIGURADO")); } beneficio = true; } else { if (claveContableAbono.Valor.StartsWith(PrefijoCuentaCentroCosto) || claveContableAbono.Valor.StartsWith(PrefijoCuentaCentroGasto)) { parametroCentro = ObtenerParametroOrganizacionPorClave(input.OrganizacionID, ParametrosEnum.CTACENTROCOSTOENG.ToString()); if (parametroCentro == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE BENEFICIO NO CONFIGURADO")); } } } if (beneficio) { linea2.CentroBeneficio = parametroCentro.Valor; } else { linea2.CentroCosto = parametroCentro.Valor; } linea2.Cuenta = claveContableAbono.Valor; polizaSalida.Add(linea2); noLinea++; #endregion #region linea3 cargo a cuenta costo ganado(-) //se elimino esta linea #endregion #region linea4 cargo a costo corral(-) if (costoGanado == null) { return(polizaSalida); } var linea4 = InicializarPolizaInfo(input, ref3, archivoFolio, noLinea); linea4.Cuenta = claveCuenta.Valor; if (claveCuenta.Valor.Substring(0, 4) == "5001") { linea4.CentroCosto = datos.ParametroOrganizacionValor; } var importeCostos = input.DetallesSalida.Sum(costo => costo.ImporteCosto); linea4.Importe = "-" + importeCostos.ToString(CultureInfo.InvariantCulture); polizaSalida.Add(linea4); noLinea++; #endregion #region linea5 cargoACuentaResultados (-)(importe total) var linea5 = InicializarPolizaInfo(input, ref3, archivoFolio, noLinea); if (claveCuenta.Valor.Substring(0, 4) == "5001") { linea5.CentroCosto = datos.ParametroOrganizacionValor; } var salidaVentaTransito = input.DetallesSalida.FirstOrDefault(detalle => detalle.CostoId == Costo.CostoGanado.GetHashCode()); if (salidaVentaTransito != null) { linea5.Importe = salidaVentaTransito.ImporteCosto.ToString(CultureInfo.InvariantCulture); } costos = ObtenerCostos(); var firstOrDefault = costos.FirstOrDefault(x => x.CostoID == costoGanado.CostoID); if (firstOrDefault != null) { costoAbono.ClaveContable = firstOrDefault.ClaveContable; clavecontablecargo = ObtenerCuentaInventario(costoAbono, input.OrganizacionID, TipoPoliza.PolizaMuerteTransito); if (clavecontablecargo != null) { linea5.Cuenta = clavecontablecargo.Valor; } } polizaSalida.Add(linea5); noLinea++; #endregion #region linea6 abono a cuenta Resultados a la misma cuenta que el punto anterior en foreach var linea6 = new List <PolizaInfo>(); foreach (var costoCargo in input.DetallesSalida.SkipWhile(costo => costo.CostoId == Costo.CostoGanado.GetHashCode())) { var temp = InicializarPolizaInfo(input, ref3, archivoFolio, noLinea); temp.Importe = costoCargo.ImporteCosto.ToString(CultureInfo.InvariantCulture); var claveCosto = costosClaves.FirstOrDefault(x => x.CostoID == costoCargo.CostoId); if (claveCosto != null) { costoAbono.ClaveContable = claveCosto.ClaveContable; clavecontablecargo = ObtenerCuentaInventario(costoAbono, input.OrganizacionID, TipoPoliza.PolizaMuerteTransito); if (clavecontablecargo != null) { temp.Cuenta = clavecontablecargo.Valor; } } if (claveCuenta.Valor.Substring(0, 4) == "5001") { temp.CentroCosto = datos.ParametroOrganizacionValor; } linea6.Add(temp); noLinea++; } foreach (var polizaItem in linea6) { polizaSalida.Add(polizaItem); } #endregion return(polizaSalida); }