示例#1
0
        public static decimal VentaComisionCliente(int iVentaID, int iComisionistaID)
        {
            // Se calcula el importe de la comisión
            var oVentaDetalle = Datos.GetListOf <VentaDetalle>(q => q.VentaID == iVentaID && q.Estatus);
            var oComisionista = Datos.GetEntity <Cliente>(q => q.ClienteID == iComisionistaID && q.Estatus);

            if (oComisionista == null)
            {
                return(0);
            }

            decimal      mComision = 0;
            PreciosParte oPrecios;

            foreach (var ParteD in oVentaDetalle)
            {
                oPrecios   = new PreciosParte(ParteD.ParteID);
                mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad);
            }

            return(mComision);
        }
示例#2
0
        public static ResAcc VentaDevolucion(VentaDevolucion oDevolucion, List<VentaDevolucionDetalle> oDetalle)
        {
            // Se generan datos predeterminados o globales, en caso de que apliquen
            oDevolucion.Fecha = (oDevolucion.Fecha != DateTime.MinValue ? oDevolucion.Fecha : DateTime.Now);
            oDevolucion.SucursalID = (oDevolucion.SucursalID > 0 ? oDevolucion.SucursalID : Theos.SucursalID);

            // Se guarda la devolución
            Datos.Guardar<VentaDevolucion>(oDevolucion);

            // Se guarda el detalle
            VentaDetalle oParteVenta;
            foreach (var ParteDetalle in oDetalle)
            {
                ParteDetalle.VentaDevolucionID = oDevolucion.VentaDevolucionID;
                Datos.Guardar<VentaDevolucionDetalle>(ParteDetalle);

                // Se quita el producto de la venta
                oParteVenta = Datos.GetEntity<VentaDetalle>(q => q.Estatus
                    && q.VentaID == oDevolucion.VentaID
                    && q.ParteID == ParteDetalle.ParteID
                    && q.Cantidad == ParteDetalle.Cantidad
                    && q.PrecioUnitario == ParteDetalle.PrecioUnitario
                    && q.Iva == ParteDetalle.Iva);

                oParteVenta.Estatus = false;
                Datos.Guardar<VentaDetalle>(oParteVenta, false);

                // Se afecta la existencia
                // AdmonProc.AgregarExistencia(ParteDetalle.ParteID, GlobalClass.SucursalID, ParteDetalle.Cantidad, Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID);
                var oDevV = Datos.GetEntity<VentasDevolucionesView>(c => c.VentaDevolucionID == oDevolucion.VentaDevolucionID);
                AdmonProc.AfectarExistenciaYKardex(ParteDetalle.ParteID, Theos.SucursalID, Cat.OperacionesKardex.VentaCancelada, oDevV.FolioDeVenta
                    , oDevV.RealizoUsuarioID, oDevV.Cliente, oDevV.ClienteID.ToString(), oDevV.Sucursal, ParteDetalle.Cantidad
                    , (ParteDetalle.PrecioUnitario + ParteDetalle.Iva), Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID);
            }

            // Si es cancelación, se cambia el estatus de la venta
            var oVenta = Datos.GetEntity<Venta>(c => c.VentaID == oDevolucion.VentaID && c.Estatus);
            if (oDevolucion.EsCancelacion)
            {
                // Se verifica si la venta ha tenido pagos
                var oVentaV = Datos.GetEntity<VentasView>(c => c.VentaID == oDevolucion.VentaID);
                oVenta.VentaEstatusID = (oVentaV.Pagado > 0 ? Cat.VentasEstatus.Cancelada : Cat.VentasEstatus.CanceladaSinPago);
                Datos.Guardar<Venta>(oVenta);
            }

            // Se verifican notas de crédito que pudieran cancelarse, por cliente comisionista
            if (oVenta.ComisionistaClienteID > 0)
            {
                // Se calcula el importe de la comisión que se debe quitar
                var oComisionista = Datos.GetEntity<Cliente>(q => q.ClienteID == oVenta.ComisionistaClienteID && q.Estatus);
                decimal mComision = 0;
                PreciosParte oPrecios;
                foreach (var ParteD in oDetalle)
                {
                    oPrecios = new PreciosParte(ParteD.ParteID);
                    mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad);
                }
                // Se genera una nota de crédito negativa
                if (mComision > 0)
                    VentasProc.GenerarNotaDeCredito(oComisionista.ClienteID, (mComision * -1), "", Cat.OrigenesNotaDeCredito.Devolucion, oVenta.VentaID);
            }

            return new ResAcc(true);
        }
示例#3
0
        public static decimal VentaComisionCliente(int iVentaID, int iComisionistaID)
        {
            // Se calcula el importe de la comisión
            var oVentaDetalle = Datos.GetListOf<VentaDetalle>(q => q.VentaID == iVentaID && q.Estatus);
            var oComisionista = Datos.GetEntity<Cliente>(q => q.ClienteID == iComisionistaID && q.Estatus);
            if (oComisionista == null) return 0;

            decimal mComision = 0;
            PreciosParte oPrecios;
            foreach (var ParteD in oVentaDetalle)
            {
                oPrecios = new PreciosParte(ParteD.ParteID);
                mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad);
            }

            return mComision;
        }
示例#4
0
        public static ResAcc VentaDevolucion(VentaDevolucion oDevolucion, List <VentaDevolucionDetalle> oDetalle)
        {
            // Se generan datos predeterminados o globales, en caso de que apliquen
            oDevolucion.Fecha      = (oDevolucion.Fecha != DateTime.MinValue ? oDevolucion.Fecha : DateTime.Now);
            oDevolucion.SucursalID = (oDevolucion.SucursalID > 0 ? oDevolucion.SucursalID : Theos.SucursalID);

            // Se guarda la devolución
            Datos.Guardar <VentaDevolucion>(oDevolucion);

            // Se guarda el detalle
            VentaDetalle oParteVenta;

            foreach (var ParteDetalle in oDetalle)
            {
                ParteDetalle.VentaDevolucionID = oDevolucion.VentaDevolucionID;
                Datos.Guardar <VentaDevolucionDetalle>(ParteDetalle);

                // Se quita el producto de la venta
                oParteVenta = Datos.GetEntity <VentaDetalle>(q => q.Estatus &&
                                                             q.VentaID == oDevolucion.VentaID &&
                                                             q.ParteID == ParteDetalle.ParteID &&
                                                             q.Cantidad == ParteDetalle.Cantidad &&
                                                             q.PrecioUnitario == ParteDetalle.PrecioUnitario &&
                                                             q.Iva == ParteDetalle.Iva);

                oParteVenta.Estatus = false;
                Datos.Guardar <VentaDetalle>(oParteVenta, false);

                // Se afecta la existencia
                // AdmonProc.AgregarExistencia(ParteDetalle.ParteID, GlobalClass.SucursalID, ParteDetalle.Cantidad, Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID);
                var oDevV = Datos.GetEntity <VentasDevolucionesView>(c => c.VentaDevolucionID == oDevolucion.VentaDevolucionID);
                AdmonProc.AfectarExistenciaYKardex(ParteDetalle.ParteID, Theos.SucursalID, Cat.OperacionesKardex.VentaCancelada, oDevV.FolioDeVenta
                                                   , oDevV.RealizoUsuarioID, oDevV.Cliente, oDevV.ClienteID.ToString(), oDevV.Sucursal, ParteDetalle.Cantidad
                                                   , (ParteDetalle.PrecioUnitario + ParteDetalle.Iva), Cat.Tablas.VentaDevolucion, oDevolucion.VentaDevolucionID);
            }

            // Si es cancelación, se cambia el estatus de la venta
            var oVenta = Datos.GetEntity <Venta>(c => c.VentaID == oDevolucion.VentaID && c.Estatus);

            if (oDevolucion.EsCancelacion)
            {
                // Se verifica si la venta ha tenido pagos
                var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == oDevolucion.VentaID);
                oVenta.VentaEstatusID = (oVentaV.Pagado > 0 ? Cat.VentasEstatus.Cancelada : Cat.VentasEstatus.CanceladaSinPago);
                Datos.Guardar <Venta>(oVenta);
            }

            // Se verifican notas de crédito que pudieran cancelarse, por cliente comisionista
            if (oVenta.ComisionistaClienteID > 0)
            {
                // Se calcula el importe de la comisión que se debe quitar
                var          oComisionista = Datos.GetEntity <Cliente>(q => q.ClienteID == oVenta.ComisionistaClienteID && q.Estatus);
                decimal      mComision     = 0;
                PreciosParte oPrecios;
                foreach (var ParteD in oDetalle)
                {
                    oPrecios   = new PreciosParte(ParteD.ParteID);
                    mComision += (((ParteD.PrecioUnitario + ParteD.Iva) - oPrecios.ObtenerPrecio(oComisionista.ListaDePrecios)) * ParteD.Cantidad);
                }
                // Se genera una nota de crédito negativa
                if (mComision > 0)
                {
                    VentasProc.GenerarNotaDeCredito(oComisionista.ClienteID, (mComision * -1), "", Cat.OrigenesNotaDeCredito.Devolucion, oVenta.VentaID);
                }
            }

            return(new ResAcc(true));
        }