Esempio n. 1
0
 /// <summary>
 /// Obtiene la orden de sacrificio de un dia en eespecifico
 /// </summary>
 /// <param name="orden"></param>
 /// <returns></returns>
 internal OrdenSacrificioInfo ObtenerOrdenSacrificioDelDia(OrdenSacrificioInfo orden)
 {
     try
     {
         Logger.Info();
         var parameters             = AuxOrdenSacrificioDAL.ObtenerParametrosOrdenSacrificioDelDia(orden);
         var ds                     = Retrieve("OrdenSacrificio_ObtenerOrdenDiaActual", parameters);
         OrdenSacrificioInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapOrdenSacrificioDAL.ObtenerOrdenSacrificio(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);
     }
 }
Esempio n. 2
0
 public OrdenSacrificioInfo OrdenSacrificioFecha(string fecha, int organizacionId)
 {
     try
     {
         Logger.Info();
         var parametro = AuxOrdenSacrificioDAL.ObtenerParametroDetalleOrden(fecha, organizacionId);
         var ds        = Retrieve("OrdenSacrificio_ObtenerOrdenFecha", parametro);
         OrdenSacrificioInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapOrdenSacrificioDAL.ObtenerOrdenSacrificioFecha(ds);
         }
         return(result);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Metrodo Para Guardar en en la tabla Animal
 /// </summary>
 internal IList <OrdenSacrificioDetalleInfo> GuardarDetalleOrdenSacrificio(OrdenSacrificioInfo orden, IList <OrdenSacrificioDetalleInfo> detalleOrden)
 {
     try
     {
         Logger.Info();
         var parameters = AuxOrdenSacrificioDAL.ObtenerParametrosGuardarDetalleOrdenSacrificio(orden, detalleOrden);
         var ds         = Retrieve("OrdenSacrificio_GuardarDetalleOrden", parameters);
         IList <OrdenSacrificioDetalleInfo> result = null;
         if (ValidateDataSet(ds))
         {
             result = MapOrdenSacrificioDAL.ObtenerDetalleOrdenSacrificio(ds, true);
         }
         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);
     }
 }
Esempio n. 4
0
        /// <summary>
        ///     Método asigna el registro del animal obtenido
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        internal static OrdenSacrificioInfo ObtenerOrdenSacrificio(DataSet ds)
        {
            OrdenSacrificioInfo ordenSacrificio = null;

            try
            {
                Logger.Info();

                ordenSacrificio = new OrdenSacrificioInfo();
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    ordenSacrificio.OrdenSacrificioID    = Convert.ToInt32(dr["OrdenSacrificioID"]);
                    ordenSacrificio.FolioOrdenSacrificio = Convert.ToInt32(dr["FolioOrdenSacrificio"]);
                    ordenSacrificio.OrganizacionID       = Convert.ToInt32(dr["OrganizacionID"]);
                    ordenSacrificio.Observacion          = Convert.ToString(dr["Observaciones"]);
                    ordenSacrificio.EstatusID            = Convert.ToInt32(dr["EstatusID"]);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(ordenSacrificio);
        }
Esempio n. 5
0
        internal static OrdenSacrificioInfo ObtenerOrdenSacrificioFecha(DataSet ds)
        {
            OrdenSacrificioInfo ordenSacrificio = null;

            try
            {
                Logger.Info();
                ordenSacrificio = new OrdenSacrificioInfo();

                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    ordenSacrificio.OrdenSacrificioID    = Convert.ToInt32(dr["ordenSacrificioID"]);
                    ordenSacrificio.FolioOrdenSacrificio = Convert.ToInt32(dr["FolioOrdenSacrificio"]);
                    ordenSacrificio.OrganizacionID       = Convert.ToInt32(dr["OrganizacionID"]);
                    ordenSacrificio.Observacion          = Convert.ToString(dr["Observaciones"]);
                    ordenSacrificio.FechaOrden           = Convert.ToDateTime(dr["FechaOrden"]);
                    ordenSacrificio.EstatusID            = Convert.ToInt32(dr["EstatusID"]);
                    ordenSacrificio.Activo                = Convert.ToBoolean(dr["Activo"]);
                    ordenSacrificio.FechaCreacion         = Convert.ToDateTime(dr["FechaCreacion"]);
                    ordenSacrificio.UsuarioCreacion       = Convert.ToInt32(dr["UsuarioCreacionID"]);
                    ordenSacrificio.FechaModificacion     = string.IsNullOrEmpty(dr["FechaModificacion"].ToString()) ? new Nullable <DateTime>() : Convert.ToDateTime(dr["FechaModificacion"]);
                    ordenSacrificio.UsuarioModificacionID = string.IsNullOrEmpty(dr["UsuarioModificacionID"].ToString()) ? new Nullable <int>() : Convert.ToInt32(dr["UsuarioModificacionID"]);
                }
                return(ordenSacrificio);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Obtener la orden de sacrificio del dia
        /// </summary>
        /// <param name="ordenInfo"></param>
        /// <returns></returns>
        internal OrdenSacrificioInfo ObtenerOrdenSacrificioDelDia(OrdenSacrificioInfo ordenInfo)
        {
            OrdenSacrificioInfo result;

            try
            {
                Logger.Info();
                var ordenSacrificioDal = new OrdenSacrificioDAL();
                result = ordenSacrificioDal.ObtenerOrdenSacrificioDelDia(ordenInfo);

                if (result != null)
                {
                    result.DetalleOrden = ordenSacrificioDal.ObtenerDetalleOrdenSacrificio(result, ordenInfo.Activo);
                }
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
Esempio n. 7
0
        public void ObtenerOrdenSacrificio()
        {
            string fecha = dtpFecha.SelectedDate.ToString();

            datosDetalleOrden   = new Dictionary <int, int>();
            dicCabezas          = new Dictionary <int, int>();
            datoAnteriorCabezas = new Dictionary <int, int>();
            var ordensacrificioPL = new OrdenSacrificioPL();

            Modelo = ordensacrificioPL.OrdenSacrificioFecha(fecha, organizacionId);
            if (Modelo == null)
            {
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], string.Format(Properties.Resources.CancelacionOrdenSacrificio_NoExisteOS, fecha.Substring(0, 10)), MessageBoxButton.OK, MessageImage.Warning);
            }
            else
            {
                Modelo.DetalleOrden = ordensacrificioPL.ObtenerDetalleOrden(Modelo.OrdenSacrificioID);
                if (Modelo.DetalleOrden != null)
                {
                    if (Modelo.DetalleOrden.Count == 0)
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CancelacionOrdenSacrificio_ValidarExisteOS, MessageBoxButton.OK, MessageImage.Warning);
                    }
                    else
                    {
                        foreach (var od in Modelo.DetalleOrden)
                        {
                            if (od.Corral.TipoCorral.TipoCorralID != TipoCorral.Intensivo.GetHashCode() && od.CabezasActuales == 0)
                            {
                                od.Seleccionable = false;
                            }
                            listaOrdenDetalle.Add(od);
                        }

                        foreach (var dd in Modelo.DetalleOrden)
                        {
                            datosDetalleOrden.Add(dd.Lote.LoteID, dd.CabezasASacrificar);
                        }
                        Modelo.DetalleOrden.ToList().ForEach(e =>
                        {
                            dicCabezas.Add(e.Lote.LoteID, e.CabezasASacrificar);
                            datoAnteriorCabezas.Add(e.Lote.LoteID, e.CabezasASacrificar);
                        });
                        gridOrdenesSacrificios.GetBindingExpression(
                            DataGrid.ItemsSourceProperty)
                        .UpdateTarget();
                    }
                }
                else
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CancelacionOrdenSacrificio_ValidarExisteOS, MessageBoxButton.OK, MessageImage.Warning);
                }
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Obtiene la orden de sacrificio del un dia en especifico
        /// </summary>
        /// <param name="orden"></param>
        /// <returns></returns>
        public OrdenSacrificioInfo ObtenerOrdenSacrificioDelDia(OrdenSacrificioInfo orden)
        {
            OrdenSacrificioInfo result;

            try
            {
                Logger.Info();
                var ordenSacrificioBl = new OrdenSacrificioBL();
                result = ordenSacrificioBl.ObtenerOrdenSacrificioDelDia(orden);
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
Esempio n. 9
0
        /// <summary>
        /// Método Para Guardar en en la Tabla Animal
        /// </summary>
        public OrdenSacrificioInfo GuardarOrdenSacrificio(OrdenSacrificioInfo ordenSacrificio, IList <OrdenSacrificioDetalleInfo> detalleOrden, int organizacionId)
        {
            OrdenSacrificioInfo result;

            try
            {
                Logger.Info();
                var ordenSacrificioBl = new OrdenSacrificioBL();
                result = ordenSacrificioBl.GuardarOrdenSacrificio(ordenSacrificio, detalleOrden, organizacionId);
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
Esempio n. 10
0
        /// <summary>
        ///     Metodo para obtener los parametros para guardar una orden de sacrificio
        /// </summary>
        /// <param name="ordenSacrificio">Orden de sacrificio</param>
        /// <param name="detalleOrden">Detalle de la orden de sacrificio</param>
        /// <returns></returns>
        internal static Dictionary <string, object> ObtenerParametrosGuardarDetalleOrdenSacrificio(OrdenSacrificioInfo ordenSacrificio, IList <OrdenSacrificioDetalleInfo> detalleOrden)
        {
            try
            {
                Logger.Info();

                var xml =
                    new XElement("ROOT",
                                 from detalle in detalleOrden
                                 select new XElement("DetallOrdenSacrificio",
                                                     new XElement("OrdenSacrificioDetalleID", detalle.OrdenSacrificioDetalleID),
                                                     new XElement("CorraletaID", detalle.Corraleta.CorralID),
                                                     new XElement("CorraletaCodigo", detalle.CorraletaCodigo),
                                                     new XElement("Proveedor", detalle.Proveedor.Descripcion),
                                                     new XElement("Clasificacion", detalle.Clasificacion),
                                                     new XElement("LoteID", detalle.Lote.LoteID),
                                                     new XElement("CabezasLote", detalle.Cabezas),
                                                     new XElement("DiasEngordaGrano", detalle.DiasEngordaGrano),
                                                     new XElement("DiasRetiro", detalle.DiasRetiro),
                                                     new XElement("CabezasSacrificio", detalle.CabezasASacrificar),
                                                     new XElement("Turno", (int)detalle.Turno),
                                                     new XElement("Activo", (int)EstatusEnum.Activo),
                                                     new XElement("Orden", detalle.Orden),
                                                     new XElement("TipoGanadoID", detalle.TipoGanadoID)
                                                     ));


                var parametros =
                    new Dictionary <string, object>
                {
                    { "@OrdenSacrificioID", ordenSacrificio.OrdenSacrificioID },
                    { "@FolioSalida", 0 },
                    { "@Activo", (int)EstatusEnum.Activo },
                    { "@UsuarioCreacionID", ordenSacrificio.UsuarioCreacion },
                    { "@DetalleOrdenSacrificio", xml.ToString() }
                };
                return(parametros);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Esempio n. 11
0
 /// <summary>
 ///     Metodo para obtener los parametros para guardar una orden de sacrificio
 /// </summary>
 /// <param name="ordenSacrificio"></param>
 /// <returns></returns>
 internal static Dictionary <string, object> ObtenerParametrosGuardarOrdenSacrificio(OrdenSacrificioInfo ordenSacrificio)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@OrdenSacrificioID", ordenSacrificio.OrdenSacrificioID },
             { "@TipoFolioID", (int)TipoFolio.OrdenSacrificio },
             { "@OrganizacionID", ordenSacrificio.OrganizacionID },
             { "@Observaciones", ordenSacrificio.Observacion },
             { "@EstatusID", (int)Estatus.OrdenSacrificioPendiente },
             { "@Activo", (int)EstatusEnum.Activo },
             { "@FechaOrden", ordenSacrificio.FechaOrden },
             { "@UsuarioCreacionID", ordenSacrificio.UsuarioCreacion },
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Esempio n. 12
0
 /// <summary>
 /// Obteiene los parametros necesarios para obtener el detalle de una orden de sacrificio
 /// </summary>
 /// <param name="ordenSacrificio"></param>
 /// <returns></returns>
 internal static Dictionary <string, object> ObtenerParametrosOrdenSacrificioDetalle(OrdenSacrificioInfo ordenSacrificio)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@OrdenSacrificioID", ordenSacrificio.OrdenSacrificioID },
             { "@Activo", (int)EstatusEnum.Activo }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        public static int ObtenerHabilitarEstadoComedero(int loteID)
        {
            int resultado = 0;
            ProgramacionReimplantePL programacionReinplantePL = new ProgramacionReimplantePL();
            OrdenSacrificioPL        ordenSacrificioPL        = new OrdenSacrificioPL();
            LotePL lotePL = new LotePL();

            LoteInfo            lote  = new LoteInfo();
            OrdenSacrificioInfo orden = new OrdenSacrificioInfo();

            try
            {
                var seguridad      = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;

                if (seguridad != null)
                {
                    lote = lotePL.ObtenerPorId(loteID);

                    if (lote != null)
                    {
                        //Se verifica si el corral va a Zilmax
                        if (lote.FechaDisponibilidad.ToShortDateString() != DateTime.Now.ToShortDateString())
                        {
                            resultado = 1;
                        }

                        //Se verifica si el corral va a reimplante
                        if (resultado == 1)
                        {
                            List <ProgramacionReinplanteInfo> programacionReinplante = null;
                            programacionReinplante = programacionReinplantePL.ObtenerProgramacionReimplantePorLoteID(lote);

                            if (programacionReinplante.Count > 0)
                            {
                                if (programacionReinplante.First().Fecha.ToShortDateString() == DateTime.Now.ToShortDateString())
                                {
                                    resultado = 0;
                                }
                            }
                        }

                        //Se verifica si el corral va a sacrificio
                        if (resultado == 1)
                        {
                            orden.FechaOrden     = DateTime.Now;
                            orden.OrganizacionID = organizacionId;
                            orden.EstatusID      = (int)Estatus.OrdenSacrificioPendiente;
                            orden = ordenSacrificioPL.ObtenerOrdenSacrificioDelDia(orden);

                            if (orden != null)
                            {
                                for (var i = 0; i < orden.DetalleOrden.Count; i++)
                                {
                                    if (orden.DetalleOrden[i].Lote.LoteID == lote.LoteID)
                                    {
                                        resultado = 0;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(resultado);
        }
Esempio n. 14
0
        /// <summary>
        /// Método Para Guardar en en la Tabla Animal
        /// </summary>
        internal OrdenSacrificioInfo GuardarOrdenSacrificio(OrdenSacrificioInfo ordenInfo, IList <OrdenSacrificioDetalleInfo> detalleOrden, int organizacionId)
        {
            OrdenSacrificioInfo result = null;

            try
            {
                Logger.Info();
                IList <SalidaSacrificioInfo> salidaSacrificio = null;
                var    paramOrgPl             = new ParametroOrganizacionBL();
                var    salidaSacrificioDal    = new SalidaSacrificioDAL();
                var    ordenSacrificioDal     = new OrdenSacrificioDAL();
                var    salidaSacrificioNuevos = new List <SalidaSacrificioInfo>();
                var    osId        = 0;
                var    aplicaMarel = false;
                string conexion    = salidaSacrificioDal.ObtenerCadenaConexionSPI(organizacionId);
                var    paramOrg    = paramOrgPl.ObtenerPorOrganizacionIDClaveParametro(organizacionId, ParametrosEnum.AplicaSalidaSacrificioMarel.ToString());
                if (paramOrg != null)
                {
                    if (paramOrg.Valor.Trim() == "1")
                    {
                        aplicaMarel = true;
                        IList <SalidaSacrificioDetalleInfo> detalleSacrificio = null;
                        using (var transaction = new TransactionScope())
                        {
                            result = ordenSacrificioDal.GuardarOrdenSacrificio(ordenInfo);
                            if (result != null)
                            {
                                result.UsuarioCreacion = ordenInfo.UsuarioCreacion;
                                ordenSacrificioDal.GuardarDetalleOrdenSacrificio(result, detalleOrden);
                                salidaSacrificio = salidaSacrificioDal.ObtenerPorOrdenSacrificioID(result.OrdenSacrificioID);
                            }

                            //Obtenemos registros de la orden de sacrificio del SIAP para enviarlos al SCP
                            osId = Convert.ToInt32(result.OrdenSacrificioID);
                            detalleSacrificio = salidaSacrificioDal.ObtenerPorOrdenSacrificioId(osId, organizacionId, 0, ordenInfo.UsuarioCreacion);

                            transaction.Complete();
                        }

                        if (salidaSacrificio != null && salidaSacrificio.Count > 0)
                        {
                            foreach (var corralSacrificio in salidaSacrificio)
                            {
                                OrdenSacrificioDetalleInfo detalleValidar =
                                    detalleOrden.FirstOrDefault(orden => corralSacrificio.NUM_CORR.Equals(orden.Corral.Codigo.Trim().PadLeft(3, '0'), StringComparison.InvariantCultureIgnoreCase));

                                if (detalleValidar != null)
                                {
                                    if (detalleValidar.OrdenSacrificioDetalleID == 0)
                                    {
                                        salidaSacrificioNuevos.Add(corralSacrificio);
                                    }
                                }
                            }

                            var guardoSCP = false;
                            using (var transaction = new TransactionScope())
                            {
                                if (!salidaSacrificioDal.CrearLista(salidaSacrificioNuevos, conexion))
                                {
                                    Logger.Error(new Exception("Ocurrió un error al enviar información al SCP."));
                                    result = null;
                                }
                                else
                                {
                                    //Obtenemos salida de sacrificio del SCP para insertarla en Marel
                                    var sacrificio = salidaSacrificioDal.ObtenerSalidaSacrificio(detalleSacrificio.ToList(), organizacionId, conexion);
                                    if (sacrificio.Count > 0)
                                    {
                                        //Guardar información en Marel
                                        if (!salidaSacrificioDal.GuardarSalidaSacrificioMarel(sacrificio, organizacionId, conexion))
                                        {
                                            Logger.Error(new Exception("Ocurrió un error al enviar información al SCP-Marel."));
                                            result = null;
                                        }
                                        else
                                        {
                                            guardoSCP = true;
                                            transaction.Complete();
                                        }
                                    }
                                    else
                                    {
                                        Logger.Error(new Exception("Ocurrió un error al obtener información del SCP para enviarla a Marel"));
                                        result = null;
                                    }
                                }
                            }

                            if (!guardoSCP)
                            {
                                salidaSacrificioDal.EliminarDetalleOrdenSacrificio(salidaSacrificioNuevos, organizacionId, osId, 1, ordenInfo.UsuarioCreacion);
                            }
                        }
                    }
                }

                if (!aplicaMarel)
                {
                    using (var transaction = new TransactionScope())
                    {
                        result = ordenSacrificioDal.GuardarOrdenSacrificio(ordenInfo);
                        if (result != null)
                        {
                            result.UsuarioCreacion = ordenInfo.UsuarioCreacion;
                            ordenSacrificioDal.GuardarDetalleOrdenSacrificio(result, detalleOrden);
                            salidaSacrificio = salidaSacrificioDal.ObtenerPorOrdenSacrificioID(result.OrdenSacrificioID);
                        }
                        osId = Convert.ToInt32(result.OrdenSacrificioID);
                        transaction.Complete();
                    }

                    if (salidaSacrificio != null && salidaSacrificio.Count > 0)
                    {
                        foreach (var corralSacrificio in salidaSacrificio)
                        {
                            OrdenSacrificioDetalleInfo detalleValidar =
                                detalleOrden.FirstOrDefault(orden => corralSacrificio.NUM_CORR.Equals(orden.Corral.Codigo.Trim().PadLeft(3, '0'), StringComparison.InvariantCultureIgnoreCase));

                            if (detalleValidar != null)
                            {
                                if (detalleValidar.OrdenSacrificioDetalleID == 0)
                                {
                                    salidaSacrificioNuevos.Add(corralSacrificio);
                                }
                            }
                        }

                        var guardoSCP = false;
                        using (var transaction = new TransactionScope())
                        {
                            if (!salidaSacrificioDal.CrearLista(salidaSacrificioNuevos, conexion))
                            {
                                Logger.Error(new Exception("Ocurrió un error al enviar información al SCP."));
                                result = null;
                            }
                            else
                            {
                                guardoSCP = true;
                                transaction.Complete();
                            }
                        }

                        if (!guardoSCP)
                        {
                            salidaSacrificioDal.EliminarDetalleOrdenSacrificio(salidaSacrificioNuevos, organizacionId, osId, 0, ordenInfo.UsuarioCreacion);
                        }
                    }
                }
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }