228 lines
12 KiB
XML
228 lines
12 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data>
|
|
<!-- Sale Order Body -->
|
|
<template id="report_stockpicking_document">
|
|
<t t-call="web.external_layout">
|
|
<t t-set="o" t-value="o.with_context({'lang':o.partner_id.lang})"/>
|
|
<div class="page">
|
|
<div class="row">
|
|
<div class="col-xs-6" name="customer_address">
|
|
<div>
|
|
<strong>Customer Address:</strong>
|
|
</div>
|
|
<div t-if="o.move_lines and o.move_lines[0].partner_id" name="partner_header">
|
|
<div t-field="o.move_lines[0].partner_id"
|
|
t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True}'/>
|
|
</div>
|
|
<div t-if="not (o.move_lines and o.move_lines[0].partner_id) and o.partner_id"
|
|
name="partner_header">
|
|
<div t-field="o.partner_id"
|
|
t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True}'/>
|
|
</div>
|
|
<br/>
|
|
<div>
|
|
<strong>Customer Reference:</strong>
|
|
<p t-field="o.sale_id.client_order_ref"/>
|
|
</div>
|
|
<div>
|
|
<strong>Source Document:</strong>
|
|
<p t-field="o.origin"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<table class="table table-condensed mt32">
|
|
<thead class="table-header">
|
|
<tr>
|
|
<th t-if="o.origin">
|
|
<strong>Order (Origin)</strong>
|
|
</th>
|
|
<th name="td_sched_date_h">
|
|
<strong>Date</strong>
|
|
</th>
|
|
<th t-if="o.picking_type_id.code == 'outgoing' and o.carrier_id">
|
|
<strong>Carrier</strong>
|
|
</th>
|
|
<!--<th t-if="o.weight">-->
|
|
<!--<strong>Weight</strong>-->
|
|
<!--</th>-->
|
|
<th t-if="o.carrier_tracking_ref">
|
|
<strong>Tracking Number</strong>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="stock-tbody">
|
|
<tr>
|
|
<td t-if="o.origin">
|
|
<span t-field="o.origin"/>
|
|
</td>
|
|
<td name="td_sched_date">
|
|
<t t-if="o.state == 'done'">
|
|
<span t-field="o.date_done"/>
|
|
</t>
|
|
<t t-if="o.state != 'done'">
|
|
<span t-field="o.scheduled_date"/>
|
|
</t>
|
|
</td>
|
|
<td t-if="o.picking_type_id.code == 'outgoing' and o.carrier_id">
|
|
<span t-field="o.carrier_id"/>
|
|
</td>
|
|
<!--<td t-if="o.weight">-->
|
|
<!--<span t-field="o.weight"/>-->
|
|
<!--<span t-field="o.weight_uom_id"/>-->
|
|
<!--</td>-->
|
|
<td t-if="o.carrier_tracking_ref">
|
|
<span t-field="o.carrier_tracking_ref"/>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<t t-set="total_ordered_qty" t-value="0"/>
|
|
<table class="table table-condensed mt48" t-if="not o.move_line_ids">
|
|
<thead class="table-header">
|
|
<tr>
|
|
<th>
|
|
<strong>Product</strong>
|
|
</th>
|
|
<th>
|
|
<strong>Ordered Quantity</strong>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="stock-tbody">
|
|
<tr t-foreach="o.move_lines" t-as="move">
|
|
<td>
|
|
<span t-field="move.product_id"/>
|
|
</td>
|
|
<td>
|
|
<t t-set="ordered_qty" t-value="int(o._formatLang(move_line.ordered_qty).strip('0').strip(',').strip('.'))"/>
|
|
<t t-set="total_ordered_qty" t-value="total_ordered_qty+ordered_qty"/>
|
|
<span t-esc="ordered_qty"/>
|
|
<span t-field="move.product_uom"/>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<t t-set="backorder" t-value="False"/>
|
|
<table class="table table-condensed mt48" t-if="o.move_line_ids">
|
|
<t t-set="has_serial_number" t-value="o.move_line_ids.mapped('lot_id')"
|
|
groups="stock.group_production_lot"/>
|
|
<thead class="table-header">
|
|
<tr>
|
|
<th>
|
|
<strong>Product</strong>
|
|
</th>
|
|
<th name="lot_serial" t-if="has_serial_number">
|
|
Lot/Serial Number
|
|
</th>
|
|
<th class="text-center">
|
|
<strong>Ordered Quantity</strong>
|
|
</th>
|
|
<th t-if="any([move_line.state == 'done' for move_line in o.move_line_ids])"
|
|
class="text-right">
|
|
<strong>Delivered Quantity</strong>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="stock-tbody">
|
|
<tr t-foreach="o.move_line_ids" t-as="move_line">
|
|
<td>
|
|
<span t-field="move_line.product_id"/>
|
|
<p t-if="o.picking_type_code == 'outgoing'">
|
|
<span t-field="move_line.product_id.sudo().description_pickingout"/>
|
|
</p>
|
|
<p t-if="o.picking_type_code == 'incoming'">
|
|
<span t-field="move_line.product_id.sudo().description_pickingin"/>
|
|
</p>
|
|
<t t-if="not move_line.product_id and move_line.package_id">
|
|
<span t-field="move_line.package_id"/>
|
|
</t>
|
|
</td>
|
|
<t t-if="has_serial_number">
|
|
<td>
|
|
<table width="100%">
|
|
<tr>
|
|
<td>
|
|
<span t-field="move_line.lot_id"/>
|
|
<t t-if="not move_line.lot_id">
|
|
<span t-field="move_line.lot_name"/>
|
|
</t>
|
|
</td>
|
|
<td name="lot_qty">
|
|
<t t-if="move_line.product_qty">
|
|
<span t-esc="o._formatLang(move_line.product_qty).strip('0').strip(',').strip('.')"/>
|
|
</t>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</t>
|
|
<td class="text-center">
|
|
<span t-field="move_line.package_id"/>
|
|
<span t-if="move_line.package_id">:</span>
|
|
<t t-set="ordered_qty" t-value="int(o._formatLang(move_line.ordered_qty).strip('0').strip(',').strip('.'))"/>
|
|
<t t-set="total_ordered_qty" t-value="total_ordered_qty+ordered_qty"/>
|
|
<span t-esc="ordered_qty"/>
|
|
<span t-field="move_line.product_uom_id"/>
|
|
</td>
|
|
<td class="text-right" t-if="move_line.state == 'done'">
|
|
<t t-if="move_line.ordered_qty != move_line.qty_done">
|
|
<t t-set="backorder" t-value="True"/>
|
|
</t>
|
|
<span t-esc="o._formatLang(move_line.qty_done).strip('0').strip(',').strip('.')"/>
|
|
<span t-field="move_line.product_uom_id"/>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div class="row">
|
|
<div class="col-xs-6">
|
|
<span style="padding-top: 5px; border-top: 1px solid;">
|
|
<strong>Total Weight:</strong>
|
|
<span t-field="o.weight"/>
|
|
</span>
|
|
</div>
|
|
<div class="col-xs-6">
|
|
<span class="pull-right" style="padding-top: 5px; border-top: 1px solid;">
|
|
<strong>Total Amount:</strong>
|
|
<span t-esc="total_ordered_qty"/>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<p class="col-xs-12">
|
|
<span t-field="o.note"/>
|
|
</p>
|
|
|
|
<p t-if="o.backorder_id">
|
|
This shipment is a backorder of<t t-esc="o.backorder_id.name"/>.
|
|
</p>
|
|
<p>
|
|
<t t-if="backorder">
|
|
All items couldn't be shipped, the remaining ones will be shipped as soon as they become
|
|
available.
|
|
</t>
|
|
</p>
|
|
</div>
|
|
</t>
|
|
</template>
|
|
|
|
<template id="stock.report_deliveryslip">
|
|
<t t-call="web.html_container">
|
|
<t t-foreach="docs" t-as="o">
|
|
<t t-set="is_picking" t-value="True"/>
|
|
<t t-call="dp_reports_stock.report_stockpicking_document" t-lang="o.partner_id.lang"/>
|
|
</t>
|
|
</t>
|
|
</template>
|
|
|
|
|
|
</data>
|
|
|
|
<record id="stock.action_report_delivery" model="ir.actions.report">
|
|
<field name="paperformat_id" ref="dp_reports.paperformat_a4_european"/>
|
|
</record>
|
|
</odoo>
|