diff --git a/.DS_Store b/.DS_Store index b188126a..81c4ed63 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/car_inventory/__pycache__/settings.cpython-311.pyc b/car_inventory/__pycache__/settings.cpython-311.pyc index e2bc7cec..9f00789e 100644 Binary files a/car_inventory/__pycache__/settings.cpython-311.pyc and b/car_inventory/__pycache__/settings.cpython-311.pyc differ diff --git a/db.sqlite b/db.sqlite index 2bb076b4..acf36d5d 100644 Binary files a/db.sqlite and b/db.sqlite differ diff --git a/inventory/__pycache__/admin.cpython-311.pyc b/inventory/__pycache__/admin.cpython-311.pyc index 58184d08..4b7818bc 100644 Binary files a/inventory/__pycache__/admin.cpython-311.pyc and b/inventory/__pycache__/admin.cpython-311.pyc differ diff --git a/inventory/__pycache__/forms.cpython-311.pyc b/inventory/__pycache__/forms.cpython-311.pyc index c2062cd9..b133fbc4 100644 Binary files a/inventory/__pycache__/forms.cpython-311.pyc and b/inventory/__pycache__/forms.cpython-311.pyc differ diff --git a/inventory/__pycache__/middleware.cpython-311.pyc b/inventory/__pycache__/middleware.cpython-311.pyc index 7518b3e3..46734439 100644 Binary files a/inventory/__pycache__/middleware.cpython-311.pyc and b/inventory/__pycache__/middleware.cpython-311.pyc differ diff --git a/inventory/__pycache__/models.cpython-311.pyc b/inventory/__pycache__/models.cpython-311.pyc index 2801f796..d1b3161f 100644 Binary files a/inventory/__pycache__/models.cpython-311.pyc and b/inventory/__pycache__/models.cpython-311.pyc differ diff --git a/inventory/__pycache__/urls.cpython-311.pyc b/inventory/__pycache__/urls.cpython-311.pyc index c34c8ed6..7c65662f 100644 Binary files a/inventory/__pycache__/urls.cpython-311.pyc and b/inventory/__pycache__/urls.cpython-311.pyc differ diff --git a/inventory/__pycache__/views.cpython-311.pyc b/inventory/__pycache__/views.cpython-311.pyc index df5ea774..3b5bb2c0 100644 Binary files a/inventory/__pycache__/views.cpython-311.pyc and b/inventory/__pycache__/views.cpython-311.pyc differ diff --git a/inventory/admin.py b/inventory/admin.py index 4e52c6bd..285dc267 100644 --- a/inventory/admin.py +++ b/inventory/admin.py @@ -90,3 +90,8 @@ class CarSpecificationAdmin(admin.ModelAdmin): class Meta: verbose_name = "Car Specification" +# @admin.register(models.UserActivityLog) +# class UserActivityLogAdmin(admin.ModelAdmin): +# list_display = ('user', 'action', 'timestamp') +# search_fields = ('user__username', 'action') +# list_filter = ('timestamp',) diff --git a/inventory/forms.py b/inventory/forms.py index 1fee52b7..f495b017 100644 --- a/inventory/forms.py +++ b/inventory/forms.py @@ -1,6 +1,7 @@ from phonenumber_field.formfields import PhoneNumberField from django.core.validators import RegexValidator from django import forms +from django.contrib.auth import get_user_model from .mixins import AddClassMixin from django.forms.models import inlineformset_factory from .models import ( @@ -32,6 +33,8 @@ import django_tables2 as tables from django.forms import formset_factory +User = get_user_model() + class AdditionalServiceForm(forms.ModelForm): class Meta: model = AdditionalServices @@ -42,10 +45,12 @@ class PaymentForm(forms.ModelForm): model = Payment fields = ['amount','payment_method', 'reference_number'] -# class UserForm(forms.ModelForm): -# class Meta: -# model = Staff -# fields = ['name', 'arabic_name', 'phone_number', 'address','staff_type'] +class StaffForm(forms.ModelForm): + email = forms.EmailField(required=True, label="Email") + class Meta: + model = Staff + fields = ['name', 'arabic_name', 'phone_number','staff_type'] + # Dealer Form class DealerForm(forms.ModelForm): diff --git a/inventory/middleware.py b/inventory/middleware.py index e69de29b..ef228d6f 100644 --- a/inventory/middleware.py +++ b/inventory/middleware.py @@ -0,0 +1,29 @@ +import logging +from inventory import models +from django.utils import timezone + +logger = logging.getLogger('user_activity') + + +class LogUserActivityMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.get_response(request) + + if request.user.is_authenticated: + action = f"{request.method} {request.path}" + models.UserActivityLog.objects.create( + user=request.user, + action=action, + timestamp=timezone.now() + ) + + return response + + def get_client_ip(self, request): + x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') + if x_forwarded_for: + return x_forwarded_for.split(',')[0] + return request.META.get('REMOTE_ADDR') \ No newline at end of file diff --git a/inventory/migrations/0009_alter_additionalservices_uom_alter_staff_dealer.py b/inventory/migrations/0009_alter_additionalservices_uom_alter_staff_dealer.py new file mode 100644 index 00000000..fe0bce61 --- /dev/null +++ b/inventory/migrations/0009_alter_additionalservices_uom_alter_staff_dealer.py @@ -0,0 +1,25 @@ +# Generated by Django 5.1.4 on 2024-12-30 01:50 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0008_alter_dealer_options_remove_dealer_dealer_type_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='additionalservices', + name='uom', + field=models.CharField(choices=[('Unit', 'Unit'), ('Kg', 'Kg'), ('L', 'L'), ('m', 'm'), ('cm', 'cm'), ('m2', 'm2'), ('m3', 'm3'), ('m3', 'm3')], max_length=10, verbose_name='Unit of Measurement'), + ), + migrations.AlterField( + model_name='staff', + name='dealer', + field=models.ForeignKey(default=8, on_delete=django.db.models.deletion.CASCADE, related_name='staff', to='inventory.dealer'), + preserve_default=False, + ), + ] diff --git a/inventory/migrations/0010_useractivitylog.py b/inventory/migrations/0010_useractivitylog.py new file mode 100644 index 00000000..6d9fab8f --- /dev/null +++ b/inventory/migrations/0010_useractivitylog.py @@ -0,0 +1,30 @@ +# Generated by Django 5.1.4 on 2024-12-30 02:50 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0009_alter_additionalservices_uom_alter_staff_dealer'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='UserActivityLog', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('action', models.TextField()), + ('timestamp', models.DateTimeField(auto_now_add=True)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'User Activity Log', + 'verbose_name_plural': 'User Activity Logs', + 'ordering': ['-timestamp'], + }, + ), + ] diff --git a/inventory/migrations/0011_delete_useractivitylog.py b/inventory/migrations/0011_delete_useractivitylog.py new file mode 100644 index 00000000..a7302bbd --- /dev/null +++ b/inventory/migrations/0011_delete_useractivitylog.py @@ -0,0 +1,16 @@ +# Generated by Django 5.1.4 on 2024-12-30 03:11 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0010_useractivitylog'), + ] + + operations = [ + migrations.DeleteModel( + name='UserActivityLog', + ), + ] diff --git a/inventory/migrations/0012_representative_email.py b/inventory/migrations/0012_representative_email.py new file mode 100644 index 00000000..4e4ab042 --- /dev/null +++ b/inventory/migrations/0012_representative_email.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1.4 on 2024-12-30 03:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0011_delete_useractivitylog'), + ] + + operations = [ + migrations.AddField( + model_name='representative', + name='email', + field=models.EmailField(default='mail@mail.com', max_length=255, verbose_name='Email Address'), + preserve_default=False, + ), + ] diff --git a/inventory/migrations/0013_organization_created_at.py b/inventory/migrations/0013_organization_created_at.py new file mode 100644 index 00000000..c8138396 --- /dev/null +++ b/inventory/migrations/0013_organization_created_at.py @@ -0,0 +1,20 @@ +# Generated by Django 5.1.4 on 2024-12-30 03:59 + +import django.utils.timezone +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0012_representative_email'), + ] + + operations = [ + migrations.AddField( + model_name='organization', + name='created_at', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now, verbose_name='Created At'), + preserve_default=False, + ), + ] diff --git a/inventory/migrations/0014_useractivitylog.py b/inventory/migrations/0014_useractivitylog.py new file mode 100644 index 00000000..d4a1bf1f --- /dev/null +++ b/inventory/migrations/0014_useractivitylog.py @@ -0,0 +1,30 @@ +# Generated by Django 5.1.4 on 2024-12-30 10:49 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0013_organization_created_at'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='UserActivityLog', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('action', models.TextField()), + ('timestamp', models.DateTimeField(auto_now_add=True)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'User Activity Log', + 'verbose_name_plural': 'User Activity Logs', + 'ordering': ['-timestamp'], + }, + ), + ] diff --git a/inventory/models.py b/inventory/models.py index 1cd9aa44..4e58ddd2 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -39,6 +39,7 @@ class DealerUserManager(UserManager): UNIT_CHOICES = ( + ("Unit", _("Unit")), ("Kg", _("Kg")), ("L", _("L")), ("m", _("m")), @@ -555,11 +556,10 @@ class Dealer(models.Model, LocalizedNameMixin): @property def get_plan(self): - """Get the price of the active subscription plan for the dealer.""" active_plan = self.get_active_plan if active_plan: subscription_plan = SubscriptionPlan.objects.filter( - name=active_plan.plan + pk=active_plan.pk ).first() if subscription_plan: return subscription_plan @@ -588,10 +588,6 @@ class Dealer(models.Model, LocalizedNameMixin): # def get_root_dealer(self): # return self.parent_dealer if self.parent_dealer else self -# @receiver(post_save, sender=User) -# def create_dealer(instance, created, *args, **kwargs): -# if created: -# Dealer.objects.create(user=instance) class STAFF_TYPES(models.TextChoices): @@ -606,7 +602,7 @@ class STAFF_TYPES(models.TextChoices): class Staff(models.Model, LocalizedNameMixin): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="staff") - dealer = models.ForeignKey(Dealer, on_delete=models.SET_NULL, null=True, blank=True) + dealer = models.ForeignKey(Dealer, on_delete=models.CASCADE, related_name="staff") name = models.CharField(max_length=255, verbose_name=_("Name")) arabic_name = models.CharField(max_length=255, verbose_name=_("Arabic Name")) phone_number = PhoneNumberField(region="SA", verbose_name=_("Phone Number")) @@ -619,6 +615,11 @@ class Staff(models.Model, LocalizedNameMixin): verbose_name_plural = _("Staff") permissions = [] + def __str__(self): + return f"{self.name} - {self.dealer}" + + + # Vendor Model class Vendor(models.Model, LocalizedNameMixin): @@ -694,6 +695,7 @@ class Organization(models.Model, LocalizedNameMixin): phone_number = PhoneNumberField(region='SA', verbose_name=_("Phone Number")) address = models.CharField(max_length=200, blank=True, null=True, verbose_name=_("Address")) logo = models.ImageField(upload_to="logos", blank=True, null=True, verbose_name=_("Logo")) + created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("Created At")) class Meta: verbose_name = _("Organization") @@ -708,6 +710,7 @@ class Representative(models.Model, LocalizedNameMixin): arabic_name = models.CharField(max_length=255, verbose_name=_("Arabic Name")) id_number = models.CharField(max_length=10, verbose_name=_("ID Number")) phone_number = PhoneNumberField(region='SA', verbose_name=_("Phone Number")) + email = models.EmailField(max_length=255, verbose_name=_("Email Address")) address = models.CharField(max_length=200, blank=True, null=True, verbose_name=_("Address")) organization = models.ManyToManyField(Organization, related_name='representatives') @@ -929,4 +932,18 @@ class Refund(models.Model): verbose_name_plural = _("refunds") def __str__(self): - return f"Refund of {self.amount} on {self.refund_date}" \ No newline at end of file + return f"Refund of {self.amount} on {self.refund_date}" + + +class UserActivityLog(models.Model): + user = models.ForeignKey(User, on_delete=models.CASCADE) + action = models.TextField() + timestamp = models.DateTimeField(auto_now_add=True) + + class Meta: + verbose_name = "User Activity Log" + verbose_name_plural = "User Activity Logs" + ordering = ['-timestamp'] + + def __str__(self): + return f"{self.user.email} - {self.action} - {self.timestamp}" \ No newline at end of file diff --git a/inventory/signals.py b/inventory/signals.py index 95b760aa..bf402937 100644 --- a/inventory/signals.py +++ b/inventory/signals.py @@ -104,7 +104,7 @@ def create_ledger_entity(sender, instance, created, **kwargs): # Create Cash Account entity.create_account( coa_model=coa, - code="1010", + code="101", role=roles.ASSET_CA_CASH, name=_("Cash"), balance_type="debit", @@ -114,7 +114,7 @@ def create_ledger_entity(sender, instance, created, **kwargs): # Create Accounts Receivable Account entity.create_account( coa_model=coa, - code="1020", + code="102", role=roles.ASSET_CA_RECEIVABLES, name=_("Accounts Receivable"), balance_type="debit", @@ -124,7 +124,7 @@ def create_ledger_entity(sender, instance, created, **kwargs): # Create Inventory Account entity.create_account( coa_model=coa, - code="1030", + code="103", role=roles.ASSET_CA_INVENTORY, name=_("Inventory"), balance_type="debit", @@ -134,17 +134,26 @@ def create_ledger_entity(sender, instance, created, **kwargs): # Create Accounts Payable Account entity.create_account( coa_model=coa, - code="2010", + code="101", role=roles.LIABILITY_CL_ACC_PAYABLE, name=_("Accounts Payable"), balance_type="credit", active=True, ) + # Create Equity Account + entity.create_account( + coa_model=coa, + code="101", + role=roles.EQUITY_CAPITAL, + name=_("Partners Current"), + balance_type="credit", + active=True, + ) # Create Sales Revenue Account entity.create_account( coa_model=coa, - code="4010", + code="101", role=roles.INCOME_OPERATIONAL, name=_("Sales Revenue"), balance_type="credit", @@ -154,7 +163,7 @@ def create_ledger_entity(sender, instance, created, **kwargs): # Create Cost of Goods Sold Account entity.create_account( coa_model=coa, - code="5010", + code="101", role=roles.COGS, name=_("Cost of Goods Sold"), balance_type="debit", @@ -164,7 +173,7 @@ def create_ledger_entity(sender, instance, created, **kwargs): # Create Rent Expense Account entity.create_account( coa_model=coa, - code="6010", + code="101", role=roles.EXPENSE_OPERATIONAL, name=_("Rent Expense"), balance_type="debit", @@ -189,22 +198,22 @@ def create_ledger_vendor(sender, instance, created, **kwargs): if created: entity = EntityModel.objects.filter(name=instance.dealer.name).first() - VendorModel.objects.create( - entity_model=entity, - vendor_name=instance.name, - vendor_number=instance.crn, - address_1=instance.address, - phone=instance.phone_number, - tax_id_number=instance.vrn, - active=True, - hidden=False, - additional_info={ - "arabic_name": instance.arabic_name, - "contact_person": instance.contact_person, + entity.create_vendor( + vendor_model_kwargs={ + "vendor_name": instance.name, + "vendor_number": instance.crn, + "address_1": instance.address, + "phone": instance.phone_number, + "tax_id_number": instance.vrn, + "active": True, + "hidden": False, + "additional_info": { + "arabic_name": instance.arabic_name, + "contact_person": instance.contact_person, + } } ) - print(f"VendorModel created for Vendor: {instance.name}") @@ -232,25 +241,65 @@ def create_customer(sender, instance, created, **kwargs): # Create Item -@receiver(post_save, sender=models.Car) -def create_item_model(sender, instance, created, **kwargs): - item_name = f"{instance.year} - {instance.id_car_make} - {instance.id_car_model} - {instance.id_car_trim}" - dealer = instance.dealer - entity = dealer.entity - - if not entity: - return - - - uom = entity.get_uom_all() - - entity.create_item_product( - name=item_name, - uom_model=uom, - item_type=ItemModel.ITEM_TYPE_MATERIAL) - - print(f"ItemModel for Car:") - +# @receiver(post_save, sender=models.Car) +# def create_item_model(sender, instance, created, **kwargs): +# item_name = f"{instance.year} - {instance.id_car_make} - {instance.id_car_model} - {instance.id_car_trim}" +# uom_name = _("Car") +# unit_abbr = _("C") +# +# uom, uom_created = UnitOfMeasureModel.objects.get_or_create( +# name=uom_name, +# unit_abbr=unit_abbr +# ) +# +# if uom_created: +# print(f"UOM created: {uom_name}") +# else: +# print(f"Using existing UOM: {uom_name}") +# +# entity = EntityModel.objects.filter(name=instance.dealer.name).first() +# +# inventory_account = AccountModel.objects.first() +# cogs_account = AccountModel.objects.first() +# earnings_account = AccountModel.objects.first() +# +# entity.create_item_product( +# item_name=item_name, +# item_role=ItemModelAbstract.ITEM_ROLE_PRODUCT, +# item_type=ItemModelAbstract.ITEM_TYPE_MATERIAL, +# item_id=instance.vin, +# sold_as_unit=True, +# inventory_received=1.00, +# inventory_received_value=0.00, +# inventory_account=inventory_account, +# for_inventory=True,) +# +# item = ItemModel.objects.create( +# entity=entity, +# uom=uom, +# name=item_name, +# item_role=ItemModelAbstract.ITEM_ROLE_INVENTORY, +# item_type=ItemModelAbstract.ITEM_TYPE_MATERIAL, +# item_id=instance.vin, +# sold_as_unit=True, +# inventory_received=1.00, +# inventory_received_value=0.00, +# inventory_account=inventory_account, +# for_inventory=True, +# is_product_or_service=True, +# cogs_account=cogs_account, +# earnings_account=earnings_account, +# is_active=True, +# additional_info={ +# "remarks": instance.remarks, +# "status": instance.status, +# "stock_type": instance.stock_type, +# "mileage": instance.mileage, +# }, +# ) +# +# print(f"ItemModel {'created' if created else 'updated'} for Car: {item.name}") +# # # # update price - CarFinance # @receiver(post_save, sender=CarFinance) @@ -263,6 +312,7 @@ def create_item_model(sender, instance, created, **kwargs): # print(f"Inventory item updated with CarFinance data for Car: {instance.car}") + # @receiver(pre_save, sender=models.SaleQuotation) # def update_quotation_status(sender, instance, **kwargs): # if instance.valid_until and timezone.now() > instance.valid_until: diff --git a/inventory/urls.py b/inventory/urls.py index 75132c61..c94412b1 100644 --- a/inventory/urls.py +++ b/inventory/urls.py @@ -31,6 +31,7 @@ urlpatterns = [ # Dealer URLs path('dealers//', views.DealerDetailView.as_view(), name='dealer_detail'), path('dealers//update/', views.DealerUpdateView.as_view(), name='dealer_update'), + path('dealers/activity/', views.UserActivityLogListView.as_view(), name='dealer_activity'), # path('dealers//delete/', views.DealerDeleteView.as_view(), name='dealer_delete'), # Customer URLs @@ -87,11 +88,11 @@ urlpatterns = [ path('sales/quotations//payment/', views.payment_create, name='payment_create'), # Users URLs - # path('user/create/', views.UserCreateView.as_view(), name='user_create'), - # path('user//update/', views.UserUpdateView.as_view(), name='user_update'), - # path('user//', views.UserDetailView.as_view(), name='user_detail'), - # path('user/', views.UserListView.as_view(), name='user_list'), - # path('user//confirm/', views.UserDeleteview, name='user_delete'), + path('user/create/', views.UserCreateView.as_view(), name='user_create'), + path('user//update/', views.UserUpdateView.as_view(), name='user_update'), + path('user//', views.UserDetailView.as_view(), name='user_detail'), + path('user/', views.UserListView.as_view(), name='user_list'), + path('user//confirm/', views.UserDeleteview, name='user_delete'), # Organization URLs path('organizations/', views.OrganizationListView.as_view(), name='organization_list'), path('organizations//', views.OrganizationDetailView.as_view(), name='organization_detail'), diff --git a/inventory/utilities/financials.py b/inventory/utilities/financials.py index ffbb56de..a7ae39e2 100644 --- a/inventory/utilities/financials.py +++ b/inventory/utilities/financials.py @@ -24,7 +24,7 @@ def get_financial_value(name,vat=False): def get_total_financials(instance,vat=False): total = 0 if instance.additional_services.count() != 0: - total = sum(x.price for x in instance.additional_services) + instance.selling_price + total = sum(x.price for x in instance.additional_services.all()) + instance.selling_price if vat: total = (total * settings.VAT_RATE).quantize(Decimal('0.01')) + total return total diff --git a/inventory/views.py b/inventory/views.py index d3c6619b..b3eaff4c 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -1,14 +1,16 @@ +from django.core.paginator import Paginator from django.views.decorators.csrf import csrf_exempt from django_ledger.models import EntityModel, InvoiceModel,BankAccountModel,AccountModel,JournalEntryModel,TransactionModel,EstimateModel,CustomerModel from django_ledger.forms.bank_account import BankAccountCreateForm,BankAccountUpdateForm from django_ledger.forms.account import AccountModelCreateForm,AccountModelUpdateForm from django_ledger.forms.estimate import EstimateModelCreateForm - +from django.contrib.admin.models import LogEntry import logging import json import datetime from decimal import Decimal +from django.db.models.functions import Coalesce from django.shortcuts import HttpResponse from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.decorators import login_required @@ -48,6 +50,7 @@ from django.contrib.auth.models import Group from .utils import get_calculations from django.contrib.auth.models import User from allauth.account import views +from django.db.models import Count, F, Value logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) @@ -534,7 +537,7 @@ class CarLocationCreateView(CreateView): def form_valid(self, form): form.instance.car = get_object_or_404(models.Car, pk=self.kwargs["car_pk"]) - form.instance.OWNER = self.request.user.dealer + form.instance.owner = self.request.user.dealer form.save() messages.success(self.request, "Car saved successfully.") return super().form_valid(form) @@ -626,6 +629,13 @@ class DealerDetailView(LoginRequiredMixin, DetailView): template_name = "dealers/dealer_detail.html" context_object_name = "dealer" + def get_queryset(self): + total_count = models.Dealer.objects.annotate( + staff_count=Coalesce(Count('staff'), Value(0)), + total_count=F('staff_count') + Value(1)) + return total_count + + class DealerUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): model = models.Dealer @@ -1122,115 +1132,79 @@ class SalesOrderDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailVi # Users -# class UserListView(LoginRequiredMixin, PermissionRequiredMixin, ListView): -# model = models.Staff -# context_object_name = "users" -# paginate_by = 10 -# template_name = "users/user_list.html" -# permission_required = ("inventory.view_dealer",) -# -# def get_queryset(self): -# query = self.request.GET.get("q") -# users = self.request.user.dealer.staff.all() -# -# if query: -# users = users.filter( -# Q(name__icontains=query) -# | Q(arabic_name__icontains=query) -# | Q(phone_number__icontains=query) -# | Q(address__icontains=query) -# ) -# return users.all() -# -# -# class UserDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView): -# model = models.Staff -# template_name = "users/user_detail.html" -# context_object_name = "user_" -# permission_required = ("inventory.view_dealer",) +class UserListView(LoginRequiredMixin, PermissionRequiredMixin, ListView): + model = models.Staff + context_object_name = "users" + paginate_by = 10 + template_name = "users/user_list.html" + permission_required = ("inventory.view_dealer",) -# class UserCreateView( -# LoginRequiredMixin, -# PermissionRequiredMixin, -# SuccessMessageMixin, -# CreateView, -# ): -# model = models.Staff -# form_class = forms.UserForm -# template_name = "users/user_form.html" -# success_url = reverse_lazy("user_list") -# permission_required = ("inventory.add_dealer",) -# success_message = _("User created successfully.") -# -# def get_form(self, form_class=None): -# form = super().get_form(form_class) -# form.fields["staff_type"].choices = [ -# t for t in form.fields["staff_type"].choices if t[0] != "OWNER" -# ] -# return form -# -# def form_valid(self, form): -# dealer = self.request.user.dealer -# if dealer.sub_dealers.count() >= dealer.get_active_plan.max_users: -# messages.error( -# self.request, _("You have reached the maximum number of users.") -# ) -# return redirect("user_list") -# -# user = User.objects.create_user(username=form.cleaned_data["name"]) -# user.set_password("Tenhal@123") -# user.save() -# form.instance.user = user -# form.instance.parent_dealer = dealer -# for group in user.groups.all(): -# group.user_set.remove(user) -# Group.objects.get(name=form.cleaned_data["dealer_type"].lower()).user_set.add( -# user -# ) -# form.save() -# return super().form_valid(form) + +class UserDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView): + model = models.Staff + template_name = "users/user_detail.html" + context_object_name = "user_" + permission_required = ("inventory.view_dealer",) -# class UserUpdateView( -# LoginRequiredMixin, -# PermissionRequiredMixin, -# SuccessMessageMixin, -# UpdateView, -# ): -# model = models.Dealer -# form_class = forms.UserForm -# template_name = "users/user_form.html" -# success_url = reverse_lazy("user_list") -# permission_required = ("inventory.change_dealer",) -# success_message = _("User updated successfully.") -# -# def get_form(self, form_class=None): -# form = super().get_form(form_class) -# if not self.request.user.has_perms(["inventory.change_dealer_type"]): -# field = form.fields["dealer_type"] -# field.widget = field.hidden_widget() -# form.fields["dealer_type"].choices = [ -# t for t in form.fields["dealer_type"].choices if t[0] != "Owner" -# ] -# return form -# -# def form_valid(self, form): -# user = form.instance.user -# for group in user.groups.all(): -# group.user_set.remove(user) -# Group.objects.get(name=form.cleaned_data["dealer_type"].lower()).user_set.add( -# user -# ) -# form.save() -# return super().form_valid(form) +class UserCreateView( + LoginRequiredMixin, + PermissionRequiredMixin, + SuccessMessageMixin, + CreateView, +): + model = models.Staff + form_class = forms.StaffForm + template_name = "users/user_form.html" + success_url = reverse_lazy("user_list") + permission_required = ("inventory.add_dealer",) + success_message = _("User created successfully.") -# def UserDeleteview(request, pk): -# user = get_object_or_404(models.Dealer, pk=pk) -# user.delete() -# messages.success(request, _("User deleted successfully.")) -# return redirect("user_list") + def form_valid(self, form): + form.instance.dealer = self.request.user.dealer + email = form.cleaned_data['email'] + password = "Tenhal@123" + user = User.objects.create_user(username=email, email=email, password=password) + + staff = form.save(commit=False) + staff.user = user + staff.save() + + return super().form_valid(form) + + +class UserUpdateView( + LoginRequiredMixin, + PermissionRequiredMixin, + SuccessMessageMixin, + UpdateView, +): + model = models.Staff + form_class = forms.StaffForm + template_name = "users/user_form.html" + success_url = reverse_lazy("user_list") + permission_required = ("inventory.change_dealer",) + success_message = _("User updated successfully.") + + + def form_valid(self, form): + user = form.instance.user + for group in user.groups.all(): + group.user_set.remove(user) + Group.objects.get(name=form.cleaned_data["staff_type"].lower()).user_set.add( + user + ) + form.save() + return super().form_valid(form) + + +def UserDeleteview(request, pk): + user = get_object_or_404(models.Staff, pk=pk) + user.delete() + messages.success(request, _("User deleted successfully.")) + return redirect("user_list") # errors @@ -1254,6 +1228,8 @@ class OrganizationListView(LoginRequiredMixin, ListView): model = models.Organization template_name = "organizations/organization_list.html" context_object_name = "organizations" + paginate_by = 10 + class OrganizationDetailView(DetailView): @@ -1555,11 +1531,15 @@ class AccountListView(LoginRequiredMixin, ListView): model = AccountModel template_name = "ledger/coa_accounts/account_list.html" context_object_name = "accounts" + paginate_by = 10 def get_queryset(self): entity = self.request.user.dealer.entity qs = entity.get_all_accounts() - return qs + paginator = Paginator(qs,10) + page_number = self.request.GET.get('page', 1) # Default to page 1 + page_obj = paginator.get_page(page_number) + return page_obj class AccountCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView): @@ -1697,4 +1677,17 @@ class EstimateDetailView(LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): kwargs["total_unit_price"] = self.object.get_itemtxs_data()[0].first().ce_unit_cost_estimate * self.object.get_itemtxs_data()[0].first().ce_quantity - return super().get_context_data(**kwargs) \ No newline at end of file + return super().get_context_data(**kwargs) + + +class UserActivityLogListView(ListView): + model = models.UserActivityLog + template_name = 'dealers/activity_log.html' + context_object_name = 'logs' + paginate_by = 10 + + def get_queryset(self): + queryset = super().get_queryset() + if 'user' in self.request.GET: + queryset = queryset.filter(user__email=self.request.GET['user']) + return queryset \ No newline at end of file diff --git a/locale/ar/LC_MESSAGES/django.mo b/locale/ar/LC_MESSAGES/django.mo index fbf63379..363286bd 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 1e1e0483..b19d693f 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-28 12:56+0300\n" +"POT-Creation-Date: 2024-12-30 09:55+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,169 +19,183 @@ msgstr "" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: api/models.py:6 inventory/models.py:182 -#: templates/inventory/car_detail.html:92 templates/inventory/car_form.html:83 -#: templates/inventory/car_inventory.html:35 +#: api/models.py:6 inventory/models.py:183 +#: templates/inventory/car_detail.html:90 templates/inventory/car_form.html:86 +#: templates/inventory/car_inventory.html:29 #: templates/inventory/car_list.html:67 templates/inventory/car_list.html:69 #: templates/sales/quotation_detail.html:72 #: templates/sales/quotation_pdf.html:41 msgid "VIN" msgstr "رقم الهيكل" -#: car_inventory/settings.py:206 +#: car_inventory/settings.py:207 msgid "English" msgstr "الإنجليزية" -#: car_inventory/settings.py:207 +#: car_inventory/settings.py:208 msgid "Arabic" msgstr "العربية" -#: car_inventory/settings.py:267 templates/dashboards/accounting.html:35 +#: car_inventory/settings.py:268 templates/dashboards/accounting.html:35 #: templates/dashboards/accounting.html:39 -#: templates/dealers/dealer_detail.html:140 +#: templates/dealers/dealer_detail.html:130 msgid "SAR" msgstr "ريال سعودي" -#: inventory/forms.py:159 inventory/models.py:395 -#: templates/inventory/car_detail.html:164 +#: inventory/forms.py:166 inventory/models.py:396 +#: templates/inventory/car_detail.html:162 msgid "Custom Date" msgstr "تاريخ البطاقة الجمركية" -#: inventory/forms.py:208 +#: inventory/forms.py:216 msgid "Both exterior and interior colors must be selected." msgstr "يجب اختيار اللونين الخارجي والداخلي." -#: inventory/forms.py:277 +#: inventory/forms.py:285 msgid "You must add an email." msgstr "يجب إضافة بريد إلكتروني." -#: inventory/forms.py:283 +#: inventory/forms.py:291 #: venv/lib/python3.11/site-packages/django_ledger/forms/auth.py:15 msgid "Password" msgstr "كلمة المرور" -#: inventory/forms.py:287 inventory/forms.py:297 inventory/forms.py:344 -#: inventory/forms.py:375 inventory/forms.py:387 +#: inventory/forms.py:295 inventory/forms.py:305 inventory/forms.py:352 +#: inventory/forms.py:383 inventory/forms.py:395 #: venv/lib/python3.11/site-packages/django/forms/fields.py:95 msgid "This field is required." msgstr "هذا الحقل مطلوب." -#: inventory/forms.py:293 +#: inventory/forms.py:301 msgid "Confirm Password" msgstr "تأكيد كلمة المرور" -#: inventory/forms.py:308 +#: inventory/forms.py:316 msgid "You must accept the terms and privacy policy." msgstr "يجب أن تقبل الشروط وسياسة الخصوصية." -#: inventory/forms.py:317 inventory/models.py:524 inventory/models.py:632 +#: inventory/forms.py:325 inventory/models.py:525 inventory/models.py:634 msgid "English Name" msgstr "الاسم بالإنجليزية" -#: inventory/forms.py:321 +#: inventory/forms.py:329 msgid "Please enter an English Name." msgstr "يرجى إدخال اسم باللغة الإنجليزية." -#: inventory/forms.py:327 inventory/models.py:167 inventory/models.py:348 -#: inventory/models.py:361 inventory/models.py:523 inventory/models.py:631 -#: inventory/models.py:688 inventory/models.py:705 +#: inventory/forms.py:335 inventory/models.py:168 inventory/models.py:349 +#: inventory/models.py:362 inventory/models.py:524 inventory/models.py:607 +#: inventory/models.py:633 inventory/models.py:692 inventory/models.py:710 #: templates/users/user_detail.html:48 msgid "Arabic Name" msgstr "الاسم بالعربية" -#: inventory/forms.py:331 +#: inventory/forms.py:339 msgid "Please enter an Arabic name." msgstr "يرجى إدخال اسم باللغة العربية." -#: inventory/forms.py:339 templates/dealers/dealer_detail.html:109 +#: inventory/forms.py:347 templates/dealers/dealer_detail.html:99 #: templates/organizations/organization_detail.html:10 -#: templates/organizations/organization_list.html:20 +#: templates/organizations/organization_list.html:59 #: templates/representatives/representative_detail.html:9 #: templates/representatives/representative_list.html:19 msgid "Phone" msgstr "الهاتف" -#: inventory/forms.py:345 +#: inventory/forms.py:353 msgid "Phone number must be in the format 05xxxxxxxx" msgstr "يجب أن يكون رقم الهاتف بالصيغة 05xxxxxxxx" -#: inventory/forms.py:354 inventory/models.py:516 inventory/models.py:626 -#: inventory/models.py:689 templates/dealers/dealer_detail8.html:31 +#: inventory/forms.py:362 inventory/models.py:517 inventory/models.py:628 +#: inventory/models.py:693 msgid "Commercial Registration Number" msgstr "رقم السجل التجاري" -#: inventory/forms.py:369 inventory/models.py:520 inventory/models.py:629 -#: inventory/models.py:690 templates/dealers/dealer_detail8.html:35 +#: inventory/forms.py:377 inventory/models.py:521 inventory/models.py:631 +#: inventory/models.py:694 msgid "VAT Registration Number" msgstr "رقم التسجيل في ضريبة القيمة المضافة" -#: inventory/forms.py:376 +#: inventory/forms.py:384 msgid "VAT Registration Number must be 15 characters." msgstr "يجب أن يكون رقم التسجيل الضريبي مكونًا من 15 حرفًا." #: inventory/models.py:42 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:23 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:9 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:32 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:33 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:28 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:23 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:14 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:21 +msgid "Unit" +msgstr "الوحدة" + +#: inventory/models.py:43 msgid "Kg" msgstr "كجم" -#: inventory/models.py:43 +#: inventory/models.py:44 msgid "L" msgstr "لتر" -#: inventory/models.py:44 +#: inventory/models.py:45 msgid "m" msgstr "م" -#: inventory/models.py:45 +#: inventory/models.py:46 msgid "cm" msgstr "سم" -#: inventory/models.py:46 +#: inventory/models.py:47 msgid "m2" msgstr "متر مربع" -#: inventory/models.py:47 inventory/models.py:48 +#: inventory/models.py:48 inventory/models.py:49 msgid "m3" msgstr "متر مكعب" -#: inventory/models.py:55 +#: inventory/models.py:56 msgid "logo" msgstr "الشعار" -#: inventory/models.py:146 +#: inventory/models.py:147 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:21 msgid "Available" msgstr "متاح" -#: inventory/models.py:147 +#: inventory/models.py:148 msgid "Sold" msgstr "تم البيع" -#: inventory/models.py:148 +#: inventory/models.py:149 msgid "Hold" msgstr "في الانتظار" -#: inventory/models.py:149 +#: inventory/models.py:150 msgid "Damaged" msgstr "تالف" -#: inventory/models.py:150 +#: inventory/models.py:151 msgid "Reserved" msgstr "محجوزة" -#: inventory/models.py:154 +#: inventory/models.py:155 msgid "New" msgstr "جديد" -#: inventory/models.py:155 +#: inventory/models.py:156 msgid "Used" msgstr "مستعمل" -#: inventory/models.py:159 inventory/models.py:416 +#: inventory/models.py:160 inventory/models.py:417 msgid "Owner" msgstr "المالك" -#: inventory/models.py:160 inventory/signals.py:131 templates/base.html:110 -#: templates/base.html:115 templates/header.html:50 +#: inventory/models.py:161 inventory/models.py:595 inventory/signals.py:129 +#: templates/base.html:110 templates/base.html:115 templates/header.html:50 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:440 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:526 #: venv/lib/python3.11/site-packages/django_ledger/models/items.py:521 @@ -189,28 +203,29 @@ msgstr "المالك" msgid "Inventory" msgstr "المخزن" -#: inventory/models.py:161 +#: inventory/models.py:162 msgid "Accountent" msgstr "المحاسب" -#: inventory/models.py:162 +#: inventory/models.py:163 inventory/models.py:597 msgid "Sales" msgstr "المبيعات" -#: inventory/models.py:166 inventory/models.py:347 inventory/models.py:360 -#: inventory/models.py:687 inventory/models.py:704 -#: templates/dealers/dealer_detail8.html:26 -#: templates/organizations/organization_list.html:17 +#: inventory/models.py:167 inventory/models.py:348 inventory/models.py:361 +#: inventory/models.py:606 inventory/models.py:691 inventory/models.py:709 +#: templates/customers/customer_list.html:46 +#: templates/ledger/bank_accounts/bank_account_list.html:51 +#: templates/organizations/organization_list.html:46 #: templates/representatives/representative_list.html:17 #: templates/sales/quotation_detail.html:44 #: templates/sales/quotation_pdf.html:33 templates/users/user_detail.html:47 -#: templates/vendors/vendors_list.html:34 templates/vendors/view_vendor.html:46 +#: templates/vendors/vendors_list.html:46 templates/vendors/view_vendor.html:46 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:16 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:37 msgid "Name" msgstr "الاسم" -#: inventory/models.py:168 inventory/models.py:429 +#: inventory/models.py:169 inventory/models.py:430 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:17 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:38 #: venv/lib/python3.11/site-packages/django_ledger/models/data_import.py:61 @@ -223,30 +238,30 @@ msgstr "الاسم" msgid "Description" msgstr "الوصف" -#: inventory/models.py:169 templates/sales/quotation_detail.html:76 +#: inventory/models.py:170 templates/sales/quotation_detail.html:76 #: templates/sales/quotation_pdf.html:45 msgid "Price" msgstr "السعر" -#: inventory/models.py:170 +#: inventory/models.py:171 msgid "taxable" msgstr "خاضع للضريبة" -#: inventory/models.py:171 +#: inventory/models.py:172 msgid "Unit of Measurement" msgstr "وحدة القياس" -#: inventory/models.py:172 inventory/models.py:184 inventory/models.py:568 +#: inventory/models.py:173 inventory/models.py:185 inventory/models.py:569 msgid "Dealer" msgstr "المعرض" -#: inventory/models.py:175 inventory/models.py:176 +#: inventory/models.py:176 inventory/models.py:177 msgid "Additional Services" msgstr "الخدمات الإضافية" -#: inventory/models.py:193 inventory/models.py:643 -#: templates/inventory/car_detail.html:138 -#: templates/inventory/car_form.html:230 +#: inventory/models.py:194 inventory/models.py:647 +#: templates/inventory/car_detail.html:136 +#: templates/inventory/car_form.html:233 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:359 #: venv/lib/python3.11/site-packages/django_ledger/models/vendor.py:191 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:12 @@ -254,33 +269,34 @@ msgstr "الخدمات الإضافية" msgid "Vendor" msgstr "المورد" -#: inventory/models.py:201 +#: inventory/models.py:202 msgid "Make" msgstr "الصانع" -#: inventory/models.py:209 templates/sales/quotation_detail.html:73 +#: inventory/models.py:210 templates/sales/quotation_detail.html:73 #: templates/sales/quotation_pdf.html:42 msgid "Model" msgstr "الموديل" -#: inventory/models.py:211 templates/inventory/car_form.html:118 -#: templates/inventory/car_inventory.html:36 +#: inventory/models.py:212 templates/inventory/car_form.html:121 +#: templates/inventory/car_inventory.html:30 #: templates/sales/quotation_detail.html:74 #: templates/sales/quotation_pdf.html:43 msgid "Year" msgstr "السنة" -#: inventory/models.py:218 templates/inventory/car_form.html:182 +#: inventory/models.py:219 templates/inventory/car_form.html:185 msgid "Series" msgstr "السلسلة" -#: inventory/models.py:226 +#: inventory/models.py:227 msgid "Trim" msgstr "الفئة" -#: inventory/models.py:232 inventory/models.py:746 -#: templates/inventory/car_detail.html:116 +#: inventory/models.py:233 inventory/models.py:752 +#: templates/inventory/car_detail.html:114 #: templates/inventory/car_list.html:163 +#: templates/sales/estimates/estimate_list.html:17 #: templates/sales/quotation_detail.html:54 #: 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 @@ -291,274 +307,301 @@ msgstr "الفئة" msgid "Status" msgstr "الحالة" -#: inventory/models.py:238 templates/inventory/car_detail.html:120 -#: templates/inventory/car_form.html:248 templates/inventory/car_list.html:177 +#: inventory/models.py:239 templates/inventory/car_detail.html:118 +#: templates/inventory/car_form.html:251 templates/inventory/car_list.html:177 msgid "Stock Type" msgstr "نوع المخزون" -#: inventory/models.py:240 inventory/models.py:743 -#: templates/inventory/car_detail.html:143 -#: templates/inventory/car_form.html:301 templates/inventory/car_list.html:200 +#: inventory/models.py:241 inventory/models.py:749 +#: templates/inventory/car_detail.html:141 +#: templates/inventory/car_form.html:304 templates/inventory/car_list.html:200 #: templates/sales/quotation_detail.html:53 msgid "Remarks" msgstr "ملاحظات" -#: inventory/models.py:241 templates/inventory/car_detail.html:124 -#: templates/inventory/car_form.html:265 templates/inventory/car_list.html:191 +#: inventory/models.py:242 templates/inventory/car_detail.html:122 +#: templates/inventory/car_form.html:268 templates/inventory/car_list.html:191 #: templates/inventory/car_list.html:192 msgid "Mileage" msgstr "عدد الكيلومترات" -#: inventory/models.py:242 templates/inventory/car_detail.html:128 -#: templates/inventory/car_form.html:283 +#: inventory/models.py:243 templates/inventory/car_detail.html:126 +#: templates/inventory/car_form.html:286 msgid "Receiving Date" msgstr "تاريخ الاستلام" -#: inventory/models.py:245 inventory/models.py:286 inventory/models.py:393 -#: inventory/models.py:410 inventory/models.py:460 inventory/models.py:824 -#: inventory/signals.py:244 templates/sales/sales_order_detail.html:24 +#: inventory/models.py:246 inventory/models.py:287 inventory/models.py:394 +#: inventory/models.py:411 inventory/models.py:461 inventory/models.py:830 +#: templates/sales/sales_order_detail.html:24 msgid "Car" msgstr "السيارة" -#: inventory/models.py:246 templates/base.html:124 +#: inventory/models.py:247 templates/base.html:124 +#: templates/customers/view_customer.html:121 msgid "Cars" msgstr "السيارات" -#: inventory/models.py:287 templates/inventory/car_detail.html:328 +#: inventory/models.py:288 templates/inventory/car_detail.html:326 msgid "Reserved By" msgstr "محجوز بواسطة" -#: inventory/models.py:288 +#: inventory/models.py:289 msgid "Reserved At" msgstr "تاريخ الحجز" -#: inventory/models.py:289 +#: inventory/models.py:290 msgid "Reserved Until" msgstr "محجوز حتى" -#: inventory/models.py:297 templates/inventory/car_detail.html:38 +#: inventory/models.py:298 templates/inventory/car_detail.html:38 msgid "Car Reservation" msgstr "حجز السيارة" -#: inventory/models.py:298 +#: inventory/models.py:299 msgid "Car Reservations" msgstr "حجوزات السيارات" -#: inventory/models.py:304 templates/inventory/car_detail.html:219 +#: inventory/models.py:305 templates/inventory/car_detail.html:217 msgid "Cost Price" msgstr "سعر التكلفة" -#: inventory/models.py:305 templates/inventory/car_detail.html:224 +#: inventory/models.py:306 templates/inventory/car_detail.html:222 #: templates/sales/sales_order_detail.html:25 msgid "Selling Price" msgstr "سعر البيع" -#: inventory/models.py:306 templates/inventory/car_detail.html:228 +#: inventory/models.py:307 templates/inventory/car_detail.html:226 msgid "Discount Amount" msgstr "مبلغ الخصم" -#: inventory/models.py:343 inventory/models.py:344 +#: inventory/models.py:344 inventory/models.py:345 msgid "Car Financial Details" msgstr "تفاصيل المالية للسيارة" -#: inventory/models.py:349 inventory/models.py:362 +#: inventory/models.py:350 inventory/models.py:363 msgid "RGB" msgstr "آر جي بي" -#: inventory/models.py:352 inventory/models.py:353 +#: inventory/models.py:353 inventory/models.py:354 #: templates/inventory/add_colors.html:13 msgid "Exterior Colors" msgstr "الألوان الخارجية" -#: inventory/models.py:365 inventory/models.py:366 +#: inventory/models.py:366 inventory/models.py:367 #: templates/inventory/add_colors.html:32 msgid "Interior Colors" msgstr "الألوان الداخلية" -#: inventory/models.py:383 +#: inventory/models.py:384 msgid "Color" msgstr "اللون" -#: inventory/models.py:384 +#: inventory/models.py:385 msgid "Colors" msgstr "الألوان" -#: inventory/models.py:394 templates/inventory/car_detail.html:160 +#: inventory/models.py:395 templates/inventory/car_detail.html:158 msgid "Custom Number" msgstr "رقم البطاقة الجمركية" -#: inventory/models.py:398 templates/inventory/car_detail.html:23 -#: templates/inventory/car_detail.html:169 +#: inventory/models.py:399 templates/inventory/car_detail.html:23 +#: templates/inventory/car_detail.html:167 msgid "Custom Card" msgstr "البطاقة الجمركية" -#: inventory/models.py:399 +#: inventory/models.py:400 msgid "Custom Cards" msgstr "البطاقات الجمركية" -#: inventory/models.py:417 +#: inventory/models.py:418 msgid "Dealer who owns the car." msgstr "التاجر الذي يمتلك السيارة." -#: inventory/models.py:423 +#: inventory/models.py:424 msgid "Showroom" msgstr "صالة العرض" -#: inventory/models.py:424 +#: inventory/models.py:425 msgid "Dealer where the car is displayed (can be the owner)." msgstr "التاجر الذي تُعرض السيارة في صالته (يمكن أن يكون المالك)." -#: inventory/models.py:430 +#: inventory/models.py:431 msgid "Optional description about the showroom placement." msgstr "وصف اختياري حول وضع السيارة في صالة العرض." -#: inventory/models.py:434 inventory/models.py:748 inventory/models.py:880 +#: inventory/models.py:435 inventory/models.py:610 inventory/models.py:644 +#: inventory/models.py:698 inventory/models.py:754 inventory/models.py:886 #: templates/sales/quotation_list.html:18 msgid "Created At" msgstr "تاريخ الإنشاء" -#: inventory/models.py:438 +#: inventory/models.py:439 msgid "Last Updated" msgstr "آخر تحديث" -#: inventory/models.py:442 +#: inventory/models.py:443 msgid "Car Location" msgstr "موقع السيارة" -#: inventory/models.py:443 +#: inventory/models.py:444 msgid "Car Locations" msgstr "مواقف السيارات" -#: inventory/models.py:462 +#: inventory/models.py:463 msgid "Plate Number" msgstr "رقم اللوحة" -#: inventory/models.py:463 +#: inventory/models.py:464 msgid "Text 1" msgstr "النص 1" -#: inventory/models.py:464 +#: inventory/models.py:465 msgid "Text 2" msgstr "النص 2" -#: inventory/models.py:465 +#: inventory/models.py:466 msgid "Text 3" msgstr "النص 3" -#: inventory/models.py:466 +#: inventory/models.py:467 msgid "Registration Date" msgstr "تاريخ التسجيل" -#: inventory/models.py:469 +#: inventory/models.py:470 msgid "Registration" msgstr "التسجيل" -#: inventory/models.py:470 +#: inventory/models.py:471 msgid "Registrations" msgstr "تسجيل السيارات" -#: inventory/models.py:478 inventory/models.py:670 +#: inventory/models.py:479 inventory/models.py:674 +#: templates/sales/estimates/estimate_list.html:19 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:38 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:12 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:17 msgid "Created" msgstr "تاريخ الإنشاء" -#: inventory/models.py:479 +#: inventory/models.py:480 #: 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:525 inventory/models.py:634 inventory/models.py:665 -#: inventory/models.py:691 inventory/models.py:707 -#: templates/customers/view_customer.html:53 -#: templates/dealers/dealer_detail8.html:40 +#: inventory/models.py:526 inventory/models.py:608 inventory/models.py:636 +#: inventory/models.py:669 inventory/models.py:695 inventory/models.py:712 +#: templates/customers/customer_list.html:54 +#: templates/customers/view_customer.html:104 #: templates/sales/invoice/invoice_detail.html:53 #: templates/users/user_detail.html:51 templates/vendors/view_vendor.html:52 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:113 msgid "Phone Number" msgstr "رقم الهاتف" -#: inventory/models.py:529 inventory/models.py:636 inventory/models.py:668 -#: inventory/models.py:692 inventory/models.py:708 -#: templates/customers/view_customer.html:54 -#: templates/dealers/dealer_detail.html:93 -#: templates/dealers/dealer_detail8.html:44 +#: inventory/models.py:530 inventory/models.py:639 inventory/models.py:672 +#: inventory/models.py:696 inventory/models.py:714 +#: templates/customers/customer_list.html:64 +#: templates/customers/view_customer.html:99 +#: templates/dealers/dealer_detail.html:83 #: templates/organizations/organization_detail.html:11 +#: templates/organizations/organization_list.html:64 #: templates/representatives/representative_detail.html:10 #: templates/sales/invoice/invoice_detail.html:54 #: templates/sales/quotation_detail.html:46 -#: templates/sales/quotation_pdf.html:34 templates/users/user_detail.html:52 -#: templates/vendors/vendors_list.html:36 templates/vendors/view_vendor.html:58 +#: templates/sales/quotation_pdf.html:34 templates/vendors/vendors_list.html:64 +#: templates/vendors/view_vendor.html:58 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/tags/customer_table.html:10 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:11 msgid "Address" msgstr "العنوان" -#: inventory/models.py:533 inventory/models.py:639 inventory/models.py:693 -#: templates/vendors/vendors_list.html:35 +#: inventory/models.py:534 inventory/models.py:642 inventory/models.py:697 msgid "Logo" msgstr "الشعار" -#: inventory/models.py:535 +#: inventory/models.py:536 msgid "Joined At" msgstr "انضم في" -#: inventory/models.py:540 -msgid "Parent Dealer" -msgstr "المعرض الرئيسي" +#: inventory/models.py:537 inventory/models.py:611 inventory/models.py:755 +msgid "Updated At" +msgstr "تم التحديث" -#: inventory/models.py:544 -msgid "Dealer Type" -msgstr "نوع المعرض" - -#: inventory/models.py:569 +#: inventory/models.py:570 msgid "Dealers" msgstr "المعارض" -#: inventory/models.py:633 templates/vendors/view_vendor.html:49 +#: inventory/models.py:594 +#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3190 +msgid "Manager" +msgstr "مدير" + +#: inventory/models.py:596 +msgid "Accountant" +msgstr "محاسب" + +#: inventory/models.py:598 +msgid "Receptionist" +msgstr "إستقبال" + +#: inventory/models.py:599 +msgid "Technician" +msgstr "فني" + +#: inventory/models.py:600 +msgid "Driver" +msgstr "سائق" + +#: inventory/models.py:609 +msgid "Staff Type" +msgstr "نوع الموظف" + +#: inventory/models.py:614 inventory/models.py:615 templates/base.html:468 +msgid "Staff" +msgstr "الموظفون" + +#: inventory/models.py:635 templates/vendors/view_vendor.html:49 msgid "Contact Person" msgstr "الشخص المسؤول" -#: inventory/models.py:644 templates/header.html:158 templates/header.html:173 -#: templates/vendors/vendor_form.html:4 templates/vendors/vendors_list.html:4 -#: templates/vendors/vendors_list.html:5 templates/vendors/vendors_list.html:11 +#: inventory/models.py:637 inventory/models.py:713 +msgid "Email Address" +msgstr "عنوان البريد الإلكتروني" + +#: inventory/models.py:648 templates/base.html:135 templates/header.html:158 +#: templates/header.html:173 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:655 templates/customers/customer_list.html:51 -#: templates/customers/view_customer.html:46 -#: templates/sales/invoice/invoice_detail.html:46 +#: inventory/models.py:659 templates/sales/invoice/invoice_detail.html:46 msgid "First Name" msgstr "الاسم الأول" -#: inventory/models.py:657 templates/customers/customer_list.html:52 -#: templates/customers/view_customer.html:47 -#: templates/sales/invoice/invoice_detail.html:47 +#: inventory/models.py:661 templates/sales/invoice/invoice_detail.html:47 msgid "Middle Name" msgstr "اسم الأب" -#: inventory/models.py:659 templates/customers/customer_list.html:53 -#: templates/customers/view_customer.html:48 -#: templates/sales/invoice/invoice_detail.html:48 +#: inventory/models.py:663 templates/sales/invoice/invoice_detail.html:48 msgid "Last Name" msgstr "اسم العائلة" -#: inventory/models.py:660 templates/customers/view_customer.html:51 -#: templates/dealers/dealer_detail.html:103 +#: inventory/models.py:664 templates/customers/view_customer.html:102 +#: templates/dealers/dealer_detail.html:93 #: templates/sales/invoice/invoice_detail.html:51 #: templates/vendors/view_vendor.html:55 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:111 msgid "Email" msgstr "البريد الإلكتروني" -#: inventory/models.py:662 templates/customers/customer_list.html:54 -#: templates/customers/view_customer.html:52 +#: inventory/models.py:666 templates/customers/customer_list.html:59 #: templates/sales/invoice/invoice_detail.html:52 msgid "National ID" msgstr "رقم الهوية الوطنية" -#: inventory/models.py:673 inventory/models.py:735 +#: inventory/models.py:677 inventory/models.py:741 +#: templates/sales/estimates/estimate_list.html:16 #: templates/sales/quotation_list.html:15 #: templates/sales/sales_order_detail.html:12 #: venv/lib/python3.11/site-packages/django_ledger/models/customer.py:199 @@ -569,37 +612,42 @@ msgstr "رقم الهوية الوطنية" msgid "Customer" msgstr "العميل" -#: inventory/models.py:674 templates/customers/customer_list.html:3 -#: templates/customers/customer_list.html:6 +#: inventory/models.py:678 templates/customers/customer_form.html:4 +#: templates/customers/customer_list.html:4 +#: templates/customers/customer_list.html:5 +#: templates/customers/customer_list.html:12 +#: templates/ledger/bank_accounts/bank_account_list.html:6 msgid "Customers" msgstr "العملاء" -#: inventory/models.py:696 +#: inventory/models.py:701 msgid "Organization" -msgstr "منظمة" +msgstr "شركة" -#: inventory/models.py:697 templates/organizations/organization_list.html:3 -#: templates/organizations/organization_list.html:6 +#: inventory/models.py:702 templates/base.html:184 templates/base.html:189 +#: templates/base.html:198 templates/organizations/organization_list.html:4 +#: templates/organizations/organization_list.html:5 +#: templates/organizations/organization_list.html:12 msgid "Organizations" -msgstr "منظمات" +msgstr "الشركات" -#: inventory/models.py:706 +#: inventory/models.py:711 #: templates/representatives/representative_detail.html:8 #: templates/representatives/representative_list.html:18 msgid "ID Number" msgstr "رقم الهوية" -#: inventory/models.py:712 +#: inventory/models.py:718 msgid "Representative" -msgstr "ممثل" +msgstr "ممثل شركة" -#: inventory/models.py:713 templates/base.html:186 templates/header.html:121 +#: inventory/models.py:719 templates/base.html:210 templates/header.html:121 #: templates/representatives/representative_list.html:3 #: templates/representatives/representative_list.html:6 msgid "Representatives" -msgstr "ممثلون" +msgstr "ممثلي الشركات" -#: inventory/models.py:723 +#: inventory/models.py:729 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:338 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:223 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:299 @@ -607,7 +655,7 @@ msgstr "ممثلون" msgid "Draft" msgstr "مسودة" -#: inventory/models.py:724 +#: inventory/models.py:730 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:340 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:225 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:301 @@ -616,7 +664,7 @@ msgstr "مسودة" msgid "Approved" msgstr "تمت الموافقة" -#: inventory/models.py:725 +#: inventory/models.py:731 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:339 #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:224 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:300 @@ -624,28 +672,25 @@ msgstr "تمت الموافقة" msgid "In Review" msgstr "قيد المراجعة" -#: inventory/models.py:726 +#: inventory/models.py:732 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:341 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:302 msgid "Paid" msgstr "مدفوع" -#: inventory/models.py:741 +#: inventory/models.py:747 +#: templates/ledger/bank_accounts/bank_account_detail.html:50 #: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:491 #: 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/models.py:749 -msgid "Updated At" -msgstr "تم التحديث" - -#: inventory/models.py:752 +#: inventory/models.py:758 msgid "Payment ID" msgstr "معرف الدفع" -#: inventory/models.py:754 +#: inventory/models.py:760 #: venv/lib/python3.11/site-packages/django_ledger/forms/bill.py:49 #: venv/lib/python3.11/site-packages/django_ledger/forms/invoice.py:64 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:375 @@ -655,14 +700,14 @@ msgstr "معرف الدفع" msgid "Draft Date" msgstr "تاريخ المسودة" -#: inventory/models.py:755 +#: inventory/models.py:761 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:376 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:349 #: venv/lib/python3.11/site-packages/django_ledger/models/purchase_order.py:220 msgid "In Review Date" msgstr "تاريخ المراجعة" -#: inventory/models.py:756 +#: inventory/models.py:762 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:377 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:350 #: venv/lib/python3.11/site-packages/django_ledger/models/purchase_order.py:221 @@ -670,7 +715,7 @@ msgstr "تاريخ المراجعة" msgid "Approved Date" msgstr "تاريخ الموافقة" -#: inventory/models.py:757 +#: inventory/models.py:763 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:378 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:351 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:138 @@ -678,25 +723,25 @@ msgstr "تاريخ الموافقة" msgid "Paid Date" msgstr "تاريخ الدفع" -#: inventory/models.py:758 +#: inventory/models.py:764 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:379 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:352 #: venv/lib/python3.11/site-packages/django_ledger/models/purchase_order.py:222 msgid "Void Date" msgstr "تاريخ الإبطال" -#: inventory/models.py:759 +#: inventory/models.py:765 #: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:380 #: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:353 #: venv/lib/python3.11/site-packages/django_ledger/models/purchase_order.py:224 msgid "Canceled Date" msgstr "تاريخ الإلغاء" -#: inventory/models.py:819 inventory/models.py:878 +#: inventory/models.py:825 inventory/models.py:884 msgid "Quotation" msgstr "عزرص سعر" -#: inventory/models.py:826 templates/sales/quotation_detail.html:75 +#: inventory/models.py:832 templates/sales/quotation_detail.html:75 #: templates/sales/quotation_pdf.html:44 #: 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 @@ -710,113 +755,112 @@ msgstr "عزرص سعر" msgid "Quantity" msgstr "الكمية" -#: inventory/models.py:882 templates/sales/quotation_list.html:17 +#: inventory/models.py:888 templates/sales/quotation_list.html:17 #: templates/sales/sales_order_detail.html:16 #: templates/sales/sales_order_detail.html:27 msgid "Total Amount" msgstr "المبلغ الإجمالي" -#: inventory/models.py:891 +#: inventory/models.py:897 msgid "cash" msgstr "نقداً" -#: inventory/models.py:892 +#: inventory/models.py:898 msgid "credit" msgstr "دائن" -#: inventory/models.py:893 templates/inventory/car_detail.html:191 -#: templates/inventory/car_detail.html:385 +#: inventory/models.py:899 templates/inventory/car_detail.html:189 #: templates/inventory/transfer_car.html:23 msgid "transfer" msgstr "نقل" -#: inventory/models.py:894 +#: inventory/models.py:900 msgid "debit" msgstr "مدين" -#: inventory/models.py:895 +#: inventory/models.py:901 msgid "SADAD" msgstr "سداد" -#: inventory/models.py:898 inventory/models.py:920 +#: inventory/models.py:904 inventory/models.py:926 msgid "amount" msgstr "المبلغ" -#: inventory/models.py:899 +#: inventory/models.py:905 msgid "method" msgstr "طريقة" -#: inventory/models.py:900 +#: inventory/models.py:906 msgid "reference number" msgstr "رقم المرجع" -#: inventory/models.py:901 +#: inventory/models.py:907 msgid "date" msgstr "التاريخ" -#: inventory/models.py:911 +#: inventory/models.py:917 msgid "payment" msgstr "الدفعة" -#: inventory/models.py:912 templates/base.html:229 +#: inventory/models.py:918 templates/base.html:253 msgid "payments" msgstr "المدفوعات" -#: inventory/models.py:921 +#: inventory/models.py:927 msgid "reason" msgstr "السبب" -#: inventory/models.py:922 +#: inventory/models.py:928 msgid "refund date" msgstr "تاريخ الاسترداد" -#: inventory/models.py:925 +#: inventory/models.py:931 msgid "refund" msgstr "استرداد" -#: inventory/models.py:926 +#: inventory/models.py:932 msgid "refunds" msgstr "استردادات" -#: inventory/signals.py:111 +#: inventory/signals.py:109 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/includes/widget_bs.html:14 msgid "Cash" msgstr "نقداً" -#: inventory/signals.py:121 +#: inventory/signals.py:119 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:41 msgid "Accounts Receivable" msgstr "الحسابات المدينة" -#: inventory/signals.py:141 +#: inventory/signals.py:139 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:466 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:552 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:52 msgid "Accounts Payable" msgstr "الحسابات الدائنة" -#: inventory/signals.py:151 +#: inventory/signals.py:148 +msgid "Partners Current" +msgstr "جاري الشركاء" + +#: inventory/signals.py:158 msgid "Sales Revenue" msgstr "إيرادات المبيعات" -#: inventory/signals.py:161 +#: inventory/signals.py:168 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:497 #: venv/lib/python3.11/site-packages/django_ledger/io/roles.py:587 msgid "Cost of Goods Sold" msgstr "تكلفة البضائع المباعة" -#: inventory/signals.py:171 +#: inventory/signals.py:178 msgid "Rent Expense" msgstr "مصروف الإيجار" -#: inventory/signals.py:181 +#: inventory/signals.py:188 msgid "Utilities Expense" msgstr "مصروف الخدمات" -#: inventory/signals.py:245 -msgid "C" -msgstr "ج" - #: inventory/utils.py:28 msgid "success" msgstr "ناجحة" @@ -825,123 +869,118 @@ msgstr "ناجحة" msgid "error" msgstr "خطأ" -#: inventory/utils.py:30 templates/account/password_change.html:22 +#: inventory/utils.py:30 templates/account/password_change.html:27 msgid "Forgot Password?" msgstr "نسيت كلمة المرور؟" -#: inventory/views.py:323 templates/dashboards/accounting.html:21 +#: inventory/views.py:341 templates/dashboards/accounting.html:21 #: templates/header.html:33 templates/inventory/car_inventory.html:4 #: templates/inventory/car_inventory.html:7 msgid "inventory" msgstr "المخزون" -#: inventory/views.py:465 +#: inventory/views.py:483 msgid "Car finance details saved successfully." msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:481 +#: inventory/views.py:499 msgid "Car finance details updated successfully." msgstr "تم تحديث تفاصيل المالية للسيارة بنجاح." -#: inventory/views.py:496 +#: inventory/views.py:514 msgid "Car updated successfully." msgstr "تم تحديث السيارة بنجاح" -#: inventory/views.py:508 +#: inventory/views.py:526 msgid "Car deleted successfully." msgstr "تم حذف السيارة بنجاح." -#: inventory/views.py:553 +#: inventory/views.py:571 msgid "Custom Card added successfully." msgstr "تم إضافة البطاقة الجمركية بنجاح." -#: inventory/views.py:562 +#: inventory/views.py:580 msgid "This car is already reserved." msgstr "هذه السيارة محجوزة بالفعل." -#: inventory/views.py:570 +#: inventory/views.py:588 msgid "Car reserved successfully." msgstr "تم حجز السيارة بنجاح." -#: inventory/views.py:591 +#: inventory/views.py:609 msgid "Reservation renewed successfully." msgstr "تم تجديد الحجز بنجاح" -#: inventory/views.py:596 +#: inventory/views.py:614 msgid "Reservation canceled successfully." msgstr "تم إلغاء الحجز بنجاح." -#: inventory/views.py:601 +#: inventory/views.py:619 msgid "Invalid action." msgstr "إجراء غير صالح." -#: inventory/views.py:605 +#: inventory/views.py:623 msgid "Invalid request method." msgstr "طريقة الطلب غير صالحة" -#: inventory/views.py:620 +#: inventory/views.py:645 msgid "Dealer updated successfully." msgstr "تم تحديث المعرض بنجاح." -#: inventory/views.py:640 templates/base.html:135 templates/base.html:140 -#: templates/base.html:149 templates/customers/customer_form.html:4 -#: templates/header.html:62 templates/header.html:77 +#: inventory/views.py:665 templates/base.html:159 templates/base.html:164 +#: templates/base.html:173 templates/header.html:62 templates/header.html:77 msgid "customers" msgstr "العملاء" -#: inventory/views.py:684 +#: inventory/views.py:709 msgid "Customer created successfully." msgstr "تم إنشاء العميل بنجاح." -#: inventory/views.py:698 +#: inventory/views.py:728 msgid "Customer updated successfully." msgstr "تم تحديث العميل بنجاح." -#: inventory/views.py:705 +#: inventory/views.py:735 msgid "Customer deleted successfully." msgstr "تم حذف العميل بنجاح." -#: inventory/views.py:734 +#: inventory/views.py:764 msgid "Vendor created successfully." msgstr "تم إنشاء المورد بنجاح." -#: inventory/views.py:748 +#: inventory/views.py:784 msgid "Vendor updated successfully." msgstr "تم تحديث المورد بنجاح" -#: inventory/views.py:755 +#: inventory/views.py:791 msgid "Vendor deleted successfully." msgstr "تم حذف المورد بنجاح." -#: inventory/views.py:778 +#: inventory/views.py:814 msgid "Quotation created successfully." msgstr "تم إنشاء عرض السعر بنجاح." -#: inventory/views.py:1043 +#: inventory/views.py:1079 msgid "Quotation Approved" msgstr "تمت الموافقة على العرض" -#: inventory/views.py:1060 +#: inventory/views.py:1096 msgid "Quotation Paid" msgstr "تم دفع العرض" -#: inventory/views.py:1068 +#: inventory/views.py:1104 msgid "Quotation already approved." msgstr "تمت الموافقة على العرض بالفعل." -#: inventory/views.py:1083 +#: inventory/views.py:1119 msgid "Quotation confirmed and sales order created." msgstr "تم تأكيد عرض السعر وإنشاء أمر البيع." -#: inventory/views.py:1138 +#: inventory/views.py:1162 msgid "User created successfully." msgstr "تم إنشاء المستخدم بنجاح." -#: inventory/views.py:1151 -msgid "You have reached the maximum number of users." -msgstr "لقد وصلت إلى الحد الأقصى لعدد المستخدمين." - -#: inventory/views.py:1180 +#: inventory/views.py:1189 msgid "User updated successfully." msgstr "تم تحديث المستخدم بنجاح" @@ -949,32 +988,37 @@ msgstr "تم تحديث المستخدم بنجاح" msgid "User deleted successfully." msgstr "تم حذف المستخدم بنجاح." -#: templates/account/login.html:6 templates/account/login.html:16 -#: templates/account/login.html:28 templates/account/signup.html:75 -#: templates/base.html:462 templates/header.html:233 templates/index.html:96 +#: templates/account/login.html:6 templates/account/login.html:21 +#: templates/account/login.html:33 templates/account/signup.html:79 +#: templates/base.html:483 templates/header.html:233 templates/welcome.html:90 msgid "Sign In" msgstr "تسجيل الدخول" -#: templates/account/login.html:13 templates/account/password_change.html:10 -#: templates/account/password_reset.html:10 -#: templates/account/signup-wizard.html:10 templates/header.html:25 -#: templates/header.html:210 templates/index.html:84 +#: templates/account/login.html:15 templates/account/login.html:16 +#: templates/account/password_change.html:12 +#: templates/account/password_change.html:13 +#: templates/account/password_reset.html:12 +#: templates/account/password_reset.html:13 +#: templates/account/signup-wizard.html:11 +#: templates/account/signup-wizard.html:12 templates/account/signup.html:13 +#: templates/account/signup.html:14 templates/header.html:25 +#: templates/header.html:210 templates/welcome.html:78 msgid "home" msgstr "الرئيسية" -#: templates/account/login.html:33 +#: templates/account/login.html:38 msgid "If you have not created an account yet, then please" msgstr "إذا لم تقم بإنشاء حساب بعد، يرجى التسجيل أولاً." -#: templates/account/login.html:33 templates/account/signup-wizard.html:14 -#: templates/account/signup.html:5 templates/account/signup.html:74 -#: templates/base.html:463 templates/index.html:96 +#: templates/account/login.html:38 templates/account/signup-wizard.html:16 +#: templates/account/signup.html:5 templates/account/signup.html:78 +#: templates/base.html:484 templates/welcome.html:90 msgid "Sign Up" msgstr "إنشاء حساب" #: templates/account/logout.html:3 templates/account/logout.html:11 -#: templates/account/logout.html:20 templates/base.html:459 -#: templates/dealers/dealer_detail8.html:65 templates/header.html:227 +#: templates/account/logout.html:20 templates/base.html:480 +#: templates/header.html:227 msgid "Sign Out" msgstr "تسجيل الخروج" @@ -983,33 +1027,32 @@ msgid "Are you sure you want to sign out?" msgstr "هل أنت متأكد أنك تريد تسجيل الخروج؟" #: templates/account/password_change.html:3 -#: templates/account/password_change.html:13 -#: templates/account/password_change.html:26 -#: templates/dealers/dealer_detail.html:29 -#: templates/dealers/dealer_detail8.html:60 +#: templates/account/password_change.html:18 +#: templates/account/password_change.html:31 +#: templates/dealers/dealer_detail.html:21 msgid "Change Password" msgstr "تغيير كلمة المرور" -#: templates/account/password_change.html:14 +#: templates/account/password_change.html:19 msgid "Ensure your account is using a strong, unique password." msgstr "تأكد من أن حسابك يستخدم كلمة مرور قوية وفريدة." #: templates/account/password_reset.html:4 -#: templates/account/password_reset.html:14 +#: templates/account/password_reset.html:18 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:10 msgid "Password Reset" msgstr "إعادة تعيين كلمة المرور" -#: templates/account/password_reset.html:15 +#: templates/account/password_reset.html:19 msgid "Type your new password" msgstr "أدخل كلمة المرور الجديدة" -#: templates/account/password_reset.html:29 +#: templates/account/password_reset.html:33 msgid "Reset My Password" msgstr "إعادة تعيين كلمة المرور الخاصة بي" -#: templates/account/password_reset.html:32 +#: templates/account/password_reset.html:36 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "يرجى التواصل معنا إذا واجهت أي مشكلة في إعادة تعيين كلمة المرور الخاصة بك." @@ -1022,15 +1065,15 @@ msgstr "" "لقد أرسلنا لك رسالة بريد إلكتروني. إذا لم تتلقاها، يرجى التحقق من مجلد " "البريد الغير هام. وإذا لم تصلك في غضون بضع دقائق، يرجى التواصل معنا." -#: templates/account/signup-wizard.html:15 +#: templates/account/signup-wizard.html:17 msgid "Create your account today" msgstr "أنشئ حسابك اليوم" -#: templates/account/signup-wizard.html:22 +#: templates/account/signup-wizard.html:24 msgid "Access" msgstr "الوصول" -#: templates/account/signup-wizard.html:25 +#: templates/account/signup-wizard.html:27 #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:443 #: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:485 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_update.html:13 @@ -1040,71 +1083,66 @@ msgstr "الوصول" msgid "Account" msgstr "الحساب" -#: templates/account/signup-wizard.html:28 +#: templates/account/signup-wizard.html:30 msgid "Extra" msgstr "إضافي" -#: templates/account/signup-wizard.html:31 +#: templates/account/signup-wizard.html:33 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/je_detail_txs.html:59 msgid "Done" msgstr "تم" -#: templates/account/signup-wizard.html:59 +#: templates/account/signup-wizard.html:61 msgid "You are all set!" msgstr "كل شيء جاهز!" -#: templates/account/signup-wizard.html:60 +#: templates/account/signup-wizard.html:62 msgid "Now you can access your account" msgstr "الآن يمكنك الوصول إلى حسابك" -#: templates/account/signup-wizard.html:60 +#: templates/account/signup-wizard.html:62 msgid "anytime" msgstr "في أي وقت" -#: templates/account/signup-wizard.html:60 +#: templates/account/signup-wizard.html:62 msgid "anywhere" msgstr "في أي مكان" -#: templates/account/signup-wizard.html:60 +#: templates/account/signup-wizard.html:62 msgid "Submit" msgstr "إرسال" -#: templates/account/signup-wizard.html:69 -#: templates/customers/customer_list.html:89 +#: templates/account/signup-wizard.html:71 +#: templates/ledger/bank_accounts/bank_account_list.html:85 #: venv/lib/python3.11/site-packages/alabaster/relations.html:9 msgid "Previous" msgstr "السابق" -#: templates/account/signup-wizard.html:71 -#: templates/customers/customer_list.html:111 +#: templates/account/signup-wizard.html:73 +#: templates/ledger/bank_accounts/bank_account_list.html:107 #: venv/lib/python3.11/site-packages/alabaster/relations.html:13 msgid "Next" msgstr "التالي" -#: templates/account/signup-wizard.html:147 -#: templates/inventory/car_form.html:618 +#: templates/account/signup-wizard.html:149 +#: templates/inventory/car_form.html:621 msgid "Please Wait" msgstr "الرجاء الإنتظار" -#: templates/account/signup-wizard.html:148 -#: templates/inventory/car_form.html:619 +#: templates/account/signup-wizard.html:150 +#: templates/inventory/car_form.html:622 msgid "Loading" msgstr "تحميل" -#: templates/account/signup.html:11 templates/base.html:259 -#: templates/index.html:61 -msgid "Haikal" -msgstr "هيكل" - -#: templates/account/signup.html:23 +#: templates/account/signup.html:27 msgid "Sign up using a passkey" msgstr "إنشاء حساب باستخدام مفتاح المرور" -#: templates/account/signup.html:75 +#: templates/account/signup.html:79 msgid "Already have an account?" msgstr "هل لديك حساب بالفعل؟" -#: templates/base.html:16 templates/index.html:16 templates/welcome.html:24 +#: templates/auth_base.html:16 templates/base.html:16 templates/welcome.html:16 msgid "HAIKAL" msgstr "هيكل" @@ -1112,78 +1150,105 @@ msgstr "هيكل" msgid "add car" msgstr "إضافة سيارة" -#: templates/base.html:143 templates/header.html:69 +#: templates/base.html:140 templates/base.html:149 +msgid "vendors" +msgstr "الموردين" + +#: templates/base.html:143 +msgid "add vendor" +msgstr "إضافة مورد" + +#: templates/base.html:167 templates/header.html:69 msgid "add customer" msgstr "إضافة عميل" -#: templates/base.html:160 templates/base.html:165 templates/base.html:174 -#: templates/header.html:90 templates/header.html:105 -msgid "organizations" -msgstr "المنظمات" +#: templates/base.html:192 templates/organizations/organization_form.html:4 +#: templates/organizations/organization_form.html:7 +msgid "Add Organization" +msgstr "إضافة شركة" -#: templates/base.html:168 templates/header.html:97 -msgid "add organization" -msgstr "إضافة منظمة" - -#: templates/base.html:180 templates/header.html:113 +#: templates/base.html:204 templates/header.html:113 #: templates/representatives/representative_form.html:4 #: templates/representatives/representative_form.html:7 #: templates/representatives/representative_list.html:12 msgid "Add Representative" -msgstr "إضافة ممثل" +msgstr "إضافة ممثل شركة" -#: templates/base.html:197 templates/base.html:202 templates/header.html:132 +#: templates/base.html:221 templates/base.html:226 templates/header.html:132 msgid "sales" msgstr "المبيعات" -#: templates/base.html:205 templates/header.html:139 +#: templates/base.html:229 templates/header.html:139 msgid "create quotation" msgstr "إنشاء عرض" -#: templates/base.html:211 templates/header.html:147 +#: templates/base.html:235 templates/header.html:147 msgid "quotations" msgstr "العروض" -#: templates/base.html:217 +#: templates/base.html:241 msgid "orders" msgstr "الطلبات" -#: templates/base.html:223 +#: templates/base.html:247 msgid "invoices" msgstr "الفواتير" -#: templates/base.html:446 templates/header.html:224 +#: templates/base.html:280 templates/welcome.html:62 +msgid "Haikal" +msgstr "هيكل" + +#: templates/base.html:467 templates/header.html:224 msgid "profile" msgstr "الملف الشخصي" -#: templates/base.html:483 +#: templates/base.html:469 templates/dealers/activity_log.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:384 +#: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:325 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:33 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:10 +msgid "Activity" +msgstr "النشاط" + +#: templates/base.html:504 msgid "All right reserved" msgstr "جميع الحقوق محفوظة" -#: templates/base.html:483 +#: templates/base.html:504 msgid "tenhal" msgstr "تنحل" -#: templates/customers/customer_form.html:14 +#: templates/customers/customer_form.html:16 msgid "Edit Customer" msgstr "تحديث العميل" -#: templates/customers/customer_form.html:17 +#: templates/customers/customer_form.html:18 +#: templates/customers/customer_list.html:18 msgid "Add Customer" msgstr "إضافة عميل" -#: templates/customers/customer_form.html:31 +#: templates/customers/customer_form.html:36 +#: templates/organizations/organization_form.html:14 +#: templates/vendors/vendor_form.html:38 +msgid "cancel" +msgstr "إلغاء" + +#: templates/customers/customer_form.html:39 #: templates/inventory/add_colors.html:55 #: templates/inventory/add_custom_card.html:7 #: templates/inventory/car_edit.html:12 #: templates/inventory/car_finance_form.html:40 #: templates/inventory/car_location_form.html:18 #: templates/inventory/color_palette.html:106 -#: templates/organizations/organization_form.html:12 +#: templates/ledger/bank_accounts/bank_account_form.html:31 +#: templates/ledger/coa_accounts/account_form.html:30 +#: templates/organizations/organization_form.html:17 #: templates/representatives/representative_form.html:11 +#: templates/sales/estimates/estimate_form.html:53 #: templates/sales/payments/payment_create.html:16 #: templates/sales/quotation_form.html:18 templates/users/user_form.html:31 -#: templates/vendors/vendor_form.html:31 +#: templates/vendors/vendor_form.html:41 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:81 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/closing_entry_update.html:19 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/data_import/tags/data_import_job_txs_table.html:78 @@ -1194,131 +1259,72 @@ msgstr "إضافة عميل" msgid "Save" msgstr "حفظ" -#: templates/customers/customer_form.html:33 -#: templates/inventory/add_colors.html:56 -#: templates/inventory/add_custom_card.html:8 -#: templates/inventory/car_confirm_delete.html:14 -#: templates/inventory/car_detail.html:352 -#: templates/inventory/car_finance_form.html:41 -#: templates/inventory/color_palette.html:107 -#: templates/inventory/reserve_car.html:30 -#: templates/organizations/organization_form.html:13 -#: templates/representatives/representative_form.html:12 -#: templates/sales/quotation_form.html:19 templates/users/user_form.html:33 -#: templates/vendors/vendor_form.html:33 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_create.html:37 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:205 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/modals.html:11 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/modals_v2.html:9 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:188 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_create.html:42 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/card_po.html:121 -msgid "Cancel" -msgstr "إلغاء" - -#: templates/customers/customer_list.html:21 -#: templates/inventory/car_list.html:70 templates/users/user_list.html:19 -msgid "search" -msgstr "بحث" - #: templates/customers/customer_list.html:27 -msgid "Search customers..." -msgstr "ابحث عن العملاء..." +msgid "Enter customer name" +msgstr "أدخل اسم العميل" -#: templates/customers/customer_list.html:45 -msgid "Customers List" -msgstr "قائمة العملاء" - -#: templates/customers/customer_list.html:55 -#: templates/inventory/car_detail.html:330 -#: templates/inventory/car_inventory.html:40 -#: templates/organizations/organization_list.html:21 -#: templates/representatives/representative_list.html:20 -#: templates/sales/quotation_list.html:19 -#: templates/vendors/vendors_list.html:37 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/account_txs_table.html:29 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:29 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:92 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/tags/bank_accounts_table.html:39 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:16 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:13 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:36 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/tags/customer_table.html:13 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/data_import/tags/data_import_job_list_table.html:30 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:16 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:38 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/expense/tags/expense_item_table.html:13 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:27 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:57 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_table.html:39 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:16 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:16 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:94 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:15 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:15 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/uom/tags/uom_table.html:11 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/uom/tags/uom_table.html:33 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:14 -msgid "Actions" -msgstr "الإجراءات" +#: templates/customers/customer_list.html:49 +#: templates/vendors/vendors_list.html:49 +msgid "email" +msgstr "البريد الإلكتروني" #: templates/customers/customer_list.html:68 -#: templates/inventory/car_detail.html:154 -#: templates/inventory/car_inventory.html:76 -#: templates/organizations/organization_list.html:32 -#: templates/representatives/representative_list.html:30 -#: templates/sales/quotation_list.html:44 templates/users/user_list.html:60 -#: templates/vendors/vendors_list.html:56 -msgid "view" -msgstr "عرض" +#: templates/organizations/organization_list.html:68 +#: templates/vendors/vendors_list.html:68 +msgid "Create date" +msgstr "تاريخ الإنشاء" -#: templates/customers/customer_list.html:75 -msgid "No customers found." -msgstr "لم يتم العثور على عملاء." - -#: templates/customers/view_customer.html:4 -#: templates/sales/invoice/invoice_detail.html:4 -#: templates/users/user_detail.html:5 -msgid "View Customer" -msgstr "عرض العميل" +#: templates/customers/customer_list.html:87 +msgid "Delete Customer" +msgstr "حذف العميل" +#: templates/customers/customer_list.html:94 #: templates/customers/view_customer.html:19 #: templates/sales/invoice/invoice_detail.html:19 msgid "Are you sure you want to delete this customer?" msgstr "هل أنت متأكد أنك تريد حذف هذا العميل؟" +#: templates/customers/customer_list.html:97 #: templates/customers/view_customer.html:26 #: templates/inventory/car_detail.html:48 +#: templates/ledger/bank_accounts/bank_account_detail.html:26 +#: templates/ledger/coa_accounts/account_detail.html:26 +#: templates/ledger/coa_accounts/account_list.html:82 +#: templates/organizations/organization_list.html:97 #: templates/sales/invoice/invoice_detail.html:26 #: templates/sales/quotation_detail.html:21 templates/users/user_detail.html:27 -#: templates/vendors/view_vendor.html:29 +#: templates/vendors/vendors_list.html:97 templates/vendors/view_vendor.html:29 #: venv/lib/python3.11/site-packages/django/forms/widgets.py:802 msgid "No" msgstr "لا" +#: templates/customers/customer_list.html:100 #: templates/customers/view_customer.html:31 #: templates/inventory/car_detail.html:52 +#: templates/ledger/bank_accounts/bank_account_detail.html:31 +#: templates/ledger/coa_accounts/account_detail.html:32 +#: templates/ledger/coa_accounts/account_list.html:85 +#: templates/organizations/organization_list.html:100 #: templates/sales/invoice/invoice_detail.html:31 #: templates/sales/quotation_detail.html:25 templates/users/user_detail.html:32 +#: templates/vendors/vendors_list.html:100 #: templates/vendors/view_vendor.html:32 #: venv/lib/python3.11/site-packages/django/forms/widgets.py:801 msgid "Yes" msgstr "نعم" -#: templates/customers/view_customer.html:41 -#: templates/sales/invoice/invoice_detail.html:41 -#: templates/sales/quotation_detail.html:42 -#: templates/sales/quotation_pdf.html:32 -msgid "Customer Details" -msgstr "تفاصيل العميل" - -#: templates/customers/view_customer.html:61 -#: templates/inventory/car_detail.html:203 -#: templates/inventory/car_detail.html:387 +#: templates/customers/customer_list.html:127 +#: templates/dealers/dealer_detail.html:24 +#: templates/inventory/car_detail.html:201 +#: templates/ledger/bank_accounts/bank_account_detail.html:57 +#: templates/ledger/coa_accounts/account_detail.html:61 +#: templates/ledger/coa_accounts/account_list.html:113 #: templates/organizations/organization_detail.html:14 +#: templates/organizations/organization_list.html:128 #: templates/representatives/representative_detail.html:13 #: templates/sales/invoice/invoice_detail.html:61 -#: templates/users/user_detail.html:60 templates/vendors/view_vendor.html:64 +#: templates/users/user_detail.html:59 templates/vendors/vendors_list.html:135 +#: templates/vendors/view_vendor.html:64 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/includes/card_customer.html:28 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:83 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:101 @@ -1326,11 +1332,17 @@ msgstr "تفاصيل العميل" msgid "Edit" msgstr "تحديث" -#: templates/customers/view_customer.html:67 +#: templates/customers/customer_list.html:129 +#: templates/customers/view_customer.html:51 +#: templates/ledger/bank_accounts/bank_account_detail.html:63 +#: templates/ledger/coa_accounts/account_detail.html:67 +#: templates/ledger/coa_accounts/account_list.html:115 #: templates/organizations/organization_detail.html:17 +#: templates/organizations/organization_list.html:130 #: templates/representatives/representative_detail.html:16 #: templates/sales/invoice/invoice_detail.html:67 -#: templates/users/user_detail.html:66 templates/vendors/view_vendor.html:67 +#: templates/users/user_detail.html:65 templates/vendors/vendors_list.html:137 +#: templates/vendors/view_vendor.html:67 #: venv/lib/python3.11/site-packages/django/forms/formsets.py:499 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_delete.html:28 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:25 @@ -1361,86 +1373,17 @@ msgstr "تحديث" msgid "Delete" msgstr "حذف" -#: templates/customers/view_customer.html:72 -#: templates/inventory/car_detail.html:389 -#: templates/sales/invoice/invoice_detail.html:72 -#: templates/users/user_detail.html:71 -msgid "Back to List" -msgstr "العودة إلى القائمة" +#: templates/customers/view_customer.html:4 +#: templates/sales/invoice/invoice_detail.html:4 +#: templates/users/user_detail.html:5 +msgid "View Customer" +msgstr "عرض العميل" -#: templates/dashboards/accounting.html:30 -msgid "inventory value" -msgstr "قيمة المخزون" +#: templates/customers/view_customer.html:44 +msgid "Customer details" +msgstr "تفاصيل العميل" -#: templates/dashboards/accounting.html:34 -msgid "Profits" -msgstr "الأرباح" - -#: templates/dashboards/accounting.html:44 -msgid "Commissions" -msgstr "العمولات" - -#: templates/dealers/dealer_detail.html:23 -msgid "Profile" -msgstr "الملف الشخصي" - -#: templates/dealers/dealer_detail.html:55 -msgid "Joined" -msgstr "انضم" - -#: templates/dealers/dealer_detail.html:55 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:41 -msgid "ago" -msgstr "منذ" - -#: templates/dealers/dealer_detail.html:62 -msgid "last login" -msgstr "آخر تسجيل دخول" - -#: templates/dealers/dealer_detail.html:66 -msgid "Total users" -msgstr "إجمالي المستخدمين" - -#: templates/dealers/dealer_detail.html:70 -msgid "Subscription" -msgstr "الاشتراك" - -#: templates/dealers/dealer_detail.html:72 -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:433 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:26 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/tags/customer_table.html:11 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/uom/tags/uom_table.html:10 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:12 -msgid "Active" -msgstr "نشط" - -#: templates/dealers/dealer_detail.html:74 -#: templates/inventory/car_detail.html:358 -msgid "Expired" -msgstr "منتهي الصلاحية" - -#: templates/dealers/dealer_detail.html:86 -msgid "Default Address" -msgstr "العنوان الافتراضي" - -#: templates/dealers/dealer_detail.html:136 -msgid "most valuable" -msgstr "الأكثر قيمة" - -#: templates/dealers/dealer_detail.html:138 -msgid "Active until" -msgstr "نشط حتى" - -#: templates/dealers/dealer_detail8.html:5 -#: templates/dealers/dealer_detail8.html:14 -msgid "Dealer Details" -msgstr "تفاصيل المعرض" - -#: templates/dealers/dealer_detail8.html:45 -msgid "N/A" -msgstr "غير متوفر" - -#: templates/dealers/dealer_detail8.html:49 +#: templates/customers/view_customer.html:54 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:101 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_update.html:23 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/tags/bank_accounts_table.html:49 @@ -1472,13 +1415,94 @@ msgstr "غير متوفر" msgid "Update" msgstr "تحديث" -#: templates/dealers/dealer_detail8.html:56 -msgid "Account Management" -msgstr "إدارة الحساب" +#: templates/customers/view_customer.html:77 +msgid "Visits" +msgstr "الزيارات" -#: templates/dealers/dealer_detail8.html:71 -msgid "Admin Panel" -msgstr "لوحة التحكم الإدارية" +#: templates/customers/view_customer.html:81 +msgid "Calls" +msgstr "المكالمات" + +#: templates/customers/view_customer.html:85 +#: templates/sales/estimates/estimate_list.html:4 +#: templates/sales/estimates/estimate_list.html:8 +#: templates/sales/quotation_list.html:4 templates/sales/quotation_list.html:8 +msgid "Quotations" +msgstr "العروض" + +#: templates/customers/view_customer.html:96 +#: templates/dealers/dealer_detail.html:78 +msgid "Default Address" +msgstr "العنوان الافتراضي" + +#: templates/customers/view_customer.html:111 +msgid "Notes on Customer" +msgstr "ملاحظات عن العميل" + +#: templates/customers/view_customer.html:113 +msgid "Add Note" +msgstr "إضافة ملاحظة" + +#: templates/dashboards/accounting.html:30 +msgid "inventory value" +msgstr "قيمة المخزون" + +#: templates/dashboards/accounting.html:34 +msgid "Profits" +msgstr "الأرباح" + +#: templates/dashboards/accounting.html:44 +msgid "Commissions" +msgstr "العمولات" + +#: templates/dealers/dealer_detail.html:15 +msgid "Profile" +msgstr "الملف الشخصي" + +#: templates/dealers/dealer_detail.html:47 +msgid "Joined" +msgstr "انضم" + +#: templates/dealers/dealer_detail.html:47 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:41 +msgid "ago" +msgstr "منذ" + +#: templates/dealers/dealer_detail.html:54 +msgid "last login" +msgstr "آخر تسجيل دخول" + +#: templates/dealers/dealer_detail.html:58 +msgid "Total users" +msgstr "إجمالي المستخدمين" + +#: templates/dealers/dealer_detail.html:62 +msgid "Subscription" +msgstr "الاشتراك" + +#: templates/dealers/dealer_detail.html:64 +#: templates/ledger/coa_accounts/account_detail.html:54 +#: templates/ledger/coa_accounts/account_list.html:53 +#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:433 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:26 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/tags/customer_table.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/uom/tags/uom_table.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:12 +msgid "Active" +msgstr "نشط" + +#: templates/dealers/dealer_detail.html:66 +#: templates/inventory/car_detail.html:356 +msgid "Expired" +msgstr "منتهي الصلاحية" + +#: templates/dealers/dealer_detail.html:126 +msgid "most valuable" +msgstr "الأكثر قيمة" + +#: templates/dealers/dealer_detail.html:128 +msgid "Active until" +msgstr "نشط حتى" #: templates/dealers/dealer_form.html:5 templates/dealers/dealer_form.html:14 msgid "Update Dealer Information" @@ -1563,7 +1587,16 @@ msgstr "إرسال" msgid "You" msgstr "أنت" -#: templates/header.html:165 templates/vendors/vendor_form.html:17 +#: templates/header.html:90 templates/header.html:105 +msgid "organizations" +msgstr "الشركات" + +#: templates/header.html:97 templates/organizations/organization_list.html:18 +msgid "add organization" +msgstr "إضافة شركة" + +#: templates/header.html:165 templates/vendors/vendor_form.html:20 +#: templates/vendors/vendors_list.html:18 msgid "Add Vendor" msgstr "إضافة مورد" @@ -1587,7 +1620,29 @@ msgstr "إضافة لون" msgid "Select exterior and interior colors for" msgstr "اختر الألوان الخارجية والداخلية لـ" -#: templates/inventory/car_detail.html:5 templates/inventory/car_detail.html:88 +#: templates/inventory/add_colors.html:56 +#: templates/inventory/add_custom_card.html:8 +#: templates/inventory/car_confirm_delete.html:14 +#: templates/inventory/car_detail.html:350 +#: templates/inventory/car_finance_form.html:41 +#: templates/inventory/color_palette.html:107 +#: templates/inventory/reserve_car.html:30 +#: templates/ledger/bank_accounts/bank_account_form.html:33 +#: templates/ledger/coa_accounts/account_form.html:32 +#: templates/representatives/representative_form.html:12 +#: templates/sales/estimates/estimate_form.html:54 +#: templates/sales/quotation_form.html:19 templates/users/user_form.html:33 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_create.html:37 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/includes/card_bill.html:205 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/modals.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/components/modals_v2.html:9 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/includes/card_invoice.html:188 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_create.html:42 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/card_po.html:121 +msgid "Cancel" +msgstr "إلغاء" + +#: templates/inventory/car_detail.html:5 templates/inventory/car_detail.html:86 #: templates/sales/quotation_detail.html:68 #: templates/sales/quotation_pdf.html:37 msgid "Car Details" @@ -1598,82 +1653,92 @@ msgid "Are you sure you want to reserve this car?" msgstr "هل أنت متأكد أنك تريد حجز هذه السيارة؟" #: templates/inventory/car_detail.html:66 -#: templates/inventory/car_detail.html:147 templates/inventory/car_form.html:37 -#: templates/inventory/car_form.html:322 templates/inventory/car_list.html:47 +#: templates/inventory/car_detail.html:145 templates/inventory/car_form.html:37 +#: templates/inventory/car_form.html:325 templates/inventory/car_list.html:47 #: templates/inventory/car_list.html:221 msgid "specifications" msgstr "المواصفات" #: templates/inventory/car_detail.html:73 templates/inventory/car_form.html:42 -#: templates/inventory/car_form.html:58 templates/partials/scanner_modal.html:6 +#: templates/inventory/car_form.html:49 templates/inventory/car_form.html:61 +#: templates/partials/scanner_modal.html:6 #: templates/partials/specifications_modal.html:8 msgid "Close" msgstr "إغلاق" -#: templates/inventory/car_detail.html:96 templates/inventory/car_list.html:119 +#: templates/inventory/car_detail.html:94 templates/inventory/car_list.html:119 msgid "year" msgstr "السنة" -#: templates/inventory/car_detail.html:100 -#: templates/inventory/car_form.html:140 templates/inventory/car_list.html:79 +#: templates/inventory/car_detail.html:98 templates/inventory/car_form.html:143 +#: templates/inventory/car_list.html:79 msgid "make" msgstr "الصانع" -#: templates/inventory/car_detail.html:104 -#: templates/inventory/car_form.html:159 templates/inventory/car_list.html:97 +#: templates/inventory/car_detail.html:102 +#: templates/inventory/car_form.html:162 templates/inventory/car_list.html:97 msgid "model" msgstr "الموديل" -#: templates/inventory/car_detail.html:108 +#: templates/inventory/car_detail.html:106 #: templates/inventory/car_list.html:130 msgid "series" msgstr "السلسلة" -#: templates/inventory/car_detail.html:112 -#: templates/inventory/car_form.html:204 templates/inventory/car_list.html:141 +#: templates/inventory/car_detail.html:110 +#: templates/inventory/car_form.html:207 templates/inventory/car_list.html:141 msgid "trim" msgstr "الفئة" -#: templates/inventory/car_detail.html:133 +#: templates/inventory/car_detail.html:131 msgid "Branch" msgstr "الفرع" -#: templates/inventory/car_detail.html:175 -#: templates/inventory/car_detail.html:196 +#: templates/inventory/car_detail.html:152 +#: templates/inventory/car_inventory.html:70 +#: templates/ledger/bank_accounts/bank_account_list.html:64 +#: templates/representatives/representative_list.html:30 +#: templates/sales/estimates/estimate_list.html:34 +#: templates/sales/quotation_list.html:44 templates/users/user_list.html:58 +msgid "view" +msgstr "عرض" + +#: templates/inventory/car_detail.html:173 +#: templates/inventory/car_detail.html:194 #: templates/inventory/car_location_form.html:10 msgid "Add" msgstr "إضافة" -#: templates/inventory/car_detail.html:181 -#: templates/inventory/car_inventory.html:39 +#: templates/inventory/car_detail.html:179 +#: templates/inventory/car_inventory.html:33 msgid "Showroom Location" msgstr "موقع صالة العرض" -#: templates/inventory/car_detail.html:185 -#: templates/inventory/car_inventory.html:70 +#: templates/inventory/car_detail.html:183 +#: templates/inventory/car_inventory.html:64 msgid "Our Showroom" msgstr "معرضنا" -#: templates/inventory/car_detail.html:193 +#: templates/inventory/car_detail.html:191 msgid "No location available." msgstr "لا يوجد موقع متاح." -#: templates/inventory/car_detail.html:210 +#: templates/inventory/car_detail.html:208 msgid "Financial Details" msgstr "التفاصيل المالية" -#: templates/inventory/car_detail.html:232 +#: templates/inventory/car_detail.html:230 msgid "Additional Fee" msgstr "رسوم إضافية" -#: templates/inventory/car_detail.html:244 +#: templates/inventory/car_detail.html:242 #: templates/sales/quotation_detail.html:111 #: templates/sales/quotation_pdf.html:67 #: templates/sales/sales_order_detail.html:26 msgid "VAT Amount" msgstr "مبلغ ضريبة القيمة المضافة" -#: templates/inventory/car_detail.html:248 +#: templates/inventory/car_detail.html:246 #: templates/inventory/inventory_stats.html:61 #: templates/sales/quotation_detail.html:78 #: templates/sales/quotation_pdf.html:47 @@ -1694,62 +1759,94 @@ msgstr "مبلغ ضريبة القيمة المضافة" msgid "Total" msgstr "الإجمالي" -#: templates/inventory/car_detail.html:256 +#: templates/inventory/car_detail.html:254 msgid "Edit Finance Details" msgstr "تعديل التفاصيل المالية" -#: templates/inventory/car_detail.html:261 +#: templates/inventory/car_detail.html:259 msgid "No finance details available." msgstr "لا توجد تفاصيل مالية متاحة." -#: templates/inventory/car_detail.html:264 +#: templates/inventory/car_detail.html:262 msgid "Add Finance Details" msgstr "إضافة التفاصيل المالية" -#: templates/inventory/car_detail.html:273 +#: templates/inventory/car_detail.html:271 msgid "Colors Details" msgstr "تفاصيل الألوان" -#: templates/inventory/car_detail.html:280 +#: templates/inventory/car_detail.html:278 msgid "Exterior" msgstr "الخارجي" -#: templates/inventory/car_detail.html:291 +#: templates/inventory/car_detail.html:289 msgid "Interior" msgstr "الداخلي" -#: templates/inventory/car_detail.html:305 +#: templates/inventory/car_detail.html:303 msgid "No colors available for this car." msgstr "لا تتوفر ألوان لهذه السيارة." -#: templates/inventory/car_detail.html:311 +#: templates/inventory/car_detail.html:309 msgid "Get Colors" msgstr "الحصول على الألوان" -#: templates/inventory/car_detail.html:322 +#: templates/inventory/car_detail.html:320 msgid "Reservations Details" msgstr "تفاصيل الحجز" -#: templates/inventory/car_detail.html:329 +#: templates/inventory/car_detail.html:327 msgid "Expires At" msgstr "ينتهي في" -#: templates/inventory/car_detail.html:346 +#: templates/inventory/car_detail.html:328 +#: templates/inventory/car_inventory.html:34 +#: templates/ledger/bank_accounts/bank_account_list.html:53 +#: templates/representatives/representative_list.html:20 +#: templates/sales/estimates/estimate_list.html:20 +#: templates/sales/quotation_list.html:19 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/account_txs_table.html:29 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:29 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:92 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/tags/bank_accounts_table.html:39 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:16 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:13 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_table.html:36 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/customer/tags/customer_table.html:13 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/data_import/tags/data_import_job_list_table.html:30 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:16 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:38 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/expense/tags/expense_item_table.html:13 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:27 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:57 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_table.html:39 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:16 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:16 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:94 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:15 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:15 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/uom/tags/uom_table.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/uom/tags/uom_table.html:33 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:14 +msgid "Actions" +msgstr "الإجراءات" + +#: templates/inventory/car_detail.html:344 msgid "Renew" msgstr "تجديد" -#: templates/inventory/car_detail.html:371 +#: templates/inventory/car_detail.html:369 #: templates/inventory/reserve_car.html:29 msgid "Reserve" msgstr "حجز" -#: templates/inventory/car_detail.html:468 +#: templates/inventory/car_detail.html:455 #: templates/inventory/car_list.html:542 #: templates/partials/specifications_modal.html:11 msgid "No specifications available." msgstr "لا توجد مواصفات متاحة." -#: templates/inventory/car_detail.html:472 +#: templates/inventory/car_detail.html:459 #: templates/inventory/car_list.html:546 msgid "Error loading specifications." msgstr "حدث خطأ أثناء تحميل المواصفات." @@ -1766,70 +1863,67 @@ msgstr "التفاصيل المالية السيارة" msgid "Finance Details for" msgstr "التفاصيل المالية لـ" -#: templates/inventory/car_form.html:57 +#: templates/inventory/car_form.html:60 msgid "scanner" msgstr "الماسح الضوئي" -#: templates/inventory/car_form.html:62 +#: templates/inventory/car_form.html:65 #: templates/partials/scanner_modal.html:10 msgid "VIN will appear here." msgstr "رقم الهيكل سيظهر هنا." -#: templates/inventory/car_form.html:63 +#: templates/inventory/car_form.html:66 #: templates/partials/scanner_modal.html:11 msgid "Use OCR Fallback" msgstr "التعرف الآلي على الحروف" -#: templates/inventory/car_form.html:100 -#: templates/organizations/organization_list.html:9 -#: templates/organizations/organization_list.html:10 +#: templates/inventory/car_form.html:103 #: templates/representatives/representative_list.html:9 #: templates/representatives/representative_list.html:10 -#: templates/vendors/vendors_list.html:15 msgid "Search" msgstr "بحث" -#: templates/inventory/car_form.html:165 templates/inventory/car_form.html:187 -#: templates/inventory/car_form.html:209 templates/inventory/car_form.html:510 -#: templates/inventory/car_form.html:529 templates/inventory/car_form.html:530 -#: templates/inventory/car_form.html:548 +#: templates/inventory/car_form.html:168 templates/inventory/car_form.html:190 +#: templates/inventory/car_form.html:212 templates/inventory/car_form.html:513 +#: templates/inventory/car_form.html:532 templates/inventory/car_form.html:533 +#: templates/inventory/car_form.html:551 msgid "Select" msgstr "اختيار" -#: templates/inventory/car_form.html:329 +#: templates/inventory/car_form.html:332 msgid "Save and Add Another" msgstr "حفظ وإضافة آخر" -#: templates/inventory/car_form.html:335 +#: templates/inventory/car_form.html:338 msgid "Save and Go to Inventory" msgstr "حفظ والانتقال إلى المخزون" -#: templates/inventory/car_form.html:416 templates/inventory/car_form.html:417 +#: templates/inventory/car_form.html:419 templates/inventory/car_form.html:420 msgid "Please enter a valid VIN." msgstr "الرجاء إدخال رقم هيكل صالح مكون من 17 حرفًا." -#: templates/inventory/car_form.html:435 +#: templates/inventory/car_form.html:438 msgid "Failed to decode VIN." msgstr "فشل في فك تشفير رقم الهيكل" -#: templates/inventory/car_form.html:440 templates/inventory/car_form.html:441 +#: templates/inventory/car_form.html:443 templates/inventory/car_form.html:444 msgid "An error occurred while decoding the VIN." msgstr "حدث خطأ أثناء فك تشفير الهيكل" -#: templates/inventory/car_inventory.html:37 +#: templates/inventory/car_inventory.html:31 msgid "Exterior Color" msgstr "اللون الخارجي" -#: templates/inventory/car_inventory.html:38 +#: templates/inventory/car_inventory.html:32 msgid "Interior Color" msgstr "اللون الداخلي" -#: templates/inventory/car_inventory.html:66 -#: templates/inventory/car_inventory.html:67 +#: templates/inventory/car_inventory.html:60 +#: templates/inventory/car_inventory.html:61 msgid "No Color" msgstr "بدون لون" -#: templates/inventory/car_inventory.html:82 +#: templates/inventory/car_inventory.html:76 msgid "No cars available." msgstr "لا توجد سيارات متاحة." @@ -1837,6 +1931,13 @@ msgstr "لا توجد سيارات متاحة." msgid "options" msgstr "الخيارات" +#: templates/inventory/car_list.html:70 +#: templates/ledger/bank_accounts/bank_account_list.html:21 +#: templates/ledger/coa_accounts/account_list.html:21 +#: templates/users/user_list.html:19 +msgid "search" +msgstr "بحث" + #: templates/inventory/car_list.html:81 templates/inventory/car_list.html:99 #: templates/inventory/car_list.html:110 templates/inventory/car_list.html:121 #: templates/inventory/car_list.html:132 templates/inventory/car_list.html:143 @@ -1962,29 +2063,195 @@ msgstr "نقل السيارة" msgid "transfer car" msgstr "نقل السيارة" +#: templates/ledger/bank_accounts/bank_account_detail.html:4 +msgid "View Bank Account" +msgstr "عرض الحساب البنكي" + +#: templates/ledger/bank_accounts/bank_account_detail.html:19 +msgid "Are you sure you want to delete this bank account?" +msgstr "هل أنت متأكد أنك تريد حذف هذا الحساب البنكي؟" + +#: templates/ledger/bank_accounts/bank_account_detail.html:41 +#: templates/ledger/coa_accounts/account_detail.html:44 +msgid "Bank Account Details" +msgstr "تفاصيل الحساب البنكي" + +#: templates/ledger/bank_accounts/bank_account_detail.html:46 +msgid "Bank Account Name" +msgstr "اسم الحساب البنكي" + +#: templates/ledger/bank_accounts/bank_account_detail.html:47 +#: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:83 +#: venv/lib/python3.11/site-packages/django_ledger/models/bank_account.py:129 +#: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:322 +#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:222 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:31 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:30 +msgid "Cash Account" +msgstr "حساب نقدي" + +#: templates/ledger/bank_accounts/bank_account_detail.html:68 +#: templates/ledger/coa_accounts/account_detail.html:72 +#: templates/sales/invoice/invoice_detail.html:72 +#: templates/users/user_detail.html:70 +msgid "Back to List" +msgstr "العودة إلى القائمة" + +#: templates/ledger/bank_accounts/bank_account_form.html:4 +msgid "bank account" +msgstr "الحساب المصرفي" + +#: templates/ledger/bank_accounts/bank_account_form.html:14 +msgid "Edit Bank Account" +msgstr "تحديث الحساب المصرفي" + +#: templates/ledger/bank_accounts/bank_account_form.html:17 +msgid "Add Bank Account" +msgstr "إضافة حساب بنكي" + +#: templates/ledger/bank_accounts/bank_account_list.html:3 +#: venv/lib/python3.11/site-packages/django_ledger/views/bank_account.py:33 +msgid "Bank Accounts" +msgstr "الحسابات المصرفية" + +#: templates/ledger/bank_accounts/bank_account_list.html:27 +#: templates/ledger/coa_accounts/account_list.html:27 +msgid "Search accounts..." +msgstr "ابحث عن العملاء..." + +#: templates/ledger/bank_accounts/bank_account_list.html:45 +msgid "Customers List" +msgstr "قائمة العملاء" + +#: templates/ledger/bank_accounts/bank_account_list.html:52 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:8 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:8 +msgid "Type" +msgstr "النوع" + +#: templates/ledger/bank_accounts/bank_account_list.html:71 +msgid "No customers found." +msgstr "لم يتم العثور على عملاء." + +#: templates/ledger/coa_accounts/account_detail.html:4 +msgid "View Account" +msgstr "عرض الحساب" + +#: templates/ledger/coa_accounts/account_detail.html:19 +msgid "Are you sure you want to delete this account?" +msgstr "هل أنت متأكد أنك تريد حذف هذا الحساب؟" + +#: templates/ledger/coa_accounts/account_detail.html:49 +#: templates/ledger/coa_accounts/account_list.html:50 +#: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:80 +#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:428 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:23 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:21 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:10 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:43 +msgid "Account Name" +msgstr "اسم الحساب" + +#: templates/ledger/coa_accounts/account_detail.html:50 +#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:427 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:20 +msgid "Account Code" +msgstr "رمز الحساب" + +#: templates/ledger/coa_accounts/account_detail.html:53 +#: templates/ledger/coa_accounts/account_list.html:52 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:25 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:25 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:13 +msgid "Balance Type" +msgstr "نوع الرصيد" + +#: templates/ledger/coa_accounts/account_form.html:4 +msgid "account" +msgstr "الحساب" + +#: templates/ledger/coa_accounts/account_form.html:14 +msgid "Edit Account" +msgstr "تعديل الحساب" + +#: templates/ledger/coa_accounts/account_form.html:17 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:52 +msgid "Add Account" +msgstr "إضافة حساب" + +#: templates/ledger/coa_accounts/account_list.html:3 +#: templates/ledger/coa_accounts/account_list.html:6 +#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:444 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:48 +msgid "Accounts" +msgstr "الحسابات" + +#: templates/ledger/coa_accounts/account_list.html:51 +msgid "Code" +msgstr "الكود" + +#: templates/ledger/coa_accounts/account_list.html:71 +msgid "Delete Account" +msgstr "حذف الحساب" + +#: templates/ledger/coa_accounts/account_list.html:78 +msgid "Are you sure you want to delete this Account?" +msgstr "هل أنت متأكد أنك تريد حذف هذا الحساب؟" + +#: templates/ledger/coa_accounts/account_list.html:99 +#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:423 +#: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:474 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:13 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:45 +msgid "Debit" +msgstr "مدين" + +#: templates/ledger/coa_accounts/account_list.html:101 +#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:422 +#: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:473 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:12 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:44 +msgid "Credit" +msgstr "دائن" + +#: templates/ledger/coa_accounts/account_list.html:124 +msgid "No account found." +msgstr "لم يتم العثور على حساب." + +#: templates/ledger/coa_accounts/account_list.html:132 +msgid "to" +msgstr "إلى" + +#: templates/ledger/coa_accounts/account_list.html:132 +msgid "Items of" +msgstr "عناصر" + #: templates/organizations/organization_detail.html:3 msgid "Organization Details" -msgstr "تفاصيل عرض السعر" +msgstr "تفاصيل الشركة" #: templates/organizations/organization_detail.html:8 -#: templates/organizations/organization_list.html:18 +#: templates/organizations/organization_list.html:49 msgid "CRN" msgstr "رقم السجل التجاري" #: templates/organizations/organization_detail.html:9 -#: templates/organizations/organization_list.html:19 +#: templates/organizations/organization_list.html:54 msgid "VRN" msgstr "الرقم الضريبي" -#: templates/organizations/organization_form.html:4 -#: templates/organizations/organization_form.html:7 -#: templates/organizations/organization_list.html:12 -msgid "Add Organization" -msgstr "إضافة منظمة" +#: templates/organizations/organization_list.html:27 +msgid "Enter Organization name" +msgstr "أدخل اسم الشركة" -#: templates/organizations/organization_list.html:37 -msgid "No organizations found." -msgstr "لم يتم العثور على منظمات." +#: templates/organizations/organization_list.html:87 +#: templates/vendors/vendors_list.html:87 templates/vendors/view_vendor.html:18 +msgid "Delete Vendor" +msgstr "حذف مورد" + +#: templates/organizations/organization_list.html:94 +msgid "Are you sure you want to delete this Organization?" +msgstr "هل أنت متأكد أنك تريد حذف هذه الشركة؟" #: templates/partials/scanner_modal.html:5 msgid "Scanner" @@ -1996,11 +2263,42 @@ msgstr "المواصفات" #: templates/representatives/representative_detail.html:3 msgid "Representative Details" -msgstr "تفاصيل الممثل" +msgstr "تفاصيل ممثل الشركة" #: templates/representatives/representative_list.html:35 msgid "No representatives found." -msgstr "لم يتم العثور على ممثلين." +msgstr "لم يتم العثور على ممثلين للشركات." + +#: templates/sales/estimates/estimate_detail.html:4 +msgid "View Estimate" +msgstr "عرض التقدير" + +#: templates/sales/estimates/estimate_form.html:5 +#: templates/sales/estimates/estimate_form.html:9 +msgid "Create Estimate" +msgstr "إنشاء تقدير" + +#: templates/sales/estimates/estimate_list.html:15 +#: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:247 +msgid "Estimate Number" +msgstr "رقم التقدير" + +#: templates/sales/estimates/estimate_list.html:18 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:11 +#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:13 +msgid "Status Date" +msgstr "تاريخ الحالة" + +#: templates/sales/estimates/estimate_list.html:40 +#: templates/sales/quotation_list.html:51 +msgid "No Quotations Found" +msgstr "لم يتم العثور على عروض" + +#: templates/sales/invoice/invoice_detail.html:41 +#: templates/sales/quotation_detail.html:42 +#: templates/sales/quotation_pdf.html:32 +msgid "Customer Details" +msgstr "تفاصيل العميل" #: templates/sales/payments/payment_create.html:5 #: templates/sales/payments/payment_create.html:11 @@ -2076,10 +2374,6 @@ msgstr "قبول" msgid "Create Quotation" msgstr "إنشاء عرض" -#: templates/sales/quotation_list.html:4 templates/sales/quotation_list.html:8 -msgid "Quotations" -msgstr "العروض" - #: templates/sales/quotation_list.html:14 msgid "Quotation Number" msgstr "رقم عرض السعر" @@ -2088,10 +2382,6 @@ msgstr "رقم عرض السعر" msgid "Total Cars" msgstr "إجمالي السيارات" -#: templates/sales/quotation_list.html:51 -msgid "No Quotations Found" -msgstr "لم يتم العثور على عروض" - #: templates/sales/quotation_pdf.html:7 msgid "Quotation PDF" msgstr "عرض الأسعار بصيغة PDF" @@ -2129,7 +2419,7 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا المستخدم؟" msgid "User Details" msgstr "تفاصيل المستخدم" -#: templates/users/user_detail.html:53 +#: templates/users/user_detail.html:52 msgid "Role" msgstr "الدور" @@ -2155,104 +2445,37 @@ msgid "phone number" msgstr "رقم الهاتف" #: templates/users/user_list.html:44 -msgid "address" -msgstr "العنوان" - -#: templates/users/user_list.html:45 msgid "role" msgstr "الدور" -#: templates/users/user_list.html:46 +#: templates/users/user_list.html:45 msgid "actions" msgstr "الإجراءات" -#: templates/vendors/vendor_form.html:14 +#: templates/vendors/vendor_form.html:17 msgid "Edit Vendor" msgstr "تعديل مورد" -#: templates/vendors/vendors_list.html:20 +#: templates/vendors/vendors_list.html:27 msgid "Enter vendor name" msgstr "أدخل اسم المورد" -#: templates/vendors/vendors_list.html:63 -msgid "No vendors found" -msgstr "لم يتم العثور على موردين" +#: templates/vendors/vendors_list.html:59 +msgid "Contact name" +msgstr "اسم جهة الاتصال" + +#: templates/vendors/vendors_list.html:94 templates/vendors/view_vendor.html:24 +msgid "Are you sure you want to delete this vendor?" +msgstr "هل أنت متأكد أنك تريد حذف هذا المورد؟" #: templates/vendors/view_vendor.html:3 msgid "View Vendor" msgstr "عرض المورد" -#: templates/vendors/view_vendor.html:18 -msgid "Delete Vendor" -msgstr "حذف مورد" - -#: templates/vendors/view_vendor.html:24 -msgid "Are you sure you want to delete this vendor?" -msgstr "هل أنت متأكد أنك تريد حذف هذا المورد؟" - #: templates/vendors/view_vendor.html:42 msgid "Vendor Details" msgstr "تفاصيل المورد" -#: templates/welcome.html:4 -msgid "Welcome to Our App" -msgstr "مرحبا بكم في تطبيقنا" - -#: templates/welcome.html:24 -msgid "Welcome to " -msgstr "مرحبا بكم في " - -#: templates/welcome.html:25 -msgid "" -"Discover a seamless way to manage your cars, reservations, and inventory " -"like never before!" -msgstr "" -"اكتشف طريقة سهلة وسلسة لإدارة سياراتك وحجوزاتك ومخزونك كما لم تفعل من قبل!" - -#: templates/welcome.html:26 -msgid "Get Started" -msgstr "ابدأ الآن" - -#: templates/welcome.html:33 -msgid "Why Choose Haikal?" -msgstr "لماذا تختار هيكل؟" - -#: templates/welcome.html:38 -msgid "Fast and Efficient" -msgstr "سريع وفعال" - -#: templates/welcome.html:39 -msgid "" -"Haikal is optimized for speed and ease of use, saving you time and effort." -msgstr "" -"تم تحسين هيكل من أجل السرعة وسهولة الاستخدام، مما يوفر لك الوقت والجهد." - -#: templates/welcome.html:45 -msgid "Secure and Reliable" -msgstr "آمن وموثوق" - -#: templates/welcome.html:46 -msgid "Your data is protected with industry-standard security and encryption." -msgstr "بياناتك محمية بمعايير الأمان والتشفير المعتمدة عالميًا." - -#: templates/welcome.html:52 -msgid "Detailed Insights" -msgstr "رؤى مفصلة" - -#: templates/welcome.html:53 -msgid "" -"Gain valuable insights into your inventory and performance with our " -"analytics tools." -msgstr "احصل على رؤى قيمة حول مخزونك وأدائك باستخدام أدوات التحليل الخاصة بنا." - -#: templates/welcome.html:60 -msgid "Ready to take control of your inventory?" -msgstr "هل أنت مستعد للتحكم في مخزونك؟" - -#: templates/welcome.html:61 -msgid "Join Us Today" -msgstr "انضم لنا اليوم" - #: venv/lib/python3.11/site-packages/alabaster/layout.html:99 msgid "Page source" msgstr "مصدر الصفحة" @@ -3936,15 +4159,6 @@ msgstr "أدخل رقم ABA..." msgid "Enter SWIFT number..." msgstr "أدخل رقم SWIFT..." -#: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:80 -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:428 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:23 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:21 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:10 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:43 -msgid "Account Name" -msgstr "اسم الحساب" - #: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:81 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:1134 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:8 @@ -3956,15 +4170,6 @@ msgstr "رقم الحساب" msgid "Account Type" msgstr "نوع الحساب" -#: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:83 -#: venv/lib/python3.11/site-packages/django_ledger/models/bank_account.py:129 -#: venv/lib/python3.11/site-packages/django_ledger/models/invoice.py:322 -#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:222 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:31 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/invoice_detail.html:30 -msgid "Cash Account" -msgstr "حساب نقدي" - #: venv/lib/python3.11/site-packages/django_ledger/forms/bank_account.py:84 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:1139 msgid "ABA Number" @@ -4542,25 +4747,6 @@ msgstr "مصروفات أخرى" msgid "Account code must be alpha numeric, got {%s}" msgstr "يجب أن يكون رمز الحساب مزيجاً من الحروف والأرقام، تم تلقي {%s}" -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:422 -#: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:473 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:12 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:44 -msgid "Credit" -msgstr "دائن" - -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:423 -#: venv/lib/python3.11/site-packages/django_ledger/models/transactions.py:474 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:13 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:45 -msgid "Debit" -msgstr "مدين" - -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:427 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:20 -msgid "Account Code" -msgstr "رمز الحساب" - #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:429 msgid "Account Role" msgstr "دور الحساب" @@ -4587,11 +4773,6 @@ msgstr "مقفل" msgid "Chart of Accounts" msgstr "قائمة الحسابات" -#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:444 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:48 -msgid "Accounts" -msgstr "الحسابات" - #: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:449 msgid "Account codes must be unique for each Chart of Accounts Model." msgstr "يجب أن تكون رموز الحساب فريدة لكل نموذج من نماذج دليل الحسابات." @@ -4752,14 +4933,6 @@ msgstr "لا يمكن التراجع عن هذا الإجراء." msgid "Account Model" msgstr "نموذج الحساب" -#: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:384 -#: venv/lib/python3.11/site-packages/django_ledger/models/journal_entry.py:325 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:10 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/includes/card_journal_entry.html:33 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:10 -msgid "Activity" -msgstr "النشاط" - #: venv/lib/python3.11/site-packages/django_ledger/models/closing_entry.py:387 msgid "Transaction Type" msgstr "نوع المعاملة" @@ -4960,10 +5133,6 @@ msgstr "أذونات القراءة/الكتابة" msgid "No Permissions" msgstr "بدون أذونات" -#: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3190 -msgid "Manager" -msgstr "مدير" - #: venv/lib/python3.11/site-packages/django_ledger/models/entity.py:3195 msgid "Permission Level" msgstr "مستوى الأذونات" @@ -4989,10 +5158,6 @@ msgstr "الوقت والمواد" msgid "Other" msgstr "أخرى" -#: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:247 -msgid "Estimate Number" -msgstr "رقم التقدير" - #: venv/lib/python3.11/site-packages/django_ledger/models/estimate.py:253 msgid "Contract Terms" msgstr "شروط العقد" @@ -5798,12 +5963,6 @@ msgstr "العودة إلى قائمة مخطط الحسابات" msgid "CoA" msgstr "مخطط الحسابات" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:25 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:25 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:13 -msgid "Balance Type" -msgstr "نوع الرصيد" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/account/tags/accounts_table.html:28 msgid "CoA Role Default" msgstr "الدور الافتراضي لمخطط الحسابات" @@ -6166,19 +6325,6 @@ msgstr "كمية أمر الشراء" msgid "PO Amount" msgstr "مبلغ أمر الشراء" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:23 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/closing_entry/tags/closing_entry_txs_table.html:9 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/balance_sheet.html:32 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/cash_flow.html:33 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/income_statement.html:28 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/balance_sheet_statement.html:23 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/financial_statements/tags/income_statement.html:11 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_table.html:14 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/journal_entry/tags/je_txs_table.html:11 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/purchase_order/includes/po_item_formset.html:21 -msgid "Unit" -msgstr "الوحدة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:79 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/tags/ce_item_formset.html:74 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/invoice/tags/invoice_item_formset.html:69 @@ -6190,11 +6336,6 @@ msgstr "عنصر جديد" msgid "Number" msgstr "الرقم" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:11 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/estimate_table.html:13 -msgid "Status Date" -msgstr "تاريخ الحالة" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:14 msgid "Payments" msgstr "المدفوعات" @@ -6223,10 +6364,6 @@ msgstr "الحسابات النشطة" msgid "Locked Accounts" msgstr "الحسابات المقفلة" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:52 -msgid "Add Account" -msgstr "إضافة حساب" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/chart_of_accounts/includes/coa_card.html:58 msgid "Mark as Default" msgstr "وضع كافتراضي" @@ -6983,11 +7120,6 @@ msgstr "إلغاء الإخفاء" msgid "Products List" msgstr "قائمة المنتجات" -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:8 -#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:8 -msgid "Type" -msgstr "النوع" - #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/product/tags/product_table.html:12 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/service/tags/services_table.html:12 msgid "SKU" @@ -7132,10 +7264,6 @@ msgstr "حسابات الكيان" msgid "Update Account" msgstr "تحديث الحساب" -#: venv/lib/python3.11/site-packages/django_ledger/views/bank_account.py:33 -msgid "Bank Accounts" -msgstr "الحسابات المصرفية" - #: venv/lib/python3.11/site-packages/django_ledger/views/bank_account.py:76 msgid "Update Bank Account" msgstr "تحديث الحساب المصرفي" diff --git a/static/images/.DS_Store b/static/images/.DS_Store index 6b68c4d0..881631b2 100644 Binary files a/static/images/.DS_Store and b/static/images/.DS_Store differ diff --git a/static/images/generic/2022-lincoln-corsair.jpg b/static/images/generic/2022-lincoln-corsair.jpg new file mode 100644 index 00000000..45613e28 Binary files /dev/null and b/static/images/generic/2022-lincoln-corsair.jpg differ diff --git a/static/images/generic/2022-lincoln-corsair.png b/static/images/generic/2022-lincoln-corsair.png new file mode 100644 index 00000000..754e7d37 Binary files /dev/null and b/static/images/generic/2022-lincoln-corsair.png differ diff --git a/static/images/generic/haikal-3.jpg b/static/images/generic/haikal-3.jpg new file mode 100644 index 00000000..1b752a0a Binary files /dev/null and b/static/images/generic/haikal-3.jpg differ diff --git a/static/images/generic/haikal-5.jpg b/static/images/generic/haikal-5.jpg new file mode 100644 index 00000000..871b6d13 Binary files /dev/null and b/static/images/generic/haikal-5.jpg differ diff --git a/static/images/logos/.DS_Store b/static/images/logos/.DS_Store index 90e240b1..56bc43f0 100644 Binary files a/static/images/logos/.DS_Store and b/static/images/logos/.DS_Store differ diff --git a/static/images/logos/users/marwan-company_DSEJMeO.png b/static/images/logos/users/marwan-company_DSEJMeO.png new file mode 100644 index 00000000..b8addbe8 Binary files /dev/null and b/static/images/logos/users/marwan-company_DSEJMeO.png differ diff --git a/static/images/logos/vendors/Abdullatif-Jameel-Automotive.png b/static/images/logos/vendors/Abdullatif-Jameel-Automotive.png new file mode 100644 index 00000000..2bb7cadc Binary files /dev/null and b/static/images/logos/vendors/Abdullatif-Jameel-Automotive.png differ diff --git a/static/images/logos/vendors/Abdullatif-Jameel-Automotive_llAxTWL.png b/static/images/logos/vendors/Abdullatif-Jameel-Automotive_llAxTWL.png new file mode 100644 index 00000000..2bb7cadc Binary files /dev/null and b/static/images/logos/vendors/Abdullatif-Jameel-Automotive_llAxTWL.png differ diff --git a/static/images/logos/vendors/Alamjdouie-Hyundai-logo.png b/static/images/logos/vendors/Alamjdouie-Hyundai-logo.png new file mode 100644 index 00000000..53525aa2 Binary files /dev/null and b/static/images/logos/vendors/Alamjdouie-Hyundai-logo.png differ diff --git a/static/images/logos/vendors/Alamjdouie-Hyundai-logo_I8WTQve.png b/static/images/logos/vendors/Alamjdouie-Hyundai-logo_I8WTQve.png new file mode 100644 index 00000000..53525aa2 Binary files /dev/null and b/static/images/logos/vendors/Alamjdouie-Hyundai-logo_I8WTQve.png differ diff --git a/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co-logo.png b/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co-logo.png new file mode 100644 index 00000000..b7b8e211 Binary files /dev/null and b/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co-logo.png differ diff --git a/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co-logo_Fh187lJ.png b/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co-logo_Fh187lJ.png new file mode 100644 index 00000000..b7b8e211 Binary files /dev/null and b/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co-logo_Fh187lJ.png differ diff --git a/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co.png b/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co.png new file mode 100644 index 00000000..b7b8e211 Binary files /dev/null and b/static/images/logos/vendors/Aljazirah-Vehicles-Agencies-Co.png differ diff --git a/static/images/logos/vendors/Aljumaih-Automotive-logo.png b/static/images/logos/vendors/Aljumaih-Automotive-logo.png new file mode 100644 index 00000000..04ee0afa Binary files /dev/null and b/static/images/logos/vendors/Aljumaih-Automotive-logo.png differ diff --git a/static/images/logos/vendors/Aljumaih-Automotive-logo_kM7B61x.png b/static/images/logos/vendors/Aljumaih-Automotive-logo_kM7B61x.png new file mode 100644 index 00000000..04ee0afa Binary files /dev/null and b/static/images/logos/vendors/Aljumaih-Automotive-logo_kM7B61x.png differ diff --git a/static/images/logos/vendors/Aljumaih-Automotive.png b/static/images/logos/vendors/Aljumaih-Automotive.png new file mode 100644 index 00000000..a1707fbc Binary files /dev/null and b/static/images/logos/vendors/Aljumaih-Automotive.png differ diff --git a/static/images/logos/vendors/muhammad-yousef-naghi-logo.png b/static/images/logos/vendors/muhammad-yousef-naghi-logo.png new file mode 100644 index 00000000..a1623c1d Binary files /dev/null and b/static/images/logos/vendors/muhammad-yousef-naghi-logo.png differ diff --git a/static/images/logos/vendors/muhammad-yousef-naghi-logo_5OXBztM.png b/static/images/logos/vendors/muhammad-yousef-naghi-logo_5OXBztM.png new file mode 100644 index 00000000..a1623c1d Binary files /dev/null and b/static/images/logos/vendors/muhammad-yousef-naghi-logo_5OXBztM.png differ diff --git a/static/js/travel-agency-dashboard.js b/static/js/travel-agency-dashboard.js index 37107884..ae622bfe 100644 --- a/static/js/travel-agency-dashboard.js +++ b/static/js/travel-agency-dashboard.js @@ -754,7 +754,7 @@ color: getItemFromStore('phoenixTheme') === 'dark' ? getColor('primary') - : getColor('primary') + : getColor('primary-light') }, data: profitData[0] }, @@ -772,7 +772,7 @@ color: getItemFromStore('phoenixTheme') === 'dark' ? getColor('success') - : getColor('success') + : getColor('success-light') }, data: revenueData[0] }, @@ -788,7 +788,7 @@ color: getItemFromStore('phoenixTheme') === 'dark' ? getColor('info') - : getColor('info') + : getColor('info-light') }, data: expansesData[0] } diff --git a/templates/account/signup-wizard.html b/templates/account/signup-wizard.html index d42a2faf..ac3c850b 100644 --- a/templates/account/signup-wizard.html +++ b/templates/account/signup-wizard.html @@ -70,7 +70,7 @@
- +
diff --git a/templates/base.html b/templates/base.html index bb4896fe..1e0a9857 100644 --- a/templates/base.html +++ b/templates/base.html @@ -107,7 +107,7 @@