From 64dffec3ae883c47eea6b76216cf847a5f721c6e Mon Sep 17 00:00:00 2001 From: Setyo Nugroho Date: Tue, 20 Sep 2022 06:05:57 +0700 Subject: [PATCH] - Billing Setting form description - Date in invoice --- requirements.txt | 3 ++- yuyu/admin/billing_setting/forms.py | 5 ++++- .../templates/billing_setting/_form_setting.html | 5 ++++- yuyu/admin/billing_setting/views.py | 12 +++++++----- .../templates/projects_invoice/base_invoice.html | 2 +- yuyu/admin/projects_invoice/views.py | 2 +- yuyu/cases/setting_use_case.py | 11 +++++------ .../templates/billing_setting/_form_setting.html | 2 +- .../templates/billing_setting/form_setting.html | 2 +- .../invoice/templates/invoice/base_invoice.html | 2 +- yuyu/project/invoice/templates/invoice/invoice.html | 2 +- yuyu/project/invoice/views.py | 2 +- 12 files changed, 29 insertions(+), 21 deletions(-) diff --git a/requirements.txt b/requirements.txt index bdbe5de..5e5b687 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ django-money==2.0.1 -python-dateutil==2.8.2 \ No newline at end of file +python-dateutil==2.8.2 +Pillow>=6.2.0 \ No newline at end of file diff --git a/yuyu/admin/billing_setting/forms.py b/yuyu/admin/billing_setting/forms.py index 574f5de..6089ba2 100644 --- a/yuyu/admin/billing_setting/forms.py +++ b/yuyu/admin/billing_setting/forms.py @@ -14,7 +14,7 @@ class SettingForm(forms.SelfHandlingForm): required=False) company_logo = forms.ImageField(label=_("COMPANY LOGO"), - required=False) + required=False) company_address = forms.CharField(label=_("COMPANY ADDRESS"), required=False, widget=forms.Textarea()) email_admin = forms.EmailField(label=_("EMAIL ADMIN"), @@ -38,6 +38,9 @@ class SettingForm(forms.SelfHandlingForm): try: result = "" for k, v in data.items(): + if k == 'company_logo' and v is None: + continue + result = self.USE_CASE.set_setting( request=request, key=k, diff --git a/yuyu/admin/billing_setting/templates/billing_setting/_form_setting.html b/yuyu/admin/billing_setting/templates/billing_setting/_form_setting.html index 864fe15..b1a3a44 100644 --- a/yuyu/admin/billing_setting/templates/billing_setting/_form_setting.html +++ b/yuyu/admin/billing_setting/templates/billing_setting/_form_setting.html @@ -4,6 +4,9 @@ {% block modal-body-right %}

{% trans "Description:" %}

-

{% trans 'Update a billing setting.' %}

+

{% trans 'Company Name : Your Company Name that will be included in invoice' %}

+

{% trans 'Company Logo : A logo that will be used in invoice' %}

+

{% trans 'Email Admin : Used to send a notification related invoice and error' %}

+

{% trans 'Invoice Tax : Tax that will be calculated for each invoice' %}

{% endblock %} diff --git a/yuyu/admin/billing_setting/views.py b/yuyu/admin/billing_setting/views.py index b041315..c60f933 100644 --- a/yuyu/admin/billing_setting/views.py +++ b/yuyu/admin/billing_setting/views.py @@ -11,6 +11,7 @@ # under the License. from django import shortcuts from django.urls import reverse_lazy +from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ from horizon import views, exceptions, messages, tables, forms @@ -30,12 +31,11 @@ class IndexView(tables.DataTableView): def get_data(self): try: - setting_uc = self.setting_uc.get_setting_admin(self.request) - - except Exception: + setting_uc = self.setting_uc.get_setting_admin(self.request, ) + except Exception as e: setting_uc = [] exceptions.handle(self.request, - _("Unable to retrieve data.")) + _("Unable to retrieve data." + str(e))) return setting_uc def get_context_data(self, **kwargs): @@ -65,7 +65,9 @@ class UpdateSettingView(forms.ModalFormView): def get_initial(self): try: - setting_uc = dict(self.setting_uc.get_setting_admin(self.request)) + setting_uc = dict(self.setting_uc.get_setting_admin(self.request, transform_logo=False)) + # Remove company logo from initial data because we can't show image in the form + del setting_uc['company_logo'] except Exception: setting_uc = None exceptions.handle(self.request, diff --git a/yuyu/admin/projects_invoice/templates/projects_invoice/base_invoice.html b/yuyu/admin/projects_invoice/templates/projects_invoice/base_invoice.html index a9205ef..9d340c9 100644 --- a/yuyu/admin/projects_invoice/templates/projects_invoice/base_invoice.html +++ b/yuyu/admin/projects_invoice/templates/projects_invoice/base_invoice.html @@ -78,7 +78,7 @@
Invoice Month:
- {{ invoice.start_date|date:"M Y" }} + {{ invoice.start_date|date:"d M Y" }}

Invoice State:
diff --git a/yuyu/admin/projects_invoice/views.py b/yuyu/admin/projects_invoice/views.py index a50d519..83cf84f 100644 --- a/yuyu/admin/projects_invoice/views.py +++ b/yuyu/admin/projects_invoice/views.py @@ -55,7 +55,7 @@ class IndexView(tables.DataTableView): data.append({ 'id': d['id'], 'project_id': project_id, - 'date': formats.date_format(d['start_date'], 'M Y'), + 'date': formats.date_format(d['start_date'], 'd M Y'), 'state': state_to_text(d['state']), 'total': d['total_money'] or d['subtotal_money'] }) diff --git a/yuyu/cases/setting_use_case.py b/yuyu/cases/setting_use_case.py index 088b7ab..71bb9d4 100644 --- a/yuyu/cases/setting_use_case.py +++ b/yuyu/cases/setting_use_case.py @@ -5,10 +5,10 @@ from django.utils.html import format_html class SettingUseCase: - def get_settings(self, request): + def get_settings(self, request, transform_logo=True): response = yuyu_client.get(request, "settings/").json() - if response["company_logo"]: + if transform_logo and response["company_logo"]: # convert base64 img response['company_logo'] = format_html( '', @@ -22,10 +22,9 @@ class SettingUseCase: "value": value }).json() - def get_setting_admin(self, request): - keys_to_exclude = ['billing_enabled', - 'email_notification'] - response = self.get_settings(request) + def get_setting_admin(self, request, transform_logo=True): + keys_to_exclude = ['billing_enabled'] + response = self.get_settings(request, transform_logo=transform_logo) return [x for x in response.items() if x[0] not in keys_to_exclude] diff --git a/yuyu/project/billing_setting/templates/billing_setting/_form_setting.html b/yuyu/project/billing_setting/templates/billing_setting/_form_setting.html index f732ba8..3acd6a2 100644 --- a/yuyu/project/billing_setting/templates/billing_setting/_form_setting.html +++ b/yuyu/project/billing_setting/templates/billing_setting/_form_setting.html @@ -3,6 +3,6 @@ {% block modal-body-right %}

{% trans "Description:" %}

-

{% trans 'Update a billing setting.' %}

+

{% trans 'Email Notification : will be used to send a notification related to your project such as new invoice' %}

{% endblock %} diff --git a/yuyu/project/billing_setting/templates/billing_setting/form_setting.html b/yuyu/project/billing_setting/templates/billing_setting/form_setting.html index e03062e..3b1a6ee 100644 --- a/yuyu/project/billing_setting/templates/billing_setting/form_setting.html +++ b/yuyu/project/billing_setting/templates/billing_setting/form_setting.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% load i18n %} -{% block title %}{% trans "Create/Update Volume Price" %}{% endblock %} +{% block title %}{% trans "Billing Setting" %}{% endblock %} {% block main %} {% include "project/billing_setting/_form_setting.html" %} diff --git a/yuyu/project/invoice/templates/invoice/base_invoice.html b/yuyu/project/invoice/templates/invoice/base_invoice.html index a9205ef..9d340c9 100644 --- a/yuyu/project/invoice/templates/invoice/base_invoice.html +++ b/yuyu/project/invoice/templates/invoice/base_invoice.html @@ -78,7 +78,7 @@
Invoice Month:
- {{ invoice.start_date|date:"M Y" }} + {{ invoice.start_date|date:"d M Y" }}

Invoice State:
diff --git a/yuyu/project/invoice/templates/invoice/invoice.html b/yuyu/project/invoice/templates/invoice/invoice.html index 4b70a81..036efbc 100644 --- a/yuyu/project/invoice/templates/invoice/invoice.html +++ b/yuyu/project/invoice/templates/invoice/invoice.html @@ -4,7 +4,7 @@ Download PDF

- {% include 'admin/projects_invoice/base_invoice.html' %} + {% include 'project/invoice/base_invoice.html' %} {% endblock %} {% block js %} {{ block.super }} diff --git a/yuyu/project/invoice/views.py b/yuyu/project/invoice/views.py index ce27b5d..95b2545 100644 --- a/yuyu/project/invoice/views.py +++ b/yuyu/project/invoice/views.py @@ -42,7 +42,7 @@ class IndexView(tables.DataTableView): for d in self.invoice_uc.get_simple_list(self.request): data.append({ 'id': d['id'], - 'date': formats.date_format(d['start_date'], 'M Y'), + 'date': formats.date_format(d['start_date'], 'd M Y'), 'state': state_to_text(d['state']), 'total': d['total_money'] or d['subtotal_money'] })