88 lines
4.7 KiB
XML
88 lines
4.7 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data>
|
|
<!-- Add Uber Delivery buttons to the Sale Order form (website/backend orders) -->
|
|
<record id="view_sale_order_form_inherit_uber" model="ir.ui.view">
|
|
<field name="name">sale.order.form.inherit.uber</field>
|
|
<field name="model">sale.order</field>
|
|
<field name="inherit_id" ref="sale.view_order_form"/>
|
|
<field name="arch" type="xml">
|
|
|
|
<!-- Hidden Uber fields for visibility conditions -->
|
|
<xpath expr="//header" position="inside">
|
|
<field name="is_uber_order" invisible="1"/>
|
|
<field name="uber_delivery_id" invisible="1"/>
|
|
<field name="uber_tracking_url" invisible="1"/>
|
|
<field name="uber_status" invisible="1"/>
|
|
<field name="uber_alert_triggered" invisible="1"/>
|
|
|
|
<!-- Request Uber Delivery -->
|
|
<button name="action_request_uber_delivery"
|
|
string="🛵 Request Uber Delivery"
|
|
type="object"
|
|
invisible="(uber_delivery_id != False and uber_status not in ['cancelled', False]) or state == 'cancel'"
|
|
class="oe_highlight"/>
|
|
|
|
<!-- Track Driver -->
|
|
<button name="action_view_uber_map"
|
|
string="📍 Track Driver"
|
|
type="object"
|
|
invisible="not uber_tracking_url or uber_status in ['delivered', 'cancelled']"
|
|
class="btn-primary"/>
|
|
|
|
<!-- Sync Status -->
|
|
<button name="action_sync_uber_status"
|
|
string="🔄 Sync Uber Status"
|
|
type="object"
|
|
invisible="not uber_delivery_id or uber_status in ['delivered', 'cancelled']"
|
|
class="btn-secondary"/>
|
|
|
|
<!-- Cancel Uber -->
|
|
<button name="action_cancel_uber_delivery"
|
|
string="Cancel Uber Delivery"
|
|
type="object"
|
|
invisible="not uber_delivery_id or uber_status in ['delivered', 'cancelled']"
|
|
class="btn-danger"/>
|
|
</xpath>
|
|
|
|
<!-- Alert banners below header -->
|
|
<xpath expr="//header" position="after">
|
|
<div class="alert alert-danger mb-0" role="alert"
|
|
invisible="not uber_alert_triggered or uber_status != 'pending'">
|
|
🚨 <strong>Attention!</strong> Driver not assigned for over 15 minutes. Please check Uber Dashboard.
|
|
</div>
|
|
<div class="alert alert-success m-0 p-2 text-center" role="alert"
|
|
invisible="uber_status != 'delivered'"
|
|
style="font-weight:bold;background-color:#d1e7dd;color:#0f5132;">
|
|
<i class="fa fa-check-circle me-2"/> ORDER DELIVERED SUCCESSFULLY BY UBER
|
|
</div>
|
|
</xpath>
|
|
|
|
<!-- Uber status ribbon -->
|
|
<xpath expr="//sheet" position="inside">
|
|
<widget name="web_ribbon" title="Delivered" bg_color="text-bg-success"
|
|
invisible="uber_status != 'delivered'"/>
|
|
<widget name="web_ribbon" title="Cancelled" bg_color="text-bg-danger"
|
|
invisible="uber_status != 'cancelled'"/>
|
|
</xpath>
|
|
|
|
<!-- Uber info fields after order reference -->
|
|
<xpath expr="//field[@name='name']" position="after">
|
|
<field name="uber_status" readonly="1"
|
|
invisible="not is_uber_order"
|
|
decoration-info="uber_status == 'pending'"
|
|
decoration-warning="uber_status in ['pickup', 'delivering']"
|
|
decoration-success="uber_status == 'delivered'"
|
|
decoration-danger="uber_status == 'cancelled'"
|
|
widget="badge"/>
|
|
<field name="uber_delivery_id" readonly="1" invisible="not uber_delivery_id"/>
|
|
<field name="uber_eta" readonly="1" invisible="not uber_eta" string="Est. Delivery"/>
|
|
<field name="uber_delivery_fee" readonly="1" invisible="not uber_delivery_fee"
|
|
widget="monetary" options="{"currency_field": "currency_id"}"/>
|
|
</xpath>
|
|
|
|
</field>
|
|
</record>
|
|
</data>
|
|
</odoo>
|