/// <summary> /// Obtiene el listado de lotes que tiene programados para el surtido /// </summary> /// <param name="pedidoDetalle"></param> /// <returns></returns> internal List <ProgramacionMateriaPrimaInfo> ObtenerProgramacionMateriaPrima(PedidoDetalleInfo pedidoDetalle) { try { Logger.Info(); var programacionMateriaPrimaDal = new ProgramacionMateriaPrimaDAL(); var listaProgramacion = programacionMateriaPrimaDal.ObtenerProgramacionMateriaPrima(pedidoDetalle); if (listaProgramacion != null) { var almacenInventarioLoteBl = new AlmacenInventarioLoteBL(); var almacenBl = new AlmacenBL(); var pesaje = new PesajeMateriaPrimaBL(); foreach (ProgramacionMateriaPrimaInfo programacionMateria in listaProgramacion) { programacionMateria.InventarioLoteOrigen = almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId( programacionMateria.InventarioLoteOrigen.AlmacenInventarioLoteId); programacionMateria.Almacen = almacenBl.ObtenerPorID(programacionMateria.Almacen.AlmacenID); programacionMateria.PesajeMateriaPrima = pesaje.ObtenerPesajesPorProgramacionMateriaPrimaId( programacionMateria.ProgramacionMateriaPrimaId); } } return(listaProgramacion); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Establece los datos y el detalle del pedido /// </summary> /// <param name="pedido"></param> private void EstableceDetallePedido(PedidoInfo pedido) { var pedidoDetalleDl = new PedidoDetalleBL(); var organizacionBl = new OrganizacionBL(); var almacenBl = new AlmacenBL(); var usuarioBl = new UsuarioBL(); var almacen = pedido.Almacen; var organizacion = pedido.Organizacion; var usuarioCreacion = pedido.UsuarioCreacion; var usuarioModificacion = pedido.UsuarioModificacion; if (almacen != null && almacen.AlmacenID > 0) { pedido.Almacen = almacenBl.ObtenerPorID(almacen.AlmacenID); } if (organizacion != null && organizacion.OrganizacionID > 0) { pedido.Organizacion = organizacionBl.ObtenerPorID(organizacion.OrganizacionID); } if (usuarioCreacion != null && usuarioCreacion.UsuarioID > 0) { pedido.UsuarioCreacion = usuarioBl.ObtenerPorID(usuarioCreacion.UsuarioID); } if (usuarioModificacion != null && usuarioModificacion.UsuarioID > 0) { pedido.UsuarioModificacion = usuarioBl.ObtenerPorID(usuarioModificacion.UsuarioID); } pedido.DetallePedido = pedidoDetalleDl.ObtenerDetallePedido(pedido); }
/// <summary> /// Obtiene el almacen en base al id /// </summary> /// <param name="almacenInventarioId"></param> /// <returns></returns> internal AlmacenInventarioInfo ObtenerAlmacenInventarioPorId(int almacenInventarioId) { AlmacenInventarioInfo almacen = null; try { var almacenDAL = new AlmacenInventarioDAL(); var almacenBl = new AlmacenBL(); almacen = almacenDAL.ObtenerAlmacenInventarioPorId(almacenInventarioId); if (almacen != null) { almacen.Almacen = almacenBl.ObtenerPorID(almacen.AlmacenID); } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(almacen); }
/// <summary> /// Obtiene una salida de producto por id /// </summary> /// <param name="salidaProducto"></param> /// <returns></returns> internal SalidaProductoInfo ObtenerPorSalidaProductoId(SalidaProductoInfo salidaProducto) { try { var salidaProductoDal = new SalidaProductoDAL(); salidaProducto = salidaProductoDal.ObtenerPorSalidaProductoId(salidaProducto); if (salidaProducto != null) { if (salidaProducto.Organizacion.OrganizacionID > 0) { var organizacionBl = new OrganizacionBL(); salidaProducto.Organizacion = organizacionBl.ObtenerPorID(salidaProducto.Organizacion.OrganizacionID); } if (salidaProducto.OrganizacionDestino.OrganizacionID > 0) { var organizacionBl = new OrganizacionBL(); salidaProducto.Organizacion = organizacionBl.ObtenerPorID(salidaProducto.OrganizacionDestino.OrganizacionID); } if (salidaProducto.Almacen.AlmacenID > 0) { var almacenBl = new AlmacenBL(); salidaProducto.Almacen = almacenBl.ObtenerPorID(salidaProducto.Almacen.AlmacenID); } if (salidaProducto.AlmacenInventarioLote.AlmacenInventarioLoteId > 0) { var almacenInventarioLoteBl = new AlmacenInventarioLoteBL(); salidaProducto.AlmacenInventarioLote = almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId( salidaProducto.AlmacenInventarioLote.AlmacenInventarioLoteId); } if (salidaProducto.Cliente.ClienteID > 0) { var clienteBl = new ClienteBL(); salidaProducto.Cliente = clienteBl.ObtenerPorID(salidaProducto.Cliente.ClienteID); } if (salidaProducto.CuentaSAP.CuentaSAPID > 0) { var cuentaSapBl = new CuentaSAPBL(); salidaProducto.CuentaSAP = cuentaSapBl.ObtenerPorID(salidaProducto.CuentaSAP.CuentaSAPID); } if (salidaProducto.TipoMovimiento.TipoMovimientoID > 0) { var tipoMovimientoBl = new TipoMovimientoBL(); salidaProducto.TipoMovimiento = tipoMovimientoBl.ObtenerPorID(salidaProducto.TipoMovimiento.TipoMovimientoID); } } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(salidaProducto); }
/// <summary> /// Termina la salida del producto /// </summary> /// <param name="salida"></param> /// <returns></returns> internal MemoryStream TerminarSalidaProducto(SalidaProductoInfo salida) { try { Logger.Info(); bool generaFactura = salida.GeneraFactura; MemoryStream resultado = null; var almacenBl = new AlmacenBL(); var almacenMovimientoDetalleDAL = new AlmacenMovimientoDetalleDAL(); var almacenMovimiento = new AlmacenMovimientoInfo(); var almacenInventarioLoteBl = new AlmacenInventarioLoteBL(); var almacenInventarioBl = new AlmacenInventarioBL(); var salidaProductoDal = new SalidaProductoDAL(); PolizaAbstract poliza = null; IList <PolizaInfo> polizas = null; using (var transaction = new TransactionScope()) { almacenMovimiento.AlmacenID = salida.Almacen.AlmacenID; almacenMovimiento.TipoMovimientoID = salida.TipoMovimiento.TipoMovimientoID; almacenMovimiento.UsuarioCreacionID = salida.UsuarioModificacionId; almacenMovimiento.Status = (int)EstatusInventario.Aplicado; AlmacenMovimientoInfo almacenMovimientoGenerado = almacenBl.GuardarAlmacenMovimiento(almacenMovimiento); if (almacenMovimientoGenerado != null) { AlmacenInventarioLoteInfo almacenInventarioLote = almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId( salida.AlmacenInventarioLote.AlmacenInventarioLoteId); var listaAlmacenInventarioDetalle = new List <AlmacenMovimientoDetalle>(); var movimientoDetalle = new AlmacenMovimientoDetalle { AlmacenMovimientoID = almacenMovimientoGenerado.AlmacenMovimientoID, AlmacenInventarioLoteId = salida.AlmacenInventarioLote.AlmacenInventarioLoteId, Precio = almacenInventarioLote.PrecioPromedio, ProductoID = salida.Producto.ProductoId, Cantidad = salida.PesoBruto - salida.PesoTara, Piezas = salida.Piezas, Importe = (salida.PesoBruto - salida.PesoTara) * almacenInventarioLote.PrecioPromedio, UsuarioCreacionID = salida.UsuarioModificacionId }; listaAlmacenInventarioDetalle.Add(movimientoDetalle); almacenMovimientoDetalleDAL.GuardarAlmacenMovimientoDetalle(listaAlmacenInventarioDetalle, almacenMovimientoGenerado. AlmacenMovimientoID); if (almacenInventarioLote != null) { almacenInventarioLote.Cantidad = almacenInventarioLote.Cantidad - (salida.PesoBruto - salida.PesoTara); almacenInventarioLote.Importe = almacenInventarioLote.PrecioPromedio * almacenInventarioLote.Cantidad; almacenInventarioLote.UsuarioModificacionId = salida.UsuarioModificacionId; almacenInventarioLoteBl.Actualizar(almacenInventarioLote); AlmacenInfo almacen = almacenBl.ObtenerPorID(almacenMovimiento.AlmacenID); List <AlmacenInventarioInfo> listaAlmacenlmacenInventario = almacenInventarioBl.ObtienePorAlmacenId(almacen); if (listaAlmacenlmacenInventario != null) { AlmacenInventarioInfo inventarioProducto = listaAlmacenlmacenInventario.FirstOrDefault( registro => registro.ProductoID == salida.Producto.ProductoId); if (inventarioProducto != null) { inventarioProducto.Cantidad = inventarioProducto.Cantidad - (salida.PesoBruto - salida.PesoTara); inventarioProducto.Importe = (inventarioProducto.PrecioPromedio * inventarioProducto.Cantidad); //Actualiza inventario inventarioProducto.UsuarioModificacionID = salida.UsuarioModificacionId; inventarioProducto.ProductoID = salida.Producto.ProductoId; inventarioProducto.AlmacenID = almacen.AlmacenID; almacenInventarioBl.ActualizarPorProductoId(inventarioProducto); salida.GeneraFactura = generaFactura; salidaProductoDal.TerminarSalidaProducto(salida, almacenMovimientoGenerado); #region POLIZA poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza( TipoPoliza.SalidaVentaProducto); salida.Importe = (salida.PesoBruto - salida.PesoTara) * salida.Precio; salida = ObtenerFolioPorReimpresion(salida); polizas = poliza.GeneraPoliza(salida); if (polizas != null) { var polizaBL = new PolizaBL(); polizas.ToList().ForEach(datos => { datos.OrganizacionID = salida.Organizacion.OrganizacionID; datos.UsuarioCreacionID = salida.UsuarioCreacionId; datos.ArchivoEnviadoServidor = 1; }); polizaBL.GuardarServicioPI(polizas, TipoPoliza.SalidaVentaProducto); if (salida.Almacen == null) { salida.Almacen = new AlmacenInfo(); } salida.Almacen.Organizacion = new OrganizacionInfo { OrganizacionID = salida.Organizacion.OrganizacionID }; resultado = poliza.ImprimePoliza(salida, polizas); } #endregion POLIZA if (generaFactura) { #region FACTURA if (salida.TipoMovimiento.TipoMovimientoID == TipoMovimiento.ProductoSalidaVenta.GetHashCode()) { //Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaVentaDeMateriaPrima(salida); } #endregion } transaction.Complete(); } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } return(resultado); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionDesconocida) { throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
internal bool GuardarInventario(RecepcionProductoInfo recepcionProducto) { try { AlmacenBL almacenBl = new AlmacenBL(); AlmacenInventarioBL almacenInventarioBl = new AlmacenInventarioBL(); foreach (var recepcionProductodetalle in recepcionProducto.ListaRecepcionProductoDetalle) { AlmacenInfo almacen = almacenBl.ObtenerPorID(recepcionProducto.Almacen.AlmacenID); List <AlmacenInventarioInfo> listaAlmacenlmacenInventario = almacenInventarioBl.ObtienePorAlmacenId(almacen); if (listaAlmacenlmacenInventario != null) { List <AlmacenInventarioInfo> almacenInventarioListaResultado = listaAlmacenlmacenInventario.Where( registro => registro.ProductoID == recepcionProductodetalle.Producto.ProductoId) .ToList(); if (almacenInventarioListaResultado.Count > 0) { var almacenInventario = almacenInventarioListaResultado[0]; almacenInventario.Cantidad = almacenInventario.Cantidad + recepcionProductodetalle.Cantidad; almacenInventario.Importe = almacenInventario.Importe + recepcionProductodetalle.Importe; almacenInventario.PrecioPromedio = almacenInventario.Importe / almacenInventario.Cantidad; almacenInventario.UsuarioModificacionID = recepcionProducto.UsuarioCreacion.UsuarioID; almacenInventarioBl.Actualizar(almacenInventario); } else { var almacenInventarioNuevo = new AlmacenInventarioInfo(); almacenInventarioNuevo.Almacen = recepcionProducto.Almacen; almacenInventarioNuevo.AlmacenID = recepcionProducto.Almacen.AlmacenID; almacenInventarioNuevo.Producto = recepcionProductodetalle.Producto; almacenInventarioNuevo.ProductoID = recepcionProductodetalle.Producto.ProductoId; almacenInventarioNuevo.Cantidad = recepcionProductodetalle.Cantidad; almacenInventarioNuevo.Importe = recepcionProductodetalle.Importe; almacenInventarioNuevo.PrecioPromedio = almacenInventarioNuevo.Importe / almacenInventarioNuevo.Cantidad; almacenInventarioNuevo.UsuarioCreacionID = recepcionProducto.UsuarioCreacion.UsuarioID; almacenInventarioBl.Crear(almacenInventarioNuevo); } } else { var almacenInventarioNuevo = new AlmacenInventarioInfo(); almacenInventarioNuevo.Almacen = recepcionProducto.Almacen; almacenInventarioNuevo.AlmacenID = recepcionProducto.Almacen.AlmacenID; almacenInventarioNuevo.Producto = recepcionProductodetalle.Producto; almacenInventarioNuevo.ProductoID = recepcionProductodetalle.Producto.ProductoId; almacenInventarioNuevo.Cantidad = recepcionProductodetalle.Cantidad; almacenInventarioNuevo.Importe = recepcionProductodetalle.Importe; almacenInventarioNuevo.PrecioPromedio = almacenInventarioNuevo.Importe / almacenInventarioNuevo.Cantidad; almacenInventarioNuevo.UsuarioCreacionID = recepcionProducto.UsuarioCreacion.UsuarioID; almacenInventarioBl.Crear(almacenInventarioNuevo); } } return(true); } catch (Exception ex) { Logger.Error(ex); } return(false); }