/// <summary> /// Obtiene el almacen en base al id /// </summary> /// <param name="almacenInventarioLoteId"></param> /// <returns></returns> internal AlmacenInventarioLoteInfo ObtenerAlmacenInventarioLotePorId(int almacenInventarioLoteId) { AlmacenInventarioLoteInfo almacenInventarioLote = null; try { var almacenDAL = new AlmacenInventarioLoteDAL(); almacenInventarioLote = almacenDAL.ObtenerAlmacenInventarioLotePorId(almacenInventarioLoteId); if (almacenInventarioLote != null) { 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> /// 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> /// 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> /// 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); } }