diff --git a/inventory/__pycache__/models.cpython-311.pyc b/inventory/__pycache__/models.cpython-311.pyc index d7573387..c95fcdda 100644 Binary files a/inventory/__pycache__/models.cpython-311.pyc and b/inventory/__pycache__/models.cpython-311.pyc differ diff --git a/inventory/__pycache__/views.cpython-311.pyc b/inventory/__pycache__/views.cpython-311.pyc index 7fa01829..2b8c0b67 100644 Binary files a/inventory/__pycache__/views.cpython-311.pyc and b/inventory/__pycache__/views.cpython-311.pyc differ diff --git a/inventory/models.py b/inventory/models.py index e66afb3c..a8366d25 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -809,4 +809,47 @@ class SalesOrder(models.Model): ) def __str__(self): - return f"Sales Order #{self.id} from Quotation #{self.quotation.id}" \ No newline at end of file + return f"Sales Order #{self.id} from Quotation #{self.quotation.id}" + + +class Payment(models.Model): + METHOD_CHOICES = [ + ('cash', _('cash')), + ('credit', _('credit')), + ('transfer', _('transfer')), + ('debit', _('debit')), + ('SADAD', _('SADAD')), + ] + quotation = models.ForeignKey(SaleQuotation, on_delete=models.CASCADE, related_name="payments") + amount = models.DecimalField(max_digits=10, decimal_places=2, verbose_name=_("amount")) + payment_method = models.CharField(choices=METHOD_CHOICES, max_length=50, verbose_name=_("method")) + reference_number = models.CharField(max_length=100, null=True, blank=True, verbose_name=_("reference number")) + payment_date = models.DateField(auto_now_add=True, verbose_name=_("date")) + + # def save(self, *args, **kwargs): + # super().save(*args, **kwargs) + # self.quotation.remaining_balance -= self.amount + # if self.quotation.remaining_balance <= 0: + # self.quotation.is_paid = True + # self.quotation.save() + + class Meta: + verbose_name = _("payment") + verbose_name_plural = _("payments") + + def __str__(self): + return f"Payment of {self.amount} on {self.date} for {self.order}" + + +class Refund(models.Model): + payment = models.OneToOneField(Payment, on_delete=models.CASCADE, related_name="refund") + amount = models.DecimalField(max_digits=10, decimal_places=2, verbose_name=_("amount")) + reason = models.TextField(blank=True, verbose_name=_("reason")) + refund_date = models.DateField(auto_now_add=True, verbose_name=_("refund date")) + + class Meta: + verbose_name = _("refund") + verbose_name_plural = _("refunds") + + def __str__(self): + return f"Refund of {self.amount} on {self.refund_date}" \ No newline at end of file diff --git a/inventory/pdf_generator.py b/inventory/pdf_generator.py index e8a2febf..c4086eeb 100644 --- a/inventory/pdf_generator.py +++ b/inventory/pdf_generator.py @@ -1,3 +1,4 @@ +from nltk.app.wordnet_app import page_from_reference from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer from reportlab.lib import colors from reportlab.lib.pagesizes import A4 @@ -62,7 +63,7 @@ def generate_quotation_pdf(response, quotation, services): # Car Details Table elements.append(Paragraph("Car Details", heading_style)) - car_data = [["VIN", "Model", "Year", "Quantity", "Price", "VAT %", "Total"]] + car_data = [["رقم الهيكل", "الموديل", "سنة الصنع", "الكمية", "السعر", "الضريبة", "الإجمالي"]] for item in quotation.quotation_cars.all(): car_data.append([ item.car.vin, @@ -117,5 +118,6 @@ def generate_quotation_pdf(response, quotation, services): ])) elements.append(additional_table) + # Build PDF doc.build(elements) \ No newline at end of file diff --git a/inventory/signals.py b/inventory/signals.py index 7a8241b5..77e62bca 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -1,6 +1,6 @@ from random import randint -from django.db.models.signals import post_save, post_delete, pre_delete +from django.db.models.signals import post_save, post_delete,pre_delete from django.dispatch import receiver from django_ledger.views import JournalEntryCreateView from django_ledger.models import ( @@ -19,6 +19,7 @@ from django.utils.translation import gettext_lazy as _ from . import models + # @receiver(post_save, sender=models.SaleQuotation) # def link_quotation_to_entity(sender, instance, created, **kwargs): # if created: @@ -31,72 +32,21 @@ from . import models # user = instance.user # if user: # user.delete() - -User = get_user_model() - -@receiver(post_save, sender=User) -def create_user_profile(sender, instance, created, **kwargs): - if created: - dealer = models.Dealer.objects.create(user=instance, name=instance.username) - # dealer.user.set_password("Tenhal@123") - dealer.save() - -@receiver(post_save, sender=models.Car) -def create_product_for_car(sender, instance, created, **kwargs): - if created: - entity = EntityModel.objects.get(name=instance.dealer.get_root_dealer.name) - - product_model = entity.create_item_product( - name=f"{instance.year} {instance.id_car_make} {instance.id_car_model} {instance.id_car_trim}", - uom_model=entity.get_uom_all().first(), - item_type=ItemModel.ITEM_TYPE_OTHER, - coa_model=entity.get_default_coa(), - ) - print(f"Created product: {product_model.name}") - - -@receiver(post_save, sender=models.CarFinance) -def update_product_default_value(sender, instance, **kwargs): - # Get the associated car - car = instance.car - - # Get the entity associated with the dealer - entity = EntityModel.objects.get(name=car.dealer.get_root_dealer.name) # Assuming the dealer's name matches the entity name - - # Get the product in Django Ledger associated with the car - items_products = entity.get_items_products() - - try: - product_model = items_products.get( - name=f"{car.year} {car.id_car_make} {car.id_car_model} {car.id_car_trim}" - ) - except ItemModel.DoesNotExist: - print(f"Product for car {car} does not exist in Django Ledger.") - return - - # Update the default value per unit of measure for the product - product_model.default_amount = instance.selling_price - product_model.save() - - print(f"Updated product {product_model.name} with default value: {product_model.default_amount}") - @receiver(post_save, sender=models.Car) def create_car_location(sender, instance, created, **kwargs): """ - Signal to create or update the car's location when a car instance is saved. - """ + Signal to create or update the car's location when a car instance is saved. + """ try: if created: if instance.dealer is None: - raise ValueError( - f"Cannot create CarLocation for car {instance.vin}: dealer is missing." - ) + raise ValueError(f"Cannot create CarLocation for car {instance.vin}: dealer is missing.") models.CarLocation.objects.create( car=instance, owner=instance.dealer, showroom=instance.dealer, - description=f"Initial location set for car {instance.vin}.", + description=f"Initial location set for car {instance.vin}." ) print("Car Location created") except Exception as e: @@ -143,65 +93,65 @@ def create_ledger_entity(sender, instance, created, **kwargs): ) print(f"Ledger entity created for Dealer: {instance.name}") - entity.create_account( - coa_model=default_coa, - code="10100", - role='asset_ca_cash', - name=_('Cash'), - balance_type="debit", - ) - entity.create_account( - coa_model=default_coa, - code="11000", - role='asset_ca_recv', - name=_('Accounts Receivable'), - balance_type="debit", - ) - entity.create_account( - coa_model=default_coa, - code="12000", - role='asset_ca_inv', - name=_('Inventory'), - balance_type="debit", - active=True) - - entity.create_account( - coa_model=default_coa, - code="20100", - role='lia_cl_acc_payable', - name=_('Accounts Payable'), - balance_type="credit", - active=True) - - entity.create_account( - coa_model=default_coa, - code="40100", - role='in_operational', - name=_('Sales Income'), - balance_type="credit", - active=True) - - entity.create_account( - coa_model=default_coa, - code="50100", - role='cogs_regular', - name=_('Cost of Goods Sold'), - balance_type="debit", - active=True) - except Exception as e: - print(f"Failed to create Ledger entity for Dealer: {instance.name}. Error: {e}") - - # entity = EntityModel.objects.filter(name=instance.dealer.name).first() + # entity.create_account( + # coa_model=coa, + # code=1010, + # role='asset_ca_cash', + # name=_('Cash'), + # balance_type="debit", + # ) + # entity.create_account( + # coa_model=coa, + # code=1100, + # role='asset_ca_recv', + # name=_('Accounts Receivable'), + # balance_type="debit", + # ) + # entity.create_account( + # coa_model=coa, + # code=1200, + # role='asset_ca_inv', + # name=_('Inventory'), + # balance_type="debit", + # active=True) # + # entity.create_account( + # coa_model=coa, + # code=2010, + # role='lia_cl_acc_payable', + # name=_('Accounts Payable'), + # balance_type="credit", + # active=True) + # + # entity.create_account( + # coa_model=coa, + # code=4010, + # role='in_operational', + # name=_('Sales Income'), + # balance_type="credit", + # active=True) + # + # entity.create_account( + # coa_model=coa, + # code=5010, + # role='cogs_regular', + # name=_('Cost of Goods Sold'), + # balance_type="debit", + # active=True) + + + # uom_name = _("Unit") # unit_abbr = _("U") # # entity.create_uom(uom_name, unit_abbr) + # Create Vendor @receiver(post_save, sender=models.Vendor) def create_ledger_vendor(sender, instance, created, **kwargs): + if created: entity = EntityModel.objects.filter(name=instance.dealer.name).first() @@ -216,8 +166,8 @@ def create_ledger_vendor(sender, instance, created, **kwargs): additional_info={ "arabic_name": instance.arabic_name, "contact_person": instance.contact_person, - }, - ) + }) + print(f"VendorModel created for Vendor: {instance.name}") @@ -225,9 +175,7 @@ def create_ledger_vendor(sender, instance, created, **kwargs): @receiver(post_save, sender=models.Customer) def create_customer(sender, instance, created, **kwargs): if created: - entity = EntityModel.objects.filter( - name=instance.dealer.get_root_dealer.name - ).first() + entity = EntityModel.objects.filter(name=instance.dealer.get_root_dealer.name).first() name = f"{instance.first_name} {instance.middle_name} {instance.last_name}" entity.create_customer( @@ -239,7 +187,7 @@ def create_customer(sender, instance, created, **kwargs): "sales_tax_rate": 0.15, "active": True, "hidden": False, - "additional_info": {}, + "additional_info": {} } ) diff --git a/inventory/views.py b/inventory/views.py index 280e3872..ca36eeef 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -1,4 +1,4 @@ -from django_ledger.models import EntityModel, InvoiceModel,EntityUnitModel,LedgerModel +from django_ledger.models import EntityModel, InvoiceModel import logging import json import datetime @@ -302,7 +302,7 @@ class CarInventory(LoginRequiredMixin, ListView): make_id = self.kwargs['make_id'] model_id = self.kwargs['model_id'] trim_id = self.kwargs['trim_id'] - + cars = models.Car.objects.filter( dealer=self.request.user.dealer.get_root_dealer, id_car_make=make_id, @@ -786,6 +786,8 @@ class QuotationListView(LoginRequiredMixin, PermissionRequiredMixin, ListView): def get_queryset(self): status = self.request.GET.get("status") + # queryset = models.SaleQuotation.objects.all() + print(self.request.user.dealer.get_root_dealer.sales.all()) queryset = self.request.user.dealer.get_root_dealer.sales.all() if status: queryset = queryset.filter(status=status) @@ -810,7 +812,7 @@ class QuotationDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailVie @login_required def generate_invoice(request, pk): - quotation = get_object_or_404(models.SaleQuotation, pk=pk) + quotation = get_object_or_404(models.SaleQuotation, pk=pk) if not quotation.is_approved: messages.error( request, "Quotation must be approved before converting to an invoice." @@ -1069,6 +1071,7 @@ def mark_quotation(request, pk): # messages.success(request, _("Quotation Paid")) return redirect("quotation_detail", pk=pk) + @login_required def confirm_quotation(request, pk): quotation = get_object_or_404(models.SaleQuotation, pk=pk) diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 32e776f4..547b33b1 100644 Binary files a/locale/ar/LC_MESSAGES/django.mo and b/locale/ar/LC_MESSAGES/django.mo differ diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index fe137289..e590aac7 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-19 15:20+0300\n" +"POT-Creation-Date: 2024-12-23 14:25+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,76 +19,77 @@ msgstr "" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: api/models.py:6 inventory/models.py:144 +#: api/models.py:6 inventory/models.py:160 #: templates/inventory/car_detail.html:96 templates/inventory/car_form.html:83 #: templates/inventory/car_inventory.html:35 #: templates/inventory/car_list.html:67 templates/inventory/car_list.html:69 -#: templates/sales/quotation_detail.html:32 +#: templates/sales/quotation_detail.html:60 +#: templates/sales/quotation_pdf.html:41 msgid "VIN" msgstr "رقم الهيكل" -#: car_inventory/settings.py:203 +#: car_inventory/settings.py:191 msgid "English" msgstr "الإنجليزية" -#: car_inventory/settings.py:204 +#: car_inventory/settings.py:192 msgid "Arabic" msgstr "العربية" -#: car_inventory/settings.py:269 templates/index.html:59 +#: car_inventory/settings.py:252 templates/index.html:59 #: templates/index.html:62 templates/index.html:80 templates/index.html:87 #: templates/index.html:116 templates/index.html:122 templates/index.html:128 #: templates/index.html:163 templates/index.html:171 templates/index.html:179 msgid "SAR" msgstr "ريال سعودي" -#: inventory/forms.py:134 inventory/models.py:439 +#: inventory/forms.py:148 inventory/models.py:373 #: templates/inventory/car_detail.html:168 msgid "Custom Date" msgstr "تاريخ البطاقة الجمركية" -#: inventory/forms.py:183 +#: inventory/forms.py:197 msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/models.py:33 +#: inventory/models.py:36 msgid "logo" msgstr "الشعار" -#: inventory/models.py:124 +#: inventory/models.py:127 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:21 msgid "Available" msgstr "متاح" -#: inventory/models.py:125 +#: inventory/models.py:128 msgid "Sold" msgstr "تم البيع" -#: inventory/models.py:126 +#: inventory/models.py:129 msgid "Hold" msgstr "في الانتظار" -#: inventory/models.py:127 +#: inventory/models.py:130 msgid "Damaged" msgstr "تالف" -#: inventory/models.py:128 +#: inventory/models.py:131 msgid "Reserved" msgstr "محجوزة" -#: inventory/models.py:132 +#: inventory/models.py:135 msgid "New" msgstr "جديد" -#: inventory/models.py:133 +#: inventory/models.py:136 msgid "Used" msgstr "مستعمل" -#: inventory/models.py:137 inventory/models.py:460 +#: inventory/models.py:140 inventory/models.py:394 msgid "Owner" msgstr "المالك" -#: inventory/models.py:138 templates/header.html:50 +#: inventory/models.py:141 templates/header.html:50 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:440 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:526 #: venv/lib/python3.11/site-packages/django_ledger/models/items.py:521 @@ -96,229 +97,34 @@ msgstr "المالك" msgid "Inventory" msgstr "المخزن" -#: inventory/models.py:139 +#: inventory/models.py:142 msgid "Accountent" msgstr "المحاسب" -#: inventory/models.py:140 +#: inventory/models.py:143 msgid "Sales" msgstr "المبيعات" -#: inventory/models.py:146 inventory/models.py:589 -msgid "Dealer" -msgstr "المعرض" - -#: inventory/models.py:155 inventory/models.py:632 -#: templates/inventory/car_detail.html:142 -#: templates/inventory/car_form.html:230 -#: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:359 -#: venv/lib/python3.11/site-packages/django_ledger/models/vendor.py:191 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:10 -msgid "Vendor" -msgstr "المورد" - -#: inventory/models.py:163 -msgid "Make" -msgstr "الصانع" - -#: inventory/models.py:171 templates/sales/quotation_detail.html:33 -msgid "Model" -msgstr "الموديل" - -#: inventory/models.py:173 templates/inventory/car_form.html:118 -#: templates/inventory/car_inventory.html:36 -#: templates/sales/quotation_detail.html:34 -msgid "Year" -msgstr "السنة" - -#: inventory/models.py:180 templates/inventory/car_form.html:182 -msgid "Series" -msgstr "السلسلة" - -#: inventory/models.py:188 -msgid "Trim" -msgstr "الفئة" - -#: inventory/models.py:194 inventory/models.py:731 -#: templates/inventory/car_detail.html:120 -#: templates/inventory/car_list.html:163 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:10 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/card_po.html:15 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:23 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:12 -msgid "Status" -msgstr "الحالة" - -#: inventory/models.py:200 templates/inventory/car_detail.html:124 -#: templates/inventory/car_form.html:248 templates/inventory/car_list.html:177 -msgid "Stock Type" -msgstr "نوع المخزون" - -#: inventory/models.py:202 inventory/models.py:729 -#: templates/inventory/car_detail.html:147 -#: templates/inventory/car_form.html:301 templates/inventory/car_list.html:200 -#: templates/sales/quotation_detail.html:24 -msgid "Remarks" -msgstr "ملاحظات" - -#: inventory/models.py:203 templates/inventory/car_detail.html:128 -#: templates/inventory/car_form.html:265 templates/inventory/car_list.html:191 -#: templates/inventory/car_list.html:192 -msgid "Mileage" -msgstr "عدد الكيلومترات" - -#: inventory/models.py:204 templates/inventory/car_detail.html:132 -#: templates/inventory/car_form.html:283 -msgid "Receiving Date" -msgstr "تاريخ الاستلام" - -#: inventory/models.py:207 inventory/models.py:333 inventory/models.py:437 -#: inventory/models.py:454 inventory/models.py:504 inventory/models.py:769 -#: templates/sales/sales_order_detail.html:24 -msgid "Car" -msgstr "السيارة" - -#: inventory/models.py:208 -msgid "Cars" -msgstr "السيارات" - -#: inventory/models.py:334 templates/inventory/car_detail.html:338 -msgid "Reserved By" -msgstr "محجوز بواسطة" - -#: inventory/models.py:335 -msgid "Reserved At" -msgstr "تاريخ الحجز" - -#: inventory/models.py:336 -msgid "Reserved Until" -msgstr "محجوز حتى" - -#: inventory/models.py:344 templates/inventory/car_detail.html:38 -msgid "Car Reservation" -msgstr "حجز السيارة" - -#: inventory/models.py:345 -msgid "Car Reservations" -msgstr "حجوزات السيارات" - -#: inventory/models.py:351 templates/inventory/car_detail.html:223 -msgid "Cost Price" -msgstr "سعر التكلفة" - -#: inventory/models.py:352 templates/inventory/car_detail.html:228 -#: templates/sales/sales_order_detail.html:25 -msgid "Selling Price" -msgstr "سعر البيع" - -#: inventory/models.py:355 -msgid "Profit Margin" -msgstr "هامش الربح" - -#: inventory/models.py:359 -msgid "Vat Amount" -msgstr "مبلغ ضريبة القيمة المضافة" - -#: inventory/models.py:361 templates/inventory/car_detail.html:248 -msgid "Discount Amount" -msgstr "مبلغ الخصم" - -#: inventory/models.py:363 templates/inventory/car_detail.html:236 -msgid "Registration Fee" -msgstr "رسوم التسجيل" - -#: inventory/models.py:365 templates/inventory/car_detail.html:232 -#: templates/sales/quotation_detail.html:77 -msgid "Administration Fee" -msgstr "الرسوم الادارية" - -#: inventory/models.py:367 templates/inventory/car_detail.html:240 -#: templates/sales/quotation_detail.html:83 -msgid "Transportation Fee" -msgstr "رسوم النقل" - -#: inventory/models.py:369 templates/inventory/car_detail.html:244 -#: templates/sales/quotation_detail.html:89 -msgid "Custom Card Fee" -msgstr "رسوم البطاقة الجمركية" - -#: inventory/models.py:382 -#, python-format -msgid "Invalid decimal operation: %s" -msgstr "عملية عشرية غير صالحة: %s" - -#: inventory/models.py:386 inventory/models.py:387 -msgid "Car Financial Details" -msgstr "تفاصيل المالية للسيارة" - -#: inventory/models.py:391 inventory/models.py:404 inventory/models.py:676 -#: inventory/models.py:693 templates/dealers/dealer_detail.html:26 +#: inventory/models.py:147 inventory/models.py:325 inventory/models.py:338 +#: inventory/models.py:612 inventory/models.py:629 +#: templates/dealers/dealer_detail.html:26 #: templates/organizations/organization_list.html:17 #: templates/representatives/representative_list.html:17 -#: templates/sales/quotation_detail.html:15 templates/users/user_detail.html:46 +#: templates/sales/quotation_detail.html:43 +#: templates/sales/quotation_pdf.html:33 templates/users/user_detail.html:47 #: templates/vendors/vendors_list.html:34 templates/vendors/view_vendor.html:46 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:16 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:37 msgid "Name" msgstr "الاسم" -#: inventory/models.py:392 inventory/models.py:405 inventory/models.py:558 -#: inventory/models.py:620 inventory/models.py:677 inventory/models.py:694 -#: templates/users/user_detail.html:47 +#: inventory/models.py:148 inventory/models.py:326 inventory/models.py:339 +#: inventory/models.py:492 inventory/models.py:554 inventory/models.py:613 +#: inventory/models.py:630 templates/users/user_detail.html:48 msgid "Arabic Name" msgstr "الاسم بالعربية" -#: inventory/models.py:393 inventory/models.py:406 -msgid "RGB" -msgstr "آر جي بي" - -#: inventory/models.py:396 inventory/models.py:397 -#: templates/inventory/add_colors.html:13 -msgid "Exterior Colors" -msgstr "الألوان الخارجية" - -#: inventory/models.py:409 inventory/models.py:410 -#: templates/inventory/add_colors.html:32 -msgid "Interior Colors" -msgstr "الألوان الداخلية" - -#: inventory/models.py:427 -msgid "Color" -msgstr "اللون" - -#: inventory/models.py:428 -msgid "Colors" -msgstr "الألوان" - -#: inventory/models.py:438 templates/inventory/car_detail.html:164 -msgid "Custom Number" -msgstr "رقم البطاقة الجمركية" - -#: inventory/models.py:442 templates/inventory/car_detail.html:23 -#: templates/inventory/car_detail.html:173 -msgid "Custom Card" -msgstr "البطاقة الجمركية" - -#: inventory/models.py:443 -msgid "Custom Cards" -msgstr "البطاقات الجمركية" - -#: inventory/models.py:461 -msgid "Dealer who owns the car." -msgstr "التاجر الذي يمتلك السيارة." - -#: inventory/models.py:467 -msgid "Showroom" -msgstr "صالة العرض" - -#: inventory/models.py:468 -msgid "Dealer where the car is displayed (can be the owner)." -msgstr "التاجر الذي تُعرض السيارة في صالته (يمكن أن يكون المالك)." - -#: inventory/models.py:473 +#: inventory/models.py:149 inventory/models.py:407 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:17 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:38 #: venv/lib/python3.11/site-packages/django_ledger/models/data_import.py:61 @@ -331,158 +137,334 @@ msgstr "التاجر الذي تُعرض السيارة في صالته (يمك msgid "Description" msgstr "الوصف" -#: inventory/models.py:474 +#: inventory/models.py:150 templates/sales/quotation_detail.html:64 +#: templates/sales/quotation_pdf.html:45 +msgid "Price" +msgstr "السعر" + +#: inventory/models.py:153 inventory/models.py:154 +msgid "Additional Services" +msgstr "الخدمات الإضافية" + +#: inventory/models.py:162 inventory/models.py:523 +msgid "Dealer" +msgstr "المعرض" + +#: inventory/models.py:171 inventory/models.py:566 +#: templates/inventory/car_detail.html:142 +#: templates/inventory/car_form.html:230 +#: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:359 +#: venv/lib/python3.11/site-packages/django_ledger/models/vendor.py:191 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:10 +msgid "Vendor" +msgstr "المورد" + +#: inventory/models.py:179 +msgid "Make" +msgstr "الصانع" + +#: inventory/models.py:187 templates/sales/quotation_detail.html:61 +#: templates/sales/quotation_pdf.html:42 +msgid "Model" +msgstr "الموديل" + +#: inventory/models.py:189 templates/inventory/car_form.html:118 +#: templates/inventory/car_inventory.html:36 +#: templates/sales/quotation_detail.html:62 +#: templates/sales/quotation_pdf.html:43 +msgid "Year" +msgstr "السنة" + +#: inventory/models.py:196 templates/inventory/car_form.html:182 +msgid "Series" +msgstr "السلسلة" + +#: inventory/models.py:204 +msgid "Trim" +msgstr "الفئة" + +#: inventory/models.py:210 templates/inventory/car_detail.html:120 +#: templates/inventory/car_list.html:163 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/card_po.html:15 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:23 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:12 +msgid "Status" +msgstr "الحالة" + +#: inventory/models.py:216 templates/inventory/car_detail.html:124 +#: templates/inventory/car_form.html:248 templates/inventory/car_list.html:177 +msgid "Stock Type" +msgstr "نوع المخزون" + +#: inventory/models.py:218 inventory/models.py:668 +#: templates/inventory/car_detail.html:147 +#: templates/inventory/car_form.html:301 templates/inventory/car_list.html:200 +#: templates/sales/quotation_detail.html:52 +msgid "Remarks" +msgstr "ملاحظات" + +#: inventory/models.py:219 templates/inventory/car_detail.html:128 +#: templates/inventory/car_form.html:265 templates/inventory/car_list.html:191 +#: templates/inventory/car_list.html:192 +msgid "Mileage" +msgstr "عدد الكيلومترات" + +#: inventory/models.py:220 templates/inventory/car_detail.html:132 +#: templates/inventory/car_form.html:283 +msgid "Receiving Date" +msgstr "تاريخ الاستلام" + +#: inventory/models.py:223 inventory/models.py:264 inventory/models.py:371 +#: inventory/models.py:388 inventory/models.py:438 inventory/models.py:739 +#: templates/sales/sales_order_detail.html:24 +msgid "Car" +msgstr "السيارة" + +#: inventory/models.py:224 +msgid "Cars" +msgstr "السيارات" + +#: inventory/models.py:265 templates/inventory/car_detail.html:332 +msgid "Reserved By" +msgstr "محجوز بواسطة" + +#: inventory/models.py:266 +msgid "Reserved At" +msgstr "تاريخ الحجز" + +#: inventory/models.py:267 +msgid "Reserved Until" +msgstr "محجوز حتى" + +#: inventory/models.py:275 templates/inventory/car_detail.html:38 +msgid "Car Reservation" +msgstr "حجز السيارة" + +#: inventory/models.py:276 +msgid "Car Reservations" +msgstr "حجوزات السيارات" + +#: inventory/models.py:282 templates/inventory/car_detail.html:223 +msgid "Cost Price" +msgstr "سعر التكلفة" + +#: inventory/models.py:283 templates/inventory/car_detail.html:228 +#: templates/sales/sales_order_detail.html:25 +msgid "Selling Price" +msgstr "سعر البيع" + +#: inventory/models.py:284 templates/inventory/car_detail.html:232 +msgid "Discount Amount" +msgstr "مبلغ الخصم" + +#: inventory/models.py:321 inventory/models.py:322 +msgid "Car Financial Details" +msgstr "تفاصيل المالية للسيارة" + +#: inventory/models.py:327 inventory/models.py:340 +msgid "RGB" +msgstr "آر جي بي" + +#: inventory/models.py:330 inventory/models.py:331 +#: templates/inventory/add_colors.html:13 +msgid "Exterior Colors" +msgstr "الألوان الخارجية" + +#: inventory/models.py:343 inventory/models.py:344 +#: templates/inventory/add_colors.html:32 +msgid "Interior Colors" +msgstr "الألوان الداخلية" + +#: inventory/models.py:361 +msgid "Color" +msgstr "اللون" + +#: inventory/models.py:362 +msgid "Colors" +msgstr "الألوان" + +#: inventory/models.py:372 templates/inventory/car_detail.html:164 +msgid "Custom Number" +msgstr "رقم البطاقة الجمركية" + +#: inventory/models.py:376 templates/inventory/car_detail.html:23 +#: templates/inventory/car_detail.html:173 +msgid "Custom Card" +msgstr "البطاقة الجمركية" + +#: inventory/models.py:377 +msgid "Custom Cards" +msgstr "البطاقات الجمركية" + +#: inventory/models.py:395 +msgid "Dealer who owns the car." +msgstr "التاجر الذي يمتلك السيارة." + +#: inventory/models.py:401 +msgid "Showroom" +msgstr "صالة العرض" + +#: inventory/models.py:402 +msgid "Dealer where the car is displayed (can be the owner)." +msgstr "التاجر الذي تُعرض السيارة في صالته (يمكن أن يكون المالك)." + +#: inventory/models.py:408 msgid "Optional description about the showroom placement." msgstr "وصف اختياري حول وضع السيارة في صالة العرض." -#: inventory/models.py:478 inventory/models.py:733 inventory/models.py:814 -#: templates/sales/quotation_list.html:17 +#: inventory/models.py:412 inventory/models.py:673 inventory/models.py:795 +#: templates/sales/quotation_list.html:18 msgid "Created At" msgstr "تاريخ الإنشاء" -#: inventory/models.py:482 +#: inventory/models.py:416 msgid "Last Updated" msgstr "آخر تحديث" -#: inventory/models.py:486 +#: inventory/models.py:420 msgid "Car Location" msgstr "موقع السيارة" -#: inventory/models.py:487 +#: inventory/models.py:421 msgid "Car Locations" msgstr "مواقف السيارات" -#: inventory/models.py:506 +#: inventory/models.py:440 msgid "Plate Number" msgstr "رقم اللوحة" -#: inventory/models.py:507 +#: inventory/models.py:441 msgid "Text 1" msgstr "النص 1" -#: inventory/models.py:508 +#: inventory/models.py:442 msgid "Text 2" msgstr "النص 2" -#: inventory/models.py:509 +#: inventory/models.py:443 msgid "Text 3" msgstr "النص 3" -#: inventory/models.py:510 +#: inventory/models.py:444 msgid "Registration Date" msgstr "تاريخ التسجيل" -#: inventory/models.py:513 +#: inventory/models.py:447 msgid "Registration" msgstr "التسجيل" -#: inventory/models.py:514 +#: inventory/models.py:448 msgid "Registrations" msgstr "تسجيل السيارات" -#: inventory/models.py:522 inventory/models.py:659 +#: inventory/models.py:456 inventory/models.py:593 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:38 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:12 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:17 msgid "Created" msgstr "تاريخ الإنشاء" -#: inventory/models.py:523 +#: inventory/models.py:457 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:41 msgid "Updated" msgstr "تم التحديث" -#: inventory/models.py:555 inventory/models.py:615 inventory/models.py:678 +#: inventory/models.py:489 inventory/models.py:549 inventory/models.py:614 #: templates/dealers/dealer_detail.html:31 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" -#: inventory/models.py:557 inventory/models.py:618 inventory/models.py:679 +#: inventory/models.py:491 inventory/models.py:552 inventory/models.py:615 #: templates/dealers/dealer_detail.html:35 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" -#: inventory/models.py:559 inventory/models.py:621 +#: inventory/models.py:493 inventory/models.py:555 msgid "English Name" msgstr "الاسم بالإنجليزية" -#: inventory/models.py:560 inventory/models.py:623 inventory/models.py:654 -#: inventory/models.py:680 inventory/models.py:696 +#: inventory/models.py:494 inventory/models.py:557 inventory/models.py:588 +#: inventory/models.py:616 inventory/models.py:632 #: templates/customers/view_customer.html:53 -#: templates/dealers/dealer_detail.html:40 templates/users/user_detail.html:50 +#: templates/dealers/dealer_detail.html:40 templates/users/user_detail.html:51 #: templates/vendors/view_vendor.html:52 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:113 msgid "Phone Number" msgstr "رقم الهاتف" -#: inventory/models.py:562 inventory/models.py:625 inventory/models.py:657 -#: inventory/models.py:681 inventory/models.py:697 +#: inventory/models.py:496 inventory/models.py:559 inventory/models.py:591 +#: inventory/models.py:617 inventory/models.py:633 #: templates/customers/view_customer.html:54 #: templates/dealers/dealer_detail.html:44 #: templates/organizations/organization_detail.html:11 #: templates/representatives/representative_detail.html:10 -#: templates/sales/quotation_detail.html:17 templates/users/user_detail.html:51 +#: templates/sales/quotation_detail.html:45 +#: templates/sales/quotation_pdf.html:34 templates/users/user_detail.html:52 #: templates/vendors/vendors_list.html:36 templates/vendors/view_vendor.html:58 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/tags/customer_table.html:10 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:11 msgid "Address" msgstr "العنوان" -#: inventory/models.py:565 inventory/models.py:628 inventory/models.py:682 +#: inventory/models.py:499 inventory/models.py:562 inventory/models.py:618 #: templates/vendors/vendors_list.html:35 msgid "Logo" msgstr "الشعار" -#: inventory/models.py:572 +#: inventory/models.py:506 msgid "Parent Dealer" msgstr "المعرض الرئيسي" -#: inventory/models.py:578 +#: inventory/models.py:512 msgid "Dealer Type" msgstr "نوع المعرض" -#: inventory/models.py:590 +#: inventory/models.py:524 msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:622 templates/vendors/view_vendor.html:49 +#: inventory/models.py:556 templates/vendors/view_vendor.html:49 msgid "Contact Person" msgstr "الشخص المسؤول" -#: inventory/models.py:633 templates/header.html:142 templates/header.html:157 +#: inventory/models.py:567 templates/header.html:142 templates/header.html:157 #: templates/vendors/vendor_form.html:4 templates/vendors/vendors_list.html:4 #: templates/vendors/vendors_list.html:5 templates/vendors/vendors_list.html:11 msgid "Vendors" msgstr "الموردين" -#: inventory/models.py:644 templates/customers/customer_list.html:51 +#: inventory/models.py:578 templates/customers/customer_list.html:51 #: templates/customers/view_customer.html:46 msgid "First Name" msgstr "الاسم الأول" -#: inventory/models.py:646 templates/customers/customer_list.html:52 +#: inventory/models.py:580 templates/customers/customer_list.html:52 #: templates/customers/view_customer.html:47 msgid "Middle Name" msgstr "اسم الأب" -#: inventory/models.py:648 templates/customers/customer_list.html:53 +#: inventory/models.py:582 templates/customers/customer_list.html:53 #: templates/customers/view_customer.html:48 msgid "Last Name" msgstr "اسم العائلة" -#: inventory/models.py:649 templates/customers/view_customer.html:51 +#: inventory/models.py:583 templates/customers/view_customer.html:51 #: templates/vendors/view_vendor.html:55 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:111 msgid "Email" msgstr "البريد الإلكتروني" -#: inventory/models.py:651 templates/customers/customer_list.html:54 +#: inventory/models.py:585 templates/customers/customer_list.html:54 #: templates/customers/view_customer.html:52 msgid "National ID" msgstr "رقم الهوية الوطنية" -#: inventory/models.py:662 inventory/models.py:721 -#: templates/sales/quotation_list.html:14 +#: inventory/models.py:596 inventory/models.py:660 +#: templates/sales/quotation_list.html:15 #: templates/sales/sales_order_detail.html:12 #: venv/lib/python3.11/site-packages/django_ledger/models/customer.py:199 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:252 @@ -492,36 +474,36 @@ msgstr "رقم الهوية الوطنية" msgid "Customer" msgstr "العميل" -#: inventory/models.py:663 templates/customers/customer_list.html:3 +#: inventory/models.py:597 templates/customers/customer_list.html:3 #: templates/customers/customer_list.html:6 msgid "Customers" msgstr "العملاء" -#: inventory/models.py:685 +#: inventory/models.py:621 msgid "Organization" msgstr "منظمة" -#: inventory/models.py:686 templates/organizations/organization_list.html:3 +#: inventory/models.py:622 templates/organizations/organization_list.html:3 #: templates/organizations/organization_list.html:6 msgid "Organizations" msgstr "منظمات" -#: inventory/models.py:695 +#: inventory/models.py:631 #: templates/representatives/representative_detail.html:8 #: templates/representatives/representative_list.html:18 msgid "ID Number" msgstr "رقم الهوية" -#: inventory/models.py:701 +#: inventory/models.py:637 msgid "Representative" msgstr "ممثل" -#: inventory/models.py:702 templates/representatives/representative_list.html:3 +#: inventory/models.py:638 templates/representatives/representative_list.html:3 #: templates/representatives/representative_list.html:6 msgid "Representatives" msgstr "ممثلون" -#: inventory/models.py:710 +#: inventory/models.py:648 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:338 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:223 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:299 @@ -529,11 +511,11 @@ msgstr "ممثلون" msgid "Draft" msgstr "مسودة" -#: inventory/models.py:711 +#: inventory/models.py:649 msgid "Confirmed" msgstr "مؤكد" -#: inventory/models.py:712 +#: inventory/models.py:650 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:342 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:228 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:304 @@ -542,30 +524,23 @@ msgstr "مؤكد" msgid "Canceled" msgstr "ملغى" -#: inventory/models.py:727 +#: inventory/models.py:666 #: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:491 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:22 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:11 msgid "Amount" msgstr "المبلغ" -#: inventory/models.py:734 +#: inventory/models.py:674 msgid "Updated At" msgstr "تم التحديث" -#: inventory/models.py:744 -msgid "Only draft quotations can be confirmed." -msgstr "لا يمكن تأكيد سوى العروض التقديرية المسودة." - -#: inventory/models.py:751 -msgid "Cannot cancel a confirmed quotation." -msgstr "لا يمكن إلغاء عرض تقديري تم تأكيده." - -#: inventory/models.py:764 inventory/models.py:812 +#: inventory/models.py:734 inventory/models.py:793 msgid "Quotation" msgstr "عزرص سعر" -#: inventory/models.py:771 templates/sales/quotation_detail.html:35 +#: inventory/models.py:741 templates/sales/quotation_detail.html:63 +#: templates/sales/quotation_pdf.html:44 #: venv/lib/python3.11/site-packages/django_ledger/models/items.py:1068 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:97 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:21 @@ -578,146 +553,150 @@ msgstr "عزرص سعر" msgid "Quantity" msgstr "الكمية" -#: inventory/models.py:816 templates/sales/quotation_list.html:16 +#: inventory/models.py:797 templates/sales/quotation_list.html:17 #: templates/sales/sales_order_detail.html:16 #: templates/sales/sales_order_detail.html:27 msgid "Total Amount" msgstr "المبلغ الإجمالي" -#: inventory/signals.py:75 +#: inventory/signals.py:78 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:436 #: venv/lib/python3.11/site-packages/django_ledger/models/coa.py:152 msgid "Chart of Accounts" msgstr "قائمة الحسابات" -#: inventory/utils.py:25 +#: inventory/utils.py:28 msgid "success" msgstr "ناجحة" -#: inventory/utils.py:26 +#: inventory/utils.py:29 msgid "error" msgstr "خطأ" -#: inventory/utils.py:27 templates/accounts/password_change.html:32 +#: inventory/utils.py:30 templates/accounts/password_change.html:32 msgid "Forgot Password?" msgstr "نسيت كلمة المرور؟" -#: inventory/views.py:80 +#: inventory/views.py:106 msgid "You are not associated with any dealer." msgstr "أنت غير مرتبط بأي معرض." -#: inventory/views.py:245 templates/header.html:33 templates/index.html:20 +#: inventory/views.py:292 templates/header.html:33 templates/index.html:20 #: templates/inventory/car_inventory.html:4 #: templates/inventory/car_inventory.html:7 msgid "inventory" msgstr "المخزون" -#: inventory/views.py:386 +#: inventory/views.py:434 msgid "Car finance details saved successfully." msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:402 +#: inventory/views.py:450 msgid "Car finance details updated successfully." msgstr "تم تحديث تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:412 +#: inventory/views.py:465 msgid "Car updated successfully." msgstr "تم تحديث السيارة بنجاح" -#: inventory/views.py:424 +#: inventory/views.py:477 msgid "Car deleted successfully." msgstr "تم حذف السيارة بنجاح." -#: inventory/views.py:469 +#: inventory/views.py:522 msgid "Custom Card added successfully." msgstr "تم إضافة البطاقة الجمركية بنجاح." -#: inventory/views.py:478 +#: inventory/views.py:531 msgid "This car is already reserved." msgstr "هذه السيارة محجوزة بالفعل." -#: inventory/views.py:488 +#: inventory/views.py:539 msgid "Car reserved successfully." msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:505 +#: inventory/views.py:560 msgid "Reservation renewed successfully." msgstr "تم تجديد الحجز بنجاح" -#: inventory/views.py:510 +#: inventory/views.py:565 msgid "Reservation canceled successfully." msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:514 +#: inventory/views.py:570 msgid "Invalid action." msgstr "إجراء غير صالح." -#: inventory/views.py:516 +#: inventory/views.py:574 msgid "Invalid request method." msgstr "طريقة الطلب غير صالحة" -#: inventory/views.py:536 +#: inventory/views.py:595 msgid "Dealer created successfully." msgstr "تم إنشاء المعرض بنجاح." -#: inventory/views.py:543 +#: inventory/views.py:603 msgid "Dealer updated successfully." msgstr "تم تحديث المعرض بنجاح." -#: inventory/views.py:562 +#: inventory/views.py:625 msgid "Dealer deleted successfully." msgstr "تم حذف المعرض بنجاح." -#: inventory/views.py:566 templates/customers/customer_form.html:4 +#: inventory/views.py:630 templates/customers/customer_form.html:4 #: templates/header.html:62 templates/header.html:77 msgid "customers" msgstr "العملاء" -#: inventory/views.py:601 +#: inventory/views.py:675 msgid "Customer created successfully." msgstr "تم إنشاء العميل بنجاح." -#: inventory/views.py:609 +#: inventory/views.py:690 msgid "Customer updated successfully." msgstr "تم تحديث العميل بنجاح." -#: inventory/views.py:615 +#: inventory/views.py:697 msgid "Customer deleted successfully." msgstr "تم حذف العميل بنجاح." -#: inventory/views.py:639 +#: inventory/views.py:727 msgid "Vendor created successfully." msgstr "تم إنشاء المورد بنجاح." -#: inventory/views.py:647 +#: inventory/views.py:742 msgid "Vendor updated successfully." msgstr "تم تحديث المورد بنجاح" -#: inventory/views.py:653 +#: inventory/views.py:749 msgid "Vendor deleted successfully." msgstr "تم حذف المورد بنجاح." -#: inventory/views.py:675 +#: inventory/views.py:774 msgid "Quotation created successfully." msgstr "تم إنشاء عرض السعر بنجاح." -#: inventory/views.py:763 +#: inventory/views.py:862 +msgid "Quotation already approved." +msgstr "تمت الموافقة على العرض بالفعل." + +#: inventory/views.py:877 msgid "Quotation confirmed and sales order created." msgstr "تم تأكيد عرض السعر وإنشاء أمر البيع." -#: inventory/views.py:812 +#: inventory/views.py:933 msgid "User created successfully." msgstr "تم إنشاء المستخدم بنجاح." -#: inventory/views.py:821 +#: inventory/views.py:946 msgid "You have reached the maximum number of users." msgstr "لقد وصلت إلى الحد الأقصى لعدد المستخدمين." -#: inventory/views.py:842 +#: inventory/views.py:976 msgid "User updated successfully." msgstr "تم تحديث المستخدم بنجاح" -#: inventory/views.py:863 +#: inventory/views.py:1002 msgid "User deleted successfully." msgstr "تم حذف المستخدم بنجاح." @@ -845,7 +824,7 @@ msgstr "حفظ" #: templates/inventory/add_colors.html:56 #: templates/inventory/add_custom_card.html:8 #: templates/inventory/car_confirm_delete.html:14 -#: templates/inventory/car_detail.html:362 +#: templates/inventory/car_detail.html:356 #: templates/inventory/car_finance_form.html:41 #: templates/inventory/color_palette.html:107 #: templates/inventory/reserve_car.html:30 @@ -864,7 +843,7 @@ msgid "Cancel" msgstr "إلغاء" #: templates/customers/customer_list.html:21 -#: templates/inventory/car_list.html:70 templates/users/user_list.html:20 +#: templates/inventory/car_list.html:70 templates/users/user_list.html:19 msgid "search" msgstr "بحث" @@ -877,11 +856,11 @@ msgid "Customers List" msgstr "قائمة العملاء" #: templates/customers/customer_list.html:55 -#: templates/inventory/car_detail.html:340 +#: templates/inventory/car_detail.html:334 #: templates/inventory/car_inventory.html:40 #: templates/organizations/organization_list.html:21 #: templates/representatives/representative_list.html:20 -#: templates/sales/quotation_list.html:18 +#: templates/sales/quotation_list.html:19 #: templates/vendors/vendors_list.html:37 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/account_txs_table.html:29 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:29 @@ -914,7 +893,7 @@ msgstr "الإجراءات" #: templates/inventory/car_inventory.html:76 #: templates/organizations/organization_list.html:32 #: templates/representatives/representative_list.html:30 -#: templates/sales/quotation_list.html:32 templates/users/user_list.html:61 +#: templates/sales/quotation_list.html:40 templates/users/user_list.html:60 #: templates/vendors/vendors_list.html:56 msgid "view" msgstr "عرض" @@ -933,7 +912,7 @@ msgstr "السابق" msgid "Next" msgstr "التالي" -#: templates/customers/view_customer.html:4 templates/users/user_detail.html:4 +#: templates/customers/view_customer.html:4 templates/users/user_detail.html:5 msgid "View Customer" msgstr "عرض العميل" @@ -942,30 +921,33 @@ msgid "Are you sure you want to delete this customer?" msgstr "هل أنت متأكد أنك تريد حذف هذا العميل؟" #: templates/customers/view_customer.html:26 -#: templates/inventory/car_detail.html:48 templates/users/user_detail.html:26 +#: templates/inventory/car_detail.html:48 +#: templates/sales/quotation_detail.html:20 templates/users/user_detail.html:27 #: templates/vendors/view_vendor.html:29 #: venv/lib/python3.11/site-packages/django/forms/widgets.py:802 msgid "No" msgstr "لا" #: templates/customers/view_customer.html:31 -#: templates/inventory/car_detail.html:52 templates/users/user_detail.html:31 +#: templates/inventory/car_detail.html:52 +#: templates/sales/quotation_detail.html:24 templates/users/user_detail.html:32 #: templates/vendors/view_vendor.html:32 #: venv/lib/python3.11/site-packages/django/forms/widgets.py:801 msgid "Yes" msgstr "نعم" #: templates/customers/view_customer.html:41 -#: templates/sales/quotation_detail.html:13 +#: templates/sales/quotation_detail.html:41 +#: templates/sales/quotation_pdf.html:32 msgid "Customer Details" msgstr "تفاصيل العميل" #: templates/customers/view_customer.html:61 #: templates/inventory/car_detail.html:207 -#: templates/inventory/car_detail.html:395 +#: templates/inventory/car_detail.html:391 #: templates/organizations/organization_detail.html:14 #: templates/representatives/representative_detail.html:13 -#: templates/users/user_detail.html:59 templates/vendors/view_vendor.html:64 +#: templates/users/user_detail.html:60 templates/vendors/view_vendor.html:64 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/includes/card_customer.html:28 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:83 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:101 @@ -976,7 +958,7 @@ msgstr "تحديث" #: templates/customers/view_customer.html:67 #: templates/organizations/organization_detail.html:17 #: templates/representatives/representative_detail.html:16 -#: templates/users/user_detail.html:65 templates/vendors/view_vendor.html:67 +#: templates/users/user_detail.html:66 templates/vendors/view_vendor.html:67 #: venv/lib/python3.11/site-packages/django/forms/formsets.py:499 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_delete.html:28 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:25 @@ -1008,7 +990,7 @@ msgid "Delete" msgstr "حذف" #: templates/customers/view_customer.html:72 -#: templates/inventory/car_detail.html:397 templates/users/user_detail.html:70 +#: templates/inventory/car_detail.html:393 templates/users/user_detail.html:71 msgid "Back to List" msgstr "العودة إلى القائمة" @@ -1018,7 +1000,6 @@ msgid "Dealer Details" msgstr "تفاصيل المعرض" #: templates/dealers/dealer_detail.html:45 -#: templates/sales/quotation_detail.html:97 msgid "N/A" msgstr "غير متوفر" @@ -1149,24 +1130,24 @@ msgstr "500" msgid "Internal Server Error" msgstr "خطأ داخلي في الخادم" -#: templates/haikalbot/chatbot.html:4 templates/haikalbot/chatbot.html:23 -#: templates/haikalbot/chatbot.html:28 templates/haikalbot/chatbot.html:79 +#: templates/haikalbot/chatbot.html:4 templates/haikalbot/chatbot.html:22 +#: templates/haikalbot/chatbot.html:27 templates/haikalbot/chatbot.html:78 msgid "HaikalBot" msgstr "هيكل بوت" -#: templates/haikalbot/chatbot.html:28 +#: templates/haikalbot/chatbot.html:27 msgid "Hello! How can I assist you today?" msgstr "مرحبًا! كيف يمكنني مساعدتك اليوم؟" -#: templates/haikalbot/chatbot.html:33 +#: templates/haikalbot/chatbot.html:32 msgid "Type your message here..." msgstr "اكتب رسالتك هنا..." -#: templates/haikalbot/chatbot.html:34 +#: templates/haikalbot/chatbot.html:33 msgid "Send" msgstr "إرسال" -#: templates/haikalbot/chatbot.html:78 +#: templates/haikalbot/chatbot.html:77 msgid "You" msgstr "أنت" @@ -1380,7 +1361,8 @@ msgid "Select exterior and interior colors for" msgstr "اختر الألوان الخارجية والداخلية لـ" #: templates/inventory/car_detail.html:5 templates/inventory/car_detail.html:92 -#: templates/sales/quotation_detail.html:28 +#: templates/sales/quotation_detail.html:56 +#: templates/sales/quotation_pdf.html:37 msgid "Car Details" msgstr "تفاصيل السيارة" @@ -1441,7 +1423,7 @@ msgid "Our Showroom" msgstr "معرضنا" #: templates/inventory/car_detail.html:195 -#: templates/inventory/car_detail.html:393 +#: templates/inventory/car_detail.html:389 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" @@ -1454,14 +1436,21 @@ msgstr "لا يوجد موقع متاح." msgid "Financial Details" msgstr "التفاصيل المالية" -#: templates/inventory/car_detail.html:252 +#: templates/inventory/car_detail.html:236 +msgid "Additional Fee" +msgstr "رسوم إضافية" + +#: templates/inventory/car_detail.html:248 +#: templates/sales/quotation_detail.html:99 +#: templates/sales/quotation_pdf.html:67 #: templates/sales/sales_order_detail.html:26 msgid "VAT Amount" msgstr "مبلغ ضريبة القيمة المضافة" -#: templates/inventory/car_detail.html:256 -#: templates/inventory/inventory_stats.html:60 -#: templates/sales/quotation_detail.html:38 +#: templates/inventory/car_detail.html:252 +#: templates/inventory/inventory_stats.html:61 +#: templates/sales/quotation_detail.html:66 +#: templates/sales/quotation_pdf.html:47 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:98 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:127 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:24 @@ -1479,66 +1468,66 @@ msgstr "مبلغ ضريبة القيمة المضافة" msgid "Total" msgstr "الإجمالي" -#: templates/inventory/car_detail.html:264 +#: templates/inventory/car_detail.html:260 msgid "Edit Finance Details" msgstr "تعديل التفاصيل المالية" -#: templates/inventory/car_detail.html:269 +#: templates/inventory/car_detail.html:265 msgid "No finance details available." msgstr "لا توجد تفاصيل مالية متاحة." -#: templates/inventory/car_detail.html:272 +#: templates/inventory/car_detail.html:268 msgid "Add Finance Details" msgstr "إضافة التفاصيل المالية" -#: templates/inventory/car_detail.html:282 +#: templates/inventory/car_detail.html:277 msgid "Colors Details" msgstr "تفاصيل الألوان" -#: templates/inventory/car_detail.html:290 +#: templates/inventory/car_detail.html:284 msgid "Exterior" msgstr "الخارجي" -#: templates/inventory/car_detail.html:301 +#: templates/inventory/car_detail.html:295 msgid "Interior" msgstr "الداخلي" -#: templates/inventory/car_detail.html:315 +#: templates/inventory/car_detail.html:309 msgid "No colors available for this car." msgstr "لا تتوفر ألوان لهذه السيارة." -#: templates/inventory/car_detail.html:321 +#: templates/inventory/car_detail.html:315 msgid "Get Colors" msgstr "الحصول على الألوان" -#: templates/inventory/car_detail.html:332 +#: templates/inventory/car_detail.html:326 msgid "Reservations Details" msgstr "تفاصيل الحجز" -#: templates/inventory/car_detail.html:339 +#: templates/inventory/car_detail.html:333 msgid "Expires At" msgstr "ينتهي في" -#: templates/inventory/car_detail.html:356 +#: templates/inventory/car_detail.html:350 msgid "Renew" msgstr "تجديد" -#: templates/inventory/car_detail.html:368 +#: templates/inventory/car_detail.html:362 msgid "Expired" msgstr "ينتهي في" -#: templates/inventory/car_detail.html:379 +#: templates/inventory/car_detail.html:375 #: templates/inventory/reserve_car.html:29 msgid "Reserve" msgstr "حجز" -#: templates/inventory/car_detail.html:476 +#: templates/inventory/car_detail.html:472 #: templates/inventory/car_list.html:542 #: templates/partials/specifications_modal.html:11 msgid "No specifications available." msgstr "لا توجد مواصفات متاحة." -#: templates/inventory/car_detail.html:480 +#: templates/inventory/car_detail.html:476 #: templates/inventory/car_list.html:546 msgid "Error loading specifications." msgstr "حدث خطأ أثناء تحميل المواصفات." @@ -1709,24 +1698,24 @@ msgstr "إحصائيات المخزون" msgid "Total Cars in Inventory" msgstr "إجمالي السيارات في المخزون" -#: templates/inventory/inventory_stats.html:39 +#: templates/inventory/inventory_stats.html:40 msgid "models" msgstr "الموديلات" -#: templates/inventory/inventory_stats.html:51 +#: templates/inventory/inventory_stats.html:52 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:43 msgid "Details" msgstr "التفاصيل" -#: templates/inventory/inventory_stats.html:54 +#: templates/inventory/inventory_stats.html:55 msgid "Trims" msgstr "الفئات" -#: templates/inventory/inventory_stats.html:63 +#: templates/inventory/inventory_stats.html:64 msgid "No trims available" msgstr "لا يوجد فئات متاحة." -#: templates/inventory/inventory_stats.html:69 +#: templates/inventory/inventory_stats.html:70 msgid "No models available." msgstr "لا توجد موديلات متاحة." @@ -1808,64 +1797,77 @@ msgstr "إضافة ممثل" msgid "No representatives found." msgstr "لم يتم العثور على ممثلين." -#: templates/sales/quotation_detail.html:8 +#: templates/sales/quotation_detail.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/modals_v2.html:11 +msgid "Confirm" +msgstr "تأكيد" + +#: templates/sales/quotation_detail.html:14 +msgid "Are you sure" +msgstr "هل أنت متأكد" + +#: templates/sales/quotation_detail.html:36 +#: templates/sales/quotation_pdf.html:31 msgid "Quotation Details" msgstr "تفاصيل عرض السعر" -#: templates/sales/quotation_detail.html:18 +#: templates/sales/quotation_detail.html:46 +#: templates/sales/quotation_pdf.html:35 msgid "VAT No" msgstr "الرقم الضريبي" -#: templates/sales/quotation_detail.html:21 +#: templates/sales/quotation_detail.html:49 msgid "Quotation Information" msgstr "معلومات عرض السعر" -#: templates/sales/quotation_detail.html:22 +#: templates/sales/quotation_detail.html:50 msgid "Quotation No" msgstr "رقم عرض السعر" -#: templates/sales/quotation_detail.html:23 +#: templates/sales/quotation_detail.html:51 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:15 msgid "Date" msgstr "التاريخ" -#: templates/sales/quotation_detail.html:36 -msgid "Price" -msgstr "السعر" - -#: templates/sales/quotation_detail.html:37 -#: templates/sales/quotation_detail.html:71 +#: templates/sales/quotation_detail.html:65 +#: templates/sales/quotation_pdf.html:46 msgid "VAT" msgstr "ضريبة القيمة المضافة" -#: templates/sales/quotation_detail.html:56 +#: templates/sales/quotation_detail.html:84 msgid "Totals" msgstr "الإجمالي" -#: templates/sales/quotation_detail.html:65 +#: templates/sales/quotation_detail.html:93 msgid "Additional Costs" msgstr "التكاليف الإضافية" -#: templates/sales/quotation_detail.html:69 +#: templates/sales/quotation_detail.html:97 msgid "Additions" msgstr "الإضافات" -#: templates/sales/quotation_detail.html:70 +#: templates/sales/quotation_detail.html:98 msgid "Cost" msgstr "التكلفة" -#: templates/sales/quotation_detail.html:72 +#: templates/sales/quotation_detail.html:100 msgid "Total Cost with VAT" msgstr "التكلفة الإجمالية مع ضريبة القيمة المضافة" -#: templates/sales/quotation_detail.html:95 -msgid "Registration Fee (No VAT)" -msgstr "رسوم التسجيل (بدون ضريبة القيمة المضافة)" - -#: templates/sales/quotation_detail.html:104 +#: templates/sales/quotation_detail.html:122 msgid "Back to Quotations" msgstr "العودة إلى العروض" +#: templates/sales/quotation_detail.html:124 +msgid "Approve Quotation" +msgstr "الموافقة على العرض" + +#: templates/sales/quotation_detail.html:132 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:80 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:161 +msgid "Approve" +msgstr "الموافقة" + #: templates/sales/quotation_form.html:5 templates/sales/quotation_form.html:9 msgid "Create Quotation" msgstr "إنشاء عرض" @@ -1874,14 +1876,34 @@ msgstr "إنشاء عرض" msgid "Quotations" msgstr "العروض" -#: templates/sales/quotation_list.html:15 +#: templates/sales/quotation_list.html:14 +msgid "Quotation Number" +msgstr "رقم عرض السعر" + +#: templates/sales/quotation_list.html:16 msgid "Total Cars" msgstr "إجمالي السيارات" -#: templates/sales/quotation_list.html:39 +#: templates/sales/quotation_list.html:47 msgid "No Quotations Found" msgstr "لم يتم العثور على عروض" +#: templates/sales/quotation_pdf.html:7 +msgid "Quotation PDF" +msgstr "عرض الأسعار بصيغة PDF" + +#: templates/sales/quotation_pdf.html:65 +msgid "Summary" +msgstr "الملخص" + +#: templates/sales/quotation_pdf.html:66 +msgid "Total Sales Before VAT" +msgstr "إجمالي المبيعات قبل ضريبة القيمة المضافة" + +#: templates/sales/quotation_pdf.html:68 +msgid "Total Sales After VAT" +msgstr "إجمالي المبيعات بعد ضريبة القيمة المضافة" + #: templates/sales/sales_order_detail.html:2 #: templates/sales/sales_order_detail.html:5 msgid "Sales Order Details" @@ -1895,15 +1917,15 @@ msgstr "معرّف العرض" msgid "Cars in Sales Order" msgstr "السيارات في أمر البيع" -#: templates/users/user_detail.html:19 +#: templates/users/user_detail.html:20 msgid "Are you sure you want to delete this user?" msgstr "هل أنت متأكد أنك تريد حذف هذا المستخدم؟" -#: templates/users/user_detail.html:41 +#: templates/users/user_detail.html:42 msgid "User Details" msgstr "تفاصيل المستخدم" -#: templates/users/user_detail.html:52 +#: templates/users/user_detail.html:53 msgid "Role" msgstr "الدور" @@ -1916,27 +1938,27 @@ msgstr "المستخدمون" msgid "Edit User" msgstr "تحديث العميل" -#: templates/users/user_list.html:42 +#: templates/users/user_list.html:41 msgid "name" msgstr "الاسم" -#: templates/users/user_list.html:43 +#: templates/users/user_list.html:42 msgid "arabic name" msgstr "الاسم بالعربية" -#: templates/users/user_list.html:44 +#: templates/users/user_list.html:43 msgid "phone number" msgstr "رقم الهاتف" -#: templates/users/user_list.html:45 +#: templates/users/user_list.html:44 msgid "address" msgstr "العنوان" -#: templates/users/user_list.html:46 +#: templates/users/user_list.html:45 msgid "role" msgstr "الدور" -#: templates/users/user_list.html:47 +#: templates/users/user_list.html:46 msgid "actions" msgstr "الإجراءات" @@ -2208,6 +2230,10 @@ msgstr "خطأ غير معروف" msgid "Could not open file {filename!r}: {message}" msgstr "تعذر فتح الملف {filename!r}: {message}" +#: venv/lib/python3.11/site-packages/click/formatting.py:156 +msgid "Usage:" +msgstr "الاستخدام:" + #: venv/lib/python3.11/site-packages/click/parser.py:231 msgid "Argument {name!r} takes {nargs} values." msgstr "الوسيطة {name!r} تتطلب {nargs} قيمة." @@ -2430,6 +2456,8 @@ msgstr "أدخل “Slug” صالح يتكون من أحرف يونكود وأ #: venv/lib/python3.11/site-packages/django/core/validators.py:339 #: venv/lib/python3.11/site-packages/django/core/validators.py:353 #: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2215 +#, fuzzy, python-format +#| msgid "Enter a valid %(protocol)s address." msgid "Enter a valid %(protocol)s address." msgstr "أدخل صالح." @@ -2653,8 +2681,8 @@ msgstr "تاريخ (بدون وقت)" #: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1556 #, python-format msgid "" -"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." -"uuuuuu]][TZ] format." +"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD " +"HH:MM[:ss[.uuuuuu]][TZ] format." msgstr "" "القيمة “%(value)s” تحتوي على تنسيق غير صالح. يجب أن تكون بالتنسيق YYYY-MM-DD " "HH:MM[:ss[.uuuuuu]][TZ]." @@ -2684,8 +2712,8 @@ msgstr "رقم عشري" #: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1859 #, python-format msgid "" -"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." -"uuuuuu] format." +"“%(value)s” value has an invalid format. It must be in [DD] " +"[[HH:]MM:]ss[.uuuuuu] format." msgstr "" "القيمة “%(value)s” تحتوي على تنسيق غير صالح. يجب أن تكون بالتنسيق [DD] " "[[HH:]MM:]ss[.uuuuuu]." @@ -2773,8 +2801,8 @@ msgid "" "“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " "format." msgstr "" -"القيمة “%(value)s” تحتوي على تنسيق غير صالح. يجب أن تكون بالتنسيق HH:MM[:ss[." -"uuuuuu]]." +"القيمة “%(value)s” تحتوي على تنسيق غير صالح. يجب أن تكون بالتنسيق " +"HH:MM[:ss[.uuuuuu]]." #: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2525 #, python-format @@ -3542,8 +3570,8 @@ msgstr "لا توجد %(verbose_name_plural)s متاحة" #: venv/lib/python3.11/site-packages/django/views/generic/dates.py:652 #, python-format msgid "" -"Future %(verbose_name_plural)s not available because %(class_name)s." -"allow_future is False." +"Future %(verbose_name_plural)s not available because " +"%(class_name)s.allow_future is False." msgstr "" "%(verbose_name_plural)s المستقبلية غير متاحة لأن %(class_name)s. الخاصية " "allow_future هي False." @@ -3995,13 +4023,6 @@ msgstr "لا يمكن إنشاء إدخالات يومية جديدة على د msgid "Entity Unit" msgstr "وحدة الكيان" -#: venv/lib/python3.11/site-packages/django_ledger/forms/journal_entry.py:68 -msgid "" -"Invalid timestamp {self.cleaned_data[\"timestamp\"]} due to Closing Entries." -msgstr "" -"الطابع الزمني غير صالح {self.cleaned_data[\"timestamp\"]} بسبب إدخالات " -"الإغلاق." - #: venv/lib/python3.11/site-packages/django_ledger/forms/ledger.py:43 #: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:192 msgid "Ledger External ID" @@ -4039,30 +4060,10 @@ msgstr "يجب أن يتكون اسم الوحدة من 10 أحرف على ال msgid "Must provide all City/State/Zip/Country" msgstr "يجب توفير جميع المعلومات: المدينة/الولاية/الرمز البريدي/الدولة" -#: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:830 -#: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:836 -#, python-brace-format -msgid "" -"Cannot commit transactions. The journal entry date {je_timestamp} is on a " -"closed period." -msgstr "" -"لا يمكن تأكيد المعاملات. تاريخ الإدخال اليومي {je_timestamp} يقع في فترة " -"مغلقة." - #: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:842 msgid "Cannot commit on locked ledger" msgstr "لا يمكن تأكيد المعاملات على دفتر حسابات مقفل" -#: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:878 -msgid "Invalid timestamp type {type(je_timestamp)}" -msgstr "نوع الطابع الزمني غير صالح {type(je_timestamp)}" - -#: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:881 -#, python-brace-format -msgid "Unable to retrieve Journal Entry model with Timestamp {je_timestamp}" -msgstr "" -"غير قادر على استرداد نموذج الإدخال اليومي بالطابع الزمني {je_timestamp}" - #: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:956 #: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:1011 #: venv/lib/python3.11/site-packages/django_ledger/io/io_core.py:1066 @@ -4070,14 +4071,6 @@ msgstr "" msgid "PDF support not enabled. Install PDF support from Pipfile." msgstr "دعم PDF غير ممكّن. قم بتثبيت دعم PDF من Pipfile." -#: venv/lib/python3.11/site-packages/django_ledger/io/io_generator.py:87 -#, python-brace-format -msgid "" -"User {user_model} must have admin privileges for entity model {entity_model}." -msgstr "" -"يجب أن يمتلك المستخدم {user_model} صلاحيات المدير لنموذج الكيان " -"{entity_model}." - #: venv/lib/python3.11/site-packages/django_ledger/io/io_library.py:203 msgid "Ledger Model must be a string or UUID or LedgerModel" msgstr "يجب أن يكون نموذج دفتر الحسابات عبارة عن سلسلة أو UUID أو LedgerModel" @@ -4092,33 +4085,10 @@ msgstr "يجب أن تكون مجموع الأرصدة والخصوم متساو msgid "Transactions already committed" msgstr "المعاملات مؤكدة بالفعل" -#: venv/lib/python3.11/site-packages/django_ledger/io/io_library.py:290 -#, python-brace-format -msgid "Cannot transact on a locked ledger: {ledger_model}" -msgstr "لا يمكن إجراء معاملات على دفتر حسابات مقفل: {ledger_model}" - #: venv/lib/python3.11/site-packages/django_ledger/io/io_library.py:307 msgid "Cannot commit transactions to a non-existing ledger" msgstr "لا يمكن تأكيد المعاملات على دفتر حسابات غير موجود" -#: venv/lib/python3.11/site-packages/django_ledger/io/io_library.py:327 -#, python-brace-format -msgid "Cannot commit transactions to a non-existing ledger_xid {k}" -msgstr "لا يمكن تأكيد المعاملات على دفتر حسابات غير موجود ledger_xid {k}" - -#: venv/lib/python3.11/site-packages/django_ledger/io/io_library.py:335 -#, python-brace-format -msgid "Ledger UUID {k} not found." -msgstr "لم يتم العثور على UUID دفتر الحسابات {k}." - -#: venv/lib/python3.11/site-packages/django_ledger/io/io_library.py:356 -#, python-brace-format -msgid "" -"Account code {tx.account_code} not found. Is account available and not " -"locked?" -msgstr "" -"لم يتم العثور على رمز الحساب {tx.account_code}. هل الحساب متاح وغير مقفل؟" - #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:437 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:523 msgid "Current Asset" @@ -4373,7 +4343,7 @@ msgstr "يجب أن يكون رمز الحساب مزيجاً من الحروف #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:12 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:44 msgid "Credit" -msgstr "ائتمان" +msgstr "دائن" #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:423 #: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:474 @@ -4438,28 +4408,6 @@ msgstr "يجب أن تكون رموز الحساب فريدة لكل نموذج msgid "Only one default account for role permitted." msgstr "يُسمح بحساب افتراضي واحد فقط للدور." -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:745 -msgid "" -"Cannot lock account {self.code}: {self.name}. Active: {self.is_active()}" -msgstr "لا يمكن تنشيط الحساب {self.code}: {self.name}. نشط: {self.is_active()}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:760 -msgid "" -"Cannot unlock account {self.code}: {self.name}. Active: {self.is_active()}" -msgstr "لا يمكن تنشيط الحساب {self.code}: {self.name}. نشط: {self.is_active()}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:788 -msgid "" -"Cannot activate account {self.code}: {self.name}. Active: {self.is_active()}" -msgstr "لا يمكن تنشيط الحساب {self.code}: {self.name}. نشط: {self.is_active()}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:815 -msgid "" -"Cannot deactivate account {self.code}: {self.name}. Active: {self." -"is_active()}" -msgstr "" -"لا يمكن إلغاء تنشيط الحساب {self.code}: {self.name}. نشط: {self.is_active()}" - #: venv/lib/python3.11/site-packages/django_ledger/models/bank_account.py:126 #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:67 #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:378 @@ -4613,11 +4561,6 @@ msgstr "هل تريد إبطال الفاتورة %s؟" msgid "Do you want to mark Bill %s as Canceled?" msgstr "هل تريد وضع الفاتورة %s كملغاة؟" -#: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:1653 -#, python-brace-format -msgid "Bill {self.bill_number} cannot be deleted..." -msgstr "لا يمكن حذف الفاتورة {self.bill_number}..." - #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:69 msgid "Closing Date" msgstr "تاريخ الإغلاق" @@ -4631,55 +4574,31 @@ msgstr "تم النشر" msgid "Only one Closing Entry for Date Allowed." msgstr "مسموح بإدخال إغلاق واحد فقط لكل تاريخ." -#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:193 -#, python-brace-format -msgid "Closing Entry {self.closing_date} is already posted." -msgstr "إدخال الإغلاق {self.closing_date} تم نشره بالفعل." - -#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:212 -#, python-brace-format -msgid "Are you sure you want to post Closing Entry dated {self.closing_date}?" -msgstr "هل أنت متأكد أنك تريد نشر إدخال الإغلاق المؤرخ في {self.closing_date}؟" - -#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:230 -#, python-brace-format -msgid "Closing Entry {self.closing_date} is not posted." -msgstr "إدخال الإغلاق {self.closing_date} لم يتم نشره." - -#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:252 -#, python-brace-format -msgid "" -"Are you sure you want to unpost Closing Entry dated {self.closing_date}?" -msgstr "" -"هل أنت متأكد أنك تريد إلغاء نشر إدخال الإغلاق المؤرخ في {self.closing_date}؟" - #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:270 msgid "Cannot update transactions of a posted Closing Entry." msgstr "لا يمكن تحديث المعاملات لإدخال إغلاق تم نشره." -#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:283 -#, python-brace-format +#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:284 +#, fuzzy +#| msgid "" +#| "Are you sure you want to update all Closing Entry {self.closing_date} " +#| "transactions? This action will delete existing closing entry transactions " +#| "and create new ones." msgid "" -"Are you sure you want to update all Closing Entry {self.closing_date} " -"transactions? This action will delete existing closing entry transactions " -"and create new ones." +"This action will delete existing closing entry transactions and create new " +"ones." msgstr "" -"هل أنت متأكد من أنك تريد تحديث جميع معاملات إدخال الإغلاق {self." -"closing_date}؟ سيؤدي هذا الإجراء إلى حذف معاملات الإغلاق الحالية وإنشاء " -"معاملات جديدة." +"هل أنت متأكد من أنك تريد تحديث جميع معاملات إدخال الإغلاق " +"{self.closing_date}؟ سيؤدي هذا الإجراء إلى حذف معاملات الإغلاق الحالية " +"وإنشاء معاملات جديدة." #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:302 msgid "Cannot delete a posted Closing Entry" msgstr "لا يمكن حذف إدخال إغلاق تم نشره" -#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:314 -#, python-brace-format -msgid "" -"Are you sure you want to delete Closing Entry {self.closing_date}? This " -"action cannot be undone." -msgstr "" -"هل أنت متأكد من أنك تريد حذف إدخال الإغلاق {self.closing_date}؟ لا يمكن " -"التراجع عن هذا الإجراء." +#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:315 +msgid "This action cannot be undone." +msgstr "لا يمكن التراجع عن هذا الإجراء." #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:373 msgid "Account Model" @@ -4729,23 +4648,6 @@ msgstr "وصف قائمة الحسابات" msgid "Chart of Account" msgstr "قائمة الحسابات" -#: venv/lib/python3.11/site-packages/django_ledger/models/coa.py:221 -#, python-brace-format -msgid "" -"The account model {account_model} is not part of the chart of accounts {self." -"name}." -msgstr "نموذج الحساب {account_model} ليس جزءًا من قائمة الحسابات {self.name}." - -#: venv/lib/python3.11/site-packages/django_ledger/models/coa.py:319 -#, python-brace-format -msgid "CoA {self.uuid} already has a slug" -msgstr "قائمة الحسابات {self.uuid} تحتوي بالفعل على معرف" - -#: venv/lib/python3.11/site-packages/django_ledger/models/coa.py:563 -#, python-brace-format -msgid "The Chart of Accounts {self.slug} is already default" -msgstr "قائمة الحسابات {self.slug} هي بالفعل القائمة الافتراضية" - #: venv/lib/python3.11/site-packages/django_ledger/models/coa.py:613 msgid "The Chart of Accounts is currently active." msgstr "قائمة الحسابات نشطة حاليًا." @@ -4783,11 +4685,6 @@ msgstr "اكتمل استيراد المهمة" msgid "Import Job Model" msgstr "نموذج مهمة الاستيراد" -#: venv/lib/python3.11/site-packages/django_ledger/models/data_import.py:102 -#, python-brace-format -msgid "Are you sure you want to delete Import Job {self.description}?" -msgstr "هل أنت متأكد أنك تريد حذف مهمة الاستيراد {self.description}؟" - #: venv/lib/python3.11/site-packages/django_ledger/models/data_import.py:207 msgid "Parent Transaction" msgstr "المعاملة الأصلية" @@ -4813,34 +4710,11 @@ msgstr "نموذج وحدة الكيان" msgid "Staged Transaction Model" msgstr "نموذج المعاملة المتدرجة" -#: venv/lib/python3.11/site-packages/django_ledger/models/data_import.py:385 -#, python-brace-format -msgid "Staged Transaction {self.uuid} already split." -msgstr "المعاملة المتدرجة {self.uuid} تم تقسيمها بالفعل." - #: venv/lib/python3.11/site-packages/django_ledger/models/data_import.py:510 msgid "Invalid Bank Account for LedgerModel. No matching Entity Model found." msgstr "" "حساب مصرفي غير صالح لنموذج دفتر الحسابات. لم يتم العثور على نموذج كيان مطابق." -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:435 -#, python-brace-format -msgid "" -"The Closing Entry Model {closing_entry_model} does not belong to Entity " -"{self.name}" -msgstr "" -"نموذج إدخال الإغلاق {closing_entry_model} لا ينتمي إلى الكيان {self.name}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:439 -#, python-brace-format -msgid "The Closing Entry Model date {closing_entry_model.closing_date} " -msgstr "تاريخ نموذج إدخال الإغلاق {closing_entry_model.closing_date} " - -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:538 -#, python-brace-format -msgid "Cannot create closing entry with a future date {closing_date}." -msgstr "لا يمكن إنشاء إدخال إغلاق بتاريخ مستقبلي {closing_date}." - #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:769 msgid "Default Chart of Accounts" msgstr "قائمة الحسابات الافتراضية" @@ -4879,26 +4753,10 @@ msgstr "الكيان الأصلي غير صالح." msgid "Only slug, UUID or EntityModel allowed." msgstr "مسموح فقط بالمعرف، UUID أو نموذج الكيان." -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:962 -#, python-brace-format -msgid "" -"Cannot replace existing slug {self.slug}. Use force_update=True if needed." -msgstr "" -"لا يمكن استبدال المعرف الحالي {self.slug}. استخدم force_update=True إذا لزم " -"الأمر." - #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:1361 msgid "No default_coa found." msgstr "لم يتم العثور على قائمة حسابات افتراضية." -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:2022 -#, python-brace-format -msgid "" -"Invalid Account Type: choices are {BankAccountModel.VALID_ACCOUNT_TYPES}" -msgstr "" -"نوع الحساب غير صالح: الخيارات المتاحة هي {BankAccountModel." -"VALID_ACCOUNT_TYPES}" - #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:2815 msgid "" "Closing books must be called by providing closing_date or " @@ -5171,11 +5029,6 @@ msgstr "هل تريد إبطال الفاتورة %s؟" msgid "Do you want to mark Invoice %s as Canceled?" msgstr "هل تريد إلغاء الفاتورة %s؟" -#: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:1556 -#, python-brace-format -msgid "Invoice {self.invoice_number} cannot be deleted..." -msgstr "لا يمكن حذف الفاتورة {self.invoice_number}..." - #: venv/lib/python3.11/site-packages/django_ledger/models/items.py:126 msgid "Unit of Measure Name" msgstr "اسم وحدة القياس" @@ -5522,27 +5375,6 @@ msgstr "إدخالات دفتر اليومية" msgid "Cannot post an empty Journal Entry." msgstr "لا يمكن نشر إدخال دفتر يومية فارغ." -#: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:1215 -#, python-brace-format -msgid "" -"Are you sure you want to delete JournalEntry Model {self.je_number} on " -"Ledger {self.ledger.name}?" -msgstr "" -"هل أنت متأكد أنك تريد حذف نموذج إدخال الدفتر {self.je_number} على دفتر " -"الأستاذ {self.ledger.name}؟" - -#: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:1220 -#, python-brace-format -msgid "JournalEntryModel {self.uuid} cannot be deleted..." -msgstr "لا يمكن حذف نموذج إدخال الدفتر {self.uuid}..." - -#: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:1357 -#, python-brace-format -msgid "Cannot add Journal Entries to locked LedgerModel {instance.ledger_id}" -msgstr "" -"لا يمكن إضافة إدخالات دفتر اليومية إلى دفتر الأستاذ المقفل {instance." -"ledger_id}" - #: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:193 msgid "User Defined Ledger ID" msgstr "معرف دفتر الأستاذ المعرّف بواسطة المستخدم" @@ -5572,64 +5404,6 @@ msgstr "دفتر الأستاذ المخفي" msgid "Ledgers" msgstr "دفاتر الأستاذ" -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:268 -#, python-brace-format -msgid "earliest_timestamp not present in LedgerModel {self.uuid}" -msgstr "أول طابع زمني غير موجود في نموذج دفتر الأستاذ {self.uuid}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:455 -#, python-brace-format -msgid "Ledger {self.name} cannot be posted. UUID: {self.uuid}" -msgstr "لا يمكن نشر دفتر الأستاذ {self.name}. UUID: {self.uuid}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:491 -#, python-brace-format -msgid "Ledger {self.uuid} cannot be unposted." -msgstr "لا يمكن إلغاء نشر دفتر الأستاذ {self.uuid}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:520 -#, python-brace-format -msgid "Ledger {self.name} cannot be locked. UUID: {self.uuid}" -msgstr "لا يمكن قفل دفتر الأستاذ {self.name}. UUID: {self.uuid}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:554 -#, python-brace-format -msgid "Ledger {self.name} cannot be un-locked. UUID: {self.uuid}" -msgstr "لا يمكن إلغاء قفل دفتر الأستاذ {self.name}. UUID: {self.uuid}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:573 -#, python-brace-format -msgid "Ledger {self.name} cannot be hidden. UUID: {self.uuid}" -msgstr "لا يمكن إخفاء دفتر الأستاذ {self.name}. UUID: {self.uuid}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:591 -#, python-brace-format -msgid "Ledger {self.name} cannot be un-hidden. UUID: {self.uuid}" -msgstr "لا يمكن إلغاء إخفاء دفتر الأستاذ {self.name}. UUID: {self.uuid}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:608 -msgid "" -"LedgerModel {self.name} cannot be deleted because posted is {self." -"is_posted()} " -msgstr "" -"لا يمكن حذف نموذج دفتر الأستاذ {self.name} لأن الحالة المنشورة هي {self." -"is_posted()}" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:620 -#, python-brace-format -msgid "" -"Journal Entries with date {earliest_date} cannot be deleted because of " -"latest closing " -msgstr "لا يمكن حذف إدخالات الدفتر بتاريخ {earliest_date} بسبب الإغلاق الأخير" - -#: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:721 -msgid "" -"Are you sure you want to delete Ledger {self.name} from Entity {self." -"get_entity_name()}?" -msgstr "" -"هل أنت متأكد أنك تريد حذف دفتر الأستاذ {self.name} من الكيان {self." -"get_entity_name()}؟" - #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:48 msgid "Slug field must contain at least 10 characters." msgstr "يجب أن يحتوي حقل المعرف الفريد على 10 أحرف على الأقل." @@ -5838,12 +5612,6 @@ msgstr "المعاملات" msgid "Cannot transact on root accounts" msgstr "لا يمكن إجراء المعاملات على الحسابات الجذرية" -#: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:563 -#, python-brace-format -msgid "" -"Cannot create or modify transactions on account model {instance.account}." -msgstr "لا يمكن إنشاء أو تعديل المعاملات على نموذج الحساب {instance.account}." - #: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:568 msgid "Cannot modify transactions on locked journal entries." msgstr "لا يمكن تعديل المعاملات على إدخالات دفتر اليومية المقفلة." @@ -6436,10 +6204,6 @@ msgstr "طلب ميزة جديدة" msgid "Mark As Paid" msgstr "وضع كمدفوع" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/modals_v2.html:11 -msgid "Confirm" -msgstr "تأكيد" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:26 msgid "Month" msgstr "الشهر" @@ -6641,11 +6405,6 @@ msgstr "تقدم الفاتورة" msgid "Received Progress" msgstr "تقدم الاستلام" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:80 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:161 -msgid "Approve" -msgstr "الموافقة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_item_table.html:12 msgid "Unit Sale Price" msgstr "سعر البيع للوحدة" @@ -7232,11 +6991,6 @@ msgstr "حسابات الكيان" msgid "Update Account" msgstr "تحديث الحساب" -#: venv/lib/python3.11/site-packages/django_ledger/views/account.py:132 -#, python-brace-format -msgid "Update Account: {self.object.code} - {self.object.name}" -msgstr "تحديث الحساب: {self.object.code} - {self.object.name}" - #: venv/lib/python3.11/site-packages/django_ledger/views/bank_account.py:33 msgid "Bank Accounts" msgstr "الحسابات المصرفية" @@ -7283,31 +7037,18 @@ msgstr "إنشاء مهمة استيراد" msgid "Multiple statements detected. Multiple account import is not supported." msgstr "تم اكتشاف بيانات متعددة. استيراد حسابات متعددة غير مدعوم." -#: venv/lib/python3.11/site-packages/django_ledger/views/data_import.py:92 -msgid "" -"Account Number ***{ofx_account_number[-4:]} not recognized. Please " -"{create_link} Bank Account model before importing transactions" -msgstr "" -"رقم الحساب ***{ofx_account_number[-4:]} غير معروف. يرجى {create_link} نموذج " -"حساب بنكي قبل استيراد المعاملات" +#: venv/lib/python3.11/site-packages/django_ledger/views/data_import.py:93 +msgid "Account model before importing transactions" +msgstr "نموذج الحساب قبل استيراد المعاملات" -#: venv/lib/python3.11/site-packages/django_ledger/views/data_import.py:111 -msgid "" -"Account Number ***{ofx_account_number[-4:]} not active. Please " -"{activate_link} before importing new transactions" -msgstr "" -"رقم الحساب ***{ofx_account_number[-4:]} غير نشط. يرجى {activate_link} قبل " -"استيراد المعاملات الجديدة" +#: venv/lib/python3.11/site-packages/django_ledger/views/data_import.py:112 +msgid " before importing new transactions" +msgstr "قبل استيراد المعاملات الجديدة" #: venv/lib/python3.11/site-packages/django_ledger/views/data_import.py:141 msgid "Data Import Jobs" msgstr "مهام استيراد البيانات" -#: venv/lib/python3.11/site-packages/django_ledger/views/data_import.py:177 -#, python-brace-format -msgid "Successfully updated Import Job {self.object.description}" -msgstr "تم تحديث مهمة الاستيراد {self.object.description} بنجاح" - #: venv/lib/python3.11/site-packages/django_ledger/views/data_import.py:207 msgid "Import Job Staged Txs" msgstr "معاملات مهام الاستيراد المسرّحة" @@ -7375,20 +7116,6 @@ msgstr "وحدات القياس" msgid "Create Unit of Measure" msgstr "إنشاء وحدة قياس" -#: venv/lib/python3.11/site-packages/django_ledger/views/item.py:85 -#, python-brace-format -msgid "User {self.request.user.username} cannot access entity {entity_slug}." -msgstr "" -"المستخدم {self.request.user.username} لا يمكنه الوصول إلى الكيان " -"{entity_slug}." - -#: venv/lib/python3.11/site-packages/django_ledger/views/item.py:95 -#, python-brace-format -msgid "" -"The Unit of Measure {unit_abbr} already created for Entity {entity_model." -"name}." -msgstr "وحدة القياس {unit_abbr} تم إنشاؤها بالفعل للكيان {entity_model.name}." - #: venv/lib/python3.11/site-packages/django_ledger/views/item.py:103 msgid "Update Unit of Measure" msgstr "تحديث وحدة القياس" @@ -7489,26 +7216,10 @@ msgstr "بيان التدفق النقدي لدفتر الأستاذ:" msgid "Invalid quarter number" msgstr "رقم ربع غير صالح" -#: venv/lib/python3.11/site-packages/django_ledger/views/mixins.py:94 -#, python-brace-format -msgid "Invalid quarter format. Cannot parse {quarter} into integer." -msgstr "تنسيق ربع غير صالح. لا يمكن تحليل {quarter} إلى عدد صحيح." - #: venv/lib/python3.11/site-packages/django_ledger/views/mixins.py:106 msgid "No quarter specified" msgstr "لم يتم تحديد ربع" -#: venv/lib/python3.11/site-packages/django_ledger/views/mixins.py:277 -#: venv/lib/python3.11/site-packages/django_ledger/views/mixins.py:285 -#, python-brace-format -msgid "Must provide {query_param} date parameter." -msgstr "يجب تقديم معامل التاريخ {query_param}." - -#: venv/lib/python3.11/site-packages/django_ledger/views/mixins.py:298 -#, python-brace-format -msgid "Invalid {query_param} {param_date} provided" -msgstr "تم تقديم {query_param} {param_date} غير صالح" - #: venv/lib/python3.11/site-packages/django_ledger/views/mixins.py:330 msgid "ENTITY_SLUG_URL_KWARG must be provided." msgstr "يجب توفير ENTITY_SLUG_URL_KWARG." diff --git a/templates/sales/quotation_detail.html b/templates/sales/quotation_detail.html index 0cf54d37..0be85aa8 100644 --- a/templates/sales/quotation_detail.html +++ b/templates/sales/quotation_detail.html @@ -74,7 +74,7 @@ {% trans "Year" %} {% trans "Quantity" %} {% trans "Price" %} - {% trans "VAT %" %} + {% trans "VAT" %} {% trans "Total" %}