/// <summary> /// Obtiene almaceninventariolote por folio /// </summary> /// <param name="almacenInventarioLote"></param> /// <returns></returns> internal AlmacenInventarioLoteInfo ObtenerAlmacenInventarioLoteAlmacenCodigo(AlmacenInventarioLoteInfo almacenInventarioLote) { try { var almacenDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLote = almacenDAL.ObtenerAlmacenInventarioLoteAlmacenCodigo(almacenInventarioLote); if (almacenInventarioLote != null) { if (almacenInventarioLote.AlmacenInventario.AlmacenInventarioID > 0) { var almacenInventarioBl = new AlmacenInventarioBL(); almacenInventarioLote.AlmacenInventario = almacenInventarioBl.ObtenerAlmacenInventarioPorId( almacenInventarioLote.AlmacenInventario.AlmacenInventarioID); } } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(almacenInventarioLote); }
/// <summary> /// Obtiene los almacenes en base a la organizacion, el tipo de almacen y el producto /// </summary> /// <param name="datosLotes"></param> /// <returns></returns> internal List <AlmacenInventarioLoteInfo> ObtenerListadoLotesPorOrganizacionTipoAlmacenProducto(ParametrosOrganizacionTipoAlmacenProductoActivo datosLotes) { List <AlmacenInventarioLoteInfo> almacenInventarioLote = null; try { var almacenDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLote = almacenDAL.ObtenerListadoLotesPorOrganizacionTipoAlmacenProducto(datosLotes); if (almacenInventarioLote != null) { foreach (var almacenInventario in almacenInventarioLote) { if (almacenInventario.AlmacenInventario.AlmacenInventarioID > 0) { var almacenInventarioBl = new AlmacenInventarioBL(); almacenInventario.AlmacenInventario = almacenInventarioBl.ObtenerAlmacenInventarioPorId( almacenInventario.AlmacenInventario.AlmacenInventarioID); } } } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(almacenInventarioLote); }
/// <summary> /// Obtiene una lista de almaceninventariolote /// </summary> /// <param name="almacenInventario"></param> /// <returns></returns> internal List <AlmacenInventarioLoteInfo> ObtenerPorAlmacenInventarioID(AlmacenInventarioInfo almacenInventario) { List <AlmacenInventarioLoteInfo> almacenInventarioLote = null; try { var almacenDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLote = almacenDAL.ObtenerPorAlmacenInventarioID(almacenInventario); if (almacenInventarioLote != null) { foreach (var almacenInventarioInfo in almacenInventarioLote) { if (almacenInventarioInfo.AlmacenInventario.AlmacenInventarioID > 0) { var almacenInventarioBl = new AlmacenInventarioBL(); almacenInventarioInfo.AlmacenInventario = almacenInventarioBl.ObtenerAlmacenInventarioPorId( almacenInventarioInfo.AlmacenInventario.AlmacenInventarioID); } } } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(almacenInventarioLote); }
/// <summary> /// Método que obtiene una lista paginada /// </summary> /// <param name="ds"></param> /// <returns></returns> public static ResultadoInfo <TraspasoMpPaMedInfo> ObtenerPorPagina(DataSet ds) { try { var contratoDAL = new ContratoDAL(); var almacenDAL = new AlmacenDAL(); var almacenInventarioLoteDAL = new AlmacenInventarioLoteDAL(); var cuentaSAPDAL = new CuentaSAPDAL(); var productoDAL = new ProductoDAL(); Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; List <TraspasoMpPaMedInfo> lista = (from info in dt.AsEnumerable() select new TraspasoMpPaMedInfo { TraspasoMateriaPrimaID = info.Field <int>("TraspasoMateriaPrimaID"), ContratoOrigen = info.Field <int?>("ContratoOrigenID") != null ? contratoDAL.ObtenerPorId(new ContratoInfo { ContratoId = info.Field <int>("ContratoOrigenID") }) : new ContratoInfo(), ContratoDestino = info.Field <int?>("ContratoDestinoID") != null ? contratoDAL.ObtenerPorId(new ContratoInfo { ContratoId = info.Field <int>("ContratoDestinoID") }) : new ContratoInfo(), FolioTraspaso = info.Field <long>("FolioTraspaso"), AlmacenOrigen = almacenDAL.ObtenerPorID(info.Field <int>("AlmacenOrigenID")), AlmacenDestino = almacenDAL.ObtenerPorID(info.Field <int>("AlmacenDestinoID")), LoteMpOrigen = info.Field <int?>("InventarioLoteOrigenID") != null ? almacenInventarioLoteDAL.ObtenerAlmacenInventarioLotePorId(info.Field <int>("InventarioLoteOrigenID")) : new AlmacenInventarioLoteInfo(), LoteMpDestino = info.Field <int?>("InventarioLoteDestinoID") != null ? almacenInventarioLoteDAL.ObtenerAlmacenInventarioLotePorId(info.Field <int>("InventarioLoteDestinoID")) : new AlmacenInventarioLoteInfo(), CuentaContable = info.Field <int?>("CuentaSAPID") != null ? cuentaSAPDAL.ObtenerPorID(info.Field <int>("CuentaSAPID")) : new CuentaSAPInfo(), JustificacionDestino = info.Field <string>("Justificacion"), CantidadTraspasarOrigen = info.Field <decimal>("CantidadSalida"), CantidadTraspasarDestino = info.Field <decimal>("CantidadEntrada"), ProductoOrigen = productoDAL.ObtenerPorID(new ProductoInfo { ProductoId = info.Field <int>("ProductoID") }), FechaTraspaso = info.Field <DateTime>("FechaMovimiento") //AlmacenMovimientoOrigen = new AlmacenMovimientoInfo { AlmacenMovimientoID = info.Field<long>("AlmacenMovimientoID")}, //AlmacenMovimientoDestino = new AlmacenMovimientoInfo { AlmacenMovimientoID = info.Field<long>("AlmacenMovimientoID")}, //Activo = info.Field<bool>("Activo").BoolAEnum(), }).ToList(); int totalRegistros = Convert.ToInt32(ds.Tables[ConstantesDAL.DtContador].Rows[0]["TotalReg"]); var resultado = new ResultadoInfo <TraspasoMpPaMedInfo> { Lista = lista, TotalRegistros = totalRegistros }; return(resultado); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Desactiva un lote /// </summary> /// <param name="almacenInventarioLote"></param> internal void DesactivarLote(AlmacenInventarioLoteInfo almacenInventarioLote) { try { var almacenInventarioLoteDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLoteDAL.DesactivarLote(almacenInventarioLote); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene almaceninventariolote por folio /// </summary> /// <param name="contrato"></param> /// <returns></returns> internal AlmacenInventarioLoteInfo ObtenerAlmacenInventarioLotePorContratoID(ContratoInfo contrato) { AlmacenInventarioLoteInfo almacenInventarioLote = null; try { var almacenDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLote = almacenDAL.ObtenerAlmacenInventarioLotePorContratoID(contrato); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(almacenInventarioLote); }
/// <summary> /// Método que obtiene un traspaso de materia prima por su folio /// </summary> /// <param name="ds"></param> /// <returns></returns> public static TraspasoMpPaMedInfo ObtenerPorFolio(DataSet ds) { try { var contratoDAL = new ContratoDAL(); var almacenDAL = new AlmacenDAL(); var almacenInventarioLoteDAL = new AlmacenInventarioLoteDAL(); var cuentaSAPDAL = new CuentaSAPDAL(); var productoDAL = new ProductoDAL(); Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; TraspasoMpPaMedInfo result = (from info in dt.AsEnumerable() select new TraspasoMpPaMedInfo { TraspasoMateriaPrimaID = info.Field <int>("TraspasoMateriaPrimaID"), ContratoOrigen = info.Field <int?>("ContratoOrigenID") != null ? contratoDAL.ObtenerPorId(new ContratoInfo { ContratoId = info.Field <int>("ContratoOrigenID") }) : new ContratoInfo(), ContratoDestino = info.Field <int?>("ContratoDestinoID") != null ? contratoDAL.ObtenerPorId(new ContratoInfo { ContratoId = info.Field <int>("ContratoDestinoID") }) : new ContratoInfo(), FolioTraspaso = info.Field <long>("FolioTraspaso"), AlmacenOrigen = almacenDAL.ObtenerPorID(info.Field <int>("AlmacenOrigenID")), AlmacenDestino = almacenDAL.ObtenerPorID(info.Field <int>("AlmacenDestinoID")), LoteMpOrigen = info.Field <int?>("InventarioLoteOrigenID") != null ? almacenInventarioLoteDAL.ObtenerAlmacenInventarioLotePorId(info.Field <int>("InventarioLoteOrigenID")) : new AlmacenInventarioLoteInfo(), LoteMpDestino = info.Field <int?>("InventarioLoteDestinoID") != null ? almacenInventarioLoteDAL.ObtenerAlmacenInventarioLotePorId(info.Field <int>("InventarioLoteDestinoID")) : new AlmacenInventarioLoteInfo(), CuentaContable = info.Field <int?>("CuentaSAPID") != null ? cuentaSAPDAL.ObtenerPorID(info.Field <int>("CuentaSAPID")) : new CuentaSAPInfo(), JustificacionDestino = info.Field <string>("Justificacion"), CantidadTraspasarOrigen = info.Field <decimal>("CantidadSalida"), CantidadTraspasarDestino = info.Field <decimal>("CantidadEntrada"), ProductoOrigen = productoDAL.ObtenerPorID(new ProductoInfo { ProductoId = info.Field <int>("ProductoID") }), FechaTraspaso = info.Field <DateTime>("FechaMovimiento") }).First(); return(result); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una lista de almaceninventariolote /// </summary> /// <param name="almacenInventario"></param> /// <returns></returns> internal List <AlmacenInventarioLoteInfo> ObtenerPorAlmacenInventarioIDLigero(AlmacenInventarioInfo almacenInventario) { List <AlmacenInventarioLoteInfo> almacenInventarioLote; try { var almacenDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLote = almacenDAL.ObtenerPorAlmacenInventarioID(almacenInventario); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(almacenInventarioLote); }
/// <summary> /// /// </summary> /// <param name="autorizacionMateriaPrimaInfo"></param> public void GuardarAutorizacionMateriaPrima(AutorizacionMateriaPrimaInfo autorizacionMateriaPrimaInfo) { try { Logger.Info(); var almacenInventarioLoteDal = new AlmacenInventarioLoteDAL(); almacenInventarioLoteDal.GuardarAutorizacionMateriaPrima(autorizacionMateriaPrimaInfo); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
internal IList <AlmacenInventarioLoteInfo> ObtenerLotesUso(AlmacenInventarioLoteInfo datosLote) { IList <AlmacenInventarioLoteInfo> listaLotes = null; try { var almacenDAL = new AlmacenInventarioLoteDAL(); listaLotes = almacenDAL.ObtenerLotesUso(datosLote); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(listaLotes); }
/// <summary> /// Obtiene una lista de almaceninventariolote donde esten activos y tengan movimientos /// </summary> /// <param name="almacenInfo"></param> /// <param name="productoInfo"></param> /// <returns></returns> internal List <AlmacenInventarioLoteInfo> ObtenerPorAlmacenProductoEnCeros(AlmacenInfo almacenInfo, ProductoInfo productoInfo) { List <AlmacenInventarioLoteInfo> listaLotes = null; try { var almacenDAL = new AlmacenInventarioLoteDAL(); listaLotes = almacenDAL.ObtenerPorAlmacenProductoEnCeros(almacenInfo, productoInfo); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(listaLotes); }
/// <summary> /// Se obtiene lotes /// </summary> /// <param name="almacenesInventario"></param> /// <returns></returns> internal IList <AlmacenInventarioLoteInfo> ObtenerLotesPorAlmacenInventarioXML(List <AlmacenInventarioInfo> almacenesInventario) { IList <AlmacenInventarioLoteInfo> almacenInventarioLote; try { Logger.Info(); var almacenDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLote = almacenDAL.ObtenerLotesPorAlmacenInventarioXML(almacenesInventario); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(almacenInventarioLote); }
/// <summary> /// Crea un registro en almacen inventario lote. /// </summary> /// <param name="almacenInventarioLoteInfo"></param> /// <returns></returns> internal int CrearConTodosParametros(AlmacenInventarioLoteInfo almacenInventarioLoteInfo) { try { Logger.Info(); var almacenInventarioDal = new AlmacenInventarioLoteDAL(); int result = almacenInventarioDal.CrearConTodosParametros(almacenInventarioLoteInfo); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una lista de Almacen Inventario Lote /// </summary> /// <param name="filtroAyudaLote"></param> /// <returns></returns> public IList <AlmacenInventarioLoteInfo> ObtenerAlmacenInventarioLotePorLote(FiltroAyudaLotes filtroAyudaLote) { IList <AlmacenInventarioLoteInfo> result; try { Logger.Info(); var almacenInventarioLoteDal = new AlmacenInventarioLoteDAL(); result = almacenInventarioLoteDal.ObtenerAlmacenInventarioLotePorLote(filtroAyudaLote); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
/// <summary> /// Obtiene una lista paginada de almaceninventariolote por producto organizacion tipo almacen y que tenga cantidad mayor a cero /// </summary> /// <param name="pagina"></param> /// <param name="almacenInventarioLote"></param> /// <returns></returns> internal ResultadoInfo <AlmacenInventarioLoteInfo> ObtenerAlmacenInventarioLoteAlmacenPaginado(PaginacionInfo pagina, AlmacenInventarioLoteInfo almacenInventarioLote) { ResultadoInfo <AlmacenInventarioLoteInfo> result; try { Logger.Info(); var almacenInventarioLoteDal = new AlmacenInventarioLoteDAL(); result = almacenInventarioLoteDal.ObtenerAlmacenInventarioLoteAlmacenPaginado(pagina, almacenInventarioLote); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
/// <summary> /// Guarda los datos para un gasto materia prima /// </summary> /// <param name="gasto"></param> /// <returns></returns> internal long Guardar(GastoMateriaPrimaInfo gasto) { long folioGasto = 0; try { Logger.Info(); IList <PolizaInfo> polizas; PolizaAbstract poliza; using (var transaction = new TransactionScope()) { var tipoOrg = gasto.Organizacion.TipoOrganizacion.TipoOrganizacionID; var gastoMateriaPrimaDal = new GastoMateriaPrimaDAL(); if (gasto.GuardaAretes) { gastoMateriaPrimaDal.GuardarAretes(gasto); } if (tipoOrg == TipoOrganizacion.Centro.GetHashCode() || tipoOrg == TipoOrganizacion.Cadis.GetHashCode() || tipoOrg == TipoOrganizacion.Descanso.GetHashCode()) { #region CENTROS gasto.TipoFolio = TipoFolio.GastoMateriaPrima; gasto.AlmacenMovimientoID = null; folioGasto = gastoMateriaPrimaDal.Guardar(gasto); #endregion CENTROS } else { #region SIAP #region MOVIMIENTOS var listaAlmacenDetalle = new List <AlmacenMovimientoDetalle>(); var almacenMovimiento = new AlmacenMovimientoInfo { AlmacenID = gasto.AlmacenID, TipoMovimientoID = gasto.TipoMovimiento.TipoMovimientoID, ProveedorId = gasto.Proveedor.ProveedorID, Observaciones = gasto.Observaciones, Status = (int)EstatusInventario.Aplicado, UsuarioCreacionID = gasto.UsuarioCreacionID }; var almacenMovimientoBl = new AlmacenMovimientoBL(); var almacenMovimientoID = almacenMovimientoBl.Crear(almacenMovimiento); gasto.AlmacenMovimientoID = almacenMovimientoID; var almacenMovimientoDetalle = new AlmacenMovimientoDetalle { AlmacenMovimientoID = almacenMovimientoID, ProductoID = gasto.Producto.ProductoId, UsuarioCreacionID = gasto.UsuarioCreacionID, Importe = gasto.Importe, Cantidad = 0, Precio = 0 }; if (gasto.UnidadMedida) { almacenMovimientoDetalle.Cantidad = gasto.Kilogramos; if (gasto.Kilogramos > 0) { almacenMovimientoDetalle.Precio = gasto.Importe / gasto.Kilogramos; } else { almacenMovimientoDetalle.Precio = 0; } } gasto.TipoFolio = TipoFolio.GastoMateriaPrima; int gastoMateriaPrimaID = gastoMateriaPrimaDal.Guardar(gasto); //Actualizamos en AlmacenInventarioLote if (gasto.AlmacenInventarioLote.AlmacenInventarioLoteId != 0) { almacenMovimientoDetalle.AlmacenInventarioLoteId = gasto.AlmacenInventarioLote.AlmacenInventarioLoteId; var almacenInventarioLote = new AlmacenInventarioLoteDAL(); var almacenInventarioLoteInfo = new AlmacenInventarioLoteInfo(); almacenInventarioLoteInfo = almacenInventarioLote.ObtenerAlmacenInventarioLotePorId( gasto.AlmacenInventarioLote.AlmacenInventarioLoteId); almacenInventarioLoteInfo.UsuarioModificacionId = gasto.UsuarioCreacionID; if (gasto.TipoMovimiento.TipoMovimientoID == (int)TipoMovimiento.EntradaPorAjuste) { almacenInventarioLoteInfo.Importe += gasto.Importe; almacenInventarioLoteInfo.Cantidad += gasto.Kilogramos; } else // Salida por Ajuste { almacenInventarioLoteInfo.Importe -= gasto.Importe; almacenInventarioLoteInfo.Cantidad -= gasto.Kilogramos; } if (almacenInventarioLoteInfo.Cantidad == 0) { almacenInventarioLoteInfo.PrecioPromedio = 0; } else { almacenInventarioLoteInfo.PrecioPromedio = almacenInventarioLoteInfo.Importe / almacenInventarioLoteInfo.Cantidad; } almacenInventarioLote.Actualizar(almacenInventarioLoteInfo); } // Actualizamos en AlmacenInventario var almacenInventario = new AlmacenInventarioDAL(); var almacenInventarioInfo = new AlmacenInventarioInfo { AlmacenID = gasto.AlmacenID, ProductoID = gasto.Producto.ProductoId }; almacenInventarioInfo = almacenInventario.ObtenerPorAlmacenIdProductoId(almacenInventarioInfo); if (gasto.TipoMovimiento.TipoMovimientoID == (int)TipoMovimiento.EntradaPorAjuste) { almacenInventarioInfo.Importe += gasto.Importe; almacenInventarioInfo.Cantidad += gasto.Kilogramos; gasto.EsEntrada = true; } else // Salida por Ajuste { almacenInventarioInfo.Importe -= gasto.Importe; almacenInventarioInfo.Cantidad -= gasto.Kilogramos; } almacenInventarioInfo.UsuarioModificacionID = gasto.UsuarioCreacionID; if (almacenInventarioInfo.Cantidad == 0) { almacenInventarioInfo.PrecioPromedio = 0; } else { almacenInventarioInfo.PrecioPromedio = almacenInventarioInfo.Importe / almacenInventarioInfo.Cantidad; } almacenInventario.Actualizar(almacenInventarioInfo); listaAlmacenDetalle.Add(almacenMovimientoDetalle); var almacenMovimientoDetalleBL = new AlmacenMovimientoDetalleBL(); almacenMovimientoDetalleBL.GuardarAlmacenMovimientoDetalle(listaAlmacenDetalle, almacenMovimientoID); #endregion MOVIMIENTOS #region POLIZA GastoMateriaPrimaInfo gastoMateriaGuardado = gastoMateriaPrimaDal.ObtenerPorID(gastoMateriaPrimaID); gasto.Fecha = gastoMateriaGuardado.Fecha; gasto.FolioGasto = gastoMateriaGuardado.FolioGasto; folioGasto = gastoMateriaGuardado.FolioGasto; poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.GastosMateriaPrima); polizas = poliza.GeneraPoliza(gasto); if (polizas != null && polizas.Any()) { polizas.ToList().ForEach(datos => { datos.OrganizacionID = gasto.Organizacion.OrganizacionID; datos.UsuarioCreacionID = gasto.UsuarioCreacionID; datos.ArchivoEnviadoServidor = 1; }); var polizaBL = new PolizaBL(); if (gasto.EsEntrada) { polizaBL.GuardarServicioPI(polizas, TipoPoliza.EntradaAjuste); } else { polizaBL.GuardarServicioPI(polizas, TipoPoliza.SalidaAjuste); } } #endregion POLIZA #endregion SIAP } transaction.Complete(); } return(folioGasto); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionGenerica) { throw; } 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(); } }
/// <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); } }