New website focusing on ERP services.
This commit is contained in:
@@ -1,24 +0,0 @@
|
||||
<!-- Store Product Card
|
||||
for insertion in _store_product_category_card
|
||||
-->
|
||||
{% if product.has_permutations() %}
|
||||
{% set permutation = product.get_permutation_selected() %}
|
||||
<div class="card subcard" {{ model.attr_id_product }}="{{ product.id_product }}" {{ model.attr_id_permutation }}="{{ permutation.id_permutation }}">
|
||||
<div class="container">
|
||||
<img class="img-product" src="{{ permutation.get_image_from_index(0).url }}" alt="Template product image"> <!-- model.get_many_product_image_src(product.id_product, '', True, 'FULL') -->
|
||||
</div>
|
||||
{% if permutation.is_available() %}
|
||||
{% set form = product.form_basket_add %}
|
||||
<form {{ model.attr_form_type }}="{{ form.form_type }}" {{ model.attr_id_product }}="{{ product.id_product }}" {{ model.attr_id_permutation }}="{{ permutation.id_permutation }}" class="container column" action="{{ url_for('basket_add') }}" method="POST">
|
||||
{{ form.hidden_tag() }}
|
||||
<h2>{{ product.name }}</h2>
|
||||
<h3>{{ permutation.output_price(model.is_included_VAT) }}</h3>
|
||||
{% set tmp_quantity = 1 %}
|
||||
{% include 'components/common/inputs/_input_number_plus_minus.html' %}
|
||||
{{ form.submit() }}
|
||||
<p>Get it: <strong>{{ permutation.output_delivery_date() }}</strong></p>
|
||||
</form>
|
||||
{% endif %}
|
||||
<!-- { % inc !!!! broken to ignore !!!! lude '_block_store_product_price!!!! broken to ignore !!!!.html' % } -->
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -1,16 +0,0 @@
|
||||
<!-- Product price display with purchase options -->
|
||||
|
||||
<div class="container column">
|
||||
<h2>{{ product.output_price() }}</h2> <!-- product.price_GBP -->
|
||||
{% set form = product.form_basket_add %}
|
||||
<form {{ model.attr_form_type }}="{{ form.form_type }}" {{ model.attr_id_product }}="{{ product.id_product }}" {{ model.attr_id_permutation }}="{{ permutation.id_permutation }}" class="container column">
|
||||
{{ form.hidden_tag() }}
|
||||
{% set tmp_quantity = 1 %}
|
||||
{% include 'components/common/inputs/_input_number_plus_minus.html' %}
|
||||
{{ form.submit() }}
|
||||
</form>
|
||||
<!--
|
||||
<button class="{{ model.flag_btn_basket_add }}" type="submit" {{ model.attr_id_product }}="{{ product.id }}">Add to basket</button>
|
||||
<button class="{{ model.flag_btn_buy_now }}" type="submit" {{ model.attr_id_product }}="{{ product.id }}">Buy it now</button>
|
||||
-->
|
||||
</div>
|
||||
@@ -1,26 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet -->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/home.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="card">
|
||||
<div class="container column">
|
||||
<h1>Offering a full suite of software engineering services.</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('static', filename='js/home.js') }}"></script>
|
||||
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.hash_page_home }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
hookupPageHome();
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,140 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="utf-8"/>
|
||||
<title>{% block title %}{% endblock %} - PARTS</title>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ url_for('static', filename='js/shared.js') }}"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.js"></script> <!-- Include jQuery from a CDN -->
|
||||
|
||||
<script>
|
||||
var flagButtonOverlayClose = "{{ model.flag_btn_overlay_close }}";
|
||||
var flagButtonSubmit = "{{ model.flag_btn_submit }}";
|
||||
var flagCard = "{{ model.flag_card }}";
|
||||
var flagCollapsible = "{{ model.flag_collapsible }}";
|
||||
var flagColumn = "{{ model.flag_column }}";
|
||||
var flagContainer = "{{ model.flag_container }}";
|
||||
var flagContainerInput = "{{ model.flag_container_input }}";
|
||||
var flagRow = "{{ model.flag_row }}";
|
||||
var flagScrollable = "{{ model.flag_scrollable }}";
|
||||
var flagButtonOverlayClose = "{{ model.flag_btn_overlay_close }}";
|
||||
var flagInitialised = "{{ model.flag_initalised }}";
|
||||
var flagSubmitted = "{{ model.flag_submitted }}";
|
||||
var hashPageContact = "{{ model.hash_page_contact }}";
|
||||
var hashPageErrorNoPermission = "{{ model.hash_page_error_no_permission }}";
|
||||
var hashPageHome = "{{ model.hash_page_home }}";
|
||||
var hashPageStoreHome = "{{ model.hash_page_store_home }}";
|
||||
var hashPageStoreProduct = "{{ model.hash_page_store_product }}";
|
||||
var idFormCurrency = "#{{ model.id_form_currency }}";
|
||||
var idFormDeliveryRegion = "#{{ model.id_form_delivery_region }}";
|
||||
var idFormIsIncludedVAT = "#{{ model.id_form_is_included_VAT }}";
|
||||
var idNavContact = "#{{ model.id_nav_contact }}";
|
||||
var idNavHome = "#{{ model.id_nav_home }}";
|
||||
var idNavStoreHome = "#{{ model.id_nav_store_home }}";
|
||||
var idNavStoreProduct = "#{{ model.id_nav_store_product }}";
|
||||
var idPageBody = "#{{ model.id_page_body }}";
|
||||
var isUserLoggedIn = {{ model.output_bool(model.is_user_logged_in) }};
|
||||
var keyBasket = "{{ model.key_basket }}";
|
||||
var keyForm = "{{ model.key_form }}";
|
||||
var keyPrice = "{{ model.key_price }}";
|
||||
var keyQuantity = "{{ model.key_quantity }}";
|
||||
var keyShared = "shared";
|
||||
var _pathHost = "{{ model.url_host }}";
|
||||
</script>
|
||||
|
||||
|
||||
<!-- Stylesheets -->
|
||||
<link href="{{ url_for('static', filename='css/shared.css') }}" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<div class="header card">
|
||||
<div class="container">
|
||||
<img class="header-logo" src="{{ url_for('static', filename='images/Logo.png') }}" alt="PARTS logo">
|
||||
</div>
|
||||
<div class="container">
|
||||
<h1>Precision And Research Technology Systems Limited</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="topnav container row">
|
||||
<div class="container column">
|
||||
<a id="{{ model.id_nav_home }}">Home</a> <!-- href="{{ url_for('home') }}" -->
|
||||
</div>
|
||||
<div class="container column">
|
||||
<a id="{{ model.id_nav_store_home }}">Store</a>
|
||||
</div>
|
||||
<div class="container column">
|
||||
<!-- <a href="{ url_ for('create_price_dummy') }">Create template price</a> -->
|
||||
<form id="{{ model.id_form_is_included_VAT }}" class="container" action="{{ url_for('set_is_included_VAT') }}" method="POST">
|
||||
{{ model.form_is_included_VAT.hidden_tag() }}
|
||||
<div class="container-input">
|
||||
{{ model.form_is_included_VAT.is_included.label }}
|
||||
{{ model.form_is_included_VAT.is_included() }}
|
||||
{% for error in model.form_is_included_VAT.is_included.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="container column">
|
||||
<form id="{{ model.id_form_delivery_region }}" class="container" action="{{ url_for('set_delivery_region') }}" method="POST">
|
||||
{{ model.form_delivery_region.hidden_tag() }}
|
||||
<div class="container-input">
|
||||
{{ model.form_delivery_region.id_region_delivery.label }}
|
||||
{{ model.form_delivery_region.id_region_delivery() }}
|
||||
{% for error in model.form_delivery_region.id_region_delivery.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="container column">
|
||||
<form id="{{ model.id_form_currency }}" class="container" action="{{ url_for('set_currency') }}" method="POST">
|
||||
{{ model.form_currency.hidden_tag() }}
|
||||
<div class="container-input">
|
||||
{{ model.form_currency.id_currency.label }}
|
||||
{{ model.form_currency.id_currency() }}
|
||||
{% for error in model.form_currency.id_currency.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="container column">
|
||||
<a href="{{ url_for('logout') if model.is_user_logged_in else url_for('login') }}" style="float:right">{{ 'Logout' if model.is_user_logged_in else 'Login' }}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Page body -->
|
||||
<div id="{{ model.id_page_body }}" class="container" style="display: block;">
|
||||
{% block page_body %}{% endblock %}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer">
|
||||
<h4>Copyright (C) Precision And Research Technology Systems Limited. All rights reserved.</h4>
|
||||
<h5>Company number 13587499</h5>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<!-- Scripts --
|
||||
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
|
||||
-->
|
||||
<!-- Include jQuery from a CDN --
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
|
||||
-->
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
// alert("naughty boy");
|
||||
hookupShared();
|
||||
});
|
||||
</script>
|
||||
@@ -1,5 +0,0 @@
|
||||
{% if id_access_level is defined %}
|
||||
<select class="{{ model.FLAG_ACCESS_LEVEL }}" {{ model.ATTR_VALUE_CURRENT }}="{{ id_access_level }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ id_access_level }}" value="{{ id_access_level }}"></select>
|
||||
{% else %}
|
||||
<select class="{{ model.FLAG_ACCESS_LEVEL }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></select>
|
||||
{% endif %}
|
||||
@@ -1 +0,0 @@
|
||||
<div class="{{ model.FLAG_SLIDER }}">☰</div>
|
||||
@@ -1,9 +0,0 @@
|
||||
<!-- Store Product Category Card -->
|
||||
<div class="card" {{ model.attr_product_category_id }}="{{ cat.id_category }}">
|
||||
<h3 style="width: 100%; justify-self: left; margin-left: 3vh; display: inline-flex;">{{ cat.name }}</h4>
|
||||
<div class="container">
|
||||
{% for product in cat.products %}
|
||||
{% include 'components/store/_product.html' %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,66 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="utf-8"/>
|
||||
<title>{% block title %}{% endblock %} - PARTS</title>
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="{{ url_for('static', filename='js/shared.js') }}"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.js"></script> <!-- Include jQuery from a CDN -->
|
||||
|
||||
<!-- Stylesheets -->
|
||||
<link href="{{ url_for('static', filename='css/shared.css') }}" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header card">
|
||||
<div class="content">
|
||||
<img class="header-logo" src="{{ url_for('static', filename='images/Logo.png') }}" alt="PARTS logo">
|
||||
</div>
|
||||
<div class="content">
|
||||
<h1>Precision And Research Technology Systems Limited</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="topnav">
|
||||
<a href="{{ url_for('routes_core.home') }}">Home</a> <!-- -->
|
||||
<a href="{{ url_for('routes_store.store_home') }}">Store</a>
|
||||
<!--
|
||||
<a href="{{ url_for('get_publishable_key') }}">Get Key</a>
|
||||
<a href="{{ url_for('get_checkout_session') }}">Get Session</a>
|
||||
|
||||
<!-- POST request form --
|
||||
<form id="formCreateCheckoutSession" action="{{ url_for('create_checkout_session') }}" method="POST" style="display: none; visibility: hidden;">
|
||||
<!-- your form fields go here --
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
<a href="#" onclick="document.getElementById('formCreateCheckoutSession').submit();">About - Post Session</a>
|
||||
-->
|
||||
<a href="{{ url_for('routes_core.contact') }}" style="float:right">Contact</a>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<h4>Copyright (C) Precision And Research Technology Systems Limited. All rights reserved.</h4>
|
||||
<h5>Company number 13587499</h5>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<!-- Scripts --
|
||||
<script src="{{ url_for('static', filename='js/main.js') }}"></script>
|
||||
-->
|
||||
<!-- Include jQuery from a CDN --
|
||||
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
|
||||
-->
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// alert("naughty boy");
|
||||
});
|
||||
</script>
|
||||
@@ -3,75 +3,45 @@
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="utf-8"/>
|
||||
<title>{{ model.title }} - {{ model.NAME_COMPANY }}</title>
|
||||
<title>{{ model.title }} - {{ model.NAME_COMPANY_SHORT }}</title>
|
||||
<meta name="description" content="Explore our wide range of software engineering services. We specialize in various tech stacks including MySQL, Python, Microsoft SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, and REST." />
|
||||
<meta name="keywords" content="software engineering, software development, software design, software testing, software maintenance, software support, software consultancy, software training, software documentation, software project management, software quality assurance, software process improvement, software configuration management, software requirements engineering, software architecture, software design patterns, software design principles, software testing principles, software testing techniques, software testing tools, software testing automation, software testing manual, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing scrum, software testing kanban, software testing lean, software testing waterfall, software testing v-model, software testing spiral, software testing incremental, software testing iterative, software testing adaptive, software testing predictive, software testing hybrid, software testing manual, software testing automated, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing scrum, software testing kanban, software testing lean, software testing waterfall, software testing v-model, software testing spiral, software testing incremental, software testing iterative, software testing adaptive, software testing predictive, software testing hybrid, software testing manual, software testing automated, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing, MySQL, Python, Microsoft SQL Server, MS SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, REST" />
|
||||
<link rel="canonical" href="{{ model.get_url_host() }}" />
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "ProfessionalService",
|
||||
"name": "{{ model.NAME_COMPANY }}",
|
||||
"url": "{{ model.get_url_host() }}",
|
||||
"logo": "{{ model.get_url_host() }}{{ url_for('static', filename='images/Logo.png') }}",
|
||||
"description": "Explore our wide range of software engineering services. We specialize in various tech stacks including MySQL, Python, Microsoft SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, and REST.",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "53 Alfred Green Close",
|
||||
"addressLocality": "Rugby",
|
||||
"addressRegion": "Warwickshire",
|
||||
"postalCode": "CV22 6DN",
|
||||
"addressCountry": "United Kingdom"
|
||||
},
|
||||
"geo": {
|
||||
"@type": "GeoCoordinates",
|
||||
"latitude": "52.22",
|
||||
"longitude": "1.16"
|
||||
},
|
||||
"openingHours": "Mo,Tu,We,Th,Fr 09:00-17:00",
|
||||
"priceRange": "$$",
|
||||
"@context": "https://schema.org",
|
||||
"@type": "ProfessionalService",
|
||||
"name": "{{ model.NAME_COMPANY }}",
|
||||
"url": "{{ model.get_url_host() }}",
|
||||
"logo": "{{ model.get_url_host() }}{{ url_for('static', filename='images/Logo.png') }}",
|
||||
"description": "Explore our wide range of software engineering services. We specialize in various tech stacks including MySQL, Python, Microsoft SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, and REST.",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "53 Alfred Green Close",
|
||||
"addressLocality": "Rugby",
|
||||
"addressRegion": "Warwickshire",
|
||||
"postalCode": "CV22 6DN",
|
||||
"addressCountry": "United Kingdom"
|
||||
},
|
||||
"geo": {
|
||||
"@type": "GeoCoordinates",
|
||||
"latitude": "52.22",
|
||||
"longitude": "1.16"
|
||||
},
|
||||
"openingHours": "Mo,Tu,We,Th,Fr 09:00-17:00",
|
||||
"priceRange": "$$",
|
||||
}
|
||||
</script>
|
||||
<meta name="yandex-verification" content="4693a824cfda082a" />
|
||||
<meta id="{{ model.ID_CSRF_TOKEN }}" name="{{ model.FLAG_CSRF_TOKEN }}" content="{{ csrf_token() }}" />
|
||||
|
||||
<!-- Scripts
|
||||
<script src="{{ url_for('static', filename='js/lib/common.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/lib/constants.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/lib/events.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/lib/extras.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/lib/init.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/lib/local_storage.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/lib/utils.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/lib/validation.js') }}"></script>
|
||||
-->
|
||||
|
||||
<script>
|
||||
var attrIdAccessLevel = "{{ model.ATTR_ID_ACCESS_LEVEL }}";
|
||||
var attrIdCurrency = "{{ model.ATTR_ID_CURRENCY }}";
|
||||
var attrIdAddress = "{{ model.ATTR_ID_ADDRESS }}";
|
||||
var attrIdCustomer = "{{ model.ATTR_ID_CUSTOMER }}";
|
||||
var attrIdCustomerAddress = "{{ model.ATTR_ID_CUSTOMER_ADDRESS }}";
|
||||
var attrIdCustomerSalesOrder = "{{ model.ATTR_ID_CUSTOMER_SALES_ORDER }}";
|
||||
var attrIdDiscount = "{{ model.ATTR_ID_DISCOUNT }}";
|
||||
var attrIdManufacturingPurchaseOrder = "{{ model.ATTR_ID_MANUFACTURING_PURCHASE_ORDER }}";
|
||||
var attrIdManufacturingPurchaseOrderProductLink = "{{ model.ATTR_ID_MANUFACTURING_PURCHASE_ORDER_PRODUCT_LINK }}";
|
||||
var attrIdPlant = "{{ model.ATTR_ID_PLANT }}";
|
||||
var attrIdProduct = "{{ model.ATTR_ID_PRODUCT }}";
|
||||
var attrIdProductCategory = "{{ model.ATTR_ID_PRODUCT_CATEGORY }}";
|
||||
var attrIdProductPermutation = "{{ model.ATTR_ID_PRODUCT_PERMUTATION }}";
|
||||
var attrIdProductPrice = "{{ model.ATTR_ID_PRODUCT_PRICE }}";
|
||||
var attrIdProductVariation = "{{ model.ATTR_ID_PRODUCT_VARIATION }}";
|
||||
var attrIdProductVariationType = "{{ model.ATTR_ID_PRODUCT_VARIATION_TYPE }}";
|
||||
var attrIdRegion = "{{ model.ATTR_ID_REGION }}";
|
||||
var attrIdStockItem = "{{ model.ATTR_ID_STOCK_ITEM }}";
|
||||
var attrIdStorageLocation = "{{ model.ATTR_ID_STORAGE_LOCATION }}";
|
||||
var attrIdSupplier = "{{ model.ATTR_ID_SUPPLIER }}";
|
||||
var attrIdSupplierAddress = "{{ model.ATTR_ID_SUPPLIER_ADDRESS }}";
|
||||
var attrIdSupplierPurchaseOrder = "{{ model.ATTR_ID_SUPPLIER_PURCHASE_ORDER }}";
|
||||
var attrIdSupplierPurchaseOrderProductLink = "{{ model.ATTR_ID_SUPPLIER_PURCHASE_ORDER_PRODUCT_LINK }}";
|
||||
var attrIdUnitMeasurementLatencyManufacture = "{{ model.ATTR_ID_UNIT_MEASUREMENT_LATENCY_MANUFACTURE }}";
|
||||
var attrIdUnitMeasurementQuantity = "{{ model.ATTR_ID_UNIT_MEASUREMENT_QUANTITY }}";
|
||||
var attrTextCollapsed = "{{ model.ATTR_TEXT_COLLAPSED }}";
|
||||
var attrTextExpanded = "{{ model.ATTR_TEXT_EXPANDED }}";
|
||||
var attrValueCurrent = "{{ model.ATTR_VALUE_CURRENT }}";
|
||||
@@ -84,6 +54,8 @@
|
||||
var flagAddress = "{{ model.FLAG_ADDRESS }}";
|
||||
var flagAddressLine1 = "{{ model.FLAG_ADDRESS_LINE_1 }}";
|
||||
var flagAddressLine2 = "{{ model.FLAG_ADDRESS_LINE_2 }}";
|
||||
var flagButton = "{{ model.FLAG_BUTTON }}";
|
||||
var flagButtonPrimary = "{{ model.FLAG_BUTTON_PRIMARY }}";
|
||||
var flagCallback = "{{ model.FLAG_CALLBACK }}";
|
||||
var flagCancel = "{{ model.FLAG_CANCEL }}";
|
||||
var flagCard = "{{ model.FLAG_CARD }}";
|
||||
@@ -96,6 +68,7 @@
|
||||
var flagComment = "{{ model.FLAG_COMMENT }}";
|
||||
// var flagContactUs = "{{ model.FLAG_CONTACT_US }}";
|
||||
var flagContainer = "{{ model.FLAG_CONTAINER }}";
|
||||
var flagContainerCheckbox = "{{ model.FLAG_CONTAINER_CHECKBOX }}";
|
||||
var flagContainerInput = "{{ model.FLAG_CONTAINER_INPUT }}";
|
||||
var flagCounty = "{{ model.FLAG_COUNTY }}";
|
||||
var flagCsrfToken = "{{ model.FLAG_CSRF_TOKEN }}";
|
||||
@@ -121,6 +94,8 @@
|
||||
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
|
||||
// var flagItems = "{{ model.FLAG_ITEMS }}";
|
||||
// var flagKeyPrimary = "{{ model.FLAG_KEY_PRIMARY }}";
|
||||
var flagLeftHandStub = "{{ model.FLAG_LEFT_HAND_STUB }}";
|
||||
var flagLogo = "{{ model.FLAG_LOGO }}";
|
||||
var flagMessage = "{{ model.FLAG_MESSAGE }}";
|
||||
var flagModal = "{{ model.FLAG_MODAL }}";
|
||||
var flagMove = "move";
|
||||
@@ -130,21 +105,9 @@
|
||||
var flagNamePlural = "{{ model.FLAG_NAME_PLURAL }}";
|
||||
{# var flagNameSingular = "{{ model.FLAG_NAME_SINGULAR }}"; #}
|
||||
var flagNavAdminHome = "{{ model.FLAG_NAV_ADMIN_HOME }}";
|
||||
var flagNavAdminStoreStripePrices = "{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRICES }}";
|
||||
var flagNavAdminStoreStripeProducts = "{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRODUCTS }}";
|
||||
var flagNavContact = "{{ model.FLAG_NAV_CONTACT }}";
|
||||
var flagNavHome = "{{ model.FLAG_NAV_HOME }}";
|
||||
var flagNavServices = "{{ model.FLAG_NAV_SERVICES }}";
|
||||
var flagNavStoreHome = "{{ model.FLAG_NAV_STORE_HOME }}";
|
||||
var flagNavStoreManufacturingPurchaseOrders = "{{ model.FLAG_NAV_STORE_MANUFACTURING_PURCHASE_ORDERS }}";
|
||||
var flagNavStoreProducts = "{{ model.FLAG_NAV_STORE_PRODUCTS }}";
|
||||
var flagNavStoreProductCategories = "{{ model.FLAG_NAV_STORE_PRODUCT_CATEGORIES }}";
|
||||
var flagNavStoreProductPermutations = "{{ model.FLAG_NAV_STORE_PRODUCT_PERMUTATIONS }}";
|
||||
var flagNavStoreProductPrices = "{{ model.FLAG_NAV_STORE_PRODUCT_PRICES }}";
|
||||
var flagNavStoreProductVariations = "{{ model.FLAG_NAV_STORE_PRODUCT_VARIATIONS }}";
|
||||
var flagNavStoreStockItems = "{{ model.FLAG_NAV_STORE_STOCK_ITEMS }}";
|
||||
var flagNavStoreSuppliers = "{{ model.FLAG_NAV_STORE_SUPPLIERS }}";
|
||||
var flagNavStoreSupplierPurchaseOrders = "{{ model.FLAG_NAV_STORE_SUPPLIER_PURCHASE_ORDERS }}";
|
||||
var flagNavUserAccount = "{{ model.FLAG_NAV_USER_ACCOUNT }}";
|
||||
var flagNavUserAdmin = "{{ model.FLAG_NAV_USER_ADMIN }}";
|
||||
var flagNavUserLogin = "{{ model.FLAG_NAV_USER_LOGIN }}";
|
||||
@@ -154,6 +117,7 @@
|
||||
var flagPageBody = "{{ model.FLAG_PAGE_BODY }}";
|
||||
var flagPhoneNumber = "{{ model.FLAG_PHONE_NUMBER }}";
|
||||
var flagPostcode = "{{ model.FLAG_POSTCODE }}";
|
||||
var flagRightHandSide = "{{ model.FLAG_RIGHT_HAND_SIDE }}";
|
||||
var flagRow = "{{ model.FLAG_ROW }}";
|
||||
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
|
||||
var flagRows = "{{ model.FLAG_ROWS }}";
|
||||
@@ -179,51 +143,12 @@
|
||||
var hashPageLicense = "{{ model.HASH_PAGE_LICENSE }}";
|
||||
var hashPagePrivacyPolicy = "{{ model.HASH_PAGE_PRIVACY_POLICY }}";
|
||||
var hashPageServices = "{{ model.HASH_PAGE_SERVICES }}";
|
||||
{#
|
||||
var hashPageStoreAdminStripePrices = "{{ model.HASH_PAGE_STORE_ADMIN_STRIPE_PRICES }}";
|
||||
var hashPageStoreAdminStripeProducts = "{{ model.HASH_PAGE_STORE_ADMIN_STRIPE_PRODUCTS }}";
|
||||
#}
|
||||
var hashPageStoreBasket = "{{ model.HASH_PAGE_STORE_BASKET }}";
|
||||
var hashPageStoreCustomerSalesOrders = "{{ model.HASH_PAGE_STORE_CUSTOMER_SALES_ORDERS }}";
|
||||
var hashPageStoreHome = "{{ model.HASH_PAGE_STORE_HOME }}";
|
||||
var hashPageStoreManufacturingPurchaseOrders = "{{ model.HASH_PAGE_STORE_MANUFACTURING_PURCHASE_ORDERS }}";
|
||||
var hashPageStoreProductCategories = "{{ model.HASH_PAGE_STORE_PRODUCT_CATEGORIES }}";
|
||||
var hashPageStoreProducts = "{{ model.HASH_PAGE_STORE_PRODUCTS }}";
|
||||
var hashPageStoreProductPermutations = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATIONS }}";
|
||||
var hashPageStoreProductPrices = "{{ model.HASH_PAGE_STORE_PRODUCT_PRICES }}";
|
||||
var hashPageStoreProductVariations = "{{ model.HASH_PAGE_STORE_PRODUCT_VARIATIONS }}";
|
||||
var hashPageStoreStockItems = "{{ model.HASH_PAGE_STORE_STOCK_ITEMS }}";
|
||||
var hashPageStoreSuppliers = "{{ model.HASH_PAGE_STORE_SUPPLIERS }}";
|
||||
var hashPageStoreSupplierPurchaseOrders = "{{ model.HASH_PAGE_STORE_SUPPLIER_PURCHASE_ORDERS }}";
|
||||
var hashPageUserAccount = "{{ model.HASH_PAGE_USER_ACCOUNT }}";
|
||||
var hashPageUserAdmin = "{{ model.HASH_PAGE_USER_ADMIN }}";
|
||||
var hashPageUserLogin = "{{ model.HASH_PAGE_USER_LOGIN }}";
|
||||
var hashPageUserLogout = "{{ model.HASH_PAGE_USER_LOGOUT }}";
|
||||
var idButtonApplyFilters = "#{{ model.ID_BUTTON_APPLY_FILTERS }}";
|
||||
/*
|
||||
var idButtonAdd = "#{{ model.ID_BUTTON_ADD }}";
|
||||
var idButtonCancel = "#{{ model.ID_BUTTON_CANCEL }}";
|
||||
var idButtonConfirm = "#{{ model.ID_BUTTON_CONFIRM }}";
|
||||
*/
|
||||
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
|
||||
/*
|
||||
var idButtonNavAdminHome = "#{{ model.ID_NAV_ADMIN_HOME }}";
|
||||
// var idButtonNavContact = "#{{ model.ID_NAV_CONTACT }}";
|
||||
var idButtonNavHome = "#{{ model.ID_NAV_HOME }}";
|
||||
var idButtonNavServices = "#{{ model.ID_NAV_SERVICES }}";
|
||||
var idButtonNavStoreHome = "#{{ model.ID_NAV_STORE_HOME }}";
|
||||
var idButtonNavStoreProduct = "#{{ model.ID_NAV_STORE_PRODUCT }}";
|
||||
var idButtonNavStoreProductCategories = "#{{ model.ID_NAV_STORE_PRODUCT_CATEGORIES }}";
|
||||
var idButtonNavStoreProductPermutations = "#{{ model.ID_NAV_STORE_PRODUCT_PERMUTATIONS }}";
|
||||
var idButtonNavStoreProductPrices = "#{{ model.ID_NAV_STORE_PRODUCT_PRICES }}";
|
||||
var idButtonNavStoreProductVariations = "#{{ model.ID_NAV_STORE_PRODUCT_VARIATIONS }}";
|
||||
var idButtonNavStoreStockItems = "#{{ model.ID_NAV_STORE_STOCK_ITEMS }}";
|
||||
var idButtonNavUserAccount = "#{{ model.ID_NAV_USER_ACCOUNT }}";
|
||||
var idButtonNavUserAdmin = "#{{ model.ID_NAV_USER_ADMIN }}";
|
||||
var idButtonNavUserLogin = "#{{ model.ID_NAV_USER_LOGIN }}";
|
||||
var idButtonNavUserLogout = "#{{ model.ID_NAV_USER_LOGOUT }}";
|
||||
var idButtonSave = "#{{ model.ID_BUTTON_SAVE }}";
|
||||
*/
|
||||
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
|
||||
var idFormFilters = "#{{ model.ID_FORM_FILTERS }}";
|
||||
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
|
||||
@@ -247,129 +172,66 @@
|
||||
-->
|
||||
<link rel="preload" as="style" href="{{ url_for('static', filename='dist/css/main.bundle.css') }}" onload="this.onload=null;this.rel='stylesheet'">
|
||||
<noscript><link rel="stylesheet" href="{{ url_for('static', filename='dist/css/main.bundle.css') }}"></noscript>
|
||||
|
||||
{% block page_head %}{% endblock %}
|
||||
</head>
|
||||
<body data-page="{{ model.hash_page_current }}">
|
||||
<div class="topnav">
|
||||
<div class="{{ model.FLAG_CONTAINER }}" style="width: 18vw; min-width: 18vw; max-width: 20vw;">
|
||||
<img class="header-logo" src="{{ url_for('static', filename='images/Logo.png') }}" alt="{{ model.NAME_COMPANY }} logo" aria-label="{{ model.NAME_COMPANY }} logo" tabindex="0">
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }}" style="width: 75vw; min-width: 65vw; max-width: 80vw;">
|
||||
<h1 class="company-name">{{ model.NAME_COMPANY }} - {{ model.title }}</h1>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }}" style="width: 7vw; min-width: 7vw; max-width: 15vw; justify-content: flex-end; "> <!-- padding-left: 25%; -->
|
||||
<button id="{{ model.ID_BUTTON_HAMBURGER }}" tabindex="1" alt="Hamburger menu button" aria-label="Hamburger menu button">☰</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="{{ model.ID_OVERLAY_HAMBURGER }}" class="{{ model.FLAG_OVERLAY}} {{ model.FLAG_HAMBURGER }} {{ model.FLAG_COLLAPSED }}"> <!-- style="height: {{ 27 * 3 }}px" {- { 4.5 * 3 }}vh -->
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_HOME }}">Home</a>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_SERVICES }}">Services</a>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_CONTACT }}">Contact</a>
|
||||
</div>
|
||||
|
||||
{#
|
||||
{% if model.is_page_store and model.user.can_admin_store %}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_STORE_PRODUCT_PERMUTATIONS }}">Product Permutations</a>
|
||||
</div>
|
||||
{% if model.user.can_admin_store %}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_STORE_STOCK_ITEMS }}">Stock Items</a>
|
||||
<!-- Header -->
|
||||
<header>
|
||||
<div class="container">
|
||||
<nav class="navbar">
|
||||
<div class="{{ model.FLAG_LOGO }}" href="/">{{ model.NAME_COMPANY }}</div>
|
||||
<div class="nav-links">
|
||||
{% block page_nav_links %}{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<!--
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<!-- <a href="{ url_ for('create_price_dummy') }">Create template price</a> --
|
||||
<form id="{{ model.ID_FORM_IS_INCLUDED_VAT }}" class="{{ model.FLAG_CONTAINER }}" action="{ { url_ for('set_is_included_VAT') } }" method="POST">
|
||||
{ { model.form_is_included_VAT.hidden_tag() }}
|
||||
<div class="container-input">
|
||||
{ { model.form_is_included_VAT.is_included.label }}
|
||||
{ { model.form_is_included_VAT.is_included( checked = model.is_included_VAT ) }}
|
||||
{ % for error in model.form_is_included_VAT.is_included.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{ % endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<form id="{{ model.ID_FORM_DELIVERY_REGION }}" class="{{ model.FLAG_CONTAINER }}" action="{ { url_ for('set_delivery_region') } }" method="POST">
|
||||
{ { model.form_delivery_region.hidden_tag() }}
|
||||
<div class="container-input">
|
||||
{ { model.form_delivery_region.id_region_delivery.label }}
|
||||
{ { model.form_delivery_region.id_region_delivery() }}
|
||||
{ % for error in model.form_delivery_region.id_region_delivery.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{ % endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<form id="{{ model.ID_FORM_CURRENCY }}" class="{{ model.FLAG_CONTAINER }}" action="{ { url_ for('set_currency') } }" method="POST">
|
||||
{ { model.form_currency.hidden_tag() }}
|
||||
<div class="container-input">
|
||||
{ { model.form_currency.id_currency.label }}
|
||||
{ { model.form_currency.id_currency() }}
|
||||
{ % for error in model.form_currency.id_currency.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{ % endfor %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a href="{ { url_for('routes_user.logout') if model.is_user_logged_in else url_for('routes_user.login') }}" style="float:right">{{ 'Logout' if model.is_user_logged_in else 'Login' }}</a>
|
||||
</div>
|
||||
-->
|
||||
{% else %}
|
||||
{% if model.user.can_admin_store %}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_STORE_HOME }}">Shop</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
#}
|
||||
{% if model.user.can_admin_store %}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_ADMIN_HOME }}">Admin</a>
|
||||
</nav>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if model.user.is_logged_in %}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_USER_ACCOUNT }}">Account</a>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_USER_LOGOUT }}">Logout</a>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<a class="{{ model.FLAG_NAV_USER_LOGIN }}">Login</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Page body -->
|
||||
<div id="{{ model.ID_PAGE_BODY }}" class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_PAGE_BODY }}">
|
||||
{% block page_body %}{% endblock %}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer">
|
||||
<h4 style="padding-top: 1vh;">Copyright © {{ model.NAME_COMPANY }}. <a href="{{ url_for('routes_legal.license') }}" alt="License" aria-label="License">All rights reserved.</a></h4>
|
||||
<h5>Company number 13587499</h5>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('routes_legal.accessibility_statement') }}" alt="Accessibility statement" aria-label="Accessibility statement">Accessibility statement</a></p></div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('routes_legal.privacy_policy') }}" alt="Privacy notice" aria-label="Privacy notice">Privacy notice</a></p></div>
|
||||
<!-- Body -->
|
||||
<div id="{{ model.ID_PAGE_BODY }}">
|
||||
{% block page_body %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--<script type="module" src="{{ url_for('static', filename='js/pages/base.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/app.js') }}"></script>-->
|
||||
<script src="{{ url_for('static', filename='dist/js/main.bundle.js') }}"></script>
|
||||
<!-- Footer -->
|
||||
<footer class="footer">
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
<div class="footer-content">
|
||||
<div class="footer-section">
|
||||
<h3>{{ model.NAME_COMPANY }}</h3>
|
||||
<p>Company Number: {{ model.COMPANY_NUMBER }}</p>
|
||||
<p>Registered in England and Wales</p>
|
||||
<p>Registered Office: {{ model.COMPANY_ADDRESS_SHORT }}</p>
|
||||
</div>
|
||||
|
||||
<div class="footer-section">
|
||||
<h3>Legal</h3>
|
||||
<ul>
|
||||
<li><a href="{{ url_for('routes_legal.privacy_policy') }}">Privacy Policy</a></li>
|
||||
<li><a href="{{ url_for('routes_legal.accessibility_statement') }}">Accessibility Statement</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer-section">
|
||||
<h3>Contact</h3>
|
||||
<ul>
|
||||
<li>Email: {{ model.get_mail_contact_public() }}</li>
|
||||
<li><a href="https://www.linkedin.com/in/teddyms/">LinkedIn</a></li>
|
||||
<li><a href="https://github.com/Teddy-1024/">GitHub</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer-bottom">
|
||||
<p>© {{ current_year }} {{ model.NAME_COMPANY }}. <a href="{{ url_for('routes_legal.license') }}" alt="License" aria-label="License">All rights reserved.</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- JavaScript -->
|
||||
<!--<script type="module" src="{{ url_for('static', filename='js/pages/base.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/app.js') }}"></script>-->
|
||||
<script src="{{ url_for('static', filename='dist/js/main.bundle.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/core/admin_home.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_admin_home.bundle.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_ROW }}">
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<h2>Store</h2>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_CATEGORIES }}">Product Categories</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_PRODUCTS }}">Products</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_PERMUTATIONS }}">Product Permutations</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_PRICES }}">Product Prices</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_STOCK_ITEMS }}">Product Stock</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_PRODUCT_VARIATIONS }}">Product Variations</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRODUCTS }}">Add new Stripe products</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_ADMIN_STORE_STRIPE_PRICES }}">Add new Stripe prices</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_MANUFACTURING_PURCHASE_ORDERS }}">Manufacturing Purchase Orders</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_SUPPLIERS }}">Suppliers</button>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<button class="{{ model.FLAG_NAV_STORE_SUPPLIER_PURCHASE_ORDERS }}">Supplier Purchase Orders</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/core/admin_home.js') }}"></script>
|
||||
<!- <script type="module" src="{{ url_for('static', filename='js/pages/store/base.js') }}"></script> -->
|
||||
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_ADMIN_HOME }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
hookupPageAdminHome();
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
{% endblock %}
|
||||
@@ -1,14 +1,17 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
{% block page_head %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_contact.bundle.css') }}">
|
||||
{% endblock %}
|
||||
|
||||
{% block page_nav_links %}
|
||||
{#
|
||||
<a href="#contact-form">Contact Form</a>
|
||||
<a href="#contact-details">Contact Details</a>
|
||||
#}
|
||||
{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/core/contact.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_contact.bundle.css') }}">
|
||||
|
||||
<script>
|
||||
function loadRecaptcha() {
|
||||
var script = document.createElement('script');
|
||||
@@ -20,104 +23,170 @@
|
||||
window.addEventListener('load', loadRecaptcha);
|
||||
</script>
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="card">
|
||||
<form id="{{ model.ID_FORM_CONTACT }}" class="container" action="{{ url_for('routes_core.contact') }}" method="POST">
|
||||
<h2 class="label-title">Complete the form or find our details below.</h2>
|
||||
<!--
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
<label for="sender_email">Email address</label> <!-- class="input-label" --
|
||||
<input type="email" id="sender_email" name="sender_email" placeholder="Please enter your email address so we can get back to you." style="width: 50%;"/>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
<label for="sender_CC">
|
||||
<input type="checkbox" id="sender_CC" name="sender_CC" checked/>Uncheck this box if you do not wish to receive a copy of the email
|
||||
</label>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
<label for="sender_name">Name</label> <!-- class="input-label" --
|
||||
<input type="text" id="sender_name" name="sender_name" placeholder="Please enter your preferred name." style="width: 30%;"/>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
<label for="sender_message">Message</label> <!-- class="input-label" --
|
||||
<textarea id="sender_message" name="sender_message" rows="4" cols="80" placeholder="How can we help?"></textarea>
|
||||
</div>
|
||||
<button type="submit" id="submit_form_email">Submit request</button>
|
||||
-->
|
||||
{{ model.form_contact.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.email.label }}
|
||||
{{ model.form_contact.email(size=254) }}
|
||||
{% for error in model.form_contact.email.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<!--
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.CC.label }}
|
||||
{{ model.form_contact.CC(checked=True) }}
|
||||
{% for error in model.form_contact.name.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
-->
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.name.label }}
|
||||
{{ model.form_contact.name(size=50) }}
|
||||
{% for error in model.form_contact.name.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.message.label }}
|
||||
{{ model.form_contact.message(rows=4, cols=80) }}
|
||||
{% for error in model.form_contact.name.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.recaptcha() }}
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.submit() }}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<!-- Table
|
||||
<section class="contact-form">
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
<form id="{{ model.ID_FORM_CONTACT }}" class="contact-form-content" action="{{ url_for('routes_core.contact') }}" method="POST">
|
||||
<h2 class="section-title">Complete the form or find our details below</h2>
|
||||
{{ model.form_contact.hidden_tag() }}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="model.FLAG_LEFT_HAND_STUB"></th>
|
||||
<th class="model.FLAG_RIGHT_HAND_SIDE"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="{{ model.FLAG_EMAIL }}">
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}">{{ model.form_contact.email.label }}</td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">{{ model.form_contact.email(size=254) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}"></td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">
|
||||
{% for error in model.form_contact.email.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<h3 class="label-title" style="padding-bottom: 0;">Where to find us</h3>
|
||||
<tr class="{{ model.FLAG_CONTACT_NAME }}">
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}">{{ model.form_contact.contact_name.label }}</td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">{{ model.form_contact.contact_name(size=254) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}"></td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">
|
||||
{% for error in model.form_contact.contact_name.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="{{ model.FLAG_COMPANY_NAME }}">
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}">{{ model.form_contact.company_name.label }}</td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">{{ model.form_contact.company_name(size=254) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}"></td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">
|
||||
{% for error in model.form_contact.company_name.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="{{ model.FLAG_MESSAGE }}">
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}">{{ model.form_contact.message.label }}</td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">{{ model.form_contact.message(rows=4, columns=80) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="{{ model.FLAG_LEFT_HAND_STUB }}"></td>
|
||||
<td class="{{ model.FLAG_RIGHT_HAND_SIDE }}">
|
||||
{% for error in model.form_contact.message.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="{{ model.FLAG_CONTAINER_CHECKBOX }} {{ model.FLAG_RECEIVE_MARKETING }}">
|
||||
{{ model.form_contact.receive_marketing(size=20) }}
|
||||
{{ model.form_contact.receive_marketing.label }}
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
{{ model.form_contact.recaptcha() }}
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.submit() }}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<h4>{{ model.app.MAIL_CONTACT_PUBLIC }}</h4>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}" style="padding-top: 0; width: fit-content;">
|
||||
<a href="{{ model.URL_LINKEDIN }}" class="{{ model.FLAG_CONTAINER_ICON_AND_LABEL }} {{ model.FLAG_COLUMN }}">
|
||||
<img class="img-icon" src="{{ url_for('static', filename='images/Logo_LinkedIn.png') }}" alt="LinkedIn" aria-label="LinkedIn"></img>
|
||||
<h4>LinkedIn</h4>
|
||||
</a>
|
||||
<a href="{{ model.URL_GITHUB }}" class="{{ model.FLAG_CONTAINER_ICON_AND_LABEL }} {{ model.FLAG_COLUMN }}">
|
||||
<img class="img-icon" src="{{ url_for('static', filename='images/Logo_GitHub.png') }}" alt="GitHub" aria-label="GitHub"></img>
|
||||
<h4>GitHub</h4>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/core/contact.js') }}"></script>
|
||||
</section>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Divs -->
|
||||
{% set form = model.form_contact %}
|
||||
<section class="contact-section">
|
||||
<div class="contact-form">
|
||||
<h1>Contact Us</h1>
|
||||
<p>Please fill in the form below and we'll get back to you as soon as possible.</p>
|
||||
|
||||
<form id="contact-form" method="POST" action="{{ url_for('routes_core.contact') }}">
|
||||
{{ form.csrf_token }}
|
||||
|
||||
<div class="form-grid">
|
||||
<label class="form-label" for="{{ form.email.id }}">{{ form.email.label.text }} *</label>
|
||||
<div>
|
||||
{{ form.email(class="form-input", required=True) }}
|
||||
</div>
|
||||
|
||||
<label class="form-label" for="{{ form.contact_name.id }}">{{ form.contact_name.label.text }} *</label>
|
||||
<div>
|
||||
{{ form.contact_name(class="form-input", required=True) }}
|
||||
</div>
|
||||
|
||||
<label class="form-label" for="{{ form.company_name.id }}">{{ form.company_name.label.text }} *</label>
|
||||
<div>
|
||||
{{ form.company_name(class="form-input", required=True) }}
|
||||
</div>
|
||||
|
||||
<label class="form-label" for="{{ form.message.id }}">{{ form.message.label.text }} *</label>
|
||||
<div>
|
||||
{{ form.message(class="form-input", required=True) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="{{ model.FLAG_CONTAINER_CHECKBOX }} {{ model.FLAG_RECEIVE_MARKETING }} marketing-consent">
|
||||
{{ model.form_contact.receive_marketing() }}
|
||||
{{ model.form_contact.receive_marketing.label }}
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
{{ model.form_contact.recaptcha() }}
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
|
||||
{{ model.form_contact.submit() }}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="data-notice">
|
||||
<h3>How we use your information</h3>
|
||||
<p>We will use the information you provide in this form to:</p>
|
||||
<ul>
|
||||
<li>Respond to your inquiry about our ERP implementation services</li>
|
||||
<li>Create and send you a proposal if requested</li>
|
||||
<li>Contact you regarding your interest in our services</li>
|
||||
</ul>
|
||||
|
||||
<p>If you opt in to marketing communications, we will also use your email address to send you updates about our services, ERPNext features, and relevant industry news. You can unsubscribe from these communications at any time.</p>
|
||||
|
||||
<p>We retain contact form submissions for customer service purposes and retain marketing consent records as required by law. For details about how long we keep your information, please see our <a href="{{ url_for('routes_legal.retention_schedule') }}">data retention schedule</a>.</p>
|
||||
|
||||
<p>For full details about how we handle your personal data, please read our <a href="{{ url_for('routes_legal.privacy_policy') }}">Privacy Policy</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{# included in footer now
|
||||
<section class="contact-details">
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
<h2>Our contact details</h2>
|
||||
<div class="expertise-card">
|
||||
<ul>
|
||||
<li>Email: {{ model.get_mail_contact_public() }}</li>
|
||||
<li>LinkedIn: <a href="https://www.linkedin.com/in/teddyms/">linkedin.com/in/teddyms</a></li>
|
||||
<li>GitHub: <a href="https://github.com/Teddy-1024/">github.com/Teddy-1024</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
#}
|
||||
|
||||
<script>
|
||||
var idEmail = "#{{ model.ID_EMAIL }}";
|
||||
var idMessage = "#{{ model.ID_MESSAGE }}";
|
||||
var idName = "#{{ model.ID_NAME }}";
|
||||
|
||||
/*
|
||||
$(document).ready(function() {
|
||||
stylePageContact();
|
||||
hookupPageContact();
|
||||
});
|
||||
*/
|
||||
var idContactName = "#{{ model.ID_CONTACT_NAME }}";
|
||||
var idCompanyName = "#{{ model.ID_COMPANY_NAME }}";
|
||||
var idReceiveMarketing = "#{{ model.ID_RECEIVE_MARKETING }}";
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -2,32 +2,119 @@
|
||||
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/core/home.css') }}" />
|
||||
-->
|
||||
{% block page_head %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_home.bundle.css') }}">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.css">
|
||||
{% endblock %}
|
||||
|
||||
<!-- HTML content -->
|
||||
<div>
|
||||
<h2 style="font-size: 24px; color: white; font-weight: normal;">We make websites, web apps, and desktop software</h2>
|
||||
{% set block_id = 'button_get_in_touch' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/core/home.js') }}"></script>
|
||||
-->
|
||||
|
||||
<!--
|
||||
{% block page_nav_links %}
|
||||
<a href="#services">Services</a>
|
||||
<a href="#testimonial">Testimonial</a>
|
||||
<a href="#pricing">Pricing</a>
|
||||
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Contact Us</a>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<section class="hero">
|
||||
<div class="container">
|
||||
<div class="hero-content" data-aos="fade-up">
|
||||
<h1>Transform Your Business with Modern ERP Solutions</h1>
|
||||
<p>UK-based ERPNext implementation experts helping SMBs streamline operations with customized, cost-effective solutions.</p>
|
||||
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Get Started</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="services" class="services">
|
||||
<div class="container">
|
||||
<h2 class="section-title text-center">Our Services</h2>
|
||||
<p class="section-subtitle text-center">Comprehensive ERP solutions tailored to your business needs</p>
|
||||
|
||||
<div class="services-grid">
|
||||
<div class="service-card" data-aos="fade-up" data-aos-delay="100">
|
||||
<h3>Implementation Services</h3>
|
||||
<p>Full ERPNext implementation including setup, configuration, and training. We ensure a smooth transition to your new ERP system.</p>
|
||||
</div>
|
||||
|
||||
<div class="service-card" data-aos="fade-up" data-aos-delay="200">
|
||||
<h3>Integration & Migration</h3>
|
||||
<p>Seamlessly migrate your existing data and integrate ERPNext with your current business applications and workflows.</p>
|
||||
</div>
|
||||
|
||||
<div class="service-card" data-aos="fade-up" data-aos-delay="300">
|
||||
<h3>Hosting Services</h3>
|
||||
<p>Secure, reliable cloud hosting with regular backups and maintenance to keep your ERP system running smoothly.</p>
|
||||
</div>
|
||||
|
||||
<div class="service-card" data-aos="fade-up" data-aos-delay="400">
|
||||
<h3>Custom Extensions</h3>
|
||||
<p>Tailored app development and customizations to extend ERPNext functionality according to your specific requirements.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{#
|
||||
<section id="testimonial" class="testimonial">
|
||||
<div class="container">
|
||||
<h2 class="section-title text-center">Client Success Story</h2>
|
||||
<p class="section-subtitle text-center">See how we've helped other businesses succeed</p>
|
||||
|
||||
<div class="testimonial-card" data-aos="fade-up">
|
||||
<p>"The ERPNext implementation has revolutionized our operations. The integrated e-commerce system has streamlined our entire sales process, and the team's support has been exceptional throughout our journey."</p>
|
||||
<p><strong>- 4 Shires Builders Merchants</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
#}
|
||||
|
||||
<section id="pricing" class="pricing">
|
||||
<div class="container">
|
||||
<h2 class="section-title text-center">Simple, Transparent Pricing</h2>
|
||||
<p class="section-subtitle text-center">Everything you need to run your business efficiently</p>
|
||||
|
||||
<div class="pricing-card" data-aos="fade-up">
|
||||
<h3>Implementation</h3>
|
||||
<div class="price">From £10,000</div>
|
||||
<p>One-time implementation fee</p>
|
||||
<ul style="list-style: none; margin: 2rem 0;">
|
||||
<li>✓ Full system setup</li>
|
||||
<li>✓ Data migration</li>
|
||||
<li>✓ User training</li>
|
||||
<li>✓ Custom configurations</li>
|
||||
</ul>
|
||||
|
||||
<h3>Monthly Support & Hosting</h3>
|
||||
<div class="price">£200</div>
|
||||
<p>Fixed monthly fee</p>
|
||||
<ul style="list-style: none; margin: 2rem 0;">
|
||||
<li>✓ Unlimited support tickets</li>
|
||||
<li>✓ Cloud hosting</li>
|
||||
<li>✓ Regular maintenance</li>
|
||||
<li>✓ System updates</li>
|
||||
</ul>
|
||||
|
||||
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Get Started</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="cta">
|
||||
<div class="container">
|
||||
<h2 class="section-title">Ready to Transform Your Business?</h2>
|
||||
<p class="section-subtitle">Contact us today to discuss your ERP needs</p>
|
||||
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_LIGHT }}">Contact Us</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CDN -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js"></script>
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_HOME }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
hookupPageHome();
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
AOS.init({
|
||||
duration: 1000,
|
||||
once: true
|
||||
});
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
{% endblock %}
|
||||
@@ -1,120 +0,0 @@
|
||||
<!-- v2a -->
|
||||
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheet
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/core.css') }}" />
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/core/services.css') }}" />
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_services.bundle.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<h1>Services</h1>
|
||||
<h2>Website, Web App, & Desktop Software Development</h2>
|
||||
<ul>
|
||||
<li>Custom software tailored to your unique business needs</li>
|
||||
<li>Leverage the latest technologies for seamless, high-performance solutions</li>
|
||||
<li>Intuitive user interface design to delight your users and boost productivity</li>
|
||||
</ul>
|
||||
<h2>Cloud Migration & Architecture Design</h2>
|
||||
<ul>
|
||||
<li>Expertise to guide your cloud journey and optimize your architecture</li>
|
||||
<li>Ensure scalability, security and cost-efficiency in the cloud</li>
|
||||
<li>Unlock the power of cloud-native services, like AI, to accelerate innovation</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
<h1>Technologies</h1>
|
||||
<p>We are most experienced with these technologies, in case you have any requirements.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Database</th>
|
||||
<th>Server / Application</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://www.mysql.com/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/MySQL.png')}}" alt="MySQL"></img></a></td>
|
||||
<td><a href="https://www.python.org/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/python.png')}}" alt="python"></img></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://www.microsoft.com/en-us/sql-server/sql-server-2019" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/MS_SQL_Server.svg')}}" alt="Microsoft SQL Server"></img></a></td>
|
||||
<td><a href="https://dotnet.microsoft.com/en-us/languages/csharp" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/Csharp_NET.png')}}" alt="C sharp dot NET"></img></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://firebase.google.com/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/Firebase.png')}}" alt="Firebase"></img></a></td>
|
||||
<td><a href="https://nodejs.org/en" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/Node_js.png')}}" alt="Node dot js"></img></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><a href="https://www.java.com/en/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/Java.png')}}" alt="Java"></img></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Web</th>
|
||||
<th>Frameworks</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://www.w3.org/html/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/HTML5.png')}}" alt="HTML5"></img></a></td>
|
||||
<td><a href="https://react.dev/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/React.png')}}" alt="React"></img></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://www.w3.org/Style/CSS/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/CSS3.jpg')}}" alt="CSS3"></img></a></td>
|
||||
<td><a href="https://flask.palletsprojects.com/en/3.0.x/" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/Flask.png')}}" alt="Flask"></img></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/JavaScript.png')}}" alt="JavaScript"></img></a></td>
|
||||
<td><a href="https://dotnet.microsoft.com/en-us/apps/aspnet/mvc" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/MVC.png')}}" alt="Model View Controller"></img></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><a href="https://ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" target="_blank"><img class="img-icon" src="{{ url_for('static', filename='images/REST.png')}}" alt="REST"></img></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
<h1>FAQs</h1>
|
||||
<h2>Websites, Web apps, and Software - what's the difference?</h2>
|
||||
<ul>
|
||||
<li>Not much! A web app is a type of website and they are both types of software that are accessed on the internet using web browser software.</li>
|
||||
<li>Web apps have more complex functionality than simple text and image pages.</li>
|
||||
<li>For example, this is a website. Google Maps is a web app. Notepad is a piece of desktop sofware.</li>
|
||||
</ul>
|
||||
<h2>Why choose us?</h2>
|
||||
<ul>
|
||||
<li>Work directly with the person responsible for delivering your project</li>
|
||||
<li>Faster decision-making process without bureaucratic hurdles</li>
|
||||
<li>Transparent pricing structure with no hidden fees</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript
|
||||
<script type="module" src="{{ url_for('static', filename='js/sections/core.js') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/core/services.js') }}"></script>
|
||||
-->
|
||||
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_SERVICES }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
hookupPageServices();
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
{% endblock %}
|
||||
@@ -16,7 +16,7 @@
|
||||
<p>This privacy notice tells you what to expect us to do with your personal information.</p>
|
||||
<h3>Our contact details</h3>
|
||||
<p>Email</p>
|
||||
<p>teddy@partsltd.co.uk</p>
|
||||
<p>{{ model.get_mail_contact_public() }}</p>
|
||||
<h3>What information we collect, use, and why</h3>
|
||||
<p>We collect or use the following information to provide services and goods, including delivery:</p>
|
||||
<ul>
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_head %}
|
||||
<link rel="preload" as="style" href="{{ url_for('static', filename='dist/css/store_basket.bundle.css') }}" onload="this.onload=null;this.rel='stylesheet'">
|
||||
<noscript><link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_basket.bundle.css') }}"></noscript>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block page_body %}
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div id="{{ model.ID_CONTAINER_INFO_DELIVERY }}" class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}" style="border-bottom: 1px black;">
|
||||
<h2>Delivery Information</h2>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
Valid delivery information not submitted
|
||||
</div>
|
||||
</div>
|
||||
<div id="{{ model.ID_CONTAINER_INFO_BILLING }}" class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}" style="border-bottom: 1px black;">
|
||||
<h2>Billing Information</h2>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
Valid billing information not submitted
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
<div id="{{ model.ID_BASKET_CONTAINER }}">
|
||||
{% include 'components/store/_basket.html' %}
|
||||
</div>
|
||||
<!-- Comes with basket block
|
||||
<div class="{{ model.FLAG_CONTAINER }}">
|
||||
<!-- subtotal --
|
||||
<h2 id="id_basket_total">Order total: £{{ model.OUTPUT_BASKET_TOTAL() }}</h2>
|
||||
<!-- checkout button - hidden unless valid details entered everywhere above --
|
||||
<button type="submit" class="{{ model.FLAG_BTN_SUBMIT }}">Complete Purchase</button>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% set form = model.form_delivery %}
|
||||
{% set overlay_id = model.id_overlay_info_delivery %}
|
||||
{% set overlay_title = 'Delivery Information' %}
|
||||
{% include 'components/common/temporary/_overlay_address.html' %}
|
||||
|
||||
{% set form = model.form_billing %}
|
||||
{% set overlay_id = model.id_overlay_info_billing %}
|
||||
{% set overlay_title = 'Billing Information' %}
|
||||
{% include 'components/common/temporary/_overlay_address.html' %}
|
||||
|
||||
|
||||
<!-- Include JavaScript
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/basket.js') }}"></script>
|
||||
-->
|
||||
{% set block_id = 'checkout' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_BASKET }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
console.log('Hooking up store basket review page...');
|
||||
hookupStorePageBasket();
|
||||
// hookupStorePageBilling();
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
{% endblock %}
|
||||
@@ -1,46 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<!-- Include Stylesheets
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/store/checkout_success.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_checkout_success.bundle.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="{{ model.FLAG_CARD }}">
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div id="{{ model.ID_CONTAINER_INFO_DELIVERY }}" class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}" style="border-bottom: 1px black;">
|
||||
<h2>Order successful!</h2>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<div class="{{ model.FLAG_LABEL }}"><strong>Order reference: {{ model.CHECKOUT_SESSION.ID }}</strong></div>
|
||||
<div class="{{ model.FLAG_LABEL }}">You will receive an order acknowledgement by email</div>
|
||||
</div>
|
||||
{% if model.IS_USER_LOGGED_IN %}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
|
||||
<h3>Your order:</h3>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/checkout_success.js') }}"></script>
|
||||
-->
|
||||
{% set block_id = 'checkout' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
<!--
|
||||
<script>
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_BASKET }}";
|
||||
|
||||
$(document).ready(function() {
|
||||
console.log('Hooking up store checkout success page...');
|
||||
hookupStorePageCheckoutSuccess();
|
||||
});
|
||||
</script>
|
||||
-->
|
||||
{% endblock %}
|
||||
@@ -1,11 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_head %}
|
||||
<link rel="preload" as="style" href="{{ url_for('static', filename='dist/css/store_home.bundle.css') }}" onload="this.onload=null;this.rel='stylesheet'">
|
||||
<noscript><link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_home.bundle.css') }}"></noscript>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block page_body %}
|
||||
{% include 'components/store/_home_body.html' %}
|
||||
{% endblock %}
|
||||
@@ -1,87 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_head %}
|
||||
<link rel="preload" as="style" href="{{ url_for('static', filename='dist/css/store_manufacturing_purchase_orders.bundle.css') }}" onload="this.onload=null;this.rel='stylesheet'">
|
||||
<noscript><link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_manufacturing_purchase_orders.bundle.css') }}"></noscript>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}"> <!-- {{ model.FLAG_CONTAINER }} -->
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_ACTIVE }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_DATE_FROM }}">
|
||||
{{ model.form_filters.date_from.label }}
|
||||
{{ model.form_filters.date_from() }}
|
||||
{% for error in model.form_filters.date_from.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_DATE_TO }}">
|
||||
{{ model.form_filters.date_to.label }}
|
||||
{{ model.form_filters.date_to() }}
|
||||
{% for error in model.form_filters.date_to.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
|
||||
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr class="{{ model.FLAG_MANUFACTURING_PURCHASE_ORDER }}">
|
||||
<th class="{{ model.FLAG_ORDER_ITEMS }} {{ model.FLAG_COLLAPSED }}">Items</th>
|
||||
<th class="{{ model.FLAG_CURRENCY }}">Currency</th>
|
||||
<th class="{{ model.FLAG_COST_TOTAL_LOCAL_VAT_EXCL }}">Cost Total VAT Excl.</th>
|
||||
<th class="{{ model.FLAG_COST_TOTAL_LOCAL_VAT_INCL }}">Cost Total VAT Incl.</th>
|
||||
<th class="{{ model.FLAG_PRICE_TOTAL_LOCAL_VAT_EXCL }}">Price Total VAT Excl.</th>
|
||||
<th class="{{ model.FLAG_PRICE_TOTAL_LOCAL_VAT_INCL }}">Price Total VAT Incl.</th>
|
||||
<th class="{{ model.FLAG_ACTIVE}}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for order in model.manufacturing_purchase_orders %}
|
||||
{% include 'components/store/_row_manufacturing_purchase_order.html' %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_manufacturing_purchase_order.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
var currencies = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.currencies) | tojson | safe }};
|
||||
var flagQuantityProduced = "{{ model.FLAG_QUANTITY_PRODUCED }}";
|
||||
var flagQuantityUsed = "{{ model.FLAG_QUANTITY_USED }}";
|
||||
var manufacturingPurchaseOrders = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.manufacturing_purchase_orders) | tojson | safe }};
|
||||
var products = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.get_list_products()) | tojson | safe }};
|
||||
var productCategories = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.categories) | tojson | safe }};
|
||||
var productVariations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variations) | tojson | safe }};
|
||||
var productVariationTypes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variation_types) | tojson | safe }};
|
||||
var unitMeasurements = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.units_measurement) | tojson | safe }};
|
||||
var unitMeasurementsTime = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.units_measurement_time) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,71 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!--
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/product_categories.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_product_categories.bundle.css') }}">
|
||||
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}"> <!-- {{ model.FLAG_CONTAINER }} -->
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_IS_NOT_EMPTY }}">
|
||||
{{ model.form_filters.is_not_empty.label }}
|
||||
{{ model.form_filters.is_not_empty() }}
|
||||
{% for error in model.form_filters.is_not_empty.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_ACTIVE }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
|
||||
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr class="{{ model.FLAG_PRODUCT_CATEGORY }}">
|
||||
<th class="{{ model.FLAG_DISPLAY_ORDER }}">Display Order</th>
|
||||
<th class="{{ model.FLAG_CODE }}">Code</th>
|
||||
<th class="{{ model.FLAG_NAME }}">Name</th>
|
||||
<th class="{{ model.FLAG_DESCRIPTION }}">Description</th>
|
||||
<th class="{{ model.FLAG_ACCESS_LEVEL }}">Access Level Required</th>
|
||||
<th class="{{ model.FLAG_ACTIVE}}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for category in model.category_list.categories %}
|
||||
{% include 'components/store/_row_product_category.html' %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_product_category.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
var flagIsNotEmpty = "{{ model.FLAG_IS_NOT_EMPTY }}";
|
||||
var accessLevels = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.access_levels) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,137 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!--
|
||||
{ % set product = model.product %}
|
||||
{ % set permutation = product.get_permutation_selected() %}
|
||||
<script>console.log("test 1");</script>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/product_permutations.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_product_permutations.bundle.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.id_category.label }}
|
||||
{{ model.form_filters.id_category() }}
|
||||
{% for error in model.form_filters.id_category.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.id_product.label }}
|
||||
{{ model.form_filters.id_product() }}
|
||||
{% for error in model.form_filters.id_product.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.is_out_of_stock.label }}
|
||||
{{ model.form_filters.is_out_of_stock() }}
|
||||
{% for error in model.form_filters.is_out_of_stock.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.quantity_min.label }}
|
||||
{{ model.form_filters.quantity_min() }}
|
||||
{% for error in model.form_filters.quantity_min.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.quantity_max.label }}
|
||||
{{ model.form_filters.quantity_max() }}
|
||||
{% for error in model.form_filters.quantity_max.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="{{ model.FLAG_PRODUCT_CATEGORY }}">Category</th>
|
||||
<th class="{{ model.FLAG_PRODUCT }}">Product</th>
|
||||
<th class="{{ model.FLAG_PRODUCT_VARIATIONS }} {{ model.FLAG_COLLAPSED }}">Variations</th>
|
||||
<th class="{{ model.FLAG_DESCRIPTION }}">Description</th>
|
||||
<th class="{{ model.FLAG_QUANTITY_STOCK }}">Quantity Stock</th>
|
||||
<th class="{{ model.FLAG_QUANTITY_MIN }}">Quantity Min</th>
|
||||
<th class="{{ model.FLAG_QUANTITY_MAX }}">Quantity Max</th>
|
||||
<th class="{{ model.FLAG_COUNT_UNIT_MEASUREMENT_PER_QUANTITY_STEP }}">Quantity Step</th>
|
||||
<th class="{{ model.FLAG_UNIT_MEASUREMENT_QUANTITY }}">Unit</th>
|
||||
<th class="{{ model.FLAG_IS_SUBSCRIPTION }}">Subscription?</th>
|
||||
<th class="{{ model.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_RECURRENCE }}">Count Recurrence Interval</th>
|
||||
<th class="{{ model.FLAG_UNIT_MEASUREMENT_INTERVAL_RECURRENCE }}">Recurrence Interval</th>
|
||||
<th class="{{ model.FLAG_ID_STRIPE_PRODUCT }}">Stripe Product ID</th>
|
||||
<th class="{{ model.FLAG_DOES_EXPIRE_FASTER_ONCE_UNSEALED }}">Expires Faster Once Unsealed?</th>
|
||||
<th class="{{ model.FLAG_COUNT_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED }}">Count Interval Expiration Unsealed</th>
|
||||
<th class="{{ model.FLAG_UNIT_MEASUREMENT_INTERVAL_EXPIRATION_UNSEALED }}">Interval Expiration Unsealed</th>
|
||||
<th class="{{ model.FLAG_COST_LOCAL_VAT_EXCL }}">Cost Local VAT Excl.</th>
|
||||
<th class="{{ model.FLAG_COST_LOCAL_VAT_INCL }}">Cost Local VAT Incl.</th>
|
||||
<th class="{{ model.FLAG_CURRENCY_COST }}">Cost Currency</th>
|
||||
<th class="{{ model.FLAG_PROFIT_LOCAL_MIN }}">Profit Local Min</th>
|
||||
<th class="{{ model.FLAG_LATENCY_MANUFACTURE }}">Manufacturing Latency</th>
|
||||
<th class="{{ model.FLAG_ACTIVE }}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set units_measurement_dict = model.convert_list_objects_to_dict_json_by_attribute_key_default(model.units_measurement) | console_log %}
|
||||
{% set units_measurement_time_dict = model.convert_list_objects_to_dict_json_by_attribute_key_default(model.units_measurement_time) | console_log %}
|
||||
|
||||
{% set is_blank_row = False %}
|
||||
{% for category in model.category_list.categories %}
|
||||
{% for product in category.products %}
|
||||
{% for permutation in product.permutations %}
|
||||
{% include 'components/store/_row_product_permutation.html' %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_product_permutation.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
var currencies = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.currencies) | tojson | safe }};
|
||||
var products = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list.get_list_products()) | tojson | safe }};
|
||||
var productCategories = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.categories) | tojson | safe }};
|
||||
var productVariations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variations) | tojson | safe }};
|
||||
var productVariationTypes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variation_types) | tojson | safe }};
|
||||
var unitMeasurements = {{ units_measurement_dict | tojson | safe }};
|
||||
var unitMeasurementsTime = {{ units_measurement_time_dict | tojson | safe }};
|
||||
var _rowBlankProductVariation = null;
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,65 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_product_variations.bundle.css') }}">
|
||||
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.is_not_empty.label }}
|
||||
{{ model.form_filters.is_not_empty() }}
|
||||
{% for error in model.form_filters.is_not_empty.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
|
||||
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr class="{{ model.FLAG_PRODUCT_VARIATION_TYPE }}">
|
||||
<th class="{{ model.FLAG_DISPLAY_ORDER }}">Display Order</th>
|
||||
<th class="{{ model.FLAG_CODE }}">Code</th>
|
||||
<th class="{{ model.FLAG_NAME }}">Name</th>
|
||||
<th class="{{ model.FLAG_NAME_PLURAL }}">Name Plural</th>
|
||||
<th class="{{ model.FLAG_PRODUCT_VARIATIONS }} {{ model.FLAG_COLLAPSED }}">Variations</th>
|
||||
<th class="{{ model.FLAG_ACTIVE}}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for variation_type in model.variation_types %}
|
||||
{% include 'components/store/_row_product_variation_type.html' %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_product_variation_type.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
var productVariationTypes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variation_types) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,83 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!--
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/products.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_products.bundle.css') }}">
|
||||
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}"> <!-- {{ model.FLAG_CONTAINER }} -->
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.id_category.label }}
|
||||
{{ model.form_filters.id_category() }}
|
||||
{% for error in model.form_filters.id_category.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.is_not_empty.label }}
|
||||
{{ model.form_filters.is_not_empty() }}
|
||||
{% for error in model.form_filters.is_not_empty.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
|
||||
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr class="{{ model.FLAG_PRODUCT }}">
|
||||
<th class="{{ model.FLAG_DISPLAY_ORDER }}">Display Order</th>
|
||||
<th class="{{ model.FLAG_PRODUCT_CATEGORY }}">Category</th>
|
||||
<th class="{{ model.FLAG_NAME }}">Name</th>
|
||||
<th class="{{ model.FLAG_HAS_VARIATIONS }}">Has Variations?</th>
|
||||
<th class="{{ model.FLAG_ACCESS_LEVEL }}">Access Level Required</th>
|
||||
<th class="{{ model.FLAG_ACTIVE}}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for category in model.category_list.categories %}
|
||||
{% for product in category.products %}
|
||||
{% include 'components/store/_row_product.html' %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_product.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
var accessLevels = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.access_levels) | tojson | safe }};
|
||||
{# var products = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list.get_list_products()) | tojson | safe }}; #}
|
||||
var productCategories = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.categories) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,133 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<!--
|
||||
<script>console.log("test 1");</script>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/stock_items.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_stock_items.bundle.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}"> <!-- {{ model.FLAG_CONTAINER }} -->
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.id_category.label }}
|
||||
{{ model.form_filters.id_category() }}
|
||||
{% for error in model.form_filters.id_category.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.id_product.label }}
|
||||
{{ model.form_filters.id_product() }}
|
||||
{% for error in model.form_filters.id_product.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.is_out_of_stock.label }}
|
||||
{{ model.form_filters.is_out_of_stock() }}
|
||||
{% for error in model.form_filters.is_out_of_stock.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.quantity_min.label }}
|
||||
{{ model.form_filters.quantity_min() }}
|
||||
{% for error in model.form_filters.quantity_min.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }}">
|
||||
{{ model.form_filters.quantity_max.label }}
|
||||
{{ model.form_filters.quantity_max() }}
|
||||
{% for error in model.form_filters.quantity_max.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="{{ model.FLAG_PRODUCT_CATEGORY }}">Category</th>
|
||||
<th class="{{ model.FLAG_PRODUCT }}">Product</th>
|
||||
<th class="{{ model.FLAG_PRODUCT_VARIATIONS }} {{ model.FLAG_COLLAPSED }}">Variations</th>
|
||||
<th class="{{ model.FLAG_CURRENCY_COST }}">Currency</th>
|
||||
<th class="{{ model.FLAG_COST_UNIT_LOCAL_VAT_EXCL }}">Cost Local (VAT excl.)</th>
|
||||
<th class="{{ model.FLAG_COST_UNIT_LOCAL_VAT_INCL }}">Cost Local (VAT incl.)</th>
|
||||
<th class="{{ model.FLAG_DATE_PURCHASED}}">Date Purchased</th>
|
||||
<th class="{{ model.FLAG_DATE_RECEIVED }}">Date Received</th>
|
||||
<th class="{{ model.FLAG_STORAGE_LOCATION }}">Storage Location</th>
|
||||
<th class="{{ model.FLAG_IS_SEALED }}">Is Sealed</th>
|
||||
<th class="{{ model.FLAG_DATE_UNSEALED }}">Date Unsealed</th>
|
||||
<th class="{{ model.FLAG_DATE_EXPIRATION }}">Date Expiration</th>
|
||||
<th class="{{ model.FLAG_IS_CONSUMED }}">Is Consumed</th>
|
||||
<th class="{{ model.FLAG_DATE_CONSUMED }}">Date Consumed</th>
|
||||
<th class="{{ model.FLAG_ACTIVE }}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set date_time_now = model.format_date(datetime.now()) %}
|
||||
{% set is_blank_row = False %}
|
||||
{% for category in model.category_list.categories %}
|
||||
{% for product in category.products %}
|
||||
{% for permutation in product.permutations %}
|
||||
{% for stock_item in permutation.stock_items %}
|
||||
{% include 'components/store/_row_stock_item.html' %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_stock_item.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<!-- Include JavaScript -->
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
{#
|
||||
var dictListsProducts = {{ model.category_list.get_product_option_lists_by_category() | tojson | safe }};
|
||||
var listCategories = {{ model.category_list.to_category_option_list() | tojson | safe }};
|
||||
{{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list.categories) | tojson | safe }};
|
||||
var listProducts = {{ model.category_list.to_product_option_list() | tojson | safe }};
|
||||
#}
|
||||
|
||||
var currencies = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.currencies) | tojson | safe }};
|
||||
var plants = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.plants) | tojson | safe }};
|
||||
var products = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.get_list_products()) | tojson | safe }};
|
||||
var productCategories = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.categories) | tojson | safe }};
|
||||
var productVariations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variations) | tojson | safe }};
|
||||
var productVariationTypes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variation_types) | tojson | safe }};
|
||||
var storageLocations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.storage_locations) | tojson | safe }};
|
||||
{#
|
||||
var unitMeasurements = {{ units_measurement_dict | tojson | safe }};
|
||||
var unitMeasurementsTime = {{ units_measurement_time_dict | tojson | safe }};
|
||||
#}
|
||||
var unitMeasurements = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.units_measurement) | tojson | safe }};
|
||||
var unitMeasurementsTime = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.units_measurement_time) | tojson | safe }};
|
||||
var _rowBlankProductVariation = null;
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,117 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block title %}{{ model.title }}{% endblock %}
|
||||
|
||||
{% block page_body %}
|
||||
{% set supplier = model.supplier %}
|
||||
{% set block_id = 'styles' %}
|
||||
{% include 'layouts/_shared_store.html' %}
|
||||
<!--
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/sections/store.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/pages/store/supplier.css') }}">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_supplier.bundle.css') }}">
|
||||
|
||||
<!-- HTML content -->
|
||||
<div class="card">
|
||||
<form id="{{ model.ID_FORM_SUPPLIER }}" class="{{ model.FLAG_CONTAINER }}" action="{{ url_for('routes_store.supplier') }}" method="POST">
|
||||
<h2 class="label-title">Supplier</h2>
|
||||
{{ model.form.hidden_tag() }}
|
||||
<div class="card subcard">
|
||||
<div class="container-input">
|
||||
{{ model.form.name_company.label }}
|
||||
{{ model.form.name_company(size=100) }}
|
||||
{% for error in model.form.name_company.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card subcard">
|
||||
<h3>Contact</h3>
|
||||
<div class="container-input">
|
||||
{{ model.form.name_contact.label }}
|
||||
{{ model.form.name_contact(size=50) }}
|
||||
{% for error in model.form.name_contact.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.department_contact.label }}
|
||||
{{ model.form.department_contact(size=50) }}
|
||||
{% for error in model.form.department_contact.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.id_address.label }}
|
||||
{{ model.form.id_address() }}
|
||||
{% for error in model.form.id_address.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
<button id="{{ model.ID_BUTTON_ADD_SUPPLIER }}">Add new address</button>
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.phone_number.label }}
|
||||
{{ model.form.phone_number(size=20) }}
|
||||
{% for error in model.form.phone_number.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.fax.label }}
|
||||
{{ model.form.fax(size=20) }}
|
||||
{% for error in model.form.fax.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.email.label }}
|
||||
{{ model.form.email(size=254) }}
|
||||
{% for error in model.form.email.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.website.label }}
|
||||
{{ model.form.website(size=254) }}
|
||||
{% for error in model.form.website.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.id_currency.label }}
|
||||
{{ model.form.id_currency() }}
|
||||
{% for error in model.form.id_currency.errors %}
|
||||
<p class="{{ model.FLAG_ERROR }}">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.recaptcha() }}
|
||||
</div>
|
||||
<div class="container-input">
|
||||
{{ model.form.submit() }}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Include JavaScript
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
<script type="module" src="{{ url_for('static', filename='js/pages/store/supplier.js') }}"></script>
|
||||
-->
|
||||
|
||||
<!--
|
||||
<script>
|
||||
// pass arguments from model to JS
|
||||
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_SUPPLIERS }}";
|
||||
|
||||
/*
|
||||
// hookup elements
|
||||
$(document).ready(function() {
|
||||
console.log('Hooking up store supplier page...');
|
||||
hookupStorePageSupplier();
|
||||
});
|
||||
*/
|
||||
</script>
|
||||
-->
|
||||
{% endblock %}
|
||||
@@ -1,81 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_supplier_purchase_orders.bundle.css') }}">
|
||||
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_ACTIVE }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_DATE_FROM }}">
|
||||
{{ model.form_filters.date_from.label }}
|
||||
{{ model.form_filters.date_from() }}
|
||||
{% for error in model.form_filters.date_from.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_DATE_TO }}">
|
||||
{{ model.form_filters.date_to.label }}
|
||||
{{ model.form_filters.date_to() }}
|
||||
{% for error in model.form_filters.date_to.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
|
||||
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr class="{{ model.FLAG_SUPPLIER_PURCHASE_ORDER }}">
|
||||
<th class="{{ model.FLAG_SUPPLIER }}">Supplier</th>
|
||||
<th class="{{ model.FLAG_ORDER_ITEMS }} {{ model.FLAG_COLLAPSED }}">Items</th>
|
||||
<th class="{{ model.FLAG_CURRENCY }}">Currency</th>
|
||||
<th class="{{ model.FLAG_COST_TOTAL_LOCAL_VAT_EXCL }}">Cost Total VAT Excl.</th>
|
||||
<th class="{{ model.FLAG_COST_TOTAL_LOCAL_VAT_INCL }}">Cost Total VAT Incl.</th>
|
||||
<th class="{{ model.FLAG_ACTIVE}}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for order in model.supplier_purchase_orders %}
|
||||
{% include 'components/store/_row_supplier_purchase_order.html' %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_supplier_purchase_order.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
var currencies = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.currencies) | tojson | safe }};
|
||||
var products = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.get_list_products()) | tojson | safe }};
|
||||
var productCategories = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.category_list_filters.categories) | tojson | safe }};
|
||||
var productVariations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variations) | tojson | safe }};
|
||||
var productVariationTypes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.variation_types) | tojson | safe }};
|
||||
var supplierPurchaseOrders = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.supplier_purchase_orders) | tojson | safe }};
|
||||
var suppliers = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.suppliers) | tojson | safe }};
|
||||
var unitMeasurements = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.units_measurement) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -1,69 +0,0 @@
|
||||
{% extends 'layouts/layout.html' %}
|
||||
|
||||
{% block page_body %}
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/store_suppliers.bundle.css') }}">
|
||||
|
||||
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
{{ model.form_filters.hidden_tag() }}
|
||||
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
|
||||
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_ROW }} {{ model.FLAG_FILTER }} {{ model.FLAG_ACTIVE }}">
|
||||
{{ model.form_filters.active.label }}
|
||||
{{ model.form_filters.active() }}
|
||||
{% for error in model.form_filters.active.errors %}
|
||||
<p class="error">{{ error }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% set block_id = 'buttons_table_default' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</form>
|
||||
|
||||
|
||||
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
|
||||
<thead>
|
||||
<tr class="{{ model.FLAG_SUPPLIER }}">
|
||||
<th class="{{ model.FLAG_NAME_COMPANY }}">Company</th>
|
||||
<th class="{{ model.FLAG_NAME_CONTACT }}">Contact Name</th>
|
||||
<th class="{{ model.FLAG_DEPARTMENT_CONTACT }}">Contact Department</th>
|
||||
<th class="{{ model.FLAG_ADDRESS }} {{ model.FLAG_COLLAPSED }}">Address</th>
|
||||
<th class="{{ model.FLAG_PHONE_NUMBER }}">Phone Number</th>
|
||||
<th class="{{ model.FLAG_FAX }}">Fax Number</th>
|
||||
<th class="{{ model.FLAG_EMAIL }}">Email</th>
|
||||
<th class="{{ model.FLAG_WEBSITE }}">Website</th>
|
||||
<th class="{{ model.FLAG_CURRENCY }}">Currency</th>
|
||||
<th class="{{ model.FLAG_ACTIVE}}">
|
||||
{% set block_id = 'button_add' %}
|
||||
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set is_blank_row = False %}
|
||||
{% for supplier in model.suppliers %}
|
||||
{% include 'components/store/_row_supplier.html' %}
|
||||
{% endfor %}
|
||||
|
||||
{% set is_blank_row = True %}
|
||||
{% include 'components/store/_row_supplier.html' %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% include 'components/common/temporary/_overlay_confirm.html' %}
|
||||
{% include 'components/common/temporary/_overlay_error.html' %}
|
||||
|
||||
<script src="{{ url_for('routes_store.scripts_section_store') }}"></script>
|
||||
|
||||
<script>
|
||||
{#
|
||||
var addresses = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.addresses) | tojson | safe }};
|
||||
#}
|
||||
var currencies = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.currencies) | tojson | safe }};
|
||||
var flagDepartmentContact = "{{ model.FLAG_DEPARTMENT_CONTACT }}";
|
||||
var flagNameCompany = "{{ model.FLAG_NAME_COMPANY }}";
|
||||
var flagNameContact = "{{ model.FLAG_NAME_CONTACT }}";
|
||||
var regions = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.regions) | tojson | safe }};
|
||||
var supplierAddresses = {{ model.supplier_addresses | tojson | safe }};
|
||||
var suppliers = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.suppliers) | tojson | safe }};
|
||||
</script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user