Ejemplo n.º 1
0
        private bool AgregarGarantia()
        {
            // Se valida la parte de detalle
            if (!this.ctlDetalle.Validar())
            {
                return(false);
            }
            // Se valida la parte de búsqueda
            if (!this.ctlBusqueda.Validar())
            {
                return(false);
            }
            // Se valida que sólo esté seleccionada una parte
            if (this.ctlDetalle.ProductosSel().Count > 1)
            {
                UtilLocal.MensajeAdvertencia("Debes seleccionar sólo un producto al hacer una garantía.");
                return(false);
            }

            // Se verifica si se creará vale, para pedir el cliente en caso de que no haya
            var oGarantia      = this.ctlBusqueda.GenerarGarantia();
            int iVentaID       = this.ctlBusqueda.VentaID;
            var oVentaV        = Datos.GetEntity <VentasView>(q => q.VentaID == iVentaID);
            int iValeClienteID = oVentaV.ClienteID;

            if ((oGarantia.AccionID == Cat.VentasGarantiasAcciones.ArticuloNuevo || oGarantia.AccionID == Cat.VentasGarantiasAcciones.NotaDeCredito) &&
                iValeClienteID == Cat.Clientes.Mostrador)
            {
                iValeClienteID = VentasLoc.ObtenerClienteID("Selecciona el cliente para crear el Vale:", false);
                if (iValeClienteID == 0)
                {
                    return(false);
                }
            }

            // Se pregunta el usuario que realiza la devolución
            int iUsuarioID = 0;
            var ResU       = UtilLocal.ValidarObtenerUsuario("Ventas.Garantia.Agregar");

            if (ResU.Error)
            {
                return(false);
            }
            iUsuarioID = ResU.Respuesta.UsuarioID;

            // Se solicita la autorización
            int iAutorizoID = 0;

            ResU = UtilLocal.ValidarObtenerUsuario("Autorizaciones.Ventas.Garantia.Agregar", "Autorización");
            if (ResU.Exito)
            {
                iAutorizoID = ResU.Respuesta.UsuarioID;
            }

            // Se procede a guardar los cambios
            DateTime dAhora = DateTime.Now;

            // Se genera la garantía
            oGarantia.Fecha             = dAhora;
            oGarantia.RealizoUsuarioID  = iUsuarioID;
            oGarantia.EstatusGenericoID = Cat.EstatusGenericos.Recibido;
            // Se llenan los datos de la parte
            var oProducto = this.ctlDetalle.ProductosSel()[0];

            oGarantia.ParteID           = oProducto.ParteID;
            oGarantia.Costo             = oProducto.Costo;
            oGarantia.CostoConDescuento = oProducto.CostoConDescuento;
            oGarantia.PrecioUnitario    = oProducto.PrecioUnitario;
            oGarantia.Iva = oProducto.Iva;

            // Se guarda la garantía
            Guardar.VentaGarantia(oGarantia);

            // Si queda a revisión del proveedor, ya no se hace nada más que mandar el ticket
            if (oGarantia.AccionID != Cat.VentasGarantiasAcciones.RevisionDeProveedor)
            {
                this.CompletarAccionGarantia(oGarantia.VentaGarantiaID, iValeClienteID);
            }

            // Se mete un registro en kárdex, en cero, sólo para mantener historial de la operación
            var oKardex = new ParteKardex()
            {
                ParteID          = oGarantia.ParteID,
                OperacionID      = Cat.OperacionesKardex.VentaCancelada,
                SucursalID       = oGarantia.SucursalID,
                Folio            = oVentaV.Folio,
                Fecha            = dAhora,
                RealizoUsuarioID = iUsuarioID,
                Entidad          = oVentaV.Cliente,
                Origen           = oVentaV.Sucursal,
                Destino          = "GARANTÍA RECIBIDA",
                Cantidad         = 0,
                Importe          = (oGarantia.PrecioUnitario + oGarantia.Iva),
                RelacionTabla    = Cat.Tablas.VentaGarantia,
                RelacionID       = oGarantia.VentaGarantiaID
            };

            AdmonProc.RegistrarKardex(oKardex);

            // Se guarda la autorización, si aplica
            VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.Garantia, Cat.Tablas.VentaGarantia, oGarantia.VentaGarantiaID, iAutorizoID);
            // Se genera el ticket correspondiente
            VentasLoc.GenerarTicketGarantia(oGarantia.VentaGarantiaID);

            return(true);
        }
Ejemplo n.º 2
0
        private bool CompletarGarantia()
        {
            // Se valida la parte de búsqueda
            if (!this.ctlBusqueda.ValidarPendiente())
            {
                return(false);
            }

            //
            int iGarantiaID = this.ctlBusqueda.SeleccionGarantiaID;
            var oGarantia   = Datos.GetEntity <VentaGarantia>(c => c.VentaGarantiaID == iGarantiaID && c.Estatus);
            var oVentaV     = Datos.GetEntity <VentasView>(c => c.VentaID == oGarantia.VentaID);

            // Se verifica si se creará vale, para pedir el cliente en caso de que no haya
            int iValeClienteID = oVentaV.ClienteID;

            if ((this.ctlBusqueda.IdAccionPosterior == Cat.VentasGarantiasAcciones.ArticuloNuevo ||
                 this.ctlBusqueda.IdAccionPosterior == Cat.VentasGarantiasAcciones.NotaDeCredito) && iValeClienteID == Cat.Clientes.Mostrador)
            {
                iValeClienteID = VentasLoc.ObtenerClienteID("Selecciona el cliente para crear el Vale:", false);
                if (iValeClienteID == 0)
                {
                    return(false);
                }
            }

            // Se pregunta el usuario que realiza la devolución
            int iUsuarioID = 0;
            var ResU       = UtilLocal.ValidarObtenerUsuario("Ventas.Garantia.Agregar");

            if (ResU.Error)
            {
                return(false);
            }
            iUsuarioID = ResU.Respuesta.UsuarioID;

            // Se solicita la autorización
            int iAutorizoID = 0;

            ResU = UtilLocal.ValidarObtenerUsuario("Autorizaciones.Ventas.Garantia.Agregar", "Autorización");
            if (ResU.Exito)
            {
                iAutorizoID = ResU.Respuesta.UsuarioID;
            }

            // Se procede a guardar los cambios
            DateTime dAhora = DateTime.Now;

            // Se completan los datos de la garantía
            oGarantia.AccionID          = this.ctlBusqueda.IdAccionPosterior;
            oGarantia.FechaCompletado   = dAhora;
            oGarantia.EstatusGenericoID = Cat.EstatusGenericos.Completada;
            if (this.ctlBusqueda.AccionObservacion != "")
            {
                oGarantia.ObservacionCompletado += (" - " + this.ctlBusqueda.AccionObservacion);
            }
            // Se guardan los datos
            Datos.Guardar <VentaGarantia>(oGarantia);

            // Si queda a revisión del proveedor, ya no se hace nada más que mandar el ticket
            if (oGarantia.AccionID != Cat.VentasGarantiasAcciones.NoProcede)
            {
                // Se borra la parte de la venta, pues ya se hizo válida la garantia
                var oParteVenta = Datos.GetEntity <VentaDetalle>(q => q.Estatus &&
                                                                 q.VentaID == oGarantia.VentaID &&
                                                                 q.ParteID == oGarantia.ParteID &&
                                                                 q.PrecioUnitario == oGarantia.PrecioUnitario &&
                                                                 q.Iva == oGarantia.Iva);
                if (oParteVenta.Cantidad > 1)
                {
                    oParteVenta.Cantidad--;
                    Datos.Guardar <VentaDetalle>(oParteVenta);
                }
                else
                {
                    Datos.Eliminar <VentaDetalle>(oParteVenta, true);
                }
                //
                this.CompletarAccionGarantia(iGarantiaID, iValeClienteID);
            }

            // Se guarda la autorización, si aplica
            VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.Garantia, Cat.Tablas.VentaGarantia, oGarantia.VentaGarantiaID, iAutorizoID);
            // Se genera el ticket correspondiente
            VentasLoc.GenerarTicketGarantia(oGarantia.VentaGarantiaID);

            return(true);
        }