first commit

This commit is contained in:
Marwan Alwali 2024-12-08 16:20:31 +03:00
parent 6b3367fa29
commit 5371042919
18 changed files with 459 additions and 331 deletions

View File

@ -161,3 +161,7 @@ class CarRegistrationForm(forms.ModelForm):
] ]
class VendorForm(forms.ModelForm):
class Meta:
model = Vendor
exclude = ['dealer']

View File

@ -376,72 +376,72 @@ class Customer(models.Model):
return f"{self.first_name}{middle} {self.last_name}" return f"{self.first_name}{middle} {self.last_name}"
# # Create Entity # Create Entity
# @receiver(post_save, sender=Dealer) @receiver(post_save, sender=Dealer)
# def create_ledger_entity(sender, instance, created, **kwargs): def create_ledger_entity(sender, instance, created, **kwargs):
# if created: if created:
# entity = EntityModel.objects.create( entity = EntityModel.objects.create(
# name=instance.name, name=instance.name,
# admin=instance.user, admin=instance.user,
# address_1=instance.address, address_1=instance.address,
# fy_start_month=1, fy_start_month=1,
# accrual_method=True, accrual_method=True,
# depth=0, depth=0,
# ) )
#
# default_coa = entity.create_chart_of_accounts(assign_as_default=True, default_coa = entity.create_chart_of_accounts(assign_as_default=True,
# commit=True, commit=True,
# coa_name=_("Chart of Accounts")) coa_name=_("Chart of Accounts"))
# if default_coa: if default_coa:
# entity.populate_default_coa(activate_accounts=True, coa_model=default_coa) entity.populate_default_coa(activate_accounts=True, coa_model=default_coa)
# print(f"Ledger entity created for Dealer: {instance.name}") print(f"Ledger entity created for Dealer: {instance.name}")
#
#
# # # Create Vendor # # Create Vendor
# @receiver(post_save, sender=Vendor) @receiver(post_save, sender=Vendor)
# def create_ledger_vendor(sender, instance, created, **kwargs): def create_ledger_vendor(sender, instance, created, **kwargs):
#
# if created: if created:
# entity = EntityModel.objects.filter(name=instance.dealer.name).first() entity = EntityModel.objects.filter(name=instance.dealer.name).first()
#
# vendor = VendorModel.objects.create( vendor = VendorModel.objects.update_or_create(
# entity_model=entity, entity_model=entity,
# vendor_name=instance.name, vendor_name=instance.name,
# vendor_number=instance.crn, vendor_number=instance.crn,
# address_1=instance.address, address_1=instance.address,
# phone=instance.phone_number, phone=instance.phone_number,
# tax_id_number=instance.vrn, tax_id_number=instance.vrn,
# active=True, active=True,
# hidden=False, hidden=False,
# additional_info={ additional_info={
# "arabic_name": instance.arabic_name, "arabic_name": instance.arabic_name,
# "contact_person": instance.contact_person, "contact_person": instance.contact_person,
# }, },
# ) )
#
# print(f"VendorModel created for Vendor: {instance.name}") print(f"VendorModel created for Vendor: {instance.name}")
#
#
# @receiver(post_save, sender=Customer) @receiver(post_save, sender=Customer)
# def create_customer(sender, instance, created, **kwargs): def create_customer(sender, instance, created, **kwargs):
#
# if created: if created:
# entity = EntityModel.objects.filter(name=instance.dealer.name).first() entity = EntityModel.objects.filter(name=instance.dealer.name).first()
# name = f"{instance.first_name} {instance.middle_name} {instance.last_name}" name = f"{instance.first_name} {instance.middle_name} {instance.last_name}"
#
# customer = CustomerModel.objects.create( customer = CustomerModel.objects.create(
# entity_model=entity, entity_model=entity,
# customer_name=name, customer_name=name,
# customer_number=instance.national_id, customer_number=instance.national_id,
# address_1=instance.address, address_1=instance.address,
# phone=instance.phone_number, phone=instance.phone_number,
# email=instance.email, email=instance.email,
# sales_tax_rate=0.15, sales_tax_rate=0.15,
# ) )
#
# print(f"Customer created: {name}") print(f"Customer created: {name}")
#
#
# # Create Item # # Create Item
# @receiver(post_save, sender=Car) # @receiver(post_save, sender=Car)
# def create_item_model(sender, instance, created, **kwargs): # def create_item_model(sender, instance, created, **kwargs):

View File

@ -35,6 +35,13 @@ urlpatterns = [
path('customers/create/', views.CustomerCreateView.as_view(), name='customer_create'), path('customers/create/', views.CustomerCreateView.as_view(), name='customer_create'),
path('customers/<int:pk>/update/', views.CustomerUpdateView.as_view(), name='customer_update'), path('customers/<int:pk>/update/', views.CustomerUpdateView.as_view(), name='customer_update'),
path('customers/<int:pk>/delete/', views.delete_customer, name='customer_delete'), path('customers/<int:pk>/delete/', views.delete_customer, name='customer_delete'),
# Vendor URLs
path('vendors', views.VendorListView.as_view(), name='vendor_list'),
path('vendors/<int:pk>/', views.VendorDetailView.as_view(), name='vendor_detail'),
path('vendors/create/', views.VendorCreateView.as_view(), name='vendor_create'),
path('vendors/<int:pk>/update/', views.VendorUpdateView.as_view(), name='vendor_update'),
path('vendors/<int:pk>/delete/', views.delete_vendor, name='vendor_delete'),
# Car URLs # Car URLs
path('cars/inventory/<int:make_id>/<int:model_id>/<int:trim_id>/', path('cars/inventory/<int:make_id>/<int:model_id>/<int:trim_id>/',

View File

@ -724,3 +724,57 @@ def delete_customer(request, pk):
messages.success(request, _('Customer deleted successfully.')) messages.success(request, _('Customer deleted successfully.'))
return redirect('customer_list') return redirect('customer_list')
class VendorListView(LoginRequiredMixin, ListView):
model = models.Vendor
context_object_name = 'vendors'
paginate_by = 10
template_name = "vendors/vendors_list.html"
class VendorDetailView(LoginRequiredMixin, DetailView):
model = models.Vendor
template_name = "vendors/view_vendor.html"
class VendorCreateView(LoginRequiredMixin, CreateView):
model = models.Vendor
form_class = forms.VendorForm
template_name = 'vendors/vendor_form.html'
success_url = reverse_lazy('vendor_list')
def form_valid(self, form):
if form.is_valid():
form.instance.dealer = self.request.user.dealer
form.save()
messages.success(self.request, _('Vendor created successfully.'))
return super().form_valid(form)
else:
return form.errors
class VendorUpdateView(LoginRequiredMixin, UpdateView):
model = models.Vendor
form_class = forms.VendorForm
template_name = 'vendors/vendor_form.html'
success_url = reverse_lazy('vendor_list')
def form_valid(self, form):
if form.is_valid():
form.instance.dealer = self.request.user.dealer
form.save()
messages.success(self.request, _('Vendor updated successfully.'))
return super().form_valid(form)
else:
return form.errors
@login_required
def delete_vendor(request, pk):
vendor = get_object_or_404(models.Vendor, pk=pk)
vendor.delete()
messages.success(request, _('Vendor deleted successfully.'))
return redirect('vendor_list')

Binary file not shown.

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-06 19:45+0300\n" "POT-Creation-Date: 2024-12-08 16:18+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,7 +20,7 @@ msgstr ""
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: api/models.py:6 inventory/models.py:122 #: api/models.py:6 inventory/models.py:122
#: templates/inventory/car_detail.html:44 templates/inventory/car_form.html:83 #: templates/inventory/car_detail.html:61 templates/inventory/car_form.html:83
#: templates/inventory/car_inventory.html:40 #: templates/inventory/car_inventory.html:40
#: templates/inventory/car_list.html:67 templates/inventory/car_list.html:69 #: templates/inventory/car_list.html:67 templates/inventory/car_list.html:69
msgid "VIN" msgid "VIN"
@ -34,7 +34,12 @@ msgstr "الإنجليزية"
msgid "Arabic" msgid "Arabic"
msgstr "العربية" msgstr "العربية"
#: inventory/models.py:30 templates/vendors/vendors_list.html:30 #: inventory/forms.py:147 inventory/models.py:284
#: templates/inventory/car_detail.html:135
msgid "Custom Date"
msgstr "تاريخ البطاقة الجمركية"
#: inventory/models.py:30 templates/vendors/vendors_list.html:44
msgid "logo" msgid "logo"
msgstr "الشعار" msgstr "الشعار"
@ -68,7 +73,8 @@ msgid "Dealer"
msgstr "المعرض" msgstr "المعرض"
#: inventory/models.py:136 inventory/models.py:351 #: inventory/models.py:136 inventory/models.py:351
#: templates/inventory/car_detail.html:91 templates/inventory/car_form.html:225 #: templates/inventory/car_detail.html:108
#: templates/inventory/car_form.html:225
#: venv/lib/python3.11/site-packages/django_ledger/models/bill.py:359 #: 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/models/vendor.py:191
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:12 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_table.html:12
@ -97,7 +103,7 @@ msgstr "السلسلة"
msgid "Trim" msgid "Trim"
msgstr "الفئة" msgstr "الفئة"
#: inventory/models.py:175 templates/inventory/car_detail.html:69 #: inventory/models.py:175 templates/inventory/car_detail.html:86
#: templates/inventory/car_list.html:163 #: templates/inventory/car_list.html:163
#: 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/bills/tags/bill_table.html:10
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:12 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/estimate/includes/card_estimate.html:12
@ -108,23 +114,23 @@ msgstr "الفئة"
msgid "Status" msgid "Status"
msgstr "الحالة" msgstr "الحالة"
#: inventory/models.py:181 templates/inventory/car_detail.html:73 #: inventory/models.py:181 templates/inventory/car_detail.html:90
#: templates/inventory/car_form.html:243 templates/inventory/car_list.html:177 #: templates/inventory/car_form.html:243 templates/inventory/car_list.html:177
msgid "Stock Type" msgid "Stock Type"
msgstr "نوع المخزون" msgstr "نوع المخزون"
#: inventory/models.py:183 templates/inventory/car_detail.html:96 #: inventory/models.py:183 templates/inventory/car_detail.html:113
#: templates/inventory/car_form.html:296 templates/inventory/car_list.html:200 #: templates/inventory/car_form.html:296 templates/inventory/car_list.html:200
msgid "Remarks" msgid "Remarks"
msgstr "ملاحظات" msgstr "ملاحظات"
#: inventory/models.py:184 templates/inventory/car_detail.html:77 #: inventory/models.py:184 templates/inventory/car_detail.html:94
#: templates/inventory/car_form.html:260 templates/inventory/car_list.html:191 #: templates/inventory/car_form.html:260 templates/inventory/car_list.html:191
#: templates/inventory/car_list.html:192 #: templates/inventory/car_list.html:192
msgid "Mileage" msgid "Mileage"
msgstr "عدد الكيلومترات" msgstr "عدد الكيلومترات"
#: inventory/models.py:185 templates/inventory/car_detail.html:81 #: inventory/models.py:185 templates/inventory/car_detail.html:98
#: templates/inventory/car_form.html:278 #: templates/inventory/car_form.html:278
msgid "Receiving Date" msgid "Receiving Date"
msgstr "تاريخ الاستلام" msgstr "تاريخ الاستلام"
@ -137,32 +143,32 @@ msgstr "السيارة"
msgid "Cars" msgid "Cars"
msgstr "السيارات" msgstr "السيارات"
#: inventory/models.py:234 templates/inventory/car_detail.html:123 #: inventory/models.py:234 templates/inventory/car_detail.html:160
#: templates/inventory/car_finance_form.html:38 #: templates/inventory/car_finance_form.html:33
msgid "Cost Price" msgid "Cost Price"
msgstr "سعر التكلفة" msgstr "سعر التكلفة"
#: inventory/models.py:235 templates/inventory/car_detail.html:127 #: inventory/models.py:235 templates/inventory/car_detail.html:164
#: templates/inventory/car_finance_form.html:46 #: templates/inventory/car_finance_form.html:40
msgid "Profit Margin" msgid "Profit Margin"
msgstr "هامش الربح" msgstr "هامش الربح"
#: inventory/models.py:236 templates/inventory/car_detail.html:131 #: inventory/models.py:236 templates/inventory/car_detail.html:168
#: templates/inventory/car_finance_form.html:62 #: templates/inventory/car_finance_form.html:54
msgid "Selling Price" msgid "Selling Price"
msgstr "سعر البيع" msgstr "سعر البيع"
#: inventory/models.py:237 templates/inventory/car_detail.html:135 #: inventory/models.py:237 templates/inventory/car_detail.html:172
#: templates/inventory/car_finance_form.html:54 #: templates/inventory/car_finance_form.html:47
msgid "VAT Rate" msgid "VAT Rate"
msgstr "نسبة ضريبة القيمة المضافة" msgstr "نسبة ضريبة القيمة المضافة"
#: inventory/models.py:238 templates/inventory/car_detail.html:139 #: inventory/models.py:238 templates/inventory/car_detail.html:176
#: templates/inventory/car_finance_form.html:66 #: templates/inventory/car_finance_form.html:58
msgid "VAT Amount" msgid "VAT Amount"
msgstr "مبلغ ضريبة القيمة المضافة" msgstr "مبلغ ضريبة القيمة المضافة"
#: inventory/models.py:239 templates/inventory/car_finance_form.html:70 #: inventory/models.py:239 templates/inventory/car_finance_form.html:62
msgid "Total Amount" msgid "Total Amount"
msgstr "المبلغ الإجمالي" msgstr "المبلغ الإجمالي"
@ -179,7 +185,7 @@ msgid "Interior"
msgstr "الداخلي" msgstr "الداخلي"
#: inventory/models.py:262 templates/dealers/dealer_detail.html:26 #: inventory/models.py:262 templates/dealers/dealer_detail.html:26
#: templates/vendors/view_vendor.html:8 #: templates/vendors/view_vendor.html:39
#: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:16 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:16
#: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:37 #: venv/lib/python3.11/site-packages/django_ledger/forms/coa.py:37
msgid "Name" msgid "Name"
@ -193,7 +199,7 @@ msgstr "الاسم بالعربية"
msgid "RGB" msgid "RGB"
msgstr "آر جي بي" msgstr "آر جي بي"
#: inventory/models.py:269 templates/inventory/color_palette.html:66 #: inventory/models.py:269 templates/inventory/color_palette.html:83
msgid "Color Type" msgid "Color Type"
msgstr "نوع اللون" msgstr "نوع اللون"
@ -205,15 +211,12 @@ msgstr "اللون"
msgid "Colors" msgid "Colors"
msgstr "الألوان" msgstr "الألوان"
#: inventory/models.py:283 #: inventory/models.py:283 templates/inventory/car_detail.html:131
msgid "Custom Number" msgid "Custom Number"
msgstr "رقم البطاقة الجمركية" msgstr "رقم البطاقة الجمركية"
#: inventory/models.py:284 #: inventory/models.py:287 templates/inventory/car_detail.html:16
msgid "Custom Date" #: templates/inventory/car_detail.html:141
msgstr "تاريخ البطاقة الجمركية"
#: inventory/models.py:287
msgid "Custom Card" msgid "Custom Card"
msgstr "البطاقة الجمركية" msgstr "البطاقة الجمركية"
@ -278,7 +281,7 @@ msgstr "الاسم بالإنجليزية"
#: inventory/models.py:327 inventory/models.py:347 inventory/models.py:366 #: inventory/models.py:327 inventory/models.py:347 inventory/models.py:366
#: templates/customers/view_customer.html:53 #: templates/customers/view_customer.html:53
#: templates/dealers/dealer_detail.html:38 #: templates/dealers/dealer_detail.html:38
#: templates/vendors/view_vendor.html:17 #: templates/vendors/view_vendor.html:44
#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:113 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:113
msgid "Phone Number" msgid "Phone Number"
msgstr "رقم الهاتف" msgstr "رقم الهاتف"
@ -286,7 +289,7 @@ msgstr "رقم الهاتف"
#: inventory/models.py:328 inventory/models.py:348 inventory/models.py:367 #: inventory/models.py:328 inventory/models.py:348 inventory/models.py:367
#: templates/customers/view_customer.html:54 #: templates/customers/view_customer.html:54
#: templates/dealers/dealer_detail.html:42 #: templates/dealers/dealer_detail.html:42
#: templates/vendors/view_vendor.html:19 #: templates/vendors/view_vendor.html:46
#: 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/customer/tags/customer_table.html:10
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:11 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/vendor/tags/vendor_table.html:11
msgid "Address" msgid "Address"
@ -300,11 +303,13 @@ msgstr "الشعار"
msgid "Dealers" msgid "Dealers"
msgstr "المعارض" msgstr "المعارض"
#: inventory/models.py:346 templates/vendors/view_vendor.html:16 #: inventory/models.py:346 templates/vendors/view_vendor.html:43
msgid "Contact Person" msgid "Contact Person"
msgstr "الشخص المسؤول" msgstr "الشخص المسؤول"
#: inventory/models.py:352 #: inventory/models.py:352 templates/header.html:85 templates/header.html:100
#: templates/vendors/vendor_form.html:4 templates/vendors/vendors_list.html:4
#: templates/vendors/vendors_list.html:5
msgid "Vendors" msgid "Vendors"
msgstr "الموردين" msgstr "الموردين"
@ -321,7 +326,7 @@ msgid "Last Name"
msgstr "اسم العائلة" msgstr "اسم العائلة"
#: inventory/models.py:364 templates/customers/view_customer.html:51 #: inventory/models.py:364 templates/customers/view_customer.html:51
#: templates/vendors/view_vendor.html:18 #: templates/vendors/view_vendor.html:45
#: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:111 #: venv/lib/python3.11/site-packages/django_ledger/models/mixins.py:111
msgid "Email" msgid "Email"
msgstr "البريد الإلكتروني" msgstr "البريد الإلكتروني"
@ -343,6 +348,12 @@ msgstr "العميل"
msgid "Customers" msgid "Customers"
msgstr "العملاء" msgstr "العملاء"
#: inventory/models.py:394
#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:436
#: venv/lib/python3.11/site-packages/django_ledger/models/coa.py:152
msgid "Chart of Accounts"
msgstr "قائمة الحسابات"
#: inventory/utils.py:25 #: inventory/utils.py:25
msgid "success" msgid "success"
msgstr "ناجحة" msgstr "ناجحة"
@ -355,109 +366,125 @@ msgstr "خطأ"
msgid "Forgot Password?" msgid "Forgot Password?"
msgstr "نسيت كلمة المرور؟" msgstr "نسيت كلمة المرور؟"
#: inventory/views.py:69 #: inventory/views.py:68
msgid "You are not associated with any dealer." msgid "You are not associated with any dealer."
msgstr "أنت غير مرتبط بأي معرض." msgstr "أنت غير مرتبط بأي معرض."
#: inventory/views.py:251 templates/header.html:33 templates/index.html:20 #: inventory/views.py:248 templates/header.html:33 templates/index.html:20
#: templates/inventory/car_inventory.html:5 #: templates/inventory/car_inventory.html:5
#: templates/inventory/car_inventory.html:7 #: templates/inventory/car_inventory.html:7
msgid "inventory" msgid "inventory"
msgstr "المخزون" msgstr "المخزون"
#: inventory/views.py:373 #: inventory/views.py:370
msgid "Car finance details saved successfully." msgid "Car finance details saved successfully."
msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح." msgstr "تم حفظ تفاصيل المالية للسيارة بنجاح."
#: inventory/views.py:391 #: inventory/views.py:388
msgid "Car finance updated successfully." msgid "Car finance updated successfully."
msgstr "تم تحديث التفاصيل المالية للسيارة بنجاح." msgstr "تم تحديث التفاصيل المالية للسيارة بنجاح."
#: inventory/views.py:404 #: inventory/views.py:401
msgid "Car updated successfully." msgid "Car updated successfully."
msgstr "تم تحديث السيارة بنجاح" msgstr "تم تحديث السيارة بنجاح"
#: inventory/views.py:417 #: inventory/views.py:414
msgid "Car deleted successfully." msgid "Car deleted successfully."
msgstr "تم حذف السيارة بنجاح." msgstr "تم حذف السيارة بنجاح."
#: inventory/views.py:435 inventory/views.py:504 #: inventory/views.py:434
msgid "Custom Card added successfully."
msgstr "تم إضافة البطاقة الجمركية بنجاح."
#: inventory/views.py:452 inventory/views.py:521
msgid "Select a Color" msgid "Select a Color"
msgstr "اختر اللون" msgstr "اختر اللون"
#: inventory/views.py:440 #: inventory/views.py:457
msgid "Select Color Type" msgid "Select Color Type"
msgstr "حدد نوع اللون" msgstr "حدد نوع اللون"
#: inventory/views.py:468 inventory/views.py:532 #: inventory/views.py:485 inventory/views.py:548
msgid "Invalid color selection." msgid "Invalid color selection."
msgstr "تحديد اللون غير صالح." msgstr "تحديد اللون غير صالح."
#: inventory/views.py:478 #: inventory/views.py:495
msgid "Color added successfully." msgid "Color added successfully."
msgstr "تمت إضافة اللون بنجاح." msgstr "تمت إضافة اللون بنجاح."
#: inventory/views.py:539 #: inventory/views.py:555
msgid "Exterior color updated successfully." msgid "Exterior color updated successfully."
msgstr "تم تحديث اللون الخارجي بنجاح." msgstr "تم تحديث اللون الخارجي بنجاح."
#: inventory/views.py:556 #: inventory/views.py:572
msgid "This car is already reserved." msgid "This car is already reserved."
msgstr "هذه السيارة محجوزة بالفعل." msgstr "هذه السيارة محجوزة بالفعل."
#: inventory/views.py:566 #: inventory/views.py:582
msgid "Car reserved successfully." msgid "Car reserved successfully."
msgstr "تم حجز السيارة بنجاح." msgstr "تم حجز السيارة بنجاح."
#: inventory/views.py:583 #: inventory/views.py:599
msgid "Reservation renewed successfully." msgid "Reservation renewed successfully."
msgstr "تم تجديد الحجز بنجاح" msgstr "تم تجديد الحجز بنجاح"
#: inventory/views.py:588 #: inventory/views.py:604
msgid "Reservation canceled successfully." msgid "Reservation canceled successfully."
msgstr "تم إلغاء الحجز بنجاح." msgstr "تم إلغاء الحجز بنجاح."
#: inventory/views.py:592 #: inventory/views.py:608
msgid "Invalid action." msgid "Invalid action."
msgstr "إجراء غير صالح." msgstr "إجراء غير صالح."
#: inventory/views.py:594 #: inventory/views.py:610
msgid "Invalid request method." msgid "Invalid request method."
msgstr "طريقة الطلب غير صالحة" msgstr "طريقة الطلب غير صالحة"
#: inventory/views.py:616 #: inventory/views.py:632
msgid "Dealer created successfully." msgid "Dealer created successfully."
msgstr "تم إنشاء المعرض بنجاح." msgstr "تم إنشاء المعرض بنجاح."
#: inventory/views.py:627 #: inventory/views.py:643
msgid "Dealer updated successfully." msgid "Dealer updated successfully."
msgstr "تم تحديث المعرض بنجاح." msgstr "تم تحديث المعرض بنجاح."
#: inventory/views.py:637 #: inventory/views.py:653
msgid "Dealer deleted successfully." msgid "Dealer deleted successfully."
msgstr "تم حذف المعرض بنجاح." msgstr "تم حذف المعرض بنجاح."
#: inventory/views.py:643 templates/customers/customer_form.html:4 #: inventory/views.py:659 templates/customers/customer_form.html:4
#: templates/customers/customer_list.html:5 #: templates/customers/customer_list.html:5
#: templates/customers/customer_list.html:6 templates/header.html:59 #: templates/customers/customer_list.html:6 templates/header.html:59
#: templates/header.html:74 #: templates/header.html:74
msgid "customers" msgid "customers"
msgstr "العملاء" msgstr "العملاء"
#: inventory/views.py:682 #: inventory/views.py:698
msgid "Customer created successfully." msgid "Customer created successfully."
msgstr "تم إنشاء العميل بنجاح." msgstr "تم إنشاء العميل بنجاح."
#: inventory/views.py:698 #: inventory/views.py:714
msgid "Customer updated successfully." msgid "Customer updated successfully."
msgstr "تم تحديث العميل بنجاح." msgstr "تم تحديث العميل بنجاح."
#: inventory/views.py:708 #: inventory/views.py:724
msgid "Customer deleted successfully." msgid "Customer deleted successfully."
msgstr "تم حذف العميل بنجاح." msgstr "تم حذف العميل بنجاح."
#: inventory/views.py:750
msgid "Vendor created successfully."
msgstr "تم إنشاء المورد بنجاح."
#: inventory/views.py:766
msgid "Vendor updated successfully."
msgstr "تم تحديث المورد بنجاح"
#: inventory/views.py:776
msgid "Vendor deleted successfully."
msgstr "تم حذف المورد بنجاح."
#: templates/accounts/login.html:6 templates/accounts/login.html:14 #: templates/accounts/login.html:6 templates/accounts/login.html:14
#: templates/accounts/login.html:31 templates/header.html:105 #: templates/accounts/login.html:31 templates/header.html:131
msgid "Sign In" msgid "Sign In"
msgstr "تسجيل الدخول" msgstr "تسجيل الدخول"
@ -480,7 +507,7 @@ msgstr "أرسل لي رمز تسجيل الدخول عبر البريد الإ
#: templates/accounts/logout.html:3 templates/accounts/logout.html:11 #: templates/accounts/logout.html:3 templates/accounts/logout.html:11
#: templates/accounts/logout.html:21 templates/dealers/dealer_detail.html:63 #: templates/accounts/logout.html:21 templates/dealers/dealer_detail.html:63
#: templates/header.html:99 #: templates/header.html:125
msgid "Sign Out" msgid "Sign Out"
msgstr "تسجيل الخروج" msgstr "تسجيل الخروج"
@ -547,19 +574,19 @@ msgstr "إنشاء حساب باستخدام مفتاح المرور"
msgid "HAIKAL" msgid "HAIKAL"
msgstr "هيكل" msgstr "هيكل"
#: templates/customers/customer_form.html:15 #: templates/customers/customer_form.html:14
msgid "Edit Customer" msgid "Edit Customer"
msgstr "تحديث العميل" msgstr "تحديث العميل"
#: templates/customers/customer_form.html:18 #: templates/customers/customer_form.html:17
msgid "Add Customer" msgid "Add Customer"
msgstr "إضافة عميل" msgstr "إضافة عميل"
#: templates/customers/customer_form.html:32 #: templates/customers/customer_form.html:31
#: templates/inventory/car_edit.html:43 templates/inventory/car_form.html:320 #: templates/inventory/add_custom_card.html:7
#: templates/inventory/color_palette.html:85 #: templates/inventory/car_edit.html:41 templates/inventory/car_form.html:320
#: templates/inventory/color_palette_update.html:78 #: templates/inventory/color_palette.html:106
#: templates/vendors/edit_vendor.html:10 #: templates/vendors/vendor_form.html:31
#: 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/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/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 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/data_import/tags/data_import_job_txs_table.html:78
@ -570,16 +597,27 @@ msgstr "إضافة عميل"
msgid "Save" msgid "Save"
msgstr "حفظ" msgstr "حفظ"
#: templates/customers/customer_form.html:37 #: templates/customers/customer_form.html:33
#: templates/customers/view_customer.html:72 #: templates/inventory/add_custom_card.html:8
#: templates/inventory/car_detail.html:248 #: templates/inventory/car_confirm_delete.html:14
msgid "Back to List" #: templates/inventory/car_detail.html:266
msgstr "العودة إلى القائمة" #: templates/inventory/car_finance_form.html:68
#: templates/inventory/color_palette.html:107
#: templates/inventory/reserve_car.html:30
#: 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:20 #: templates/customers/customer_list.html:20
#: templates/inventory/car_inventory.html:29 #: templates/inventory/car_inventory.html:29
#: templates/inventory/car_list.html:70 templates/vendors/vendors_list.html:19 #: templates/inventory/car_list.html:70 templates/vendors/vendors_list.html:21
#: templates/vendors/vendors_list.html:21
msgid "search" msgid "search"
msgstr "بحث" msgstr "بحث"
@ -600,14 +638,14 @@ msgid "national ID"
msgstr "رقم الهوية الوطنية" msgstr "رقم الهوية الوطنية"
#: templates/customers/customer_list.html:46 #: templates/customers/customer_list.html:46
#: templates/vendors/vendors_list.html:32 #: templates/vendors/vendors_list.html:46
msgid "actions" msgid "actions"
msgstr "الإجراءات" msgstr "الإجراءات"
#: templates/customers/customer_list.html:59 #: templates/customers/customer_list.html:59
#: templates/inventory/car_detail.html:107 #: templates/inventory/car_detail.html:124
#: templates/inventory/car_inventory.html:62 #: templates/inventory/car_inventory.html:62
#: templates/vendors/vendors_list.html:55 #: templates/vendors/vendors_list.html:65
msgid "view" msgid "view"
msgstr "عرض" msgstr "عرض"
@ -620,11 +658,13 @@ msgid "Are you sure you want to delete this customer?"
msgstr "هل أنت متأكد أنك تريد حذف هذا العميل؟" msgstr "هل أنت متأكد أنك تريد حذف هذا العميل؟"
#: templates/customers/view_customer.html:26 #: templates/customers/view_customer.html:26
#: templates/vendors/view_vendor.html:25
#: venv/lib/python3.11/site-packages/django/forms/widgets.py:802 #: venv/lib/python3.11/site-packages/django/forms/widgets.py:802
msgid "No" msgid "No"
msgstr "لا" msgstr "لا"
#: templates/customers/view_customer.html:31 #: templates/customers/view_customer.html:31
#: templates/vendors/view_vendor.html:30
#: venv/lib/python3.11/site-packages/django/forms/widgets.py:801 #: venv/lib/python3.11/site-packages/django/forms/widgets.py:801
msgid "Yes" msgid "Yes"
msgstr "نعم" msgstr "نعم"
@ -634,9 +674,9 @@ msgid "Customer Details"
msgstr "تفاصيل العميل" msgstr "تفاصيل العميل"
#: templates/customers/view_customer.html:61 #: templates/customers/view_customer.html:61
#: templates/inventory/car_detail.html:115 #: templates/inventory/car_detail.html:217
#: templates/inventory/car_detail.html:178 #: templates/inventory/car_detail.html:291
#: templates/vendors/view_vendor.html:21 #: templates/vendors/view_vendor.html:48
#: 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/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/journal_entry/tags/je_table.html:83
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:101 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/ledger/tags/ledgers_table.html:101
@ -645,8 +685,7 @@ msgid "Edit"
msgstr "تحديث" msgstr "تحديث"
#: templates/customers/view_customer.html:67 #: templates/customers/view_customer.html:67
#: templates/vendors/delete_vendor.html:11 #: templates/vendors/view_vendor.html:53
#: templates/vendors/view_vendor.html:22
#: venv/lib/python3.11/site-packages/django/forms/formsets.py:499 #: 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/bill_delete.html:28
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:25 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/tags/bill_item_formset.html:25
@ -677,6 +716,11 @@ msgstr "تحديث"
msgid "Delete" msgid "Delete"
msgstr "حذف" msgstr "حذف"
#: templates/customers/view_customer.html:72
#: templates/inventory/car_detail.html:293
msgid "Back to List"
msgstr "العودة إلى القائمة"
#: templates/dealers/dealer_detail.html:5 #: templates/dealers/dealer_detail.html:5
#: templates/dealers/dealer_detail.html:14 #: templates/dealers/dealer_detail.html:14
msgid "Dealer Details" msgid "Dealer Details"
@ -734,7 +778,7 @@ msgstr "تحديث معلومات المعرض"
msgid "Save Changes" msgid "Save Changes"
msgstr "حفظ تغيير" msgstr "حفظ تغيير"
#: templates/dealers/dealer_form.html:36 templates/inventory/car_edit.html:40 #: templates/dealers/dealer_form.html:36 templates/inventory/car_edit.html:39
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_create.html:25 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_create.html:25
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_update.html:26 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_update.html:26
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/data_import/data_import_job_list.html:13 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/data_import/data_import_job_list.html:13
@ -764,7 +808,7 @@ msgstr "جميع الحقوق محفوظة"
msgid "Tenhal" msgid "Tenhal"
msgstr "تنحل" msgstr "تنحل"
#: templates/header.html:25 templates/header.html:82 templates/index.html:5 #: templates/header.html:25 templates/header.html:108 templates/index.html:5
msgid "home" msgid "home"
msgstr "الرئيسية" msgstr "الرئيسية"
@ -784,11 +828,15 @@ msgstr "المخزون"
msgid "add customer" msgid "add customer"
msgstr "إضافة عميل" msgstr "إضافة عميل"
#: templates/header.html:96 #: templates/header.html:92 templates/vendors/vendor_form.html:17
msgid "Add Vendor"
msgstr "المورد"
#: templates/header.html:122
msgid "profile" msgid "profile"
msgstr "الملف الشخصي" msgstr "الملف الشخصي"
#: templates/header.html:128 #: templates/header.html:154
msgid "Theme" msgid "Theme"
msgstr "السمة" msgstr "السمة"
@ -892,7 +940,7 @@ msgstr "أفضل السيارات مبيعاً"
msgid "View your best-selling cars." msgid "View your best-selling cars."
msgstr "عرض السيارات الأكثر مبيعاً." msgstr "عرض السيارات الأكثر مبيعاً."
#: templates/index.html:151 templates/inventory/car_detail.html:57 #: templates/index.html:151 templates/inventory/car_detail.html:74
#: templates/inventory/car_form.html:155 templates/inventory/car_list.html:97 #: templates/inventory/car_form.html:155 templates/inventory/car_list.html:97
msgid "model" msgid "model"
msgstr "الموديل" msgstr "الموديل"
@ -952,65 +1000,48 @@ msgstr "الجمعة"
msgid "Sat" msgid "Sat"
msgstr "السبت" msgstr "السبت"
#: templates/inventory/car_confirm_delete.html:14 #: templates/inventory/car_detail.html:6 templates/inventory/car_detail.html:58
#: templates/inventory/car_detail.html:230
#: templates/inventory/color_palette.html:86
#: templates/inventory/color_palette_update.html:79
#: templates/inventory/reserve_car.html:30
#: templates/vendors/delete_vendor.html:12
#: 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:6 templates/inventory/car_detail.html:41
msgid "Car Details" msgid "Car Details"
msgstr "تفاصيل السيارة" msgstr "تفاصيل السيارة"
#: templates/inventory/car_detail.html:21 #: templates/inventory/car_detail.html:37
#: templates/inventory/car_detail.html:100 templates/inventory/car_form.html:37 #: templates/inventory/car_detail.html:117 templates/inventory/car_form.html:37
#: templates/inventory/car_form.html:316 templates/inventory/car_list.html:47 #: templates/inventory/car_form.html:316 templates/inventory/car_list.html:47
#: templates/inventory/car_list.html:221 #: templates/inventory/car_list.html:221
msgid "specifications" msgid "specifications"
msgstr "المواصفات" msgstr "المواصفات"
#: templates/inventory/car_detail.html:48 templates/inventory/car_list.html:119 #: templates/inventory/car_detail.html:65 templates/inventory/car_list.html:119
msgid "year" msgid "year"
msgstr "السنة" msgstr "السنة"
#: templates/inventory/car_detail.html:52 templates/inventory/car_form.html:137 #: templates/inventory/car_detail.html:69 templates/inventory/car_form.html:137
#: templates/inventory/car_list.html:79 #: templates/inventory/car_list.html:79
msgid "make" msgid "make"
msgstr "الصانع" msgstr "الصانع"
#: templates/inventory/car_detail.html:61 templates/inventory/car_list.html:130 #: templates/inventory/car_detail.html:78 templates/inventory/car_list.html:130
msgid "series" msgid "series"
msgstr "السلسلة" msgstr "السلسلة"
#: templates/inventory/car_detail.html:65 templates/inventory/car_form.html:199 #: templates/inventory/car_detail.html:82 templates/inventory/car_form.html:199
#: templates/inventory/car_list.html:141 #: templates/inventory/car_list.html:141
msgid "trim" msgid "trim"
msgstr "الفئة" msgstr "الفئة"
#: templates/inventory/car_detail.html:86 #: templates/inventory/car_detail.html:103
msgid "Branch" msgid "Branch"
msgstr "الفرع" msgstr "الفرع"
#: templates/inventory/car_detail.html:113 #: templates/inventory/car_detail.html:147
#: templates/inventory/transfer_car.html:23 msgid "Add"
msgid "transfer" msgstr "إضافة"
msgstr "نقل"
#: templates/inventory/car_detail.html:119 #: templates/inventory/car_detail.html:156
msgid "Financial Details" msgid "Financial Details"
msgstr "التفاصيل المالية" msgstr "التفاصيل المالية"
#: templates/inventory/car_detail.html:143 #: templates/inventory/car_detail.html:180
#: templates/inventory/inventory_stats.html:61 #: templates/inventory/inventory_stats.html:61
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:98 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:98
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:127 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bills/bill_detail.html:127
@ -1029,43 +1060,43 @@ msgstr "التفاصيل المالية"
msgid "Total" msgid "Total"
msgstr "الإجمالي" msgstr "الإجمالي"
#: templates/inventory/car_detail.html:149 #: templates/inventory/car_detail.html:187
msgid "Edit Finance Details" msgid "Edit Finance Details"
msgstr "تعديل التفاصيل المالية" msgstr "تعديل التفاصيل المالية"
#: templates/inventory/car_detail.html:153 #: templates/inventory/car_detail.html:191
msgid "No finance details available." msgid "No finance details available."
msgstr "لا توجد تفاصيل مالية متاحة." msgstr "لا توجد تفاصيل مالية متاحة."
#: templates/inventory/car_detail.html:156 #: templates/inventory/car_detail.html:194
msgid "Add Finance Details" msgid "Add Finance Details"
msgstr "إضافة التفاصيل المالية" msgstr "إضافة التفاصيل المالية"
#: templates/inventory/car_detail.html:159 #: templates/inventory/car_detail.html:200
msgid "Colors Details" msgid "Colors Details"
msgstr "تفاصيل الألوان" msgstr "تفاصيل الألوان"
#: templates/inventory/car_detail.html:185 #: templates/inventory/car_detail.html:224
msgid "No colors available for this car." msgid "No colors available for this car."
msgstr "لا تتوفر ألوان لهذه السيارة." msgstr "لا تتوفر ألوان لهذه السيارة."
#: templates/inventory/car_detail.html:192 #: templates/inventory/car_detail.html:231
msgid "Get Colors" msgid "Get Colors"
msgstr "الحصول على الألوان" msgstr "الحصول على الألوان"
#: templates/inventory/car_detail.html:199 #: templates/inventory/car_detail.html:238
msgid "Reservations Details" msgid "Reservations Details"
msgstr "تفاصيل الحجز" msgstr "تفاصيل الحجز"
#: templates/inventory/car_detail.html:206 #: templates/inventory/car_detail.html:243
msgid "Reserved By" msgid "Reserved By"
msgstr "محجوز بواسطة" msgstr "محجوز بواسطة"
#: templates/inventory/car_detail.html:207 #: templates/inventory/car_detail.html:244
msgid "Expires At" msgid "Expires At"
msgstr "ينتهي في" msgstr "ينتهي في"
#: templates/inventory/car_detail.html:208 #: templates/inventory/car_detail.html:245
#: templates/inventory/car_inventory.html:44 #: templates/inventory/car_inventory.html:44
#: 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/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:29
@ -1093,22 +1124,27 @@ msgstr "ينتهي في"
msgid "Actions" msgid "Actions"
msgstr "الإجراءات" msgstr "الإجراءات"
#: templates/inventory/car_detail.html:224 #: templates/inventory/car_detail.html:260
msgid "renew" msgid "renew"
msgstr "تجديد" msgstr "تجديد"
#: templates/inventory/car_detail.html:239 #: templates/inventory/car_detail.html:277
#: templates/inventory/reserve_car.html:29 #: templates/inventory/reserve_car.html:29
msgid "Reserve" msgid "Reserve"
msgstr "حجز" msgstr "حجز"
#: templates/inventory/car_detail.html:305 #: templates/inventory/car_detail.html:289
#: templates/inventory/transfer_car.html:23
msgid "transfer"
msgstr "نقل"
#: templates/inventory/car_detail.html:378
#: templates/inventory/car_list.html:542 #: templates/inventory/car_list.html:542
#: templates/partials/specifications_modal.html:11 #: templates/partials/specifications_modal.html:11
msgid "No specifications available." msgid "No specifications available."
msgstr "لا توجد مواصفات متاحة." msgstr "لا توجد مواصفات متاحة."
#: templates/inventory/car_detail.html:309 #: templates/inventory/car_detail.html:382
#: templates/inventory/car_list.html:546 #: templates/inventory/car_list.html:546
msgid "Error loading specifications." msgid "Error loading specifications."
msgstr "حدث خطأ أثناء تحميل المواصفات." msgstr "حدث خطأ أثناء تحميل المواصفات."
@ -1125,19 +1161,19 @@ msgstr "التفاصيل المالية السيارة"
msgid "Finance Details for" msgid "Finance Details for"
msgstr "التفاصيل المالية لـ" msgstr "التفاصيل المالية لـ"
#: templates/inventory/car_finance_form.html:41 #: templates/inventory/car_finance_form.html:36
msgid "Please provide a valid cost price." msgid "Please provide a valid cost price."
msgstr "يرجى تقديم سعر تكلفة صالح." msgstr "يرجى تقديم سعر تكلفة صالح."
#: templates/inventory/car_finance_form.html:49 #: templates/inventory/car_finance_form.html:43
msgid "Please provide a profit margin between 0 and 100." msgid "Please provide a profit margin between 0 and 100."
msgstr "يجب أن يكون هامش الربح بين 0 و 100" msgstr "يجب أن يكون هامش الربح بين 0 و 100"
#: templates/inventory/car_finance_form.html:57 #: templates/inventory/car_finance_form.html:50
msgid "Please provide a valid VAT rate." msgid "Please provide a valid VAT rate."
msgstr "يرجى تقديم معدل صالح لضريبة القيمة المضافة." msgstr "يرجى تقديم معدل صالح لضريبة القيمة المضافة."
#: templates/inventory/car_finance_form.html:77 #: templates/inventory/car_finance_form.html:67
msgid "Save Finance Details" msgid "Save Finance Details"
msgstr "حفظ التفاصيل المالية" msgstr "حفظ التفاصيل المالية"
@ -1250,18 +1286,13 @@ msgstr "لا توجد سيارات متاحة."
msgid "Error loading options." msgid "Error loading options."
msgstr "خطأ في تحميل الخيارات." msgstr "خطأ في تحميل الخيارات."
#: templates/inventory/color_palette.html:55 #: templates/inventory/color_palette.html:74
msgid "Add Color for"
msgstr "إضافة لون الى"
#: templates/inventory/color_palette_update.html:4
#: templates/inventory/color_palette_update.html:54
msgid "Update Color" msgid "Update Color"
msgstr "تحديث اللون" msgstr "تحديث اللون"
#: templates/inventory/color_palette_update.html:86 #: templates/inventory/color_palette.html:77
msgid "Select Color" msgid "Add Color for"
msgstr "اختر اللون" msgstr "إضافة لون الى"
#: templates/inventory/inventory_stats.html:5 #: templates/inventory/inventory_stats.html:5
msgid "Inventory Statistics" msgid "Inventory Statistics"
@ -1325,69 +1356,48 @@ msgstr "الماسح الضوئي"
msgid "Specifications" msgid "Specifications"
msgstr "المواصفات" msgstr "المواصفات"
#: templates/vendors/add_vendor.html:3 templates/vendors/add_vendor.html:6 #: templates/vendors/vendor_form.html:14
msgid "Add Supplier" msgid "Edit Vendor"
msgstr "إضافة مورد" msgstr "تحديث المورد"
#: templates/vendors/add_vendor.html:16 #: templates/vendors/vendors_list.html:42
msgid "Add"
msgstr "إضافة"
#: templates/vendors/delete_vendor.html:3
#: templates/vendors/delete_vendor.html:6
msgid "Delete Supplier"
msgstr "حذف المورد"
#: templates/vendors/delete_vendor.html:7
msgid "Are you sure you want to delete this supplier?"
msgstr "هل أنت متأكد أنك تريد حذف هذا المورد؟"
#: templates/vendors/edit_vendor.html:3 templates/vendors/edit_vendor.html:6
msgid "Edit Supplier"
msgstr "تعديل المورد"
#: templates/vendors/vendors_list.html:4 templates/vendors/vendors_list.html:5
msgid "suppliers"
msgstr "الموردون"
#: templates/vendors/vendors_list.html:15
msgid "add supplier"
msgstr "إضافة مورد"
#: templates/vendors/vendors_list.html:28
msgid "name" msgid "name"
msgstr "الاسم" msgstr "الاسم"
#: templates/vendors/vendors_list.html:31 #: templates/vendors/vendors_list.html:45
msgid "address" msgid "address"
msgstr "العنوان" msgstr "العنوان"
#: templates/vendors/vendors_list.html:63 #: templates/vendors/vendors_list.html:72
msgid "no suppliers found" msgid "no vendors found"
msgstr "لم يتم العثور على موردين" msgstr "لم يتم العثور على موردين"
#: templates/vendors/vendors_list.html:73 #: templates/vendors/vendors_list.html:82
msgid "first" msgid "first"
msgstr "الأول" msgstr "الأول"
#: templates/vendors/vendors_list.html:78 #: templates/vendors/vendors_list.html:87
msgid "previous" msgid "previous"
msgstr "السابق" msgstr "السابق"
#: templates/vendors/vendors_list.html:103 #: templates/vendors/vendors_list.html:112
msgid "next" msgid "next"
msgstr "التالي" msgstr "التالي"
#: templates/vendors/vendors_list.html:108 #: templates/vendors/vendors_list.html:117
msgid "last" msgid "last"
msgstr "الأخير" msgstr "الأخير"
#: templates/vendors/view_vendor.html:3 #: templates/vendors/view_vendor.html:3
msgid "View Supplier" msgid "View Vendor"
msgstr "عرض المورد" msgstr "عرض المورد"
#: templates/vendors/view_vendor.html:6 #: templates/vendors/view_vendor.html:18
msgid "Supplier Details" msgid "Are you sure you want to delete this vendor?"
msgstr "هل أنت متأكد أنك تريد حذف هذا المورد؟"
#: templates/vendors/view_vendor.html:37
msgid "Vendor Details"
msgstr "تفاصيل المورد" msgstr "تفاصيل المورد"
#: templates/welcome.html:4 #: templates/welcome.html:4
@ -3554,11 +3564,6 @@ msgstr "مقفل"
msgid "Active" msgid "Active"
msgstr "نشط" msgstr "نشط"
#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:436
#: venv/lib/python3.11/site-packages/django_ledger/models/coa.py:152
msgid "Chart of Accounts"
msgstr "قائمة الحسابات"
#: venv/lib/python3.11/site-packages/django_ledger/models/accounts.py:443 #: 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/models/transactions.py:485
#: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_update.html:13 #: venv/lib/python3.11/site-packages/django_ledger/templates/django_ledger/bank_account/bank_account_update.html:13

View File

@ -4,7 +4,7 @@
{% block title %}{{ _("View Customer") }}{% endblock title %} {% block title %}{{ _("View Customer") }}{% endblock title %}
{% block content %} {% block content %}
<!-- Specification Modal --> <!-- Delete Modal -->
<div class="modal fade" id="deleteModal" <div class="modal fade" id="deleteModal"
data-bs-backdrop="static" data-bs-backdrop="static"
data-bs-keyboard="false" data-bs-keyboard="false"

View File

@ -76,6 +76,32 @@
</a> </a>
</li> </li>
</ul> </ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="#" id="vendorsDropdown"
role="button" data-bs-toggle="dropdown"
aria-expanded="false">
{% trans 'Vendors' %}
</a>
<ul class="dropdown-menu" aria-labelledby="vendorsDropdown">
<li>
<a href="{% url 'vendor_create' %}"
class="dropdown-item fw-lighter">
<small>
{% trans "Add Vendor" %}
</small>
</a>
</li>
<li>
<a href="{% url 'vendor_list' %}"
class="dropdown-item fw-lighter">
<small>
{% trans "Vendors" %}
</small>
</a>
</li>
</ul>
</li> </li>
{% else %} {% else %}
<li class="nav-item"> <li class="nav-item">

View File

@ -1,19 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Add Supplier" %}{% endblock title %}
{% block content %}
<div class="container">
<h1>{% trans "Add Supplier" %}</h1>
<form method="post" class="form">
{% csrf_token %}
{% for field in form %}
<div class="form-floating mb-3">
{{ field }}
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
</div>
{% endfor %}
<button class="btn btn-sm btn-success mt-3" type="submit">{% trans "Add" %}</button>
</form>
</div>
{% endblock %}

View File

@ -1,15 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Delete Supplier" %}{% endblock title %}
{% block content %}
<div class="container">
<h1>{% trans "Delete Supplier" %}</h1>
<p>{% trans "Are you sure you want to delete this supplier?" %}</p>
<form method="post">
{% csrf_token %}
<button class="btn btn-sm btn-danger" type="submit">{% trans "Delete" %}</button>
<a class="btn btn-sm btn-secondary" href="{% url 'supplier_list' %}">{% trans "Cancel" %}</a>
</form>
</div>
{% endblock %}

View File

@ -1,14 +0,0 @@
{% extends 'base.html' %}
{% load crispy_forms_filters %}
{% load i18n %}
{% block title %}{% trans "Edit Supplier" %}{% endblock title %}
{% block content %}
<div class="container">
<h1>{% trans "Edit Supplier" %}</h1>
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<button class="btn btn-primary" type="submit">{% trans "Save" %}</button>
</form>
</div>
{% endblock %}

39
templates/vendors/vendor_form.html vendored Normal file
View File

@ -0,0 +1,39 @@
{% extends "base.html" %}
{% load i18n %}
{% load crispy_forms_filters %}
{% block title %}{% trans "Vendors" %}{% endblock title %}
{% block content %}
<div class="container my-5">
<!-- Display Form Errors -->
<div class="card shadow rounded">
<div class="card-header bg-primary text-white">
<p class="mb-0">
{% if customer.created %}
<!--<i class="bi bi-pencil-square"></i>-->
{{ _("Edit Vendor") }}
{% else %}
<!--<i class="bi bi-person-plus"></i> -->
{{ _("Add Vendor") }}
{% endif %}
</p>
</div>
<div class="card-body">
<form method="post" class="form" novalidate>
{% csrf_token %}
{{ form|crispy }}
{% for error in form.errors %}
<div class="text-danger">{{ error }}</div>
{% endfor %}
<div class="d-flex justify-content-end">
<button class="btn btn-sm btn-success me-1" type="submit">
<!--<i class="bi bi-save"></i> -->
{{ _("Save") }}
</button>
<a href="{{request.META.HTTP_REFERER}}" class="btn btn-sm btn-danger">{% trans "Cancel" %}</a>
</div>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,8 +1,8 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block title %}{% trans 'suppliers'|capfirst %}{% endblock title %} {% block title %}{% trans 'Vendors'|capfirst %}{% endblock title %}
{% block suppliers %}<a class="nav-link active">{% trans "suppliers"|capfirst %}</a>{% endblock suppliers %} {% block vendors %}<a class="nav-link active">{% trans "Vendors"|capfirst %}</a>{% endblock %}
{% block content %} {% block content %}
@ -12,16 +12,30 @@
{% include 'breadcrumbs.html' %} {% include 'breadcrumbs.html' %}
</div> </div>
<div class="card-body"> <div class="card-body">
<a class="btn btn-sm btn-success mb-3" href="{% url 'add_supplier' %}">{% trans "add supplier"|capfirst %}</a>
<form method="get" action="{% url 'supplier_list' %}"> <div class="container-fluid p-2">
<div class="input-group mb-3"> <form method="get">
<input type="text" name="q" class="form-control form-control-sm" placeholder="{% trans 'search'|capfirst %}" value="{{ request.GET.q }}"> <div class="input-group input-group-sm">
<div class="input-group-append"> <button id="inputGroup-sizing-sm"
<button class="btn btn-sm btn-primary" type="submit">{% trans 'search'|capfirst %}</button> class="btn btn-sm btn-secondary rounded-start" type="submit">
</div> {% trans 'search'|capfirst %}
</button>
<input type="text"
name="q"
class="form-control form-control-sm rounded-end"
value="{{ request.GET.q }}"
aria-describedby="inputGroup-sizing-sm"/>
<!-- Clear Button -->
{% if request.GET.q %}
<a href="{% url request.resolver_match.view_name %}"
class="btn btn-sm btn-outline-danger ms-1 rounded">
<i class="bi bi-x-lg"></i>
</a>
{% endif %}
</div>
</form>
</div> </div>
</form>
<table class="table table-hover table-responsive-sm"> <table class="table table-hover table-responsive-sm">
<thead> <thead>
<tr> <tr>
@ -37,11 +51,7 @@
{% for vendor in page_obj.object_list %} {% for vendor in page_obj.object_list %}
<tr> <tr>
<td> <td>
{% if request.LANGUAGE_CODE == 'ar' %} {{ vendor.get_local_name }}
{{ vendor.name }}
{% else %}
{{ vendor.english_name }}
{% endif %}
</td> </td>
<td> <td>
{% if vendor.logo %} {% if vendor.logo %}
@ -52,15 +62,14 @@
</td> </td>
<td>{{ vendor.address }}</td> <td>{{ vendor.address }}</td>
<td> <td>
<a class="btn btn-sm btn-warning" href="{% url 'view_supplier' vendor.id %}">{% trans 'view'|capfirst %}</a> <a class="btn btn-sm btn-warning" href="{% url 'vendor_detail' vendor.id %}">{% trans 'view'|capfirst %}</a>
{# <a class="btn btn-sm btn-outline-success" href="{% url 'edit_supplier' supplier.id %}">{% trans 'Edit' %}</a>#}
{# <a class="btn btn-sm btn-outline-danger" href="{% url 'delete_supplier' supplier.id %}" onclick="return confirm('{% trans "Are you sure you want to delete this supplier?" %}');">{% trans 'Delete' %}</a>#}
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
{% else %} {% else %}
<tr> <tr>
<td class="border-0" colspan="6">{% trans 'no suppliers found'|capfirst %}</td> <td class="border-0" colspan="6">{% trans 'no vendors found'|capfirst %}</td>
</tr> </tr>
{% endif %} {% endif %}
</tbody> </tbody>

View File

@ -1,24 +1,56 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load i18n %} {% load i18n %}
{% block title %}{% trans "View Supplier" %}{% endblock title %} {% block title %}{% trans "View Vendor" %}{% endblock title %}
{% block content %} {% block content %}
<!-- Delete Modal -->
<div class="modal fade" id="deleteModal"
data-bs-backdrop="static"
data-bs-keyboard="false"
tabindex="-1"
aria-labelledby="deleteModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-sm ">
<div class="modal-content rounded">
<div class="modal-body d-flex justify-content-center">
<h1 class="text-danger me-2"><i class="bi bi-exclamation-diamond-fill"></i></h1>
<span class="text-danger">
{% trans "Are you sure you want to delete this vendor?" %}
</span>
</div>
<div class="btn-group">
<button type="button"
class="btn btn-secondary"
data-bs-dismiss="modal">
{% trans 'No' %}
</button>
<a type="button"
class="btn btn-danger"
href="{% url 'vendor_delete' vendor.id %}">
{% trans 'Yes' %}
</a>
</div>
</div>
</div>
</div>
<div class="container"> <div class="container">
<h1>{% trans "Supplier Details" %}</h1> <h1>{% trans "Vendor Details" %}</h1>
<ul> <ul>
<li><strong>{% trans "Name" %}:</strong> <li><strong>{% trans "Name" %}:</strong>
{% if request.LANGUAGE_CODE == 'ar' %} {{ vendor.get_local_name }}
{{ vendor.name }} </li>
{% else %}
{{ vendor.english_name }}
{% endif %}
</li>
<li><strong>{% trans "Contact Person" %}:</strong> {{ vendor.contact_person }}</li> <li><strong>{% trans "Contact Person" %}:</strong> {{ vendor.contact_person }}</li>
<li><strong>{% trans "Phone Number" %}:</strong> {{ vendor.phone_number }}</li> <li><strong>{% trans "Phone Number" %}:</strong> {{ vendor.phone_number }}</li>
<li><strong>{% trans "Email" %}:</strong> {{ vendor.email }}</li> <li><strong>{% trans "Email" %}:</strong> {{ vendor.email }}</li>
<li><strong>{% trans "Address" %}:</strong> {{ vendor.address }}</li> <li><strong>{% trans "Address" %}:</strong> {{ vendor.address }}</li>
</ul> </ul>
<a class="btn btn-sm btn-primary" href="{% url 'edit_supplier' vendor.id %}">{% trans "Edit" %}</a> <a class="btn btn-sm btn-primary" href="{% url 'vendor_update' vendor.id %}">{% trans "Edit" %}</a>
<a class="btn btn-sm btn-danger" href="{% url 'delete_supplier' vendor.id %}">{% trans "Delete" %}</a> <a class="btn btn-sm btn-danger me-1"
data-bs-toggle="modal"
data-bs-target="#deleteModal">
<!--<i class="bi bi-trash-fill"></i>-->
{{ _("Delete") }}
</a>
</div> </div>
{% endblock %} {% endblock %}