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

54 lines
2.3 KiB
Python

from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from Movement.Forms import FormsCalendar
from Movement import models
from Client.models import Client
from django.urls import reverse_lazy
from django.contrib import messages
class CalendarCreateCustomView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
model = models.Calendar
template_name = 'Calendar/Create/index.html'
form_class = FormsCalendar.FormsCalendar
success_url = reverse_lazy('MovCalendarListView')
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.service.value
net_value = gross_value - ((gross_value * form.instance.pay_method.percentage) / 100)
value_cash = ((100 - form.instance.professional.percentage) * net_value) / 100
prof_money = (form.instance.professional.percentage * net_value) / 100
#
form.instance.gross_value = gross_value
form.instance.net_value = net_value
form.instance.value_cash = value_cash
form.instance.prof_money = prof_money
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)