/// <summary> /// Obtiene un flujo de datos /// para la generacion de la reimpresion /// de la poliza de Salida de Traspaso /// </summary> /// <param name="produccionFormula"></param> /// <param name="polizaClave"></param> /// <returns></returns> private MemoryStream ReimpresionPolizaProduccionAlimento(ProduccionFormulaInfo produccionFormula, TipoPolizaInfo polizaClave) { var polizaBL = new PolizaBL(); IList <PolizaInfo> polizasProduccionAlimento = polizaBL.ObtenerPoliza(TipoPoliza.ProduccionAlimento, produccionFormula.Organizacion.OrganizacionID, produccionFormula.FechaProduccion, produccionFormula.FolioFormula.ToString(CultureInfo.InvariantCulture), polizaClave.ClavePoliza, 1); MemoryStream stream = null; if (polizasProduccionAlimento != null) { var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.ProduccionAlimento); var produccionFormulaBL = new ProduccionFormulaBL(); using (var almacenDAL = new AlmacenDAL()) { var almacenMovimientoBL = new AlmacenMovimientoBL(); ProduccionFormulaInfo produccion = produccionFormulaBL.ObtenerPorIDCompleto(produccionFormula.ProduccionFormulaId); if (produccion != null) { AlmacenInfo almacenPlantaAlimento = almacenDAL.ObtenerAlmacenOrganizacionTipo(produccionFormula.Organizacion.OrganizacionID, TipoAlmacenEnum.PlantaDeAlimentos); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorIDCompleto(produccion.AlmacenMovimientoSalidaID); var produccionFormulaDetalles = new List <ProduccionFormulaDetalleInfo>(); if (almacenMovimiento != null) { foreach (var detalle in produccion.ProduccionFormulaDetalle) { var movimiento = almacenMovimiento.ListaAlmacenMovimientoDetalle.FirstOrDefault( alm => alm.Producto.ProductoId == detalle.Producto.ProductoId && alm.AlmacenInventarioLoteId == detalle.AlmacenInventarioLoteID); if (movimiento == null) { continue; } detalle.CantidadProducto = movimiento.Cantidad; detalle.PrecioPromedio = movimiento.Precio; produccionFormulaDetalles.Add(detalle); } } if (almacenPlantaAlimento == null) { return(null); } produccion.ProduccionFormulaDetalle = produccionFormulaDetalles; produccion.Almacen = almacenPlantaAlimento; polizasProduccionAlimento = poliza.GeneraPoliza(produccion); stream = poliza.ImprimePoliza(produccion, polizasProduccionAlimento); } } } return(stream); }
/// <summary> /// Obtiene un flujo de datos /// para la generacion de la reimpresion /// de la poliza de Salida de Traspaso /// </summary> /// <param name="folioSolicitud"></param> /// <param name="polizaClave"></param> /// <returns></returns> private MemoryStream ReimpresionPolizaSalidaConsumo(FolioSolicitudInfo folioSolicitud, TipoPolizaInfo polizaClave) { var polizaBL = new PolizaBL(); IList <PolizaInfo> polizasSalidaConsumo = polizaBL.ObtenerPoliza(TipoPoliza.SalidaConsumo, folioSolicitud.OrganizacionID, folioSolicitud.FechaEntrega.HasValue ? folioSolicitud.FechaEntrega.Value : DateTime.MinValue, folioSolicitud.FolioSolicitud.ToString(CultureInfo.InvariantCulture), polizaClave.ClavePoliza, 1); MemoryStream stream = null; if (polizasSalidaConsumo != null) { var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaConsumo); var solicitudProductoDAL = new SolicitudProductoDAL(); using (var almacenDAL = new AlmacenDAL()) { var almacenMovimientoBL = new AlmacenMovimientoBL(); SolicitudProductoInfo solicitud = solicitudProductoDAL.ObtenerPorID(folioSolicitud.FolioID); if (solicitud != null) { AlmacenInfo almacenGeneral = almacenDAL.ObtenerAlmacenGeneralOrganizacion(folioSolicitud.OrganizacionID); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorIDCompleto(solicitud.AlmacenMovimientoID.HasValue ? solicitud.AlmacenMovimientoID.Value : 0); if (almacenMovimiento != null) { foreach (var detalle in solicitud.Detalle) { var movimiento = almacenMovimiento.ListaAlmacenMovimientoDetalle.FirstOrDefault( alm => alm.Producto.ProductoId == detalle.Producto.ProductoId); if (movimiento == null) { continue; } detalle.PrecioPromedio = movimiento.Precio; } } if (almacenGeneral == null) { return(null); } solicitud.AlmacenGeneralID = almacenGeneral.AlmacenID; polizasSalidaConsumo = poliza.GeneraPoliza(solicitud); stream = poliza.ImprimePoliza(solicitud, polizasSalidaConsumo); } } } return(stream); }
/// <summary> /// Metodo para Cancelar un traspaso de MP /// </summary> /// <param name="info"></param> public Dictionary <long, MemoryStream> CancelarTraspaso(TraspasoMpPaMedInfo info) { try { var resultado = new Dictionary <long, MemoryStream>(); Logger.Info(); var traspasoMateriaPrimaDAL = new TraspasoMateriaPrimaDAL(); var almacenMovimientoBL = new AlmacenMovimientoBL(); var cancelacionMovimientoBL = new CancelacionMovimientoBL(); TraspasoMateriaPrimaInfo traspasoCancelar = traspasoMateriaPrimaDAL.ObtenerPorID(info.TraspasoMateriaPrimaID); if (traspasoCancelar == null) { return(null); } AlmacenMovimientoInfo movimientoOrigen = almacenMovimientoBL.ObtenerPorIDCompleto( traspasoCancelar.AlmacenMovimientoOrigen.AlmacenMovimientoID); AlmacenMovimientoInfo movimientoDestino = almacenMovimientoBL.ObtenerPorIDCompleto( traspasoCancelar.AlmacenMovimientoDestino.AlmacenMovimientoID); AlmacenInfo almacenOrigenAux = info.AlmacenOrigen; AlmacenInfo almacenDestinoAux = info.AlmacenDestino; AlmacenMovimientoDetalle detalleOrigen = movimientoOrigen.ListaAlmacenMovimientoDetalle.FirstOrDefault(); AlmacenMovimientoDetalle detalleDestino = movimientoDestino.ListaAlmacenMovimientoDetalle.FirstOrDefault(); if (detalleOrigen == null || detalleDestino == null) { return(null); } info.CantidadTraspasarOrigen = detalleOrigen.Cantidad; info.CantidadTraspasarDestino = detalleDestino.Cantidad; info.PrecioTraspasoOrigen = detalleOrigen.Precio; info.PrecioTraspasoDestino = detalleDestino.Precio; info.ImporteTraspaso = detalleDestino.Importe; info.AlmacenDestino = almacenOrigenAux; info.AlmacenOrigen = almacenDestinoAux; using (var transaction = new TransactionScope()) { long almacenMovimientoEntradaID = 0; long almacenMovimientoSalidaID = 0; if (movimientoDestino != null) { almacenMovimientoEntradaID = GenerarMovimientoEntradaCancelacion(movimientoDestino, info.Usuario); almacenMovimientoSalidaID = GenerarMovimientoSalidaCancelacion(movimientoOrigen, info.Usuario); } var cancelacionMovimientoEntrada = new CancelacionMovimientoInfo { TipoCancelacion = new TipoCancelacionInfo { TipoCancelacionId = TipoCancelacionEnum.TraspasoMpPaMed.GetHashCode() }, Pedido = new PedidoInfo(), AlmacenMovimientoOrigen = new AlmacenMovimientoInfo { AlmacenMovimientoID = almacenMovimientoEntradaID }, AlmacenMovimientoCancelado = new AlmacenMovimientoInfo { AlmacenMovimientoID = movimientoOrigen.AlmacenMovimientoID }, Activo = EstatusEnum.Activo, Justificacion = traspasoCancelar.Justificacion, UsuarioCreacionID = info.Usuario.UsuarioID }; CancelacionMovimientoInfo movimientoCancelado = cancelacionMovimientoBL.Guardar(cancelacionMovimientoEntrada); if (movimientoDestino != null) { var cancelacionMovimientoSalida = new CancelacionMovimientoInfo { TipoCancelacion = new TipoCancelacionInfo { TipoCancelacionId = TipoCancelacionEnum.TraspasoMpPaMed.GetHashCode() }, Pedido = new PedidoInfo(), AlmacenMovimientoOrigen = new AlmacenMovimientoInfo { AlmacenMovimientoID = almacenMovimientoSalidaID }, AlmacenMovimientoCancelado = new AlmacenMovimientoInfo { AlmacenMovimientoID = movimientoDestino.AlmacenMovimientoID }, Activo = EstatusEnum.Activo, Justificacion = traspasoCancelar.Justificacion, UsuarioCreacionID = info.Usuario.UsuarioID }; cancelacionMovimientoBL.Guardar(cancelacionMovimientoSalida); } traspasoCancelar.Activo = EstatusEnum.Inactivo; traspasoCancelar.UsuarioModificacionID = info.Usuario.UsuarioID; traspasoMateriaPrimaDAL.Actualizar(traspasoCancelar); movimientoOrigen.UsuarioModificacionID = info.Usuario.UsuarioID; if (movimientoDestino != null) { movimientoDestino.UsuarioModificacionID = info.Usuario.UsuarioID; } movimientoOrigen.Status = Estatus.CanceladoInv.GetHashCode(); if (movimientoDestino != null) { movimientoDestino.Status = Estatus.CanceladoInv.GetHashCode(); } almacenMovimientoBL.ActualizarEstatus(movimientoOrigen); almacenMovimientoBL.ActualizarEstatus(movimientoDestino); AlmacenMovimientoInfo movimientoCancelacion = almacenMovimientoBL.ObtenerPorIDCompleto(almacenMovimientoEntradaID); if (movimientoCancelacion == null) { return(null); } info.FolioTraspaso = traspasoCancelar.FolioTraspaso; info.FechaTraspaso = movimientoCancelado.FechaCancelacion; info.AlmacenMovimientoID = movimientoDestino.AlmacenMovimientoID; MemoryStream pdfPoliza = null; if (info.AlmacenOrigen.AlmacenID != info.AlmacenDestino.AlmacenID) { info.EsCancelacion = true; var productoBL = new ProductoBL(); info.ProductoOrigen = productoBL.ObtenerPorID(info.ProductoOrigen); info.ProductoDestino = info.ProductoOrigen; PolizaAbstract poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.EntradaTraspaso); IList <PolizaInfo> listaPolizas = poliza.GeneraPoliza(info); pdfPoliza = poliza.ImprimePoliza(info, listaPolizas); if (listaPolizas != null && listaPolizas.Any()) { listaPolizas.ToList().ForEach(datos => { datos.OrganizacionID = info.Usuario.Organizacion.OrganizacionID; datos.UsuarioCreacionID = info.Usuario.UsuarioID; datos.Activo = EstatusEnum.Activo; datos.ArchivoEnviadoServidor = 1; }); var polizaDAL = new PolizaDAL(); polizaDAL.CrearServicioPI(listaPolizas, TipoPoliza.EntradaTraspaso); } } transaction.Complete(); resultado.Add(info.FolioTraspaso, pdfPoliza); return(resultado); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }