internal void ActualizarEstatusAlmacenMovimiento(FiltroCambiarEstatusInfo filtros) { try { Dictionary <string, object> parameters = AuxAlmacenMovimientoDAL.ObtenerParametrosActualizarEstatusAlmacenMovimiento(filtros); Update("AlmacenMovimiento_ActualizarEstatusNuevo", 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> /// Actualiza el estatus del registro /// </summary> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosActualizarEstatusAlmacenMovimiento(FiltroCambiarEstatusInfo filtros) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@AlmacenID", filtros.AlmacenID }, { "@FolioMovimiento", filtros.FolioMovimiento }, { "@EstatusAnterior", filtros.EstatusAnterior }, { "@EstatusNuevo", filtros.EstatusNuevo }, { "@UsuarioModificacionID", filtros.UsuarioModificacionID } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Genera el Cierre de Dia de Inventario /// </summary> /// <param name="cierreDiaInventarioPA"></param> internal void GuardarAutorizarCierreDiaInventarioPA(CierreDiaInventarioPAInfo cierreDiaInventarioPA) { var listaMovimientosFinal = new List <AlmacenMovimientoInfo>(); var listaMovimientosDetalleFinal = new List <AlmacenMovimientoDetalle>(); var listaAlmacenInventario = new List <AlmacenInventarioInfo>(); var listaAlmacenInventarioLote = new List <AlmacenInventarioLoteInfo>(); var listaOriginalDetalles = new List <CierreDiaInventarioPADetalleInfo>(); listaOriginalDetalles.AddRange(cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle); GenerarAjustesInventario(listaAlmacenInventarioLote, listaAlmacenInventario, cierreDiaInventarioPA); var estatusDAL = new EstatusDAL(); List <EstatusInfo> listaEstatusInventario = estatusDAL.ObtenerEstatusTipoEstatus(TipoEstatus.Inventario.GetHashCode()); //Toma los registros a los que se le van a generar los Movimientos de Entrada de Almacen cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle = listaOriginalDetalles.Where( det => !det.RequiereAutorizacion && (det.InventarioFisico - det.InventarioTeorico) > 0).ToList(); if (cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle.Any()) { ArmarAlmacenMovimientoEntradaSalidaAlmacen(listaMovimientosFinal, cierreDiaInventarioPA, listaEstatusInventario, true); } //Toma los registros a los que se le van a generar los Movimientos de Salida de Almacen cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle = listaOriginalDetalles.Where( det => !det.RequiereAutorizacion && (det.InventarioFisico - det.InventarioTeorico) < 0).ToList(); if (cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle.Any()) { ArmarAlmacenMovimientoEntradaSalidaAlmacen(listaMovimientosFinal, cierreDiaInventarioPA, listaEstatusInventario, false); } EstatusInfo estatusAplicado = listaEstatusInventario.FirstOrDefault( esta => esta.DescripcionCorta.Trim().Equals(ConstantesBL.MovimientoAplicado.Trim())); EstatusInfo estatusPendiente = listaEstatusInventario.FirstOrDefault( esta => esta.DescripcionCorta.Trim().Equals(ConstantesBL.MovimientoPendiente.Trim())); EstatusInfo estatusCancelado = listaEstatusInventario.FirstOrDefault( esta => esta.DescripcionCorta.Trim().Equals(ConstantesBL.MovimientoCancelado.Trim())); if (estatusAplicado == null || estatusPendiente == null || estatusCancelado == null) { return; } var filtrosActualizar = new FiltroCambiarEstatusInfo { AlmacenID = cierreDiaInventarioPA.AlmacenID, FolioMovimiento = cierreDiaInventarioPA.FolioMovimiento, EstatusAnterior = estatusPendiente.EstatusId, EstatusNuevo = cierreDiaInventarioPA.EsCancelacion ? estatusCancelado.EstatusId : estatusAplicado.EstatusId, UsuarioModificacionID = cierreDiaInventarioPA.UsuarioCreacionID }; if (cierreDiaInventarioPA.EsCancelacion) { var almacenMovimientoDAL = new AlmacenMovimientoDAL(); almacenMovimientoDAL.ActualizarEstatusAlmacenMovimiento(filtrosActualizar); return; } using (var transaction = new TransactionScope()) { var almacenMovimientoDAL = new AlmacenMovimientoDAL(); var almacenMovimientoDetalleDAL = new AlmacenMovimientoDetalleDAL(); var almacenInventarioDAL = new AlmacenInventarioDAL(); var almacenInventarioLoteDAL = new AlmacenInventarioLoteDAL(); foreach (var almacenMovimiento in listaMovimientosFinal) { long almacenMovimientoID = almacenMovimientoDAL.GuardarMovimientoCierreDiaPA(almacenMovimiento); almacenMovimientoDAL.ActualizarEstatusAlmacenMovimiento(filtrosActualizar); almacenMovimiento.ListaAlmacenMovimientoDetalle.ForEach( det => det.AlmacenMovimientoID = almacenMovimientoID); listaMovimientosDetalleFinal.AddRange(almacenMovimiento.ListaAlmacenMovimientoDetalle); } almacenMovimientoDetalleDAL.GuardarDetalleCierreDiaInventarioPA(listaMovimientosDetalleFinal); if (listaAlmacenInventario.Any()) { almacenInventarioDAL.AjustarAlmacenInventario(listaAlmacenInventario); } if (listaAlmacenInventarioLote.Any()) { almacenInventarioLoteDAL.AjustarAlmacenInventarioLote(listaAlmacenInventarioLote); } cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle = listaOriginalDetalles; GenerarPolizaCierreDiaPA(cierreDiaInventarioPA, listaEstatusInventario, false); transaction.Complete(); } }