Пример #1
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);
            }
        }