mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP] Invoice Contact Folio Form
This commit is contained in:
@@ -34,6 +34,20 @@ class HotelFolio(models.Model):
|
|||||||
def _compute_qty_delivered_updateable(self):
|
def _compute_qty_delivered_updateable(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _default_diff_invoicing(self):
|
||||||
|
"""
|
||||||
|
If the guest has an invoicing address set,
|
||||||
|
this method return diff_invoicing = True, else, return False
|
||||||
|
"""
|
||||||
|
if 'folio_id' in self.env.context:
|
||||||
|
folio = self.env['hotel.folio'].browse([
|
||||||
|
self.env.context['folio_id']
|
||||||
|
])
|
||||||
|
if folio.partner_id.id == folio.partner_invoice_id.id:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
@api.depends('state', 'room_lines.invoice_status', 'service_ids.invoice_status')
|
@api.depends('state', 'room_lines.invoice_status', 'service_ids.invoice_status')
|
||||||
def _get_invoiced(self):
|
def _get_invoiced(self):
|
||||||
"""
|
"""
|
||||||
@@ -211,7 +225,20 @@ class HotelFolio(models.Model):
|
|||||||
string='Invoice Address', required=True,
|
string='Invoice Address', required=True,
|
||||||
states={'done': [('readonly', True)]},
|
states={'done': [('readonly', True)]},
|
||||||
help="Invoice address for current sales order.")
|
help="Invoice address for current sales order.")
|
||||||
|
partner_invoice_vat = fields.Char(related="partner_invoice_id.vat")
|
||||||
|
partner_invoice_name = fields.Char(related="partner_invoice_id.name")
|
||||||
|
partner_invoice_street = fields.Char(related="partner_invoice_id.street")
|
||||||
|
partner_invoice_street2 = fields.Char(related="partner_invoice_id.street")
|
||||||
|
partner_invoice_zip = fields.Char(related="partner_invoice_id.zip")
|
||||||
|
partner_invoice_city = fields.Char(related="partner_invoice_id.city")
|
||||||
|
partner_invoice_state_id = fields.Many2one(related="partner_invoice_id.state_id")
|
||||||
|
partner_invoice_country_id = fields.Many2one(related="partner_invoice_id.country_id")
|
||||||
|
partner_invoice_email = fields.Char(related="partner_invoice_id.email")
|
||||||
|
partner_invoice_lang = fields.Selection(related="partner_invoice_id.lang")
|
||||||
|
partner_invoice_type = fields.Selection(related="partner_invoice_id.type")
|
||||||
|
partner_invoice_parent_id = fields.Many2one(related="partner_invoice_id.parent_id")
|
||||||
fiscal_position_id = fields.Many2one('account.fiscal.position', oldname='fiscal_position', string='Fiscal Position')
|
fiscal_position_id = fields.Many2one('account.fiscal.position', oldname='fiscal_position', string='Fiscal Position')
|
||||||
|
partner_diff_invoicing = fields.Boolean('Bill to another Address', default='_default_diff_invoicing')
|
||||||
|
|
||||||
#WorkFlow Mail Fields-----------------------------------------------
|
#WorkFlow Mail Fields-----------------------------------------------
|
||||||
has_confirmed_reservations_to_send = fields.Boolean(
|
has_confirmed_reservations_to_send = fields.Boolean(
|
||||||
@@ -446,18 +473,20 @@ class HotelFolio(models.Model):
|
|||||||
'partner_invoice_id': False,
|
'partner_invoice_id': False,
|
||||||
'payment_term_id': False,
|
'payment_term_id': False,
|
||||||
'fiscal_position_id': False,
|
'fiscal_position_id': False,
|
||||||
|
'partner_diff_invoicing': False,
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
|
||||||
addr = self.partner_id.address_get(['invoice'])
|
addr = self.partner_id.address_get(['invoice'])
|
||||||
pricelist = self.partner_id.property_product_pricelist and \
|
pricelist = self.partner_id.property_product_pricelist and \
|
||||||
self.partner_id.property_product_pricelist.id or \
|
self.partner_id.property_product_pricelist.id or \
|
||||||
self.env['ir.default'].sudo().get('res.config.settings', 'default_pricelist_id')
|
self.env['ir.default'].sudo().get('res.config.settings', 'default_pricelist_id')
|
||||||
values = {
|
values = {
|
||||||
'pricelist_id': pricelist,
|
'pricelist_id': pricelist,
|
||||||
'payment_term_id': self.partner_id.property_payment_term_id and self.partner_id.property_payment_term_id.id or False,
|
'payment_term_id': self.partner_id.property_payment_term_id and self.partner_id.property_payment_term_id.id or False,
|
||||||
'partner_invoice_id': addr['invoice'],
|
'partner_invoice_id': addr['invoice'],
|
||||||
'user_id': self.partner_id.user_id.id or self.env.uid
|
'user_id': self.partner_id.user_id.id or self.env.uid,
|
||||||
|
'partner_diff_invoicing': False if self.partner_id.id == addr['invoice'] else True
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.env['ir.config_parameter'].sudo().get_param('sale.use_sale_note') and \
|
if self.env['ir.config_parameter'].sudo().get_param('sale.use_sale_note') and \
|
||||||
@@ -477,6 +506,20 @@ class HotelFolio(models.Model):
|
|||||||
self.reservation_type)}
|
self.reservation_type)}
|
||||||
self.update(values)
|
self.update(values)
|
||||||
|
|
||||||
|
@api.onchange('partner_diff_invoicing')
|
||||||
|
def onchange_partner_diff_invoicing(self):
|
||||||
|
if self.partner_diff_invoicing == False:
|
||||||
|
self.update({'partner_invoice_id': self.partner_id.id})
|
||||||
|
elif self.partner_id == self.partner_invoice_id:
|
||||||
|
self.update({'partner_invoice_id': self.partner_id.address_get(['invoice'])['invoice'] or None})
|
||||||
|
|
||||||
|
@api.onchange('partner_invoice_id')
|
||||||
|
def onchange_partner_invoice_id(self):
|
||||||
|
if self.partner_invoice_id and not self.partner_invoice_id.parent_id and \
|
||||||
|
self.partner_invoice_id != self.partner_id:
|
||||||
|
self.update({
|
||||||
|
'partner_invoice_parent_id': self.partner_id.id,
|
||||||
|
'partner_invoice_type': 'invoice'})
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def calcule_reservation_type(self, is_staff, current_type):
|
def calcule_reservation_type(self, is_staff, current_type):
|
||||||
|
|||||||
@@ -191,6 +191,17 @@ class HotelReservation(models.Model):
|
|||||||
required=True, track_visibility='onchange')
|
required=True, track_visibility='onchange')
|
||||||
|
|
||||||
partner_id = fields.Many2one(related='folio_id.partner_id')
|
partner_id = fields.Many2one(related='folio_id.partner_id')
|
||||||
|
partner_invoice_id = fields.Many2one(related='folio_id.partner_invoice_id')
|
||||||
|
partner_invoice_vat = fields.Char(related="partner_invoice_id.vat")
|
||||||
|
partner_invoice_name = fields.Char(related="partner_invoice_id.name")
|
||||||
|
partner_invoice_street = fields.Char(related="partner_invoice_id.street")
|
||||||
|
partner_invoice_street2 = fields.Char(related="partner_invoice_id.street")
|
||||||
|
partner_invoice_zip = fields.Char(related="partner_invoice_id.zip")
|
||||||
|
partner_invoice_city = fields.Char(related="partner_invoice_id.city")
|
||||||
|
partner_invoice_state_id = fields.Many2one(related="partner_invoice_id.state_id")
|
||||||
|
partner_invoice_country_id = fields.Many2one(related="partner_invoice_id.country_id")
|
||||||
|
partner_invoice_email = fields.Char(related="partner_invoice_id.email")
|
||||||
|
partner_invoice_lang = fields.Selection(related="partner_invoice_id.lang")
|
||||||
closure_reason_id = fields.Many2one(related='folio_id.closure_reason_id')
|
closure_reason_id = fields.Many2one(related='folio_id.closure_reason_id')
|
||||||
company_id = fields.Many2one(related='folio_id.company_id', string='Company', store=True, readonly=True)
|
company_id = fields.Many2one(related='folio_id.company_id', string='Company', store=True, readonly=True)
|
||||||
reservation_line_ids = fields.One2many('hotel.reservation.line',
|
reservation_line_ids = fields.One2many('hotel.reservation.line',
|
||||||
@@ -858,7 +869,7 @@ class HotelReservation(models.Model):
|
|||||||
def action_pay_reservation(self):
|
def action_pay_reservation(self):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
partner = self.partner_id.id
|
partner = self.partner_id.id
|
||||||
amount = min(self.amount_reservation, self.folio_pending_amount)
|
amount = min(self.price_room_services_set, self.folio_pending_amount)
|
||||||
note = self.folio_id.name + ' (' + self.name + ')'
|
note = self.folio_id.name + ' (' + self.name + ')'
|
||||||
view_id = self.env.ref('hotel.account_payment_view_form_folio').id
|
view_id = self.env.ref('hotel.account_payment_view_form_folio').id
|
||||||
return{
|
return{
|
||||||
|
|||||||
@@ -132,7 +132,6 @@
|
|||||||
<field name="email" placeholder="email"/>
|
<field name="email" placeholder="email"/>
|
||||||
<field name="mobile" placeholder="mobile"/>
|
<field name="mobile" placeholder="mobile"/>
|
||||||
<field name="phone" />
|
<field name="phone" />
|
||||||
<field name="partner_invoice_id" />
|
|
||||||
<field name="cancelled_reason" attrs="{'invisible':[('state','not in',('cancel'))]}"/>
|
<field name="cancelled_reason" attrs="{'invisible':[('state','not in',('cancel'))]}"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
@@ -150,31 +149,79 @@
|
|||||||
<group>
|
<group>
|
||||||
<field name="internal_comment"/>
|
<field name="internal_comment"/>
|
||||||
</group>
|
</group>
|
||||||
|
<group colspan="2" class="oe_subtotal_footer oe_right">
|
||||||
|
<field name="amount_untaxed" sum="Untaxed amount" widget='monetary' />
|
||||||
|
<field name="amount_tax" widget='monetary' />
|
||||||
|
<div class="oe_subtotal_footer_separator oe_inline">
|
||||||
|
<label for="amount_total" />
|
||||||
|
</div>
|
||||||
|
<field name="amount_total" nolabel="1" sum="Total amount"
|
||||||
|
widget='monetary' />
|
||||||
|
</group>
|
||||||
|
<div class="oe_clear" />
|
||||||
|
<group>
|
||||||
|
<field name="note" />
|
||||||
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group invisible="1">
|
<group invisible="1">
|
||||||
<field name="invoice_ids" invisible="1"/>
|
<field name="invoice_ids" invisible="1"/>
|
||||||
<field name="invoice_status" invisible="1" />
|
<field name="invoice_status" invisible="1" />
|
||||||
</group>
|
</group>
|
||||||
<notebook colspan="4" col="1">
|
<notebook colspan="4" col="1">
|
||||||
<page string="Lines">
|
<page string="Reservation Rooms">
|
||||||
<field name="room_lines" colspan="4" string="Room Line"
|
<field name="room_lines" colspan="4" string="Room Line"
|
||||||
nolabel="1" context="{'from_folio':True,'room_lines':room_lines,'folio_id': id,'tree_view_ref':'hotel.hotel_reservation_view_bottom_tree', 'form_view_ref':'hotel.hotel_reservation_view_form'}"/>
|
nolabel="1" context="{'from_folio':True,'room_lines':room_lines,'folio_id': id,'tree_view_ref':'hotel.hotel_reservation_view_bottom_tree', 'form_view_ref':'hotel.hotel_reservation_view_form'}"/>
|
||||||
|
</page>
|
||||||
|
<page string="Services">
|
||||||
<separator string="Service Lines" colspan="4"/>
|
<separator string="Service Lines" colspan="4"/>
|
||||||
<field name="service_ids"
|
<field name="service_ids"
|
||||||
context="{'from_room':False,'folio_id': id,'tree_view_ref':'hotel.hotel_service_view_tree', 'form_view_ref':'hotel.hotel_service_view_form'}"
|
context="{'from_room':False,'folio_id': id,'tree_view_ref':'hotel.hotel_service_view_tree', 'form_view_ref':'hotel.hotel_service_view_form'}"
|
||||||
nolabel="1" />
|
nolabel="1" />
|
||||||
<group colspan="2" class="oe_subtotal_footer oe_right">
|
</page>
|
||||||
<field name="amount_untaxed" sum="Untaxed amount" widget='monetary' />
|
<page name="persons" string="Persons">
|
||||||
<field name="amount_tax" widget='monetary' />
|
|
||||||
<div class="oe_subtotal_footer_separator oe_inline">
|
|
||||||
<label for="amount_total" />
|
|
||||||
</div>
|
|
||||||
<field name="amount_total" nolabel="1" sum="Total amount"
|
|
||||||
widget='monetary' />
|
|
||||||
</group>
|
|
||||||
<div class="oe_clear" />
|
|
||||||
<group>
|
<group>
|
||||||
<field name="note" />
|
<field name="segmentation_ids" widget="many2many_tags" placeholder="Segmentation..."
|
||||||
|
options="{'no_create': True,'no_open': True}" />
|
||||||
|
</group>
|
||||||
|
<field name="checkin_partner_ids"
|
||||||
|
context="{
|
||||||
|
'default_reservation_id': id,
|
||||||
|
'reservation_id': id,
|
||||||
|
'tree_view_ref':'hotel.hotel_checkin_partner_reservation_view_tree',
|
||||||
|
}"
|
||||||
|
/>
|
||||||
|
</page>
|
||||||
|
<page name="invoicing" string="Invoicing">
|
||||||
|
<group>
|
||||||
|
<field name="partner_diff_invoicing" string="Bill to another Address"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="partner_invoice_id"
|
||||||
|
string="Contact Invoiced"
|
||||||
|
attrs="{'invisible':[('partner_diff_invoicing','=',False)]}"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="partner_invoice_vat" />
|
||||||
|
<field name="partner_invoice_email" />
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="partner_invoice_parent_id" />
|
||||||
|
<field name="partner_invoice_type" />
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<label for="partner_invoice_street" string="Address"/>
|
||||||
|
<div class="o_address_format">
|
||||||
|
<field name="partner_invoice_street" placeholder="Street..." class="o_address_street"/>
|
||||||
|
<field name="partner_invoice_street2" placeholder="Street 2..." class="o_address_street"/>
|
||||||
|
<field name="partner_invoice_city" placeholder="City" class="o_address_city"/>
|
||||||
|
<field name="partner_invoice_state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'/>
|
||||||
|
<field name="partner_invoice_zip" placeholder="ZIP" class="o_address_zip"/>
|
||||||
|
<field name="partner_invoice_country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/>
|
||||||
|
</div>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page string="Other data" invisible="1">
|
<page string="Other data" invisible="1">
|
||||||
|
|||||||
@@ -23,24 +23,27 @@
|
|||||||
<field name="has_confirmed_reservations_to_send" invisible="1" />
|
<field name="has_confirmed_reservations_to_send" invisible="1" />
|
||||||
<field name="has_cancelled_reservations_to_send" invisible="1" />
|
<field name="has_cancelled_reservations_to_send" invisible="1" />
|
||||||
<field name="has_checkout_to_send" invisible="1" />
|
<field name="has_checkout_to_send" invisible="1" />
|
||||||
|
<button name="open_invoices_reservation"
|
||||||
|
string="Create Invoice" type="object" class="btn-primary" states="sale"
|
||||||
|
attrs="{'invisible': [('state', '=', 'draft')]}"/>
|
||||||
<button name="send_reservation_mail" type="object" string="Send Confirmation Email"
|
<button name="send_reservation_mail" type="object" string="Send Confirmation Email"
|
||||||
attrs="{'invisible': [('has_confirmed_reservations_to_send', '=', False)]}" class="oe_highlight"/>
|
attrs="{'invisible': [('has_confirmed_reservations_to_send', '=', False)]}"/>
|
||||||
<button name="send_cancel_mail" type="object" string="Send Cancel Email"
|
<button name="send_cancel_mail" type="object" string="Send Cancel Email"
|
||||||
attrs="{'invisible': [('has_cancelled_reservations_to_send', '=', False)]}" class="oe_highlight"/>
|
attrs="{'invisible': [('has_cancelled_reservations_to_send', '=', False)]}" />
|
||||||
<button name="send_exit_mail" type="object" string="Send Exit Email"
|
<button name="send_exit_mail" type="object" string="Send Exit Email"
|
||||||
attrs="{'invisible': [('has_checkout_to_send', '=', False)]}" class="oe_highlight"/>
|
attrs="{'invisible': [('has_checkout_to_send', '=', False)]}" />
|
||||||
|
|
||||||
<button name="send_reservation_mail" type="object" string="Send Reservation Email" states="confirm" class="oe_highlight"/>
|
<button name="send_reservation_mail" type="object" string="Send Reservation Email" states="confirm"/>
|
||||||
<button name="confirm" string="Confirm" class="oe_highlight"
|
<button name="confirm" string="Confirm" class="oe_highlight"
|
||||||
type="object"
|
type="object"
|
||||||
attrs="{'invisible':[('state','not in',('draft','cancelled'))]}"
|
attrs="{'invisible':[('state','not in',('draft','cancelled'))]}"
|
||||||
/>
|
/>
|
||||||
<button name="action_cancel" string="Cancel Reservation"
|
<button name="action_cancel" string="Cancel Reservation"
|
||||||
class="oe_highlight" type="object"
|
type="object"
|
||||||
attrs="{'invisible':['|',('folio_id', '=', False),('state','not in',('confirm','booking'))]}"
|
attrs="{'invisible':['|',('folio_id', '=', False),('state','not in',('confirm','booking'))]}"
|
||||||
/>
|
/>
|
||||||
<button name="action_reservation_checkout" string="Done"
|
<button name="action_reservation_checkout" string="Done"
|
||||||
states="booking" class="oe_highlight"
|
states="booking"
|
||||||
type="object"
|
type="object"
|
||||||
/>
|
/>
|
||||||
<button name="draft" string="Set to Draft"
|
<button name="draft" string="Set to Draft"
|
||||||
@@ -48,12 +51,12 @@
|
|||||||
type="object"
|
type="object"
|
||||||
/>
|
/>
|
||||||
<button name="%(action_hotel_split_reservation)d" string="Split"
|
<button name="%(action_hotel_split_reservation)d" string="Split"
|
||||||
type="action" class="oe_highlight"
|
type="action"
|
||||||
icon="fa-cut"
|
icon="fa-cut"
|
||||||
attrs="{'invisible':['|',('folio_id', '=', False),('state','not in',('draft','confirm','booking'))]}"
|
attrs="{'invisible':['|',('folio_id', '=', False),('state','not in',('draft','confirm','booking'))]}"
|
||||||
/>
|
/>
|
||||||
<button name="unify" string="Unify"
|
<button name="unify" string="Unify"
|
||||||
type="object" class="oe_highlight"
|
type="object"
|
||||||
icon="fa-compress"
|
icon="fa-compress"
|
||||||
attrs="{'invisible':[('splitted', '=', False)]}"
|
attrs="{'invisible':[('splitted', '=', False)]}"
|
||||||
/>
|
/>
|
||||||
@@ -111,7 +114,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<button type="object" class="oe_stat_button" id="invoice_button"
|
<button type="object" class="oe_stat_button" id="invoice_button"
|
||||||
icon="fa-pencil-square-o" name="open_invoices_reservation">
|
icon="fa-pencil-square-o" name="open_invoices_reservation"
|
||||||
|
attrs="{'invisible': [('invoice_count','<=',0)]}">>
|
||||||
<div class="o_form_field o_stat_info">
|
<div class="o_form_field o_stat_info">
|
||||||
<span class="o_stat_value">
|
<span class="o_stat_value">
|
||||||
<field name="invoice_count"/>
|
<field name="invoice_count"/>
|
||||||
@@ -222,8 +226,6 @@
|
|||||||
<!--
|
<!--
|
||||||
<label for="amount_discount" />
|
<label for="amount_discount" />
|
||||||
-->
|
-->
|
||||||
<button name="%(action_hotel_massive_price_change_reservation_days)d" string="Massive Day Prices"
|
|
||||||
type="action" class="oe_edit_only oe_link" icon="fa-bolt"/>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- <field name="amount_discount" nolabel="1" widget='monetary' class="oe_subtotal_footer_separator" options="{'currency_field': 'currency_id'}"/> -->
|
<!-- <field name="amount_discount" nolabel="1" widget='monetary' class="oe_subtotal_footer_separator" options="{'currency_field': 'currency_id'}"/> -->
|
||||||
<!--
|
<!--
|
||||||
@@ -251,7 +253,7 @@
|
|||||||
<!-- <field name="product_uom" string="Rent(UOM)" invisible="1" /> -->
|
<!-- <field name="product_uom" string="Rent(UOM)" invisible="1" /> -->
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page name="days" string="Service and Days">
|
<page name="services" string="Services">
|
||||||
<group string="Reservation Services" name="reservation_services">
|
<group string="Reservation Services" name="reservation_services">
|
||||||
<field name="service_ids"
|
<field name="service_ids"
|
||||||
context="{'default_ser_room_line': active_id, 'default_folio_id': folio_id, 'form_view_ref':'hotel.hotel_service_view_form'}"
|
context="{'default_ser_room_line': active_id, 'default_folio_id': folio_id, 'form_view_ref':'hotel.hotel_service_view_form'}"
|
||||||
@@ -293,15 +295,17 @@
|
|||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</group>
|
</group>
|
||||||
<group string="Days" name="days">
|
</page>
|
||||||
<field name="reservation_line_ids" nolabel="1">
|
<page name="days" string="Day Pricing">
|
||||||
<tree create="false" delete="false" editable="bottom">
|
<button name="%(action_hotel_massive_price_change_reservation_days)d" string="Massive Day Prices"
|
||||||
<field name="date" />
|
type="action" icon="fa-bolt"/>
|
||||||
<field name="price" />
|
<field name="reservation_line_ids" nolabel="1">
|
||||||
<field name="discount" />
|
<tree create="false" delete="false" editable="bottom">
|
||||||
</tree>
|
<field name="date" />
|
||||||
</field>
|
<field name="price" />
|
||||||
</group>
|
<field name="discount" />
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
</page>
|
</page>
|
||||||
<page name="persons" string="Persons">
|
<page name="persons" string="Persons">
|
||||||
<group>
|
<group>
|
||||||
@@ -316,6 +320,33 @@
|
|||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
</page>
|
</page>
|
||||||
|
<page name="invoicing" string="invoicing">
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<field name="partner_invoice_id" />
|
||||||
|
<field name="partner_invoice_name" />
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="partner_invoice_vat" />
|
||||||
|
<field name="partner_invoice_email" />
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<group>
|
||||||
|
<label for="partner_invoice_street" string="Address"/>
|
||||||
|
<div class="o_address_format">
|
||||||
|
<field name="partner_invoice_street" placeholder="Street..." class="o_address_street"/>
|
||||||
|
<field name="partner_invoice_street2" placeholder="Street 2..." class="o_address_street"/>
|
||||||
|
<field name="partner_invoice_city" placeholder="City" class="o_address_city"/>
|
||||||
|
<field name="partner_invoice_state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'/>
|
||||||
|
<field name="partner_invoice_zip" placeholder="ZIP" class="o_address_zip"/>
|
||||||
|
<field name="partner_invoice_country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/>
|
||||||
|
</div>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
<page name="others" string="Others">
|
<page name="others" string="Others">
|
||||||
<group>
|
<group>
|
||||||
<field name="overbooking" />
|
<field name="overbooking" />
|
||||||
|
|||||||
Reference in New Issue
Block a user