public static IList <AlmacenInventarioInfo> ObtenerProductosPorAlmacen(int idAlmacen)
        {
            IList <AlmacenInventarioInfo> listaAlmacenInventario = null;

            try
            {
                SeguridadInfo seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

                if (seguridad != null)
                {
                    var almacenInventarioPl = new AlmacenInventarioPL();
                    var almacenPl           = new AlmacenPL();

                    AlmacenInfo almacen = almacenPl.ObtenerPorID(idAlmacen);

                    OrganizacionInfo organizacion = seguridad.Usuario.Organizacion;

                    listaAlmacenInventario = almacenInventarioPl.ObtienePorAlmacenIdLlenaProductoInfo(almacen);

                    if (listaAlmacenInventario != null && listaAlmacenInventario.Count > 0)
                    {
                        listaAlmacenInventario = (from productos in listaAlmacenInventario
                                                  where productos.Producto != null
                                                  orderby productos.Producto.Descripcion
                                                  select productos).ToList();

                        if (almacen.TipoAlmacen.TipoAlmacenID == (int)TipoAlmacenEnum.PlantaDeAlimentos)
                        {
                            listaAlmacenInventario = (from productos in listaAlmacenInventario
                                                      where productos.Producto.SubFamilia.SubFamiliaID != (int)SubFamiliasEnum.AlimentoFormulado
                                                      orderby productos.Producto.Descripcion
                                                      select productos).ToList();
                        }
                    }
                }
                else
                {
                    throw new ExcepcionServicio("SesionExpirada");
                }
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(ex.Message);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new Exception(ex.Message);
            }

            return(listaAlmacenInventario);
        }
        public static IList <AlmacenInventarioInfo> ObtenerExistencia(IEnumerable <int> idProductos)
        {
            IList <ProductoInfo> producto = idProductos.Select(id => new ProductoInfo {
                ProductoId = id
            }).ToList();
            int         organizacionId = Usuario.OrganizacionID;
            AlmacenInfo almacen        = ObtenerAlmacenGenerarl(organizacionId);
            int         almacenId      = almacen.AlmacenID;

            var almacenInventarioBL = new AlmacenInventarioPL();
            IList <AlmacenInventarioInfo> result = almacenInventarioBL.ExistenciaPorProductos(almacenId, producto);

            return(result);
        }
Пример #3
0
        private void CargarArchivoImportar()
        {
            try
            {
                var almacenPL               = new AlmacenPL();
                var almacenInventarioPL     = new AlmacenInventarioPL();
                var almacenInventarioLotePL = new AlmacenInventarioLotePL();
                var productoPL              = new ProductoPL();

                List <AlmacenInfo> almacenesOrganizacion =
                    almacenPL.ObtenerAlmacenesPorOrganizacion(Contexto.Organizacion.OrganizacionID);

                List <ProductoInfo> productos = productoPL.ObtenerPorEstados(EstatusEnum.Activo);


                if (almacenesOrganizacion == null)
                {
                    SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.CargaMPPA_SinAlmacenes, MessageBoxButton.OK,
                                      MessageImage.Warning);
                    return;
                }

                IList <AlmacenInventarioInfo> almacenesInventario =
                    almacenInventarioPL.ObtenerPorAlmacenXML(almacenesOrganizacion) ?? new List <AlmacenInventarioInfo>();

                IList <AlmacenInventarioLoteInfo> almacenesInventarioLote =
                    almacenInventarioLotePL.ObtenerLotesPorAlmacenInventarioXML(almacenesInventario.ToList()) ??
                    new List <AlmacenInventarioLoteInfo>();


                var archivoCarga = new FileInfo(Contexto.Ruta);
                // Open and read the XlSX file.
                using (var excel = new ExcelPackage(archivoCarga))
                {
                    ExcelWorkbook libro = excel.Workbook;
                    if (libro == null || libro.Worksheets.Count == 0)
                    {
                        SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CargaMPPA_ArchivoSinDatos, MessageBoxButton.OK, MessageImage.Warning);
                        return;
                    }
                    // Get the first worksheet
                    ExcelWorksheet hojaExcel = libro.Worksheets.First();

                    if (!hojaExcel.Name.ToUpper().Equals(Properties.Resources.CargaMPPA_NombreHoja.ToUpper(), StringComparison.InvariantCultureIgnoreCase))
                    {
                        SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CargaMPPA_NombreIncorrectoHoja, MessageBoxButton.OK, MessageImage.Warning);
                        return;
                    }

                    if (!ValidarEncabezado(hojaExcel))
                    {
                        return;
                    }
                    for (int renglon = RenglonEncabezados + 1; renglon <= hojaExcel.Dimension.End.Row; renglon++)
                    {
                        var carga = new CargaMPPAModel();

                        object columnaVacia = hojaExcel.Cells[renglon, 1].Value;
                        if (columnaVacia == null || string.IsNullOrWhiteSpace(columnaVacia.ToString()))
                        {
                            continue;
                        }

                        #region AsignarPropiedades
                        var propiedades = carga.GetType().GetProperties();
                        foreach (var propInfo in propiedades)
                        {
                            dynamic customAttributes = carga.GetType().GetProperty(propInfo.Name).GetCustomAttributes(typeof(AtributoCargaMPPA), true);
                            if (customAttributes.Length > 0)
                            {
                                for (var indexAtributos = 0; indexAtributos < customAttributes.Length; indexAtributos++)
                                {
                                    var      atributos    = (AtributoCargaMPPA)customAttributes[indexAtributos];
                                    int      celdaArchivo = atributos.Celda;
                                    TypeCode tipoDato     = atributos.TipoDato;
                                    bool     aceptaVacio  = atributos.AceptaVacio;

                                    object dato = hojaExcel.Cells[renglon, celdaArchivo].Value;

                                    switch (tipoDato)
                                    {
                                    case TypeCode.Int32:
                                        int valorInt;
                                        int.TryParse(dato == null ? "" : dato.ToString(), out valorInt);
                                        if (valorInt == 0)
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, 0, null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorInt, null);

                                        break;

                                    case TypeCode.Decimal:
                                        decimal valorDecimal;
                                        decimal.TryParse(dato == null ? "" : dato.ToString(), out valorDecimal);
                                        if (valorDecimal == 0)
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, 0, null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorDecimal, null);

                                        break;

                                    case TypeCode.DateTime:
                                        DateTime valorFecha;
                                        DateTime.TryParse(dato == null ? "" : dato.ToString(), out valorFecha);
                                        if (valorFecha == DateTime.MinValue)
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, DateTime.MinValue, null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorFecha, null);

                                        break;

                                    default:
                                        propInfo.SetValue(carga, null, null);
                                        break;
                                    }
                                }
                            }
                        }
                        #endregion AsignarPropiedades
                        #region Validaciones

                        AlmacenInfo           almacenCarga      = almacenesOrganizacion.FirstOrDefault(alm => alm.AlmacenID == carga.AlmacenID);
                        ProductoInfo          producto          = productos.FirstOrDefault(pro => pro.ProductoId == carga.ProductoID);
                        AlmacenInventarioInfo almacenInventario =
                            almacenesInventario.FirstOrDefault(
                                ai => ai.AlmacenID == carga.AlmacenID && ai.ProductoID == carga.ProductoID);

                        if (almacenCarga == null)
                        {
                            carga.MensajeAlerta = string.Format(Properties.Resources.CargaMPPA_NoExisteAlmacen,
                                                                carga.AlmacenID, renglon);
                        }
                        carga.Almacen = almacenCarga;
                        if (producto == null)
                        {
                            carga.MensajeAlerta = string.Format(Properties.Resources.CargaMPPA_NoExisteProducto,
                                                                carga.ProductoID, renglon);
                        }
                        carga.Producto = producto;
                        if (almacenInventario != null && almacenInventario.Cantidad > 0)
                        {
                            carga.MensajeAlerta = string.Format(Properties.Resources.CargaMPPA_ExisteInventario,
                                                                carga.ProductoID, carga.AlmacenID, renglon);
                        }
                        carga.AlmacenInventario = almacenInventario;

                        if (carga.AlmacenInventario != null && carga.AlmacenInventario.AlmacenInventarioID > 0)
                        {
                            List <AlmacenInventarioLoteInfo> lotesInventario =
                                almacenesInventarioLote.Where(
                                    ail =>
                                    ail.AlmacenInventario.AlmacenInventarioID ==
                                    carga.AlmacenInventario.AlmacenInventarioID).ToList();

                            if (lotesInventario.Any())
                            {
                                AlmacenInventarioLoteInfo lote =
                                    lotesInventario.FirstOrDefault(ail => ail.Lote == carga.Lote);

                                if (lote != null)
                                {
                                    carga.MensajeAlerta = string.Format(Properties.Resources.CargaMPPA_ExisteLote,
                                                                        carga.Lote, carga.AlmacenID, renglon);
                                }
                            }
                        }
                        CargaMPPAModel cargaRepetida =
                            listaInventariosValidos.FirstOrDefault(car => car.ProductoID == carga.ProductoID &&
                                                                   car.AlmacenID == carga.AlmacenID &&
                                                                   car.Lote == carga.Lote);

                        if (cargaRepetida != null)
                        {
                            carga.MensajeAlerta = string.Format(Properties.Resources.CargaMPPA_ExisteRenglonRepetido, renglon);
                        }


                        if (!string.IsNullOrWhiteSpace(carga.MensajeAlerta))
                        {
                            listaInventariosInvalidos.Add(carga);
                        }
                        else
                        {
                            listaInventariosValidos.Add(carga);
                        }
                        #endregion Validaciones
                    }
                }
                if (listaInventariosInvalidos.Any())
                {
                    gridDatos.ItemsSource = listaInventariosInvalidos;
                    btnGuardar.IsEnabled  = false;
                    SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      string.Format(Properties.Resources.CargaMPPA_RegistroProblemas, listaInventariosInvalidos.Count),
                                      MessageBoxButton.OK,
                                      MessageImage.Warning);
                    return;
                }

                if (listaInventariosValidos.Any())
                {
                    SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      string.Format(Properties.Resources.CargaMPPA_RegistroSinProblemas, listaInventariosValidos.Count),
                                      MessageBoxButton.OK,
                                      MessageImage.Correct);
                }

                btnGuardar.IsEnabled = true;
            }
            catch (Exception ex)
            {
                SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CargaMPPA_ErrorValidar, MessageBoxButton.OK, MessageImage.Error);
                Logger.Error(ex);
            }
        }
Пример #4
0
        /// <summary>
        /// Valida si el stock actual no cubre el envio que se intenta registrar
        /// </summary>
        /// <returns>Regresa True si la canidad de envio excede el inventario actual</returns>
        private bool ValidarSalidaExcede(out string error)
        {
            AlmacenInventarioPL   almacenInventarioPL   = new AlmacenInventarioPL();
            AlmacenInventarioInfo inventarioActualizado = almacenInventarioPL.ObtenerPorAlmacenIdProductoId(EnvioAlimento.AlmacenInventario);

            if (EnvioAlimento.Producto.ManejaLote)
            {
                AlmacenInventarioLotePL   inventarioLotePL = new AlmacenInventarioLotePL();
                AlmacenInventarioLoteInfo loteActual       = inventarioLotePL.ObtenerAlmacenInventarioLotePorId(EnvioAlimento.AlmacenInventario.ListaAlmacenInventarioLote.FirstOrDefault().AlmacenInventarioLoteId);

                if (loteActual.Cantidad == 0)
                {
                    error = Properties.Resources.EnvioAlimento_MsgProductoSinInventario;
                    LimpiarProducto();
                    this.EnvioAlimento.Producto = new ProductoInfo {
                        ProductoId = 0, SubfamiliaId = (int)this.cmbSubFamilia.SelectedValue
                    };
                    cmbAlmacen.ItemsSource = new List <AlmacenInfo>();
                    this.skAyudaProducto.LimpiarCampos();
                    cmbAlmacen.IsEnabled = false;
                    this.skAyudaProducto.LimpiarCampos();
                    this.skAyudaProducto.txtClave.Focus();

                    txtCantidadEnvio.Text      = string.Empty;
                    txtPrecioPromedio.Text     = string.Empty;
                    txtCantidadInventario.Text = string.Empty;
                    return(true);
                }

                if ((loteActual.Cantidad - decimal.Parse(txtCantidadEnvio.Text)) < 0)
                {
                    error = Properties.Resources.EnvioAlimento_MsgCantidadInventarioNegativo;
                    LimpiarProducto();
                    txtCantidadEnvio.Text      = string.Empty;
                    txtPrecioPromedio.Text     = string.Empty;
                    txtCantidadInventario.Text = string.Empty;
                    return(true);
                }
                error = string.Empty;
                return(false);
            }
            else
            {
                if (inventarioActualizado.Cantidad == 0)
                {
                    error = Properties.Resources.EnvioAlimento_MsgProductoSinInventario;
                    LimpiarProducto();
                    this.skAyudaProducto.LimpiarCampos();
                    this.skAyudaProducto.txtClave.Focus();

                    txtCantidadEnvio.Text      = string.Empty;
                    txtPrecioPromedio.Text     = string.Empty;
                    txtCantidadInventario.Text = string.Empty;
                    return(true);
                }

                if (((inventarioActualizado.Cantidad - decimal.Parse(txtCantidadEnvio.Text.Trim())) < 0))
                {
                    error = Properties.Resources.EnvioAlimento_MsgCantidadInventarioNegativo;
                    LimpiarProducto();
                    txtCantidadEnvio.Text      = string.Empty;
                    txtPrecioPromedio.Text     = string.Empty;
                    txtCantidadInventario.Text = string.Empty;
                    return(true);
                }
                else
                {
                    error = string.Empty;
                    return(false);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Crear un nuevo lote en AlamcenInventarioLote
        /// </summary>
        private void CrearNuevoLote()
        {
            try
            {
                AlmacenInventarioLoteInfo almacenInventarioLote = null;

                int usuarioId = AuxConfiguracion.ObtenerUsuarioLogueado();
                var almacenInventarioLotePl = new AlmacenInventarioLotePL();
                var almacenInventarioPl     = new AlmacenInventarioPL();

                var almacenInventario = new AlmacenInventarioInfo
                {
                    AlmacenID  = Contexto.AlmacenDestino.AlmacenID,
                    ProductoID = Contexto.ProductoDestino.ProductoId
                };

                almacenInventario = almacenInventarioPl.ObtenerPorAlmacenIdProductoId(almacenInventario);

                // Si el producto no se encuentra en el almacen inventario, lo insertamos
                if (almacenInventario == null)
                {
                    almacenInventario = new AlmacenInventarioInfo
                    {
                        AlmacenInventarioID =
                            almacenInventarioPl.Crear(new AlmacenInventarioInfo
                        {
                            AlmacenID         = Contexto.AlmacenDestino.AlmacenID,
                            ProductoID        = Contexto.ProductoDestino.ProductoId,
                            UsuarioCreacionID = usuarioId
                        }),
                        AlmacenID = Contexto.AlmacenDestino.AlmacenID
                    };
                }

                int loteIdCreado = almacenInventarioLotePl.Crear(new AlmacenInventarioLoteInfo
                {
                    AlmacenInventarioLoteId = 0,
                    AlmacenInventario       =
                        new AlmacenInventarioInfo {
                        AlmacenInventarioID = almacenInventario.AlmacenInventarioID
                    },
                    Cantidad          = 0,
                    PrecioPromedio    = 0,
                    Piezas            = 0,
                    Importe           = 0,
                    Activo            = EstatusEnum.Activo,
                    UsuarioCreacionId = usuarioId,
                }, new AlmacenInventarioInfo
                {
                    AlmacenID  = almacenInventario.AlmacenID,
                    ProductoID = Contexto.ProductoDestino.ProductoId
                });

                almacenInventarioLote = almacenInventarioLotePl.ObtenerAlmacenInventarioLotePorId(loteIdCreado);


                Contexto.LoteMpDestino         = almacenInventarioLote;
                skAyudaLoteMPDestino.IsEnabled = false;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.TraspasoMPPAMED_ErrorCrearLote, MessageBoxButton.OK,
                                  MessageImage.Error);
            }
        }
Пример #6
0
        /// <summary>
        /// Asigna los eventos a los controles de ayuda
        /// </summary>
        private void AsignarEventosAyudas()
        {
            skAyudaLoteMPOrigen.AyudaConDatos += (sender, args) =>
            {
                Contexto.AlmacenInventarioOrigen.Almacen =
                    Contexto.AlmacenOrigen;
                Contexto.LoteMpOrigen.AlmacenInventario.Almacen =
                    Contexto.AlmacenOrigen;
            };

            skAyudaLoteMPDestino.AyudaConDatos += (sender, args) =>
            {
                Contexto.AlmacenInventarioDestino.Almacen =
                    Contexto.AlmacenDestino;
                Contexto.LoteMpDestino.AlmacenInventario.Almacen = Contexto.AlmacenDestino;
            };

            #region AyudasOrigen

            skAyudaTipoAlmacenOrigen.AyudaConDatos += (o, args) =>
            {
                iudFolio.IsEnabled = false;
                btnBuscarFolioEmbarque.IsEnabled            = false;
                Contexto.AlmacenOrigen.TipoAlmacen          = Contexto.TipoAlmacenOrigen;
                Contexto.AlmacenOrigen.TipoAlmacenID        = Contexto.TipoAlmacenOrigen.TipoAlmacenID;
                Contexto.TipoAlmacenOrigen.ListaTipoAlmacen =
                    configuracionTraspasoAlmacen.Select(tipo => tipo.TipoAlmacenOrigen.TipoAlmacenID).Distinct().
                    ToList();
                var tiposDestino =
                    configuracionTraspasoAlmacen.Where(
                        tipo => tipo.TipoAlmacenOrigen.TipoAlmacenID == Contexto.TipoAlmacenOrigen.TipoAlmacenID);
                if (tiposDestino.Any())
                {
                    Contexto.TipoAlmacenDestino.ListaTipoAlmacen = tiposDestino.Select(tipo => tipo.TipoAlmacenDestino.TipoAlmacenID).Distinct().
                                                                   ToList();
                }
                Contexto.AlmacenOrigen.ListaTipoAlmacen = new List <TipoAlmacenInfo>
                {
                    new TipoAlmacenInfo
                    {
                        TipoAlmacenID = Contexto.TipoAlmacenOrigen.TipoAlmacenID
                    }
                };
            };

            skAyudaOrganizacionOrigen.AyudaConDatos += (o, args) =>
            {
                Contexto.AlmacenOrigen.Organizacion          = Contexto.OrganizacionOrigen;
                Contexto.OrganizacionOrigen.TipoOrganizacion = new TipoOrganizacionInfo
                {
                    TipoOrganizacionID = TipoOrganizacion.Ganadera.GetHashCode()
                };
            };

            skAyudaAlmacenOrigen.AyudaConDatos += (o, args) =>
            {
                Contexto.ProductoOrigen.AlmacenID    = Contexto.AlmacenOrigen.AlmacenID;
                Contexto.AlmacenOrigen.TipoAlmacenID = Contexto.TipoAlmacenOrigen.TipoAlmacenID;
                Contexto.ProveedorOrigen.AlmacenID   = Contexto.AlmacenOrigen.AlmacenID;

                if (Contexto.LoteMpOrigen == null)
                {
                    Contexto.LoteMpOrigen = new AlmacenInventarioLoteInfo
                    {
                        AlmacenInventario = new AlmacenInventarioInfo()
                        {
                            Almacen = Contexto.AlmacenOrigen
                        }
                    };
                }
                else
                {
                    if (Contexto.LoteMpOrigen.AlmacenInventario == null)
                    {
                        Contexto.LoteMpOrigen.AlmacenInventario = new AlmacenInventarioInfo
                        {
                            Almacen = Contexto.AlmacenOrigen
                        };
                    }
                    else
                    {
                        Contexto.LoteMpOrigen.AlmacenInventario.Almacen = Contexto.AlmacenOrigen;
                    }
                }
            };

            skAyudaAlmacenOrigen.PuedeBuscar = () =>
            {
                if ((Contexto.TipoAlmacenOrigen == null || Contexto.TipoAlmacenOrigen.TipoAlmacenID == 0) || (Contexto.OrganizacionOrigen == null || Contexto.OrganizacionOrigen.OrganizacionID == 0))
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoMPPAMED_SeleccionarTipoOrganizacion, MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }
                return(true);
            };

            skAyudaProductoOrigen.PuedeBuscar = () =>
            {
                if (Contexto.AlmacenOrigen == null || Contexto.AlmacenOrigen.AlmacenID == 0)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoMPPAMED_SeleccionarAlmacen, MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }
                return(true);
            };

            skAyudaProductoOrigen.AyudaConDatos += (o, args) =>
            {
                Contexto.ProductoOrigen.AlmacenID = Contexto.AlmacenOrigen.AlmacenID;
                BloqueaDesbloqueaControlesDestino(true);
                Contexto.ProductoDestino                = Contexto.ProductoOrigen;
                skAyudaProductoDestino.IsEnabled        = false;
                Contexto.ProveedorOrigen.ProductoID     = Contexto.ProductoOrigen.ProductoId;
                Contexto.ProveedorOrigen.OrganizacionID = Contexto.OrganizacionOrigen.OrganizacionID;

                Contexto.ProveedorDestino.ProductoID     = Contexto.ProductoOrigen.ProductoId;
                Contexto.ProveedorDestino.OrganizacionID = Contexto.OrganizacionOrigen.OrganizacionID;


                Contexto.LoteMpOrigen.OrganizacionId = Contexto.OrganizacionOrigen.OrganizacionID;
                Contexto.LoteMpOrigen.TipoAlmacenId  = Contexto.TipoAlmacenOrigen.TipoAlmacenID;
                Contexto.LoteMpOrigen.ProductoId     = Contexto.ProductoOrigen.ProductoId;
                Contexto.LoteMpOrigen.Activo         = EstatusEnum.Activo;

                if (tiposAlmacenMedicamentos.Contains(Contexto.TipoAlmacenOrigen.TipoAlmacenID))
                {
                    var almacenInventarioPL = new AlmacenInventarioPL();
                    List <AlmacenInventarioInfo> inventarios =
                        almacenInventarioPL.ObtienePorAlmacenIdLlenaProductoInfo(Contexto.AlmacenOrigen);

                    Contexto.AlmacenInventarioOrigen =
                        inventarios.FirstOrDefault(
                            inven => inven.Producto.ProductoId == Contexto.ProductoOrigen.ProductoId);
                }
            };


            #endregion Ayudas Origen

            #region AyudasDestino

            skAyudaTipoAlmacenDestino.PuedeBuscar += () =>
            {
                if ((Contexto.TipoAlmacenOrigen == null || Contexto.TipoAlmacenOrigen.TipoAlmacenID == 0) || (Contexto.OrganizacionOrigen == null || Contexto.OrganizacionOrigen.OrganizacionID == 0))
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoMPPAMED_SeleccionarTipoOrganizacion, MessageBoxButton.OK, MessageImage.Warning);
                    return(false);
                }
                return(true);
            };

            skAyudaTipoAlmacenDestino.AyudaConDatos += (o, args) =>
            {
                Contexto.AlmacenDestino.TipoAlmacenID = Contexto.TipoAlmacenDestino.TipoAlmacenID;

                ConfiguracionTraspasoAlmacenInfo configuracionAlmacen =
                    configuracionTraspasoAlmacen.FirstOrDefault(
                        config =>
                        config.TipoAlmacenOrigen.TipoAlmacenID == Contexto.TipoAlmacenOrigen.TipoAlmacenID &&
                        config.TipoAlmacenDestino.TipoAlmacenID == Contexto.TipoAlmacenDestino.TipoAlmacenID);
                if (configuracionAlmacen != null)
                {
                    if (!configuracionAlmacen.DiferenteOrganizacion)
                    {
                        Contexto.OrganizacionDestino         = Contexto.OrganizacionOrigen;
                        skAyudaOrganizacionDestino.IsEnabled = false;
                    }
                }
                Contexto.AlmacenDestino.Organizacion = Contexto.OrganizacionDestino;
                MostrarControlesCantidades();

                var tiposDestino =
                    configuracionTraspasoAlmacen.Where(
                        tipo => tipo.TipoAlmacenOrigen.TipoAlmacenID == Contexto.TipoAlmacenOrigen.TipoAlmacenID);
                if (tiposDestino.Any())
                {
                    Contexto.TipoAlmacenDestino.ListaTipoAlmacen = tiposDestino.Select(tipo => tipo.TipoAlmacenDestino.TipoAlmacenID).Distinct().
                                                                   ToList();
                    Contexto.AlmacenDestino.ListaTipoAlmacen = tiposDestino.Select(tipo => tipo.TipoAlmacenDestino).Distinct().
                                                               ToList();
                }
            };

            skAyudaOrganizacionDestino.AyudaConDatos += (o, args) =>
            {
                Contexto.AlmacenDestino.Organizacion = Contexto.OrganizacionDestino;
            };

            skAyudaAlmacenDestino.AyudaConDatos += (o, args) =>
            {
                Contexto.ProductoDestino.AlmacenID    = Contexto.AlmacenDestino.AlmacenID;
                Contexto.AlmacenDestino.TipoAlmacenID = Contexto.TipoAlmacenDestino.TipoAlmacenID;
                Contexto.ProveedorDestino.AlmacenID   = Contexto.AlmacenDestino.AlmacenID;

                Contexto.LoteMpDestino.OrganizacionId = Contexto.OrganizacionDestino.OrganizacionID;
                Contexto.LoteMpDestino.TipoAlmacenId  = Contexto.TipoAlmacenDestino.TipoAlmacenID;
                Contexto.LoteMpDestino.ProductoId     = Contexto.ProductoDestino.ProductoId;
                Contexto.LoteMpDestino.Activo         = EstatusEnum.Activo;

                var tiposDestino =
                    configuracionTraspasoAlmacen.Where(
                        tipo => tipo.TipoAlmacenOrigen.TipoAlmacenID == Contexto.TipoAlmacenOrigen.TipoAlmacenID);
                Contexto.TipoAlmacenDestino.ListaTipoAlmacen = tiposDestino.Select(tipo => tipo.TipoAlmacenDestino.TipoAlmacenID).Distinct().
                                                               ToList();
                Contexto.AlmacenDestino.ListaTipoAlmacen = tiposDestino.Select(tipo => tipo.TipoAlmacenDestino).Distinct().
                                                           ToList();

                if (Contexto.LoteMpDestino == null)
                {
                    Contexto.LoteMpDestino = new AlmacenInventarioLoteInfo
                    {
                        AlmacenInventario = new AlmacenInventarioInfo()
                        {
                            Almacen = Contexto.AlmacenDestino
                        }
                    };
                }
                else
                {
                    if (Contexto.LoteMpDestino.AlmacenInventario == null)
                    {
                        Contexto.LoteMpDestino.AlmacenInventario = new AlmacenInventarioInfo
                        {
                            Almacen = Contexto.AlmacenDestino
                        };
                    }
                    else
                    {
                        Contexto.LoteMpDestino.AlmacenInventario.Almacen = Contexto.AlmacenDestino;
                    }
                }
            };


            skAyudaCuentaContableContratoDestino.AyudaConDatos += (sender, args) => CargarCuentasContables();

            #endregion AyudasDestino
        }
Пример #7
0
        /// <summary>
        /// Cargar los datos del folio para la cancelacion
        /// </summary>
        private void CargarDatosCancelacion()
        {
            try
            {
                var organizacionPL = new OrganizacionPL();
                var tipoAlmacenPL  = new TipoAlmacenPL();
                var productoPL     = new ProductoPL();


                Contexto.OrganizacionOrigen  = organizacionPL.ObtenerPorID(Contexto.AlmacenOrigen.Organizacion.OrganizacionID);
                Contexto.OrganizacionDestino =
                    organizacionPL.ObtenerPorID(Contexto.AlmacenDestino.Organizacion.OrganizacionID);
                Contexto.TipoAlmacenOrigen  = tipoAlmacenPL.ObtenerPorID(Contexto.AlmacenOrigen.TipoAlmacen.TipoAlmacenID);
                Contexto.TipoAlmacenDestino = tipoAlmacenPL.ObtenerPorID(Contexto.AlmacenDestino.TipoAlmacen.TipoAlmacenID);
                Contexto.ProductoOrigen     = productoPL.ObtenerPorID(Contexto.ProductoOrigen);
                Contexto.ProductoDestino    = Contexto.ProductoOrigen;

                if (tiposAlmacenMedicamentos.Contains(Contexto.TipoAlmacenOrigen.TipoAlmacenID))
                {
                    var almacenInventarioPL = new AlmacenInventarioPL();
                    List <AlmacenInventarioInfo> inventarios =
                        almacenInventarioPL.ObtienePorAlmacenIdLlenaProductoInfo(Contexto.AlmacenOrigen);

                    Contexto.AlmacenInventarioOrigen =
                        inventarios.FirstOrDefault(
                            inven => inven.Producto.ProductoId == Contexto.ProductoOrigen.ProductoId);
                }

                stpControles.IsEnabled     = false;
                btnGuardar.IsEnabled       = false;
                btnCancelarFolio.IsEnabled = true;
                MostrarControlesCantidades();
                if (stpControlesMEDOrigen.IsVisible)
                {
                    var almacenInventarioPL = new AlmacenInventarioPL();
                    List <AlmacenInventarioInfo> inventariosDestino =
                        almacenInventarioPL.ObtienePorAlmacenIdLlenaProductoInfo(Contexto.AlmacenDestino);

                    Contexto.AlmacenInventarioDestino =
                        inventariosDestino.FirstOrDefault(
                            inven => inven.Producto.ProductoId == Contexto.ProductoOrigen.ProductoId);
                    if (Contexto.AlmacenInventarioDestino != null)
                    {
                        if (Contexto.CantidadTraspasarDestino > Contexto.AlmacenInventarioDestino.Cantidad)
                        {
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                              Properties.Resources.TraspasoMPPAMED_CancelacionSinInventario, MessageBoxButton.OK,
                                              MessageImage.Warning);
                            btnCancelarFolio.IsEnabled = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.TraspasoMPPAMED_ErrorCargarDatosCancelacion, MessageBoxButton.OK,
                                  MessageImage.Error);
            }
        }
        public static AlmacenInventarioLoteInfo ObtenerNuevoLoteMateriaPrima(int productoId, string tipoalmacen)
        {
            try
            {
                var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                int organizacionId = 0, usuarioId = 0, tipoAlmacen = 0;

                AlmacenInventarioLoteInfo almacenInventarioLote = null;

                if (seguridad != null)
                {
                    organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;
                    usuarioId      = seguridad.Usuario.UsuarioID;
                }

                switch (tipoalmacen)
                {
                case "rbLoteAlmacen":
                    tipoAlmacen = (int)TipoAlmacenEnum.MateriasPrimas;
                    break;

                case "rbLoteProceso":
                    tipoAlmacen = (int)TipoAlmacenEnum.PlantaDeAlimentos;
                    break;

                case "rbBodegaExterna":
                    tipoAlmacen = (int)TipoAlmacenEnum.BodegaExterna;
                    break;
                }

                var almacenInventarioLotePl = new AlmacenInventarioLotePL();
                var almacenPl               = new AlmacenPL();
                var almacenInventarioPl     = new AlmacenInventarioPL();

                var almacenInventario =
                    almacenPl.ObtenerAlmacenInventarioPorOrganizacionTipoAlmacen(new ParametrosOrganizacionTipoAlmacenProductoActivo
                {
                    OrganizacionId = organizacionId,
                    TipoAlmacenId  = tipoAlmacen,
                    Activo         = (int)EstatusEnum.Activo,
                    ProductoId     = productoId
                });

                // Si el producto no se encuentra en el almacen inventario, lo insertamos
                if (almacenInventario == null)
                {
                    var listaAlmacenOrganizacion = almacenPl.ObtenerAlmacenPorOrganizacion(organizacionId);
                    if (listaAlmacenOrganizacion != null)
                    {
                        // Obtenemos el almacen y validamos que sea del mismo tipo Almacen
                        foreach (AlmacenInfo almacenInfo in listaAlmacenOrganizacion)
                        {
                            // Aqui se valida que el almacen sea del tipo seleccionado en pantalla
                            if (almacenInfo.TipoAlmacen.TipoAlmacenID == tipoAlmacen)
                            {
                                almacenInventario = new AlmacenInventarioInfo
                                {
                                    AlmacenInventarioID =
                                        almacenInventarioPl.Crear(new AlmacenInventarioInfo
                                    {
                                        AlmacenID         = almacenInfo.AlmacenID,
                                        ProductoID        = productoId,
                                        UsuarioCreacionID = usuarioId
                                    }),
                                    AlmacenID = almacenInfo.AlmacenID
                                };
                                break;
                            }
                        }
                    }
                }

                if (almacenInventario != null)
                {
                    int loteIdCreado = almacenInventarioLotePl.Crear(new AlmacenInventarioLoteInfo
                    {
                        AlmacenInventarioLoteId = 0,
                        AlmacenInventario       =
                            new AlmacenInventarioInfo {
                            AlmacenInventarioID = almacenInventario.AlmacenInventarioID
                        },
                        Cantidad          = 0,
                        PrecioPromedio    = 0,
                        Piezas            = 0,
                        Importe           = 0,
                        Activo            = EstatusEnum.Activo,
                        UsuarioCreacionId = usuarioId,
                    }, new AlmacenInventarioInfo
                    {
                        AlmacenID  = almacenInventario.AlmacenID,
                        ProductoID = productoId
                    });

                    almacenInventarioLote = almacenInventarioLotePl.ObtenerAlmacenInventarioLotePorId(loteIdCreado);
                }

                return(almacenInventarioLote);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new SystemException(ex.Message);
            }
        }