From e551064560e563995b92af4f4e3340508a03a2d6 Mon Sep 17 00:00:00 2001 From: Marwan Alwali Date: Thu, 24 Apr 2025 19:12:18 +0300 Subject: [PATCH] update --- inventory/services.py | 8 +- inventory/signals.py | 1 - inventory/views.py | 170 +--- locale/ar/LC_MESSAGES/django.mo | Bin 225570 -> 229933 bytes locale/ar/LC_MESSAGES/django.po | 1397 ++++++++++++----------------- templates/inventory/scan_vin.html | 139 +-- 6 files changed, 718 insertions(+), 997 deletions(-) diff --git a/inventory/services.py b/inventory/services.py index 099e0722..91585363 100644 --- a/inventory/services.py +++ b/inventory/services.py @@ -88,8 +88,8 @@ def decodevin(vin): return result elif result:=elm(vin): return result - elif result:=decode_vin_haikalna(vin): - return result + # elif result:=decode_vin_haikalna(vin): + # return result else: return None @@ -118,7 +118,6 @@ def decode_vin(vin): "model": v.Model, "modelYear": v.ModelYear, } - print(data) return data if all([x for x in data.values()]) else None @@ -160,5 +159,4 @@ def elm(vin): "model": response["data"]["model"], "modelYear": response["data"]["modelYear"], } - print(data) - return data if all([x for x in data.values()]) else None + return data if all([x for x in data.values()]) else None diff --git a/inventory/signals.py b/inventory/signals.py index a64da336..4cd796ef 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -96,7 +96,6 @@ def create_car_location(sender, instance, created, **kwargs): showroom=instance.dealer, description=f"Initial location set for car {instance.vin}.", ) - print("Car Location created") except Exception as e: print(f"Failed to create CarLocation for car {instance.vin}: {e}") diff --git a/inventory/views.py b/inventory/views.py index 46cb28af..26a9203f 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -11,7 +11,6 @@ from calendar import month_name from pyzbar.pyzbar import decode from urllib.parse import urlparse, urlunparse -##################################################################### from django.db.models.deletion import RestrictedError # Django @@ -53,7 +52,6 @@ from django.views.generic import ( TemplateView, ArchiveIndexView, ) -##################################################################### # Django Ledger from django_ledger.io import roles @@ -123,9 +121,7 @@ from django_ledger.views.mixins import ( DjangoLedgerSecurityMixIn, EntityUnitMixIn, ) -##################################################################### # Other - from plans.models import Plan from inventory.filters import AccountModelFilter @@ -153,7 +149,6 @@ from .utils import ( CarTransfer, ) -##################################################################### logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) @@ -306,30 +301,6 @@ def dealer_signup(request, *args, **kwargs): ) -# class OTPView(View, LoginRequiredMixin): -# template_name = "account/otp_verification.html" -# -# def get(self, request, *args, **kwargs): -# # device = default_device(request.user) -# # device.generate_challenge() -# return render(request, self.template_name) -# -# def post(self, request, *args, **kwargs): -# otp_code = request.POST.get("otp_code") -# -# if self.verify_otp(otp_code, request.user): -# messages.success(request, _("OTP verified successfully!")) -# return redirect("home") -# -# messages.error(request, _("Invalid OTP. Please try again.")) -# return render(request, self.template_name) - -# def verify_otp(self, otp_code, user): -# device = default_device(user) -# if device and device.verify_token(otp_code): -# return True -# return False - class HomeView(LoginRequiredMixin, TemplateView): """ @@ -354,58 +325,6 @@ class HomeView(LoginRequiredMixin, TemplateView): 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) - # - # try: - # # Fetch car-related statistics - # total_cars = models.Car.objects.filter(dealer=dealer).count() - # total_reservations = models.CarReservation.objects.filter( - # reserved_until__gte=timezone.now() - # ).count() - # cars_in_house = models.CarLocation.objects.filter( - # owner=dealer, - # ).count() - # cars_outside = total_cars - cars_in_house - # - # # Fetch financial statistics - # stats = models.CarFinance.objects.aggregate( - # total_cost_price=Sum("cost_price"), - # total_selling_price=Sum("selling_price"), - # ) - # total_cost_price = stats.get("total_cost_price", 0) or 0 - # total_selling_price = stats.get("total_selling_price", 0) or 0 - # total_profit = total_selling_price - total_cost_price - # - # # Prepare context data - # context.update({ - # "dealer": dealer, - # "total_cars": total_cars, - # "cars_in_house": cars_in_house, - # "cars_outside": cars_outside, - # "total_reservations": total_reservations, - # "total_cost_price": total_cost_price, - # "total_selling_price": total_selling_price, - # "total_profit": total_profit, - # }) - # - # except Exception as e: - # # Log the error (you can use Django's logging framework) - # print(f"Error fetching data: {e}") - # # Provide default values in case of an error - # context.update({ - # "dealer": dealer, - # "total_cars": 0, - # "cars_in_house": 0, - # "cars_outside": 0, - # "total_reservations": 0, - # "total_cost_price": 0, - # "total_selling_price": 0, - # "total_profit": 0, - # }) - # return context - class TestView(TemplateView): """ @@ -594,12 +513,6 @@ class SalesDashboard(LoginRequiredMixin, TemplateView): context["staff"] = staff context["total_cars"] = total_cars context["total_reservations"] = total_reservations - # context["total_cost_price"] = total_cost_price - # context["total_selling_price"] = total_selling_price - # context["total_profit"] = total_profit - # context['new_leads'] = new_leads - # context['pending_leads'] = pending_leads - # context['canceled_leads'] = canceled_leads context["reserved_percentage"] = reserved_percentage context["sold_percentage"] = sold_percentage context["available_cars"] = available_cars @@ -609,10 +522,6 @@ class SalesDashboard(LoginRequiredMixin, TemplateView): context["damaged_cars"] = damaged_cars context["transfer_cars"] = transfer_cars context["car"] = json.dumps(car_by_make) - # context['customers'] = customers - # context['staff'] = staff - # context['total_leads'] = total_leads - # context['invoices'] = invoices return context @@ -635,7 +544,6 @@ class WelcomeView(TemplateView): context = super().get_context_data(**kwargs) dealer = get_user_type(self.request) plan_list = Plan.objects.all() - # pricing = PlanPricing.objects.filter(plan=plan). context["plan_list"] = plan_list return context @@ -662,7 +570,6 @@ class CarCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView): template_name = "inventory/car_form.html" permission_required = ["inventory.add_car"] - # success_url = reverse_lazy('inventory_stats') def get_form(self, form_class=None): form = super().get_form(form_class) @@ -898,49 +805,54 @@ class AjaxHandlerView(LoginRequiredMixin, View): return JsonResponse(serialized_options, safe=False) +import cv2 +import numpy as np +from pyzbar.pyzbar import decode +from django.views import View +from django.shortcuts import render, get_object_or_404, redirect +from django.http import JsonResponse +from django.contrib.auth.mixins import LoginRequiredMixin +from django.utils.decorators import method_decorator +from django.views.decorators.csrf import csrf_exempt +from django.urls import reverse +from . import models # Adjust to your project structure + @method_decorator(csrf_exempt, name="dispatch") class SearchCodeView(LoginRequiredMixin, View): - """ - View to handle barcode/QR code scanning and car detail retrieval. - - This class is responsible for rendering the form page for scanning and processing - images to decode VIN codes using uploaded images. It handles both GET and POST - requests. Upon successfully decoding a VIN, it redirects to the car detail page. - - :ivar template_name: Path to the template used for the form rendering. - :type template_name: str - """ template_name = "inventory/scan_vin.html" def get(self, request, *args, **kwargs): - """Render the form page.""" return render(request, self.template_name) def post(self, request, *args, **kwargs): image_file = request.FILES.get("image") - if image_file: - print("image received!") - image = cv2.imdecode( - np.frombuffer(image_file.read(), np.uint8), cv2.IMREAD_COLOR - ) - decoded_objects = decode(image) - if decoded_objects: - print("image decoded!") - print(decoded_objects[0]) - code = decoded_objects[0].data.decode("utf-8") - print("code received!") - print(code) - car = get_object_or_404(models.Car, vin=code) - name = car.id_car_make.get_local_name - print(name) - return redirect("car_detail", pk=car.pk) - else: - print("back to else statement") - return JsonResponse({"success": False, "error": "No code detected"}) - else: + if not image_file: return JsonResponse({"success": False, "error": "No image provided"}) + try: + np_arr = np.frombuffer(image_file.read(), np.uint8) + image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) + if image is None: + raise ValueError("Invalid image format") + + gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + decoded_objects = decode(gray) + + if not decoded_objects: + 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) + return JsonResponse({ + "success": True, + "code": code, + "redirect_url": reverse("car_detail", args=[car.pk]) + }) + + except Exception as e: + return JsonResponse({"success": False, "error": str(e)}) + class CarInventory(LoginRequiredMixin, PermissionRequiredMixin, ListView): """ @@ -1874,17 +1786,15 @@ class DealerDetailView(LoginRequiredMixin, DetailView): return models.Dealer.objects.annotate( staff_count=Coalesce( Count("staff"), Value(0) - ) # Get the number of staff members + ) ) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) dealer = self.object car_makes = models.CarMake.objects.filter(car_dealers__dealer=dealer) - # Fetch current staff count from the annotated queryset staff_count = dealer.staff_count cars_count = models.Car.objects.filter(dealer=dealer).count() - # Get the quota value dynamically quota_dict = get_user_quota(dealer.user) allowed_users = quota_dict.get("Users", None) @@ -2116,7 +2026,6 @@ def CustomerCreateView(request): ): messages.error(request, _("Customer with this email already exists.")) else: - # Create customer name customer_name = ( f"{form.cleaned_data['first_name']} " f"{form.cleaned_data['last_name']}" @@ -2126,7 +2035,6 @@ def CustomerCreateView(request): for x in request.POST if x != "csrfmiddlewaretoken" } - # Create customer instance try: customer = dealer.entity.create_customer( commit=False, @@ -2137,7 +2045,6 @@ def CustomerCreateView(request): "email": form.cleaned_data["email"], }, ) - # customer.additional_info = {} customer.additional_info.update({"customer_info": customer_dict}) customer.additional_info.update({"type": "customer"}) customer.save() @@ -2148,7 +2055,6 @@ def CustomerCreateView(request): except Exception as e: messages.error(request, _(f"An error occurred: {str(e)}")) else: - # Form is invalid, show errors messages.error(request, _("Please correct the errors below")) return render(request, "customers/customer_form.html", {"form": form}) @@ -3636,7 +3542,7 @@ def sales_list_view(request): transactions = ItemTransactionModel.objects.for_entity( entity_slug=entity.slug, user_model=dealer.user - ) + ).order_by('created') paginator = Paginator(transactions, 10) page_number = request.GET.get("page") page_obj = paginator.get_page(page_number) diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 6d5630f82623346379e4cb6c01292c308f9adddf..2bdd345d89f4e9a55f9b068f3c9d66010ef891ea 100644 GIT binary patch delta 56515 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 Iwnxw4{_$ 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 P9lUO2v_}o_+8FpB`7>dQ diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index d08254b9..df3ec0cf 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:1856 +#: inventory/models.py:1891 #: 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-03-22 06:21+0300\n" +"POT-Creation-Date: 2025-04-24 18:53+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ 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:353 inventory/tables.py:12 +#: api/models.py:6 inventory/models.py:369 inventory/tables.py:51 #: templates/inventory/car_detail.html:59 templates/inventory/car_form.html:32 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:31 #: templates/inventory/car_inventory.html:53 @@ -38,89 +38,123 @@ msgstr "" msgid "VIN" msgstr "رقم الهيكل" -#: car_inventory/settings.py:161 car_inventory/settings.py:326 +#: car_inventory/settings.py:162 car_inventory/settings.py:327 msgid "SAR" msgstr "ريال" -#: car_inventory/settings.py:258 +#: car_inventory/settings.py:259 #: venv/lib/python3.11/site-packages/appointments/settings.py:136 msgid "English" msgstr "الإنجليزية" -#: car_inventory/settings.py:259 +#: car_inventory/settings.py:260 msgid "Arabic" msgstr "العربية" -#: car_inventory/settings.py:348 templates/header.html:389 +#: car_inventory/settings.py:349 templates/header.html:389 #: templates/welcome-temp.html:57 templates/welcome_header.html:7 msgid "Haikal" msgstr "هيكل" -#: inventory/forms.py:310 inventory/models.py:701 +#: inventory/forms.py:222 inventory/forms.py:877 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 +#: templates/crm/leads/lead_list.html:47 +#: templates/crm/opportunities/opportunity_detail.html:190 +#: templates/customers/customer_list.html:41 +#: templates/customers/view_customer.html:76 +#: templates/users/user_detail.html:51 templates/vendors/view_vendor.html:52 +#: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_index.html:369 +#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:114 +msgid "Phone Number" +msgstr "رقم الهاتف" + +#: inventory/forms.py:225 inventory/forms.py:880 +#: templates/administration/display_appointment.html:55 +#: templates/appointment/appointment_client_information.html:57 +#: templates/crm/leads/lead_detail.html:88 +#: templates/dealers/dealer_detail.html:84 +#: templates/organizations/organization_detail.html:10 +#: templates/organizations/organization_list.html:64 +#: templates/representatives/representative_detail.html:9 +#: templates/representatives/representative_list.html:19 +#: templates/vendors/vendors_list.html:54 +#: venv/lib/python3.11/site-packages/appointment/templates/administration/display_appointment.html:49 +#: venv/lib/python3.11/site-packages/appointment/templates/appointment/appointment_client_information.html:64 +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 +#: 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 +msgid "Phone number must be in the format 05xxxxxxxx" +msgstr "يجب أن يكون رقم الهاتف بالصيغة 05xxxxxxxx" + +#: inventory/forms.py:502 inventory/models.py:719 #: templates/inventory/car_detail.html:122 msgid "Custom Date" msgstr "تاريخ البطاقة الجمركية" -#: inventory/forms.py:380 +#: inventory/forms.py:614 msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/forms.py:458 inventory/models.py:1178 inventory/models.py:1526 +#: inventory/forms.py:745 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:462 +#: inventory/forms.py:749 #: 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:463 templates/crm/leads/lead_list.html:41 +#: inventory/forms.py:750 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:469 +#: inventory/forms.py:756 msgid "You must add an email." msgstr "يجب إضافة بريد إلكتروني." -#: inventory/forms.py:474 inventory/forms.py:478 +#: inventory/forms.py:761 inventory/forms.py:765 #: 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:485 inventory/forms.py:502 inventory/forms.py:577 -#: inventory/forms.py:598 inventory/forms.py:616 inventory/forms.py:631 -#: venv/lib/python3.11/site-packages/django/forms/fields.py:95 -msgid "This field is required." -msgstr "هذا الحقل مطلوب." - -#: inventory/forms.py:491 inventory/forms.py:495 +#: inventory/forms.py:778 inventory/forms.py:782 msgid "Confirm Password" msgstr "تأكيد كلمة المرور" -#: inventory/forms.py:508 +#: inventory/forms.py:795 msgid "I accept the Terms and Privacy Policy" msgstr "أوافق على الشروط وسياسة الخصوصية" -#: inventory/forms.py:517 +#: inventory/forms.py:804 msgid "You must accept the terms and privacy policy." msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." -#: inventory/forms.py:527 +#: inventory/forms.py:814 msgid "An account with this email already exists." msgstr "يوجد بالفعل حساب بهذا البريد الإلكتروني." -#: inventory/forms.py:535 +#: inventory/forms.py:822 msgid "Passwords do not match." msgstr "كلمات المرور غير متطابقة." -#: inventory/forms.py:541 inventory/models.py:308 inventory/models.py:650 -#: inventory/models.py:663 inventory/models.py:972 inventory/models.py:1144 -#: inventory/models.py:1172 templates/administration/manage_service.html:22 +#: inventory/forms.py:849 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 #: templates/administration/staff_list.html:34 #: templates/administration/user_profile.html:226 @@ -142,83 +176,51 @@ msgstr "كلمات المرور غير متطابقة." msgid "Name" msgstr "الاسم" -#: inventory/forms.py:545 inventory/models.py:877 inventory/models.py:1523 +#: inventory/forms.py:853 inventory/models.py:895 inventory/models.py:1558 msgid "English Name" msgstr "الاسم بالإنجليزية" -#: inventory/forms.py:550 +#: inventory/forms.py:858 msgid "Please enter an English Name." msgstr "يرجى إدخال اسم باللغة الإنجليزية." -#: inventory/forms.py:555 inventory/forms.py:559 inventory/models.py:309 -#: inventory/models.py:651 inventory/models.py:664 inventory/models.py:876 -#: inventory/models.py:973 inventory/models.py:1145 inventory/models.py:1173 -#: inventory/models.py:1522 templates/users/user_detail.html:48 +#: inventory/forms.py:863 inventory/forms.py:867 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:564 +#: inventory/forms.py:872 msgid "Please enter an Arabic name." msgstr "يرجى إدخال اسم باللغة العربية." -#: inventory/forms.py:569 inventory/models.py:878 inventory/models.py:974 -#: inventory/models.py:1119 inventory/models.py:1150 inventory/models.py:1177 -#: inventory/models.py:1197 inventory/models.py:1525 -#: templates/administration/staff_index.html:123 -#: templates/crm/leads/lead_list.html:47 -#: templates/crm/opportunities/opportunity_detail.html:193 -#: templates/customers/customer_list.html:41 -#: templates/customers/view_customer.html:76 -#: templates/users/user_detail.html:51 templates/vendors/view_vendor.html:52 -#: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_index.html:369 -#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:114 -msgid "Phone Number" -msgstr "رقم الهاتف" - -#: inventory/forms.py:572 templates/administration/display_appointment.html:55 -#: templates/appointment/appointment_client_information.html:57 -#: templates/crm/leads/lead_detail.html:88 -#: templates/dealers/dealer_detail.html:84 -#: templates/organizations/organization_detail.html:10 -#: templates/organizations/organization_list.html:64 -#: templates/representatives/representative_detail.html:9 -#: templates/representatives/representative_list.html:19 -#: templates/vendors/vendors_list.html:54 -#: venv/lib/python3.11/site-packages/appointment/templates/administration/display_appointment.html:49 -#: venv/lib/python3.11/site-packages/appointment/templates/appointment/appointment_client_information.html:64 -msgid "Phone" -msgstr "الهاتف" - -#: inventory/forms.py:578 -msgid "Phone number must be in the format 05xxxxxxxx" -msgstr "يجب أن يكون رقم الهاتف بالصيغة 05xxxxxxxx" - -#: inventory/forms.py:587 templates/organizations/organization_detail.html:8 +#: inventory/forms.py:913 templates/organizations/organization_detail.html:8 #: templates/organizations/organization_list.html:50 msgid "CRN" msgstr "رقم السجل التجاري" -#: inventory/forms.py:591 inventory/models.py:869 inventory/models.py:1147 -#: inventory/models.py:1232 inventory/models.py:1517 +#: inventory/forms.py:917 inventory/models.py:887 inventory/models.py:1170 +#: inventory/models.py:1255 inventory/models.py:1552 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" -#: inventory/forms.py:605 templates/organizations/organization_detail.html:9 +#: inventory/forms.py:931 templates/organizations/organization_detail.html:9 #: templates/organizations/organization_list.html:57 msgid "VRN" msgstr "الرقم الضريبي" -#: inventory/forms.py:609 inventory/models.py:874 inventory/models.py:1149 -#: inventory/models.py:1235 inventory/models.py:1520 +#: inventory/forms.py:935 inventory/models.py:892 inventory/models.py:1172 +#: inventory/models.py:1258 inventory/models.py:1555 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" -#: inventory/forms.py:617 +#: inventory/forms.py:943 msgid "VAT Registration Number must be 15 characters." msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا من 15 حرفًا." -#: inventory/forms.py:622 inventory/models.py:880 inventory/models.py:1122 -#: inventory/models.py:1152 inventory/models.py:1180 inventory/models.py:1528 +#: inventory/forms.py:948 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 #: templates/customers/view_customer.html:71 @@ -233,30 +235,30 @@ msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا msgid "Address" msgstr "العنوان" -#: inventory/forms.py:671 inventory/models.py:1726 +#: inventory/forms.py:1030 inventory/models.py:1761 msgid "cash" msgstr "نقداً" -#: inventory/forms.py:672 inventory/models.py:1727 +#: inventory/forms.py:1031 inventory/models.py:1762 msgid "credit" msgstr "دائن" -#: inventory/forms.py:673 inventory/models.py:1728 +#: inventory/forms.py:1032 inventory/models.py:1763 #: templates/inventory/car_detail.html:164 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" -#: inventory/forms.py:674 inventory/models.py:1729 +#: inventory/forms.py:1033 inventory/models.py:1764 msgid "debit" msgstr "مدين" -#: inventory/forms.py:675 inventory/models.py:1730 inventory/models.py:1813 +#: inventory/forms.py:1034 inventory/models.py:1765 inventory/models.py:1848 msgid "SADAD" msgstr "سداد" -#: inventory/forms.py:837 inventory/forms.py:854 inventory/models.py:1128 -#: inventory/models.py:1199 +#: inventory/forms.py:1346 inventory/forms.py:1363 inventory/models.py:1151 +#: inventory/models.py:1222 #: templates/crm/opportunities/opportunity_form.html:22 #: templates/sales/estimates/estimate_detail.html:153 #: templates/sales/estimates/estimate_list.html:15 @@ -272,7 +274,7 @@ msgstr "سداد" msgid "Customer" msgstr "العميل" -#: inventory/forms.py:843 inventory/forms.py:853 +#: inventory/forms.py:1352 inventory/forms.py:1362 #: templates/ledger/bills/bill_detail.html:104 #: templates/sales/estimates/sale_order_preview.html:229 #: templates/sales/invoices/invoice_detail.html:125 @@ -280,18 +282,18 @@ msgstr "العميل" msgid "Terms" msgstr "الشروط" -#: inventory/forms.py:848 inventory/forms.py:852 inventory/models.py:1101 +#: inventory/forms.py:1357 inventory/forms.py:1361 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:945 +#: inventory/forms.py:1542 msgid "Select Car Makes" msgstr "اختر ماركات السيارات" -#: inventory/models.py:127 inventory/models.py:422 inventory/models.py:500 -#: inventory/models.py:545 inventory/models.py:698 inventory/models.py:713 -#: inventory/models.py:757 inventory/models.py:1400 +#: inventory/models.py:143 inventory/models.py:436 inventory/models.py:514 +#: inventory/models.py:559 inventory/models.py:716 inventory/models.py:731 +#: inventory/models.py:775 inventory/models.py:1435 #: templates/crm/leads/lead_list.html:35 #: templates/crm/opportunities/opportunity_form.html:35 #: templates/dashboards/manager.html:53 @@ -299,59 +301,59 @@ msgstr "اختر ماركات السيارات" msgid "Car" msgstr "سيارة" -#: inventory/models.py:128 +#: inventory/models.py:144 msgid "Light Commercial" msgstr "مركبات تجارية خفيفة" -#: inventory/models.py:129 +#: inventory/models.py:145 msgid "Heavy-Duty Tractors" msgstr "جرارات ثقيلة" -#: inventory/models.py:130 +#: inventory/models.py:146 msgid "Trailers" msgstr "مقطورات" -#: inventory/models.py:131 +#: inventory/models.py:147 msgid "Medium Trucks" msgstr "شاحنات متوسطة" -#: inventory/models.py:132 +#: inventory/models.py:148 msgid "Buses" msgstr "حافلات" -#: inventory/models.py:133 +#: inventory/models.py:149 msgid "Motorcycles" msgstr "دراجات نارية" -#: inventory/models.py:134 +#: inventory/models.py:150 msgid "Buggy" msgstr "باجي" -#: inventory/models.py:135 +#: inventory/models.py:151 msgid "Moto ATV" msgstr "موتو ATV" -#: inventory/models.py:136 +#: inventory/models.py:152 msgid "Scooters" msgstr "دراجات سكوتر" -#: inventory/models.py:137 +#: inventory/models.py:153 msgid "Karting" msgstr "كارتينج" -#: inventory/models.py:138 +#: inventory/models.py:154 msgid "ATV" msgstr "مركبات ATV" -#: inventory/models.py:139 +#: inventory/models.py:155 msgid "Snowmobiles" msgstr "دراجات الثلج" -#: inventory/models.py:146 +#: inventory/models.py:162 msgid "logo" msgstr "الشعار" -#: inventory/models.py:285 templates/ledger/bills/bill_detail.html:191 +#: inventory/models.py:301 templates/ledger/bills/bill_detail.html:191 #: templates/sales/estimates/estimate_detail.html:82 #: templates/sales/estimates/estimate_detail.html:168 #: templates/sales/estimates/estimate_list.html:29 @@ -365,7 +367,7 @@ msgstr "الشعار" msgid "Draft" msgstr "مسودة" -#: inventory/models.py:286 templates/ledger/bills/bill_detail.html:195 +#: inventory/models.py:302 templates/ledger/bills/bill_detail.html:195 #: templates/sales/estimates/estimate_detail.html:86 #: templates/sales/estimates/estimate_detail.html:172 #: templates/sales/estimates/estimate_list.html:33 @@ -380,30 +382,30 @@ msgstr "مسودة" msgid "Approved" msgstr "تمت الموافقة" -#: inventory/models.py:287 inventory/models.py:1041 +#: inventory/models.py:303 inventory/models.py:1064 #: templates/crm/leads/lead_detail.html:55 #: templates/crm/leads/lead_list.html:123 test.txt:46 msgid "Pending" msgstr "قيد الانتظار" -#: inventory/models.py:288 +#: inventory/models.py:304 msgid "Accepted" msgstr "تم القبول" -#: inventory/models.py:289 templates/administration/staff_index.html:83 +#: inventory/models.py:305 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:290 +#: inventory/models.py:306 msgid "Reject" msgstr "رفض" -#: inventory/models.py:291 +#: inventory/models.py:307 msgid "Cancelled" msgstr "ملغى" -#: inventory/models.py:295 templates/dashboards/manager.html:104 +#: inventory/models.py:311 templates/dashboards/manager.html:104 #: templates/dashboards/manager.html:236 templates/dashboards/sales.html:21 #: templates/dashboards/sales.html:333 #: templates/inventory/car_inventory.html:99 @@ -413,7 +415,7 @@ msgstr "ملغى" msgid "Available" msgstr "متاح" -#: inventory/models.py:296 templates/dashboards/manager.html:110 +#: inventory/models.py:312 templates/dashboards/manager.html:110 #: templates/dashboards/manager.html:237 templates/dashboards/sales.html:27 #: templates/dashboards/sales.html:334 #: templates/inventory/car_inventory.html:101 @@ -422,14 +424,14 @@ msgstr "متاح" msgid "Sold" msgstr "تم البيع" -#: inventory/models.py:297 templates/dashboards/manager.html:128 +#: inventory/models.py:313 templates/dashboards/manager.html:128 #: templates/dashboards/manager.html:240 templates/dashboards/sales.html:45 #: templates/dashboards/sales.html:337 #: templates/inventory/car_inventory.html:103 msgid "Hold" msgstr "في الانتظار" -#: inventory/models.py:298 templates/dashboards/manager.html:134 +#: inventory/models.py:314 templates/dashboards/manager.html:134 #: templates/dashboards/manager.html:241 templates/dashboards/sales.html:51 #: templates/dashboards/sales.html:338 #: templates/inventory/car_inventory.html:107 @@ -437,7 +439,7 @@ msgstr "في الانتظار" msgid "Damaged" msgstr "تالف" -#: inventory/models.py:299 templates/dashboards/manager.html:116 +#: inventory/models.py:315 templates/dashboards/manager.html:116 #: templates/dashboards/manager.html:238 templates/dashboards/sales.html:33 #: templates/dashboards/sales.html:335 #: templates/inventory/car_inventory.html:105 @@ -446,7 +448,7 @@ msgstr "تالف" msgid "Reserved" msgstr "محجوزة" -#: inventory/models.py:300 templates/dashboards/manager.html:122 +#: inventory/models.py:316 templates/dashboards/manager.html:122 #: templates/dashboards/manager.html:239 templates/dashboards/sales.html:39 #: templates/dashboards/sales.html:336 #: templates/inventory/car_list_view.html:89 @@ -455,18 +457,18 @@ msgstr "محجوزة" msgid "Transfer" msgstr "نقل" -#: inventory/models.py:303 inventory/models.py:1040 +#: inventory/models.py:319 inventory/models.py:1063 #: templates/crm/leads/lead_detail.html:53 #: templates/crm/leads/lead_list.html:121 #: templates/inventory/car_inventory.html:68 test.txt:33 msgid "New" msgstr "جديد" -#: inventory/models.py:304 templates/inventory/car_inventory.html:70 +#: inventory/models.py:320 templates/inventory/car_inventory.html:70 msgid "Used" msgstr "مستعمل" -#: inventory/models.py:310 inventory/models.py:732 +#: inventory/models.py:326 inventory/models.py:750 #: templates/administration/manage_day_off.html:63 #: templates/administration/manage_service.html:33 #: templates/administration/user_profile.html:93 @@ -494,7 +496,7 @@ msgstr "مستعمل" msgid "Description" msgstr "الوصف" -#: inventory/models.py:312 inventory/tables.py:19 +#: inventory/models.py:328 inventory/tables.py:58 #: templates/administration/manage_service.html:55 #: templates/administration/service_list.html:25 #: templates/administration/user_profile.html:229 @@ -505,19 +507,19 @@ msgstr "الوصف" msgid "Price" msgstr "السعر" -#: inventory/models.py:314 +#: inventory/models.py:330 msgid "taxable" msgstr "خاضع للضريبة" -#: inventory/models.py:318 +#: inventory/models.py:334 msgid "Unit of Measurement" msgstr "وحدة القياس" -#: inventory/models.py:321 inventory/models.py:355 inventory/models.py:913 +#: inventory/models.py:337 inventory/models.py:371 inventory/models.py:931 msgid "Dealer" msgstr "المعرض" -#: inventory/models.py:326 templates/inventory/transfer_preview.html:229 +#: inventory/models.py:342 templates/inventory/transfer_preview.html:229 #: templates/ledger/bills/bill_detail.html:213 #: templates/ledger/ledger/ledger_detail.html:81 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:94 @@ -536,18 +538,18 @@ msgstr "المعرض" msgid "Item" msgstr "العنصر" -#: inventory/models.py:345 inventory/models.py:346 +#: inventory/models.py:361 inventory/models.py:362 #: templates/sales/estimates/estimate_detail.html:226 #: templates/sales/estimates/sale_order_preview.html:266 #: templates/sales/invoices/invoice_detail.html:273 msgid "Additional Services" msgstr "الخدمات الإضافية" -#: inventory/models.py:364 inventory/models.py:1536 +#: inventory/models.py:378 inventory/models.py:1571 #: templates/inventory/car_detail.html:100 #: templates/inventory/car_form.html:134 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:166 -#: templates/ledger/bills/bill_list.html:46 +#: templates/ledger/bills/bill_list.html:51 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:364 #: venv/lib/python3.11/site-packages/django_ledger/models/vendor.py:191 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:12 @@ -555,7 +557,7 @@ msgstr "الخدمات الإضافية" msgid "Vendor" msgstr "المورد" -#: inventory/models.py:372 inventory/models.py:1213 inventory/tables.py:13 +#: inventory/models.py:386 inventory/models.py:1236 inventory/tables.py:52 #: templates/inventory/car_list_view.html:64 #: templates/inventory/car_list_view.html:109 #: templates/inventory/cars_list_api.html:32 @@ -567,7 +569,7 @@ msgstr "المورد" msgid "Make" msgstr "الصانع" -#: inventory/models.py:380 inventory/models.py:1220 inventory/tables.py:14 +#: inventory/models.py:394 inventory/models.py:1243 inventory/tables.py:53 #: templates/inventory/car_list_view.html:73 #: templates/inventory/car_list_view.html:110 #: templates/inventory/cars_list_api.html:33 @@ -579,7 +581,7 @@ msgstr "الصانع" msgid "Model" msgstr "الموديل" -#: inventory/models.py:382 inventory/models.py:1223 inventory/tables.py:15 +#: inventory/models.py:396 inventory/models.py:1246 inventory/tables.py:54 #: templates/inventory/car_form.html:55 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:61 #: templates/inventory/car_inventory.html:54 @@ -593,22 +595,22 @@ msgstr "الموديل" msgid "Year" msgstr "السنة" -#: inventory/models.py:389 inventory/tables.py:16 +#: inventory/models.py:403 inventory/tables.py:55 #: templates/inventory/car_form.html:65 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:121 msgid "Series" msgstr "السلسلة" -#: inventory/models.py:397 inventory/tables.py:17 +#: inventory/models.py:411 inventory/tables.py:56 #: templates/inventory/car_list_view.html:112 #: templates/sales/sales_list.html:115 msgid "Trim" msgstr "الفئة" -#: inventory/models.py:403 inventory/models.py:1255 inventory/models.py:1408 -#: inventory/models.py:1459 inventory/tables.py:23 +#: inventory/models.py:417 inventory/models.py:1278 inventory/models.py:1443 +#: inventory/models.py:1494 inventory/tables.py:62 #: templates/crm/leads/lead_detail.html:51 -#: templates/crm/opportunities/opportunity_detail.html:91 +#: templates/crm/opportunities/opportunity_detail.html:88 #: templates/inventory/car_detail.html:83 #: templates/inventory/car_detail.html:368 #: templates/inventory/car_inventory.html:58 @@ -628,14 +630,14 @@ msgstr "الفئة" msgid "Status" msgstr "الحالة" -#: inventory/models.py:409 inventory/tables.py:11 +#: inventory/models.py:423 inventory/tables.py:50 #: templates/inventory/car_detail.html:87 templates/inventory/car_form.html:147 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:183 #: templates/inventory/car_list.html:177 msgid "Stock Type" msgstr "نوع المخزون" -#: inventory/models.py:411 inventory/models.py:518 +#: inventory/models.py:425 inventory/models.py:532 #: templates/inventory/car_detail.html:105 #: templates/inventory/car_form.html:185 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:232 @@ -643,41 +645,41 @@ msgstr "نوع المخزون" msgid "Remarks" msgstr "ملاحظات" -#: inventory/models.py:412 inventory/tables.py:18 +#: inventory/models.py:426 inventory/tables.py:57 #: templates/inventory/car_detail.html:91 templates/inventory/car_form.html:159 #: ⁨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:413 templates/inventory/car_detail.html:95 +#: inventory/models.py:427 templates/inventory/car_detail.html:95 #: templates/inventory/car_form.html:172 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:215 msgid "Receiving Date" msgstr "تاريخ الاستلام" -#: inventory/models.py:414 +#: inventory/models.py:428 msgid "Hash" msgstr "رمز" -#: inventory/models.py:423 templates/header.html:83 +#: inventory/models.py:437 templates/header.html:83 #: templates/sales/estimates/estimate_form.html:38 msgid "Cars" msgstr "السيارات" -#: inventory/models.py:506 +#: inventory/models.py:520 msgid "From Dealer" msgstr "من معرض" -#: inventory/models.py:512 +#: inventory/models.py:526 msgid "To Dealer" msgstr "الى معرض" -#: inventory/models.py:515 +#: inventory/models.py:529 msgid "Transfer Date" msgstr "تاريخ النقل" -#: inventory/models.py:517 templates/inventory/transfer_preview.html:230 +#: inventory/models.py:531 templates/inventory/transfer_preview.html:230 #: templates/ledger/bills/bill_detail.html:214 #: templates/ledger/ledger/ledger_detail.html:83 #: templates/sales/estimates/estimate_detail.html:194 @@ -695,161 +697,161 @@ msgstr "تاريخ النقل" msgid "Quantity" msgstr "الكمية" -#: inventory/models.py:526 inventory/models.py:735 inventory/models.py:1533 +#: inventory/models.py:540 inventory/models.py:753 inventory/models.py:1568 msgid "Created At" msgstr "تاريخ الإنشاء" -#: inventory/models.py:527 inventory/models.py:889 +#: inventory/models.py:541 inventory/models.py:907 msgid "Updated At" msgstr "تم التحديث" -#: inventory/models.py:533 +#: inventory/models.py:547 msgid "Car Transfer Log" msgstr "سجل نقل السيارة" -#: inventory/models.py:534 +#: inventory/models.py:548 msgid "Car Transfer Logs" msgstr "سجلات نقل السيارات" -#: inventory/models.py:551 templates/inventory/car_detail.html:311 +#: inventory/models.py:565 templates/inventory/car_detail.html:311 msgid "Reserved By" msgstr "محجوز بواسطة" -#: inventory/models.py:559 +#: inventory/models.py:573 msgid "Reserved At" msgstr "تاريخ الحجز" -#: inventory/models.py:560 +#: inventory/models.py:574 msgid "Reserved Until" msgstr "محجوز حتى" -#: inventory/models.py:570 templates/inventory/car_detail.html:451 +#: inventory/models.py:584 templates/inventory/car_detail.html:451 msgid "Car Reservation" msgstr "حجز السيارة" -#: inventory/models.py:571 +#: inventory/models.py:585 msgid "Car Reservations" msgstr "حجوزات السيارات" -#: inventory/models.py:581 templates/inventory/car_detail.html:201 +#: inventory/models.py:595 templates/inventory/car_detail.html:201 msgid "Cost Price" msgstr "سعر التكلفة" -#: inventory/models.py:584 templates/inventory/car_detail.html:206 +#: inventory/models.py:598 templates/inventory/car_detail.html:206 msgid "Selling Price" msgstr "سعر البيع" -#: inventory/models.py:589 templates/inventory/car_detail.html:210 +#: inventory/models.py:603 templates/inventory/car_detail.html:210 #: templates/sales/estimates/estimate_detail.html:220 #: templates/sales/invoices/invoice_detail.html:261 msgid "Discount Amount" msgstr "مبلغ الخصم" -#: inventory/models.py:645 inventory/models.py:646 +#: inventory/models.py:663 inventory/models.py:664 msgid "Car Financial Details" msgstr "تفاصيل المالية للسيارة" -#: inventory/models.py:652 inventory/models.py:665 +#: inventory/models.py:670 inventory/models.py:683 msgid "RGB" msgstr "آر جي بي" -#: inventory/models.py:655 inventory/models.py:656 +#: inventory/models.py:673 inventory/models.py:674 #: templates/inventory/add_colors.html:13 msgid "Exterior Colors" msgstr "الألوان الخارجية" -#: inventory/models.py:668 inventory/models.py:669 +#: inventory/models.py:686 inventory/models.py:687 #: templates/inventory/add_colors.html:32 msgid "Interior Colors" msgstr "الألوان الداخلية" -#: inventory/models.py:685 templates/inventory/car_list_view.html:113 +#: inventory/models.py:703 templates/inventory/car_list_view.html:113 msgid "Color" msgstr "اللون" -#: inventory/models.py:686 +#: inventory/models.py:704 msgid "Colors" msgstr "الألوان" -#: inventory/models.py:700 templates/inventory/car_detail.html:118 +#: inventory/models.py:718 templates/inventory/car_detail.html:118 msgid "Custom Number" msgstr "رقم البطاقة الجمركية" -#: inventory/models.py:704 templates/inventory/car_detail.html:127 +#: inventory/models.py:722 templates/inventory/car_detail.html:127 #: templates/inventory/car_detail.html:421 msgid "Custom Card" msgstr "البطاقة الجمركية" -#: inventory/models.py:705 +#: inventory/models.py:723 msgid "Custom Cards" msgstr "البطاقات الجمركية" -#: inventory/models.py:719 inventory/models.py:1416 +#: inventory/models.py:737 inventory/models.py:1451 msgid "Owner" msgstr "المالك" -#: inventory/models.py:720 +#: inventory/models.py:738 msgid "Dealer who owns the car." msgstr "التاجر الذي يمتلك السيارة." -#: inventory/models.py:726 inventory/models.py:1020 +#: inventory/models.py:744 inventory/models.py:1043 msgid "Showroom" msgstr "صالة العرض" -#: inventory/models.py:727 +#: inventory/models.py:745 msgid "Dealer where the car is displayed (can be the owner)." msgstr "التاجر الذي تُعرض السيارة في صالته (يمكن أن يكون المالك)." -#: inventory/models.py:733 +#: inventory/models.py:751 msgid "Optional description about the showroom placement." msgstr "وصف اختياري حول وضع السيارة في صالة العرض." -#: inventory/models.py:736 +#: inventory/models.py:754 msgid "Last Updated" msgstr "آخر تحديث" -#: inventory/models.py:739 +#: inventory/models.py:757 msgid "Car Location" msgstr "موقع السيارة" -#: inventory/models.py:740 +#: inventory/models.py:758 msgid "Car Locations" msgstr "مواقف السيارات" -#: inventory/models.py:759 +#: inventory/models.py:777 msgid "Plate Number" msgstr "رقم اللوحة" -#: inventory/models.py:760 +#: inventory/models.py:778 msgid "Text 1" msgstr "النص 1" -#: inventory/models.py:761 +#: inventory/models.py:779 msgid "Text 2" msgstr "النص 2" -#: inventory/models.py:762 +#: inventory/models.py:780 msgid "Text 3" msgstr "النص 3" -#: inventory/models.py:763 templates/inventory/car_detail.html:143 +#: inventory/models.py:781 templates/inventory/car_detail.html:143 msgid "Registration Date" msgstr "تاريخ التسجيل" -#: inventory/models.py:766 templates/inventory/car_detail.html:137 +#: inventory/models.py:784 templates/inventory/car_detail.html:137 #: templates/inventory/car_detail.html:149 #: templates/inventory/car_detail.html:436 msgid "Registration" msgstr "التسجيل" -#: inventory/models.py:767 +#: inventory/models.py:785 msgid "Registrations" msgstr "تسجيل السيارات" -#: inventory/models.py:775 inventory/models.py:976 inventory/models.py:1124 -#: inventory/models.py:1157 inventory/models.py:1260 inventory/models.py:1421 -#: inventory/models.py:1441 inventory/models.py:1463 inventory/models.py:1486 -#: inventory/models.py:1503 templates/crm/leads/lead_detail.html:100 +#: inventory/models.py:793 inventory/models.py:994 inventory/models.py:1147 +#: inventory/models.py:1180 inventory/models.py:1283 inventory/models.py:1456 +#: inventory/models.py:1476 inventory/models.py:1498 inventory/models.py:1521 +#: inventory/models.py:1538 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 @@ -859,26 +861,26 @@ msgstr "تسجيل السيارات" msgid "Created" msgstr "تاريخ الإنشاء" -#: inventory/models.py:776 inventory/models.py:977 inventory/models.py:1125 -#: inventory/models.py:1158 inventory/models.py:1262 inventory/models.py:1422 -#: inventory/models.py:1442 inventory/models.py:1464 inventory/models.py:1487 +#: inventory/models.py:794 inventory/models.py:995 inventory/models.py:1148 +#: inventory/models.py:1181 inventory/models.py:1285 inventory/models.py:1457 +#: inventory/models.py:1477 inventory/models.py:1499 inventory/models.py:1522 #: 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:883 inventory/models.py:1155 inventory/models.py:1531 +#: inventory/models.py:901 inventory/models.py:1178 inventory/models.py:1566 msgid "Logo" msgstr "الشعار" -#: inventory/models.py:888 +#: inventory/models.py:906 msgid "Joined At" msgstr "انضم في" -#: inventory/models.py:914 +#: inventory/models.py:932 msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:961 inventory/signals.py:142 templates/header.html:29 +#: inventory/models.py:979 inventory/signals.py:174 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 @@ -887,81 +889,81 @@ msgstr "المعارض" msgid "Inventory" msgstr "المخزن" -#: inventory/models.py:962 +#: inventory/models.py:980 msgid "Accountant" msgstr "محاسب" -#: inventory/models.py:963 templates/header.html:34 templates/header.html:157 +#: inventory/models.py:981 templates/header.html:34 templates/header.html:157 msgid "Sales" msgstr "المبيعات" -#: inventory/models.py:975 +#: inventory/models.py:993 msgid "Staff Type" msgstr "نوع الموظف" -#: inventory/models.py:1009 inventory/models.py:1010 -#: templates/crm/opportunities/opportunity_detail.html:234 +#: inventory/models.py:1032 inventory/models.py:1033 +#: templates/crm/opportunities/opportunity_detail.html:231 #: templates/crm/opportunities/opportunity_form.html:70 #: templates/dashboards/manager.html:17 templates/users/user_form.html:4 #: templates/users/user_list.html:5 msgid "Staff" msgstr "الموظفون" -#: inventory/models.py:1018 +#: inventory/models.py:1041 msgid "Referrals" msgstr "إحالات" -#: inventory/models.py:1019 inventory/models.py:1066 +#: inventory/models.py:1042 inventory/models.py:1089 msgid "WhatsApp" msgstr "واتساب" -#: inventory/models.py:1021 +#: inventory/models.py:1044 msgid "TikTok" msgstr "تيك توك" -#: inventory/models.py:1022 +#: inventory/models.py:1045 msgid "Instagram" msgstr "إنستغرام" -#: inventory/models.py:1023 +#: inventory/models.py:1046 msgid "X" msgstr "إكس" -#: inventory/models.py:1024 +#: inventory/models.py:1047 msgid "Facebook" msgstr "فيسبوك" -#: inventory/models.py:1025 +#: inventory/models.py:1048 msgid "Motory" msgstr "موتري" -#: inventory/models.py:1026 +#: inventory/models.py:1049 msgid "Influencers" msgstr "المؤثرون" -#: inventory/models.py:1027 +#: inventory/models.py:1050 msgid "Youtube" msgstr "يوتيوب" -#: inventory/models.py:1028 +#: inventory/models.py:1051 msgid "Campaign" msgstr "حملة" -#: inventory/models.py:1032 +#: inventory/models.py:1055 msgid "Walk In" msgstr "زيارة مباشرة" -#: inventory/models.py:1033 +#: inventory/models.py:1056 msgid "Toll Free" msgstr "رقم مجاني" -#: inventory/models.py:1034 +#: inventory/models.py:1057 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:113 msgid "Website" msgstr "الموقع الإلكتروني" -#: inventory/models.py:1035 inventory/models.py:1065 inventory/models.py:1114 -#: inventory/models.py:1196 inventory/models.py:1467 +#: inventory/models.py:1058 inventory/models.py:1088 inventory/models.py:1137 +#: inventory/models.py:1219 inventory/models.py:1502 #: templates/account/login.html:29 templates/account/login.html:31 #: templates/administration/display_appointment.html:49 #: templates/administration/manage_staff_personal_info.html:29 @@ -969,7 +971,7 @@ msgstr "الموقع الإلكتروني" #: templates/administration/user_profile.html:25 #: templates/appointment/appointment_client_information.html:45 #: templates/crm/leads/lead_detail.html:82 -#: templates/crm/opportunities/opportunity_detail.html:203 +#: templates/crm/opportunities/opportunity_detail.html:200 #: templates/customers/view_customer.html:74 #: templates/dealers/dealer_detail.html:78 #: templates/groups/group_detail.html:61 @@ -985,29 +987,29 @@ msgstr "الموقع الإلكتروني" msgid "Email" msgstr "البريد الإلكتروني" -#: inventory/models.py:1036 +#: inventory/models.py:1059 msgid "Form" msgstr "نموذج" -#: inventory/models.py:1042 templates/crm/leads/lead_detail.html:57 +#: inventory/models.py:1065 templates/crm/leads/lead_detail.html:57 #: templates/crm/leads/lead_list.html:125 msgid "In Progress" msgstr "قيد التنفيذ" -#: inventory/models.py:1043 templates/crm/leads/lead_detail.html:59 +#: inventory/models.py:1066 templates/crm/leads/lead_detail.html:59 #: templates/crm/leads/lead_list.html:127 msgid "Qualified" msgstr "مؤهل" -#: inventory/models.py:1044 templates/crm/leads/lead_list.html:129 +#: inventory/models.py:1067 templates/crm/leads/lead_list.html:129 msgid "Contacted" msgstr "تم الاتصال" -#: inventory/models.py:1045 +#: inventory/models.py:1068 msgid "Converted" msgstr "تم التحويل" -#: inventory/models.py:1046 templates/crm/leads/lead_detail.html:61 +#: inventory/models.py:1069 templates/crm/leads/lead_detail.html:61 #: templates/crm/leads/lead_list.html:131 #: templates/sales/estimates/estimate_detail.html:90 #: templates/sales/estimates/estimate_detail.html:176 @@ -1021,175 +1023,175 @@ msgstr "تم التحويل" msgid "Canceled" msgstr "ملغى" -#: inventory/models.py:1050 +#: inventory/models.py:1073 msgid "Mr" msgstr "السيد" -#: inventory/models.py:1051 +#: inventory/models.py:1074 msgid "Mrs" msgstr "السيدة" -#: inventory/models.py:1052 +#: inventory/models.py:1075 msgid "Ms" msgstr "الآنسة" -#: inventory/models.py:1053 +#: inventory/models.py:1076 msgid "Miss" msgstr "الآنسة" -#: inventory/models.py:1054 +#: inventory/models.py:1077 msgid "Dr" msgstr "الدكتور" -#: inventory/models.py:1055 +#: inventory/models.py:1078 msgid "Prof" msgstr "الأستاذ" -#: inventory/models.py:1056 +#: inventory/models.py:1079 msgid "Prince" msgstr "الأمير" -#: inventory/models.py:1057 +#: inventory/models.py:1080 msgid "Princess" msgstr "الأميرة" -#: inventory/models.py:1058 +#: inventory/models.py:1081 msgid "Company" msgstr "الشركة" -#: inventory/models.py:1059 +#: inventory/models.py:1082 msgid "N/A" msgstr "غير متوفر" -#: inventory/models.py:1063 +#: inventory/models.py:1086 msgid "Call" msgstr "مكالمة" -#: inventory/models.py:1064 +#: inventory/models.py:1087 msgid "SMS" msgstr "رسالة نصية" -#: inventory/models.py:1067 +#: inventory/models.py:1090 msgid "Visit" msgstr "زيارة" -#: inventory/models.py:1068 templates/inventory/car_form.html:23 +#: inventory/models.py:1091 templates/inventory/car_form.html:23 msgid "Add Car" msgstr "إضافة سيارة" -#: inventory/models.py:1069 +#: inventory/models.py:1092 msgid "Sale Car" msgstr "بيع سيارة" -#: inventory/models.py:1070 templates/inventory/reserve_car.html:6 +#: inventory/models.py:1093 templates/inventory/reserve_car.html:6 #: templates/inventory/reserve_car.html:9 msgid "Reserve Car" msgstr "حجز السيارة" -#: inventory/models.py:1071 templates/inventory/transfer_car.html:4 +#: inventory/models.py:1094 templates/inventory/transfer_car.html:4 msgid "Transfer Car" msgstr "نقل السيارة" -#: inventory/models.py:1072 +#: inventory/models.py:1095 msgid "Remove Car" msgstr "إزالة السيارة" -#: inventory/models.py:1073 -#: templates/crm/opportunities/opportunity_detail.html:19 +#: inventory/models.py:1096 +#: templates/crm/opportunities/opportunity_detail.html:18 #: templates/sales/estimates/estimate_form.html:5 #: templates/sales/estimates/estimate_form.html:32 msgid "Create Quotation" msgstr "إنشاء عرض" -#: inventory/models.py:1074 +#: inventory/models.py:1097 msgid "Cancel Quotation" msgstr "إلغاء العرض" -#: inventory/models.py:1075 +#: inventory/models.py:1098 msgid "Create Order" msgstr "إنشاء طلب" -#: inventory/models.py:1076 +#: inventory/models.py:1099 msgid "Cancel Order" msgstr "إلغاء الطلب" -#: inventory/models.py:1077 templates/sales/estimates/estimate_detail.html:108 +#: inventory/models.py:1100 templates/sales/estimates/estimate_detail.html:108 #: 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:1078 +#: inventory/models.py:1101 msgid "Cancel Invoice" msgstr "إلغاء الفاتورة" -#: inventory/models.py:1082 +#: inventory/models.py:1105 msgid "Prospect" msgstr "العميل المحتمل" -#: inventory/models.py:1083 +#: inventory/models.py:1106 msgid "Proposal" msgstr "عرض" -#: inventory/models.py:1084 +#: inventory/models.py:1107 msgid "Negotiation" msgstr "مفاوضات" -#: inventory/models.py:1085 +#: inventory/models.py:1108 msgid "Closed Won" msgstr "مغلقة - ناجحة" -#: inventory/models.py:1086 +#: inventory/models.py:1109 msgid "Closed Lost" msgstr "مغلقة - خسارة" -#: inventory/models.py:1090 +#: inventory/models.py:1113 msgid "Low" msgstr "منخفض" -#: inventory/models.py:1091 +#: inventory/models.py:1114 msgid "Medium" msgstr "متوسط" -#: inventory/models.py:1092 +#: inventory/models.py:1115 msgid "High" msgstr "مرتفع" -#: inventory/models.py:1103 inventory/models.py:1194 +#: inventory/models.py:1126 inventory/models.py:1217 #: templates/administration/manage_staff_personal_info.html:18 msgid "First Name" msgstr "الاسم الأول" -#: inventory/models.py:1105 +#: inventory/models.py:1128 msgid "Middle Name" msgstr "اسم الأب" -#: inventory/models.py:1107 inventory/models.py:1195 +#: inventory/models.py:1130 inventory/models.py:1218 #: templates/administration/manage_staff_personal_info.html:24 msgid "Last Name" msgstr "اسم العائلة" -#: inventory/models.py:1109 +#: inventory/models.py:1132 msgid "Male" msgstr "ذكر" -#: inventory/models.py:1109 +#: inventory/models.py:1132 msgid "Female" msgstr "أنثى" -#: inventory/models.py:1111 +#: inventory/models.py:1134 msgid "Gender" msgstr "الجنس" -#: inventory/models.py:1113 +#: inventory/models.py:1136 msgid "Date of Birth" msgstr "تاريخ الميلاد" -#: inventory/models.py:1116 templates/customers/customer_list.html:46 +#: inventory/models.py:1139 templates/customers/customer_list.html:46 msgid "National ID" msgstr "رقم الهوية الوطنية" -#: inventory/models.py:1129 templates/customers/customer_form.html:4 +#: inventory/models.py:1152 templates/customers/customer_form.html:4 #: templates/customers/customer_list.html:4 #: templates/customers/customer_list.html:5 #: templates/customers/customer_list.html:9 @@ -1197,99 +1199,99 @@ msgstr "رقم الهوية الوطنية" msgid "Customers" msgstr "العملاء" -#: inventory/models.py:1161 inventory/models.py:1199 +#: inventory/models.py:1184 inventory/models.py:1222 msgid "Organization" msgstr "شركة" -#: inventory/models.py:1162 templates/header.html:198 +#: inventory/models.py:1185 templates/header.html:198 #: templates/organizations/organization_list.html:5 #: templates/organizations/organization_list.html:8 #: templates/organizations/organization_list.html:14 msgid "Organizations" msgstr "الشركات" -#: inventory/models.py:1175 +#: inventory/models.py:1198 #: templates/representatives/representative_detail.html:8 #: templates/representatives/representative_list.html:18 msgid "ID Number" msgstr "رقم الهوية" -#: inventory/models.py:1185 +#: inventory/models.py:1208 msgid "Representative" msgstr "ممثل شركة" -#: inventory/models.py:1186 +#: inventory/models.py:1209 #: templates/representatives/representative_list.html:3 #: templates/representatives/representative_list.html:6 msgid "Representatives" msgstr "ممثلي الشركات" -#: inventory/models.py:1199 +#: inventory/models.py:1222 msgid "Lead Type" msgstr "نوع العميل المتوقع" -#: inventory/models.py:1226 templates/crm/leads/lead_list.html:65 +#: inventory/models.py:1249 templates/crm/leads/lead_list.html:65 msgid "Source" msgstr "المصدر" -#: inventory/models.py:1229 templates/crm/leads/lead_list.html:71 +#: inventory/models.py:1252 templates/crm/leads/lead_list.html:71 msgid "Channel" msgstr "القناة" -#: inventory/models.py:1237 +#: inventory/models.py:1260 msgid "address" msgstr "العنوان" -#: inventory/models.py:1244 +#: inventory/models.py:1267 msgid "Assigned" msgstr "مُعين" -#: inventory/models.py:1250 +#: inventory/models.py:1273 msgid "Priority" msgstr "الأولوية" -#: inventory/models.py:1265 +#: inventory/models.py:1288 msgid "Lead" msgstr "فرصة" -#: inventory/models.py:1266 templates/crm/leads/lead_list.html:3 +#: inventory/models.py:1289 templates/crm/leads/lead_list.html:3 #: templates/crm/leads/lead_list.html:7 templates/crm/leads/lead_send.html:5 #: templates/dashboards/manager.html:22 test.txt:21 msgid "Leads" msgstr "الفرص" -#: inventory/models.py:1369 +#: inventory/models.py:1404 msgid "Old Status" msgstr "الحالة القديمة" -#: inventory/models.py:1372 +#: inventory/models.py:1407 msgid "New Status" msgstr "الحالة الجديدة" -#: inventory/models.py:1377 +#: inventory/models.py:1412 msgid "Changed At" msgstr "تم التغيير في" -#: inventory/models.py:1380 +#: inventory/models.py:1415 msgid "Lead Status History" msgstr "تاريخ حالة العميل المحتمل" -#: inventory/models.py:1381 +#: inventory/models.py:1416 msgid "Lead Status Histories" msgstr "تواريخ حالات العملاء المحتملين" -#: inventory/models.py:1389 +#: inventory/models.py:1424 msgid "Probability must be between 0 and 100." msgstr "يجب أن تكون الاحتمالية بين 0 و 100." -#: inventory/models.py:1403 templates/crm/leads/lead_list.html:77 -#: templates/crm/opportunities/opportunity_detail.html:98 +#: inventory/models.py:1438 templates/crm/leads/lead_list.html:77 +#: templates/crm/opportunities/opportunity_detail.html:95 #: templates/crm/opportunities/opportunity_form.html:48 msgid "Stage" msgstr "المرحلة" -#: inventory/models.py:1420 -#: templates/crm/opportunities/opportunity_detail.html:267 +#: inventory/models.py:1455 +#: templates/crm/opportunities/opportunity_detail.html:264 #: templates/crm/opportunities/opportunity_form.html:79 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:100 #: templates/crm/opportunities/opportunity_list.html:94 @@ -1297,27 +1299,27 @@ msgstr "المرحلة" msgid "Closing Date" msgstr "تاريخ الإغلاق" -#: inventory/models.py:1423 +#: inventory/models.py:1458 msgid "Closed" msgstr "مغلقة" -#: inventory/models.py:1426 +#: inventory/models.py:1461 msgid "Opportunity" msgstr "فرصة" -#: inventory/models.py:1427 +#: inventory/models.py:1462 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:8 #: templates/crm/opportunities/opportunity_list.html:8 msgid "Opportunities" msgstr "الفرص" -#: inventory/models.py:1437 inventory/models.py:1445 +#: inventory/models.py:1472 inventory/models.py:1480 #: templates/account/snippets/already_logged_in.html:8 #: templates/crm/leads/lead_detail.html:226 msgid "Note" msgstr "ملاحظة" -#: inventory/models.py:1446 inventory/models.py:1482 +#: inventory/models.py:1481 inventory/models.py:1517 #: templates/crm/leads/lead_detail.html:137 #: templates/crm/leads/lead_detail.html:213 #: templates/crm/leads/lead_detail.html:387 @@ -1328,32 +1330,32 @@ msgstr "ملاحظة" msgid "Notes" msgstr "ملاحظات" -#: inventory/models.py:1455 +#: inventory/models.py:1490 msgid "From Email" msgstr "من البريد الإلكتروني" -#: inventory/models.py:1456 +#: inventory/models.py:1491 msgid "To Email" msgstr "إلى البريد الإلكتروني" -#: inventory/models.py:1457 +#: inventory/models.py:1492 msgid "Subject" msgstr "الموضوع" -#: inventory/models.py:1458 inventory/models.py:1501 +#: inventory/models.py:1493 inventory/models.py:1536 msgid "Message" msgstr "رسالة" -#: inventory/models.py:1468 templates/crm/leads/lead_detail.html:138 +#: inventory/models.py:1503 templates/crm/leads/lead_detail.html:138 #: templates/crm/leads/lead_detail.html:265 msgid "Emails" msgstr "رسائل البريد الإلكتروني" -#: inventory/models.py:1480 +#: inventory/models.py:1515 msgid "Activity Type" msgstr "نوع النشاط" -#: inventory/models.py:1490 templates/crm/leads/lead_detail.html:136 +#: inventory/models.py:1525 templates/crm/leads/lead_detail.html:136 #: templates/dealers/activity_log.html:11 #: templates/ledger/journal_entry/includes/card_journal_entry.html:32 #: templates/ledger/journal_entry/journal_entry_list.html:64 @@ -1365,82 +1367,82 @@ msgstr "نوع النشاط" msgid "Activity" msgstr "النشاط" -#: inventory/models.py:1491 templates/crm/leads/lead_detail.html:166 +#: inventory/models.py:1526 templates/crm/leads/lead_detail.html:166 #: templates/header.html:465 msgid "Activities" msgstr "الأنشطة" -#: inventory/models.py:1502 +#: inventory/models.py:1537 msgid "Is Read" msgstr "تمت قراءته" -#: inventory/models.py:1506 +#: inventory/models.py:1541 msgid "Notification" msgstr "إشعار" -#: inventory/models.py:1507 templates/crm/notifications_history.html:6 +#: inventory/models.py:1542 templates/crm/notifications_history.html:6 #: templates/notifications.html:13 msgid "Notifications" msgstr "الإشعارات" -#: inventory/models.py:1524 templates/vendors/view_vendor.html:49 +#: inventory/models.py:1559 templates/vendors/view_vendor.html:49 msgid "Contact Person" msgstr "الشخص المسؤول" -#: inventory/models.py:1537 templates/vendors/vendor_form.html:4 +#: inventory/models.py:1572 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:1736 inventory/models.py:1766 +#: inventory/models.py:1771 inventory/models.py:1801 msgid "amount" msgstr "المبلغ" -#: inventory/models.py:1739 +#: inventory/models.py:1774 msgid "method" msgstr "طريقة" -#: inventory/models.py:1742 +#: inventory/models.py:1777 msgid "reference number" msgstr "رقم المرجع" -#: inventory/models.py:1744 +#: inventory/models.py:1779 msgid "date" msgstr "التاريخ" -#: inventory/models.py:1754 +#: inventory/models.py:1789 msgid "payment" msgstr "الدفعة" -#: inventory/models.py:1755 templates/header.html:149 +#: inventory/models.py:1790 templates/header.html:149 msgid "payments" msgstr "المدفوعات" -#: inventory/models.py:1768 +#: inventory/models.py:1803 msgid "reason" msgstr "السبب" -#: inventory/models.py:1769 +#: inventory/models.py:1804 msgid "refund date" msgstr "تاريخ الاسترداد" -#: inventory/models.py:1772 +#: inventory/models.py:1807 msgid "refund" msgstr "استرداد" -#: inventory/models.py:1773 +#: inventory/models.py:1808 msgid "refunds" msgstr "استردادات" -#: inventory/models.py:1797 +#: inventory/models.py:1832 #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3160 #: 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:1803 templates/customers/view_customer.html:151 +#: inventory/models.py:1838 templates/customers/view_customer.html:151 #: templates/ledger/journal_entry/includes/card_invoice.html:10 #: templates/plans/create_order.html:29 #: templates/sales/invoices/invoice_create.html:5 @@ -1453,870 +1455,665 @@ msgstr "تقدير" msgid "Invoice" msgstr "فاتورة" -#: inventory/models.py:1808 inventory/signals.py:118 +#: inventory/models.py:1843 inventory/signals.py:150 #: templates/ledger/reports/dashboard.html:32 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:14 msgid "Cash" msgstr "نقداً" -#: inventory/models.py:1809 +#: inventory/models.py:1844 msgid "Finance" msgstr "تمويل" -#: inventory/models.py:1810 +#: inventory/models.py:1845 msgid "Lease" msgstr "تأجير" -#: inventory/models.py:1811 +#: inventory/models.py:1846 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:1139 msgid "Credit Card" msgstr "بطاقة ائتمان" -#: inventory/models.py:1812 +#: inventory/models.py:1847 msgid "Bank Transfer" msgstr "تحويل بنكي" -#: inventory/signals.py:130 templates/ledger/ledger/ledger_detail.html:38 +#: 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:155 +#: inventory/signals.py:187 msgid "Prepaid Expenses" msgstr "المصروفات المدفوعة مقدمًا" -#: inventory/signals.py:167 +#: inventory/signals.py:199 msgid "Employee Advance" msgstr "سلفة الموظف" -#: inventory/signals.py:178 +#: inventory/signals.py:210 msgid "VAT Receivable" msgstr "ضريبة القيمة المضافة المستحقة" -#: inventory/signals.py:188 +#: 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:200 +#: 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:212 +#: inventory/signals.py:244 msgid "Investments" msgstr "الاستثمارات" -#: inventory/signals.py:249 +#: 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:263 +#: 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:275 templates/ledger/ledger/ledger_detail.html:46 +#: 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:287 +#: 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:299 +#: inventory/signals.py:331 msgid "Long-Term Notes Payable" msgstr "أوراق الدفع طويلة الأجل" -#: inventory/signals.py:311 +#: inventory/signals.py:343 msgid "VAT Payable" msgstr "ضريبة القيمة المضافة المستحقة الدفع" -#: inventory/signals.py:321 +#: 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:331 +#: inventory/signals.py:363 msgid "Social Insurance Payable" msgstr "التأمينات الاجتماعية المستحقة الدفع" -#: inventory/signals.py:337 +#: inventory/signals.py:369 msgid "End of Service Benefits" msgstr "مكافأة نهاية الخدمة" -#: inventory/signals.py:344 +#: 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:352 +#: inventory/signals.py:384 msgid "Registered Capital" msgstr "رأس المال المسجل" -#: inventory/signals.py:355 +#: inventory/signals.py:387 msgid "Additional Paid-In Capital" msgstr "رأس المال المدفوع الإضافي" -#: inventory/signals.py:358 +#: inventory/signals.py:390 msgid "Opening Balances" msgstr "الأرصدة الافتتاحية" -#: inventory/signals.py:363 +#: inventory/signals.py:395 msgid "Statutory Reserve" msgstr "الاحتياطي النظامي" -#: inventory/signals.py:366 +#: inventory/signals.py:398 msgid "Foreign Currency Translation Reserve" msgstr "احتياطي تحويل العملات الأجنبية" -#: inventory/signals.py:373 +#: inventory/signals.py:405 msgid "Operating Profits and Losses" msgstr "الأرباح والخسائر التشغيلية" -#: inventory/signals.py:384 +#: inventory/signals.py:416 msgid "Retained Earnings (or Losses)" msgstr "الأرباح المحتجزة (أو الخسائر)" -#: inventory/signals.py:394 +#: inventory/signals.py:426 msgid "Sales Revenue" msgstr "إيرادات المبيعات" -#: inventory/signals.py:406 +#: 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:418 +#: inventory/signals.py:450 msgid "Unearned Income" msgstr "الدخل غير المكتسب" -#: inventory/signals.py:424 +#: inventory/signals.py:456 msgid "Sales/Service Revenue" msgstr "إيرادات المبيعات/الخدمات" -#: inventory/signals.py:427 +#: inventory/signals.py:459 msgid "Non-Operating Revenues" msgstr "الإيرادات غير التشغيلية" -#: inventory/signals.py:435 inventory/signals.py:616 +#: 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:448 +#: inventory/signals.py:480 msgid "Accrued Expenses" msgstr "المصروفات المستحقة" -#: inventory/signals.py:458 +#: inventory/signals.py:490 msgid "Accrued Salaries" msgstr "الرواتب المستحقة" -#: inventory/signals.py:468 +#: inventory/signals.py:500 msgid "Rent Expense" msgstr "مصروف الإيجار" -#: inventory/signals.py:480 +#: inventory/signals.py:512 msgid "Salaries and Administrative Fees" msgstr "الرواتب والرسوم الإدارية" -#: inventory/signals.py:490 +#: inventory/signals.py:522 msgid "Medical Insurance" msgstr "التأمين الطبي" -#: inventory/signals.py:500 +#: inventory/signals.py:532 msgid "Marketing and Advertising Expenses" msgstr "مصروفات التسويق والإعلان" -#: inventory/signals.py:510 +#: inventory/signals.py:542 msgid "Commissions and Incentives" msgstr "العمولات والحوافز" -#: inventory/signals.py:520 +#: inventory/signals.py:552 msgid "Travel Tickets" msgstr "تذاكر السفر" -#: inventory/signals.py:530 +#: inventory/signals.py:562 msgid "Social Insurance" msgstr "التأمينات الاجتماعية" -#: inventory/signals.py:540 +#: inventory/signals.py:572 msgid "Government Fees" msgstr "الرسوم الحكومية" -#: inventory/signals.py:550 +#: inventory/signals.py:582 msgid "Fees and Subscriptions" msgstr "الرسوم والاشتراكات" -#: inventory/signals.py:560 +#: inventory/signals.py:592 msgid "Office Services Expenses" msgstr "مصروفات خدمات المكتب" -#: inventory/signals.py:570 +#: inventory/signals.py:602 msgid "Office Supplies and Printing" msgstr "اللوازم المكتبية والطباعة" -#: inventory/signals.py:580 +#: inventory/signals.py:612 msgid "Hospitality Expenses" msgstr "مصروفات الضيافة" -#: inventory/signals.py:590 +#: inventory/signals.py:622 msgid "Bank Commissions" msgstr "عمولات البنوك" -#: inventory/signals.py:600 +#: 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:610 +#: inventory/signals.py:642 msgid "Transportation Expenses" msgstr "مصروفات النقل" -#: inventory/signals.py:617 +#: inventory/signals.py:649 msgid "Salaries and Wages" msgstr "الرواتب والأجور" -#: inventory/signals.py:618 +#: inventory/signals.py:650 msgid "Sales Commissions" msgstr "عمولات المبيعات" -#: inventory/signals.py:619 +#: inventory/signals.py:651 msgid "Shipping and Customs Clearance" msgstr "الشحن والتخليص الجمركي" -#: inventory/signals.py:622 +#: inventory/signals.py:654 msgid "Zakat" msgstr "الزكاة" -#: inventory/signals.py:623 +#: inventory/signals.py:655 msgid "Taxes" msgstr "الضرائب" -#: inventory/signals.py:624 +#: inventory/signals.py:656 msgid "Foreign Currency Translation" msgstr "تحويل العملات الأجنبية" -#: inventory/signals.py:625 +#: inventory/signals.py:657 msgid "Interest Expenses" msgstr "مصروفات الفائدة" -#: inventory/tables.py:20 templates/inventory/car_inventory.html:55 +#: inventory/tables.py:59 templates/inventory/car_inventory.html:55 msgid "Exterior Color" msgstr "اللون الخارجي" -#: inventory/tables.py:21 templates/inventory/car_inventory.html:56 +#: inventory/tables.py:60 templates/inventory/car_inventory.html:56 msgid "Interior Color" msgstr "اللون الداخلي" -#: inventory/tables.py:22 templates/inventory/car_inventory.html:59 +#: inventory/tables.py:61 templates/inventory/car_inventory.html:59 #: templates/inventory/car_list_view.html:114 msgid "Age" msgstr "العمر" -#: inventory/utils.py:54 +#: inventory/utils.py:78 msgid "success" msgstr "ناجحة" -#: inventory/utils.py:55 templates/inventory/car_form.html:373 +#: inventory/utils.py:79 templates/inventory/car_form.html:373 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:427 msgid "error" msgstr "خطأ" -#: inventory/utils.py:56 templates/account/login.html:48 +#: inventory/utils.py:80 templates/account/login.html:48 #: templates/account/password_change.html:28 msgid "Forgot Password?" msgstr "نسيت كلمة المرور؟" -#: inventory/utils.py:123 +#: inventory/utils.py:216 msgid "Car reserved successfully." msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:210 -#, fuzzy -#| msgid "Passwords do not match." -msgid "Passwords do not match" -msgstr "كلمات المرور غير متطابقة." - -#: inventory/views.py:233 inventory/views.py:1648 -#, fuzzy -#| msgid "User created successfully." +#: inventory/views.py:293 inventory/views.py:2642 msgid "User created successfully" msgstr "تم إنشاء المستخدم بنجاح." -#: inventory/views.py:495 -#, fuzzy -#| msgid "Car reserved successfully." +#: inventory/views.py:590 msgid "Car saved successfully" msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:526 +#: inventory/views.py:654 msgid "VIN number exists" msgstr "رقم الهيكل موجود مسبقاً" -#: inventory/views.py:719 templates/dashboards/manager.html:49 +#: inventory/views.py:885 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:937 -#, fuzzy -#| msgid "Car finance details saved successfully." +#: inventory/views.py:1212 msgid "Car finance details saved successfully" msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:961 -#, fuzzy -#| msgid "Car finance details updated successfully." -msgid "Car finance details updated successfully" +#: inventory/views.py:1258 +msgid "Car finance details updated successfully." msgstr "تم تحديث تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:991 -#, fuzzy -#| msgid "Car updated successfully." -msgid "Car updated successfully" +#: inventory/views.py:1310 +msgid "Car updated successfully." msgstr "تم تحديث السيارة بنجاح" -#: inventory/views.py:1005 -#, fuzzy -#| msgid "Car deleted successfully." +#: inventory/views.py:1342 msgid "Car deleted successfully" msgstr "تم حذف السيارة بنجاح." -#: inventory/views.py:1023 -#, fuzzy -#| msgid "Day off saved successfully." +#: inventory/views.py:1378 msgid "Location saved successfully" msgstr "تم حفظ يوم الإجازة بنجاح." -#: inventory/views.py:1043 -#, fuzzy -#| msgid "Email updated successfully!" +#: inventory/views.py:1416 msgid "Location updated successfully" msgstr "تم تحديث البريد الإلكتروني بنجاح!" -#: inventory/views.py:1098 -#, fuzzy -#| msgid "Car transfer canceled successfully." +#: inventory/views.py:1519 msgid "Car transfer canceled successfully" msgstr "تم إلغاء نقل السيارة بنجاح." -#: inventory/views.py:1115 -#, fuzzy -#| msgid "Car transfer approved successfully." +#: inventory/views.py:1536 msgid "Car transfer approved successfully" msgstr "تمت الموافقة على نقل السيارة بنجاح." -#: inventory/views.py:1127 -#, fuzzy -#| msgid "Car transfer rejected successfully." +#: inventory/views.py:1561 msgid "Car transfer rejected successfully" msgstr "تم رفض نقل السيارة بنجاح." -#: inventory/views.py:1139 -#, fuzzy -#| msgid "Car Transfer Completed successfully." -msgid "Car Transfer Completed successfully" +#: inventory/views.py:1573 +msgid "Car Transfer Completed successfully." msgstr "تم إكمال نقل السيارة بنجاح." -#: inventory/views.py:1172 -#, fuzzy -#| msgid "Custom Card added successfully." +#: inventory/views.py:1642 msgid "Custom Card added successfully" msgstr "تم إضافة البطاقة الجمركية بنجاح." -#: inventory/views.py:1192 -#, fuzzy -#| msgid "Registration added successfully." +#: inventory/views.py:1683 msgid "Registration added successfully" msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1201 -#, fuzzy -#| msgid "This car is already reserved." +#: inventory/views.py:1706 msgid "This car is already reserved" msgstr "هذه السيارة محجوزة بالفعل." -#: inventory/views.py:1221 -#, fuzzy -#| msgid "Reservation renewed successfully." +#: inventory/views.py:1744 msgid "Reservation renewed successfully" msgstr "تم تجديد الحجز بنجاح" -#: inventory/views.py:1229 -#, fuzzy -#| msgid "Reservation canceled successfully." +#: inventory/views.py:1752 msgid "Reservation canceled successfully" msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:1234 -#, fuzzy -#| msgid "Invalid action." +#: inventory/views.py:1757 msgid "Invalid action" msgstr "إجراء غير صالح." -#: inventory/views.py:1238 -#, fuzzy -#| msgid "Invalid request method." +#: inventory/views.py:1761 msgid "Invalid request method" msgstr "طريقة الطلب غير صالحة" -#: inventory/views.py:1279 -#, fuzzy -#| msgid "Dealer updated successfully." +#: inventory/views.py:1838 msgid "Dealer updated successfully" msgstr "تم تحديث المعرض بنجاح." -#: inventory/views.py:1286 templates/header.html:190 +#: inventory/views.py:1871 templates/header.html:190 msgid "customers" msgstr "العملاء" -#: inventory/views.py:1370 -#, fuzzy -#| msgid "Customer with this email already exists." -msgid "Customer with this email already exists" +#: inventory/views.py:2027 +msgid "Customer with this email already exists." msgstr "عميل بهذا البريد الإلكتروني موجود بالفعل." -#: inventory/views.py:1394 -#, fuzzy -#| msgid "Customer created successfully." +#: inventory/views.py:2052 msgid "Customer created successfully" msgstr "تم إنشاء العميل بنجاح." -#: inventory/views.py:1401 -#, fuzzy -#| msgid "Please correct the errors below." +#: inventory/views.py:2058 msgid "Please correct the errors below" msgstr "يرجى تصحيح الأخطاء أدناه." -#: inventory/views.py:1440 -#, fuzzy -#| msgid "Customer updated successfully." +#: inventory/views.py:2117 msgid "Customer updated successfully" msgstr "تم تحديث العميل بنجاح." -#: inventory/views.py:1461 -#, fuzzy -#| msgid "Customer deleted successfully." +#: inventory/views.py:2152 msgid "Customer deleted successfully" msgstr "تم حذف العميل بنجاح." -#: inventory/views.py:1493 -#, fuzzy -#| msgid "Vendor created successfully." +#: inventory/views.py:2244 msgid "Vendor created successfully" msgstr "تم إنشاء المورد بنجاح." -#: inventory/views.py:1511 -#, fuzzy -#| msgid "Vendor updated successfully." +#: inventory/views.py:2282 msgid "Vendor updated successfully" msgstr "تم تحديث المورد بنجاح" -#: inventory/views.py:1519 -#, fuzzy -#| msgid "Vendor deleted successfully." +#: inventory/views.py:2324 msgid "Vendor deleted successfully" msgstr "تم حذف المورد بنجاح." -#: inventory/views.py:1548 -#, fuzzy -#| msgid "Group created successfully." +#: inventory/views.py:2409 msgid "Group created successfully" msgstr "تم إنشاء المجموعة بنجاح." -#: inventory/views.py:1569 -#, fuzzy -#| msgid "Group updated successfully." +#: inventory/views.py:2451 msgid "Group updated successfully" msgstr "تم تحديث المجموعة بنجاح." -#: inventory/views.py:1583 -#, fuzzy -#| msgid "Group deleted successfully." +#: inventory/views.py:2478 msgid "Group deleted successfully" msgstr "تم حذف المجموعة بنجاح." -#: inventory/views.py:1595 -#, fuzzy -#| msgid "Permission added successfully." +#: inventory/views.py:2512 msgid "Permission added successfully" msgstr "تمت إضافة الإذن بنجاح." -#: inventory/views.py:1613 -#, fuzzy -#| msgid "Group added successfully." +#: inventory/views.py:2548 msgid "Group added successfully" msgstr "تمت إضافة المجموعة بنجاح." -#: inventory/views.py:1656 -#, fuzzy -#| msgid "" -#| "The user quota for staff members is not defined. Please contact support." +#: inventory/views.py:2650 msgid "The user quota for staff members is not defined. Please contact support" msgstr "لم يتم تحديد الحصة المخصصة لأعضاء الفريق. يرجى الاتصال بالدعم." -#: inventory/views.py:1661 -#, fuzzy -#| msgid "" -#| "You have reached the maximum number of staff users allowed for your plan." +#: inventory/views.py:2655 msgid "" "You have reached the maximum number of staff users allowed for your plan" msgstr "لقد وصلت إلى الحد الأقصى لعدد أعضاء الفريق المسموح به في خطتك." -#: inventory/views.py:1693 -#, fuzzy -#| msgid "User updated successfully." +#: inventory/views.py:2709 msgid "User updated successfully" msgstr "تم تحديث المستخدم بنجاح" -#: inventory/views.py:1731 -#, fuzzy -#| msgid "User deleted successfully." +#: inventory/views.py:2761 msgid "User deleted successfully" msgstr "تم حذف المستخدم بنجاح." -#: inventory/views.py:1760 -#, fuzzy -#| msgid "An organization with this email already exists." -msgid "An organization with this email already exists" +#: inventory/views.py:2842 +msgid "An organization with this email already exists." msgstr "توجد بالفعل منظمة بهذا البريد الإلكتروني." -#: inventory/views.py:1787 inventory/views.py:1826 -#, fuzzy -#| msgid "Organization created successfully." +#: inventory/views.py:2870 inventory/views.py:2927 msgid "Organization created successfully" msgstr "تم إنشاء المنظمة بنجاح." -#: inventory/views.py:1847 -#, fuzzy -#| msgid "Organization deleted successfully." +#: inventory/views.py:2961 msgid "Organization deleted successfully" msgstr "تم حذف المنظمة بنجاح." -#: inventory/views.py:1850 +#: inventory/views.py:2964 msgid "Unable to delete organization" msgstr "غير قادر على حذف المنظمة" -#: inventory/views.py:1877 -#, fuzzy -#| msgid "Service created successfully." +#: inventory/views.py:3046 msgid "Representative created successfully" msgstr "تم إنشاء الخدمة بنجاح." -#: inventory/views.py:1893 -#, fuzzy -#| msgid "Service updated successfully." +#: inventory/views.py:3088 msgid "Representative updated successfully" msgstr "تم تحديث الخدمة بنجاح." -#: inventory/views.py:1900 -#, fuzzy -#| msgid "Service deleted successfully!" +#: inventory/views.py:3112 msgid "Representative deleted successfully" msgstr "تم حذف الخدمة بنجاح!" -#: inventory/views.py:1923 -#, fuzzy -#| msgid "Organization created successfully." +#: inventory/views.py:3183 msgid "Bank account created successfully" msgstr "تم إنشاء المنظمة بنجاح." -#: inventory/views.py:1952 -#, fuzzy -#| msgid "Group updated successfully." +#: inventory/views.py:3254 msgid "Bank account updated successfully" msgstr "تم تحديث المجموعة بنجاح." -#: inventory/views.py:1969 -#, fuzzy -#| msgid "Note deleted successfully." +#: inventory/views.py:3290 msgid "Bank account deleted successfully" msgstr "تم حذف الملاحظة بنجاح." -#: inventory/views.py:1998 -#, fuzzy -#| msgid "Group created successfully." +#: inventory/views.py:3376 msgid "Account created successfully" msgstr "تم إنشاء المجموعة بنجاح." -#: inventory/views.py:2065 -#, fuzzy -#| msgid "Group updated successfully." +#: inventory/views.py:3491 msgid "Account updated successfully" msgstr "تم تحديث المجموعة بنجاح." -#: inventory/views.py:2081 -#, fuzzy -#| msgid "Note deleted successfully." +#: inventory/views.py:3519 msgid "Account deleted successfully" msgstr "تم حذف الملاحظة بنجاح." -#: inventory/views.py:2138 inventory/views.py:3489 +#: inventory/views.py:3631 inventory/views.py:6005 msgid "Items and Quantities are required" -msgstr "" +msgstr "المنتجات والكميات مطلوبة" -#: inventory/views.py:2145 inventory/views.py:2150 inventory/views.py:3495 -#: inventory/views.py:3500 -#, fuzzy -#| msgid "Slot duration must be greater than 0" +#: inventory/views.py:3638 inventory/views.py:3643 inventory/views.py:6011 +#: inventory/views.py:6016 msgid "Quantity must be greater than zero" msgstr "يجب أن تكون مدة الفاصل الزمني أكبر من 0." -#: inventory/views.py:2156 inventory/views.py:2161 +#: inventory/views.py:3652 inventory/views.py:3660 msgid "Quantity must be less than or equal to the number of cars in stock" -msgstr "" +msgstr "يجب أن تكون الكمية أقل من أو تساوي عدد السيارات المتوفرة في المخزون" -#: inventory/views.py:2243 -#, fuzzy -#| msgid "Organization created successfully." +#: inventory/views.py:3752 msgid "Quotation created successfully" -msgstr "تم إنشاء المنظمة بنجاح." +msgstr "تم إنشاء عرض السعر بنجاح" -#: inventory/views.py:2395 -#, fuzzy -#| msgid "Estimate is not ready for review" +#: inventory/views.py:4010 msgid "Quotation is not ready for review" msgstr "العرض غير جاهز للمراجعة." -#: inventory/views.py:2401 -#, fuzzy -#| msgid "Estimate is not ready for approval" +#: inventory/views.py:4016 msgid "Quotation is not ready for approval" msgstr "العرض غير جاهز للموافقة." -#: inventory/views.py:2404 -#, fuzzy -#| msgid "Estimate approved successfully." +#: inventory/views.py:4019 msgid "Quotation approved successfully" msgstr "تمت الموافقة على العرض بنجاح." -#: inventory/views.py:2407 -#, fuzzy -#| msgid "Estimate is not ready for rejection" +#: inventory/views.py:4022 msgid "Quotation is not ready for rejection" msgstr "العرض غير جاهز للرفض." -#: inventory/views.py:2410 inventory/views.py:2426 -#, fuzzy -#| msgid "Reservation canceled successfully." +#: inventory/views.py:4025 inventory/views.py:4043 msgid "Quotation canceled successfully" msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:2413 -#, fuzzy -#| msgid "Estimate is not ready for completion" +#: inventory/views.py:4028 msgid "Quotation is not ready for completion" msgstr "العرض غير جاهز للإكمال." -#: inventory/views.py:2417 -#, fuzzy -#| msgid "Estimate is not ready for cancelation" +#: inventory/views.py:4032 msgid "Quotation is not ready for cancellation" msgstr "العرض غير جاهز للإلغاء." -#: inventory/views.py:2428 -#, fuzzy -#| msgid "Notification marked as read." msgid "Quotation marked as " -msgstr "تم تمييز الإشعار كمقروء." +msgstr "تم وضع علامة على عرض السعر كـ" -#: inventory/views.py:2652 msgid "fully paid" -msgstr "" +msgstr "مدفوع بالكامل" -#: inventory/views.py:2655 -#, fuzzy -#| msgid "Amount Received" msgid "Amount exceeds due amount" -msgstr "المبلغ المستلم" +msgstr "المبلغ يتجاوز المبلغ المستحق" -#: inventory/views.py:2663 inventory/views.py:2727 -#, fuzzy -#| msgid "Vendor created successfully." msgid "Payment created successfully" -msgstr "تم إنشاء المورد بنجاح." +msgstr "تم إنشاء الدفعة بنجاح" -#: inventory/views.py:2731 msgid "Invoice is not fully paid, Payment cannot be marked as paid" -msgstr "" +msgstr "لم يتم دفع الفاتورة بالكامل، لا يمكن وضع علامة مدفوعة على الدفعة" -#: inventory/views.py:2856 -#, fuzzy -#| msgid "Vendor created successfully." msgid "Lead created successfully" -msgstr "تم إنشاء المورد بنجاح." +msgstr "تم إنشاء العميل المتوقع بنجاح" -#: inventory/views.py:2887 -#, fuzzy -#| msgid "Car deleted successfully." msgid "Lead deleted successfully" -msgstr "تم حذف السيارة بنجاح." +msgstr "تم حذف العميل المتوقع بنجاح" -#: inventory/views.py:2902 inventory/views.py:2918 -#, fuzzy -#| msgid "Note deleted successfully." msgid "Note added successfully" -msgstr "تم حذف الملاحظة بنجاح." +msgstr "تمت إضافة الملاحظة بنجاح" -#: inventory/views.py:2915 -#, fuzzy -#| msgid "This field is required." msgid "Notes field is required" -msgstr "هذا الحقل مطلوب." +msgstr "حقل الملاحظات مطلوب" -#: inventory/views.py:2935 -#, fuzzy -#| msgid "User updated successfully." msgid "Note updated successfully" -msgstr "تم تحديث المستخدم بنجاح" +msgstr "تم تحديث الملاحظة بنجاح" -#: inventory/views.py:2949 -#, fuzzy -#| msgid "Note deleted successfully." -msgid "Note deleted successfully" +msgid "Note deleted successfully." msgstr "تم حذف الملاحظة بنجاح." -#: inventory/views.py:2959 msgid "Lead is already converted to customer" -msgstr "" +msgstr "تم تحويل العميل المتوقع بالفعل إلى عميل" -#: inventory/views.py:2963 -#, fuzzy -#| msgid "Dealer updated successfully." msgid "Lead converted to customer successfully" -msgstr "تم تحديث المعرض بنجاح." +msgstr "تم تحويل العميل المتوقع إلى عميل بنجاح" -#: inventory/views.py:2970 -#, fuzzy -#| msgid "You do not have permission to access this appointment." msgid "You do not have permission to schedule lead" -msgstr "ليس لديك إذن للوصول إلى هذا الموعد." +msgstr "ليست لديك صلاحية جدولة هذا العميل المتوقع" -#: inventory/views.py:2985 -#, fuzzy -#| msgid "User not found" -msgid "Service not found" -msgstr "المستخدم غير موجود" - -#: inventory/views.py:3010 -#, fuzzy -#| msgid "Appointment updated successfully." msgid "Lead scheduled and appointment created successfully" -msgstr "تم تحديث الموعد بنجاح." +msgstr "تمت جدولة العميل المتوقع وإنشاء الموعد بنجاح" -#: inventory/views.py:3029 -#, fuzzy -#| msgid "Car transfer approved successfully." msgid "Lead transferred successfully" -msgstr "تمت الموافقة على نقل السيارة بنجاح." +msgstr "تم نقل العميل المتوقع بنجاح" -#: inventory/views.py:3043 -#, fuzzy -#| msgid "Email Draft successfully!" msgid "Email Draft successfully" -msgstr "تم حفظ مسودة البريد الإلكتروني بنجاح!" +msgstr "تم إنشاء مسودة البريد الإلكتروني بنجاح" -#: inventory/views.py:3068 inventory/views.py:3652 -#, fuzzy -#| msgid "Email sent successfully!" +#: inventory/views.py:5156 inventory/views.py:6216 msgid "Email sent successfully" msgstr "تم إرسال البريد الإلكتروني بنجاح!" -#: inventory/views.py:3194 -#, fuzzy -#| msgid "Opportunity deleted successfully." +#: inventory/views.py:5385 msgid "Opportunity deleted successfully" msgstr "تم حذف الفرصة بنجاح." -#: inventory/views.py:3207 -#, fuzzy -#| msgid "Opportunity deleted successfully." msgid "Opportunity status updated successfully" -msgstr "تم حذف الفرصة بنجاح." +msgstr "تم تحديث حالة الفرصة بنجاح" -#: inventory/views.py:3229 -#, fuzzy -#| msgid "Notification marked as read." msgid "Notification marked as read" -msgstr "تم تمييز الإشعار كمقروء." +msgstr "تم تعليم الإشعار كمقروء" -#: inventory/views.py:3247 -#, fuzzy -#| msgid "Service created successfully." msgid "Service created successfully" -msgstr "تم إنشاء الخدمة بنجاح." +msgstr "تم إنشاء الخدمة بنجاح" -#: inventory/views.py:3265 -#, fuzzy -#| msgid "Service updated successfully." msgid "Service updated successfully" -msgstr "تم تحديث الخدمة بنجاح." +msgstr "تم تحديث الخدمة بنجاح" -#: inventory/views.py:3388 inventory/views.py:3414 -#, fuzzy -#| msgid "Bill updated successfully." +#: inventory/views.py:5837 inventory/views.py:5889 msgid "Bill updated successfully" msgstr "تم تحديث الفاتورة بنجاح." -#: inventory/views.py:3443 -#, fuzzy -#| msgid "Bill is already approved." +#: inventory/views.py:5930 msgid "Bill is already approved" msgstr "تمت الموافقة على الفاتورة مسبقًا." -#: inventory/views.py:3447 -#, fuzzy -#| msgid "Bill marked as approved successfully." +#: inventory/views.py:5934 msgid "Bill marked as approved successfully" msgstr "تم تحديد الفاتورة كموافقة بنجاح." -#: inventory/views.py:3458 -#, fuzzy -#| msgid "Bill is already paid." +#: inventory/views.py:5961 msgid "Bill is already paid" msgstr "تم دفع الفاتورة مسبقًا." -#: inventory/views.py:3467 -#, fuzzy -#| msgid "Bill marked as paid successfully." +#: inventory/views.py:5970 msgid "Bill marked as paid successfully" msgstr "تم تحديد الفاتورة كمدفوعة بنجاح." -#: inventory/views.py:3469 -#, fuzzy -#| msgid "Amount paid is not equal to amount due." +#: inventory/views.py:5972 msgid "Amount paid is not equal to amount due" msgstr "المبلغ المدفوع لا يساوي المبلغ المستحق." -#: inventory/views.py:3561 -#, fuzzy -#| msgid "Bill updated successfully." +#: inventory/views.py:6077 msgid "Bill created successfully" msgstr "تم تحديث الفاتورة بنجاح." -#: inventory/views.py:3616 +#: inventory/views.py:6178 msgid "Quotation has no items" msgstr "عرض السعر لا يحتوي على أي عناصر" -#: inventory/views.py:3647 templates/customers/view_customer.html:129 +#: inventory/views.py:6211 templates/customers/view_customer.html:129 #: templates/sales/estimates/estimate_detail.html:79 #: templates/sales/estimates/estimate_send.html:5 #: templates/sales/estimates/sale_order_form.html:171 @@ -2324,57 +2121,35 @@ msgstr "عرض السعر لا يحتوي على أي عناصر" msgid "Quotation" msgstr "عرض سعر" -#: inventory/views.py:3828 +#: inventory/views.py:6725 #: 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:3896 inventory/views.py:3922 inventory/views.py:3971 -#, fuzzy -#| msgid "Not authorized." msgid "Unauthorized" -msgstr "غير مصرح." +msgstr "غير مصرح" -#: inventory/views.py:4024 -#, fuzzy -#| msgid "Settings" msgid "Settings updated" -msgstr "الإعدادات" +msgstr "تم تحديث الإعدادات" -#: inventory/views.py:4137 -#, fuzzy -#| msgid "Journal Entry Detail" msgid "Journal Entry created" -msgstr "تفاصيل إدخال اليومية" +msgstr "تم إنشاء قيد اليومية" -#: inventory/views.py:4163 -#, fuzzy -#| msgid "Journal Entry has not been posted." msgid "Journal Entry cannot be deleted" -msgstr "إدخال اليومية لم يتم نشره." +msgstr "لا يمكن حذف قيد اليومية" -#: inventory/views.py:4190 -#, fuzzy -#| msgid "Bill is already approved." msgid "Ledger is already locked" -msgstr "تمت الموافقة على الفاتورة مسبقًا." +msgstr "دفتر الأستاذ مقفل بالفعل" -#: inventory/views.py:4200 msgid "Ledger is already Unlocked" -msgstr "" +msgstr "دفتر الأستاذ غير مقفل بالفعل" -#: inventory/views.py:4214 -#, fuzzy -#| msgid "Bill is already approved." msgid "Ledger is already posted" -msgstr "تمت الموافقة على الفاتورة مسبقًا." +msgstr "دفتر الأستاذ تم ترحيله بالفعل" -#: inventory/views.py:4224 -#, fuzzy -#| msgid "Bill is already approved." msgid "Ledger is already Unposted" -msgstr "تمت الموافقة على الفاتورة مسبقًا." +msgstr "دفتر الأستاذ لم يتم ترحيله بعد" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:9 @@ -2425,7 +2200,7 @@ msgstr "تأكيد" #: templates/account/confirm_login_code..html:38 #: templates/crm/leads/lead_form.html:18 #: templates/crm/leads/schedule_lead.html:18 -#: templates/crm/opportunities/opportunity_detail.html:61 +#: templates/crm/opportunities/opportunity_detail.html:58 #: templates/crm/opportunities/opportunity_form.html:89 #: templates/dealers/dealer_form.html:22 templates/groups/group_form.html:35 #: templates/groups/group_permission_form.html:35 @@ -3289,7 +3064,7 @@ msgstr "لقد أرسلنا رمز التحقق إلى بريدك الإلكتر #: templates/administration/email_change_verification_code.html:22 #: templates/appointment/enter_verification_code.html:21 -#: templates/ledger/coa_accounts/account_list.html:44 +#: templates/ledger/coa_accounts/account_list.html:49 #: venv/lib/python3.11/site-packages/appointment/templates/administration/email_change_verification_code.html:22 #: venv/lib/python3.11/site-packages/appointment/templates/appointment/enter_verification_code.html:21 msgid "Code" @@ -3338,15 +3113,16 @@ msgstr "تأكيد الحذف" #: templates/administration/staff_index.html:79 #: templates/administration/user_profile.html:18 #: templates/crm/leads/lead_list.html:99 templates/crm/leads/lead_list.html:232 -#: templates/crm/opportunities/opportunity_detail.html:11 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:28 #: templates/customers/view_customer.html:23 #: templates/groups/group_detail.html:109 #: templates/ledger/bank_accounts/bank_account_detail.html:63 -#: templates/ledger/bills/bill_list.html:98 #: templates/ledger/coa_accounts/account_detail.html:118 -#: templates/ledger/coa_accounts/account_list.html:110 +#: templates/ledger/coa_accounts/account_list.html:115 +#: templates/ledger/journal_entry/journal_entry_delete.html:19 #: templates/ledger/journal_entry/journal_entry_list.html:116 +#: templates/ledger/ledger/ledger_delete.html:19 +#: templates/ledger/ledger/ledger_list.html:108 #: templates/modal/delete_modal.html:12 templates/modal/delete_modal.html:26 #: templates/modal/event_details_modal.html:33 #: templates/organizations/organization_detail.html:19 @@ -3354,7 +3130,7 @@ msgstr "تأكيد الحذف" #: templates/plans/billing_info_create_or_update.html:14 #: templates/representatives/representative_detail.html:16 #: templates/sales/estimates/estimate_detail.html:29 -#: templates/users/user_detail.html:90 templates/vendors/vendors_list.html:136 +#: templates/users/user_detail.html:90 templates/vendors/vendors_list.html:137 #: templates/vendors/view_vendor.html:67 #: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_index.html:325 #: venv/lib/python3.11/site-packages/appointment/templates/administration/user_profile.html:33 @@ -3446,7 +3222,7 @@ msgstr "" #: templates/administration/manage_staff_member.html:70 #: templates/crm/leads/lead_form.html:15 #: templates/crm/leads/schedule_lead.html:15 -#: templates/crm/opportunities/opportunity_detail.html:62 +#: templates/crm/opportunities/opportunity_detail.html:59 #: templates/crm/opportunities/opportunity_form.html:88 #: templates/customers/customer_form.html:29 #: templates/dealers/assign_car_makes.html:23 @@ -3528,7 +3304,7 @@ msgstr "قائمة الخدمات" #: templates/items/service/service_list.html:24 #: templates/ledger/bank_accounts/bank_account_list.html:21 #: templates/ledger/journal_entry/journal_entry_list.html:69 -#: templates/ledger/ledger/ledger_list.html:21 +#: templates/ledger/ledger/ledger_list.html:25 #: templates/modal/confirm_modal.html:21 #: venv/lib/python3.11/site-packages/appointment/templates/administration/service_list.html:31 #: venv/lib/python3.11/site-packages/appointment/templates/administration/user_profile.html:106 @@ -4209,9 +3985,8 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا العميل الم #: templates/ledger/bills/bill_detail.html:24 #: templates/ledger/bills/bill_detail.html:49 #: templates/ledger/bills/bill_detail.html:121 -#: templates/ledger/bills/bill_list.html:69 #: templates/ledger/coa_accounts/account_detail.html:22 -#: templates/ledger/coa_accounts/account_list.html:78 +#: templates/ledger/coa_accounts/account_list.html:83 #: templates/ledger/journal_entry/journal_entry_list.html:25 #: templates/organizations/organization_list.html:96 #: templates/sales/estimates/estimate_detail.html:37 @@ -4236,9 +4011,8 @@ msgstr "نعم" #: templates/ledger/bills/bill_detail.html:20 #: templates/ledger/bills/bill_detail.html:45 #: templates/ledger/bills/bill_detail.html:123 -#: templates/ledger/bills/bill_list.html:68 #: templates/ledger/coa_accounts/account_detail.html:18 -#: templates/ledger/coa_accounts/account_list.html:75 +#: templates/ledger/coa_accounts/account_list.html:80 #: templates/ledger/journal_entry/journal_entry_list.html:24 #: templates/organizations/organization_list.html:95 #: templates/sales/estimates/estimate_detail.html:63 @@ -4254,7 +4028,6 @@ msgid "No" msgstr "لا" #: templates/crm/leads/lead_list.html:223 -#: 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 @@ -4266,7 +4039,7 @@ msgstr "لا" #: templates/organizations/organization_detail.html:14 #: templates/organizations/organization_list.html:124 #: templates/representatives/representative_detail.html:13 -#: templates/users/user_detail.html:84 templates/vendors/vendors_list.html:134 +#: templates/users/user_detail.html:84 templates/vendors/vendors_list.html:135 #: templates/vendors/view_vendor.html:64 #: venv/lib/python3.11/site-packages/appointment/templates/modal/event_details_modal.html:25 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/includes/card_customer.html:28 @@ -4317,37 +4090,37 @@ msgstr "وضع علامة مقروء" msgid "Opportunity details" msgstr "تفاصيل الفرصة" -#: templates/crm/opportunities/opportunity_detail.html:17 +#: templates/crm/opportunities/opportunity_detail.html:16 #: templates/sales/estimates/estimate_detail.html:4 msgid "View Quotation" msgstr "مشاهدة عرض السعر" -#: templates/crm/opportunities/opportunity_detail.html:86 +#: templates/crm/opportunities/opportunity_detail.html:83 msgid "Other Information" msgstr "معلومات أخرى" -#: templates/crm/opportunities/opportunity_detail.html:92 +#: templates/crm/opportunities/opportunity_detail.html:89 msgid "Update Status" msgstr "تحديث الحالة" -#: templates/crm/opportunities/opportunity_detail.html:99 +#: templates/crm/opportunities/opportunity_detail.html:96 msgid "Update Stage" msgstr "تحديث المرحلة" -#: templates/crm/opportunities/opportunity_detail.html:117 +#: templates/crm/opportunities/opportunity_detail.html:114 msgid "Quotation Amount" msgstr "مبلغ عرض السعر" -#: templates/crm/opportunities/opportunity_detail.html:172 +#: templates/crm/opportunities/opportunity_detail.html:169 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:14 msgid "Estimated Revenue" msgstr "الإيرادات المقدرة" -#: templates/crm/opportunities/opportunity_detail.html:222 +#: templates/crm/opportunities/opportunity_detail.html:219 msgid "Contact Name" msgstr "اسم جهة الاتصال" -#: templates/crm/opportunities/opportunity_detail.html:255 +#: templates/crm/opportunities/opportunity_detail.html:252 msgid "Create Date" msgstr "تاريخ الإنشاء" @@ -4377,8 +4150,8 @@ msgstr "إضافة فرصة" #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:55 #: templates/crm/opportunities/opportunity_list.html:49 #: templates/inventory/car_list_view.html:167 -#: templates/ledger/bills/bill_list.html:97 -#: templates/ledger/coa_accounts/account_list.html:108 +#: templates/ledger/bills/bill_list.html:80 +#: templates/ledger/coa_accounts/account_list.html:113 #: templates/ledger/journal_entry/includes/card_invoice.html:33 #: templates/ledger/journal_entry/journal_entry_list.html:113 #: templates/sales/invoices/invoice_list.html:61 @@ -4422,7 +4195,7 @@ msgstr "إضافة عميل" #: templates/customers/customer_list.html:56 #: templates/dealers/dealer_detail.html:104 #: templates/ledger/coa_accounts/account_detail.html:55 -#: templates/ledger/coa_accounts/account_list.html:46 +#: templates/ledger/coa_accounts/account_list.html:51 #: templates/plans/current.html:21 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:433 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:27 @@ -4910,6 +4683,8 @@ msgid "Bad Request" msgstr "طلب غير صالح" #: templates/errors/400.html:46 +#: templates/ledger/journal_entry/journal_entry_delete.html:18 +#: templates/ledger/ledger/ledger_delete.html:18 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_delete.html:27 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_void.html:24 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/closing_entry_delete.html:18 @@ -5523,7 +5298,7 @@ msgstr "حدث خطأ أثناء فك تشفير الهيكل" #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:45 #: templates/inventory/car_list_view.html:93 -#: templates/partials/search_box.html:4 +#: templates/inventory/scan_vin.html:15 templates/partials/search_box.html:4 #: templates/representatives/representative_list.html:9 #: templates/representatives/representative_list.html:10 #: templates/sales/sales_list.html:50 @@ -5552,8 +5327,8 @@ msgid "Add a Car" msgstr "إضافة سيارة" #: templates/inventory/car_list.html:70 -#: templates/ledger/bills/bill_list.html:22 -#: templates/ledger/coa_accounts/account_list.html:19 +#: templates/ledger/bills/bill_list.html:27 +#: templates/ledger/coa_accounts/account_list.html:25 msgid "search" msgstr "بحث" @@ -5691,6 +5466,21 @@ msgstr "وقت بدء الحجز" msgid "Reservation End Time" msgstr "وقت انتهاء الحجز" +msgid "Scan Vehicle Code" +msgstr "مسح رمز السيارة" + +msgid "VIN / Barcode / QR Code" +msgstr "رمز VIN / الباركود / رمز QR" + +msgid "Start Scanning" +msgstr "ابدأ المسح" + +msgid "Switch Camera" +msgstr "تبديل الكاميرا" + +msgid "Scan" +msgstr "مسح" + #: templates/inventory/transfer_car.html:6 msgid "transfer car" msgstr "نقل السيارة" @@ -5904,7 +5694,7 @@ msgstr "رقم الحساب" #: templates/ledger/bank_accounts/bank_account_list.html:39 #: templates/ledger/journal_entry/journal_entry_list.html:124 -#: templates/ledger/ledger/ledger_list.html:67 +#: templates/ledger/ledger/ledger_list.html:116 msgid "No Bank Accounts Found" msgstr "لم يتم العثور على أي حساب بنكي." @@ -5976,7 +5766,7 @@ msgid "Due Amount" msgstr "المبلغ الكلي" #: templates/ledger/bills/bill_detail.html:158 -#: templates/ledger/bills/bill_list.html:40 +#: templates/ledger/bills/bill_list.html:45 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:356 msgid "Bill Number" msgstr "رقم الفاتورة" @@ -6042,34 +5832,31 @@ msgstr "إنشاء فاتورة" msgid "Bills" msgstr "الفواتير" -#: templates/ledger/bills/bill_list.html:23 +#: templates/ledger/bills/bill_list.html:17 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:217 +msgid "New Bill" +msgstr "فاتورة جديدة" + +#: templates/ledger/bills/bill_list.html:28 msgid "Search bills..." msgstr "ابحث عن الفواتير ..." -#: templates/ledger/bills/bill_list.html:43 +#: templates/ledger/bills/bill_list.html:48 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:360 msgid "Bill Status" msgstr "حالة الفاتورة" -#: templates/ledger/bills/bill_list.html:58 -msgid "Delete Bill" -msgstr "حذف الفاتورة" - -#: templates/ledger/bills/bill_list.html:65 -msgid "Are you sure you want to delete this Bill?" -msgstr "هل أنت متأكد أنك تريد حذف هذه الفاتورة؟" - -#: templates/ledger/bills/bill_list.html:106 +#: templates/ledger/bills/bill_list.html:88 msgid "No bill found." msgstr "لم يتم العثور على فاتورة." -#: templates/ledger/bills/bill_list.html:115 -#: templates/ledger/coa_accounts/account_list.html:127 +#: templates/ledger/bills/bill_list.html:97 +#: templates/ledger/coa_accounts/account_list.html:132 msgid "to" msgstr "إلى" -#: templates/ledger/bills/bill_list.html:115 -#: templates/ledger/coa_accounts/account_list.html:127 +#: templates/ledger/bills/bill_list.html:97 +#: templates/ledger/coa_accounts/account_list.html:132 msgid "Items of" msgstr "عناصر" @@ -6082,7 +5869,7 @@ msgid "Are you sure you want to delete this account?" msgstr "هل أنت متأكد أنك تريد حذف هذا الحساب؟" #: templates/ledger/coa_accounts/account_detail.html:39 -#: templates/ledger/coa_accounts/account_list.html:43 +#: templates/ledger/coa_accounts/account_list.html:48 #: templates/ledger/journal_entry/journal_entry_transactions.html:19 #: templates/ledger/reports/tags/balance_sheet_statement.html:14 #: templates/sales/payments/payment_details.html:16 @@ -6108,7 +5895,7 @@ msgstr "رمز الحساب" #: templates/ledger/coa_accounts/account_detail.html:48 #: templates/ledger/coa_accounts/account_detail.html:50 -#: templates/ledger/coa_accounts/account_list.html:45 +#: templates/ledger/coa_accounts/account_list.html:50 #: templates/ledger/reports/tags/balance_sheet_statement.html:18 #: templates/ledger/reports/tags/income_statement.html:13 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:26 @@ -6119,7 +5906,7 @@ msgstr "نوع الرصيد" #: templates/ledger/coa_accounts/account_detail.html:48 #: templates/ledger/coa_accounts/account_detail.html:65 -#: templates/ledger/coa_accounts/account_list.html:92 +#: templates/ledger/coa_accounts/account_list.html:97 #: templates/ledger/journal_entry/journal_entry_transactions.html:21 #: templates/sales/payments/payment_details.html:18 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:423 @@ -6133,7 +5920,7 @@ msgstr "مدين" #: templates/ledger/coa_accounts/account_detail.html:50 #: templates/ledger/coa_accounts/account_detail.html:66 -#: templates/ledger/coa_accounts/account_list.html:94 +#: templates/ledger/coa_accounts/account_list.html:99 #: templates/ledger/journal_entry/journal_entry_transactions.html:22 #: templates/sales/payments/payment_details.html:19 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:422 @@ -6164,25 +5951,29 @@ msgstr "إضافة حساب" #: templates/ledger/coa_accounts/account_list.html:3 #: templates/ledger/coa_accounts/account_list.html:6 -#: templates/ledger/coa_accounts/account_list.html:14 +#: templates/ledger/coa_accounts/account_list.html:20 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:444 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:54 msgid "Accounts" msgstr "الحسابات" -#: templates/ledger/coa_accounts/account_list.html:25 +#: templates/ledger/coa_accounts/account_list.html:17 +msgid "New Account" +msgstr "حساب جديد" + +#: templates/ledger/coa_accounts/account_list.html:31 msgid "Search accounts..." msgstr "ابحث عن الحسابات..." -#: templates/ledger/coa_accounts/account_list.html:64 +#: templates/ledger/coa_accounts/account_list.html:69 msgid "Delete Account" msgstr "حذف الحساب" -#: templates/ledger/coa_accounts/account_list.html:71 +#: templates/ledger/coa_accounts/account_list.html:76 msgid "Are you sure you want to delete this Account?" msgstr "هل أنت متأكد أنك تريد حذف هذا الحساب؟" -#: templates/ledger/coa_accounts/account_list.html:119 +#: templates/ledger/coa_accounts/account_list.html:124 msgid "No account found." msgstr "لم يتم العثور على حساب." @@ -6321,7 +6112,7 @@ msgstr "تفاصيل إدخال اليومية" #: templates/ledger/journal_entry/includes/card_journal_entry.html:17 #: templates/ledger/journal_entry/journal_entry_list.html:66 -#: templates/ledger/ledger/ledger_list.html:19 +#: templates/ledger/ledger/ledger_list.html:23 #: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:391 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:18 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:12 @@ -6331,7 +6122,7 @@ msgstr "تم النشر" #: templates/ledger/journal_entry/includes/card_journal_entry.html:24 #: templates/ledger/journal_entry/journal_entry_list.html:67 -#: templates/ledger/ledger/ledger_list.html:20 +#: templates/ledger/ledger/ledger_list.html:24 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:432 #: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:392 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:28 @@ -6343,6 +6134,7 @@ msgstr "مقفل" #: templates/ledger/journal_entry/includes/card_journal_entry.html:42 #: templates/ledger/journal_entry/journal_entry_txs.html:71 +#: templates/ledger/ledger/ledger_list.html:82 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:113 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:43 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html:64 @@ -6353,6 +6145,7 @@ msgstr "قفل" #: templates/ledger/journal_entry/includes/card_journal_entry.html:46 #: templates/ledger/journal_entry/journal_entry_txs.html:77 +#: templates/ledger/ledger/ledger_list.html:86 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:47 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html:70 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:109 @@ -6361,6 +6154,7 @@ msgstr "إلغاء القفل" #: templates/ledger/journal_entry/includes/card_journal_entry.html:50 #: templates/ledger/journal_entry/journal_entry_txs.html:83 +#: templates/ledger/ledger/ledger_list.html:90 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/includes/card_closing_entry.html:28 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:51 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html:76 @@ -6371,6 +6165,7 @@ msgstr "نشر" #: templates/ledger/journal_entry/includes/card_journal_entry.html:54 #: templates/ledger/journal_entry/journal_entry_txs.html:89 +#: templates/ledger/ledger/ledger_list.html:94 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/includes/card_closing_entry.html:46 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:55 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html:82 @@ -6388,8 +6183,8 @@ msgstr "إنشاء إدخال يومية" #: templates/ledger/journal_entry/journal_entry_list.html:4 #: templates/ledger/journal_entry/journal_entry_list.html:36 -#: templates/ledger/ledger/ledger_list.html:17 -#: templates/ledger/ledger/ledger_list.html:42 +#: templates/ledger/ledger/ledger_list.html:21 +#: templates/ledger/ledger/ledger_list.html:46 #: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:408 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/je_list.html:19 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:10 @@ -6510,6 +6305,7 @@ msgstr "معاملات الفاتورة" #: templates/ledger/ledger/ledger_form.html:5 #: templates/ledger/ledger/ledger_form.html:9 +#: templates/ledger/ledger/ledger_list.html:14 #: venv/lib/python3.11/site-packages/django_ledger/views/ledger.py:95 msgid "Create Ledger" msgstr "إنشاء دفتر الأستاذ" @@ -6522,15 +6318,25 @@ msgstr "إنشاء دفتر الأستاذ" msgid "Ledger" msgstr "دفتر الأستاذ" -#: templates/ledger/ledger/ledger_list.html:16 +#: templates/ledger/ledger/ledger_list.html:20 #: venv/lib/python3.11/site-packages/django_ledger/models/ledger.py:195 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:9 msgid "Ledger Name" msgstr "اسم دفتر الأستاذ" -#: templates/ledger/ledger/ledger_list.html:18 -msgid "Earliest Date" -msgstr "أقدم تاريخ" +#: templates/ledger/ledger/ledger_list.html:22 +msgid "Created Date" +msgstr "تاريخ الإنشاء" + +#: templates/ledger/ledger/ledger_list.html:99 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:122 +msgid "Hide" +msgstr "إخفاء" + +#: templates/ledger/ledger/ledger_list.html:103 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:126 +msgid "UnHide" +msgstr "إلغاء الإخفاء" #: templates/ledger/reports/balance_sheet.html:38 #: templates/ledger/reports/cash_flow_statement.html:33 @@ -12353,10 +12159,6 @@ msgstr "وضع علامة ملغاة" msgid "This bill is" msgstr "هذه الفاتورة هي" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:217 -msgid "New Bill" -msgstr "فاتورة جديدة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:19 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:10 msgid "PO Qty" @@ -12847,14 +12649,6 @@ msgstr "أقدم تاريخ إدخال اليومية" msgid "Locked by Closing Entry" msgstr "مقفل بإدخال الإغلاق" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:122 -msgid "Hide" -msgstr "إخفاء" - -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:126 -msgid "UnHide" -msgstr "إلغاء الإخفاء" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/product_list.html:12 msgid "Products List" msgstr "قائمة المنتجات" @@ -13346,18 +13140,3 @@ msgstr "س" #: venv/lib/python3.11/site-packages/sympy/solvers/simplex.py:565 msgid "y" msgstr "ص" - -#~ msgid "Estimate canceled successfully." -#~ msgstr "تم إلغاء العرض بنجاح." - -#~ msgid "UnLock All" -#~ msgstr "إلغاء القفل للجميع" - -#~ msgid "UnPost All" -#~ msgstr "إلغاء نشر الجميع" - -#~ msgid "Because" -#~ msgstr "لأن" - -#~ msgid "Needs" -#~ msgstr "يحتاج" diff --git a/templates/inventory/scan_vin.html b/templates/inventory/scan_vin.html index 14001cbf..77881b2c 100644 --- a/templates/inventory/scan_vin.html +++ b/templates/inventory/scan_vin.html @@ -1,48 +1,73 @@ -
-
-
- - - +{% extends 'base.html' %} +{% load static i18n%} + +{% block content %} +
+

{{ _("Scan Vehicle Code")}}

+ + +
+ + +
+
+ +
- - - - - - \ No newline at end of file + +{% endblock content %} \ No newline at end of file