From 89fcc0be2fd0ac00d6846e1e8ca22fb84b620c9d Mon Sep 17 00:00:00 2001 From: Sergio Morillo Date: Wed, 24 Nov 2021 21:52:28 +0100 Subject: [PATCH] Allow duplicate on another sale. This commit refs #20872 --- locale/es.po | 4 ++++ sale.py | 36 ++++++++++++++++++++++-------------- view/line_duplicate_form.xml | 4 +++- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/locale/es.po b/locale/es.po index 0bbe4c7..aa4bc4e 100644 --- a/locale/es.po +++ b/locale/es.po @@ -96,4 +96,8 @@ msgstr "Mover" msgctxt "field:sale.line.quick_action.move,sale:" msgid "Sale" +msgstr "Venta" + +msgctxt "field:sale.line.quick_action.duplicate,sale:" +msgid "Sale" msgstr "Venta" \ No newline at end of file diff --git a/sale.py b/sale.py index d4b7ddf..0acb595 100644 --- a/sale.py +++ b/sale.py @@ -136,10 +136,8 @@ class SaleLineQuickActionDuplicate(ModelView): __name__ = 'sale.line.quick_action.duplicate' copies = fields.Integer('Copies', required=True) - - @classmethod - def default_copies(cls): - return 1 + sale = fields.Many2One('sale.sale', 'Sale', required=True, + domain=[('state', '=', 'draft')]) class SaleLineQuickAction(Wizard): @@ -192,11 +190,8 @@ class SaleLineQuickAction(Wizard): } def transition_do_duplicate(self): - pool = Pool() - SaleLine = pool.get('sale.line') - - records = SaleLine.browse(Transaction().context['active_ids']) - SaleLine.copy(records * self.duplicate.copies) + self._create_lines(self.duplicate.sale, + copies=self.duplicate.copies) return 'end' def default_split(self, fields): @@ -223,12 +218,25 @@ class SaleLineQuickAction(Wizard): def _get_split_values(self): return {} - def transition_do_move(self): + def transition_do_move(self, copies=1, delete_lines=True): + self._create_lines(self.move.sale, move=True) + return 'end' + + def _create_lines(self, sale, copies=1, move=False): pool = Pool() SaleLine = pool.get('sale.line') sale_lines = SaleLine.browse(Transaction().context['active_ids']) - SaleLine.copy(sale_lines, default={ - 'sale': self.move.sale.id + SaleLine.copy(sale_lines * copies, default={ + 'sale': sale.id }) - SaleLine.delete(sale_lines) - return 'end' + if move: + SaleLine.delete(sale_lines) + + def default_duplicate(self, fields): + pool = Pool() + SaleLine = pool.get('sale.line') + sale_line = SaleLine(Transaction().context['active_id']) + return { + 'copies': 1, + 'sale': sale_line.sale.id + } diff --git a/view/line_duplicate_form.xml b/view/line_duplicate_form.xml index b1fff4f..e2401a5 100644 --- a/view/line_duplicate_form.xml +++ b/view/line_duplicate_form.xml @@ -2,7 +2,9 @@ -
+ +