/// <summary>
        /// Obtiene los parametros para guardar
        /// </summary>
        /// <param name="recepcionProducto"></param>
        /// <returns></returns>
        internal static Dictionary <string, object> ObtenerParametrosGuardar(RecepcionProductoInfo recepcionProducto)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                parametros = new Dictionary <string, object>
                {
                    { "@OrganizacionID", recepcionProducto.Almacen.Organizacion.OrganizacionID },
                    { "@AlmacenID", recepcionProducto.Almacen.AlmacenID },
                    { "@FolioOrdenCompra", recepcionProducto.FolioOrdenCompra },
                    { "@FechaSolicitud", recepcionProducto.FechaSolicitud },
                    { "@ProveedorID", recepcionProducto.Proveedor.ProveedorID },
                    { "@AlmacenMovimientoID", recepcionProducto.AlmacenMovimientoId },
                    { "@Factura", recepcionProducto.Factura },
                    { "@UsuarioCreacionID", recepcionProducto.UsuarioCreacion.UsuarioID },
                    { "@TipoFolio", (int)TipoFolio.RecepcionProducto },
                    { "@Activo", EstatusEnum.Activo }
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
        private void LimpiarTodo()
        {
            txtOrdenCompra.Text           = "";
            dgRecepcionCompra.ItemsSource = new List <RecepcionProductoDetalleInfo>();
            dgRecepcion.ItemsSource       = new List <RecepcionProductoDetalleInfo>();
            txtProveedor.Clear();
            txtFecha.Clear();
            txtObservaciones.Clear();
            contador = 0;
            skAyudaProveedor.IsEnabled = true;
            txtFactura.IsEnabled       = true;

            recepcionProducto = new RecepcionProductoInfo();
            recepcionProducto.ListaRecepcionProductoDetalle = new List <RecepcionProductoDetalleInfo>();
            recepcionProductoCompra = new RecepcionProductoInfo();
            recepcionProductoCompra.ListaRecepcionProductoDetalle = new List <RecepcionProductoDetalleInfo>();

            gbDatos.IsEnabled = false;

            LimpiarCampos();

            txtOrdenCompra.Focus();
            btnGuardar.IsEnabled = false;
            chkDll.IsEnabled     = true;
            chkDll.IsChecked     = false;
        }
Exemple #3
0
        internal RecepcionProductoInfo ObtenerRecepcionVista(RecepcionProductoInfo recepcionProductoCompra, int organizacionId)
        {
            RecepcionProductoInfo recepcionProductoGuardado = null;

            try
            {
                Logger.Info();
                string cadena =
                    string.Format(
                        "SELECT OrganizacionID,FolioSolicitud,FechaSolicitud,Proveedor,Producto,Cantidad,CostoUnitario,Importe,Unidad,CuentaGasto FROM VW_Interfaz_SIAP_ComprasWEB WHERE OrganizacionID = {0} AND FolioSolicitud = {1}",
                        organizacionId, recepcionProductoCompra.FolioOrdenCompra);
                var ds = new DataSet();
                using (SqlConnection connection = new SqlConnection(this.ConnectionString))
                {
                    SqlCommand command = new SqlCommand(cadena, connection);
                    command.Connection.Open();
                    var adapter = new SqlDataAdapter(command);

                    adapter.Fill(ds);
                }
                if (ValidateDataSet(ds))
                {
                    recepcionProductoGuardado = MapRecepcionProductoDAL.ObtenerRecepcionProductoVista(ds);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(recepcionProductoGuardado);
        }
Exemple #4
0
 /// <summary>
 /// Obtiene la recepcion desde la vista del servidor de la organizacion
 /// </summary>
 /// <param name="recepcionProductoCompra"></param>
 /// <param name="organizacionId"></param>
 /// <param name="conexion"></param>
 /// <returns></returns>
 public RecepcionProductoInfo ObtenerRecepcionVista(RecepcionProductoInfo recepcionProductoCompra, int organizacionId, string conexion)
 {
     try
     {
         var recepcionProductoBl = new RecepcionProductoBL();
         return(recepcionProductoBl.ObtenerRecepcionVista(recepcionProductoCompra, organizacionId, conexion));
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
     return(null);
 }
Exemple #5
0
 public RecepcionProductoInfo ObtenerRecepcionPorFolio(RecepcionProductoInfo recepcionProductoCompra)
 {
     try
     {
         var recepcionProductoBl = new RecepcionProductoBL();
         return(recepcionProductoBl.ObtenerRecepcionPorFolio(recepcionProductoCompra));
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
     return(null);
 }
 public RecepcionProducto()
 {
     InitializeComponent();
     organizacionId = Extensor.ValorEntero(Application.Current.Properties["OrganizacionID"].ToString());
     usuarioId      = Extensor.ValorEntero(Application.Current.Properties["UsuarioID"].ToString());
     ConsultaAlmacenGeneral();
     AgregarAyudaProveedor();
     AgregarAyudaProducto();
     CargarDatos();
     recepcionProducto = new RecepcionProductoInfo();
     recepcionProducto.ListaRecepcionProductoDetalle = new List <RecepcionProductoDetalleInfo>();
     contador = 0;
     renglon  = -1;
 }
Exemple #7
0
        /// <summary>
        /// Guarda una recepcion de producto
        /// </summary>
        /// <param name="recepcionProducto"></param>
        /// <returns></returns>
        public MemoryStream Guardar(RecepcionProductoInfo recepcionProducto)
        {
            MemoryStream poliza;

            try
            {
                var recepcionProductoBl = new RecepcionProductoBL();
                poliza = recepcionProductoBl.Guardar(recepcionProducto);
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
            return(poliza);
        }
Exemple #8
0
        internal RecepcionProductoInfo ObtenerRecepcionPorFolio(RecepcionProductoInfo recepcionProductoCompra)
        {
            RecepcionProductoInfo info;

            try
            {
                Logger.Info();
                var recepcionProductoDAL = new RecepcionProductoDAL();
                info = recepcionProductoDAL.ObtenerRecepcionPorFolio(recepcionProductoCompra);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(info);
        }
Exemple #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="recepcionProductoCompra"></param>
        /// <param name="organizacionId"></param>
        /// <param name="conexion"></param>
        /// <returns></returns>
        internal RecepcionProductoInfo ObtenerRecepcionVista(RecepcionProductoInfo recepcionProductoCompra, int organizacionId, string conexion)
        {
            RecepcionProductoInfo info;

            try
            {
                Logger.Info();
                var recepcionProductoDAL = new RecepcionProductoDAL(conexion);
                info = recepcionProductoDAL.ObtenerRecepcionVista(recepcionProductoCompra, organizacionId);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(info);
        }
Exemple #10
0
        private long GuardarMovimientos(RecepcionProductoInfo recepcionProducto)
        {
            long almacenMovimientoId = 0;

            try
            {
                var almacenMovimientoBl = new AlmacenMovimientoBL();
                AlmacenMovimientoInfo almacenMovimiento = new AlmacenMovimientoInfo();
                almacenMovimiento.AlmacenID         = recepcionProducto.Almacen.AlmacenID;
                almacenMovimiento.TipoMovimientoID  = (int)TipoMovimiento.RecepcionProducto;
                almacenMovimiento.Observaciones     = recepcionProducto.Observaciones;
                almacenMovimiento.Status            = (int)EstatusInventario.Aplicado;
                almacenMovimiento.ProveedorId       = recepcionProducto.Proveedor.ProveedorID;
                almacenMovimiento.UsuarioCreacionID = recepcionProducto.UsuarioCreacion.UsuarioID;

                almacenMovimientoId = almacenMovimientoBl.Crear(almacenMovimiento);

                if (almacenMovimientoId > 0)
                {
                    var almacenMovimientoDetalleBl = new AlmacenMovimientoDetalleBL();
                    foreach (var recepcionProductoDetalle in recepcionProducto.ListaRecepcionProductoDetalle)
                    {
                        var almacenMovimientoDetalle = new AlmacenMovimientoDetalle();
                        almacenMovimientoDetalle.AlmacenMovimientoID = almacenMovimientoId;
                        almacenMovimientoDetalle.ProductoID          = recepcionProductoDetalle.Producto.ProductoId;
                        almacenMovimientoDetalle.Importe             = recepcionProductoDetalle.Importe;
                        almacenMovimientoDetalle.Cantidad            = recepcionProductoDetalle.Cantidad;
                        almacenMovimientoDetalle.Precio = almacenMovimientoDetalle.Importe /
                                                          almacenMovimientoDetalle.Cantidad;
                        almacenMovimientoDetalle.UsuarioCreacionID = recepcionProducto.UsuarioCreacion.UsuarioID;
                        almacenMovimientoDetalleBl.Crear(almacenMovimientoDetalle);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(almacenMovimientoId);
        }
Exemple #11
0
        /// <summary>
        /// Obtiene una Recepcion por Folio Recepcion y Organizacion
        /// </summary>
        /// <param name="recepcionProducto"></param>
        /// <returns></returns>
        internal RecepcionProductoInfo ObtenerRecepcionPorFolioOrganizacion(RecepcionProductoInfo recepcionProducto)
        {
            RecepcionProductoInfo resultado = null;

            try
            {
                Logger.Info();
                Dictionary <string, object> parameters =
                    AuxRecepcionProductoDAL.ObtenerParametrosObtenerPorFolioOrganizacion(recepcionProducto);

                DataSet ds = Retrieve("RecepcionProducto_ObtenerPorFolioOrganizacion", parameters);
                if (ValidateDataSet(ds))
                {
                    resultado = MapRecepcionProductoDAL.ObtenerRecepcionPorFolioOrganizacion(ds);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }
        /// <summary>
        /// Obtiene los parametros necesarios para
        /// la ejecucion del procedimiento almacenado
        /// RecepcionProducto_ObtenerPorFolioOrganizacionPaginado
        /// </summary>
        /// <param name="pagina"></param>
        /// <param name="recepcionProducto"></param>
        /// <returns></returns>
        internal static Dictionary <string, object> ObtenerParametrosObtenerPorFolioOrganizacionPaginado(PaginacionInfo pagina, RecepcionProductoInfo recepcionProducto)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                parametros = new Dictionary <string, object>
                {
                    { "@FolioRecepcion", recepcionProducto.FolioRecepcion },
                    { "@OrganizacionID", recepcionProducto.Almacen.Organizacion.OrganizacionID },
                    { "@Inicio", pagina.Inicio },
                    { "@Limite", pagina.Limite },
                    { "@Proveedor", recepcionProducto.Proveedor.Descripcion },
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
Exemple #13
0
        /// <summary>
        /// Guarda una recepcion de producto
        /// </summary>
        /// <param name="recepcionProducto"></param>
        /// <returns></returns>
        internal MemoryStream Guardar(RecepcionProductoInfo recepcionProducto)
        {
            try
            {
                MemoryStream       pdf     = null;
                PolizaAbstract     poliza  = null;
                IList <PolizaInfo> polizas = null;
                int organizacionID         = 0;
                var recepcionProductoDal   = new RecepcionProductoDAL();
                using (var transaction = new TransactionScope())
                {
                    int usuarioID = 0;
                    if (GuardarInventario(recepcionProducto))
                    {
                        long almacenMovimiento = GuardarMovimientos(recepcionProducto);

                        recepcionProducto.AlmacenMovimientoId = almacenMovimiento;
                        var recepcionGuardada = recepcionProductoDal.Guardar(recepcionProducto);
                        if (recepcionGuardada != null)
                        {
                            foreach (var recepcionProductoDetalleInfo in recepcionProducto.ListaRecepcionProductoDetalle
                                     )
                            {
                                recepcionProductoDetalleInfo.RecepcionProductoId = recepcionGuardada.RecepcionProductoId;
                                recepcionProductoDetalleInfo.UsuarioCreacion     = new UsuarioInfo()
                                {
                                    UsuarioID =
                                        recepcionProducto.
                                        UsuarioCreacion.UsuarioID
                                };
                                usuarioID      = recepcionProducto.UsuarioCreacion.UsuarioID;
                                organizacionID = recepcionProducto.Proveedor.OrganizacionID;
                                recepcionProductoDetalleInfo.Activo = EstatusEnum.Activo;
                            }

                            var recepcionProductoDetalleBl = new RecepcionProductoDetalleBL();
                            recepcionProductoDetalleBl.Guardar(recepcionProducto.ListaRecepcionProductoDetalle);

                            #region POLIZA

                            poliza =
                                FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.EntradaCompraMateriaPrima);
                            recepcionProducto.FolioRecepcion = recepcionGuardada.FolioRecepcion;
                            recepcionProducto.FechaRecepcion = recepcionGuardada.FechaRecepcion;
                            polizas = poliza.GeneraPoliza(recepcionProducto);
                            if (polizas != null)
                            {
                                if (organizacionID == 0)
                                {
                                    organizacionID = recepcionProducto.Almacen.Organizacion.OrganizacionID;
                                }
                                var polizaBL = new PolizaBL();
                                polizas.ToList().ForEach(datos =>
                                {
                                    datos.OrganizacionID         = organizacionID;
                                    datos.UsuarioCreacionID      = usuarioID;
                                    datos.ArchivoEnviadoServidor = 1;
                                });
                                polizaBL.GuardarServicioPI(polizas, TipoPoliza.EntradaCompraMateriaPrima);
                                pdf = poliza.ImprimePoliza(recepcionProducto, polizas);
                            }

                            #endregion POLIZA

                            transaction.Complete();
                        }
                    }
                }
                return(pdf);
            }
            catch (ExcepcionServicio ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
        }
        private void Buscar()
        {
            if (txtOrdenCompra.Text != "")
            {
                try
                {
                    if (!string.IsNullOrEmpty(servidor) && !string.IsNullOrEmpty(baseDatos))
                    {
                        string conexion =
                            string.Format(
                                @"Initial Catalog={0};Data Source={1};User ID=usrsoporte;Password=usrsoporte", baseDatos,
                                servidor);

                        var recepcionProductoPl = new RecepcionProductoPL();
                        recepcionProductoCompra = new RecepcionProductoInfo();
                        recepcionProductoCompra.FolioOrdenCompra = txtOrdenCompra.Text;

                        recepcionProductoCompra = recepcionProductoPl.ObtenerRecepcionVista(recepcionProductoCompra,
                                                                                            organizacionId, conexion);

                        if (recepcionProductoCompra != null)
                        {
                            txtProveedor.Text = recepcionProductoCompra.Proveedor.Descripcion;
                            txtFecha.Text     =
                                recepcionProductoCompra.FechaSolicitud.ToShortDateString()
                                .ToString(CultureInfo.InvariantCulture);
                            gbDatos.IsEnabled             = true;
                            dgRecepcionCompra.ItemsSource = new List <RecepcionProductoDetalleInfo>();
                            dgRecepcionCompra.ItemsSource = recepcionProductoCompra.ListaRecepcionProductoDetalle;
                        }
                        else
                        {
                            gbDatos.IsEnabled = false;
                            renglon           = -1;
                            LimpiarCampos();
                            recepcionProducto = new RecepcionProductoInfo();
                            recepcionProducto.ListaRecepcionProductoDetalle = new List <RecepcionProductoDetalleInfo>();
                            recepcionProductoCompra = new RecepcionProductoInfo();
                            recepcionProductoCompra.ListaRecepcionProductoDetalle =
                                new List <RecepcionProductoDetalleInfo>();

                            dgRecepcionCompra.ItemsSource = new List <RecepcionProductoDetalleInfo>();
                            dgRecepcion.ItemsSource       = new List <RecepcionProductoDetalleInfo>();
                            SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                              Properties.Resources.RecepcionProducto_CompraInvalida,
                                              MessageBoxButton.OK,
                                              MessageImage.Stop);
                            txtOrdenCompra.Focus();
                        }
                    }
                    else
                    {
                        renglon = -1;
                        LimpiarCampos();
                        recepcionProducto = new RecepcionProductoInfo();
                        recepcionProducto.ListaRecepcionProductoDetalle = new List <RecepcionProductoDetalleInfo>();
                        recepcionProductoCompra = new RecepcionProductoInfo();
                        recepcionProductoCompra.ListaRecepcionProductoDetalle =
                            new List <RecepcionProductoDetalleInfo>();

                        dgRecepcionCompra.ItemsSource = new List <RecepcionProductoDetalleInfo>();
                        dgRecepcion.ItemsSource       = new List <RecepcionProductoDetalleInfo>();
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.RecepcionProducto_msgErrorAlObtenerParametros,
                                          MessageBoxButton.OK,
                                          MessageImage.Stop);
                        txtOrdenCompra.Focus();
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                }
            }
            else
            {
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.RecepcionProducto_IngresarFolioOrdenCompra,
                                  MessageBoxButton.OK,
                                  MessageImage.Stop);
                txtOrdenCompra.Focus();
            }
        }
Exemple #15
0
        private IList <PolizaInfo> ObtenerPolizas(RecepcionProductoInfo recepcionProducto)
        {
            var polizaCompraMateriaPrima = new List <PolizaInfo>();

            int organizacionID            = recepcionProducto.Almacen.Organizacion.OrganizacionID;
            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(organizacionID);

            if (organizacion == null)
            {
                organizacion = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }

            TipoPolizaInfo tipoPoliza =
                TiposPoliza.FirstOrDefault(
                    clave => clave.TipoPolizaID == TipoPoliza.EntradaCompraMateriaPrima.GetHashCode());

            if (tipoPoliza == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA",
                                                          TipoPoliza.EntradaCompraMateriaPrima));
            }

            string postFijoRef3 = tipoPoliza.PostFijoRef3;

            var ref3 = new StringBuilder();

            ref3.Append("03");
            ref3.Append(
                string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft(
                    10, ' '));
            ref3.Append(new Random(10).Next(10, 20));
            ref3.Append(new Random(30).Next(30, 40));
            ref3.Append(DateTime.Now.Millisecond);
            ref3.Append(postFijoRef3);

            string numeroDocumento = ObtenerNumeroReferencia;

            IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP();
            int almacenID = recepcionProducto.Almacen.AlmacenID;
            IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(almacenID);
            IList <UnidadMedicionInfo>     unidadesMedicion   = ObtenerUnidadesMedicion();

            var    linea          = 1;
            string textoDocumento = tipoPoliza.TextoDocumento;
            string tipoMovimiento = tipoPoliza.ClavePoliza;

            DateTime fecha        = recepcionProducto.FechaRecepcion;
            string   archivoFolio = ObtenerArchivoFolio(fecha);
            int      folio        = recepcionProducto.FolioRecepcion;

            ParametroOrganizacionInfo parametroCentroCosto =
                ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID,
                                                     ParametrosEnum.CTACENTROCOSTOMP.ToString());

            if (parametroCentroCosto == null)
            {
                throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO"));
            }

            IList <RecepcionProductoDetalleInfo> detallesProducto = recepcionProducto.ListaRecepcionProductoDetalle;
            RecepcionProductoDetalleInfo         detalle;
            DatosPolizaInfo        datos;
            PolizaInfo             polizaSalida;
            CuentaSAPInfo          cuentaSAP;
            ClaseCostoProductoInfo almacenProducto;
            CuentaSAPInfo          cuentaIva;
            UnidadMedicionInfo     unidadMedicion = null;

            for (int indexDetalle = 0; indexDetalle < detallesProducto.Count; indexDetalle++)
            {
                detalle         = detallesProducto[indexDetalle];
                almacenProducto =
                    almacenesProductos.FirstOrDefault(prod => prod.ProductoID == detalle.Producto.ProductoId);
                if (almacenProducto == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO",
                                                              detalle.Producto.Descripcion, "NO CONFIGURADA"));
                }
                cuentaSAP =
                    cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID);
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO",
                                                              detalle.Producto.Descripcion, "NO CONFIGURADA"));
                }
                unidadMedicion =
                    unidadesMedicion.FirstOrDefault(clave => clave.UnidadID == detalle.Producto.UnidadMedicion.UnidadID);
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroDocumento,
                    FechaEntrada      = fecha,
                    Folio             = folio.ToString(),
                    ClaseDocumento    = postFijoRef3,
                    Importe           = string.Format("{0}", detalle.Importe.ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(linea++),
                    ImporteIva        = "0",
                    Ref3             = ref3.ToString(),
                    Division         = organizacion.Division,
                    ArchivoFolio     = archivoFolio,
                    Cuenta           = cuentaSAP.CuentaSAP,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    CentroCosto      =
                        cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto)
                                        ? parametroCentroCosto.Valor
                                        : string.Empty,
                    PesoOrigen    = Math.Round(detalle.Cantidad, 0),
                    TipoDocumento = textoDocumento,
                    Concepto      = String.Format("{0}-{1} {2} {3} {4} {5}",
                                                  tipoMovimiento,
                                                  folio, detalle.Cantidad.ToString("N0")
                                                  , unidadMedicion.ClaveUnidad
                                                  , detalle.Producto.Descripcion, postFijoRef3),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizaCompraMateriaPrima.Add(polizaSalida);
            }
            cuentaIva = cuentasSAP.FirstOrDefault(
                clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta));
            if (cuentaIva == null)
            {
                throw new ExcepcionServicio(string.Format("{0} {1}", "NO EXISTE CONFIGURACIONES PARA LA CUENTA",
                                                          organizacion.Iva.Descripcion));
            }
            ParametroGeneralInfo parametroGeneralProductos =
                ObtenerParametroGeneralPorClave(ParametrosEnum.PRODIVAALM.ToString());
            List <int> productosGeneranIVA =
                parametroGeneralProductos.Valor.Split('|').Select(x => Convert.ToInt32(x)).ToList();
            var medicamentosConIva = productosGeneranIVA.Select(x => new RecepcionProductoDetalleInfo
            {
                Producto = new ProductoInfo
                {
                    ProductoId =
                        x
                }
            }).ToList();
            decimal importe =
                detallesProducto.Where(fam => fam.Producto.Familia.FamiliaID != FamiliasEnum.Medicamento.GetHashCode()).
                Sum(imp => imp.Importe);
            decimal importeMedicamentosIva = (from det in detallesProducto
                                              join med in medicamentosConIva on det.Producto.ProductoId equals
                                              med.Producto.ProductoId
                                              select det.Importe).Sum();

            importe = importe + importeMedicamentosIva;
            decimal importeIva = importe * (organizacion.Iva.TasaIva / 100);

            importe = importe + importeIva;
            decimal cantidad =
                detallesProducto.Where(fam => fam.Producto.Familia.FamiliaID != FamiliasEnum.Medicamento.GetHashCode()).
                Intersect(medicamentosConIva).
                Sum(kgs => kgs.Cantidad);
            decimal cantidadMedicamentosIva = (from det in detallesProducto
                                               join med in medicamentosConIva on det.Producto.ProductoId equals
                                               med.Producto.ProductoId
                                               select det.Cantidad).Sum();

            cantidad += cantidadMedicamentosIva;
            if (importe > 0)
            {
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroDocumento,
                    FechaEntrada      = fecha,
                    Folio             = folio.ToString(),
                    ClaseDocumento    = postFijoRef3,
                    Importe           = string.Format("{0}", importeIva.ToString("F2")),
                    IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar,
                    Division          = organizacion.Division,
                    Renglon           = Convert.ToString(linea++),
                    ImporteIva        = importe.ToString("F2"),
                    Ref3              = ref3.ToString(),
                    ArchivoFolio      = archivoFolio,
                    Cuenta            = cuentaIva.CuentaSAP,
                    DescripcionCosto  = cuentaIva.Descripcion,
                    PesoOrigen        = Math.Round(cantidad, 0),
                    TipoDocumento     = textoDocumento,
                    ClaveImpuesto     = ClaveImpuesto,
                    CondicionImpuesto = CondicionImpuesto,
                    Concepto          = String.Format("{0}-{1} {2} {3} {4}",
                                                      tipoMovimiento,
                                                      folio, cantidad.ToString("N0")
                                                      , unidadMedicion.ClaveUnidad
                                                      , postFijoRef3),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizaCompraMateriaPrima.Add(polizaSalida);
            }
            importe  = detallesProducto.Sum(imp => imp.Importe);
            cantidad = detallesProducto.Sum(kgs => kgs.Cantidad);
            datos    = new DatosPolizaInfo
            {
                NumeroReferencia  = numeroDocumento,
                FechaEntrada      = fecha,
                Folio             = folio.ToString(),
                ClaveProveedor    = recepcionProducto.Proveedor.CodigoSAP,
                ClaseDocumento    = postFijoRef3,
                Importe           = string.Format("{0}", ((importe + importeIva) * -1).ToString("F2")),
                IndicadorImpuesto = String.Empty,
                Renglon           = Convert.ToString(linea),
                ImporteIva        = "0",
                Ref3             = ref3.ToString(),
                Division         = organizacion.Division,
                ArchivoFolio     = archivoFolio,
                DescripcionCosto = recepcionProducto.Proveedor.Descripcion,
                PesoOrigen       = Math.Round(cantidad, 0),
                TipoDocumento    = textoDocumento,
                Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                 tipoMovimiento,
                                                 folio, cantidad.ToString("N0"),
                                                 unidadMedicion.ClaveUnidad, postFijoRef3),
                Sociedad = organizacion.Sociedad,
                Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
            };
            polizaSalida = GeneraRegistroPoliza(datos);
            polizaCompraMateriaPrima.Add(polizaSalida);

            return(polizaCompraMateriaPrima);
        }
Exemple #16
0
 /// <summary>
 /// Obtiene una lista de Recepcion Producto
 /// con su detalle
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 internal static List <RecepcionProductoInfo> ObtenerRecepcionProductoConciliacionPorAlmacenMovimientoXML(IDataReader reader)
 {
     try
     {
         Logger.Info();
         var recepcionProductos = new List <RecepcionProductoInfo>();
         RecepcionProductoInfo recepcionProducto;
         while (reader.Read())
         {
             recepcionProducto = new RecepcionProductoInfo
             {
                 Almacen = new AlmacenInfo
                 {
                     AlmacenID    = Convert.ToInt32(reader["AlmacenID"]),
                     Organizacion = new OrganizacionInfo
                     {
                         OrganizacionID = Convert.ToInt32(reader["OrganizacionID"])
                     }
                 },
                 RecepcionProductoId = Convert.ToInt32(reader["RecepcionProductoID"]),
                 AlmacenMovimientoId = Convert.ToInt64(reader["AlmacenMovimientoID"]),
                 Factura             = Convert.ToString(reader["Factura"]),
                 FechaRecepcion      = Convert.ToDateTime(reader["FechaRecepcion"]),
                 FolioRecepcion      = Convert.ToInt32(reader["FolioRecepcion"]),
                 FolioOrdenCompra    = Convert.ToString(reader["FolioOrdenCompra"]),
                 FechaSolicitud      = Convert.ToDateTime(reader["FechaSolicitud"]),
                 Proveedor           = new ProveedorInfo
                 {
                     ProveedorID = Convert.ToInt32(reader["ProveedorID"]),
                     Descripcion = Convert.ToString(reader["Proveedor"]),
                     CodigoSAP   = Convert.ToString(reader["CodigoSAP"])
                 }
             };
             recepcionProductos.Add(recepcionProducto);
         }
         reader.NextResult();
         var recepcionProductoDetalles = new List <RecepcionProductoDetalleInfo>();
         RecepcionProductoDetalleInfo recepcionProductoDetalle;
         while (reader.Read())
         {
             recepcionProductoDetalle = new RecepcionProductoDetalleInfo
             {
                 Cantidad       = Convert.ToDecimal(reader["Cantidad"]),
                 Importe        = Convert.ToDecimal(reader["Importe"]),
                 PrecioPromedio = Convert.ToDecimal(reader["PrecioPromedio"]),
                 Producto       = new ProductoInfo
                 {
                     ProductoId  = Convert.ToInt32(reader["ProductoID"]),
                     Descripcion = Convert.ToString(reader["Producto"]),
                     Familia     = new FamiliaInfo
                     {
                         FamiliaID   = Convert.ToInt32(reader["FamiliaID"]),
                         Descripcion = Convert.ToString(reader["Familia"])
                     },
                     SubFamilia = new SubFamiliaInfo
                     {
                         SubFamiliaID = Convert.ToInt32(reader["SubFamiliaID"]),
                         Descripcion  = Convert.ToString(reader["SubFamilia"]),
                         Familia      = new FamiliaInfo
                         {
                             FamiliaID   = Convert.ToInt32(reader["FamiliaID"]),
                             Descripcion = Convert.ToString(reader["Familia"])
                         },
                     },
                     UnidadMedicion = new UnidadMedicionInfo
                     {
                         UnidadID = Convert.ToInt32(reader["UnidadID"])
                     }
                 },
                 RecepcionProductoId        = Convert.ToInt32(reader["RecepcionProductoID"]),
                 RecepcionProductoDetalleId = Convert.ToInt32(reader["RecepcionProductoDetalleID"])
             };
             recepcionProductoDetalles.Add(recepcionProductoDetalle);
         }
         recepcionProductos.ForEach(datos =>
         {
             datos.ListaRecepcionProductoDetalle =
                 recepcionProductoDetalles.Where(
                     id => id.RecepcionProductoId == datos.RecepcionProductoId).
                 ToList();
         });
         return(recepcionProductos);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Obtiene los parametros necesarios para
        /// la ejecucion del procedimiento almacenado
        /// RecepcionProducto_ObtenerPorFolioOrganizacion
        /// </summary>
        /// <param name="recepcionProducto"></param>
        /// <returns></returns>
        internal static Dictionary <string, object> ObtenerParametrosObtenerPorFolioOrganizacion(RecepcionProductoInfo recepcionProducto)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                parametros = new Dictionary <string, object>
                {
                    { "@FolioRecepcion", recepcionProducto.FolioRecepcion },
                    { "@OrganizacionID", recepcionProducto.Almacen.Organizacion.OrganizacionID }
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
        internal static Dictionary <string, object> ObtenerParametrosObtenerRecepcionPorFolio(RecepcionProductoInfo recepcionProductoCompra)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                parametros = new Dictionary <string, object>
                {
                    { "@FolioOrdenCompra", recepcionProductoCompra.FolioOrdenCompra },
                    { "@Activo", EstatusEnum.Activo }
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
Exemple #19
0
        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);
        }