[NEW] Addons creation - product_rental_bookings

This commit is contained in:
Stéphan Sainléger
2022-04-19 11:54:03 +02:00
parent 73749bcfb6
commit 8e2973526a
55 changed files with 10183 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record model="ir.ui.view" id="inherit_account_move_form">
<field name="name">Account Move Inherit</field>
<field name="inherit_id" ref="account.view_move_form"/>
<field name="model">account.move</field>
<field name="arch" type="xml">
<field name="team_id" position="after">
<field name="contract_id" invisible="1"/>
<field name="is_hours" invisible="1"/>
<field name="is_days" invisible="1"/>
</field>
<xpath expr="//page/field[@name='invoice_line_ids']/tree/field[@name='quantity']"
position="before">
<field name="enter_hour" attrs="{'column_invisible':[('parent.is_hours', '=', False)]}"/>
<field name="enter_days" attrs="{'column_invisible':[('parent.is_days', '=', False)]}"/>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<template id="assets_backend" name="rental_delivery_sign assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/product_rental_bookings/static/src/js/fabric.min.js" />
<script type="text/javascript" src="/product_rental_bookings/static/src/js/product_contract_sign.js" />
<link rel="stylesheet" href="/product_rental_bookings/static/src/css/backend.css" id="pos-stylesheet" />
</xpath>
</template>
<template id="fullcalender_assests_backend" name="rental_fullcalender" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/product_rental_bookings/static/src/css/fullcalendar.css" />
<link rel="stylesheet" href="/product_rental_bookings/static/src/css/scheduler.css" />
<link rel="stylesheet" href="/product_rental_bookings/static/src/css/scheduler.min.css" />
<script type="text/javascript" src="/product_rental_bookings/static/src/js/lib/fullcalendar.js" />
<script type="text/javascript" src="/product_rental_bookings/static/src/js/lib/scheduler.js" />
<script type="text/javascript" src="/product_rental_bookings/static/src/js/product_booking_calender.js" />
</xpath>
</template>
</data>
</odoo>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- ROOT -->
<menuitem id="rental_product_main_menu" name="Rental" web_icon="product_rental_bookings/static/description/book_product.png/" />
<!-- QUICK SEARCH -->
<menuitem id="feet_product_quick_booking_menu" name="Quick Search" parent="rental_product_main_menu" sequence="0" action="action_product_quick_product_booking" />
<!-- PRODUCTS -->
<menuitem id="product_product_product" name="Product" parent="rental_product_main_menu" sequence="1" action="product.product_normal_action_sell" />
<!-- BOOKING -->
<menuitem id="rental_product_booking_menu" name="Rental" parent="rental_product_main_menu" sequence="2" />
<menuitem id="product_order_menu" name="Rental Orders" parent="rental_product_booking_menu" sequence="0" action="action_product_order_id" />
<menuitem id="feet_product_contract_sub_menu" name="Rental Contracts" parent="rental_product_booking_menu" sequence="1" action="action_rental_product_contract" />
<menuitem id="feet_product_calender_booking_menu" name="Rental Bookings" parent="rental_product_booking_menu" sequence="2" action="action_product_calender_product_booking1" />
<menuitem id="feet_product_logs_menu" name="Rental Logs" parent="rental_product_booking_menu" sequence="3" action="action_rental_product_logs" />
<!-- INVENTORY -->
<menuitem id="rental_product_inventory_menu" name="Inventory" parent="rental_product_main_menu" sequence="3" />
<menuitem id="stock_inventory_sub_menu" name="Stock inventory" parent="rental_product_inventory_menu" sequence="1" action="stock.action_view_quants" />
<!-- ANALYSIS -->
<menuitem id="rental_product_analysis" name="Analysis" parent="rental_product_main_menu" sequence="5" />
<menuitem id="product_rental_order_analysis" name="Rental Orders" parent="rental_product_analysis" action="action_rental_order_analysis" sequence="2" />
<menuitem id="feet_product_logs_analysis" name="Rental Log" parent="rental_product_analysis" action="action_rental_product_logs_analysis" />
<!-- SETTINGS -->
<menuitem id="product_configuration_menu" name="Configuration" parent="rental_product_main_menu" sequence="10" />
<menuitem id="rental_product_branch_menu" name="Operation" parent="product_configuration_menu" />
<menuitem id="menu_operation_type" name="Operations Types" parent="rental_product_branch_menu" action="action_picking_type_list" sequence="4" />
<menuitem id="rental_menu_configuration" name="Settings" parent="product_configuration_menu" sequence="0" action="rental_config_settings_action" groups="base.group_system" />
<menuitem id="menu_session_config" name="Session Configuration" parent="product_configuration_menu" action="action_session_config" sequence="4" />
</data>
</odoo>

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="action_product_calender_product_booking1" model="ir.actions.client">
<field name="name">Product Rental Booking</field>
<field name="tag">resource_view_new</field>
</record>
<record id="product_booking_id" model="ir.ui.view">
<field name="name">product booking</field>
<field name="model">product.booking</field>
<field name="arch" type="xml">
<form string="product product Booking">
<header>
<button name="search_product" string="Search" type="object" class="oe_highlight" />
<button name="book_product" string="Create" type="object" class="oe_highlight" attrs="{'invisible':[('is_search','=',False)]}" />
</header>
<sheet>
<field name="book_number" invisible="True" />
<group col="4">
<field name="price_based" />
<field name="session_id" attrs="{'invisible':[('price_based','!=','per_session')], 'required':[('price_based','=','per_session')]}" />
</group>
<group col="4" attrs="{'invisible':[('price_based','!=','per_session')]}">
<field name="from_date" required="1" string="Date" />
<field name="to_date" invisible="1" />
</group>
<group col="4" attrs="{'invisible':[('price_based','=','per_session')]}">
<field name="from_date" required="1" />
<field name="to_date" attrs="{'required':[('price_based','!=','per_session')]}" />
</group>
<group col="4">
<field name="location_id" required="1" domain="[('usage', '=', 'internal')]" />
<field name="categ_id" required="1" />
<field name="is_search" invisible="1" />
</group>
<notebook attrs="{'invisible':[('is_search','=',False)]}">
<page name="product_details" string="Product Details">
<field name="product_line_ids">
<tree editable="bottom">
<field name="name" />
<field name="categ_id" />
<field name="currency_id" invisible="1" />
<field name="rental_qyt" />
<field name="rental_amount" widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'column_invisible':[('parent.price_based','!=','per_day')]}" />
<field name="rental_amount_per_hour" widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'column_invisible':[('parent.price_based','!=','per_hour')]}" />
<field name="rental_amount_per_session" widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'column_invisible':[('parent.price_based','!=','per_session')]}" />
<field name="taxes_id" widget="many2many_tags" />
<field name="selected_product" />
</tree>
</field>
</page>
</notebook>
<group>
<group>
<group>
<field name="total_days" attrs="{'invisible':['|',('is_search','=',False),('price_based', '!=', 'per_day')]}" />
<field name="total_hours" widget="float_time" attrs="{'invisible':['|',('is_search','=',False),('price_based', '=', 'per_day')]}" />
</group>
</group>
<group>
<field name="currency_id" invisible="1" />
<field name="extra_charges" widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'invisible':[('is_search','=',False)]}" />
<field name="sub_total" widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'invisible':[('is_search','=',False)]}" readonly="1" />
<field name="total" widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'invisible':[('is_search','=',False)]}" readonly="1" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_product_quick_product_booking" model="ir.actions.act_window">
<field name="name">Product booking</field>
<field name="res_model">product.booking</field>
<field name="view_mode">form</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id='rental_product_contract_form' model="ir.ui.view">
<field name="name">Rental Contracts</field>
<field name="model">rental.product.contract</field>
<field name="arch" type="xml">
<form>
<header>
<button name="contract_close" states="open,expired,future" type="object" class="oe_highlight" string="Close Contract" />
<button name="send_product_contract" string="Send Contract by Email" type="object" class="oe_highlight" />
<button name="contract_open" states="closed" type="object" class="oe_highlight" string="Set
Contract In Progress" />
<button class="oe_highlight" name="act_renew_contract" type="object" string="Renew
Contract" help="Create a new contract automatically with
all the same informations except for the date that will
start at the end of current contract" attrs="{'invisible':[('state','!=','diesoon')]}" />
<button class="oe_highlight" name="create_invoice" type="object" string="Create invoice" attrs="{'invisible':[('first_invoice_created','=',True)]}" />
<button name="generate_policy" type="object" string="Generate Policy" invisible="1" />
<field name="state" widget="statusbar" />
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="name" placeholder="New" />
</h1>
</div>
<group>
<group col="2">
<field name="currency_id" invisible="1" />
<field name="partner_id" invisible="1" />
<field name="origin" string="Source Document" invisible="1" />
<field name="company_id" readonly="1" />
<field name="rental_id" invisible="1" />
<field name="picking_id" invisible="1" />
<field name="is_hours" invisible="1" />
<field name="is_days" invisible="1" />
</group>
<group>
<field name="contract_date" readonly="1" />
<field name="from_date" required="1" readonly="1" />
<field name="to_date" required="1" readonly="1" />
<field name="cost" invisible="1" />
<field name="account_type" invisible="1" />
<label for="cost_generated" invisible="1" />
<div>
<field name="cost_frequency" class="oe_inline" invisible="1" />
<field name="cost_generated" style="width:142px;" invisible="1" />
</div>
</group>
<group col="2">
<separator string="Payment Details" />
<field name="account_payment_term" readonly="1" />
<field name="first_invoice_created" invisible="1" />
</group>
</group>
<notebook>
<page string="Product Details" name="product_details">
<group>
<field name="attachment_ids" widget="many2many_binary" />
</group>
<group>
<field name="product_contract_lines_ids" nolabel="1">
<tree editable="bottom">
<field name="product_id" string="Product" domain="[('is_rental', '=', True)]" />
<field name="description" />
<field name="currency_id" invisible="1" />
<field name="price_based" />
<field name="enter_days" attrs="{'column_invisible':[('parent.is_days', '=', False)],
'invisible': [('price_based', '=', 'per_hour')]}" />
<field name="enter_hour" attrs="{'column_invisible':[('parent.is_hours', '=', False)],
'invisible': [('price_based', '=', 'per_day')]}" />
<field name="qty_needed" />
<field name="price" widget="monetary" options="{'currency_field': 'currency_id'}" />
<field name="tax_id" widget="many2many_tags" />
<field name="sub_total" widget="monetary" options="{'currency_field': 'currency_id'}" />
<field name="product_contract_id" invisible="1" />
</tree>
</field>
</group>
</page>
<page string="Recurring Invoice">
<field name="recurring_line" mode="tree" sum="recurring_amount">
<tree string="product Reccurring Lines" colors="#0b7a35:payment_info=='paid';#f20b07:payment_info!='paid'">
<field name="date_today" />
<field name="payment_info" />
<field name="recurring_amount" sum="recurring_amount" />
</tree>
</field>
<field name="sum_cost" invisible="1" />
</page>
<page string="Document">
<field name="document_ids" nolabel="1">
<tree editable="bottom">
<field name="name" />
<field name="id_number" />
<field name="contract_id" invisible="1" />
</tree>
</field>
</page>
<page string="Cancellation Policy">
<group>
<field name="number_of_slot" required="True" />
</group>
<field name="cancel_policy_ids" mode="tree">
<tree string="Cancellation Policy" editable="bottom" create="false" delete="false">
<field name="contract_id" invisible="1" />
<field name="from_date" />
<field name="to_date" />
<field name="policy_charged" />
</tree>
</field>
</page>
</notebook>
<group>
<group>
<label for="first_payment" />
<field name="first_payment" nolabel="1" widget='monetary' />
</group>
<group class="oe_subtotal_footer oe_right" colspan="2" name="sale_total">
<label for="untaxed_amount" />
<field name="untaxed_amount" nolabel="1" widget="monetary" options="{'currency_field': 'currency_id'}" />
<label for="taxes" />
<field name="taxes" nolabel="1" widget='monetary' />
<label for="extra_charges" />
<field name="extra_charges" readonly="1" nolabel="1" widget="monetary" options="{'currency_field': 'currency_id'}" />
<div class="oe_subtotal_footer_separator oe_inline o_td_label">
<label for="total_amount" />
</div>
<field name="total_amount" nolabel="1" class="oe_subtotal_footer_separator" widget="monetary" options="{'currency_field': 'currency_id'}" />
</group>
</group>
<group>
<field name="terms_condition" />
</group>
<group col="4">
<label for="signature_contractor" />
<div>
<field name="signature_contractor" widget="image" options="{'size': [90, 35]}" />
<button name="signature_contractor" string="Contractor Signature" class="oe_highlight" />
</div>
<label for="signature_customer" />
<div>
<field name="signature_customer" widget="image" options="{'size': [90, 35]}" />
<button name="signature_customer" string="Customer Signature" class="oe_highlight" />
</div>
</group>
</sheet>
</form>
</field>
</record>
<record id='rental_product_contract_tree' model='ir.ui.view'>
<field name="name">Rental Contracts</field>
<field name="model">rental.product.contract</field>
<field name="arch" type="xml">
<tree>
<field name="partner_id" />
<field name="from_date" />
<field name="to_date" />
<field name="state" />
</tree>
</field>
</record>
<record id='action_rental_product_contract' model='ir.actions.act_window'>
<field name="name">Rental Contracts</field>
<field name="res_model">rental.product.contract</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class='oe_view_nocontent_create'>Click to add Products Contract</p>
</field>
</record>
<record id='action_rental_product_contract_form' model='ir.actions.act_window'>
<field name="name">Rental Contracts</field>
<field name="res_model">rental.product.contract</field>
<field name="view_mode">form,tree</field>
<field name="help" type="html">
<p class='oe_view_nocontent_create'>Click to add Products Contract</p>
</field>
</record>
<record id="action_rental_contract_view_tree" model="ir.actions.act_window">
<field name="name">Contract</field>
<field name="res_model">rental.product.contract</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="rental_product_contract_tree" />
<field name="domain">[('state', 'not in', ['futur', 'closed'])]</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="rental_product_logs_form_id" model="ir.ui.view">
<field name="name">Product Logs</field>
<field name="model">rental.product.logs</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="product_id" />
<field name="customer_id" />
<field name="from_date" />
<field name="to_date" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="rental_product_logs_tree_id" model="ir.ui.view">
<field name="name">Product Logs</field>
<field name="model">rental.product.logs</field>
<field name="arch" type="xml">
<tree>
<field name="product_id" />
<field name="customer_id" />
<field name="from_date" />
<field name="to_date" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_product_logs_pivot">
<field name="name">Products Logs</field>
<field name="model">rental.product.logs</field>
<field name="arch" type="xml">
<pivot string="product Logs">
<field name="product_id" type="row" />
<field name="from_date" type="col" />
</pivot>
</field>
</record>
<record model="ir.ui.view" id="view_product_logs_graph">
<field name="name">Products Logs</field>
<field name="model">rental.product.logs</field>
<field name="arch" type="xml">
<graph string="product Logs">
<field name="product_id" type="row" />
<field name="from_date" type="col" />
</graph>
</field>
</record>
<record id="action_rental_product_logs" model="ir.actions.act_window">
<field name="name">Rental Logs</field>
<field name="res_model">rental.product.logs</field>
<field name="view_mode">tree,form</field>
</record>
<record id="action_rental_product_logs_analysis" model="ir.actions.act_window">
<field name="name">product Logs</field>
<field name="res_model">rental.product.logs</field>
<field name="view_mode">graph,pivot</field>
</record>
<record id="action_rental_product_move" model="ir.actions.act_window">
<field name="name">Rental Move</field>
<field name="res_model">stock.picking</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_undone': 1}</field>
<field name="domain">[('is_rental', '=', True)]</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="rental_product_operation_form_id" model="ir.ui.view">
<field name="name">Operation Type</field>
<field name="model">rental.product.operation</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_title">
<label class="oe_edit_only" for="name" string="Operation Type Name" />
<h1>
<field name="name" />
</h1>
</div>
<group>
<group>
<field name="rental_move_type" />
<field name="location_id" />
</group>
<group>
<field name="source_location" />
<field name="destination_location" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="rental_product_type_kanban" model="ir.ui.view">
<field name="name">rental.product.operation.kanban</field>
<field name="model">rental.product.operation</field>
<field name="arch" type="xml">
<kanban class="oe_background_grey o_kanban_dashboard o_emphasize_colors o_stock_kanban" create="0">
<field name="color" />
<field name="rental_move_type" />
<field name="state" />
<field name="count_operation_ready" />
<field name="count_operation_on_rent" />
<field name="count_operation_service" />
<templates>
<t t-name="kanban-box">
<div t-attf-class="#{kanban_color(record.color.raw_value)}">
<div>
<div t-attf-class="o_kanban_card_header">
<div class="o_kanban_card_header_title">
<div class="o_primary">
<field name="name" />
</div>
<div class="o_secondary">
<field class="o_secondary" name="location_id" />
</div>
</div>
<div class="o_kanban_manage_button_section">
<a class="o_kanban_manage_toggle_button" href="#">
<i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage" />
</a>
</div>
</div>
<div class="container o_kanban_card_content">
<div class="row">
<div class="col-xs-6 o_kanban_primary_left" style="margin-left: 16px;">
<button class="btn btn-primary" name="get_action_operation" type="object">
<span t-if="record.rental_move_type.raw_value =='outgoing'">
<t t-esc="record.count_operation_ready.value" />
Deliveries of Product
</span>
<span t-if="record.rental_move_type.raw_value =='incoming'">
<t t-esc="record.count_operation_on_rent.value" />
Incoming Products
</span>
<span t-if="record.rental_move_type.raw_value =='internal'">
<t t-esc="record.count_operation_service.value" />
Internal Moves
</span>
</button>
</div>
</div>
</div>
<div class="container o_kanban_card_manage_pane dropdown-menu" role="menu">
<div t-if="widget.editable" class="o_kanban_card_manage_settings row">
<div class="col-xs-8">
<ul class="oe_kanban_colorpicker" data-field="color" />
</div>
<div class="col-xs-4 text-right">
<a type="edit">Settings</a>
</div>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="rental_product_operation_tree_id" model="ir.ui.view">
<field name="name">Operation type</field>
<field name="model">rental.product.operation</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="location_id" />
<field name="rental_move_type" />
</tree>
</field>
</record>
<record id="action_picking_type_list" model="ir.actions.act_window">
<field name="name">Operation Type</field>
<field name="res_model">rental.product.operation</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Click to define a new transfer.</p>
</field>
</record>
<record id="action_product_operation_type" model="ir.actions.act_window">
<field name="name">Operation Type</field>
<field name="res_model">rental.product.operation</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">kanban,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Click to create a new operation type.</p>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,195 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="rental_product_order_search" model="ir.ui.view">
<field name="name">Rental Order</field>
<field name="model">rental.product.order</field>
<field name="arch" type="xml">
<search>
<field name="res_number" filter_domain="[('res_number','ilike',self)]" string="Order Number" />
<field name="customer_name" filter_domain="[('customer_name','ilike',self)]" string="Customer" />
</search>
</field>
</record>
<record id="rental_product_order_form_id" model="ir.ui.view">
<field name="name">Rental Order</field>
<field name="model">rental.product.order</field>
<field name="arch" type="xml">
<form string="product Order">
<header>
<field name="state" widget="statusbar" />
<button name="send_product_quote" string="Send by Email" type="object" class="oe_highlight" />
<button name="confirm" string="Confirm" type="object" class="oe_highlight" states="book,draft" />
<button name="cancel" string="Cancel" type="object" class="oe_highlight" attrs="{'invisible': [('state', 'in', ('cancel', 'close'))]}" />
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button type="object" class="oe_stat_button" icon="fa-truck" name="action_view_stock_pickings" invisible="1">
<div class="o_form_field o_stat_info">
<span class="o_stat_value">
<field name="picking_count" />
</span>
<span class="o_stat_text">Move</span>
</div>
</button>
<button type="object" class="oe_stat_button" icon="fa-pencil-square-o" name="action_view_order_invoices" attrs="{'invisible': [('invoice_count','=',0)]}">
<div class="o_form_field o_stat_info">
<span class="o_stat_value">
<field name="invoice_count" />
</span>
<span class="o_stat_text">Invoiced</span>
</div>
</button>
<button type="object" class="oe_stat_button" icon="fa-book" name="action_view_order_contract" attrs="{'invisible': [('contract_count','=',0)]}">
<div class="o_form_field o_stat_info">
<span class="o_stat_value">
<field name="contract_count" />
</span>
<span class="o_stat_text">Contract</span>
</div>
</button>
</div>
<div class="oe_title">
<h1>
<field name="res_number" placeholder="New" />
</h1>
</div>
<group col="4">
<field name="customer_name" required="1" />
<field name="book_date" />
<field name="from_date" required="1" readonly="1" />
<field name="to_date" required="1" readonly="1" />
<field name="start_date" invisible="1" />
<field name="end_date" invisible="1" />
<field name="is_agreement" invisible="1" />
<field name="account_payment_term" />
<field name="location_id" invisible="1" />
<field name="company_id" invisible="1" />
<field name="count" invisible="1" />
<field name="is_true" invisible="1" />
<field name="pricelist_id" invisible="1" />
<field name="return_date" invisible="1" />
<field name="currency_id" invisible="1" />
<field name="is_hours" invisible="1" />
<field name="is_days" invisible="1" />
</group>
<group>
<group col="2"></group>
<group col="2"></group>
</group>
<notebook>
<page name="rental_order" string="Rental Order">
<field name="product_order_lines_ids" readonly="1">
<tree editable="bottom">
<field name="product_id" string="Product" context="{'from_date':parent.from_date, 'to_date':parent.to_date, 'from_product_order': True}" domain="[('is_rental', '=', True)]" />
<field name="name" />
<field name="product_order_id" invisible="1" />
<field name="price_based" />
<field name="enter_days" attrs="{'column_invisible':[('parent.is_days', '=', False)],'invisible': [('price_based', '=', 'per_hour')]}" />
<field name="enter_hour" attrs="{'column_invisible':[('parent.is_hours', '=', False)],'invisible': [('price_based', '=', 'per_day')]}" />
<field name="qty_needed" />
<field name="currency_id" invisible="1" />
<field name="price" widget="monetary" options="{'currency_field': 'currency_id'}" />
<field name="tax_id" widget="many2many_tags" />
<field name="sub_total" widget="monetary" options="{'currency_field': 'currency_id'}" />
</tree>
</field>
<group class="oe_subtotal_footer oe_right" colspan="2" name="sale_total">
<label for="untaxed_amount" widget="monetary" options="{'currency_field': 'currency_id'}" />
<field name="untaxed_amount" nolabel="1" widget='monetary' />
<label for="taxes" />
<field name="taxes" nolabel="1" widget='monetary' />
<label for="extra_charges" widget="monetary" options="{'currency_field': 'currency_id'}" />
<field name="extra_charges" nolabel="1" widget="monetary" options="{'currency_field': 'currency_id'}" />
<div class="oe_subtotal_footer_separator oe_inline o_td_label">
<label for="total_amount" widget="monetary" options="{'currency_field': 'currency_id'}" />
</div>
<field name="total_amount" nolabel="1" class="oe_subtotal_footer_separator" widget='monetary' />
</group>
<group>
<field name="terms_condition" />
</group>
</page>
<page name="other_info" string="Other Information">
<group>
<group>
<field name="user_id" />
<field name="invoice_status" />
</group>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="rental_product_driver_schedule" model="ir.ui.view">
<field name="name">Rental Order</field>
<field name="model">rental.product.order</field>
<field name="arch" type="xml">
<tree decoration-muted="state=='cancel'" decoration-info="state=='draft'" decoration-success="state=='confirm'">
<field name="customer_name" />
<field name="res_number" />
<field name="from_date" />
<field name="to_date" />
<field name="state" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_product_rental_order_pivot">
<field name="name">rental.order.pivot</field>
<field name="model">rental.product.order</field>
<field name="arch" type="xml">
<pivot string="Rental Orders">
<field name="customer_name" type="row" />
<field name="count" interval="month" type="col" />
<field name="total_amount" type="measure" />
</pivot>
</field>
</record>
<record model="ir.ui.view" id="view_product_rental_order_graph">
<field name="name">rental.order.graph</field>
<field name="model">rental.product.order</field>
<field name="arch" type="xml">
<graph string="Rental Orders">
<field name="customer_name" type="row" />
<field name="total_amount" type="col" />
</graph>
</field>
</record>
<record id="action_product_order_id" model="ir.actions.act_window">
<field name="name">Rental Order</field>
<field name="res_model">rental.product.order</field>
<field name="view_mode">tree,form,calendar</field>
<field name="context">{'search_default_undone': 1}</field>
</record>
<record id="action_product_order_id_new" model="ir.actions.act_window">
<field name="name">Rental Order</field>
<field name="res_model">rental.product.order</field>
<field name="view_mode">form,tree</field>
</record>
<record id="action_rental_order_analysis" model="ir.actions.act_window">
<field name="name">Rental Order</field>
<field name="res_model">rental.product.order</field>
<field name="view_mode">graph,pivot</field>
</record>
<record id="product_booking_calendar" model="ir.ui.view">
<field name="name">Rental order</field>
<field name="model">rental.product.order</field>
<field name="arch" type="xml">
<calendar string="product" date_start="from_date" date_stop="to_date" event_open_popup="true" quick_add="false" form_view_id="%(product_rental_bookings.action_product_order_id)s" event_limit="3" color="customer_name" mode="month">
<field name="customer_name" />
</calendar>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="product_normal_form_view_inherit" model="ir.ui.view">
<field name="name">Product Variant</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='purchase_ok']/parent::div" position="after">
<div>
<field name="is_rental" />
<label for="is_rental" />
</div>
</xpath>
<xpath expr="//field[@name='uom_po_id']" position="after">
<field name="rental_amount" widget="monetary" options="{'currency_field': 'currency_id'}" />
<field name="rental_amount_per_hour" widget="monetary" options="{'currency_field': 'currency_id'}" />
<field name="rental_amount_per_session" widget="monetary" options="{'currency_field': 'currency_id'}" />
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<record id="rental_res_config_settings_form_inherit" model="ir.ui.view">
<field name="name">res.config.settings.from</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="//div[hasclass('settings')]" position="inside">
<div class="app_settings_block" data-string="Rental" string="Rental" data-key="product_rental_bookings">
<h2>Rental Configuration</h2>
<div class="row o_settings_container mt16">
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_right_pane">
<div class="content-group">
<div class="row mt16">
<label for="enabled_day_rent" class="col-md-3 o_light_label" style="font-weight:bold;" />
<field name="enabled_day_rent" />
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_right_pane">
<div class="content-group">
<div class="row mt16">
<label for="enabled_hour_rent" class="col-md-3 o_light_label" style="font-weight:bold;" />
<field name="enabled_hour_rent" />
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_right_pane">
<div class="content-group">
<div class="row mt16">
<label for="enabled_session_rent" class="col-md-3 o_light_label" style="font-weight:bold;" />
<field name="enabled_session_rent" />
</div>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
<record id="rental_config_settings_action" model="ir.actions.act_window">
<field name="name">Settings</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.config.settings</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
<field name="context">{'module' : 'product_rental_bookings', 'bin_size': False}</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="rental_view_order_form" model="ir.ui.view">
<field name="name">sale.order.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="signature" widget="image" options="{'always_reload': True, 'size': [90, 90]}" />
</field>
</field>
</record>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.delivery</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="sale.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[@class='app_settings_block']" position="inside">
<h2>Signature</h2>
<div class="row mt16 o_settings_container">
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="signature" />
</div>
<div class="o_setting_right_pane">
<label for="signature" />
<div class="text-muted">
Required signature before confirm sale order.
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="sequence_product_information" model="ir.sequence">
<field name="name">product Contract</field>
<field name="code">product_contract</field>
<field name="prefix">L</field>
<field name="padding">3</field>
<field name="suffix">/%(month)s/%(day)s</field>
<field name="company_id" eval="False" />
</record>
<record id="sequence_product_registration" model="ir.sequence">
<field name="name">product Registration</field>
<field name="code">product_registration</field>
<field name="prefix">REG</field>
<field name="padding">3</field>
<field name="suffix">/%(month)s/%(day)s</field>
<field name="company_id" eval="False" />
</record>
<record id="sequence_product_move" model="ir.sequence">
<field name="name">product Move</field>
<field name="code">product_move</field>
<field name="prefix">PM</field>
<field name="padding">3</field>
<field name="suffix">/%(month)s/%(day)s</field>
<field name="company_id" eval="False" />
</record>
<record id="sequence_quick_search" model="ir.sequence">
<field name="name">product Search</field>
<field name="code">product_booking</field>
<field name="prefix">QS</field>
<field name="padding">3</field>
<field name="suffix">%(day)s</field>
<field name="company_id" eval="False" />
</record>
<record id="sequence_calender_record" model="ir.sequence">
<field name="name">Full Calender</field>
<field name="code">virtual_</field>
<field name="padding">3</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id='session_config_form' model="ir.ui.view">
<field name="name">Session Configuration Form</field>
<field name="model">session.config</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name" required="1"/>
</group>
</group>
<group col="4">
<group>
<field name="start_time" widget="float_time"/>
</group>
<group>
<field name="end_time" widget="float_time"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id='session_config_tree' model="ir.ui.view">
<field name="name">Session Configuration Tree</field>
<field name="model">session.config</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="start_time" widget="float_time"/>
<field name="end_time" widget="float_time"/>
</tree>
</field>
</record>
<record id='action_session_config' model='ir.actions.act_window'>
<field name="name">Session Configuration</field>
<field name="res_model">session.config</field>
<field name="view_mode">tree,form</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="stock_picking_form_inherit" model="ir.ui.view">
<field name="name">view.picking.form.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='action_confirm']" position="after">
<button name="incoming" attrs="{'invisible': [('state', 'in', ['draft', 'waiting', 'assigned', 'done', 'cancel'])]}" string="Receive" type="object" class="oe_highlight" states="on_rent" />
<button name="delivery" attrs="{'invisible': [('state', 'in', ['waiting', 'confirmed', 'assigned', 'done', 'cancel'])]}" string="Delivery" type="object" class="oe_highlight" groups="base.group_user" />
<button name="move" attrs="{'invisible': [('state', 'in', ['draft','waiting', 'confirmed', 'done', 'cancel'])]}" string="Move to Store" type="object" class="oe_highlight" />
</xpath>
<xpath expr="//field[@name='partner_id']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='move_ids_without_package']/tree/field[@name='product_id']" position="after">
<field name="products_checked" />
</xpath>
<xpath expr="//field[@name='origin']" position="after">
<field name="rental_move_type" invisible="1" />
<field name="is_rental" invisible="1" />
</xpath>
<xpath expr="//field[@name='origin']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
</field>
</record>
</data>
</odoo>