email internationalization and dealer plan active condition
This commit is contained in:
parent
cb01a7f5c5
commit
1189418511
@ -3079,7 +3079,7 @@ class CustomGroup(models.Model):
|
|||||||
"view_saleorder",
|
"view_saleorder",
|
||||||
"view_leads",
|
"view_leads",
|
||||||
"view_opportunity",
|
"view_opportunity",
|
||||||
"view_customers",
|
"view_customer",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
self.set_permissions(
|
self.set_permissions(
|
||||||
|
|||||||
@ -9477,10 +9477,15 @@ def ledger_unpost_all_journals(request, dealer_slug, entity_slug, pk):
|
|||||||
@login_required
|
@login_required
|
||||||
@permission_required("inventory.change_dealer", raise_exception=True)
|
@permission_required("inventory.change_dealer", raise_exception=True)
|
||||||
def pricing_page(request, dealer_slug):
|
def pricing_page(request, dealer_slug):
|
||||||
get_object_or_404(models.Dealer, slug=dealer_slug)
|
dealer=get_object_or_404(models.Dealer, slug=dealer_slug)
|
||||||
plan_list = PlanPricing.objects.all()
|
if not dealer.active_plan:
|
||||||
form = forms.PaymentPlanForm()
|
plan_list = PlanPricing.objects.all()
|
||||||
return render(request, "pricing_page.html", {"plan_list": plan_list, "form": form})
|
form = forms.PaymentPlanForm()
|
||||||
|
return render(request, "pricing_page.html", {"plan_list": plan_list, "form": form})
|
||||||
|
else:
|
||||||
|
messages.info(request,_("You already have an plan!!"))
|
||||||
|
return redirect('home',dealer_slug=dealer_slug)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
@ -1,123 +1,177 @@
|
|||||||
{% load static i18n %}
|
{% load i18n %}
|
||||||
<html>
|
<!DOCTYPE html>
|
||||||
<head>
|
<html lang="en">
|
||||||
<meta charset="utf-8" />
|
<head>
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
<meta charset="UTF-8">
|
||||||
<title>Access Forbidden</title>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="" />
|
<title>403 - Access Forbidden</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
<link rel="apple-touch-icon"
|
<style>
|
||||||
sizes="180x180"
|
:root {
|
||||||
href="{% static 'assets/img/favicons/apple-touch-icon.png' %}" />
|
--dark-bg: #121212;
|
||||||
<link rel="icon"
|
--main-color: #ff3864;
|
||||||
type="image/png"
|
--secondary-color: #e6e6e6;
|
||||||
sizes="32x32"
|
}
|
||||||
href="{% static 'assets/img/favicons/favicon-32x32.png' %}" />
|
body, html {
|
||||||
<link rel="icon"
|
height: 100%;
|
||||||
type="image/png"
|
margin: 0;
|
||||||
sizes="16x16"
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
href="{% static 'assets/img/favicons/favicon-16x16.png' %}" />
|
background-color: var(--dark-bg);
|
||||||
<link rel="shortcut icon"
|
color: var(--secondary-color);
|
||||||
type="image/x-icon"
|
overflow: hidden; /* Hide overflow for the particles */
|
||||||
href="{% static 'assets/img/favicons/favicon.ico' %}" />
|
}
|
||||||
<link rel="manifest"
|
.center-content {
|
||||||
href="{% static 'assets/img/favicons/manifest.json' %}" />
|
height: 100%;
|
||||||
<meta name="msapplication-TileImage"
|
display: flex;
|
||||||
content="{% static 'assets/img/favicons/mstile-150x150.png' %}" />
|
align-items: center;
|
||||||
<meta name="theme-color" content="#ffffff" />
|
justify-content: center;
|
||||||
<script src="{% static 'vendors/simplebar/simplebar.min.js' %}"></script>
|
text-align: center;
|
||||||
<script src="{% static 'assets/js/config.js' %}"></script>
|
flex-direction: column;
|
||||||
<!-- =============================================== -->
|
z-index: 2; /* Ensure content is on top of particles */
|
||||||
<!-- Stylesheets -->
|
position: relative;
|
||||||
<!-- =============================================== -->
|
}
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
.glitch {
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="" />
|
font-size: 10rem;
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@300;400;600;700;800;900&display=swap"
|
font-weight: bold;
|
||||||
rel="stylesheet" />
|
color: var(--main-color);
|
||||||
<link href="{% static 'vendors/simplebar/simplebar.min.css' %}"
|
position: relative;
|
||||||
rel="stylesheet" />
|
animation: glitch-animation 2.5s infinite;
|
||||||
<link rel="stylesheet"
|
}
|
||||||
href="https://unicons.iconscout.com/release/v4.0.8/css/line.css" />
|
@keyframes glitch-animation {
|
||||||
<link href="{% static 'assets/css/theme-rtl.min.css' %}"
|
0% { text-shadow: 2px 2px var(--secondary-color); }
|
||||||
type="text/css"
|
20% { text-shadow: -2px -2px var(--secondary-color); }
|
||||||
rel="stylesheet"
|
40% { text-shadow: 4px 4px var(--main-color); }
|
||||||
id="style-rtl" />
|
60% { text-shadow: -4px -4px var(--main-color); }
|
||||||
<link href="{% static 'assets/css/theme.min.css' %}"
|
80% { text-shadow: 6px 6px var(--secondary-color); }
|
||||||
type="text/css"
|
100% { text-shadow: -6px -6px var(--secondary-color); }
|
||||||
rel="stylesheet"
|
}
|
||||||
id="style-default" />
|
.main-message {
|
||||||
<link href="{% static 'assets/css/user-rtl.min.css' %}"
|
font-size: 2.5rem;
|
||||||
type="text/css"
|
margin-top: -20px;
|
||||||
rel="stylesheet"
|
letter-spacing: 5px;
|
||||||
id="user-style-rtl" />
|
text-transform: uppercase;
|
||||||
<link href="{% static 'assets/css/user.min.css' %}"
|
}
|
||||||
type="text/css"
|
.sub-message {
|
||||||
rel="stylesheet"
|
font-size: 1.2rem;
|
||||||
id="user-style-default" />
|
color: #8c8c8c;
|
||||||
<style>
|
margin-top: 10px;
|
||||||
body, html {
|
}
|
||||||
height: 100%;
|
.home-button {
|
||||||
margin: 0;
|
margin-top: 30px;
|
||||||
display: flex;
|
padding: 12px 30px;
|
||||||
justify-content: center;
|
background-color: var(--main-color);
|
||||||
align-items: center;
|
border: none;
|
||||||
text-align: center;
|
color: #fff;
|
||||||
}
|
border-radius: 5px;
|
||||||
.main {
|
font-size: 1rem;
|
||||||
width: 100%;
|
text-decoration: none;
|
||||||
max-width: 1200px;
|
transition: background-color 0.3s, transform 0.3s;
|
||||||
margin: auto;
|
}
|
||||||
}
|
.home-button:hover {
|
||||||
.flex-center {
|
background-color: #d12e52;
|
||||||
display: flex;
|
transform: scale(1.05);
|
||||||
justify-content: center;
|
}
|
||||||
align-items: center;
|
|
||||||
}
|
/* Particle Background styles */
|
||||||
.text-center {
|
#particles-js {
|
||||||
text-align: center;
|
position: absolute;
|
||||||
}
|
width: 100%;
|
||||||
</style>
|
height: 100%;
|
||||||
</head>
|
top: 0;
|
||||||
<body>
|
left: 0;
|
||||||
<main class="main" id="top">
|
z-index: 1;
|
||||||
<div id="main_content" class="px-3">
|
}
|
||||||
<div class="row min-vh-100 flex-center p-5">
|
</style>
|
||||||
<div class="col-12 col-xl-10 col-xxl-8">
|
</head>
|
||||||
<div class="row justify-content-center align-items-center g-5">
|
<body>
|
||||||
<div class="col-12 col-lg-6 text-center order-lg-1">
|
|
||||||
<img class="img-fluid w-md-50 w-lg-100 d-light-none"
|
<div id="particles-js"></div>
|
||||||
src="{% static 'images/spot-illustrations/dark_403-illustration.png' %}"
|
|
||||||
alt=""
|
<div class="center-content container-fluid">
|
||||||
width="540" />
|
<h1 class="glitch">403</h1>
|
||||||
</div>
|
<h2 class="main-message">{% trans "Access Forbidden" %}</h2>
|
||||||
<div class="col-12 col-lg-6 text-center text-lg-start">
|
<p class="sub-message">{% trans "You do not have permission to view this page."%}</p>
|
||||||
<img class="img-fluid mb-6 w-50 w-lg-75 d-dark-none"
|
<p class="sub-message fs-2">{% trans "Powered By Tenhal, Riyadh Saudi Arabia"%}</p>
|
||||||
src="{% static 'images/spot-illustrations/403.png' %}"
|
<a href="{% url 'home' %}" class="home-button">{% trans "Go Home" %}</a>
|
||||||
alt="" />
|
</div>
|
||||||
<h2 class="text-body-secondary fw-bolder mb-3">Access Forbidden!</h2>
|
|
||||||
<p class="text-body mb-5">
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
Halt! Thou art endeavouring to trespass upon a realm not granted unto thee.
|
<script src="https://cdn.jsdelivr.net/npm/particles.js@2.0.0/particles.min.js"></script>
|
||||||
<br class="d-none d-md-block d-lg-none" />
|
<script>
|
||||||
granted unto thee.
|
/* Particles.js Configuration */
|
||||||
</p>
|
particlesJS("particles-js", {
|
||||||
<a class="btn btn-lg btn-phoenix-primary" href="{% url 'home' %}">Go Home</a>
|
"particles": {
|
||||||
</div>
|
"number": {
|
||||||
</div>
|
"value": 80,
|
||||||
</div>
|
"density": {
|
||||||
</div>
|
"enable": true,
|
||||||
</div>
|
"value_area": 800
|
||||||
</main>
|
}
|
||||||
<script src="{% static 'vendors/bootstrap/bootstrap.min.js' %}"></script>
|
},
|
||||||
<script src="{% static 'js/phoenix.js' %}"></script>
|
"color": {
|
||||||
<script src="{% static 'vendors/popper/popper.min.js' %}"></script>
|
"value": "#ff3864"
|
||||||
<script src="{% static 'vendors/bootstrap/bootstrap.min.js' %}"></script>
|
},
|
||||||
<script src="{% static 'vendors/anchorjs/anchor.min.js' %}"></script>
|
"shape": {
|
||||||
<script src="{% static 'vendors/is/is.min.js' %}"></script>
|
"type": "circle",
|
||||||
<script src="{% static 'vendors/fontawesome/all.min.js' %}"></script>
|
},
|
||||||
<script src="{% static 'vendors/lodash/lodash.min.js' %}"></script>
|
"opacity": {
|
||||||
<script src="{% static 'vendors/list.js/list.min.js' %}"></script>
|
"value": 0.5,
|
||||||
<script src="{% static 'vendors/feather-icons/feather.min.js' %}"></script>
|
"random": false,
|
||||||
<script src="{% static 'vendors/dayjs/dayjs.min.js' %}"></script>
|
"anim": {
|
||||||
<script src="{% static 'assets/js/phoenix.js' %}"></script>
|
"enable": false
|
||||||
</body>
|
}
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"value": 3,
|
||||||
|
"random": true,
|
||||||
|
},
|
||||||
|
"line_linked": {
|
||||||
|
"enable": true,
|
||||||
|
"distance": 150,
|
||||||
|
"color": "#e6e6e6",
|
||||||
|
"opacity": 0.4,
|
||||||
|
"width": 1
|
||||||
|
},
|
||||||
|
"move": {
|
||||||
|
"enable": true,
|
||||||
|
"speed": 6,
|
||||||
|
"direction": "none",
|
||||||
|
"random": false,
|
||||||
|
"straight": false,
|
||||||
|
"out_mode": "out",
|
||||||
|
"bounce": false,
|
||||||
|
"attract": {
|
||||||
|
"enable": false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"interactivity": {
|
||||||
|
"detect_on": "canvas",
|
||||||
|
"events": {
|
||||||
|
"onhover": {
|
||||||
|
"enable": true,
|
||||||
|
"mode": "grab"
|
||||||
|
},
|
||||||
|
"onclick": {
|
||||||
|
"enable": true,
|
||||||
|
"mode": "push"
|
||||||
|
},
|
||||||
|
"resize": true
|
||||||
|
},
|
||||||
|
"modes": {
|
||||||
|
"grab": {
|
||||||
|
"distance": 140,
|
||||||
|
"line_linked": {
|
||||||
|
"opacity": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"push": {
|
||||||
|
"particles_nb": 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"retina_detect": true
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="d-flex flex-between-center pt-4">
|
<div class="d-flex flex-between-center pt-4">
|
||||||
<div>
|
<div>
|
||||||
<h6 class="mb-2 text-body-secondary">{% trans 'last login'|capfirst %}</h6>
|
<h6 class="mb-2 text-body-secondary">{% trans 'last login'|capfirst %}<li class="fas fa-sign-in-alt ms-1"></li></h6>
|
||||||
<h4 class="fs-7 text-body-highlight mb-0">{{ dealer.user.last_login|date:"D M d, Y H:i" }}</h4>
|
<h4 class="fs-7 text-body-highlight mb-0">{{ dealer.user.last_login|date:"D M d, Y H:i" }}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-center me-1">
|
<div class="text-center me-1">
|
||||||
@ -80,12 +80,12 @@
|
|||||||
<div class="card h-100">
|
<div class="card h-100">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="border-bottom border-dashed">
|
<div class="border-bottom border-dashed">
|
||||||
<h4 class="mb-3">{% trans 'Default Address' %}</h4>
|
<h4 class="mb-3">{% trans 'Contact Information' %}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="pt-4 mb-7 mb-lg-4 mb-xl-7">
|
<div class="pt-4 mb-7 mb-lg-4 mb-xl-7">
|
||||||
<div class="row justify-content-between">
|
<div class="row justify-content-between">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<h5 class="text-body-highlight">{% trans 'Address' %}</h5>
|
<h5 class="text-body-highlight">{% trans 'Address' %}<li class="fas fa-location-dot ms-1"></li></h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<p class="text-body-secondary">{{ dealer.address }}</p>
|
<p class="text-body-secondary">{{ dealer.address }}</p>
|
||||||
@ -95,13 +95,13 @@
|
|||||||
<div class="border-top border-dashed pt-4">
|
<div class="border-top border-dashed pt-4">
|
||||||
<div class="row flex-between-center mb-2">
|
<div class="row flex-between-center mb-2">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<h5 class="text-body-highlight mb-0">{% trans 'Email' %}</h5>
|
<h5 class="text-body-highlight mb-0">{% trans 'Email' %}<li class="fas fa-envelope ms-1"></li></h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">{{ dealer.user.email }}</div>
|
<div class="col-auto">{{ dealer.user.email }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row flex-between-center">
|
<div class="row flex-between-center">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<h5 class="text-body-highlight mb-0">{% trans 'Phone' %}</h5>
|
<h5 class="text-body-highlight mb-0">{% trans 'Phone' %}<li class="fas fa-phone ms-1"></li></h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto" dir="ltr">{{ dealer.phone_number }}</div>
|
<div class="col-auto" dir="ltr">{{ dealer.phone_number }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -13,6 +13,6 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>مع أطيب التحيات،<br>
|
<p>مع أطيب التحيات،<br>
|
||||||
فريق {{ SITE_NAME }}</p>
|
فريق تنحل</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -5,4 +5,4 @@
|
|||||||
جدد اشتراكك الآن: {{ RENEWAL_URL }}
|
جدد اشتراكك الآن: {{ RENEWAL_URL }}
|
||||||
|
|
||||||
مع أطيب التحيات،
|
مع أطيب التحيات،
|
||||||
فريق {{ SITE_NAME }}
|
فريق تنحل
|
||||||
@ -9,6 +9,6 @@
|
|||||||
<p><a href="{{ RENEWAL_URL }}">Renew now</a> to continue service.</p>
|
<p><a href="{{ RENEWAL_URL }}">Renew now</a> to continue service.</p>
|
||||||
|
|
||||||
<p>Best regards,<br>
|
<p>Best regards,<br>
|
||||||
The {{ SITE_NAME }} Team</p>
|
The Team at Tenhal</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -5,4 +5,4 @@ Your {{ plan.name }} subscription will expire in {{ days_until_expire }} days on
|
|||||||
Renew now: {{ RENEWAL_URL }}
|
Renew now: {{ RENEWAL_URL }}
|
||||||
|
|
||||||
Best regards,
|
Best regards,
|
||||||
{{ SITE_NAME }} Team
|
The Team at Tenhal
|
||||||
@ -7,4 +7,4 @@ Please settle your outstanding balance of {{ amount_due }} .
|
|||||||
If you have already paid, please disregard this notice.
|
If you have already paid, please disregard this notice.
|
||||||
|
|
||||||
Best regards,
|
Best regards,
|
||||||
{{ SITE_NAME }} Team
|
The Team at Tenhal
|
||||||
@ -7,5 +7,5 @@ Please settle your outstanding balance of {{ amount_due }} before the due date t
|
|||||||
If you have already paid, please disregard this notice.
|
If you have already paid, please disregard this notice.
|
||||||
|
|
||||||
Best regards,
|
Best regards,
|
||||||
{{ SITE_NAME }} Team
|
The Team at Tenhal
|
||||||
|
|
||||||
|
|||||||
@ -14,19 +14,21 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Hello {{ user_name }},</h2>
|
<h2>Hello {{ user_name }},</h2>
|
||||||
<p>This is a friendly reminder for your upcoming schedule:</p>
|
<p>{% trans "This is a friendly reminder for your upcoming schedule" %}:</p>
|
||||||
<p>
|
<p>
|
||||||
<span class="highlight">Purpose:</span> {{ schedule_purpose }}<br>
|
<span class="highlight">{% trans "Purpose" %}:</span> {{ schedule_purpose }}<br>
|
||||||
<span class="highlight">Scheduled At:</span> {{ scheduled_at }}<br>
|
<span class="highlight">{% trans "Scheduled At" %}:</span> {{ scheduled_at }}<br>
|
||||||
<span class="highlight">Type:</span> {{ schedule_type }}<br>
|
<span class="highlight">{% trans "Type" %}:</span> {{ schedule_type }}<br>
|
||||||
{% if customer_name != 'N/A' %}<span class="highlight">Customer:</span> {{ customer_name }}<br>{% endif %}
|
{% if customer_name != 'N/A' %}<span class="highlight">{% trans "Customer" %}:</span> {{ customer_name }}<br>{% endif %}
|
||||||
{% if notes %}<span class="highlight">Notes:</span> {{ notes }}<br>{% endif %}
|
{% if notes %}<span class="highlight">{% trans "Notes" %}:</span> {{ notes }}<br>{% endif %}
|
||||||
</p>
|
</p>
|
||||||
<p>Please be prepared for your schedule.</p>
|
<p>{% trans "Please be prepared for your schedule" %}.</p>
|
||||||
<p>Thank you!</p>
|
<p>{% trans "Thank you" %}!</p>
|
||||||
|
<p class="fs-4">{% trans "The team at Tenhal" %}.</p>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<p>This is an automated reminder. Please do not reply to this email.</p>
|
<p>{% trans "This is an automated reminder. Please do not reply to this email." %}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -1,16 +1,16 @@
|
|||||||
Hello {{ user_name }},
|
{% trans "Hello" %} {{ user_name }},
|
||||||
|
|
||||||
This is a friendly reminder for your upcoming schedule:
|
{% trans "This is a friendly reminder for your upcoming schedule" %}:
|
||||||
|
|
||||||
Purpose: {{ schedule_purpose }}
|
{% trans "Purpose" %}: {{ schedule_purpose }}
|
||||||
Scheduled At: {{ scheduled_at }}
|
{% trans "Scheduled At" %}: {{ scheduled_at }}
|
||||||
Type: {{ schedule_type }}
|
{% trans "Type" %}: {{ schedule_type }}
|
||||||
{% if customer_name != 'N/A' %}Customer: {{ customer_name }}{% endif %}
|
{% if customer_name != 'N/A' %}{% trans "Customer" %}: {{ customer_name }}{% endif %}
|
||||||
{% if notes %}Notes: {{ notes }}{% endif %}
|
{% if notes %}{% trans "Notes" %}: {{ notes }}{% endif %}
|
||||||
|
|
||||||
Please be prepared for your schedule.
|
{% trans "Please be prepared for your schedule" %}.
|
||||||
|
|
||||||
Thank you!
|
|
||||||
|
|
||||||
|
{% trans "Thank you" %}!
|
||||||
---
|
---
|
||||||
This is an automated reminder. Please do not reply to this email.
|
{% trans " The Team at Tenhal" %}
|
||||||
|
{% trans "This is an automated reminder. Please do not reply to this email" %}.
|
||||||
@ -33,7 +33,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer> {% endcomment %}
|
</footer> {% endcomment %}
|
||||||
|
|
||||||
<footer class="footer position-absolute fs-9 bg-white text-secondary">
|
{% comment %} <footer class="footer position-absolute fs-9 bg-white text-secondary">
|
||||||
<div class="row g-0 justify-content-between align-items-center h-100">
|
<div class="row g-0 justify-content-between align-items-center h-100">
|
||||||
<div class="col-12 col-sm-auto text-center">
|
<div class="col-12 col-sm-auto text-center">
|
||||||
<span class="text-body"> © 2025 {{ _("All right reserved")}}</span>
|
<span class="text-body"> © 2025 {{ _("All right reserved")}}</span>
|
||||||
@ -50,4 +50,74 @@
|
|||||||
<span class="fas fa-registered fs-10 fw-light text-opacity-85 text-secondary"></span>
|
<span class="fas fa-registered fs-10 fw-light text-opacity-85 text-secondary"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer> {% endcomment %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
|
||||||
|
.improved-footer {
|
||||||
|
/* Kept `position-absolute` and adjusted padding */
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 90%;
|
||||||
|
padding: 1.5rem;
|
||||||
|
|
||||||
|
|
||||||
|
border-top: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.improved-footer .text-body {
|
||||||
|
color: var(--text-color) !important;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.improved-footer .fw-bold {
|
||||||
|
font-weight: 600 !important;
|
||||||
|
color: var(--link-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.improved-footer a {
|
||||||
|
color: var(--link-color) !important;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.3s ease-in-out, transform 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.improved-footer a:hover {
|
||||||
|
color: #d1d5db !important; /* A slightly softer white on hover */
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.improved-footer .fas.fa-registered {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: var(--text-color);
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="improved-footer">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row g-0 justify-content-between align-items-center h-100">
|
||||||
|
<div class="col-12 col-sm-auto text-center">
|
||||||
|
<span class="text-body"> © 2025 All rights reserved</span>
|
||||||
|
<span class="fw-bold">Haikal</span> | <span class="fw-bold">هيكل</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-sm-auto text-center">
|
||||||
|
<span class="text-body">Powered by </span>
|
||||||
|
<span>
|
||||||
|
<a class="mx-1 text-secondary" href="https://tenhal.sa">
|
||||||
|
<span>TENHAL</span> | <span>تنحل</span>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<span class="fas fa-registered fw-light"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -180,7 +180,7 @@
|
|||||||
<td class="fs-9">{{ car.invoice.date_paid|date|default_if_none:"-" }}</td>
|
<td class="fs-9">{{ car.invoice.date_paid|date|default_if_none:"-" }}</td>
|
||||||
<td class="fs-9">{{ car.finances.cost_price }} <span class="icon-saudi_riyal"></span></td>
|
<td class="fs-9">{{ car.finances.cost_price }} <span class="icon-saudi_riyal"></span></td>
|
||||||
<td class="fs-9">{{ car.finances.marked_price }} <span class="icon-saudi_riyal"></span></td>
|
<td class="fs-9">{{ car.finances.marked_price }} <span class="icon-saudi_riyal"></span></td>
|
||||||
<td class="fs-9">{{ car.finances.discount_amount }} <span class="icon-saudi_riyal"></span></td>
|
<td class="fs-9">{{ car.finances.total_discount }} <span class="icon-saudi_riyal"></span></td>
|
||||||
<td class="fs-9">{{ car.finances.selling_price }} <span class="icon-saudi_riyal"></span></td>
|
<td class="fs-9">{{ car.finances.selling_price }} <span class="icon-saudi_riyal"></span></td>
|
||||||
<td class="fs-9">{{ car.finances.vat_amount }} <span class="icon-saudi_riyal"></span></td>
|
<td class="fs-9">{{ car.finances.vat_amount }} <span class="icon-saudi_riyal"></span></td>
|
||||||
<td class="fs-9">{{ car.invoice.invoice_number }}</td>
|
<td class="fs-9">{{ car.invoice.invoice_number }}</td>
|
||||||
|
|||||||
@ -9,5 +9,5 @@
|
|||||||
|
|
||||||
{% trans "Thank you" %}
|
{% trans "Thank you" %}
|
||||||
--
|
--
|
||||||
{% blocktrans %}The Team at {{ site_name }}{% endblocktrans %}
|
{% blocktrans %}The Team at Tenhal{% endblocktrans %}
|
||||||
{% endautoescape %}
|
{% endautoescape %}
|
||||||
|
|||||||
@ -10,5 +10,5 @@ http://{{ site_domain }}{% url 'upgrade_plan' %}
|
|||||||
|
|
||||||
{% trans "Thank you" %}
|
{% trans "Thank you" %}
|
||||||
--
|
--
|
||||||
{% blocktrans %}The Team at {{ site_name }}{% endblocktrans %}
|
{% blocktrans %}The Team at Tenhal{% endblocktrans %}
|
||||||
{% endautoescape %}
|
{% endautoescape %}
|
||||||
|
|||||||
@ -1 +1,3 @@
|
|||||||
{% load i18n %}{% blocktrans %}Your account {{ user }} has just expired{% endblocktrans %}
|
{% load i18n %}{% blocktrans %}Your account {{ user }} has just expired{% endblocktrans %}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -7,5 +7,5 @@
|
|||||||
|
|
||||||
{% trans "Thank you" %}
|
{% trans "Thank you" %}
|
||||||
--
|
--
|
||||||
{% blocktrans %}The Team at {{ site_name }}{% endblocktrans %}
|
{% blocktrans %}The Team at Tenhal{% endblocktrans %}
|
||||||
{% endautoescape %}
|
{% endautoescape %}
|
||||||
|
|||||||
@ -10,5 +10,5 @@ http://{{ site_domain }}{% url 'order' pk=order %}
|
|||||||
|
|
||||||
{% trans "Thank you" %}
|
{% trans "Thank you" %}
|
||||||
--
|
--
|
||||||
{% blocktrans %}The Team at {{ site_name }}{% endblocktrans %}
|
{% blocktrans %}The Team at Tenhal{% endblocktrans %}
|
||||||
{% endautoescape %}
|
{% endautoescape %}
|
||||||
|
|||||||
@ -8,3 +8,8 @@ http://{{ site_domain }}{% url 'current_plan' %}
|
|||||||
|
|
||||||
{% blocktrans %}or you can upgrade your plan here:{% endblocktrans %}
|
{% blocktrans %}or you can upgrade your plan here:{% endblocktrans %}
|
||||||
http://{{ site_domain }}{% url 'upgrade_plan' %}
|
http://{{ site_domain }}{% url 'upgrade_plan' %}
|
||||||
|
|
||||||
|
{% trans "Thank you" %}
|
||||||
|
--
|
||||||
|
{% blocktrans %}The Team at Tenhal{% endblocktrans %}
|
||||||
|
{% endautoescape %}
|
||||||
|
|||||||
@ -46,7 +46,7 @@
|
|||||||
<div class="col-12 col-sm-auto flex-1">
|
<div class="col-12 col-sm-auto flex-1">
|
||||||
<h3>{{ staff.get_local_name }}</h3>
|
<h3>{{ staff.get_local_name }}</h3>
|
||||||
<p>
|
<p>
|
||||||
{% trans 'Role' %}:
|
<li class="fas fa-user-shield me-1"></li>{% trans 'Role' %}:
|
||||||
{% for group in staff.groups%}
|
{% for group in staff.groups%}
|
||||||
<span class="text-body-secondary me-2"> {{group}}</span>
|
<span class="text-body-secondary me-2"> {{group}}</span>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@ -55,10 +55,11 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex flex-between-center pt-4">
|
<div class="d-flex flex-between-center pt-4">
|
||||||
<div>
|
<div>
|
||||||
<h6 class="mb-2 text-body-secondary">{% trans 'last login'|capfirst %}</h6>
|
<h6 class="mb-2 text-body-secondary">{% trans 'last login'|capfirst %}<li class="fas fa-sign-in-alt ms-1"></li></h6>
|
||||||
<h4 class="fs-7 text-body-highlight mb-0">{{ staff.user.last_login|date:"D M d, Y H:i" }}</h4>
|
<h4 class="fs-7 text-body-highlight mb-0">{{ staff.user.last_login|date:"D M d, Y H:i" }}</h4>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -70,12 +71,12 @@
|
|||||||
<div class="card h-100">
|
<div class="card h-100">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="border-bottom border-dashed">
|
<div class="border-bottom border-dashed">
|
||||||
<h4 class="mb-3">{% trans 'Default Address' %}</h4>
|
<h4 class="mb-3">{% trans 'Contact Information' %}</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="pt-4 mb-7 mb-lg-4 mb-xl-7">
|
<div class="pt-4 mb-7 mb-lg-4 mb-xl-7">
|
||||||
<div class="row justify-content-between">
|
<div class="row justify-content-between">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<h5 class="text-body-highlight">{% trans 'Address' %}</h5>
|
<h5 class="text-body-highlight">{% trans 'Address' %}<li class="fas fa-location-dot ms-1"></li></h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<p class="text-body-secondary">{{ staff.address }}</p>
|
<p class="text-body-secondary">{{ staff.address }}</p>
|
||||||
@ -85,13 +86,13 @@
|
|||||||
<div class="border-top border-dashed pt-4">
|
<div class="border-top border-dashed pt-4">
|
||||||
<div class="row flex-between-center mb-2">
|
<div class="row flex-between-center mb-2">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<h5 class="text-body-highlight mb-0">{% trans 'Email' %}</h5>
|
<h5 class="text-body-highlight mb-0">{% trans 'Email' %}<li class="fas fa-envelope ms-1"></li></h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">{{ staff.user.email }}</div>
|
<div class="col-auto">{{ staff.user.email }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row flex-between-center">
|
<div class="row flex-between-center">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<h5 class="text-body-highlight mb-0">{% trans 'Phone' %}</h5>
|
<h5 class="text-body-highlight mb-0">{% trans 'Phone' %}<li class="fas fa-phone ms-1"></li></h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto" dir="ltr">{{ staff.phone_number }}</div>
|
<div class="col-auto" dir="ltr">{{ staff.phone_number }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user