Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
 /// <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);
     }
 }
Ejemplo n.º 5
0
 /// <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);
     }
 }
Ejemplo n.º 6
0
        /// <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");
        }
Ejemplo n.º 7
0
 /// <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);
        }
Ejemplo n.º 9
0
        /// <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);
            }
        }
Ejemplo n.º 10
0
        /// <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;
                }
            }
        }
Ejemplo n.º 11
0
 /// <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);
     }
 }