diff --git a/car_inventory/__pycache__/settings.cpython-311.pyc b/car_inventory/__pycache__/settings.cpython-311.pyc index 75710e61..f64d2f3b 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/__pycache__/admin.cpython-311.pyc b/inventory/__pycache__/admin.cpython-311.pyc index a5459aa3..65cd3b33 100644 Binary files a/inventory/__pycache__/admin.cpython-311.pyc and b/inventory/__pycache__/admin.cpython-311.pyc differ diff --git a/inventory/__pycache__/forms.cpython-311.pyc b/inventory/__pycache__/forms.cpython-311.pyc index d6f6a7d4..be70bfc9 100644 Binary files a/inventory/__pycache__/forms.cpython-311.pyc and b/inventory/__pycache__/forms.cpython-311.pyc differ diff --git a/inventory/__pycache__/middleware.cpython-311.pyc b/inventory/__pycache__/middleware.cpython-311.pyc index 643147ba..ae0ab7a1 100644 Binary files a/inventory/__pycache__/middleware.cpython-311.pyc and b/inventory/__pycache__/middleware.cpython-311.pyc differ diff --git a/inventory/__pycache__/models.cpython-311.pyc b/inventory/__pycache__/models.cpython-311.pyc index a38dda2d..562fe176 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 5452005f..c070c77e 100644 Binary files a/inventory/__pycache__/urls.cpython-311.pyc and b/inventory/__pycache__/urls.cpython-311.pyc differ diff --git a/inventory/__pycache__/utils.cpython-311.pyc b/inventory/__pycache__/utils.cpython-311.pyc index f564af6f..01677b7e 100644 Binary files a/inventory/__pycache__/utils.cpython-311.pyc and b/inventory/__pycache__/utils.cpython-311.pyc differ diff --git a/inventory/__pycache__/views.cpython-311.pyc b/inventory/__pycache__/views.cpython-311.pyc index c940e87c..4fc9c8df 100644 Binary files a/inventory/__pycache__/views.cpython-311.pyc and b/inventory/__pycache__/views.cpython-311.pyc differ diff --git a/inventory/admin.py b/inventory/admin.py index e696123e..f5a80737 100644 --- a/inventory/admin.py +++ b/inventory/admin.py @@ -31,10 +31,11 @@ class CarTrimAdmin(ExportMixin, admin.ModelAdmin): admin.site.register(models.Dealer) admin.site.register(models.Staff) admin.site.register(models.Vendor) +admin.site.register(models.DealerSettings) # admin.site.register(models.SaleQuotation) # admin.site.register(models.SaleQuotationCar) admin.site.register(models.SaleOrder) - +admin.site.register(models.CustomGroup) admin.site.register(models.CarFinance) admin.site.register(models.CarColors) admin.site.register(models.CarRegistration) diff --git a/inventory/models.py b/inventory/models.py index 2fb05ef9..7459d2b6 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -23,6 +23,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from appointment.models import StaffMember from plans.quota import get_user_quota +# from simple_history.models import HistoricalRecords class DealerUserManager(UserManager): @@ -318,6 +319,7 @@ class AdditionalServices(models.Model, LocalizedNameMixin): blank=True, ) + def to_dict(self): return { "name": self.name, @@ -401,6 +403,7 @@ class Car(models.Model): mileage = models.IntegerField(blank=True, null=True, verbose_name=_("Mileage")) receiving_date = models.DateTimeField(verbose_name=_("Receiving Date")) hash = models.CharField(max_length=64, blank=True, null=True, verbose_name=_("Hash")) + # history = HistoricalRecords() def save(self, *args, **kwargs): self.hash = self.get_hash diff --git a/inventory/signals.py b/inventory/signals.py index e495810e..09135fd4 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -887,12 +887,12 @@ def update_car_status_on_reservation_update(sender, instance, **kwargs): # notes=f"New schedule created for {instance.purpose} with {instance.lead.full_name} on {instance.scheduled_at}." # ) -@receiver(post_save, sender=models.Staff) -def check_users_quota(sender, instance, **kwargs): - quota_dict = get_user_quota(instance.dealer.user) - allowed_users = quota_dict.get("Users") - if allowed_users is None: - raise ValidationError(_("The user quota for staff members is not defined. Please contact support.")) - current_staff_count = instance.dealer.staff.count() - if current_staff_count > allowed_users: - raise ValidationError(_("You have reached the maximum number of staff users allowed for your plan.")) +# @receiver(post_save, sender=models.Staff) +# def check_users_quota(sender, instance, **kwargs): +# quota_dict = get_user_quota(instance.dealer.user) +# allowed_users = quota_dict.get("Users") +# if allowed_users is None: +# raise ValidationError(_("The user quota for staff members is not defined. Please contact support.")) +# current_staff_count = instance.dealer.staff.count() +# if current_staff_count > allowed_users: +# raise ValidationError(_("You have reached the maximum number of staff users allowed for your plan.")) diff --git a/inventory/views.py b/inventory/views.py index ff33128a..ecaeab8f 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -318,6 +318,13 @@ class TestView(TemplateView): class ManagerDashboard(LoginRequiredMixin, TemplateView): template_name = "dashboards/manager.html" + def dispatch(self, request, *args, **kwargs): + if ( + not request.user.is_authenticated + ): + return redirect("welcome") + return super().dispatch(request, *args, **kwargs) + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) dealer = get_user_type(self.request) @@ -3859,8 +3866,8 @@ def DealerSettingsView(request,pk): instance = form.save(commit=False) instance.dealer = dealer instance.save() - messages.success(request, 'ssettings updated') - return redirect('dealer_settings', pk=dealer.pk) + messages.success(request, 'Settings updated') + return redirect('dealer_detail', pk=dealer.pk) else: print(form.errors) form = forms.DealerSettingsForm(instance=dealer_setting,initial={'dealer':dealer}) diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 5ca1afd7..70ecf901 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 72873b71..dffef71a 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#: inventory/models.py:1797 +#: inventory/models.py:1803 #: templates/ledger/reports/tags/balance_sheet_statement.html:20 #: templates/ledger/reports/tags/income_statement.html:15 #, fuzzy @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-25 04:14+0300\n" +"POT-Creation-Date: 2025-02-26 17:28+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,17 +22,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:340 inventory/tables.py:12 -#: templates/inventory/car_detail.html:54 templates/inventory/car_form.html:33 +#: api/models.py:6 inventory/models.py:342 inventory/tables.py:12 +#: templates/inventory/car_detail.html:60 templates/inventory/car_form.html:33 #: ⁨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/car_list_view.html:108 #: templates/inventory/cars_list_api.html:31 #: templates/inventory/transfer_details.html:69 -#: templates/sales/estimates/estimate_detail.html:158 +#: templates/sales/estimates/estimate_detail.html:173 #: templates/sales/estimates/sale_order_preview.html:238 -#: templates/sales/invoices/invoice_detail.html:217 +#: templates/sales/invoices/invoice_detail.html:239 #: templates/sales/sales_list.html:114 msgid "VIN" msgstr "رقم الهيكل" @@ -42,9 +42,9 @@ msgstr "رقم الهيكل" #: templates/index.html:100 templates/index.html:104 #: templates/ledger/coa_accounts/account_detail.html:101 #: templates/ledger/coa_accounts/account_detail.html:102 -#: templates/sales/invoices/invoice_detail.html:85 -#: templates/sales/invoices/invoice_detail.html:137 -#: templates/sales/invoices/invoice_detail.html:139 +#: templates/sales/invoices/invoice_detail.html:107 +#: templates/sales/invoices/invoice_detail.html:159 +#: templates/sales/invoices/invoice_detail.html:161 #: templates/subscriptions/subscription_plan.html:41 msgid "SAR" msgstr "ريال" @@ -63,8 +63,8 @@ msgstr "العربية" msgid "Haikal" msgstr "هيكل" -#: inventory/forms.py:311 inventory/models.py:686 -#: templates/inventory/car_detail.html:117 +#: inventory/forms.py:311 inventory/models.py:689 +#: templates/inventory/car_detail.html:123 msgid "Custom Date" msgstr "تاريخ البطاقة الجمركية" @@ -72,7 +72,7 @@ msgstr "تاريخ البطاقة الجمركية" msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/forms.py:459 inventory/models.py:1139 inventory/models.py:1470 +#: inventory/forms.py:459 inventory/models.py:1144 inventory/models.py:1476 #: templates/account/email_change.html:5 templates/account/email_change.html:9 msgid "Email Address" msgstr "عنوان البريد الإلكتروني" @@ -125,9 +125,9 @@ msgstr "يوجد بالفعل حساب بهذا البريد الإلكترون msgid "Passwords do not match." msgstr "كلمات المرور غير متطابقة." -#: inventory/forms.py:542 inventory/models.py:296 inventory/models.py:635 -#: inventory/models.py:648 inventory/models.py:945 inventory/models.py:1105 -#: inventory/models.py:1133 templates/administration/manage_service.html:22 +#: inventory/forms.py:542 inventory/models.py:298 inventory/models.py:638 +#: inventory/models.py:651 inventory/models.py:948 inventory/models.py:1110 +#: inventory/models.py:1138 templates/administration/manage_service.html:22 #: templates/administration/service_list.html:23 #: templates/administration/staff_list.html:34 #: templates/administration/user_profile.html:226 @@ -149,7 +149,7 @@ msgstr "كلمات المرور غير متطابقة." msgid "Name" msgstr "الاسم" -#: inventory/forms.py:546 inventory/models.py:862 inventory/models.py:1467 +#: inventory/forms.py:546 inventory/models.py:865 inventory/models.py:1473 msgid "English Name" msgstr "الاسم بالإنجليزية" @@ -157,10 +157,10 @@ msgstr "الاسم بالإنجليزية" msgid "Please enter an English Name." msgstr "يرجى إدخال اسم باللغة الإنجليزية." -#: inventory/forms.py:556 inventory/forms.py:560 inventory/models.py:297 -#: inventory/models.py:636 inventory/models.py:649 inventory/models.py:861 -#: inventory/models.py:946 inventory/models.py:1106 inventory/models.py:1134 -#: inventory/models.py:1466 templates/users/user_detail.html:48 +#: inventory/forms.py:556 inventory/forms.py:560 inventory/models.py:299 +#: inventory/models.py:639 inventory/models.py:652 inventory/models.py:864 +#: inventory/models.py:949 inventory/models.py:1111 inventory/models.py:1139 +#: inventory/models.py:1472 templates/users/user_detail.html:48 msgid "Arabic Name" msgstr "الاسم بالعربية" @@ -168,9 +168,9 @@ msgstr "الاسم بالعربية" msgid "Please enter an Arabic name." msgstr "يرجى إدخال اسم باللغة العربية." -#: inventory/forms.py:570 inventory/models.py:863 inventory/models.py:947 -#: inventory/models.py:1080 inventory/models.py:1111 inventory/models.py:1138 -#: inventory/models.py:1158 inventory/models.py:1469 +#: inventory/forms.py:570 inventory/models.py:866 inventory/models.py:950 +#: inventory/models.py:1085 inventory/models.py:1116 inventory/models.py:1143 +#: inventory/models.py:1163 inventory/models.py:1475 #: templates/administration/staff_index.html:123 #: templates/crm/leads/lead_list.html:45 #: templates/crm/opportunities/opportunity_detail.html:193 @@ -184,7 +184,7 @@ msgstr "رقم الهاتف" #: inventory/forms.py:573 templates/administration/display_appointment.html:55 #: templates/appointment/appointment_client_information.html:57 -#: templates/crm/leads/lead_detail.html:79 +#: templates/crm/leads/lead_detail.html:88 #: templates/dealers/dealer_detail.html:80 #: templates/organizations/organization_detail.html:10 #: templates/organizations/organization_list.html:59 @@ -205,8 +205,8 @@ msgstr "يجب أن يكون رقم الهاتف بالصيغة 05xxxxxxxx" msgid "CRN" msgstr "رقم السجل التجاري" -#: inventory/forms.py:592 inventory/models.py:854 inventory/models.py:1108 -#: inventory/models.py:1461 +#: inventory/forms.py:592 inventory/models.py:857 inventory/models.py:1113 +#: inventory/models.py:1467 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" @@ -215,8 +215,8 @@ msgstr "رقم السجل التجاري" msgid "VRN" msgstr "الرقم الضريبي" -#: inventory/forms.py:610 inventory/models.py:859 inventory/models.py:1110 -#: inventory/models.py:1464 +#: inventory/forms.py:610 inventory/models.py:862 inventory/models.py:1115 +#: inventory/models.py:1470 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" @@ -224,9 +224,9 @@ msgstr "رقم التسجيل في ضريبة القيمة المضافة" msgid "VAT Registration Number must be 15 characters." msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا من 15 حرفًا." -#: inventory/forms.py:623 inventory/models.py:865 inventory/models.py:1083 -#: inventory/models.py:1113 inventory/models.py:1141 inventory/models.py:1472 -#: templates/crm/leads/lead_detail.html:109 +#: inventory/forms.py:623 inventory/models.py:868 inventory/models.py:1088 +#: inventory/models.py:1118 inventory/models.py:1146 inventory/models.py:1478 +#: templates/crm/leads/lead_detail.html:118 #: templates/customers/customer_list.html:50 #: templates/customers/view_customer.html:68 #: templates/dealers/dealer_detail.html:64 @@ -239,31 +239,31 @@ msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا msgid "Address" msgstr "العنوان" -#: inventory/forms.py:672 inventory/models.py:1670 +#: inventory/forms.py:672 inventory/models.py:1676 msgid "cash" msgstr "نقداً" -#: inventory/forms.py:673 inventory/models.py:1671 +#: inventory/forms.py:673 inventory/models.py:1677 msgid "credit" msgstr "دائن" -#: inventory/forms.py:674 inventory/models.py:1672 -#: templates/inventory/car_detail.html:159 +#: inventory/forms.py:674 inventory/models.py:1678 +#: templates/inventory/car_detail.html:165 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" -#: inventory/forms.py:675 inventory/models.py:1673 +#: inventory/forms.py:675 inventory/models.py:1679 msgid "debit" msgstr "مدين" -#: inventory/forms.py:676 inventory/models.py:1674 +#: inventory/forms.py:676 inventory/models.py:1680 msgid "SADAD" msgstr "سداد" -#: inventory/forms.py:835 inventory/forms.py:852 inventory/models.py:1089 +#: inventory/forms.py:835 inventory/forms.py:852 inventory/models.py:1094 #: templates/crm/opportunities/opportunity_form.html:22 -#: templates/sales/estimates/estimate_detail.html:118 +#: templates/sales/estimates/estimate_detail.html:133 #: templates/sales/estimates/estimate_list.html:15 #: templates/sales/estimates/estimate_preview.html:265 #: templates/sales/estimates/sale_order_preview.html:227 @@ -282,81 +282,83 @@ msgstr "العميل" #: templates/ledger/bills/bill_detail.html:104 #: templates/sales/estimates/estimate_preview.html:267 #: templates/sales/estimates/sale_order_preview.html:229 -#: templates/sales/invoices/invoice_detail.html:101 +#: templates/sales/invoices/invoice_detail.html:123 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:974 msgid "Terms" msgstr "الشروط" -#: inventory/forms.py:846 inventory/forms.py:850 inventory/models.py:1062 +#: inventory/forms.py:846 inventory/forms.py:850 inventory/models.py:1067 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:11 msgid "Title" msgstr "العنوان" -#: inventory/models.py:115 inventory/models.py:408 inventory/models.py:485 -#: inventory/models.py:530 inventory/models.py:683 inventory/models.py:698 -#: inventory/models.py:742 inventory/models.py:1344 +#: inventory/models.py:117 inventory/models.py:410 inventory/models.py:488 +#: inventory/models.py:533 inventory/models.py:686 inventory/models.py:701 +#: inventory/models.py:745 inventory/models.py:1350 #: templates/crm/leads/lead_list.html:33 #: templates/crm/opportunities/opportunity_form.html:35 #: templates/inventory/transfer_details.html:70 msgid "Car" msgstr "سيارة" -#: inventory/models.py:116 +#: inventory/models.py:118 msgid "Light Commercial" msgstr "مركبات تجارية خفيفة" -#: inventory/models.py:117 +#: inventory/models.py:119 msgid "Heavy-Duty Tractors" msgstr "جرارات ثقيلة" -#: inventory/models.py:118 +#: inventory/models.py:120 msgid "Trailers" msgstr "مقطورات" -#: inventory/models.py:119 +#: inventory/models.py:121 msgid "Medium Trucks" msgstr "شاحنات متوسطة" -#: inventory/models.py:120 +#: inventory/models.py:122 msgid "Buses" msgstr "حافلات" -#: inventory/models.py:121 +#: inventory/models.py:123 msgid "Motorcycles" msgstr "دراجات نارية" -#: inventory/models.py:122 +#: inventory/models.py:124 msgid "Buggy" msgstr "باجي" -#: inventory/models.py:123 +#: inventory/models.py:125 msgid "Moto ATV" msgstr "موتو ATV" -#: inventory/models.py:124 +#: inventory/models.py:126 msgid "Scooters" msgstr "دراجات سكوتر" -#: inventory/models.py:125 +#: inventory/models.py:127 msgid "Karting" msgstr "كارتينج" -#: inventory/models.py:126 +#: inventory/models.py:128 msgid "ATV" msgstr "مركبات ATV" -#: inventory/models.py:127 +#: inventory/models.py:129 msgid "Snowmobiles" msgstr "دراجات الثلج" -#: inventory/models.py:134 +#: inventory/models.py:136 msgid "logo" msgstr "الشعار" -#: inventory/models.py:273 templates/ledger/bills/bill_detail.html:191 -#: templates/sales/estimates/estimate_detail.html:133 +#: inventory/models.py:275 templates/ledger/bills/bill_detail.html:191 +#: templates/sales/estimates/estimate_detail.html:65 +#: templates/sales/estimates/estimate_detail.html:148 #: templates/sales/estimates/estimate_list.html:29 -#: templates/sales/invoices/invoice_detail.html:192 +#: templates/sales/invoices/invoice_detail.html:71 +#: templates/sales/invoices/invoice_detail.html:214 #: templates/sales/invoices/invoice_list.html:36 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:343 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:223 @@ -365,10 +367,12 @@ msgstr "الشعار" msgid "Draft" msgstr "مسودة" -#: inventory/models.py:274 templates/ledger/bills/bill_detail.html:195 -#: templates/sales/estimates/estimate_detail.html:137 +#: inventory/models.py:276 templates/ledger/bills/bill_detail.html:195 +#: templates/sales/estimates/estimate_detail.html:69 +#: templates/sales/estimates/estimate_detail.html:152 #: templates/sales/estimates/estimate_list.html:33 -#: templates/sales/invoices/invoice_detail.html:196 +#: templates/sales/invoices/invoice_detail.html:75 +#: templates/sales/invoices/invoice_detail.html:218 #: templates/sales/invoices/invoice_list.html:32 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:345 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:225 @@ -378,31 +382,32 @@ msgstr "مسودة" msgid "Approved" msgstr "تمت الموافقة" -#: inventory/models.py:275 inventory/models.py:1004 -#: templates/crm/leads/lead_detail.html:46 +#: inventory/models.py:277 inventory/models.py:1007 +#: templates/crm/leads/lead_detail.html:55 #: templates/crm/leads/lead_list.html:121 test.txt:46 msgid "Pending" msgstr "قيد الانتظار" -#: inventory/models.py:276 +#: inventory/models.py:278 msgid "Accepted" msgstr "تم القبول" -#: inventory/models.py:277 templates/administration/staff_index.html:83 +#: inventory/models.py:279 templates/administration/staff_index.html:83 #: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_index.html:329 msgid "Success" msgstr "ناجحة" -#: inventory/models.py:278 templates/sales/estimates/estimate_preview.html:245 +#: inventory/models.py:280 templates/sales/estimates/estimate_preview.html:245 msgid "Reject" msgstr "رفض" -#: inventory/models.py:279 +#: inventory/models.py:281 msgid "Cancelled" msgstr "ملغى" -#: inventory/models.py:283 templates/dashboards/manager.html:21 -#: templates/dashboards/manager.html:333 +#: inventory/models.py:285 templates/dashboards/manager.html:21 +#: templates/dashboards/manager.html:333 templates/dashboards/sales.html:21 +#: templates/dashboards/sales.html:333 #: templates/inventory/car_inventory.html:99 #: templates/inventory/car_list_view.html:86 #: templates/inventory/cars_list_api.html:19 @@ -410,37 +415,42 @@ msgstr "ملغى" msgid "Available" msgstr "متاح" -#: inventory/models.py:284 templates/dashboards/manager.html:27 -#: templates/dashboards/manager.html:334 +#: inventory/models.py:286 templates/dashboards/manager.html:27 +#: templates/dashboards/manager.html:334 templates/dashboards/sales.html:27 +#: templates/dashboards/sales.html:334 #: templates/inventory/car_inventory.html:101 #: templates/inventory/car_list_view.html:88 #: templates/inventory/cars_list_api.html:21 msgid "Sold" msgstr "تم البيع" -#: inventory/models.py:285 templates/dashboards/manager.html:45 -#: templates/dashboards/manager.html:337 +#: inventory/models.py:287 templates/dashboards/manager.html:45 +#: templates/dashboards/manager.html:337 templates/dashboards/sales.html:45 +#: templates/dashboards/sales.html:337 #: templates/inventory/car_inventory.html:103 msgid "Hold" msgstr "في الانتظار" -#: inventory/models.py:286 templates/dashboards/manager.html:51 -#: templates/dashboards/manager.html:338 +#: inventory/models.py:288 templates/dashboards/manager.html:51 +#: templates/dashboards/manager.html:338 templates/dashboards/sales.html:51 +#: templates/dashboards/sales.html:338 #: templates/inventory/car_inventory.html:107 #: templates/inventory/cars_list_api.html:23 msgid "Damaged" msgstr "تالف" -#: inventory/models.py:287 templates/dashboards/manager.html:33 -#: templates/dashboards/manager.html:335 templates/index.html:24 +#: inventory/models.py:289 templates/dashboards/manager.html:33 +#: templates/dashboards/manager.html:335 templates/dashboards/sales.html:33 +#: templates/dashboards/sales.html:335 templates/index.html:24 #: templates/inventory/car_inventory.html:105 #: templates/inventory/car_list_view.html:87 #: templates/inventory/cars_list_api.html:20 msgid "Reserved" msgstr "محجوزة" -#: inventory/models.py:288 templates/dashboards/manager.html:39 -#: templates/dashboards/manager.html:336 +#: inventory/models.py:290 templates/dashboards/manager.html:39 +#: templates/dashboards/manager.html:336 templates/dashboards/sales.html:39 +#: templates/dashboards/sales.html:336 #: templates/inventory/car_list_view.html:89 #: templates/inventory/car_location_form.html:8 #: templates/inventory/cars_list_api.html:22 @@ -448,18 +458,18 @@ msgstr "محجوزة" msgid "Transfer" msgstr "نقل" -#: inventory/models.py:291 inventory/models.py:1003 -#: templates/crm/leads/lead_detail.html:44 +#: inventory/models.py:293 inventory/models.py:1006 +#: templates/crm/leads/lead_detail.html:53 #: templates/crm/leads/lead_list.html:119 #: templates/inventory/car_inventory.html:68 test.txt:33 msgid "New" msgstr "جديد" -#: inventory/models.py:292 templates/inventory/car_inventory.html:70 +#: inventory/models.py:294 templates/inventory/car_inventory.html:70 msgid "Used" msgstr "مستعمل" -#: inventory/models.py:298 inventory/models.py:717 +#: inventory/models.py:300 inventory/models.py:720 #: templates/administration/manage_day_off.html:63 #: templates/administration/manage_service.html:33 #: templates/administration/user_profile.html:93 @@ -485,7 +495,7 @@ msgstr "مستعمل" msgid "Description" msgstr "الوصف" -#: inventory/models.py:300 inventory/tables.py:19 +#: inventory/models.py:302 inventory/tables.py:19 #: templates/administration/manage_service.html:55 #: templates/administration/service_list.html:25 #: templates/administration/user_profile.html:229 @@ -496,19 +506,19 @@ msgstr "الوصف" msgid "Price" msgstr "السعر" -#: inventory/models.py:302 +#: inventory/models.py:304 msgid "taxable" msgstr "خاضع للضريبة" -#: inventory/models.py:306 +#: inventory/models.py:308 msgid "Unit of Measurement" msgstr "وحدة القياس" -#: inventory/models.py:309 inventory/models.py:342 inventory/models.py:898 +#: inventory/models.py:311 inventory/models.py:344 inventory/models.py:901 msgid "Dealer" msgstr "المعرض" -#: inventory/models.py:314 templates/inventory/transfer_preview.html:229 +#: inventory/models.py:316 templates/inventory/transfer_preview.html:229 #: templates/ledger/bills/bill_detail.html:213 #: templates/sales/estimates/estimate_preview.html:275 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:94 @@ -527,16 +537,17 @@ msgstr "المعرض" msgid "Item" msgstr "العنصر" -#: inventory/models.py:332 inventory/models.py:333 -#: templates/sales/estimates/estimate_detail.html:191 +#: inventory/models.py:334 inventory/models.py:335 +#: templates/sales/estimates/estimate_detail.html:206 #: templates/sales/estimates/estimate_preview.html:297 #: templates/sales/estimates/sale_order_preview.html:266 -#: templates/sales/invoices/invoice_detail.html:249 +#: templates/sales/invoices/invoice_detail.html:271 msgid "Additional Services" msgstr "الخدمات الإضافية" -#: inventory/models.py:351 inventory/models.py:1480 -#: templates/inventory/car_detail.html:95 templates/inventory/car_form.html:135 +#: inventory/models.py:353 inventory/models.py:1486 +#: templates/inventory/car_detail.html:101 +#: templates/inventory/car_form.html:135 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:166 #: templates/ledger/bills/bill_list.html:46 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:364 @@ -546,62 +557,62 @@ msgstr "الخدمات الإضافية" msgid "Vendor" msgstr "المورد" -#: inventory/models.py:359 inventory/models.py:1171 inventory/tables.py:13 +#: inventory/models.py:361 inventory/models.py:1176 inventory/tables.py:13 #: templates/inventory/car_list_view.html:64 #: templates/inventory/car_list_view.html:109 #: templates/inventory/cars_list_api.html:32 -#: templates/sales/estimates/estimate_detail.html:155 +#: templates/sales/estimates/estimate_detail.html:170 #: templates/sales/estimates/sale_order_preview.html:239 -#: templates/sales/invoices/invoice_detail.html:214 +#: templates/sales/invoices/invoice_detail.html:236 #: templates/sales/sales_list.html:112 msgid "Make" msgstr "الصانع" -#: inventory/models.py:367 inventory/models.py:1178 inventory/tables.py:14 +#: inventory/models.py:369 inventory/models.py:1183 inventory/tables.py:14 #: templates/inventory/car_list_view.html:73 #: templates/inventory/car_list_view.html:110 #: templates/inventory/cars_list_api.html:33 -#: templates/sales/estimates/estimate_detail.html:156 +#: templates/sales/estimates/estimate_detail.html:171 #: templates/sales/estimates/sale_order_preview.html:240 -#: templates/sales/invoices/invoice_detail.html:215 +#: templates/sales/invoices/invoice_detail.html:237 #: templates/sales/sales_list.html:113 msgid "Model" msgstr "الموديل" -#: inventory/models.py:369 inventory/models.py:1181 inventory/tables.py:15 +#: inventory/models.py:371 inventory/models.py:1186 inventory/tables.py:15 #: templates/inventory/car_form.html:56 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:61 #: templates/inventory/car_inventory.html:54 #: templates/inventory/car_list_view.html:79 #: templates/inventory/car_list_view.html:111 #: templates/ledger/reports/components/period_navigator.html:21 -#: templates/sales/estimates/estimate_detail.html:157 +#: templates/sales/estimates/estimate_detail.html:172 #: templates/sales/estimates/sale_order_preview.html:241 -#: templates/sales/invoices/invoice_detail.html:216 +#: templates/sales/invoices/invoice_detail.html:238 msgid "Year" msgstr "السنة" -#: inventory/models.py:376 inventory/tables.py:16 +#: inventory/models.py:378 inventory/tables.py:16 #: templates/inventory/car_form.html:66 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:121 msgid "Series" msgstr "السلسلة" -#: inventory/models.py:384 inventory/tables.py:17 +#: inventory/models.py:386 inventory/tables.py:17 #: templates/inventory/car_list_view.html:112 #: templates/sales/sales_list.html:115 msgid "Trim" msgstr "الفئة" -#: inventory/models.py:390 inventory/models.py:1207 inventory/models.py:1352 -#: inventory/models.py:1403 inventory/tables.py:23 -#: templates/crm/leads/lead_detail.html:42 +#: inventory/models.py:392 inventory/models.py:1212 inventory/models.py:1358 +#: inventory/models.py:1409 inventory/tables.py:23 +#: templates/crm/leads/lead_detail.html:51 #: templates/crm/opportunities/opportunity_detail.html:91 -#: templates/inventory/car_detail.html:78 -#: templates/inventory/car_detail.html:349 +#: templates/inventory/car_detail.html:84 +#: templates/inventory/car_detail.html:357 #: templates/inventory/car_inventory.html:58 #: templates/inventory/car_list.html:163 -#: templates/inventory/car_list_view.html:114 +#: templates/inventory/car_list_view.html:115 #: templates/inventory/cars_list_api.html:18 #: templates/inventory/cars_list_api.html:34 templates/plans/current.html:18 #: templates/sales/estimates/estimate_list.html:16 @@ -616,61 +627,61 @@ msgstr "الفئة" msgid "Status" msgstr "الحالة" -#: inventory/models.py:396 inventory/tables.py:11 -#: templates/inventory/car_detail.html:82 templates/inventory/car_form.html:148 +#: inventory/models.py:398 inventory/tables.py:11 +#: templates/inventory/car_detail.html:88 templates/inventory/car_form.html:148 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:183 #: templates/inventory/car_list.html:177 msgid "Stock Type" msgstr "نوع المخزون" -#: inventory/models.py:398 inventory/models.py:503 -#: templates/inventory/car_detail.html:100 +#: inventory/models.py:400 inventory/models.py:506 +#: templates/inventory/car_detail.html:106 #: templates/inventory/car_form.html:186 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:232 #: templates/inventory/car_list.html:200 msgid "Remarks" msgstr "ملاحظات" -#: inventory/models.py:399 inventory/tables.py:18 -#: templates/inventory/car_detail.html:86 templates/inventory/car_form.html:160 +#: inventory/models.py:401 inventory/tables.py:18 +#: templates/inventory/car_detail.html:92 templates/inventory/car_form.html:160 #: ⁨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:400 templates/inventory/car_detail.html:90 +#: inventory/models.py:402 templates/inventory/car_detail.html:96 #: templates/inventory/car_form.html:173 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:215 msgid "Receiving Date" msgstr "تاريخ الاستلام" -#: inventory/models.py:401 +#: inventory/models.py:403 msgid "Hash" msgstr "رمز" -#: inventory/models.py:409 templates/header.html:85 +#: inventory/models.py:411 templates/header.html:85 #: templates/sales/estimates/estimate_form.html:16 msgid "Cars" msgstr "السيارات" -#: inventory/models.py:491 +#: inventory/models.py:494 msgid "From Dealer" msgstr "من معرض" -#: inventory/models.py:497 +#: inventory/models.py:500 msgid "To Dealer" msgstr "الى معرض" -#: inventory/models.py:500 +#: inventory/models.py:503 msgid "Transfer Date" msgstr "تاريخ النقل" -#: inventory/models.py:502 templates/inventory/transfer_preview.html:230 +#: inventory/models.py:505 templates/inventory/transfer_preview.html:230 #: templates/ledger/bills/bill_detail.html:214 -#: templates/sales/estimates/estimate_detail.html:159 +#: templates/sales/estimates/estimate_detail.html:174 #: templates/sales/estimates/estimate_preview.html:276 #: templates/sales/estimates/sale_order_preview.html:242 -#: templates/sales/invoices/invoice_detail.html:218 +#: templates/sales/invoices/invoice_detail.html:240 #: venv/lib/python3.11/site-packages/django_ledger/models/items.py:1068 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:97 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:21 @@ -683,161 +694,161 @@ msgstr "تاريخ النقل" msgid "Quantity" msgstr "الكمية" -#: inventory/models.py:511 inventory/models.py:720 inventory/models.py:1477 +#: inventory/models.py:514 inventory/models.py:723 inventory/models.py:1483 msgid "Created At" msgstr "تاريخ الإنشاء" -#: inventory/models.py:512 inventory/models.py:874 +#: inventory/models.py:515 inventory/models.py:877 msgid "Updated At" msgstr "تم التحديث" -#: inventory/models.py:518 +#: inventory/models.py:521 msgid "Car Transfer Log" msgstr "سجل نقل السيارة" -#: inventory/models.py:519 +#: inventory/models.py:522 msgid "Car Transfer Logs" msgstr "سجلات نقل السيارات" -#: inventory/models.py:536 templates/inventory/car_detail.html:295 +#: inventory/models.py:539 templates/inventory/car_detail.html:301 msgid "Reserved By" msgstr "محجوز بواسطة" -#: inventory/models.py:544 +#: inventory/models.py:547 msgid "Reserved At" msgstr "تاريخ الحجز" -#: inventory/models.py:545 +#: inventory/models.py:548 msgid "Reserved Until" msgstr "محجوز حتى" -#: inventory/models.py:555 templates/inventory/car_detail.html:429 +#: inventory/models.py:558 templates/inventory/car_detail.html:440 msgid "Car Reservation" msgstr "حجز السيارة" -#: inventory/models.py:556 +#: inventory/models.py:559 msgid "Car Reservations" msgstr "حجوزات السيارات" -#: inventory/models.py:566 templates/inventory/car_detail.html:190 +#: inventory/models.py:569 templates/inventory/car_detail.html:196 msgid "Cost Price" msgstr "سعر التكلفة" -#: inventory/models.py:569 templates/inventory/car_detail.html:194 +#: inventory/models.py:572 templates/inventory/car_detail.html:200 msgid "Selling Price" msgstr "سعر البيع" -#: inventory/models.py:574 templates/inventory/car_detail.html:198 -#: templates/sales/estimates/estimate_detail.html:185 -#: templates/sales/invoices/invoice_detail.html:237 +#: inventory/models.py:577 templates/inventory/car_detail.html:204 +#: templates/sales/estimates/estimate_detail.html:200 +#: templates/sales/invoices/invoice_detail.html:259 msgid "Discount Amount" msgstr "مبلغ الخصم" -#: inventory/models.py:630 inventory/models.py:631 +#: inventory/models.py:633 inventory/models.py:634 msgid "Car Financial Details" msgstr "تفاصيل المالية للسيارة" -#: inventory/models.py:637 inventory/models.py:650 +#: inventory/models.py:640 inventory/models.py:653 msgid "RGB" msgstr "آر جي بي" -#: inventory/models.py:640 inventory/models.py:641 +#: inventory/models.py:643 inventory/models.py:644 #: templates/inventory/add_colors.html:13 msgid "Exterior Colors" msgstr "الألوان الخارجية" -#: inventory/models.py:653 inventory/models.py:654 +#: inventory/models.py:656 inventory/models.py:657 #: templates/inventory/add_colors.html:32 msgid "Interior Colors" msgstr "الألوان الداخلية" -#: inventory/models.py:670 +#: inventory/models.py:673 templates/inventory/car_list_view.html:113 msgid "Color" msgstr "اللون" -#: inventory/models.py:671 +#: inventory/models.py:674 msgid "Colors" msgstr "الألوان" -#: inventory/models.py:685 templates/inventory/car_detail.html:113 +#: inventory/models.py:688 templates/inventory/car_detail.html:119 msgid "Custom Number" msgstr "رقم البطاقة الجمركية" -#: inventory/models.py:689 templates/inventory/car_detail.html:122 -#: templates/inventory/car_detail.html:399 +#: inventory/models.py:692 templates/inventory/car_detail.html:128 +#: templates/inventory/car_detail.html:410 msgid "Custom Card" msgstr "البطاقة الجمركية" -#: inventory/models.py:690 +#: inventory/models.py:693 msgid "Custom Cards" msgstr "البطاقات الجمركية" -#: inventory/models.py:704 inventory/models.py:1360 +#: inventory/models.py:707 inventory/models.py:1366 msgid "Owner" msgstr "المالك" -#: inventory/models.py:705 +#: inventory/models.py:708 msgid "Dealer who owns the car." msgstr "التاجر الذي يمتلك السيارة." -#: inventory/models.py:711 inventory/models.py:983 +#: inventory/models.py:714 inventory/models.py:986 msgid "Showroom" msgstr "صالة العرض" -#: inventory/models.py:712 +#: inventory/models.py:715 msgid "Dealer where the car is displayed (can be the owner)." msgstr "التاجر الذي تُعرض السيارة في صالته (يمكن أن يكون المالك)." -#: inventory/models.py:718 +#: inventory/models.py:721 msgid "Optional description about the showroom placement." msgstr "وصف اختياري حول وضع السيارة في صالة العرض." -#: inventory/models.py:721 +#: inventory/models.py:724 msgid "Last Updated" msgstr "آخر تحديث" -#: inventory/models.py:724 +#: inventory/models.py:727 msgid "Car Location" msgstr "موقع السيارة" -#: inventory/models.py:725 +#: inventory/models.py:728 msgid "Car Locations" msgstr "مواقف السيارات" -#: inventory/models.py:744 +#: inventory/models.py:747 msgid "Plate Number" msgstr "رقم اللوحة" -#: inventory/models.py:745 +#: inventory/models.py:748 msgid "Text 1" msgstr "النص 1" -#: inventory/models.py:746 +#: inventory/models.py:749 msgid "Text 2" msgstr "النص 2" -#: inventory/models.py:747 +#: inventory/models.py:750 msgid "Text 3" msgstr "النص 3" -#: inventory/models.py:748 templates/inventory/car_detail.html:138 +#: inventory/models.py:751 templates/inventory/car_detail.html:144 msgid "Registration Date" msgstr "تاريخ التسجيل" -#: inventory/models.py:751 templates/inventory/car_detail.html:132 -#: templates/inventory/car_detail.html:144 -#: templates/inventory/car_detail.html:414 +#: inventory/models.py:754 templates/inventory/car_detail.html:138 +#: templates/inventory/car_detail.html:150 +#: templates/inventory/car_detail.html:425 msgid "Registration" msgstr "التسجيل" -#: inventory/models.py:752 +#: inventory/models.py:755 msgid "Registrations" msgstr "تسجيل السيارات" -#: inventory/models.py:760 inventory/models.py:949 inventory/models.py:1085 -#: inventory/models.py:1118 inventory/models.py:1212 inventory/models.py:1365 -#: inventory/models.py:1385 inventory/models.py:1407 inventory/models.py:1430 -#: inventory/models.py:1447 templates/crm/leads/lead_detail.html:91 +#: inventory/models.py:763 inventory/models.py:952 inventory/models.py:1090 +#: inventory/models.py:1123 inventory/models.py:1217 inventory/models.py:1371 +#: inventory/models.py:1391 inventory/models.py:1413 inventory/models.py:1436 +#: inventory/models.py:1453 templates/crm/leads/lead_detail.html:100 #: templates/sales/estimates/estimate_list.html:18 #: templates/sales/invoices/invoice_list.html:19 #: templates/sales/journals/journal_list.html:19 @@ -847,31 +858,31 @@ msgstr "تسجيل السيارات" msgid "Created" msgstr "تاريخ الإنشاء" -#: inventory/models.py:761 inventory/models.py:950 inventory/models.py:1086 -#: inventory/models.py:1119 inventory/models.py:1214 inventory/models.py:1366 -#: inventory/models.py:1386 inventory/models.py:1408 inventory/models.py:1431 +#: inventory/models.py:764 inventory/models.py:953 inventory/models.py:1091 +#: inventory/models.py:1124 inventory/models.py:1219 inventory/models.py:1372 +#: inventory/models.py:1392 inventory/models.py:1414 inventory/models.py:1437 #: 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:868 inventory/models.py:1116 inventory/models.py:1475 +#: inventory/models.py:871 inventory/models.py:1121 inventory/models.py:1481 msgid "Logo" msgstr "الشعار" -#: inventory/models.py:873 +#: inventory/models.py:876 msgid "Joined At" msgstr "انضم في" -#: inventory/models.py:899 +#: inventory/models.py:902 msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:933 templates/header.html:26 +#: inventory/models.py:936 templates/header.html:26 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3214 msgid "Manager" msgstr "مدير" -#: inventory/models.py:934 inventory/signals.py:143 templates/header.html:31 +#: inventory/models.py:937 inventory/signals.py:143 templates/header.html:31 #: templates/header.html:68 templates/header.html:73 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:440 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:526 @@ -880,104 +891,104 @@ msgstr "مدير" msgid "Inventory" msgstr "المخزن" -#: inventory/models.py:935 +#: inventory/models.py:938 msgid "Accountant" msgstr "محاسب" -#: inventory/models.py:936 templates/header.html:36 templates/header.html:153 +#: inventory/models.py:939 templates/header.html:36 templates/header.html:153 msgid "Sales" msgstr "المبيعات" -#: inventory/models.py:937 +#: inventory/models.py:940 msgid "Coordinator" msgstr "المنسق" -#: inventory/models.py:938 +#: inventory/models.py:941 msgid "Receptionist" msgstr "موظف الاستقبال" -#: inventory/models.py:939 +#: inventory/models.py:942 msgid "Agent" msgstr "عميل" -#: inventory/models.py:948 +#: inventory/models.py:951 msgid "Staff Type" msgstr "نوع الموظف" -#: inventory/models.py:972 inventory/models.py:973 +#: inventory/models.py:975 inventory/models.py:976 #: templates/crm/opportunities/opportunity_detail.html:234 #: templates/crm/opportunities/opportunity_form.html:70 #: templates/users/user_form.html:4 templates/users/user_list.html:5 msgid "Staff" msgstr "الموظفون" -#: inventory/models.py:981 +#: inventory/models.py:984 msgid "Referrals" msgstr "إحالات" -#: inventory/models.py:982 inventory/models.py:1027 +#: inventory/models.py:985 inventory/models.py:1032 msgid "WhatsApp" msgstr "واتساب" -#: inventory/models.py:984 +#: inventory/models.py:987 msgid "TikTok" msgstr "تيك توك" -#: inventory/models.py:985 +#: inventory/models.py:988 msgid "Instagram" msgstr "إنستغرام" -#: inventory/models.py:986 +#: inventory/models.py:989 msgid "X" msgstr "إكس" -#: inventory/models.py:987 +#: inventory/models.py:990 msgid "Facebook" msgstr "فيسبوك" -#: inventory/models.py:988 +#: inventory/models.py:991 msgid "Motory" msgstr "موتري" -#: inventory/models.py:989 +#: inventory/models.py:992 msgid "Influencers" msgstr "المؤثرون" -#: inventory/models.py:990 +#: inventory/models.py:993 msgid "Youtube" msgstr "يوتيوب" -#: inventory/models.py:991 +#: inventory/models.py:994 msgid "Campaign" msgstr "حملة" -#: inventory/models.py:995 +#: inventory/models.py:998 msgid "Walk In" msgstr "زيارة مباشرة" -#: inventory/models.py:996 +#: inventory/models.py:999 msgid "Toll Free" msgstr "رقم مجاني" -#: inventory/models.py:997 +#: inventory/models.py:1000 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:112 msgid "Website" msgstr "الموقع الإلكتروني" -#: inventory/models.py:998 inventory/models.py:1026 inventory/models.py:1075 -#: inventory/models.py:1157 inventory/models.py:1411 +#: inventory/models.py:1001 inventory/models.py:1031 inventory/models.py:1080 +#: inventory/models.py:1162 inventory/models.py:1417 #: templates/account/login.html:28 templates/account/login.html:30 #: templates/administration/display_appointment.html:49 #: templates/administration/manage_staff_personal_info.html:29 #: templates/administration/staff_list.html:35 #: templates/administration/user_profile.html:25 #: templates/appointment/appointment_client_information.html:45 -#: templates/crm/leads/lead_detail.html:73 +#: templates/crm/leads/lead_detail.html:82 #: templates/crm/opportunities/opportunity_detail.html:203 #: templates/customers/view_customer.html:71 #: templates/dealers/dealer_detail.html:74 #: templates/groups/group_detail.html:61 -#: templates/sales/estimates/estimate_detail.html:122 +#: templates/sales/estimates/estimate_detail.html:137 #: templates/sales/estimates/estimate_preview.html:266 #: templates/sales/estimates/sale_order_preview.html:228 #: templates/vendors/view_vendor.html:55 @@ -989,23 +1000,32 @@ msgstr "الموقع الإلكتروني" msgid "Email" msgstr "البريد الإلكتروني" -#: inventory/models.py:999 +#: inventory/models.py:1002 msgid "Form" msgstr "نموذج" -#: inventory/models.py:1005 templates/crm/leads/lead_detail.html:48 +#: inventory/models.py:1008 templates/crm/leads/lead_detail.html:57 #: templates/crm/leads/lead_list.html:123 msgid "In Progress" msgstr "قيد التنفيذ" -#: inventory/models.py:1006 templates/crm/leads/lead_detail.html:50 +#: inventory/models.py:1009 templates/crm/leads/lead_detail.html:59 #: templates/crm/leads/lead_list.html:125 msgid "Qualified" msgstr "مؤهل" -#: inventory/models.py:1007 templates/crm/leads/lead_detail.html:52 -#: templates/crm/leads/lead_list.html:127 -#: templates/sales/estimates/estimate_detail.html:141 +#: inventory/models.py:1010 templates/crm/leads/lead_list.html:127 +msgid "Contacted" +msgstr "تم الاتصال" + +#: inventory/models.py:1011 +msgid "Converted" +msgstr "تم التحويل" + +#: inventory/models.py:1012 templates/crm/leads/lead_detail.html:61 +#: templates/crm/leads/lead_list.html:129 +#: templates/sales/estimates/estimate_detail.html:73 +#: templates/sales/estimates/estimate_detail.html:156 #: templates/sales/estimates/estimate_list.html:37 #: templates/sales/invoices/invoice_list.html:34 test.txt:59 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:347 @@ -1016,269 +1036,269 @@ msgstr "مؤهل" msgid "Canceled" msgstr "ملغى" -#: inventory/models.py:1011 +#: inventory/models.py:1016 msgid "Mr" msgstr "السيد" -#: inventory/models.py:1012 +#: inventory/models.py:1017 msgid "Mrs" msgstr "السيدة" -#: inventory/models.py:1013 +#: inventory/models.py:1018 msgid "Ms" msgstr "الآنسة" -#: inventory/models.py:1014 +#: inventory/models.py:1019 msgid "Miss" msgstr "الآنسة" -#: inventory/models.py:1015 +#: inventory/models.py:1020 msgid "Dr" msgstr "الدكتور" -#: inventory/models.py:1016 +#: inventory/models.py:1021 msgid "Prof" msgstr "الأستاذ" -#: inventory/models.py:1017 +#: inventory/models.py:1022 msgid "Prince" msgstr "الأمير" -#: inventory/models.py:1018 +#: inventory/models.py:1023 msgid "Princess" msgstr "الأميرة" -#: inventory/models.py:1019 +#: inventory/models.py:1024 msgid "Company" msgstr "الشركة" -#: inventory/models.py:1020 +#: inventory/models.py:1025 msgid "N/A" msgstr "غير متوفر" -#: inventory/models.py:1024 +#: inventory/models.py:1029 msgid "Call" msgstr "مكالمة" -#: inventory/models.py:1025 +#: inventory/models.py:1030 msgid "SMS" msgstr "رسالة نصية" -#: inventory/models.py:1028 +#: inventory/models.py:1033 msgid "Visit" msgstr "زيارة" -#: inventory/models.py:1029 templates/inventory/car_form.html:23 +#: inventory/models.py:1034 templates/inventory/car_form.html:23 msgid "Add Car" msgstr "إضافة سيارة" -#: inventory/models.py:1030 +#: inventory/models.py:1035 msgid "Sale Car" msgstr "بيع سيارة" -#: inventory/models.py:1031 templates/inventory/reserve_car.html:6 +#: inventory/models.py:1036 templates/inventory/reserve_car.html:6 #: templates/inventory/reserve_car.html:9 msgid "Reserve Car" msgstr "حجز السيارة" -#: inventory/models.py:1032 templates/inventory/transfer_car.html:4 +#: inventory/models.py:1037 templates/inventory/transfer_car.html:4 msgid "Transfer Car" msgstr "نقل السيارة" -#: inventory/models.py:1033 +#: inventory/models.py:1038 msgid "Remove Car" msgstr "إزالة السيارة" -#: inventory/models.py:1034 +#: inventory/models.py:1039 #: templates/crm/opportunities/opportunity_detail.html:19 #: templates/sales/estimates/estimate_form.html:5 #: templates/sales/estimates/estimate_form.html:9 msgid "Create Quotation" msgstr "إنشاء عرض" -#: inventory/models.py:1035 +#: inventory/models.py:1040 msgid "Cancel Quotation" msgstr "إلغاء العرض" -#: inventory/models.py:1036 +#: inventory/models.py:1041 msgid "Create Order" msgstr "إنشاء طلب" -#: inventory/models.py:1037 +#: inventory/models.py:1042 msgid "Cancel Order" msgstr "إلغاء الطلب" -#: inventory/models.py:1038 templates/sales/estimates/estimate_detail.html:74 +#: inventory/models.py:1043 templates/sales/estimates/estimate_detail.html:89 #: 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:1039 +#: inventory/models.py:1044 msgid "Cancel Invoice" msgstr "إلغاء الفاتورة" -#: inventory/models.py:1043 +#: inventory/models.py:1048 msgid "Prospect" msgstr "العميل المحتمل" -#: inventory/models.py:1044 +#: inventory/models.py:1049 msgid "Proposal" msgstr "عرض" -#: inventory/models.py:1045 +#: inventory/models.py:1050 msgid "Negotiation" msgstr "مفاوضات" -#: inventory/models.py:1046 +#: inventory/models.py:1051 msgid "Closed Won" msgstr "مغلقة - ناجحة" -#: inventory/models.py:1047 +#: inventory/models.py:1052 msgid "Closed Lost" msgstr "مغلقة - خسارة" -#: inventory/models.py:1051 +#: inventory/models.py:1056 msgid "Low" msgstr "منخفض" -#: inventory/models.py:1052 +#: inventory/models.py:1057 msgid "Medium" msgstr "متوسط" -#: inventory/models.py:1053 +#: inventory/models.py:1058 msgid "High" msgstr "مرتفع" -#: inventory/models.py:1064 inventory/models.py:1155 +#: inventory/models.py:1069 inventory/models.py:1160 #: templates/administration/manage_staff_personal_info.html:18 msgid "First Name" msgstr "الاسم الأول" -#: inventory/models.py:1066 +#: inventory/models.py:1071 msgid "Middle Name" msgstr "اسم الأب" -#: inventory/models.py:1068 inventory/models.py:1156 +#: inventory/models.py:1073 inventory/models.py:1161 #: templates/administration/manage_staff_personal_info.html:24 msgid "Last Name" msgstr "اسم العائلة" -#: inventory/models.py:1070 +#: inventory/models.py:1075 msgid "Male" msgstr "ذكر" -#: inventory/models.py:1070 +#: inventory/models.py:1075 msgid "Female" msgstr "أنثى" -#: inventory/models.py:1072 +#: inventory/models.py:1077 msgid "Gender" msgstr "الجنس" -#: inventory/models.py:1074 +#: inventory/models.py:1079 msgid "Date of Birth" msgstr "تاريخ الميلاد" -#: inventory/models.py:1077 templates/customers/customer_list.html:45 +#: inventory/models.py:1082 templates/customers/customer_list.html:45 msgid "National ID" msgstr "رقم الهوية الوطنية" -#: inventory/models.py:1090 templates/customers/customer_form.html:4 +#: inventory/models.py:1095 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:1122 +#: inventory/models.py:1127 msgid "Organization" msgstr "شركة" -#: inventory/models.py:1123 templates/header.html:188 +#: inventory/models.py:1128 templates/header.html:188 #: templates/organizations/organization_list.html:4 #: templates/organizations/organization_list.html:5 #: templates/organizations/organization_list.html:12 msgid "Organizations" msgstr "الشركات" -#: inventory/models.py:1136 +#: inventory/models.py:1141 #: templates/representatives/representative_detail.html:8 #: templates/representatives/representative_list.html:18 msgid "ID Number" msgstr "رقم الهوية" -#: inventory/models.py:1146 +#: inventory/models.py:1151 msgid "Representative" msgstr "ممثل شركة" -#: inventory/models.py:1147 templates/header.html:196 +#: inventory/models.py:1152 templates/header.html:196 #: templates/representatives/representative_list.html:3 #: templates/representatives/representative_list.html:6 msgid "Representatives" msgstr "ممثلي الشركات" -#: inventory/models.py:1184 templates/crm/leads/lead_list.html:63 +#: inventory/models.py:1189 templates/crm/leads/lead_list.html:63 msgid "Source" msgstr "المصدر" -#: inventory/models.py:1187 templates/crm/leads/lead_list.html:69 +#: inventory/models.py:1192 templates/crm/leads/lead_list.html:69 msgid "Channel" msgstr "القناة" -#: inventory/models.py:1189 +#: inventory/models.py:1194 msgid "address" msgstr "العنوان" -#: inventory/models.py:1196 +#: inventory/models.py:1201 msgid "Assigned" msgstr "مُعين" -#: inventory/models.py:1202 +#: inventory/models.py:1207 msgid "Priority" msgstr "الأولوية" -#: inventory/models.py:1217 +#: inventory/models.py:1222 msgid "Lead" msgstr "فرصة" -#: inventory/models.py:1218 templates/crm/leads/lead_list.html:3 +#: inventory/models.py:1223 templates/crm/leads/lead_list.html:3 #: templates/crm/leads/lead_list.html:7 templates/crm/leads/lead_send.html:5 #: test.txt:21 msgid "Leads" msgstr "الفرص" -#: inventory/models.py:1313 +#: inventory/models.py:1319 msgid "Old Status" msgstr "الحالة القديمة" -#: inventory/models.py:1316 +#: inventory/models.py:1322 msgid "New Status" msgstr "الحالة الجديدة" -#: inventory/models.py:1321 +#: inventory/models.py:1327 msgid "Changed At" msgstr "تم التغيير في" -#: inventory/models.py:1324 +#: inventory/models.py:1330 msgid "Lead Status History" msgstr "تاريخ حالة العميل المحتمل" -#: inventory/models.py:1325 +#: inventory/models.py:1331 msgid "Lead Status Histories" msgstr "تواريخ حالات العملاء المحتملين" -#: inventory/models.py:1333 +#: inventory/models.py:1339 msgid "Probability must be between 0 and 100." msgstr "يجب أن تكون الاحتمالية بين 0 و 100." -#: inventory/models.py:1347 templates/crm/leads/lead_list.html:75 +#: inventory/models.py:1353 templates/crm/leads/lead_list.html:75 #: templates/crm/opportunities/opportunity_detail.html:98 #: templates/crm/opportunities/opportunity_form.html:48 msgid "Stage" msgstr "المرحلة" -#: inventory/models.py:1364 +#: inventory/models.py:1370 #: templates/crm/opportunities/opportunity_detail.html:267 #: templates/crm/opportunities/opportunity_form.html:79 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:100 @@ -1287,30 +1307,30 @@ msgstr "المرحلة" msgid "Closing Date" msgstr "تاريخ الإغلاق" -#: inventory/models.py:1367 +#: inventory/models.py:1373 msgid "Closed" msgstr "مغلقة" -#: inventory/models.py:1370 +#: inventory/models.py:1376 msgid "Opportunity" msgstr "فرصة" -#: inventory/models.py:1371 +#: inventory/models.py:1377 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:8 #: templates/crm/opportunities/opportunity_list.html:8 msgid "Opportunities" msgstr "الفرص" -#: inventory/models.py:1381 inventory/models.py:1389 +#: inventory/models.py:1387 inventory/models.py:1395 #: templates/account/snippets/already_logged_in.html:8 -#: templates/crm/leads/lead_detail.html:194 +#: templates/crm/leads/lead_detail.html:226 msgid "Note" msgstr "ملاحظة" -#: inventory/models.py:1390 inventory/models.py:1426 -#: templates/crm/leads/lead_detail.html:128 -#: templates/crm/leads/lead_detail.html:181 -#: templates/crm/leads/lead_detail.html:357 +#: inventory/models.py:1396 inventory/models.py:1432 +#: templates/crm/leads/lead_detail.html:137 +#: templates/crm/leads/lead_detail.html:213 +#: templates/crm/leads/lead_detail.html:388 #: templates/customers/view_customer.html:90 #: templates/customers/view_customer.html:186 #: venv/lib/python3.11/site-packages/django_ledger/forms/bill.py:154 @@ -1318,33 +1338,33 @@ msgstr "ملاحظة" msgid "Notes" msgstr "ملاحظات" -#: inventory/models.py:1399 +#: inventory/models.py:1405 msgid "From Email" msgstr "من البريد الإلكتروني" -#: inventory/models.py:1400 +#: inventory/models.py:1406 msgid "To Email" msgstr "إلى البريد الإلكتروني" -#: inventory/models.py:1401 +#: inventory/models.py:1407 msgid "Subject" msgstr "الموضوع" -#: inventory/models.py:1402 inventory/models.py:1445 +#: inventory/models.py:1408 inventory/models.py:1451 msgid "Message" msgstr "رسالة" -#: inventory/models.py:1412 templates/crm/leads/lead_detail.html:129 -#: templates/crm/leads/lead_detail.html:234 +#: inventory/models.py:1418 templates/crm/leads/lead_detail.html:138 +#: templates/crm/leads/lead_detail.html:266 msgid "Emails" msgstr "رسائل البريد الإلكتروني" -#: inventory/models.py:1424 +#: inventory/models.py:1430 msgid "Activity Type" msgstr "نوع النشاط" -#: inventory/models.py:1434 templates/crm/leads/lead_detail.html:127 -#: templates/dealers/activity_log.html:11 templates/header.html:457 +#: inventory/models.py:1440 templates/crm/leads/lead_detail.html:136 +#: templates/dealers/activity_log.html:11 #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:384 #: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:388 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:10 @@ -1353,84 +1373,85 @@ msgstr "نوع النشاط" msgid "Activity" msgstr "النشاط" -#: inventory/models.py:1435 templates/crm/leads/lead_detail.html:134 +#: inventory/models.py:1441 templates/crm/leads/lead_detail.html:166 +#: templates/header.html:457 msgid "Activities" msgstr "الأنشطة" -#: inventory/models.py:1446 +#: inventory/models.py:1452 msgid "Is Read" msgstr "تمت قراءته" -#: inventory/models.py:1450 +#: inventory/models.py:1456 msgid "Notification" msgstr "إشعار" -#: inventory/models.py:1451 templates/crm/notifications_history.html:6 +#: inventory/models.py:1457 templates/crm/notifications_history.html:6 #: templates/notifications.html:13 msgid "Notifications" msgstr "الإشعارات" -#: inventory/models.py:1468 templates/vendors/view_vendor.html:49 +#: inventory/models.py:1474 templates/vendors/view_vendor.html:49 msgid "Contact Person" msgstr "الشخص المسؤول" -#: inventory/models.py:1481 templates/vendors/vendor_form.html:4 +#: inventory/models.py:1487 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:1680 inventory/models.py:1710 +#: inventory/models.py:1686 inventory/models.py:1716 msgid "amount" msgstr "المبلغ" -#: inventory/models.py:1683 +#: inventory/models.py:1689 msgid "method" msgstr "طريقة" -#: inventory/models.py:1686 +#: inventory/models.py:1692 msgid "reference number" msgstr "رقم المرجع" -#: inventory/models.py:1688 +#: inventory/models.py:1694 msgid "date" msgstr "التاريخ" -#: inventory/models.py:1698 +#: inventory/models.py:1704 msgid "payment" msgstr "الدفعة" -#: inventory/models.py:1699 templates/header.html:145 +#: inventory/models.py:1705 templates/header.html:145 msgid "payments" msgstr "المدفوعات" -#: inventory/models.py:1712 +#: inventory/models.py:1718 msgid "reason" msgstr "السبب" -#: inventory/models.py:1713 +#: inventory/models.py:1719 msgid "refund date" msgstr "تاريخ الاسترداد" -#: inventory/models.py:1716 +#: inventory/models.py:1722 msgid "refund" msgstr "استرداد" -#: inventory/models.py:1717 +#: inventory/models.py:1723 msgid "refunds" msgstr "استردادات" -#: inventory/models.py:1741 templates/sales/estimates/estimate_preview.html:257 +#: inventory/models.py:1747 templates/sales/estimates/estimate_preview.html:257 #: 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 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:9 msgid "Estimate" msgstr "تقدير" -#: inventory/models.py:1747 templates/customers/view_customer.html:148 +#: inventory/models.py:1753 templates/customers/view_customer.html:148 #: templates/plans/create_order.html:29 #: templates/sales/invoices/invoice_create.html:5 -#: templates/sales/invoices/invoice_detail.html:60 +#: templates/sales/invoices/invoice_detail.html:68 #: templates/sales/payments/payment_list.html:21 #: templates/sales/sales_list.html:118 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3144 @@ -1685,16 +1706,6 @@ msgstr "تحويل العملات الأجنبية" msgid "Interest Expenses" msgstr "مصروفات الفائدة" -#: inventory/signals.py:895 inventory/views.py:1541 -msgid "" -"The user quota for staff members is not defined. Please contact support." -msgstr "لم يتم تحديد الحصة المخصصة لأعضاء الفريق. يرجى الاتصال بالدعم." - -#: inventory/signals.py:898 inventory/views.py:1546 -msgid "" -"You have reached the maximum number of staff users allowed for your plan." -msgstr "لقد وصلت إلى الحد الأقصى لعدد أعضاء الفريق المسموح به في خطتك." - #: inventory/tables.py:20 templates/inventory/car_inventory.html:55 msgid "Exterior Color" msgstr "اللون الخارجي" @@ -1704,7 +1715,7 @@ msgid "Interior Color" msgstr "اللون الداخلي" #: inventory/tables.py:22 templates/inventory/car_inventory.html:59 -#: templates/inventory/car_list_view.html:113 +#: templates/inventory/car_list_view.html:114 msgid "Age" msgstr "العمر" @@ -1726,237 +1737,255 @@ msgstr "نسيت كلمة المرور؟" msgid "Car reserved successfully." msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:447 +#: inventory/views.py:496 msgid "VIN number exists" msgstr "رقم الهيكل موجود مسبقاً" -#: inventory/views.py:642 templates/dashboards/manager.html:113 -#: templates/inventory/car_inventory.html:5 +#: inventory/views.py:689 templates/dashboards/manager.html:113 +#: templates/dashboards/sales.html:113 templates/inventory/car_inventory.html:5 #: templates/inventory/inventory_stats.html:5 msgid "inventory" msgstr "المخزون" -#: inventory/views.py:856 +#: inventory/views.py:903 msgid "Car finance details saved successfully." msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:880 +#: inventory/views.py:927 msgid "Car finance details updated successfully." msgstr "تم تحديث تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:909 +#: inventory/views.py:956 msgid "Car updated successfully." msgstr "تم تحديث السيارة بنجاح" -#: inventory/views.py:921 +#: inventory/views.py:968 msgid "Car deleted successfully." msgstr "تم حذف السيارة بنجاح." -#: inventory/views.py:997 +#: inventory/views.py:1044 msgid "Car transfer canceled successfully." msgstr "تم إلغاء نقل السيارة بنجاح." -#: inventory/views.py:1014 +#: inventory/views.py:1061 msgid "Car transfer approved successfully." msgstr "تمت الموافقة على نقل السيارة بنجاح." -#: inventory/views.py:1025 +#: inventory/views.py:1072 msgid "Car transfer rejected successfully." msgstr "تم رفض نقل السيارة بنجاح." -#: inventory/views.py:1037 +#: inventory/views.py:1084 msgid "Car Transfer Completed successfully." msgstr "تم إكمال نقل السيارة بنجاح." -#: inventory/views.py:1069 +#: inventory/views.py:1116 msgid "Custom Card added successfully." msgstr "تم إضافة البطاقة الجمركية بنجاح." -#: inventory/views.py:1089 +#: inventory/views.py:1136 msgid "Registration added successfully." msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1098 +#: inventory/views.py:1145 msgid "This car is already reserved." msgstr "هذه السيارة محجوزة بالفعل." -#: inventory/views.py:1118 +#: inventory/views.py:1165 msgid "Reservation renewed successfully." msgstr "تم تجديد الحجز بنجاح" -#: inventory/views.py:1126 +#: inventory/views.py:1173 msgid "Reservation canceled successfully." msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1131 +#: inventory/views.py:1178 msgid "Invalid action." msgstr "إجراء غير صالح." -#: inventory/views.py:1135 +#: inventory/views.py:1182 msgid "Invalid request method." msgstr "طريقة الطلب غير صالحة" -#: inventory/views.py:1172 +#: inventory/views.py:1216 msgid "Dealer updated successfully." msgstr "تم تحديث المعرض بنجاح." -#: inventory/views.py:1179 templates/header.html:181 +#: inventory/views.py:1223 templates/header.html:181 msgid "customers" msgstr "العملاء" -#: inventory/views.py:1264 +#: inventory/views.py:1302 msgid "Customer with this email already exists." msgstr "عميل بهذا البريد الإلكتروني موجود بالفعل." -#: inventory/views.py:1296 +#: inventory/views.py:1327 msgid "Customer created successfully." msgstr "تم إنشاء العميل بنجاح." -#: inventory/views.py:1303 +#: inventory/views.py:1334 msgid "Please correct the errors below." msgstr "يرجى تصحيح الأخطاء أدناه." -#: inventory/views.py:1333 +#: inventory/views.py:1373 msgid "Customer updated successfully." msgstr "تم تحديث العميل بنجاح." -#: inventory/views.py:1350 +#: inventory/views.py:1390 msgid "Customer deleted successfully." msgstr "تم حذف العميل بنجاح." -#: inventory/views.py:1381 +#: inventory/views.py:1421 msgid "Vendor created successfully." msgstr "تم إنشاء المورد بنجاح." -#: inventory/views.py:1399 +#: inventory/views.py:1439 msgid "Vendor updated successfully." msgstr "تم تحديث المورد بنجاح" -#: inventory/views.py:1407 +#: inventory/views.py:1447 msgid "Vendor deleted successfully." msgstr "تم حذف المورد بنجاح." -#: inventory/views.py:1436 +#: inventory/views.py:1476 msgid "Group created successfully." msgstr "تم إنشاء المجموعة بنجاح." -#: inventory/views.py:1457 +#: inventory/views.py:1497 msgid "Group updated successfully." msgstr "تم تحديث المجموعة بنجاح." -#: inventory/views.py:1469 +#: inventory/views.py:1509 msgid "Group deleted successfully." msgstr "تم حذف المجموعة بنجاح." -#: inventory/views.py:1480 +#: inventory/views.py:1520 msgid "Permission added successfully." msgstr "تمت إضافة الإذن بنجاح." -#: inventory/views.py:1498 +#: inventory/views.py:1538 msgid "Group added successfully." msgstr "تمت إضافة المجموعة بنجاح." -#: inventory/views.py:1533 +#: inventory/views.py:1573 msgid "User created successfully." msgstr "تم إنشاء المستخدم بنجاح." -#: inventory/views.py:1576 +#: inventory/views.py:1581 +msgid "" +"The user quota for staff members is not defined. Please contact support." +msgstr "لم يتم تحديد الحصة المخصصة لأعضاء الفريق. يرجى الاتصال بالدعم." + +#: inventory/views.py:1586 +msgid "" +"You have reached the maximum number of staff users allowed for your plan." +msgstr "لقد وصلت إلى الحد الأقصى لعدد أعضاء الفريق المسموح به في خطتك." + +#: inventory/views.py:1616 msgid "User updated successfully." msgstr "تم تحديث المستخدم بنجاح" -#: inventory/views.py:1612 +#: inventory/views.py:1652 msgid "User deleted successfully." msgstr "تم حذف المستخدم بنجاح." -#: inventory/views.py:1681 inventory/views.py:1711 +#: inventory/views.py:1697 +msgid "An organization with this email already exists." +msgstr "توجد بالفعل منظمة بهذا البريد الإلكتروني." + +#: inventory/views.py:1723 inventory/views.py:1760 msgid "Organization created successfully." msgstr "تم إنشاء المنظمة بنجاح." -#: inventory/views.py:2248 +#: inventory/views.py:1778 +msgid "Organization deleted successfully." +msgstr "تم حذف المنظمة بنجاح." + +#: inventory/views.py:2301 msgid "Estimate is not ready for review" msgstr "العرض غير جاهز للمراجعة." -#: inventory/views.py:2254 +#: inventory/views.py:2307 msgid "Estimate is not ready for approval" msgstr "العرض غير جاهز للموافقة." -#: inventory/views.py:2257 +#: inventory/views.py:2310 msgid "Estimate approved successfully." msgstr "تمت الموافقة على العرض بنجاح." -#: inventory/views.py:2260 +#: inventory/views.py:2313 msgid "Estimate is not ready for rejection" msgstr "العرض غير جاهز للرفض." -#: inventory/views.py:2263 inventory/views.py:2273 +#: inventory/views.py:2316 inventory/views.py:2326 msgid "Estimate canceled successfully." msgstr "تم إلغاء العرض بنجاح." -#: inventory/views.py:2266 +#: inventory/views.py:2319 msgid "Estimate is not ready for completion" msgstr "العرض غير جاهز للإكمال." -#: inventory/views.py:2270 +#: inventory/views.py:2323 msgid "Estimate is not ready for cancelation" msgstr "العرض غير جاهز للإلغاء." -#: inventory/views.py:2742 +#: inventory/views.py:2802 msgid "Note deleted successfully." msgstr "تم حذف الملاحظة بنجاح." -#: inventory/views.py:2815 +#: inventory/views.py:2893 msgid "Email Draft successfully!" msgstr "تم حفظ مسودة البريد الإلكتروني بنجاح!" -#: inventory/views.py:2841 inventory/views.py:3377 +#: inventory/views.py:2918 inventory/views.py:3454 msgid "Email sent successfully!" msgstr "تم إرسال البريد الإلكتروني بنجاح!" -#: inventory/views.py:2967 +#: inventory/views.py:3044 msgid "Opportunity deleted successfully." msgstr "تم حذف الفرصة بنجاح." -#: inventory/views.py:3001 +#: inventory/views.py:3078 msgid "Notification marked as read." msgstr "تم تمييز الإشعار كمقروء." -#: inventory/views.py:3019 +#: inventory/views.py:3096 msgid "Service created successfully." msgstr "تم إنشاء الخدمة بنجاح." -#: inventory/views.py:3036 +#: inventory/views.py:3113 msgid "Service updated successfully." msgstr "تم تحديث الخدمة بنجاح." -#: inventory/views.py:3152 inventory/views.py:3177 +#: inventory/views.py:3229 inventory/views.py:3254 msgid "Bill updated successfully." msgstr "تم تحديث الفاتورة بنجاح." -#: inventory/views.py:3204 +#: inventory/views.py:3281 msgid "Bill is already approved." msgstr "تمت الموافقة على الفاتورة مسبقًا." -#: inventory/views.py:3208 +#: inventory/views.py:3285 msgid "Bill marked as approved successfully." msgstr "تم تحديد الفاتورة كموافقة بنجاح." -#: inventory/views.py:3218 +#: inventory/views.py:3295 msgid "Bill is already paid." msgstr "تم دفع الفاتورة مسبقًا." -#: inventory/views.py:3227 +#: inventory/views.py:3304 msgid "Bill marked as paid successfully." msgstr "تم تحديد الفاتورة كمدفوعة بنجاح." -#: inventory/views.py:3229 +#: inventory/views.py:3306 msgid "Amount paid is not equal to amount due." msgstr "المبلغ المدفوع لا يساوي المبلغ المستحق." -#: inventory/views.py:3367 +#: inventory/views.py:3444 msgid "Estimate has no items" msgstr "التقدير لا يحتوي على أي عناصر." -#: inventory/views.py:3568 templates/header.html:286 +#: inventory/views.py:3645 templates/header.html:286 #: 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" @@ -1999,8 +2028,8 @@ msgstr "" #: templates/ledger/bills/bill_detail.html:36 #: templates/plans/billing_info_delete.html:13 #: templates/sales/estimates/estimate_detail.html:35 -#: templates/sales/invoices/invoice_detail.html:11 -#: templates/sales/invoices/invoice_detail.html:35 +#: templates/sales/invoices/invoice_detail.html:18 +#: templates/sales/invoices/invoice_detail.html:42 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/modals_v2.html:11 msgid "Confirm" msgstr "تأكيد" @@ -2017,7 +2046,7 @@ msgstr "تأكيد" #: templates/inventory/add_colors.html:56 #: templates/inventory/add_custom_card.html:12 #: templates/inventory/car_confirm_delete.html:14 -#: templates/inventory/car_detail.html:313 +#: templates/inventory/car_detail.html:320 #: templates/inventory/car_finance_form.html:41 #: templates/inventory/car_registration_form.html:13 #: templates/inventory/color_palette.html:107 @@ -2031,7 +2060,7 @@ msgstr "تأكيد" #: templates/modal/event_details_modal.html:24 #: templates/organizations/organization_form.html:14 #: templates/representatives/representative_form.html:12 -#: templates/sales/estimates/estimate_detail.html:84 +#: templates/sales/estimates/estimate_detail.html:99 #: templates/sales/estimates/estimate_form.html:44 #: templates/sales/estimates/estimate_preview.html:225 #: templates/sales/estimates/estimate_preview.html:244 @@ -2652,16 +2681,12 @@ msgstr "التالي" #: templates/account/signup-wizard.html:102 #: templates/account/signup-wizard.html:107 -#, fuzzy -#| msgid "Please enter a valid 17-character VIN number." msgid "Please enter a valid phone number" -msgstr "الرجاء إدخال رقم هيكل صالح مكون من 17 حرفًا." +msgstr "يرجى إدخال رقم هاتف صالح" #: templates/account/signup-wizard.html:138 -#, fuzzy -#| msgid "Passwords do not match." msgid "Password does not match" -msgstr "كلمات المرور غير متطابقة." +msgstr "كلمة المرور غير متطابقة" #: templates/account/signup-wizard.html:246 #: templates/inventory/car_form.html:605 @@ -2703,10 +2728,8 @@ msgstr "" "إلكتروني حتى تتمكن من تلقي الإشعارات وإعادة تعيين كلمة المرور وما إلى ذلك." #: templates/account/user_settings.html:6 -#, fuzzy -#| msgid "User Details" msgid "User Settings" -msgstr "تفاصيل المستخدم" +msgstr "إعدادات المستخدم" #: templates/account/verfied_email_required.html:5 #: templates/account/verfied_email_required.html:19 @@ -2766,7 +2789,7 @@ 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:352 +#: templates/inventory/car_detail.html:360 #: templates/inventory/transfer_details.html:59 #: templates/inventory/transfer_preview.html:219 #: templates/ledger/coa_accounts/account_detail.html:64 @@ -2924,7 +2947,7 @@ msgstr "تأكيد الحذف" #: templates/administration/service_list.html:13 #: templates/administration/staff_index.html:79 #: templates/administration/user_profile.html:18 -#: templates/crm/leads/lead_list.html:97 templates/crm/leads/lead_list.html:198 +#: templates/crm/leads/lead_list.html:97 templates/crm/leads/lead_list.html:202 #: templates/crm/opportunities/opportunity_detail.html:11 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:28 #: templates/customers/view_customer.html:22 @@ -2935,8 +2958,8 @@ msgstr "تأكيد الحذف" #: templates/ledger/coa_accounts/account_list.html:110 #: templates/modal/delete_modal.html:12 templates/modal/delete_modal.html:26 #: templates/modal/event_details_modal.html:33 -#: templates/organizations/organization_detail.html:17 -#: templates/organizations/organization_list.html:130 +#: templates/organizations/organization_detail.html:19 +#: templates/organizations/organization_list.html:131 #: templates/plans/billing_info_create_or_update.html:14 #: templates/representatives/representative_detail.html:16 #: templates/sales/estimates/estimate_detail.html:12 @@ -3110,7 +3133,7 @@ msgstr "قائمة الخدمات" #: templates/administration/user_profile.html:94 #: templates/administration/user_profile.html:162 #: templates/groups/group_detail.html:83 -#: templates/inventory/car_detail.html:348 +#: templates/inventory/car_detail.html:356 #: templates/items/expenses/expenses_list.html:22 #: templates/items/service/service_list.html:24 #: templates/ledger/bank_accounts/bank_account_list.html:21 @@ -3224,14 +3247,14 @@ msgid "Staff Members" msgstr "أعضاء الفريق" #: templates/administration/staff_list.html:25 -#: templates/crm/leads/lead_detail.html:184 templates/crm/note_form.html:15 +#: templates/crm/leads/lead_detail.html:216 templates/crm/note_form.html:15 #: templates/customers/note_form.html:6 #: templates/customers/view_customer.html:81 -#: templates/inventory/car_detail.html:125 -#: templates/inventory/car_detail.html:147 -#: templates/inventory/car_detail.html:163 -#: templates/inventory/car_detail.html:233 -#: templates/inventory/car_detail.html:277 +#: templates/inventory/car_detail.html:131 +#: templates/inventory/car_detail.html:153 +#: templates/inventory/car_detail.html:169 +#: templates/inventory/car_detail.html:239 +#: templates/inventory/car_detail.html:283 #: templates/inventory/car_location_form.html:10 #: venv/lib/python3.11/site-packages/appointment/services.py:170 msgid "Add" @@ -3464,7 +3487,7 @@ msgstr "تفاصيل الدفع" #: templates/appointment/appointment_client_information.html:96 #: templates/customers/view_customer.html:115 -#: templates/inventory/car_detail.html:218 +#: templates/inventory/car_detail.html:224 #: templates/inventory/inventory_stats.html:72 #: templates/inventory/transfer_details.html:74 #: templates/inventory/transfer_preview.html:232 @@ -3472,10 +3495,10 @@ msgstr "تفاصيل الدفع" #: templates/ledger/coa_accounts/account_detail.html:100 #: templates/ledger/reports/tags/balance_sheet_statement.html:55 #: templates/plans/order_detail_table.html:12 -#: templates/sales/estimates/estimate_detail.html:161 +#: templates/sales/estimates/estimate_detail.html:176 #: templates/sales/estimates/estimate_preview.html:278 #: templates/sales/estimates/sale_order_preview.html:244 -#: templates/sales/invoices/invoice_detail.html:220 +#: templates/sales/invoices/invoice_detail.html:242 #: venv/lib/python3.11/site-packages/appointment/templates/appointment/appointment_client_information.html:103 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:98 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:127 @@ -3645,60 +3668,60 @@ msgstr "هيكل" msgid "Select Date" msgstr "اختر التاريخ" -#: templates/crm/leads/lead_detail.html:9 -#: templates/crm/leads/lead_detail.html:26 +#: templates/crm/leads/lead_detail.html:18 +#: templates/crm/leads/lead_detail.html:35 msgid "Lead Details" msgstr "تفاصيل العميل المحتمل" -#: templates/crm/leads/lead_detail.html:35 +#: templates/crm/leads/lead_detail.html:44 msgid "Assigned to" msgstr "مُعين إلى" -#: templates/crm/leads/lead_detail.html:37 +#: templates/crm/leads/lead_detail.html:46 msgid "Not Assigned" msgstr "غير معين" -#: templates/crm/leads/lead_detail.html:63 +#: templates/crm/leads/lead_detail.html:72 msgid "Car Requested" msgstr "السيارة المطلوبة" -#: templates/crm/leads/lead_detail.html:85 +#: templates/crm/leads/lead_detail.html:94 msgid "Salary" msgstr "الراتب" -#: templates/crm/leads/lead_detail.html:97 +#: templates/crm/leads/lead_detail.html:106 msgid "Lead Source" msgstr "مصدر العميل المحتمل" -#: templates/crm/leads/lead_detail.html:103 +#: templates/crm/leads/lead_detail.html:112 msgid "Lead Channel" msgstr "قناة العميل المحتمل" -#: templates/crm/leads/lead_detail.html:115 +#: templates/crm/leads/lead_detail.html:124 #: 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 "المدينة" -#: templates/crm/leads/lead_detail.html:169 +#: templates/crm/leads/lead_detail.html:201 msgid "by" msgstr "بواسطة" -#: templates/crm/leads/lead_detail.html:186 +#: templates/crm/leads/lead_detail.html:218 #: templates/customers/view_customer.html:83 msgid "Add Note" msgstr "إضافة ملاحظة" -#: templates/crm/leads/lead_detail.html:195 +#: templates/crm/leads/lead_detail.html:227 msgid "Created By" msgstr "تم الإنشاء بواسطة" -#: templates/crm/leads/lead_detail.html:196 +#: templates/crm/leads/lead_detail.html:228 msgid "Created On" msgstr "تم الإنشاء في" -#: templates/crm/leads/lead_detail.html:213 +#: templates/crm/leads/lead_detail.html:245 #: templates/crm/leads/schedule_lead.html:5 templates/crm/note_form.html:13 #: templates/customers/view_customer.html:27 #: templates/items/expenses/expenses_list.html:34 @@ -3744,9 +3767,9 @@ msgstr "تم الإنشاء في" msgid "Update" msgstr "تحديث" -#: templates/crm/leads/lead_detail.html:387 +#: templates/crm/leads/lead_detail.html:418 #: templates/customers/view_customer.html:217 -#: templates/inventory/car_detail.html:516 +#: templates/inventory/car_detail.html:525 msgid "Error loading form. Please try again later" msgstr "حدث خطأ أثناء تحميل النموذج. يرجى المحاولة مرة أخرى لاحقًا." @@ -3784,7 +3807,7 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا العميل الم #: templates/crm/leads/lead_list.html:105 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:158 #: templates/groups/group_detail.html:32 -#: templates/inventory/car_detail.html:450 +#: templates/inventory/car_detail.html:461 #: templates/inventory/transfer_details.html:47 #: templates/ledger/bank_accounts/bank_account_detail.html:31 #: templates/ledger/bills/bill_detail.html:24 @@ -3796,9 +3819,9 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا العميل الم #: templates/organizations/organization_list.html:100 #: templates/sales/estimates/estimate_detail.html:20 #: templates/sales/estimates/estimate_detail.html:47 -#: templates/sales/invoices/invoice_detail.html:23 -#: templates/sales/invoices/invoice_detail.html:48 -#: templates/sales/invoices/invoice_detail.html:118 +#: templates/sales/invoices/invoice_detail.html:30 +#: templates/sales/invoices/invoice_detail.html:55 +#: templates/sales/invoices/invoice_detail.html:140 #: templates/users/user_detail.html:32 templates/vendors/vendors_list.html:100 #: templates/vendors/view_vendor.html:32 #: venv/lib/python3.11/site-packages/appointment/models.py:530 @@ -3806,10 +3829,10 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا العميل الم msgid "Yes" msgstr "نعم" -#: templates/crm/leads/lead_list.html:175 +#: templates/crm/leads/lead_list.html:178 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:155 #: templates/groups/group_detail.html:27 -#: templates/inventory/car_detail.html:445 +#: templates/inventory/car_detail.html:456 #: templates/inventory/transfer_details.html:24 #: templates/inventory/transfer_details.html:46 #: templates/ledger/bank_accounts/bank_account_detail.html:26 @@ -3821,9 +3844,9 @@ msgstr "نعم" #: templates/ledger/coa_accounts/account_list.html:75 #: templates/organizations/organization_list.html:97 #: templates/sales/estimates/estimate_detail.html:46 -#: templates/sales/invoices/invoice_detail.html:19 -#: templates/sales/invoices/invoice_detail.html:44 -#: templates/sales/invoices/invoice_detail.html:120 +#: templates/sales/invoices/invoice_detail.html:26 +#: templates/sales/invoices/invoice_detail.html:51 +#: templates/sales/invoices/invoice_detail.html:142 #: templates/users/user_detail.html:27 templates/vendors/vendors_list.html:97 #: templates/vendors/view_vendor.html:29 #: venv/lib/python3.11/site-packages/appointment/models.py:530 @@ -3832,18 +3855,18 @@ msgstr "نعم" msgid "No" msgstr "لا" -#: templates/crm/leads/lead_list.html:191 +#: templates/crm/leads/lead_list.html:195 #: templates/crm/opportunities/opportunity_detail.html:10 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:27 #: templates/dealers/dealer_detail.html:13 #: templates/groups/group_detail.html:103 -#: templates/inventory/car_detail.html:173 -#: templates/inventory/car_detail.html:225 +#: templates/inventory/car_detail.html:179 +#: templates/inventory/car_detail.html:231 #: templates/ledger/bank_accounts/bank_account_detail.html:57 #: templates/ledger/coa_accounts/account_detail.html:114 #: templates/modal/event_details_modal.html:27 #: templates/organizations/organization_detail.html:14 -#: templates/organizations/organization_list.html:128 +#: templates/organizations/organization_list.html:129 #: templates/representatives/representative_detail.html:13 #: templates/users/user_detail.html:84 templates/vendors/vendors_list.html:134 #: templates/vendors/view_vendor.html:64 @@ -3855,17 +3878,17 @@ msgstr "لا" msgid "Edit" msgstr "تحديث" -#: templates/crm/leads/lead_list.html:192 +#: templates/crm/leads/lead_list.html:196 msgid "Send Email" msgstr "إرسال البريد الإلكتروني" -#: templates/crm/leads/lead_list.html:193 -msgid "Set Schedule" -msgstr "تحديد الجدولة" +#: templates/crm/leads/lead_list.html:197 +msgid "Schedule Event" +msgstr "جدولة الحدث" -#: templates/crm/leads/lead_list.html:195 -msgid "Convert To Opportunity" -msgstr "تحويل إلى فرصة" +#: templates/crm/leads/lead_list.html:199 +msgid "Convert" +msgstr "تحويل" #: templates/crm/leads/schedule_lead.html:5 #: venv/lib/python3.11/site-packages/appointment/views_admin.py:429 @@ -3955,7 +3978,7 @@ msgstr "إضافة فرصة" #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:55 #: templates/crm/opportunities/opportunity_list.html:49 -#: templates/inventory/car_list_view.html:156 +#: templates/inventory/car_list_view.html:167 #: templates/ledger/bills/bill_list.html:97 #: templates/ledger/coa_accounts/account_list.html:108 #: templates/sales/invoices/invoice_list.html:61 @@ -4027,10 +4050,8 @@ msgid "Default Address" msgstr "العنوان الافتراضي" #: templates/customers/view_customer.html:108 -#, fuzzy -#| msgid "Created" msgid "Related" -msgstr "تاريخ الإنشاء" +msgstr "مرتبط" #: templates/customers/view_customer.html:114 #: templates/ledger/bank_accounts/bank_account_list.html:20 @@ -4040,13 +4061,11 @@ msgid "Type" msgstr "النوع" #: templates/customers/view_customer.html:116 -#, fuzzy -#| msgid "Payment Details" msgid "Payment Status" -msgstr "تفاصيل الدفع" +msgstr "حالة الدفع" #: templates/customers/view_customer.html:126 -#: templates/sales/estimates/estimate_detail.html:61 +#: templates/sales/estimates/estimate_detail.html:62 #: templates/sales/estimates/estimate_send.html:5 #: templates/sales/sales_list.html:117 msgid "Quotation" @@ -4054,54 +4073,57 @@ msgstr "عرض سعر" #: templates/customers/view_customer.html:154 #: templates/ledger/bills/bill_detail.html:199 -#: templates/sales/invoices/invoice_detail.html:200 +#: templates/sales/invoices/invoice_detail.html:79 +#: templates/sales/invoices/invoice_detail.html:222 #: templates/sales/invoices/invoice_list.html:40 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:346 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:303 msgid "Paid" msgstr "مدفوع" -#: templates/dashboards/manager.html:17 +#: templates/dashboards/manager.html:17 templates/dashboards/sales.html:17 msgid "Inventory by Status" msgstr "المخزون حسب الحالة" -#: templates/dashboards/manager.html:72 +#: templates/dashboards/manager.html:72 templates/dashboards/sales.html:72 msgid "New Leads and Customers" msgstr "العملاء والفرص الجديدة." -#: templates/dashboards/manager.html:73 +#: templates/dashboards/manager.html:73 templates/dashboards/sales.html:73 msgid "Payment received across all channels" msgstr "تم استلام الدفع عبر جميع القنوات." -#: templates/dashboards/manager.html:78 +#: templates/dashboards/manager.html:78 templates/dashboards/sales.html:78 msgid "New Customers" msgstr "عملاء جدد." -#: templates/dashboards/manager.html:92 +#: templates/dashboards/manager.html:92 templates/dashboards/sales.html:92 msgid "New Leads" msgstr "فرص جديدة." -#: templates/dashboards/manager.html:120 +#: templates/dashboards/manager.html:120 templates/dashboards/sales.html:120 msgid "As of" msgstr "حتى" -#: templates/dashboards/manager.html:125 templates/index.html:94 +#: templates/dashboards/manager.html:125 templates/dashboards/sales.html:125 +#: templates/index.html:94 msgid "inventory value" msgstr "قيمة المخزون" -#: templates/dashboards/manager.html:140 templates/index.html:99 +#: templates/dashboards/manager.html:140 templates/dashboards/sales.html:140 +#: templates/index.html:99 msgid "Profits" msgstr "الأرباح" -#: templates/dashboards/manager.html:155 +#: templates/dashboards/manager.html:155 templates/dashboards/sales.html:155 msgid "Canceled Invoices" msgstr "الفواتير الملغاة." -#: templates/dashboards/manager.html:161 +#: templates/dashboards/manager.html:161 templates/dashboards/sales.html:161 msgid "From last month" msgstr "من الشهر الماضي." -#: templates/dashboards/manager.html:172 +#: templates/dashboards/manager.html:172 templates/dashboards/sales.html:172 #: templates/ledger/reports/tags/income_statement.html:114 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:148 msgid "Gross Profit" @@ -4141,7 +4163,7 @@ msgid "Active" msgstr "نشط" #: templates/dealers/dealer_detail.html:102 -#: templates/inventory/car_detail.html:318 templates/plans/current.html:23 +#: templates/inventory/car_detail.html:326 templates/plans/current.html:23 msgid "Expired" msgstr "منتهي الصلاحية" @@ -4271,7 +4293,7 @@ msgid "This is a reminder for your upcoming appointment." msgstr "هذه تذكرة بموعدك القادم." #: templates/email_sender/reminder_email.html:83 -#: templates/inventory/car_detail.html:154 +#: templates/inventory/car_detail.html:160 #: venv/lib/python3.11/site-packages/appointment/templates/email_sender/reminder_email.html:142 msgid "Location" msgstr "الموقع" @@ -4590,7 +4612,7 @@ msgstr "إجمالي الأذونات" msgid "actions" msgstr "الإجراءات" -#: templates/groups/group_list.html:40 templates/inventory/car_detail.html:107 +#: templates/groups/group_list.html:40 templates/inventory/car_detail.html:113 #: templates/inventory/car_inventory.html:114 #: templates/ledger/coa_accounts/account_detail.html:92 #: templates/representatives/representative_list.html:30 @@ -4755,8 +4777,12 @@ msgid "profile" msgstr "الملف الشخصي" #: templates/header.html:454 -msgid "Staff & Group" -msgstr "الموظفون والمجموعة" +msgid "Staff & Groups" +msgstr "الموظفون والمجموعات" + +#: templates/header.html:462 +msgid "Settings" +msgstr "الإعدادات" #: templates/index.html:19 msgid "Total Cars in Inventory" @@ -4778,12 +4804,12 @@ msgstr "إضافة لون" msgid "Select exterior and interior colors for" msgstr "اختر الألوان الخارجية والداخلية لـ" -#: templates/inventory/car_detail.html:3 templates/inventory/car_detail.html:49 +#: templates/inventory/car_detail.html:3 templates/inventory/car_detail.html:55 #: templates/inventory/car_history.html:4 msgid "Car Details" msgstr "تفاصيل السيارة" -#: templates/inventory/car_detail.html:18 +#: templates/inventory/car_detail.html:24 msgid "" "This car information is not complete , please add colors and finances before " "making it ready for sale ." @@ -4791,48 +4817,48 @@ msgstr "" "معلومات هذه السيارة غير مكتملة، يرجى إضافة الألوان والتمويل قبل تجهيزها " "للبيع." -#: templates/inventory/car_detail.html:25 +#: templates/inventory/car_detail.html:31 msgid "Action Required , Please Approved The Tranfer Request Of This Car ." msgstr "الإجراء مطلوب، يرجى الموافقة على طلب نقل هذه السيارة." -#: templates/inventory/car_detail.html:32 +#: templates/inventory/car_detail.html:38 msgid "" "Car Is In Transfer Process To Another Dealer, Please Wait For The " "Acceptance ." msgstr "السيارة قيد عملية النقل إلى تاجر آخر، يرجى انتظار القبول." -#: templates/inventory/car_detail.html:39 +#: templates/inventory/car_detail.html:45 msgid "This car is reserved until " msgstr "هذه السيارة محجوزة حتى " -#: templates/inventory/car_detail.html:58 templates/inventory/car_list.html:119 +#: templates/inventory/car_detail.html:64 templates/inventory/car_list.html:119 msgid "year" msgstr "السنة" -#: templates/inventory/car_detail.html:62 templates/inventory/car_form.html:75 +#: templates/inventory/car_detail.html:68 templates/inventory/car_form.html:75 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:82 #: templates/inventory/car_list.html:79 msgid "make" msgstr "الصانع" -#: templates/inventory/car_detail.html:66 templates/inventory/car_form.html:98 +#: templates/inventory/car_detail.html:72 templates/inventory/car_form.html:98 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:99 #: templates/inventory/car_list.html:97 msgid "model" msgstr "الموديل" -#: templates/inventory/car_detail.html:70 templates/inventory/car_list.html:130 +#: templates/inventory/car_detail.html:76 templates/inventory/car_list.html:130 msgid "series" msgstr "السلسلة" -#: templates/inventory/car_detail.html:74 templates/inventory/car_form.html:85 +#: templates/inventory/car_detail.html:80 templates/inventory/car_form.html:85 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:143 #: templates/inventory/car_list.html:141 msgid "trim" msgstr "الفئة" -#: templates/inventory/car_detail.html:104 -#: templates/inventory/car_detail.html:464 +#: templates/inventory/car_detail.html:110 +#: templates/inventory/car_detail.html:474 #: templates/inventory/car_form.html:109 templates/inventory/car_form.html:219 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:252 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:279 @@ -4841,61 +4867,61 @@ msgstr "الفئة" msgid "specifications" msgstr "المواصفات" -#: templates/inventory/car_detail.html:157 +#: templates/inventory/car_detail.html:163 #: templates/inventory/car_inventory.html:92 msgid "Our Showroom" msgstr "معرضنا" -#: templates/inventory/car_detail.html:161 +#: templates/inventory/car_detail.html:167 msgid "No location available." msgstr "لا يوجد موقع متاح." -#: templates/inventory/car_detail.html:175 -#: templates/inventory/car_detail.html:228 +#: templates/inventory/car_detail.html:181 +#: templates/inventory/car_detail.html:234 msgid "Cannot Edit, Car in Transfer." msgstr "لا يمكن التعديل، السيارة قيد النقل." -#: templates/inventory/car_detail.html:183 +#: templates/inventory/car_detail.html:189 msgid "Financial Details" msgstr "التفاصيل المالية" -#: templates/inventory/car_detail.html:202 +#: templates/inventory/car_detail.html:208 msgid "Additional Fee" msgstr "رسوم إضافية" -#: templates/inventory/car_detail.html:214 +#: templates/inventory/car_detail.html:220 msgid "VAT Amount" msgstr "مبلغ ضريبة القيمة المضافة" -#: templates/inventory/car_detail.html:231 +#: templates/inventory/car_detail.html:237 msgid "No finance details available." msgstr "لا توجد تفاصيل مالية متاحة." -#: templates/inventory/car_detail.html:243 +#: templates/inventory/car_detail.html:249 msgid "Colors Details" msgstr "تفاصيل الألوان" -#: templates/inventory/car_detail.html:250 +#: templates/inventory/car_detail.html:256 msgid "Exterior" msgstr "الخارجي" -#: templates/inventory/car_detail.html:259 +#: templates/inventory/car_detail.html:265 msgid "Interior" msgstr "الداخلي" -#: templates/inventory/car_detail.html:271 +#: templates/inventory/car_detail.html:277 msgid "No colors available for this car." msgstr "لا تتوفر ألوان لهذه السيارة." -#: templates/inventory/car_detail.html:288 +#: templates/inventory/car_detail.html:294 msgid "Reservations Details" msgstr "تفاصيل الحجز" -#: templates/inventory/car_detail.html:296 +#: templates/inventory/car_detail.html:302 msgid "Expires At" msgstr "ينتهي في" -#: templates/inventory/car_detail.html:297 +#: templates/inventory/car_detail.html:303 #: templates/ledger/coa_accounts/account_detail.html:69 #: templates/representatives/representative_list.html:20 #: templates/sales/estimates/estimate_list.html:19 @@ -4934,39 +4960,39 @@ msgstr "ينتهي في" msgid "Actions" msgstr "الإجراءات" -#: templates/inventory/car_detail.html:310 +#: templates/inventory/car_detail.html:317 msgid "Renew" msgstr "تجديد" -#: templates/inventory/car_detail.html:327 +#: templates/inventory/car_detail.html:335 #: templates/inventory/reserve_car.html:29 msgid "Reserve" msgstr "حجز" -#: templates/inventory/car_detail.html:342 +#: templates/inventory/car_detail.html:350 #: templates/inventory/transfer_details.html:57 msgid "Transfer Details" msgstr "تفاصيل النقل" -#: templates/inventory/car_detail.html:350 +#: templates/inventory/car_detail.html:358 msgid "From Showroom" msgstr "من صالة العرض" -#: templates/inventory/car_detail.html:351 +#: templates/inventory/car_detail.html:359 msgid "To Showroom" msgstr "إلى صالة العرض" -#: templates/inventory/car_detail.html:433 +#: templates/inventory/car_detail.html:444 msgid "Are you sure you want to reserve this car?" msgstr "هل أنت متأكد أنك تريد حجز هذه السيارة؟" -#: templates/inventory/car_detail.html:554 +#: templates/inventory/car_detail.html:563 #: templates/inventory/car_list.html:542 #: templates/partials/specifications_modal.html:11 msgid "No specifications available." msgstr "لا توجد مواصفات متاحة." -#: templates/inventory/car_detail.html:558 +#: templates/inventory/car_detail.html:567 #: templates/inventory/car_list.html:546 msgid "Error loading specifications." msgstr "حدث خطأ أثناء تحميل المواصفات." @@ -5182,7 +5208,7 @@ msgstr "تصفية" msgid "All" msgstr "الكل" -#: templates/inventory/car_list_view.html:157 +#: templates/inventory/car_list_view.html:168 #: templates/sales/sales_list.html:205 msgid "Export" msgstr "تصدير" @@ -5274,7 +5300,7 @@ msgstr "إلى" #: templates/plans/order_detail_table.html:10 #: templates/sales/estimates/estimate_preview.html:296 #: templates/sales/estimates/sale_order_preview.html:265 -#: templates/sales/invoices/invoice_detail.html:243 +#: templates/sales/invoices/invoice_detail.html:265 msgid "VAT" msgstr "ضريبة القيمة المضافة" @@ -5329,10 +5355,10 @@ msgstr "شكرًا لاختيارك لنا. نحن نقدر عملك معنا." #: templates/inventory/transfer_preview.html:231 #: templates/ledger/bills/bill_detail.html:215 -#: templates/sales/estimates/estimate_detail.html:160 +#: templates/sales/estimates/estimate_detail.html:175 #: templates/sales/estimates/estimate_preview.html:277 #: templates/sales/estimates/sale_order_preview.html:243 -#: templates/sales/invoices/invoice_detail.html:219 +#: templates/sales/invoices/invoice_detail.html:241 msgid "Unit Price" msgstr "سعر الوحدة" @@ -5477,12 +5503,12 @@ msgid "Mark as Approved" msgstr "وضع علامة معتمد" #: templates/ledger/bills/bill_detail.html:70 -#: templates/sales/invoices/invoice_detail.html:66 +#: templates/sales/invoices/invoice_detail.html:88 msgid "Record Payment" msgstr "تسجيل عملية دفع" #: templates/ledger/bills/bill_detail.html:73 -#: templates/sales/invoices/invoice_detail.html:69 +#: templates/sales/invoices/invoice_detail.html:91 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:49 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:187 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:43 @@ -5491,28 +5517,28 @@ msgid "Mark as Paid" msgstr "وضع علامة مدفوعة" #: templates/ledger/bills/bill_detail.html:86 -#: templates/sales/invoices/invoice_detail.html:83 +#: templates/sales/invoices/invoice_detail.html:105 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/card_po.html:43 msgid "Paid Amount" msgstr "المبلغ المدفوع" #: templates/ledger/bills/bill_detail.html:108 -#: templates/sales/invoices/invoice_detail.html:105 +#: templates/sales/invoices/invoice_detail.html:127 msgid "Date Due" msgstr "تاريخ الاستحقاق" #: templates/ledger/bills/bill_detail.html:112 -#: templates/sales/invoices/invoice_detail.html:109 +#: templates/sales/invoices/invoice_detail.html:131 msgid "Due in Days" msgstr "الاستحقاق بالأيام" #: templates/ledger/bills/bill_detail.html:118 -#: templates/sales/invoices/invoice_detail.html:115 +#: templates/sales/invoices/invoice_detail.html:137 msgid "Is Past Due" msgstr "متأخر عن السداد" #: templates/ledger/bills/bill_detail.html:138 -#: templates/sales/invoices/invoice_detail.html:135 +#: templates/sales/invoices/invoice_detail.html:157 msgid "Due Amount" msgstr "المبلغ الكلي" @@ -5527,7 +5553,7 @@ msgid "Bill Date" msgstr "تاريخ الفاتورة" #: templates/ledger/bills/bill_detail.html:180 -#: templates/sales/invoices/invoice_detail.html:177 +#: templates/sales/invoices/invoice_detail.html:199 #: templates/sales/sales_list.html:109 msgid "Customer Name" msgstr "اسم العميل" @@ -5537,9 +5563,11 @@ msgid "bill Status" msgstr "حالة الفاتورة" #: templates/ledger/bills/bill_detail.html:193 -#: templates/sales/estimates/estimate_detail.html:135 +#: templates/sales/estimates/estimate_detail.html:67 +#: templates/sales/estimates/estimate_detail.html:150 #: templates/sales/estimates/estimate_list.html:31 -#: templates/sales/invoices/invoice_detail.html:194 +#: templates/sales/invoices/invoice_detail.html:73 +#: templates/sales/invoices/invoice_detail.html:216 #: templates/sales/invoices/invoice_list.html:38 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:344 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:224 @@ -5550,7 +5578,8 @@ msgstr "قيد المراجعة" #: templates/ledger/bills/bill_detail.html:197 #: templates/sales/estimates/estimate_list.html:35 -#: templates/sales/invoices/invoice_detail.html:198 +#: templates/sales/invoices/invoice_detail.html:77 +#: templates/sales/invoices/invoice_detail.html:220 msgid "Declined" msgstr "مرفوض" @@ -5559,8 +5588,8 @@ msgid "Vat Amount" msgstr "مبلغ ضريبة القيمة المضافة" #: templates/ledger/bills/bill_detail.html:236 -#: templates/sales/estimates/estimate_detail.html:199 -#: templates/sales/invoices/invoice_detail.html:257 +#: templates/sales/estimates/estimate_detail.html:214 +#: templates/sales/invoices/invoice_detail.html:279 msgid "Grand Total" msgstr "الإجمالي" @@ -6546,52 +6575,53 @@ msgid "Are you sure you want to Cancel this Estimate?" msgstr "هل أنت متأكد أنك تريد إلغاء هذا التقدير؟" #: templates/sales/estimates/estimate_detail.html:41 -#: templates/sales/invoices/invoice_detail.html:15 -#: templates/sales/invoices/invoice_detail.html:39 +#: templates/sales/invoices/invoice_detail.html:22 +#: templates/sales/invoices/invoice_detail.html:46 msgid "Are you sure ?" msgstr "هل أنت متأكد؟" -#: templates/sales/estimates/estimate_detail.html:68 -msgid "Send Quotation" -msgstr "إرسال عرض السعر" - -#: templates/sales/estimates/estimate_detail.html:69 -msgid "Mark As Sent" -msgstr "وضع كمدفوع" - #: templates/sales/estimates/estimate_detail.html:71 -msgid "Mark As Accept" -msgstr "وضع كنشط" - -#: templates/sales/estimates/estimate_detail.html:76 -msgid "Create Sale Order" -msgstr "إنشاء أمر بيع" - -#: templates/sales/estimates/estimate_detail.html:81 -#: templates/sales/invoices/invoice_detail.html:71 -msgid "Preview" -msgstr "عرض" - -#: templates/sales/estimates/estimate_detail.html:96 -#: templates/sales/estimates/estimate_list.html:14 -msgid "Quotation Number" -msgstr "رقم عرض السعر" - -#: templates/sales/estimates/estimate_detail.html:106 -msgid "Quotation Date" -msgstr "تاريخ عرض السعر" - -#: templates/sales/estimates/estimate_detail.html:130 -msgid "Quotation Status" -msgstr "حالة عرض السعر" - -#: templates/sales/estimates/estimate_detail.html:139 +#: templates/sales/estimates/estimate_detail.html:154 #: templates/sales/estimates/estimate_list.html:39 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:226 msgid "Completed" msgstr "مكتمل" -#: templates/sales/estimates/estimate_detail.html:179 +#: templates/sales/estimates/estimate_detail.html:83 +msgid "Send Quotation" +msgstr "إرسال عرض السعر" + +#: templates/sales/estimates/estimate_detail.html:84 +msgid "Mark As Sent" +msgstr "وضع كمدفوع" + +#: templates/sales/estimates/estimate_detail.html:86 +msgid "Mark As Accept" +msgstr "وضع كنشط" + +#: templates/sales/estimates/estimate_detail.html:91 +msgid "Create Sale Order" +msgstr "إنشاء أمر بيع" + +#: templates/sales/estimates/estimate_detail.html:96 +#: templates/sales/invoices/invoice_detail.html:93 +msgid "Preview" +msgstr "عرض" + +#: templates/sales/estimates/estimate_detail.html:111 +#: templates/sales/estimates/estimate_list.html:14 +msgid "Quotation Number" +msgstr "رقم عرض السعر" + +#: templates/sales/estimates/estimate_detail.html:121 +msgid "Quotation Date" +msgstr "تاريخ عرض السعر" + +#: templates/sales/estimates/estimate_detail.html:145 +msgid "Quotation Status" +msgstr "حالة عرض السعر" + +#: templates/sales/estimates/estimate_detail.html:194 msgid "Vat" msgstr "الضريبة" @@ -6623,11 +6653,7 @@ msgstr "تاريخ الحالة" msgid "Void" msgstr "باطل" -#: templates/sales/estimates/estimate_list.html:54 -msgid "pdf" -msgstr "بي دي إف" - -#: templates/sales/estimates/estimate_list.html:60 +#: templates/sales/estimates/estimate_list.html:56 #: templates/sales/journals/journal_list.html:40 #: templates/sales/orders/order_list.html:40 msgid "No Quotations Found" @@ -6652,7 +6678,7 @@ msgid "Are you sure you want to accept this estimate?" msgstr "هل أنت متأكد أنك تريد قبول هذا العرض؟" #: templates/sales/estimates/estimate_preview.html:226 -#: templates/sales/invoices/invoice_detail.html:63 +#: templates/sales/invoices/invoice_detail.html:85 msgid "Accept" msgstr "قبول" @@ -6692,26 +6718,26 @@ msgstr "إضافة فاتورة" msgid "View Estimate" msgstr "عرض التقدير" -#: templates/sales/invoices/invoice_detail.html:85 +#: templates/sales/invoices/invoice_detail.html:107 msgid "Owned" msgstr "مملوك" -#: templates/sales/invoices/invoice_detail.html:155 +#: templates/sales/invoices/invoice_detail.html:177 #: templates/sales/invoices/invoice_list.html:15 #: templates/sales/journals/journal_list.html:15 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:314 msgid "Invoice Number" msgstr "رقم الفاتورة" -#: templates/sales/invoices/invoice_detail.html:165 +#: templates/sales/invoices/invoice_detail.html:187 msgid "Invoice Date" msgstr "تاريخ الفاتورة" -#: templates/sales/invoices/invoice_detail.html:181 +#: templates/sales/invoices/invoice_detail.html:203 msgid "Customer Email" msgstr "ايميل العميل" -#: templates/sales/invoices/invoice_detail.html:189 +#: templates/sales/invoices/invoice_detail.html:211 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:316 msgid "Invoice Status" msgstr "حالة الفاتورة" @@ -12702,3 +12728,4 @@ msgstr "س" #: venv/lib/python3.11/site-packages/sympy/solvers/simplex.py:565 msgid "y" msgstr "ص" + diff --git a/requirements.txt b/requirements.txt index 95b500d6..e2801725 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,7 @@ beautifulsoup4==4.13.3 bleach==6.2.0 blinker==1.9.0 Brotli==1.1.0 +cattrs==24.1.2 certifi==2025.1.31 cffi==1.17.1 chardet==5.2.0 @@ -67,6 +68,7 @@ django-picklefield==3.2 django-plans==1.2.0 django-prometheus==2.3.1 django-q2==1.7.6 +django-schema-graph==3.1.0 django-sekizai==4.1.0 django-sequences==3.0 django-silk==5.3.2 diff --git a/static/images/images/Alamjdouie-Hyundai-logo_I8WTQve_NvbZyE9.png b/static/images/images/Alamjdouie-Hyundai-logo_I8WTQve_NvbZyE9.png new file mode 100644 index 00000000..53525aa2 Binary files /dev/null and b/static/images/images/Alamjdouie-Hyundai-logo_I8WTQve_NvbZyE9.png differ diff --git a/templates/header.html b/templates/header.html index f6919eea..99976147 100644 --- a/templates/header.html +++ b/templates/header.html @@ -32,7 +32,7 @@ @@ -451,15 +451,15 @@ {% endif %} {% if request.is_dealer %} {% endif %}