Create, view and update remittances

This commit is contained in:
Yohann D'ANELLO 2020-03-22 18:27:22 +01:00
parent 3551568de5
commit 5fd472d408
9 changed files with 94 additions and 12 deletions

View File

@ -4,9 +4,11 @@
import datetime
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
from django import forms
from django.utils.translation import gettext_lazy as _
from .models import Invoice, Product
from .models import Invoice, Product, Remittance
class InvoiceForm(forms.ModelForm):
@ -38,3 +40,14 @@ class ProductFormSetHelper(FormHelper):
self.form_method = 'POST'
self.form_class = 'form-inline'
self.template = 'bootstrap4/table_inline_formset.html'
class RemittanceForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.add_input(Submit('submit', _("Submit"), attr={'class': 'btn btn-block btn-primary'}))
class Meta:
model = Remittance
fields = ('type', 'comment', )

View File

@ -1,5 +1,6 @@
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from django.core.exceptions import ValidationError
from django.db import models
from django.db.models import Q
@ -88,7 +89,7 @@ class Product(models.Model):
class Remittance(models.Model):
date = models.DateField(
date = models.DateTimeField(
auto_now_add=True,
verbose_name=_("Date"),
)
@ -104,6 +105,11 @@ class Remittance(models.Model):
verbose_name=_("Comment"),
)
closed = models.BooleanField(
default=False,
verbose_name=_("Closed"),
)
@property
def size(self):
return self.specialtransaction_set.count()

View File

@ -5,7 +5,7 @@ import django_tables2 as tables
from django.utils.translation import gettext_lazy as _
from django_tables2 import A
from .models import Invoice
from .models import Invoice, Remittance
class InvoiceTable(tables.Table):
@ -30,3 +30,13 @@ class InvoiceTable(tables.Table):
model = Invoice
template_name = 'django_tables2/bootstrap4.html'
fields = ('id', 'name', 'object', 'acquitted', 'invoice',)
class RemittanceTable(tables.Table):
class Meta:
attrs = {
'class': 'table table-condensed table-striped table-hover'
}
model = Remittance
template_name = 'django_tables2/bootstrap4.html'
fields = ('id', 'date', 'type', 'comment', 'size', 'amount', 'edit',)

View File

@ -3,12 +3,17 @@
from django.urls import path
from .views import InvoiceCreateView, InvoiceListView, InvoiceUpdateView, InvoiceRenderView
from .views import InvoiceCreateView, InvoiceListView, InvoiceUpdateView, InvoiceRenderView, RemittanceListView,\
RemittanceCreateView, RemittanceUpdateView
app_name = 'treasury'
urlpatterns = [
path('invoice/', InvoiceListView.as_view(), name='invoice'),
path('invoice/', InvoiceListView.as_view(), name='invoice_list'),
path('invoice/create/', InvoiceCreateView.as_view(), name='invoice_create'),
path('invoice/<int:pk>/', InvoiceUpdateView.as_view(), name='invoice_update'),
path('invoice/render/<int:pk>/', InvoiceRenderView.as_view(), name='invoice_render'),
path('remittance/', RemittanceListView.as_view(), name='remittance_list'),
path('remittance/create/', RemittanceCreateView.as_view(), name='remittance_create'),
path('remittance/<int:pk>/', RemittanceUpdateView.as_view(), name='remittance_update'),
]

View File

@ -17,9 +17,9 @@ from django.views.generic.base import View
from django_tables2 import SingleTableView
from note_kfet.settings.base import BASE_DIR
from .forms import InvoiceForm, ProductFormSet, ProductFormSetHelper
from .models import Invoice, Product
from .tables import InvoiceTable
from .forms import InvoiceForm, ProductFormSet, ProductFormSetHelper, RemittanceForm
from .models import Invoice, Product, Remittance
from .tables import InvoiceTable, RemittanceTable
class InvoiceCreateView(LoginRequiredMixin, CreateView):
@ -64,7 +64,7 @@ class InvoiceCreateView(LoginRequiredMixin, CreateView):
return ret
def get_success_url(self):
return reverse_lazy('treasury:invoice')
return reverse_lazy('treasury:invoice_list')
class InvoiceListView(LoginRequiredMixin, SingleTableView):
@ -121,7 +121,7 @@ class InvoiceUpdateView(LoginRequiredMixin, UpdateView):
return ret
def get_success_url(self):
return reverse_lazy('treasury:invoice')
return reverse_lazy('treasury:invoice_list')
class InvoiceRenderView(LoginRequiredMixin, View):
@ -176,3 +176,33 @@ class InvoiceRenderView(LoginRequiredMixin, View):
shutil.rmtree(tmp_dir)
return response
class RemittanceCreateView(LoginRequiredMixin, CreateView):
"""
Create Remittance
"""
model = Remittance
form_class = RemittanceForm
def get_success_url(self):
return reverse_lazy('treasury:remittance_list')
class RemittanceListView(LoginRequiredMixin, SingleTableView):
"""
List existing Remittances
"""
model = Remittance
table_class = RemittanceTable
class RemittanceUpdateView(LoginRequiredMixin, UpdateView):
"""
Update Remittance
"""
model = Remittance
form_class = RemittanceForm
def get_success_url(self):
return reverse_lazy('treasury:remittance_list')

View File

@ -99,7 +99,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</li>
{% if "treasury.invoice"|not_empty_model_change_list %}
<li class="nav-item active">
<a class="nav-link" href="{% url 'treasury:invoice' %}"><i class="fa fa-money"></i>{% trans 'Treasury' %} </a>
<a class="nav-link" href="{% url 'treasury:invoice_list' %}"><i class="fa fa-money"></i>{% trans 'Treasury' %} </a>
</li>
{% endif %}
</ul>

View File

@ -3,7 +3,7 @@
{% load i18n %}
{% load crispy_forms_tags pretty_money %}
{% block content %}
<p><a class="btn btn-default" href="{% url 'treasury:invoice' %}">{% trans "Invoices list" %}</a></p>
<p><a class="btn btn-default" href="{% url 'treasury:invoice_list' %}">{% trans "Invoices list" %}</a></p>
<form method="post" action="">
{% csrf_token %}
{% crispy form %}

View File

@ -0,0 +1,8 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% load crispy_forms_tags pretty_money %}
{% block content %}
<p><a class="btn btn-default" href="{% url 'treasury:remittance_list' %}">{% trans "Remittances list" %}</a></p>
{% crispy form %}
{% endblock %}

View File

@ -0,0 +1,10 @@
{% extends "base.html" %}
{% load render_table from django_tables2 %}
{% load i18n %}
{% block content %}
{% render_table table %}
<a class="btn btn-primary" href="{% url 'treasury:remittance_create' %}">{% trans "New remittance" %}</a>
{% endblock %}