diff --git a/car_inventory/__pycache__/settings.cpython-311.pyc b/car_inventory/__pycache__/settings.cpython-311.pyc index 88b24ad3..638743e0 100644 Binary files a/car_inventory/__pycache__/settings.cpython-311.pyc and b/car_inventory/__pycache__/settings.cpython-311.pyc differ diff --git a/inventory/.DS_Store b/inventory/.DS_Store index e1c51f43..a05c7334 100644 Binary files a/inventory/.DS_Store and b/inventory/.DS_Store differ diff --git a/inventory/__pycache__/context_processors.cpython-311.pyc b/inventory/__pycache__/context_processors.cpython-311.pyc index 6a448931..95a0b392 100644 Binary files a/inventory/__pycache__/context_processors.cpython-311.pyc and b/inventory/__pycache__/context_processors.cpython-311.pyc differ diff --git a/inventory/__pycache__/forms.cpython-311.pyc b/inventory/__pycache__/forms.cpython-311.pyc index b0a88642..38fc0801 100644 Binary files a/inventory/__pycache__/forms.cpython-311.pyc and b/inventory/__pycache__/forms.cpython-311.pyc differ diff --git a/inventory/__pycache__/models.cpython-311.pyc b/inventory/__pycache__/models.cpython-311.pyc index 17bf4605..d9ef3c61 100644 Binary files a/inventory/__pycache__/models.cpython-311.pyc and b/inventory/__pycache__/models.cpython-311.pyc differ diff --git a/inventory/__pycache__/urls.cpython-311.pyc b/inventory/__pycache__/urls.cpython-311.pyc index 4b78d024..9e152eda 100644 Binary files a/inventory/__pycache__/urls.cpython-311.pyc and b/inventory/__pycache__/urls.cpython-311.pyc differ diff --git a/inventory/__pycache__/views.cpython-311.pyc b/inventory/__pycache__/views.cpython-311.pyc index 845275c1..2378a4e2 100644 Binary files a/inventory/__pycache__/views.cpython-311.pyc and b/inventory/__pycache__/views.cpython-311.pyc differ diff --git a/inventory/context_processors.py b/inventory/context_processors.py index 34579a3d..5c6a34a5 100644 --- a/inventory/context_processors.py +++ b/inventory/context_processors.py @@ -1,3 +1,9 @@ +from django.conf import settings + +def currency_context(request): + return { + 'CURRENCY': settings.CURRENCY + } def breadcrumbs(request): diff --git a/inventory/forms.py b/inventory/forms.py index 5a57f0f9..7b1f28de 100644 --- a/inventory/forms.py +++ b/inventory/forms.py @@ -297,7 +297,12 @@ class CustomCardForm(forms.ModelForm): class CarRegistrationForm(forms.ModelForm): class Meta: model = CarRegistration - fields = ["car", "plate_number", "text1", "text2", "text3", "registration_date"] + fields = ["plate_number", "text1", "text2", "text3", "registration_date"] + + widgets = { + 'registration_date': forms.DateTimeInput(attrs={'type': 'datetime-local'}), + } + # class VendorForm(VendorModelForm): diff --git a/inventory/migrations/0002_alter_carregistration_car.py b/inventory/migrations/0002_alter_carregistration_car.py new file mode 100644 index 00000000..fc0584b0 --- /dev/null +++ b/inventory/migrations/0002_alter_carregistration_car.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1.5 on 2025-02-04 04:37 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='carregistration', + name='car', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='registrations', to='inventory.car', verbose_name='Car'), + ), + ] diff --git a/inventory/models.py b/inventory/models.py index 4040c66e..3593403d 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -689,7 +689,7 @@ class CarLocation(models.Model): class CarRegistration(models.Model): - car = models.ForeignKey( + car = models.OneToOneField( Car, on_delete=models.CASCADE, related_name="registrations", @@ -697,8 +697,8 @@ class CarRegistration(models.Model): ) plate_number = models.IntegerField(verbose_name=_("Plate Number")) text1 = models.CharField(max_length=1, verbose_name=_("Text 1")) - text2 = models.CharField(max_length=1, verbose_name=_("Text 2")) - text3 = models.CharField(max_length=1, verbose_name=_("Text 3")) + text2 = models.CharField(max_length=1, verbose_name=_("Text 2"), null=True, blank=True) + text3 = models.CharField(max_length=1, verbose_name=_("Text 3"), null=True, blank=True) registration_date = models.DateTimeField(verbose_name=_("Registration Date")) class Meta: @@ -706,7 +706,7 @@ class CarRegistration(models.Model): verbose_name_plural = _("Registrations") def __str__(self): - return f"{self.plate_number} - {self.text1} {self.text2} {self.text3}" + return f"{self.plate_number}" # TimestampedModel Abstract Class diff --git a/inventory/templatetags/.DS_Store b/inventory/templatetags/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/inventory/templatetags/.DS_Store differ diff --git a/inventory/templatetags/__init__.py b/inventory/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/inventory/templatetags/__pycache__/custom_filters.cpython-311.pyc b/inventory/templatetags/__pycache__/custom_filters.cpython-311.pyc index 7fa13f1c..3b76d055 100644 Binary files a/inventory/templatetags/__pycache__/custom_filters.cpython-311.pyc and b/inventory/templatetags/__pycache__/custom_filters.cpython-311.pyc differ diff --git a/inventory/templatetags/custom_filters.py b/inventory/templatetags/custom_filters.py index 721307ab..9629cb29 100644 --- a/inventory/templatetags/custom_filters.py +++ b/inventory/templatetags/custom_filters.py @@ -3,6 +3,8 @@ from django import template from calendar import month_abbr from django.urls import reverse from django_ledger.io.io_core import get_localdate,validate_activity +from django.conf import settings +from django.utils.translation import get_language register = template.Library() @@ -230,3 +232,97 @@ def date_picker(context, nav_url=None, date_picker_id=None): 'date_picker_id': date_picker_id, 'date_navigation_url': date_navigation_url } + +@register.simple_tag(name='get_currency') +def get_currency(): + return settings.CURRENCY + + + + +@register.simple_tag(name='num2words', takes_context=True) +def number_to_words_english(number): + """Convert a number to words in English.""" + units = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] + teens = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", + "seventeen", "eighteen", "nineteen"] + tens = ["", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", + "eighty", "ninety"] + scales = ["", "thousand", "million", "billion", "trillion"] + + if number == 0: + return "zero" + + words = [] + scale_index = 0 + + while number > 0: + chunk = number % 1000 + if chunk != 0: + chunk_words = [] + if chunk // 100 > 0: + chunk_words.append(units[chunk // 100]) + chunk_words.append("hundred") + if chunk % 100 >= 20: + chunk_words.append(tens[(chunk % 100) // 10]) + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + elif 10 <= chunk % 100 < 20: + chunk_words.append(teens[chunk % 100 - 10]) + else: + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + if scale_index > 0: + chunk_words.append(scales[scale_index]) + words = chunk_words + words + number = number // 1000 + scale_index += 1 + + return ' '.join(words) + +def number_to_words_arabic(number): + """Convert a number to words in Arabic.""" + units = ["", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة"] + teens = ["عشرة", "أحد عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر", + "ستة عشر", "سبعة عشر", "ثمانية عشر", "تسعة عشر"] + tens = ["", "عشرة", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", + "ثمانون", "تسعون"] + scales = ["", "ألف", "مليون", "مليار", "تريليون"] + + if number == 0: + return "صفر" + + words = [] + scale_index = 0 + + while number > 0: + chunk = number % 1000 + if chunk != 0: + chunk_words = [] + if chunk // 100 > 0: + chunk_words.append(units[chunk // 100]) + chunk_words.append("مائة") + if chunk % 100 >= 20: + chunk_words.append(tens[(chunk % 100) // 10]) + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + elif 10 <= chunk % 100 < 20: + chunk_words.append(teens[chunk % 100 - 10]) + else: + if chunk % 10 > 0: + chunk_words.append(units[chunk % 10]) + if scale_index > 0: + chunk_words.append(scales[scale_index]) + words = chunk_words + words + number = number // 1000 + scale_index += 1 + + return ' '.join(words) + +@register.filter(name='num2words') +def num2words(number, language='en'): + """Template filter to convert a number to words in the specified language.""" + if language == 'ar': + return number_to_words_arabic(number) + else: + return number_to_words_english(number) \ No newline at end of file diff --git a/inventory/templatetags/num2words_tags.py b/inventory/templatetags/num2words_tags.py new file mode 100644 index 00000000..6cf589fa --- /dev/null +++ b/inventory/templatetags/num2words_tags.py @@ -0,0 +1,11 @@ +from django import template +from num2words import num2words + +register = template.Library() + +@register.filter +def num_to_words(value, lang='en'): + try: + return num2words(value, lang=lang) + except: + return value \ No newline at end of file diff --git a/inventory/urls.py b/inventory/urls.py index d1590793..b75f59bb 100644 --- a/inventory/urls.py +++ b/inventory/urls.py @@ -195,7 +195,7 @@ urlpatterns = [ ), path( "cars//location/detail/", - views.CarTransferDetailView, + views.CarTransferDetailView.as_view(), name="transfer_detail", ), path( @@ -213,9 +213,13 @@ urlpatterns = [ views.CarTransferPreviewView, name="transfer_preview", ), - path("cars/inventory/search/", views.SearchCodeView.as_view(), name="car_search"), + path("cars/inventory/search/", + views.SearchCodeView.as_view(), + name="car_search"), # path('cars//colors//update/',views.CarColorUpdateView.as_view(),name='color_update'), - path("cars/reserve//", views.reserve_car_view, name="reserve_car"), + path("cars/reserve//", + views.reserve_car_view, + name="reserve_car"), path( "reservations//", views.manage_reservation, @@ -226,6 +230,10 @@ urlpatterns = [ views.CustomCardCreateView.as_view(), name="add_custom_card", ), + path('cars//add-registration/', + views.CarRegistrationCreateView.as_view(), + name='add_registration'), + # Sales URLs quotation_create # path( # "sales/quotations/create/", diff --git a/inventory/utilities/sa.py b/inventory/utilities/sa.py index fa34307a..de5cc29f 100644 --- a/inventory/utilities/sa.py +++ b/inventory/utilities/sa.py @@ -1,5 +1,8 @@ -from plans.taxation import TaxationPolicy +from decimal import Decimal + from django.conf import settings +from plans.taxation import TaxationPolicy + class SaudiTaxationPolicy(TaxationPolicy): @@ -10,5 +13,5 @@ class SaudiTaxationPolicy(TaxationPolicy): return getattr(settings, 'PLANS_TAX_COUNTRY', None) def get_tax_rate(self, tax_id, country_code, request=None): - - return 0, True \ No newline at end of file + rate = Decimal("15") + return rate \ No newline at end of file diff --git a/inventory/views.py b/inventory/views.py index 4ce3cca4..29882356 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -319,14 +319,14 @@ class AccountingDashboard(LoginRequiredMixin, TemplateView): class WelcomeView(TemplateView): - template_name = "welcome.html" + template_name = "login_test.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) dealer = get_user_type(self.request) - plans = Plan.objects.all() + plan_list = Plan.objects.all() # pricing = PlanPricing.objects.filter(plan=plan). - context["plans"] = plans + context["plan_list"] = plan_list return context @@ -862,10 +862,15 @@ class CarTransferCreateView(CreateView): 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) +# def CarTransferDetailView(request, pk): +# transfer = get_object_or_404(models.CarTransfer, pk=pk) +# context = {"transfer": transfer} +# return render(request, "inventory/transfer_details.html", context) +class CarTransferDetailView(LoginRequiredMixin, SuccessMessageMixin, DetailView): + model = models.CarTransfer + template_name = "inventory/transfer_details.html" + context_object_name = "transfer" + def car_transfer_approve(request, car_pk, transfer_pk): @@ -994,6 +999,26 @@ class CustomCardCreateView(LoginRequiredMixin, CreateView): return reverse_lazy("car_detail", kwargs={"pk": self.kwargs["car_pk"]}) +class CarRegistrationCreateView(LoginRequiredMixin, CreateView): + model = models.CarRegistration + form_class = forms.CarRegistrationForm + template_name = 'inventory/car_registration_form.html' + + def form_valid(self, form): + car = get_object_or_404(models.Car, pk=self.kwargs["car_pk"]) + form.instance.car = car + return super().form_valid(form) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["car"] = get_object_or_404(models.Car, pk=self.kwargs["car_pk"]) + return context + + def get_success_url(self): + messages.success(self.request, _("Registration added successfully.")) + return reverse_lazy("car_detail", kwargs={"pk": self.kwargs["car_pk"]}) + + @login_required() def reserve_car_view(request, car_id): if request.method == "POST": diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 403845f3..5e7daf72 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 695a1147..f7ea1f67 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -3,12 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # +#: templates/ledger/reports/tags/balance_sheet_statement.html:20 +#: templates/ledger/reports/tags/income_statement.html:15 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-02 17:09+0300\n" +"POT-Creation-Date: 2025-02-04 13:35+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,25 +21,17 @@ 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:330 +#: api/models.py:6 inventory/models.py:343 #: templates/inventory/car_detail.html:19 templates/inventory/car_form.html:35 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:31 #: templates/inventory/car_inventory.html:53 #: templates/inventory/car_list.html:67 templates/inventory/car_list.html:69 +#: templates/inventory/transfer_details.html:69 #: templates/sales/estimates/sale_order_preview.html:238 msgid "VIN" msgstr "رقم الهيكل" -#: car_inventory/settings.py:244 -#: venv/lib/python3.11/site-packages/appointments/settings.py:132 -msgid "English" -msgstr "الإنجليزية" - -#: car_inventory/settings.py:245 -msgid "Arabic" -msgstr "العربية" - -#: car_inventory/settings.py:304 +#: car_inventory/settings.py:159 car_inventory/settings.py:306 #: templates/crm/opportunities/opportunity_detail.html:35 #: templates/dashboards/accounting.html:35 #: templates/dashboards/accounting.html:39 @@ -56,68 +50,77 @@ msgstr "العربية" msgid "SAR" msgstr "ريال" -#: car_inventory/settings.py:325 templates/header.html:305 +#: car_inventory/settings.py:246 +#: venv/lib/python3.11/site-packages/appointments/settings.py:132 +msgid "English" +msgstr "الإنجليزية" + +#: car_inventory/settings.py:247 +msgid "Arabic" +msgstr "العربية" + +#: car_inventory/settings.py:328 templates/header.html:323 #: templates/welcome.html:57 msgid "Haikal" msgstr "هيكل" -#: inventory/forms.py:288 inventory/models.py:628 +#: inventory/forms.py:288 inventory/models.py:640 #: templates/inventory/car_detail.html:82 msgid "Custom Date" msgstr "تاريخ البطاقة الجمركية" -#: inventory/forms.py:354 +#: inventory/forms.py:359 msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/forms.py:425 inventory/models.py:1062 inventory/models.py:1277 +#: inventory/forms.py:430 inventory/models.py:1074 inventory/models.py:1289 #: templates/account/email_change.html:5 templates/account/email_change.html:9 msgid "Email Address" msgstr "عنوان البريد الإلكتروني" -#: inventory/forms.py:429 +#: inventory/forms.py:434 #: venv/lib/python3.11/site-packages/appointment/views.py:426 #: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1915 msgid "Email address" msgstr "عنوان البريد الإلكتروني" -#: inventory/forms.py:430 templates/crm/leads/lead_list.html:50 +#: inventory/forms.py:435 templates/crm/leads/lead_list.html:50 #: templates/customers/customer_list.html:45 #: templates/vendors/vendors_list.html:49 msgid "email" msgstr "البريد الإلكتروني" -#: inventory/forms.py:435 +#: inventory/forms.py:440 msgid "You must add an email." msgstr "يجب إضافة بريد إلكتروني." -#: inventory/forms.py:440 inventory/forms.py:444 +#: inventory/forms.py:445 inventory/forms.py:449 #: templates/account/login.html:35 templates/account/login.html:37 #: venv/lib/python3.11/site-packages/django_ledger/forms/auth.py:15 msgid "Password" msgstr "كلمة المرور" -#: inventory/forms.py:449 inventory/forms.py:463 inventory/forms.py:523 -#: inventory/forms.py:543 inventory/forms.py:561 inventory/forms.py:576 +#: inventory/forms.py:454 inventory/forms.py:468 inventory/forms.py:528 +#: inventory/forms.py:548 inventory/forms.py:566 inventory/forms.py:581 #: venv/lib/python3.11/site-packages/django/forms/fields.py:95 msgid "This field is required." msgstr "هذا الحقل مطلوب." -#: inventory/forms.py:454 inventory/forms.py:458 +#: inventory/forms.py:459 inventory/forms.py:463 msgid "Confirm Password" msgstr "تأكيد كلمة المرور" -#: inventory/forms.py:468 +#: inventory/forms.py:473 msgid "I accept the Terms and Privacy Policy" msgstr "أوافق على الشروط وسياسة الخصوصية" -#: inventory/forms.py:476 +#: inventory/forms.py:481 msgid "You must accept the terms and privacy policy." msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." -#: inventory/forms.py:483 inventory/models.py:298 inventory/models.py:577 -#: inventory/models.py:590 inventory/models.py:886 inventory/models.py:1028 -#: inventory/models.py:1056 templates/administration/service_list.html:22 +#: inventory/forms.py:488 inventory/models.py:299 inventory/models.py:589 +#: inventory/models.py:602 inventory/models.py:898 inventory/models.py:1040 +#: inventory/models.py:1068 templates/administration/service_list.html:22 #: templates/administration/staff_list.html:38 #: templates/administration/user_profile.html:234 #: templates/crm/leads/lead_list.html:43 @@ -138,28 +141,28 @@ msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." msgid "Name" msgstr "الاسم" -#: inventory/forms.py:487 inventory/models.py:804 inventory/models.py:1274 +#: inventory/forms.py:492 inventory/models.py:816 inventory/models.py:1286 msgid "English Name" msgstr "الاسم بالإنجليزية" -#: inventory/forms.py:492 +#: inventory/forms.py:497 msgid "Please enter an English Name." msgstr "يرجى إدخال اسم باللغة الإنجليزية." -#: inventory/forms.py:497 inventory/forms.py:501 inventory/models.py:299 -#: inventory/models.py:578 inventory/models.py:591 inventory/models.py:803 -#: inventory/models.py:887 inventory/models.py:1029 inventory/models.py:1057 -#: inventory/models.py:1273 templates/users/user_detail.html:48 +#: inventory/forms.py:502 inventory/forms.py:506 inventory/models.py:300 +#: inventory/models.py:590 inventory/models.py:603 inventory/models.py:815 +#: inventory/models.py:899 inventory/models.py:1041 inventory/models.py:1069 +#: inventory/models.py:1285 templates/users/user_detail.html:48 msgid "Arabic Name" msgstr "الاسم بالعربية" -#: inventory/forms.py:506 +#: inventory/forms.py:511 msgid "Please enter an Arabic name." msgstr "يرجى إدخال اسم باللغة العربية." -#: inventory/forms.py:511 inventory/models.py:805 inventory/models.py:888 -#: inventory/models.py:1003 inventory/models.py:1034 inventory/models.py:1061 -#: inventory/models.py:1276 templates/administration/staff_index.html:369 +#: inventory/forms.py:516 inventory/models.py:817 inventory/models.py:900 +#: inventory/models.py:1015 inventory/models.py:1046 inventory/models.py:1073 +#: inventory/models.py:1288 templates/administration/staff_index.html:369 #: templates/crm/leads/lead_list.html:56 #: templates/crm/opportunities/opportunity_detail.html:217 #: templates/customers/customer_list.html:50 @@ -170,7 +173,7 @@ msgstr "يرجى إدخال اسم باللغة العربية." msgid "Phone Number" msgstr "رقم الهاتف" -#: inventory/forms.py:517 templates/administration/display_appointment.html:49 +#: inventory/forms.py:522 templates/administration/display_appointment.html:49 #: templates/appointment/appointment_client_information.html:62 #: templates/crm/leads/lead_detail.html:80 #: templates/dealers/dealer_detail.html:99 @@ -184,36 +187,36 @@ msgstr "رقم الهاتف" msgid "Phone" msgstr "الهاتف" -#: inventory/forms.py:524 +#: inventory/forms.py:529 msgid "Phone number must be in the format 05xxxxxxxx" msgstr "يجب أن يكون رقم الهاتف بالصيغة 05xxxxxxxx" -#: inventory/forms.py:532 templates/organizations/organization_detail.html:8 +#: inventory/forms.py:537 templates/organizations/organization_detail.html:8 #: templates/organizations/organization_list.html:49 msgid "CRN" msgstr "رقم السجل التجاري" -#: inventory/forms.py:536 inventory/models.py:796 inventory/models.py:1031 -#: inventory/models.py:1268 +#: inventory/forms.py:541 inventory/models.py:808 inventory/models.py:1043 +#: inventory/models.py:1280 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" -#: inventory/forms.py:550 templates/organizations/organization_detail.html:9 +#: inventory/forms.py:555 templates/organizations/organization_detail.html:9 #: templates/organizations/organization_list.html:54 msgid "VRN" msgstr "الرقم الضريبي" -#: inventory/forms.py:554 inventory/models.py:801 inventory/models.py:1033 -#: inventory/models.py:1271 +#: inventory/forms.py:559 inventory/models.py:813 inventory/models.py:1045 +#: inventory/models.py:1283 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" -#: inventory/forms.py:562 +#: inventory/forms.py:567 msgid "VAT Registration Number must be 15 characters." msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا من 15 حرفًا." -#: inventory/forms.py:567 inventory/models.py:807 inventory/models.py:1006 -#: inventory/models.py:1036 inventory/models.py:1064 inventory/models.py:1279 +#: inventory/forms.py:572 inventory/models.py:819 inventory/models.py:1018 +#: inventory/models.py:1048 inventory/models.py:1076 inventory/models.py:1291 #: templates/crm/leads/lead_detail.html:109 #: templates/customers/customer_list.html:60 #: templates/customers/view_customer.html:100 @@ -227,89 +230,90 @@ msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا msgid "Address" msgstr "العنوان" -#: inventory/forms.py:612 inventory/models.py:1477 +#: inventory/forms.py:617 inventory/models.py:1489 msgid "cash" msgstr "نقداً" -#: inventory/forms.py:613 inventory/models.py:1478 +#: inventory/forms.py:618 inventory/models.py:1490 msgid "credit" msgstr "دائن" -#: inventory/forms.py:614 inventory/models.py:1479 -#: templates/inventory/car_detail.html:102 +#: inventory/forms.py:619 inventory/models.py:1491 +#: templates/inventory/car_detail.html:124 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" -#: inventory/forms.py:615 inventory/models.py:1480 +#: inventory/forms.py:620 inventory/models.py:1492 msgid "debit" msgstr "مدين" -#: inventory/forms.py:616 inventory/models.py:1481 +#: inventory/forms.py:621 inventory/models.py:1493 msgid "SADAD" msgstr "سداد" -#: inventory/models.py:117 inventory/models.py:393 inventory/models.py:433 -#: inventory/models.py:478 inventory/models.py:625 inventory/models.py:640 -#: inventory/models.py:684 inventory/models.py:1175 +#: inventory/models.py:118 inventory/models.py:406 inventory/models.py:446 +#: inventory/models.py:491 inventory/models.py:637 inventory/models.py:652 +#: inventory/models.py:696 inventory/models.py:1187 #: templates/crm/opportunities/opportunity_form.html:35 +#: templates/inventory/transfer_details.html:70 msgid "Car" msgstr "سيارة" -#: inventory/models.py:118 +#: inventory/models.py:119 msgid "Light Commercial" msgstr "مركبات تجارية خفيفة" -#: inventory/models.py:119 +#: inventory/models.py:120 msgid "Heavy-Duty Tractors" msgstr "جرارات ثقيلة" -#: inventory/models.py:120 +#: inventory/models.py:121 msgid "Trailers" msgstr "مقطورات" -#: inventory/models.py:121 +#: inventory/models.py:122 msgid "Medium Trucks" msgstr "شاحنات متوسطة" -#: inventory/models.py:122 +#: inventory/models.py:123 msgid "Buses" msgstr "حافلات" -#: inventory/models.py:123 +#: inventory/models.py:124 msgid "Motorcycles" msgstr "دراجات نارية" -#: inventory/models.py:124 +#: inventory/models.py:125 msgid "Buggy" msgstr "باجي" -#: inventory/models.py:125 +#: inventory/models.py:126 msgid "Moto ATV" msgstr "موتو ATV" -#: inventory/models.py:126 +#: inventory/models.py:127 msgid "Scooters" msgstr "دراجات سكوتر" -#: inventory/models.py:127 +#: inventory/models.py:128 msgid "Karting" msgstr "كارتينج" -#: inventory/models.py:128 +#: inventory/models.py:129 msgid "ATV" msgstr "مركبات ATV" -#: inventory/models.py:129 +#: inventory/models.py:130 msgid "Snowmobiles" msgstr "دراجات الثلج" -#: inventory/models.py:136 +#: inventory/models.py:137 msgid "logo" msgstr "الشعار" -#: inventory/models.py:275 templates/ledger/bills/bill_detail.html:191 -#: templates/sales/estimates/estimate_detail.html:103 +#: inventory/models.py:276 templates/ledger/bills/bill_detail.html:191 +#: templates/sales/estimates/estimate_detail.html:100 #: templates/sales/estimates/estimate_list.html:29 #: templates/sales/invoices/invoice_detail.html:193 #: templates/sales/invoices/invoice_list.html:36 @@ -320,8 +324,8 @@ msgstr "الشعار" msgid "Draft" msgstr "مسودة" -#: inventory/models.py:276 templates/ledger/bills/bill_detail.html:195 -#: templates/sales/estimates/estimate_detail.html:107 +#: inventory/models.py:277 templates/ledger/bills/bill_detail.html:195 +#: templates/sales/estimates/estimate_detail.html:104 #: templates/sales/estimates/estimate_list.html:33 #: templates/sales/invoices/invoice_detail.html:197 #: templates/sales/invoices/invoice_list.html:32 @@ -333,72 +337,73 @@ msgstr "مسودة" msgid "Approved" msgstr "تمت الموافقة" -#: inventory/models.py:277 inventory/models.py:930 +#: inventory/models.py:278 inventory/models.py:942 #: templates/crm/leads/lead_detail.html:48 #: templates/crm/leads/lead_list.html:110 msgid "Pending" msgstr "قيد الانتظار" -#: inventory/models.py:278 +#: inventory/models.py:279 msgid "Accepted" msgstr "تم القبول" -#: inventory/models.py:279 templates/administration/staff_index.html:329 +#: inventory/models.py:280 templates/administration/staff_index.html:329 #: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_index.html:329 msgid "Success" msgstr "ناجحة" -#: inventory/models.py:280 templates/sales/estimates/estimate_preview.html:243 +#: inventory/models.py:281 templates/sales/estimates/estimate_preview.html:243 msgid "Reject" msgstr "رفض" -#: inventory/models.py:281 +#: inventory/models.py:282 msgid "Cancelled" msgstr "ملغى" -#: inventory/models.py:285 templates/inventory/car_inventory.html:99 +#: inventory/models.py:286 templates/inventory/car_inventory.html:99 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:21 msgid "Available" msgstr "متاح" -#: inventory/models.py:286 templates/inventory/car_inventory.html:101 +#: inventory/models.py:287 templates/inventory/car_inventory.html:101 msgid "Sold" msgstr "تم البيع" -#: inventory/models.py:287 templates/inventory/car_inventory.html:103 +#: inventory/models.py:288 templates/inventory/car_inventory.html:103 msgid "Hold" msgstr "في الانتظار" -#: inventory/models.py:288 templates/inventory/car_inventory.html:107 +#: inventory/models.py:289 templates/inventory/car_inventory.html:107 msgid "Damaged" msgstr "تالف" -#: inventory/models.py:289 templates/index.html:22 +#: inventory/models.py:290 templates/index.html:22 #: templates/inventory/car_inventory.html:105 msgid "Reserved" msgstr "محجوزة" -#: inventory/models.py:290 templates/inventory/car_location_form.html:8 -#: templates/inventory/transfer_preview.html:255 +#: inventory/models.py:291 templates/inventory/car_location_form.html:8 +#: templates/inventory/transfer_preview.html:213 msgid "Transfer" msgstr "نقل" -#: inventory/models.py:293 inventory/models.py:929 +#: inventory/models.py:294 inventory/models.py:941 #: templates/crm/leads/lead_detail.html:46 #: templates/crm/leads/lead_list.html:108 #: templates/inventory/car_inventory.html:68 msgid "New" msgstr "جديد" -#: inventory/models.py:294 templates/inventory/car_inventory.html:70 +#: inventory/models.py:295 templates/inventory/car_inventory.html:70 msgid "Used" msgstr "مستعمل" -#: inventory/models.py:300 inventory/models.py:659 +#: inventory/models.py:301 inventory/models.py:671 #: templates/administration/manage_day_off.html:63 #: templates/administration/user_profile.html:105 #: templates/administration/user_profile.html:235 #: templates/ledger/coa_accounts/account_detail.html:67 +#: templates/ledger/reports/tags/income_statement.html:9 #: templates/sales/payments/payment_details.html:20 #: templates/sales/payments/payment_list.html:23 #: venv/lib/python3.11/site-packages/appointment/templates/administration/manage_day_off.html:63 @@ -416,28 +421,29 @@ msgstr "مستعمل" msgid "Description" msgstr "الوصف" -#: inventory/models.py:302 templates/administration/service_list.html:24 +#: inventory/models.py:303 templates/administration/service_list.html:24 #: templates/administration/user_profile.html:237 +#: templates/inventory/transfer_details.html:72 #: venv/lib/python3.11/site-packages/appointment/templates/administration/service_list.html:30 #: venv/lib/python3.11/site-packages/appointment/templates/administration/user_profile.html:237 msgid "Price" msgstr "السعر" -#: inventory/models.py:304 +#: inventory/models.py:305 msgid "taxable" msgstr "خاضع للضريبة" -#: inventory/models.py:308 +#: inventory/models.py:309 msgid "Unit of Measurement" msgstr "وحدة القياس" -#: inventory/models.py:311 inventory/models.py:332 inventory/models.py:839 +#: inventory/models.py:312 inventory/models.py:345 inventory/models.py:851 msgid "Dealer" msgstr "المعرض" -#: inventory/models.py:316 templates/inventory/transfer_preview.html:271 +#: inventory/models.py:317 templates/inventory/transfer_preview.html:229 #: templates/ledger/bills/bill_detail.html:213 -#: templates/sales/estimates/estimate_detail.html:125 +#: templates/sales/estimates/estimate_detail.html:122 #: templates/sales/estimates/estimate_preview.html:273 #: templates/sales/invoices/invoice_detail.html:215 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:94 @@ -456,15 +462,15 @@ msgstr "المعرض" msgid "Item" msgstr "العنصر" -#: inventory/models.py:322 inventory/models.py:323 -#: templates/sales/estimates/estimate_detail.html:155 +#: inventory/models.py:335 inventory/models.py:336 +#: templates/sales/estimates/estimate_detail.html:152 #: templates/sales/estimates/estimate_preview.html:295 #: templates/sales/estimates/sale_order_preview.html:266 #: templates/sales/invoices/invoice_detail.html:244 msgid "Additional Services" msgstr "الخدمات الإضافية" -#: inventory/models.py:341 inventory/models.py:1287 +#: inventory/models.py:354 inventory/models.py:1299 #: templates/inventory/car_detail.html:60 templates/inventory/car_form.html:137 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:166 #: templates/ledger/bills/bill_list.html:46 @@ -475,38 +481,38 @@ msgstr "الخدمات الإضافية" msgid "Vendor" msgstr "المورد" -#: inventory/models.py:349 inventory/models.py:1086 +#: inventory/models.py:362 inventory/models.py:1098 #: templates/sales/estimates/sale_order_preview.html:239 msgid "Make" msgstr "الصانع" -#: inventory/models.py:357 inventory/models.py:1093 +#: inventory/models.py:370 inventory/models.py:1105 #: templates/sales/estimates/sale_order_preview.html:240 msgid "Model" msgstr "الموديل" -#: inventory/models.py:359 inventory/models.py:1096 +#: inventory/models.py:372 inventory/models.py:1108 #: templates/inventory/car_form.html:59 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:61 #: templates/inventory/car_inventory.html:54 -#: templates/ledger/reports/components/period_navigator.html:19 +#: templates/ledger/reports/components/period_navigator.html:31 #: templates/sales/estimates/sale_order_preview.html:241 msgid "Year" msgstr "السنة" -#: inventory/models.py:366 templates/inventory/car_form.html:69 +#: inventory/models.py:379 templates/inventory/car_form.html:69 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:121 msgid "Series" msgstr "السلسلة" -#: inventory/models.py:374 +#: inventory/models.py:387 msgid "Trim" msgstr "الفئة" -#: inventory/models.py:380 inventory/models.py:1122 inventory/models.py:1183 +#: inventory/models.py:393 inventory/models.py:1134 inventory/models.py:1195 #: templates/crm/leads/lead_detail.html:44 #: templates/crm/leads/lead_list.html:39 templates/inventory/car_detail.html:43 -#: templates/inventory/car_detail.html:284 +#: templates/inventory/car_detail.html:306 #: templates/inventory/car_inventory.html:58 #: templates/inventory/car_list.html:163 #: templates/sales/estimates/estimate_list.html:16 @@ -521,53 +527,53 @@ msgstr "الفئة" msgid "Status" msgstr "الحالة" -#: inventory/models.py:386 templates/inventory/car_detail.html:47 +#: inventory/models.py:399 templates/inventory/car_detail.html:47 #: templates/inventory/car_form.html:150 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:183 #: templates/inventory/car_list.html:177 msgid "Stock Type" msgstr "نوع المخزون" -#: inventory/models.py:388 inventory/models.py:451 -#: templates/inventory/car_detail.html:65 templates/inventory/car_form.html:189 +#: inventory/models.py:401 inventory/models.py:464 +#: templates/inventory/car_detail.html:65 templates/inventory/car_form.html:190 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:232 #: templates/inventory/car_list.html:200 msgid "Remarks" msgstr "ملاحظات" -#: inventory/models.py:389 templates/inventory/car_detail.html:51 +#: inventory/models.py:402 templates/inventory/car_detail.html:51 #: templates/inventory/car_form.html:162 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:198 #: templates/inventory/car_list.html:191 templates/inventory/car_list.html:192 msgid "Mileage" msgstr "عدد الكيلومترات" -#: inventory/models.py:390 templates/inventory/car_detail.html:55 +#: inventory/models.py:403 templates/inventory/car_detail.html:55 #: templates/inventory/car_form.html:176 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:215 msgid "Receiving Date" msgstr "تاريخ الاستلام" -#: inventory/models.py:394 templates/customers/view_customer.html:137 +#: inventory/models.py:407 templates/customers/view_customer.html:137 #: templates/header.html:72 msgid "Cars" msgstr "السيارات" -#: inventory/models.py:439 +#: inventory/models.py:452 msgid "From Dealer" msgstr "من معرض" -#: inventory/models.py:445 +#: inventory/models.py:458 msgid "To Dealer" msgstr "الى معرض" -#: inventory/models.py:448 +#: inventory/models.py:461 msgid "Transfer Date" msgstr "تاريخ النقل" -#: inventory/models.py:450 templates/inventory/transfer_preview.html:272 +#: inventory/models.py:463 templates/inventory/transfer_preview.html:230 #: templates/ledger/bills/bill_detail.html:214 -#: templates/sales/estimates/estimate_detail.html:126 +#: templates/sales/estimates/estimate_detail.html:123 #: templates/sales/estimates/estimate_preview.html:274 #: templates/sales/estimates/sale_order_preview.html:242 #: templates/sales/invoices/invoice_detail.html:216 @@ -583,158 +589,160 @@ msgstr "تاريخ النقل" msgid "Quantity" msgstr "الكمية" -#: inventory/models.py:459 inventory/models.py:662 inventory/models.py:1284 +#: inventory/models.py:472 inventory/models.py:674 inventory/models.py:1296 msgid "Created At" msgstr "تاريخ الإنشاء" -#: inventory/models.py:460 inventory/models.py:816 +#: inventory/models.py:473 inventory/models.py:828 msgid "Updated At" msgstr "تم التحديث" -#: inventory/models.py:466 +#: inventory/models.py:479 msgid "Car Transfer Log" msgstr "سجل نقل السيارة" -#: inventory/models.py:467 +#: inventory/models.py:480 msgid "Car Transfer Logs" msgstr "سجلات نقل السيارات" -#: inventory/models.py:484 templates/inventory/car_detail.html:230 +#: inventory/models.py:497 templates/inventory/car_detail.html:252 msgid "Reserved By" msgstr "محجوز بواسطة" -#: inventory/models.py:486 +#: inventory/models.py:499 msgid "Reserved At" msgstr "تاريخ الحجز" -#: inventory/models.py:487 +#: inventory/models.py:500 msgid "Reserved Until" msgstr "محجوز حتى" -#: inventory/models.py:496 templates/inventory/car_detail.html:349 +#: inventory/models.py:509 templates/inventory/car_detail.html:386 msgid "Car Reservation" msgstr "حجز السيارة" -#: inventory/models.py:497 +#: inventory/models.py:510 msgid "Car Reservations" msgstr "حجوزات السيارات" -#: inventory/models.py:507 templates/inventory/car_detail.html:129 +#: inventory/models.py:520 templates/inventory/car_detail.html:151 msgid "Cost Price" msgstr "سعر التكلفة" -#: inventory/models.py:510 templates/inventory/car_detail.html:133 +#: inventory/models.py:523 templates/inventory/car_detail.html:155 msgid "Selling Price" msgstr "سعر البيع" -#: inventory/models.py:515 templates/inventory/car_detail.html:137 -#: templates/sales/estimates/estimate_detail.html:149 +#: inventory/models.py:528 templates/inventory/car_detail.html:159 +#: templates/sales/estimates/estimate_detail.html:146 #: templates/sales/invoices/invoice_detail.html:232 msgid "Discount Amount" msgstr "مبلغ الخصم" -#: inventory/models.py:572 inventory/models.py:573 +#: inventory/models.py:584 inventory/models.py:585 msgid "Car Financial Details" msgstr "تفاصيل المالية للسيارة" -#: inventory/models.py:579 inventory/models.py:592 +#: inventory/models.py:591 inventory/models.py:604 msgid "RGB" msgstr "آر جي بي" -#: inventory/models.py:582 inventory/models.py:583 +#: inventory/models.py:594 inventory/models.py:595 #: templates/inventory/add_colors.html:13 msgid "Exterior Colors" msgstr "الألوان الخارجية" -#: inventory/models.py:595 inventory/models.py:596 +#: inventory/models.py:607 inventory/models.py:608 #: templates/inventory/add_colors.html:32 msgid "Interior Colors" msgstr "الألوان الداخلية" -#: inventory/models.py:612 +#: inventory/models.py:624 msgid "Color" msgstr "اللون" -#: inventory/models.py:613 +#: inventory/models.py:625 msgid "Colors" msgstr "الألوان" -#: inventory/models.py:627 templates/inventory/car_detail.html:78 +#: inventory/models.py:639 templates/inventory/car_detail.html:78 msgid "Custom Number" msgstr "رقم البطاقة الجمركية" -#: inventory/models.py:631 templates/inventory/car_detail.html:87 -#: templates/inventory/car_detail.html:335 +#: inventory/models.py:643 templates/inventory/car_detail.html:87 +#: templates/inventory/car_detail.html:356 msgid "Custom Card" msgstr "البطاقة الجمركية" -#: inventory/models.py:632 +#: inventory/models.py:644 msgid "Custom Cards" msgstr "البطاقات الجمركية" -#: inventory/models.py:646 inventory/models.py:1191 +#: inventory/models.py:658 inventory/models.py:1203 msgid "Owner" msgstr "المالك" -#: inventory/models.py:647 +#: inventory/models.py:659 msgid "Dealer who owns the car." msgstr "التاجر الذي يمتلك السيارة." -#: inventory/models.py:653 inventory/models.py:909 +#: inventory/models.py:665 inventory/models.py:921 msgid "Showroom" msgstr "صالة العرض" -#: inventory/models.py:654 +#: inventory/models.py:666 msgid "Dealer where the car is displayed (can be the owner)." msgstr "التاجر الذي تُعرض السيارة في صالته (يمكن أن يكون المالك)." -#: inventory/models.py:660 +#: inventory/models.py:672 msgid "Optional description about the showroom placement." msgstr "وصف اختياري حول وضع السيارة في صالة العرض." -#: inventory/models.py:663 +#: inventory/models.py:675 msgid "Last Updated" msgstr "آخر تحديث" -#: inventory/models.py:666 +#: inventory/models.py:678 msgid "Car Location" msgstr "موقع السيارة" -#: inventory/models.py:667 +#: inventory/models.py:679 msgid "Car Locations" msgstr "مواقف السيارات" -#: inventory/models.py:686 +#: inventory/models.py:698 msgid "Plate Number" msgstr "رقم اللوحة" -#: inventory/models.py:687 +#: inventory/models.py:699 msgid "Text 1" msgstr "النص 1" -#: inventory/models.py:688 +#: inventory/models.py:700 msgid "Text 2" msgstr "النص 2" -#: inventory/models.py:689 +#: inventory/models.py:701 msgid "Text 3" msgstr "النص 3" -#: inventory/models.py:690 +#: inventory/models.py:702 templates/inventory/car_detail.html:103 msgid "Registration Date" msgstr "تاريخ التسجيل" -#: inventory/models.py:693 +#: inventory/models.py:705 templates/inventory/car_detail.html:97 +#: templates/inventory/car_detail.html:109 +#: templates/inventory/car_detail.html:371 msgid "Registration" msgstr "التسجيل" -#: inventory/models.py:694 +#: inventory/models.py:706 msgid "Registrations" msgstr "تسجيل السيارات" -#: inventory/models.py:702 inventory/models.py:892 inventory/models.py:1008 -#: inventory/models.py:1041 inventory/models.py:1127 inventory/models.py:1195 -#: inventory/models.py:1215 inventory/models.py:1237 inventory/models.py:1254 +#: inventory/models.py:714 inventory/models.py:904 inventory/models.py:1020 +#: inventory/models.py:1053 inventory/models.py:1139 inventory/models.py:1207 +#: inventory/models.py:1227 inventory/models.py:1249 inventory/models.py:1266 #: templates/crm/leads/lead_detail.html:91 #: templates/sales/estimates/estimate_list.html:18 #: templates/sales/invoices/invoice_list.html:19 @@ -745,72 +753,72 @@ msgstr "تسجيل السيارات" msgid "Created" msgstr "تاريخ الإنشاء" -#: inventory/models.py:703 inventory/models.py:893 inventory/models.py:1009 -#: inventory/models.py:1042 inventory/models.py:1129 inventory/models.py:1196 -#: inventory/models.py:1216 inventory/models.py:1238 +#: inventory/models.py:715 inventory/models.py:905 inventory/models.py:1021 +#: inventory/models.py:1054 inventory/models.py:1141 inventory/models.py:1208 +#: inventory/models.py:1228 inventory/models.py:1250 #: 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:733 templates/dealers/dealer_detail.html:63 +#: inventory/models.py:745 templates/dealers/dealer_detail.html:63 msgid "Subscription" msgstr "الاشتراك" -#: inventory/models.py:734 templates/welcome.html:73 templates/welcome.html:140 +#: inventory/models.py:746 templates/welcome.html:73 templates/welcome.html:141 msgid "Subscriptions" msgstr "الاشتراكات" -#: inventory/models.py:749 +#: inventory/models.py:761 msgid "Subscription User" msgstr "مستخدم الاشتراك" -#: inventory/models.py:750 +#: inventory/models.py:762 msgid "Subscription Users" msgstr "مستخدمو الاشتراك" -#: inventory/models.py:758 +#: inventory/models.py:770 msgid "Name of the subscription plan" msgstr "اسم خطة الاشتراك" -#: inventory/models.py:763 +#: inventory/models.py:775 msgid "Maximum number of users allowed" msgstr "الحد الأقصى لعدد المستخدمين المسموح به" -#: inventory/models.py:766 +#: inventory/models.py:778 msgid "Maximum number of cars in inventory" msgstr "الحد الأقصى لعدد السيارات في المخزون" -#: inventory/models.py:779 +#: inventory/models.py:791 msgid "Additional features specific to this plan" msgstr "ميزات إضافية خاصة بهذه الخطة" -#: inventory/models.py:785 +#: inventory/models.py:797 msgid "Subscription Plan" msgstr "خطة الاشتراك" -#: inventory/models.py:786 +#: inventory/models.py:798 msgid "Subscription Plans" msgstr "خطط الاشتراك" -#: inventory/models.py:810 inventory/models.py:1039 inventory/models.py:1282 +#: inventory/models.py:822 inventory/models.py:1051 inventory/models.py:1294 msgid "Logo" msgstr "الشعار" -#: inventory/models.py:815 +#: inventory/models.py:827 msgid "Joined At" msgstr "انضم في" -#: inventory/models.py:840 +#: inventory/models.py:852 msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:874 +#: inventory/models.py:886 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3214 msgid "Manager" msgstr "مدير" -#: inventory/models.py:875 inventory/signals.py:132 inventory/signals.py:167 -#: templates/header.html:28 templates/header.html:55 templates/header.html:60 +#: inventory/models.py:887 inventory/signals.py:132 templates/header.html:28 +#: templates/header.html:55 templates/header.html:60 #: 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 @@ -818,92 +826,92 @@ msgstr "مدير" msgid "Inventory" msgstr "المخزن" -#: inventory/models.py:876 +#: inventory/models.py:888 msgid "Accountant" msgstr "محاسب" -#: inventory/models.py:877 templates/header.html:33 +#: inventory/models.py:889 templates/header.html:33 msgid "Sales" msgstr "المبيعات" -#: inventory/models.py:878 +#: inventory/models.py:890 msgid "Coordinator" msgstr "المنسق" -#: inventory/models.py:879 +#: inventory/models.py:891 msgid "Receptionist" msgstr "موظف الاستقبال" -#: inventory/models.py:880 +#: inventory/models.py:892 msgid "Agent" msgstr "عميل" -#: inventory/models.py:890 +#: inventory/models.py:902 msgid "Staff Type" msgstr "نوع الموظف" -#: inventory/models.py:898 inventory/models.py:899 +#: inventory/models.py:910 inventory/models.py:911 #: templates/crm/opportunities/opportunity_detail.html:258 #: templates/crm/opportunities/opportunity_form.html:70 -#: templates/header.html:405 templates/users/user_form.html:4 +#: templates/header.html:423 templates/users/user_form.html:4 #: templates/users/user_list.html:5 msgid "Staff" msgstr "الموظفون" -#: inventory/models.py:907 +#: inventory/models.py:919 msgid "Referrals" msgstr "إحالات" -#: inventory/models.py:908 inventory/models.py:953 +#: inventory/models.py:920 inventory/models.py:965 msgid "WhatsApp" msgstr "واتساب" -#: inventory/models.py:910 +#: inventory/models.py:922 msgid "TikTok" msgstr "تيك توك" -#: inventory/models.py:911 +#: inventory/models.py:923 msgid "Instagram" msgstr "إنستغرام" -#: inventory/models.py:912 +#: inventory/models.py:924 msgid "X" msgstr "إكس" -#: inventory/models.py:913 +#: inventory/models.py:925 msgid "Facebook" msgstr "فيسبوك" -#: inventory/models.py:914 +#: inventory/models.py:926 msgid "Motory" msgstr "موتري" -#: inventory/models.py:915 +#: inventory/models.py:927 msgid "Influencers" msgstr "المؤثرون" -#: inventory/models.py:916 +#: inventory/models.py:928 msgid "Youtube" msgstr "يوتيوب" -#: inventory/models.py:917 +#: inventory/models.py:929 msgid "Campaign" msgstr "حملة" -#: inventory/models.py:921 +#: inventory/models.py:933 msgid "Walk In" msgstr "زيارة مباشرة" -#: inventory/models.py:922 +#: inventory/models.py:934 msgid "Toll Free" msgstr "رقم مجاني" -#: inventory/models.py:923 +#: inventory/models.py:935 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:112 msgid "Website" msgstr "الموقع الإلكتروني" -#: inventory/models.py:924 inventory/models.py:952 inventory/models.py:998 +#: inventory/models.py:936 inventory/models.py:964 inventory/models.py:1010 #: templates/account/login.html:28 templates/account/login.html:30 #: templates/administration/display_appointment.html:45 #: templates/administration/staff_list.html:39 @@ -913,7 +921,7 @@ msgstr "الموقع الإلكتروني" #: templates/crm/opportunities/opportunity_detail.html:227 #: templates/customers/view_customer.html:103 #: templates/dealers/dealer_detail.html:93 -#: templates/sales/estimates/estimate_detail.html:92 +#: templates/sales/estimates/estimate_detail.html:89 #: templates/sales/estimates/estimate_preview.html:264 #: templates/sales/estimates/sale_order_preview.html:228 #: templates/vendors/view_vendor.html:55 @@ -925,21 +933,21 @@ msgstr "الموقع الإلكتروني" msgid "Email" msgstr "البريد الإلكتروني" -#: inventory/models.py:925 +#: inventory/models.py:937 msgid "Form" msgstr "نموذج" -#: inventory/models.py:931 templates/crm/leads/lead_detail.html:50 +#: inventory/models.py:943 templates/crm/leads/lead_detail.html:50 #: templates/crm/leads/lead_list.html:112 msgid "In Progress" msgstr "قيد التنفيذ" -#: inventory/models.py:932 templates/crm/leads/lead_detail.html:52 +#: inventory/models.py:944 templates/crm/leads/lead_detail.html:52 #: templates/crm/leads/lead_list.html:114 msgid "Qualified" msgstr "مؤهل" -#: inventory/models.py:933 templates/crm/leads/lead_detail.html:54 +#: inventory/models.py:945 templates/crm/leads/lead_detail.html:54 #: templates/crm/leads/lead_list.html:116 #: templates/sales/estimates/estimate_list.html:37 #: templates/sales/invoices/invoice_list.html:34 @@ -951,169 +959,169 @@ msgstr "مؤهل" msgid "Canceled" msgstr "ملغى" -#: inventory/models.py:937 +#: inventory/models.py:949 msgid "Mr" msgstr "السيد" -#: inventory/models.py:938 +#: inventory/models.py:950 msgid "Mrs" msgstr "السيدة" -#: inventory/models.py:939 +#: inventory/models.py:951 msgid "Ms" msgstr "الآنسة" -#: inventory/models.py:940 +#: inventory/models.py:952 msgid "Miss" msgstr "الآنسة" -#: inventory/models.py:941 +#: inventory/models.py:953 msgid "Dr" msgstr "الدكتور" -#: inventory/models.py:942 +#: inventory/models.py:954 msgid "Prof" msgstr "الأستاذ" -#: inventory/models.py:943 +#: inventory/models.py:955 msgid "Prince" msgstr "الأمير" -#: inventory/models.py:944 +#: inventory/models.py:956 msgid "Princess" msgstr "الأميرة" -#: inventory/models.py:945 +#: inventory/models.py:957 msgid "Company" msgstr "الشركة" -#: inventory/models.py:946 +#: inventory/models.py:958 msgid "N/A" msgstr "غير متوفر" -#: inventory/models.py:950 +#: inventory/models.py:962 msgid "Call" msgstr "مكالمة" -#: inventory/models.py:951 +#: inventory/models.py:963 msgid "SMS" msgstr "رسالة نصية" -#: inventory/models.py:954 +#: inventory/models.py:966 msgid "Visit" msgstr "زيارة" -#: inventory/models.py:955 templates/inventory/car_form.html:23 +#: inventory/models.py:967 templates/inventory/car_form.html:23 msgid "Add Car" msgstr "إضافة سيارة" -#: inventory/models.py:956 templates/inventory/reserve_car.html:6 +#: inventory/models.py:968 templates/inventory/reserve_car.html:6 #: templates/inventory/reserve_car.html:9 msgid "Reserve Car" msgstr "حجز السيارة" -#: inventory/models.py:957 +#: inventory/models.py:969 msgid "Remove Car" msgstr "إزالة السيارة" -#: inventory/models.py:958 +#: inventory/models.py:970 msgid "Create Quotation" msgstr "إنشاء عرض" -#: inventory/models.py:959 +#: inventory/models.py:971 msgid "Cancel Quotation" msgstr "إلغاء العرض" -#: inventory/models.py:960 +#: inventory/models.py:972 msgid "Create Order" msgstr "إنشاء طلب" -#: inventory/models.py:961 +#: inventory/models.py:973 msgid "Cancel Order" msgstr "إلغاء الطلب" -#: inventory/models.py:962 templates/sales/estimates/estimate_detail.html:49 +#: inventory/models.py:974 templates/sales/estimates/estimate_detail.html:46 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_create.html:24 #: venv/lib/python3.11/site-packages/django_ledger/views/invoice.py:68 msgid "Create Invoice" msgstr "إنشاء فاتورة" -#: inventory/models.py:963 +#: inventory/models.py:975 msgid "Cancel Invoice" msgstr "إلغاء الفاتورة" -#: inventory/models.py:967 +#: inventory/models.py:979 msgid "Prospect" msgstr "العميل المحتمل" -#: inventory/models.py:968 +#: inventory/models.py:980 msgid "Proposal" msgstr "عرض" -#: inventory/models.py:969 +#: inventory/models.py:981 msgid "Negotiation" msgstr "مفاوضات" -#: inventory/models.py:970 +#: inventory/models.py:982 msgid "Closed Won" msgstr "مغلقة - ناجحة" -#: inventory/models.py:971 +#: inventory/models.py:983 msgid "Closed Lost" msgstr "مغلقة - خسارة" -#: inventory/models.py:975 +#: inventory/models.py:987 msgid "Low" msgstr "منخفض" -#: inventory/models.py:976 +#: inventory/models.py:988 msgid "Medium" msgstr "متوسط" -#: inventory/models.py:977 +#: inventory/models.py:989 msgid "High" msgstr "مرتفع" -#: inventory/models.py:985 +#: inventory/models.py:997 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:11 msgid "Title" msgstr "العنوان" -#: inventory/models.py:987 +#: inventory/models.py:999 msgid "First Name" msgstr "الاسم الأول" -#: inventory/models.py:989 +#: inventory/models.py:1001 msgid "Middle Name" msgstr "اسم الأب" -#: inventory/models.py:991 +#: inventory/models.py:1003 msgid "Last Name" msgstr "اسم العائلة" -#: inventory/models.py:993 +#: inventory/models.py:1005 msgid "Male" msgstr "ذكر" -#: inventory/models.py:993 +#: inventory/models.py:1005 msgid "Female" msgstr "أنثى" -#: inventory/models.py:995 +#: inventory/models.py:1007 msgid "Gender" msgstr "الجنس" -#: inventory/models.py:997 +#: inventory/models.py:1009 msgid "Date of Birth" msgstr "تاريخ الميلاد" -#: inventory/models.py:1000 templates/customers/customer_list.html:55 +#: inventory/models.py:1012 templates/customers/customer_list.html:55 msgid "National ID" msgstr "رقم الهوية الوطنية" -#: inventory/models.py:1012 +#: inventory/models.py:1024 #: templates/crm/opportunities/opportunity_form.html:22 -#: templates/sales/estimates/estimate_detail.html:88 +#: templates/sales/estimates/estimate_detail.html:85 #: templates/sales/estimates/estimate_list.html:15 #: templates/sales/estimates/estimate_preview.html:263 #: templates/sales/estimates/sale_order_preview.html:227 @@ -1128,102 +1136,102 @@ msgstr "رقم الهوية الوطنية" msgid "Customer" msgstr "العميل" -#: inventory/models.py:1013 templates/customers/customer_form.html:4 +#: inventory/models.py:1025 templates/customers/customer_form.html:4 #: templates/customers/customer_list.html:4 #: templates/customers/customer_list.html:5 #: templates/customers/customer_list.html:9 msgid "Customers" msgstr "العملاء" -#: inventory/models.py:1045 +#: inventory/models.py:1057 msgid "Organization" msgstr "شركة" -#: inventory/models.py:1046 templates/header.html:161 +#: inventory/models.py:1058 templates/header.html:161 #: templates/organizations/organization_list.html:4 #: templates/organizations/organization_list.html:5 #: templates/organizations/organization_list.html:12 msgid "Organizations" msgstr "الشركات" -#: inventory/models.py:1059 +#: inventory/models.py:1071 #: templates/representatives/representative_detail.html:8 #: templates/representatives/representative_list.html:18 msgid "ID Number" msgstr "رقم الهوية" -#: inventory/models.py:1069 +#: inventory/models.py:1081 msgid "Representative" msgstr "ممثل شركة" -#: inventory/models.py:1070 templates/header.html:169 +#: inventory/models.py:1082 templates/header.html:169 #: templates/representatives/representative_list.html:3 #: templates/representatives/representative_list.html:6 msgid "Representatives" msgstr "ممثلي الشركات" -#: inventory/models.py:1099 templates/crm/leads/lead_list.html:62 +#: inventory/models.py:1111 templates/crm/leads/lead_list.html:62 msgid "Source" msgstr "المصدر" -#: inventory/models.py:1102 templates/crm/leads/lead_list.html:68 +#: inventory/models.py:1114 templates/crm/leads/lead_list.html:68 msgid "Channel" msgstr "القناة" -#: inventory/models.py:1104 templates/crm/leads/lead_detail.html:115 +#: inventory/models.py:1116 templates/crm/leads/lead_detail.html:115 #: venv/lib/python3.11/site-packages/django_ledger/forms/entity.py:82 #: venv/lib/python3.11/site-packages/django_ledger/forms/entity.py:159 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:107 msgid "City" msgstr "المدينة" -#: inventory/models.py:1111 +#: inventory/models.py:1123 msgid "Assigned" msgstr "مُعين" -#: inventory/models.py:1117 +#: inventory/models.py:1129 msgid "Priority" msgstr "الأولوية" -#: inventory/models.py:1132 +#: inventory/models.py:1144 msgid "Lead" msgstr "فرصة" -#: inventory/models.py:1133 templates/crm/leads/lead_list.html:3 +#: inventory/models.py:1145 templates/crm/leads/lead_list.html:3 #: templates/crm/leads/lead_list.html:7 msgid "Leads" msgstr "الفرص" -#: inventory/models.py:1144 +#: inventory/models.py:1156 msgid "Old Status" msgstr "الحالة القديمة" -#: inventory/models.py:1147 +#: inventory/models.py:1159 msgid "New Status" msgstr "الحالة الجديدة" -#: inventory/models.py:1152 +#: inventory/models.py:1164 msgid "Changed At" msgstr "تم التغيير في" -#: inventory/models.py:1155 +#: inventory/models.py:1167 msgid "Lead Status History" msgstr "تاريخ حالة العميل المحتمل" -#: inventory/models.py:1156 +#: inventory/models.py:1168 msgid "Lead Status Histories" msgstr "تواريخ حالات العملاء المحتملين" -#: inventory/models.py:1164 +#: inventory/models.py:1176 msgid "Probability must be between 0 and 100." msgstr "يجب أن تكون الاحتمالية بين 0 و 100." -#: inventory/models.py:1178 +#: inventory/models.py:1190 #: templates/crm/opportunities/opportunity_form.html:48 msgid "Stage" msgstr "المرحلة" -#: inventory/models.py:1194 +#: inventory/models.py:1206 #: templates/crm/opportunities/opportunity_detail.html:291 #: templates/crm/opportunities/opportunity_form.html:79 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:100 @@ -1232,27 +1240,27 @@ msgstr "المرحلة" msgid "Closing Date" msgstr "تاريخ الإغلاق" -#: inventory/models.py:1197 +#: inventory/models.py:1209 msgid "Closed" msgstr "مغلقة" -#: inventory/models.py:1200 +#: inventory/models.py:1212 msgid "Opportunity" msgstr "فرصة" -#: inventory/models.py:1201 +#: inventory/models.py:1213 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:8 #: templates/crm/opportunities/opportunity_list.html:8 #: templates/header.html:177 msgid "Opportunities" msgstr "الفرص" -#: inventory/models.py:1211 inventory/models.py:1219 +#: inventory/models.py:1223 inventory/models.py:1231 #: templates/account/snippets/already_logged_in.html:8 msgid "Note" msgstr "ملاحظة" -#: inventory/models.py:1220 inventory/models.py:1233 +#: inventory/models.py:1232 inventory/models.py:1245 #: templates/crm/leads/lead_detail.html:151 #: templates/customers/view_customer.html:119 #: venv/lib/python3.11/site-packages/django_ledger/forms/bill.py:154 @@ -1260,12 +1268,12 @@ msgstr "ملاحظة" msgid "Notes" msgstr "ملاحظات" -#: inventory/models.py:1231 +#: inventory/models.py:1243 msgid "Activity Type" msgstr "نوع النشاط" -#: inventory/models.py:1241 templates/dealers/activity_log.html:11 -#: templates/header.html:408 +#: inventory/models.py:1253 templates/dealers/activity_log.html:11 +#: templates/header.html:426 #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:382 #: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:325 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:10 @@ -1274,77 +1282,77 @@ msgstr "نوع النشاط" msgid "Activity" msgstr "النشاط" -#: inventory/models.py:1242 templates/crm/leads/lead_detail.html:135 +#: inventory/models.py:1254 templates/crm/leads/lead_detail.html:135 msgid "Activities" msgstr "الأنشطة" -#: inventory/models.py:1252 +#: inventory/models.py:1264 msgid "Message" msgstr "رسالة" -#: inventory/models.py:1253 +#: inventory/models.py:1265 msgid "Is Read" msgstr "تمت قراءته" -#: inventory/models.py:1257 +#: inventory/models.py:1269 msgid "Notification" msgstr "إشعار" -#: inventory/models.py:1258 templates/crm/notifications_history.html:6 +#: inventory/models.py:1270 templates/crm/notifications_history.html:6 msgid "Notifications" msgstr "الإشعارات" -#: inventory/models.py:1275 templates/vendors/view_vendor.html:49 +#: inventory/models.py:1287 templates/vendors/view_vendor.html:49 msgid "Contact Person" msgstr "الشخص المسؤول" -#: inventory/models.py:1288 templates/vendors/vendor_form.html:4 +#: inventory/models.py:1300 templates/vendors/vendor_form.html:4 #: templates/vendors/vendors_list.html:4 templates/vendors/vendors_list.html:5 #: templates/vendors/vendors_list.html:12 msgid "Vendors" msgstr "الموردين" -#: inventory/models.py:1487 inventory/models.py:1517 +#: inventory/models.py:1499 inventory/models.py:1529 msgid "amount" msgstr "المبلغ" -#: inventory/models.py:1490 +#: inventory/models.py:1502 msgid "method" msgstr "طريقة" -#: inventory/models.py:1493 +#: inventory/models.py:1505 msgid "reference number" msgstr "رقم المرجع" -#: inventory/models.py:1495 +#: inventory/models.py:1507 msgid "date" msgstr "التاريخ" -#: inventory/models.py:1505 +#: inventory/models.py:1517 msgid "payment" msgstr "الدفعة" -#: inventory/models.py:1506 templates/header.html:126 +#: inventory/models.py:1518 templates/header.html:126 msgid "payments" msgstr "المدفوعات" -#: inventory/models.py:1519 +#: inventory/models.py:1531 msgid "reason" msgstr "السبب" -#: inventory/models.py:1520 +#: inventory/models.py:1532 msgid "refund date" msgstr "تاريخ الاسترداد" -#: inventory/models.py:1523 +#: inventory/models.py:1535 msgid "refund" msgstr "استرداد" -#: inventory/models.py:1524 +#: inventory/models.py:1536 msgid "refunds" msgstr "استردادات" -#: inventory/models.py:1548 templates/sales/estimates/estimate_detail.html:40 +#: inventory/models.py:1560 templates/sales/estimates/estimate_detail.html:37 #: templates/sales/estimates/estimate_preview.html:255 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3145 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:9 @@ -1352,7 +1360,7 @@ msgstr "استردادات" msgid "Estimate" msgstr "تقدير" -#: inventory/models.py:1554 templates/plans/create_order.html:29 +#: inventory/models.py:1566 templates/plans/create_order.html:29 #: templates/sales/invoices/invoice_create.html:5 #: templates/sales/invoices/invoice_detail.html:61 #: templates/sales/payments/payment_list.html:21 @@ -1362,7 +1370,7 @@ msgstr "تقدير" msgid "Invoice" msgstr "فاتورة" -#: inventory/signals.py:108 +#: inventory/signals.py:108 templates/ledger/reports/dashboard.html:32 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:14 msgid "Cash" msgstr "نقداً" @@ -1380,230 +1388,231 @@ msgstr "المصروفات المدفوعة مقدمًا" msgid "Employee Advance" msgstr "سلفة الموظف" -#: inventory/signals.py:179 +#: inventory/signals.py:168 msgid "VAT Receivable" msgstr "ضريبة القيمة المضافة المستحقة" -#: inventory/signals.py:189 +#: inventory/signals.py:178 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:452 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:538 msgid "Buildings - Accum. Depreciation" msgstr "المباني - الإهلاك المتراكم" -#: inventory/signals.py:201 +#: inventory/signals.py:190 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:459 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:545 msgid "Intangible Assets" msgstr "الأصول غير الملموسة" -#: inventory/signals.py:213 +#: inventory/signals.py:202 msgid "Investments" msgstr "الاستثمارات" -#: inventory/signals.py:250 +#: inventory/signals.py:239 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:451 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:537 msgid "Buildings" msgstr "المباني" -#: inventory/signals.py:264 +#: inventory/signals.py:253 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:466 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:552 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:52 msgid "Accounts Payable" msgstr "الحسابات الدائنة" -#: inventory/signals.py:276 +#: inventory/signals.py:265 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:472 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:558 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:51 msgid "Deferred Revenue" msgstr "الإيرادات المؤجلة" -#: inventory/signals.py:288 +#: inventory/signals.py:277 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:467 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:553 msgid "Wages Payable" msgstr "الأجور المستحقة الدفع" -#: inventory/signals.py:300 +#: inventory/signals.py:289 msgid "Long-Term Notes Payable" msgstr "أوراق الدفع طويلة الأجل" -#: inventory/signals.py:312 +#: inventory/signals.py:301 msgid "VAT Payable" msgstr "ضريبة القيمة المضافة المستحقة الدفع" -#: inventory/signals.py:322 +#: inventory/signals.py:311 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:469 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:555 msgid "Taxes Payable" msgstr "الضرائب المستحقة الدفع" -#: inventory/signals.py:332 +#: inventory/signals.py:321 msgid "Social Insurance Payable" msgstr "التأمينات الاجتماعية المستحقة الدفع" -#: inventory/signals.py:338 +#: inventory/signals.py:327 msgid "End of Service Benefits" msgstr "مكافأة نهاية الخدمة" -#: inventory/signals.py:345 +#: inventory/signals.py:334 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:478 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:564 msgid "Mortgage Payable" msgstr "الرهن المستحق الدفع" -#: inventory/signals.py:353 +#: inventory/signals.py:342 msgid "Registered Capital" msgstr "رأس المال المسجل" -#: inventory/signals.py:356 +#: inventory/signals.py:345 msgid "Additional Paid-In Capital" msgstr "رأس المال المدفوع الإضافي" -#: inventory/signals.py:359 +#: inventory/signals.py:348 msgid "Opening Balances" msgstr "الأرصدة الافتتاحية" -#: inventory/signals.py:364 +#: inventory/signals.py:353 msgid "Statutory Reserve" msgstr "الاحتياطي النظامي" -#: inventory/signals.py:367 +#: inventory/signals.py:356 msgid "Foreign Currency Translation Reserve" msgstr "احتياطي تحويل العملات الأجنبية" -#: inventory/signals.py:374 +#: inventory/signals.py:363 msgid "Operating Profits and Losses" msgstr "الأرباح والخسائر التشغيلية" -#: inventory/signals.py:385 +#: inventory/signals.py:374 msgid "Retained Earnings (or Losses)" msgstr "الأرباح المحتجزة (أو الخسائر)" -#: inventory/signals.py:395 +#: inventory/signals.py:384 msgid "Sales Revenue" msgstr "إيرادات المبيعات" -#: inventory/signals.py:407 +#: inventory/signals.py:396 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:492 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:580 msgid "Interest Income" msgstr "دخل الفائدة" -#: inventory/signals.py:419 +#: inventory/signals.py:408 msgid "Unearned Income" msgstr "الدخل غير المكتسب" -#: inventory/signals.py:425 +#: inventory/signals.py:414 msgid "Sales/Service Revenue" msgstr "إيرادات المبيعات/الخدمات" -#: inventory/signals.py:428 +#: inventory/signals.py:417 msgid "Non-Operating Revenues" msgstr "الإيرادات غير التشغيلية" -#: inventory/signals.py:436 inventory/signals.py:617 +#: inventory/signals.py:425 inventory/signals.py:606 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:497 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:587 msgid "Cost of Goods Sold" msgstr "تكلفة البضائع المباعة" -#: inventory/signals.py:449 +#: inventory/signals.py:438 msgid "Accrued Expenses" msgstr "المصروفات المستحقة" -#: inventory/signals.py:459 +#: inventory/signals.py:448 msgid "Accrued Salaries" msgstr "الرواتب المستحقة" -#: inventory/signals.py:469 +#: inventory/signals.py:458 msgid "Rent Expense" msgstr "مصروف الإيجار" -#: inventory/signals.py:481 +#: inventory/signals.py:470 msgid "Salaries and Administrative Fees" msgstr "الرواتب والرسوم الإدارية" -#: inventory/signals.py:491 +#: inventory/signals.py:480 msgid "Medical Insurance" msgstr "التأمين الطبي" -#: inventory/signals.py:501 +#: inventory/signals.py:490 msgid "Marketing and Advertising Expenses" msgstr "مصروفات التسويق والإعلان" -#: inventory/signals.py:511 +#: inventory/signals.py:500 msgid "Commissions and Incentives" msgstr "العمولات والحوافز" -#: inventory/signals.py:521 +#: inventory/signals.py:510 msgid "Travel Tickets" msgstr "تذاكر السفر" -#: inventory/signals.py:531 +#: inventory/signals.py:520 msgid "Social Insurance" msgstr "التأمينات الاجتماعية" -#: inventory/signals.py:541 +#: inventory/signals.py:530 msgid "Government Fees" msgstr "الرسوم الحكومية" -#: inventory/signals.py:551 +#: inventory/signals.py:540 msgid "Fees and Subscriptions" msgstr "الرسوم والاشتراكات" -#: inventory/signals.py:561 +#: inventory/signals.py:550 msgid "Office Services Expenses" msgstr "مصروفات خدمات المكتب" -#: inventory/signals.py:571 +#: inventory/signals.py:560 msgid "Office Supplies and Printing" msgstr "اللوازم المكتبية والطباعة" -#: inventory/signals.py:581 +#: inventory/signals.py:570 msgid "Hospitality Expenses" msgstr "مصروفات الضيافة" -#: inventory/signals.py:591 +#: inventory/signals.py:580 msgid "Bank Commissions" msgstr "عمولات البنوك" -#: inventory/signals.py:601 +#: inventory/signals.py:590 +#: templates/ledger/reports/tags/income_statement.html:274 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:291 msgid "Other Expenses" msgstr "مصروفات أخرى" -#: inventory/signals.py:611 +#: inventory/signals.py:600 msgid "Transportation Expenses" msgstr "مصروفات النقل" -#: inventory/signals.py:618 +#: inventory/signals.py:607 msgid "Salaries and Wages" msgstr "الرواتب والأجور" -#: inventory/signals.py:619 +#: inventory/signals.py:608 msgid "Sales Commissions" msgstr "عمولات المبيعات" -#: inventory/signals.py:620 +#: inventory/signals.py:609 msgid "Shipping and Customs Clearance" msgstr "الشحن والتخليص الجمركي" -#: inventory/signals.py:623 +#: inventory/signals.py:612 msgid "Zakat" msgstr "الزكاة" -#: inventory/signals.py:624 +#: inventory/signals.py:613 msgid "Taxes" msgstr "الضرائب" -#: inventory/signals.py:625 +#: inventory/signals.py:614 msgid "Foreign Currency Translation" msgstr "تحويل العملات الأجنبية" -#: inventory/signals.py:626 +#: inventory/signals.py:615 msgid "Interest Expenses" msgstr "مصروفات الفائدة" @@ -1625,159 +1634,178 @@ msgstr "نسيت كلمة المرور؟" msgid "Car reserved successfully." msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:380 +#: inventory/views.py:227 +msgid "OTP verified successfully!" +msgstr "تم التحقق من رمز التحقق بنجاح!" + +#: inventory/views.py:230 +msgid "Invalid OTP. Please try again." +msgstr "رمز التحقق غير صالح. يرجى المحاولة مرة أخرى." + +#: inventory/views.py:383 msgid "VIN number exists" msgstr "رقم الهيكل موجود مسبقاً" -#: inventory/views.py:572 templates/dashboards/accounting.html:21 +#: inventory/views.py:575 templates/dashboards/accounting.html:21 #: templates/inventory/car_inventory.html:5 +#: templates/inventory/inventory_stats.html:5 msgid "inventory" msgstr "المخزون" -#: inventory/views.py:729 +#: inventory/views.py:732 msgid "Car finance details saved successfully." msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:761 +#: inventory/views.py:764 msgid "Car finance details updated successfully." msgstr "تم تحديث تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:792 +#: inventory/views.py:795 msgid "Car updated successfully." msgstr "تم تحديث السيارة بنجاح" -#: inventory/views.py:804 +#: inventory/views.py:807 msgid "Car deleted successfully." msgstr "تم حذف السيارة بنجاح." -#: inventory/views.py:878 +#: inventory/views.py:886 msgid "Car transfer canceled successfully." msgstr "تم إلغاء نقل السيارة بنجاح." -#: inventory/views.py:895 +#: inventory/views.py:903 msgid "Car transfer approved successfully." msgstr "تمت الموافقة على نقل السيارة بنجاح." -#: inventory/views.py:906 +#: inventory/views.py:914 msgid "Car transfer rejected successfully." msgstr "تم رفض نقل السيارة بنجاح." -#: inventory/views.py:917 +#: inventory/views.py:927 msgid "Car Transfer Completed successfully." msgstr "تم إكمال نقل السيارة بنجاح." -#: inventory/views.py:988 +#: inventory/views.py:998 msgid "Custom Card added successfully." msgstr "تم إضافة البطاقة الجمركية بنجاح." -#: inventory/views.py:997 +#: inventory/views.py:1018 +msgid "Registration added successfully." +msgstr "تم إلغاء الحجز بنجاح." + +#: inventory/views.py:1027 msgid "This car is already reserved." msgstr "هذه السيارة محجوزة بالفعل." -#: inventory/views.py:1017 +#: inventory/views.py:1047 msgid "Reservation renewed successfully." msgstr "تم تجديد الحجز بنجاح" -#: inventory/views.py:1025 +#: inventory/views.py:1055 msgid "Reservation canceled successfully." msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1030 +#: inventory/views.py:1060 msgid "Invalid action." msgstr "إجراء غير صالح." -#: inventory/views.py:1034 +#: inventory/views.py:1064 msgid "Invalid request method." msgstr "طريقة الطلب غير صالحة" -#: inventory/views.py:1056 +#: inventory/views.py:1086 msgid "Dealer updated successfully." msgstr "تم تحديث المعرض بنجاح." -#: inventory/views.py:1076 templates/header.html:154 +#: inventory/views.py:1106 templates/header.html:154 msgid "customers" msgstr "العملاء" -#: inventory/views.py:1184 +#: inventory/views.py:1216 msgid "Customer created successfully." msgstr "تم إنشاء العميل بنجاح." -#: inventory/views.py:1216 +#: inventory/views.py:1248 msgid "Customer updated successfully." msgstr "تم تحديث العميل بنجاح." -#: inventory/views.py:1228 +#: inventory/views.py:1263 msgid "Customer deleted successfully." msgstr "تم حذف العميل بنجاح." -#: inventory/views.py:1263 +#: inventory/views.py:1298 msgid "Vendor created successfully." msgstr "تم إنشاء المورد بنجاح." -#: inventory/views.py:1283 +#: inventory/views.py:1318 msgid "Vendor updated successfully." msgstr "تم تحديث المورد بنجاح" -#: inventory/views.py:1291 +#: inventory/views.py:1326 msgid "Vendor deleted successfully." msgstr "تم حذف المورد بنجاح." -#: inventory/views.py:1699 +#: inventory/views.py:1734 msgid "User created successfully." msgstr "تم إنشاء المستخدم بنجاح." -#: inventory/views.py:1724 +#: inventory/views.py:1759 msgid "User updated successfully." msgstr "تم تحديث المستخدم بنجاح" -#: inventory/views.py:1735 +#: inventory/views.py:1770 msgid "User deleted successfully." msgstr "تم حذف المستخدم بنجاح." -#: inventory/views.py:1800 inventory/views.py:1828 +#: inventory/views.py:1839 inventory/views.py:1871 msgid "Organization created successfully." msgstr "تم إنشاء المنظمة بنجاح." -#: inventory/views.py:3017 +#: inventory/views.py:3076 msgid "Opportunity deleted successfully." msgstr "تم حذف الفرصة بنجاح." -#: inventory/views.py:3054 +#: inventory/views.py:3113 msgid "Notification marked as read." msgstr "تم تمييز الإشعار كمقروء." -#: inventory/views.py:3080 +#: inventory/views.py:3139 msgid "Service created successfully." msgstr "تم إنشاء الخدمة بنجاح." -#: inventory/views.py:3096 +#: inventory/views.py:3155 msgid "Service updated successfully." msgstr "تم تحديث الخدمة بنجاح." -#: inventory/views.py:3219 inventory/views.py:3244 +#: inventory/views.py:3278 inventory/views.py:3303 msgid "Bill updated successfully." msgstr "تم تحديث الفاتورة بنجاح." -#: inventory/views.py:3270 +#: inventory/views.py:3329 msgid "Bill is already approved." msgstr "تمت الموافقة على الفاتورة مسبقًا." -#: inventory/views.py:3274 +#: inventory/views.py:3333 msgid "Bill marked as approved successfully." msgstr "تم تحديد الفاتورة كموافقة بنجاح." -#: inventory/views.py:3283 +#: inventory/views.py:3342 msgid "Bill is already paid." msgstr "تم دفع الفاتورة مسبقًا." -#: inventory/views.py:3292 +#: inventory/views.py:3351 msgid "Bill marked as paid successfully." msgstr "تم تحديد الفاتورة كمدفوعة بنجاح." -#: inventory/views.py:3294 +#: inventory/views.py:3353 msgid "Amount paid is not equal to amount due." msgstr "المبلغ المدفوع لا يساوي المبلغ المستحق." +#: inventory/views.py:3765 templates/header.html:259 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:23 +#: venv/lib/python3.11/site-packages/django_ledger/views/entity.py:210 +msgid "Dashboard" +msgstr "لوحة القيادة" + #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:9 msgid "Account Inactive" @@ -1810,10 +1838,10 @@ msgstr "" #: templates/account/confirm_email_verification_code.html:27 #: templates/account/email_confirm.html:35 #: templates/account/reauthenticate.html:18 -#: templates/inventory/transfer_details.html:26 -#: templates/inventory/transfer_details.html:45 +#: templates/inventory/transfer_details.html:27 #: templates/ledger/bills/bill_detail.html:11 #: templates/ledger/bills/bill_detail.html:36 +#: templates/plans/billing_info_delete.html:13 #: templates/sales/estimates/estimate_detail.html:11 #: templates/sales/invoices/invoice_detail.html:11 #: templates/sales/invoices/invoice_detail.html:36 @@ -1827,14 +1855,15 @@ msgstr "تأكيد" #: templates/crm/leads/lead_form.html:17 #: templates/crm/opportunities/opportunity_form.html:89 #: templates/inventory/add_colors.html:56 -#: templates/inventory/add_custom_card.html:8 +#: templates/inventory/add_custom_card.html:12 #: templates/inventory/car_confirm_delete.html:14 -#: templates/inventory/car_detail.html:248 +#: templates/inventory/car_detail.html:270 #: templates/inventory/car_finance_form.html:41 +#: templates/inventory/car_registration_form.html:13 #: templates/inventory/color_palette.html:107 #: templates/inventory/reserve_car.html:30 -#: templates/inventory/transfer_preview.html:223 -#: templates/inventory/transfer_preview.html:242 +#: templates/inventory/transfer_preview.html:181 +#: templates/inventory/transfer_preview.html:200 #: templates/ledger/bank_accounts/bank_account_form.html:33 #: templates/ledger/bills/bill_form.html:42 #: templates/ledger/bills/bill_update_form.html:18 @@ -1861,7 +1890,7 @@ msgstr "إلغاء" #: templates/account/confirm_login_code..html:35 templates/account/login.html:6 #: templates/account/login.html:21 templates/account/login.html:45 #: templates/account/request_login_code.html:5 templates/account/signup.html:80 -#: templates/header.html:434 templates/welcome.html:77 +#: templates/header.html:452 templates/welcome.html:77 msgid "Sign In" msgstr "تسجيل الدخول" @@ -2215,7 +2244,7 @@ msgstr "إذا لم تقم بإنشاء حساب بعد، يرجى التسجي #: templates/account/login.html:52 templates/account/signup-wizard.html:16 #: templates/account/signup.html:5 templates/account/signup.html:79 -#: templates/header.html:437 templates/welcome.html:78 +#: templates/header.html:455 templates/welcome.html:78 msgid "Sign Up" msgstr "إنشاء حساب" @@ -2228,7 +2257,7 @@ msgid "Mail me a sign-in code" msgstr "أرسل لي رمز تسجيل الدخول عبر البريد الإلكتروني" #: templates/account/logout.html:3 templates/account/logout.html:11 -#: templates/account/logout.html:20 templates/header.html:427 +#: templates/account/logout.html:20 templates/header.html:445 msgid "Sign Out" msgstr "تسجيل الخروج" @@ -2291,8 +2320,11 @@ msgid "Enter the verification code" msgstr "أدخل رمز التحقق" #: templates/account/otp_verification.html:18 -msgid "An email containing a 6-digit verification code has been sent to your email." -msgstr "تم إرسال بريد إلكتروني يحتوي على رمز تحقق مكون من 6 أرقام إلى بريدك الإلكتروني." +msgid "" +"An email containing a 6-digit verification code has been sent to your email." +msgstr "" +"تم إرسال بريد إلكتروني يحتوي على رمز تحقق مكون من 6 أرقام إلى بريدك " +"الإلكتروني." #: templates/account/otp_verification.html:29 templates/otp/verify_otp.html:30 msgid "Verify" @@ -2450,13 +2482,13 @@ msgstr "السابق" msgid "Next" msgstr "التالي" -#: templates/account/signup-wizard.html:152 +#: templates/account/signup-wizard.html:140 #: templates/inventory/car_form.html:606 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:654 msgid "Please Wait" msgstr "الرجاء الإنتظار" -#: templates/account/signup-wizard.html:153 +#: templates/account/signup-wizard.html:141 #: templates/inventory/car_form.html:607 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:655 msgid "Loading" @@ -2546,8 +2578,9 @@ msgstr "" #: templates/email_sender/reminder_email.html:80 #: templates/email_sender/reschedule_email.html:64 #: templates/email_sender/reschedule_email.html:69 -#: templates/inventory/car_detail.html:287 -#: templates/inventory/transfer_preview.html:261 +#: templates/inventory/car_detail.html:309 +#: templates/inventory/transfer_details.html:59 +#: templates/inventory/transfer_preview.html:219 #: templates/ledger/coa_accounts/account_detail.html:64 #: templates/sales/estimates/estimate_preview.html:262 #: templates/sales/estimates/sale_order_preview.html:226 @@ -2716,10 +2749,11 @@ msgstr "" #: templates/crm/opportunities/opportunity_form.html:88 #: templates/customers/customer_form.html:29 #: templates/inventory/add_colors.html:55 -#: templates/inventory/add_custom_card.html:7 +#: templates/inventory/add_custom_card.html:17 #: templates/inventory/car_edit.html:12 #: templates/inventory/car_finance_form.html:40 #: templates/inventory/car_location_form.html:18 +#: templates/inventory/car_registration_form.html:18 #: templates/inventory/color_palette.html:106 #: templates/items/expenses/expense_create.html:16 #: templates/items/expenses/expense_update.html:16 @@ -2792,7 +2826,7 @@ msgstr "المدة" #: templates/administration/service_list.html:25 #: templates/administration/user_profile.html:106 #: templates/administration/user_profile.html:172 -#: templates/inventory/car_detail.html:283 +#: templates/inventory/car_detail.html:305 #: templates/items/expenses/expenses_list.html:22 #: templates/items/service/service_list.html:24 #: templates/ledger/bank_accounts/bank_account_list.html:21 @@ -2962,7 +2996,7 @@ msgstr "أعضاء الفريق" #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:71 #: templates/crm/opportunities/opportunity_list.html:65 #: templates/inventory/car_form.html:224 -#: templates/inventory/inventory_stats.html:48 +#: templates/inventory/inventory_stats.html:63 #: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_list.html:40 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:43 msgid "Details" @@ -3185,14 +3219,15 @@ msgid "Payment Details" msgstr "تفاصيل الدفع" #: templates/appointment/appointment_client_information.html:101 -#: templates/inventory/car_detail.html:157 -#: templates/inventory/inventory_stats.html:57 -#: templates/inventory/transfer_preview.html:274 +#: templates/inventory/car_detail.html:179 +#: templates/inventory/inventory_stats.html:72 +#: templates/inventory/transfer_details.html:74 +#: templates/inventory/transfer_preview.html:232 #: templates/ledger/bills/bill_detail.html:216 #: templates/ledger/coa_accounts/account_detail.html:100 -#: templates/ledger/reports/tags/balance_sheet_statement.html:92 +#: templates/ledger/reports/tags/balance_sheet_statement.html:55 #: templates/plans/order_detail_table.html:12 -#: templates/sales/estimates/estimate_detail.html:128 +#: templates/sales/estimates/estimate_detail.html:125 #: templates/sales/estimates/estimate_preview.html:276 #: templates/sales/estimates/sale_order_preview.html:244 #: templates/sales/invoices/invoice_detail.html:218 @@ -3437,9 +3472,9 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا العميل الم #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:155 #: templates/customers/customer_list.html:93 #: templates/customers/view_customer.html:26 -#: templates/inventory/car_detail.html:357 -#: templates/inventory/transfer_details.html:23 -#: templates/inventory/transfer_details.html:44 +#: templates/inventory/car_detail.html:402 +#: templates/inventory/transfer_details.html:24 +#: templates/inventory/transfer_details.html:46 #: templates/ledger/bank_accounts/bank_account_detail.html:26 #: templates/ledger/bills/bill_detail.html:20 #: templates/ledger/bills/bill_detail.html:45 @@ -3463,7 +3498,8 @@ msgstr "لا" #: templates/crm/leads/lead_list.html:98 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:158 #: templates/customers/view_customer.html:31 -#: templates/inventory/car_detail.html:361 +#: templates/inventory/car_detail.html:407 +#: templates/inventory/transfer_details.html:47 #: templates/ledger/bank_accounts/bank_account_detail.html:31 #: templates/ledger/bills/bill_detail.html:24 #: templates/ledger/bills/bill_detail.html:49 @@ -3487,8 +3523,8 @@ msgstr "نعم" #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:27 #: templates/customers/customer_list.html:126 #: templates/dealers/dealer_detail.html:24 -#: templates/inventory/car_detail.html:115 -#: templates/inventory/car_detail.html:163 +#: templates/inventory/car_detail.html:137 +#: templates/inventory/car_detail.html:185 #: templates/ledger/bank_accounts/bank_account_detail.html:57 #: templates/ledger/coa_accounts/account_detail.html:114 #: templates/modal/event_details_modal.html:25 @@ -3527,6 +3563,7 @@ msgid "Amount" msgstr "المبلغ" #: templates/crm/opportunities/opportunity_detail.html:196 +#: templates/ledger/reports/dashboard.html:44 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:5 msgid "Revenue" msgstr "الإيرادات" @@ -3628,6 +3665,10 @@ msgstr "تفاصيل العميل" #: templates/items/expenses/expenses_list.html:34 #: templates/items/service/service_list.html:44 #: templates/ledger/bank_accounts/bank_account_list.html:33 +#: templates/ledger/reports/tags/income_statement.html:104 +#: templates/ledger/reports/tags/income_statement.html:178 +#: templates/ledger/reports/tags/income_statement.html:252 +#: templates/ledger/reports/tags/income_statement.html:313 #: venv/lib/python3.11/site-packages/appointment/services.py:170 #: venv/lib/python3.11/site-packages/appointment/views_admin.py:374 #: venv/lib/python3.11/site-packages/appointment/views_admin.py:471 @@ -3734,7 +3775,7 @@ msgid "Active" msgstr "نشط" #: templates/dealers/dealer_detail.html:67 -#: templates/inventory/car_detail.html:253 templates/plans/current.html:23 +#: templates/inventory/car_detail.html:275 templates/plans/current.html:23 msgid "Expired" msgstr "منتهي الصلاحية" @@ -3863,7 +3904,7 @@ msgid "This is a reminder for your upcoming appointment." msgstr "هذه تذكرة بموعدك القادم." #: templates/email_sender/reminder_email.html:83 -#: templates/inventory/car_detail.html:97 +#: templates/inventory/car_detail.html:119 #: venv/lib/python3.11/site-packages/appointment/templates/email_sender/reminder_email.html:83 msgid "Location" msgstr "الموقع" @@ -4214,6 +4255,7 @@ msgstr "الخدمات" #: templates/items/expenses/expenses_list.html:4 #: templates/items/expenses/expenses_list.html:10 #: templates/items/service/service_list.html:4 +#: templates/ledger/reports/dashboard.html:48 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:8 msgid "Expenses" msgstr "المصروفات" @@ -4232,7 +4274,11 @@ msgstr "الفواتير" msgid "Reports" msgstr "التقارير" -#: templates/header.html:259 templates/ledger/reports/income_statement.html:31 +#: templates/header.html:268 +msgid "Cash Flow" +msgstr "التدفق النقدي" + +#: templates/header.html:277 templates/ledger/reports/income_statement.html:31 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:146 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_update.html:71 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:31 @@ -4243,7 +4289,7 @@ msgstr "التقارير" msgid "Income Statement" msgstr "بيان الدخل" -#: templates/header.html:268 templates/ledger/reports/balance_sheet.html:36 +#: templates/header.html:286 templates/ledger/reports/balance_sheet.html:36 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:144 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_update.html:66 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:30 @@ -4255,7 +4301,7 @@ msgstr "بيان الدخل" msgid "Balance Sheet" msgstr "الميزانية العمومية" -#: templates/header.html:397 templates/header.html:401 +#: templates/header.html:415 templates/header.html:419 msgid "profile" msgstr "الملف الشخصي" @@ -4310,7 +4356,7 @@ msgid "trim" msgstr "الفئة" #: templates/inventory/car_detail.html:69 -#: templates/inventory/car_detail.html:372 +#: templates/inventory/car_detail.html:421 #: templates/inventory/car_form.html:111 templates/inventory/car_form.html:224 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:252 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:279 @@ -4330,67 +4376,70 @@ msgid "view" msgstr "عرض" #: templates/inventory/car_detail.html:90 -#: templates/inventory/car_detail.html:106 -#: templates/inventory/car_detail.html:168 -#: templates/inventory/car_detail.html:212 +#: templates/inventory/car_detail.html:112 +#: templates/inventory/car_detail.html:128 +#: templates/inventory/car_detail.html:190 +#: templates/inventory/car_detail.html:234 #: templates/inventory/car_location_form.html:10 #: venv/lib/python3.11/site-packages/appointment/services.py:170 msgid "Add" msgstr "إضافة" -#: templates/inventory/car_detail.html:100 +#: templates/inventory/car_detail.html:122 #: templates/inventory/car_inventory.html:92 msgid "Our Showroom" msgstr "معرضنا" -#: templates/inventory/car_detail.html:104 +#: templates/inventory/car_detail.html:126 msgid "No location available." msgstr "لا يوجد موقع متاح." -#: templates/inventory/car_detail.html:122 +#: templates/inventory/car_detail.html:144 msgid "Financial Details" msgstr "التفاصيل المالية" -#: templates/inventory/car_detail.html:141 +#: templates/inventory/car_detail.html:163 msgid "Additional Fee" msgstr "رسوم إضافية" -#: templates/inventory/car_detail.html:153 +#: templates/inventory/car_detail.html:175 msgid "VAT Amount" msgstr "مبلغ ضريبة القيمة المضافة" -#: templates/inventory/car_detail.html:166 +#: templates/inventory/car_detail.html:188 msgid "No finance details available." msgstr "لا توجد تفاصيل مالية متاحة." -#: templates/inventory/car_detail.html:178 +#: templates/inventory/car_detail.html:200 msgid "Colors Details" msgstr "تفاصيل الألوان" -#: templates/inventory/car_detail.html:185 +#: templates/inventory/car_detail.html:207 msgid "Exterior" msgstr "الخارجي" -#: templates/inventory/car_detail.html:194 +#: templates/inventory/car_detail.html:216 msgid "Interior" msgstr "الداخلي" -#: templates/inventory/car_detail.html:206 +#: templates/inventory/car_detail.html:228 msgid "No colors available for this car." msgstr "لا تتوفر ألوان لهذه السيارة." -#: templates/inventory/car_detail.html:223 +#: templates/inventory/car_detail.html:245 msgid "Reservations Details" msgstr "تفاصيل الحجز" -#: templates/inventory/car_detail.html:231 +#: templates/inventory/car_detail.html:253 msgid "Expires At" msgstr "ينتهي في" -#: templates/inventory/car_detail.html:232 +#: templates/inventory/car_detail.html:254 #: templates/ledger/coa_accounts/account_detail.html:69 -#: templates/ledger/reports/tags/balance_sheet_statement.html:27 -#: templates/ledger/reports/tags/balance_sheet_statement.html:57 +#: templates/ledger/reports/tags/income_statement.html:95 +#: templates/ledger/reports/tags/income_statement.html:169 +#: templates/ledger/reports/tags/income_statement.html:243 +#: templates/ledger/reports/tags/income_statement.html:304 #: templates/representatives/representative_list.html:20 #: templates/sales/estimates/estimate_list.html:19 #: templates/sales/invoices/invoice_list.html:20 @@ -4428,56 +4477,43 @@ msgstr "ينتهي في" msgid "Actions" msgstr "الإجراءات" -#: templates/inventory/car_detail.html:245 +#: templates/inventory/car_detail.html:267 msgid "Renew" msgstr "تجديد" -#: templates/inventory/car_detail.html:262 +#: templates/inventory/car_detail.html:284 #: templates/inventory/reserve_car.html:29 msgid "Reserve" msgstr "حجز" -#: templates/inventory/car_detail.html:277 +#: templates/inventory/car_detail.html:299 +#: templates/inventory/transfer_details.html:57 msgid "Transfer Details" msgstr "تفاصيل النقل" -#: templates/inventory/car_detail.html:285 +#: templates/inventory/car_detail.html:307 msgid "From Showroom" msgstr "من صالة العرض" -#: templates/inventory/car_detail.html:286 +#: templates/inventory/car_detail.html:308 msgid "To Showroom" msgstr "إلى صالة العرض" -#: templates/inventory/car_detail.html:353 +#: templates/inventory/car_detail.html:390 msgid "Are you sure you want to reserve this car?" msgstr "هل أنت متأكد أنك تريد حجز هذه السيارة؟" -#: templates/inventory/car_detail.html:379 -#: templates/inventory/car_form.html:234 templates/inventory/car_form.html:253 -#: templates/inventory/car_form.html:273 templates/inventory/car_form.html:285 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:281 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:287 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:301 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:321 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:333 -#: templates/modal/confirm_modal.html:18 templates/modal/error_modal.html:17 -#: templates/modal/event_details_modal.html:19 -#: templates/partials/scanner_modal.html:6 -#: templates/partials/specifications_modal.html:8 -#: venv/lib/python3.11/site-packages/appointment/templates/modal/confirm_modal.html:18 -#: venv/lib/python3.11/site-packages/appointment/templates/modal/error_modal.html:17 -#: venv/lib/python3.11/site-packages/appointment/templates/modal/event_details_modal.html:19 -msgid "Close" -msgstr "إغلاق" +#: templates/inventory/car_detail.html:473 +msgid "Error loading form. Please try again later" +msgstr "" -#: templates/inventory/car_detail.html:456 +#: templates/inventory/car_detail.html:511 #: templates/inventory/car_list.html:542 #: templates/partials/specifications_modal.html:11 msgid "No specifications available." msgstr "لا توجد مواصفات متاحة." -#: templates/inventory/car_detail.html:460 +#: templates/inventory/car_detail.html:515 #: templates/inventory/car_list.html:546 msgid "Error loading specifications." msgstr "حدث خطأ أثناء تحميل المواصفات." @@ -4535,6 +4571,23 @@ msgstr "حفظ وإضافة آخر" msgid "Save and Go to Inventory" msgstr "حفظ والانتقال إلى المخزون" +#: templates/inventory/car_form.html:234 templates/inventory/car_form.html:253 +#: templates/inventory/car_form.html:273 templates/inventory/car_form.html:285 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:281 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:287 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:301 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:321 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:333 +#: templates/modal/confirm_modal.html:18 templates/modal/error_modal.html:17 +#: templates/modal/event_details_modal.html:19 +#: templates/partials/scanner_modal.html:6 +#: templates/partials/specifications_modal.html:8 +#: venv/lib/python3.11/site-packages/appointment/templates/modal/confirm_modal.html:18 +#: venv/lib/python3.11/site-packages/appointment/templates/modal/error_modal.html:17 +#: venv/lib/python3.11/site-packages/appointment/templates/modal/event_details_modal.html:19 +msgid "Close" +msgstr "إغلاق" + #: templates/inventory/car_form.html:251 #: venv/lib/python3.11/site-packages/click/core.py:1396 msgid "Options" @@ -4676,23 +4729,19 @@ msgstr "إضافة لون الى" msgid "Color Type" msgstr "نوع اللون" -#: templates/inventory/inventory_stats.html:5 -msgid "Inventory Statistics" -msgstr "إحصائيات المخزون" - -#: templates/inventory/inventory_stats.html:36 +#: templates/inventory/inventory_stats.html:51 msgid "models" msgstr "الموديلات" -#: templates/inventory/inventory_stats.html:51 +#: templates/inventory/inventory_stats.html:66 msgid "Trims" msgstr "الفئات" -#: templates/inventory/inventory_stats.html:60 +#: templates/inventory/inventory_stats.html:75 msgid "No trims available" msgstr "لا يوجد فئات متاحة." -#: templates/inventory/inventory_stats.html:66 +#: templates/inventory/inventory_stats.html:81 msgid "No models available." msgstr "لا توجد موديلات متاحة." @@ -4716,96 +4765,116 @@ msgstr "نقل السيارة" msgid "transfer car" msgstr "نقل السيارة" -#: templates/inventory/transfer_details.html:7 +#: templates/inventory/transfer_details.html:8 msgid "Car Transfer Details" msgstr "تفاصيل نقل السيارة" -#: templates/inventory/transfer_details.html:16 +#: templates/inventory/transfer_details.html:17 msgid "Car Transfer Approve" msgstr "الموافقة على نقل السيارة" -#: templates/inventory/transfer_details.html:20 -#: templates/inventory/transfer_details.html:41 +#: templates/inventory/transfer_details.html:21 #: templates/two_factor/profile/profile.html:21 msgid "Are you sure?" msgstr "هل أنت متأكد؟" -#: templates/inventory/transfer_details.html:37 -msgid "Car Transfer Cancel" -msgstr "إلغاء نقل السيارة" +#: templates/inventory/transfer_details.html:38 +#: templates/inventory/transfer_details.html:107 +msgid "Cancel Transfer" +msgstr "إلغاء النقل" -#: templates/inventory/transfer_details.html:58 +#: templates/inventory/transfer_details.html:42 +#: templates/ledger/bills/bill_detail.html:15 +#: templates/ledger/bills/bill_detail.html:40 +#: templates/sales/estimates/estimate_detail.html:15 +#: templates/sales/invoices/invoice_detail.html:15 +#: templates/sales/invoices/invoice_detail.html:40 +msgid "Are you sure" +msgstr "هل أنت متأكد" + +#: templates/inventory/transfer_details.html:60 +#: templates/inventory/transfer_preview.html:220 +msgid "From" +msgstr "من" + +#: templates/inventory/transfer_details.html:61 +#: templates/inventory/transfer_preview.html:221 +msgid "To" +msgstr "إلى" + +#: templates/inventory/transfer_details.html:73 +#: templates/plans/order_detail_table.html:10 +#: templates/sales/estimates/estimate_preview.html:294 +#: templates/sales/estimates/sale_order_preview.html:265 +#: templates/sales/invoices/invoice_detail.html:238 +msgid "VAT" +msgstr "ضريبة القيمة المضافة" + +#: templates/inventory/transfer_details.html:92 +#: templates/inventory/transfer_preview.html:249 +#: templates/sales/estimates/estimate_preview.html:305 +#: templates/sales/estimates/sale_order_preview.html:276 +msgid "Total Amount" +msgstr "المبلغ الإجمالي" + +#: templates/inventory/transfer_details.html:93 +msgid "Total Amount written" +msgstr "المبلغ بالحروف" + +#: templates/inventory/transfer_details.html:93 +msgid "only" +msgstr "فقط لا غير" + +#: templates/inventory/transfer_details.html:104 #: 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/inventory/transfer_details.html:61 -msgid "Cancel Transfer" -msgstr "إلغاء النقل" - -#: templates/inventory/transfer_details.html:63 -msgid "Return" -msgstr "عودة" - -#: templates/inventory/transfer_preview.html:201 +#: templates/inventory/transfer_preview.html:159 msgid "Download transfer" msgstr "تحميل النقل" -#: templates/inventory/transfer_preview.html:204 -#: templates/inventory/transfer_preview.html:216 +#: templates/inventory/transfer_preview.html:162 +#: templates/inventory/transfer_preview.html:174 msgid "Accept transfer" msgstr "قبول النقل" -#: templates/inventory/transfer_preview.html:207 -#: templates/inventory/transfer_preview.html:235 +#: templates/inventory/transfer_preview.html:165 +#: templates/inventory/transfer_preview.html:193 msgid "Reject transfer" msgstr "رفض النقل" -#: templates/inventory/transfer_preview.html:220 +#: templates/inventory/transfer_preview.html:178 msgid "Are you sure you want to accept this transfer?" msgstr "هل أنت متأكد أنك تريد قبول هذا النقل؟" -#: templates/inventory/transfer_preview.html:239 +#: templates/inventory/transfer_preview.html:197 msgid "Are you sure you want to reject this transfer?" msgstr "هل أنت متأكد أنك تريد رفض هذا النقل؟" -#: templates/inventory/transfer_preview.html:256 +#: templates/inventory/transfer_preview.html:214 #: templates/sales/estimates/estimate_preview.html:256 #: templates/sales/estimates/sale_order_preview.html:219 msgid "Thank you for choosing us. We appreciate your business" msgstr "شكرًا لاختيارك لنا. نحن نقدر عملك معنا." -#: templates/inventory/transfer_preview.html:262 -msgid "From" -msgstr "من" - -#: templates/inventory/transfer_preview.html:263 -msgid "To" -msgstr "إلى" - -#: templates/inventory/transfer_preview.html:273 +#: templates/inventory/transfer_preview.html:231 #: templates/ledger/bills/bill_detail.html:215 -#: templates/sales/estimates/estimate_detail.html:127 +#: templates/sales/estimates/estimate_detail.html:124 #: templates/sales/estimates/estimate_preview.html:275 #: templates/sales/estimates/sale_order_preview.html:243 #: templates/sales/invoices/invoice_detail.html:217 msgid "Unit Price" msgstr "سعر الوحدة" -#: templates/inventory/transfer_preview.html:291 -#: templates/sales/estimates/estimate_preview.html:305 -#: templates/sales/estimates/sale_order_preview.html:276 -msgid "Total Amount" -msgstr "المبلغ الإجمالي" - -#: templates/inventory/transfer_preview.html:296 +#: templates/inventory/transfer_preview.html:254 #: templates/sales/estimates/estimate_preview.html:310 #: templates/sales/estimates/sale_order_preview.html:281 msgid "If you have any questions, feel free to contact us at" msgstr "إذا كان لديك أي أسئلة، يرجى التواصل معنا على" -#: templates/inventory/transfer_preview.html:297 +#: templates/inventory/transfer_preview.html:255 #: templates/sales/estimates/estimate_preview.html:311 #: templates/sales/estimates/sale_order_preview.html:282 msgid "Thank you for your business" @@ -4902,6 +4971,7 @@ msgid "Add Bank Account" msgstr "إضافة حساب بنكي" #: templates/ledger/bank_accounts/bank_account_list.html:19 +#: templates/ledger/reports/tags/income_statement.html:8 #: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:83 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:1134 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:8 @@ -4923,14 +4993,6 @@ msgstr "لم يتم العثور على أي حساب بنكي." msgid "View Bill" msgstr "عرض الفاتورة" -#: templates/ledger/bills/bill_detail.html:15 -#: templates/ledger/bills/bill_detail.html:40 -#: templates/sales/estimates/estimate_detail.html:15 -#: templates/sales/invoices/invoice_detail.html:15 -#: templates/sales/invoices/invoice_detail.html:40 -msgid "Are you sure" -msgstr "هل أنت متأكد" - #: templates/ledger/bills/bill_detail.html:61 #: templates/ledger/bills/bill_update_form.html:4 #: templates/ledger/bills/bill_update_form.html:7 @@ -5019,7 +5081,7 @@ msgid "bill Status" msgstr "حالة الفاتورة" #: templates/ledger/bills/bill_detail.html:193 -#: templates/sales/estimates/estimate_detail.html:105 +#: templates/sales/estimates/estimate_detail.html:102 #: templates/sales/estimates/estimate_list.html:31 #: templates/sales/invoices/invoice_detail.html:195 #: templates/sales/invoices/invoice_list.html:38 @@ -5049,7 +5111,7 @@ msgid "Vat Amount" msgstr "مبلغ ضريبة القيمة المضافة" #: templates/ledger/bills/bill_detail.html:236 -#: templates/sales/estimates/estimate_detail.html:163 +#: templates/sales/estimates/estimate_detail.html:160 #: templates/sales/invoices/invoice_detail.html:252 msgid "Grand Total" msgstr "الإجمالي" @@ -5110,7 +5172,7 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا الحساب؟" #: templates/ledger/coa_accounts/account_detail.html:39 #: templates/ledger/coa_accounts/account_list.html:43 -#: templates/ledger/reports/tags/balance_sheet_statement.html:21 +#: templates/ledger/reports/tags/balance_sheet_statement.html:14 #: templates/sales/payments/payment_details.html:16 #: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:82 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:428 @@ -5122,7 +5184,7 @@ msgid "Account Name" msgstr "اسم الحساب" #: templates/ledger/coa_accounts/account_detail.html:42 -#: templates/ledger/reports/tags/balance_sheet_statement.html:20 +#: templates/ledger/reports/tags/balance_sheet_statement.html:13 #: templates/sales/payments/payment_details.html:17 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:427 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:20 @@ -5132,7 +5194,8 @@ msgstr "رمز الحساب" #: templates/ledger/coa_accounts/account_detail.html:48 #: templates/ledger/coa_accounts/account_detail.html:50 #: templates/ledger/coa_accounts/account_list.html:45 -#: templates/ledger/reports/tags/balance_sheet_statement.html:25 +#: templates/ledger/reports/tags/balance_sheet_statement.html:18 +#: templates/ledger/reports/tags/income_statement.html:13 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:26 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:25 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:13 @@ -5203,8 +5266,10 @@ msgid "No account found." msgstr "لم يتم العثور على حساب." #: templates/ledger/reports/balance_sheet.html:38 +#: templates/ledger/reports/cash_flow_statement.html:33 #: templates/ledger/reports/income_statement.html:28 -#: templates/ledger/reports/tags/balance_sheet_statement.html:23 +#: templates/ledger/reports/tags/balance_sheet_statement.html:16 +#: templates/ledger/reports/tags/income_statement.html:11 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:23 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:9 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:32 @@ -5219,6 +5284,7 @@ msgid "Unit" msgstr "الوحدة" #: templates/ledger/reports/balance_sheet.html:43 +#: templates/ledger/reports/cash_flow_statement.html:38 #: templates/ledger/reports/components/period_navigator.html:9 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3158 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:37 @@ -5226,65 +5292,254 @@ msgstr "الوحدة" msgid "Fiscal Year" msgstr "السنة المالية" -#: templates/ledger/reports/components/period_navigator.html:29 -msgid "Quarter" -msgstr "ربع السنة" +#: templates/ledger/reports/cash_flow_statement.html:31 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:148 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:31 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:135 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:54 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:29 +msgid "Cash Flow Statement" +msgstr "بيان التدفقات النقدية" -#: templates/ledger/reports/components/period_navigator.html:40 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:26 -msgid "Month" -msgstr "الشهر" - -#: templates/ledger/reports/components/period_navigator.html:55 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:37 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:17 -msgid "thru" -msgstr "عبر" - -#: templates/ledger/reports/components/period_navigator.html:64 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:41 -msgid "Go To Current Month" -msgstr "الذهاب إلى الشهر الحالي" - -#: templates/ledger/reports/income_statement.html:56 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:54 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:57 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:56 -msgid "By Unit" -msgstr "حسب الوحدة" - -#: templates/ledger/reports/income_statement.html:59 +#: templates/ledger/reports/cash_flow_statement.html:49 +#: templates/ledger/reports/income_statement.html:47 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:57 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:60 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:59 msgid "Download PDF" msgstr "تنزيل PDF" -#: templates/ledger/reports/tags/balance_sheet_statement.html:26 +#: templates/ledger/reports/components/period_navigator.html:41 +msgid "Quarter" +msgstr "ربع السنة" + +#: templates/ledger/reports/components/period_navigator.html:52 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:26 +msgid "Month" +msgstr "الشهر" + +#: templates/ledger/reports/components/period_navigator.html:67 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:37 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:17 +msgid "thru" +msgstr "عبر" + +#: templates/ledger/reports/components/period_navigator.html:76 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/period_navigator.html:41 +msgid "Go To Current Month" +msgstr "الذهاب إلى الشهر الحالي" + +#: templates/ledger/reports/dashboard-copy.html:43 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:439 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:525 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:50 +msgid "Receivables" +msgstr "المستحقات" + +#: templates/ledger/reports/dashboard-copy.html:75 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:83 +msgid "Payables" +msgstr "الحسابات الدائنة" + +#: templates/ledger/reports/dashboard.html:20 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:5 +msgid "Assets" +msgstr "الأصول" + +#: templates/ledger/reports/dashboard.html:24 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:8 +msgid "Liabilities" +msgstr "الالتزامات" + +#: templates/ledger/reports/dashboard.html:28 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:11 +msgid "Equity" +msgstr "حقوق الملكية" + +#: templates/ledger/reports/dashboard.html:52 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:11 +msgid "Earnings (Loss)" +msgstr "الأرباح (الخسارة)" + +#: templates/ledger/reports/dashboard.html:61 +msgid "Net Receivables" +msgstr "صافي الذمم المدينة" + +#: templates/ledger/reports/dashboard.html:62 +msgid "According to the sales data" +msgstr "وفقًا لبيانات المبيعات" + +#: templates/ledger/reports/dashboard.html:74 +msgid "Financial Analysis" +msgstr "التحليل المالي" + +#: templates/ledger/reports/dashboard.html:75 +msgid "Solvency" +msgstr "الملاءة المالية" + +#: templates/ledger/reports/dashboard.html:76 +msgid "Current Ratio" +msgstr "نسبة التداول" + +#: templates/ledger/reports/dashboard.html:83 +msgid "Quick Ratio" +msgstr "النسبة السريعة" + +#: templates/ledger/reports/dashboard.html:91 +msgid "Leverage" +msgstr "الرافعة المالية" + +#: templates/ledger/reports/dashboard.html:92 +msgid "Debt to Equity" +msgstr "نسبة الدين إلى حقوق الملكية" + +#: templates/ledger/reports/dashboard.html:101 +msgid "Profitability" +msgstr "الربحية" + +#: templates/ledger/reports/dashboard.html:102 +msgid "Return on Equity" +msgstr "العائد على حقوق الملكية" + +#: templates/ledger/reports/dashboard.html:110 +msgid "Return on Assets" +msgstr "العائد على الأصول" + +#: templates/ledger/reports/dashboard.html:117 +msgid "Net Profit Margin" +msgstr "هامش الربح الصافي" + +#: templates/ledger/reports/dashboard.html:124 +msgid "Gross Profit Margin" +msgstr "هامش الربح الإجمالي" + +#: templates/ledger/reports/dashboard.html:144 +msgid "Start Date" +msgstr "تاريخ البدء" + +#: templates/ledger/reports/dashboard.html:148 +msgid "End Date" +msgstr "تاريخ الانتهاء" + +#: templates/ledger/reports/dashboard.html:151 +msgid "Apply" +msgstr "تطبيق" + +#: templates/ledger/reports/tags/balance_sheet_statement.html:19 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:26 msgid "Balance Through" msgstr "الرصيد حتى" -#: templates/ledger/reports/tags/balance_sheet_statement.html:77 +#: templates/ledger/reports/tags/balance_sheet_statement.html:43 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:76 msgid "Total:" msgstr "المجموع:" -#: templates/ledger/reports/tags/balance_sheet_statement.html:108 +#: templates/ledger/reports/tags/balance_sheet_statement.html:69 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:107 msgid "Retained Earnings" msgstr "الأرباح المحتجزة" -#: templates/ledger/reports/tags/balance_sheet_statement.html:119 +#: templates/ledger/reports/tags/balance_sheet_statement.html:80 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:118 msgid "Total EQUITY" msgstr "إجمالي حقوق الملكية" -#: templates/ledger/reports/tags/balance_sheet_statement.html:129 +#: templates/ledger/reports/tags/balance_sheet_statement.html:91 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:128 msgid "Total Equity + Liabilities" msgstr "إجمالي حقوق الملكية + الالتزامات" +#: templates/ledger/reports/tags/income_statement.html:14 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:14 +msgid "Balance" +msgstr "الرصيد" + +#: templates/ledger/reports/tags/income_statement.html:20 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:20 +msgid "Operating Revenues" +msgstr "الإيرادات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:57 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:74 +msgid "Net Operating Revenues" +msgstr "صافي الإيرادات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:65 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:82 +msgid "Less: Cost of Goods Sold" +msgstr "ناقص: تكلفة البضائع المباعة" + +#: templates/ledger/reports/tags/income_statement.html:102 +#: templates/ledger/reports/tags/income_statement.html:176 +#: templates/ledger/reports/tags/income_statement.html:250 +#: templates/ledger/reports/tags/income_statement.html:311 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:100 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:64 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:58 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:119 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:193 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:267 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:328 +msgid "Detail" +msgstr "التفاصيل" + +#: templates/ledger/reports/tags/income_statement.html:118 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:135 +msgid "Net COGS" +msgstr "صافي تكلفة البضائع المباعة" + +#: templates/ledger/reports/tags/income_statement.html:131 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:148 +msgid "Gross Profit" +msgstr "الربح الإجمالي" + +#: templates/ledger/reports/tags/income_statement.html:139 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:156 +msgid "Operating Expenses" +msgstr "المصروفات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:191 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:208 +msgid "Net Operating Expenses" +msgstr "صافي المصروفات التشغيلية" + +#: templates/ledger/reports/tags/income_statement.html:205 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:222 +msgid "Net Operating Income (Loss)" +msgstr "صافي الدخل التشغيلي (الخسارة)" + +#: templates/ledger/reports/tags/income_statement.html:213 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:230 +msgid "Other Revenues" +msgstr "إيرادات أخرى" + +#: templates/ledger/reports/tags/income_statement.html:265 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:282 +msgid "Net Other Revenues" +msgstr "صافي الإيرادات الأخرى" + +#: templates/ledger/reports/tags/income_statement.html:326 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:343 +msgid "Net Other Expenses" +msgstr "صافي النفقات الأخرى" + +#: templates/ledger/reports/tags/income_statement.html:339 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:356 +msgid "Net Other Income (Loss)" +msgstr "صافي الدخل الآخر (الخسارة)" + +#: templates/ledger/reports/tags/income_statement.html:353 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:370 +msgid "through" +msgstr "خلال" + +#: templates/ledger/reports/tags/income_statement.html:355 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:372 +msgid "Net Income" +msgstr "صافي الدخل" + #: templates/mail/change_plan_body.txt:5 #, python-format msgid "Your current plan is %(plan_name)s and it will expire on %(expire)s. " @@ -5499,7 +5754,11 @@ msgstr "" msgid "Provide billing data" msgstr "تقديم بيانات الفوترة" -#: templates/plans/billing_info_delete.html:9 +#: templates/plans/billing_info_delete.html:7 +msgid "Billing data" +msgstr "بيانات الفوترة" + +#: templates/plans/billing_info_delete.html:11 msgid "Are you sure to delete billing info?" msgstr "هل أنت متأكد من حذف بيانات الفوترة؟" @@ -5516,7 +5775,7 @@ msgstr "" "إذا قمت بخفض خطتك، يرجى ملاحظة أن الحدود الجديدة الأدنى ستُطبق فورًا بعد\n" " إكمال الطلب." -#: templates/plans/create_order.html:19 templates/plans/create_order.html:68 +#: templates/plans/create_order.html:19 templates/plans/create_order.html:66 msgid "Continue" msgstr "متابعة" @@ -5645,7 +5904,7 @@ msgstr "لا" msgid "Pricings" msgstr "السعر" -#: templates/plans/extend.html:44 templates/plans/plan_table.html:71 +#: templates/plans/extend.html:44 msgid "days" msgstr "أيام" @@ -5720,13 +5979,6 @@ msgstr "" msgid "Net price" msgstr "السعر الصافي" -#: templates/plans/order_detail_table.html:10 -#: templates/sales/estimates/estimate_preview.html:294 -#: templates/sales/estimates/sale_order_preview.html:265 -#: templates/sales/invoices/invoice_detail.html:238 -msgid "VAT" -msgstr "ضريبة القيمة المضافة" - #: templates/plans/order_detail_table.html:11 msgid "VAT total" msgstr "إجمالي الضريبة" @@ -5799,6 +6051,10 @@ msgstr "السعر" msgid "Change" msgstr "تغيير" +#: templates/plans/plan_table.html:71 +msgid "day" +msgstr "يوم" + #: templates/plans/plan_table.html:75 msgid "Buy" msgstr "شراء" @@ -5829,10 +6085,6 @@ msgstr "" "href=\"%(upgrade_url)s\" class=\"text-primary\">الخطط المتاحة حاليًا.\n" " " -#: templates/plans/plan_table.html:112 -msgid "Net prices" -msgstr "الأسعار الصافية" - #: templates/plans/pricing.html:5 msgid "See our great value plans" msgstr "اطلع على خططنا ذات القيمة الرائعة" @@ -5860,55 +6112,55 @@ msgstr "لم يتم العثور على ممثلين للشركات." msgid "View Estimate" msgstr "عرض التقدير" -#: templates/sales/estimates/estimate_detail.html:43 +#: templates/sales/estimates/estimate_detail.html:40 msgid "Send Estimate" msgstr "حفظ التقدير" -#: templates/sales/estimates/estimate_detail.html:44 +#: templates/sales/estimates/estimate_detail.html:41 msgid "Mark As Sent" msgstr "وضع كمدفوع" -#: templates/sales/estimates/estimate_detail.html:46 +#: templates/sales/estimates/estimate_detail.html:43 msgid "Mark As Accept" msgstr "وضع كنشط" -#: templates/sales/estimates/estimate_detail.html:51 +#: templates/sales/estimates/estimate_detail.html:48 msgid "Create Sale Order" msgstr "إنشاء أمر بيع" -#: templates/sales/estimates/estimate_detail.html:52 +#: templates/sales/estimates/estimate_detail.html:49 msgid "Preview Sale Order" msgstr "عرض أمر البيع" -#: templates/sales/estimates/estimate_detail.html:55 +#: templates/sales/estimates/estimate_detail.html:52 #: templates/sales/invoices/invoice_detail.html:72 msgid "Preview" msgstr "عرض" -#: templates/sales/estimates/estimate_detail.html:66 +#: templates/sales/estimates/estimate_detail.html:63 #: templates/sales/estimates/estimate_list.html:14 #: templates/sales/estimates/estimate_preview.html:261 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:247 msgid "Estimate Number" msgstr "رقم التقدير" -#: templates/sales/estimates/estimate_detail.html:76 +#: templates/sales/estimates/estimate_detail.html:73 msgid "Estimate Date" msgstr "تاريخ التقدير" -#: templates/sales/estimates/estimate_detail.html:100 +#: templates/sales/estimates/estimate_detail.html:97 msgid "Estimate Status" msgstr "حالة نموذج التقدير" -#: templates/sales/estimates/estimate_detail.html:109 +#: templates/sales/estimates/estimate_detail.html:106 msgid "completed" msgstr "مكتمل" -#: templates/sales/estimates/estimate_detail.html:111 +#: templates/sales/estimates/estimate_detail.html:108 msgid "canceled" msgstr "ملغى" -#: templates/sales/estimates/estimate_detail.html:143 +#: templates/sales/estimates/estimate_detail.html:140 msgid "Vat" msgstr "الضريبة" @@ -6495,7 +6747,7 @@ msgstr "تفاصيل المورد" msgid "Home" msgstr "الرئيسية" -#: templates/welcome.html:70 templates/welcome.html:115 +#: templates/welcome.html:70 templates/welcome.html:116 msgid "Features" msgstr "الميزات" @@ -6508,56 +6760,59 @@ msgid "Your Car Dealership Operations" msgstr "عمليات معرض السيارات الخاص بك" #: templates/welcome.html:96 +msgid "Because Inventory Needs Order" +msgstr "لأن المخزون يحتاج إلى تنظيم" + +#: templates/welcome.html:97 msgid "" "Manage inventory, sales, transfers, and accounting seamlessly with Haikal." msgstr "قم بإدارة المخزون والمبيعات والتحويلات والمحاسبة بسلاسة مع هيكل." -#: templates/welcome.html:97 templates/welcome.html:153 +#: templates/welcome.html:98 msgid "Get Started" msgstr "ابدأ الآن" -#: templates/welcome.html:98 +#: templates/welcome.html:99 msgid "Learn More" msgstr "تعرف على المزيد" -#: templates/welcome.html:116 +#: templates/welcome.html:117 msgid "Empowering Your Dealership with Precision and Efficiency" msgstr "تمكين معرضك بالدقة والكفاءة" -#: templates/welcome.html:121 +#: templates/welcome.html:122 msgid "Inventory Management" msgstr "إدارة المخزون" -#: templates/welcome.html:122 +#: templates/welcome.html:123 msgid "" "Effortlessly manage your car inventory with real-time updates and intuitive " "tools." msgstr "قم بإدارة مخزون السيارات بسهولة مع التحديثات الفورية والأدوات البسيطة." -#: templates/welcome.html:126 +#: templates/welcome.html:127 msgid "Seamless Accounting" msgstr "محاسبة سلسة" -#: templates/welcome.html:127 +#: templates/welcome.html:128 msgid "Integrated double-entry accounting tailored for car dealers." msgstr "نظام محاسبة مزدوج القيد مدمج ومصمم خصيصًا لتجار السيارات." -#: templates/welcome.html:131 +#: templates/welcome.html:132 msgid "Advanced Analytics" msgstr "تحليلات متقدمة" -#: templates/welcome.html:132 +#: templates/welcome.html:133 msgid "Gain insights and make data-driven decisions for your business." msgstr "احصل على رؤى دقيقة واتخذ قرارات مستندة إلى البيانات لنشاطك التجاري." -#: templates/welcome.html:141 -msgid "Choose the Plan that Fits Your Business" -msgstr "اختر الخطة التي تناسب عملك" - #: templates/welcome.html:142 -msgid "" -"Flexible pricing plans designed to meet the unique needs of every dealership." -msgstr "خطط تسعير مرنة مصممة لتلبية احتياجات كل معرض سيارات." +msgid "Choose the Plan that Fits Your Needs" +msgstr "اختر الخطة التي تناسب احتياجاتك" + +#: templates/welcome.html:143 +msgid "Flexible plans designed to meet the unique needs of every dealership." +msgstr "خطط مرنة مصممة لتلبية الاحتياجات الفريدة لكل معرض سيارات." #: venv/lib/python3.11/site-packages/alabaster/layout.html:99 msgid "Page source" @@ -9331,12 +9586,6 @@ msgstr "الأصول الحالية" msgid "Marketable Securities" msgstr "الأوراق المالية القابلة للتداول" -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:439 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:525 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:50 -msgid "Receivables" -msgstr "المستحقات" - #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:441 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:527 msgid "Uncollectibles" @@ -10653,16 +10902,6 @@ msgstr "مخطط الحسابات" msgid "CoA Role Default" msgstr "الدور الافتراضي لمخطط الحسابات" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:100 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:64 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:58 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:119 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:193 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:267 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:328 -msgid "Detail" -msgstr "التفاصيل" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:105 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/tags/bank_accounts_table.html:52 msgid "Activate" @@ -10749,14 +10988,6 @@ msgstr "أمر الشراء" msgid "View PO" msgstr "عرض أمر الشراء" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:148 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:31 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:135 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:54 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:29 -msgid "Cash Flow Statement" -msgstr "بيان التدفقات النقدية" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:155 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:141 msgid "Balance Sheet PDF" @@ -11067,11 +11298,6 @@ msgstr "عدد المعاملات" msgid "TX Type" msgstr "نوع المعاملة" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:14 -msgid "Balance" -msgstr "الرصيد" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/feedback_button.html:7 msgid "Feedback" msgstr "ملاحظات" @@ -11168,10 +11394,6 @@ msgstr "كيان جديد" msgid "New Entity Information" msgstr "معلومات الكيان الجديد" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/entity_dashboard.html:83 -msgid "Payables" -msgstr "الحسابات الدائنة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/entity/includes/card_entity.html:16 msgid "Accrual Method" msgstr "طريقة الاستحقاق" @@ -11324,6 +11546,12 @@ msgstr "رقم المصروف" msgid "UOM" msgstr "وحدة القياس" +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:54 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:57 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:56 +msgid "By Unit" +msgstr "حسب الوحدة" + #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/cash_flow_statement.html:10 msgid "Cash from Operating Activities" msgstr "النقد من الأنشطة التشغيلية" @@ -11364,62 +11592,6 @@ msgstr "صافي التدفق النقدي" msgid "Net Cash From" msgstr "صافي النقد من" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:20 -msgid "Operating Revenues" -msgstr "الإيرادات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:74 -msgid "Net Operating Revenues" -msgstr "صافي الإيرادات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:82 -msgid "Less: Cost of Goods Sold" -msgstr "ناقص: تكلفة البضائع المباعة" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:135 -msgid "Net COGS" -msgstr "صافي تكلفة البضائع المباعة" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:148 -msgid "Gross Profit" -msgstr "الربح الإجمالي" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:156 -msgid "Operating Expenses" -msgstr "المصروفات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:208 -msgid "Net Operating Expenses" -msgstr "صافي المصروفات التشغيلية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:222 -msgid "Net Operating Income (Loss)" -msgstr "صافي الدخل التشغيلي (الخسارة)" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:230 -msgid "Other Revenues" -msgstr "إيرادات أخرى" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:282 -msgid "Net Other Revenues" -msgstr "صافي الإيرادات الأخرى" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:343 -msgid "Net Other Expenses" -msgstr "صافي النفقات الأخرى" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:356 -msgid "Net Other Income (Loss)" -msgstr "صافي الدخل الآخر (الخسارة)" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:370 -msgid "through" -msgstr "خلال" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:372 -msgid "Net Income" -msgstr "صافي الدخل" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/card_markdown.html:20 msgid "No available notes to display..." msgstr "لا توجد ملاحظات متاحة للعرض..." @@ -11428,22 +11600,6 @@ msgstr "لا توجد ملاحظات متاحة للعرض..." msgid "Logout" msgstr "تسجيل الخروج" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:5 -msgid "Assets" -msgstr "الأصول" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:8 -msgid "Liabilities" -msgstr "الالتزامات" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:11 -msgid "Equity" -msgstr "حقوق الملكية" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:11 -msgid "Earnings (Loss)" -msgstr "الأرباح (الخسارة)" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_ic.html:14 msgid "Accounting Period" msgstr "الفترة المحاسبية" @@ -11688,11 +11844,6 @@ msgstr "إنشاء وحدة كيان" msgid "JE Document Prefix" msgstr "بادئة مستند إدخال اليومية" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:23 -#: venv/lib/python3.11/site-packages/django_ledger/views/entity.py:210 -msgid "Dashboard" -msgstr "لوحة القيادة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_list.html:13 msgid "Entity Units List" msgstr "قائمة وحدات الكيان" @@ -12013,12 +12164,17 @@ msgid "x" msgstr "س" #: venv/lib/python3.11/site-packages/sympy/solvers/simplex.py:565 -#, fuzzy -#| msgid "by" msgid "y" msgstr "ص" -#, fuzzy -#~| msgid "Didn’t receive the code" -#~ msgid "Didn’t receive the code?" -#~ msgstr "لم تستلم الرمز؟" +#~ msgid "Inventory Statistics" +#~ msgstr "إحصائيات المخزون" + +#~ msgid "Car Transfer Cancel" +#~ msgstr "إلغاء نقل السيارة" + +#~ msgid "Return" +#~ msgstr "عودة" + +#~ msgid "Net prices" +#~ msgstr "الأسعار الصافية" diff --git a/requirements.txt b/requirements.txt index 7e81373b..64c13cf9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -74,6 +74,7 @@ djangocms-admin-style==3.3.1 djangorestframework==3.15.2 djangorestframework_simplejwt==5.4.0 djangoviz==0.1.1 +docopt==0.6.2 docutils==0.21.2 easy-thumbnails==2.10 emoji==2.14.1 @@ -126,6 +127,7 @@ mypy-extensions==1.0.0 networkx==3.4.2 newrelic==10.4.0 nltk==3.9.1 +num2words==0.5.14 numpy==2.2.2 oauthlib==3.2.2 ofxtools==0.9.5 diff --git a/static/images/.DS_Store b/static/images/.DS_Store index 1b9636f9..4ef6a7d2 100644 Binary files a/static/images/.DS_Store and b/static/images/.DS_Store differ diff --git a/static/images/car_make/Chevrolet_GxtMDMM.png b/static/images/car_make/Chevrolet_GxtMDMM.png new file mode 100644 index 00000000..515dd740 Binary files /dev/null and b/static/images/car_make/Chevrolet_GxtMDMM.png differ diff --git a/static/images/car_make/Lincoln_6AdvXuG.png b/static/images/car_make/Lincoln_6AdvXuG.png new file mode 100644 index 00000000..a8b95d17 Binary files /dev/null and b/static/images/car_make/Lincoln_6AdvXuG.png differ diff --git a/static/images/logos/car_make/.DS_Store b/static/images/logos/car_make/.DS_Store index 28c9b019..d6e73f23 100644 Binary files a/static/images/logos/car_make/.DS_Store and b/static/images/logos/car_make/.DS_Store differ diff --git a/templates/base.html b/templates/base.html index 3346df96..94b09045 100644 --- a/templates/base.html +++ b/templates/base.html @@ -92,7 +92,7 @@ function notify(tag,msg){
- +{% include "plans/expiration_messages.html" %} {% block period_navigation %} {% endblock period_navigation %} diff --git a/templates/inventory/add_custom_card.html b/templates/inventory/add_custom_card.html index c96443fa..4da51e42 100644 --- a/templates/inventory/add_custom_card.html +++ b/templates/inventory/add_custom_card.html @@ -4,6 +4,17 @@
{% csrf_token %} {{ form|crispy }} - - +
+ + +
\ No newline at end of file diff --git a/templates/inventory/car_detail.html b/templates/inventory/car_detail.html index 2c7a0879..b4971e64 100644 --- a/templates/inventory/car_detail.html +++ b/templates/inventory/car_detail.html @@ -58,7 +58,7 @@ {% if car.vendor %} {% trans "Vendor"|capfirst %} - {{ car.vendor.get_local_name }} + {{ car.vendor.vendor_name }} {% endif %} @@ -92,6 +92,28 @@ {% endif %} + {% if car.registrations %} + + {% trans "Registration"|capfirst %} + {{ car.registrations.plate_number }} | {{ car.registrations.text1 }} {{ car.registrations.text2 }} {{ car.registrations.text3 }} + + + + + {% trans "Registration Date"|capfirst %} + {{ car.registrations.registration_date|date }} + + {% else %} + + + {% trans "Registration" %} + + + + + {% endif %} {% trans 'Location'|capfirst %} @@ -313,7 +335,7 @@ {% endif %} - Cancel + Cancel @@ -325,12 +347,13 @@
+ @@ -382,29 +430,16 @@ -
-
-
- - - -
-
- -
+ {% else%}
diff --git a/templates/login_test.html b/templates/login_test.html new file mode 100644 index 00000000..f3cf6b31 --- /dev/null +++ b/templates/login_test.html @@ -0,0 +1,153 @@ +
+
+
+
+
+

+ Notifications Places +

Click to view notifications

+

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+ +
+
+
+

Modal

+
+ + + + + + + + + + + + + + + + +
+
+
+
\ No newline at end of file diff --git a/templates/plans/account_activation.html b/templates/plans/account_activation.html index 233f51bf..582787af 100644 --- a/templates/plans/account_activation.html +++ b/templates/plans/account_activation.html @@ -3,7 +3,7 @@ {% block body %} -

{% if SUCCESSFUL %}{% trans "Activation successful" %}{% else %}{% trans "Activation failed" %}{% endif %}

+

{% if SUCCESSFUL %}{% trans "Activation successful" %}{% else %}{% trans "Activation failed" %}{% endif %}

{% if SUCCESSFUL %} {# {% include "messages.html" %}#} diff --git a/templates/plans/base.html b/templates/plans/base.html deleted file mode 100644 index 4facf5e1..00000000 --- a/templates/plans/base.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - {% block extra_js %} - {% endblock %} - - -

django-plans

- {% include "plans/expiration_messages.html" %} - - {% block body %} - {% endblock %} - - diff --git a/templates/plans/billing_info_create_or_update.html b/templates/plans/billing_info_create_or_update.html index eb32be35..3ffc404b 100644 --- a/templates/plans/billing_info_create_or_update.html +++ b/templates/plans/billing_info_create_or_update.html @@ -2,21 +2,20 @@ {% load i18n crispy_forms_filters %} -{% block body %} -
+{% block content %} +
-
- {% block "form-content" %} - {% trans "Provide billing data" %} + + + {% trans "Provide billing data"|upper %} {% csrf_token %} {{ form|crispy }} {% if object %} - {{ _("Delete") }} + {{ _("Delete") }} {% endif %} - {% endblock %}
diff --git a/templates/plans/billing_info_delete.html b/templates/plans/billing_info_delete.html index ffe91ce6..843acec3 100644 --- a/templates/plans/billing_info_delete.html +++ b/templates/plans/billing_info_delete.html @@ -1,15 +1,17 @@ {% extends 'base.html' %} {% load i18n %} -{% block body %} -

Billing data

+{% block content %} +
+
+

{{ _("Billing data")}}

-
- {% csrf_token %} - {% trans "Are you sure to delete billing info?" %} -

- -

+
+ {% csrf_token %} + {% trans "Are you sure to delete billing info?" %} +

+ +

+
+
{% endblock %} diff --git a/templates/plans/create_order.html b/templates/plans/create_order.html index 636c1273..c4430c44 100644 --- a/templates/plans/create_order.html +++ b/templates/plans/create_order.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% load i18n crispy_forms_filters%} -{% block body %} +{% block content %}

{% trans "Confirm order" %}

{% if FREE_ORDER %} {# Free order is when user downgrades a plan and there is no additional payment it is handle by special a view. #} @@ -63,11 +63,7 @@ {% endif %} {% endwith %} -

- - - - + {{ form|crispy }} {% csrf_token %} diff --git a/templates/plans/current.html b/templates/plans/current.html index e5a55b7f..0e68e4bb 100644 --- a/templates/plans/current.html +++ b/templates/plans/current.html @@ -1,5 +1,5 @@ {% extends 'base.html' %} -{% load i18n %} +{% load i18n custom_filters%} {% block content %} diff --git a/templates/plans/extend.html b/templates/plans/extend.html index 867d4d38..5c21595a 100644 --- a/templates/plans/extend.html +++ b/templates/plans/extend.html @@ -5,19 +5,19 @@ {% block extra_js %} {% endblock %} -{% block body %} +{% block content %}

{% csrf_token %} {{ form.as_p }} -
+ {% if userplan.plan.available %}