diff --git a/ext/custom-addons/dp_custom/models/product.py b/ext/custom-addons/dp_custom/models/product.py index f65bba12..9878fe97 100644 --- a/ext/custom-addons/dp_custom/models/product.py +++ b/ext/custom-addons/dp_custom/models/product.py @@ -18,11 +18,11 @@ # along with this program. If not, see . # ############################################################################## +from odoo.addons.component.core import Component + from odoo import fields, models, api, _ from odoo.exceptions import ValidationError -from odoo.addons.component.core import Component - class ProductXCategory(models.Model): _name = 'product.xcategory' @@ -142,21 +142,30 @@ class ProductPricelistItemEventListener(Component): @api.model def on_record_write(self, record, fields=None): - partners = self.env['res.partner'].search([('property_product_pricelist', '=', record.id)]) + partners = self.env['res.partner'].search([('property_product_pricelist', '=', record.pricelist_id.id)]) for partner in partners: - if partner.portal_id and partner.active: + if partner.portal_id and partner.company_type == 'company': partner.portal_export_pending = True @api.model def on_record_create(self, record, fields=None): - partners = self.env['res.partner'].search([('property_product_pricelist', '=', record.id)]) + partners = self.env['res.partner'].search([('property_product_pricelist', '=', record.pricelist_id.id)]) for partner in partners: - if partner.portal_id: + if partner.portal_id and partner.company_type == 'company': partner.portal_export_pending = True @api.model def on_record_unlink(self, record): - partners = self.env['res.partner'].search([('property_product_pricelist', '=', record.id)]) + partners = self.env['res.partner'].search([('property_product_pricelist', '=', record.pricelist_id.id)]) for partner in partners: - if partner.portal_id: + if partner.portal_id and partner.company_type == 'company': partner.portal_export_pending = True + + +class ProductPricelistItem(models.Model): + _inherit = 'product.pricelist.item' + + applied_on = fields.Selection(selection=[ + ('3_global', 'Global'), + ('2_product_category', ' Product Category'), + ('0_product_variant', 'Product Variant')]) diff --git a/ext/custom-addons/dp_custom/models/res_partner.py b/ext/custom-addons/dp_custom/models/res_partner.py index 4462539e..6ea85e64 100644 --- a/ext/custom-addons/dp_custom/models/res_partner.py +++ b/ext/custom-addons/dp_custom/models/res_partner.py @@ -34,17 +34,13 @@ class PartnerEventListener(Component): _apply_on = ['res.partner'] def on_record_write(self, record, fields=None): - if record.active and record.portal_id: - if 'company_type' in fields: - if record.company_type == 'company' and record.type != 'delivery': - self.env['res.partner'].with_delay().job_export_portal_price(record) - if 'property_product_pricelist' in fields: - for contact in record.child_ids: - if contact.type != 'delivery': - self.env['res.partner'].with_delay().job_export_portal_price(contact) - if 'parent_id' in fields: - if record.type != 'delivery': - self.env['res.partner'].with_delay().job_export_portal_price(record) + if record.active and record.portal_id and record.company_type == 'company': + if 'company_type' in fields or 'property_product_pricelist' in fields: + self.env['res.partner'].with_delay().job_export_portal_price(record) + + def on_record_create(self, record, fields=None): + if record.active and record.portal_id and record.company_type == 'company': + self.env['res.partner'].with_delay().job_export_portal_price(record) class Partner(models.Model): @@ -283,8 +279,7 @@ class Partner(models.Model): def cron_export_portal_prices(self): partners = self.search([('portal_export_pending', '=', True), ('company_id', '=', self.env.user.company_id.id)]) for partner in partners: - if partner.type != 'delivery': - self.with_delay().job_export_portal_price(partner) + self.with_delay().job_export_portal_price(partner) partner.portal_export_pending = False @api.multi @@ -296,14 +291,14 @@ class Partner(models.Model): data = [] for item in pricelist.item_ids: if item.compute_price == 'percentage' and item.applied_on in ['3_global', '2_product_category', - '1_product']: + '0_product_variant']: code = False if item.applied_on == '2_product_category': code = item.categ_id.code - if item.applied_on == '1_product': + if item.applied_on == '0_product_variant': code = item.product_tmpl_id.default_code data.append({ - 'customer_id': partner_id.portal_id, + 'customer_id': partner_id.commercial_partner_id.portal_id, 'code': code, 'discount': 1 - (item.percent_price / 100) }) diff --git a/ext/custom-addons/dp_custom/views/product_views.xml b/ext/custom-addons/dp_custom/views/product_views.xml index f532d46e..9d7438e4 100644 --- a/ext/custom-addons/dp_custom/views/product_views.xml +++ b/ext/custom-addons/dp_custom/views/product_views.xml @@ -62,6 +62,17 @@ + + dp_product_pricelist_item_form_view + product.pricelist.item + + + + {'invisible':[('applied_on', '=', '1_product')]} + + + + product_xcategory_form_view product.xcategory diff --git a/ext/custom-addons/dp_custom/wizards/portal_assign_company.py b/ext/custom-addons/dp_custom/wizards/portal_assign_company.py index a87ed3ab..7c8ea910 100644 --- a/ext/custom-addons/dp_custom/wizards/portal_assign_company.py +++ b/ext/custom-addons/dp_custom/wizards/portal_assign_company.py @@ -64,7 +64,7 @@ class PortalAssignCompany(models.TransientModel): # Wichtig hier ist, dass dieser Call vor dem ersten Write stattfindet, da das Portal # parallel einen Call absetzt, dann dann blockieren würde. - self.send_to_portal(partner.portal_id, partner.id) + # self.send_to_portal(partner.portal_id, partner.id) partner.write({'portal_pending': False, 'active': True}) return True