コード例 #1
0
        private void GeneraLineasDetalle(GanadoIntensivoInfo muerteIntesiva)
        {
            EntradaGanadoInfo entradaGanado = muerteIntesiva.EntradaGanado;

            var     pesoMuertePromedio = Math.Round((entradaGanado.PesoBruto - entradaGanado.PesoTara) / entradaGanado.CabezasRecibidas, 0);
            int     cantidadCabezas    = muerteIntesiva.Cabezas;
            decimal importe            = muerteIntesiva.Importe;

            var concepto = muerteIntesiva.EntradaGanadoCosteo.ListaEntradaDetalle.Select(des => des.TipoGanado.Descripcion).FirstOrDefault();


            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel detalleModel;

            detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = cantidadCabezas.ToString("F0"),
                TipoGanado      = concepto,
                PesoTotal       = (pesoMuertePromedio * cantidadCabezas).ToString("F0"),
                PesoPromedio    = pesoMuertePromedio.ToString("F0"),
                PrecioPromedio  = Math.Abs(importe / cantidadCabezas).ToString("N2"),
                ImportePromedio = Math.Abs(importe).ToString("N2"),
                //PrecioVenta = (detalle.Precio).ToString("N2"),
                //ImporteVenta =
                //    ((detalle.Precio * (Math.Round(detalle.Peso * detalle.Cabezas, 0)))).ToString
                //    ("N2"),
                Corral = muerteIntesiva.Corral.Codigo,
                Lote   = muerteIntesiva.Lote.Lote
            };
            PolizaModel.Detalle.Add(detalleModel);

            polizaImpresion.GenerarDetalles("Detalle");
        }
コード例 #2
0
        public int Guardar(GanadoIntensivoInfo ganadoIntensivo)
        {
            try
            {
                int result;
                Logger.Info();

                var ganadoIntensivoDAL = new GanadoIntensivoDAL();
                var loteBL             = new LoteBL();
                result = ganadoIntensivoDAL.Guardar(ganadoIntensivo);
                var filtroActualizarCabezasLote = new FiltroActualizarCabezasLote
                {
                    CabezasProcesadas     = ganadoIntensivo.Cabezas,
                    LoteIDOrigen          = ganadoIntensivo.Lote.LoteID,
                    UsuarioModificacionID = ganadoIntensivo.UsuarioCreacionID,
                    LoteIDDestino         = 0
                };
                //loteBL.ActualizarCabezasProcesadas(filtroActualizarCabezasLote);


                return(result);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #3
0
 public GanadoIntensivoInfo ObtenerMuerteGanadoIntensivo(CorralInfo corral)
 {
     try
     {
         Dictionary <string, object> parameters = AuxGanadoIntensivoDAL.ObtenerParametrosMuerteGanadoIntensivo(corral);
         DataSet             ds         = Retrieve("[dbo].[MuerteGanadoIntensivo_ObtenerEntradaGanadoPorCorralID]", parameters);
         GanadoIntensivoInfo corralInfo = null;
         if (ValidateDataSet(ds))
         {
             corralInfo = new GanadoIntensivoInfo();
             //corralInfo = MapCorralDAL.ObtenerPorId(ds);
         }
         return(corralInfo);
     }
     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);
     }
 }
コード例 #4
0
        /// <summary>
        /// Se calcula costos de las cabezas.
        /// </summary>
        /// <param name="contexto"></param>
        /// <returns></returns>
        internal GanadoIntensivoInfo CalcularCostosDeCabezas(GanadoIntensivoInfo contexto)
        {
            List <GanadoIntensivoCostoInfo> listaganGanadoIntensivoCosto = new List <GanadoIntensivoCostoInfo>();

            try
            {
                Logger.Info();
                if (contexto.EntradaGanadoCosteo != null)
                {
                    if (contexto.EntradaGanadoCosteo.ListaCostoEntrada != null && contexto.EntradaGanadoCosteo.ListaCostoEntrada.Any())
                    {
                        List <int> ListaCostos =
                            contexto.EntradaGanadoCosteo.ListaCostoEntrada.Select(lista => lista.Costo.CostoID)
                            .Distinct()
                            .ToList();

                        foreach (var costoID in ListaCostos)
                        {
                            decimal importe =
                                contexto.EntradaGanadoCosteo.ListaCostoEntrada.Where(
                                    lista => lista.Costo.CostoID == costoID).Sum(imp => imp.Importe);
                            var ganadoIntensivoCostoInfo = new GanadoIntensivoCostoInfo
                            {
                                Costos = new CostoInfo
                                {
                                    CostoID = costoID
                                },
                                Importe = Math.Round(((importe / contexto.EntradaGanado.CabezasRecibidas) * contexto.Cabezas), 2)
                            };
                            listaganGanadoIntensivoCosto.Add(ganadoIntensivoCostoInfo);
                        }
                    }
                }
                if (listaganGanadoIntensivoCosto.Any())
                {
                    decimal importeTotal = listaganGanadoIntensivoCosto.Sum(imp => imp.Importe);
                    contexto.Importe = importeTotal;
                }
                contexto.ListaGanadoIntensivoCosto = listaganGanadoIntensivoCosto;
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(contexto);
        }
コード例 #5
0
 /// <summary>
 /// Evento cuando la ayuda corral pierde el foco
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void SkAyudaCorral_OnLostFocus(object sender, RoutedEventArgs e)
 {
     if (Contexto.Corral.CorralID != 0)
     {
         GanadoIntensivoInfo ganadoIntensivoInfo = ObtenerDatosMuerteGanadoIntensivo();
         if (ganadoIntensivoInfo != null)
         {
             if (ganadoIntensivoInfo.Lote != null)
             {
                 if (ganadoIntensivoInfo.EntradaGanado != null)
                 {
                     Contexto.Importe             = 0;
                     Contexto.Observaciones       = string.Empty;
                     Contexto.CabezasText         = "0";
                     Contexto.EntradaGanado       = ganadoIntensivoInfo.EntradaGanado;
                     Contexto.EntradaGanadoCosteo = ganadoIntensivoInfo.EntradaGanadoCosteo;
                     Contexto.Lote         = ganadoIntensivoInfo.Lote;
                     Contexto.TotalCabezas = ganadoIntensivoInfo.TotalCabezas;
                 }
                 else
                 {
                     SkMessageBox.Show(Properties.Resources.MuerteGanadoIntensivo_MsjNoTieneEntradaGanado,
                                       MessageBoxButton.OK, MessageImage.Warning);
                     InicializaContexto();
                     skAyudaCorral.Focus();
                 }
             }
             else
             {
                 SkMessageBox.Show(Properties.Resources.MuerteGanadoIntensivo_MsjCorralSinLote,
                                   MessageBoxButton.OK, MessageImage.Warning);
                 InicializaContexto();
                 skAyudaCorral.Focus();
             }
         }
         else
         {
             InicializaContexto();
             skAyudaCorral.Focus();
         }
     }
     else
     {
         InicializaContexto();
         skAyudaCorral.Focus();
     }
 }
コード例 #6
0
 /// <summary>
 ///
 /// </summary>
 public GanadoIntensivoInfo MuerteGanadoIntensivo_Guardar(GanadoIntensivoInfo ganadoIntensivo)
 {
     try
     {
         var ganadoIntensivoBL = new GanadoIntensivoBL();
         var result            = ganadoIntensivoBL.MuerteGanadoIntensivo_Guardar(ganadoIntensivo);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #7
0
        /// <summary>
        /// Obtener muerte ganado intensivo
        /// </summary>
        /// <returns></returns>
        private GanadoIntensivoInfo ObtenerDatosMuerteGanadoIntensivo()
        {
            GanadoIntensivoInfo ganadoIntensivoInfo = null;

            try
            {
                var muerteGanadoIntensivoPL = new GanadoIntensivoPL();
                ganadoIntensivoInfo =
                    muerteGanadoIntensivoPL.ObtenerMuerteGanadoIntensivo(Contexto.Corral);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.RecepcionGanado_ErrorConsultarUsuarioOperador, MessageBoxButton.OK,
                                  MessageImage.Error);
            }
            return(ganadoIntensivoInfo);
        }
コード例 #8
0
        /// <summary>
        /// Inicializa el contexto
        /// </summary>
        private void InicializaContexto()
        {
            var listaTipoCorral = new List <TipoCorralInfo>
            {
                new TipoCorralInfo()
                {
                    TipoCorralID = TipoCorral.Intensivo.GetHashCode()
                },
                new TipoCorralInfo()
                {
                    TipoCorralID = TipoCorral.Maquila.GetHashCode()
                }
            };

            Contexto = new GanadoIntensivoInfo
            {
                UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(),
                Organizacion      = new OrganizacionInfo
                {
                    OrganizacionID = organiazcionID
                },
                Activo = EstatusEnum.Activo,
                Corral = new CorralInfo
                {
                    ListaTipoCorral = listaTipoCorral,
                    Organizacion    = new OrganizacionInfo
                    {
                        OrganizacionID = organiazcionID
                    },
                    Activo = EstatusEnum.Activo
                },
                TotalCabezas     = 0,
                Importe          = 0,
                Observaciones    = string.Empty,
                TipoMovimientoID = TipoMovimiento.MuerteGanadoIntensivo,
                TipoFolio        = TipoFolio.MuerteGanadoIntensivo
            };
            skAyudaCorral.ObjetoNegocio  = new CorralPL();
            skAyudaCorral.AyudaConDatos += (sender, args) =>
            {
                Contexto.Corral.ListaTipoCorral = listaTipoCorral;
            };
        }
コード例 #9
0
        public GanadoIntensivoInfo CalcularCostosDeCabezas(GanadoIntensivoInfo contexto)
        {
            GanadoIntensivoInfo ganadoIntensivoInfo = null;

            try
            {
                var muerteGanadoIntensivoBL = new GanadoIntensivoBL();
                ganadoIntensivoInfo = muerteGanadoIntensivoBL.CalcularCostosDeCabezas(contexto);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(ganadoIntensivoInfo);
        }
コード例 #10
0
        /// <summary>
        /// Obtener muerte de ganado intensivo
        /// </summary>
        /// <param name="corral"></param>
        /// <returns></returns>
        public GanadoIntensivoInfo ObtenerMuerteGanadoIntensivo(CorralInfo corral)
        {
            GanadoIntensivoInfo ganadoIntensivoInfo = null;

            try
            {
                Logger.Info();
                var muerteGanadoIntensivoBL = new GanadoIntensivoBL();
                ganadoIntensivoInfo =
                    muerteGanadoIntensivoBL.ObtenerMuerteGanadoIntensivo(corral);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(ganadoIntensivoInfo);
        }
コード例 #11
0
        /// <summary>
        /// Se obtienen parametros para guardar ganado intensivo
        /// </summary>
        /// <param name="ganadoIntensivo"></param>
        /// <returns></returns>
        public static Dictionary <string, object> ObtenerParametrosGuardar(GanadoIntensivoInfo ganadoIntensivo)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                var xml =
                    new XElement("ROOT",
                                 from costo in ganadoIntensivo.ListaGanadoIntensivoCosto
                                 select
                                 new XElement("Costos",
                                              new XElement("CostoID", costo.Costos.CostoID),
                                              new XElement("Importe", costo.Importe))
                                 );
                parametros = new Dictionary <string, object>
                {
                    { "@XMLCostos", xml.ToString() },
                    { "@TipoMovimientoID", ganadoIntensivo.TipoMovimientoID.GetHashCode() },
                    { "@LoteID", ganadoIntensivo.Lote.LoteID },
                    { "@Cabezas", ganadoIntensivo.Cabezas },
                    { "@CabezasAnterior", ganadoIntensivo.Lote.Cabezas },
                    { "@Importe", ganadoIntensivo.Importe },
                    { "@Observaciones", ganadoIntensivo.Observaciones },
                    { "@OrganizacionID", ganadoIntensivo.Organizacion.OrganizacionID },
                    { "@TipoFolio", ganadoIntensivo.TipoFolio.GetHashCode() },
                    { "@Activo", ganadoIntensivo.Activo.GetHashCode() },
                    { "@UsuarioID", ganadoIntensivo.UsuarioCreacionID },
                    { "@FolioTicket", ganadoIntensivo.FolioTicket },
                    { "@PesoBruto", ganadoIntensivo.PesoBruto }
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
コード例 #12
0
 /// <summary>
 /// Obtener muerte de ganado intensivo
 /// </summary>
 /// <param name="corral"></param>
 /// <returns></returns>
 internal GanadoIntensivoInfo ObtenerMuerteGanadoIntensivo(CorralInfo corral)
 {
     try
     {
         Logger.Info();
         var muerteGanadoIntensivoDAL = new GanadoIntensivoDAL();
         GanadoIntensivoInfo muerteGanadoIntensivoInfo = new GanadoIntensivoInfo();
         var      loteBL                = new LoteBL();
         var      entradaGanadoBL       = new EntradaGanadoBL();
         var      entradaGanadoCosteoBL = new EntradaGanadoCosteoBL();
         LoteInfo lote = loteBL.ObtenerLotesActivos(corral.Organizacion.OrganizacionID, corral.CorralID);
         if (lote != null)
         {
             muerteGanadoIntensivoInfo.Lote         = lote;
             muerteGanadoIntensivoInfo.TotalCabezas = lote.Cabezas;
             var entrada = entradaGanadoBL.ObtenerEntradaGanadoLoteCorral(lote);
             if (entrada != null)
             {
                 muerteGanadoIntensivoInfo.EntradaGanado = entrada;
                 EntradaGanadoCosteoInfo entradaGanadoCosteo = entradaGanadoCosteoBL.ObtenerPorEntradaGanadoID(entrada.EntradaGanadoID);
                 if (entradaGanadoCosteo != null)
                 {
                     muerteGanadoIntensivoInfo.EntradaGanadoCosteo = entradaGanadoCosteo;
                 }
             }
         }
         return(muerteGanadoIntensivoInfo);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #13
0
        /// <summary>
        /// Metodo para calcular costos de cabezas
        /// </summary>
        private void CalcularCostosDeCabezas()
        {
            GanadoIntensivoInfo muerteGanadoIntensivoInfo = null;

            try
            {
                if (!string.IsNullOrEmpty(txtCabezas.Text) || Contexto.Cabezas > 0)
                {
                    if (ValidarCabezas())
                    {
                        var muerteGanadoIntensivoPL = new GanadoIntensivoPL();
                        muerteGanadoIntensivoInfo =
                            muerteGanadoIntensivoPL.CalcularCostosDeCabezas(Contexto);
                        //InicializaContexto();
                        Contexto.Importe = muerteGanadoIntensivoInfo.Importe;
                        Contexto.ListaGanadoIntensivoCosto = muerteGanadoIntensivoInfo.ListaGanadoIntensivoCosto;
                    }
                    else
                    {
                        SkMessageBox.Show(Properties.Resources.MuerteGanadoIntensivo_msgNumCabezasInvalido,
                                          MessageBoxButton.OK, MessageImage.Warning);
                        Contexto.CabezasText = "0";
                    }
                }
                else
                {
                    Contexto.CabezasText = "0";
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.RecepcionGanado_ErrorConsultarUsuarioOperador, MessageBoxButton.OK,
                                  MessageImage.Error);
            }
        }
コード例 #14
0
 public int Guardar(GanadoIntensivoInfo ganadoIntensivo)
 {
     try
     {
         Dictionary <string, object> parameters = AuxGanadoIntensivoDAL.ObtenerParametrosGuardar(ganadoIntensivo);
         int result = Create("[dbo].[GanadoIntesivo_Guardar]", parameters);
         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);
     }
 }
コード例 #15
0
        /// <summary>
        /// Guardar muerte de ganado intenvio
        /// </summary>
        /// <param name="ganadoIntensivo"></param>
        /// <returns></returns>
        public GanadoIntensivoInfo MuerteGanadoIntensivo_Guardar(GanadoIntensivoInfo ganadoIntensivo)
        {
            try
            {
                int result;
                Logger.Info();
                MemoryStream        polizaPDF = null;
                GanadoIntensivoInfo resultado = new GanadoIntensivoInfo();
                using (var transaction = new TransactionScope())
                {
                    var                loteBL = new LoteBL();
                    PolizaAbstract     poliza;
                    IList <PolizaInfo> polizaSalidaMuerteIntensiva;
                    result = Guardar(ganadoIntensivo);
                    resultado.FolioTicket       = result;
                    ganadoIntensivo.FolioTicket = result;
                    var filtroActualizarCabezasLote = new FiltroActualizarCabezasLote
                    {
                        CabezasProcesadas     = ganadoIntensivo.Cabezas,
                        LoteIDOrigen          = ganadoIntensivo.Lote.LoteID,
                        UsuarioModificacionID = ganadoIntensivo.UsuarioCreacionID,
                        LoteIDDestino         = 0
                    };
                    loteBL.ActualizarCabezasProcesadas(filtroActualizarCabezasLote);

                    #region Poliza


                    if (ganadoIntensivo != null)
                    {
                        if (ganadoIntensivo.ListaGanadoIntensivoCosto != null &&
                            ganadoIntensivo.ListaGanadoIntensivoCosto.Any())
                        {
                            poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaMuerteIntensiva);
                            polizaSalidaMuerteIntensiva = poliza.GeneraPoliza(ganadoIntensivo);
                            if (polizaSalidaMuerteIntensiva != null && polizaSalidaMuerteIntensiva.Any())
                            {
                                polizaSalidaMuerteIntensiva.ToList().ForEach(
                                    org =>
                                {
                                    org.OrganizacionID         = ganadoIntensivo.Organizacion.OrganizacionID;
                                    org.UsuarioCreacionID      = ganadoIntensivo.UsuarioCreacionID;
                                    org.ArchivoEnviadoServidor = 1;
                                });
                                polizaPDF = poliza.ImprimePoliza(ganadoIntensivo, polizaSalidaMuerteIntensiva);
                                var polizaBL = new PolizaBL();
                                polizaBL.GuardarServicioPI(polizaSalidaMuerteIntensiva, TipoPoliza.SalidaMuerteIntensiva);
                                resultado.stream = polizaPDF;
                            }
                        }
                    }
                    #endregion Poliza
                    transaction.Complete();
                }

                return(resultado);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #16
0
        private IList <PolizaInfo> ObtenerPoliza(GanadoIntensivoInfo ganadoIntensivo)
        {
            var polizasSalidaMuerteIntensiva = new List <PolizaInfo>();

            if (ganadoIntensivo.ListaGanadoIntensivoCosto != null && ganadoIntensivo.ListaGanadoIntensivoCosto.Any())
            {
                TipoPolizaInfo tipoPoliza =
                    TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaMuerteIntensiva.GetHashCode());
                if (tipoPoliza == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA",
                                                              TipoPoliza.SalidaMuerteIntensiva));
                }
                string textoDocumento = tipoPoliza.TextoDocumento;
                string tipoMovimiento = tipoPoliza.ClavePoliza;
                string postFijoRef3   = tipoPoliza.PostFijoRef3;

                int linea = 1;

                var ref3 = new StringBuilder();
                ref3.Append("03");
                ref3.Append(
                    string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft(
                        10, ' '));
                ref3.Append(new Random(10).Next(10, 20));
                ref3.Append(new Random(30).Next(30, 40));
                ref3.Append(DateTime.Now.Millisecond);
                ref3.Append(postFijoRef3);

                string numeroReferencia = ObtenerNumeroReferencia;

                if (costos == null)
                {
                    costos = ObtenerCostos();
                }

                foreach (var ganadoIntensivoCostoInfo in ganadoIntensivo.ListaGanadoIntensivoCosto)
                {
                    CostoInfo costo =
                        costos.FirstOrDefault(tipo => tipo.CostoID == ganadoIntensivoCostoInfo.Costos.CostoID);
                    if (costo == null)
                    {
                        costo = new CostoInfo();
                    }
                    //= ObtenerOrganizacionIVA(ganadoIntensivo.Organizacion.OrganizacionID);


                    OrganizacionInfo organizacion = ObtenerOrganizacionSociedadDivision(ganadoIntensivo.Organizacion.OrganizacionID, SociedadEnum.SuKarne);
                    if (organizacion == null)
                    {
                        organizacion = new OrganizacionInfo
                        {
                            TipoOrganizacion = new TipoOrganizacionInfo()
                        };
                    }

                    const int Corral_Intensivo = 4;
                    const int Corral_Maquila   = 6;

                    int tipoOrganizacioID = 0;

                    switch (ganadoIntensivo.Lote.TipoCorralID)
                    {
                    case Corral_Intensivo:
                        tipoOrganizacioID = TipoOrganizacion.Intensivo.GetHashCode();
                        break;

                    case Corral_Maquila:
                        tipoOrganizacioID = TipoOrganizacion.Maquila.GetHashCode();
                        break;
                    }
                    if (tipoOrganizacioID > 0)
                    {
                        organizacion.TipoOrganizacion.TipoOrganizacionID = tipoOrganizacioID;
                    }


                    ClaveContableInfo claveContableAbono = ObtenerCuentaInventario(costo, organizacion.OrganizacionID,
                                                                                   organizacion.TipoOrganizacion.TipoOrganizacionID);
                    if (claveContableAbono == null)
                    {
                        throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO",
                                                                  costo.Descripcion));
                    }

                    ClaveContableInfo claveContableCargo = ObtenerCuentaInventario(costo, organizacion.OrganizacionID,
                                                                                   TipoPoliza.SalidaMuerteIntensiva);
                    if (claveContableCargo == null)
                    {
                        throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACION PARA EL COSTO",
                                                                  costo.Descripcion));
                    }
                    ParametroOrganizacionInfo parametroCentroCosto =
                        ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                             ParametrosEnum.CTACENTROCTOINT.ToString());
                    if (parametroCentroCosto == null)
                    {
                        throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO"));
                    }
                    EntradaGanadoInfo entradaGanado = ganadoIntensivo.EntradaGanado;
                    var pesoMuerteTotal             = Math.Round(((entradaGanado.PesoBruto - entradaGanado.PesoTara) / entradaGanado.CabezasRecibidas) * ganadoIntensivo.Cabezas, 0);
                    //VALIDAR FECHA
                    DateTime fecha = DateTime.Today;
                    if (fecha != null)
                    {
                        string archivoFolio = ObtenerArchivoFolio(fecha);
                        var    datos        = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = fecha,
                            Folio            = ganadoIntensivo.FolioTicket.ToString(),
                            Importe          = string.Format("{0}", ganadoIntensivoCostoInfo.Importe.ToString("F2")),
                            Renglon          = Convert.ToString(linea++),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            Cuenta           = claveContableCargo.Valor,
                            Division         = organizacion.Division,
                            ArchivoFolio     = archivoFolio,
                            CentroCosto      =
                                claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroCosto) ||
                                claveContableCargo.Valor.StartsWith(PrefijoCuentaCentroGasto)
                                    ? parametroCentroCosto.Valor
                                    : string.Empty,
                            //PesoOrigen = peso,
                            TipoDocumento   = textoDocumento,
                            ClaseDocumento  = postFijoRef3,
                            ComplementoRef1 = string.Empty,
                            Concepto        = String.Format("{0}-{1} CABEZAS {2} kgs",
                                                            tipoMovimiento,
                                                            ganadoIntensivo.Cabezas, pesoMuerteTotal),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);
                        polizasSalidaMuerteIntensiva.Add(polizaSalida);

                        datos = new DatosPolizaInfo
                        {
                            NumeroReferencia = numeroReferencia,
                            FechaEntrada     = fecha,
                            Folio            = ganadoIntensivo.FolioTicket.ToString(),
                            Importe          = string.Format("{0}", (ganadoIntensivoCostoInfo.Importe * -1).ToString("F2")),
                            Renglon          = Convert.ToString(linea++),
                            ImporteIva       = "0",
                            Ref3             = ref3.ToString(),
                            Cuenta           = claveContableAbono.Valor,
                            ArchivoFolio     = archivoFolio,
                            Division         = organizacion.Division,
                            // PesoOrigen = peso,
                            TipoDocumento  = textoDocumento,
                            ClaseDocumento = postFijoRef3,
                            Concepto       = String.Format("{0}-{1}, CABEZAS, {2} kgs",
                                                           tipoMovimiento,
                                                           ganadoIntensivo.Cabezas, pesoMuerteTotal),
                            Sociedad = organizacion.Sociedad,
                            Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                        };
                        polizaSalida = GeneraRegistroPoliza(datos);
                        polizasSalidaMuerteIntensiva.Add(polizaSalida);
                    }
                }
            }

            return(polizasSalidaMuerteIntensiva);
        }
コード例 #17
0
        /// <summary>
        /// Metodo que da salida por venta al ganado intensivo cuano se selcciona tipoventa Externo
        /// </summary>
        /// <param name="salidaIndividual"></param>
        /// <returns></returns>
        internal MemoryStream GuardarSalidaGanadoVentaIntensiva(SalidaIndividualInfo salidaIndividual)
        {
            MemoryStream retorno = null;

            try
            {
                PolizaAbstract      poliza;
                IList <PolizaInfo>  polizaSalidaVenta;
                TicketInfo          Ticket            = new TicketInfo();
                CorralInfo          corralInfo        = new CorralInfo();
                CorralBL            corralB           = new CorralBL();
                GanadoIntensivoBL   salidaGanadoCosto = new GanadoIntensivoBL();
                GanadoIntensivoInfo salidaGanadoInfo  = new GanadoIntensivoInfo();


                corralInfo = corralB.ObtenerCorralActivoPorCodigo(salidaIndividual.Organizacion, salidaIndividual.Corral);
                corralInfo.Organizacion = new OrganizacionInfo();
                corralInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion;
                salidaGanadoInfo = salidaGanadoCosto.ObtenerMuerteGanadoIntensivo(corralInfo);
                salidaGanadoInfo.Organizacion = new OrganizacionInfo();
                salidaGanadoInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion;
                salidaGanadoInfo.Observaciones = "";



                Ticket.FolioTicket  = salidaIndividual.FolioTicket;
                Ticket.Organizacion = salidaIndividual.Organizacion;

                var ventaGanadoBL = new VentaGanadoBL();

                VentaGanadoInfo salidaPorVentaGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicket(Ticket);

                var      loteBL            = new LoteBL();
                CorralBL corralBl          = new CorralBL();
                LoteInfo lote              = loteBL.ObtenerPorID(salidaPorVentaGanado.LoteID);
                int      iCabezasTotalLote = lote.Cabezas;

                lote.Cabezas -= salidaIndividual.NumeroDeCabezas;
                //lote.Corral = corralBl.ObtenerCorralPorLoteID(lote.LoteID, salidaIndividual.Organizacion);
                //lote.Corral = corralBl.ObtenerCorralPorCodigo()

                using (var scope = new TransactionScope())
                {
                    Logger.Info();
                    var salidaIndividualDAL = new SalidaIndividualDAL();

                    var filtroActualizaCabezas = new FiltroActualizarCabezasLote
                    {
                        LoteIDOrigen          = lote.LoteID,
                        LoteIDDestino         = 0,
                        CabezasProcesadas     = salidaIndividual.NumeroDeCabezas,
                        UsuarioModificacionID = salidaIndividual.Usuario
                    };
                    loteBL.ActualizarCabezasProcesadas(filtroActualizaCabezas);

                    salidaGanadoInfo.ListaGanadoIntensivoCosto = new List <GanadoIntensivoCostoInfo>();
                    foreach (
                        var entradaCosteo in
                        salidaGanadoInfo.EntradaGanadoCosteo.ListaCostoEntrada.OrderBy(id => id.Costo.CostoID))
                    {
                        var costoInt = new GanadoIntensivoCostoInfo();
                        costoInt.Costos = new CostoInfo();
                        costoInt.Costos = entradaCosteo.Costo;
                        costoInt.Costos.ImporteCosto = (entradaCosteo.Importe /
                                                        salidaGanadoInfo.EntradaGanado.CabezasRecibidas) *
                                                       salidaIndividual.NumeroDeCabezas;
                        costoInt.Importe = costoInt.Costos.ImporteCosto;
                        salidaGanadoInfo.ListaGanadoIntensivoCosto.Add(costoInt);
                    }
                    salidaGanadoInfo.TipoMovimientoID = TipoMovimiento.SalidaVentaIntensivo;
                    //salidaIndividualDAL.GuardarSalidaIndividualGanadoVenta(salidaIndividual);
                    salidaGanadoInfo.TotalCabezas                = salidaIndividual.NumeroDeCabezas;
                    salidaGanadoInfo.FolioTicket                 = salidaIndividual.FolioTicket;
                    salidaGanadoInfo.TipoFolio                   = TipoFolio.VentaGanadoIntensivo;
                    salidaGanadoInfo.PesoBruto                   = salidaIndividual.PesoBruto;
                    salidaGanadoInfo.UsuarioCreacionID           = salidaIndividual.Usuario;
                    salidaGanadoInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion;
                    salidaGanadoInfo.CabezasText                 = salidaIndividual.NumeroDeCabezas.ToString();
                    salidaGanadoCosto.Guardar(salidaGanadoInfo);

                    #region Poliza

                    List <ContenedorVentaGanado> ventasGanado =
                        ventaGanadoBL.ObtenerVentaGanadoIntensivoPorTicketPoliza(Ticket);

                    if (ventasGanado != null && ventasGanado.Any())
                    {
                        poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaVentaIntensiva);
                        for (int i = 0; i < ventasGanado.Count; i++)
                        {
                            ventasGanado[i].EntradaGandoId = salidaGanadoInfo.EntradaGanado.EntradaGanadoID;
                            ventasGanado[i].OrganizacionId = Ticket.Organizacion;
                            ventasGanado[i].Lote           = lote;
                        }

                        polizaSalidaVenta = poliza.GeneraPoliza(ventasGanado);
                        if (polizaSalidaVenta != null && polizaSalidaVenta.Any())
                        {
                            polizaSalidaVenta.ToList().ForEach(
                                org =>
                            {
                                org.OrganizacionID         = Ticket.Organizacion;
                                org.UsuarioCreacionID      = salidaIndividual.Usuario;
                                org.ArchivoEnviadoServidor = 1;
                            });
                            retorno = poliza.ImprimePoliza(ventasGanado, polizaSalidaVenta);
                            var polizaBL = new PolizaBL();
                            polizaBL.GuardarServicioPI(polizaSalidaVenta, TipoPoliza.SalidaVentaIntensiva);
                        }
                    }

                    // Genera el xml y lo guarda en la ruta especificada en la configuración
                    var facturaBl = new FacturaBL();
                    facturaBl.GenerarDatosFacturaVentaDeGanadoIntensivo(Ticket.FolioTicket, Ticket.Organizacion);

                    #endregion Poliza

                    scope.Complete();
                }

                return(retorno);
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #18
0
        private void GenerarMovimientosAnimalesMuertos(List <AnimalInfo> animalesMuertos, GanadoIntensivoInfo ganadoIntensivo, decimal pesoMuertoTotal)
        {
            var animalMovimientoBL   = new AnimalMovimientoBL();
            var operadorBL           = new OperadorBL();
            var animalBL             = new AnimalBL();
            var listaAnimalesMuertos = new List <AnimalInfo>();
            int pesoPromedio         = (int)pesoMuertoTotal / ganadoIntensivo.Cabezas;

            foreach (var animalMuerto in animalesMuertos)
            {
                var animalInfo = animalBL.ObtenerAnimalAnimalID(animalMuerto.AnimalID);

                AnimalMovimientoInfo        ultimoMovimientoAnimal = null;
                List <AnimalMovimientoInfo> ultimosMovimiento      = animalMovimientoBL.ObtenerUltimoMovimientoAnimal(new List <AnimalInfo> {
                    animalInfo
                });
                if (ultimosMovimiento != null && ultimosMovimiento.Any())
                {
                    ultimoMovimientoAnimal =
                        ultimosMovimiento.OrderByDescending(ani => ani.AnimalMovimientoID).FirstOrDefault();
                }
                /* Insertamos el movimiento de Muerte */
                OperadorInfo operador = operadorBL.ObtenerPorUsuarioId(ganadoIntensivo.UsuarioCreacionID, ganadoIntensivo.Organizacion.OrganizacionID);
                /* Se genera el animal Movimiento para almacenarlo*/
                if (ultimoMovimientoAnimal != null)
                {
                    var animalMovimientoInfo = new AnimalMovimientoInfo
                    {
                        AnimalID          = animalInfo.AnimalID,
                        OrganizacionID    = ultimoMovimientoAnimal.OrganizacionID,
                        CorralID          = ultimoMovimientoAnimal.CorralID,
                        LoteID            = ultimoMovimientoAnimal.LoteID,
                        Peso              = pesoPromedio,
                        Temperatura       = 0,
                        TipoMovimientoID  = (int)TipoMovimiento.SalidaPorVenta,
                        TrampaID          = ultimoMovimientoAnimal.TrampaID,
                        OperadorID        = operador != null ? operador.OperadorID : 0,
                        Observaciones     = ganadoIntensivo.Observaciones,
                        Activo            = EstatusEnum.Activo,
                        UsuarioCreacionID = ganadoIntensivo.UsuarioCreacionID
                    };
                    /* Se almacena el animalMovimiento */
                    animalMovimientoBL.GuardarAnimalMovimiento(animalMovimientoInfo);
                    animalInfo.UsuarioModificacionID = ganadoIntensivo.UsuarioCreacionID;
                    /*  Se da de baja el animal */
                    animalBL.InactivarAnimal(animalInfo);

                    /* Enviar al historico el animal inactivo */
                    listaAnimalesMuertos.Add(animalInfo);
                }
            }
            if (listaAnimalesMuertos.Any())
            {
                animalBL.EnviarAHistorico(listaAnimalesMuertos);
            }
        }