Exemplo n.º 1
0
        private static InventarioInfo CargarInventarioInfo(IDataReader dr)
        {
            int colCount = dr.FieldCount;
            var values   = new object[colCount];

            #region Indices
            int indInventarioId     = dr.GetOrdinal("InventarioId");
            int indAlmacenId        = dr.GetOrdinal("AlmacenId");
            int indProductoId       = dr.GetOrdinal("ProductoId");
            int indAlmacen          = dr.GetOrdinal("Almacen");
            int indProducto         = dr.GetOrdinal("Producto");
            int indInventarioActual = dr.GetOrdinal("InventarioActual");
            int indInventarioMinimo = dr.GetOrdinal("InventarioMinimo");
            int indTipoNegocioId    = dr.GetOrdinal("TipoNegocioId");
            #endregion

            var inventarioInfo = new InventarioInfo();
            dr.GetValues(values);

            #region Campos
            inventarioInfo.InventarioId = Convert.ToInt32(values[indInventarioId]);
            inventarioInfo.AlmacenId    = Convert.ToInt32(values[indAlmacenId]);
            inventarioInfo.ProductoId   = Convert.ToInt32(values[indProductoId]);
            inventarioInfo.Almacen      = Convert.ToString(values[indAlmacen]);
            inventarioInfo.Producto     = Convert.ToString(values[indProducto]);

            inventarioInfo.InventarioActual = Convert.ToDecimal(values[indInventarioActual]);
            inventarioInfo.InventarioMinimo = Convert.ToDecimal(values[indInventarioMinimo]);
            inventarioInfo.TipoNegocioId    = Convert.ToInt32(values[indTipoNegocioId]);

            #endregion

            return(inventarioInfo);
        }
Exemplo n.º 2
0
        protected void btnGuardarIngresoAlmacen_OnClick(object sender, EventArgs e)
        {
            var usuarioInfo     = ObtenerUsuarioInfo();
            var script          = new StringBuilder(String.Empty);
            var mensaje         = String.Empty;
            var productoId      = Convert.ToInt32(hdnProductoId.Value);
            var compraDetalleId = Convert.ToInt32(hdnCompraDetalleId.Value);

            #region Datos Venta
            var inventarioInfo = new InventarioInfo();
            inventarioInfo.AlmacenId         = Convert.ToInt32(ddlAlmacen.SelectedValue);
            inventarioInfo.ProductoId        = productoId;
            inventarioInfo.InventarioActual  = Convert.ToInt32(txtCantidad.Text);
            inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
            inventarioInfo.TipoNegocioId     = usuarioInfo.TipoNegocioId;
            #endregion

            //Se crea el registro en la tabla inventario
            new Negocio.Inventario().Insertar(inventarioInfo);

            //Se actualiza el flag en la tabla Compradetalle, la asignacion es del 100%
            Negocio.Helper.ActualizarValorTabla("ComprasDetalle", "AsignacionAlmacen", "1", "ComprasDetalleId", compraDetalleId.ToString());

            mensaje = "Se realizo el ingreso correctamente";
            script.Append("MostrarMensaje('" + mensaje + "');");
            script.Append("LimpiarIngresoAlmacen();");
            script.Append("var modalDialog = $find('mpeVenta'); modalDialog.hide();");

            CargarDatos();
            RegistrarScript(script.ToString(), "GuardarVenta");
        }
Exemplo n.º 3
0
        public int Insertar(InventarioInfo inventarioInfo)
        {
            int resultado = 0;

            try
            {
                using (var oConnection = new SqlConnection(HelperAccesoDatos.GetCadenaConexion()))
                {
                    var sqlComando = new SqlCommand {
                        Connection = oConnection, CommandText = "InsertarInventario", CommandType = CommandType.StoredProcedure
                    };

                    sqlComando.Parameters.Add("AlmacenId", SqlDbType.Int).Value           = inventarioInfo.AlmacenId;
                    sqlComando.Parameters.Add("ProductoId", SqlDbType.Int).Value          = inventarioInfo.ProductoId;
                    sqlComando.Parameters.Add("NuevoInventario", SqlDbType.Decimal).Value = inventarioInfo.InventarioActual;
                    sqlComando.Parameters.Add("TipoNegocioId", SqlDbType.Int).Value       = inventarioInfo.TipoNegocioId;
                    sqlComando.Parameters.Add("UsuarioCreacionId", SqlDbType.Int).Value   = inventarioInfo.UsuarioCreacionId;

                    oConnection.Open();
                    resultado = Convert.ToInt32(sqlComando.ExecuteScalar());

                    oConnection.Close();
                }
            }
            catch (Exception ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaAccesoDatos);
                if (rethrow)
                {
                    throw ex;
                }
            }
            return(resultado);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Guarda el inventario de una bodega para el calculo de nivel de servicio.
        /// </summary>
        /// <param name="item"></param>
        public bool InsertNivelServicio(InventarioInfo item)
        {
            try
            {
                return(module.InsertNivelServicio(item));
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));

                return(false);
            }
        }
        public int Insertar(InventarioInfo inventarioInfo)
        {
            int resultado = 0;

            try
            {
                resultado = _inventarioAccesoDatos.Insertar(inventarioInfo);
            }
            catch (Exception ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaLogicaNegocio);
                if (rethrow)
                {
                    throw;
                }
            }
            return(resultado);
        }
Exemplo n.º 6
0
        /// <summary>
        /// lista todos los Inventarios existentes.
        /// </summary>
        /// <returns></returns>
        public List <InventarioInfo> List()
        {
            db.SetParameterValue(commandInventario, "i_operation", 'S');
            db.SetParameterValue(commandInventario, "i_option", 'A');

            List <InventarioInfo> col = new List <InventarioInfo>();

            IDataReader dr = null;

            InventarioInfo m = null;

            try
            {
                dr = db.ExecuteReader(commandInventario);

                while (dr.Read())
                {
                    m = Factory.GetInventario(dr);

                    col.Add(m);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));

                bool rethrow = ExceptionPolicy.HandleException(ex, "DataAccess Policy");

                if (rethrow)
                {
                    throw;
                }
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }

            return(col);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Guarda el inventario de una bodega para el calculo de nivel de servicio.
        /// </summary>
        /// <param name="item"></param>
        public bool InsertNivelServicio(InventarioInfo item)
        {
            bool okTrans = false;

            IDataReader dr = null;

            try
            {
                db.SetParameterValue(commandInventario, "i_operation", 'I');
                db.SetParameterValue(commandInventario, "i_option", 'B');

                db.SetParameterValue(commandInventario, "i_inv_bodega", item.Bodega);
                db.SetParameterValue(commandInventario, "i_inv_referencia", item.Referencia);
                db.SetParameterValue(commandInventario, "i_inv_ccostos", item.CCostos);
                db.SetParameterValue(commandInventario, "i_inv_saldo", item.Saldo);

                dr = db.ExecuteReader(commandInventario);

                okTrans = true;
            }
            catch (Exception ex)
            {
                okTrans = false;

                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));

                bool rethrow = ExceptionPolicy.HandleException(ex, "DataAccess Policy");

                if (rethrow)
                {
                    throw;
                }
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }
            return(okTrans);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Lista los inventarios por Referencia por CCostos y por Bodega para el calculo de nivel de servicio.
        /// </summary>
        /// <param name="Bodega"></param>
        /// <param name="Referencia"></param>
        /// <param name="CCostos"></param>
        /// <returns></returns>
        public InventarioInfo ListxBodegaxRefxCcostosNivelServicio(string Bodega, string Referencia, string CCostos)
        {
            db.SetParameterValue(commandInventario, "i_operation", 'S');
            db.SetParameterValue(commandInventario, "i_option", 'D');
            db.SetParameterValue(commandInventario, "i_inv_bodega", Bodega);
            db.SetParameterValue(commandInventario, "i_inv_referencia", Referencia);
            db.SetParameterValue(commandInventario, "i_inv_ccostos", CCostos);

            IDataReader dr = null;

            InventarioInfo m = null;

            try
            {
                dr = db.ExecuteReader(commandInventario);

                if (dr.Read())
                {
                    m = Factory.GetInventario(dr);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));

                bool rethrow = ExceptionPolicy.HandleException(ex, "DataAccess Policy");

                if (rethrow)
                {
                    throw;
                }
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }

            return(m);
        }
Exemplo n.º 9
0
        /// METODOS NUEVOS JUTA
        /// /// <summary>
        /// Lista los saldos bodega del mes actual de un plu especifico. y con bodega variable
        /// </summary>
        /// <param name="intPLU"></param>
        /// <returns></returns>
        public InventarioInfo ListSaldosBodegaxPLUVariable(int intPLU, string bodega)
        {
            db.SetParameterValue(commandInventario, "i_operation", 'S');
            db.SetParameterValue(commandInventario, "i_option", 'E');
            db.SetParameterValue(commandInventario, "i_plu", intPLU);
            db.SetParameterValue(commandInventario, "i_inv_bodega", bodega);

            IDataReader dr = null;

            InventarioInfo m = null;

            try
            {
                dr = db.ExecuteReader(commandInventario);

                while (dr.Read())
                {
                    m = Factory.GetInventario(dr);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));

                bool rethrow = ExceptionPolicy.HandleException(ex, "DataAccess Policy");

                if (rethrow)
                {
                    throw;
                }
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }

            return(m);
        }
Exemplo n.º 10
0
        public InventarioInfo ListSaldosBodegaxPLUxEmpresaria(string bodega, int intPLU)
        {
            this.db.SetParameterValue(this.commandInventario, "i_operation", 'S');
            this.db.SetParameterValue(this.commandInventario, "i_option", 'G');
            this.db.SetParameterValue(this.commandInventario, "i_plu", intPLU);
            this.db.SetParameterValue(this.commandInventario, "i_inv_bodega", bodega);
            IDataReader    dr         = null;
            InventarioInfo inventario = null;

            try
            {
                dr = this.db.ExecuteReader(this.commandInventario);
                while (true)
                {
                    if (!dr.Read())
                    {
                        break;
                    }
                    inventario = Factory.GetInventario(dr);
                }
            }
            catch (Exception exception)
            {
                Trace.WriteLine($"NIVI Error: {exception.Message} , NameSpace: {MethodBase.GetCurrentMethod().DeclaringType.Namespace}, Clase: {MethodBase.GetCurrentMethod().DeclaringType.Name}, Metodo: {MethodBase.GetCurrentMethod().Name} ");
                if (ExceptionPolicy.HandleException(exception, "DataAccess Policy"))
                {
                    throw;
                }
            }
            finally
            {
                if (!ReferenceEquals(dr, null))
                {
                    dr.Close();
                }
            }
            return(inventario);
        }
        public static string AnularComprobante(int compraId)
        {
            var mensaje = String.Empty;

            try
            {
                var usuarioInfo           = ObtenerUsuarioInfo();
                var compraDetalleOriginal = new Negocio.Compra().ListarComprasDetalle(0, compraId);                //detalle compra original

                var tieneSaldoInventario = true;

                var almacenRevisar = compraDetalleOriginal.Select(p => p.AlmacenId).Distinct();
                foreach (var almacen in almacenRevisar)
                {
                    var productosAlmacen = compraDetalleOriginal.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct();
                    foreach (var producto in productosAlmacen)
                    {
                        var inventarioReducir = compraDetalleOriginal.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad);

                        //Se consulta a BD si hay saldo
                        var saldoActual = new Negocio.Inventario().Listar(almacen, producto, usuarioInfo.TipoNegocioId);
                        if (saldoActual.Count() > 0 && !((saldoActual.First().InventarioActual - inventarioReducir) > 0))
                        {
                            tieneSaldoInventario = false;
                            break;
                        }
                    }
                    if (!tieneSaldoInventario)
                    {
                        break;
                    }
                }

                if (tieneSaldoInventario)
                {
                    var glosa = "Anulación de comprobante";
                    Negocio.Helper.ActualizarColumnasTabla("Compras", new string[] { "EstadoComprobanteId", "Glosa", "UsuarioModificacionId", "FechaModificacion" },
                                                           new string[] { Constantes.EstadoComprobanteCompraAnulado.ToString(), glosa, usuarioInfo.UsuarioId.ToString(), DateTime.Now.ToString("yyyyMMdd HH:mm:ss") },
                                                           new string[] { "CompraId" }, new string[] { compraId.ToString() });

                    //Al anular el comprobante, se reduce del inventario
                    #region Actualizacion Almacen
                    //Reduccion de Inventario
                    var almacenesAsignados = compraDetalleOriginal.Select(p => p.AlmacenId).Distinct();

                    foreach (var almacen in almacenesAsignados)
                    {
                        var productosAlmacen = compraDetalleOriginal.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct();
                        foreach (var producto in productosAlmacen)
                        {
                            var inventarioInfo = new InventarioInfo();
                            inventarioInfo.AlmacenId         = almacen;
                            inventarioInfo.ProductoId        = producto;
                            inventarioInfo.InventarioActual  = (-1) * compraDetalleOriginal.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad);
                            inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
                            inventarioInfo.TipoNegocioId     = usuarioInfo.TipoNegocioId;
                            //Se crea el registro en la tabla inventario
                            new Negocio.Inventario().Actualizar(inventarioInfo);
                        }
                    }

                    #endregion

                    mensaje = compraId + "@" + "El Comprobante se anuló correctamente.";
                }
                else
                {
                    mensaje = "-2" + "@" + "No hay saldo disponible en el Inventario.";
                }
            }
            catch (Exception ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion);
                mensaje = "-1";
                mensaje = mensaje + "@" + (rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion);
            }

            return(mensaje);
        }
        public static string GenerarComprobante(int compraId, int proveedorId, string tipoComprobanteId, string serie, string numeroComprobante, string fechaEmision,
                                                int monedaId, decimal montoCompra, decimal montoIgv, decimal montoTotal, string glosa, int motivoIngresoId)
        {
            var mensaje = String.Empty;

            try
            {
                var usuarioInfo = ObtenerUsuarioInfo();

                #region Compra
                var compraInfo = new CompraInfo();

                compraInfo.CompraId            = compraId;
                compraInfo.ProveedorId         = proveedorId;
                compraInfo.UsuarioCreacionId   = usuarioInfo.UsuarioId;
                compraInfo.TipoDocumentoId     = Convert.ToInt32(tipoComprobanteId);
                compraInfo.NumeroComprobante   = numeroComprobante;
                compraInfo.NumeroSerie         = serie;
                compraInfo.Glosa               = glosa;
                compraInfo.FechaEmision        = DateTime.ParseExact(fechaEmision, "dd/MM/yyyy", null);
                compraInfo.EstadoComprobanteId = Constantes.EstadoComprobanteCompraIngresado;
                compraInfo.SubTotal            = montoCompra;
                compraInfo.Igv             = montoIgv;
                compraInfo.Total           = montoTotal;
                compraInfo.MotivoIngresoId = motivoIngresoId;
                compraInfo.TipoNegocioId   = usuarioInfo.TipoNegocioId;
                compraInfo.MonedaId        = monedaId;

                #endregion
                if (compraId > 0)
                {
                    var compraDetalleListaInfo = (List <ComprasDetalleInfo>)HttpContext.Current.Session["CompraDetalle"];  //detalle compra modificado
                    var compraDetalleOriginal  = new Negocio.Compra().ListarComprasDetalle(0, compraId);                   //detalle compra original

                    var listaIncrementaInventario = new List <ComprasDetalleInfo>();
                    var listaReduceInventario     = new List <ComprasDetalleInfo>();
                    var listaEliminados           = new List <ComprasDetalleInfo>();

                    //var ventaDetalleListaInfo = (List<VentaDetalleInfo>)grvItem.DataSource;
                    foreach (var cdModificada in compraDetalleListaInfo)
                    {
                        var detOriginal = (from cdOriginal in compraDetalleOriginal where cdOriginal.ComprasDetalleId == cdModificada.ComprasDetalleId select cdOriginal);
                        if (detOriginal.Count() > 0)
                        {
                            if (cdModificada.AlmacenId == detOriginal.First().AlmacenId)
                            {
                                if (cdModificada.ProductoId == detOriginal.First().ProductoId)
                                {
                                    if (cdModificada.Cantidad > detOriginal.First().Cantidad)                                    //Incremento de inventario
                                    {
                                        var diferencia = cdModificada.Cantidad - detOriginal.First().Cantidad;
                                        detOriginal.First().Cantidad = diferencia;
                                        listaIncrementaInventario.Add(detOriginal.First());
                                    }
                                    else if (cdModificada.Cantidad < detOriginal.First().Cantidad)                                    //reduccion de inventario
                                    {
                                        var diferencia = cdModificada.Cantidad - detOriginal.First().Cantidad;
                                        detOriginal.First().Cantidad = Math.Abs(diferencia);
                                        listaReduceInventario.Add(detOriginal.First());
                                    }
                                }
                                else
                                {
                                    //Al ser un producto distinto, el inventario original debe de reducirse y el modificado debe de agregarse
                                    listaIncrementaInventario.Add(cdModificada);
                                    listaReduceInventario.Add(detOriginal.First());
                                }
                            }
                            else
                            {
                                //Al ser un alamcen distinto, no importa el producto, el inventario original debe de reducirse y el modificado debe de agregarse
                                listaIncrementaInventario.Add(cdModificada);
                                listaReduceInventario.Add(detOriginal.First());
                            }
                        }
                        else
                        {
                            listaIncrementaInventario.Add(cdModificada);
                            //detOriginal.First().Eliminado = 1;
                            //listaReduceInventario.Add(detOriginal.First());
                            //listaEliminados.Add(detOriginal.First());
                        }
                    }

                    //buscamos los items eliminados de la lista original para reducir inventario y eliminar del detalle
                    var codigosDetalleCompra = compraDetalleListaInfo.Where(p => p.ComprasDetalleId > 0).Select(x => x.ComprasDetalleId).ToArray();

                    listaEliminados.AddRange(compraDetalleOriginal.Where(p => !codigosDetalleCompra.Contains(p.ComprasDetalleId)));
                    listaReduceInventario.AddRange(compraDetalleOriginal.Where(p => !codigosDetalleCompra.Contains(p.ComprasDetalleId)));

                    var tieneSaldoInventario = true;

                    var almacenRevisar = listaReduceInventario.Select(p => p.AlmacenId).Distinct();
                    foreach (var almacen in almacenRevisar)
                    {
                        var productosAlmacen = listaReduceInventario.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct();
                        foreach (var producto in productosAlmacen)
                        {
                            var inventarioReducir = listaReduceInventario.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad);

                            //Se consulta a BD si hay saldo
                            var saldoActual = new Negocio.Inventario().Listar(almacen, producto, usuarioInfo.TipoNegocioId);
                            if (saldoActual.Count() > 0 && !((saldoActual.First().InventarioActual - inventarioReducir) > 0))
                            {
                                tieneSaldoInventario = false;
                                break;
                            }
                        }
                        if (!tieneSaldoInventario)
                        {
                            break;
                        }
                    }

                    if (tieneSaldoInventario)
                    {
                        new Negocio.Compra().ActualizarCompra(compraInfo);

                        #region Actualizacion Compra Detalle
                        //Actualizacion de detalle de compra
                        foreach (var compraDetalle in compraDetalleListaInfo)
                        {
                            if (compraDetalle.Eliminado == 0)
                            {
                                var compraDetalleInfo = new ComprasDetalleInfo();
                                compraDetalleInfo.CompraId         = compraId;
                                compraDetalleInfo.ComprasDetalleId = compraDetalle.ComprasDetalleId;
                                compraDetalleInfo.ProductoId       = compraDetalle.ProductoId;
                                compraDetalleInfo.Cantidad         = compraDetalle.Cantidad;
                                compraDetalleInfo.PrecioUnitario   = compraDetalle.PrecioUnitario;
                                compraDetalleInfo.SubTotal         = compraDetalle.SubTotal;
                                compraDetalleInfo.Igv       = compraDetalle.Igv;
                                compraDetalleInfo.Total     = compraDetalle.Total;
                                compraDetalleInfo.AlmacenId = compraDetalle.AlmacenId;

                                if (compraDetalle.ComprasDetalleId > 0)
                                {
                                    compraDetalleInfo.UsuarioModificacionId = usuarioInfo.UsuarioId;
                                    new Negocio.Compra().ActualizarCompraDetalle(compraDetalleInfo);
                                }
                                else
                                {
                                    compraDetalleInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
                                    new Negocio.Compra().InsertarCompraDetalle(compraDetalleInfo);
                                }
                            }
                        }
                        //Eliminacion de registros de compra detalle
                        foreach (var compraDetalle in listaEliminados)
                        {
                            new Negocio.Compra().EliminarCompraDetalle(compraDetalle.ComprasDetalleId);
                        }

                        #endregion

                        #region Actualizacion Almacen
                        //Incremento de Inventario
                        var almacenesAsignados = listaIncrementaInventario.Select(p => p.AlmacenId).Distinct();
                        foreach (var almacen in almacenesAsignados)
                        {
                            var productosAlmacen = listaIncrementaInventario.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct();
                            foreach (var producto in productosAlmacen)
                            {
                                var inventarioInfo = new InventarioInfo();
                                inventarioInfo.AlmacenId         = almacen;
                                inventarioInfo.ProductoId        = producto;
                                inventarioInfo.InventarioActual  = listaIncrementaInventario.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad);
                                inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
                                inventarioInfo.TipoNegocioId     = usuarioInfo.TipoNegocioId;
                                //Se crea el registro en la tabla inventario
                                new Negocio.Inventario().Insertar(inventarioInfo);
                            }
                        }

                        //Reduccion de Inventario
                        almacenesAsignados = listaReduceInventario.Select(p => p.AlmacenId).Distinct();
                        foreach (var almacen in almacenesAsignados)
                        {
                            var productosAlmacen = listaReduceInventario.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct();
                            foreach (var producto in productosAlmacen)
                            {
                                var inventarioInfo = new InventarioInfo();
                                inventarioInfo.AlmacenId             = almacen;
                                inventarioInfo.ProductoId            = producto;
                                inventarioInfo.InventarioActual      = (-1) * listaReduceInventario.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad);
                                inventarioInfo.UsuarioModificacionId = usuarioInfo.UsuarioId;
                                inventarioInfo.TipoNegocioId         = usuarioInfo.TipoNegocioId;
                                //Se crea el registro en la tabla inventario
                                new Negocio.Inventario().Actualizar(inventarioInfo);
                            }
                        }

                        #endregion

                        mensaje = compraId + "@" + "El Comprobante se actualizó correctamente.";
                    }
                    else
                    {
                        mensaje = "-2" + "@" + "No hay saldo disponible en el Inventario.";
                    }
                }
                else
                {
                    compraId = new Negocio.Compra().InsertarCompra(compraInfo);

                    #region Compra Detalle
                    var compraDetalleListaInfo = (List <ComprasDetalleInfo>)HttpContext.Current.Session["CompraDetalle"];
                    //var ventaDetalleListaInfo = (List<VentaDetalleInfo>)grvItem.DataSource;
                    foreach (var vd in compraDetalleListaInfo)
                    {
                        var compraDetalleInfo = new ComprasDetalleInfo();
                        compraDetalleInfo.CompraId       = compraId;
                        compraDetalleInfo.ProductoId     = vd.ProductoId;
                        compraDetalleInfo.Cantidad       = vd.Cantidad;
                        compraDetalleInfo.PrecioUnitario = vd.PrecioUnitario;
                        compraDetalleInfo.SubTotal       = vd.SubTotal;
                        compraDetalleInfo.Igv            = vd.Igv;
                        compraDetalleInfo.Total          = vd.Total;
                        //compraDetalleInfo.AsignacionAlmacen = 1;//por defecto estan asignados
                        compraDetalleInfo.AlmacenId         = vd.AlmacenId;
                        compraDetalleInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;

                        new Negocio.Compra().InsertarCompraDetalle(compraDetalleInfo);
                    }
                    #endregion

                    #region Asignacion Almacen
                    var almacenesAsignados = compraDetalleListaInfo.Select(p => p.AlmacenId).Distinct();
                    foreach (var almacen in almacenesAsignados)
                    {
                        var productosAlmacen = compraDetalleListaInfo.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct();
                        foreach (var producto in productosAlmacen)
                        {
                            var inventarioInfo = new InventarioInfo();
                            inventarioInfo.AlmacenId         = almacen;
                            inventarioInfo.ProductoId        = producto;
                            inventarioInfo.InventarioActual  = compraDetalleListaInfo.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad);
                            inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
                            inventarioInfo.TipoNegocioId     = usuarioInfo.TipoNegocioId;
                            //Se crea el registro en la tabla inventario
                            new Negocio.Inventario().Insertar(inventarioInfo);
                        }
                    }

                    #endregion

                    #region Tabla Movimientos

                    var movimientosInfo = new MovimientosInfo();
                    movimientosInfo.OperacionId       = compraId;
                    movimientosInfo.TipoMovimientoId  = Constantes.TipoMovimientoCompra;
                    movimientosInfo.FechaOperacion    = DateTime.Now;
                    movimientosInfo.Glosa             = String.Empty;
                    movimientosInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;

                    new Negocio.Movimientos().InsertarMovimientos(movimientosInfo);

                    #endregion

                    mensaje = compraId + "@" + "El Comprobante se registró correctamente.";
                }
            }
            catch (Exception ex)
            {
                bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion);
                mensaje = "-1";
                mensaje = mensaje + "@" + (rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion);
            }
            return(mensaje);
        }
Exemplo n.º 13
0
        public PLUInfo ListarxCodigoRapido(PLUInfo ObjPLUInfo)
        {
            PLUInfo lista = new PLUInfo();

            bool    ExcentoIVA           = false; //MRG: Arreglar esta bandera para que se ponga en true si hay IVA x ciudad x zona x articulo x cliente.
            string  CodCiudadCliente     = ObjPLUInfo.SessionEmpresaria.CodCiudadCliente.Trim();
            decimal PrecioCat            = 0;
            decimal IVAPrecioCat         = 0;
            int     CantidadSeleccionada = 0;
            decimal PrecioTotal          = 0;
            decimal PrecioUnitario       = 0;
            int     Cantidad             = 1;
            decimal PrecioCatalogo       = 0;
            decimal ValorIVA             = 0;

            PLUInfo objPLU = new PLUInfo();
            PLU     module = new PLU("conexion");

            PLUInfo objPLUPrecioCat = new PLUInfo();

            CatalogoPluInfo objCatalogoPluInfo = new CatalogoPluInfo();
            CatalogoPlu     objCatalogoPlu     = new CatalogoPlu("conexion");


            objCatalogoPluInfo = objCatalogoPlu.ListxCodigoRapidoSinCatalogo(ObjPLUInfo.CodigoRapido.ToUpper());

            if (objCatalogoPluInfo != null)
            {
                objPLU = module.ListxArticulosxPLUxTipoPrecio(objCatalogoPluInfo.PLU, ((int)TipoPrecioEnum.PrecioEmpresaria).ToString());

                if (objPLU != null)
                {
                    objPLU.CatalogoReal = objCatalogoPluInfo.CatalogoReal;
                    objPLU.CodigoRapido = ObjPLUInfo.CodigoRapido.ToUpper();
                    string   strProducto     = objPLU.NombreProducto.Trim().ToUpper();
                    string[] strProductoList = strProducto.Split(',');
                    objPLU.NombreProducto = strProductoList[0].Trim().ToUpper();
                    objPLU.NombreColor    = strProductoList[1].Trim().ToUpper();
                    objPLU.NombreTalla    = strProductoList[2].Trim().ToUpper();
                    objPLU.IdZona         = ObjPLUInfo.SessionEmpresaria.IdZona.Trim().ToUpper();
                    objPLU.PLU            = objCatalogoPluInfo.PLU;
                    objPLU.Referencia     = objCatalogoPluInfo.Referencia.Trim().ToUpper();
                    objPLU.Campana        = ObjPLUInfo.SessionEmpresaria.Campana.Trim().ToUpper();
                    objPLU.PrecioPuntos   = objPLU.PrecioPuntos;
                    objPLU.PuntosGanados  = objPLU.PuntosGanados;

                    if (!ExcentoIVA)
                    {
                        //()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
                        ArtExcentosxCiudad     objArtExcentosxCiudad     = new ArtExcentosxCiudad("conexion");
                        ArtExcentosxCiudadInfo objArtExcentosxCiudadInfo = new ArtExcentosxCiudadInfo();
                        //()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()

                        //()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
                        //Se valida si el articulo se encuentra excento de iva en la ciudad del cliente.

                        objArtExcentosxCiudadInfo = objArtExcentosxCiudad.ListxCiudadxPlu(ObjPLUInfo.SessionEmpresaria.CodCiudadCliente.Trim(), objPLU.PLU);

                        //Si se encuentra exento el iva debe ser 0.
                        if (objArtExcentosxCiudadInfo != null)
                        {
                            PrecioCat    = objPLU.PrecioSinIVA;
                            IVAPrecioCat = 0;

                            PrecioUnitario = objPLU.PrecioSinIVA;
                            //PrecioCatalogo = objPLU.PrecioSinIVA;
                            ValorIVA = 0;
                        }
                        else
                        {
                            PrecioCat    = objPLU.PrecioSinIVA;
                            IVAPrecioCat = objPLU.IVA;

                            PrecioUnitario = objPLU.PrecioConIVA;
                            //PrecioCatalogo = objPLU.PrecioConIVA;
                            ValorIVA = objPLU.IVA;
                        }
                    }
                    else
                    {
                        PrecioCat      = objPLU.PrecioSinIVA;
                        IVAPrecioCat   = 0;
                        PrecioUnitario = objPLU.PrecioSinIVA;
                        //PrecioCatalogo = objPLU.PrecioSinIVA;
                        ValorIVA = 0;
                    }

                    PrecioTotal          = PrecioUnitario * Cantidad;
                    CantidadSeleccionada = Cantidad;
                    objPLU.Cantidad      = Cantidad;

                    //---------------------------------------------------------------------------------------
                    //Descuento y Consulta la disponibilidad de cada articulo.

                    DescuentoGlod  glod       = new DescuentoGlod("conexion");
                    DescuentoInfo  info3      = new DescuentoInfo();
                    decimal        descuento  = 0M;
                    string         bodegasel  = "";
                    Inventario     inventario = new Inventario("conexion");
                    InventarioInfo info       = new InventarioInfo();

                    string grupodscto = "";
                    if (ObjPLUInfo.SessionEmpresaria.GrupoDescuento != null)
                    {
                        grupodscto = ObjPLUInfo.SessionEmpresaria.GrupoDescuento;
                    }
                    KardexInfo info5 = new Kardex("conexion").ListxArticuloxPLU(Convert.ToInt32(objCatalogoPluInfo.PLU));
                    descuento = this.CalcularDescuentoPrivilegioProdEstrella(info5.UnidadNegocio.Trim(), info5.GrupoProducto.Trim(), ObjPLUInfo.SessionEmpresaria.Campana, objCatalogoPluInfo.CatalogoReal.Trim().ToUpper(), info5.ProdEstrella, PrecioUnitario, grupodscto);
                    bodegasel = "";
                    if (ObjPLUInfo.SessionEmpresaria.Bodegas != null)
                    {
                        bodegasel = ObjPLUInfo.SessionEmpresaria.Bodegas.Bodega;
                    }
                    info = inventario.ListSaldosBodegaxPLUxEmpresaria(bodegasel, Convert.ToInt32(objCatalogoPluInfo.PLU));
                    decimal punitario           = PrecioUnitario; //Ver codigo de arriba xq aqui ya viene sumado o no el IVA excluido.
                    decimal precioempivadesc    = 0M;
                    decimal precioempsiniva     = 0;
                    decimal ivaprecioempresaria = 0;
                    if (ReferenceEquals(info, null))
                    {
                        descuento           = 0M;
                        objPLU.Disponible   = false;
                        precioempsiniva     = 0;
                        ivaprecioempresaria = 0;
                        precioempsiniva     = PrecioCat;
                        precioempivadesc    = PrecioTotal;
                    }
                    else if (info.Saldo > 0M)
                    {
                        //PrecioEmpresaria= objPLU.PrecioTotalConIVA* objPLU.PorcentajeDescuento
                        precioempivadesc = punitario - (punitario * (descuento / 100M));

                        objPLU.Disponible = true;

                        precioempsiniva = PrecioCat - (PrecioCat * (descuento / 100));
                        //ivaprecioempresaria = (((1 + (objPLU.PorcentajeIVA / 100)) * precioempsiniva) - precioempsiniva);
                        ivaprecioempresaria = precioempsiniva * ((objPLU.PorcentajeIVA / 100));
                    }
                    else
                    {
                        descuento           = 0M;
                        precioempsiniva     = 0;
                        ivaprecioempresaria = 0;
                        objPLU.Disponible   = false;
                        precioempsiniva     = PrecioCat;
                        precioempivadesc    = PrecioTotal;
                    }

                    objPLU.PorcentajeDescuento = descuento;


                    objPLU.PrecioEmpresaria = precioempivadesc;

                    //-------------------------------------------------------------
                    //MRG: Se envian los precios del producto PLU con la configuracion de ExcentoIVA IVA.
                    objPLU.PrecioTotalConIVA      = PrecioTotal; //MRG: Este es el valor que se carga en el front en la sesion DetallePedidoService con IVA o sin IVA.
                    objPLU.PrecioCatalogoSinIVA   = objPLU.PrecioSinIVA;
                    objPLU.PrecioEmpresariaSinIVA = precioempsiniva;
                    objPLU.IVAPrecioCatalogo      = ValorIVA;
                    objPLU.IVAPrecioEmpresaria    = ivaprecioempresaria;
                    objPLU.PorcentajeIVA          = objPLU.PorcentajeIVA;
                    objPLU.ExcentoIVA             = ExcentoIVA;
                    //-------------------------------------------------------------



                    objPLU.SessionEmpresaria = new SessionEmpresariaInfo();
                    objPLU.SessionEmpresaria = ObjPLUInfo.SessionEmpresaria;
                    //........................................................................................
                    //Path de imagenes

                    objPLU.SessionEmpresaria.CarpetaImagenes = ObjPLUInfo.SessionEmpresaria.CarpetaImagenes.Trim();

                    /*llenar variable de sesion con el % Descuento asingado en la busqeuda de la cedula
                     *  validar path de imagenes para que cargue lo que es y dejar ese path desde bd, sino trae imagenes x default
                     *  organizar calculos de detalle articulo con lo obtenido desde aqui
                     *  mostrar bien disponible en verde o rojo*/
                }
            }
            else
            {
                objPLU.PLU = -1;

                objPLU.Error             = new Error();
                objPLU.Error.Id          = -1;
                objPLU.Error.Descripcion = "No se encontraron resultados. Por favor verifique. Codigo Rapido: " + ObjPLUInfo.CodigoRapido.ToUpper();
                objPLU.CodigoRapido      = ObjPLUInfo.CodigoRapido.ToUpper();
            }


            return(objPLU);
        }
        protected void btnGuardarTraslado_OnClick(object sender, EventArgs e)
        {
            var usuarioInfo = ObtenerUsuarioInfo();
            var script      = new StringBuilder(String.Empty);
            var mensaje     = String.Empty;
            var ventaId     = Convert.ToInt32(hdnVentaId.Value);
            var productoId  = Convert.ToInt32(hdnProductoId.Value);

            var trasladoInfo = new TrasladoAlmacenInfo();

            trasladoInfo.AlmacenOrigenId      = Convert.ToInt32(ddlAlmacenOrigen.SelectedValue);
            trasladoInfo.AlmacenDestinoId     = Convert.ToInt32(ddlAlmacenDestino.SelectedValue);
            trasladoInfo.ProductoId           = productoId;
            trasladoInfo.CantidadProducto     = Convert.ToDecimal(txtCantidad.Text);
            trasladoInfo.UsuarioResponsableId = Convert.ToInt32(ddlResponsable.SelectedValue);
            trasladoInfo.UsuarioCreacionId    = usuarioInfo.UsuarioId;
            trasladoInfo.TipoNegocioId        = usuarioInfo.TipoNegocioId;
            trasladoInfo.FechaTraslado        = DateTime.ParseExact(txtFechaTraslado.Text.Trim(), "dd/MM/yyyy", null);

            //se registra el traslado
            var trasladoId = new Negocio.TrasladoAlmacen().Insertar(trasladoInfo);

            //se crea o actualiza el producto en el nuevo almacen destino
            var inventarioInfo = new InventarioInfo();

            inventarioInfo.AlmacenId         = Convert.ToInt32(ddlAlmacenDestino.SelectedValue);
            inventarioInfo.ProductoId        = productoId;
            inventarioInfo.InventarioActual  = Convert.ToDecimal(txtCantidad.Text);
            inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;
            inventarioInfo.TipoNegocioId     = usuarioInfo.TipoNegocioId;

            var inventarioDestinoId = new Negocio.Inventario().Insertar(inventarioInfo);

            //se crea el movimiento de ingreso de almacen
            var movimientosInfo = new MovimientosInfo();

            movimientosInfo.OperacionId       = trasladoId;
            movimientosInfo.TipoMovimientoId  = Constantes.TipoMovimientoTrasladoIngreso;
            movimientosInfo.FechaOperacion    = DateTime.Now;
            movimientosInfo.Glosa             = "Traslado de Inventario Ingreso";
            movimientosInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;

            new Negocio.Movimientos().InsertarMovimientos(movimientosInfo);

            //Se actualiza el saldo del producto en el almacenOriginal
            var inventarioOrigenInfo = new InventarioInfo();

            inventarioOrigenInfo.AlmacenId             = Convert.ToInt32(ddlAlmacenOrigen.SelectedValue);
            inventarioOrigenInfo.ProductoId            = productoId;
            inventarioOrigenInfo.InventarioActual      = (-1) * Convert.ToDecimal(txtCantidad.Text);       //se reduce el stock
            inventarioOrigenInfo.UsuarioModificacionId = usuarioInfo.UsuarioId;
            inventarioOrigenInfo.TipoNegocioId         = usuarioInfo.TipoNegocioId;
            var inventarioOrigenId = new Negocio.Inventario().Actualizar(inventarioOrigenInfo);

            //se crea el movimiento de salida de almacen
            movimientosInfo                   = new MovimientosInfo();
            movimientosInfo.OperacionId       = trasladoId;
            movimientosInfo.TipoMovimientoId  = Constantes.TipoMovimientoTrasladoEgreso;
            movimientosInfo.FechaOperacion    = DateTime.Now;
            movimientosInfo.Glosa             = "Traslado de Inventario Egreso";
            movimientosInfo.UsuarioCreacionId = usuarioInfo.UsuarioId;

            new Negocio.Movimientos().InsertarMovimientos(movimientosInfo);

            mensaje = "Se realizo el traslado correctamente";

            script.Append("MostrarMensaje('" + mensaje + "');");
            script.Append("LimpiarVenta();");
            script.Append("var modalDialog = $find('mpeTraslado'); modalDialog.hide();");

            CargarDatos();
            RegistrarScript(script.ToString(), "GuardarTraslado");
        }