summaryrefslogtreecommitdiff
path: root/addons/mrp/report/report_deliveryslip.xml
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/mrp/report/report_deliveryslip.xml
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/mrp/report/report_deliveryslip.xml')
-rw-r--r--addons/mrp/report/report_deliveryslip.xml81
1 files changed, 81 insertions, 0 deletions
diff --git a/addons/mrp/report/report_deliveryslip.xml b/addons/mrp/report/report_deliveryslip.xml
new file mode 100644
index 00000000..88370ca6
--- /dev/null
+++ b/addons/mrp/report/report_deliveryslip.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <template id="stock_report_delivery_document_inherit_mrp" inherit_id="stock.report_delivery_document">
+ <!-- needs to be set before so elif directly follows if later on -->
+ <xpath expr="//t[@name='has_packages']" position="before">
+ <!-- get only the top level kits' (i.e. no subkit) move lines for easier mapping later on + we ignore subkit groupings-->
+ <!-- note that move.name uses top level kit's product.template.display_name value instead of product.template.name -->
+ <t t-set="has_kits" t-value="o.move_line_ids.filtered(lambda l: l.move_id.bom_line_id and l.move_id.bom_line_id.bom_id.product_tmpl_id.display_name == l.move_id.name)"/>
+ </xpath>
+ <xpath expr="//t[@name='no_package_section']" position="before">
+ <t t-set="has_kits" t-value="move_lines.filtered(lambda l: l.move_id.bom_line_id and l.move_id.bom_line_id.bom_id.product_tmpl_id.display_name == l.move_id.name)"/>
+ <t t-if="has_kits">
+ <!-- print the products not in a package or kit first -->
+ <t t-set="move_lines" t-value="move_lines.filtered(lambda m: not m.move_id.bom_line_id)"/>
+ </t>
+ </xpath>
+ <xpath expr="//t[@name='no_package_move_lines']" position="inside">
+ <t t-call="mrp.stock_report_delivery_kit_sections"/>
+ </xpath>
+ <xpath expr="//t[@name='has_packages']" position="after">
+ <!-- Additional use case: group by kits when no packages exist and then apply use case 1. (serial/lot numbers used/printed) -->
+ <t t-elif="has_kits and not has_packages">
+ <t t-call="mrp.stock_report_delivery_kit_sections"/>
+ <t t-call="mrp.stock_report_delivery_no_kit_section"/>
+ </t>
+ </xpath>
+ </template>
+
+ <template id="stock_report_delivery_kit_sections">
+ <!-- do another map to get unique top level kits -->
+ <t t-set="kits" t-value="has_kits.mapped('move_id.bom_line_id.bom_id.product_tmpl_id')"/>
+ <t t-foreach="kits" t-as="kit">
+ <tr t-att-class="'bg-200 font-weight-bold o_line_section'">
+ <td colspan="99">
+ <span t-esc="kit.display_name"/>
+ </td>
+ </tr>
+ <t t-set="kit_move_lines" t-value="has_kits.filtered(lambda l: l.move_id.name == kit.display_name)"/>
+ <t t-if="has_serial_number">
+ <tr t-foreach="kit_move_lines" t-as="move_line">
+ <t t-set="description" t-as="move_line.move_id.description_picking"/>
+ <t t-if="description == kit.name">
+ <t t-set="description" t-value=""/>
+ </t>
+ <t t-call="stock.stock_report_delivery_has_serial_move_line"/>
+ </tr>
+ </t>
+ <t t-else="">
+ <!-- move line description by default is the product_template.name (kit name), instead of display_name-->
+ <t t-set="aggregated_lines" t-value="kit_move_lines._get_aggregated_product_quantities(kit_name=kit.name)"/>
+ <t t-if="aggregated_lines">
+ <t t-call="stock.stock_report_delivery_aggregated_move_lines"/>
+ </t>
+ </t>
+ </t>
+ </template>
+
+ <!-- No kit section is expected to only be called in no packages case -->
+ <template id="stock_report_delivery_no_kit_section">
+ <!-- Do another section for kit-less products if they exist -->
+ <t t-set="no_kit_move_lines" t-value="o.move_line_ids.filtered(lambda l: not l.move_id.bom_line_id)"/>
+ <t t-if="no_kit_move_lines">
+ <tr t-att-class="'bg-200 font-weight-bold o_line_section'">
+ <td colspan="99">
+ <span>Products not associated with a kit</span>
+ </td>
+ </tr>
+ <t t-if="has_serial_number">
+ <tr t-foreach="no_kit_move_lines" t-as="move_line">
+ <t t-call="stock.stock_report_delivery_has_serial_move_line"/>
+ </tr>
+ </t>
+ <t t-else="">
+ <t t-set="aggregated_lines" t-value="no_kit_move_lines._get_aggregated_product_quantities()"/>
+ <t t-if="aggregated_lines">
+ <t t-call="stock.stock_report_delivery_aggregated_move_lines"/>
+ </t>
+ </t>
+ </t>
+ </template>
+</odoo>