Ejemplo n.º 1
0
 /// <summary>
 /// guardar almacen movimiento
 /// </summary>
 /// <param name="almacenCierreFolio"></param>
 /// <returns></returns>
 public AlmacenCierreDiaInventarioInfo GuardarAlmacenMovimiento(AlmacenCierreDiaInventarioInfo almacenCierreFolio)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxCierreDiaInventarioDAL.ObtenerParametrosObtenerGuardarAlmacenMovimiento(almacenCierreFolio);
         DataSet ds = Retrieve("CierreDiaInventario_GuardarAlmacenMovimiento", parameters);
         AlmacenCierreDiaInventarioInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapCierreDiaInventarioDAL.ObtenerCierreAlmacenMovimientoInfo(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);
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// ObtenerDatosAlmacenInventario
 /// </summary>
 /// <param name="cierreInventarioInfo"></param>
 /// <returns></returns>
 public AlmacenCierreDiaInventarioInfo ObtenerDatosAlmacenInventario(AlmacenCierreDiaInventarioInfo cierreInventarioInfo)
 {
     try
     {
         Logger.Info();
         var almacenDAL = new AlmacenDAL();
         AlmacenCierreDiaInventarioInfo result = almacenDAL.ObtenerDatosAlmacenInventario(cierreInventarioInfo);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Se valida cuando se pierde el foco del texbox de la cantidad.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Key_OnLostFocus(object sender, RoutedEventArgs e)
 {
     if (EsKeyDown)
     {
         var text = (sender as TextBox);
         if (text != null)
         {
             if (text.Text == "")
             {
                 AlmacenCierreDiaInventarioInfo seleccion =
                     (AlmacenCierreDiaInventarioInfo)gridProductosInventario.SelectedItem;
                 if (seleccion != null)
                 {
                     foreach (
                         var almacenCierreDiaInventarioInfo in
                         datosGrid.Where(
                             almacenCierreDiaInventarioInfo =>
                             seleccion.ProductoID == almacenCierreDiaInventarioInfo.ProductoID))
                     {
                         if (almacenCierreDiaInventarioInfo.ImporteReal > 0)
                         {
                             text.Text =
                                 almacenCierreDiaInventarioInfo.CantidadReal.ToString(
                                     CultureInfo.InvariantCulture);
                         }
                         else
                         {
                             text.Text = "0.00";
                         }
                         gridProductosInventario.UpdateLayout();
                     }
                 }
             }
         }
     }
     else
     {
         CalcularProductoClick(sender, e);
     }
     EsKeyDown = false;
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Cargar Campos
        /// </summary>
        private void CargarCampos()
        {
            var almacenPl            = new AlmacenPL();
            var almacenId            = (int)CboAlmacenes.SelectedValue;
            var cierreInventarioInfo = new AlmacenCierreDiaInventarioInfo
            {
                Almacen = new AlmacenInfo()
                {
                    AlmacenID = almacenId
                },
                OrganizacionId = organizacionId,
                TipoMovimiento = (int)TipoMovimiento.InventarioFisico
            };
            var resultadoAlmacenes = almacenPl.ObtenerDatosAlmacenInventario(cierreInventarioInfo);

            if (resultadoAlmacenes != null)
            {
                txtFolio.Text         = (resultadoAlmacenes.FolioAlmacen).ToString(CultureInfo.InvariantCulture);
                txtEstatus.Text       = EstatusInventario.Nuevo.ToString();
                dtpFecha.SelectedDate = DateTime.Now;
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Guardar
        /// </summary>
        /// <returns></returns>
        private bool GuardarCierreDiaInventario()
        {
            bool regreso = false;

            try
            {
                var almacenInfo                 = (AlmacenInfo)CboAlmacenes.SelectedItem;
                var cierreInventarioPl          = new CierreDiaInventarioPL();
                var almacenCierreInventarioInfo = new AlmacenCierreDiaInventarioInfo
                {
                    UsuarioCreacionId = usuarioID,
                    OrganizacionId    = organizacionId,
                    Observaciones     = txtObservaciones.Text,
                    FolioAlmacen      = Convert.ToInt64(txtFolio.Text),
                    Almacen           = almacenInfo
                };
                int resultadoGuardar = cierreInventarioPl.GuardarCierreDiaInventario(datosGrid, almacenCierreInventarioInfo);
                if (resultadoGuardar >= 0)
                {
                    regreso = true;
                }
            }
            catch (Exception ex)
            {
                string mensaje      = Properties.Resources.ConciliacionSAP_ErrorObtenerPolizas;
                bool   tiempoEspera = ValidaExcepcionTiempoEspera(ex);
                if (tiempoEspera)
                {
                    mensaje = "Ocurrió un error con la conexión";
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal]
                                      , mensaje, MessageBoxButton.OK, MessageImage.Error);
                }
                Logger.Error(ex);
            }
            return(regreso);
        }
Ejemplo n.º 6
0
 public static Dictionary <string, object> ObtenerParametrosobtenerFolioAlmacen(AlmacenCierreDiaInventarioInfo almacenCierreFolio)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@AlmacenID", almacenCierreFolio.Almacen.AlmacenID },
             { "@TipoMovimientoID", almacenCierreFolio.TipoMovimiento },
             { "@Folio", almacenCierreFolio.FolioAlmacen }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Obtener parametros para obtener cierreDiaInventarioInfo
 /// </summary>
 /// <param name="almacenId"></param>
 /// <param name="organizacionId"></param>
 /// <returns></returns>
 public static Dictionary <string, object> ObtenerParametrosObtenerObtenerDatosAlmacenInventario(AlmacenCierreDiaInventarioInfo cierreInventarioInfo)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@OrganizacionID", cierreInventarioInfo.OrganizacionId },
             { "@AlmacenID", cierreInventarioInfo.Almacen.AlmacenID },
             { "@Activo", (int)EstatusEnum.Activo },
             { "@TipoMovimiento", cierreInventarioInfo.TipoMovimiento }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// guardar cierre dia inventario
        /// </summary>
        /// <param name="datosGrid"></param>
        /// <param name="almacenCierreDiaInventario"></param>
        /// <returns></returns>
        public int GuardarCierreDiaInventario(IList <AlmacenCierreDiaInventarioInfo> datosGrid, AlmacenCierreDiaInventarioInfo almacenCierreDiaInventario)
        {
            try
            {
                int result = 0;

                int usuarioCreacionID  = almacenCierreDiaInventario.UsuarioCreacionId;
                var almacenCierreFolio = new AlmacenCierreDiaInventarioInfo
                {
                    Almacen           = almacenCierreDiaInventario.Almacen,
                    TipoMovimiento    = TipoMovimiento.InventarioFisico.GetHashCode(),
                    FolioAlmacen      = almacenCierreDiaInventario.FolioAlmacen,
                    Observaciones     = almacenCierreDiaInventario.Observaciones,
                    Estatus           = EstatusInventario.Pendiente.GetHashCode(),
                    UsuarioCreacionId = usuarioCreacionID,
                };

                int organizacionID = almacenCierreDiaInventario.OrganizacionId;

                List <AnimalMovimientoInfo>       animalesNoReimplantados = null;
                List <ProgramacionReinplanteInfo> corralesProgramados     = null;
                List <LoteInfo> lotesDestino = null;
                List <LoteInfo> lotesOrigen  = null;

                var animalMovimientoBL = new AnimalMovimientoBL();
                var loteBL             = new LoteBL();
                if (almacenCierreFolio.Almacen != null &&
                    almacenCierreFolio.Almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode())
                {
                    var reimplanteBL = new ReimplanteBL();
                    corralesProgramados = reimplanteBL.ObtenerCorralesParaAjuste(organizacionID);
                    if (corralesProgramados != null && corralesProgramados.Any())
                    {
                        corralesProgramados.ForEach(dato =>
                        {
                            dato.OrganizacionID        = organizacionID;
                            dato.UsuarioModificacionID = usuarioCreacionID;
                        });
                        List <LoteInfo> lotes = corralesProgramados.Select(id => new LoteInfo
                        {
                            LoteID = id.LoteID
                        }).ToList();
                        animalesNoReimplantados =
                            animalMovimientoBL.ObtenerAnimalesNoReimplantadosXML(organizacionID, lotes);
                        if (animalesNoReimplantados != null && animalesNoReimplantados.Any())
                        {
                            animalesNoReimplantados.ForEach(dato =>
                            {
                                dato.TipoMovimientoID  = TipoMovimiento.EntradaPorAjusteAnimal.GetHashCode();
                                dato.UsuarioCreacionID = usuarioCreacionID;
                            });
                            lotesDestino = animalesNoReimplantados.Select(lote => new LoteInfo
                            {
                                LoteID = lote.LoteID
                            }).ToList();
                            lotesOrigen = animalesNoReimplantados.Select(lote => new LoteInfo
                            {
                                LoteID = lote.LoteIDOrigen
                            }).ToList();
                            IEnumerable <LoteInfo> lotesEnumerable = loteBL.ObtenerPorLoteXML(lotesDestino);
                            if (lotesEnumerable != null)
                            {
                                lotesDestino = lotesEnumerable.ToList();
                            }
                            lotesEnumerable = loteBL.ObtenerPorLoteXML(lotesOrigen);
                            if (lotesEnumerable != null)
                            {
                                lotesOrigen = lotesEnumerable.ToList();
                            }
                            List <AnimalMovimientoInfo> animalesPorLoteDestino = animalesNoReimplantados
                                                                                 .Select(ani => new AnimalMovimientoInfo
                            {
                                LoteID = ani.LoteID
                            }).ToList();
                            List <AnimalMovimientoInfo> animalesPorLoteOrigen = animalesNoReimplantados
                                                                                .Select(ani => new AnimalMovimientoInfo
                            {
                                LoteID = ani.LoteID
                            }).ToList();
                            lotesDestino.ForEach(id =>
                            {
                                int cabezas              = animalesPorLoteDestino.Count(loteID => loteID.LoteID == id.LoteID);
                                id.Cabezas              += cabezas;
                                id.CabezasInicio        += cabezas;
                                id.UsuarioModificacionID = usuarioCreacionID;
                            });
                            lotesOrigen.ForEach(id =>
                            {
                                int cabezas = animalesPorLoteOrigen.Count(loteID => loteID.LoteID == id.LoteID);
                                id.Cabezas -= cabezas;
                                id.UsuarioModificacionID = usuarioCreacionID;
                            });
                        }
                    }
                }

                var transactionOption = new TransactionOptions();
                transactionOption.IsolationLevel = IsolationLevel.ReadUncommitted;
                using (var transaction = new TransactionScope(TransactionScopeOption.Required, transactionOption))
                {
                    Logger.Info();
                    var cierreDiaInventarioDAL   = new CierreDiaInventarioDAL();
                    var programacionReimplanteBl = new ProgramacionReimplanteBL();
                    #region AjusteDeCorralesReimplante

                    if (animalesNoReimplantados != null && animalesNoReimplantados.Any())
                    {
                        animalMovimientoBL.GuardarAnimalMovimientoXML(animalesNoReimplantados);
                        ////Se actualizan las cabezas que tiene el lote
                        loteBL.ActualizaNoCabezasEnLoteXML(lotesDestino, lotesOrigen);

                        //Se elimina la programacin reimplante del lote

                        programacionReimplanteBl.EliminarProgramacionReimplanteXML(corralesProgramados);
                    }

                    if (almacenCierreFolio.Almacen != null &&
                        almacenCierreFolio.Almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode())
                    {
                        programacionReimplanteBl.CerrarProgramacionReimplante(organizacionID, usuarioCreacionID);
                    }

                    #endregion AjusteDeCorralesReimplante

                    #region GuardarCierreDeDia

                    AlmacenCierreDiaInventarioInfo resultadoAlmacenMovimiento =
                        cierreDiaInventarioDAL.GuardarAlmacenMovimiento(almacenCierreFolio);

                    almacenCierreFolio.UsuarioCreacionId   = resultadoAlmacenMovimiento.UsuarioCreacionId;
                    almacenCierreFolio.AlmacenMovimientoID = resultadoAlmacenMovimiento.AlmacenMovimientoID;

                    result = cierreDiaInventarioDAL.GuardarProductosCierreDiaInventario(datosGrid,
                                                                                        almacenCierreFolio);

                    #endregion GuardarCierreDeDia

                    #region POLIZA
                    var almacenMovimientoInventarioBL = new AlmacenMovimientoBL();
                    List <ContenedorAlmacenMovimientoCierreDia> contenedorMovimientoCierreDia =
                        almacenMovimientoInventarioBL.ObtenerMovimientosInventario(almacenCierreDiaInventario.Almacen.AlmacenID,
                                                                                   almacenCierreDiaInventario.OrganizacionId);
                    if (contenedorMovimientoCierreDia != null && contenedorMovimientoCierreDia.Any())
                    {
                        contenedorMovimientoCierreDia.ForEach(
                            x => x.FolioAlmacen       = almacenCierreDiaInventario.FolioAlmacen);
                        contenedorMovimientoCierreDia =
                            contenedorMovimientoCierreDia.Join(datosGrid, contenedor => contenedor.Producto.ProductoId,
                                                               grid => grid.ProductoID, (con, grd) => con).ToList();
                        var             poliza       = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.ConsumoProducto);
                        List <DateTime> foliosFechas =
                            contenedorMovimientoCierreDia.Select(
                                x => Convert.ToDateTime(x.AlmacenMovimiento.FechaMovimiento.ToShortDateString())).
                            Distinct().OrderBy(
                                fecha => fecha).ToList();
                        List <ContenedorAlmacenMovimientoCierreDia> movimientosPorDia;
                        var cierreDiaFechas = new List <ContenedorAlmacenMovimientoCierreDia>();
                        for (var indexFecha = 0; indexFecha < foliosFechas.Count; indexFecha++)
                        {
                            movimientosPorDia =
                                contenedorMovimientoCierreDia.Where(
                                    x =>
                                    Convert.ToDateTime(x.AlmacenMovimiento.FechaMovimiento.ToShortDateString()).Equals(
                                        foliosFechas[indexFecha])).ToList();
                            IList <PolizaInfo> polizaConsumo = poliza.GeneraPoliza(movimientosPorDia);
                            if (polizaConsumo != null && polizaConsumo.Any())
                            {
                                var polizaBL = new PolizaBL();
                                polizaConsumo.ToList().ForEach(datos =>
                                {
                                    datos.UsuarioCreacionID =
                                        almacenCierreDiaInventario.UsuarioCreacionId;
                                    datos.OrganizacionID =
                                        almacenCierreDiaInventario.OrganizacionId;
                                    datos.ArchivoEnviadoServidor = 1;
                                });
                                polizaBL.GuardarServicioPI(polizaConsumo, TipoPoliza.ConsumoProducto);
                                cierreDiaFechas.AddRange(movimientosPorDia);
                            }
                        }
                        var almacenMovimientoBL = new AlmacenMovimientoBL();
                        cierreDiaFechas.ForEach(
                            datos => datos.Almacen.UsuarioModificacionID = almacenCierreDiaInventario.UsuarioCreacionId);
                        almacenMovimientoBL.ActualizarGeneracionPoliza(cierreDiaFechas);
                    }
                    #endregion POLIZA

                    transaction.Complete();
                }
                return(result);
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Guardar productos de cierre dia inventario
        /// </summary>
        /// <param name="datosGrid"></param>
        /// <param name="almacenCierreDiaInventarioInfo"></param>
        /// <returns></returns>
        public int GuardarProductosCierreDiaInventario(IList <AlmacenCierreDiaInventarioInfo> datosGrid, AlmacenCierreDiaInventarioInfo almacenCierreDiaInventarioInfo)
        {
            try
            {
                Logger.Info();
                var parameters = AuxCierreDiaInventarioDAL.ObtenerParametrosGuardarProductosCierreDiaInventario(datosGrid, almacenCierreDiaInventarioInfo);
                var result     = Create("CierreDiaInventario_GuardarAlmacenMovimientoDetalle", 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);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Calcular el producto
        /// </summary>
        /// <param name="sender"></param>
        private void CalcularProducto(object sender)
        {
            AlmacenCierreDiaInventarioInfo seleccion =
                (AlmacenCierreDiaInventarioInfo)gridProductosInventario.SelectedItem;
            TextBox text = (TextBox)sender;

            if (seleccion != null && text.Text != "")
            {
                text.Text = text.Text.Replace(" ", "");
                if (ValidarDecimal(text.Text))
                {
                    var cantidad = decimal.Parse(text.Text.Trim(),
                                                 NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture);
                    if (cantidad > 0)
                    {
                        foreach (var almacenCierreDiaInventarioInfo in datosGrid.Where(almacenCierreDiaInventarioInfo => seleccion.ProductoID == almacenCierreDiaInventarioInfo.ProductoID))
                        {
                            almacenCierreDiaInventarioInfo.ImporteReal =
                                almacenCierreDiaInventarioInfo.PrecioPromedio * cantidad;
                            almacenCierreDiaInventarioInfo.FolioAlmacen  = long.Parse(txtFolio.Text);
                            almacenCierreDiaInventarioInfo.CantidadReal  = cantidad;
                            almacenCierreDiaInventarioInfo.Observaciones = txtObservaciones.Text;
                            btnGuardar.IsEnabled = true;
                            break;
                        }
                    }
                    else
                    {
                        foreach (var almacenCierreDiaInventarioInfo in datosGrid)
                        {
                            if (seleccion.ProductoID == almacenCierreDiaInventarioInfo.ProductoID)
                            {
                                almacenCierreDiaInventarioInfo.ImporteReal  = 0;
                                almacenCierreDiaInventarioInfo.CantidadReal = 0;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    index = gridProductosInventario.SelectedIndex;
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.CierreDiaInventario_CantidadInsertadaError,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    gridProductosInventario.CurrentCell = new DataGridCellInfo(
                        gridProductosInventario.Items[index], gridProductosInventario.Columns[4]);
                    gridProductosInventario.BeginEdit();
                    gridProductosInventario.SelectedIndex = index;
                    text.SelectAll();
                    return;
                }
            }
            index = gridProductosInventario.SelectedIndex;

            gridProductosInventario.ItemsSource = null;
            gridProductosInventario.ItemsSource = datosGrid;
            gridProductosInventario.Focus();

            if (gridProductosInventario.Items.Count > (index + 1))
            {
                gridProductosInventario.CurrentCell = new DataGridCellInfo(
                    gridProductosInventario.Items[index + 1], gridProductosInventario.Columns[4]);
                gridProductosInventario.BeginEdit();
                gridProductosInventario.SelectedIndex = index + 1;
            }
            else
            {
                btnGuardar.Focus();
            }
            text.Focus();
            text.SelectAll();
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Guardar el inventario de cierre
 /// </summary>
 /// <param name="datosGrid"></param>
 /// <param name="almacenCierreDiaInventarioInfo"></param>
 /// <returns></returns>
 public int GuardarCierreDiaInventario(IList <AlmacenCierreDiaInventarioInfo> datosGrid, AlmacenCierreDiaInventarioInfo almacenCierreDiaInventarioInfo)
 {
     try
     {
         Logger.Info();
         var cierreDiaInventarioBl = new CierreDiaInventarioBL();
         int result = cierreDiaInventarioBl.GuardarCierreDiaInventario(datosGrid, almacenCierreDiaInventarioInfo);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Metodo para actualizar los ajustes de inventario contenidos en el grid
        /// </summary>
        /// <param name="articulosDiferenciasInventario"></param>
        /// <param name="almacenMovimientoInfo"></param>
        /// <returns></returns>
        public IList <ResultadoPolizaModel> GuardarAjusteDeInventario(List <AjusteDeInventarioDiferenciasInventarioInfo> articulosDiferenciasInventario, AlmacenMovimientoInfo almacenMovimientoInfo)
        {
            try
            {
                var            resultadosPolizaModel = new List <ResultadoPolizaModel>();
                PolizaAbstract poliza = null;
                var            cierreDiaInventarioDAL      = new CierreDiaInventarioDAL();
                var            almacenMovimientoDetalleDAL = new AlmacenMovimientoDetalleDAL();
                var            articulosEntrada            = new List <AjusteDeInventarioDiferenciasInventarioInfo>();
                var            articulosSalida             = new List <AjusteDeInventarioDiferenciasInventarioInfo>();
                using (var transaction = new TransactionScope())
                {
                    Logger.Info();
                    if (articulosDiferenciasInventario != null)
                    {
                        var seleccionados =
                            articulosDiferenciasInventario.Any(articulosComprobar => articulosComprobar.Seleccionado);
                        if (seleccionados)
                        {
                            foreach (var articulos in articulosDiferenciasInventario.Where(art => art.Seleccionado))
                            {
                                ActualizarArticulosDiferencias(articulos, almacenMovimientoInfo);
                            }
                            almacenMovimientoInfo.Status = (int)EstatusInventario.Aplicado;
                            var almacenBL = new AlmacenBL();
                            almacenBL.ActualizarAlmacenMovimiento(almacenMovimientoInfo);

                            articulosEntrada =
                                articulosDiferenciasInventario.Where(mov => (mov.Seleccionado && mov.Cantidad > 0)).
                                ToList();

                            articulosSalida =
                                articulosDiferenciasInventario.Where(mov => (mov.Seleccionado && mov.Cantidad < 0)).
                                ToList();

                            //Generar los Movimientos de Entrada y Salida

                            #region Movimientos Entrada

                            if (articulosEntrada.Any())
                            {
                                var movimientoEntrada = new AlmacenCierreDiaInventarioInfo
                                {
                                    Almacen        = almacenMovimientoInfo.Almacen,
                                    TipoMovimiento =
                                        TipoMovimiento.EntradaPorAjuste.GetHashCode(),
                                    Observaciones     = almacenMovimientoInfo.Observaciones,
                                    Estatus           = EstatusInventario.Autorizado.GetHashCode(),
                                    UsuarioCreacionId =
                                        almacenMovimientoInfo.UsuarioModificacionID
                                };

                                var movimientosEntrada = (from detalle in articulosEntrada

                                                          select new AlmacenMovimientoDetalle
                                {
                                    ProductoID = detalle.ProductoID,
                                    Precio = detalle.Precio,
                                    Cantidad = Math.Abs(detalle.Cantidad),
                                    Importe =
                                        Math.Round(
                                            Convert.ToDecimal(
                                                Math.Abs(detalle.Cantidad)) *
                                            detalle.Precio, 2),
                                    UsuarioCreacionID =
                                        almacenMovimientoInfo.UsuarioModificacionID
                                }).ToList();

                                AlmacenCierreDiaInventarioInfo resultadoAlmacenMovimiento =
                                    cierreDiaInventarioDAL.GuardarAlmacenMovimiento(movimientoEntrada);

                                almacenMovimientoDetalleDAL.GuardarAlmacenMovimientoDetalle(movimientosEntrada,
                                                                                            resultadoAlmacenMovimiento.
                                                                                            AlmacenMovimientoID);
                            }

                            #endregion Movimientos Entrada

                            #region Movimientos Salida

                            if (articulosSalida.Any())
                            {
                                var movimientoSalida = new AlmacenCierreDiaInventarioInfo
                                {
                                    Almacen        = almacenMovimientoInfo.Almacen,
                                    TipoMovimiento =
                                        TipoMovimiento.SalidaPorAjuste.GetHashCode(),
                                    Observaciones     = almacenMovimientoInfo.Observaciones,
                                    Estatus           = EstatusInventario.Autorizado.GetHashCode(),
                                    UsuarioCreacionId =
                                        almacenMovimientoInfo.UsuarioModificacionID
                                };

                                var movimientosSalida = (from detalle in articulosSalida
                                                         select new AlmacenMovimientoDetalle
                                {
                                    ProductoID = detalle.ProductoID,
                                    Precio = detalle.Precio,
                                    Cantidad = Math.Abs(detalle.Cantidad),
                                    Importe =
                                        Math.Round(
                                            Convert.ToDecimal(
                                                Math.Abs(detalle.Cantidad)) *
                                            detalle.Precio, 2),
                                    UsuarioCreacionID =
                                        almacenMovimientoInfo.UsuarioModificacionID
                                }).ToList();

                                AlmacenCierreDiaInventarioInfo resultadoAlmacenMovimiento =
                                    cierreDiaInventarioDAL.GuardarAlmacenMovimiento(movimientoSalida);

                                almacenMovimientoDetalleDAL.GuardarAlmacenMovimientoDetalle(movimientosSalida,
                                                                                            resultadoAlmacenMovimiento.
                                                                                            AlmacenMovimientoID);
                            }

                            #endregion Movimientos Entrada
                        }
                        else
                        {
                            almacenMovimientoInfo.Status = (int)EstatusInventario.Cancelado;
                            var almacenBL = new AlmacenBL();
                            almacenBL.ActualizarAlmacenMovimiento(almacenMovimientoInfo);
                        }

                        #region POLIZA

                        #region PolizaSalida

                        MemoryStream stream;
                        if (articulosSalida.Any())
                        {
                            poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaAjuste);

                            List <PolizaEntradaSalidaPorAjusteModel> salidasPorAjuste =
                                articulosSalida.Select(ajuste => new PolizaEntradaSalidaPorAjusteModel
                            {
                                Importe             = Math.Abs(ajuste.Importe),
                                Cantidad            = Math.Abs(ajuste.Cantidad),
                                TipoAjuste          = TipoAjusteEnum.Merma,
                                Precio              = ajuste.Precio,
                                AlmacenInventarioID =
                                    ajuste.AlmacenInventarioID,
                                AlmacenMovimientoDetalleID =
                                    ajuste.AlmacenMovimientoDetalleID,
                                ProductoID = ajuste.ProductoID,
                                CantidadInventarioFisico =
                                    ajuste.CantidadInventarioFisico,
                                CantidadInventarioTeorico =
                                    ajuste.CantidadInventarioTeorico,
                                Observaciones =
                                    almacenMovimientoInfo.Observaciones
                            }).ToList();
                            if (salidasPorAjuste.Any())
                            {
                                IList <PolizaInfo> polizasSalida = poliza.GeneraPoliza(salidasPorAjuste);
                                if (polizasSalida != null)
                                {
                                    stream = poliza.ImprimePoliza(salidasPorAjuste, polizasSalida);
                                    var polizaBL = new PolizaBL();
                                    polizasSalida.ToList().ForEach(datos =>
                                    {
                                        datos.UsuarioCreacionID =
                                            almacenMovimientoInfo.
                                            UsuarioModificacionID;
                                        datos.OrganizacionID =
                                            almacenMovimientoInfo.OrganizacionID;
                                        datos.ArchivoEnviadoServidor = 1;
                                    });
                                    polizaBL.GuardarServicioPI(polizasSalida, TipoPoliza.SalidaAjuste);
                                    var resultadoPolizaModel = new ResultadoPolizaModel
                                    {
                                        Polizas = polizasSalida,
                                        PDFs    =
                                            new Dictionary <TipoPoliza, MemoryStream>
                                        {
                                            { TipoPoliza.SalidaAjuste, stream }
                                        }
                                    };
                                    resultadosPolizaModel.Add(resultadoPolizaModel);
                                }
                            }
                        }

                        #endregion PolizaSalida

                        #region PolizaEntrada

                        if (articulosEntrada.Any())
                        {
                            poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.EntradaAjuste);

                            List <PolizaEntradaSalidaPorAjusteModel> entradasPorAjuste =
                                articulosEntrada.Select(ajuste => new PolizaEntradaSalidaPorAjusteModel
                            {
                                Importe             = Math.Abs(ajuste.Importe),
                                Cantidad            = Math.Abs(ajuste.Cantidad),
                                TipoAjuste          = TipoAjusteEnum.Merma,
                                Precio              = ajuste.Precio,
                                AlmacenInventarioID =
                                    ajuste.AlmacenInventarioID,
                                AlmacenMovimientoDetalleID =
                                    ajuste.AlmacenMovimientoDetalleID,
                                ProductoID = ajuste.ProductoID,
                                CantidadInventarioFisico =
                                    ajuste.CantidadInventarioFisico,
                                CantidadInventarioTeorico =
                                    ajuste.CantidadInventarioTeorico,
                                Observaciones =
                                    almacenMovimientoInfo.Observaciones
                            }).ToList();
                            if (entradasPorAjuste.Any())
                            {
                                IList <PolizaInfo> polizasEntrada = poliza.GeneraPoliza(entradasPorAjuste);
                                if (polizasEntrada != null)
                                {
                                    stream = poliza.ImprimePoliza(entradasPorAjuste, polizasEntrada);
                                    var polizaBL = new PolizaBL();
                                    polizasEntrada.ToList().ForEach(datos =>
                                    {
                                        datos.UsuarioCreacionID =
                                            almacenMovimientoInfo.
                                            UsuarioModificacionID;
                                        datos.OrganizacionID =
                                            almacenMovimientoInfo.OrganizacionID;
                                        datos.ArchivoEnviadoServidor = 1;
                                    });
                                    polizaBL.GuardarServicioPI(polizasEntrada, TipoPoliza.EntradaAjuste);
                                    var resultadoPolizaModel = new ResultadoPolizaModel
                                    {
                                        Polizas = polizasEntrada,
                                        PDFs    =
                                            new Dictionary <TipoPoliza, MemoryStream>
                                        {
                                            { TipoPoliza.EntradaAjuste, stream }
                                        }
                                    };
                                    resultadosPolizaModel.Add(resultadoPolizaModel);
                                }
                            }
                        }

                        #endregion PolizaEntrada

                        #endregion POLIZA
                    }
                    else
                    {
                        almacenMovimientoInfo.Status = (int)EstatusInventario.Cancelado;
                        var almacenBL = new AlmacenBL();
                        almacenBL.ActualizarAlmacenMovimiento(almacenMovimientoInfo);
                    }
                    transaction.Complete();
                }
                return(resultadosPolizaModel);
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(null);
            }
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Obtener parametros guardar almacen movimiento
 /// </summary>
 /// <param name="almacenCierreFolio"></param>
 /// <returns></returns>
 public static Dictionary <string, object> ObtenerParametrosObtenerGuardarAlmacenMovimiento(AlmacenCierreDiaInventarioInfo almacenCierreFolio)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@AlmacenID", almacenCierreFolio.Almacen.AlmacenID },
             { "@TipoMovimientoID", almacenCierreFolio.TipoMovimiento },
             { "@Observaciones", almacenCierreFolio.Observaciones },
             { "@EstatusID", almacenCierreFolio.Estatus },
             { "@UsuarioCreacion", almacenCierreFolio.UsuarioCreacionId }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Obtener parametros para guardar animal salida
        /// </summary>
        /// <param name="datosGrid"></param>
        /// <param name="almacenCierreDiaInventarioInfo"> </param>
        /// <returns></returns>
        internal static Dictionary <string, object> ObtenerParametrosGuardarProductosCierreDiaInventario(IList <AlmacenCierreDiaInventarioInfo> datosGrid, AlmacenCierreDiaInventarioInfo almacenCierreDiaInventarioInfo)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                //var lista = cabezasCortadas.NoPartida.Split('|');
                var xml =
                    new XElement("ROOT",
                                 from cierre in datosGrid
                                 select
                                 new XElement("CierreDiaInventario",
                                              new XElement("AlmacenID", cierre.Almacen.AlmacenID),
                                              new XElement("ProductoID", cierre.ProductoID),
                                              new XElement("Precio", cierre.PrecioPromedio),
                                              new XElement("Cantidad", cierre.CantidadReal),
                                              new XElement("Importe", cierre.ImporteReal),
                                              new XElement("AlmacenMovimientoID", almacenCierreDiaInventarioInfo.AlmacenMovimientoID),
                                              new XElement("UsuarioCreacionID", almacenCierreDiaInventarioInfo.UsuarioCreacionId)

                                              )
                                 );

                parametros = new Dictionary <string, object>
                {
                    { "@XmlGuardarProductosCierreDiaInventario", xml.ToString() },
                    // {"@Activo",(int)EstatusEnum.Activo}
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }