add slug for the remaining of the apps
This commit is contained in:
parent
8111dd6378
commit
9beeedd5bd
@ -50,12 +50,12 @@ urlpatterns = [
|
|||||||
# path('tasks/<int:task_id>/detail/', views.task_detail, name='task_detail'),
|
# path('tasks/<int:task_id>/detail/', views.task_detail, name='task_detail'),
|
||||||
# Dashboards
|
# Dashboards
|
||||||
# path("user/<int:pk>/settings/", views.UserSettingsView.as_view(), name="user_settings"),
|
# path("user/<int:pk>/settings/", views.UserSettingsView.as_view(), name="user_settings"),
|
||||||
path("pricing/", views.pricing_page, name="pricing_page"),
|
path("<slug:dealer_slug>/pricing/", views.pricing_page, name="pricing_page"),
|
||||||
path("submit_plan/", views.submit_plan, name="submit_plan"),
|
path("<slug:dealer_slug>/submit_plan/", views.submit_plan, name="submit_plan"),
|
||||||
path("payment-callback/", views.payment_callback, name="payment_callback"),
|
path("<slug:dealer_slug>/payment-callback/", views.payment_callback, name="payment_callback"),
|
||||||
#
|
#
|
||||||
path(
|
path(
|
||||||
"dealers/activity/",
|
"<slug:dealer_slug>/dealers/activity/",
|
||||||
views.UserActivityLogListView.as_view(),
|
views.UserActivityLogListView.as_view(),
|
||||||
name="dealer_activity",
|
name="dealer_activity",
|
||||||
),
|
),
|
||||||
@ -64,7 +64,7 @@ urlpatterns = [
|
|||||||
views.DealerSettingsView,
|
views.DealerSettingsView,
|
||||||
name="dealer_settings",
|
name="dealer_settings",
|
||||||
),
|
),
|
||||||
path("dealers/assign-car-makes/", views.assign_car_makes, name="assign_car_makes"),
|
path("<slug:dealer_slug>/dealers/assign-car-makes/", views.assign_car_makes, name="assign_car_makes"),
|
||||||
path(
|
path(
|
||||||
"dashboards/manager/",
|
"dashboards/manager/",
|
||||||
views.ManagerDashboard.as_view(),
|
views.ManagerDashboard.as_view(),
|
||||||
@ -76,7 +76,7 @@ urlpatterns = [
|
|||||||
path("export/format/", TableExport, name="export"),
|
path("export/format/", TableExport, name="export"),
|
||||||
# Dealer URLs
|
# Dealer URLs
|
||||||
path(
|
path(
|
||||||
"dealers/<slug:slug>/", views.DealerDetailView.as_view(), name="dealer_detail"
|
"<slug:slug>/dealers/", views.DealerDetailView.as_view(), name="dealer_detail"
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"dealers/<slug:slug>/update/",
|
"dealers/<slug:slug>/update/",
|
||||||
@ -267,21 +267,25 @@ urlpatterns = [
|
|||||||
name="mark_notification_as_read",
|
name="mark_notification_as_read",
|
||||||
),
|
),
|
||||||
path("crm/calender/", views.EmployeeCalendarView.as_view(), name="calendar_list"),
|
path("crm/calender/", views.EmployeeCalendarView.as_view(), name="calendar_list"),
|
||||||
|
#######################################################
|
||||||
# Vendor URLs
|
# Vendor URLs
|
||||||
path("vendors/create/", views.VendorCreateView.as_view(), name="vendor_create"),
|
#######################################################
|
||||||
path("vendors", views.VendorListView.as_view(), name="vendor_list"),
|
path("<slug:dealer_slug>/vendors/create/", views.VendorCreateView.as_view(), name="vendor_create"),
|
||||||
path("vendors/<slug:slug>/", views.vendorDetailView, name="vendor_detail"),
|
path("<slug:dealer_slug>/vendors", views.VendorListView.as_view(), name="vendor_list"),
|
||||||
|
path("<slug:dealer_slug>/vendors/<slug:slug>/", views.vendorDetailView, name="vendor_detail"),
|
||||||
path(
|
path(
|
||||||
"vendors/<slug:slug>/update/",
|
"<slug:dealer_slug>/vendors/<slug:slug>/update/",
|
||||||
views.VendorUpdateView.as_view(),
|
views.VendorUpdateView.as_view(),
|
||||||
name="vendor_update",
|
name="vendor_update",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"vendors/<slug:slug>/delete/",
|
"<slug:dealer_slug>/vendors/<slug:slug>/delete/",
|
||||||
views.delete_vendor,
|
views.delete_vendor,
|
||||||
name="vendor_delete",
|
name="vendor_delete",
|
||||||
),
|
),
|
||||||
|
#######################################################
|
||||||
# Car URLs
|
# Car URLs
|
||||||
|
#######################################################
|
||||||
path("<slug:dealer_slug>/cars/upload_cars/", views.upload_cars, name="upload_cars"),
|
path("<slug:dealer_slug>/cars/upload_cars/", views.upload_cars, name="upload_cars"),
|
||||||
path(
|
path(
|
||||||
"<slug:dealer_slug>/cars/<uuid:pk>/upload_cars/",
|
"<slug:dealer_slug>/cars/<uuid:pk>/upload_cars/",
|
||||||
@ -477,24 +481,24 @@ urlpatterns = [
|
|||||||
# name="payment_create",
|
# name="payment_create",
|
||||||
# ),
|
# ),
|
||||||
# Users URLs
|
# Users URLs
|
||||||
path("user/", views.UserListView.as_view(), name="user_list"),
|
path("<slug:dealer_slug>/user/", views.UserListView.as_view(), name="user_list"),
|
||||||
path("user/create/", views.UserCreateView.as_view(), name="user_create"),
|
path("<slug:dealer_slug>/user/create/", views.UserCreateView.as_view(), name="user_create"),
|
||||||
path("user/<slug:slug>/", views.UserDetailView.as_view(), name="user_detail"),
|
path("<slug:dealer_slug>/user/<slug:slug>/", views.UserDetailView.as_view(), name="user_detail"),
|
||||||
path("user/<slug:slug>/groups/", views.UserGroupView, name="user_groups"),
|
path("<slug:dealer_slug>/user/<slug:slug>/groups/", views.UserGroupView, name="user_groups"),
|
||||||
path(
|
path(
|
||||||
"user/<slug:slug>/update/", views.UserUpdateView.as_view(), name="user_update"
|
"<slug:dealer_slug>/user/<slug:slug>/update/", views.UserUpdateView.as_view(), name="user_update"
|
||||||
),
|
),
|
||||||
path("user/<slug:slug>/confirm/", views.UserDeleteview, name="user_delete"),
|
path("<slug:dealer_slug>/user/<slug:slug>/confirm/", views.UserDeleteview, name="user_delete"),
|
||||||
# Group URLs
|
# Group URLs
|
||||||
path("group/create/", views.GroupCreateView.as_view(), name="group_create"),
|
path("<slug:dealer_slug>/group/create/", views.GroupCreateView.as_view(), name="group_create"),
|
||||||
path(
|
path(
|
||||||
"group/<int:pk>/update/", views.GroupUpdateView.as_view(), name="group_update"
|
"<slug:dealer_slug>/group/<int:pk>/update/", views.GroupUpdateView.as_view(), name="group_update"
|
||||||
),
|
),
|
||||||
path("group/<int:pk>/", views.GroupDetailView.as_view(), name="group_detail"),
|
path("<slug:dealer_slug>/group/<int:pk>/", views.GroupDetailView.as_view(), name="group_detail"),
|
||||||
path("group/", views.GroupListView.as_view(), name="group_list"),
|
path("<slug:dealer_slug>/group/", views.GroupListView.as_view(), name="group_list"),
|
||||||
path("group/<int:pk>/confirm/", views.GroupDeleteview, name="group_delete"),
|
path("<slug:dealer_slug>/group/<int:pk>/confirm/", views.GroupDeleteview, name="group_delete"),
|
||||||
path(
|
path(
|
||||||
"group/<int:pk>/permission/", views.GroupPermissionView, name="group_permission"
|
"<slug:dealer_slug>/group/<int:pk>/permission/", views.GroupPermissionView, name="group_permission"
|
||||||
),
|
),
|
||||||
# Organization URLs
|
# Organization URLs
|
||||||
path(
|
path(
|
||||||
@ -546,34 +550,35 @@ urlpatterns = [
|
|||||||
views.RepresentativeDeleteView.as_view(),
|
views.RepresentativeDeleteView.as_view(),
|
||||||
name="representative_delete",
|
name="representative_delete",
|
||||||
),
|
),
|
||||||
# Ledger URLS
|
#####################################################################
|
||||||
# Ledger
|
# Ledger
|
||||||
path("ledgers/", views.LedgerModelListView.as_view(), name="ledger_list"),
|
#####################################################################
|
||||||
|
path("<slug:dealer_slug>/ledgers/", views.LedgerModelListView.as_view(), name="ledger_list"),
|
||||||
path(
|
path(
|
||||||
"ledgers/create/", views.LedgerModelCreateView.as_view(), name="ledger_create"
|
"<slug:dealer_slug>/ledgers/create/", views.LedgerModelCreateView.as_view(), name="ledger_create"
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/detail/<uuid:pk>/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/detail/<uuid:pk>/",
|
||||||
views.LedgerModelDetailView.as_view(),
|
views.LedgerModelDetailView.as_view(),
|
||||||
name="ledger_detail",
|
name="ledger_detail",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/lock_all_journals/<uuid:pk>/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/lock_all_journals/<uuid:pk>/",
|
||||||
views.ledger_lock_all_journals,
|
views.ledger_lock_all_journals,
|
||||||
name="lock_all_journals",
|
name="lock_all_journals",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/unlock_all_journals/<uuid:pk>/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/unlock_all_journals/<uuid:pk>/",
|
||||||
views.ledger_unlock_all_journals,
|
views.ledger_unlock_all_journals,
|
||||||
name="unlock_all_journals",
|
name="unlock_all_journals",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/post_all_journals/<uuid:pk>/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/post_all_journals/<uuid:pk>/",
|
||||||
views.ledger_post_all_journals,
|
views.ledger_post_all_journals,
|
||||||
name="post_all_journals",
|
name="post_all_journals",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/unpost_all_journals/<uuid:pk>/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/unpost_all_journals/<uuid:pk>/",
|
||||||
views.ledger_unpost_all_journals,
|
views.ledger_unpost_all_journals,
|
||||||
name="unpost_all_journals",
|
name="unpost_all_journals",
|
||||||
),
|
),
|
||||||
@ -581,77 +586,81 @@ urlpatterns = [
|
|||||||
# "ledgers/create/", views.LedgerModelCreateView.as_view(), name="ledger_create"
|
# "ledgers/create/", views.LedgerModelCreateView.as_view(), name="ledger_create"
|
||||||
# ),
|
# ),
|
||||||
path(
|
path(
|
||||||
"journalentries/<uuid:pk>/list/",
|
"<slug:dealer_slug>/journalentries/<uuid:pk>/list/",
|
||||||
views.JournalEntryListView.as_view(),
|
views.JournalEntryListView.as_view(),
|
||||||
name="journalentry_list",
|
name="journalentry_list",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"journalentries/<uuid:pk>/create/",
|
"<slug:dealer_slug>/journalentries/<uuid:pk>/create/",
|
||||||
views.JournalEntryCreateView.as_view(),
|
views.JournalEntryCreateView.as_view(),
|
||||||
name="journalentry_create",
|
name="journalentry_create",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"journalentries/<uuid:pk>/delete/",
|
"<slug:dealer_slug>/journalentries/<uuid:pk>/delete/",
|
||||||
views.JournalEntryDeleteView,
|
views.JournalEntryDeleteView,
|
||||||
name="journalentry_delete",
|
name="journalentry_delete",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"journalentries/<uuid:pk>/transactions/",
|
"<slug:dealer_slug>/journalentries/<uuid:pk>/transactions/",
|
||||||
views.JournalEntryTransactionsView,
|
views.JournalEntryTransactionsView,
|
||||||
name="journalentry_transactions",
|
name="journalentry_transactions",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"journalentries/<slug:entity_slug>/<uuid:ledger_pk>/detail/<uuid:je_pk>/txs/",
|
"<slug:dealer_slug>/journalentries/<slug:entity_slug>/<uuid:ledger_pk>/detail/<uuid:je_pk>/txs/",
|
||||||
views.JournalEntryModelTXSDetailView.as_view(),
|
views.JournalEntryModelTXSDetailView.as_view(),
|
||||||
name="journalentry_txs",
|
name="journalentry_txs",
|
||||||
),
|
),
|
||||||
|
##############################################################
|
||||||
# ledger actions
|
# ledger actions
|
||||||
|
##############################################################
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/post/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/post/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="post"),
|
views.LedgerModelModelActionView.as_view(action_name="post"),
|
||||||
name="ledger-action-post",
|
name="ledger-action-post",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/post-journal-entries/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/post-journal-entries/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="post_journal_entries"),
|
views.LedgerModelModelActionView.as_view(action_name="post_journal_entries"),
|
||||||
name="ledger-action-post-journal-entries",
|
name="ledger-action-post-journal-entries",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/unpost/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/unpost/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="unpost"),
|
views.LedgerModelModelActionView.as_view(action_name="unpost"),
|
||||||
name="ledger-action-unpost",
|
name="ledger-action-unpost",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/lock/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/lock/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="lock"),
|
views.LedgerModelModelActionView.as_view(action_name="lock"),
|
||||||
name="ledger-action-lock",
|
name="ledger-action-lock",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/lock-journal-entries/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/lock-journal-entries/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="lock_journal_entries"),
|
views.LedgerModelModelActionView.as_view(action_name="lock_journal_entries"),
|
||||||
name="ledger-action-lock-journal-entries",
|
name="ledger-action-lock-journal-entries",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/unlock/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/unlock/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="unlock"),
|
views.LedgerModelModelActionView.as_view(action_name="unlock"),
|
||||||
name="ledger-action-unlock",
|
name="ledger-action-unlock",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/hide/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/hide/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="hide"),
|
views.LedgerModelModelActionView.as_view(action_name="hide"),
|
||||||
name="ledger-action-hide",
|
name="ledger-action-hide",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/unhide/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/action/<uuid:ledger_pk>/unhide/",
|
||||||
views.LedgerModelModelActionView.as_view(action_name="unhide"),
|
views.LedgerModelModelActionView.as_view(action_name="unhide"),
|
||||||
name="ledger-action-unhide",
|
name="ledger-action-unhide",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"ledgers/<slug:entity_slug>/delete/<uuid:ledger_pk>/",
|
"<slug:dealer_slug>/ledgers/<slug:entity_slug>/delete/<uuid:ledger_pk>/",
|
||||||
views.LedgerModelDeleteView.as_view(),
|
views.LedgerModelDeleteView.as_view(),
|
||||||
name="ledger-delete",
|
name="ledger-delete",
|
||||||
),
|
),
|
||||||
|
##############################################################
|
||||||
# Bank Account
|
# Bank Account
|
||||||
|
##############################################################
|
||||||
path(
|
path(
|
||||||
"<slug:dealer_slug>/bank_accounts/",
|
"<slug:dealer_slug>/bank_accounts/",
|
||||||
views.BankAccountListView.as_view(),
|
views.BankAccountListView.as_view(),
|
||||||
@ -833,31 +842,31 @@ urlpatterns = [
|
|||||||
# path('sales/journal/<uuid:pk>/create/', views.JournalEntryCreateView.as_view(), name='journal_create'),
|
# path('sales/journal/<uuid:pk>/create/', views.JournalEntryCreateView.as_view(), name='journal_create'),
|
||||||
# Items
|
# Items
|
||||||
path(
|
path(
|
||||||
"items/services/", views.ItemServiceListView.as_view(), name="item_service_list"
|
"<slug:dealer_slug>/items/services/", views.ItemServiceListView.as_view(), name="item_service_list"
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"items/services/create/",
|
"<slug:dealer_slug>/items/services/create/",
|
||||||
views.ItemServiceCreateView.as_view(),
|
views.ItemServiceCreateView.as_view(),
|
||||||
name="item_service_create",
|
name="item_service_create",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"items/services/<int:pk>/update/",
|
"<slug:dealer_slug>/items/services/<int:pk>/update/",
|
||||||
views.ItemServiceUpdateView.as_view(),
|
views.ItemServiceUpdateView.as_view(),
|
||||||
name="item_service_update",
|
name="item_service_update",
|
||||||
),
|
),
|
||||||
# Expanese
|
# Expanese
|
||||||
path(
|
path(
|
||||||
"items/expeneses/",
|
"<slug:dealer_slug>/items/expeneses/",
|
||||||
views.ItemExpenseListView.as_view(),
|
views.ItemExpenseListView.as_view(),
|
||||||
name="item_expense_list",
|
name="item_expense_list",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"items/expeneses/create/",
|
"<slug:dealer_slug>/items/expeneses/create/",
|
||||||
views.ItemExpenseCreateView.as_view(),
|
views.ItemExpenseCreateView.as_view(),
|
||||||
name="item_expense_create",
|
name="item_expense_create",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"items/expeneses/<uuid:pk>/update/",
|
"<slug:dealer_slug>/items/expeneses/<uuid:pk>/update/",
|
||||||
views.ItemExpenseUpdateView.as_view(),
|
views.ItemExpenseUpdateView.as_view(),
|
||||||
name="item_expense_update",
|
name="item_expense_update",
|
||||||
),
|
),
|
||||||
@ -1099,20 +1108,20 @@ urlpatterns = [
|
|||||||
name="entity-json-pnl",
|
name="entity-json-pnl",
|
||||||
),
|
),
|
||||||
# Admin Management...
|
# Admin Management...
|
||||||
path("management/", views.management_view, name="management"),
|
path("<slug:dealer_slug>/management/", views.management_view, name="management"),
|
||||||
path("management/user_management/", views.user_management, name="user_management"),
|
path("<slug:dealer_slug>/management/user_management/", views.user_management, name="user_management"),
|
||||||
path(
|
path(
|
||||||
"management/<str:content_type>/<slug:slug>/activate_account/",
|
"<slug:dealer_slug>/management/<str:content_type>/<slug:slug>/activate_account/",
|
||||||
views.activate_account,
|
views.activate_account,
|
||||||
name="activate_account",
|
name="activate_account",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"management/<str:content_type>/<slug:slug>/permenant_delete_account/",
|
"<slug:dealer_slug>/management/<str:content_type>/<slug:slug>/permenant_delete_account/",
|
||||||
views.permenant_delete_account,
|
views.permenant_delete_account,
|
||||||
name="permenant_delete_account",
|
name="permenant_delete_account",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"management/audit_log_dashboard/",
|
"<slug:dealer_slug>/management/audit_log_dashboard/",
|
||||||
views.AuditLogDashboardView,
|
views.AuditLogDashboardView,
|
||||||
name="audit_log_dashboard",
|
name="audit_log_dashboard",
|
||||||
),
|
),
|
||||||
|
|||||||
@ -1366,7 +1366,7 @@ def create_user_dealer(email, password, name, arabic_name, phone, crn, vrn, addr
|
|||||||
|
|
||||||
def handle_payment(request, order):
|
def handle_payment(request, order):
|
||||||
url = "https://api.moyasar.com/v1/payments"
|
url = "https://api.moyasar.com/v1/payments"
|
||||||
callback_url = request.build_absolute_uri(reverse("payment_callback"))
|
callback_url = request.build_absolute_uri(reverse("payment_callback", args=[request.dealer.slug]))
|
||||||
|
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
# email = request.user.email
|
# email = request.user.email
|
||||||
|
|||||||
@ -2432,7 +2432,7 @@ class VendorListView(LoginRequiredMixin, ListView):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def vendorDetailView(request, slug):
|
def vendorDetailView(request, dealer_slug,slug):
|
||||||
"""
|
"""
|
||||||
Fetches and renders the detail view for a specific vendor.
|
Fetches and renders the detail view for a specific vendor.
|
||||||
|
|
||||||
@ -2480,7 +2480,6 @@ class VendorCreateView(
|
|||||||
model = models.Vendor
|
model = models.Vendor
|
||||||
form_class = forms.VendorForm
|
form_class = forms.VendorForm
|
||||||
template_name = "vendors/vendor_form.html"
|
template_name = "vendors/vendor_form.html"
|
||||||
success_url = reverse_lazy("vendor_list")
|
|
||||||
success_message = _("Vendor created successfully")
|
success_message = _("Vendor created successfully")
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
@ -2500,7 +2499,8 @@ class VendorCreateView(
|
|||||||
form.instance.save()
|
form.instance.save()
|
||||||
|
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("vendor_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"]})
|
||||||
|
|
||||||
class VendorUpdateView(
|
class VendorUpdateView(
|
||||||
LoginRequiredMixin,
|
LoginRequiredMixin,
|
||||||
@ -2531,7 +2531,6 @@ class VendorUpdateView(
|
|||||||
model = models.Vendor
|
model = models.Vendor
|
||||||
form_class = forms.VendorForm
|
form_class = forms.VendorForm
|
||||||
template_name = "vendors/vendor_form.html"
|
template_name = "vendors/vendor_form.html"
|
||||||
success_url = reverse_lazy("vendor_list")
|
|
||||||
success_message = _("Vendor updated successfully")
|
success_message = _("Vendor updated successfully")
|
||||||
|
|
||||||
# def get_initial(self):
|
# def get_initial(self):
|
||||||
@ -2553,10 +2552,11 @@ class VendorUpdateView(
|
|||||||
# instance.additional_info = additionals
|
# instance.additional_info = additionals
|
||||||
# instance.save()
|
# instance.save()
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("vendor_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"]})
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def delete_vendor(request, slug):
|
def delete_vendor(request, dealer_slug,slug):
|
||||||
"""
|
"""
|
||||||
Deletes an existing vendor record from the database.
|
Deletes an existing vendor record from the database.
|
||||||
|
|
||||||
@ -2576,7 +2576,7 @@ def delete_vendor(request, slug):
|
|||||||
vendor.vendor_model.active = False
|
vendor.vendor_model.active = False
|
||||||
vendor.save()
|
vendor.save()
|
||||||
messages.success(request, _("Vendor deleted successfully"))
|
messages.success(request, _("Vendor deleted successfully"))
|
||||||
return redirect("vendor_list")
|
return redirect("vendor_list", dealer_slug=dealer_slug)
|
||||||
|
|
||||||
|
|
||||||
# group
|
# group
|
||||||
@ -3418,23 +3418,23 @@ class BankAccountCreateView(
|
|||||||
model = BankAccountModel
|
model = BankAccountModel
|
||||||
form_class = BankAccountCreateForm
|
form_class = BankAccountCreateForm
|
||||||
template_name = "ledger/bank_accounts/bank_account_form.html"
|
template_name = "ledger/bank_accounts/bank_account_form.html"
|
||||||
success_url = reverse_lazy("bank_account_list")
|
|
||||||
success_message = _("Bank account created successfully")
|
success_message = _("Bank account created successfully")
|
||||||
permission_required = ["inventory.view_carfinance"]
|
permission_required = ["inventory.view_carfinance"]
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
dealer = get_user_type(self.request)
|
dealer = get_object_or_404(models.Dealer, slug=self.kwargs["dealer_slug"])
|
||||||
form.instance.entity_model = dealer.entity
|
form.instance.entity_model = dealer.entity
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
def get_form_kwargs(self):
|
def get_form_kwargs(self):
|
||||||
dealer = get_user_type(self.request)
|
dealer = get_object_or_404(models.Dealer, slug=self.kwargs["dealer_slug"])
|
||||||
entity = dealer.entity
|
entity = dealer.entity
|
||||||
kwargs = super().get_form_kwargs()
|
kwargs = super().get_form_kwargs()
|
||||||
kwargs["entity_slug"] = entity.slug
|
kwargs["entity_slug"] = entity.slug
|
||||||
kwargs["user_model"] = entity.admin
|
kwargs["user_model"] = entity.admin
|
||||||
return kwargs
|
return kwargs
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("bank_account_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"]})
|
||||||
|
|
||||||
class BankAccountDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
|
class BankAccountDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
|
||||||
"""
|
"""
|
||||||
@ -3530,17 +3530,12 @@ def bank_account_delete(request, dealer_slug, pk):
|
|||||||
rendering the confirmation template if accessed via GET.
|
rendering the confirmation template if accessed via GET.
|
||||||
:rtype: HttpResponse
|
:rtype: HttpResponse
|
||||||
"""
|
"""
|
||||||
dealer = get_object_or_404(models.Dealer, slug=dealer_slug)
|
get_object_or_404(models.Dealer, slug=dealer_slug)
|
||||||
bank_account = get_object_or_404(BankAccountModel, pk=pk)
|
bank_account = get_object_or_404(BankAccountModel, pk=pk)
|
||||||
if request.method == "POST":
|
|
||||||
bank_account.delete()
|
bank_account.delete()
|
||||||
messages.success(request, _("Bank account deleted successfully"))
|
messages.success(request, _("Bank account deleted successfully"))
|
||||||
return redirect("bank_account_list", dealer_slug=dealer_slug)
|
return redirect("bank_account_list", dealer_slug=dealer_slug)
|
||||||
return render(
|
|
||||||
request,
|
|
||||||
"ledger/bank_accounts/bank_account_delete.html",
|
|
||||||
{"bank_account": bank_account},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Accounts
|
# Accounts
|
||||||
@ -6134,7 +6129,6 @@ class ItemServiceCreateView(
|
|||||||
model = models.AdditionalServices
|
model = models.AdditionalServices
|
||||||
form_class = forms.AdditionalServiceForm
|
form_class = forms.AdditionalServiceForm
|
||||||
template_name = "items/service/service_create.html"
|
template_name = "items/service/service_create.html"
|
||||||
success_url = reverse_lazy("item_service_list")
|
|
||||||
success_message = _("Service created successfully")
|
success_message = _("Service created successfully")
|
||||||
context_object_name = "service"
|
context_object_name = "service"
|
||||||
permission_required = ["django_ledger.add_itemmodel"]
|
permission_required = ["django_ledger.add_itemmodel"]
|
||||||
@ -6147,6 +6141,8 @@ class ItemServiceCreateView(
|
|||||||
form.instance.price = (form.instance.price * vat.rate) + form.instance.price
|
form.instance.price = (form.instance.price * vat.rate) + form.instance.price
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("item_service_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"]})
|
||||||
|
|
||||||
class ItemServiceUpdateView(
|
class ItemServiceUpdateView(
|
||||||
LoginRequiredMixin, PermissionRequiredMixin, SuccessMessageMixin, UpdateView
|
LoginRequiredMixin, PermissionRequiredMixin, SuccessMessageMixin, UpdateView
|
||||||
@ -6179,7 +6175,6 @@ class ItemServiceUpdateView(
|
|||||||
model = models.AdditionalServices
|
model = models.AdditionalServices
|
||||||
form_class = forms.AdditionalServiceForm
|
form_class = forms.AdditionalServiceForm
|
||||||
template_name = "items/service/service_create.html"
|
template_name = "items/service/service_create.html"
|
||||||
success_url = reverse_lazy("item_service_list")
|
|
||||||
success_message = _("Service updated successfully")
|
success_message = _("Service updated successfully")
|
||||||
context_object_name = "service"
|
context_object_name = "service"
|
||||||
permission_required = ["django_ledger.change_itemmodel"]
|
permission_required = ["django_ledger.change_itemmodel"]
|
||||||
@ -6191,8 +6186,8 @@ class ItemServiceUpdateView(
|
|||||||
if form.instance.taxable:
|
if form.instance.taxable:
|
||||||
form.instance.price = (form.instance.price * vat.rate) + form.instance.price
|
form.instance.price = (form.instance.price * vat.rate) + form.instance.price
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("item_service_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"]})
|
||||||
class ItemServiceListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
class ItemServiceListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||||
"""
|
"""
|
||||||
Handles the listing of additional services for a dealer.
|
Handles the listing of additional services for a dealer.
|
||||||
@ -6265,7 +6260,8 @@ class ItemExpenseCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateV
|
|||||||
dealer = get_user_type(self.request)
|
dealer = get_user_type(self.request)
|
||||||
form.instance.entity = dealer.entity
|
form.instance.entity = dealer.entity
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("item_expense_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"]})
|
||||||
|
|
||||||
class ItemExpenseUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
|
class ItemExpenseUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
|
||||||
"""
|
"""
|
||||||
@ -6305,7 +6301,8 @@ class ItemExpenseUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateV
|
|||||||
dealer = get_user_type(self.request)
|
dealer = get_user_type(self.request)
|
||||||
form.instance.entity = dealer.entity
|
form.instance.entity = dealer.entity
|
||||||
return super().form_valid(form)
|
return super().form_valid(form)
|
||||||
|
def get_success_url(self):
|
||||||
|
return reverse_lazy("item_expense_list", kwargs={"dealer_slug": self.kwargs["dealer_slug"]})
|
||||||
|
|
||||||
class ItemExpenseListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
class ItemExpenseListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||||
"""
|
"""
|
||||||
@ -8195,7 +8192,7 @@ def schedule_cancel(request,dealer_slug, pk):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def assign_car_makes(request):
|
def assign_car_makes(request,dealer_slug):
|
||||||
"""
|
"""
|
||||||
Assigns car makes to a dealer.
|
Assigns car makes to a dealer.
|
||||||
|
|
||||||
@ -8212,7 +8209,7 @@ def assign_car_makes(request):
|
|||||||
dealer detail page after successful form submission.
|
dealer detail page after successful form submission.
|
||||||
:rtype: HttpResponse
|
:rtype: HttpResponse
|
||||||
"""
|
"""
|
||||||
dealer = get_user_type(request)
|
dealer = get_object_or_404(models.Dealer, slug=dealer_slug)
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = forms.DealersMakeForm(request.POST, dealer=dealer)
|
form = forms.DealersMakeForm(request.POST, dealer=dealer)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
@ -8371,7 +8368,7 @@ class LedgerModelModelActionView(LedgerModelModelActionViewBase):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def get_redirect_url(self, *args, **kwargs):
|
def get_redirect_url(self, *args, **kwargs):
|
||||||
return reverse("ledger_list")
|
return reverse("ledger_list", args=[self.kwargs["dealer_slug"]])
|
||||||
|
|
||||||
|
|
||||||
class LedgerModelDeleteView(LedgerModelDeleteViewBase, SuccessMessageMixin):
|
class LedgerModelDeleteView(LedgerModelDeleteViewBase, SuccessMessageMixin):
|
||||||
@ -8394,7 +8391,7 @@ class LedgerModelDeleteView(LedgerModelDeleteViewBase, SuccessMessageMixin):
|
|||||||
success_message = "Ledger deleted"
|
success_message = "Ledger deleted"
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return reverse("ledger_list")
|
return reverse("ledger_list", args=[self.kwargs["dealer_slug"]])
|
||||||
|
|
||||||
|
|
||||||
# class LedgerModelCreateView(LoginRequiredMixin,SuccessMessageMixin, CreateView):
|
# class LedgerModelCreateView(LoginRequiredMixin,SuccessMessageMixin, CreateView):
|
||||||
@ -8497,7 +8494,7 @@ class JournalEntryCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView
|
|||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
ledger = LedgerModel.objects.filter(pk=self.kwargs["pk"]).first()
|
ledger = LedgerModel.objects.filter(pk=self.kwargs["pk"]).first()
|
||||||
return reverse("journalentry_list", kwargs={"pk": ledger.pk})
|
return reverse("journalentry_list", kwargs={"dealer_slug":self.kwargs["dealer_slug"],"pk": ledger.pk})
|
||||||
|
|
||||||
|
|
||||||
def JournalEntryDeleteView(request, pk):
|
def JournalEntryDeleteView(request, pk):
|
||||||
@ -8532,7 +8529,7 @@ def JournalEntryDeleteView(request, pk):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def JournalEntryTransactionsView(request, pk):
|
def JournalEntryTransactionsView(request, dealer_slug,pk):
|
||||||
"""
|
"""
|
||||||
Handles the retrieval and display of journal entry transactions for a specific journal
|
Handles the retrieval and display of journal entry transactions for a specific journal
|
||||||
entry instance. It retrieves the journal entry and its associated transactions, ordering
|
entry instance. It retrieves the journal entry and its associated transactions, ordering
|
||||||
@ -8546,12 +8543,8 @@ def JournalEntryTransactionsView(request, pk):
|
|||||||
its transactions.
|
its transactions.
|
||||||
:rtype: django.http.HttpResponse
|
:rtype: django.http.HttpResponse
|
||||||
"""
|
"""
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
journal = JournalEntryModel.objects.filter(pk=pk).first()
|
journal = JournalEntryModel.objects.filter(pk=pk).first()
|
||||||
# transactions = (
|
|
||||||
# TransactionModel.objects.filter(journal_entry=journal)
|
|
||||||
# .order_by("account__code")
|
|
||||||
# .all()
|
|
||||||
# )
|
|
||||||
qs = TransactionModel.objects.filter(journal_entry=journal).all()
|
qs = TransactionModel.objects.filter(journal_entry=journal).all()
|
||||||
transactions = qs.annotate(
|
transactions = qs.annotate(
|
||||||
debit_credit_sort_order=Case(
|
debit_credit_sort_order=Case(
|
||||||
@ -8583,7 +8576,7 @@ class JournalEntryModelTXSDetailView(JournalEntryModelTXSDetailViewBase):
|
|||||||
template_name = "ledger/journal_entry/journal_entry_txs.html"
|
template_name = "ledger/journal_entry/journal_entry_txs.html"
|
||||||
|
|
||||||
|
|
||||||
def ledger_lock_all_journals(request, entity_slug, pk):
|
def ledger_lock_all_journals(request,dealer_slug, entity_slug, pk):
|
||||||
"""
|
"""
|
||||||
Locks all journals associated with a specific ledger. If the ledger is already locked,
|
Locks all journals associated with a specific ledger. If the ledger is already locked,
|
||||||
it will notify the user through an error message. Otherwise, it initiates the locking of
|
it will notify the user through an error message. Otherwise, it initiates the locking of
|
||||||
@ -8600,17 +8593,18 @@ def ledger_lock_all_journals(request, entity_slug, pk):
|
|||||||
:return: HttpResponse redirecting to the journal entry list page of the locked ledger.
|
:return: HttpResponse redirecting to the journal entry list page of the locked ledger.
|
||||||
:rtype: HttpResponse
|
:rtype: HttpResponse
|
||||||
"""
|
"""
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
ledger = LedgerModel.objects.filter(pk=pk).first()
|
ledger = LedgerModel.objects.filter(pk=pk).first()
|
||||||
if ledger.is_locked():
|
if ledger.is_locked():
|
||||||
messages.error(request, _("Ledger is already locked"))
|
messages.error(request, _("Ledger is already locked"))
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list",dealer_slug=dealer_slug, pk=ledger.pk)
|
||||||
ledger.lock_journal_entries()
|
ledger.lock_journal_entries()
|
||||||
ledger.lock()
|
ledger.lock()
|
||||||
ledger.save()
|
ledger.save()
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list", dealer_slug=dealer_slug,pk=ledger.pk)
|
||||||
|
|
||||||
|
|
||||||
def ledger_unlock_all_journals(request, entity_slug, pk):
|
def ledger_unlock_all_journals(request, dealer_slug, entity_slug, pk):
|
||||||
"""
|
"""
|
||||||
Unlocks all journal entries associated with a specific ledger. This function first checks if the
|
Unlocks all journal entries associated with a specific ledger. This function first checks if the
|
||||||
ledger is locked. If it is already unlocked, it shows an error message and redirects the user
|
ledger is locked. If it is already unlocked, it shows an error message and redirects the user
|
||||||
@ -8627,10 +8621,11 @@ def ledger_unlock_all_journals(request, entity_slug, pk):
|
|||||||
:return: A redirection to the journal entry list page for the specified ledger.
|
:return: A redirection to the journal entry list page for the specified ledger.
|
||||||
:rtype: HttpResponseRedirect
|
:rtype: HttpResponseRedirect
|
||||||
"""
|
"""
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
ledger = LedgerModel.objects.filter(pk=pk).first()
|
ledger = LedgerModel.objects.filter(pk=pk).first()
|
||||||
if not ledger.is_locked():
|
if not ledger.is_locked():
|
||||||
messages.error(request, _("Ledger is already Unlocked"))
|
messages.error(request, _("Ledger is already Unlocked"))
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list",dealer_slug=dealer_slug, pk=ledger.pk)
|
||||||
|
|
||||||
ledger.unlock()
|
ledger.unlock()
|
||||||
ledger.save()
|
ledger.save()
|
||||||
@ -8638,10 +8633,10 @@ def ledger_unlock_all_journals(request, entity_slug, pk):
|
|||||||
for je in qs:
|
for je in qs:
|
||||||
je.unlock()
|
je.unlock()
|
||||||
je.save()
|
je.save()
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list", dealer_slug=dealer_slug, pk=ledger.pk)
|
||||||
|
|
||||||
|
|
||||||
def ledger_post_all_journals(request, entity_slug, pk):
|
def ledger_post_all_journals(request, dealer_slug, entity_slug, pk):
|
||||||
"""
|
"""
|
||||||
Posts all journal entries associated with a ledger. This function updates the ledger's
|
Posts all journal entries associated with a ledger. This function updates the ledger's
|
||||||
state to reflect that its journal entries have been posted. If the ledger is already
|
state to reflect that its journal entries have been posted. If the ledger is already
|
||||||
@ -8656,17 +8651,18 @@ def ledger_post_all_journals(request, entity_slug, pk):
|
|||||||
:return: A redirect to the journal entry list view for the specified ledger.
|
:return: A redirect to the journal entry list view for the specified ledger.
|
||||||
:rtype: HttpResponseRedirect
|
:rtype: HttpResponseRedirect
|
||||||
"""
|
"""
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
ledger = LedgerModel.objects.filter(pk=pk).first()
|
ledger = LedgerModel.objects.filter(pk=pk).first()
|
||||||
if ledger.is_posted():
|
if ledger.is_posted():
|
||||||
messages.error(request, _("Ledger is already posted"))
|
messages.error(request, _("Ledger is already posted"))
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list",dealer_slug=dealer_slug, pk=ledger.pk)
|
||||||
ledger.post_journal_entries()
|
ledger.post_journal_entries()
|
||||||
ledger.post()
|
ledger.post()
|
||||||
ledger.save()
|
ledger.save()
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list",dealer_slug=dealer_slug, pk=ledger.pk)
|
||||||
|
|
||||||
|
|
||||||
def ledger_unpost_all_journals(request, entity_slug, pk):
|
def ledger_unpost_all_journals(request,dealer_slug, entity_slug, pk):
|
||||||
"""
|
"""
|
||||||
Unposts all journal entries for a specified ledger and marks the ledger as unposted.
|
Unposts all journal entries for a specified ledger and marks the ledger as unposted.
|
||||||
|
|
||||||
@ -8686,10 +8682,11 @@ def ledger_unpost_all_journals(request, entity_slug, pk):
|
|||||||
page for the specified ledger.
|
page for the specified ledger.
|
||||||
:rtype: HttpResponseRedirect
|
:rtype: HttpResponseRedirect
|
||||||
"""
|
"""
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
ledger = LedgerModel.objects.filter(pk=pk).first()
|
ledger = LedgerModel.objects.filter(pk=pk).first()
|
||||||
if not ledger.is_posted():
|
if not ledger.is_posted():
|
||||||
messages.error(request, _("Ledger is already Unposted"))
|
messages.error(request, _("Ledger is already Unposted"))
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list",dealer_slug=dealer_slug, pk=ledger.pk)
|
||||||
qs = ledger.journal_entries.posted()
|
qs = ledger.journal_entries.posted()
|
||||||
for je in qs:
|
for je in qs:
|
||||||
je.mark_as_unposted()
|
je.mark_as_unposted()
|
||||||
@ -8697,18 +8694,19 @@ def ledger_unpost_all_journals(request, entity_slug, pk):
|
|||||||
|
|
||||||
ledger.unpost()
|
ledger.unpost()
|
||||||
ledger.save()
|
ledger.save()
|
||||||
return redirect("journalentry_list", pk=ledger.pk)
|
return redirect("journalentry_list",dealer_slug=dealer_slug, pk=ledger.pk)
|
||||||
|
|
||||||
|
|
||||||
def pricing_page(request):
|
def pricing_page(request,dealer_slug):
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
plan_list = PlanPricing.objects.all()
|
plan_list = PlanPricing.objects.all()
|
||||||
form = forms.PaymentPlanForm()
|
form = forms.PaymentPlanForm()
|
||||||
return render(request, "pricing_page.html", {"plan_list": plan_list, "form": form})
|
return render(request, "pricing_page.html", {"plan_list": plan_list, "form": form})
|
||||||
|
|
||||||
|
|
||||||
# @require_POST
|
# @require_POST
|
||||||
def submit_plan(request):
|
def submit_plan(request,dealer_slug):
|
||||||
dealer = get_user_type(request)
|
dealer = get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
selected_plan_id = request.POST.get("selected_plan")
|
selected_plan_id = request.POST.get("selected_plan")
|
||||||
pp = PlanPricing.objects.get(pk=selected_plan_id)
|
pp = PlanPricing.objects.get(pk=selected_plan_id)
|
||||||
|
|
||||||
@ -8725,9 +8723,9 @@ def submit_plan(request):
|
|||||||
return redirect(transaction_url)
|
return redirect(transaction_url)
|
||||||
|
|
||||||
|
|
||||||
def payment_callback(request):
|
def payment_callback(request,dealer_slug):
|
||||||
message = request.GET.get("message")
|
message = request.GET.get("message")
|
||||||
dealer = get_user_type(request)
|
dealer = get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
payment_id = request.GET.get("id")
|
payment_id = request.GET.get("id")
|
||||||
history = models.PaymentHistory.objects.filter(transaction_id=payment_id).first()
|
history = models.PaymentHistory.objects.filter(transaction_id=payment_id).first()
|
||||||
payment_status = request.GET.get("status")
|
payment_status = request.GET.get("status")
|
||||||
@ -8966,11 +8964,13 @@ def update_note(request,dealer_slug, pk):
|
|||||||
# Admin Management
|
# Admin Management
|
||||||
|
|
||||||
|
|
||||||
def management_view(request):
|
def management_view(request,dealer_slug):
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
return render(request, "admin_management/management.html")
|
return render(request, "admin_management/management.html")
|
||||||
|
|
||||||
|
|
||||||
def user_management(request):
|
def user_management(request,dealer_slug):
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
context = {
|
context = {
|
||||||
"customers": models.Customer.objects.filter(active=False),
|
"customers": models.Customer.objects.filter(active=False),
|
||||||
"organizations": models.Organization.objects.filter(active=False),
|
"organizations": models.Organization.objects.filter(active=False),
|
||||||
@ -8980,12 +8980,13 @@ def user_management(request):
|
|||||||
return render(request, "admin_management/user_management.html", context)
|
return render(request, "admin_management/user_management.html", context)
|
||||||
|
|
||||||
|
|
||||||
def AuditLogDashboardView(request):
|
def AuditLogDashboardView(request,dealer_slug):
|
||||||
"""
|
"""
|
||||||
Displays audit logs (User Actions, Login Events, Request Events) with pagination.
|
Displays audit logs (User Actions, Login Events, Request Events) with pagination.
|
||||||
Log type is determined by the 'q' query parameter (e.g., ?q=userActions).
|
Log type is determined by the 'q' query parameter (e.g., ?q=userActions).
|
||||||
Pagination page number is passed as a query parameter (e.g., ?page=2).
|
Pagination page number is passed as a query parameter (e.g., ?page=2).
|
||||||
"""
|
"""
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
q = request.GET.get("q") # Get the log type from the 'q' query parameter
|
q = request.GET.get("q") # Get the log type from the 'q' query parameter
|
||||||
current_pagination_page = request.GET.get("page", 1)
|
current_pagination_page = request.GET.get("page", 1)
|
||||||
context = {}
|
context = {}
|
||||||
@ -9113,7 +9114,8 @@ def AuditLogDashboardView(request):
|
|||||||
return render(request, template_name, context)
|
return render(request, template_name, context)
|
||||||
|
|
||||||
|
|
||||||
def activate_account(request, content_type, slug):
|
def activate_account(request,dealer_slug, content_type, slug):
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
try:
|
try:
|
||||||
model = apps.get_model(f"inventory.{content_type}")
|
model = apps.get_model(f"inventory.{content_type}")
|
||||||
except LookupError:
|
except LookupError:
|
||||||
@ -9123,13 +9125,14 @@ def activate_account(request, content_type, slug):
|
|||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
obj.activate_account()
|
obj.activate_account()
|
||||||
messages.success(request, _("Account activated successfully"))
|
messages.success(request, _("Account activated successfully"))
|
||||||
return redirect("user_management")
|
return redirect("user_management", dealer_slug=dealer_slug)
|
||||||
return render(
|
return render(
|
||||||
request, "admin_management/confirm_activate_account.html", {"obj": obj}
|
request, "admin_management/confirm_activate_account.html", {"obj": obj}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def permenant_delete_account(request, content_type, slug):
|
def permenant_delete_account(request,dealer_slug, content_type, slug):
|
||||||
|
get_object_or_404(models.Dealer,slug=dealer_slug)
|
||||||
try:
|
try:
|
||||||
model = apps.get_model(f"inventory.{content_type}")
|
model = apps.get_model(f"inventory.{content_type}")
|
||||||
except LookupError:
|
except LookupError:
|
||||||
@ -9147,7 +9150,7 @@ def permenant_delete_account(request, content_type, slug):
|
|||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
messages.error(request, _(f"Error deleting account: {e}"))
|
messages.error(request, _(f"Error deleting account: {e}"))
|
||||||
return redirect("user_management")
|
return redirect("user_management", dealer_slug=dealer_slug)
|
||||||
return render(
|
return render(
|
||||||
request, "admin_management/permenant_delete_account.html", {"obj": obj}
|
request, "admin_management/permenant_delete_account.html", {"obj": obj}
|
||||||
)
|
)
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div class="d-flex justify-content-center">
|
<div class="d-flex justify-content-center">
|
||||||
<button class="btn btn-phoenix-primary mx-2" type="submit">Activate</button>
|
<button class="btn btn-phoenix-primary mx-2" type="submit">Activate</button>
|
||||||
<a class="btn btn-phoenix-danger mx-2" href="{% url 'user_management' %}">Cancel</a>
|
<a class="btn btn-phoenix-danger mx-2" href="{% url 'user_management' request.dealer.slug %}">Cancel</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-4 g-4 mt-10">
|
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-4 g-4 mt-10">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<a href="{% url 'user_management' %}">
|
<a href="{% url 'user_management' request.dealer.slug %}">
|
||||||
<div class="card h-100">
|
<div class="card h-100">
|
||||||
<div class="card-header text-center">
|
<div class="card-header text-center">
|
||||||
<h5 class="card-title">{{ _("User Management")}}</h5>
|
<h5 class="card-title">{{ _("User Management")}}</h5>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<a href="{% url 'audit_log_dashboard' %}">
|
<a href="{% url 'audit_log_dashboard' request.dealer.slug %}">
|
||||||
<div class="card h-100">
|
<div class="card h-100">
|
||||||
<div class="card-header text-center">
|
<div class="card-header text-center">
|
||||||
<h5 class="card-title">{{ _("Audit Log Dashboard")}}</h5>
|
<h5 class="card-title">{{ _("Audit Log Dashboard")}}</h5>
|
||||||
|
|||||||
@ -2,17 +2,17 @@
|
|||||||
<ul class="nav nav-tabs" id="accountTypeTabs" role="tablist">
|
<ul class="nav nav-tabs" id="accountTypeTabs" role="tablist">
|
||||||
|
|
||||||
<li class="nav-item me-3" role="presentation">
|
<li class="nav-item me-3" role="presentation">
|
||||||
<a href="{% url 'audit_log_dashboard' %}?q=userActions">
|
<a href="{% url 'audit_log_dashboard' request.dealer.slug %}?q=userActions">
|
||||||
<i class="fas fa-history me-2"></i>{% trans "User Actions" %}
|
<i class="fas fa-history me-2"></i>{% trans "User Actions" %}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item me-3" role="presentation">
|
<li class="nav-item me-3" role="presentation">
|
||||||
<a href="{% url 'audit_log_dashboard' %}?q=loginEvents">
|
<a href="{% url 'audit_log_dashboard' request.dealer.slug %}?q=loginEvents">
|
||||||
<i class="fas fa-right-to-bracket me-2"></i>{% trans "User Login Events" %}
|
<i class="fas fa-right-to-bracket me-2"></i>{% trans "User Login Events" %}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<a href="{% url 'audit_log_dashboard' %}?q=userRequests">
|
<a href="{% url 'audit_log_dashboard' request.dealer.slug %}?q=userRequests">
|
||||||
<i class="fas fa-file-alt me-2"></i>{% trans "User Page Requests" %}
|
<i class="fas fa-file-alt me-2"></i>{% trans "User Page Requests" %}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div class="d-flex justify-content-center">
|
<div class="d-flex justify-content-center">
|
||||||
<button class="btn btn-phoenix-danger mx-2" type="submit"><i class="fas fa-trash me-2"></i> Delete Permenantly</button>
|
<button class="btn btn-phoenix-danger mx-2" type="submit"><i class="fas fa-trash me-2"></i> Delete Permenantly</button>
|
||||||
<a class="btn btn-phoenix-secondary mx-2" href="{% url 'user_management' %}"><i class="fas fa-ban me-2"></i>Cancel</a>
|
<a class="btn btn-phoenix-secondary mx-2" href="{% url 'user_management' request.dealer.slug %}"><i class="fas fa-ban me-2"></i>Cancel</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -51,9 +51,9 @@
|
|||||||
<span class="fas fa-ellipsis-h fs-10"></span>
|
<span class="fas fa-ellipsis-h fs-10"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||||
<a href="{% url 'activate_account' 'customer' customer.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
<a href="{% url 'activate_account' request.dealer.slug 'customer' customer.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a href="{% url 'permenant_delete_account' 'customer' customer.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
<a href="{% url 'permenant_delete_account' request.dealer.slug 'customer' customer.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -115,9 +115,9 @@
|
|||||||
<span class="fas fa-ellipsis-h fs-10"></span>
|
<span class="fas fa-ellipsis-h fs-10"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||||
<a href="{% url 'activate_account' 'organization' organization.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
<a href="{% url 'activate_account' request.dealer.slug 'organization' organization.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a href="{% url 'permenant_delete_account' 'organization' organization.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
<a href="{% url 'permenant_delete_account' request.dealer.slug 'organization' organization.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -179,9 +179,9 @@
|
|||||||
<span class="fas fa-ellipsis-h fs-10"></span>
|
<span class="fas fa-ellipsis-h fs-10"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||||
<a href="{% url 'activate_account' 'vendor' vendor.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
<a href="{% url 'activate_account' request.dealer.slug 'vendor' vendor.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a href="{% url 'permenant_delete_account' 'vendor' vendor.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
<a href="{% url 'permenant_delete_account' request.dealer.slug 'vendor' vendor.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -245,7 +245,7 @@
|
|||||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||||
<a href="{% url 'activate_account' 'staff' obj.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
<a href="{% url 'activate_account' 'staff' obj.slug %}"><button class="dropdown-item text-primary">{% trans "Activate" %}</button></a>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a href="{% url 'permenant_delete_account' 'staff' obj.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
<a href="{% url 'permenant_delete_account' request.dealer.slug 'staff' obj.slug %}"><button class="dropdown-item text-danger">{% trans "Permenantly Delete" %}</button></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@ -58,7 +58,7 @@
|
|||||||
|
|
||||||
<h2>{{ _("Select Car Makes You Sell") }}</h2>
|
<h2>{{ _("Select Car Makes You Sell") }}</h2>
|
||||||
|
|
||||||
<form method="post" action="{% url 'assign_car_makes' %}">
|
<form method="post" action="{% url 'assign_car_makes' request.dealer.slug %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<div class="car-makes-grid">
|
<div class="car-makes-grid">
|
||||||
|
|||||||
@ -114,13 +114,13 @@
|
|||||||
<span class="badge badge-phoenix fs-9 badge-phoenix-success"> <span class="badge-label">{% trans 'Active' %}</span><span class="ms-1" data-feather="check" style="height:16px;width:16px;"></span> </span>
|
<span class="badge badge-phoenix fs-9 badge-phoenix-success"> <span class="badge-label">{% trans 'Active' %}</span><span class="ms-1" data-feather="check" style="height:16px;width:16px;"></span> </span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="badge badge-phoenix fs-9 badge-phoenix-danger"> <span class="badge-label">{% trans 'Expired' %}</span><span class="ms-1" data-feather="times" style="height:16px;width:16px;"></span> </span>
|
<span class="badge badge-phoenix fs-9 badge-phoenix-danger"> <span class="badge-label">{% trans 'Expired' %}</span><span class="ms-1" data-feather="times" style="height:16px;width:16px;"></span> </span>
|
||||||
<a href="{% url 'pricing_page' %}" class="btn btn-phoenix-secondary ms-2"><span class="fas fa-arrow-right me-2"></span>{{ _("Renew") }}</a>
|
<a href="{% url 'pricing_page' request.dealer.slug %}" class="btn btn-phoenix-secondary ms-2"><span class="fas fa-arrow-right me-2"></span>{{ _("Renew") }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if dealer.user.userplan.plan.name != "Enterprise" %}
|
{% if dealer.user.userplan.plan.name != "Enterprise" %}
|
||||||
<a href="{% url 'pricing_page' %}" class="btn btn-sm btn-phoenix-primary ms-2"><span class="fas fa-rocket me-2"></span>{{ _("Upgrade") }}</a>
|
<a href="{% url 'pricing_page' request.dealer.slug %}" class="btn btn-sm btn-phoenix-primary ms-2"><span class="fas fa-rocket me-2"></span>{{ _("Upgrade") }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="text-body-tertiary fw-semibold">You have no active plan.</span> <a href="{% url 'pricing_page' %}" class="btn btn-phoenix-secondary ms-2"><span class="fas fa-arrow-right me-2"></span>{{ _("Subscribe") }}</a>
|
<span class="text-body-tertiary fw-semibold">You have no active plan.</span> <a href="{% url 'pricing_page' request.dealer.slug %}" class="btn btn-phoenix-secondary ms-2"><span class="fas fa-arrow-right me-2"></span>{{ _("Subscribe") }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -172,7 +172,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<a class="btn btn-sm btn-phoenix-warning" href="{% url 'assign_car_makes' %}">{{ _("Select Makes")}}</a>
|
<a class="btn btn-sm btn-phoenix-warning" href="{% url 'assign_car_makes' request.dealer.slug %}">{{ _("Select Makes")}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -230,7 +230,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if perms.django_ledger.view_itemmodel %}
|
{% if perms.django_ledger.view_itemmodel %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{% url 'ledger_list' %}">
|
<a class="nav-link" href="{% url 'ledger_list' request.dealer.slug %}">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<span class="nav-link-icon"><span class="fas fa-book"></span></span><span class="nav-link-text">{% trans "Ledgers"|capfirst %}</span>
|
<span class="nav-link-icon"><span class="fas fa-book"></span></span><span class="nav-link-text">{% trans "Ledgers"|capfirst %}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -238,7 +238,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{% url 'item_service_list' %}">
|
<a class="nav-link" href="{% url 'item_service_list' request.dealer.slug %}">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<span class="nav-link-icon"><span data-feather="activity"></span></span><span class="nav-link-text">{% trans "Services"|capfirst %}</span>
|
<span class="nav-link-icon"><span data-feather="activity"></span></span><span class="nav-link-text">{% trans "Services"|capfirst %}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -246,7 +246,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% if perms.django_ledger.view_itemmodel %}
|
{% if perms.django_ledger.view_itemmodel %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{% url 'item_expense_list' %}">
|
<a class="nav-link" href="{% url 'item_expense_list' request.dealer.slug %}">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<span class="nav-link-icon"><span class="fas fa-users-cog"></span></span><span class="nav-link-text">{% trans "Expenses"|capfirst %}</span>
|
<span class="nav-link-icon"><span class="fas fa-users-cog"></span></span><span class="nav-link-text">{% trans "Expenses"|capfirst %}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -255,7 +255,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if perms.django_ledger.view_vendormodel %}
|
{% if perms.django_ledger.view_vendormodel %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{% url 'vendor_list' %}">
|
<a class="nav-link" href="{% url 'vendor_list' request.dealer.slug %}">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<span class="nav-link-icon"><span data-feather="package"></span></span><span class="nav-link-text">{% trans 'vendors'|capfirst %}</span>
|
<span class="nav-link-icon"><span data-feather="package"></span></span><span class="nav-link-text">{% trans 'vendors'|capfirst %}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -439,10 +439,10 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if request.is_dealer %}
|
{% if request.is_dealer %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link px-3 d-block" href="{% url 'user_list' %}"><span class="me-2 text-body align-bottom" data-feather="users"></span>{{ _("Staff & Groups") }}</a>
|
<a class="nav-link px-3 d-block" href="{% url 'user_list' request.dealer.slug %}"><span class="me-2 text-body align-bottom" data-feather="users"></span>{{ _("Staff & Groups") }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link px-3 d-block" href="{% url 'dealer_activity' %}"> <span class="me-2 text-body align-bottom" data-feather="lock"></span>{{ _("Activities") }}</a>
|
<a class="nav-link px-3 d-block" href="{% url 'dealer_activity' request.dealer.slug %}"> <span class="me-2 text-body align-bottom" data-feather="lock"></span>{{ _("Activities") }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
@ -452,7 +452,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
{% if request.is_dealer %}
|
{% if request.is_dealer %}
|
||||||
<a class="nav-link px-3 d-block" href="{% url 'management' %}"> <span class="me-2 text-body align-bottom" data-feather="shield"></span>{{ _("Admin Managemnet") }}</a>
|
<a class="nav-link px-3 d-block" href="{% url 'management' request.dealer.slug %}"> <span class="me-2 text-body align-bottom" data-feather="shield"></span>{{ _("Admin Managemnet") }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<div class="alert alert-outline-warning d-flex align-items-center"
|
<div class="alert alert-outline-warning d-flex align-items-center"
|
||||||
role="alert">
|
role="alert">
|
||||||
<i class="fa-solid fa-circle-info fs-6"></i>
|
<i class="fa-solid fa-circle-info fs-6"></i>
|
||||||
<p class="mb-0 flex-1">{{ _("Please Add A Vendor, Before Adding A Car .") }} <a href="{% url 'vendor_create' %}" class="ms-3 text-body-primary fs-9" >{{ _("Add Vendor") }}</a> </p>
|
<p class="mb-0 flex-1">{{ _("Please Add A Vendor, Before Adding A Car .") }} <a href="{% url 'vendor_create' request.dealer.slug %}" class="ms-3 text-body-primary fs-9" >{{ _("Add Vendor") }}</a> </p>
|
||||||
<button class="btn-close"
|
<button class="btn-close"
|
||||||
type="button"
|
type="button"
|
||||||
data-bs-dismiss="alert"
|
data-bs-dismiss="alert"
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<div class="d-flex justify-content-between mb-2">
|
<div class="d-flex justify-content-between mb-2">
|
||||||
<h3 class="">{% trans "Expenses" %}</h3>
|
<h3 class="">{% trans "Expenses" %}</h3>
|
||||||
<a href="{% url 'item_expense_create' %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Expense" %}</a>
|
<a href="{% url 'item_expense_create' request.dealer.slug %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Expense" %}</a>
|
||||||
</div>
|
</div>
|
||||||
{% include "partials/search_box.html" %}
|
{% include "partials/search_box.html" %}
|
||||||
{% if page_obj.object_list %}
|
{% if page_obj.object_list %}
|
||||||
@ -39,7 +39,7 @@
|
|||||||
{{ expense.uom }}
|
{{ expense.uom }}
|
||||||
</td>
|
</td>
|
||||||
<td class="align-middle product white-space-nowrap">
|
<td class="align-middle product white-space-nowrap">
|
||||||
<a href="{% url 'item_expense_update' expense.pk %}"
|
<a href="{% url 'item_expense_update' request.dealer.slug expense.pk %}"
|
||||||
class="btn btn-sm btn-phoenix-success">
|
class="btn btn-sm btn-phoenix-success">
|
||||||
{% trans "Update" %}
|
{% trans "Update" %}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<div class="d-flex justify-content-between mb-2">
|
<div class="d-flex justify-content-between mb-2">
|
||||||
<h3 class="">{% trans "Services" %}</h3>
|
<h3 class="">{% trans "Services" %}</h3>
|
||||||
<a href="{% url 'item_service_create' %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Service" %}</a>
|
<a href="{% url 'item_service_create' request.dealer.slug %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Service" %}</a>
|
||||||
</div>
|
</div>
|
||||||
{% include "partials/search_box.html" %}
|
{% include "partials/search_box.html" %}
|
||||||
{% if page_obj.object_list %}
|
{% if page_obj.object_list %}
|
||||||
@ -46,7 +46,7 @@
|
|||||||
{{ service.item.co }}
|
{{ service.item.co }}
|
||||||
</td>
|
</td>
|
||||||
<td class="align-middle white-space-nowrap text-start">
|
<td class="align-middle white-space-nowrap text-start">
|
||||||
<a href="{% url 'item_service_update' service.pk %}"
|
<a href="{% url 'item_service_update' request.dealer.slug service.pk %}"
|
||||||
class="btn btn-sm btn-phoenix-success">
|
class="btn btn-sm btn-phoenix-success">
|
||||||
{% trans "Update" %}
|
{% trans "Update" %}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<a type="button"
|
<a type="button"
|
||||||
class="btn btn-sm btn-phoenix-danger"
|
class="btn btn-sm btn-phoenix-danger"
|
||||||
href="{% url 'bank_account_delete' bank_account.pk %}">
|
href="{% url 'bank_account_delete' request.dealer.slug bank_account.pk %}">
|
||||||
{% trans 'Yes' %}
|
{% trans 'Yes' %}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -52,7 +52,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer d-flex ">
|
<div class="card-footer d-flex ">
|
||||||
<a class="btn btn-sm btn-phoenix-primary me-1" href="{% url 'bank_account_update' bank_account.pk %}">
|
<a class="btn btn-sm btn-phoenix-primary me-1" href="{% url 'bank_account_update' request.dealer.slug bank_account.pk %}">
|
||||||
<!--<i class="bi bi-pencil-square"></i> -->
|
<!--<i class="bi bi-pencil-square"></i> -->
|
||||||
{{ _("Edit") }}
|
{{ _("Edit") }}
|
||||||
</a>
|
</a>
|
||||||
@ -63,7 +63,7 @@
|
|||||||
{{ _("Delete") }}
|
{{ _("Delete") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-sm btn-phoenix-secondary"
|
<a class="btn btn-sm btn-phoenix-secondary"
|
||||||
href="{% url 'bank_account_list' %}">
|
href="{% url 'bank_account_list' request.dealer.slug %}">
|
||||||
<!--<i class="bi bi-arrow-left-square-fill"></i>-->
|
<!--<i class="bi bi-arrow-left-square-fill"></i>-->
|
||||||
{% trans "Back to List" %}
|
{% trans "Back to List" %}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<div class="d-flex justify-content-between mb-2">
|
<div class="d-flex justify-content-between mb-2">
|
||||||
<h3 class="">{% trans "Bank Accounts" %}</h3>
|
<h3 class="">{% trans "Bank Accounts" %}</h3>
|
||||||
<a href="{% url 'bank_account_create' %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Bank Account" %}</a>
|
<a href="{% url 'bank_account_create' request.dealer.slug %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Bank Account" %}</a>
|
||||||
</div>
|
</div>
|
||||||
{% include "partials/search_box.html" %}
|
{% include "partials/search_box.html" %}
|
||||||
{% if page_obj.object_list %}
|
{% if page_obj.object_list %}
|
||||||
@ -27,7 +27,9 @@
|
|||||||
{% for bank in bank_accounts %}
|
{% for bank in bank_accounts %}
|
||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
<td class="align-middle product white-space-nowrap px-1">
|
<td class="align-middle product white-space-nowrap px-1">
|
||||||
{{ bank.name }}
|
<a href="{% url 'bank_account_detail' request.dealer.slug bank.pk %}">
|
||||||
|
{{ bank.name }}
|
||||||
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="align-middle product white-space-nowrap">
|
<td class="align-middle product white-space-nowrap">
|
||||||
{{ bank.account_number }}
|
{{ bank.account_number }}
|
||||||
@ -36,7 +38,7 @@
|
|||||||
{{ bank.account_type|capfirst }}
|
{{ bank.account_type|capfirst }}
|
||||||
</td>
|
</td>
|
||||||
<td class="align-middle product white-space-nowrap">
|
<td class="align-middle product white-space-nowrap">
|
||||||
<a href="{% url 'bank_account_update' bank.pk %}"
|
<a href="{% url 'bank_account_update' request.dealer.slug bank.pk %}"
|
||||||
class="btn btn-sm btn-phoenix-success">
|
class="btn btn-sm btn-phoenix-success">
|
||||||
{% trans "Update" %}
|
{% trans "Update" %}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@ -38,19 +38,19 @@
|
|||||||
<div class="card-footer">
|
<div class="card-footer">
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
{% if journal_entry.can_lock %}
|
{% if journal_entry.can_lock %}
|
||||||
<a href="{{ journal_entry.get_lock_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
<a href="{{ journal_entry.get_lock_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
||||||
class="btn btn-phoenix-success font-weight-bold">{% trans 'Lock' %}</a>
|
class="btn btn-phoenix-success font-weight-bold">{% trans 'Lock' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if journal_entry.can_unlock %}
|
{% if journal_entry.can_unlock %}
|
||||||
<a href="{{ journal_entry.get_unlock_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
<a href="{{ journal_entry.get_unlock_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
||||||
class="btn btn-phoenix-warning font-weight-bold">{% trans 'UnLock' %}</a>
|
class="btn btn-phoenix-warning font-weight-bold">{% trans 'UnLock' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if journal_entry.can_post %}
|
{% if journal_entry.can_post %}
|
||||||
<a href="{{ journal_entry.get_post_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
<a href="{{ journal_entry.get_post_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
||||||
class="btn btn-phoenix-success font-weight-bold">{% trans 'Post' %}</a>
|
class="btn btn-phoenix-success font-weight-bold">{% trans 'Post' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if journal_entry.can_unpost %}
|
{% if journal_entry.can_unpost %}
|
||||||
<a href="{{ journal_entry.get_unpost_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
<a href="{{ journal_entry.get_unpost_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}"
|
||||||
class="btn btn-phoenix-danger font-weight-bold">{% trans 'UnPost' %}</a>
|
class="btn btn-phoenix-danger font-weight-bold">{% trans 'UnPost' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="mt-5 text-center">
|
<div class="mt-5 text-center">
|
||||||
<button type="submit" class="btn btn-phoenix-success me-2"><i class="fa-solid fa-floppy-disk me-1"></i>{% trans "Save" %}</button>
|
<button type="submit" class="btn btn-phoenix-success me-2"><i class="fa-solid fa-floppy-disk me-1"></i>{% trans "Save" %}</button>
|
||||||
<a href="{% url 'journalentry_list' ledger.pk %}" class="btn btn-phoenix-secondary"><i class="fa-solid fa-ban me-1"></i> {% trans "Cancel" %}</a>
|
<a href="{% url 'journalentry_list' request.dealer.slug ledger.pk %}" class="btn btn-phoenix-secondary"><i class="fa-solid fa-ban me-1"></i> {% trans "Cancel" %}</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
<div class="d-flex justify-content-between mb-2">
|
<div class="d-flex justify-content-between mb-2">
|
||||||
<h3 class="">{% trans "Journal Entries" %}</h3>
|
<h3 class="">{% trans "Journal Entries" %}</h3>
|
||||||
<a href="{% url 'journalentry_create' ledger.pk %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Journal Entry" %}</a>
|
<a href="{% url 'journalentry_create' request.dealer.slug ledger.pk %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans "Add Journal Entry" %}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@ -96,10 +96,10 @@
|
|||||||
<span class="fas fa-ellipsis-h fs-10"></span>
|
<span class="fas fa-ellipsis-h fs-10"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||||
<a class="dropdown-item" href="{% url 'journalentry_transactions' je.pk %}">{% trans "View" %}</a>
|
<a class="dropdown-item" href="{% url 'journalentry_transactions' request.dealer.slug je.pk %}">{% trans "View" %}</a>
|
||||||
<a class="dropdown-item" href="{% url 'journalentry_txs' je.entity_slug je.ledger_id je.pk %}">{% trans "Transactions" %}</a>
|
<a class="dropdown-item" href="{% url 'journalentry_txs' request.dealer.slug je.entity_slug je.ledger_id je.pk %}">{% trans "Transactions" %}</a>
|
||||||
{% if je.can_delete %}
|
{% if je.can_delete %}
|
||||||
<a class="dropdown-item" href="{% url 'journalentry_delete' je.pk %}">{% trans "Delete" %}</a>
|
<a class="dropdown-item" href="{% url 'journalentry_delete' request.dealer.slug je.pk %}">{% trans "Delete" %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -62,30 +62,30 @@
|
|||||||
{% trans 'Save' %}
|
{% trans 'Save' %}
|
||||||
</button>
|
</button>
|
||||||
<a class="btn btn-phoenix-secondary"
|
<a class="btn btn-phoenix-secondary"
|
||||||
href="{% url 'journalentry_list' journal_entry.ledger_id %}">
|
href="{% url 'journalentry_list' request.dealer.slug journal_entry.ledger_id %}">
|
||||||
{% trans 'Done' %}
|
{% trans 'Done' %}
|
||||||
</a>
|
</a>
|
||||||
{% if journal_entry.can_lock %}
|
{% if journal_entry.can_lock %}
|
||||||
<a class="btn btn-phoenix-danger"
|
<a class="btn btn-phoenix-danger"
|
||||||
href="{{ journal_entry.get_action_lock_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
href="{{ journal_entry.get_action_lock_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
||||||
{% trans 'Lock' %}
|
{% trans 'Lock' %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if journal_entry.can_unlock %}
|
{% if journal_entry.can_unlock %}
|
||||||
<a class="btn btn-phoenix-warning"
|
<a class="btn btn-phoenix-warning"
|
||||||
href="{{ journal_entry.get_action_unlock_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
href="{{ journal_entry.get_action_unlock_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
||||||
{% trans 'UnLock' %}
|
{% trans 'UnLock' %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if journal_entry.can_post %}
|
{% if journal_entry.can_post %}
|
||||||
<a class="btn btn-phoenix-danger"
|
<a class="btn btn-phoenix-danger"
|
||||||
href="{{ journal_entry.get_action_post_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
href="{{ journal_entry.get_action_post_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
||||||
{% trans 'Post' %}
|
{% trans 'Post' %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if journal_entry.can_unpost %}
|
{% if journal_entry.can_unpost %}
|
||||||
<a class="btn btn-phoenix-warning"
|
<a class="btn btn-phoenix-warning"
|
||||||
href="{{ journal_entry.get_action_unpost_url }}?next={% url 'journalentry_txs' journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
href="{{ journal_entry.get_action_unpost_url }}?next={% url 'journalentry_txs' request.dealer.slug journal_entry.entity_slug journal_entry.ledger_id journal_entry.pk %}">
|
||||||
{% trans 'UnPost' %}
|
{% trans 'UnPost' %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<div class="d-flex justify-content-between mb-2">
|
<div class="d-flex justify-content-between mb-2">
|
||||||
<h3 class="">{% trans "Ledger" %}</h3>
|
<h3 class="">{% trans "Ledger" %}</h3>
|
||||||
<a href="{% url 'ledger_create' %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans 'Create Ledger' %}</a>
|
<a href="{% url 'ledger_create' request.dealer.slug %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans 'Create Ledger' %}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="table-responsive px-1 scrollbar mt-3">
|
<div class="table-responsive px-1 scrollbar mt-3">
|
||||||
<table class="table align-items-center table-flush">
|
<table class="table align-items-center table-flush">
|
||||||
@ -32,16 +32,16 @@
|
|||||||
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
|
||||||
<td class="align-middle product white-space-nowrap px-1">
|
<td class="align-middle product white-space-nowrap px-1">
|
||||||
{% if ledger.invoicemodel %}
|
{% if ledger.invoicemodel %}
|
||||||
<a href="{% url 'invoice_detail' ledger.invoicemodel.pk %}">{{ ledger.get_wrapped_model_instance }}</a>
|
<a href="{% url 'invoice_detail' request.dealer.slug ledger.invoicemodel.pk %}">{{ ledger.get_wrapped_model_instance }}</a>
|
||||||
{% elif ledger.billmodel %}
|
{% elif ledger.billmodel %}
|
||||||
<a href="{% url 'bill_detail' ledger.billmodel.pk %}">{{ ledger.get_wrapped_model_instance }}</a>
|
<a href="{% url 'bill-detail' request.dealer.slug request.dealer.entity.slug ledger.billmodel.pk %}">{{ ledger.get_wrapped_model_instance }}</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="#">{{ ledger.name }}</a>
|
<a href="#">{{ ledger.name }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="align-middle product white-space-nowrap">
|
<td class="align-middle product white-space-nowrap">
|
||||||
<a class="btn btn-sm btn-phoenix-primary"
|
<a class="btn btn-sm btn-phoenix-primary"
|
||||||
href="{% url 'journalentry_list' ledger.pk %}">
|
href="{% url 'journalentry_list' request.dealer.slug ledger.pk %}">
|
||||||
<i class="fa-solid fa-right-left"></i>
|
<i class="fa-solid fa-right-left"></i>
|
||||||
<span>
|
<span>
|
||||||
<span class="has-text-weight-bold">{{ ledger.journal_entries__count }}</span>
|
<span class="has-text-weight-bold">{{ ledger.journal_entries__count }}</span>
|
||||||
@ -80,33 +80,33 @@
|
|||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||||
{% if ledger.can_lock %}
|
{% if ledger.can_lock %}
|
||||||
<a href="{% url 'ledger-action-lock' entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
<a href="{% url 'ledger-action-lock' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
||||||
class="dropdown-item has-text-info has-text-weight-bold">{% trans 'Lock' %}</a>
|
class="dropdown-item has-text-info has-text-weight-bold">{% trans 'Lock' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if ledger.can_unlock %}
|
{% if ledger.can_unlock %}
|
||||||
<a href="{% url 'ledger-action-unlock' entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
<a href="{% url 'ledger-action-unlock' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
||||||
class="dropdown-item has-text-warning has-text-weight-bold">{% trans 'UnLock' %}</a>
|
class="dropdown-item has-text-warning has-text-weight-bold">{% trans 'UnLock' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if ledger.can_post %}
|
{% if ledger.can_post %}
|
||||||
<a href="{% url 'ledger-action-post' entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
<a href="{% url 'ledger-action-post' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
||||||
class="dropdown-item has-text-info has-text-weight-bold text-success">{% trans 'Post' %}</a>
|
class="dropdown-item has-text-info has-text-weight-bold text-success">{% trans 'Post' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if ledger.can_unpost %}
|
{% if ledger.can_unpost %}
|
||||||
<a href="{% url 'ledger-action-unpost' entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
<a href="{% url 'ledger-action-unpost' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
||||||
class="dropdown-item has-text-warning has-text-weight-bold text-info">{% trans 'UnPost' %}</a>
|
class="dropdown-item has-text-warning has-text-weight-bold text-info">{% trans 'UnPost' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if ledger.can_hide %}
|
{% if ledger.can_hide %}
|
||||||
<a href="{% url 'ledger-action-hide' entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
<a href="{% url 'ledger-action-hide' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
||||||
class="dropdown-item has-text-warning has-text-weight-bold text-danger">{% trans 'Hide' %}</a>
|
class="dropdown-item has-text-warning has-text-weight-bold text-danger">{% trans 'Hide' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if ledger.can_unhide %}
|
{% if ledger.can_unhide %}
|
||||||
<a href="{% url 'ledger-action-unhide' entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
<a href="{% url 'ledger-action-unhide' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
||||||
class="dropdown-item has-text-danger has-text-weight-bold">{% trans 'UnHide' %}</a>
|
class="dropdown-item has-text-danger has-text-weight-bold">{% trans 'UnHide' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if ledger.can_delete %}
|
{% if ledger.can_delete %}
|
||||||
<a href="{% url 'ledger-delete' entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
<a href="{% url 'ledger-delete' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
|
||||||
class="dropdown-item has-text-danger has-text-weight-bold text-danger">{% trans 'Delete' %}</a>
|
class="dropdown-item has-text-danger has-text-weight-bold text-danger">{% trans 'Delete' %}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -42,7 +42,7 @@
|
|||||||
<span class="text-muted small">{% trans "Plan" %}</span>
|
<span class="text-muted small">{% trans "Plan" %}</span>
|
||||||
<div class="d-flex align-items-center justify-content-between">
|
<div class="d-flex align-items-center justify-content-between">
|
||||||
<span class="fw-semibold">{{ userplan.plan }}</span>
|
<span class="fw-semibold">{{ userplan.plan }}</span>
|
||||||
<a href="{% url 'pricing_page' %}" class="btn btn-sm btn-phoenix-primary">
|
<a href="{% url 'pricing_page' request.dealer.slug %}" class="btn btn-sm btn-phoenix-primary">
|
||||||
{% trans "Upgrade" %}
|
{% trans "Upgrade" %}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -98,7 +98,7 @@
|
|||||||
<div class="d-flex justify-content-between align-items-end mt-2">
|
<div class="d-flex justify-content-between align-items-end mt-2">
|
||||||
<span class="fs-5 fw-bold">{{ plan_pricing.price }} <span class="icon-saudi_riyal"></span></span>
|
<span class="fs-5 fw-bold">{{ plan_pricing.price }} <span class="icon-saudi_riyal"></span></span>
|
||||||
{% if plan_pricing.plan == userplan.plan or userplan.is_expired or userplan.plan.is_free %}
|
{% if plan_pricing.plan == userplan.plan or userplan.is_expired or userplan.plan.is_free %}
|
||||||
<a href="{% url 'pricing_page' %}" class="btn btn-sm btn-phoenix-success">
|
<a href="{% url 'pricing_page' request.dealer.slug %}" class="btn btn-sm btn-phoenix-success">
|
||||||
{% trans "Buy" %}
|
{% trans "Buy" %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@ -51,7 +51,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="container py-5">
|
<div class="container py-5">
|
||||||
<h1 class="text-center mb-5">{{ _("Choose Your Plan")}}</h1>
|
<h1 class="text-center mb-5">{{ _("Choose Your Plan")}}</h1>
|
||||||
<form method="POST" action="{% url 'submit_plan' %}" id="wizardForm">
|
<form method="POST" action="{% url 'submit_plan' request.dealer.slug %}" id="wizardForm">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<!-- Step 1: Plan Selection -->
|
<!-- Step 1: Plan Selection -->
|
||||||
<div class="step" id="step1">
|
<div class="step" id="step1">
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
<div class="alert alert-outline-warning d-flex align-items-center" role="alert">
|
<div class="alert alert-outline-warning d-flex align-items-center" role="alert">
|
||||||
<i class="fa-solid fa-circle-info fs-6"></i>
|
<i class="fa-solid fa-circle-info fs-6"></i>
|
||||||
<p class="mb-0 flex-1">{{ _("No Active Subscription,please activate your subscription.") }}<a href="{% url 'pricing_page' %}" class="ms-3 text-body-primary fs-9">Manage Subscription</a></p>
|
<p class="mb-0 flex-1">{{ _("No Active Subscription,please activate your subscription.") }}<a href="{% url 'pricing_page' request.dealer.slug %}" class="ms-3 text-body-primary fs-9">Manage Subscription</a></p>
|
||||||
<button class="btn-close" type="button" data-bs-dismiss="alert" aria-label="Close"></button>
|
<button class="btn-close" type="button" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
8
templates/vendors/vendors_list.html
vendored
8
templates/vendors/vendors_list.html
vendored
@ -11,7 +11,7 @@
|
|||||||
<h3 class="">
|
<h3 class="">
|
||||||
{{ _("Vendors") |capfirst }}
|
{{ _("Vendors") |capfirst }}
|
||||||
</h2>
|
</h2>
|
||||||
<a href="{% url 'vendor_create' %}"
|
<a href="{% url 'vendor_create' request.dealer.slug %}"
|
||||||
class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{{ _("Add Vendor") }}</a>
|
class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{{ _("Add Vendor") }}</a>
|
||||||
</div>
|
</div>
|
||||||
{% include "partials/search_box.html" %}
|
{% include "partials/search_box.html" %}
|
||||||
@ -92,7 +92,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<a class="fs-8 fw-bold" href="{% url 'vendor_detail' vendor.slug %}">{{ vendor.arabic_name }}</a>
|
<a class="fs-8 fw-bold" href="{% url 'vendor_detail' request.dealer.slug vendor.slug %}">{{ vendor.arabic_name }}</a>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<p class="mb-0 text-body-highlight fw-semibold fs-9 me-2">{{ vendor.name }}</p>
|
<p class="mb-0 text-body-highlight fw-semibold fs-9 me-2">{{ vendor.name }}</p>
|
||||||
<!--<span class="badge badge-phoenix badge-phoenix-primary">{{ vendor.vendor_model.uuid }}</span>-->
|
<!--<span class="badge badge-phoenix badge-phoenix-primary">{{ vendor.vendor_model.uuid }}</span>-->
|
||||||
@ -121,11 +121,11 @@
|
|||||||
<span class="fas fa-ellipsis-h fs-10"></span>
|
<span class="fas fa-ellipsis-h fs-10"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||||
<a href="{% url 'vendor_update' vendor.slug %}"
|
<a href="{% url 'vendor_update' request.dealer.slug vendor.slug %}"
|
||||||
class="dropdown-item text-success-dark">{% trans "Edit" %}</a>
|
class="dropdown-item text-success-dark">{% trans "Edit" %}</a>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<button class="delete-btn dropdown-item text-danger"
|
<button class="delete-btn dropdown-item text-danger"
|
||||||
data-url="{% url 'vendor_delete' vendor.slug %}"
|
data-url="{% url 'vendor_delete' request.dealer.slug vendor.slug %}"
|
||||||
data-message="{{ _("Are you sure you want to delete this vendor") }}?"
|
data-message="{{ _("Are you sure you want to delete this vendor") }}?"
|
||||||
data-bs-toggle="modal"
|
data-bs-toggle="modal"
|
||||||
data-bs-target="#deleteModal">{{ _("Delete") }}</button>
|
data-bs-target="#deleteModal">{{ _("Delete") }}</button>
|
||||||
|
|||||||
4
templates/vendors/view_vendor.html
vendored
4
templates/vendors/view_vendor.html
vendored
@ -28,12 +28,12 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer d-flex">
|
<div class="card-footer d-flex">
|
||||||
<a class="btn btn-sm btn-phoenix-primary me-1" href="{% url 'vendor_update' vendor.slug %}">
|
<a class="btn btn-sm btn-phoenix-primary me-1" href="{% url 'vendor_update' request.dealer.slug vendor.slug %}">
|
||||||
{% trans "Edit" %}
|
{% trans "Edit" %}
|
||||||
<i class="fa fa-pencil"></i>
|
<i class="fa fa-pencil"></i>
|
||||||
</a>
|
</a>
|
||||||
<button class="btn btn-phoenix-danger btn-sm delete-btn"
|
<button class="btn btn-phoenix-danger btn-sm delete-btn"
|
||||||
data-url="{% url 'vendor_delete' vendor.slug %}"
|
data-url="{% url 'vendor_delete' request.dealer.slug vendor.slug %}"
|
||||||
data-message="{{ _("Are you sure you want to delete this vendor")}}?"
|
data-message="{{ _("Are you sure you want to delete this vendor")}}?"
|
||||||
data-bs-toggle="modal" data-bs-target="#deleteModal">
|
data-bs-toggle="modal" data-bs-target="#deleteModal">
|
||||||
{{ _("Delete") }}
|
{{ _("Delete") }}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user