diff --git a/car_inventory/__pycache__/settings.cpython-311.pyc b/car_inventory/__pycache__/settings.cpython-311.pyc index 73069f06..55aabaa5 100644 Binary files a/car_inventory/__pycache__/settings.cpython-311.pyc and b/car_inventory/__pycache__/settings.cpython-311.pyc differ diff --git a/haikalbot/migrations/0001_initial.py b/haikalbot/migrations/0001_initial.py new file mode 100644 index 00000000..33a3c349 --- /dev/null +++ b/haikalbot/migrations/0001_initial.py @@ -0,0 +1,26 @@ +# Generated by Django 5.1.7 on 2025-04-28 12:45 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('inventory', '0006_alter_email_object_id_alter_notes_object_id'), + ] + + operations = [ + migrations.CreateModel( + name='ChatLog', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('user_message', models.TextField()), + ('chatbot_response', models.TextField()), + ('timestamp', models.DateTimeField(auto_now_add=True)), + ('dealer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chatlogs', to='inventory.dealer')), + ], + ), + ] diff --git a/inventory/services.py b/inventory/services.py index cd6f15d9..b5f9c22c 100644 --- a/inventory/services.py +++ b/inventory/services.py @@ -157,7 +157,7 @@ def elm(vin): if response.get("data"): data = { "maker": response["data"]["maker"], - "model": response["data"]["model"], + "model": response["data"]["model"] if response["data"]["model"] else " ", "modelYear": response["data"]["modelYear"], } print(data) diff --git a/inventory/views.py b/inventory/views.py index d9c3189a..a6c8eb64 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -284,7 +284,7 @@ def dealer_signup(request, *args, **kwargs): address = wf3.get("address") if password != password_confirm: - return JsonResponse({"error": "Passwords do not match."}, status=400) + return JsonResponse({"error": _("Passwords do not match")}, status=400) try: with transaction.atomic(): @@ -673,7 +673,7 @@ class AjaxHandlerView(LoginRequiredMixin, View): if not vin_no or len(vin_no.strip()) != 17: return JsonResponse( - {"success": False, "error": "Invalid VIN number provided."}, status=400 + {"success": False, "error": _("Invalid VIN number provided")}, status=400 ) vin_no = vin_no.strip() @@ -683,7 +683,7 @@ class AjaxHandlerView(LoginRequiredMixin, View): # manufacturer_name = model_name = year_model = None if not (result := decodevin(vin_no)): return JsonResponse( - {"success": False, "error": "VIN not found in all sources."}, status=404 + {"success": False, "error": _("VIN not found in all sources")}, status=404 ) manufacturer_name, model_name, year_model = result.values() @@ -696,7 +696,7 @@ class AjaxHandlerView(LoginRequiredMixin, View): if not car_make: return JsonResponse( - {"success": False, "error": "Manufacturer not found in the database."}, + {"success": False, "error": _("Manufacturer not found in the database")}, status=404, ) vin_data["make_id"] = car_make.id_car_make @@ -736,7 +736,7 @@ class AjaxHandlerView(LoginRequiredMixin, View): "id_car_serie", "name", "arabic_name", "generation_name" ) except Exception as e: - return JsonResponse({"error": "Server error occurred"}, status=500) + return JsonResponse({"error": _("Server error occurred")}, status=500) return JsonResponse(list(series), safe=False) def get_trims(self, request): @@ -846,7 +846,7 @@ class SearchCodeView(LoginRequiredMixin, View): image_file = request.FILES.get("image") if not image_file: - return JsonResponse({"success": False, "error": "No image provided"}) + return JsonResponse({"success": False, "error": _("No image provided")}) try: np_arr = np.frombuffer(image_file.read(), np.uint8) @@ -858,7 +858,7 @@ class SearchCodeView(LoginRequiredMixin, View): decoded_objects = decode(gray) if not decoded_objects: - return JsonResponse({"success": False, "error": "No QR/Barcode detected"}) + return JsonResponse({"success": False, "error": _("No QR/Barcode detected")}) code = decoded_objects[0].data.decode("utf-8").strip() car = get_object_or_404(models.Car, vin=code) @@ -1275,7 +1275,7 @@ class CarFinanceUpdateView( model = models.CarFinance form_class = forms.CarFinanceForm template_name = "inventory/car_finance_form.html" - success_message = _("Car finance details updated successfully.") + success_message = _("Car finance details updated successfully") permission_required = ["inventory.change_carfinance"] def get_success_url(self): @@ -1327,7 +1327,7 @@ class CarUpdateView( model = models.Car form_class = forms.CarUpdateForm template_name = "inventory/car_edit.html" - success_message = _("Car updated successfully.") + success_message = _("Car updated successfully") permission_required = ["inventory.change_car"] def get_success_url(self): @@ -2050,7 +2050,7 @@ def CustomerCreateView(request): .filter(email=form.cleaned_data["email"]) .exists() ): - messages.error(request, _("Customer with this email already exists.")) + messages.error(request, _("Customer with this email already exists")) else: customer_name = ( f"{form.cleaned_data['first_name']} " diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 2bdd345d..02929900 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 df3ec0cf..d693ce20 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 18:53+0300\n" +"POT-Creation-Date: 2025-04-28 17:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -38,25 +38,25 @@ msgstr "" msgid "VIN" msgstr "رقم الهيكل" -#: car_inventory/settings.py:162 car_inventory/settings.py:327 +#: car_inventory/settings.py:163 car_inventory/settings.py:328 msgid "SAR" msgstr "ريال" -#: car_inventory/settings.py:259 +#: car_inventory/settings.py:260 #: venv/lib/python3.11/site-packages/appointments/settings.py:136 msgid "English" msgstr "الإنجليزية" -#: car_inventory/settings.py:260 +#: car_inventory/settings.py:261 msgid "Arabic" msgstr "العربية" -#: car_inventory/settings.py:349 templates/header.html:389 +#: car_inventory/settings.py:350 templates/header.html:389 #: templates/welcome-temp.html:57 templates/welcome_header.html:7 msgid "Haikal" msgstr "هيكل" -#: inventory/forms.py:222 inventory/forms.py:877 inventory/models.py:896 +#: inventory/forms.py:182 inventory/forms.py:754 inventory/models.py:896 #: inventory/models.py:992 inventory/models.py:1142 inventory/models.py:1173 #: inventory/models.py:1200 inventory/models.py:1220 inventory/models.py:1560 #: templates/administration/staff_index.html:123 @@ -70,7 +70,7 @@ msgstr "هيكل" msgid "Phone Number" msgstr "رقم الهاتف" -#: inventory/forms.py:225 inventory/forms.py:880 +#: inventory/forms.py:185 inventory/forms.py:757 #: templates/administration/display_appointment.html:55 #: templates/appointment/appointment_client_information.html:57 #: templates/crm/leads/lead_detail.html:88 @@ -85,74 +85,74 @@ msgstr "رقم الهاتف" msgid "Phone" msgstr "الهاتف" -#: inventory/forms.py:230 inventory/forms.py:772 inventory/forms.py:789 -#: inventory/forms.py:885 inventory/forms.py:924 inventory/forms.py:942 -#: inventory/forms.py:957 +#: inventory/forms.py:190 inventory/forms.py:649 inventory/forms.py:666 +#: inventory/forms.py:762 inventory/forms.py:801 inventory/forms.py:819 +#: inventory/forms.py:834 #: venv/lib/python3.11/site-packages/django/forms/fields.py:95 msgid "This field is required." msgstr "هذا الحقل مطلوب." -#: inventory/forms.py:231 inventory/forms.py:886 +#: inventory/forms.py:191 inventory/forms.py:763 msgid "Phone number must be in the format 05xxxxxxxx" msgstr "يجب أن يكون رقم الهاتف بالصيغة 05xxxxxxxx" -#: inventory/forms.py:502 inventory/models.py:719 +#: inventory/forms.py:416 inventory/models.py:719 #: templates/inventory/car_detail.html:122 msgid "Custom Date" msgstr "تاريخ البطاقة الجمركية" -#: inventory/forms.py:614 +#: inventory/forms.py:528 msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/forms.py:745 inventory/models.py:1201 inventory/models.py:1561 +#: inventory/forms.py:622 inventory/models.py:1201 inventory/models.py:1561 #: templates/account/email_change.html:5 templates/account/email_change.html:9 msgid "Email Address" msgstr "عنوان البريد الإلكتروني" -#: inventory/forms.py:749 +#: inventory/forms.py:626 #: venv/lib/python3.11/site-packages/appointment/views.py:424 #: venv/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1915 msgid "Email address" msgstr "عنوان البريد الإلكتروني" -#: inventory/forms.py:750 templates/crm/leads/lead_list.html:41 +#: inventory/forms.py:627 templates/crm/leads/lead_list.html:41 #: templates/customers/customer_list.html:36 #: templates/vendors/vendors_list.html:49 msgid "email" msgstr "البريد الإلكتروني" -#: inventory/forms.py:756 +#: inventory/forms.py:633 msgid "You must add an email." msgstr "يجب إضافة بريد إلكتروني." -#: inventory/forms.py:761 inventory/forms.py:765 +#: inventory/forms.py:638 inventory/forms.py:642 #: templates/account/login.html:36 templates/account/login.html:38 #: venv/lib/python3.11/site-packages/django_ledger/forms/auth.py:15 msgid "Password" msgstr "كلمة المرور" -#: inventory/forms.py:778 inventory/forms.py:782 +#: inventory/forms.py:655 inventory/forms.py:659 msgid "Confirm Password" msgstr "تأكيد كلمة المرور" -#: inventory/forms.py:795 +#: inventory/forms.py:672 msgid "I accept the Terms and Privacy Policy" msgstr "أوافق على الشروط وسياسة الخصوصية" -#: inventory/forms.py:804 +#: inventory/forms.py:681 msgid "You must accept the terms and privacy policy." msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." -#: inventory/forms.py:814 +#: inventory/forms.py:691 msgid "An account with this email already exists." msgstr "يوجد بالفعل حساب بهذا البريد الإلكتروني." -#: inventory/forms.py:822 +#: inventory/forms.py:699 msgid "Passwords do not match." msgstr "كلمات المرور غير متطابقة." -#: inventory/forms.py:849 inventory/models.py:324 inventory/models.py:668 +#: inventory/forms.py:726 inventory/models.py:324 inventory/models.py:668 #: inventory/models.py:681 inventory/models.py:990 inventory/models.py:1167 #: inventory/models.py:1195 templates/administration/manage_service.html:22 #: templates/administration/service_list.html:23 @@ -176,50 +176,50 @@ msgstr "كلمات المرور غير متطابقة." msgid "Name" msgstr "الاسم" -#: inventory/forms.py:853 inventory/models.py:895 inventory/models.py:1558 +#: inventory/forms.py:730 inventory/models.py:895 inventory/models.py:1558 msgid "English Name" msgstr "الاسم بالإنجليزية" -#: inventory/forms.py:858 +#: inventory/forms.py:735 msgid "Please enter an English Name." msgstr "يرجى إدخال اسم باللغة الإنجليزية." -#: inventory/forms.py:863 inventory/forms.py:867 inventory/models.py:325 +#: inventory/forms.py:740 inventory/forms.py:744 inventory/models.py:325 #: inventory/models.py:669 inventory/models.py:682 inventory/models.py:894 #: inventory/models.py:991 inventory/models.py:1168 inventory/models.py:1196 #: inventory/models.py:1557 templates/users/user_detail.html:48 msgid "Arabic Name" msgstr "الاسم بالعربية" -#: inventory/forms.py:872 +#: inventory/forms.py:749 msgid "Please enter an Arabic name." msgstr "يرجى إدخال اسم باللغة العربية." -#: inventory/forms.py:913 templates/organizations/organization_detail.html:8 +#: inventory/forms.py:790 templates/organizations/organization_detail.html:8 #: templates/organizations/organization_list.html:50 msgid "CRN" msgstr "رقم السجل التجاري" -#: inventory/forms.py:917 inventory/models.py:887 inventory/models.py:1170 +#: inventory/forms.py:794 inventory/models.py:887 inventory/models.py:1170 #: inventory/models.py:1255 inventory/models.py:1552 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" -#: inventory/forms.py:931 templates/organizations/organization_detail.html:9 +#: inventory/forms.py:808 templates/organizations/organization_detail.html:9 #: templates/organizations/organization_list.html:57 msgid "VRN" msgstr "الرقم الضريبي" -#: inventory/forms.py:935 inventory/models.py:892 inventory/models.py:1172 +#: inventory/forms.py:812 inventory/models.py:892 inventory/models.py:1172 #: inventory/models.py:1258 inventory/models.py:1555 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" -#: inventory/forms.py:943 +#: inventory/forms.py:820 msgid "VAT Registration Number must be 15 characters." msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا من 15 حرفًا." -#: inventory/forms.py:948 inventory/models.py:898 inventory/models.py:1145 +#: inventory/forms.py:825 inventory/models.py:898 inventory/models.py:1145 #: inventory/models.py:1175 inventory/models.py:1203 inventory/models.py:1563 #: templates/crm/leads/lead_detail.html:118 #: templates/customers/customer_list.html:51 @@ -235,29 +235,29 @@ msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا msgid "Address" msgstr "العنوان" -#: inventory/forms.py:1030 inventory/models.py:1761 +#: inventory/forms.py:893 inventory/models.py:1761 msgid "cash" msgstr "نقداً" -#: inventory/forms.py:1031 inventory/models.py:1762 +#: inventory/forms.py:894 inventory/models.py:1762 msgid "credit" msgstr "دائن" -#: inventory/forms.py:1032 inventory/models.py:1763 +#: inventory/forms.py:895 inventory/models.py:1763 #: templates/inventory/car_detail.html:164 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" -#: inventory/forms.py:1033 inventory/models.py:1764 +#: inventory/forms.py:896 inventory/models.py:1764 msgid "debit" msgstr "مدين" -#: inventory/forms.py:1034 inventory/models.py:1765 inventory/models.py:1848 +#: inventory/forms.py:897 inventory/models.py:1765 inventory/models.py:1848 msgid "SADAD" msgstr "سداد" -#: inventory/forms.py:1346 inventory/forms.py:1363 inventory/models.py:1151 +#: inventory/forms.py:1205 inventory/forms.py:1222 inventory/models.py:1151 #: inventory/models.py:1222 #: templates/crm/opportunities/opportunity_form.html:22 #: templates/sales/estimates/estimate_detail.html:153 @@ -274,7 +274,7 @@ msgstr "سداد" msgid "Customer" msgstr "العميل" -#: inventory/forms.py:1352 inventory/forms.py:1362 +#: inventory/forms.py:1211 inventory/forms.py:1221 #: templates/ledger/bills/bill_detail.html:104 #: templates/sales/estimates/sale_order_preview.html:229 #: templates/sales/invoices/invoice_detail.html:125 @@ -282,12 +282,12 @@ msgstr "العميل" msgid "Terms" msgstr "الشروط" -#: inventory/forms.py:1357 inventory/forms.py:1361 inventory/models.py:1124 +#: inventory/forms.py:1216 inventory/forms.py:1220 inventory/models.py:1124 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:11 msgid "Title" msgstr "العنوان" -#: inventory/forms.py:1542 +#: inventory/forms.py:1401 msgid "Select Car Makes" msgstr "اختر ماركات السيارات" @@ -880,7 +880,7 @@ msgstr "انضم في" msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:979 inventory/signals.py:174 templates/header.html:29 +#: inventory/models.py:979 inventory/tasks.py:42 templates/header.html:29 #: templates/header.html:64 templates/header.html:69 templates/welcome.html:19 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:440 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:526 @@ -1323,8 +1323,8 @@ msgstr "ملاحظة" #: templates/crm/leads/lead_detail.html:137 #: templates/crm/leads/lead_detail.html:213 #: templates/crm/leads/lead_detail.html:387 -#: templates/customers/view_customer.html:93 -#: templates/customers/view_customer.html:189 +#: templates/customers/view_customer.html:92 +#: templates/customers/view_customer.html:187 #: venv/lib/python3.11/site-packages/django_ledger/forms/bill.py:154 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/card_markdown.html:9 msgid "Notes" @@ -1442,7 +1442,7 @@ msgstr "استردادات" msgid "Estimate" msgstr "تقدير" -#: inventory/models.py:1838 templates/customers/view_customer.html:151 +#: inventory/models.py:1838 templates/customers/view_customer.html:149 #: templates/ledger/journal_entry/includes/card_invoice.html:10 #: templates/plans/create_order.html:29 #: templates/sales/invoices/invoice_create.html:5 @@ -1455,7 +1455,7 @@ msgstr "تقدير" msgid "Invoice" msgstr "فاتورة" -#: inventory/models.py:1843 inventory/signals.py:150 +#: inventory/models.py:1843 inventory/tasks.py:18 #: templates/ledger/reports/dashboard.html:32 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:14 msgid "Cash" @@ -1478,247 +1478,6 @@ msgstr "بطاقة ائتمان" msgid "Bank Transfer" msgstr "تحويل بنكي" -#: inventory/signals.py:162 templates/ledger/ledger/ledger_detail.html:38 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:41 -msgid "Accounts Receivable" -msgstr "الحسابات المدينة" - -#: inventory/signals.py:187 -msgid "Prepaid Expenses" -msgstr "المصروفات المدفوعة مقدمًا" - -#: inventory/signals.py:199 -msgid "Employee Advance" -msgstr "سلفة الموظف" - -#: inventory/signals.py:210 -msgid "VAT Receivable" -msgstr "ضريبة القيمة المضافة المستحقة" - -#: inventory/signals.py:220 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:452 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:538 -msgid "Buildings - Accum. Depreciation" -msgstr "المباني - الإهلاك المتراكم" - -#: inventory/signals.py:232 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:459 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:545 -msgid "Intangible Assets" -msgstr "الأصول غير الملموسة" - -#: inventory/signals.py:244 -msgid "Investments" -msgstr "الاستثمارات" - -#: inventory/signals.py:281 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:451 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:537 -msgid "Buildings" -msgstr "المباني" - -#: inventory/signals.py:295 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:466 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:552 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:52 -msgid "Accounts Payable" -msgstr "الحسابات الدائنة" - -#: inventory/signals.py:307 templates/ledger/ledger/ledger_detail.html:46 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:472 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:558 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:51 -msgid "Deferred Revenue" -msgstr "الإيرادات المؤجلة" - -#: inventory/signals.py:319 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:467 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:553 -msgid "Wages Payable" -msgstr "الأجور المستحقة الدفع" - -#: inventory/signals.py:331 -msgid "Long-Term Notes Payable" -msgstr "أوراق الدفع طويلة الأجل" - -#: inventory/signals.py:343 -msgid "VAT Payable" -msgstr "ضريبة القيمة المضافة المستحقة الدفع" - -#: inventory/signals.py:353 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:469 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:555 -msgid "Taxes Payable" -msgstr "الضرائب المستحقة الدفع" - -#: inventory/signals.py:363 -msgid "Social Insurance Payable" -msgstr "التأمينات الاجتماعية المستحقة الدفع" - -#: inventory/signals.py:369 -msgid "End of Service Benefits" -msgstr "مكافأة نهاية الخدمة" - -#: inventory/signals.py:376 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:478 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:564 -msgid "Mortgage Payable" -msgstr "الرهن المستحق الدفع" - -#: inventory/signals.py:384 -msgid "Registered Capital" -msgstr "رأس المال المسجل" - -#: inventory/signals.py:387 -msgid "Additional Paid-In Capital" -msgstr "رأس المال المدفوع الإضافي" - -#: inventory/signals.py:390 -msgid "Opening Balances" -msgstr "الأرصدة الافتتاحية" - -#: inventory/signals.py:395 -msgid "Statutory Reserve" -msgstr "الاحتياطي النظامي" - -#: inventory/signals.py:398 -msgid "Foreign Currency Translation Reserve" -msgstr "احتياطي تحويل العملات الأجنبية" - -#: inventory/signals.py:405 -msgid "Operating Profits and Losses" -msgstr "الأرباح والخسائر التشغيلية" - -#: inventory/signals.py:416 -msgid "Retained Earnings (or Losses)" -msgstr "الأرباح المحتجزة (أو الخسائر)" - -#: inventory/signals.py:426 -msgid "Sales Revenue" -msgstr "إيرادات المبيعات" - -#: inventory/signals.py:438 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:492 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:580 -msgid "Interest Income" -msgstr "دخل الفائدة" - -#: inventory/signals.py:450 -msgid "Unearned Income" -msgstr "الدخل غير المكتسب" - -#: inventory/signals.py:456 -msgid "Sales/Service Revenue" -msgstr "إيرادات المبيعات/الخدمات" - -#: inventory/signals.py:459 -msgid "Non-Operating Revenues" -msgstr "الإيرادات غير التشغيلية" - -#: inventory/signals.py:467 inventory/signals.py:648 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:497 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:587 -msgid "Cost of Goods Sold" -msgstr "تكلفة البضائع المباعة" - -#: inventory/signals.py:480 -msgid "Accrued Expenses" -msgstr "المصروفات المستحقة" - -#: inventory/signals.py:490 -msgid "Accrued Salaries" -msgstr "الرواتب المستحقة" - -#: inventory/signals.py:500 -msgid "Rent Expense" -msgstr "مصروف الإيجار" - -#: inventory/signals.py:512 -msgid "Salaries and Administrative Fees" -msgstr "الرواتب والرسوم الإدارية" - -#: inventory/signals.py:522 -msgid "Medical Insurance" -msgstr "التأمين الطبي" - -#: inventory/signals.py:532 -msgid "Marketing and Advertising Expenses" -msgstr "مصروفات التسويق والإعلان" - -#: inventory/signals.py:542 -msgid "Commissions and Incentives" -msgstr "العمولات والحوافز" - -#: inventory/signals.py:552 -msgid "Travel Tickets" -msgstr "تذاكر السفر" - -#: inventory/signals.py:562 -msgid "Social Insurance" -msgstr "التأمينات الاجتماعية" - -#: inventory/signals.py:572 -msgid "Government Fees" -msgstr "الرسوم الحكومية" - -#: inventory/signals.py:582 -msgid "Fees and Subscriptions" -msgstr "الرسوم والاشتراكات" - -#: inventory/signals.py:592 -msgid "Office Services Expenses" -msgstr "مصروفات خدمات المكتب" - -#: inventory/signals.py:602 -msgid "Office Supplies and Printing" -msgstr "اللوازم المكتبية والطباعة" - -#: inventory/signals.py:612 -msgid "Hospitality Expenses" -msgstr "مصروفات الضيافة" - -#: inventory/signals.py:622 -msgid "Bank Commissions" -msgstr "عمولات البنوك" - -#: inventory/signals.py:632 -#: templates/ledger/reports/tags/income_statement.html:223 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:291 -msgid "Other Expenses" -msgstr "مصروفات أخرى" - -#: inventory/signals.py:642 -msgid "Transportation Expenses" -msgstr "مصروفات النقل" - -#: inventory/signals.py:649 -msgid "Salaries and Wages" -msgstr "الرواتب والأجور" - -#: inventory/signals.py:650 -msgid "Sales Commissions" -msgstr "عمولات المبيعات" - -#: inventory/signals.py:651 -msgid "Shipping and Customs Clearance" -msgstr "الشحن والتخليص الجمركي" - -#: inventory/signals.py:654 -msgid "Zakat" -msgstr "الزكاة" - -#: inventory/signals.py:655 -msgid "Taxes" -msgstr "الضرائب" - -#: inventory/signals.py:656 -msgid "Foreign Currency Translation" -msgstr "تحويل العملات الأجنبية" - -#: inventory/signals.py:657 -msgid "Interest Expenses" -msgstr "مصروفات الفائدة" - #: inventory/tables.py:59 templates/inventory/car_inventory.html:55 msgid "Exterior Color" msgstr "اللون الخارجي" @@ -1732,6 +1491,247 @@ msgstr "اللون الداخلي" msgid "Age" msgstr "العمر" +#: inventory/tasks.py:30 templates/ledger/ledger/ledger_detail.html:38 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:41 +msgid "Accounts Receivable" +msgstr "الحسابات المدينة" + +#: inventory/tasks.py:55 +msgid "Prepaid Expenses" +msgstr "المصروفات المدفوعة مقدمًا" + +#: inventory/tasks.py:67 +msgid "Employee Advance" +msgstr "سلفة الموظف" + +#: inventory/tasks.py:78 +msgid "VAT Receivable" +msgstr "ضريبة القيمة المضافة المستحقة" + +#: inventory/tasks.py:88 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:452 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:538 +msgid "Buildings - Accum. Depreciation" +msgstr "المباني - الإهلاك المتراكم" + +#: inventory/tasks.py:100 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:459 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:545 +msgid "Intangible Assets" +msgstr "الأصول غير الملموسة" + +#: inventory/tasks.py:112 +msgid "Investments" +msgstr "الاستثمارات" + +#: inventory/tasks.py:149 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:451 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:537 +msgid "Buildings" +msgstr "المباني" + +#: inventory/tasks.py:163 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:466 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:552 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:52 +msgid "Accounts Payable" +msgstr "الحسابات الدائنة" + +#: inventory/tasks.py:175 templates/ledger/ledger/ledger_detail.html:46 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:472 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:558 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:51 +msgid "Deferred Revenue" +msgstr "الإيرادات المؤجلة" + +#: inventory/tasks.py:187 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:467 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:553 +msgid "Wages Payable" +msgstr "الأجور المستحقة الدفع" + +#: inventory/tasks.py:199 +msgid "Long-Term Notes Payable" +msgstr "أوراق الدفع طويلة الأجل" + +#: inventory/tasks.py:211 +msgid "VAT Payable" +msgstr "ضريبة القيمة المضافة المستحقة الدفع" + +#: inventory/tasks.py:221 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:469 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:555 +msgid "Taxes Payable" +msgstr "الضرائب المستحقة الدفع" + +#: inventory/tasks.py:231 +msgid "Social Insurance Payable" +msgstr "التأمينات الاجتماعية المستحقة الدفع" + +#: inventory/tasks.py:237 +msgid "End of Service Benefits" +msgstr "مكافأة نهاية الخدمة" + +#: inventory/tasks.py:244 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:478 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:564 +msgid "Mortgage Payable" +msgstr "الرهن المستحق الدفع" + +#: inventory/tasks.py:252 +msgid "Registered Capital" +msgstr "رأس المال المسجل" + +#: inventory/tasks.py:255 +msgid "Additional Paid-In Capital" +msgstr "رأس المال المدفوع الإضافي" + +#: inventory/tasks.py:258 +msgid "Opening Balances" +msgstr "الأرصدة الافتتاحية" + +#: inventory/tasks.py:263 +msgid "Statutory Reserve" +msgstr "الاحتياطي النظامي" + +#: inventory/tasks.py:266 +msgid "Foreign Currency Translation Reserve" +msgstr "احتياطي تحويل العملات الأجنبية" + +#: inventory/tasks.py:273 +msgid "Operating Profits and Losses" +msgstr "الأرباح والخسائر التشغيلية" + +#: inventory/tasks.py:284 +msgid "Retained Earnings (or Losses)" +msgstr "الأرباح المحتجزة (أو الخسائر)" + +#: inventory/tasks.py:294 +msgid "Sales Revenue" +msgstr "إيرادات المبيعات" + +#: inventory/tasks.py:306 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:492 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:580 +msgid "Interest Income" +msgstr "دخل الفائدة" + +#: inventory/tasks.py:318 +msgid "Unearned Income" +msgstr "الدخل غير المكتسب" + +#: inventory/tasks.py:324 +msgid "Sales/Service Revenue" +msgstr "إيرادات المبيعات/الخدمات" + +#: inventory/tasks.py:327 +msgid "Non-Operating Revenues" +msgstr "الإيرادات غير التشغيلية" + +#: inventory/tasks.py:335 inventory/tasks.py:516 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:497 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:587 +msgid "Cost of Goods Sold" +msgstr "تكلفة البضائع المباعة" + +#: inventory/tasks.py:348 +msgid "Accrued Expenses" +msgstr "المصروفات المستحقة" + +#: inventory/tasks.py:358 +msgid "Accrued Salaries" +msgstr "الرواتب المستحقة" + +#: inventory/tasks.py:368 +msgid "Rent Expense" +msgstr "مصروف الإيجار" + +#: inventory/tasks.py:380 +msgid "Salaries and Administrative Fees" +msgstr "الرواتب والرسوم الإدارية" + +#: inventory/tasks.py:390 +msgid "Medical Insurance" +msgstr "التأمين الطبي" + +#: inventory/tasks.py:400 +msgid "Marketing and Advertising Expenses" +msgstr "مصروفات التسويق والإعلان" + +#: inventory/tasks.py:410 +msgid "Commissions and Incentives" +msgstr "العمولات والحوافز" + +#: inventory/tasks.py:420 +msgid "Travel Tickets" +msgstr "تذاكر السفر" + +#: inventory/tasks.py:430 +msgid "Social Insurance" +msgstr "التأمينات الاجتماعية" + +#: inventory/tasks.py:440 +msgid "Government Fees" +msgstr "الرسوم الحكومية" + +#: inventory/tasks.py:450 +msgid "Fees and Subscriptions" +msgstr "الرسوم والاشتراكات" + +#: inventory/tasks.py:460 +msgid "Office Services Expenses" +msgstr "مصروفات خدمات المكتب" + +#: inventory/tasks.py:470 +msgid "Office Supplies and Printing" +msgstr "اللوازم المكتبية والطباعة" + +#: inventory/tasks.py:480 +msgid "Hospitality Expenses" +msgstr "مصروفات الضيافة" + +#: inventory/tasks.py:490 +msgid "Bank Commissions" +msgstr "عمولات البنوك" + +#: inventory/tasks.py:500 +#: templates/ledger/reports/tags/income_statement.html:223 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:291 +msgid "Other Expenses" +msgstr "مصروفات أخرى" + +#: inventory/tasks.py:510 +msgid "Transportation Expenses" +msgstr "مصروفات النقل" + +#: inventory/tasks.py:517 +msgid "Salaries and Wages" +msgstr "الرواتب والأجور" + +#: inventory/tasks.py:518 +msgid "Sales Commissions" +msgstr "عمولات المبيعات" + +#: inventory/tasks.py:519 +msgid "Shipping and Customs Clearance" +msgstr "الشحن والتخليص الجمركي" + +#: inventory/tasks.py:522 +msgid "Zakat" +msgstr "الزكاة" + +#: inventory/tasks.py:523 +msgid "Taxes" +msgstr "الضرائب" + +#: inventory/tasks.py:524 +msgid "Foreign Currency Translation" +msgstr "تحويل العملات الأجنبية" + +#: inventory/tasks.py:525 +msgid "Interest Expenses" +msgstr "مصروفات الفائدة" + #: inventory/utils.py:78 msgid "success" msgstr "ناجحة" @@ -1750,370 +1750,413 @@ msgstr "نسيت كلمة المرور؟" msgid "Car reserved successfully." msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:293 inventory/views.py:2642 +#: inventory/views.py:287 +msgid "Passwords do not match" +msgstr "كلمات المرور غير متطابقة." + +#: inventory/views.py:312 inventory/views.py:2668 msgid "User created successfully" msgstr "تم إنشاء المستخدم بنجاح." -#: inventory/views.py:590 +#: inventory/views.py:608 msgid "Car saved successfully" msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:654 +#: inventory/views.py:672 msgid "VIN number exists" msgstr "رقم الهيكل موجود مسبقاً" -#: inventory/views.py:885 templates/dashboards/manager.html:49 +msgid "Invalid VIN number provided" +msgstr "تم تقديم رقم تعريف مركبة (VIN) غير صالح" + +msgid "VIN not found in all sources" +msgstr "لم يتم العثور على رقم التعريف (VIN) في جميع المصادر" + +msgid "Manufacturer not found in the database" +msgstr "لم يتم العثور على الشركة المصنعة في قاعدة البيانات" + +msgid "Server error occurred" +msgstr "حدث خطأ في الخادم" + +msgid "No image provided" +msgstr "لم يتم تقديم صورة" + +msgid "No QR/Barcode detected" +msgstr "لم يتم اكتشاف رمز QR أو الباركود" + +#: inventory/views.py:903 templates/dashboards/manager.html:49 #: templates/dashboards/sales.html:113 templates/inventory/car_inventory.html:5 #: templates/inventory/inventory_stats.html:5 msgid "inventory" msgstr "المخزون" -#: inventory/views.py:1212 +#: inventory/views.py:1232 msgid "Car finance details saved successfully" msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:1258 -msgid "Car finance details updated successfully." +#: inventory/views.py:1278 +msgid "Car finance details updated successfully" msgstr "تم تحديث تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:1310 -msgid "Car updated successfully." +#: inventory/views.py:1330 +msgid "Car updated successfully" msgstr "تم تحديث السيارة بنجاح" -#: inventory/views.py:1342 +#: inventory/views.py:1362 msgid "Car deleted successfully" msgstr "تم حذف السيارة بنجاح." -#: inventory/views.py:1378 +#: inventory/views.py:1398 msgid "Location saved successfully" msgstr "تم حفظ يوم الإجازة بنجاح." -#: inventory/views.py:1416 +#: inventory/views.py:1436 msgid "Location updated successfully" msgstr "تم تحديث البريد الإلكتروني بنجاح!" -#: inventory/views.py:1519 +#: inventory/views.py:1541 msgid "Car transfer canceled successfully" msgstr "تم إلغاء نقل السيارة بنجاح." -#: inventory/views.py:1536 +#: inventory/views.py:1558 msgid "Car transfer approved successfully" msgstr "تمت الموافقة على نقل السيارة بنجاح." -#: inventory/views.py:1561 +#: inventory/views.py:1583 msgid "Car transfer rejected successfully" msgstr "تم رفض نقل السيارة بنجاح." -#: inventory/views.py:1573 +#: inventory/views.py:1595 msgid "Car Transfer Completed successfully." msgstr "تم إكمال نقل السيارة بنجاح." -#: inventory/views.py:1642 +#: inventory/views.py:1664 msgid "Custom Card added successfully" msgstr "تم إضافة البطاقة الجمركية بنجاح." -#: inventory/views.py:1683 +#: inventory/views.py:1705 msgid "Registration added successfully" msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1706 +#: inventory/views.py:1728 msgid "This car is already reserved" msgstr "هذه السيارة محجوزة بالفعل." -#: inventory/views.py:1744 +#: inventory/views.py:1766 msgid "Reservation renewed successfully" msgstr "تم تجديد الحجز بنجاح" -#: inventory/views.py:1752 +#: inventory/views.py:1774 msgid "Reservation canceled successfully" msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1757 +#: inventory/views.py:1779 msgid "Invalid action" msgstr "إجراء غير صالح." -#: inventory/views.py:1761 +#: inventory/views.py:1783 msgid "Invalid request method" msgstr "طريقة الطلب غير صالحة" -#: inventory/views.py:1838 +#: inventory/views.py:1860 msgid "Dealer updated successfully" msgstr "تم تحديث المعرض بنجاح." -#: inventory/views.py:1871 templates/header.html:190 +#: inventory/views.py:1893 templates/header.html:190 msgid "customers" msgstr "العملاء" -#: inventory/views.py:2027 -msgid "Customer with this email already exists." +#: inventory/views.py:2053 +msgid "Customer with this email already exists" msgstr "عميل بهذا البريد الإلكتروني موجود بالفعل." -#: inventory/views.py:2052 +#: inventory/views.py:2078 msgid "Customer created successfully" msgstr "تم إنشاء العميل بنجاح." -#: inventory/views.py:2058 +#: inventory/views.py:2084 msgid "Please correct the errors below" msgstr "يرجى تصحيح الأخطاء أدناه." -#: inventory/views.py:2117 +#: inventory/views.py:2143 msgid "Customer updated successfully" msgstr "تم تحديث العميل بنجاح." -#: inventory/views.py:2152 +#: inventory/views.py:2178 msgid "Customer deleted successfully" msgstr "تم حذف العميل بنجاح." -#: inventory/views.py:2244 +#: inventory/views.py:2270 msgid "Vendor created successfully" msgstr "تم إنشاء المورد بنجاح." -#: inventory/views.py:2282 +#: inventory/views.py:2308 msgid "Vendor updated successfully" msgstr "تم تحديث المورد بنجاح" -#: inventory/views.py:2324 +#: inventory/views.py:2350 msgid "Vendor deleted successfully" msgstr "تم حذف المورد بنجاح." -#: inventory/views.py:2409 +#: inventory/views.py:2435 msgid "Group created successfully" msgstr "تم إنشاء المجموعة بنجاح." -#: inventory/views.py:2451 +#: inventory/views.py:2477 msgid "Group updated successfully" msgstr "تم تحديث المجموعة بنجاح." -#: inventory/views.py:2478 +#: inventory/views.py:2504 msgid "Group deleted successfully" msgstr "تم حذف المجموعة بنجاح." -#: inventory/views.py:2512 +#: inventory/views.py:2538 msgid "Permission added successfully" msgstr "تمت إضافة الإذن بنجاح." -#: inventory/views.py:2548 +#: inventory/views.py:2574 msgid "Group added successfully" msgstr "تمت إضافة المجموعة بنجاح." -#: inventory/views.py:2650 +#: inventory/views.py:2676 msgid "The user quota for staff members is not defined. Please contact support" msgstr "لم يتم تحديد الحصة المخصصة لأعضاء الفريق. يرجى الاتصال بالدعم." -#: inventory/views.py:2655 +#: inventory/views.py:2681 msgid "" "You have reached the maximum number of staff users allowed for your plan" msgstr "لقد وصلت إلى الحد الأقصى لعدد أعضاء الفريق المسموح به في خطتك." -#: inventory/views.py:2709 +#: inventory/views.py:2735 msgid "User updated successfully" msgstr "تم تحديث المستخدم بنجاح" -#: inventory/views.py:2761 +#: inventory/views.py:2787 msgid "User deleted successfully" msgstr "تم حذف المستخدم بنجاح." -#: inventory/views.py:2842 +#: inventory/views.py:2868 msgid "An organization with this email already exists." msgstr "توجد بالفعل منظمة بهذا البريد الإلكتروني." -#: inventory/views.py:2870 inventory/views.py:2927 +#: inventory/views.py:2896 inventory/views.py:2953 msgid "Organization created successfully" msgstr "تم إنشاء المنظمة بنجاح." -#: inventory/views.py:2961 +#: inventory/views.py:2987 msgid "Organization deleted successfully" msgstr "تم حذف المنظمة بنجاح." -#: inventory/views.py:2964 +#: inventory/views.py:2990 msgid "Unable to delete organization" msgstr "غير قادر على حذف المنظمة" -#: inventory/views.py:3046 +#: inventory/views.py:3072 msgid "Representative created successfully" msgstr "تم إنشاء الخدمة بنجاح." -#: inventory/views.py:3088 +#: inventory/views.py:3114 msgid "Representative updated successfully" msgstr "تم تحديث الخدمة بنجاح." -#: inventory/views.py:3112 +#: inventory/views.py:3138 msgid "Representative deleted successfully" msgstr "تم حذف الخدمة بنجاح!" -#: inventory/views.py:3183 +#: inventory/views.py:3209 msgid "Bank account created successfully" msgstr "تم إنشاء المنظمة بنجاح." -#: inventory/views.py:3254 +#: inventory/views.py:3280 msgid "Bank account updated successfully" msgstr "تم تحديث المجموعة بنجاح." -#: inventory/views.py:3290 +#: inventory/views.py:3316 msgid "Bank account deleted successfully" msgstr "تم حذف الملاحظة بنجاح." -#: inventory/views.py:3376 +#: inventory/views.py:3402 msgid "Account created successfully" msgstr "تم إنشاء المجموعة بنجاح." -#: inventory/views.py:3491 +#: inventory/views.py:3517 msgid "Account updated successfully" msgstr "تم تحديث المجموعة بنجاح." -#: inventory/views.py:3519 +#: inventory/views.py:3545 msgid "Account deleted successfully" msgstr "تم حذف الملاحظة بنجاح." -#: inventory/views.py:3631 inventory/views.py:6005 +#: inventory/views.py:3657 inventory/views.py:6031 msgid "Items and Quantities are required" msgstr "المنتجات والكميات مطلوبة" -#: inventory/views.py:3638 inventory/views.py:3643 inventory/views.py:6011 -#: inventory/views.py:6016 +#: inventory/views.py:3664 inventory/views.py:3669 inventory/views.py:6037 +#: inventory/views.py:6042 msgid "Quantity must be greater than zero" msgstr "يجب أن تكون مدة الفاصل الزمني أكبر من 0." -#: inventory/views.py:3652 inventory/views.py:3660 +#: inventory/views.py:3678 inventory/views.py:3686 msgid "Quantity must be less than or equal to the number of cars in stock" msgstr "يجب أن تكون الكمية أقل من أو تساوي عدد السيارات المتوفرة في المخزون" -#: inventory/views.py:3752 +#: inventory/views.py:3778 msgid "Quotation created successfully" msgstr "تم إنشاء عرض السعر بنجاح" -#: inventory/views.py:4010 +#: inventory/views.py:4036 msgid "Quotation is not ready for review" msgstr "العرض غير جاهز للمراجعة." -#: inventory/views.py:4016 +#: inventory/views.py:4042 msgid "Quotation is not ready for approval" msgstr "العرض غير جاهز للموافقة." -#: inventory/views.py:4019 +#: inventory/views.py:4045 msgid "Quotation approved successfully" msgstr "تمت الموافقة على العرض بنجاح." -#: inventory/views.py:4022 +#: inventory/views.py:4048 msgid "Quotation is not ready for rejection" msgstr "العرض غير جاهز للرفض." -#: inventory/views.py:4025 inventory/views.py:4043 +#: inventory/views.py:4051 inventory/views.py:4069 msgid "Quotation canceled successfully" msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:4028 +#: inventory/views.py:4054 msgid "Quotation is not ready for completion" msgstr "العرض غير جاهز للإكمال." -#: inventory/views.py:4032 +#: inventory/views.py:4058 msgid "Quotation is not ready for cancellation" msgstr "العرض غير جاهز للإلغاء." +#: inventory/views.py:4071 msgid "Quotation marked as " msgstr "تم وضع علامة على عرض السعر كـ" +#: inventory/views.py:4485 msgid "fully paid" msgstr "مدفوع بالكامل" +#: inventory/views.py:4488 msgid "Amount exceeds due amount" msgstr "المبلغ يتجاوز المبلغ المستحق" +#: inventory/views.py:4496 inventory/views.py:4606 msgid "Payment created successfully" msgstr "تم إنشاء الدفعة بنجاح" +#: inventory/views.py:4610 msgid "Invoice is not fully paid, Payment cannot be marked as paid" msgstr "لم يتم دفع الفاتورة بالكامل، لا يمكن وضع علامة مدفوعة على الدفعة" +#: inventory/views.py:4808 msgid "Lead created successfully" msgstr "تم إنشاء العميل المتوقع بنجاح" +#: inventory/views.py:4873 msgid "Lead deleted successfully" msgstr "تم حذف العميل المتوقع بنجاح" +#: inventory/views.py:4902 inventory/views.py:4931 msgid "Note added successfully" msgstr "تمت إضافة الملاحظة بنجاح" +#: inventory/views.py:4928 msgid "Notes field is required" msgstr "حقل الملاحظات مطلوب" +#: inventory/views.py:4964 msgid "Note updated successfully" msgstr "تم تحديث الملاحظة بنجاح" +#: inventory/views.py:4990 msgid "Note deleted successfully." msgstr "تم حذف الملاحظة بنجاح." +#: inventory/views.py:5016 msgid "Lead is already converted to customer" msgstr "تم تحويل العميل المتوقع بالفعل إلى عميل" +#: inventory/views.py:5020 msgid "Lead converted to customer successfully" msgstr "تم تحويل العميل المتوقع إلى عميل بنجاح" +#: inventory/views.py:5045 msgid "You do not have permission to schedule lead" msgstr "ليست لديك صلاحية جدولة هذا العميل المتوقع" +#: inventory/views.py:5086 msgid "Lead scheduled and appointment created successfully" msgstr "تمت جدولة العميل المتوقع وإنشاء الموعد بنجاح" +#: inventory/views.py:5116 msgid "Lead transferred successfully" msgstr "تم نقل العميل المتوقع بنجاح" +#: inventory/views.py:5149 msgid "Email Draft successfully" msgstr "تم إنشاء مسودة البريد الإلكتروني بنجاح" -#: inventory/views.py:5156 inventory/views.py:6216 +#: inventory/views.py:5182 inventory/views.py:6242 msgid "Email sent successfully" msgstr "تم إرسال البريد الإلكتروني بنجاح!" -#: inventory/views.py:5385 +#: inventory/views.py:5411 msgid "Opportunity deleted successfully" msgstr "تم حذف الفرصة بنجاح." +#: inventory/views.py:5449 msgid "Opportunity status updated successfully" msgstr "تم تحديث حالة الفرصة بنجاح" +#: inventory/views.py:5506 msgid "Notification marked as read" msgstr "تم تعليم الإشعار كمقروء" +#: inventory/views.py:5563 msgid "Service created successfully" msgstr "تم إنشاء الخدمة بنجاح" +#: inventory/views.py:5607 msgid "Service updated successfully" msgstr "تم تحديث الخدمة بنجاح" -#: inventory/views.py:5837 inventory/views.py:5889 +#: inventory/views.py:5863 inventory/views.py:5915 msgid "Bill updated successfully" msgstr "تم تحديث الفاتورة بنجاح." -#: inventory/views.py:5930 +#: inventory/views.py:5956 msgid "Bill is already approved" msgstr "تمت الموافقة على الفاتورة مسبقًا." -#: inventory/views.py:5934 +#: inventory/views.py:5960 msgid "Bill marked as approved successfully" msgstr "تم تحديد الفاتورة كموافقة بنجاح." -#: inventory/views.py:5961 +#: inventory/views.py:5987 msgid "Bill is already paid" msgstr "تم دفع الفاتورة مسبقًا." -#: inventory/views.py:5970 +#: inventory/views.py:5996 msgid "Bill marked as paid successfully" msgstr "تم تحديد الفاتورة كمدفوعة بنجاح." -#: inventory/views.py:5972 +#: inventory/views.py:5998 msgid "Amount paid is not equal to amount due" msgstr "المبلغ المدفوع لا يساوي المبلغ المستحق." -#: inventory/views.py:6077 +#: inventory/views.py:6103 msgid "Bill created successfully" msgstr "تم تحديث الفاتورة بنجاح." -#: inventory/views.py:6178 +#: inventory/views.py:6204 msgid "Quotation has no items" msgstr "عرض السعر لا يحتوي على أي عناصر" -#: inventory/views.py:6211 templates/customers/view_customer.html:129 +#: inventory/views.py:6237 templates/customers/view_customer.html:127 #: templates/sales/estimates/estimate_detail.html:79 #: templates/sales/estimates/estimate_send.html:5 #: templates/sales/estimates/sale_order_form.html:171 @@ -2121,33 +2164,41 @@ msgstr "عرض السعر لا يحتوي على أي عناصر" msgid "Quotation" msgstr "عرض سعر" -#: inventory/views.py:6725 +#: inventory/views.py:6751 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/unit/unit_detail.html:23 #: venv/lib/python3.11/site-packages/django_ledger/views/entity.py:210 msgid "Dashboard" msgstr "لوحة القيادة" +#: inventory/views.py:6906 inventory/views.py:6940 inventory/views.py:7000 msgid "Unauthorized" msgstr "غير مصرح" +#: inventory/views.py:7126 msgid "Settings updated" msgstr "تم تحديث الإعدادات" +#: inventory/views.py:7450 msgid "Journal Entry created" msgstr "تم إنشاء قيد اليومية" +#: inventory/views.py:7491 msgid "Journal Entry cannot be deleted" msgstr "لا يمكن حذف قيد اليومية" +#: inventory/views.py:7564 msgid "Ledger is already locked" msgstr "دفتر الأستاذ مقفل بالفعل" +#: inventory/views.py:7591 msgid "Ledger is already Unlocked" msgstr "دفتر الأستاذ غير مقفل بالفعل" +#: inventory/views.py:7620 msgid "Ledger is already posted" msgstr "دفتر الأستاذ تم ترحيله بالفعل" +#: inventory/views.py:7650 msgid "Ledger is already Unposted" msgstr "دفتر الأستاذ لم يتم ترحيله بعد" @@ -2950,7 +3001,7 @@ msgstr "" "عنوان بريدك الإلكتروني." #: templates/administration/display_appointment.html:19 -#: templates/customers/view_customer.html:120 +#: templates/customers/view_customer.html:118 #: templates/email_sender/reminder_email.html:80 #: templates/email_sender/reschedule_email.html:64 #: templates/email_sender/reschedule_email.html:69 @@ -3653,7 +3704,7 @@ msgid "Payment Details" msgstr "تفاصيل الدفع" #: templates/appointment/appointment_client_information.html:96 -#: templates/customers/view_customer.html:118 +#: templates/customers/view_customer.html:116 #: templates/inventory/car_detail.html:230 #: templates/inventory/inventory_stats.html:72 #: templates/inventory/transfer_details.html:74 @@ -3940,7 +3991,7 @@ msgid "Update" msgstr "تحديث" #: templates/crm/leads/lead_detail.html:417 -#: templates/customers/view_customer.html:220 +#: templates/customers/view_customer.html:218 #: templates/inventory/car_detail.html:536 msgid "Error loading form. Please try again later" msgstr "حدث خطأ أثناء تحميل النموذج. يرجى المحاولة مرة أخرى لاحقًا." @@ -4237,22 +4288,22 @@ msgstr "العروض" msgid "Default Address" msgstr "العنوان الافتراضي" -#: templates/customers/view_customer.html:111 +#: templates/customers/view_customer.html:109 msgid "Related" msgstr "مرتبط" -#: templates/customers/view_customer.html:117 +#: templates/customers/view_customer.html:115 #: templates/ledger/bank_accounts/bank_account_list.html:20 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:8 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:8 msgid "Type" msgstr "النوع" -#: templates/customers/view_customer.html:119 +#: templates/customers/view_customer.html:117 msgid "Payment Status" msgstr "حالة الدفع" -#: templates/customers/view_customer.html:157 +#: templates/customers/view_customer.html:155 #: templates/ledger/bills/bill_detail.html:199 #: templates/sales/invoices/invoice_detail.html:80 #: templates/sales/invoices/invoice_detail.html:224 @@ -5466,18 +5517,23 @@ msgstr "وقت بدء الحجز" msgid "Reservation End Time" msgstr "وقت انتهاء الحجز" +#: templates/inventory/scan_vin.html:6 msgid "Scan Vehicle Code" msgstr "مسح رمز السيارة" +#: templates/inventory/scan_vin.html:10 msgid "VIN / Barcode / QR Code" msgstr "رمز VIN / الباركود / رمز QR" +#: templates/inventory/scan_vin.html:14 msgid "Start Scanning" msgstr "ابدأ المسح" +#: templates/inventory/scan_vin.html:22 msgid "Switch Camera" msgstr "تبديل الكاميرا" +#: templates/inventory/scan_vin.html:23 msgid "Scan" msgstr "مسح"