From b09e77dc77c811f973a4c78772a88dc81ab70372 Mon Sep 17 00:00:00 2001 From: Osval Reyes Date: Thu, 19 Nov 2015 15:33:16 -0430 Subject: [PATCH] [REF] crm_rma_lot_mass_return: reverse some changes --- crm_rma_lot_mass_return/__openerp__.py | 2 +- crm_rma_lot_mass_return/tests/__init__.py | 2 +- .../tests/test_crm_rma_lot_mass_return_2.py | 124 ++++++------------ .../wizards/returned_lines_from_serial.py | 21 +-- 4 files changed, 53 insertions(+), 96 deletions(-) diff --git a/crm_rma_lot_mass_return/__openerp__.py b/crm_rma_lot_mass_return/__openerp__.py index c0bf52b9..6792605a 100644 --- a/crm_rma_lot_mass_return/__openerp__.py +++ b/crm_rma_lot_mass_return/__openerp__.py @@ -43,7 +43,7 @@ 'demo': [ 'demo/stock_production_lot.xml', 'demo/purchase_order.xml', - # 'demo/sale_order.xml', + 'demo/sale_order.xml', 'demo/transfer_details.xml', ], 'installable': True, diff --git a/crm_rma_lot_mass_return/tests/__init__.py b/crm_rma_lot_mass_return/tests/__init__.py index 44c35c67..5d0a4480 100644 --- a/crm_rma_lot_mass_return/tests/__init__.py +++ b/crm_rma_lot_mass_return/tests/__init__.py @@ -3,7 +3,7 @@ # # Copyright 2015 Vauxoo # Author: Osval Reyes, -# Yanina Aular +# Yanina Aular # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/crm_rma_lot_mass_return/tests/test_crm_rma_lot_mass_return_2.py b/crm_rma_lot_mass_return/tests/test_crm_rma_lot_mass_return_2.py index e43562ba..b65e3883 100644 --- a/crm_rma_lot_mass_return/tests/test_crm_rma_lot_mass_return_2.py +++ b/crm_rma_lot_mass_return/tests/test_crm_rma_lot_mass_return_2.py @@ -21,7 +21,6 @@ ############################################################################## from openerp.tests.common import TransactionCase -import re class TestCrmRmaLotMassReturn2(TransactionCase): @@ -58,6 +57,10 @@ class TestCrmRmaLotMassReturn2(TransactionCase): }) def test_01_load_products(self): + + # Before continue, invoice must be open to get a number value + # and this is needed by the wizard + wizard_id = self.metasearch_wizard.with_context({ 'active_model': self.claim_id_1._name, 'active_id': self.claim_id_1.id, @@ -90,43 +93,56 @@ class TestCrmRmaLotMassReturn2(TransactionCase): for inv_line in self.sale_order.invoice_ids[0].invoice_line: qty += inv_line.quantity # Validate it has exactly as much records as the taken invoice has - self.assertEqual(len(lines_list_id), int(qty)) + self.assertEqual(len(lines_list_id), + int(qty)) wizard_id._set_message() wizard_id.add_claim_lines() # 2 Macs - self.assertEqual(len(self.claim_id_1.claim_line_ids), 2) + self.assertEqual(len(self.claim_id_1.claim_line_ids), + 2) def test_02_load_products(self): + + # Before continue, invoice must be open to get a number value + # and this is needed by the wizard + wizard_id = self.metasearch_wizard.with_context({ 'active_model': self.claim_id_2._name, 'active_id': self.claim_id_2.id, 'active_ids': [self.claim_id_2.id] }).create({}) - line_str = self.sale_order.invoice_ids[0].number + '*5*A description\n' # Get ids for invoice lines lines_list_id = wizard_id.onchange_load_products( - line_str, [(6, 0, [])])['domain']['lines_list_id'][0][2] + self.sale_order.invoice_ids[0].number + + '*5*description here' + '\n', + [(6, 0, [])])['domain']['lines_list_id'][0][2] option_ids = wizard_id.onchange_load_products( - line_str, [(6, 0, [])])['value']['option_ids'][0][2] + self.sale_order.invoice_ids[0].number + + '*5*description here' + '\n', + [(6, 0, [])])['value']['option_ids'][0][2] wizard_id.option_ids = option_ids - cl_wizard = self.env['claim.line.wizard'].browse(lines_list_id) - mac0001 = cl_wizard.search([('lot_id.name', '=', 'MAC0001')]) - mac0003 = cl_wizard.search([('lot_id.name', '=', 'MAC0003')]) - toner0001 = cl_wizard.search([('product_id.name', - '=', 'Toner Cartridge')]) + items_to_select = self.env['claim.line.wizard'].browse(lines_list_id) + + mac0001 = items_to_select.search([('lot_id.name', '=', 'MAC0001')]) + mac0003 = items_to_select.search([('lot_id.name', '=', 'MAC0003')]) + toner0001 = items_to_select.search([('product_id.name', + '=', 'Toner Cartridge')]) toner0002 = toner0001[1] toner0001 = toner0001[0] - ink0001 = cl_wizard.search([('product_id.name', '=', 'Ink Cartridge')]) + ink0001 = items_to_select.search([('product_id.name', + '=', 'Ink Cartridge')]) wizard_id.lines_list_id = [(6, 0, [mac0001.id, mac0003.id, - toner0001.id, toner0002.id, + toner0001.id, + toner0002.id, ink0001.id])] + # 1 Ink Cartridge, 2 Toner Cartridge, 1 iPad, 5 iMac self.assertEqual(len(lines_list_id), 9) @@ -134,76 +150,16 @@ class TestCrmRmaLotMassReturn2(TransactionCase): for inv_line in self.sale_order.invoice_ids[0].invoice_line: qty += inv_line.quantity # Validate it has exactly as much records as the taken invoice has - self.assertEqual(len(lines_list_id), int(qty)) + self.assertEqual(len(lines_list_id), + int(qty)) + + # wizard_id._set_message() + # regex = re.compile("The following Serial/Lot numbers" + # " won't be added.*MAC0001.*") + # self.assertTrue(regex.match(wizard_id.message)) + wizard_id.add_claim_lines() + # 2 Macs - self.assertEqual(len(self.claim_id_2.claim_line_ids), 5) - - def test_03_claim_line_creation_and_error_message(self): - """ - Challenge the wizard when a claim line is created, to set claim_origin - and the name correctly in a claim line itself, and also it tests the - message displayed to the user when is introduced an Serial/Lot numbers - that already is part of another claim. - """ - - subject_list = self.env['claim.line'].SUBJECT_LIST - lot_name = "MAC0001" - subject_index = 3 - scanned_data = lot_name + '*' + \ - str(subject_index) + '*A short description to test\n' - wizard_id = self.metasearch_wizard.with_context({ - 'active_model': self.claim_id_2._name, - 'active_id': self.claim_id_2.id, - 'active_ids': [self.claim_id_2.id] - }).create({}) - wizard_id.scan_data = scanned_data - - # Get ids for invoice lines - lines_list_id = wizard_id.onchange_load_products( - scanned_data, [(6, 0, [])])['domain']['lines_list_id'][0][2] - - wizard_id.option_id = wizard_id.onchange_load_products( - scanned_data, [(6, 0, [])])['value']['option_ids'][0][2] - - items_to_select = self.env['claim.line.wizard'].browse(lines_list_id) - mac0001 = items_to_select.search([('lot_id.name', '=', lot_name)]) - wizard_id.lines_list_id = [(6, 0, [mac0001.id])] - self.assertEqual(len(lines_list_id), 1) - - wizard_id.add_claim_lines() - self.assertEqual(len(self.claim_id_2.claim_line_ids), 1) - - line_id = self.claim_id_2.claim_line_ids - self.assertEqual( - subject_list[subject_index-1][0], line_id.claim_origin) - self.assertEqual(scanned_data, line_id.prodlot_id.name + '*' - + str(subject_index) + '*' + line_id.name + '\n') - - # create again the wizard - wizard_id = self.metasearch_wizard.with_context({ - 'active_model': self.claim_id_2._name, - 'active_id': self.claim_id_2.id, - 'active_ids': [self.claim_id_2.id] - }).create({}) - wizard_id.scan_data = scanned_data - - # Get ids for invoice lines - lines_list_id = wizard_id.onchange_load_products( - scanned_data, [(6, 0, [])])['domain']['lines_list_id'][0][2] - - wizard_id.option_id = wizard_id.onchange_load_products( - scanned_data, [(6, 0, [])])['value']['option_ids'][0][2] - - cl_wizard = self.env['claim.line.wizard'].browse(lines_list_id) - clw_id = cl_wizard.search([('lot_id.name', '=', lot_name)]) - wizard_id.lines_list_id = [(6, 0, [clw_id.id])] - self.assertEqual(len(lines_list_id), 1) - - wizard_id._set_message() - wizard_id.add_claim_lines() - self.assertEqual(len(self.claim_id_2.claim_line_ids), 1) - - # if the message exists, then it's being displayed - regex = re.compile(".*" + lot_name + ".*") - self.assertTrue(regex.search(wizard_id.message)) + self.assertEqual(len(self.claim_id_2.claim_line_ids), + 5) diff --git a/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py b/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py index 0d6fcee4..a902e595 100644 --- a/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py +++ b/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py @@ -109,6 +109,7 @@ class ReturnedLinesFromSerial(models.TransientModel): else: inv_line = claim_line_wizard.invoice_line_id lot_id = False + line_rec = clima_line.create({ 'claim_id': claim_id, 'claim_origin': claim_origin, @@ -501,23 +502,23 @@ class ReturnedLinesFromSerial(models.TransientModel): info = self.get_data_of_products(self.scan_data) lot_ids = self._get_lot_ids() lot_ids = [lid.id for lid in lot_ids] - clw_ids = set(self._get_lot_ids()) - \ + valid_lot_ids = set(self._get_lot_ids()) - \ set(self._get_invalid_lots_set(lot_ids, True)) - clw_ids = list(clw_ids) + valid_lot_ids = list(valid_lot_ids) # It creates only those claim lines that have a valid production lot, # i. e. not using in others claims info = dict(info) - if clw_ids: - for clw_id in clw_ids: - product_id = clw_id.product_id + if valid_lot_ids: + for lot_id in valid_lot_ids: + product_id = lot_id.product_id claim_line_info = False - if clw_id.lot_id.name in info: - claim_line_info = info.get(clw_id.lot_id.name, False) - elif clw_id.invoice_line_id.invoice_id.number in info: + if lot_id.name in info: + claim_line_info = info.get(lot_id.name, False) + elif lot_id.invoice_line_id.invoice_id.number in info: claim_line_info = \ - info.get(clw_id.invoice_line_id.invoice_id.number, + info.get(lot_id.invoice_line_id.invoice_id.number, False) num = claim_line_info and claim_line_info[0] or '0' @@ -533,7 +534,7 @@ class ReturnedLinesFromSerial(models.TransientModel): self.create_claim_line(self.env.context.get('active_id'), self.env[ 'claim.line']._get_subject(num), - product_id, clw_id, 1, name) + product_id, lot_id, 1, name) # normal execution self.action_cancel()