first commit

This commit is contained in:
2025-11-01 18:10:39 -03:00
parent 6e7348359f
commit 63cf724aaf
220 changed files with 4040 additions and 62 deletions

Binary file not shown.

View File

@@ -0,0 +1,39 @@
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 django.urls import reverse_lazy
from django.utils import timezone
class CalendarListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
model = models.Calendar
template_name = 'Calendar/List.html'
context_object_name = 'Calendar'
paginate_by = 10
permission_required = 'Base.view_'
def get_queryset(self):
queryset = super().get_queryset()
date = self.request.GET.get('date')
if date:
queryset = queryset.filter(date__icontains=date)
else:
queryset = queryset.filter(date__icontains=timezone.localdate())
return queryset
class CalendarDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
model = models.Calendar
template_name = 'Calendar/Detail.html'
permission_required = 'Base.view_'
class CalendarUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
model = models.Calendar
template_name = 'Calendar/Update.html'
form_class = FormsCalendar.FormsCalendar
success_url = reverse_lazy('MovCalendarListView')
permission_required = 'Base.change_'
class CalendarDeleteView(LoginRequiredMixin, PermissionRequiredMixin, DeleteView):
model = models.Calendar
template_name = 'Calendar/Delete.html'
success_url = reverse_lazy('MovCalendarListView')
permission_required = 'Base.delete_'

View File

@@ -0,0 +1,54 @@
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)

View File

@@ -0,0 +1,102 @@
from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView
from django.contrib.auth.mixins import LoginRequiredMixin , PermissionRequiredMixin
from Movement.Forms import FormsExpense
from Movement import models
from Base.models import ChartOfAccount
from django.urls import reverse_lazy
from django.contrib import messages
from django.utils import timezone
class ExpenseListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
model = models.Expense
template_name = 'Expense/List.html'
context_object_name = 'Expenses'
paginate_by = 10
permission_required = 'Base.view_professional'
def get_queryset(self):
queryset = super().get_queryset()
date = self.request.GET.get('date')
if date:
queryset = queryset.filter(date__icontains=date)
else:
queryset = queryset.filter(
date__icontains=timezone.localtime(timezone.now()).month
)
return queryset
class ExpenseCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView):
model = models.Expense
template_name = 'Expense/Create.html'
form_class = FormsExpense.FormsExpense
success_url = reverse_lazy('MovExpenseListView')
permission_required = 'Base.add_professional'
class ExpenseDetailView(LoginRequiredMixin,PermissionRequiredMixin, DetailView):
model = models.Expense
template_name = 'Expense/Detail.html'
permission_required = 'Base.view_professional'
class ExpenseUpdateView(LoginRequiredMixin,PermissionRequiredMixin, UpdateView):
model = models.Expense
template_name = 'Expense/Update.html'
form_class = FormsExpense.FormsExpense
success_url = reverse_lazy('ExpenseListView')
permission_required = 'Base.change_professional'
class ExpenseDeleteView(LoginRequiredMixin,PermissionRequiredMixin, DeleteView):
model = models.Expense
template_name = 'Expense/Delete.html'
success_url = reverse_lazy('MovExpenseListView')
permission_required = 'Base.delete_professional'
class ExpenseFirmCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView):
model = models.Expense
template_name = 'Expense/CreateFirm.html'
form_class = FormsExpense.FormsExpense
success_url = reverse_lazy('MovExpenseListView')
permission_required = 'Base.add_professional'
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields['chart_of_account'].queryset = ChartOfAccount.objects.filter(
firm=True,
debit=True,
)
return form
def form_valid(self, form):
form.instance.firm = True
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)
class ExpenseProfCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView):
model = models.Expense
template_name = 'Expense/CreateProf.html'
form_class = FormsExpense.FormsExpense
success_url = reverse_lazy('MovExpenseListView')
permission_required = 'Base.add_professional'
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields['chart_of_account'].queryset = ChartOfAccount.objects.filter(
firm=False,
debit=True,
)
return form
def form_valid(self, form):
form.instance.firm = False
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)

View File

@@ -0,0 +1,47 @@
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 django.urls import reverse_lazy
from django.utils import timezone
class ProductListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
model = models.Product
template_name = 'Product/List.html'
context_object_name = 'Products'
paginate_by = 10
permission_required = 'Base.view_professional'
def get_queryset(self):
queryset = super().get_queryset()
date = self.request.GET.get('date')
print(date)
if date:
queryset = queryset.filter(date__icontains=date)
else:
queryset = queryset.filter(date__icontains=timezone.localdate())
return queryset
# class ProductCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView):
# model = models.Product
# template_name = 'Product/Create.html'
# form_class = FormsProduct.FormsProduct
# success_url = reverse_lazy('ProductListView')
# permission_required = 'Base.add_professional'
class ProductDetailView(LoginRequiredMixin,PermissionRequiredMixin, DetailView):
model = models.Product
template_name = 'Product/Detail.html'
permission_required = 'Base.view_professional'
class ProductUpdateView(LoginRequiredMixin,PermissionRequiredMixin, UpdateView):
model = models.Product
template_name = 'Product/Update.html'
form_class = FormsProduct.FormsProduct
success_url = reverse_lazy('ProductListView')
permission_required = 'Base.change_professional'
class ProductDeleteView(LoginRequiredMixin,PermissionRequiredMixin, DeleteView):
model = models.Product
template_name = 'Product/Delete.html'
success_url = reverse_lazy('MovProductListView')
permission_required = 'Base.delete_professional'

View File

@@ -0,0 +1,50 @@
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)

View File

@@ -0,0 +1,60 @@
from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView
from django.contrib.auth.mixins import LoginRequiredMixin , PermissionRequiredMixin
from Movement.Forms import FormsStock
from Movement import models
from django.urls import reverse_lazy
from django.contrib import messages
from django.utils import timezone
class StockListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
model = models.Stock
template_name = 'Stock/List.html'
context_object_name = 'Stocks'
paginate_by = 10
permission_required = 'Base.view_professional'
def get_queryset(self):
queryset = super().get_queryset()
date = self.request.GET.get('date')
if date:
queryset = queryset.filter(date__icontains=date)
else:
queryset = queryset.filter(date__icontains=timezone.localdate())
return queryset
class StockCreateView(LoginRequiredMixin,PermissionRequiredMixin, CreateView):
model = models.Stock
template_name = 'Stock/Create.html'
form_class = FormsStock.FormsStock
success_url = reverse_lazy('MovStockListView')
permission_required = 'Base.add_professional'
def form_valid(self, form):
gross_value = form.instance.gross_value
quantity = form.instance.quantity
form.instance.unit_value = gross_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)
class StockDetailView(LoginRequiredMixin,PermissionRequiredMixin, DetailView):
model = models.Stock
template_name = 'Stock/Detail.html'
permission_required = 'Base.view_professional'
class StockUpdateView(LoginRequiredMixin,PermissionRequiredMixin, UpdateView):
model = models.Stock
template_name = 'Stock/Update.html'
form_class = FormsStock.FormsStock
success_url = reverse_lazy('MovStockListView')
permission_required = 'Base.change_professional'
class StockDeleteView(LoginRequiredMixin,PermissionRequiredMixin, DeleteView):
model = models.Stock
template_name = 'Stock/Delete.html'
success_url = reverse_lazy('MovStockListView')
permission_required = 'Base.delete_professional'