/// <summary> /// Metodo para Guardar/Modificar una entidad EntradaGanadoTransito /// </summary> /// <param name="info"></param> public int Guardar(EntradaGanadoTransitoInfo info) { try { Logger.Info(); var entradaGanadoTransitoDAL = new EntradaGanadoTransitoDAL(); int result = info.EntradaGanadoTransitoID; if (info.EntradaGanadoTransitoID == 0) { result = entradaGanadoTransitoDAL.Crear(info); } else { entradaGanadoTransitoDAL.Actualizar(info); } return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene el primer elemento de la coleccion /// </summary> /// <param name="result"></param> /// <returns></returns> private EntradaGanadoTransitoInfo ObtieneEntradaGanadoTransito(IEnumerable <EntradaGanadoTransitoInfo> result) { EntradaGanadoTransitoInfo entradaGanadoTransito = null; if (result != null) { entradaGanadoTransito = result.FirstOrDefault(); } return(entradaGanadoTransito); }
private void GeneraLineasDetalle(SalidaGanadoEnTransitoInfo salidaMuerte) { try { //salidaMuerte.LoteID; //var corralOrganizacion = CorralBL.ObtenerCorralesPorOrganizacionID(salidaMuerte.OrganizacionID).FirstOrDefault(corral => corral.LoteID == salidaMuerte.LoteID); var corralDal = new CorralDAL(); var loteDal = new LoteDAL(); //corralMuerte = corralDal.ObtenerPorId(corralOrganizacion.CorralID); loteMuerte = loteDal.ObtenerPorID(salidaMuerte.LoteID); corralMuerte = corralDal.ObtenerPorId(salidaMuerte.CorralID); var entradaGanado = new EntradaGanadoTransitoInfo(); if (loteMuerte != null) { entradaGanado.Lote = loteMuerte; } PolizaModel.Detalle = new List <PolizaDetalleModel>(); { //var pesoMuertePromedio = corralOrganizacion.PesoPromedio; var detalleModel = new PolizaDetalleModel { CantidadCabezas = salidaMuerte.NumCabezas.ToString(CultureInfo.InvariantCulture), TipoGanado = CONCEPTO, PesoTotal = salidaMuerte.Kilos.ToString("N"), PesoPromedio = (salidaMuerte.Kilos / salidaMuerte.NumCabezas).ToString("N"), //PrecioPromedio = Math.Abs(salidaMuerte.Importe / salidaMuerte.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty), //PrecioPromedio = Math.Abs(salidaMuerte.Importe / corralOrganizacion.PesoPromedio/salidaMuerte.NumCabezas).ToString("N2", CultureInfo.CurrentCulture).Replace("$", string.Empty), PrecioPromedio = (salidaMuerte.Importe / (salidaMuerte.Kilos / salidaMuerte.NumCabezas) / salidaMuerte.NumCabezas).ToString("N2", CultureInfo.CurrentCulture).Replace("$", string.Empty), //precio promedio por kilo=costo total/Peso total //precio promedio kilo*peso total*num cabezas=importe ImportePromedio = (salidaMuerte.Importe).ToString("N2", CultureInfo.CurrentCulture), //estaba en :"N2" Corral = corralMuerte.Codigo, Lote = entradaGanado.Lote.Lote }; PolizaModel.Detalle.Add(detalleModel); } polizaImpresion.GenerarDetalles("Detalle"); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una entidad EntradaGanadoTransito por su Id /// </summary> /// <param name="entradaGanadoTransitoID">Obtiene una entidad EntradaGanadoTransito por su Id</param> /// <returns></returns> public EntradaGanadoTransitoInfo ObtenerPorID(int entradaGanadoTransitoID) { try { Logger.Info(); var entradaGanadoTransitoDAL = new EntradaGanadoTransitoDAL(); IEnumerable <EntradaGanadoTransitoInfo> result = entradaGanadoTransitoDAL.ObtenerPorID(entradaGanadoTransitoID); EntradaGanadoTransitoInfo entradaGanadoTransito = ObtieneEntradaGanadoTransito(result); return(entradaGanadoTransito); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para actualizar un registro de EntradaGanadoTransito /// </summary> /// <param name="info">Valores de la entidad que se actualizarán</param> internal void Actualizar(EntradaGanadoTransitoInfo info) { try { Logger.Info(); bool sobrante = info.Sobrante; var xml = new XElement("ROOT", from detalle in info.EntradasGanadoTransitoDetalles select new XElement("Detalle", new XElement("CostoID", detalle.Costo.CostoID), new XElement("EntradaGanadoTransitoID", detalle.EntradaGanadoTransitoID), new XElement("Importe", sobrante ? detalle.Importe * -1 : detalle.Importe))); var parameters = new Dictionary <string, object> { { "@EntradaGanadoTransitoID", info.EntradaGanadoTransitoID }, { "@LoteID", info.Lote.LoteID }, { "@Cabezas", info.Cabezas }, { "@Activo", info.Activo }, { "@Peso", info.Peso }, { "@UsuarioModificacionID", info.UsuarioModificacionID }, { "@XmlDetalle", xml.ToString() }, }; Update("EntradaGanadoTransito_Actualizar", parameters); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// metodo que genera el encabezado /// </summary> /// <param name="salidaVenta">objeto de la venta</param> private void GeneraLineasDetalle(SalidaGanadoEnTransitoInfo salidaVenta) { //var corralOrganizacion = CorralBL.ObtenerCorralesPorOrganizacionID(salidaVenta.OrganizacionID).FirstOrDefault(corral => corral.LoteID == salidaVenta.LoteID); var corralDal = new CorralDAL(); var loteDal = new LoteDAL(); corralVenta = corralDal.ObtenerPorId(salidaVenta.CorralID); loteVenta = loteDal.ObtenerPorID(salidaVenta.LoteID); var entradaGanado = new EntradaGanadoTransitoInfo(); if (loteVenta != null) { entradaGanado.Lote = loteVenta; } PolizaModel.Detalle = new List <PolizaDetalleModel>(); { var detalleModel = new PolizaDetalleModel { CantidadCabezas = salidaVenta.NumCabezas.ToString("F0"), TipoGanado = CONCEPTO, PesoTotal = (salidaVenta.Kilos).ToString("F0"), PesoPromedio = (salidaVenta.Kilos / salidaVenta.NumCabezas).ToString("F0"), PrecioPromedio = (salidaVenta.DetallesSalida.Sum(costo => costo.ImporteCosto) / (salidaVenta.Kilos / salidaVenta.NumCabezas) / salidaVenta.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty), ImportePromedio = Math.Abs(salidaVenta.DetallesSalida.Sum(costo => costo.ImporteCosto)).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty), Corral = corralVenta.Codigo, PrecioVenta = Math.Abs(salidaVenta.Importe / salidaVenta.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty), ImporteVenta = Math.Abs(salidaVenta.Importe).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty), Lote = entradaGanado.Lote.Lote }; PolizaModel.Detalle.Add(detalleModel); } polizaImpresion.GenerarDetalles("Detalle"); }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> internal ResultadoInfo <EntradaGanadoTransitoInfo> ObtenerPorPagina(PaginacionInfo pagina, EntradaGanadoTransitoInfo filtro) { try { var parameters = new Dictionary <string, object> { { "@Lote", filtro.Lote.Lote }, { "@Activo", filtro.Activo }, { "@Inicio", pagina.Inicio }, { "@Limite", pagina.Limite }, }; DataSet ds = Retrieve("EntradaGanadoTransito_ObtenerPorPagina", parameters); ResultadoInfo <EntradaGanadoTransitoInfo> result = null; if (ValidateDataSet(ds)) { result = MapEntradaGanadoTransitoDAL.ObtenerPorPagina(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene un mapeo de entrada ganado transito /// </summary> /// <returns></returns> internal static IEnumerable <EntradaGanadoTransitoInfo> ObtenerMapeoEntradaGanadoTransito(IDataReader reader) { var entradasGanadoTransito = new List <EntradaGanadoTransitoInfo>(); try { Logger.Info(); EntradaGanadoTransitoInfo entradaGanadoTransito; while (reader.Read()) { entradaGanadoTransito = new EntradaGanadoTransitoInfo { EntradaGanadoTransitoID = Convert.ToInt32(reader["EntradaGanadoTransitoID"]), Cabezas = Convert.ToInt32(reader["Cabezas"]), Lote = new LoteInfo { LoteID = Convert.ToInt32(reader["LoteID"]), Lote = Convert.ToString(reader["Lote"]), Corral = new CorralInfo { CorralID = Convert.ToInt32(reader["CorralID"]), Codigo = Convert.ToString(reader["Codigo"]) }, CorralID = Convert.ToInt32(reader["CorralID"]), }, Peso = Convert.ToInt32(reader["Peso"]) }; entradasGanadoTransito.Add(entradaGanadoTransito); } reader.NextResult(); var detalles = new List <EntradaGanadoTransitoDetalleInfo>(); EntradaGanadoTransitoDetalleInfo detalle; while (reader.Read()) { detalle = new EntradaGanadoTransitoDetalleInfo { Costo = new CostoInfo { CostoID = Convert.ToInt32(reader["CostoID"]), }, EntradaGanadoTransitoDetalleID = Convert.ToInt32(reader["EntradaGanadoTransitoDetalleID"]), EntradaGanadoTransitoID = Convert.ToInt32(reader["EntradaGanadoTransitoID"]), Importe = Convert.ToDecimal(reader["Importe"]) }; detalles.Add(detalle); } entradasGanadoTransito.ToList() .ForEach(dato => { dato.EntradasGanadoTransitoDetalles = detalles.Where(id => id.EntradaGanadoTransitoID == dato.EntradaGanadoTransitoID).ToList(); }); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(entradasGanadoTransito); }
/// <summary> /// Metodo que crear una entrada de ganado /// </summary> /// <param name="entradaGanadoSobranteInfo"></param> internal int GuardarEntradaGanadoSobrante(EntradaGanadoSobranteInfo entradaGanadoSobranteInfo) { try { Logger.Info(); var entradaGanadoSobranteDAL = new EntradaGanadoSobranteDAL(); var entradaGanadoTransitoBL = new EntradaGanadoTransitoBL(); var parametroBL = new ParametroOrganizacionBL(); var animalBl = new AnimalBL(); int entradaGanadoID = 0; /* Obtener Tipo de organizacion Origen*/ ParametrosEnum corralFaltante = entradaGanadoSobranteInfo.EntradaGanado.TipoOrganizacionOrigenId == (int)TipoOrganizacion.CompraDirecta ? ParametrosEnum.CORRALFALTDIRECTA : ParametrosEnum.CORRALFALTPROPIO; /* Obtener Codigo Corral de parametroOrganizacion*/ ParametroOrganizacionInfo parametroOrganizacionInfo = parametroBL.ObtenerPorOrganizacionIDClaveParametro( entradaGanadoSobranteInfo.EntradaGanado.OrganizacionID, corralFaltante.ToString()); if (parametroOrganizacionInfo != null) { /* Obtener entradaGanadoTransitoInfo del corral faltante parametrizado*/ EntradaGanadoTransitoInfo entradaGanadoTransitoInfo = entradaGanadoTransitoBL.ObtenerPorCorralOrganizacion( parametroOrganizacionInfo.Valor, entradaGanadoSobranteInfo.EntradaGanado.OrganizacionID); if (entradaGanadoTransitoInfo != null && entradaGanadoTransitoInfo.Cabezas > 0) { /* Obtener el importe prorrateado mediante el siguiente calculo: Importe = Importe / Cabezas */ List <EntradaGanadoTransitoDetalleInfo> detalles = entradaGanadoTransitoInfo.EntradasGanadoTransitoDetalles; for (int indexDetalle = 0; indexDetalle < detalles.Count; indexDetalle++) { entradaGanadoSobranteInfo.Importe = detalles[indexDetalle].Importe / entradaGanadoTransitoInfo.Cabezas; /* Se almacena la entrada Ganado Sobrante*/ entradaGanadoID = entradaGanadoSobranteDAL.GuardarEntradaGanadoSobrante(entradaGanadoSobranteInfo); /* Se actuacon los datos a actualizar en la tabla entradaGanadoTransito */ detalles[indexDetalle].Importe = entradaGanadoSobranteInfo.Importe * -1; entradaGanadoTransitoInfo.Peso = (entradaGanadoTransitoInfo.Peso / entradaGanadoTransitoInfo.Cabezas) * -1; entradaGanadoTransitoInfo.Cabezas = -1; entradaGanadoTransitoInfo.UsuarioModificacionID = entradaGanadoSobranteInfo.UsuarioCreacionID; /* Al ingresar los registros sobrantes se deben descontar de los faltantes de la tabla 'EntradaGanadoTransito' */ entradaGanadoTransitoBL.Guardar(entradaGanadoTransitoInfo); } /* Actualziar el Peso Compra del Animal */ entradaGanadoSobranteInfo.Animal.UsuarioModificacionID = entradaGanadoSobranteInfo.UsuarioCreacionID; entradaGanadoSobranteInfo.Animal.PesoCompra = (int)entradaGanadoTransitoInfo.Peso; animalBl.ActualizaPesoCompra(entradaGanadoSobranteInfo.Animal); } else { throw new ExcepcionDesconocida("No hay suficientes cabezas faltantes para cubrir las sobrantes de la partida. Favor de validar."); } } else { throw new ExcepcionDesconocida("No existe un corral de cabezas faltantes configurado. Favor de validar."); } return(entradaGanadoID); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene los datos de la entrada ganado transito /// </summary> private void ObtenerDatosEntradaGanadoTransito() { int cabezasOrigen = ContenedorCosteoEntrada.EntradaGanado.CabezasOrigen; int cabezasLlegada = ContenedorCosteoEntrada.EntradaGanadoCosteo.ListaEntradaDetalle.Sum(cab => cab.Cabezas); int diferenciaCabezas = cabezasLlegada - cabezasOrigen; if (diferenciaCabezas != 0) { var parametroOrganizacionPL = new ParametroOrganizacionPL(); var codigoParametro = ParametrosEnum.CORRALFALTDIRECTA; switch ((TipoOrganizacion)ContenedorCosteoEntrada.EntradaGanado.TipoOrigen) { case TipoOrganizacion.Cadis: case TipoOrganizacion.Centro: case TipoOrganizacion.Praderas: codigoParametro = ParametrosEnum.CORRALFALTPROPIO; break; } ParametroOrganizacionInfo parametroOrganizacion = parametroOrganizacionPL.ObtenerPorOrganizacionIDClaveParametro(organizacionIdLogin, codigoParametro.ToString()); if (parametroOrganizacion == null) { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CosteoEntradaGanado_ConfiguracionCorralesTransito, MessageBoxButton.OK, MessageImage.Stop); return; } var entradaGanadoTransitoBL = new EntradaGanadoTransitoBL(); EntradaGanadoTransitoInfo entradaGanadoTransito = entradaGanadoTransitoBL.ObtenerPorCorralOrganizacion(parametroOrganizacion.Valor, organizacionIdLogin); if (entradaGanadoTransito != null) { entradaGanadoTransito.Sobrante = diferenciaCabezas >= 0; decimal pesoTransito = ContenedorCosteoEntrada.EntradaGanadoCosteo.ListaEntradaDetalle.Sum( peso => peso.PesoLlegada - peso.PesoOrigen); decimal importeTransito = ContenedorCosteoEntrada.EntradaGanadoCosteo.ListaEntradaDetalle.Sum( imp => imp.Importe); decimal importeOrigen = ContenedorCosteoEntrada.EntradaGanadoCosteo.ListaEntradaDetalle.Sum( imp => imp.ImporteOrigen); LoteInfo lote = entradaGanadoTransito.Lote; lote.Cabezas = lote.Cabezas + diferenciaCabezas; lote.UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado(); int multiplicador; if (entradaGanadoTransito.Sobrante) { multiplicador = 1; } else { multiplicador = -1; } entradaGanadoTransito.Cabezas = (diferenciaCabezas * multiplicador) * -1; entradaGanadoTransito.Peso = Convert.ToInt32(pesoTransito * multiplicador); int totalCabezasTipoGanado = ContenedorCosteoEntrada.EntradaGanadoCosteo .ListaEntradaDetalle.Sum(cab => cab.Cabezas); totalCabezasTipoGanado += (diferenciaCabezas * multiplicador); int porcentajeDescontar = Convert.ToInt32(Math.Round(100 - ((importeTransito * 100) / importeOrigen), 0, MidpointRounding.AwayFromZero)); List <EntradaGanadoTransitoDetalleInfo> detalles = entradaGanadoTransito.EntradasGanadoTransitoDetalles; EntradaGanadoTransitoDetalleInfo detalle; decimal importeConDescuento; for (int index = 0; index < detalles.Count; index++) { detalle = detalles[index]; importeOrigen = ContenedorCosteoEntrada.EntradaGanadoCosteo.ListaCostoEntrada .Where(id => id.Costo.CostoID == detalle.Costo.CostoID) .Select(imp => imp.Importe).FirstOrDefault(); importeConDescuento = (importeOrigen / 100) * porcentajeDescontar; detalle.Importe = importeConDescuento * multiplicador; } entradaGanadoTransito.UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado(); ContenedorCosteoEntrada.EntradaGanadoTransito = entradaGanadoTransito; } } }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public ResultadoInfo <EntradaGanadoTransitoInfo> ObtenerPorPagina(PaginacionInfo pagina, EntradaGanadoTransitoInfo filtro) { try { Logger.Info(); var entradaGanadoTransitoDAL = new EntradaGanadoTransitoDAL(); ResultadoInfo <EntradaGanadoTransitoInfo> result = entradaGanadoTransitoDAL.ObtenerPorPagina(pagina, filtro); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }