299 lines
19 KiB
XML
299 lines
19 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<template id="apps_page_template" name="Dine360 Apps Marketplace Page">
|
|
<t t-call="dine360_dashboard.dashboard_layout">
|
|
<t t-set="active_page" t-value="'apps'"/>
|
|
|
|
<!-- Page Title & Header -->
|
|
<section class="o_page_header">
|
|
<div>
|
|
<h1 class="o_heading_title">Apps</h1>
|
|
<p class="o_heading_subtitle">Integrated Dine360 ecosystem suite, specialized restaurant modules, and third-party channels</p>
|
|
</div>
|
|
<div class="o_header_controls">
|
|
<div class="o_status_tag">
|
|
<span class="o_green_dot"/>
|
|
<span>Ecosystem: All Services Operational</span>
|
|
</div>
|
|
<a href="/web#action=base.open_module_tree" class="o_btn_white_small py-2 px-3">
|
|
<i class="fa fa-cubes me-1"/> Odoo App Store
|
|
</a>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Row 1: KPI Summary Cards -->
|
|
<section class="o_kpi_grid mb-4">
|
|
<!-- KPI 1: Active Modules -->
|
|
<div class="o_kpi_card">
|
|
<div class="o_kpi_top">
|
|
<div class="o_kpi_icon_box bg-red-light text-danger">
|
|
<i class="fa fa-th-large fs-5"/>
|
|
</div>
|
|
<span class="o_kpi_trend text-danger">Active</span>
|
|
</div>
|
|
<div class="o_kpi_label">Dine360 Modules</div>
|
|
<div class="o_kpi_number">9 Modules</div>
|
|
<div class="o_kpi_footer">
|
|
<span class="o_kpi_sub">Installed & licensed</span>
|
|
<svg class="o_sparkline" viewBox="0 0 100 30" preserveAspectRatio="none">
|
|
<path d="M0 25 Q20 20 50 18 T100 10" fill="none" stroke="#ef4444" stroke-width="2.5" stroke-linecap="round"/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- KPI 2: Service Channels -->
|
|
<div class="o_kpi_card">
|
|
<div class="o_kpi_top">
|
|
<div class="o_kpi_icon_box bg-green-light text-success">
|
|
<i class="fa fa-globe fs-5"/>
|
|
</div>
|
|
<span class="o_kpi_trend text-success">Connected</span>
|
|
</div>
|
|
<div class="o_kpi_label">Connected Channels</div>
|
|
<div class="o_kpi_number">4 Channels</div>
|
|
<div class="o_kpi_footer">
|
|
<span class="o_kpi_sub">POS, Web, WhatsApp, Uber</span>
|
|
<svg class="o_sparkline" viewBox="0 0 100 30" preserveAspectRatio="none">
|
|
<path d="M0 20 Q30 15 60 22 T100 5" fill="none" stroke="#16a34a" stroke-width="2.5" stroke-linecap="round"/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- KPI 3: Hardware Printers -->
|
|
<div class="o_kpi_card">
|
|
<div class="o_kpi_top">
|
|
<div class="o_kpi_icon_box bg-amber-light text-warning">
|
|
<i class="fa fa-print fs-5"/>
|
|
</div>
|
|
<span class="o_kpi_trend text-warning">Ready</span>
|
|
</div>
|
|
<div class="o_kpi_label">Hardware Devices</div>
|
|
<div class="o_kpi_number">Thermal KOT</div>
|
|
<div class="o_kpi_footer">
|
|
<span class="o_kpi_sub">QZ tray driver synced</span>
|
|
<svg class="o_sparkline" viewBox="0 0 100 30" preserveAspectRatio="none">
|
|
<path d="M0 15 Q40 25 70 18 T100 12" fill="none" stroke="#f59e0b" stroke-width="2.5" stroke-linecap="round"/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- KPI 4: System Health -->
|
|
<div class="o_kpi_card">
|
|
<div class="o_kpi_top">
|
|
<div class="o_kpi_icon_box bg-slate-light text-primary">
|
|
<i class="fa fa-shield fs-5"/>
|
|
</div>
|
|
<span class="o_kpi_trend text-primary">100% OK</span>
|
|
</div>
|
|
<div class="o_kpi_label">Platform Health</div>
|
|
<div class="o_kpi_number">Optimal</div>
|
|
<div class="o_kpi_footer">
|
|
<span class="o_kpi_sub">Zero reported downtimes</span>
|
|
<svg class="o_sparkline" viewBox="0 0 100 30" preserveAspectRatio="none">
|
|
<path d="M0 25 Q30 20 60 15 T100 8" fill="none" stroke="#3b82f6" stroke-width="2.5" stroke-linecap="round"/>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Row 2: Filter Toolbar -->
|
|
<div class="o_page_toolbar">
|
|
<div class="o_filter_pills">
|
|
<div class="o_filter_pill active" data-filter="all">All Modules (9)</div>
|
|
<div class="o_filter_pill" data-filter="operations">Restaurant Operations</div>
|
|
<div class="o_filter_pill" data-filter="delivery">Online & Delivery</div>
|
|
<div class="o_filter_pill" data-filter="saas">SaaS Management</div>
|
|
</div>
|
|
|
|
<div class="o_toolbar_search">
|
|
<i class="fa fa-search text-muted"/>
|
|
<input type="text" class="o_toolbar_search_input" placeholder="Search applications or connectors..."/>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Row 3: Apps Grid -->
|
|
<div class="row g-4 mb-4">
|
|
<!-- App 1: SaaS Master -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="saas">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#fee2e2; color:#e50000;">
|
|
<i class="fa fa-server"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Active</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Dine360 SaaS Engine</h4>
|
|
<p class="o_settings_desc mb-3">Multi-tenant automated restaurant provisioning, isolated PostgreSQL database management, and subscription lifecycles.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Core SaaS</span>
|
|
<a href="/dashboard/restaurants" class="o_link_red fw-bold small">Manage Tenants →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 2: Table Reservations -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="operations">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#dbeafe; color:#2563eb;">
|
|
<i class="fa fa-calendar"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Installed</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Table Reservations</h4>
|
|
<p class="o_settings_desc mb-3">Advance table booking calendar, guest dining occasions, automated WhatsApp booking confirmation notifications, and peak hours.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Front of House</span>
|
|
<a href="/dashboard/reservations" class="o_link_red fw-bold small">Open Bookings →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 3: Table & Floor Manager -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="operations">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#fef3c7; color:#d97706;">
|
|
<i class="fa fa-th"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Installed</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Floor & Table Management</h4>
|
|
<p class="o_settings_desc mb-3">Visual dining floor plan matrix, seating occupancy tracking, live availability toggle, and POS table synchronization.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Floors</span>
|
|
<a href="/dashboard/tables" class="o_link_red fw-bold small">View Floors →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 4: Point of Sale -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="operations">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#dcfce7; color:#16a34a;">
|
|
<i class="fa fa-desktop"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Online</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Point of Sale (POS)</h4>
|
|
<p class="o_settings_desc mb-3">Ultra-fast touch screen cashier and waiter terminal, offline mode resilience, split billing, table transfers, and payment gateways.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Terminal</span>
|
|
<a href="/pos/web" target="_blank" class="o_link_red fw-bold small">Launch POS →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 5: Kitchen Display System (KDS) -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="operations">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#fce7f3; color:#db2777;">
|
|
<i class="fa fa-cutlery"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Installed</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Kitchen Display (KDS)</h4>
|
|
<p class="o_settings_desc mb-3">Paperless live order ticket monitor for chefs and kitchen stations with order prep timers and bump bar completion status.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Kitchen</span>
|
|
<a href="/dashboard/kds" class="o_link_red fw-bold small">Open KDS Screen →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 6: Online Orders & Storefront -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="delivery">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#e0e7ff; color:#4f46e5;">
|
|
<i class="fa fa-shopping-bag"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Live</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Online Ordering Storefront</h4>
|
|
<p class="o_settings_desc mb-3">Direct-to-consumer restaurant website and mobile digital menu ordering with checkout, dine-in QR codes, and home delivery.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Web Store</span>
|
|
<a href="/shop" target="_blank" class="o_link_red fw-bold small">View Storefront →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 7: Uber Eats & Direct -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="delivery">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#f1f5f9; color:#0f172a;">
|
|
<i class="fa fa-motorcycle"/>
|
|
</div>
|
|
<span class="o_badge_status info"><span class="o_badge_dot"/> Connected</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Uber Direct Integration</h4>
|
|
<p class="o_settings_desc mb-3">Automated on-demand courier dispatch, live GPS delivery tracking, and two-way integration with Uber Eats restaurant catalog.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Delivery API</span>
|
|
<a href="/dashboard/settings" class="o_link_red fw-bold small">Configure API →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 8: Recipe & Ingredient Control -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="operations">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#ffedd5; color:#ea580c;">
|
|
<i class="fa fa-book"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Active</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Recipe & Inventory</h4>
|
|
<p class="o_settings_desc mb-3">Bill of materials recipe costing, automatic raw ingredient deduction upon order completion, and low stock threshold alerts.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Inventory</span>
|
|
<a href="/web#action=stock.stock_picking_type_action" class="o_link_red fw-bold small">Stock Control →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- App 9: QZ Thermal Network Printer -->
|
|
<div class="col-lg-4 col-md-6" data-search-item="true" data-filter-item="true" data-status="operations">
|
|
<div class="o_settings_card h-100 d-flex flex-column justify-content-between">
|
|
<div>
|
|
<div class="d-flex align-items-start justify-content-between mb-3">
|
|
<div class="o_settings_icon" style="background:#f3e8ff; color:#9333ea;">
|
|
<i class="fa fa-print"/>
|
|
</div>
|
|
<span class="o_badge_status success"><span class="o_badge_dot"/> Ready</span>
|
|
</div>
|
|
<h4 class="o_settings_title fs-5 mb-2">Thermal QZ Network Printer</h4>
|
|
<p class="o_settings_desc mb-3">Direct silent hardware printing of kitchen slips (KOT), customer thermal receipts, and bar drink orders via QZ Tray.</p>
|
|
</div>
|
|
<div class="d-flex align-items-center justify-content-between pt-3 border-top">
|
|
<span class="badge bg-light text-muted border">Hardware</span>
|
|
<a href="/dashboard/settings" class="o_link_red fw-bold small">Printer Setup →</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</template>
|
|
</odoo>
|