From c3a31d71e1e11864bf36dcdf0004968c7d82f4a4 Mon Sep 17 00:00:00 2001 From: Marwan Alwali Date: Mon, 5 May 2025 18:00:04 +0300 Subject: [PATCH] update --- inventory/forms.py | 58 +-- inventory/models.py | 356 ++------------ locale/ar/LC_MESSAGES/django.mo | Bin 232383 -> 235053 bytes locale/ar/LC_MESSAGES/django.po | 843 ++++++++++++++++++-------------- 4 files changed, 541 insertions(+), 716 deletions(-) diff --git a/inventory/forms.py b/inventory/forms.py index ffa13050..e747d52e 100644 --- a/inventory/forms.py +++ b/inventory/forms.py @@ -96,12 +96,12 @@ class StaffForm(forms.ModelForm): """ email = forms.EmailField( required=True, - label="Email", + label=_("Email"), widget=forms.EmailInput(attrs={"class": "form-control form-control-sm"}), ) service_offered = forms.ModelMultipleChoiceField( - label="Services Offered", + label=_("Services Offered"), widget=forms.CheckboxSelectMultiple(attrs={"class": "form-check-input"}), queryset=Service.objects.all(), required=False,) @@ -837,7 +837,7 @@ class WizardForm3(forms.Form): max_length=10, error_messages={ "required": _("This field is required."), - "max_length": "Commercial Registration Number must be 10 characters.", + "max_length": _("Commercial Registration Number must be 10 characters"), }, ) @@ -890,11 +890,11 @@ class ItemForm(forms.Form): """ item = forms.ModelChoiceField( queryset=ledger_models.ItemModel.objects.all(), - label="Item", + label=_("Item"), required=True, validators=[MinLengthValidator(5)], ) - quantity = forms.DecimalField(label="Quantity", required=True) + quantity = forms.DecimalField(label=_("Quantity"), required=True) class PaymentForm(forms.Form): @@ -919,13 +919,13 @@ class PaymentForm(forms.Form): """ invoice = forms.ModelChoiceField( queryset=ledger_models.InvoiceModel.objects.all(), - label="Invoice", + label=_("Invoice"), required=False, ) bill = forms.ModelChoiceField( - queryset=ledger_models.BillModel.objects.all(), label="Bill", required=False + queryset=ledger_models.BillModel.objects.all(), label=_("Bill"), required=False ) - amount = forms.DecimalField(label="Amount", required=True) + amount = forms.DecimalField(label=_("Amount"), required=True) payment_method = forms.ChoiceField( choices=[ ("cash", _("cash")), @@ -934,11 +934,11 @@ class PaymentForm(forms.Form): ("debit", _("debit")), ("SADAD", _("SADAD")), ], - label="Payment Method", + label=_("Payment Method"), required=True, ) payment_date = forms.DateField( - label="Payment Date", widget=DateInput(attrs={"type": "date"}), required=True + label=_("Payment Date"), widget=DateInput(attrs={"type": "date"}), required=True ) def clean_amount(self): @@ -947,13 +947,13 @@ class PaymentForm(forms.Form): model = invoice if invoice else bill amount = self.cleaned_data["amount"] if amount + model.amount_paid > model.amount_due: - raise forms.ValidationError("Payment amount is greater than amount due") + raise forms.ValidationError(_("Payment amount is greater than amount due")) if amount <= 0: - raise forms.ValidationError("Payment amount must be greater than 0") + raise forms.ValidationError(_("Payment amount must be greater than 0")) if model.is_paid(): - raise forms.ValidationError("Invoice is already paid") + raise forms.ValidationError(_("Invoice is already paid")) if amount > model.amount_due: - raise forms.ValidationError("Payment amount is greater than amount due") + raise forms.ValidationError(_("Payment amount is greater than amount due")) return amount @@ -979,7 +979,7 @@ class EmailForm(forms.Form): subject = forms.CharField(max_length=255) message = forms.CharField(widget=forms.Textarea) from_email = forms.EmailField() - to_email = forms.EmailField(label="To") + to_email = forms.EmailField(label=_("To")) class LeadForm(forms.ModelForm): @@ -999,7 +999,7 @@ class LeadForm(forms.ModelForm): :type id_car_model: ModelChoiceField """ id_car_make = forms.ModelChoiceField( - label="Make", + label=_("Make"), queryset=CarMake.objects.filter(is_sa_import=True), widget=forms.Select( attrs={ @@ -1016,7 +1016,7 @@ class LeadForm(forms.ModelForm): required=True, ) id_car_model = forms.ModelChoiceField( - label="Model", + label=_("Model"), queryset=CarModel.objects.none(), widget=forms.Select(attrs={"class": "form-control form-control-sm"}), required=True, @@ -1291,7 +1291,7 @@ class OpportunityStatusForm(forms.Form): :type stage: ChoiceField """ status = forms.ChoiceField( - label="Status", + label=_("Status"), choices=Status.choices, widget=forms.Select( attrs={ @@ -1307,7 +1307,7 @@ class OpportunityStatusForm(forms.Form): required=True, ) stage = forms.ChoiceField( - label="Stage", + label=_("Stage"), choices=Stage.choices, widget=forms.Select( attrs={ @@ -1496,7 +1496,7 @@ class CreditCardField(forms.CharField): # Validate using Luhn algorithm if not Luhn.check_luhn(cleaned_value): - raise forms.ValidationError("Please enter a valid credit card number") + raise forms.ValidationError(_("Please enter a valid credit card number")) # Add basic card type detection (optional) if cleaned_value.startswith('4'): @@ -1526,17 +1526,17 @@ class ExpiryDateField(forms.CharField): # Validate month if month < 1 or month > 12: - raise forms.ValidationError("Please enter a valid month (01-12)") + raise forms.ValidationError(_("Please enter a valid month (01-12)")) # Validate not expired current_year = datetime.now().year current_month = datetime.now().month if year < current_year or (year == current_year and month < current_month): - raise forms.ValidationError("This card appears to be expired") + raise forms.ValidationError(_("This card appears to be expired")) except (ValueError, AttributeError): - raise forms.ValidationError("Please enter a valid expiry date in MM/YY format") + raise forms.ValidationError(_("Please enter a valid expiry date in MM/YY format")) return value @@ -1545,9 +1545,9 @@ class CVVField(forms.CharField): value = super().clean(value) if value: if not value.isdigit(): - raise forms.ValidationError("CVV must contain only digits") + raise forms.ValidationError(_("CVV must contain only digits")) if len(value) not in (3, 4): - raise forms.ValidationError("CVV must be 3 or 4 digits") + raise forms.ValidationError(_("CVV must be 3 or 4 digits")) return value class PaymentPlanForm(forms.Form): @@ -1606,7 +1606,7 @@ class PaymentPlanForm(forms.Form): 'id': 'card-number', }), - label="Card Number" + label=_("Card Number") ) expiry_date = ExpiryDateField( @@ -1617,7 +1617,7 @@ class PaymentPlanForm(forms.Form): 'id': 'expiry', }), - label="Expiration Date" + label=_("Expiration Date") ) cvv = CVVField( @@ -1628,7 +1628,7 @@ class PaymentPlanForm(forms.Form): 'id': 'cvv', }), - label="Security Code (CVV)" + label=_("Security Code (CVV)") ) card_name = forms.CharField( @@ -1640,7 +1640,7 @@ class PaymentPlanForm(forms.Form): 'id': 'card-name', }), - label="Name on Card" + label=_("Name on Card") ) # Terms and conditions diff --git a/inventory/models.py b/inventory/models.py index d86b18e8..fda827e1 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -171,7 +171,7 @@ class CarMake(models.Model, LocalizedNameMixin): return self.name class Meta: - verbose_name = "Make" + verbose_name = _("Make") class CarModel(models.Model, LocalizedNameMixin): @@ -184,7 +184,7 @@ class CarModel(models.Model, LocalizedNameMixin): return self.name class Meta: - verbose_name = "Model" + verbose_name = _("Model") class CarSerie(models.Model, LocalizedNameMixin): @@ -202,7 +202,7 @@ class CarSerie(models.Model, LocalizedNameMixin): return self.name class Meta: - verbose_name = "Series" + verbose_name = _("Series") class CarTrim(models.Model, LocalizedNameMixin): @@ -219,7 +219,7 @@ class CarTrim(models.Model, LocalizedNameMixin): return self.name class Meta: - verbose_name = "Trim" + verbose_name = _("Trim") class CarEquipment(models.Model, LocalizedNameMixin): @@ -233,7 +233,7 @@ class CarEquipment(models.Model, LocalizedNameMixin): return self.name class Meta: - verbose_name = "Equipment" + verbose_name = _("Equipment") class CarSpecification(models.Model, LocalizedNameMixin): @@ -248,7 +248,7 @@ class CarSpecification(models.Model, LocalizedNameMixin): return self.name class Meta: - verbose_name = "Specification" + verbose_name = _("Specification") class CarSpecificationValue(models.Model): @@ -264,7 +264,7 @@ class CarSpecificationValue(models.Model): return f"{self.id_car_specification.name}: {self.value} {self.unit}" class Meta: - verbose_name = "Specification Value" + verbose_name = _("Specification Value") class CarOption(models.Model, LocalizedNameMixin): @@ -279,7 +279,7 @@ class CarOption(models.Model, LocalizedNameMixin): return self.name class Meta: - verbose_name = "Option" + verbose_name = _("Option") class CarOptionValue(models.Model): @@ -298,7 +298,7 @@ class CarOptionValue(models.Model): return f"{self.id_car_option.name}: {self.value} {self.unit}" class Meta: - verbose_name = "Option Value" + verbose_name = _("Option Value") class CarTransferStatusChoices(models.TextChoices): @@ -480,7 +480,7 @@ class Car(models.Model): self.cancel_reservation() self.status = CarStatusChoices.SOLD self.save() - Activity.objects.create(dealer=dealer,content_object=self, notes="Car Sold",created_by=request.user,activity_type=ActionChoices.SALE_CAR) + Activity.objects.create(dealer=dealer,content_object=self, notes=_("Car Sold"),created_by=request.user,activity_type=ActionChoices.SALE_CAR) def cancel_reservation(self): if self.reservations.exists(): @@ -801,89 +801,6 @@ class TimestampedModel(models.Model): abstract = True -# class Subscription(models.Model): -# plan = models.ForeignKey( -# "SubscriptionPlan", on_delete=models.CASCADE, related_name="subscriptions" -# ) -# start_date = models.DateField(help_text="Date when the subscription starts") -# end_date = models.DateField(help_text="Date when the subscription ends") -# users = models.ManyToManyField( -# User, through="SubscriptionUser" -# ) # many-to-many relationship with User model -# is_active = models.BooleanField(default=True) -# billing_cycle = models.CharField( -# max_length=10, -# choices=[("monthly", "Monthly"), ("annual", "Annual")], -# default="monthly", -# help_text="Billing cycle for the subscription", -# ) -# last_payment_date = models.DateField( -# null=True, blank=True, help_text="Date of the last payment made" -# ) -# next_payment_date = models.DateField( -# null=True, blank=True, help_text="Date of the next payment due" -# ) -# -# class Meta: -# verbose_name = _("Subscription") -# verbose_name_plural = _("Subscriptions") -# -# def __str__(self): -# return self.plan.name -# -# @property -# def total_subscribers(self): -# return self.users.count() -# -# -# class SubscriptionUser(models.Model): -# subscription = models.ForeignKey(Subscription, on_delete=models.CASCADE) -# user = models.ForeignKey(User, on_delete=models.CASCADE) -# -# class Meta: -# verbose_name = _("Subscription User") -# verbose_name_plural = _("Subscription Users") -# -# def __str__(self): -# return f"{self.subscription} - {self.user}" -# -# -# class SubscriptionPlan(models.Model): -# name = models.CharField( -# max_length=100, unique=True, help_text=_("Name of the subscription plan") -# ) -# description = models.TextField() -# price = models.DecimalField(max_digits=10, decimal_places=2) -# max_users = models.PositiveIntegerField( -# help_text=_("Maximum number of users allowed"), default=1 -# ) -# max_inventory_size = models.PositiveIntegerField( -# help_text=_("Maximum number of cars in inventory"), default=50 -# ) -# support_level = models.CharField( -# max_length=50, -# choices=[ -# ("basic", "Basic Support"), -# ("priority", "Priority Support"), -# ("dedicated", "Dedicated Support"), -# ], -# default="basic", -# help_text="Level of support provided", -# ) -# custom_features = models.JSONField( -# blank=True, null=True, help_text=_("Additional features specific to this plan") -# ) -# created_at = models.DateTimeField(auto_now_add=True) -# updated_at = models.DateTimeField(auto_now=True) -# -# class Meta: -# verbose_name = _("Subscription Plan") -# verbose_name_plural = _("Subscription Plans") -# -# def __str__(self): -# return f"{self.name} - {self.price}" - - class Dealer(models.Model, LocalizedNameMixin): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="dealer") crn = models.CharField( @@ -966,31 +883,6 @@ class Dealer(models.Model, LocalizedNameMixin): def __str__(self): return self.name - # @property - # def get_sub_dealers(self): - # if self.dealer_type == "OWNER": - # return self.sub_dealers.all() - # return None - # - # @property - # def is_parent(self): - # return self.dealer_type == "OWNER" - # @property - # def get_root_dealer(self): - # return self.parent_dealer if self.parent_dealer else self - - - -############################## -# Additional staff types for later - -# COORDINATOR = "coordinator", _("Coordinator") -# RECEPTIONIST = "receptionist", _("Receptionist") -# AGENT = "agent", _("Agent") -# TECHNICIAN = "technician", _("Technician") -# DRIVER = "driver", _("Driver") -############################## - class StaffTypes(models.TextChoices): # MANAGER = "manager", _("Manager") @@ -1372,22 +1264,22 @@ class Lead(models.Model): class Schedule(models.Model): PURPOSE_CHOICES = [ - ('Product Demo', 'Product Demo'), - ('Follow-Up Call', 'Follow-Up Call'), - ('Contract Discussion', 'Contract Discussion'), - ('Sales Meeting', 'Sales Meeting'), - ('Support Call', 'Support Call'), - ('Other', 'Other'), + ('product_demo', _('Product Demo')), + ('follow_up_call', _('Follow-Up Call')), + ('contract_discussion', _('Contract Discussion')), + ('sales_meeting', _('Sales Meeting')), + ('support_call', _('Support Call')), + ('other', _('Other')), ] ScheduledType = [ - ('Call', 'Call'), - ('Meeting', 'Meeting'), - ('Email', 'Email'), + ('call', _('Call')), + ('meeting', _('Meeting')), + ('email', _('Email')), ] ScheduleStatusChoices = [ - ('Scheduled', 'Scheduled'), - ('Completed', 'Completed'), - ('Canceled', 'Canceled'), + ('scheduled', _('Scheduled')), + ('completed', _('Completed')), + ('canceled', _('Canceled')), ] lead = models.ForeignKey(Lead, on_delete=models.CASCADE, related_name='schedules') customer = models.ForeignKey(CustomerModel, on_delete=models.CASCADE, related_name='schedules',null=True,blank=True) @@ -1593,198 +1485,15 @@ class Vendor(models.Model, LocalizedNameMixin): return self.name -# class SaleQuotation(models.Model): -# quotation_number = models.CharField(max_length=10, unique=True) -# -# STATUS_CHOICES = [ -# ("Draft", _("Draft")), -# ("Approved", _("Approved")), -# ("In Review", _("In Review")), -# ("Paid", _("Paid")), -# ] -# dealer = models.ForeignKey( -# Dealer, on_delete=models.CASCADE, related_name="sales", null=True -# ) -# customer = models.ForeignKey( -# Customer, -# on_delete=models.CASCADE, -# related_name="quotations", -# verbose_name=_("Customer"), -# ) -# amount = models.DecimalField( -# decimal_places=2, -# default=Decimal("0.00"), -# max_digits=10, -# verbose_name=_("Amount"), -# ) -# remarks = models.TextField(blank=True, null=True, verbose_name=_("Remarks")) -# is_approved = models.BooleanField(default=False) -# status = models.CharField( -# max_length=10, choices=STATUS_CHOICES, default="Draft", verbose_name=_("Status") -# ) -# created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Created At")) -# updated_at = models.DateTimeField(auto_now=True, verbose_name=_("Updated At")) -# -# posted = models.BooleanField(default=False) -# payment_id = models.CharField( -# max_length=255, null=True, blank=True, verbose_name=_("Payment ID") -# ) -# is_paid = models.BooleanField(default=False) -# date_draft = models.DateTimeField( -# null=True, blank=True, verbose_name=_("Draft Date") -# ) -# date_in_review = models.DateTimeField( -# null=True, blank=True, verbose_name=_("In Review Date") -# ) -# date_approved = models.DateTimeField( -# null=True, blank=True, verbose_name=_("Approved Date") -# ) -# date_paid = models.DateTimeField(null=True, blank=True, verbose_name=_("Paid Date")) -# date_void = models.DateTimeField(null=True, blank=True, verbose_name=_("Void Date")) -# date_canceled = models.DateTimeField( -# null=True, blank=True, verbose_name=_("Canceled Date") -# ) -# -# @property -# def total_quantity(self): -# total_quantity = self.quotation_cars.aggregate(total=Sum("quantity"))["total"] -# return total_quantity or 0 -# -# @property -# def total(self): -# total = self.quotation_cars.aggregate( -# total_price=Sum(F("car__finances__selling_price") * F("quantity")) -# ) -# if not total: -# return 0 -# return total["total_price"] -# -# @property -# def total_vat(self): -# if self.total: -# return float(self.total) * 0.15 + float(self.total) -# return 0 - - # def confirm(self): - # """Confirm the quotation and lock financial details.""" - # if self.status != "DRAFT": - # raise ValueError(_("Only draft quotations can be confirmed.")) - # self.status = "CONFIRMED" - # self.save() - - # def cancel(self): - # """Cancel the quotation.""" - # if self.status == "CONFIRMED": - # raise ValueError(_("Cannot cancel a confirmed quotation.")) - # self.status = "CANCELED" - # self.save() - - # def __str__(self): - # return f"Quotation #{self.quotation_number} for {self.customer}" - # - # @property - # def display_quotation_number(self): - # return f"QN-{self.quotation_number}" - # - # def save(self, *args, **kwargs): - # if not self.quotation_number: - # self.quotation_number = str(next(self._get_quotation_number())).zfill(6) - # super().save(*args, **kwargs) - # - # @classmethod - # def _get_quotation_number(cls): - # last_quotation = cls.objects.all().order_by("id").last() - # if last_quotation: - # last_quotation_number = int(last_quotation.quotation_number) - # else: - # last_quotation_number = 0 - # return itertools.count(last_quotation_number + 1) - -# -# class SaleQuotationCar(models.Model): -# quotation = models.ForeignKey( -# SaleQuotation, -# on_delete=models.CASCADE, -# related_name="quotation_cars", -# verbose_name=_("Quotation"), -# ) -# car = models.ForeignKey(Car, on_delete=models.CASCADE, verbose_name=_("Car")) -# quantity = models.PositiveIntegerField(default=1, verbose_name=_("Quantity")) -# -# @property -# def finance(self): -# return self.car.finances -# -# @property -# def financial_details(self): -# """ -# Retrieve financial details dynamically from CarFinance. -# Returns a dictionary with all financial fields for better access. -# """ -# car_finance = self.car.finances -# if not car_finance: -# return None -# -# return { -# "selling_price": car_finance.selling_price, -# "administration_fee": car_finance.administration_fee, -# "transportation_fee": car_finance.transportation_fee, -# "custom_card_fee": car_finance.custom_card_fee, -# "registration_fee": car_finance.registration_fee, -# "vat_amount": car_finance.vat_amount, -# # "total_amount": car_finance.total, -# } -# -# @property -# def total(self): -# """ -# Calculate total price dynamically based on quantity and selling price. -# """ -# if not self.car.finances: -# return Decimal("0.00") -# return self.car.finances.selling_price * self.quantity -# -# @property -# def total_vat(self): -# """ -# Calculate total price dynamically based on quantity and selling price. -# """ -# if not self.car.finances: -# return Decimal("0.00") -# price = float(self.car.finances.selling_price * self.quantity) -# return (price * 0.15) + price -# -# def __str__(self): -# return f"{self.car} - Quotation #{self.quotation.id}" -# -# -# class SalesOrder(models.Model): -# quotation = models.OneToOneField( -# SaleQuotation, -# on_delete=models.CASCADE, -# related_name="sales_order", -# verbose_name=_("Quotation"), -# ) -# created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Created At")) -# total_amount = models.DecimalField( -# max_digits=14, decimal_places=2, verbose_name=_("Total Amount") -# ) -# -# def __str__(self): -# return f"Sales Order #{self.id} from Quotation #{self.quotation.id}" - - class Payment(models.Model): METHOD_CHOICES = [ ("cash", _("cash")), ("credit", _("credit")), ("transfer", _("transfer")), ("debit", _("debit")), - ("SADAD", _("SADAD")), + ("sadad", _("SADAD")), ] - # quotation = models.ForeignKey( - # SaleQuotation, on_delete=models.CASCADE, related_name="payments" - # ) + amount = models.DecimalField( max_digits=10, decimal_places=2, verbose_name=_("amount") ) @@ -1796,19 +1505,13 @@ class Payment(models.Model): ) payment_date = models.DateField(auto_now_add=True, verbose_name=_("date")) - # def save(self, *args, **kwargs): - # super().save(*args, **kwargs) - # self.quotation.remaining_balance -= self.amount - # if self.quotation.remaining_balance <= 0: - # self.quotation.is_paid = True - # self.quotation.save() class Meta: verbose_name = _("payment") verbose_name_plural = _("payments") def __str__(self): - return f"Payment of {self.amount} on {self.payment_date} for {self.quotation}" + return f"Payment of {self.amount} on {self.payment_date}" class Refund(models.Model): @@ -1835,8 +1538,8 @@ class UserActivityLog(models.Model): timestamp = models.DateTimeField(auto_now_add=True) class Meta: - verbose_name = "User Activity Log" - verbose_name_plural = "User Activity Logs" + verbose_name = _("User Activity Log") + verbose_name_plural = _("User Activity Logs") ordering = ["-timestamp"] def __str__(self): @@ -1863,7 +1566,7 @@ class SaleOrder(models.Model): ('lease', _('Lease')), ("credit_card", _("Credit Card")), ("bank_transfer", _("Bank Transfer")), - ("SADAD", _("SADAD")), + ("sadad", _("SADAD")), ]) comments = models.TextField(blank=True, null=True) formatted_order_id = models.CharField(max_length=10, unique=True, editable=False) @@ -2073,7 +1776,8 @@ class PaymentHistory(models.Model): updated_at = models.DateTimeField(auto_now=True) class Meta: - verbose_name_plural = "Payment Histories" + verbose_name = _("Payment History") + verbose_name_plural = _("Payment Histories") ordering = ["-payment_date"] indexes = [ models.Index(fields=["transaction_id"]), diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index 9024e95e82db46e13e09c83e574dd5cf05586315..011ea050b2804f86dc90f6ef212fc39b39ebf5c2 100644 GIT binary patch delta 56462 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 diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index d9ee1f7a..29afbba8 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -3,13 +3,12 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#: inventory/models.py:1909 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-05 16:54+0300\n" +"POT-Creation-Date: 2025-05-05 17:34+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -54,12 +53,42 @@ msgstr "العربية" msgid "Haikal" msgstr "هيكل" +#: inventory/forms.py:99 inventory/forms.py:1578 inventory/models.py:968 +#: inventory/models.py:998 inventory/models.py:1047 inventory/models.py:1129 +#: inventory/models.py:1277 inventory/models.py:1412 +#: templates/account/login.html:29 templates/account/login.html:31 +#: templates/administration/display_appointment.html:49 +#: templates/administration/manage_staff_personal_info.html:29 +#: templates/administration/staff_list.html:35 +#: templates/administration/user_profile.html:25 +#: templates/appointment/appointment_client_information.html:45 +#: templates/crm/leads/lead_detail.html:82 +#: 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 templates/pricing_page.html:191 +#: templates/sales/estimates/estimate_detail.html:157 +#: templates/sales/estimates/sale_order_form.html:56 +#: templates/sales/estimates/sale_order_preview.html:228 +#: templates/vendors/view_vendor.html:55 +#: venv/lib/python3.11/site-packages/appointment/templates/administration/display_appointment.html:45 +#: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_list.html:39 +#: venv/lib/python3.11/site-packages/appointment/templates/administration/user_profile.html:40 +#: venv/lib/python3.11/site-packages/appointment/templates/appointment/appointment_client_information.html:50 +#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:112 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: inventory/forms.py:104 +msgid "Services Offered" +msgstr "الخدمات المقدمة" + #: inventory/forms.py:114 inventory/forms.py:117 inventory/forms.py:215 #: inventory/forms.py:485 inventory/forms.py:486 inventory/forms.py:796 #: inventory/forms.py:799 inventory/forms.py:1590 inventory/forms.py:1593 -#: inventory/models.py:900 inventory/models.py:1010 inventory/models.py:1160 -#: inventory/models.py:1191 inventory/models.py:1218 inventory/models.py:1238 -#: inventory/models.py:1578 templates/administration/staff_index.html:123 +#: inventory/models.py:817 inventory/models.py:902 inventory/models.py:1052 +#: inventory/models.py:1083 inventory/models.py:1110 inventory/models.py:1130 +#: inventory/models.py:1470 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 @@ -72,7 +101,7 @@ msgstr "رقم الهاتف" #: inventory/forms.py:120 msgid "Enter a valid phone number (8-15 digits, starting with 05)" -msgstr "" +msgstr "أدخل رقم هاتف صالح (8 إلى 15 رقمًا، يبدأ بـ 05)" #: inventory/forms.py:436 inventory/models.py:723 #: templates/inventory/car_detail.html:122 @@ -83,8 +112,8 @@ msgstr "تاريخ البطاقة الجمركية" msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/forms.py:645 inventory/forms.py:1581 inventory/models.py:1219 -#: inventory/models.py:1579 templates/account/email_change.html:5 +#: inventory/forms.py:645 inventory/forms.py:1581 inventory/models.py:1111 +#: inventory/models.py:1471 templates/account/email_change.html:5 #: templates/account/email_change.html:9 templates/pricing_page.html:111 msgid "Email Address" msgstr "عنوان البريد الإلكتروني" @@ -138,8 +167,8 @@ msgid "Passwords do not match." msgstr "كلمات المرور غير متطابقة." #: inventory/forms.py:749 inventory/models.py:328 inventory/models.py:672 -#: inventory/models.py:685 inventory/models.py:1008 inventory/models.py:1185 -#: inventory/models.py:1213 templates/administration/manage_service.html:22 +#: inventory/models.py:685 inventory/models.py:900 inventory/models.py:1077 +#: inventory/models.py:1105 templates/administration/manage_service.html:22 #: templates/administration/service_list.html:23 #: templates/administration/staff_list.html:34 #: templates/administration/user_profile.html:242 @@ -162,7 +191,7 @@ msgstr "كلمات المرور غير متطابقة." msgid "Name" msgstr "الاسم" -#: inventory/forms.py:753 inventory/models.py:899 inventory/models.py:1576 +#: inventory/forms.py:753 inventory/models.py:816 inventory/models.py:1468 msgid "English Name" msgstr "الاسم بالإنجليزية" @@ -171,9 +200,9 @@ msgid "Please enter an English Name." msgstr "يرجى إدخال اسم باللغة الإنجليزية." #: inventory/forms.py:763 inventory/forms.py:767 inventory/models.py:329 -#: inventory/models.py:673 inventory/models.py:686 inventory/models.py:898 -#: inventory/models.py:1009 inventory/models.py:1186 inventory/models.py:1214 -#: inventory/models.py:1575 templates/users/user_detail.html:48 +#: inventory/models.py:673 inventory/models.py:686 inventory/models.py:815 +#: inventory/models.py:901 inventory/models.py:1078 inventory/models.py:1106 +#: inventory/models.py:1467 templates/users/user_detail.html:48 msgid "Arabic Name" msgstr "الاسم بالعربية" @@ -190,18 +219,22 @@ msgstr "أدخل رقم هاتف صالح (10 أرقام ويبدأ بـ 05)" msgid "CRN" msgstr "رقم السجل التجاري" -#: inventory/forms.py:832 inventory/models.py:891 inventory/models.py:1188 -#: inventory/models.py:1273 inventory/models.py:1570 +#: inventory/forms.py:832 inventory/models.py:808 inventory/models.py:1080 +#: inventory/models.py:1165 inventory/models.py:1462 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" +#: inventory/forms.py:840 +msgid "Commercial Registration Number must be 10 characters" +msgstr "رقم السجل التجاري يجب أن يتكون من 10 أرقام" + #: inventory/forms.py:846 templates/organizations/organization_detail.html:9 #: templates/organizations/organization_list.html:57 msgid "VRN" msgstr "الرقم الضريبي" -#: inventory/forms.py:850 inventory/models.py:896 inventory/models.py:1190 -#: inventory/models.py:1276 inventory/models.py:1573 +#: inventory/forms.py:850 inventory/models.py:813 inventory/models.py:1082 +#: inventory/models.py:1168 inventory/models.py:1465 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" @@ -209,8 +242,8 @@ msgstr "رقم التسجيل في ضريبة القيمة المضافة" msgid "VAT Registration Number must be 15 characters." msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا من 15 حرفًا." -#: inventory/forms.py:863 inventory/models.py:902 inventory/models.py:1163 -#: inventory/models.py:1193 inventory/models.py:1221 inventory/models.py:1581 +#: inventory/forms.py:863 inventory/models.py:819 inventory/models.py:1055 +#: inventory/models.py:1085 inventory/models.py:1113 inventory/models.py:1473 #: templates/crm/leads/lead_detail.html:118 #: templates/customers/customer_list.html:51 #: templates/customers/view_customer.html:71 @@ -225,30 +258,149 @@ msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا msgid "Address" msgstr "العنوان" -#: inventory/forms.py:931 inventory/models.py:1779 +#: inventory/forms.py:893 inventory/models.py:346 +#: 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 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:18 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_item_table.html:8 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/tags/ce_item_formset.html:18 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/expense/tags/expense_item_table.html:9 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/inventory/tags/inventory_item_table.html:9 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:94 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:18 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:18 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/po_update.html:50 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:8 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:10 +msgid "Item" +msgstr "العنصر" + +#: inventory/forms.py:897 inventory/models.py:535 +#: templates/inventory/transfer_preview.html:230 +#: templates/ledger/bills/bill_detail.html:214 +#: templates/ledger/ledger/ledger_detail.html:83 +#: templates/plans/invoices/layout.html:104 +#: templates/sales/estimates/estimate_detail.html:194 +#: templates/sales/estimates/sale_order_preview.html:242 +#: templates/sales/invoices/invoice_detail.html:242 +#: venv/lib/python3.11/site-packages/django_ledger/models/items.py:1068 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:97 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:21 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_item_table.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/tags/ce_item_formset.html:19 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:96 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:19 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:20 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/po_update.html:51 +msgid "Quantity" +msgstr "الكمية" + +#: inventory/forms.py:922 inventory/models.py:1559 +#: templates/customers/view_customer.html:150 +#: templates/ledger/journal_entry/includes/card_invoice.html:10 +#: templates/plans/create_order.html:29 templates/plans/invoices/layout.html:11 +#: templates/sales/invoices/invoice_create.html:5 +#: templates/sales/invoices/invoice_detail.html:69 +#: templates/sales/payments/payment_list.html:21 +#: templates/sales/sales_list.html:118 +#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3159 +#: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:361 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:10 +msgid "Invoice" +msgstr "فاتورة" + +#: inventory/forms.py:926 templates/ledger/bills/bill_detail.html:61 +#: templates/ledger/bills/bill_update_form.html:4 +#: templates/ledger/bills/bill_update_form.html:7 +#: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:392 +#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3158 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:61 +msgid "Bill" +msgstr "الفاتورة" + +#: inventory/forms.py:928 +#: templates/ledger/bank_accounts/bank_account_detail.html:50 +#: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:447 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:22 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:11 +msgid "Amount" +msgstr "المبلغ" + +#: inventory/forms.py:931 inventory/models.py:1490 msgid "cash" msgstr "نقداً" -#: inventory/forms.py:932 inventory/models.py:1780 +#: inventory/forms.py:932 inventory/models.py:1491 msgid "credit" msgstr "دائن" -#: inventory/forms.py:933 inventory/models.py:1781 +#: inventory/forms.py:933 inventory/models.py:1492 #: templates/inventory/car_detail.html:164 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" -#: inventory/forms.py:934 inventory/models.py:1782 +#: inventory/forms.py:934 inventory/models.py:1493 msgid "debit" msgstr "مدين" -#: inventory/forms.py:935 inventory/models.py:1783 inventory/models.py:1866 +#: inventory/forms.py:935 inventory/models.py:1494 inventory/models.py:1569 msgid "SADAD" msgstr "سداد" -#: inventory/forms.py:1243 inventory/forms.py:1260 inventory/models.py:1169 -#: inventory/models.py:1240 +#: inventory/forms.py:937 templates/sales/estimates/sale_order_form.html:177 +msgid "Payment Method" +msgstr "طريقة الدفع" + +msgid "Payment Date" +msgstr "تاريخ الدفع" + +msgid "Payment amount is greater than amount due" +msgstr "مبلغ الدفع أكبر من المبلغ المستحق" + +msgid "Payment amount must be greater than 0" +msgstr "يجب أن يكون مبلغ الدفع أكبر من 0" + +msgid "Invoice is already paid" +msgstr "تم دفع الفاتورة بالفعل" + +#: inventory/forms.py:982 templates/inventory/transfer_details.html:61 +#: templates/inventory/transfer_preview.html:221 +msgid "To" +msgstr "إلى" + +#: inventory/forms.py:1002 inventory/models.py:174 inventory/models.py:390 +#: inventory/models.py:1146 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 +#: templates/sales/estimates/estimate_detail.html:190 +#: templates/sales/estimates/sale_order_form.html:124 +#: templates/sales/estimates/sale_order_preview.html:239 +#: templates/sales/invoices/invoice_detail.html:238 +#: templates/sales/sales_list.html:112 +msgid "Make" +msgstr "الصانع" + +#: inventory/forms.py:1019 inventory/models.py:187 inventory/models.py:398 +#: inventory/models.py:1153 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 +#: templates/sales/estimates/estimate_detail.html:191 +#: templates/sales/estimates/sale_order_form.html:126 +#: templates/sales/estimates/sale_order_preview.html:240 +#: templates/sales/invoices/invoice_detail.html:239 +#: templates/sales/sales_list.html:113 +msgid "Model" +msgstr "الموديل" + +#: inventory/forms.py:1243 inventory/forms.py:1260 inventory/models.py:1061 +#: inventory/models.py:1132 #: templates/crm/opportunities/opportunity_form.html:22 #: templates/sales/estimates/estimate_detail.html:153 #: templates/sales/estimates/estimate_list.html:15 @@ -272,53 +424,91 @@ msgstr "العميل" msgid "Terms" msgstr "الشروط" -#: inventory/forms.py:1254 inventory/forms.py:1258 inventory/models.py:1142 +#: inventory/forms.py:1254 inventory/forms.py:1258 inventory/models.py:1034 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:11 msgid "Title" msgstr "العنوان" +#: inventory/forms.py:1294 inventory/models.py:421 inventory/models.py:1188 +#: inventory/models.py:1353 inventory/models.py:1404 inventory/tables.py:62 +#: templates/crm/leads/lead_detail.html:51 +#: 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 +#: templates/inventory/car_list.html:163 +#: templates/inventory/car_list_view.html:115 +#: templates/inventory/cars_list_api.html:18 +#: templates/inventory/cars_list_api.html:34 templates/plans/current.html:24 +#: templates/sales/estimates/estimate_list.html:16 +#: templates/sales/invoices/invoice_list.html:17 +#: templates/sales/journals/journal_list.html:17 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/card_po.html:15 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:23 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:12 +msgid "Status" +msgstr "الحالة" + +#: inventory/forms.py:1310 inventory/models.py:1348 +#: 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/forms.py:1439 msgid "Select Car Makes" msgstr "اختر ماركات السيارات" -#: inventory/forms.py:1559 inventory/forms.py:1562 inventory/models.py:1144 -#: inventory/models.py:1235 +msgid "Please enter a valid credit card number" +msgstr "يرجى إدخال رقم بطاقة ائتمان صالح" + +msgid "Please enter a valid month (01-12)" +msgstr "يرجى إدخال شهر صالح (01-12)" + +msgid "This card appears to be expired" +msgstr "يبدو أن هذه البطاقة منتهية الصلاحية" + +msgid "Please enter a valid expiry date in MM/YY format" +msgstr "يرجى إدخال تاريخ انتهاء صلاحية صحيح بصيغة MM/YY" + +msgid "CVV must contain only digits" +msgstr "يجب أن يحتوي رمز التحقق (CVV) على أرقام فقط" + +msgid "CVV must be 3 or 4 digits" +msgstr "يجب أن يكون رمز التحقق (CVV) مكونًا من 3 أو 4 أرقام" + +#: inventory/forms.py:1559 inventory/forms.py:1562 inventory/models.py:1036 +#: inventory/models.py:1127 #: templates/administration/manage_staff_personal_info.html:18 #: templates/pricing_page.html:97 msgid "First Name" msgstr "الاسم الأول" -#: inventory/forms.py:1569 inventory/forms.py:1572 inventory/models.py:1148 -#: inventory/models.py:1236 +#: inventory/forms.py:1569 inventory/forms.py:1572 inventory/models.py:1040 +#: inventory/models.py:1128 #: templates/administration/manage_staff_personal_info.html:24 #: templates/pricing_page.html:104 msgid "Last Name" msgstr "اسم العائلة" -#: inventory/forms.py:1578 inventory/models.py:1076 inventory/models.py:1106 -#: inventory/models.py:1155 inventory/models.py:1237 inventory/models.py:1520 -#: templates/account/login.html:29 templates/account/login.html:31 -#: templates/administration/display_appointment.html:49 -#: templates/administration/manage_staff_personal_info.html:29 -#: templates/administration/staff_list.html:35 -#: templates/administration/user_profile.html:25 -#: templates/appointment/appointment_client_information.html:45 -#: templates/crm/leads/lead_detail.html:82 -#: 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 templates/pricing_page.html:191 -#: templates/sales/estimates/estimate_detail.html:157 -#: templates/sales/estimates/sale_order_form.html:56 -#: templates/sales/estimates/sale_order_preview.html:228 -#: templates/vendors/view_vendor.html:55 -#: venv/lib/python3.11/site-packages/appointment/templates/administration/display_appointment.html:45 -#: venv/lib/python3.11/site-packages/appointment/templates/administration/staff_list.html:39 -#: venv/lib/python3.11/site-packages/appointment/templates/administration/user_profile.html:40 -#: venv/lib/python3.11/site-packages/appointment/templates/appointment/appointment_client_information.html:50 -#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:112 -msgid "Email" -msgstr "البريد الإلكتروني" +#: inventory/forms.py:1609 templates/pricing_page.html:147 +#: templates/pricing_page.html:197 +msgid "Card Number" +msgstr "رقم البطاقة" + +#: inventory/forms.py:1620 +msgid "Expiration Date" +msgstr "تاريخ الانتهاء" + +msgid "Security Code (CVV)" +msgstr "رمز الأمان (CVV)" + +msgid "Name on Card" +msgstr "الاسم على البطاقة" #: inventory/forms.py:1653 msgid "I agree to the Terms and Conditions" @@ -330,7 +520,7 @@ msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." #: inventory/models.py:147 inventory/models.py:440 inventory/models.py:518 #: inventory/models.py:563 inventory/models.py:720 inventory/models.py:735 -#: inventory/models.py:779 inventory/models.py:1453 +#: inventory/models.py:779 inventory/models.py:1345 #: templates/crm/leads/lead_list.html:35 #: templates/crm/opportunities/opportunity_form.html:35 #: templates/dashboards/manager.html:52 @@ -390,6 +580,37 @@ msgstr "دراجات الثلج" msgid "logo" msgstr "الشعار" +#: inventory/models.py:205 inventory/models.py:407 inventory/tables.py:55 +#: templates/inventory/car_form.html:65 +#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:121 +msgid "Series" +msgstr "السلسلة" + +#: inventory/models.py:222 inventory/models.py:415 inventory/tables.py:56 +#: templates/inventory/car_list_view.html:112 +#: templates/sales/sales_list.html:115 +msgid "Trim" +msgstr "الفئة" + +#: inventory/models.py:236 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:455 +#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:541 +#: venv/lib/python3.11/site-packages/django_ledger/models/items.py:509 +msgid "Equipment" +msgstr "المعدات" + +msgid "Specification" +msgstr "المواصفة" + +msgid "Specification Value" +msgstr "قيمة المواصفة" + +msgid "Option" +msgstr "الخيار" + +msgid "Option Value" +msgstr "قيمة الخيار" + #: inventory/models.py:305 templates/ledger/bills/bill_detail.html:191 #: templates/sales/estimates/estimate_detail.html:82 #: templates/sales/estimates/estimate_detail.html:168 @@ -419,7 +640,7 @@ msgstr "مسودة" msgid "Approved" msgstr "تمت الموافقة" -#: inventory/models.py:307 inventory/models.py:1082 +#: inventory/models.py:307 inventory/models.py:974 #: templates/crm/leads/lead_detail.html:55 #: templates/crm/leads/lead_list.html:123 test.txt:46 msgid "Pending" @@ -502,7 +723,7 @@ msgstr "محجوزة" msgid "Transfer" msgstr "نقل" -#: inventory/models.py:323 inventory/models.py:1081 +#: inventory/models.py:323 inventory/models.py:973 #: templates/crm/leads/lead_detail.html:53 #: templates/crm/leads/lead_list.html:121 #: templates/inventory/car_inventory.html:68 test.txt:33 @@ -561,29 +782,10 @@ msgstr "خاضع للضريبة" msgid "Unit of Measurement" msgstr "وحدة القياس" -#: inventory/models.py:341 inventory/models.py:375 inventory/models.py:960 +#: inventory/models.py:341 inventory/models.py:375 inventory/models.py:877 msgid "Dealer" msgstr "المعرض" -#: inventory/models.py:346 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 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:18 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_item_table.html:8 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/tags/ce_item_formset.html:18 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/expense/tags/expense_item_table.html:9 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/inventory/tags/inventory_item_table.html:9 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:94 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:18 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:10 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:18 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/po_update.html:50 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:8 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:10 -msgid "Item" -msgstr "العنصر" - #: inventory/models.py:365 inventory/models.py:366 #: templates/sales/estimates/estimate_detail.html:226 #: templates/sales/estimates/sale_order_preview.html:266 @@ -591,7 +793,7 @@ msgstr "العنصر" msgid "Additional Services" msgstr "الخدمات الإضافية" -#: inventory/models.py:382 inventory/models.py:1589 +#: inventory/models.py:382 inventory/models.py:1481 #: templates/inventory/car_detail.html:100 #: templates/inventory/car_form.html:134 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:166 @@ -603,31 +805,7 @@ msgstr "الخدمات الإضافية" msgid "Vendor" msgstr "المورد" -#: inventory/models.py:390 inventory/models.py:1254 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 -#: templates/sales/estimates/estimate_detail.html:190 -#: templates/sales/estimates/sale_order_form.html:124 -#: templates/sales/estimates/sale_order_preview.html:239 -#: templates/sales/invoices/invoice_detail.html:238 -#: templates/sales/sales_list.html:112 -msgid "Make" -msgstr "الصانع" - -#: inventory/models.py:398 inventory/models.py:1261 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 -#: templates/sales/estimates/estimate_detail.html:191 -#: templates/sales/estimates/sale_order_form.html:126 -#: templates/sales/estimates/sale_order_preview.html:240 -#: templates/sales/invoices/invoice_detail.html:239 -#: templates/sales/sales_list.html:113 -msgid "Model" -msgstr "الموديل" - -#: inventory/models.py:400 inventory/models.py:1264 inventory/tables.py:54 +#: inventory/models.py:400 inventory/models.py:1156 inventory/tables.py:54 #: templates/inventory/car_form.html:55 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:61 #: templates/inventory/car_inventory.html:54 @@ -641,41 +819,6 @@ msgstr "الموديل" msgid "Year" msgstr "السنة" -#: inventory/models.py:407 inventory/tables.py:55 -#: templates/inventory/car_form.html:65 -#: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:121 -msgid "Series" -msgstr "السلسلة" - -#: inventory/models.py:415 inventory/tables.py:56 -#: templates/inventory/car_list_view.html:112 -#: templates/sales/sales_list.html:115 -msgid "Trim" -msgstr "الفئة" - -#: inventory/models.py:421 inventory/models.py:1296 inventory/models.py:1461 -#: inventory/models.py:1512 inventory/tables.py:62 -#: templates/crm/leads/lead_detail.html:51 -#: 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 -#: templates/inventory/car_list.html:163 -#: templates/inventory/car_list_view.html:115 -#: templates/inventory/cars_list_api.html:18 -#: templates/inventory/cars_list_api.html:34 templates/plans/current.html:24 -#: templates/sales/estimates/estimate_list.html:16 -#: templates/sales/invoices/invoice_list.html:17 -#: templates/sales/journals/journal_list.html:17 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:10 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/card_po.html:15 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:23 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:12 -msgid "Status" -msgstr "الحالة" - #: inventory/models.py:427 inventory/tables.py:50 #: templates/inventory/car_detail.html:87 templates/inventory/car_form.html:147 #: ⁨templates/inventory/car_form_qabl alfalsafa.html⁩:183 @@ -713,6 +856,10 @@ msgstr "رمز" msgid "Cars" msgstr "السيارات" +#: inventory/models.py:483 +msgid "Car Sold" +msgstr "تم بيع السيارة" + #: inventory/models.py:524 msgid "From Dealer" msgstr "من معرض" @@ -725,30 +872,11 @@ msgstr "الى معرض" msgid "Transfer Date" msgstr "تاريخ النقل" -#: inventory/models.py:535 templates/inventory/transfer_preview.html:230 -#: templates/ledger/bills/bill_detail.html:214 -#: templates/ledger/ledger/ledger_detail.html:83 -#: templates/plans/invoices/layout.html:104 -#: templates/sales/estimates/estimate_detail.html:194 -#: templates/sales/estimates/sale_order_preview.html:242 -#: templates/sales/invoices/invoice_detail.html:242 -#: venv/lib/python3.11/site-packages/django_ledger/models/items.py:1068 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:97 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:21 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_item_table.html:10 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/tags/ce_item_formset.html:19 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:96 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:19 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:20 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/po_update.html:51 -msgid "Quantity" -msgstr "الكمية" - -#: inventory/models.py:544 inventory/models.py:757 inventory/models.py:1586 +#: inventory/models.py:544 inventory/models.py:757 inventory/models.py:1478 msgid "Created At" msgstr "تاريخ الإنشاء" -#: inventory/models.py:545 inventory/models.py:911 +#: inventory/models.py:545 inventory/models.py:828 msgid "Updated At" msgstr "تم التحديث" @@ -833,7 +961,7 @@ msgstr "البطاقة الجمركية" msgid "Custom Cards" msgstr "البطاقات الجمركية" -#: inventory/models.py:741 inventory/models.py:1469 +#: inventory/models.py:741 inventory/models.py:1361 msgid "Owner" msgstr "المالك" @@ -841,7 +969,7 @@ msgstr "المالك" msgid "Dealer who owns the car." msgstr "التاجر الذي يمتلك السيارة." -#: inventory/models.py:748 inventory/models.py:1061 +#: inventory/models.py:748 inventory/models.py:953 msgid "Showroom" msgstr "صالة العرض" @@ -895,10 +1023,10 @@ msgstr "التسجيل" msgid "Registrations" msgstr "تسجيل السيارات" -#: inventory/models.py:797 inventory/models.py:1012 inventory/models.py:1165 -#: inventory/models.py:1198 inventory/models.py:1301 inventory/models.py:1474 -#: inventory/models.py:1494 inventory/models.py:1516 inventory/models.py:1539 -#: inventory/models.py:1556 templates/crm/leads/lead_detail.html:100 +#: inventory/models.py:797 inventory/models.py:904 inventory/models.py:1057 +#: inventory/models.py:1090 inventory/models.py:1193 inventory/models.py:1366 +#: inventory/models.py:1386 inventory/models.py:1408 inventory/models.py:1431 +#: inventory/models.py:1448 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 @@ -908,26 +1036,26 @@ msgstr "تسجيل السيارات" msgid "Created" msgstr "تاريخ الإنشاء" -#: inventory/models.py:798 inventory/models.py:1013 inventory/models.py:1166 -#: inventory/models.py:1199 inventory/models.py:1303 inventory/models.py:1475 -#: inventory/models.py:1495 inventory/models.py:1517 inventory/models.py:1540 +#: inventory/models.py:798 inventory/models.py:905 inventory/models.py:1058 +#: inventory/models.py:1091 inventory/models.py:1195 inventory/models.py:1367 +#: inventory/models.py:1387 inventory/models.py:1409 inventory/models.py:1432 #: 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:905 inventory/models.py:1196 inventory/models.py:1584 +#: inventory/models.py:822 inventory/models.py:1088 inventory/models.py:1476 msgid "Logo" msgstr "الشعار" -#: inventory/models.py:910 +#: inventory/models.py:827 msgid "Joined At" msgstr "انضم في" -#: inventory/models.py:961 +#: inventory/models.py:878 msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:997 inventory/tasks.py:63 templates/header.html:17 +#: inventory/models.py:889 inventory/tasks.py:63 templates/header.html:17 #: templates/header.html:22 templates/welcome.html:27 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:440 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:526 @@ -936,19 +1064,19 @@ msgstr "المعارض" msgid "Inventory" msgstr "المخزن" -#: inventory/models.py:998 +#: inventory/models.py:890 msgid "Accountant" msgstr "محاسب" -#: inventory/models.py:999 templates/header.html:110 +#: inventory/models.py:891 templates/header.html:110 msgid "Sales" msgstr "المبيعات" -#: inventory/models.py:1011 +#: inventory/models.py:903 msgid "Staff Type" msgstr "نوع الموظف" -#: inventory/models.py:1050 inventory/models.py:1051 +#: inventory/models.py:942 inventory/models.py:943 #: templates/crm/opportunities/opportunity_detail.html:231 #: templates/crm/opportunities/opportunity_form.html:70 #: templates/dashboards/manager.html:16 templates/users/user_form.html:4 @@ -956,82 +1084,83 @@ msgstr "نوع الموظف" msgid "Staff" msgstr "الموظفون" -#: inventory/models.py:1059 +#: inventory/models.py:951 msgid "Referrals" msgstr "إحالات" -#: inventory/models.py:1060 inventory/models.py:1107 +#: inventory/models.py:952 inventory/models.py:999 msgid "WhatsApp" msgstr "واتساب" -#: inventory/models.py:1062 +#: inventory/models.py:954 msgid "TikTok" msgstr "تيك توك" -#: inventory/models.py:1063 +#: inventory/models.py:955 msgid "Instagram" msgstr "إنستغرام" -#: inventory/models.py:1064 +#: inventory/models.py:956 msgid "X" msgstr "إكس" -#: inventory/models.py:1065 +#: inventory/models.py:957 msgid "Facebook" msgstr "فيسبوك" -#: inventory/models.py:1066 +#: inventory/models.py:958 msgid "Motory" msgstr "موتري" -#: inventory/models.py:1067 +#: inventory/models.py:959 msgid "Influencers" msgstr "المؤثرون" -#: inventory/models.py:1068 +#: inventory/models.py:960 msgid "Youtube" msgstr "يوتيوب" -#: inventory/models.py:1069 +#: inventory/models.py:961 msgid "Campaign" msgstr "حملة" -#: inventory/models.py:1073 +#: inventory/models.py:965 msgid "Walk In" msgstr "زيارة مباشرة" -#: inventory/models.py:1074 +#: inventory/models.py:966 msgid "Toll Free" msgstr "رقم مجاني" -#: inventory/models.py:1075 +#: inventory/models.py:967 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:113 msgid "Website" msgstr "الموقع الإلكتروني" -#: inventory/models.py:1077 +#: inventory/models.py:969 msgid "Form" msgstr "نموذج" -#: inventory/models.py:1083 templates/crm/leads/lead_detail.html:57 +#: inventory/models.py:975 templates/crm/leads/lead_detail.html:57 #: templates/crm/leads/lead_list.html:125 msgid "In Progress" msgstr "قيد التنفيذ" -#: inventory/models.py:1084 templates/crm/leads/lead_detail.html:59 +#: inventory/models.py:976 templates/crm/leads/lead_detail.html:59 #: templates/crm/leads/lead_list.html:127 msgid "Qualified" msgstr "مؤهل" -#: inventory/models.py:1085 templates/crm/leads/lead_list.html:129 +#: inventory/models.py:977 templates/crm/leads/lead_list.html:129 msgid "Contacted" msgstr "تم الاتصال" -#: inventory/models.py:1086 +#: inventory/models.py:978 msgid "Converted" msgstr "تم التحويل" -#: inventory/models.py:1087 templates/crm/leads/lead_detail.html:61 +#: inventory/models.py:979 inventory/models.py:1282 +#: 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 @@ -1045,166 +1174,166 @@ msgstr "تم التحويل" msgid "Canceled" msgstr "ملغى" -#: inventory/models.py:1091 +#: inventory/models.py:983 msgid "Mr" msgstr "السيد" -#: inventory/models.py:1092 +#: inventory/models.py:984 msgid "Mrs" msgstr "السيدة" -#: inventory/models.py:1093 +#: inventory/models.py:985 msgid "Ms" msgstr "الآنسة" -#: inventory/models.py:1094 +#: inventory/models.py:986 msgid "Miss" msgstr "الآنسة" -#: inventory/models.py:1095 +#: inventory/models.py:987 msgid "Dr" msgstr "الدكتور" -#: inventory/models.py:1096 +#: inventory/models.py:988 msgid "Prof" msgstr "الأستاذ" -#: inventory/models.py:1097 +#: inventory/models.py:989 msgid "Prince" msgstr "الأمير" -#: inventory/models.py:1098 +#: inventory/models.py:990 msgid "Princess" msgstr "الأميرة" -#: inventory/models.py:1099 templates/pricing_page.html:125 +#: inventory/models.py:991 templates/pricing_page.html:125 #: templates/pricing_page.html:192 msgid "Company" msgstr "الشركة" -#: inventory/models.py:1100 +#: inventory/models.py:992 msgid "N/A" msgstr "غير متوفر" -#: inventory/models.py:1104 +#: inventory/models.py:996 inventory/models.py:1275 msgid "Call" msgstr "مكالمة" -#: inventory/models.py:1105 +#: inventory/models.py:997 msgid "SMS" msgstr "رسالة نصية" -#: inventory/models.py:1108 +#: inventory/models.py:1000 msgid "Visit" msgstr "زيارة" -#: inventory/models.py:1109 templates/inventory/car_form.html:23 +#: inventory/models.py:1001 templates/inventory/car_form.html:23 msgid "Add Car" msgstr "إضافة سيارة" -#: inventory/models.py:1110 +#: inventory/models.py:1002 msgid "Sale Car" msgstr "بيع سيارة" -#: inventory/models.py:1111 templates/inventory/reserve_car.html:6 +#: inventory/models.py:1003 templates/inventory/reserve_car.html:6 #: templates/inventory/reserve_car.html:9 msgid "Reserve Car" msgstr "حجز السيارة" -#: inventory/models.py:1112 templates/inventory/transfer_car.html:4 +#: inventory/models.py:1004 templates/inventory/transfer_car.html:4 msgid "Transfer Car" msgstr "نقل السيارة" -#: inventory/models.py:1113 +#: inventory/models.py:1005 msgid "Remove Car" msgstr "إزالة السيارة" -#: inventory/models.py:1114 +#: inventory/models.py:1006 #: 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:1115 +#: inventory/models.py:1007 msgid "Cancel Quotation" msgstr "إلغاء العرض" -#: inventory/models.py:1116 +#: inventory/models.py:1008 msgid "Create Order" msgstr "إنشاء طلب" -#: inventory/models.py:1117 +#: inventory/models.py:1009 msgid "Cancel Order" msgstr "إلغاء الطلب" -#: inventory/models.py:1118 templates/sales/estimates/estimate_detail.html:108 +#: inventory/models.py:1010 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:1119 +#: inventory/models.py:1011 msgid "Cancel Invoice" msgstr "إلغاء الفاتورة" -#: inventory/models.py:1123 +#: inventory/models.py:1015 msgid "Prospect" msgstr "العميل المحتمل" -#: inventory/models.py:1124 +#: inventory/models.py:1016 msgid "Proposal" msgstr "عرض" -#: inventory/models.py:1125 +#: inventory/models.py:1017 msgid "Negotiation" msgstr "مفاوضات" -#: inventory/models.py:1126 +#: inventory/models.py:1018 msgid "Closed Won" msgstr "مغلقة - ناجحة" -#: inventory/models.py:1127 +#: inventory/models.py:1019 msgid "Closed Lost" msgstr "مغلقة - خسارة" -#: inventory/models.py:1131 +#: inventory/models.py:1023 msgid "Low" msgstr "منخفض" -#: inventory/models.py:1132 +#: inventory/models.py:1024 msgid "Medium" msgstr "متوسط" -#: inventory/models.py:1133 +#: inventory/models.py:1025 msgid "High" msgstr "مرتفع" -#: inventory/models.py:1146 +#: inventory/models.py:1038 msgid "Middle Name" msgstr "اسم الأب" -#: inventory/models.py:1150 +#: inventory/models.py:1042 msgid "Male" msgstr "ذكر" -#: inventory/models.py:1150 +#: inventory/models.py:1042 msgid "Female" msgstr "أنثى" -#: inventory/models.py:1152 +#: inventory/models.py:1044 msgid "Gender" msgstr "الجنس" -#: inventory/models.py:1154 +#: inventory/models.py:1046 msgid "Date of Birth" msgstr "تاريخ الميلاد" -#: inventory/models.py:1157 templates/customers/customer_list.html:46 +#: inventory/models.py:1049 templates/customers/customer_list.html:46 msgid "National ID" msgstr "رقم الهوية الوطنية" -#: inventory/models.py:1170 templates/customers/customer_form.html:4 +#: inventory/models.py:1062 templates/customers/customer_form.html:4 #: templates/customers/customer_list.html:4 #: templates/customers/customer_list.html:5 #: templates/customers/customer_list.html:9 @@ -1212,98 +1341,128 @@ msgstr "رقم الهوية الوطنية" msgid "Customers" msgstr "العملاء" -#: inventory/models.py:1202 inventory/models.py:1240 +#: inventory/models.py:1094 inventory/models.py:1132 msgid "Organization" msgstr "شركة" -#: inventory/models.py:1203 templates/header.html:151 +#: inventory/models.py:1095 templates/header.html:151 #: templates/organizations/organization_list.html:5 #: templates/organizations/organization_list.html:8 #: templates/organizations/organization_list.html:14 msgid "Organizations" msgstr "الشركات" -#: inventory/models.py:1216 +#: inventory/models.py:1108 #: templates/representatives/representative_detail.html:8 #: templates/representatives/representative_list.html:18 msgid "ID Number" msgstr "رقم الهوية" -#: inventory/models.py:1226 +#: inventory/models.py:1118 msgid "Representative" msgstr "ممثل شركة" -#: inventory/models.py:1227 +#: inventory/models.py:1119 #: templates/representatives/representative_list.html:3 #: templates/representatives/representative_list.html:6 msgid "Representatives" msgstr "ممثلي الشركات" -#: inventory/models.py:1240 +#: inventory/models.py:1132 msgid "Lead Type" msgstr "نوع العميل المتوقع" -#: inventory/models.py:1267 templates/crm/leads/lead_list.html:65 +#: inventory/models.py:1159 templates/crm/leads/lead_list.html:65 msgid "Source" msgstr "المصدر" -#: inventory/models.py:1270 templates/crm/leads/lead_list.html:71 +#: inventory/models.py:1162 templates/crm/leads/lead_list.html:71 msgid "Channel" msgstr "القناة" -#: inventory/models.py:1278 +#: inventory/models.py:1170 msgid "address" msgstr "العنوان" -#: inventory/models.py:1285 +#: inventory/models.py:1177 msgid "Assigned" msgstr "مُعين" -#: inventory/models.py:1291 +#: inventory/models.py:1183 msgid "Priority" msgstr "الأولوية" -#: inventory/models.py:1306 +#: inventory/models.py:1198 msgid "Lead" msgstr "فرصة" -#: inventory/models.py:1307 templates/crm/leads/lead_list.html:3 +#: inventory/models.py:1199 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:21 test.txt:21 msgid "Leads" msgstr "الفرص" -#: inventory/models.py:1422 +#: inventory/models.py:1267 +msgid "Product Demo" +msgstr "عرض توضيحي للمنتج" + +msgid "Follow-Up Call" +msgstr "مكالمة متابعة" + +msgid "Contract Discussion" +msgstr "مناقشة العقد" + +msgid "Sales Meeting" +msgstr "اجتماع مبيعات" + +msgid "Support Call" +msgstr "مكالمة دعم" + +#: inventory/models.py:1272 +#: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:240 +#: venv/lib/python3.11/site-packages/django_ledger/models/items.py:511 +msgid "Other" +msgstr "أخرى" + +#: inventory/models.py:1276 +msgid "Meeting" +msgstr "اجتماع" + +msgid "Scheduled" +msgstr "مجدول" + +#: inventory/models.py:1281 templates/sales/estimates/estimate_detail.html:88 +#: templates/sales/estimates/estimate_detail.html:174 +#: templates/sales/estimates/estimate_list.html:39 +#: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:226 +msgid "Completed" +msgstr "مكتمل" + +#: inventory/models.py:1314 msgid "Old Status" msgstr "الحالة القديمة" -#: inventory/models.py:1425 +#: inventory/models.py:1317 msgid "New Status" msgstr "الحالة الجديدة" -#: inventory/models.py:1430 +#: inventory/models.py:1322 msgid "Changed At" msgstr "تم التغيير في" -#: inventory/models.py:1433 +#: inventory/models.py:1325 msgid "Lead Status History" msgstr "تاريخ حالة العميل المحتمل" -#: inventory/models.py:1434 +#: inventory/models.py:1326 msgid "Lead Status Histories" msgstr "تواريخ حالات العملاء المحتملين" -#: inventory/models.py:1442 +#: inventory/models.py:1334 msgid "Probability must be between 0 and 100." msgstr "يجب أن تكون الاحتمالية بين 0 و 100." -#: inventory/models.py:1456 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:1473 +#: inventory/models.py:1365 #: templates/crm/opportunities/opportunity_detail.html:264 #: templates/crm/opportunities/opportunity_form.html:79 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:100 @@ -1312,28 +1471,28 @@ msgstr "المرحلة" msgid "Closing Date" msgstr "تاريخ الإغلاق" -#: inventory/models.py:1476 +#: inventory/models.py:1368 msgid "Closed" msgstr "مغلقة" -#: inventory/models.py:1479 +#: inventory/models.py:1371 msgid "Opportunity" msgstr "فرصة" -#: inventory/models.py:1480 +#: inventory/models.py:1372 #: ⁨templates/crm/opportunities/opportunity_list copy.html⁩:8 #: templates/crm/opportunities/opportunity_list.html:8 msgid "Opportunities" msgstr "الفرص" -#: inventory/models.py:1490 inventory/models.py:1498 +#: inventory/models.py:1382 inventory/models.py:1390 #: templates/account/snippets/already_logged_in.html:8 #: templates/crm/leads/lead_detail.html:226 #: templates/customers/view_customer.html:91 msgid "Note" msgstr "ملاحظة" -#: inventory/models.py:1499 inventory/models.py:1535 +#: inventory/models.py:1391 inventory/models.py:1427 #: templates/crm/leads/lead_detail.html:137 #: templates/crm/leads/lead_detail.html:213 #: templates/crm/leads/lead_detail.html:387 @@ -1344,32 +1503,32 @@ msgstr "ملاحظة" msgid "Notes" msgstr "ملاحظات" -#: inventory/models.py:1508 +#: inventory/models.py:1400 msgid "From Email" msgstr "من البريد الإلكتروني" -#: inventory/models.py:1509 +#: inventory/models.py:1401 msgid "To Email" msgstr "إلى البريد الإلكتروني" -#: inventory/models.py:1510 +#: inventory/models.py:1402 msgid "Subject" msgstr "الموضوع" -#: inventory/models.py:1511 inventory/models.py:1554 +#: inventory/models.py:1403 inventory/models.py:1446 msgid "Message" msgstr "رسالة" -#: inventory/models.py:1521 templates/crm/leads/lead_detail.html:138 +#: inventory/models.py:1413 templates/crm/leads/lead_detail.html:138 #: templates/crm/leads/lead_detail.html:265 msgid "Emails" msgstr "رسائل البريد الإلكتروني" -#: inventory/models.py:1533 +#: inventory/models.py:1425 msgid "Activity Type" msgstr "نوع النشاط" -#: inventory/models.py:1543 templates/crm/leads/lead_detail.html:136 +#: inventory/models.py:1435 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 @@ -1381,117 +1540,123 @@ msgstr "نوع النشاط" msgid "Activity" msgstr "النشاط" -#: inventory/models.py:1544 templates/crm/leads/lead_detail.html:166 +#: inventory/models.py:1436 templates/crm/leads/lead_detail.html:166 #: templates/header.html:418 msgid "Activities" msgstr "الأنشطة" -#: inventory/models.py:1555 +#: inventory/models.py:1447 msgid "Is Read" msgstr "تمت قراءته" -#: inventory/models.py:1559 +#: inventory/models.py:1451 msgid "Notification" msgstr "إشعار" -#: inventory/models.py:1560 templates/crm/notifications_history.html:6 +#: inventory/models.py:1452 templates/crm/notifications_history.html:6 #: templates/notifications.html:13 msgid "Notifications" msgstr "الإشعارات" -#: inventory/models.py:1577 templates/vendors/view_vendor.html:49 +#: inventory/models.py:1469 templates/vendors/view_vendor.html:49 msgid "Contact Person" msgstr "الشخص المسؤول" -#: inventory/models.py:1590 templates/vendors/vendor_form.html:4 +#: inventory/models.py:1482 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:1789 inventory/models.py:1819 +#: inventory/models.py:1498 inventory/models.py:1522 msgid "amount" msgstr "المبلغ" -#: inventory/models.py:1792 +#: inventory/models.py:1501 msgid "method" msgstr "طريقة" -#: inventory/models.py:1795 +#: inventory/models.py:1504 msgid "reference number" msgstr "رقم المرجع" -#: inventory/models.py:1797 +#: inventory/models.py:1506 msgid "date" msgstr "التاريخ" -#: inventory/models.py:1807 +#: inventory/models.py:1510 msgid "payment" msgstr "الدفعة" -#: inventory/models.py:1808 templates/header.html:102 +#: inventory/models.py:1511 templates/header.html:102 msgid "payments" msgstr "المدفوعات" -#: inventory/models.py:1821 +#: inventory/models.py:1524 msgid "reason" msgstr "السبب" -#: inventory/models.py:1822 +#: inventory/models.py:1525 msgid "refund date" msgstr "تاريخ الاسترداد" -#: inventory/models.py:1825 +#: inventory/models.py:1528 msgid "refund" msgstr "استرداد" -#: inventory/models.py:1826 +#: inventory/models.py:1529 msgid "refunds" msgstr "استردادات" -#: inventory/models.py:1850 +#: inventory/models.py:1541 +msgid "User Activity Log" +msgstr "سجل نشاط المستخدم" + +msgid "User Activity Logs" +msgstr "سجلات نشاط المستخدم" + +#: inventory/models.py:1553 #: 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:1856 templates/customers/view_customer.html:150 -#: templates/ledger/journal_entry/includes/card_invoice.html:10 -#: templates/plans/create_order.html:29 templates/plans/invoices/layout.html:11 -#: templates/sales/invoices/invoice_create.html:5 -#: templates/sales/invoices/invoice_detail.html:69 -#: templates/sales/payments/payment_list.html:21 -#: templates/sales/sales_list.html:118 -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3159 -#: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:361 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:10 -msgid "Invoice" -msgstr "فاتورة" - -#: inventory/models.py:1861 inventory/tasks.py:39 +#: inventory/models.py:1564 inventory/tasks.py:39 #: 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:1862 +#: inventory/models.py:1565 msgid "Finance" msgstr "تمويل" -#: inventory/models.py:1863 +#: inventory/models.py:1566 msgid "Lease" msgstr "تأجير" -#: inventory/models.py:1864 +#: inventory/models.py:1567 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:1139 msgid "Credit Card" msgstr "بطاقة ائتمان" -#: inventory/models.py:1865 +#: inventory/models.py:1568 msgid "Bank Transfer" msgstr "تحويل بنكي" +#: inventory/models.py:1612 templates/groups/group_form.html:4 +#: templates/groups/group_list.html:5 templates/users/user_group_form.html:4 +msgid "Group" +msgstr "مجموعة" + +#: inventory/models.py:1779 +msgid "Payment History" +msgstr "سجل الدفع" + +msgid "Payment Histories" +msgstr "سجلات الدفع" + #: inventory/tables.py:59 templates/inventory/car_inventory.html:55 msgid "Exterior Color" msgstr "اللون الخارجي" @@ -4892,11 +5057,6 @@ msgstr "الاسم" msgid "Back to List" msgstr "العودة إلى القائمة" -#: templates/groups/group_form.html:4 templates/groups/group_list.html:5 -#: templates/users/user_group_form.html:4 -msgid "Group" -msgstr "مجموعة" - #: templates/groups/group_form.html:16 msgid "Edit Group" msgstr "تعديل المجموعة" @@ -5647,11 +5807,6 @@ msgstr "هل أنت متأكد" msgid "From" msgstr "من" -#: templates/inventory/transfer_details.html:61 -#: templates/inventory/transfer_preview.html:221 -msgid "To" -msgstr "إلى" - #: templates/inventory/transfer_details.html:73 #: templates/plans/invoices/layout.html:110 #: templates/plans/order_detail_table.html:10 templates/pricing_page.html:185 @@ -5800,13 +5955,6 @@ msgstr "اسم الحساب البنكي" msgid "Cash Account" msgstr "حساب نقدي" -#: templates/ledger/bank_accounts/bank_account_detail.html:50 -#: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:447 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:22 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/tags/po_item_table.html:11 -msgid "Amount" -msgstr "المبلغ" - #: templates/ledger/bank_accounts/bank_account_form.html:4 msgid "bank account" msgstr "الحساب المصرفي" @@ -5839,16 +5987,6 @@ msgstr "لم يتم العثور على أي حساب بنكي." msgid "View Bill" msgstr "عرض الفاتورة" -#: templates/ledger/bills/bill_detail.html:61 -#: templates/ledger/bills/bill_update_form.html:4 -#: templates/ledger/bills/bill_update_form.html:7 -#: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:392 -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3158 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:11 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:61 -msgid "Bill" -msgstr "الفاتورة" - #: templates/ledger/bills/bill_detail.html:64 msgid "Review Bill" msgstr "مراجعة الفاتورة" @@ -7446,30 +7584,35 @@ msgstr "متضمن" msgid "Enter Your Information" msgstr "أدخل معلوماتك" +#: templates/pricing_page.html:139 msgid "Cardholder Name" msgstr "اسم حامل البطاقة" -msgid "Card Number" -msgstr "رقم البطاقة" - +#: templates/pricing_page.html:157 msgid "Expiry Date" msgstr "تاريخ الانتهاء" +#: templates/pricing_page.html:167 msgid "CVV" msgstr "رمز الأمان (CVV)" +#: templates/pricing_page.html:180 msgid "Confirm Your Information" msgstr "تأكيد معلوماتك" +#: templates/pricing_page.html:182 msgid "Order Summary" msgstr "ملخص الطلب" +#: templates/pricing_page.html:189 msgid "User Information" msgstr "معلومات المستخدم" +#: templates/pricing_page.html:196 msgid "Cardholder" msgstr "حامل البطاقة" +#: templates/pricing_page.html:198 msgid "Expiry" msgstr "الانتهاء" @@ -7491,13 +7634,6 @@ msgstr "لم يتم العثور على ممثلين للشركات." msgid "Are you sure you want to Cancel this Estimate?" msgstr "هل أنت متأكد أنك تريد إلغاء هذا التقدير؟" -#: templates/sales/estimates/estimate_detail.html:88 -#: templates/sales/estimates/estimate_detail.html:174 -#: templates/sales/estimates/estimate_list.html:39 -#: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:226 -msgid "Completed" -msgstr "مكتمل" - #: templates/sales/estimates/estimate_detail.html:97 msgid "View Invoice" msgstr "عرض الفاتورة" @@ -7595,10 +7731,6 @@ msgstr "إجمالي الخصم" msgid "Please provide an estimate." msgstr "يرجى تقديم تقدير." -#: templates/sales/estimates/sale_order_form.html:177 -msgid "Payment Method" -msgstr "طريقة الدفع" - #: templates/sales/estimates/sale_order_form.html:185 msgid "Please select a payment method." msgstr "يرجى اختيار طريقة دفع." @@ -11044,12 +11176,6 @@ msgstr "المصنع" msgid "Plant - Accum. Depreciation" msgstr "المصنع - الإهلاك المتراكم" -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:455 -#: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:541 -#: venv/lib/python3.11/site-packages/django_ledger/models/items.py:509 -msgid "Equipment" -msgstr "المعدات" - #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:456 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:542 msgid "Equipment - Accum. Depreciation" @@ -11534,11 +11660,6 @@ msgstr "سعر الهدف" msgid "Time & Materials" msgstr "الوقت والمواد" -#: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:240 -#: venv/lib/python3.11/site-packages/django_ledger/models/items.py:511 -msgid "Other" -msgstr "أخرى" - #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:247 msgid "Estimate Number" msgstr "رقم التقدير"