Feedback 1671: Preislisten in SST-02

develop
Ahmed Aly 2018-05-16 13:35:01 +02:00
parent eb889a37bd
commit c27c6d5611
4 changed files with 40 additions and 25 deletions

View File

@ -18,11 +18,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
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')])

View File

@ -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)
})

View File

@ -62,6 +62,17 @@
</field>
</record>
<record id="dp_product_pricelist_item_form_view" model="ir.ui.view">
<field name="name">dp_product_pricelist_item_form_view</field>
<field name="model">product.pricelist.item</field>
<field name="inherit_id" ref="product.product_pricelist_item_form_view"/>
<field name="arch" type="xml">
<field name="applied_on" position="attributes">
<attribute name="attrs">{'invisible':[('applied_on', '=', '1_product')]}</attribute>
</field>
</field>
</record>
<record id="product_xcategory_form_view" model="ir.ui.view">
<field name="name">product_xcategory_form_view</field>
<field name="model">product.xcategory</field>

View File

@ -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