218 lines
12 KiB
XML
218 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<flectra>
|
|
<template id="report_saleorder_document">
|
|
<t t-call="web.external_layout">
|
|
<t t-set="doc" t-value="doc.with_context({'lang':doc.partner_id.lang})" />
|
|
<div class="page">
|
|
<div class="oe_structure"/>
|
|
<div class="row">
|
|
<div class="col-xs-6">
|
|
<t t-if="doc.partner_shipping_id == doc.partner_invoice_id
|
|
and doc.partner_invoice_id != doc.partner_id
|
|
or doc.partner_shipping_id != doc.partner_invoice_id">
|
|
<strong t-if="doc.partner_shipping_id == doc.partner_invoice_id">Invoicing and shipping address:</strong>
|
|
<strong t-if="doc.partner_shipping_id != doc.partner_invoice_id">Invoicing address:</strong>
|
|
<div t-field="doc.partner_invoice_id"
|
|
t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}'/>
|
|
<div t-if="doc.partner_shipping_id != doc.partner_invoice_id" class="mt8">
|
|
<strong>Shipping address:</strong>
|
|
<div t-field="doc.partner_shipping_id"
|
|
t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}'/>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
<div class="col-xs-5 col-xs-offset-1">
|
|
<div t-field="doc.partner_id"
|
|
t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}' />
|
|
<p t-if="doc.partner_id.vat"><t t-esc="doc.company_id.country_id.vat_label or 'TIN'"/>: <span t-field="doc.partner_id.vat"/></p>
|
|
</div>
|
|
</div>
|
|
|
|
<h2>
|
|
<t t-if="not (env.context.get('proforma', False) or is_pro_forma)">
|
|
<span t-if="doc.state not in ['draft','sent']">Order # </span>
|
|
<span t-if="doc.state in ['draft','sent']">Quotation # </span>
|
|
</t>
|
|
<t t-if="env.context.get('proforma', False) or is_pro_forma">
|
|
<span>Pro-Forma Invoice # </span>
|
|
</t>
|
|
<span t-field="doc.name"/>
|
|
</h2>
|
|
|
|
<div class="row mt32 mb32" id="informations">
|
|
<div t-if="doc.client_order_ref" class="col-xs-3">
|
|
<strong>Your Reference:</strong>
|
|
<p t-field="doc.client_order_ref"/>
|
|
</div>
|
|
<div t-if="doc.confirmation_date and doc.state not in ['draft','sent']" class="col-xs-3">
|
|
<strong>Date Ordered:</strong>
|
|
<p t-field="doc.confirmation_date"/>
|
|
</div>
|
|
<div t-if="doc.date_order and doc.state in ['draft','sent']" class="col-xs-3">
|
|
<strong>Quotation Date:</strong>
|
|
<p t-field="doc.date_order"/>
|
|
</div>
|
|
<div t-if="doc.user_id.name" class="col-xs-3">
|
|
<strong>Salesperson:</strong>
|
|
<p t-field="doc.user_id"/>
|
|
</div>
|
|
<div name="payment_term" t-if="doc.payment_term_id" class="col-xs-3">
|
|
<strong>Payment Terms:</strong>
|
|
<p t-field="doc.payment_term_id"/>
|
|
</div>
|
|
<div name="branch" t-if="doc.branch_id" class="col-xs-3">
|
|
<strong>Branch:</strong>
|
|
<p t-field="doc.branch_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 doc.order_line])"/>
|
|
|
|
<t t-foreach="doc.order_lines_layouted()" t-as="page">
|
|
<table class="table table-condensed">
|
|
<thead>
|
|
<tr>
|
|
<th>Description</th>
|
|
<th class="text-right">Quantity</th>
|
|
<th class="text-right">Unit Price</th>
|
|
<th t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">Disc.(%)</th>
|
|
<th class="text-right">Taxes</th>
|
|
<th class="text-right" groups="sale.group_show_price_subtotal">Amount</th>
|
|
<th class="text-right price_tax_included" groups="sale.group_show_price_total">Total Price</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="sale_tbody">
|
|
<t t-foreach="page" t-as="layout_category">
|
|
|
|
<t t-if="layout_category_size > 1 or page_size > 1" groups="sale.group_sale_layout">
|
|
<tr class="active">
|
|
<td colspan="7" style="font-weight: bold; border-bottom: 1px solid black;">&bull;
|
|
<t t-esc="layout_category['name']"/>
|
|
</td>
|
|
</tr>
|
|
</t>
|
|
|
|
<!-- Lines associated -->
|
|
<t t-foreach="layout_category['lines']" t-as="l">
|
|
<tr>
|
|
<td><span t-field="l.name"/></td>
|
|
<td class="text-right">
|
|
<span t-field="l.product_uom_qty"/>
|
|
<span t-field="l.product_uom" groups="product.group_uom"/>
|
|
</td>
|
|
<td class="text-right">
|
|
<span t-field="l.price_unit"/>
|
|
</td>
|
|
<td t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">
|
|
<span t-field="l.discount"/>
|
|
</td>
|
|
<td class="text-right">
|
|
<span t-esc="', '.join(map(lambda x: (x.description or x.name), l.tax_id))"/>
|
|
</td>
|
|
<td class="text-right" groups="sale.group_show_price_subtotal">
|
|
<span t-field="l.price_subtotal"
|
|
t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/>
|
|
</td>
|
|
<td class="text-right" groups="sale.group_show_price_total">
|
|
<span t-field="l.price_total"
|
|
t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/>
|
|
</td>
|
|
</tr>
|
|
</t>
|
|
|
|
<t t-if="(layout_category_size > 1 or page_size > 1) and layout_category['subtotal']" groups="sale.group_sale_layout">
|
|
<tr class="text-right">
|
|
<td colspan="6">
|
|
<strong>Subtotal: </strong>
|
|
<t t-set="subtotal" t-value="sum(line.price_subtotal for line in layout_category['lines'])"/>
|
|
<span t-esc="subtotal" t-options="{'widget': 'monetary', 'display_currency': doc.pricelist_id.currency_id}"/>
|
|
</td>
|
|
</tr>
|
|
</t>
|
|
|
|
</t>
|
|
</tbody>
|
|
</table>
|
|
|
|
<t t-if="page_index < page_size - 1" groups="sale.group_sale_layout">
|
|
<p style="page-break-before:always;"> </p>
|
|
</t>
|
|
</t>
|
|
|
|
<div class="clearfix">
|
|
<div class="row" name="total">
|
|
<div class="col-xs-4 pull-right">
|
|
<table class="table table-condensed" style="min-width: 200px;max-width: 350px;">
|
|
<tr class="border-black" style="border-bottom:1px solid #dddddd;">
|
|
<td><strong>Subtotal</strong></td>
|
|
<td class="text-right">
|
|
<span t-field="doc.amount_untaxed"
|
|
t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/>
|
|
</td>
|
|
</tr>
|
|
<t t-foreach="doc._get_tax_amount_by_group()" t-as="amount_by_group">
|
|
<tr style="border-bottom:1px solid #dddddd;">
|
|
<t t-if="amount_by_group[3] == 1 and doc.amount_untaxed == amount_by_group[2]">
|
|
<td><span t-esc="amount_by_group[0]"/></td>
|
|
<td class="text-right">
|
|
<span t-esc="amount_by_group[1]"
|
|
t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/>
|
|
</td>
|
|
</t>
|
|
<t t-else ="">
|
|
<td>
|
|
<span t-esc="amount_by_group[0]"/><span>&nbsp;<span>on</span>&nbsp;<t t-esc="amount_by_group[2]" t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/></span>
|
|
</td>
|
|
<td class="text-right">
|
|
<span t-esc="amount_by_group[1]"
|
|
t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/>
|
|
</td>
|
|
</t>
|
|
</tr>
|
|
</t>
|
|
<tr class="border-black">
|
|
<td><strong>Total</strong></td>
|
|
<td class="text-right">
|
|
<span t-field="doc.amount_total"
|
|
t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<p t-field="doc.note" />
|
|
<p t-if="doc.payment_term_id.note">
|
|
<span t-field="doc.payment_term_id.note"/>
|
|
</p>
|
|
<p id="fiscal_position_remark" t-if="doc.fiscal_position_id and doc.fiscal_position_id.note">
|
|
<strong>Fiscal Position Remark:</strong>
|
|
<span t-field="doc.fiscal_position_id.note"/>
|
|
</p>
|
|
<div class="oe_structure"/>
|
|
</div>
|
|
</t>
|
|
</template>
|
|
|
|
|
|
<template id="report_saleorder">
|
|
<t t-call="web.html_container">
|
|
<t t-foreach="docs" t-as="doc">
|
|
<t t-call="sale.report_saleorder_document" t-lang="doc.partner_id.lang"/>
|
|
</t>
|
|
</t>
|
|
</template>
|
|
|
|
<template id="report_saleorder_pro_forma">
|
|
<t t-call="web.html_container">
|
|
<t t-set="is_pro_forma" t-value="True"/>
|
|
<t t-foreach="docs" t-as="doc">
|
|
<t t-call="sale.report_saleorder_document" t-lang="doc.partner_id.lang"/>
|
|
</t>
|
|
</t>
|
|
</template>
|
|
|
|
</flectra>
|