forked from alaguraj/odoo-testing-addons
Add Dine360 Chennora theme, implement self-order menu with delivery options, and update Docker compose configurations.
This commit is contained in:
parent
471b09861c
commit
a93ef83f92
@ -88,11 +88,11 @@
|
|||||||
<div t-if="not table" class="p-4 bg-light border-top">
|
<div t-if="not table" class="p-4 bg-light border-top">
|
||||||
<h6 class="fw-bold mb-3">Service Type</h6>
|
<h6 class="fw-bold mb-3">Service Type</h6>
|
||||||
<div class="d-flex gap-2">
|
<div class="d-flex gap-2">
|
||||||
<label class="flex-fill border p-3 rounded-3 text-center cursor-pointer service-select active" data-mode="pickup">
|
<label t-attf-class="flex-fill border p-3 rounded-3 text-center cursor-pointer service-select active {{'w-100' if not website.enable_delivery_option else ''}}" data-mode="pickup">
|
||||||
<input type="radio" name="fulfilment" value="pickup" checked="checked" class="d-none"/>
|
<input type="radio" name="fulfilment" value="pickup" checked="checked" class="d-none"/>
|
||||||
<i class="fa fa-shopping-basket mb-2 d-block"/> Pickup
|
<i class="fa fa-shopping-basket mb-2 d-block"/> Pickup
|
||||||
</label>
|
</label>
|
||||||
<label class="flex-fill border p-3 rounded-3 text-center cursor-pointer service-select" data-mode="delivery">
|
<label class="flex-fill border p-3 rounded-3 text-center cursor-pointer service-select" data-mode="delivery" t-if="website.enable_delivery_option">
|
||||||
<input type="radio" name="fulfilment" value="delivery" class="d-none"/>
|
<input type="radio" name="fulfilment" value="delivery" class="d-none"/>
|
||||||
<i class="fa fa-truck mb-2 d-block"/> Delivery
|
<i class="fa fa-truck mb-2 d-block"/> Delivery
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
'views/product_views.xml', # Product Form custom fields
|
'views/product_views.xml', # Product Form custom fields
|
||||||
'views/snippets.xml', # Custom Building Blocks
|
'views/snippets.xml', # Custom Building Blocks
|
||||||
'views/options.xml', # Options for snippets (if any)
|
'views/options.xml', # Options for snippets (if any)
|
||||||
|
'views/res_config_settings_views.xml', # Backend Settings
|
||||||
'data/website_data.xml', # Data for creating pages
|
'data/website_data.xml', # Data for creating pages
|
||||||
],
|
],
|
||||||
'assets': {
|
'assets': {
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from . import product_template
|
from . import product_template
|
||||||
from . import blog_post
|
from . import blog_post
|
||||||
|
from . import website
|
||||||
|
from . import res_config_settings
|
||||||
|
|||||||
11
addons/dine360_theme_chennora/models/res_config_settings.py
Normal file
11
addons/dine360_theme_chennora/models/res_config_settings.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
class ResConfigSettings(models.TransientModel):
|
||||||
|
_inherit = 'res.config.settings'
|
||||||
|
|
||||||
|
enable_delivery_option = fields.Boolean(
|
||||||
|
related='website_id.enable_delivery_option',
|
||||||
|
readonly=False,
|
||||||
|
string='Enable Delivery Option'
|
||||||
|
)
|
||||||
11
addons/dine360_theme_chennora/models/website.py
Normal file
11
addons/dine360_theme_chennora/models/website.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
class Website(models.Model):
|
||||||
|
_inherit = 'website'
|
||||||
|
|
||||||
|
enable_delivery_option = fields.Boolean(
|
||||||
|
string='Enable Delivery Option',
|
||||||
|
default=True,
|
||||||
|
help='If disabled, customers will not see the Delivery option on the checkout page.'
|
||||||
|
)
|
||||||
@ -95,8 +95,8 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div class="row align-items-center justify-content-center">
|
<div class="row align-items-center justify-content-center">
|
||||||
<div class="col-md-6 mb-3 mb-md-0">
|
<div class="col-md-6 mb-3 mb-md-0" t-if="website.enable_delivery_option">
|
||||||
<input type="radio" name="delivery_method_switch" id="method_delivery" class="d-none order-type-input" value="delivery" checked="checked"/>
|
<input type="radio" name="delivery_method_switch" id="method_delivery" class="d-none order-type-input" value="delivery" t-att-checked="'checked' if website.enable_delivery_option else False"/>
|
||||||
<label for="method_delivery" class="order-type-card w-100 m-0">
|
<label for="method_delivery" class="order-type-card w-100 m-0">
|
||||||
<div class="order-type-icon">
|
<div class="order-type-icon">
|
||||||
<i class="fa fa-truck"></i>
|
<i class="fa fa-truck"></i>
|
||||||
@ -107,8 +107,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div t-attf-class="{{'col-md-6' if website.enable_delivery_option else 'col-md-12'}}">
|
||||||
<input type="radio" name="delivery_method_switch" id="method_pickup" class="d-none order-type-input" value="pickup"/>
|
<input type="radio" name="delivery_method_switch" id="method_pickup" class="d-none order-type-input" value="pickup" t-att-checked="'checked' if not website.enable_delivery_option else False"/>
|
||||||
<label for="method_pickup" class="order-type-card w-100 m-0">
|
<label for="method_pickup" class="order-type-card w-100 m-0">
|
||||||
<div class="order-type-icon">
|
<div class="order-type-icon">
|
||||||
<i class="fa fa-shopping-bag"></i>
|
<i class="fa fa-shopping-bag"></i>
|
||||||
@ -192,21 +192,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeDelivery && typePickup) {
|
if (typePickup) {
|
||||||
typeDelivery.addEventListener('change', applyMethod);
|
if (typeDelivery) typeDelivery.addEventListener('change', applyMethod);
|
||||||
typePickup.addEventListener('change', applyMethod);
|
typePickup.addEventListener('change', applyMethod);
|
||||||
|
|
||||||
// Remember state if validation fails
|
// Remember state if validation fails
|
||||||
const savedMethod = sessionStorage.getItem('chennora_checkout_method');
|
const savedMethod = sessionStorage.getItem('chennora_checkout_method');
|
||||||
if (savedMethod === 'pickup') {
|
if (savedMethod === 'pickup') {
|
||||||
typePickup.checked = true;
|
typePickup.checked = true;
|
||||||
|
} else if (!typeDelivery) {
|
||||||
|
// Force pickup if delivery is disabled by admin
|
||||||
|
typePickup.checked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initial run
|
// Initial run
|
||||||
applyMethod();
|
applyMethod();
|
||||||
|
|
||||||
typePickup.addEventListener('change', () => sessionStorage.setItem('chennora_checkout_method', 'pickup'));
|
typePickup.addEventListener('change', () => sessionStorage.setItem('chennora_checkout_method', 'pickup'));
|
||||||
typeDelivery.addEventListener('change', () => sessionStorage.setItem('chennora_checkout_method', 'delivery'));
|
if (typeDelivery) typeDelivery.addEventListener('change', () => sessionStorage.setItem('chennora_checkout_method', 'delivery'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record id="res_config_settings_view_form_inherit_chennora" model="ir.ui.view">
|
||||||
|
<field name="name">res.config.settings.view.form.inherit.chennora</field>
|
||||||
|
<field name="model">res.config.settings</field>
|
||||||
|
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//block[@id='website_info_settings']" position="inside">
|
||||||
|
<setting string="Delivery Option" help="Enable/Disable Delivery option during checkout">
|
||||||
|
<field name="enable_delivery_option"/>
|
||||||
|
</setting>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
Loading…
x
Reference in New Issue
Block a user