コード例 #1
0
        /// <summary>
        /// Obtiene un registro de vigilancia
        /// </summary>
        /// <param name="registroVigilanciaInfo"></param>
        /// <returns>RegistroVigilanciaInfo</returns>
        internal RegistroVigilanciaInfo ObtenerRegistroVigilanciaPorId(RegistroVigilanciaInfo registroVigilanciaInfo)
        {
            RegistroVigilanciaInfo registroVigilancia;

            try
            {
                Logger.Info();
                var registroVigilanciaDAL = new RegistroVigilanciaDAL();
                registroVigilancia = registroVigilanciaDAL.ObtenerPorId(registroVigilanciaInfo);

                if (registroVigilancia != null)
                {
                    var camionBl = new CamionBL();
                    registroVigilancia.Camion =
                        camionBl.ObtenerPorID(registroVigilancia.Camion.CamionID);

                    var productoBL = new ProductoBL();
                    registroVigilancia.Producto = productoBL.ObtenerPorID(registroVigilancia.Producto);

                    var proveedorBL = new ProveedorBL();
                    registroVigilancia.ProveedorMateriasPrimas =
                        proveedorBL.ObtenerPorID(registroVigilancia.ProveedorMateriasPrimas.ProveedorID);

                    var proveedorChoferBl = new ProveedorChoferBL();
                    registroVigilancia.ProveedorChofer =
                        proveedorChoferBl.ObtenerProveedorChoferPorId(registroVigilancia.ProveedorChofer.ProveedorChoferID);

                    var contratoBl = new ContratoBL();
                    registroVigilancia.Contrato.Organizacion = new OrganizacionInfo()
                    {
                        OrganizacionID = registroVigilancia.Organizacion.OrganizacionID
                    };
                    registroVigilancia.Contrato = contratoBl.ObtenerPorId(registroVigilancia.Contrato);
                }
            }catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(registroVigilancia);
        }
コード例 #2
0
        /// <summary>
        /// Obtiene los pedidos Programados y parciales
        /// </summary>
        /// <param name="pedido"></param>
        /// <returns></returns>
        internal List <PedidoDetalleInfo> ObtenerDetallePedido(PedidoInfo pedido)
        {
            try
            {
                Logger.Info();
                var pedidoDal     = new PedidoDetalleDAL();
                var pedidoDetalle = pedidoDal.ObtenerDetallePedido(pedido);

                if (pedidoDetalle != null)
                {
                    var almacenInventarioLoteBl    = new AlmacenInventarioLoteBL();
                    var programacionMateriaPrimaBl = new ProgramacionMateriaPrimaBL();
                    var productoBl = new ProductoBL();

                    foreach (PedidoDetalleInfo pedidoDetalleInfo in pedidoDetalle)
                    {
                        pedidoDetalleInfo.InventarioLoteDestino =
                            almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId(
                                pedidoDetalleInfo.InventarioLoteDestino.AlmacenInventarioLoteId);

                        pedidoDetalleInfo.ProgramacionMateriaPrima =
                            programacionMateriaPrimaBl.ObtenerProgramacionMateriaPrima(pedidoDetalleInfo);

                        pedidoDetalleInfo.Producto = productoBl.ObtenerPorID(pedidoDetalleInfo.Producto);
                    }
                }
                return(pedidoDetalle);
            }
            catch (ExcepcionGenerica exg)
            {
                Logger.Error(exg);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), exg);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #3
0
        /// <summary>
        /// Obtiene un ingrediente con su detalle
        /// Activo - Solo activos
        /// Inactivo - Solo inactivos
        /// Todos - Ambos
        /// </summary>
        /// <returns>IngredienteInfo</returns>
        internal IngredienteInfo ObtenerPorId(IngredienteInfo ingrediente, EstatusEnum estatus)
        {
            try
            {
                var ingredienteDal = new IngredienteDAL();
                ingrediente = ingredienteDal.ObtenerPorId(ingrediente, estatus);

                if (ingrediente != null)
                {
                    if (ingrediente.Organizacion.OrganizacionID > 0)
                    {
                        var organizacionBl = new OrganizacionBL();
                        ingrediente.Organizacion = organizacionBl.ObtenerPorID(ingrediente.Organizacion.OrganizacionID);
                    }
                    if (ingrediente.Formula.FormulaId > 0)
                    {
                        var formulaBl = new FormulaBL();
                        ingrediente.Formula = formulaBl.ObtenerPorID(ingrediente.Formula.FormulaId);
                    }

                    if (ingrediente.Producto.ProductoId > 0)
                    {
                        var productoBl = new ProductoBL();
                        ingrediente.Producto = productoBl.ObtenerPorID(ingrediente.Producto);
                    }
                }
            }
            catch (ExcepcionDesconocida)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(ingrediente);
        }
コード例 #4
0
        /// <summary>
        /// Asigna los costos de los subproductos al costo
        /// ya generado
        /// </summary>
        /// <param name="lista"></param>
        /// <param name="productoId"></param>
        /// <param name="organizacionID"> </param>
        private void AsignarCostosSubProductos(List <ReporteInventarioMateriaPrimaInfo> lista, int productoId, int organizacionID)
        {
            var productoBL = new ProductoBL();
            var producto   = new ProductoInfo
            {
                ProductoId = productoId
            };

            producto = productoBL.ObtenerPorID(producto);
            if (producto != null)
            {
                switch ((FamiliasEnum)producto.Familia.FamiliaID)
                {
                case FamiliasEnum.Premezclas:
                    var organizacion = new OrganizacionInfo
                    {
                        OrganizacionID = organizacionID,
                        Activo         = EstatusEnum.Activo
                    };
                    var almacenBL    = new AlmacenBL();
                    var tiposAlmacen = new List <TipoAlmacenEnum> {
                        TipoAlmacenEnum.MateriasPrimas
                    };
                    List <AlmacenInfo> almacenes = almacenBL.ObtenerAlmacenPorTiposAlmacen(tiposAlmacen,
                                                                                           organizacion);
                    var almacenMovimientoBL = new AlmacenMovimientoBL();
                    IEnumerable <AlmacenMovimientoSubProductosModel> productosPremezcla =
                        lista.Select(x => new AlmacenMovimientoSubProductosModel
                    {
                        FechaMovimiento =
                            x.FechaMovimiento,
                        ProductoID = productoId
                    });
                    productosPremezcla = almacenMovimientoBL.ObtenerMovimientosSubProductos(productosPremezcla);
                    if (productosPremezcla != null)
                    {
                        var premezclaDetalleBL          = new PremezclaBL();
                        List <PremezclaInfo> premezclas =
                            premezclaDetalleBL.ObtenerPorOrganizacionDetalle(organizacion);
                        PremezclaInfo premezcla;

                        List <ReporteInventarioMateriaPrimaInfo> entradasMateriaPrima =
                            lista.Where(entrada => entrada.CostoId > 0).ToList();
                        if (entradasMateriaPrima != null)
                        {
                            ReporteInventarioMateriaPrimaInfo entradaMateriaPrima;
                            for (var index = 0; index < entradasMateriaPrima.Count; index++)
                            {
                                premezcla =
                                    premezclas.FirstOrDefault(
                                        id => id.Producto.ProductoId == productoId);
                                if (premezcla != null)
                                {
                                    entradaMateriaPrima = entradasMateriaPrima[index];
                                    int almacenID =
                                        productosPremezcla.Where(
                                            almMov =>
                                            almMov.AlmacenMovimientoID == entradaMateriaPrima.AlmacenMovimientoID).
                                        Select(id => id.AlmacenID).FirstOrDefault();
                                    if (almacenes.Any(id => id.AlmacenID == almacenID))
                                    {
                                        AlmacenMovimientoSubProductosModel almacenMovimientoSubProductosModel =
                                            productosPremezcla.FirstOrDefault(
                                                prod => prod.ProductoID == premezcla.Producto.ProductoId &&
                                                prod.FechaMovimiento.ToShortDateString().Equals(
                                                    entradaMateriaPrima.FechaMovimiento.ToShortDateString()));
                                        if (almacenMovimientoSubProductosModel != null)
                                        {
                                            IEnumerable <AlmacenMovimientoSubProductosModel> subProductos = productosPremezcla
                                                                                                            .Join(premezcla.ListaPremezclaDetalleInfos,
                                                                                                                  pp => pp.ProductoID, pd => pd.Producto.ProductoId,
                                                                                                                  (pp, pd) => pp).Where(
                                                fechaInicio =>
                                                fechaInicio.AlmacenMovimientoID ==
                                                (almacenMovimientoSubProductosModel.AlmacenMovimientoID +
                                                 1) &&
                                                fechaInicio.FechaMovimiento.ToShortDateString().Equals(
                                                    entradaMateriaPrima.FechaMovimiento.ToShortDateString()));
                                            if (subProductos != null && subProductos.Any())
                                            {
                                                entradaMateriaPrima.ImporteSubProductos =
                                                    subProductos.Sum(imp => imp.Importe);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    break;
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// Metrodo para obtener un listado de contratos por estado
        /// </summary>
        internal List <ContratoInfo> ObtenerPorEstado(EstatusEnum estatus)
        {
            List <ContratoInfo> result;

            try
            {
                Logger.Info();
                var contratoDAL = new ContratoDAL();
                result = contratoDAL.ObtenerPorEstado(estatus);
                if (result != null)
                {
                    foreach (var contratoInfo in result)
                    {
                        if (contratoInfo.Organizacion.OrganizacionID > 0)
                        {
                            var organizacionBl = new OrganizacionBL();
                            contratoInfo.Organizacion =
                                organizacionBl.ObtenerPorID(contratoInfo.Organizacion.OrganizacionID);
                        }

                        if (contratoInfo.Producto.ProductoId > 0)
                        {
                            var productoBl = new ProductoBL();
                            contratoInfo.Producto = productoBl.ObtenerPorID(contratoInfo.Producto);
                        }

                        if (contratoInfo.Proveedor.ProveedorID > 0)
                        {
                            var proveedorBl = new ProveedorBL();
                            contratoInfo.Proveedor =
                                proveedorBl.ObtenerPorID(contratoInfo.Proveedor.ProveedorID);
                        }

                        if (contratoInfo.TipoContrato.TipoContratoId > 0)
                        {
                            var tipoContratoBl = new TipoContratoBL();
                            contratoInfo.TipoContrato =
                                tipoContratoBl.ObtenerPorId(contratoInfo.TipoContrato.TipoContratoId);
                        }

                        if (contratoInfo.TipoFlete.TipoFleteId > 0)
                        {
                            var tipoFleteBl = new TipoFleteBL();
                            contratoInfo.TipoFlete =
                                tipoFleteBl.ObtenerPorId(contratoInfo.TipoFlete.TipoFleteId);
                        }

                        if (contratoInfo.ContratoId <= 0)
                        {
                            continue;
                        }
                        var contratoDetalleBl = new ContratoDetalleBL();
                        contratoInfo.ListaContratoDetalleInfo = contratoDetalleBl.ObtenerPorContratoId(contratoInfo);
                    }
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
コード例 #6
0
        /// <summary>
        /// Obtiene un contrato por id
        /// </summary>
        /// <param name="contratoInfo"></param>
        /// <returns>ContratoInfo</returns>
        internal ContratoInfo ObtenerPorId(ContratoInfo contratoInfo)
        {
            ContratoInfo contrato;

            try
            {
                Logger.Info();
                var contratoDAL = new ContratoDAL();
                contrato = contratoDAL.ObtenerPorId(contratoInfo);

                if (contrato != null)
                {
                    if (contrato.Organizacion.OrganizacionID > 0)
                    {
                        var organizacionBl = new OrganizacionBL();
                        contrato.Organizacion = organizacionBl.ObtenerPorID(contrato.Organizacion.OrganizacionID);
                    }

                    if (contrato.Producto.ProductoId > 0)
                    {
                        var productoBl = new ProductoBL();
                        contrato.Producto = productoBl.ObtenerPorID(contrato.Producto);
                    }

                    if (contrato.Proveedor.ProveedorID > 0)
                    {
                        var proveedorBl = new ProveedorBL();
                        contrato.Proveedor =
                            proveedorBl.ObtenerPorID(contrato.Proveedor.ProveedorID);
                    }

                    if (contrato.TipoContrato.TipoContratoId > 0)
                    {
                        var tipoContratoBl = new TipoContratoBL();
                        contrato.TipoContrato =
                            tipoContratoBl.ObtenerPorId(contrato.TipoContrato.TipoContratoId);
                        contrato.tipocontratodescripcion = contrato.TipoContrato.Descripcion.ToString();
                    }

                    if (contrato.TipoFlete != null && contrato.TipoFlete.TipoFleteId > 0)
                    {
                        var tipoFleteBl = new TipoFleteBL();
                        contrato.TipoFlete =
                            tipoFleteBl.ObtenerPorId(contrato.TipoFlete.TipoFleteId);
                    }

                    if (contrato.TipoCambio != null && contrato.TipoCambio.TipoCambioId > 0)
                    {
                        var tipoCambioBl = new TipoCambioBL();
                        contrato.TipoCambio =
                            tipoCambioBl.ObtenerPorId(contrato.TipoCambio.TipoCambioId);
                    }

                    if (contrato.ContratoId > 0)
                    {
                        var contratoDetalleBl = new ContratoDetalleBL();
                        contrato.ListaContratoDetalleInfo = contratoDetalleBl.ObtenerPorContratoId(contrato);
                    }

                    //Obtener precio y cantidad por tonelada
                    contrato.CantidadToneladas = (int)(contrato.Cantidad / 1000);
                    if (contrato.TipoCambio != null)
                    {
                        if (contrato.TipoCambio.Descripcion == Properties.ResourceServices.ContratoBL_DescripcionMonedaDolarMayuscula)
                        {
                            contrato.PrecioToneladas = (contrato.Precio * 1000) / contrato.TipoCambio.Cambio;
                        }
                        else
                        {
                            contrato.PrecioToneladas = contrato.Precio * 1000;
                        }
                    }

                    if (contrato.Cuenta != null)
                    {
                        if (contrato.Cuenta.CuentaSAPID > 0)
                        {
                            CuentaSAPBL cuentaSapBl = new CuentaSAPBL();
                            contrato.Cuenta.Activo = EstatusEnum.Activo;
                            contrato.Cuenta        = cuentaSapBl.ObtenerPorFiltroSinTipo(contrato.Cuenta);
                        }
                    }
                    //
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(contrato);
        }
コード例 #7
0
        /// <summary>
        /// Metodo para Guardar/Modificar una entidad TraspasoMateriaPrima
        /// </summary>
        /// <param name="info"></param>
        public Dictionary <long, MemoryStream> GuardarTraspaso(TraspasoMpPaMedInfo info)
        {
            try
            {
                var resultado = new Dictionary <long, MemoryStream>();
                Logger.Info();
                var traspasoMateriaPrimaDAL = new TraspasoMateriaPrimaDAL();
                using (var transaction = new TransactionScope())
                {
                    long almacenMovimientoOrigenID  = GenerarMovimientoSalida(info);
                    long almacenMovimientoDestinoID = GenerarMovimientoEntrada(info);

                    var traspasoMateriaPrimaGuardar = new TraspasoMateriaPrimaInfo
                    {
                        ContratoOrigen               = info.ContratoOrigen,
                        ContratoDestino              = info.ContratoDestino,
                        Organizacion                 = info.Usuario.Organizacion,
                        AlmacenOrigen                = info.AlmacenOrigen,
                        AlmacenDestino               = info.AlmacenDestino,
                        AlmacenInventarioLoteOrigen  = info.LoteMpOrigen,
                        AlmacenInventarioLoteDestino = info.LoteMpDestino,
                        CuentaSAP               = info.CuentaContable,
                        Justificacion           = info.JustificacionDestino,
                        AlmacenMovimientoOrigen =
                            new AlmacenMovimientoInfo {
                            AlmacenMovimientoID = almacenMovimientoOrigenID
                        },
                        AlmacenMovimientoDestino =
                            new AlmacenMovimientoInfo {
                            AlmacenMovimientoID = almacenMovimientoDestinoID
                        },
                        Activo            = EstatusEnum.Activo,
                        UsuarioCreacionID = info.Usuario.UsuarioID
                    };

                    traspasoMateriaPrimaGuardar = traspasoMateriaPrimaDAL.Crear(traspasoMateriaPrimaGuardar);
                    info.FolioTraspaso          = traspasoMateriaPrimaGuardar.FolioTraspaso;
                    info.FechaTraspaso          = traspasoMateriaPrimaGuardar.FechaMovimiento;
                    info.AlmacenMovimientoID    = almacenMovimientoDestinoID;
                    MemoryStream pdfPoliza = null;
                    if (info.AlmacenOrigen.AlmacenID != info.AlmacenDestino.AlmacenID)
                    {
                        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);
            }
        }
コード例 #8
0
        /// <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);
            }
        }