/// <summary> /// Obtiene los Estatus dados de alta /// </summary> /// <returns> </returns> public List <EstatusInfo> ObtenerEstatusTipoEstatus(int tipoEstatus) { List <EstatusInfo> info; try { Logger.Info(); var almacenDAL = new EstatusDAL(); info = almacenDAL.ObtenerEstatusTipoEstatus(tipoEstatus); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(info); }
/// <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(); } }
/// <summary> /// Genera el Cierre de Dia de Inventario /// </summary> /// <param name="cierreDiaInventarioPA"></param> internal IList <ResultadoPolizaModel> GuardarCierreDiaInventarioPA(CierreDiaInventarioPAInfo cierreDiaInventarioPA) { try { var listaMovimientosFinal = new List <AlmacenMovimientoInfo>(); var listaMovimientosDetalleFinal = new List <AlmacenMovimientoDetalle>(); var listaOriginalDetalles = new List <CierreDiaInventarioPADetalleInfo>(); var listaAlmacenInventario = new List <AlmacenInventarioInfo>(); var listaAlmacenInventarioLote = new List <AlmacenInventarioLoteInfo>(); GenerarAjustesInventario(listaAlmacenInventarioLote, listaAlmacenInventario, cierreDiaInventarioPA); listaOriginalDetalles.AddRange(cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle); var estatusDAL = new EstatusDAL(); List <EstatusInfo> listaEstatusInventario = estatusDAL.ObtenerEstatusTipoEstatus(TipoEstatus.Inventario.GetHashCode()); //Toma los registros que no necesitan autorizaciĆ³n para generar sus movimientos Fisicos cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle = listaOriginalDetalles.Where(det => !det.RequiereAutorizacion).ToList(); ArmarAlmacenMovimientoInventarioFisico(listaMovimientosFinal, cierreDiaInventarioPA, listaEstatusInventario); //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); } //Toma los registros a los que se le van a generar los Fisicos como estatus de Pendientes cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle = listaOriginalDetalles.Where(det => det.RequiereAutorizacion).ToList(); if (cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle.Any()) { ArmarAlmacenMovimientoInventarioFisicoPendiente(listaMovimientosFinal, cierreDiaInventarioPA, listaEstatusInventario); } IList <ResultadoPolizaModel> pdfs = null; 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); 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); } ActualizarFolioAlmacen(cierreDiaInventarioPA.AlmacenID); cierreDiaInventarioPA.ListaCierreDiaInventarioPADetalle = listaOriginalDetalles; pdfs = GenerarPolizaCierreDiaPA(cierreDiaInventarioPA, listaEstatusInventario, true); transaction.Complete(); } return(pdfs); } catch (ExcepcionServicio) { throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }