From 9a40e70ce31da63ef16dce1a07730f534d22b0bd Mon Sep 17 00:00:00 2001 From: gitea Date: Sun, 26 Jan 2025 15:11:15 +0000 Subject: [PATCH] update --- inventory/forms.py | 162 ++++--- inventory/migrations/0004_purchaseorder.py | 25 + .../0005_saleorder_delete_purchaseorder.py | 28 ++ inventory/migrations/0006_alter_car_vendor.py | 20 + .../0007_alter_cartransfer_status.py | 18 + inventory/models.py | 62 ++- inventory/signals.py | 46 +- inventory/urls.py | 39 +- inventory/utils.py | 184 ++++---- inventory/views.py | 431 ++++++++++++------ static/images/images/IT-Consulting.jpg | Bin 0 -> 126615 bytes static/images/images/cit.jpg | Bin 0 -> 26337 bytes templates/crm/notifications_history.html | 2 +- templates/customers/customer_form.html | 90 +--- templates/customers/customer_list.html | 14 +- templates/customers/view_customer.html | 2 +- templates/inventory/car_detail.html | 7 +- templates/inventory/transfer_details.html | 26 +- templates/inventory/transfer_preview.html | 4 +- templates/ledger/bills/bill_detail.html | 8 +- templates/ledger/bills/bill_list.html | 11 +- templates/notifications.html | 2 +- .../organizations/organization_list.html | 18 +- .../sales/estimates/estimate_detail.html | 25 +- .../sales/estimates/estimate_preview.html | 8 +- templates/sales/estimates/sale_order.html | 359 +++++++++++++++ templates/sales/invoices/invoice_detail.html | 8 +- templates/sales/invoices/invoice_preview.html | 8 +- templates/vendors/vendors_list.html | 18 +- templates/vendors/view_vendor.html | 2 +- 30 files changed, 1156 insertions(+), 471 deletions(-) create mode 100644 inventory/migrations/0004_purchaseorder.py create mode 100644 inventory/migrations/0005_saleorder_delete_purchaseorder.py create mode 100644 inventory/migrations/0006_alter_car_vendor.py create mode 100644 inventory/migrations/0007_alter_cartransfer_status.py create mode 100644 static/images/images/IT-Consulting.jpg create mode 100644 static/images/images/cit.jpg create mode 100644 templates/sales/estimates/sale_order.html diff --git a/inventory/forms.py b/inventory/forms.py index 92ba04a4..d5dfa247 100644 --- a/inventory/forms.py +++ b/inventory/forms.py @@ -10,6 +10,7 @@ from .mixins import AddClassMixin from django.forms.models import inlineformset_factory from django_ledger.forms.invoice import InvoiceModelCreateForm as InvoiceModelCreateFormBase from django_ledger.forms.bill import BillModelCreateForm as BillModelCreateFormBase +from django_ledger.forms.vendor import VendorModelForm from .models import ( Dealer, # Branch, @@ -31,9 +32,10 @@ from .models import ( SaleQuotationCar, AdditionalServices, Staff, - Opportunity, Priority, Sources, Lead, Activity, Notes, CarModel + Opportunity, Priority, Sources, Lead, Activity, Notes, CarModel, + SaleOrder ) -from django_ledger.models import ItemModel, InvoiceModel, BillModel +from django_ledger.models import ItemModel, InvoiceModel, BillModel,VendorModel from django.forms import ModelMultipleChoiceField, ValidationError, DateInput from django.utils.translation import gettext_lazy as _ import django_tables2 as tables @@ -98,27 +100,53 @@ class DealerForm(forms.ModelForm): ] -# Customer Form -class CustomerForm(forms.ModelForm, AddClassMixin): - class Meta: - model = Customer - fields = [ - "title", - "first_name", - "middle_name", - "last_name", - "gender", - "dob", - "email", - "national_id", +class CustomerForm(forms.Form): + first_name = forms.CharField() + middle_name = forms.CharField() + last_name = forms.CharField() + national_id = forms.CharField(max_length=10) + email = forms.EmailField() + phone_number = PhoneNumberField( + min_length=10, + max_length=10, + region="SA", + ) + address = forms.CharField() + +class OrganizationForm(forms.Form): + name = forms.CharField() + arabic_name = forms.CharField() + email = forms.EmailField() + phone_number = PhoneNumberField( + min_length=10, + max_length=10, + region="SA", + ) + crn = forms.CharField() + vrn = forms.CharField() + address = forms.CharField() + contact_person = forms.CharField(required=False) + logo = forms.ImageField(required=False) +# class CustomerForm(forms.ModelForm, AddClassMixin): +# class Meta: +# model = Customer +# fields = [ +# "title", +# "first_name", +# "middle_name", +# "last_name", +# "gender", +# "dob", +# "email", +# "national_id", - "phone_number", - "address", - ] - widgets = { - "phone_number": forms.TextInput(attrs={"class": "phone"}), - "dob": forms.DateInput(attrs={"type": "date"}), - } +# "phone_number", +# "address", +# ] +# widgets = { +# "phone_number": forms.TextInput(attrs={"class": "phone"}), +# "dob": forms.DateInput(attrs={"type": "date"}), +# } class CarForm( @@ -160,10 +188,11 @@ class CarForm( (obj.id_car_model, obj.get_local_name()) for obj in queryset ] if "vendor" in self.fields: - queryset = self.fields["vendor"].queryset - self.fields["vendor"].choices = [ - (obj.pk, obj.get_local_name()) for obj in queryset - ] + self.fields["vendor"].queryset = VendorModel.objects.filter(active=True) + # queryset = self.fields["vendor"].queryset + # self.fields["vendor"].choices = [ + # (obj.pk, obj.get_local_name()) for obj in queryset + # ] class CarUpdateForm(forms.ModelForm, AddClassMixin): @@ -193,12 +222,12 @@ class CarUpdateForm(forms.ModelForm, AddClassMixin): # (branch.id, branch.get_local_name()) for branch in self.fields['branch'].queryset # ] - if "vendor" in self.fields: - queryset = self.fields["vendor"].queryset - if queryset: - self.fields["vendor"].choices = [ - (vendor.id, vendor.get_local_name()) for vendor in queryset - ] + # if "vendor" in self.fields: + # queryset = self.fields["vendor"].queryset + # if queryset: + # self.fields["vendor"].choices = [ + # (vendor.id, vendor.get_local_name()) for vendor in queryset + # ] class CarFinanceForm(AddClassMixin, forms.ModelForm): @@ -269,20 +298,22 @@ class CarRegistrationForm(forms.ModelForm): fields = ["car", "plate_number", "text1", "text2", "text3", "registration_date"] -class VendorForm(forms.ModelForm): - class Meta: - model = Vendor - fields = [ - "name", - "arabic_name", - "crn", - "vrn", - "email", - "phone_number", - "contact_person", - "address", - "logo", - ] +class VendorForm(VendorModelForm): + pass +# class VendorForm(forms.ModelForm): +# class Meta: +# model = Vendor +# fields = [ +# "name", +# "arabic_name", +# "crn", +# "vrn", +# "email", +# "phone_number", +# "contact_person", +# "address", +# "logo", +# ] class CarColorsForm(forms.ModelForm): @@ -343,22 +374,22 @@ class QuotationForm(forms.ModelForm): ).distinct() -class OrganizationForm(forms.ModelForm): - class Meta: - model = Organization - fields = [ - "name", - "arabic_name", - "crn", - "vrn", - "phone_number", - "address", - "logo", - ] +# class OrganizationForm(forms.ModelForm): +# class Meta: +# model = Organization +# fields = [ +# "name", +# "arabic_name", +# "crn", +# "vrn", +# "phone_number", +# "address", +# "logo", +# ] - def __init__(self, *args, **kwargs): - dealer = kwargs.pop("dealer", None) - super().__init__(*args, **kwargs) +# def __init__(self, *args, **kwargs): +# dealer = kwargs.pop("dealer", None) +# super().__init__(*args, **kwargs) class RepresentativeForm(forms.ModelForm): @@ -654,3 +685,12 @@ class BillModelCreateForm(BillModelCreateFormBase): self.fields['prepaid_account'].widget = forms.HiddenInput() self.fields['unearned_account'].widget = forms.HiddenInput() self.fields['date_draft'] = forms.DateField(widget=DateInput(attrs={'type': 'date'})) + +class SaleOrderForm(forms.ModelForm): + class Meta: + model = SaleOrder + fields = '__all__' + widgets = { + 'address': forms.Textarea(attrs={'rows': 3}), + 'comments': forms.Textarea(attrs={'rows': 3}), + } \ No newline at end of file diff --git a/inventory/migrations/0004_purchaseorder.py b/inventory/migrations/0004_purchaseorder.py new file mode 100644 index 00000000..dfc29557 --- /dev/null +++ b/inventory/migrations/0004_purchaseorder.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.17 on 2025-01-23 08:51 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0003_cartransfer'), + ] + + operations = [ + migrations.CreateModel( + name='PurchaseOrder', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('payment_method', models.CharField(choices=[('cash', 'Cash'), ('finance', 'Finance'), ('lease', 'Lease')], max_length=20)), + ('trade_in', models.CharField(blank=True, max_length=100, null=True)), + ('comments', models.TextField(blank=True, null=True)), + ('car', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='purchase_orders', to='inventory.car', verbose_name='Car')), + ('customer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='purchase_orders', to='inventory.customer', verbose_name='Customer')), + ], + ), + ] diff --git a/inventory/migrations/0005_saleorder_delete_purchaseorder.py b/inventory/migrations/0005_saleorder_delete_purchaseorder.py new file mode 100644 index 00000000..84dddfa1 --- /dev/null +++ b/inventory/migrations/0005_saleorder_delete_purchaseorder.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.17 on 2025-01-23 11:06 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0004_purchaseorder'), + ] + + operations = [ + migrations.CreateModel( + name='SaleOrder', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('payment_method', models.CharField(choices=[('cash', 'Cash'), ('finance', 'Finance'), ('lease', 'Lease')], max_length=20)), + ('trade_in', models.CharField(blank=True, max_length=100, null=True)), + ('comments', models.TextField(blank=True, null=True)), + ('car', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sale_orders', to='inventory.car', verbose_name='Car')), + ('customer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sale_orders', to='inventory.customer', verbose_name='Customer')), + ], + ), + migrations.DeleteModel( + name='PurchaseOrder', + ), + ] diff --git a/inventory/migrations/0006_alter_car_vendor.py b/inventory/migrations/0006_alter_car_vendor.py new file mode 100644 index 00000000..b9df356f --- /dev/null +++ b/inventory/migrations/0006_alter_car_vendor.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.17 on 2025-01-24 15:32 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_ledger', '0017_alter_accountmodel_unique_together_and_more'), + ('inventory', '0005_saleorder_delete_purchaseorder'), + ] + + operations = [ + migrations.AlterField( + model_name='car', + name='vendor', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='cars', to='django_ledger.vendormodel', verbose_name='Vendor'), + ), + ] diff --git a/inventory/migrations/0007_alter_cartransfer_status.py b/inventory/migrations/0007_alter_cartransfer_status.py new file mode 100644 index 00000000..7fa30fab --- /dev/null +++ b/inventory/migrations/0007_alter_cartransfer_status.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.17 on 2025-01-26 07:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0006_alter_car_vendor'), + ] + + operations = [ + migrations.AlterField( + model_name='cartransfer', + name='status', + field=models.CharField(default='draft', max_length=10, verbose_name=[('draft', 'Draft'), ('approved', 'Approved'), ('pending', 'Pending'), ('accepted', 'Accepted'), ('success', 'Success'), ('reject', 'Reject'), ('cancelled', 'Cancelled')]), + ), + ] diff --git a/inventory/models.py b/inventory/models.py index ae0cc00b..a901e9b9 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -278,6 +278,7 @@ class CarTransferStatusChoices(models.TextChoices): accepted = "accepted", _("Accepted") success = "success", _("Success") reject = "reject", _("Reject") + cancelled = "cancelled", _("Cancelled") class CarStatusChoices(models.TextChoices): @@ -332,7 +333,7 @@ class Car(models.Model): ) vendor = models.ForeignKey( - "Vendor", + VendorModel, models.DO_NOTHING, null=True, blank=True, @@ -408,6 +409,21 @@ class Car(models.Model): def get_car_group(self): return f"{self.id_car_make.get_local_name} {self.id_car_model.get_local_name}" + def to_dict(self): + return { + "vin": self.vin, + "make": self.id_car_make.name if self.id_car_make else "Unknown Make", + "model": self.id_car_model.name if self.id_car_model else "Unknown Model", + "trim": self.id_car_trim.name if self.id_car_trim else "Unknown Trim", + "year": self.year, + "display_name": self.get_car_group, + "status": self.status, + "stock_type": self.stock_type, + "remarks": self.remarks, + "mileage": self.mileage, + "receiving_date": self.receiving_date.strftime('%Y-%m-%d %H:%M:%S'), + "id": self.id, + } class CarTransfer(models.Model): car = models.ForeignKey( @@ -445,7 +461,7 @@ class CarTransfer(models.Model): @property def total_price(self): - return self.quantity * self.car.finances.cost_price + return self.quantity * self.car.finances.total_vat class Meta: verbose_name = _("Car Transfer Log") verbose_name_plural = _("Car Transfer Logs") @@ -529,6 +545,16 @@ class CarFinance(models.Model): def revenue(self): return self.selling_price - self.cost_price + def to_dict(self): + return { + "cost_price": str(self.cost_price), + "selling_price": str(self.selling_price), + "discount_amount": str(self.discount_amount), + "total": str(self.total), + "total_discount": str(self.total_discount), + "total_vat": str(self.total_vat), + "vat_amount": str(self.vat_amount), + } def __str__(self): return f"Car: {self.car}, Selling Price: {self.selling_price}" @@ -1513,3 +1539,35 @@ class UserActivityLog(models.Model): def __str__(self): return f"{self.user.email} - {self.action} - {self.timestamp}" + +class SaleOrder(models.Model): + customer = models.ForeignKey( + Customer, + on_delete=models.CASCADE, + related_name="sale_orders", + verbose_name=_("Customer"), + ) + car = models.ForeignKey( + Car, + on_delete=models.CASCADE, + related_name="sale_orders", + verbose_name=_("Car"), + ) + payment_method = models.CharField(max_length=20, choices=[ + ('cash', 'Cash'), + ('finance', 'Finance'), + ('lease', 'Lease'), + ]) + trade_in = models.CharField(max_length=100, blank=True, null=True) + comments = models.TextField(blank=True, null=True) + + def __str__(self): + return f"Sale Order for {self.full_name} - {self.make} {self.model}" + + @property + def full_name(self): + return f"{self.customer.first_name} {self.customer.last_name}" + + @property + def price(self): + return self.car.finances.selling_price \ No newline at end of file diff --git a/inventory/signals.py b/inventory/signals.py index 3f8bcc7f..4422d3ae 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -1,4 +1,6 @@ +from decimal import Decimal from django.db.models.signals import post_save, post_delete, pre_delete, pre_save +from .utils import to_dict from django.dispatch import receiver from django.utils.translation import gettext_lazy as _ from django.contrib.auth import get_user_model @@ -10,6 +12,7 @@ from django_ledger.models import ( ItemModelAbstract, UnitOfMeasureModel, VendorModel, + EstimateModel ) from . import models from django.utils.timezone import now @@ -674,35 +677,36 @@ def create_customer(sender, instance, created, **kwargs): # Create Item @receiver(post_save, sender=models.Car) -def create_item_model(sender, instance, created, **kwargs): - name = instance.dealer.name - entity = EntityModel.objects.filter(name=name).first() +def create_item_model(sender, instance, created, **kwargs): + entity = instance.dealer.entity if created: coa = entity.get_default_coa() uom = entity.get_uom_all().get(name="Unit") - if not entity.get_items_all().filter(name=instance.vin).first(): - entity.create_item_product( - name=f"{instance.vin}", + if not entity.get_items_all().filter(name=instance.vin).exists(): + product = entity.create_item_product( + name=instance.vin, item_type=ItemModel.ITEM_TYPE_MATERIAL, uom_model=uom, coa_model=coa, + additional_info={} ) - entity.create_item_inventory( - name=f"{instance.vin}", - item_type=ItemModel.ITEM_TYPE_MATERIAL, - uom_model=uom, - coa_model=coa, - ) - + + product = entity.get_items_all().filter(name=instance.vin).first() + product.additional_info.update({'car_info': instance.to_dict()}) + product.save() # # update price - CarFinance @receiver(post_save, sender=models.CarFinance) def update_item_model_cost(sender, instance, created, **kwargs): - ItemModel.objects.filter(item_id=instance.car.vin).update( - inventory_received_value=instance.cost_price, - default_amount=instance.cost_price, - ) + entity = instance.car.dealer.entity + + product = entity.get_items_all().filter(name=instance.car.vin).first() + product.default_amount = instance.selling_price + product.additional_info = {} + product.additional_info.update({"car_finance":instance.to_dict()}) + product.additional_info.update({"additional_services": [to_dict(service) for service in instance.additional_services.all()]}) + product.save() print(f"Inventory item updated with CarFinance data for Car: {instance.car}") @@ -852,4 +856,10 @@ def update_car_status_on_reservation_update(sender, instance, **kwargs): else: if not car.reservations.filter(reserved_until__gt=now()).exists(): car.status = models.CarStatusChoices.AVAILABLE - car.save() \ No newline at end of file + car.save() + +# @receiver(post_save, sender=EstimateModel) +# def update_estimate_status(sender, instance,created, **kwargs): + +# items = instance.get_itemtxs_data()[0].all() +# total = sum([Decimal(item.item_model.additional_info['car_finance']["selling_price"]) * Decimal(item.ce_quantity) for item in items]) diff --git a/inventory/urls.py b/inventory/urls.py index 0f35f4d7..80ec7da9 100644 --- a/inventory/urls.py +++ b/inventory/urls.py @@ -64,26 +64,26 @@ urlpatterns = [ # CRM URLs path("customers/", views.CustomerListView.as_view(), name="customer_list"), path( - "customers//", + "customers//", views.CustomerDetailView.as_view(), name="customer_detail", ), path( - "customers/create/", views.CustomerCreateView.as_view(), name="customer_create" + "customers/create/", views.CustomerCreateView, name="customer_create" ), path( - "customers//update/", - views.CustomerUpdateView.as_view(), + "customers//update/", + views.CustomerUpdateView, name="customer_update", ), - path("customers//delete/", views.delete_customer, name="customer_delete"), + path("customers//delete/", views.delete_customer, name="customer_delete"), path( - "customers//opportunities/create/", + "customers//opportunities/create/", views.OpportunityCreateView.as_view(), name="create_opportunity", ), path( - "customers//add-note/", + "customers//add-note/", views.add_note_to_customer, name="add_note_to_customer", ), @@ -147,16 +147,16 @@ urlpatterns = [ ), # Vendor URLs path("vendors", views.VendorListView.as_view(), name="vendor_list"), - path("vendors//", views.VendorDetailView.as_view(), name="vendor_detail"), + path("vendors//", views.VendorDetailView.as_view(), name="vendor_detail"), path("vendors/create/", views.VendorCreateView.as_view(), name="vendor_create"), path( - "vendors//update/", + "vendors//update/", views.VendorUpdateView.as_view(), name="vendor_update", ), path( - "vendors//delete/", - views.VendorDetailView.as_view(), + "vendors//delete/", + views.delete_vendor, name="vendor_delete", ), # Car URLs @@ -263,9 +263,8 @@ urlpatterns = [ name="mark_quotation", ), path( - "sales/quotations//post_quotation/", - views.post_quotation, - name="post_quotation", + "sales/quotations//post_quotation/",views.post_quotation, + name="post_quotation" ), path( "sales/quotations//invoice_detail/", @@ -291,22 +290,22 @@ urlpatterns = [ "organizations/", views.OrganizationListView.as_view(), name="organization_list" ), path( - "organizations//", + "organizations//", views.OrganizationDetailView.as_view(), name="organization_detail", ), path( "organizations/create/", - views.OrganizationCreateView.as_view(), + views.OrganizationCreateView, name="organization_create", ), path( - "organizations//update/", - views.OrganizationUpdateView.as_view(), + "organizations//update/", + views.OrganizationUpdateView, name="organization_update", ), path( - "organizations//delete/", + "organizations//delete/", views.OrganizationDeleteView.as_view(), name="organization_delete", ), @@ -403,6 +402,8 @@ urlpatterns = [ path( "sales/estimates//send_email", views.send_email_view, name="send_email" ), + path('sales/estimates//sale_order/', views.create_sale_order, name='create_sale_order'), + # Invoice path("sales/invoices/", views.InvoiceListView.as_view(), name="invoice_list"), path( diff --git a/inventory/utils.py b/inventory/utils.py index a95a19ac..2abf4681 100644 --- a/inventory/utils.py +++ b/inventory/utils.py @@ -15,7 +15,7 @@ from django.core.mail import send_mail from django.utils.translation import gettext_lazy as _ from inventory.utilities.financials import get_financial_value from django_ledger.models.items import ItemModel -from django_ledger.models import InvoiceModel, EstimateModel,BillModel +from django_ledger.models import InvoiceModel, EstimateModel,BillModel,VendorModel,CustomerModel from decimal import Decimal @@ -136,51 +136,61 @@ def get_financial_values(model): "car_and_item_info": [], "additional_services": [], } + data = model.get_itemtxs_data()[0].all() - data = model.get_itemtxs_data()[0].all() - + for item in data: + if not item.item_model.additional_info.get("car_finance"): + return { + "vat_amount": 0, + "total": 0, + "grand_total": 0, + "discount_amount": 0, + "vat": 0, + "car_and_item_info": [], + "additional_services": [], + } + if isinstance(model, InvoiceModel): - data = model.ce_model.get_itemtxs_data()[0].all() - - car_and_item_info = [ - { - "car": models.Car.objects.get(vin=x.item_model.name), - "total": models.Car.objects.get( - vin=x.item_model.name - ).finances.selling_price - * Decimal(x.ce_quantity), - "itemmodel": x, - } - for x in data - ] - total = sum( - Decimal(models.Car.objects.get(vin=x.item_model.name).finances.total) - * Decimal(x.ce_quantity) - for x in data - ) + if model.ce_model: + data = model.ce_model.get_itemtxs_data()[0].all() + else: + data = model.get_itemtxs_data()[0].all() + total = sum([Decimal(item.item_model.additional_info["car_finance"]["selling_price"]) * Decimal(item.ce_quantity or item.quantity) for item in data]) + discount_amount = sum( - models.CarFinance.objects.get(car__vin=i.item_model.name).discount_amount + Decimal(i.item_model.additional_info['car_finance']["discount_amount"]) for i in data ) additional_services = [] - for i in data: - cf = models.CarFinance.objects.get(car__vin=i.item_model.name) - if cf.additional_services.exists(): + for i in data: + if i.item_model.additional_info['additional_services']: additional_services.extend( [ {"name": x.name, "price": x.price} - for x in cf.additional_services.all() + for x in i.item_model.additional_info['additional_services'] ] ) grand_total = Decimal(total) - Decimal(discount_amount) vat_amount = round(Decimal(grand_total) * Decimal(vat.rate), 2) + + car_and_item_info = [ + { + "info": x.item_model.additional_info['car_info'], + "finances": x.item_model.additional_info['car_finance'], + "quantity": x.ce_quantity or x.quantity, + "total": Decimal(x.item_model.additional_info['car_finance']['selling_price']) + * Decimal(x.ce_quantity or x.quantity), + } + for x in data + ] + return { - "car_and_item_info": car_and_item_info, "total": total, "discount_amount": discount_amount, + "car_and_item_info": car_and_item_info, "additional_services": additional_services, "grand_total": grand_total + vat_amount, "vat_amount": vat_amount, @@ -194,12 +204,13 @@ def set_invoice_payment(dealer, entity, invoice, amount, payment_method): if invoice.terms == "on_receipt": for x in invoice.get_itemtxs_data()[0].all(): - vat_amount += models.Car.objects.get( - vin=x.item_model.name - ).finances.vat_amount * Decimal(x.quantity) + # vat_amount += models.Car.objects.get( + # vin=x.item_model.name + # ).finances.vat_amount * Decimal(x.quantity) total_amount += Decimal(x.unit_cost) * Decimal(x.quantity) - grand_total = total_amount - Decimal(vat_amount) + # grand_total = total_amount - Decimal(vat_amount) + total_amount ledger = LedgerModel.objects.filter( name__icontains=str(invoice.pk), entity=entity @@ -234,11 +245,13 @@ def set_invoice_payment(dealer, entity, invoice, amount, payment_method): tx_type="debit", description="Payment Received", ) + + # if total_amount + invoice. TransactionModel.objects.create( journal_entry=journal, account=credit_account, # Credit Accounts Receivable - amount=grand_total, # Payment amount + amount=total_amount, # Payment amount tx_type="credit", description="Payment Received", ) @@ -329,26 +342,19 @@ def transfer_car(car,transfer): from_dealer = transfer.from_dealer to_dealer = transfer.to_dealer # add transfer.to_dealer as customer in transfer.from_dealer entity - instance = models.Customer.objects.filter( - dealer=from_dealer, - email=to_dealer.user.email, - ).first() - if not instance: - instance = models.Customer.objects.create( - dealer=from_dealer, - title=models.Title.MR, - email=to_dealer.user.email, - first_name=to_dealer.user.first_name, - last_name=to_dealer.user.last_name, - phone_number=f"05685412{random.randint(10, 99)}", - address=to_dealer.address, - national_id=f"{random.randint(100, 9999)}", - dob="1990-01-01", - ) - # create invoice from transfer.from_dealer to transfer.to_dealer - name = f"{instance.first_name} {instance.middle_name} {instance.last_name}" - customer = from_dealer.entity.get_customers().filter(customer_name=name).first() + customer = from_dealer.entity.get_customers().filter( + email=to_dealer.user.email).first() + if not customer: + customer = from_dealer.entity.create_customer( + customer_model_kwargs={ + "customer_name": to_dealer.name, + "email": to_dealer.user.email, + "address_1": to_dealer.address + } + ) + customer.additional_info.update({"type":"organization"}) + customer.save() invoice = from_dealer.entity.create_invoice( customer_model=customer, @@ -369,7 +375,7 @@ def transfer_car(car,transfer): invoice_itemtxs = { item.item_number: { - "unit_cost": car.finances.cost_price, + "unit_cost": transfer.total_price, "quantity": transfer.quantity, "total_amount": transfer.total_price, } @@ -381,46 +387,33 @@ def transfer_car(car,transfer): operation=InvoiceModel.ITEMIZE_APPEND, ) + invoice.save() invoice.mark_as_review() invoice.mark_as_approved(from_dealer.entity.slug, from_dealer.entity.admin) - invoice.mark_as_paid(from_dealer.entity.slug, from_dealer.entity.admin) + # invoice.mark_as_paid(from_dealer.entity.slug, from_dealer.entity.admin) invoice.save() - #create car item product in to_dealer entity uom = to_dealer.entity.get_uom_all().filter(name=item.uom.name).first() + #create item product in the reciever ledger product = to_dealer.entity.create_item_product( name=item.name, uom_model=uom, item_type=item.item_type, coa_model=to_dealer.entity.get_default_coa(), ) - - car_dict = vars(car).copy() - del car_dict["_state"] - for key, value in car_dict.items(): - if isinstance(value, datetime.datetime): - car_dict[key] = value.strftime('%Y-%m-%d %H:%M:%S') - product.additional_info = json.dumps({"car_info": car_dict}) + + product.additional_info.update({'car_info': car.to_dict()}) product.save() #add the sender as vendor and create a bill for it - vendor_instance, created = models.Vendor.objects.get_or_create( - dealer=to_dealer, - crn=from_dealer.crn, - vrn=from_dealer.vrn, - name=from_dealer.name, - email=from_dealer.user.email, - arabic_name=from_dealer.arabic_name, - address=from_dealer.address, - phone_number=from_dealer.phone_number, - contact_person='', - ) - + vendor = None + vendor = to_dealer.entity.get_vendors().filter(vendor_name=from_dealer.name).first() + if not vendor: + vendor = VendorModel.objects.create(entity_model=to_dealer.entity, vendor_name=from_dealer.name,additional_info={"info":to_dict(from_dealer)}) + #transfer the car to to_dealer and create items record - - vendor = to_dealer.entity.get_vendors().filter(vendor_name=vendor_instance.name).first() - + bill = to_dealer.entity.create_bill( vendor_model=vendor, terms=BillModel.TERMS_NET_30, @@ -428,10 +421,10 @@ def transfer_car(car,transfer): prepaid_account=to_dealer.entity.get_default_coa_accounts().get(name="Prepaid Expenses", active=True), coa_model=to_dealer.entity.get_default_coa(), ) - + bill.additional_info = {} bill_itemtxs = { - item.item_number: { - "unit_cost": car.finances.cost_price, + product.item_number: { + "unit_cost": transfer.total_price, "quantity": transfer.quantity, "total_amount": transfer.total_price, } @@ -439,16 +432,23 @@ def transfer_car(car,transfer): bill_itemtxs = bill.migrate_itemtxs(itemtxs=bill_itemtxs, commit=True, - operation=BillModel.ITEMIZE_REPLACE) + operation=BillModel.ITEMIZE_APPEND) + bill.additional_info.update({'car_info': car.to_dict()}) + bill.additional_info.update({'car_finance': car.finances.to_dict()}) + + bill.mark_as_review() + bill.mark_as_approved(to_dealer.entity.slug, to_dealer.entity.admin) + bill.save() car.dealer = to_dealer - car.vendor = vendor_instance + car.vendor = vendor car.receiving_date = datetime.datetime.now() car.finances.additional_services.clear() if hasattr(car, "custom_cards"): car.custom_cards.delete() - # car.finances.cost_price = 0 + + car.finances.cost_price = transfer.total_price car.finances.selling_price = 0 car.finances.discount_amount = 0 car.finances.save() @@ -456,8 +456,6 @@ def transfer_car(car,transfer): car.location.showroom = to_dealer car.location.description = "" car.location.save() - - # car.reservations.all().delete() car.status = models.CarStatusChoices.AVAILABLE transfer.status = models.CarTransferStatusChoices.success transfer.active = False @@ -467,6 +465,20 @@ def transfer_car(car,transfer): return True #pay the pill # set_bill_payment(to_dealer,to_dealer.entity,bill,transfer.total_price,"credit") + +def to_dict(obj): + obj_dict = vars(obj).copy() + if '_state' in vars(obj): + del obj_dict["_state"] - - \ No newline at end of file + for key, value in obj_dict.items(): + if isinstance(value, datetime.datetime): + obj_dict[key] = value.strftime('%Y-%m-%d %H:%M:%S') + elif hasattr(value,'pk') or hasattr(value,'id'): + try: + obj_dict[key] = value.name + except AttributeError: + obj_dict[key] = str(value) + else: + obj_dict[key] = str(value) + return obj_dict \ No newline at end of file diff --git a/inventory/views.py b/inventory/views.py index aa6c2e9d..8b9bd00d 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -1,7 +1,10 @@ from decimal import Decimal from django.core.paginator import Paginator from django.forms import DateField, DateInput, HiddenInput, TextInput -from django_ledger.forms.bill import ApprovedBillModelUpdateForm, InReviewBillModelUpdateForm +from django_ledger.forms.bill import ( + ApprovedBillModelUpdateForm, + InReviewBillModelUpdateForm, +) from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt from django_ledger.models import ( @@ -15,12 +18,15 @@ from django_ledger.models import ( CustomerModel, LedgerModel, ItemModel, - BillModel + BillModel, + VendorModel, ) from django_ledger.forms.bank_account import ( BankAccountCreateForm, BankAccountUpdateForm, ) + +from django_ledger.forms.customer import CustomerModelForm from django_ledger.forms.bill import BillModelCreateForm from django_ledger.forms.invoice import ( DraftInvoiceModelUpdateForm, @@ -84,6 +90,7 @@ from .utils import ( get_user_type, set_bill_payment, set_invoice_payment, + to_dict, transfer_car, ) from django.contrib.auth.models import User @@ -93,6 +100,7 @@ from django.contrib.auth import authenticate import cv2 import numpy as np from pyzbar.pyzbar import decode +from django.core.files.storage import default_storage logger = logging.getLogger(__name__) @@ -289,6 +297,12 @@ class CarCreateView(LoginRequiredMixin, CreateView): template_name = "inventory/car_form.html" # success_url = reverse_lazy('inventory_stats') + def get_form(self, form_class=None): + form = super().get_form(form_class) + dealer = get_user_type(self.request) + form.fields["vendor"].queryset = dealer.entity.get_vendors().filter(active=True) + return form + def get_success_url(self): """Determine the redirect URL based on user choice.""" if self.request.POST.get("add_another"): @@ -779,52 +793,76 @@ class CarLocationUpdateView(UpdateView): def get_success_url(self): return reverse_lazy("car_detail", kwargs={"pk": self.object.car.pk}) + class CarTransferCreateView(CreateView): model = models.CarTransfer form_class = forms.CarTransferForm template_name = "inventory/car_location_form.html" - - def get_form(self, form_class = None): + + def get_form(self, form_class=None): form = super().get_form(form_class) - form.fields['to_dealer'].queryset = models.Dealer.objects.exclude(pk=get_user_type(self.request).pk).all() - form.fields['car'].queryset = models.Car.objects.filter(pk=self.kwargs["pk"]) + form.fields["to_dealer"].queryset = models.Dealer.objects.exclude( + pk=get_user_type(self.request).pk + ).all() + form.fields["car"].queryset = models.Car.objects.filter(pk=self.kwargs["pk"]) return form + def get_initial(self): initial = super().get_initial() initial["car"] = get_object_or_404(models.Car, pk=self.kwargs["pk"]) return initial - - def form_valid(self, form): + + def form_valid(self, form): form.instance.from_dealer = get_user_type(self.request) form.instance.car.status = "transfer" form.instance.car.save() return super().form_valid(form) - + def get_success_url(self): return reverse_lazy("car_detail", kwargs={"pk": self.object.car.pk}) + def CarTransferDetailView(request, pk): transfer = get_object_or_404(models.CarTransfer, pk=pk) - context = {"transfer":transfer} - return render(request,'inventory/transfer_details.html',context) + context = {"transfer": transfer} + return render(request, "inventory/transfer_details.html", context) -def car_transfer_approve(request, car_pk,transfer_pk): + +def car_transfer_approve(request, car_pk, transfer_pk): car = get_object_or_404(models.Car, pk=car_pk) - transfer = get_object_or_404(models.CarTransfer, pk=transfer_pk) + transfer = get_object_or_404(models.CarTransfer, pk=transfer_pk) + action = request.GET.get("action") + if action == "cancel": + transfer.status = "cancel" + transfer.active = False + transfer.save() + transfer.car.status = "available" + transfer.car.save() + messages.success(request, _("Car transfer canceled successfully.")) + models.Notification.objects.create( + user=transfer.from_dealer.user, + message=f"Car transfer request from {transfer.to_dealer} is canceled.", + ) + return redirect("car_detail", pk=car.pk) transfer.status = "approved" transfer.save() - url = request.build_absolute_uri(reverse('transfer_preview',kwargs={'car_pk':car.pk,"transfer_pk":transfer.pk})) + url = request.build_absolute_uri( + reverse( + "transfer_preview", kwargs={"car_pk": car.pk, "transfer_pk": transfer.pk} + ) + ) models.Notification.objects.create( user=transfer.to_dealer.user, - message=f"Car transfer request from {transfer.from_dealer} is waiting for your acceptance. Accept", + message=f"Car transfer request from {transfer.from_dealer} is waiting for your acceptance. Accept", ) messages.success(request, _("Car transfer approved successfully.")) return redirect("car_detail", pk=car.pk) -def car_transfer_accept_reject(request, car_pk,transfer_pk): + +def car_transfer_accept_reject(request, car_pk, transfer_pk): car = get_object_or_404(models.Car, pk=car_pk) - transfer = get_object_or_404(models.CarTransfer, pk=transfer_pk) - status = request.GET.get("status") + transfer = get_object_or_404(models.CarTransfer, pk=transfer_pk) + status = request.GET.get("status") if status == "rejected": transfer.status = "reject" transfer.active = False @@ -837,7 +875,7 @@ def car_transfer_accept_reject(request, car_pk,transfer_pk): elif status == "accepted": transfer.status = "accept" transfer.save() - success = transfer_car(car,transfer) + success = transfer_car(car, transfer) if success: messages.success(request, _("Car Transfer Completed successfully.")) models.Notification.objects.create( @@ -845,12 +883,13 @@ def car_transfer_accept_reject(request, car_pk,transfer_pk): message=f"Car transfer request from {transfer.to_dealer} is completed.", ) return redirect("inventory_stats") - -def CarTransferPreviewView(request, car_pk,transfer_pk): + + +def CarTransferPreviewView(request, car_pk, transfer_pk): transfer = get_object_or_404(models.CarTransfer, pk=transfer_pk) if transfer.to_dealer != get_user_type(request): return redirect("car_detail", pk=car_pk) - return render(request,'inventory/transfer_preview.html',{"transfer":transfer}) + return render(request, "inventory/transfer_preview.html", {"transfer": transfer}) # def get_context_data(self, **kwargs): # estimate = kwargs.get("object") # if estimate.get_itemtxs_data(): @@ -865,11 +904,9 @@ def CarTransferPreviewView(request, car_pk,transfer_pk): # return super().get_context_data(**kwargs) - - # class CarTransferView(View): -# template_name = "inventory/car_location_form.html" - +# template_name = "inventory/car_location_form.html" + # def get(self, request, *args, **kwargs): # form = forms.CarTransferForm() # car = models.Car.objects.filter(pk=self.kwargs["pk"]) @@ -878,7 +915,7 @@ def CarTransferPreviewView(request, car_pk,transfer_pk): # form.initial['car'] = car.first() # context = {"form": form} # return render(request, self.template_name,context) - + # def post(self, request, *args, **kwargs): # form = forms.CarTransferForm(request.POST) # if form.is_valid(): @@ -894,6 +931,7 @@ def CarTransferPreviewView(request, car_pk,transfer_pk): # # messages.success(request, "Car transfered successfully.") # return redirect("car_detail", pk=self.kwargs["pk"]) + class CustomCardCreateView(LoginRequiredMixin, CreateView): model = models.CustomCard form_class = forms.CustomCardForm @@ -997,7 +1035,7 @@ class DealerUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): class CustomerListView(LoginRequiredMixin, ListView): - model = models.Customer + model = CustomerModel home_label = _("customers") context_object_name = "customers" paginate_by = 10 @@ -1008,13 +1046,13 @@ class CustomerListView(LoginRequiredMixin, ListView): query = self.request.GET.get("q") dealer = get_user_type(self.request) - customers = models.Customer.objects.filter(dealer=dealer) + customers = dealer.entity.get_customers().filter(active=True,additional_info__type="customer") if query: customers = customers.filter( - Q(national_id__icontains=query) - | Q(first_name__icontains=query) + Q(first_name__icontains=query) | Q(last_name__icontains=query) + | Q(additional_info__info__icontains=query) ) return customers @@ -1025,7 +1063,7 @@ class CustomerListView(LoginRequiredMixin, ListView): class CustomerDetailView(LoginRequiredMixin, DetailView): - model = models.Customer + model = CustomerModel template_name = "customers/view_customer.html" context_object_name = "customer" @@ -1033,21 +1071,22 @@ class CustomerDetailView(LoginRequiredMixin, DetailView): dealer = get_user_type(self.request) entity = dealer.entity context = super().get_context_data(**kwargs) - name = f"{context['customer'].first_name} {context['customer'].middle_name} {context['customer'].last_name}" - context["estimates"] = entity.get_estimates().filter( - customer__customer_name=name - ) - context["notes"] = models.Notes.objects.filter( - content_type__model="customer", object_id=self.object.id - ) - context["activities"] = models.Activity.objects.filter( - content_type__model="customer", object_id=self.object.id - ) + # customer = f"{context['customer'].first_name} {context['customer'].middle_name} {context['customer'].last_name}" + # context["estimates"] = entity.get_estimates().filter( + # customer__customer_name=name + # ) + context["estimates"] = context["customer"].estimatemodel_set.all() + # context["notes"] = models.Notes.objects.filter( + # content_type__model="customer", object_id=self.object.id + # ) + # context["activities"] = models.Activity.objects.filter( + # content_type__model="customer", object_id=self.object.id + # ) return context def add_note_to_customer(request, pk): - customer = get_object_or_404(models.Customer, pk=pk) + customer = get_object_or_404(CustomerModel, pk=pk) if request.method == "POST": form = forms.NoteForm(request.POST) if form.is_valid(): @@ -1063,7 +1102,7 @@ def add_note_to_customer(request, pk): def add_activity_to_customer(request, pk): - customer = get_object_or_404(models.Customer, pk=pk) + customer = get_object_or_404(CustomerModel, pk=pk) if request.method == "POST": form = forms.ActivityForm(request.POST) if form.is_valid(): @@ -1079,32 +1118,69 @@ def add_activity_to_customer(request, pk): ) -class CustomerCreateView( - LoginRequiredMixin, - SuccessMessageMixin, - CreateView, -): - model = models.Customer - form_class = forms.CustomerForm - template_name = "customers/customer_form.html" - success_url = reverse_lazy("customer_list") - success_message = _("Customer created successfully.") +def CustomerCreateView(request): + if request.method == "POST": + customer_dict = { + x: request.POST[x] for x in request.POST if x != "csrfmiddlewaretoken" + } + dealer = get_user_type(request) + customer_name = ( + customer_dict["first_name"] + + " " + + customer_dict["middle_name"] + + " " + + customer_dict["last_name"] + ) - def form_valid(self, form): - form.instance.dealer = get_user_type(self.request) - return super().form_valid(form) + instance = dealer.entity.create_customer( + customer_model_kwargs={ + "customer_name": customer_name, + "address_1": customer_dict["address"], + "phone": customer_dict["phone_number"], + "email": customer_dict["email"], + } + ) + customer_dict["pk"] = str(instance.pk) + instance.additional_info["customer_info"] = customer_dict + instance.additional_info["type"] = "customer" + instance.save() + messages.success(request, _("Customer created successfully.")) + return redirect("customer_list") + + form = forms.CustomerForm() + return render(request, "customers/customer_form.html", {"form": form}) -class CustomerUpdateView( - LoginRequiredMixin, - SuccessMessageMixin, - UpdateView, -): - model = models.Customer - form_class = forms.CustomerForm - template_name = "customers/customer_form.html" - success_url = reverse_lazy("customer_list") - success_message = _("Customer updated successfully.") +def CustomerUpdateView(request, pk): + customer = get_object_or_404(CustomerModel, pk=pk) + if request.method == "POST": + # form = forms.CustomerForm(request.POST, instance=customer) + customer_dict = { + x: request.POST[x] for x in request.POST if x != "csrfmiddlewaretoken" + } + dealer = get_user_type(request) + customer_name = ( + customer_dict["first_name"] + + " " + + customer_dict["middle_name"] + + " " + + customer_dict["last_name"] + ) + + instance = dealer.entity.get_customers().get(pk=pk) + instance.customer_name = customer_name + instance.address_1 = customer_dict["address"] + instance.phone = customer_dict["phone_number"] + instance.email = customer_dict["email"] + + customer_dict["pk"] = str(instance.pk) + instance.additional_info["customer_info"] = customer_dict + instance.save() + messages.success(request, _("Customer updated successfully.")) + return redirect("customer_list") + else: + form = forms.CustomerForm(initial=customer.additional_info["customer_info"] if "customer_info" in customer.additional_info else {}) + return render(request, "customers/customer_form.html", {"form": form}) @login_required @@ -1116,7 +1192,7 @@ def delete_customer(request, pk): class VendorListView(LoginRequiredMixin, ListView): - model = models.Vendor + model = VendorModel context_object_name = "vendors" paginate_by = 10 template_name = "vendors/vendors_list.html" @@ -1124,11 +1200,12 @@ class VendorListView(LoginRequiredMixin, ListView): def get_queryset(self): dealer = get_user_type(self.request) - return models.Vendor.objects.filter(dealer=dealer) + + return dealer.entity.get_vendors().filter(active=True) class VendorDetailView(LoginRequiredMixin, DetailView): - model = models.Vendor + model = VendorModel template_name = "vendors/view_vendor.html" @@ -1137,14 +1214,17 @@ class VendorCreateView( SuccessMessageMixin, CreateView, ): - model = models.Vendor + model = VendorModel form_class = forms.VendorForm template_name = "vendors/vendor_form.html" success_url = reverse_lazy("vendor_list") success_message = _("Vendor created successfully.") def form_valid(self, form): - form.instance.dealer = get_user_type(self.request) + dealer = get_user_type(self.request) + instance = form.save(commit=False) + instance.entity_model = dealer.entity + instance.save() return super().form_valid(form) @@ -1153,7 +1233,7 @@ class VendorUpdateView( SuccessMessageMixin, UpdateView, ): - model = models.Vendor + model = VendorModel form_class = forms.VendorForm template_name = "vendors/vendor_form.html" success_url = reverse_lazy("vendor_list") @@ -1162,8 +1242,9 @@ class VendorUpdateView( @login_required def delete_vendor(request, pk): - vendor = get_object_or_404(models.Vendor, pk=pk) - vendor.delete() + vendor = get_object_or_404(VendorModel, pk=pk) + vendor.active = False + vendor.save() messages.success(request, _("Vendor deleted successfully.")) return redirect("vendor_list") @@ -1630,14 +1711,14 @@ def custom_bad_request_view(request, exception=None): class OrganizationListView(LoginRequiredMixin, ListView): - model = models.Organization + model = CustomerModel template_name = "organizations/organization_list.html" context_object_name = "organizations" paginate_by = 10 def get_queryset(self): dealer = get_user_type(self.request) - return models.Organization.objects.filter(dealer=dealer).all() + return dealer.entity.get_customers().filter(additional_info__type="organization",active=True).all() class OrganizationDetailView(DetailView): @@ -1646,29 +1727,69 @@ class OrganizationDetailView(DetailView): context_object_name = "organization" -class OrganizationCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView): - model = models.Organization - form_class = forms.OrganizationForm - template_name = "organizations/organization_form.html" - success_url = reverse_lazy("organization_list") - success_message = "Organization created successfully." +def OrganizationCreateView(request): + if request.method == "POST": + form = forms.OrganizationForm(request.POST) + + #upload logo + image = request.FILES.get('logo') + file_name = default_storage.save('images/{}'.format(image.name), image) + file_url = default_storage.url(file_name) + + organization_dict = { + x: request.POST[x] for x in request.POST if x != "csrfmiddlewaretoken" + } + dealer = get_user_type(request) - def form_valid(self, form): - if form.is_valid(): - form.instance.dealer = self.request.user.dealer - form.save() - return super().form_valid(form) - else: - return form.errors + instance = dealer.entity.create_customer( + customer_model_kwargs={ + "customer_name": organization_dict["name"], + "address_1": organization_dict["address"], + "phone": organization_dict["phone_number"], + "email": organization_dict["email"], + } + ) + organization_dict["logo"] = file_url + organization_dict["pk"] = str(instance.pk) + instance.additional_info["organization_info"] = organization_dict + instance.additional_info["type"] = "organization" + instance.save() + messages.success(request, _("Organization created successfully.")) + return redirect("organization_list") + else: + form = forms.OrganizationForm() + return render(request, "organizations/organization_form.html", {"form": form}) + -class OrganizationUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): - model = models.Organization - form_class = forms.OrganizationForm - template_name = "organizations/organization_form.html" - success_url = reverse_lazy("organization_list") - success_message = "Organization updated successfully." +def OrganizationUpdateView(request,pk): + organization = get_object_or_404(CustomerModel, pk=pk) + if request.method == "POST": + form = forms.OrganizationForm(request.POST) + + organization_dict = { + x: request.POST[x] for x in request.POST if x != "csrfmiddlewaretoken" + } + dealer = get_user_type(request) + instance = dealer.entity.get_customers().get(pk=organization.additional_info['organization_info']['pk']) + instance.customer_name = organization_dict["name"] + instance.address_1 = organization_dict["address"] + instance.phone = organization_dict["phone_number"] + instance.email = organization_dict["email"] + + organization_dict["logo"] = organization.additional_info['organization_info']['logo'] + organization_dict["pk"] = str(instance.pk) + instance.additional_info["organization_info"] = organization_dict + instance.additional_info["type"] = "organization" + instance.save() + messages.success(request, _("Organization created successfully.")) + return redirect("organization_list") + else: + form = forms.OrganizationForm(initial=organization.additional_info["organization_info"] or {}) + form.fields.pop('logo', None) + return render(request, "organizations/organization_form.html", {"form": form}) + class OrganizationDeleteView(LoginRequiredMixin, SuccessMessageMixin, DeleteView): model = models.Organization @@ -2228,6 +2349,7 @@ def create_estimate(request): ) form = EstimateModelCreateForm(entity_slug=entity.slug, user_model=entity.admin) + form.fields["customer"].queryset = entity.get_customers().filter(active=True) car_list = models.Car.objects.filter( dealer=dealer, finances__selling_price__gt=0 ).exclude(status="reserved") @@ -2243,7 +2365,7 @@ def create_estimate(request): for x in car_list ], } - print(context) + return render(request, "sales/estimates/estimate_form.html", context) @@ -2269,6 +2391,24 @@ class EstimateDetailView(LoginRequiredMixin, DetailView): return super().get_context_data(**kwargs) +def create_sale_order(request, pk): + estimate = get_object_or_404(EstimateModel, pk=pk) + items = estimate.get_itemtxs_data()[0].all() + + if request.method == "POST": + form = forms.SaleOrderForm(request.POST) + if form.is_valid(): + form.save() + return redirect("success") + else: + form = forms.SaleOrderForm() + return render( + request, + "sales/estimates/sale_order.html", + {"form": form, "estimate": estimate, "items": items}, + ) + + class PaymentRequest(LoginRequiredMixin, DetailView): model = EstimateModel template_name = "sales/estimates/payment_request_detail.html" @@ -2297,7 +2437,7 @@ class EstimatePreviewView(LoginRequiredMixin, DetailView): kwargs["total"] = data["grand_total"] kwargs["discount_amount"] = data["discount_amount"] kwargs["vat"] = data["vat"] - kwargs["car_and_item_info"] = data["car_and_item_info"] + # kwargs["car_and_item_info"] = data["car_and_item_info"] kwargs["additional_services"] = data["additional_services"] return super().get_context_data(**kwargs) @@ -2558,7 +2698,6 @@ class InvoicePreviewView(LoginRequiredMixin, DetailView): def PaymentCreateView(request, pk): - print(pk) invoice = InvoiceModel.objects.filter(pk=pk).first() bill = BillModel.objects.filter(pk=pk).first() model = invoice if invoice else bill @@ -2572,36 +2711,37 @@ def PaymentCreateView(request, pk): invoice = form.cleaned_data.get("invoice") bill = form.cleaned_data.get("bill") payment_method = form.cleaned_data.get("payment_method") - redirect_url = 'invoice_detail' if invoice else 'bill_detail' + redirect_url = "invoice_detail" if invoice else "bill_detail" model = invoice if invoice else bill if not model.is_approved(): model.mark_as_approved(user_model=entity.admin) try: if invoice: - set_invoice_payment(dealer,entity,invoice,amount,payment_method) + set_invoice_payment(dealer, entity, invoice, amount, payment_method) elif bill: - set_bill_payment(dealer,entity,bill,amount,payment_method) + set_bill_payment(dealer, entity, bill, amount, payment_method) messages.success(request, "Payment created successfully!") - return redirect(redirect_url, pk=model.pk) + return redirect(redirect_url, pk=model.pk) except Exception as e: messages.error(request, f"Error creating payment: {str(e)}") else: - messages.error(request, f"Invalid form data: {str(form.errors)}") + messages.error(request, f"Invalid form data: {str(form.errors)}") # return redirect(redirect_url, pk=model.pk) form = forms.PaymentForm() if model: form.initial["amount"] = model.amount_due - model.amount_paid if isinstance(model, InvoiceModel): form.initial["invoice"] = model - form.fields['bill'].widget = HiddenInput() + form.fields["bill"].widget = HiddenInput() elif isinstance(model, BillModel): form.initial["bill"] = model - form.fields['invoice'].widget = HiddenInput() + form.fields["invoice"].widget = HiddenInput() return render( request, "sales/payments/payment_form.html", {"model": model, "form": form} ) + def PaymentListView(request): dealer = get_user_type(request) @@ -2874,7 +3014,7 @@ def fetch_notifications(request): # for notification in notifications # ] # return JsonResponse({"notifications": notifications_data}) - return render(request,'notifications.html',{'notifications_':notifications}) + return render(request, "notifications.html", {"notifications_": notifications}) class ItemServiceCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView): @@ -2973,19 +3113,23 @@ class BillListView(ListView): model = BillModel template_name = "ledger/bills/bill_list.html" context_object_name = "bills" + def get_queryset(self): dealer = get_user_type(self.request) qs = dealer.entity.get_bills() return qs + class BillDetailView(LoginRequiredMixin, DetailView): model = BillModel template_name = "ledger/bills/bill_detail.html" context_object_name = "bill" + def get_context_data(self, **kwargs): bill = kwargs.get("object") if bill.get_itemtxs_data(): txs = bill.get_itemtxs_data()[0] + car_and_item_info = [ { "car": models.Car.objects.get(vin=x.item_model.name), @@ -3004,49 +3148,58 @@ class BillDetailView(LoginRequiredMixin, DetailView): * Decimal(x.quantity) for x in txs ) + vat = models.VatRate.objects.filter(is_active=True).first() + if vat: + + grand_total += round(Decimal(grand_total) * Decimal(vat.rate), 2) kwargs["car_and_item_info"] = car_and_item_info kwargs["grand_total"] = grand_total return super().get_context_data(**kwargs) + class InReviewBillView(LoginRequiredMixin, UpdateView): model = BillModel form_class = InReviewBillModelUpdateForm template_name = "ledger/bills/bill_update_form.html" success_url = reverse_lazy("bill_list") - success_message = _("Bill updated successfully.") + success_message = _("Bill updated successfully.") context_object_name = "bill" - + def get_form_kwargs(self): kwargs = super().get_form_kwargs() dealer = get_user_type(self.request) kwargs["entity_model"] = dealer.entity kwargs["user_model"] = dealer.entity.admin return kwargs - + def get_success_url(self): return reverse_lazy("bill_detail", kwargs={"pk": self.kwargs["pk"]}) + def form_valid(self, form): dealer = get_user_type(self.request) form.instance.entity = dealer.entity - self.object.mark_as_review() + self.object.mark_as_review() return super().form_valid(form) + + class ApprovedBillModelView(LoginRequiredMixin, UpdateView): model = BillModel form_class = ApprovedBillModelUpdateForm template_name = "ledger/bills/bill_update_form.html" success_url = reverse_lazy("bill_list") - success_message = _("Bill updated successfully.") + success_message = _("Bill updated successfully.") context_object_name = "bill" - + def get_form_kwargs(self): kwargs = super().get_form_kwargs() dealer = get_user_type(self.request) kwargs["entity_model"] = dealer.entity kwargs["user_model"] = dealer.entity.admin return kwargs - + def get_success_url(self): return reverse_lazy("bill_detail", kwargs={"pk": self.kwargs["pk"]}) + def form_valid(self, form): dealer = get_user_type(self.request) form.instance.entity = dealer.entity @@ -3054,25 +3207,27 @@ class ApprovedBillModelView(LoginRequiredMixin, UpdateView): self.object.mark_as_approved(user_model=dealer.entity.admin) return super().form_valid(form) -def bill_mark_as_approved(request,pk): - bill = get_object_or_404(BillModel,pk=pk) - if request.method == "POST": - dealer = get_user_type(request) + +def bill_mark_as_approved(request, pk): + bill = get_object_or_404(BillModel, pk=pk) + if request.method == "POST": + dealer = get_user_type(request) if bill.is_approved(): messages.error(request, _("Bill is already approved.")) - return redirect("bill_detail",pk=bill.pk) + return redirect("bill_detail", pk=bill.pk) bill.mark_as_approved(user_model=dealer.entity.admin) - bill.save() + bill.save() messages.success(request, _("Bill marked as approved successfully.")) - return redirect("bill_detail",pk=bill.pk) - -def bill_mark_as_paid(request,pk): - bill = get_object_or_404(BillModel,pk=pk) - if request.method == "POST": - dealer = get_user_type(request) + return redirect("bill_detail", pk=bill.pk) + + +def bill_mark_as_paid(request, pk): + bill = get_object_or_404(BillModel, pk=pk) + if request.method == "POST": + dealer = get_user_type(request) if bill.is_paid(): messages.error(request, _("Bill is already paid.")) - return redirect("bill_detail",pk=bill.pk) + return redirect("bill_detail", pk=bill.pk) if bill.amount_due == bill.amount_paid: bill.mark_as_paid(user_model=dealer.entity.admin) bill.save() @@ -3082,16 +3237,18 @@ def bill_mark_as_paid(request,pk): bill.ledger.save() messages.success(request, _("Bill marked as paid successfully.")) else: - messages.error(request, _("Amount paid is not equal to amount due.")) - return redirect("bill_detail",pk=bill.pk) - + messages.error(request, _("Amount paid is not equal to amount due.")) + return redirect("bill_detail", pk=bill.pk) + # def get_context_data(self, **kwargs): # dealer = get_user_type(self.request) # context = super().get_context_data(**kwargs) # context['entity_model'] = dealer.entity # context['user_model'] = dealer.entity.admin - + # return context + + # class BillCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView): # model = BillModel # form_class = BillModelCreateForm @@ -3104,6 +3261,7 @@ def bill_mark_as_paid(request,pk): # kwargs["entity_model"] = dealer.entity # return kwargs + # def form_valid(self, form): # dealer = get_user_type(self.request) # form.instance.entity = dealer.entity @@ -3117,7 +3275,7 @@ def bill_create(request): dealer = get_user_type(request) entity = dealer.entity - if request.method == "POST": + if request.method == "POST": data = json.loads(request.body) vendor_id = data.get("vendor") terms = data.get("terms") @@ -3217,14 +3375,16 @@ def bill_create(request): ), } ) - car_list = models.Car.objects.filter(dealer=dealer) + car_list = models.Car.objects.filter( + dealer=dealer, finances__selling_price__gt=0,status="available" + ) context = { "form": form, "items": [ { "car": x, - "product": entity.get_items_all() - .filter(item_role=ItemModel.ITEM_ROLE_PRODUCT, name=x.vin) + "product": entity.get_items_products() + .filter(name=x.vin) .first(), } for x in car_list @@ -3233,6 +3393,7 @@ def bill_create(request): return render(request, "ledger/bills/bill_form.html", context) + def BillDeleteView(request, pk): bill = get_object_or_404(BillModel, pk=pk) bill.delete() diff --git a/static/images/images/IT-Consulting.jpg b/static/images/images/IT-Consulting.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad7036fac0886c1ad93a78fbaad35e432efedd45 GIT binary patch literal 126615 zcmb5V`9GBV|37}2MrTMFLeiljIt)@F*@uwGnqkJi%MwRpXC%p*C0UMb$Zm{%%Qh-W zOlGnUshkpnAu(f@^Sye#Z=XNld(G`Ozg)N5+~#^b9?$#Ze!o8+*MHOh{R_a23~m_! z92@|^0e*o0W`P?3?D+9Nj&s8P_~Q>QE*LkD;3=LHCwR{CpXL=5JBK(gc1~1OT;K&Zp9=E( z?tdQvo?{#U1bz$--Wu3>aNQzaF8-!m0!$Z$1yFD{4u(y7;k3?Um|MQQicar z!~HVmYQ`&`#$;<~W+oi@K_Fh@Wlf^sLkqYpO#cd?e@ElR#YPoBy06;WNU&m1nhe@9 zZ|mwzX454>hK&r_F_iYU#Vy$DRsn*97cb< zyEpQRw6T@uxuHLdDM0`zX%u$`Oh%ets04sOADuj<>aKkGLn~AkN%UzY89`wm`k!33 zgeM_^7z7MBVU(SXHr6-4b59m+O+>~5F@`AqhXC@WxgmEC@xE(ugw@o8or>}&E#qAO z3BPwu!PfDI!@K20<`A*yc2Q@QzvjvNtGC&mKZZy)8jgi~B5zGRTa6(v5r6<>2o4~) zPyh!^7wYnDpfUVU=gchK=KS({BL7QN>M4wpvJyWQ(2LzXvs)P$T0Z8)!R?lH$Z(L=#AWBULYpCS!2R{CUGfq-ak~`BFCK!k1 zxphnEI0h~wSq`;?rNB_~fltGqMdh0MM|e=P6(&~JMc+oM()A|g9|F~ngVEUn)^76d zSL_~>6vJ4gna`N%x5aAXMfY+m3dWvcwom>W{IurBka5H z+2HIZ9oJ+C{2|vd{&LQ2$z-HtV)H*?uJ0Nfn}wATmV((>%SjK9plZnF{{FNpFkLlR5Si4NLSUxJH$GtKV24qKyt?j zR7*o*;g4^}IS;?$x%viq3p_e{XWfmiNK;@a3Z(I&#LHI@@Zl@P1xT^_ad-Hq4dXDn zM$lX&%j3Hmu4P#wo}@JWM2(Q@u!)#`iB-Z!)aBO6SX1 zpLf5IK8HKz_+ATnODK#8&9!9IX+X%_#gq(zee@GmH zg2y4yPZPvM9shKfG)GEV+n}?tnAURc%VS+vn+2aDB{}#E0dt@ok!^{#%9<3KL=#hV zIbm5a5W6Y_1@!?q8fZj84o)5}ofDJ0lv28UPc9w?YZ5A{ZkLjlGY9M3`H51wONDss z6_~zwlD<1XpW!i1XIB|5$K)hl0~sm#jyU@~dO^`b{w*|$ zpQ#d{nd;V&H=gVISvDg}Tu#Sml|&>;OB1b7sUDoV67WH|#euNECboe`u)-&#;C*6@nrW zB;Aq}m?09W!&71O4(Te#ohXSx8C80Ruif`D4T)HwW^ls+sePJpW#sJ;#fYmbDF!)K z0#>#bdQIHJE6qeApKpGpPy7dNy|HK;bdq5*HxvQr=<{b8)mctHu0Rnvbc~2G+qOU7NTs;jJIIgvUEj=<6cA{a z&XG#Yp3aenChC%eT^26X-Y_zMY^Zzd77Rr~cpzX_$GKl0mw3&g1A`BHAaBUrkwIAV zTLMNY1jk7G&ha8b9*+1@KSto#Cnk8ti~UVoyUX<2We`9zrx21uzg$2^&&pPjB=1bW zO}~SotFk?>RW8k?e4w^7>{NfO{t#|U`@=NaxKbl$QEJ??TOo6zU0&%-u0Cg8;@N6zPP$64xG+YA*B!$IcFlgL!M2WQY3D?9#8;_u@#27#>4(!w3da~uV zE6-&FQOUJN(t>&ozEOw^IR;7oIZKT#%CB`#xK5W&`c)=**hr^1SLo_I;wcY9_TPYC z9@af;XjuMGl3xyHMLEWI3n>517YxUmTkB-yvT7s+q1i?Y?_Y>4QVS2+BSqH8m*qey zsd-|yXIq)pk!$LZ`Kcbx0f{xg1;j{kSllBG(>24o=hWCV1I8V~AtM?$N~tNBc-s}V z({irer}p{*V?hnKfyceHzJ@KOr0_3IUaX$Hluecs6M2Hl5a)jRP#gfv5&Td|Kn5z? zT-s$}2^HspK{yc79Dtx7WIDD~a9T#+5U?^tL9(psGr+UeUfQK^i?Ovpa|&hSD>n3` zGH1?Ef*jiyr72Hfa1zWzGEq>{@)jn; zS_fSN2ynqYydAB*7rc#H8?V0d(5JfRm=>NRVLzW8LuSOGq~$S*J_m&OjoHpsPqx&g z{Hr8X9I8A?2pVTtV`VM)jp-O!RhCNFQ|w9{`N(MBU{W>TyLBY^61qO^`%|a;N#TTl zHt^wl=SZW(ksJrpCw3z4Gv}n}A|5@BF0p)%pt3-Qg?M%N&@E5)aMiIqdkZWf zZa~CRV|mwP|D&j*6oUGvof$@N z3mV(MOdAXuOc;Nr9N|AP>G2#fk&%k)=8}KYn0b2`mD?`D%;sEz5 zk=R^rf#lQ^@;Ri|4fk2>=HSicIsE%KCt!0XIb1aegad=rD4L8!)@trl3 ztW3C+vllSD?4R%Q4HByZ7E-%}REjGm2MK;p^T`QG%OydCgTtDAhWzrw9j&diAITub zGKQ_uj;fBWu(E!g5!X{e!$ zvZDVPGLO**fYO)GU4q2_xn_{Oj(H8FcK#L~v&ZX3){$xxRABt9@sK*pRqBj?TCtT#D) z;($ET#v|Ay%bwAqne{(LAmdPth_y}VAl%Yxwp$?EZIbOg!VPcf0DN~PCiL~2y#4I> zvYX_LWjjqg_~h&W^K|*<8Tro1@epJ8@ez#%86Hw4>{V8cbq-InL>vT@V;%eQtfS9N z?ZrAOiCU!BW}NXVz*sc0XNP6xls**vy|Y$MA{f_4+{1&2^3&n(7=#Rp!;0@x=Td-X zj{4c&v%&H+B%?TS*ki*t$-!3~0^9mj`$7o|KNdIH4C;qOzs7M~JtaVi&b=SDpZjWg z&ut7hXKGvfuqUiOZxj0k8$2^QG3S{g!hwmcJ(X*ar1Ul~h(dI@m=tg+0fyw3;I_(g zuDxM_sPG6?nhZfC!T2r2VE`N^W68~NS9b=0KY_8q0xLQww_w&gLq=&cR4H;`mL0OO%z3Hrf(|Ft_=hMnecT2Yv_O3mufc>dE zjCM1ZK~7h;BoVoEAj*V>VyE&wO@g+~@DDuzXf2JADZ?(Wi}p}kr}l!4e%^f}Wtc5- zJcHt;XvaF(3SVZc+T-&!KGu{Z>qROt&*hDV)9dYj?bXm9HE-?{{I^v~7MWUiDx>1& z6xAA+uwzppGZDHKBtt0IA7Tn77Q|~_wiRP{bH0rxa`-`EH?!hmrypCRJ?>`3aHA%; zBp@Z6DDK1(0dp)29_MZN20WHlmbJ*{6h)@$>IiAn!x-xzQJwWTWC~IH z7`dC@B|p-Hy&W5iLR6m+KgM4QU~i^^ z&qw=3#77`W(lv4&m}y3XJ#}|}u0W{gnip-xZS?DCem(W##=?)?!X2wFW(6tejzf;_ zq_25Q41mlCzodNe-OQz)&z8#$SMI)S1|Hq0g~yIbfhaQLAkA;_$dU^{K}xDQbOg*H zFHs=9bbf=i0803WS4)TeN*UKG?|G)k$PyUoAEY zH)&n-((OnR)Rr^9AecZAE&M_VZnm3xCysh9VCUT;)bg%_60*(+|HV^?Pc1fi_S{>j zQ`LV|y6OCL&x}OtwqyWigOsS1 zs(fT$aKXM?F_=>Ca10C6iO+rw2u_ArjRfV0!{Q!_!yu5D8V;jap`2JCPCPpyu`#X$ z#P|A|=9K(P_nE3&g-15Yr8Q~yGOuIv*|F4$tLbOKz#`YBFp-tv5qucih`a$!=JO*F!MH8f zc{b@&>j%wl42~|~wakhm4#RQf`Jh38f}eoD0uz%YsITe8d$V^lvd588@WsmFF1!!B z%oKf3B`c4C-Leee^z>EzNaGFP#4CSqT4CU}+BHS~D!Vi4w^C~|a(Da7RPD8Zv>#tg zQ-7}0V&892>cc{a4e!bPo%?j8Zyv2ewaah0Wo%+nDx<>H3aGU(8k1fas!$pj^^WqT zb}as|(>;rEnRp014ncc_BBf%K5g89b^`N7}$t4t1jReGbNLMrU5G8u$&D}E11%>;0 z!B4imnu#PG85uP9N}G-uF71B5P~F%PwIRRn+Ki)(I4m|RN9TF=*La((OwJ?^5Y^r~ z+#eawaoD8Q2m9tvTMpF;FIQK$tB-W9&L&l=w1bp1!t5^8H9SGiaq z-AVJfCP}Yg?KcK7SPuedi<9AFH9UM78F2^@apS~6>8`*3NAAp0&ru&?Yw+5DfZ%D< zmdUBe>0lN)&HwpAR*gk6)pUaq;r5Q%P&gQMo&7#So{*|I`uwA^Eq9l%{#2bw{=x_5 z!it8d+-?w6`AUlY#tPC_!>c2&_x{Db!|e#V-;E~b3C+-_7)}39h5>=jWr{cG8%;?aNVE1v^;Ws?xaac|lm~@V{Ro<4O{le5$ z8(eN#v#Gd=)nEL8W3~ulnd({R z)jAj{!t}CR=)`apGMF0pd1~-rL2uYJlUCH?^&xP%PpeMh#x=g2y*jmysXE-;_{daP z#EYM6;S_>hVW^UQ^NV;*Q-iH{)Qx#-QCUK%|C?scw&`Rz5`8h!N4U%6{@s-966qGt z05i4E@?S-)g`ELoS=r9|r<^elB}Kr*g7O`x=4{e2kK^IXipQW3K#r7+hlcRf*$&F3 zJW9&hdTcvZb`(ZxdDFHgKPfEntdI3QQx6A0-O$QZQ6nGQs#QsBPZ({cNm@jOD|(43ZL18pW6e`(2efV^_x-~8Fl|HW3@ zw^i29b+W_hqR_K4xM^Hvvs1crv^eHQMb*3ryP>s_6aNT zkJNi^%G5|?bC-_1g$&eoSoP z>e9Mcf?`W5n^h-~C-;ivGC{!=+_o(o33wK<+47?-mwbP#b%kYZ7cpDwq4~Dx{)#W< z(_liCMu8V(R) z|0}=J#r*nOA&>)euj$+F^ti(|d~G~uK`kI#3x!G;J&dqEBOkpZ z7Tw`{{_^&2`2HInzWB-ngR{c!ZVj~OrLCW)s6DHEIuLl3dX?HL0K^iFN)w5&;Qhaz z&C@obq+T=P{m|6*^n^M>EFGd!2ji8~ow^Fc+>-Jg%f`L|=mezO1QgcwRe^+zr zxq=3*oZS%C*VXyK-o??&H4fROV^Yd#)R4W6ea9Q&SAqr|2n3N9tmW{iw;brGO`KJF zOJZ7Sl+Zd&@>?Qa&~<%wU9wB!Y>flc-nXFsRT=1i;~%oPvTPbcK=zU6$@y*u1;7wR%U|JGBPJtRYAAnu`oom7}dGst-b z`4@XVQ^7DUf(LlMILez2YWn;>QKk9%o{$*|7{w0o2)BDL$ij%`?k%TU-hT-XwO=Ns zTGlAkFN{yIqUbZ=1(s7S7f}qX&~}eTPNy4uY2RhuNQ#_d*r9z_Tiw)y79H| z=67dycnPPV`7N}SK7<>&{`RO~e#f2W#5r5Q)GSEXNw}##D$V~^%p8r&y(3si$Y&Mx z7MeQUR5lzV4r=Y%Ft)V*JX`v+{g^6{*8V!k>YvME3YRo!qG9LvsZ~Z zuf9=RA?T1@5s@g4b!bvZwOko#zbj>%7hE8<;^rX7yj>3(QqmP*Sz;2o%pZalU+jbg zhaplP3etmzFb{EYkkv@HgJo%fEB=j&FK9LBYza%E#F%_ga#mH(*XQ?#2b!60f8@hf zK3HX3(>3(2a9IcoDOQfpiXHypJ5goN^38E9#08|`H*4*u7E(6G>-uMEMSWWg)RqT* zTmC20EGr?Sm{qU|)aQL~qvpSzJnazWyVRo=Ml;KO712X_f{DApqlS5Md8z-xDg43w zFQ!yN8nge|(&n%818f(VE#BTf6(;8c^FE%hyKf)VVcZ#leLzt}DNT)|FM>81*nI1=75 z!ry(BDeHApWO+Vf>J?bBknB%%S4@fFQ$rsez~t;~-Vg676eqyv{l6eP*Koj)^3qAx z72w$~#*UD@I%Bc9ceF|kiLH-=QXDvUqNE#hM?On?4$P#b=jU9_lth?6sguv>AJM2+ zYT}g2_ElmM@HonN{Jo74va;_#EoFnFL0_~A{b{E3g3lef&wW1mgVK(0M-EQGD64+H zLYaJ}9FJ95kNW&G`0M6>fLFR^+7rIfx5Dm0fp2eu5IVm8;QacGoW=u3G16-CLC!G>646zZA40_n5RG_DPlX1fQ_T!b1lc#_VMm zIg*tT@qNd2WrCAwlwd_cCerDM%Kr%KrHs8?*8V#x;C3jz&xo6iB>{i16j$a%$ zJnGuhAlq-m>C;qlt0x7|QO4=4NIz;0X(ae+ zZ2k}?xbPhHq&?2zhiKRRsP4~SzcG=`!oIMd^V1);FVDYw*Z<_nm7U`Boz)z%8x6eq zc(dg1TFV=KC?>BsJ%K_l9&~?rG6RB4u0~cTHO*B8`)JY}-LzD}OlbY;2(<&Amt=u2X?* zH&XLKfI`*$1G{;PBDAvo2c9~&lc%t5WjyH@o?L$S)j(@~<3B*hy>V0YMbzx_p&kGE zz}>m$!3j^9{fpXW^KkgXMgVOgs3&M)%|9U|fVM@;Y!?@^qvjkPJ_W6K*?NR2aT>j6 zXEP4mUhe;jB53Q9qiem4<+J$h*{pOlMZkYHs<$UBqI16CN}OIr6Zf-gmFEavrcwU& zcT95a6dNdZinSF>jHn~>1MOv&g)28IC;#dSjycELU&&_#5b&Pwmb@Y>8{$Q*5uDB4 z`~&)p@Cyc{A4RNJ^h85lKu}_+?o;=a=M+RwmthmpU$eh1gge+;XQkZF zvB8;cn0C%w)FMY~R}GkU)(y$!cc_o2bv4bJX?+YF`?T_DJygN89#8D7e?OUiM~bTT zOujSsW4NX^Vt%EivG!wISsnHX9t*AmkL+F z4s`B8k)`YvNO%ySWb6jrHR|cnY#Dn z@uB5CUixm(2wKHzjDi@yQFbBS?82$5*WdN?XcPzT{s%m7#)OOYXa#R+$tUr)M?Lt^ z)41sn_Pf%p_045C%mo^A$|b6a$)zwNvZO?d#vOT3PESDArBvA?s$PHjC)=0tC8fxs()(>TXm(l|^S`oQoV|4F zOVmNX9v3X*1UQUB9rM!an6K3I?3U8i;Swmx8jHPYb0vV_@U0sOLJ;2Vcbt_ShPezA zYYa6;?YjsaMUSLFVmC9{{8>J;QCC;8wxzD{KtldW1Fx*?@YpMVhg;OO#aHwZgWbhB zWax06vwh}JZBsYvcbrwhID_Eh*=-_SNnKx99`I6Zkc;emPg&C-6hFm3NVxskvV6?= zxQMWO^PsS|aNuadSz(WZ2XB9IX7<0^Vjb>)@FC~6cK#gu_Wy!B4+dFBS7;Jc=Z0u~ z9X+(5xxR%UfG=kJQut?^b_c^gT=zW(vV)fUA*}i30d6^vw^0pt7~OcW(DM~e+U7-) z$w@j-bxA#4MH&^JaxdyaZP?Wc&^3QMH8mRcCINcgaC%-7H>0&z(IL>dBE#@wBub>>q@ zAPL48KD?Aqs}EP9cJmXPEALLwKn_xdtsExl8R>X)53ixSe8>OgqeykxdDf3~*-1Ia z#p&`}lkvegrgaNnCE=t}gM14%B5;6CGi@>Gv>>Z?3>R(I|LZFy=Cc|!`WrfKYV9y8 zX4<_>D}4l~Y*m>Lv_7RxGgiFPy}z>$QX_-F&$&t&WX80}Ah7bQ-I;YQr|BM9>NnV~e%SMDtl#S+;@mNU)HPaw!MK zKk#z2#;;SqaAj4;OA=dW2=5~b*POKH=tHy#3T67ARViaW2!}Uzv`^(h1C4zc9r}De zvQQJ*Y9A-SO{yHEzW8$ zt!yV~LbnjUr5e?H6IXRCyU-+~`bo`n`8TfbXLD9pX8d!8FydVNaOWr8yE`4~wb%>B zRq73x0Xj8Tc?BJ4&^b<41$*hH@q6FPEo$AG3WE-q^|E4L*4XN-Vx@JKeDFU*ow;{x zv~RH1z>(i{I9^*~|3BbV4RHahJ7fs*=*#nEH_CX_F5gUVKl~p&6!jcwFGp!TJ9G0x z^v&fwmj(6kqfjj$J9L~ub1_Zw>*gvY$o8qS-UCDb?hab~7^ z<;_w|8#&x#8zn9E5ExME11S9x4!`5|_~7}rGtzNg-cKB^)1CD>9HhXRQWhu!L3{?s zBq3;5!LcMXamJQ-a7kTA3De>ESvjbE1j|D@D`l9&4^FAO)jm_YP0n4}`s&!s=VzQ> z?>&c99!}k;iW+0tb$yoj-eU zp1a1^+k^k*V@Cr~VVA+D@!)rSdK(yLkW|y1R0{XCkFWgIw|BnMBO!~)*xQ-dZ4y93 zQjC$@+>pfT8W`9FlUo~8wjUI+d!`x+*C@QE4zrXGxL$1V@VD#=TT7~mY8SnT9oeaI zRB0MrF{r1fUt*JOVe+<~5MVO5xc}q4c2g2jKDVrYJX)>3Wstqw`8mvsWLx;zE4$9B zR}5E?Qfdu17BFfsTIGCNC4Y5J_Vr}Q4Lu+Elry!AZNK?to`2UEgX4)!C_N5v-%Jt% zU?l({4ipC{TCT1!J{|^L)GBOQFO=laF$AZeXpb|hTgl4#m%OKZjQos9wmR}UoE$01 zQD)(H-KKVN+iOm3D_g%2fa-!MZs z-o!LYV9PY+M!xPJ1&b_LcV24jkmptQTMkiMX3$O5KNE7mfx6PDpzZT30jh0<2V;T? z%|9cLY_^U>710bd(MU*#hm^+m_U7-pO)yAri+V7s(a6F_9pRP^W#v-X=b!EyV8XwU z1J1C?=M~X{;Np*-l>m1MpReF=Ft&`7_*KlnD?E+Zl{w)bsZw0_W`$w95NK{GFf+s2 z|1oGkyJiqkK1O*pXO_8-AI`p|LqNY+3f_$P@gJZt9e#-S8#${w!P?)|n#&V3s+IpI zShbs`HLDnb=~i@buBla@rPT4E?Ah z?SBdN!L?;6yy<;#gR@PFe^gNF;OjD8TYZ+bM|hNTZ6L4LQLLV~W$`6CnD9QBHWl8T zq;TVme{fI$W45jTgH6$RS`WLQZ0um_P(2lfKTP%bpjR$uyzoJzoEhGmw?nOSmzajb zvs^htH`mAKmos031K&Y*7~89o6#Okh!-~l*FI~-HK1(4xY!Vj%fK$2@Ym4?GZbo*v z5lg3A`Scr3ukIb$On%qlY}3=)*dVX+@MV|O9+$|3bKE{)FnS+oK_yQHy@&|!J#0+k zaQ*8>Zt3CrNMy9W`hsI;#mmNYW&hAqv7@FHk5QM5}8PpuH6nOVv}z&|1E*odD+H276rNc}J+|d;bbjmti;KszSmZu} zE^7KzF|UnEUyeA?E>AsjOckCh*gnh;rS{%8e&_-g{g2<>vBRxyhUq>&>{<7A|0v*r z?CAXB*21$e27Brj$UX3L37ni9Th{wQf7A&<$} z?7Q&|>!S5+^8rZrROus(==4|LnPGw;4MC$U1&4F00g002SR(ha)j9R$!)NqYoRHJj zElYoP|3f!WqPUCP=~&!uzjy8Xoc$it{v+jQvD4_tJsf<57Ug!j41HjikAeMa^ho zI|W?A^WY~3FJ%qwy;IO-An1&e(e`yG0DdbTCqhw!!ix;h=#`?K9{;);{;QqgoK0C< zSPWswC(9>Gx8GZs`^(hoQyd_upNzef} zejBwHXZ+C3km(s=SF|)}*YxodyZPRNcf^s?^Yn&dUPslotG*gP@&}5%^6R1>ece8+ zVn$)5p`~bvA?FV_<10bj7ZJ-pD|}!!_#1^3>9p@h32%_gY+CmIMNBxE9H7dM=DoUJ z?2`yC+LosH==+p@;4=rcjy~F~<#4@f)6536<{=cde8y4}p*^@u$!Or2LxV~ie=W{8 z+@Xd#<@=4?@Zh{%B{JEy0;@njufOs$vS1UhaLTTEZLc>;kq`O7oAqBQNPM}|;|>GmMi2qm}Qy}^erImQ1C;~rjnagEA$YkR@; zTiP3^bmUeAoHuYR{2M$Y;S|!>WzyNs{8FcqUHsg|{XStm%qJPZIjOIiOSfKUzEX)N!8@yV&v|;85 zq&a`p##%lETZ8>h!=-ig@m%|M{TaF!ZOw}KY5P0f=gR0svM6(3gF-AN5&0)#2kko2 zKSo5`G_k_EUKGt~wlv|@`8dDAax50S+vb3X z9ZM`FzuJtZpBVj~y%a?rjGF+POo(wuvD3|k9eoKb1OGsMEbJ)#pY6jT3ohVyQb0!o zlOe#TOh`X(kcQWo>-#=g?_KZvH#n`G%=_HA935c?Iss)PGex0M56qq}{|weR`l3)Z z@a%rU)qBZIxlWIrFXuzw9W@N1GhekRR-4N5#VXUUMeI53YZ=eY-m*p;CbySE>3!NYTZeNv%EC^k*N44c`v5QM z)l3PHezu&dQmKq2I62976hsF{Rj6#PePDc+o1sQI&m>6 zXn13ab#Rxi_Cr7RB?OuPYO7Qhjcj{`Zll!|I5FHF_)AMHo!1mU|Ci|*MkUqZ2hB{I zxi{pBX-%xok@8=dJ7cQ46_dj6TS+uES& zMtYfnS~x9WsMbCgW8!?_r2Oyn_(wPq+P%s~f}_4HdCiF>@Oqt@{6?uU$y$D9Be9Ub zqs1FKq}4E}k9EzutXl{AH7@b-H-)`L2(Wj9=(IFkQO~pB5ze5lZxf?|uHnWrg8G8y z=17=)wPZD5UT%dJxbxd|j7ph&c|u3vVV#QT0j-a^B}JEi>KQ!4I`B2RH&owQ<@6+i zoL(GUY2^BXyS=2zvva3cj5lEX`+l)X@kBV@{(;wsx6vDLh>_zuL9y)&Wdwiy@V2#| zS6OOhbG;bzeVdg6xeDr`tzB^X)H6BbFr+l%Gdu$hS?-B29EPVk+z~hPe}rqri5En* z1c9T-1{%t1?yr1s2ua3&G}rsO-=h>z6vC~iXD2XA8BJ;6_P2se1BlZdjBSlt*U}kV z{Uz4g;2HzgT3tG+qNOtPZ{j{@kef-SzPc8A-(0lw^-_X5)e%L2|@y|X<-nHu>Q=t^I~HMTUhE4y-sKla`4Qry8W@!MvgrHYJE>(a(A+oDD_B(N6;HK)~s~B z{{k;3m>1J>nx&g!c;!;TV^S|==6S()mKrn93a#TJ=>0n_I{NKk2du9882wwI)yBrg zlt|@Z$LZR}PqqW=Hs_$L;k~KKCY`}#)9yp#N%r4f6=&~oap+geoUWQ3V&b(GKJFbo zXx!Kjccc}#S6aAcV{_iyX32V0X-7p|pQ`aoxk&Jq8zlcNEuBO0>rE3Qm_3k>$ollm zG`QZbg1Oh*>YE+$juRTk6%snVdGPfZpMF+A_BlqGXuu#!7yifj$*&Z$vFiy}4#8`i zY&YiHf^5Um0ia@cxk2PdWHTndg|O=Iq2GUf zIbSx!tG}>)IakBXEDe0CA?zr%1suAhbTYPC>fxRELqhQY`*5&(kzbM<_{%K4Hg}E! zx6*O_1Zun>+%iLRPFy*Tel53qe!o!LYuLEpB8g^<8(ZD#5LN%8U6as}S23D4HD7gl z^4mbqoyvRm+l*W#dgsqbvhfyK(~>xJ8%}{JDLo-+fa4IC1X%wC(HV-LD&i|uFRDY zdMc=fU!gnwJNMT%9@z9fChRTN3>h}sT9~MRUFy~1y{Bc<`!k3UaddC2hXYxwh)usE zRQW|KO(j6vSY)zbj6wep-rM8<#s9CeVc0o@u~Z}TCwucCoH#-2k@tJs?q)0Xzs%(O zavO8N_}{O$EbL^;AzU#qU2tFV?N%5rAhUF=bnGFR68GiTwL%ZYQINxRgNVTH@Y?3u z{2xA@DJx*PzBwSw_SfzN}0v^l=r66jHwd{92f8?2M6Sq1vDLDBggf zK|0Mp)E{goy=E#M0Sf4I-}!%M=6ZC4(51qSAK$x5?KeNr$v-2bZ*Gy*OytgjT|QRn z@;vW_lTep-uBq#yf(4Aymp4k$m(YOZd#Ht5;W|qW5Ksh62|~b%Vc?c zEvWi3_FsTN4DeIrn7+A{40Tm{K(2q4*ft}GsX^^&V9Z_X-kY6c6lpr@?oewv4bANw z>cY1o!!^?%4Xc92@NFU=3|5LIbZM_QgL(`NP{^#RX?&>?lQ!r!h`kT9N~1d|j)L zkc*7XvhX|pL+eS=bu{TQ09BeQWJ5}^xfllfd#<|bmNDlYoI%SFlX0ht(j)X#X5#BM z3-7yt{{bG6lqy*X&feR zV~`3Z+b((c%zXAm&K67RwLjfTgMZA7FG`V?gV7bWfzI&+FU1 zvmN9ZWA4U6Q5*`)Qm13OxWoy_3Gi&FT^Xky zkPW^#ruF51UWm@^-#V|o_BXy5nY#HS?1=Egk^EP~Vu(hczV{`yKQ+VE_I?c7;l>kI zHgH|{7lY~Q>eR_A_I(CF56CySv~-_F7qQ6c9}XRNb;WR1=M(Wx&+esO;JxrfiSKDV zxX3hR`WG^vqMU!v3f-aJ(pPyn*US3^e?Dm|fOl$KWz)%PWXE39u`Ho>5%h^-cA_SQ z0Ady=pOu9V<=Z|IDscMc!I6_!Zt3LZ&5uFhq0FCK_Yd|W3N@8}&o2naOK)iH>GE+& zi)xA0J3aWb8k!?dyYU<50`X4jA9l$N`8$V>3Foc9I1+5iUiGCnq_6B9s78P-hv=~o z5v6%bt2?l#H_R@roe^bbmhy*V6gf9fCDZ3|y;J!vzE5Jm7$L3oc~fh!;_K3;LwNYn zCvdZ5`xr}wzT35x)}fWZ*s1=lrqbcG;Ydo~xrLx_e(jEZTD^=v_vdXZ)h$#qM^2l0 zChiB&4l+O?^kKKp<|jT?(doi=)QU<NLi2!(O!tt8#@8)1@lmgSG){C|2I16h0^B0nVSNzu1gj8`P}|Z!`HH=3xwu?ES1_Hck$y7^3(t^&>BZF-7t`Of!xmx^ z`TXVv$IH%ri#YNVUi!JUH0Wqn_3Fd?N}uS9FAe!4cNyT6A55q`b#v=$h}vw?hNhN= z-Jm*YK{?r19Zg}U^LBjKzVn@v|5xAlUk{A?N56Le{cT@k?#|C&uxR)FxpQkryw91} zBV6(s^GE*yc`KcvJ4a@r=cD$+KQ|wOOEG(*J#*GS@%QpRseZm5<`nv7Uz_@i^O=+6 zc2r;8?oqjx@5)}E(dIAdaK|rZ=s`Nq8Lh~w^Df|fUI90s(Q#|D3_2|!_xT`Ni<7P8 zMem88yFu$nUF)9-T<4`0-&ow}4vcGABlDJRtlMycdy9|pPD9J9ZszXfk-#WSPuh{G zm!qbsST}3w?OLv;EH&eyMuX{`6g$%6A*!aV>U<5O->d51kUiY2R1+uh*`-QwrEXk_ zLSLYdh4*6A_LiqYSj>s}Tw>8fht^GS z#(B{QnoB%MutHc z+hDS1KP8DVCI*vir^H|^F_wtl->38W{qg(5&0qX+Jzvl3c`c9Yeu3MonBtB!r(w4b zcHKAvAu&B*^j!uvt~5VJ9y*6i*4>zDadCm8y%$cMAHPz5Q$pl^7-Vpd6Y zm<=*8UGp2!G*zcJ@LZpq#iMk$tNerU|Npc%yT}*1Hhz|3dM3X9EPuQ>-_RHOW$g#} z1}vQaoO$qaFQ%g%9}taP`l1!t=3N0S6%!F&*VP;qVQER-`SswX2cz%sf%=MsC6Vt% zRBSl?VD_3Md>b=c92uKRVXw`^#z#xIrswW%{yY)77R*{ur*#t+bLP6plAkbLZzF!? zcP8k*I{31_HsxI6Q}f|jcDKgb^=_cphJRi1JnbC7Q;2bZ300_!_(Ps}a0 zYocV{*98*Z$83~1)Ldzv7MXrk`rE;H^TGFegLS#93 z!)c;{$}wz6oq<_gBB*xv(Q`29);LE_Ub!R_?1VX0ld7)9f&)dM4ALdp!81$_TkKH1 z`SYt^pG6;^rReZCATzI*xSQE_wmrU=5znh1AAf8F9O&-GKq7~GLrYFc&B9J?eKlw^ zbDK5RsCg=ylu7Z1YBL&`3*(W~%BO>x%npygS=$pG`>{=x?Y_6C=Qi?vDrXnsT?;JP>nu1!E>v-KySn)kb0JVKSaY4dx>@M( zm@!8#|FZnOE1j?T%St_Z?pJr-4&Q~51WKo#-m-4sOTP3&zJ%?-KR%DaH{1e;b`N4C z$O+{OE(cwG;?ep02k5c6eLac8wU}6qrOlXhDl35*7*0F<>&rg>f5#XwWx)6PN6h~q zV%zs2+(z(|R{zMk1dq*vsZ1R|mZ1?XP$fpYR&efz!CRQf z%Q2QI%LlW1q-U%ID{OAlMV5BwoI-=vlKUdn6CpS_iA7@Eu$iBluMR*-$c2!6O`CS{ zg7EIS-P+cg=iK_GHe8A(r;_RROn=1*@Y)W1Rx&oKQ*2i4J16s#=Y_(|Ddw6|{HcP8&tp2Us9sc2knHv4}S% zzdk6eS$Z9%tr8$9zW)H$bD@PD)z$OwzB4$tSQ_61=D%~Zmu>%!Q9p0_QdSEpNR z_WM@UkZ$3NU3T=@kTo`IgY1yLco4nYy8UCeynn}1y;hPCGs8FRDv8lk|M@HY3|Y9S zJNWz0U#d(0%K!ezEY5`YVMFZRz5)$&siBiM#`>4Y7nb&Q(Fw!z_qOl!8AF@D`TF`k z(r;MA989HGZpJ)N$(fp`c-d2+SK%+h3tTrco9?)1qpzW>ChVwZQtXW<9D#f%gN&R9 zXI3`zjTTMVlF%z^dC?kIoRNGhKKa)3+dTTR+zR|wBE1l31`mi_f&SI`9|3^KF?APq zW>g~7fHoFhk8^N$tOQzs2`89L6j`Oq(eo9!WX%rPdFcwF3}0y*u5-$3x+xoD0r$c; z$EuHW$_;$V5oQsbn69sK1pE15Sz%0KD=RE)k4{x18jd%j% zp&e&DwdjaVncw-LJo7+w`TJqco9!#+cHY_Bm;%uUq9d{4i`Do&KGMQrG-d1M=KA%= z%eoIRx(4e%3hllh5^UTAcQF5h6y4v7n$b;v5zdZ={&#SN4p~cQqr<_$G0G`BZt7K% z`G;M6!v!iBy(`hb9!RzbaURlo);8O^?vR!3Hxy+nxVYrZ+L$d}x_Lm1;N)Jl5U}^a z@*~^1t57n5%%__Ocf>i4Pu#th^=Xq?uO;4bWj|K^sxEA!_}G!)gQik;$-bIJO!cKk zIMpr?jDQQ1Knc%BDA<=PRew=-ab3IcdgG^-M4;#MbaI}a#pOr*l;5R=-dJtJb_`iMB6uymj~Y!by&(Eahig<(OAtn`QOS%8H%O*V(s@RVxX8&~7%L zOv5pWS;Snj+6eZfb>oD26Vg0SBg#^DCYY>udw%P{n}vxwUp3UVvH6Q!@n!Z+*c|ic zz5Vs{Nxp>r1Gjsd(GhJlN~fzz(~rXg@jD-O*@voB)^|dL$5P+oOkm){)t>p8^_&*1 z{lb*Rs9¥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%0ACEqys(8Rf5t+esV_q@hb0 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%0AMT`}N3Di#*u%iX+ntX^| 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 literal 0 HcmV?d00001 diff --git a/templates/crm/notifications_history.html b/templates/crm/notifications_history.html index bf86da1e..3d4b6bfa 100644 --- a/templates/crm/notifications_history.html +++ b/templates/crm/notifications_history.html @@ -13,7 +13,7 @@

{{ _("System")}}:

{% if not notification.is_read %} -

{{ notification.message }} {{ notification.created|timesince }}

+

{{ notification.message|safe }} {{ notification.created|timesince }}

{% else %}

{{ notification.message|safe }} {{ notification.created|timesince }}

{% endif %} diff --git a/templates/customers/customer_form.html b/templates/customers/customer_form.html index 84dc23dc..507c95d4 100644 --- a/templates/customers/customer_form.html +++ b/templates/customers/customer_form.html @@ -24,93 +24,9 @@
{% csrf_token %} -
-
- - -
{{ form.first_name.errors|striptags }}
-
-
-
-
- - -
{{ form.middle_name.errors }}
-
-
-
-
- - -
{{ form.last_name.errors }}
-
-
-
-
- - - {{ form.title.errors }} -
-
-
-
- - - {{ form.gender.errors }} -
-
-
-
- - - {{ form.dob.errors }} -
-
-
-
- - - {{ form.email.errors }} -
-
-
-
- - - {{ form.national_id.errors }} -
-
-
-
- - - - {{ form.phone_number.errors }} -
-
-
-
- - - {{ form.address.errors }} -
-
-
-
- - {% trans "cancel"|capfirst %} - -
+ {{ form|crispy }} +
+
diff --git a/templates/customers/customer_list.html b/templates/customers/customer_list.html index 7a9d7d12..b39b42bd 100644 --- a/templates/customers/customer_list.html +++ b/templates/customers/customer_list.html @@ -92,9 +92,9 @@ - + {% comment %} {% trans "Yes" %} - + {% endcomment %}
@@ -106,23 +106,23 @@
- {{ customer.email }} - {{ customer.phone_number }} - {{ customer.national_id }} + {{ customer.phone }} + {{ customer.additional_info.customer_info.national_id }} - {{ customer.address }} + {{ customer.address_1 }} {{ customer.created|date }}
diff --git a/templates/customers/view_customer.html b/templates/customers/view_customer.html index b5b7ac58..86a449d7 100644 --- a/templates/customers/view_customer.html +++ b/templates/customers/view_customer.html @@ -27,7 +27,7 @@ + href="{% url 'customer_delete' customer.pk %}"> {% trans 'Yes' %}
diff --git a/templates/inventory/car_detail.html b/templates/inventory/car_detail.html index d6157359..0152deab 100644 --- a/templates/inventory/car_detail.html +++ b/templates/inventory/car_detail.html @@ -98,7 +98,7 @@ {% if car.finances and not car.get_transfer %} {% if car.location %} {% if car.location.is_owner_showroom %} {% trans 'Our Showroom' %} {% else %} {{ car.location.showroom.get_local_name }} {% endif %} - + {% trans "transfer"|capfirst %} {% else %} {% trans "No location available." %} @@ -312,6 +312,11 @@ Approve {% endif %} + + {% if car.get_transfer.status == "draft" %} + Cancel + {% endif %} + diff --git a/templates/inventory/transfer_details.html b/templates/inventory/transfer_details.html index 9dadec25..a3f08e5b 100644 --- a/templates/inventory/transfer_details.html +++ b/templates/inventory/transfer_details.html @@ -8,6 +8,7 @@ {% endblock %} {% block content %} + + +
@@ -37,8 +56,11 @@
- {% trans 'Cancel' %} + + + {% trans 'Return' %}
diff --git a/templates/inventory/transfer_preview.html b/templates/inventory/transfer_preview.html index 6086ffc0..20b3250d 100644 --- a/templates/inventory/transfer_preview.html +++ b/templates/inventory/transfer_preview.html @@ -278,8 +278,8 @@ {{ transfer.car }} {{ transfer.quantity }} - {{ transfer.car.finances.cost_price }} - {{ transfer.total_price }} + {{ transfer.car.finances.selling_price }} + {{ transfer.total_price }} diff --git a/templates/ledger/bills/bill_detail.html b/templates/ledger/bills/bill_detail.html index 98935178..0cfd5f7f 100644 --- a/templates/ledger/bills/bill_detail.html +++ b/templates/ledger/bills/bill_detail.html @@ -226,10 +226,16 @@ {{item.total}} {% endfor %} + + {% trans "Vat Amount" %} + + {{bill.additional_info.car_finance.vat_amount}} + + {% trans "Grand Total" %} - {{grand_total}} + {{bill.additional_info.car_finance.total_vat}} diff --git a/templates/ledger/bills/bill_list.html b/templates/ledger/bills/bill_list.html index df5ce94a..dade723d 100644 --- a/templates/ledger/bills/bill_list.html +++ b/templates/ledger/bills/bill_list.html @@ -75,12 +75,17 @@ {{ bill.bill_number }} - {% if bill.bill.status == 'draft' %} + {% if bill.is_draft %} + {% elif bill.is_review %} + + {% elif bill.is_approved %} + + {% elif bill.is_paid %} + + {% endif %} {{ bill.bill_status }} - - {% endif %} {{bill.vendor.vendor_name}} diff --git a/templates/notifications.html b/templates/notifications.html index d3ee5cbf..7c5adabd 100644 --- a/templates/notifications.html +++ b/templates/notifications.html @@ -1,5 +1,5 @@