Files
pms/pms/views/folio_portal_templates.xml
2021-11-24 17:16:25 +01:00

598 lines
29 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<odoo>
<template
id="portal_my_home_menu_folio"
name="Portal layout : folio menu entries"
inherit_id="portal.portal_breadcrumbs"
priority="20"
>
<xpath expr="//ol[hasclass('o_portal_submenu')]" position="inside">
<li
t-if="page_name == 'folios'"
t-attf-class="breadcrumb-item #{'active ' if not folios else ''}"
>
<a t-attf-href="/my/folios?{{ keep_query() }}">Folios</a>
</li>
<li t-if="folio" class="breadcrumb-item active">
<a t-attf-href="/my/folios?{{ keep_query() }}">Folios/</a>
<t t-esc="folio.name" />
</li>
</xpath>
</template>
<template
id="portal_my_folios"
name="Folios"
inherit_id="portal.portal_my_home"
customize_show="True"
priority="30"
>
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
<t t-call="portal.portal_docs_entry">
<t t-set="title">Folios</t>
<t t-set="url" t-value="'/my/folios'" />
<t t-set="placeholder_count" t-value="'folio_count'" />
</t>
</xpath>
</template>
<template id="portal_my_folio" name="My Folios">
<t t-call="portal.portal_layout">
<t t-set="breadcrumbs_searchbar" t-value="True" />
<t t-call="portal.portal_searchbar">
<t t-set="title">Folios</t>
</t>
<t t-if="not folios">
<p>There are currently no folios for your account.</p>
</t>
<t t-if="folios" t-call="portal.portal_table">
<thead>
<tr class="active">
<th>Folio #</th>
<th>Order Date</th>
<th class="text-right">Total</th>
</tr>
</thead>
<tbody>
<t t-foreach="folios" t-as="folio">
<tr>
<td>
<a
t-att-href="folio.get_portal_url()"
t-att-title="folio.name"
>
<t t-esc="folio.name" />
</a>
</td>
<td><span t-field="folio.date_order" /></td>
<td class="text-right"><span
t-field="folio.amount_total"
/></td>
</tr>
</t>
</tbody>
</t>
</t>
</template>
<template id="portal_folio_payment" name="Folio Payment">
<div
class="row"
t-if="not tx_ids and folio.state in ('confirm','done') and folio.payment_state in ('not_paid', 'partial') and folio.amount_total"
id="portal_pay"
>
<div class="modal fade" id="pay_with" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Pay with</h3>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Close"
>×</button>
</div>
<div class="modal-body">
<div
t-if="pms or acquirers"
id="payment_method"
class="text-left col-md-13"
>
<t t-call="payment.payment_tokens_list">
<t t-set="mode" t-value="'payment'" />
<t
t-set="partner_id"
t-value="folio.partner_id.id if request.env.user._is_public() else request.env.user.partner_id.id"
/>
<t
t-set="success_url"
t-value="folio.get_portal_url()"
/>
<t
t-set="error_url"
t-value="folio.get_portal_url()"
/>
<t
t-set="access_token"
t-value="access_token or ''"
/>
<t t-set="callback_method" t-value="''" />
<t
t-set="form_action"
t-value="'/folio/pay/' + str(folio.id) + '/s2s_token_tx/'"
/>
<t
t-set="prepare_tx_url"
t-value="'/folio/pay/' + str(folio.id) + '/form_tx/'"
/>
<t t-set="submit_txt">Pay Now</t>
<t t-set="icon_class" t-value="'fa-lock'" />
</t>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<template id="portal_folio_page_payment" name="Payment on My Folios">
<t
t-set="tx_ids"
t-value="folio.transaction_ids.filtered(lambda tx: tx.state in ('pending', 'authorized', 'done'))"
/>
<t
t-set="pending_manual_txs"
t-value="tx_ids.filtered(lambda tx: tx.state == 'pending' and tx.acquirer_id.provider in ('transfer', 'manual'))"
/>
<div>
<a
href="#"
t-if="folio.state in ('confirm','done') and folio.payment_state in ('not_paid', 'partial') and folio.amount_total and (pending_manual_txs or not tx_ids)"
class="btn btn-primary btn-block mb-2"
data-toggle="modal"
data-target="#pay_with"
>
<i class="fa fa-fw fa-arrow-circle-right" /> Pay Now
</a>
<div
t-if="tx_ids and not pending_manual_txs and folio.payment_state not in ('paid', 'in_payment')"
class="alert alert-info py-1 mb-2"
>
<i class="fa fa-fw fa-check-circle" /> Pending
</div>
<div
t-if="folio.payment_state in ('paid', 'in_payment')"
class="alert alert-success py-1 mb-2"
>
<i class="fa fa-fw fa-check-circle" /> Paid
</div>
</div>
<t
t-set="tx_ids"
t-value="folio.transaction_ids.filtered(lambda tx: tx.state in ('authorized', 'done'))"
/>
<div
t-if="not tx_ids and folio.state in('confirm','done') and folio.payment_state in ('not_paid', 'partial') and folio.amount_total"
id="portal_pay"
>
<div t-if="pms or acquirers" id="payment_method">
<t t-call="pms.portal_folio_payment" />
</div>
</div>
</template>
<template
id="folio_portal_template"
name="Folio Portal Template"
inherit_id="portal.portal_sidebar"
primary="True"
>
<xpath expr="//div[hasclass('o_portal_sidebar')]" position="inside">
<div class="row mt16 o_portal_sale_sidebar">
<!-- Sidebar -->
<t t-call="portal.portal_record_sidebar">
<t t-set="classes" t-value="'col-lg-auto d-print-none'" />
<t t-set="title">
<h2 class="mb-0"><b t-field="folio.amount_total" /> </h2>
</t>
<t t-set="entries">
<ul
class="list-group list-group-flush flex-wrap flex-row flex-lg-column"
>
<li class="list-group-item flex-grow-1">
<div>
<div t-call="pms.portal_folio_page_payment" />
</div>
<div class="o_download_pdf btn-toolbar flex-sm-nowrap">
<div class="btn-group mr-1 mb-1">
<a
class="btn btn-secondary btn-block o_download_btn"
t-att-href="folio.get_portal_url(report_type='pdf', download=True)"
title="Download"
><i class="fa fa-download" /> Download</a>
</div>
<div class="btn-group mb-1">
<a
class="btn btn-secondary btn-block o_print_btn o_portal_invoice_print"
t-att-href="folio.get_portal_url(report_type='pdf')"
id="print_folio_report"
title="Print"
target="_blank"
><i class="fa fa-print" /> Print</a>
</div>
</div>
<div>
<a
class="btn btn-secondary btn-block "
t-att-href="folio.get_portal_url(suffix='/precheckin')"
t-att-title="Precheckin"
>
Precheckin
</a>
</div>
</li>
<li
t-if="folio.user_id.name"
class="list-group-item flex-grow-1"
>
<div class="small mb-1"><strong
class="text-muted"
>Salesperson</strong></div>
<div class="row flex-nowrap">
<div class="col flex-grow-0 pr-2">
<img
class="rounded-circle mr4 float-left o_portal_contact_img"
t-if="folio.user_id.image_1024"
t-att-src="image_data_uri(folio.user_id.image_1024)"
alt="Contact"
/>
<img
class="rounded-circle mr4 float-left o_portal_contact_img"
t-if="not folio.user_id.image_1024"
src="/web/static/src/img/placeholder.png"
alt="Contact"
/>
</div>
<div class="col pl-0" style="min-width: 150px">
<span
t-field="folio.user_id"
t-options='{"widget": "contact", "fields": ["name", "phone"], "no_marker": True}'
/>
<a href="#discussion" class="small"><i
class="fa fa-comment"
/> Send message</a>
</div>
</div>
</li>
</ul>
</t>
</t>
<!-- main content-->
<div t-attf-class="card col-8 p-3" id="portal_folio_content">
<div t-call="pms.folio_portal_content" />
</div>
<!-- chatter -->
<div class="col-3" />
<div id="folio_communication" class="mt-4 col-8">
<h2>History</h2>
<t t-call="portal.message_thread">
<t t-set="object" t-value="folio" />
</t>
</div>
</div>
</xpath>
</template>
<template id="folio_portal_content" name="Folio Portal Content">
<t t-call="web.external_layout" />
<t t-set="address">
<div
class="row pb-2 pt-3 #{'card-header bg-white' if report_type == 'html' else ''}"
>
<div class="col-xs-6">
<t
t-if="folio.partner_invoice_ids and folio.partner_invoice_ids[0] != folio.partner_id"
>
<div
t-esc="folio.partner_invoice_ids[0]"
t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}'
/>
</t>
</div>
<div class="col-xs-5 col-xs-offset-1">
<t t-if="folio.partner_id">
<div
t-field="folio.partner_id"
t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}'
/>
<p t-if="folio.partner_id.vat">
<t
t-esc="folio.company_id.country_id.vat_label or 'TIN'"
/>
:
<span t-field="folio.partner_id.vat" />
</p>
</t>
<t t-else="">
<div t-field="folio.partner_name" />
</t>
</div>
</div>
</t>
<div class="page">
<div class="oe_structure" />
<h2 class="mt16">
<span t-if="folio.state not in ['draft','sent']">Order #</span>
<span t-if="folio.state in ['draft','sent']">Quotation #</span>
<span t-field="folio.name" />
</h2>
<div class="row mt32 mb32" id="informations">
<div t-if="folio.client_order_ref" class="mb-3 col-6">
<strong>Your Reference:</strong>
<p class="m-0" t-field="folio.client_order_ref" />
</div>
<div
t-if="folio.date_order and folio.state not in ['draft','sent']"
class="mb-3 col-6"
>
<strong>Order Date:</strong>
<p class="m-0" t-field="folio.date_order" />
</div>
<div
t-if="folio.date_order and folio.state in ['draft','sent']"
class="mb-3 col-6"
>
<strong>Quotation Date:</strong>
<p
class="mb-3 col-6"
t-field="folio.date_order"
t-options='{"widget": "date"}'
/>
</div>
<!-- <div t-if="folio.user_id.name" class="mb-3 col-6">
<strong>Salesperson:</strong>
<p class="m-0" t-field="folio.user_id" />
</div> -->
</div>
<!-- Is there a discount on at least one line? -->
<t
t-set="display_discount"
t-value="any(l.discount for l in folio.sale_line_ids)"
/>
<table class="table table-sm o_main_table">
<!-- In case we want to repeat the header, remove "display: table-row-group" -->
<thead style="display: table-row-group">
<tr>
<th name="th_description" class="text-left">Description</th>
<th name="th_quantity" class="text-right">Quantity</th>
<th name="th_priceunit" class="text-right">Unit Price</th>
<th
name="th_discount"
t-if="display_discount"
class="text-right"
>
<span>Disc.%</span>
</th>
<th name="th_taxes" class="text-right">Taxes</th>
<th name="th_subtotal" class="text-right">
<span
groups="account.group_show_line_subtotals_tax_excluded"
>Amount</span>
<span
groups="account.group_show_line_subtotals_tax_included"
>Total Price</span>
</th>
</tr>
</thead>
<tbody class="sale_tbody">
<t t-set="current_subtotal" t-value="0" />
<t t-foreach="folio.sale_line_ids" t-as="line">
<t
t-set="current_subtotal"
t-value="current_subtotal + line.price_subtotal"
groups="account.group_show_line_subtotals_tax_excluded"
/>
<t
t-set="current_subtotal"
t-value="current_subtotal + line.price_total"
groups="account.group_show_line_subtotals_tax_included"
/>
<tr
t-att-class="'bg-200 font-weight-bold o_line_section' if line.display_type == 'line_section' else 'font-italic o_line_note' if line.display_type == 'line_note' else ''"
>
<t t-if="not line.display_type">
<t t-set="price" t-value="line.price_unit" />
<t t-if="line.reservation_id">
<t
t-set="print_board_service"
t-value="line.reservation_id.board_service_room_id.pms_board_service_id.show_detail_report"
/>
<t t-if="not print_board_service">
<t
t-foreach="line.reservation_id.service_ids"
t-as="service"
>
<t t-if="service.is_board_service">
<t
t-set="price"
t-value="service.product_qty/line.price_total*(1-(service.reservation_id.discount or 0.0)*0.01) + price"
/>
</t>
</t>
</t>
</t>
<t
t-if="not(not print_board_service and line.service_id.is_board_service)"
>
<td name="td_name"><span
t-field="line.name"
/></td>
<td name="td_quantity" class="text-right">
<span t-field="line.product_uom_qty" />
<span
t-field="line.product_uom"
groups="uom.group_uom"
/>
</td>
<td name="td_priceunit" class="text-right">
<span
t-esc="price"
t-options='{"widget": "monetary", "display_currency": folio.pricelist_id.currency_id}'
/>
</td>
<td t-if="display_discount" class="text-right">
<span t-field="line.discount" />
</td>
<td name="td_taxes" class="text-right">
<span
t-esc="', '.join(map(lambda x: (x.description or x.name), line.tax_ids))"
/>
</td>
<td
name="td_subtotal"
class="text-right o_price_total"
>
<span
t-esc="price*(1-(line.discount or 0.0)*0.01)* line.product_uom_qty"
groups="account.group_show_line_subtotals_tax_excluded"
t-options='{"widget": "monetary", "display_currency": folio.pricelist_id.currency_id}'
/>
<span
t-esc="price *(1-(line.discount or 0.0)*0.01)* line.product_uom_qty"
groups="account.group_show_line_subtotals_tax_included"
t-options='{"widget": "monetary", "display_currency": folio.pricelist_id.currency_id}'
/>
</td>
</t>
</t>
<t t-if="line.display_type == 'line_section'">
<td name="td_section_line" colspan="99">
<span t-field="line.name" />
</td>
<t t-set="current_section" t-value="line" />
<t t-set="current_subtotal" t-value="0" />
</t>
<t t-if="line.display_type == 'line_note'">
<td name="td_note_line" colspan="99">
<span t-field="line.name" />
</td>
</t>
</tr>
<t
t-if="current_section and (line_last or folio.sale_line_ids[line_index+1].display_type == 'line_section')"
>
<tr class="is-subtotal text-right">
<td name="td_section_subtotal" colspan="99">
<strong class="mr16">Subtotal</strong>
<span
t-esc="current_subtotal"
t-options='{"widget": "monetary", "display_currency": folio.pricelist_id.currency_id}'
/>
</td>
</tr>
</t>
</t>
</tbody>
</table>
<div class="clearfix" name="so_total_summary">
<div id="total" class="row" name="total">
<div
t-attf-class="#{'col-4' if report_type != 'html' else 'col-sm-7 col-md-5'} ml-auto"
>
<table class="table table-sm">
<tr class="border-black o_subtotal" style="">
<td name="td_amount_untaxed_label"><strong
>Subtotal</strong></td>
<td name="td_amount_untaxed" class="text-right">
<span t-field="folio.amount_untaxed" />
</td>
</tr>
<t
t-foreach="folio._get_tax_amount_by_group()"
t-as="amount_by_group"
>
<tr style="">
<t
t-if="amount_by_group[3] == 1 and folio.amount_untaxed == amount_by_group[2]"
>
<td name="td_amount_by_group_label_3">
<span t-esc="amount_by_group[0]" />
<span>&amp;nbsp;<span>on</span>&amp;nbsp;<t
t-esc="amount_by_group[2]"
t-options='{"widget": "monetary", "display_currency": folio.pricelist_id.currency_id}'
/></span>
</td>
<td
name="td_amount_by_group_3"
class="text-right o_price_total"
>
<span
t-esc="amount_by_group[1]"
t-options='{"widget": "monetary", "display_currency": folio.pricelist_id.currency_id}'
/>
</td>
</t>
<t t-else="">
<td name="td_amount_by_group_label">
<span t-esc="amount_by_group[0]" />
</td>
<td
name="td_amount_by_group"
class="text-right o_price_total"
>
<span
t-esc="amount_by_group[1]"
t-options='{"widget": "monetary", "display_currency": folio.pricelist_id.currency_id}'
/>
</td>
</t>
</tr>
</t>
<tr class="border-black o_total">
<td name="td_amount_total_label"><strong
>Total</strong></td>
<td name="td_amount_total" class="text-right">
<span t-field="folio.amount_total" />
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="oe_structure" />
<p t-field="folio.note" />
<p t-if="folio.payment_term_id.note">
<span t-field="folio.payment_term_id.note" />
</p>
<p
id="fiscal_position_remark"
t-if="folio.fiscal_position_id and folio.fiscal_position_id.sudo().note"
>
<strong>Fiscal Position Remark:</strong>
<span t-field="folio.fiscal_position_id.sudo().note" />
</p>
</div>
</template>
</odoo>