diff --git a/stock_custom_picking_report/__init__.py b/stock_custom_picking_report/__init__.py new file mode 100644 index 00000000000..4c4f242fa03 --- /dev/null +++ b/stock_custom_picking_report/__init__.py @@ -0,0 +1 @@ +from . import report diff --git a/stock_custom_picking_report/__manifest__.py b/stock_custom_picking_report/__manifest__.py new file mode 100644 index 00000000000..37c9b15f491 --- /dev/null +++ b/stock_custom_picking_report/__manifest__.py @@ -0,0 +1,12 @@ +{ + "name": "Stock Custom Picking Report", + "application": False, + "installable": True, + "author": "sngoh", + "depends": ["mrp", "stock"], + "license": "LGPL-3", + "data": [ + "report/report_mo_delivery_note.xml", + "report/stock_report_view.xml", + ], +} diff --git a/stock_custom_picking_report/report/__init__.py b/stock_custom_picking_report/report/__init__.py new file mode 100644 index 00000000000..5277f4b5c22 --- /dev/null +++ b/stock_custom_picking_report/report/__init__.py @@ -0,0 +1 @@ +from . import report_mo_delivery_note diff --git a/stock_custom_picking_report/report/report_mo_delivery_note.py b/stock_custom_picking_report/report/report_mo_delivery_note.py new file mode 100644 index 00000000000..1096bfd7caa --- /dev/null +++ b/stock_custom_picking_report/report/report_mo_delivery_note.py @@ -0,0 +1,30 @@ +from odoo import api, models + + +class ReportMODeliveryNote(models.AbstractModel): + _name = "report.stock_custom_picking_report.mo_delivery_note_report" + _description = "MO Delivery Note Report" + + @api.model + def _get_report_values(self, docids, data=None): + docs = self.env["stock.picking"].browse(docids) + filtered_moves_by_picking = {} + + for picking in docs: + linked_mos = picking.move_ids.move_orig_ids.production_id + + if linked_mos: + components = self.env["stock.move"].search( + [ + ("raw_material_production_id", "in", linked_mos.ids), + ("bom_line_id.bom_id.type", "!=", "phantom"), + ] + ) + filtered_moves_by_picking[picking.id] = components + else: + filtered_moves_by_picking[picking.id] = picking.move_ids + + return { + "docs": docs, + "filtered_moves": filtered_moves_by_picking, + } diff --git a/stock_custom_picking_report/report/report_mo_delivery_note.xml b/stock_custom_picking_report/report/report_mo_delivery_note.xml new file mode 100644 index 00000000000..00c61652cc0 --- /dev/null +++ b/stock_custom_picking_report/report/report_mo_delivery_note.xml @@ -0,0 +1,68 @@ + + + + diff --git a/stock_custom_picking_report/report/stock_report_view.xml b/stock_custom_picking_report/report/stock_report_view.xml new file mode 100644 index 00000000000..1f2892986a8 --- /dev/null +++ b/stock_custom_picking_report/report/stock_report_view.xml @@ -0,0 +1,15 @@ + + + + + MO Delivery Note + stock.picking + qweb-pdf + stock_custom_picking_report.mo_delivery_note_report + stock_custom_picking_report.mo_delivery_note_report + 'MO Delivery Note - %s' % (object.name) + + report + + + diff --git a/stock_custom_picking_report/security/ir.model.access.csv b/stock_custom_picking_report/security/ir.model.access.csv new file mode 100644 index 00000000000..a350a90aaaa --- /dev/null +++ b/stock_custom_picking_report/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_report_stock_picking_report_mo_delivery_note_report,access_report_stock_picking_report_mo_delivery_note_report,model_report_stock_custom_picking_report_mo_delivery_note_report,base.group_user,1,1,1,1