Feedback 1671: Preislisten in SST-02
							parent
							
								
									eb889a37bd
								
							
						
					
					
						commit
						c27c6d5611
					
				|  | @ -18,11 +18,11 @@ | ||||||
| #    along with this program.  If not, see <http://www.gnu.org/licenses/>. | #    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 import fields, models, api, _ | ||||||
| from odoo.exceptions import ValidationError | from odoo.exceptions import ValidationError | ||||||
| 
 | 
 | ||||||
| from odoo.addons.component.core import Component |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| class ProductXCategory(models.Model): | class ProductXCategory(models.Model): | ||||||
|     _name = 'product.xcategory' |     _name = 'product.xcategory' | ||||||
|  | @ -142,21 +142,30 @@ class ProductPricelistItemEventListener(Component): | ||||||
| 
 | 
 | ||||||
|     @api.model |     @api.model | ||||||
|     def on_record_write(self, record, fields=None): |     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: |         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 |                 partner.portal_export_pending = True | ||||||
| 
 | 
 | ||||||
|     @api.model |     @api.model | ||||||
|     def on_record_create(self, record, fields=None): |     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: |         for partner in partners: | ||||||
|             if partner.portal_id: |             if partner.portal_id and partner.company_type == 'company': | ||||||
|                 partner.portal_export_pending = True |                 partner.portal_export_pending = True | ||||||
| 
 | 
 | ||||||
|     @api.model |     @api.model | ||||||
|     def on_record_unlink(self, record): |     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: |         for partner in partners: | ||||||
|             if partner.portal_id: |             if partner.portal_id and partner.company_type == 'company': | ||||||
|                 partner.portal_export_pending = True |                 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')]) | ||||||
|  |  | ||||||
|  | @ -34,16 +34,12 @@ class PartnerEventListener(Component): | ||||||
|     _apply_on = ['res.partner'] |     _apply_on = ['res.partner'] | ||||||
| 
 | 
 | ||||||
|     def on_record_write(self, record, fields=None): |     def on_record_write(self, record, fields=None): | ||||||
|         if record.active and record.portal_id: |         if record.active and record.portal_id and record.company_type == 'company': | ||||||
|             if 'company_type' in fields: |             if 'company_type' in fields or 'property_product_pricelist' in fields: | ||||||
|                 if record.company_type == 'company' and record.type != 'delivery': |  | ||||||
|                 self.env['res.partner'].with_delay().job_export_portal_price(record) |                 self.env['res.partner'].with_delay().job_export_portal_price(record) | ||||||
|             if 'property_product_pricelist' in fields: | 
 | ||||||
|                 for contact in record.child_ids: |     def on_record_create(self, record, fields=None): | ||||||
|                     if contact.type != 'delivery': |         if record.active and record.portal_id and record.company_type == 'company': | ||||||
|                         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) |             self.env['res.partner'].with_delay().job_export_portal_price(record) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -283,7 +279,6 @@ class Partner(models.Model): | ||||||
|     def cron_export_portal_prices(self): |     def cron_export_portal_prices(self): | ||||||
|         partners = self.search([('portal_export_pending', '=', True), ('company_id', '=', self.env.user.company_id.id)]) |         partners = self.search([('portal_export_pending', '=', True), ('company_id', '=', self.env.user.company_id.id)]) | ||||||
|         for partner in partners: |         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 |             partner.portal_export_pending = False | ||||||
| 
 | 
 | ||||||
|  | @ -296,14 +291,14 @@ class Partner(models.Model): | ||||||
|         data = [] |         data = [] | ||||||
|         for item in pricelist.item_ids: |         for item in pricelist.item_ids: | ||||||
|             if item.compute_price == 'percentage' and item.applied_on in ['3_global', '2_product_category', |             if item.compute_price == 'percentage' and item.applied_on in ['3_global', '2_product_category', | ||||||
|                                                                           '1_product']: |                                                                           '0_product_variant']: | ||||||
|                 code = False |                 code = False | ||||||
|                 if item.applied_on == '2_product_category': |                 if item.applied_on == '2_product_category': | ||||||
|                     code = item.categ_id.code |                     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 |                     code = item.product_tmpl_id.default_code | ||||||
|                 data.append({ |                 data.append({ | ||||||
|                     'customer_id': partner_id.portal_id, |                     'customer_id': partner_id.commercial_partner_id.portal_id, | ||||||
|                     'code': code, |                     'code': code, | ||||||
|                     'discount': 1 - (item.percent_price / 100) |                     'discount': 1 - (item.percent_price / 100) | ||||||
|                 }) |                 }) | ||||||
|  |  | ||||||
|  | @ -62,6 +62,17 @@ | ||||||
|         </field> |         </field> | ||||||
|     </record> |     </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"> |     <record id="product_xcategory_form_view" model="ir.ui.view"> | ||||||
|         <field name="name">product_xcategory_form_view</field> |         <field name="name">product_xcategory_form_view</field> | ||||||
|         <field name="model">product.xcategory</field> |         <field name="model">product.xcategory</field> | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ class PortalAssignCompany(models.TransientModel): | ||||||
| 
 | 
 | ||||||
|         # Wichtig hier ist, dass dieser Call vor dem ersten Write stattfindet, da das Portal |         # Wichtig hier ist, dass dieser Call vor dem ersten Write stattfindet, da das Portal | ||||||
|         # parallel einen Call absetzt, dann dann blockieren würde. |         # 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}) |         partner.write({'portal_pending': False, 'active': True}) | ||||||
| 
 | 
 | ||||||
|         return True |         return True | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue