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 9024e95e..011ea050 100644 Binary files a/locale/ar/LC_MESSAGES/django.mo and b/locale/ar/LC_MESSAGES/django.mo differ diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index 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 "رقم التقدير"