Files
CenterPes/Movement/Views/viewsProductCreateCustom.py
2025-11-01 18:10:39 -03:00

50 lines
2.1 KiB
Python

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)