mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
472 lines
23 KiB
XML
472 lines
23 KiB
XML
<?xml version="1.0" ?>
|
|
<odoo>
|
|
<record id="massive_changes_wizard" model="ir.ui.view">
|
|
<field name="name">Availability Wizard</field>
|
|
<field name="model">pms.massive.changes.wizard</field>
|
|
<field name="arch" type="xml">
|
|
<form class="pt-1">
|
|
<group>
|
|
<field name="massive_changes_on" invisible="1" />
|
|
<field name="avail_readonly" invisible="1" />
|
|
<field name="pricelist_readonly" invisible="1" />
|
|
</group>
|
|
<div class="row">
|
|
<div class="col-6">
|
|
<group>
|
|
<field
|
|
name="start_date"
|
|
widget="daterange"
|
|
options="{'related_end_date': 'end_date'}"
|
|
/>
|
|
<field
|
|
name="end_date"
|
|
widget="daterange"
|
|
options="{'related_start_date': 'start_date'}"
|
|
/>
|
|
<field
|
|
name="massive_changes_on"
|
|
attrs="{'invisible':['|', ('avail_readonly','=',True), ('pricelist_readonly', '=', True)]}"
|
|
/>
|
|
</group>
|
|
</div>
|
|
<div class="col-6">
|
|
<group class="">
|
|
<field name="pms_property_ids" widget="many2many_tags" />
|
|
<field
|
|
name="availability_plan_ids"
|
|
class="mr-5"
|
|
string="Availability Plan"
|
|
widget="many2many_tags"
|
|
options="{'no_create': True,'no_open': True}"
|
|
attrs="{'invisible':['|','|',('massive_changes_on','=','pricelist'), ('avail_readonly','=',True),
|
|
('pricelist_readonly', '=', True)],
|
|
'required': [('massive_changes_on','=','availability_plan')]}"
|
|
domain="['|', ('pms_property_ids', '=', False), ('pms_property_ids', 'in', pms_property_ids)]"
|
|
/>
|
|
|
|
<field
|
|
name="pricelist_ids"
|
|
string="Pricelist"
|
|
widget="many2many_tags"
|
|
options="{'no_create': True,'no_open': True}"
|
|
attrs="{'invisible':['|','|',('massive_changes_on','=','availability_plan'),
|
|
('pricelist_readonly','=',True), ('pricelist_readonly', '=', True)],
|
|
'required': [('massive_changes_on','=','pricelist')]}"
|
|
domain="[('id', 'in', allowed_pricelist_ids), '|', ('pms_property_ids', '=', False), ('pms_property_ids', 'in', pms_property_ids)]"
|
|
/>
|
|
<field
|
|
name="room_type_ids"
|
|
default_focus="1"
|
|
widget="many2many_tags"
|
|
options="{'no_create': True,'no_open': True}"
|
|
/>
|
|
</group>
|
|
|
|
</div>
|
|
</div>
|
|
<field name="allowed_pricelist_ids" invisible="1" />
|
|
<b>Days:</b>
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<table class="table table-bordered text-center">
|
|
<thead>
|
|
<tr>
|
|
<th>All days</th>
|
|
<th>Sunday</th>
|
|
<th>Monday</th>
|
|
<th>Tuesday</th>
|
|
<th>Wednesday</th>
|
|
<th>Thursday</th>
|
|
<th>Friday</th>
|
|
<th>Saturday</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<field
|
|
name="apply_on_all_week"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</td>
|
|
<td>
|
|
<field
|
|
name="apply_on_sunday"
|
|
widget="boolean_toggle"
|
|
attrs="{'invisible':[('apply_on_all_week','=',True)]}"
|
|
/>
|
|
</td>
|
|
<td>
|
|
<field
|
|
name="apply_on_monday"
|
|
widget="boolean_toggle"
|
|
attrs="{'invisible':[('apply_on_all_week','=',True)]}"
|
|
/>
|
|
</td>
|
|
<td>
|
|
<field
|
|
name="apply_on_tuesday"
|
|
widget="boolean_toggle"
|
|
attrs="{'invisible':[('apply_on_all_week','=',True)]}"
|
|
/>
|
|
</td>
|
|
<td>
|
|
<field
|
|
name="apply_on_wednesday"
|
|
widget="boolean_toggle"
|
|
attrs="{'invisible':[('apply_on_all_week','=',True)]}"
|
|
/>
|
|
</td>
|
|
<td>
|
|
<field
|
|
name="apply_on_thursday"
|
|
widget="boolean_toggle"
|
|
attrs="{'invisible':[('apply_on_all_week','=',True)]}"
|
|
/>
|
|
</td>
|
|
<td>
|
|
<field
|
|
name="apply_on_friday"
|
|
widget="boolean_toggle"
|
|
attrs="{'invisible':[('apply_on_all_week','=',True)]}"
|
|
/>
|
|
</td>
|
|
<td>
|
|
<field
|
|
name="apply_on_saturday"
|
|
widget="boolean_toggle"
|
|
attrs="{'invisible':[('apply_on_all_week','=',True)]}"
|
|
/>
|
|
</td>
|
|
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<span attrs="{'invisible':[('massive_changes_on','=','pricelist')]}">
|
|
<b>Rules to apply:</b>
|
|
<div class="row">
|
|
<div class="col-4 pr-0">
|
|
<div class="border h-100 pt-2 px-2">
|
|
<div class="row">
|
|
<div class="col-2">
|
|
<field
|
|
name="apply_min_stay"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-6">
|
|
<label for="min_stay" />
|
|
</div>
|
|
<div class="col-4">
|
|
<field
|
|
name="min_stay"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('apply_min_stay','=',False)], 'required':[('apply_min_stay','=',True)]}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-5 pr-0">
|
|
<div class="border h-100 pt-2 px-2 ">
|
|
<div class="row">
|
|
<div class="col-2">
|
|
<field
|
|
name="apply_min_stay_arrival"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-6">
|
|
<label for="min_stay_arrival" />
|
|
</div>
|
|
<div class="col-4">
|
|
<field
|
|
name="min_stay_arrival"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('apply_min_stay_arrival','=',False)],'required':[('apply_min_stay_arrival','=',True)]}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-3">
|
|
<div class="border h-100 pt-2 px-2">
|
|
<div class="row">
|
|
<div class="col-3">
|
|
<field
|
|
name="apply_closed"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-9">
|
|
<field
|
|
name="closed"
|
|
attrs="{'readonly':[('apply_closed','=',False)]}"
|
|
/>
|
|
<label for="closed" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row pt-3">
|
|
<div class="col-4 pr-0">
|
|
<div class="border h-100 pt-2 px-2 ">
|
|
<div class="row">
|
|
<div class="col-2">
|
|
<field
|
|
name="apply_max_stay"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-6">
|
|
<label for="max_stay" />
|
|
</div>
|
|
<div class="col-4">
|
|
<field
|
|
name="max_stay"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('apply_max_stay','=',False)], 'required':[('apply_max_stay','=',True)]}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-5 pr-0">
|
|
<div class="border h-100 pt-2 px-2 ">
|
|
<div class="row">
|
|
<div class="col-2">
|
|
<field
|
|
name="apply_max_stay_arrival"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-6">
|
|
<label for="max_stay_arrival" />
|
|
</div>
|
|
<div class="col-4">
|
|
<field
|
|
name="max_stay_arrival"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('apply_max_stay_arrival','=',False)], 'required':[('apply_max_stay_arrival','=',True)]}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-3">
|
|
<div class="border h-100 pt-2 px-2">
|
|
<div class="row">
|
|
<div class="col-3">
|
|
<field
|
|
name="apply_closed_arrival"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-9">
|
|
<field
|
|
name="closed_arrival"
|
|
attrs="{'readonly':[('apply_closed_arrival','=',False)]}"
|
|
/>
|
|
<label for="closed_arrival" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row pt-4">
|
|
<div class="col-4 pr-0">
|
|
<div class="border h-100 pt-2 px-2 ">
|
|
<div class="row">
|
|
<div class="col-2">
|
|
<field name="apply_quota" widget="boolean_toggle" />
|
|
</div>
|
|
<div class="col-6">
|
|
<label for="quota" />
|
|
</div>
|
|
<div class="col-4">
|
|
<field
|
|
name="quota"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('apply_quota','=',False)], 'required':[('apply_quota','=',True)]}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-5 pr-0">
|
|
<div class="border h-100 pt-2 px-2">
|
|
<div class="row">
|
|
<div class="col-2">
|
|
<field
|
|
name="apply_max_avail"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-6">
|
|
<label for="max_avail" />
|
|
</div>
|
|
<div class="col-4">
|
|
<field
|
|
name="max_avail"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('apply_max_avail','=',False)],'required':[('apply_max_avail','=',True)]}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-3">
|
|
<div class="border h-100 pt-2 px-2">
|
|
<div class="row">
|
|
<div class="col-3">
|
|
<field
|
|
name="apply_closed_departure"
|
|
widget="boolean_toggle"
|
|
/>
|
|
</div>
|
|
<div class="col-9">
|
|
<field
|
|
name="closed_departure"
|
|
attrs="{'readonly':[('apply_closed_departure','=',False)]}"
|
|
/>
|
|
<label for="closed_departure" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</span>
|
|
<br />
|
|
<div
|
|
attrs="{'invisible':[('massive_changes_on','=','availability_plan')]}"
|
|
>
|
|
<div class="col-4">
|
|
<group>
|
|
<field name="price" />
|
|
<!-- REVIEW 'min_quantity'-->
|
|
<!--<field name="min_quantity" />-->
|
|
</group>
|
|
</div>
|
|
</div>
|
|
<b
|
|
attrs="{'invisible':[('massive_changes_on','=','pricelist')]}"
|
|
class="mt-5"
|
|
>
|
|
<span style="text-decoration:underline;">
|
|
<field name="num_rules_to_overwrite" />
|
|
</span>
|
|
availability rules
|
|
<u>will be overwritten:</u>
|
|
</b>
|
|
|
|
<b
|
|
attrs="{'invisible':[('massive_changes_on','=','availability_plan')]}"
|
|
>
|
|
<span style="text-decoration:underline;">
|
|
<field name="num_pricelist_items_to_overwrite" />
|
|
|
|
</span>
|
|
pricelist items
|
|
<u>will be overwritten:</u>
|
|
</b>
|
|
<field
|
|
name="rules_to_overwrite"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('massive_changes_on','=','pricelist')]}"
|
|
>
|
|
<tree>
|
|
<field name="date" />
|
|
<field name="room_type_id" />
|
|
<field
|
|
name="quota"
|
|
attrs="{'column_invisible':[('parent.apply_quota', '==', False)]}"
|
|
/>
|
|
<field
|
|
name="max_avail"
|
|
attrs="{'column_invisible':[('parent.apply_max_avail', '==', False)]}"
|
|
/>
|
|
<field
|
|
name="min_stay"
|
|
attrs="{'column_invisible':[('parent.apply_min_stay', '==', False)]}"
|
|
/>
|
|
|
|
<field
|
|
name="max_stay"
|
|
attrs="{'column_invisible':[('parent.apply_max_stay', '==', False)]}"
|
|
/>
|
|
|
|
<field
|
|
name="min_stay_arrival"
|
|
attrs="{'column_invisible':[('parent.apply_min_stay_arrival', '==', False)]}"
|
|
/>
|
|
|
|
<field
|
|
name="max_stay_arrival"
|
|
attrs="{'column_invisible':[('parent.apply_max_stay_arrival', '==', False)]}"
|
|
/>
|
|
|
|
<field
|
|
name="closed"
|
|
attrs="{'column_invisible':[('parent.apply_closed', '==', False)]}"
|
|
/>
|
|
|
|
<field
|
|
name="closed_arrival"
|
|
attrs="{'column_invisible':[('parent.apply_closed_arrival', '==', False)]}"
|
|
/>
|
|
<field
|
|
name="closed_departure"
|
|
attrs="{'column_invisible':[('parent.apply_closed_departure', '==', False)]}"
|
|
/>
|
|
</tree>
|
|
</field>
|
|
<field
|
|
name="pricelist_items_to_overwrite"
|
|
nolabel="1"
|
|
attrs="{'invisible':[('massive_changes_on','=','availability_plan')]}"
|
|
>
|
|
<tree>
|
|
<field name="pricelist_id" />
|
|
<field string="Applicable on" name="name" />
|
|
<field name="date_start_overnight" />
|
|
<field name="date_end_overnight" />
|
|
<field name="price" />
|
|
</tree>
|
|
</field>
|
|
<footer>
|
|
<button
|
|
name="apply_massive_changes"
|
|
string="Apply changes"
|
|
type="object"
|
|
class="btn-primary"
|
|
/>
|
|
or
|
|
<button
|
|
string="Cancel"
|
|
class="btn-default border"
|
|
special="cancel"
|
|
/>
|
|
</footer>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
<record id="action_wizard_massive_changes" model="ir.actions.act_window">
|
|
<field name="name">Massive changes on Pricelist & Availability Plans</field>
|
|
<field name="type">ir.actions.act_window</field>
|
|
<field name="res_model">pms.massive.changes.wizard</field>
|
|
<field name="view_id" ref="massive_changes_wizard" />
|
|
<field name="view_mode">form</field>
|
|
<field name="target">new</field>
|
|
</record>
|
|
<menuitem
|
|
name="Massive Changes"
|
|
id="menu_pms_room_massive_changes_wizard"
|
|
action="action_wizard_massive_changes"
|
|
sequence="75"
|
|
parent="pms.revenue_management_menu"
|
|
/>
|
|
</odoo>
|