/// <summary>
        ///Calcula el importe para cada costo del corral
        /// </summary>
        /// <param name="totalCabezas"></param>
        public void ActualizarDetalles(SalidaGanadoEnTransitoInfo Contexto, int totalCabezas)
        {
            SalidaGanadoEnTransitoDetalleInfo detalle;

            try
            {
                Contexto.TotalCabezasDuranteMuerte = totalCabezas;
                Contexto.DetallesSalida            = new List <SalidaGanadoEnTransitoDetalleInfo>();
                foreach (var costo in Contexto.Costos)
                {
                    detalle = new SalidaGanadoEnTransitoDetalleInfo
                    {
                        Activo  = EstatusEnum.Activo,
                        CostoId = costo.CostoID,
                        //calcula el importe calculando el costo promedio unitario de la res y multiplicando por las cabezas que se daran salida:
                        ImporteCosto           = Math.Round(((costo.Importe / totalCabezas) * Contexto.NumCabezas), 2),
                        SalidaGanadoTransitoId = Contexto.SalidaGanadoTransitoID,
                        UsuarioCreacionID      = Contexto.UsuarioCreacionID
                    };
                    Contexto.DetallesSalida.Add(detalle);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new Exception(ex.Message, ex.InnerException);
            }
        }
Пример #2
0
        /// <summary>
        /// Metodo que inicializa las polizas con datos generales apra cada linea
        /// </summary>
        /// <param name="input">SalidaGanadoEnTransitoInfo</param>
        /// <param name="ref3">StringBuilder</param>
        /// <param name="archivoFolio">StringBuilder</param>
        /// <param name="noLinea">Numero de linea</param>
        /// <returns>linea de la poliza inicializada</returns>
        private PolizaInfo InicializarPolizaInfo(SalidaGanadoEnTransitoInfo input, StringBuilder ref3, StringBuilder archivoFolio, int noLinea)
        {
            var lista = new PolizaInfo
            {
                FechaCreacion     = DateTime.Now,
                OrganizacionID    = input.OrganizacionID,
                UsuarioCreacionID = input.UsuarioCreacionID,
                NumeroReferencia  = input.Folio.ToString(CultureInfo.InvariantCulture),
                FechaDocumento    = input.Fecha.ToString("yyyyMMdd"),
                ClaseDocumento    = datos.PostFijoRef3,
                Sociedad          = datos.Sociedad,
                Moneda            = MONEDA,
                TipoCambio        = TIPOCAMBIO,
                TextoDocumento    = datos.TipoPolizaDescripcion,
                Mes               = input.FechaCreacion.Month.ToString(CultureInfo.InvariantCulture),
                TextoAsignado     = input.Folio.ToString(CultureInfo.InvariantCulture),
                Concepto          = string.Format("VT-{0} {1} CABEZAS {2} kgs", input.Folio, input.NumCabezas, input.Kilos),
                Division          = datos.Division,
                BusAct            = BUSACT,
                Periodo           = input.FechaCreacion.Year.ToString(CultureInfo.InvariantCulture),
                NumeroLinea       = noLinea.ToString(CultureInfo.InvariantCulture),
                Referencia1       = input.NumCabezas.ToString(CultureInfo.InvariantCulture),
                Referencia3       = ref3.ToString(),
                FechaImpuesto     = input.Fecha.ToString("yyyyMMdd"),
                ImpuestoRetencion = 0,
                ImpuestoIva       = 0.ToString(CultureInfo.InvariantCulture),
                ArchivoFolio      = archivoFolio.ToString(),
                Segmento          = "S" + datos.Sociedad,
                FechaContabilidad = input.Fecha.ToString("yyyyMMdd"),
            };

            return(lista);
        }
Пример #3
0
 /// <summary>
 /// /registra la salida de ganado y sus detalles
 /// </summary>
 /// <param name="info">salida de ganado en transito que se registrara</param>
 internal void GuardarSalidaEnTransito(SalidaGanadoEnTransitoInfo info)
 {
     try
     {
         Logger.Info();
         info.FechaCreacion = DateTime.Now;
         Dictionary <string, object> parameters = AuxSalidaGanadoEnTransitoDAL.ObtenerParametrosCrear_Salida(info);
         Create("SalidaGanadoTransito_Guardar", parameters);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 /// <summary>
 /// Inicializa el contexto
 /// </summary>
 private void InicializaContexto()
 {
     Contexto = new SalidaGanadoEnTransitoInfo
     {
         LoteID            = 0,
         Cliente           = new ClienteInfo(),
         UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(),
         OrganizacionID    = AuxConfiguracion.ObtenerOrganizacionUsuario()
     };
 }
Пример #5
0
 /// <summary>
 /// Genera los parametros para la consulta que trae los datos faltantes para la generacion de la poliza
 /// </summary>
 /// <param name="input">Objeto que lleva el folio y muerte(activo)</param>
 /// <returns></returns>
 DatosPolizaSalidaGanadoTransitoInfo obtenerDatosPolizaSalidaPorVenta(SalidaGanadoEnTransitoInfo input)
 {
     try
     {
         var salida = new SalidaGanadoEnTransitoDAL();
         var result = salida.ObtenerDatosPolizaSalidaPorMuerte(input);
         return(result);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         return(new DatosPolizaSalidaGanadoTransitoInfo());
     }
 }
 /// <summary>
 /// consulta los datos faltantes para la generacion de la poliza de salida por muerte en transito
 /// </summary>
 /// <param name="input">Salida de ganado en transito al que le buscaran los datos faltantes para la generacion de la poliza</param>
 /// <returns>Regresa los datos faltantes para la poliza de salida de ganado en transito por muerte</returns>
 DatosPolizaSalidaGanadoTransitoInfo ObtenerDatosPolizaSalidaPorMuerte(SalidaGanadoEnTransitoInfo input)
 {
     try
     {
         var salida = new SalidaGanadoEnTransitoDAL();
         var result = salida.ObtenerDatosPolizaSalidaPorMuerte(input);
         return(result);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        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);
            }
        }
Пример #8
0
        /// <summary>
        /// Metodo que arma el campo archivofolio en la poliza
        /// </summary>
        /// <param name="input">SalidaGanadoEnTransitoInfo</param>
        /// <returns>archivoFolio (StringBuilder)</returns>
        private StringBuilder ArchivoFolio(SalidaGanadoEnTransitoInfo input)
        {
            /*
             * esto sirve para el armado del segmento <archifolio> que se usa en cada linea y debe ser el mismo para todas las lineas,
             * se arma poniento el valor dijo "P01" + la decha del documento en formato año/mes/dia + el minuto + el segundo y un numero aleatorio del 1 al 9
             * Ejem: "P01-20160303-54-11-2.xml"
             */

            var archivoFolio = new StringBuilder();

            archivoFolio.Append("P01");
            archivoFolio.Append(input.Fecha.ToString("yyyyMMdd"));
            archivoFolio.Append(DateTime.Now.Minute);
            archivoFolio.Append(DateTime.Now.Second);
            archivoFolio.Append(new Random(1).Next(1, 9));
            return(archivoFolio);
        }
Пример #9
0
 /// <summary>
 /// Genera los parametros para la consulta que trae los datos faltantes para la generacion de la poliza
 /// </summary>
 /// <param name="salida">Salida  de ganado en transito que tiene el folio de salida de ganado y si es salida por muerte o por venta </param>
 /// <returns>Regresa la lista de parametros para obtener los datos faltantes para la poliza</returns>
 public static Dictionary <string, object> ObtenerParametrosObtenerPoliza(SalidaGanadoEnTransitoInfo salida)
 {
     try
     {
         var parametros =
             new Dictionary <string, object>
         {
             { "@Folio", salida.Folio },
             { "@Muerte", salida.Muerte }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Registra una salida de ganado en transito, genera la poliza y factura correspondiente e imprime el archivo de poliza en formato PDF
        /// </summary>
        /// <param name="input">salida de ganado en transito que se registrara</param>
        /// <param name="registroExitoso">indica si se completo el registro de la salida de ganado en transito</param>
        /// <returns>Regresa los datos que conformaran el archivo impreso en PDF</returns>
        public MemoryStream GuardarSalida(SalidaGanadoEnTransitoInfo input, out bool registroExitoso)
        {
            try
            {
                var salida = new SalidaGanadoEnTransitoDAL();
                var ms     = new MemoryStream();
                registroExitoso = false;
                using (var transaction = new TransactionScope()) //agrupa el proceso siguiente como una sola operacion
                {
                    salida.GuardarSalida(ref input);             //registrar la salida de ganado en transito y actualiza el folio generado para la salida
                    salida.ActualizarEntradas(input);            //actualiza las entradas de ganado en transito, y del lote correspondiente
                    if (input.Muerte)                            // si es salida de ganado en transito por muerte
                    {
                        var polizaSalida = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaMuerteEnTransito);
                        var polizaDal    = new PolizaDAL();
                        var polizaSalidaMuerteTransito = polizaSalida.GeneraPoliza(input);                                //genera el XML de la poliza //genera el XML de la poliza de salida de  ganado por muerte
                        input.PolizaID  = polizaDal.Crear(polizaSalidaMuerteTransito, TipoPoliza.SalidaMuerteEnTransito); //almacena la poliza generada en la base de datos
                        ms              = polizaSalida.ImprimePoliza(input, polizaSalidaMuerteTransito);                  //genera el archivo en formato PDF de la poliza generada
                        registroExitoso = true;                                                                           //indica que se completo la operacion exitosamente
                    }
                    else if (input.Venta)                                                                                 //en caso de ser una salida de ganado en transito por venta
                    {
                        var polizaSalida = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaVentaEnTransito);
                        var polizaDal    = new PolizaDAL();
                        var poliza       = polizaSalida.GeneraPoliza(input);                        //genera el XML de la poliza de salida de  ganado por venta
                        input.PolizaID = polizaDal.Crear(poliza, TipoPoliza.SalidaVentaEnTransito); //almacena la poliza generada en la base de datos
                        ms             = polizaSalida.ImprimePoliza(input, poliza);                 //genera el archivo en formato PDF de la poliza generada

                        var generarFactura = new FacturaBL();
                        generarFactura.SalidaGanadoTransito_ObtenerDatosFactura(input.Folio, input.OrganizacionID, true); //genera la factura de la salida de ganado en transito
                        registroExitoso = true;                                                                           //indica que se completo la operacion exitosamente
                    }
                    salida.AsignarPolizaRegistrada(input);                                                                //asigna la poliza generada a la salida de ganado en transito registrada
                    transaction.Complete();                                                                               //da por concluido el proceso de Salida de ganado en transito por venta o muerte
                    return(ms);                                                                                           //regresa los datos del archivo PDF que se imprimiran
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                registroExitoso = false;
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Пример #11
0
        /// <summary>
        /// Metodo que arma el campo ref3 de la poliza
        /// </summary>
        /// <param name="input">SalidaGanadoEnTransitoInfo</param>
        /// <returns>ref3 (StringBuilder)</returns>
        private StringBuilder Ref3(SalidaGanadoEnTransitoInfo input)
        {
            /*
             * esto sirve para el armado del segmento <ref3> que se usa en cada linea y debe ser el mismo para todas
             * se arma poniento inicialmente 03 + 10 espacios en blanco + 1 num aleatorio del 10 al 20 + 1 numero aleatorio del 30 al 40 +
             * el milisegundo en que se está generando el documento y el posfijo configurado en el campo “PostFijoRef3” TB TipoPoliza.
             * Ejem: "03       1211933561GF"
             */

            var ref3 = new StringBuilder();

            ref3.Append("03");
            ref3.Append(Convert.ToString(input.Folio).PadLeft(10, ' '));
            ref3.Append(new Random(10).Next(10, 20));
            ref3.Append(new Random(30).Next(30, 40));
            ref3.Append(DateTime.Now.Millisecond.ToString(CultureInfo.InvariantCulture));
            ref3.Append(datos.PostFijoRef3);
            return(ref3);
        }
        /// <summary>
        /// Genera un nodo generico de una salida de ganado en transito por muerte
        /// </summary>
        /// <param name="input">Salida de ganado en transito al cual se le generara el nodo para la poliza</param>
        /// <param name="noLinea">Numero de linea correspondiente al nodo</param>
        /// <param name="ref3"></param>
        /// <param name="archivoFolio">Folio del archivo de la poliza de salida de ganado en transito</param>
        /// <returns>Regresa un nodo de poliza de salida de ganado en transito parcialmente inicializado</returns>
        PolizaInfo GenerarNodoPlantillaPolizaMuerteTransito(SalidaGanadoEnTransitoInfo input, int noLinea, string ref3, string archivoFolio)
        {
            try
            {
                var result = new PolizaInfo
                {
                    OrganizacionID    = input.OrganizacionID,
                    UsuarioCreacionID = input.UsuarioCreacionID,
                    NumeroReferencia  = input.Folio.ToString(CultureInfo.InvariantCulture),
                    FechaCreacion     = DateTime.Now,
                    FechaDocumento    = input.Fecha.ToString("yyyyMMdd"),
                    FechaContabilidad = input.Fecha.ToString("yyyyMMdd"),
                    ClaseDocumento    = datos.PostFijoRef3,
                    Sociedad          = datos.Sociedad,
                    Moneda            = MONEDA,
                    TipoCambio        = TIPOCAMBIO,
                    TextoDocumento    = datos.TipoPolizaDescripcion,
                    Mes               = input.FechaCreacion.Month.ToString(CultureInfo.InvariantCulture),
                    TextoAsignado     = input.Folio.ToString(CultureInfo.InvariantCulture),
                    Concepto          = string.Format("MT-{0} {1} CABEZAS {2} kgs", input.Folio, input.NumCabezas, input.Kilos),
                    Division          = datos.Division,
                    BusAct            = BUSACT,
                    Periodo           = input.FechaCreacion.Year.ToString(CultureInfo.InvariantCulture),
                    NumeroLinea       = noLinea.ToString(CultureInfo.InvariantCulture),
                    Referencia1       = input.NumCabezas.ToString(CultureInfo.InvariantCulture),
                    Referencia3       = ref3,
                    FechaImpuesto     = input.Fecha.ToString("yyyyMMdd"),
                    ImpuestoRetencion = 0,
                    ImpuestoIva       = 0.ToString(CultureInfo.InvariantCulture),
                    ArchivoFolio      = archivoFolio,
                    Segmento          = "S" + datos.Sociedad
                };

                return(result);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Пример #13
0
        /// <summary>
        /// Genera los parametros para un registro de una salida ya sea por muerte o por venta
        /// </summary>
        /// <param name="info">Salida de ganado al que se le generaran los parametros para registro</param>
        /// <returns>Regresa la lista de parametros para el registro</returns>
        internal static Dictionary <string, object> ObtenerParametrosCrear_Salida(SalidaGanadoEnTransitoInfo info)
        {
            try
            {
                Logger.Info();
                //genera el xml de los detalles:
                var xml =
                    new XElement("ROOT",
                                 from detalles in info.DetallesSalida
                                 select new XElement("SalidaGanadoTransitoDetalle",
                                                     new XElement("CostoID", detalles.CostoId),
                                                     new XElement("ImporteCosto", detalles.ImporteCosto)));

                var parametros =
                    new Dictionary <string, object>
                {
                    { "@OrganizacionId", info.OrganizacionID },
                    { "@LoteId", info.LoteID },
                    { "@NumCabezas", info.NumCabezas },
                    { "@Venta", info.Venta },
                    { "@Muerte", info.Muerte },
                    { "@Fecha", info.Fecha },
                    { "@Importe", info.Importe },
                    { "@ClienteID", info.Cliente.ClienteID },
                    { "@Kilos", info.Kilos },
                    { "@Folio", info.Folio },
                    { "@FolioFactura", info.FolioFactura },
                    { "@PolizaId", info.PolizaID },
                    { "@UsuarioCreacionId", info.UsuarioCreacionID },
                    { "@Observaciones", info.Observaciones },
                    { "@Detalles", xml.ToString() },
                };
                return(parametros);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Пример #14
0
        /// <summary>
        /// Actualiza los importes,cantidades de los registros de entrada de ganado en transito correspondientes a la salida
        /// </summary>
        /// <param name="info">salida de ganado en transito en base al cual se actualizaran las tablas de entradas de ganado en transito y del lote</param>
        /// <returns>Regresa un true si se logro actualizar exitosamente las entradas de ganado en transito y del lote</returns>
        internal bool ActualizarEntradas(SalidaGanadoEnTransitoInfo info)
        {
            try
            {
                Logger.Info();
                info.FechaCreacion = DateTime.Now;

                var importes = new List <CostoInfo>();
                for (int i = 0; i < info.DetallesSalida.Count; i++)
                {
                    var temp = new CostoInfo
                    {
                        CostoID      = info.DetallesSalida[i].CostoId,
                        ImporteCosto = info.Costos[i].Importe - info.DetallesSalida[i].ImporteCosto
                    };
                    importes.Add(temp);
                }

                Dictionary <string, object> parameters = AuxSalidaGanadoEnTransitoDAL.ObtenerParametrosActualizarEntradas(info, importes);
                Update("SalidaGanadoTransito_ActualizarEntradasGanadoTransito", parameters);

                return(true);
            }
            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>
        /// 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");
        }
Пример #16
0
 /// <summary>
 /// Asigna el numero de poliza generada al registro de salida de ganado
 /// </summary>
 /// <param name="input">salida de ganado en transito al que se asignara la poliza generada</param>
 public void AsignarPolizaRegistrada(SalidaGanadoEnTransitoInfo input)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxSalidaGanadoEnTransitoDAL.ObtenerParametrosAsignarPolizaSalida(input);
         Update("SalidaGanadoTransito_ActualizarPoliza", 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);
     }
 }
Пример #17
0
        public bool GuardarSalida(ref SalidaGanadoEnTransitoInfo info)//regresa true si el registro y el proceso se completo exitosamente
        {
            try
            {
                //consulta el folio correspondiente a la salida de ganado
                var folio = (info.Muerte) ? TipoFolio.SalidaMuerteEnTransito.GetHashCode() : TipoFolio.SalidaVentaEnTransito.GetHashCode();
                info.Folio = Folio(info.OrganizacionID, folio);

                //registra la salida de ganado y sus detalles:
                GuardarSalidaEnTransito(info);

                if (info.Venta)
                {
                    //generar serie de factura y asignar al registro:
                    AsignarSerieFactura(info);
                }
                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Пример #18
0
 /// <summary>
 /// asigna la serie de factura al registro de salida de ganado
 /// </summary>
 /// <param name="salida">salida de ganado en transito al que e le asignara la serie de factura correspondiente</param>
 private void AsignarSerieFactura(SalidaGanadoEnTransitoInfo salida)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxSalidaGanadoEnTransitoDAL.ObtenerParametrosAsignarFolioFactura(salida);
         Update("SalidaGanadoTransitoVenta_GenerarFolioFactura", 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);
     }
 }
Пример #19
0
 /// <summary>
 /// Genera los parametros para la asignacion de folio de factura a la salida  de ganado registrada
 /// </summary>
 /// <param name="salida">Salida que tiene el folio de salida de ganado que se le asignara el folio de factura</param>
 /// <returns>Regresa la lista de parametros para asignar el folio de factura a una salida de ganado en transito por venta</returns>
 public static Dictionary <string, object> ObtenerParametrosAsignarFolioFactura(SalidaGanadoEnTransitoInfo salida)
 {
     try
     {
         var parametros =
             new Dictionary <string, object>
         {
             { "@FolioSalida", salida.Folio },
             { "@OrganizacionID", salida.OrganizacionID }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Пример #20
0
        /// <summary>
        /// Genera los parametros para actualizar las tablas de entrada de ganado en transito, entrada de ganado en transito detalle y el lote
        /// </summary>
        /// <param name="info">Salida de ganado al que se le generaran los parametros para actualizar las entradas de ganado en transito y el lote
        /// correspondies a la salida</param>
        /// <param name="Importes"></param>
        /// <returns>Regresa la lista de parametros para actualizar las entradas de ganado y el lote correspondientes a la salida de ganado</returns>
        public static Dictionary <string, object> ObtenerParametrosActualizarEntradas(SalidaGanadoEnTransitoInfo info, List <CostoInfo> Importes)
        {
            try{
                var xml =
                    new XElement("ROOT",
                                 from accion in Importes
                                 select new XElement("Importes",
                                                     new XElement("CostoId", accion.CostoID),
                                                     new XElement("Importe", accion.ImporteCosto)
                                                     ));

                var parametros =
                    new Dictionary <string, object>
                {
                    { "@EntradaGanadoTransitoID", info.EntradaGanadoTransitoID },
                    { "@LoteId", info.LoteID },
                    { "@NumCabezas", info.NumCabezas },
                    { "@Fecha", info.Fecha },
                    { "@Importe", info.Importe },
                    { "@Kilos", info.Kilos },
                    { "@UsuarioModificacionID", info.UsuarioCreacionID },
                    { "@Importes", xml.ToString() }     //XML DE importes
                };
                return(parametros);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Пример #21
0
        /// <summary>
        /// consulta los datos faltantes para generar la poliza(sociedad,Cuenta,etc)
        /// </summary>
        /// <param name="salida">salida de ganado en transito de la que se obtendran los datos faltantes para la generacion de la poliza</param>
        /// <returns>Regresa los datos faltantes para la generacion de la poliza</returns>
        internal DatosPolizaSalidaGanadoTransitoInfo ObtenerDatosPolizaSalidaPorMuerte(SalidaGanadoEnTransitoInfo salida)
        {
            try
            {
                Logger.Info();
                DatosPolizaSalidaGanadoTransitoInfo result;
                Dictionary <string, object>         parameters = AuxSalidaGanadoEnTransitoDAL.ObtenerParametrosObtenerPoliza(salida);
                DataSet ds = Retrieve("SalidaGanadoTransito_PolizaSalida", parameters);

                if (ValidateDataSet(ds))
                {
                    result = MapPolizaSalidaGanadoTransitoDAL.ObtenerDatosPoliza(ds);
                    return(result);
                }
                return(new DatosPolizaSalidaGanadoTransitoInfo());
            }
            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);
            }
        }