From 4f246258d1d87fb8a6461a19b6e5d4f0d18b033f Mon Sep 17 00:00:00 2001 From: Katherine Zaoral Date: Wed, 5 Dec 2018 18:19:35 -0300 Subject: [PATCH 1/4] [ADD] l10n_ar_website_sale: catch exceptions from update commercial partner. --- l10n_ar_website_sale/__manifest__.py | 2 +- l10n_ar_website_sale/controllers/main.py | 66 +++++-------------- .../wizards/res_config_settings.py | 5 +- 3 files changed, 19 insertions(+), 54 deletions(-) diff --git a/l10n_ar_website_sale/__manifest__.py b/l10n_ar_website_sale/__manifest__.py index 488a17b4..d6bf7cc7 100644 --- a/l10n_ar_website_sale/__manifest__.py +++ b/l10n_ar_website_sale/__manifest__.py @@ -19,7 +19,7 @@ ############################################################################## { 'name': 'e-Commerce Argentina Partner Document', - 'version': '11.0.1.3.1', + 'version': '11.0.1.3.2', 'author': 'ADHOC SA', 'website': 'www.adhoc.com.ar', 'license': 'AGPL-3', diff --git a/l10n_ar_website_sale/controllers/main.py b/l10n_ar_website_sale/controllers/main.py index 30a293f8..844cfbfe 100644 --- a/l10n_ar_website_sale/controllers/main.py +++ b/l10n_ar_website_sale/controllers/main.py @@ -20,62 +20,28 @@ def _get_mandatory_billing_fields(self): ] def _checkout_form_save(self, mode, checkout, all_values): - post_process = False - commercial_partner_id = all_values.get('commercial_partner_id', False) - if commercial_partner_id: - post_process = True + if all_values.get('commercial_partner_id', False): commercial_fields = [ - 'main_id_number', - 'main_id_category_id', - 'afip_responsability_type_id', - ] - values = {} + 'main_id_number', 'main_id_category_id', + 'afip_responsability_type_id'] for item in commercial_fields: - values.update({ - item: checkout.pop(item, all_values.pop(item)) - }) - + checkout.pop(item, False) + all_values.pop(item, False) res = super(L10nArWebsiteSale, self)._checkout_form_save( mode=mode, checkout=checkout, all_values=all_values) - - if post_process: - commercial_partner = request.env['res.partner'].browse( - int(commercial_partner_id)) - values = self.remove_readonly_required_fields( - commercial_partner, commercial_fields, values) - if values: - commercial_partner.sudo().write(values) return res - def remove_readonly_required_fields( - self, record, required_fields, values): - """ In some cases we have information showed to the user in the form - that is required but that is already set and reaadonly. - We do not really update this fields and then here we are trying to - write them: the problem is that this fields has a constraint if - we are trying to re-write them (even when is the same value). - - This method remove this (field, values) for the values to write in - order to do avoid the constraint and not re-writed again when they - has been already writed. - - param: @record (recordset) the recorset to compore - param: @required_fields: (list) fields of the fields that we want to - check - param: @values (dict) the values of the web form - - return: the same values to write and they do not include - required/readonly fields. - """ - for r_field in required_fields: - value = values.get(r_field) - if r_field.endswith('_id'): - if str(record[r_field].id) == value: - values.pop(r_field, False) - else: - if record[r_field] == value: - values.pop(r_field, False) - return values + def checkout_form_validate(self, mode, all_form_values, data): + error, error_message = super( + L10nArWebsiteSale, self).checkout_form_validate( + mode=mode, all_form_values=all_form_values, data=data) + write_error, write_message = \ + request.env['res.partner'].sudo().try_write_commercial( + all_form_values) + if write_error: + error.update(write_error) + error_message.extend(write_message) + return error, error_message @route() def address(self, **kw): diff --git a/l10n_ar_website_sale/wizards/res_config_settings.py b/l10n_ar_website_sale/wizards/res_config_settings.py index 8b7ad259..34ee8ce8 100644 --- a/l10n_ar_website_sale/wizards/res_config_settings.py +++ b/l10n_ar_website_sale/wizards/res_config_settings.py @@ -18,11 +18,10 @@ class ResConfigSettings(models.TransientModel): @api.model def get_values(self): res = super(ResConfigSettings, self).get_values() - res.update( - sale_use_taxes_default= + res.update({'sale_use_taxes_default': self.env['ir.config_parameter'].sudo().get_param( 'l10n_ar_website_sale.sale_use_taxes_default', 'b2c'), - ) + }) return res @api.multi From 02ea576ff100e22e0a75721f3d8d3708f570fc81 Mon Sep 17 00:00:00 2001 From: Katherine Zaoral Date: Fri, 7 Dec 2018 10:43:16 -0300 Subject: [PATCH 2/4] t1. use new and write after. --- l10n_ar_website_sale/controllers/main.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/l10n_ar_website_sale/controllers/main.py b/l10n_ar_website_sale/controllers/main.py index 844cfbfe..d66e2a17 100644 --- a/l10n_ar_website_sale/controllers/main.py +++ b/l10n_ar_website_sale/controllers/main.py @@ -20,27 +20,33 @@ def _get_mandatory_billing_fields(self): ] def _checkout_form_save(self, mode, checkout, all_values): - if all_values.get('commercial_partner_id', False): - commercial_fields = [ - 'main_id_number', 'main_id_category_id', - 'afip_responsability_type_id'] + # Extract data from commercial partner + commercial_partner, commercial_fields, values = \ + request.env['res.partner'].get_commercial_data( + all_values, checkout) + if commercial_partner: for item in commercial_fields: checkout.pop(item, False) all_values.pop(item, False) + res = super(L10nArWebsiteSale, self)._checkout_form_save( mode=mode, checkout=checkout, all_values=all_values) + + # Write data on commercial partner + if commercial_partner and values: + commercial_partner.sudo().write(values) return res def checkout_form_validate(self, mode, all_form_values, data): error, error_message = super( L10nArWebsiteSale, self).checkout_form_validate( mode=mode, all_form_values=all_form_values, data=data) - write_error, write_message = \ - request.env['res.partner'].sudo().try_write_commercial( + exc_error, exc_message = \ + request.env['res.partner'].sudo().catch_number_id_exceptions( all_form_values) - if write_error: - error.update(write_error) - error_message.extend(write_message) + if exc_error: + error.update(exc_error) + error_message.extend(exc_message) return error, error_message @route() From 0e38ce5baa957ff7dee6801f8dfb14626eda0feb Mon Sep 17 00:00:00 2001 From: Katherine Zaoral Date: Fri, 7 Dec 2018 10:44:34 -0300 Subject: [PATCH 3/4] t2. using get_commercial_data allways --- l10n_ar_website_sale/controllers/main.py | 47 ++++++++++++------- .../views/l10n_ar_website_sale_templates.xml | 2 +- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/l10n_ar_website_sale/controllers/main.py b/l10n_ar_website_sale/controllers/main.py index d66e2a17..223d351e 100644 --- a/l10n_ar_website_sale/controllers/main.py +++ b/l10n_ar_website_sale/controllers/main.py @@ -21,9 +21,8 @@ def _get_mandatory_billing_fields(self): def _checkout_form_save(self, mode, checkout, all_values): # Extract data from commercial partner - commercial_partner, commercial_fields, values = \ - request.env['res.partner'].get_commercial_data( - all_values, checkout) + commercial_partner, commercial_fields, values = checkout.pop( + 'commercial_data', all_values.pop('commercial_data', False)) if commercial_partner: for item in commercial_fields: checkout.pop(item, False) @@ -41,9 +40,12 @@ def checkout_form_validate(self, mode, all_form_values, data): error, error_message = super( L10nArWebsiteSale, self).checkout_form_validate( mode=mode, all_form_values=all_form_values, data=data) + + # Validate commercial partner + commercial_partner, _cf, values = all_form_values.pop( + 'commercial_data', data.pop('commercial_data', False)) exc_error, exc_message = \ - request.env['res.partner'].sudo().catch_number_id_exceptions( - all_form_values) + commercial_partner.sudo().catch_number_id_exceptions(values) if exc_error: error.update(exc_error) error_message.extend(exc_message) @@ -51,19 +53,28 @@ def checkout_form_validate(self, mode, all_form_values, data): @route() def address(self, **kw): - response = super(L10nArWebsiteSale, self).address(**kw) - document_categories = request.env[ - 'res.partner.id_category'].sudo().search([]) - afip_responsabilities = request.env[ - 'afip.responsability.type'].sudo().search([]) - uid = request.session.uid or request.env.ref('base.public_user').id - Partner = request.env['res.users'].browse(uid).partner_id - Partner = Partner.with_context(show_address=1).sudo() - response.qcontext.update({ - 'document_categories': document_categories, - 'afip_responsabilities': afip_responsabilities, - 'partner': Partner, - }) + try: + commercial_data = \ + request.env['res.partner'].sudo().get_commercial_data(kw) + kw.update({'commercial_data': commercial_data}) + + response = super(L10nArWebsiteSale, self).address(**kw) + + document_categories = request.env[ + 'res.partner.id_category'].sudo().search([]) + afip_responsabilities = request.env[ + 'afip.responsability.type'].sudo().search([]) + uid = request.session.uid or request.env.ref('base.public_user').id + Partner = request.env['res.users'].browse(uid).partner_id + Partner = Partner.with_context(show_address=1).sudo() + response.qcontext.update({ + 'document_categories': document_categories, + 'afip_responsabilities': afip_responsabilities, + 'partner': Partner, + }) + except Exception as error: + print("ERROR: %s" % error) + import pdb; pdb.post_mortem() return response # TODO review: Aca podria ser necesario pasar el afip_responsabilities diff --git a/l10n_ar_website_sale/views/l10n_ar_website_sale_templates.xml b/l10n_ar_website_sale/views/l10n_ar_website_sale_templates.xml index bb661e8a..39653135 100644 --- a/l10n_ar_website_sale/views/l10n_ar_website_sale_templates.xml +++ b/l10n_ar_website_sale/views/l10n_ar_website_sale_templates.xml @@ -96,7 +96,7 @@ From 06f9d362fcad2d4491085cc4610e19cde9ffe585 Mon Sep 17 00:00:00 2001 From: Katherine Zaoral Date: Fri, 7 Dec 2018 11:49:47 -0300 Subject: [PATCH 4/4] test3 --- l10n_ar_website_sale/controllers/main.py | 65 ++++++++++++------------ 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/l10n_ar_website_sale/controllers/main.py b/l10n_ar_website_sale/controllers/main.py index 223d351e..d5a52b42 100644 --- a/l10n_ar_website_sale/controllers/main.py +++ b/l10n_ar_website_sale/controllers/main.py @@ -21,9 +21,12 @@ def _get_mandatory_billing_fields(self): def _checkout_form_save(self, mode, checkout, all_values): # Extract data from commercial partner - commercial_partner, commercial_fields, values = checkout.pop( - 'commercial_data', all_values.pop('commercial_data', False)) + post_process = False + commercial_partner, commercial_fields, values = \ + request.env['res.partner'].sudo().get_commercial_data( + all_values) if commercial_partner: + post_process = True for item in commercial_fields: checkout.pop(item, False) all_values.pop(item, False) @@ -32,8 +35,9 @@ def _checkout_form_save(self, mode, checkout, all_values): mode=mode, checkout=checkout, all_values=all_values) # Write data on commercial partner - if commercial_partner and values: - commercial_partner.sudo().write(values) + if post_process: + if commercial_partner and values: + commercial_partner.sudo().write(values) return res def checkout_form_validate(self, mode, all_form_values, data): @@ -42,39 +46,34 @@ def checkout_form_validate(self, mode, all_form_values, data): mode=mode, all_form_values=all_form_values, data=data) # Validate commercial partner - commercial_partner, _cf, values = all_form_values.pop( - 'commercial_data', data.pop('commercial_data', False)) - exc_error, exc_message = \ - commercial_partner.sudo().catch_number_id_exceptions(values) - if exc_error: - error.update(exc_error) - error_message.extend(exc_message) + main_id_number = data.get('main_id_number', all_form_values) + main_id_category_id = data.get('main_id_category_id', all_form_values) + if main_id_number and main_id_category_id: + commercial_partner, _commercial_fields, values = \ + request.env['res.partner'].sudo().get_commercial_data( + all_form_values, data) + exc_error, exc_message = \ + commercial_partner.sudo().catch_number_id_exceptions(values) + if exc_error: + error.update(exc_error) + error_message.extend(exc_message) return error, error_message @route() def address(self, **kw): - try: - commercial_data = \ - request.env['res.partner'].sudo().get_commercial_data(kw) - kw.update({'commercial_data': commercial_data}) - - response = super(L10nArWebsiteSale, self).address(**kw) - - document_categories = request.env[ - 'res.partner.id_category'].sudo().search([]) - afip_responsabilities = request.env[ - 'afip.responsability.type'].sudo().search([]) - uid = request.session.uid or request.env.ref('base.public_user').id - Partner = request.env['res.users'].browse(uid).partner_id - Partner = Partner.with_context(show_address=1).sudo() - response.qcontext.update({ - 'document_categories': document_categories, - 'afip_responsabilities': afip_responsabilities, - 'partner': Partner, - }) - except Exception as error: - print("ERROR: %s" % error) - import pdb; pdb.post_mortem() + response = super(L10nArWebsiteSale, self).address(**kw) + document_categories = request.env[ + 'res.partner.id_category'].sudo().search([]) + afip_responsabilities = request.env[ + 'afip.responsability.type'].sudo().search([]) + uid = request.session.uid or request.env.ref('base.public_user').id + Partner = request.env['res.users'].browse(uid).partner_id + Partner = Partner.with_context(show_address=1).sudo() + response.qcontext.update({ + 'document_categories': document_categories, + 'afip_responsabilities': afip_responsabilities, + 'partner': Partner, + }) return response # TODO review: Aca podria ser necesario pasar el afip_responsabilities