from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin from Movement.Forms import FormsProduct from Movement import models from Client.models import Client from django.urls import reverse_lazy from django.contrib import messages class ProductCreateCustomView(LoginRequiredMixin, PermissionRequiredMixin, CreateView): model = models.Product template_name = 'Product/Create/index.html' form_class = FormsProduct.FormsProduct success_url = reverse_lazy('MovProductListView') permission_required = 'Base.add_' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # if self.request.GET.get('Client'): # filter_client = Client.objects.filter( # id=self.request.GET.get('Client') or '' # ) # else: filter_client = Client.objects.none() # context['Client'] = filter_client return context def get_form(self, form_class=None): form = super().get_form(form_class) client_id = self.request.GET.get('Client') or self.request.POST.get('client') if client_id: filter_client = Client.objects.filter(id=client_id) else: filter_client = Client.objects.none() form.fields['client'].queryset = filter_client.all() return form def form_valid(self, form): gross_value = form.instance.product.value quantity = form.instance.quantity net_value = gross_value - ((gross_value * form.instance.pay_method.percentage) / 100) form.instance.gross_value = gross_value * quantity form.instance.net_value = net_value * quantity form.instance.created_by = self.request.user messages.success(self.request, 'Registro realizado com sucesso!') return super().form_valid(form) def form_invalid(self, form): errors = form.errors.as_text() messages.error(self.request, f'Verifique os dados: {errors}') return super().form_invalid(form)