diff --git a/sale_order_merge/__init__.py b/sale_order_merge/__init__.py new file mode 100644 index 00000000..9a7e03ed --- /dev/null +++ b/sale_order_merge/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/sale_order_merge/__manifest__.py b/sale_order_merge/__manifest__.py new file mode 100644 index 00000000..30716421 --- /dev/null +++ b/sale_order_merge/__manifest__.py @@ -0,0 +1,15 @@ +{ + 'name': "Junção de orçamentos em um único pedido", + 'summary': """Permite juntar pedidos de venda""", + 'description': """Permite juntar pedidos de venda""", + "author": "Trust-Code", + "license": "LGPL-3", + 'category': 'Sales', + 'version': '14.0', + 'depends': [ + 'sale', + ], + 'data': [ + "views/sale_order.xml", + ] +} diff --git a/sale_order_merge/models/__init__.py b/sale_order_merge/models/__init__.py new file mode 100644 index 00000000..67427f49 --- /dev/null +++ b/sale_order_merge/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order \ No newline at end of file diff --git a/sale_order_merge/models/sale_order.py b/sale_order_merge/models/sale_order.py new file mode 100644 index 00000000..bfbb95ef --- /dev/null +++ b/sale_order_merge/models/sale_order.py @@ -0,0 +1,21 @@ +from odoo import api, fields, models +from odoo.exceptions import UserError + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + def merge_and_confirm_sale_order(self): + orders = self.filtered(lambda x: x.state in ('draft', 'sent')) + partners = orders.mapped('partner_id.commercial_partner_id') + if len(partners) > 1: + raise UserError('Apenas orçamentos para a mesma empresa podem ser confirmados') + + new_order = orders[0].copy({'order_line': []}) + + for order in orders: + for line in order.order_line: + line.copy({'order_id': new_order.id}) + order.action_cancel() + + new_order.action_confirm() \ No newline at end of file diff --git a/sale_order_merge/views/sale_order.xml b/sale_order_merge/views/sale_order.xml new file mode 100644 index 00000000..0d3feafb --- /dev/null +++ b/sale_order_merge/views/sale_order.xml @@ -0,0 +1,15 @@ + + + + Confirmar orçamentos + ir.actions.server + + + code + + if records: + action = records.merge_and_confirm_sale_order() + + + + \ No newline at end of file