multicompany - extension: prefix for portal_id
							parent
							
								
									1eed11dce6
								
							
						
					
					
						commit
						cd4a666466
					
				|  | @ -29,6 +29,7 @@ class Company(models.Model): | |||
| 
 | ||||
|     eori_nr = fields.Char(string='EORI-Nr') | ||||
|     fax = fields.Char(related='partner_id.fax') | ||||
|     portal_prefix = fields.Char(string='Portal-Prefix') | ||||
| 
 | ||||
|     @api.model | ||||
|     def set_company_logo(self, company, logo): | ||||
|  |  | |||
|  | @ -27,6 +27,9 @@ from odoo.addons.queue_job.job import job | |||
| from odoo import tools, api, fields, models, _ | ||||
| from odoo.exceptions import ValidationError | ||||
| from dateutil.relativedelta import relativedelta | ||||
| 
 | ||||
| from email.utils import formataddr | ||||
| 
 | ||||
| import dateutil.parser | ||||
| import datetime | ||||
| 
 | ||||
|  | @ -71,6 +74,7 @@ class Partner(models.Model): | |||
|     info_kundennr = fields.Char(string='Info-Kundennr.') | ||||
|     info_uid = fields.Char(string='Info-UID') | ||||
|     endkunde = fields.Boolean(string='Endkunde', help='Beschreibt, ob es ein Endkunde ist') | ||||
|     root = fields.Boolean(string='Stammfirma', help='Diese Firma ist die Stammfirma des Kunden') | ||||
|     portal_pending = fields.Boolean('Erwarte Zuordnung', help='Wird vom Portal bei neuen Unternehmen gesetzt. ' | ||||
|                                                               'Sobald das Unternehmen manuell zugewiesen wurde, ' | ||||
|                                                               'wird das Flag wieder entfernt') | ||||
|  | @ -176,6 +180,48 @@ class Partner(models.Model): | |||
|         :param vals: | ||||
|         :return: | ||||
|         """ | ||||
| 
 | ||||
| #        portal_url = tools.config.get('portal_url') | ||||
| #        portal_url = self.env['ir.config_parameter'].sudo().get_param('ribbon.name') | ||||
|         portal_url = self.env['ir.config_parameter'].get_param('ribbon.name') | ||||
| 
 | ||||
|         self.with_context(sst_1=True).check_not_specified_fields(vals) | ||||
|         vals = self.correct_values(vals) | ||||
|         portal_prefix = self.env.user.company_id.portal_prefix | ||||
|         if portal_prefix: | ||||
|             vals['portal_id'] = portal_prefix + '.' + vals['portal_id'] | ||||
|         if not vals.get('active', False): | ||||
|             vals['active'] = False | ||||
|         vals['is_company'] = True | ||||
|         vals['portal_pending'] = True | ||||
|         vals['root'] = True | ||||
| 
 | ||||
|         # send mail activity to usergroup(with group 'informieren bei neuem Portalkunden, if new company was created | ||||
|         recordset = self.create(vals) | ||||
|         users = self.env.ref('dp_custom.group_inform_on_new_company').users | ||||
| 
 | ||||
|         for user in users: | ||||
|             values = { | ||||
|                 'user_id': user.id, | ||||
|                 'date_deadline': fields.Date.today(), | ||||
|                 'activity_type_id': self.env.ref('mail.mail_activity_data_todo').id, | ||||
|                 'activity_category': 'default', | ||||
|                 'res_id': recordset.id, | ||||
|                 'res_model': recordset._name, | ||||
|                 'res_model_id': self.env.ref('base_partner_sequence.model_res_partner').id, | ||||
|                 'summary': 'Es wurde ein neuer Portalkunde angelegt' | ||||
|             } | ||||
|             self.env['mail.activity'].create(values) | ||||
| 
 | ||||
|         return True | ||||
| 
 | ||||
|     @api.model | ||||
|     def portal_create_company____1(self, vals): | ||||
|         """ | ||||
|         SST-01 | ||||
|         :param vals: | ||||
|         :return: | ||||
|         """ | ||||
|         self.with_context(sst_1=True).check_not_specified_fields(vals) | ||||
|         vals = self.correct_values(vals) | ||||
|         if not vals.get('active', False): | ||||
|  | @ -211,6 +257,9 @@ class Partner(models.Model): | |||
|         """ | ||||
|         self.with_context(sst_14=True).check_not_specified_fields(vals) | ||||
|         vals = self.correct_values(vals) | ||||
|         portal_prefix = self.env.user.company_id.portal_prefix | ||||
|         if portal_prefix: | ||||
|             vals['portal_id'] = portal_prefix + '.' + vals['portal_id'] | ||||
|         return self.create(vals).id | ||||
| 
 | ||||
|     @api.model | ||||
|  | @ -449,8 +498,9 @@ class Partner(models.Model): | |||
|             raise ValidationError(_("Der Partner mit der ID %s hat keine Portal-ID") % partner_id.id) | ||||
| 
 | ||||
|         pricelist = partner_id.property_product_pricelist | ||||
|         lPortal_id = partner_id.commercial_partner_id.portal_id.split('.')[1] | ||||
|         data = { | ||||
|             'customer_id': partner_id.commercial_partner_id.portal_id, | ||||
|             'customer_id': lPortal_id, | ||||
|             'pricelist_id': pricelist.id, | ||||
|             'pricelist_name': pricelist.name, | ||||
|             } | ||||
|  | @ -463,8 +513,12 @@ class Partner(models.Model): | |||
|             if response.status_code == 428: | ||||
|                 self.env['product.pricelist.item'].job_export_portal_pricelist(pricelist.id) | ||||
|             else: | ||||
|                 try: | ||||
|                     data = response.json() | ||||
|                     error_string = data.get('errors', []) | ||||
|                 except: | ||||
|                     error_string = response.reason | ||||
| 
 | ||||
|                 raise ValidationError(_('Rabatt konnte nicht gesetzt werden. ' | ||||
|                                         'Status Code: %s, Reason: %s') % (response.status_code, error_string)) | ||||
| 
 | ||||
|  |  | |||
|  | @ -163,7 +163,10 @@ class SaleOrder(models.Model): | |||
|     def _compute_quote_name(self): | ||||
|         for record in self: | ||||
|             if record.state in ['draft', 'sent']: | ||||
|                 record.quote_name = record.name.replace('ATOC', 'ATOF') | ||||
|                 #                record.quote_name = record.name.replace('ATOC', 'ATOF') | ||||
|                 prefix = record.name[:3] | ||||
|                 newprefix = prefix.replace('OC', 'OF') | ||||
|                 record.quote_name = record.name.replace(prefix, newprefix) | ||||
|             else: | ||||
|                 record.quote_name = record.name | ||||
| 
 | ||||
|  | @ -227,6 +230,7 @@ class SaleOrder(models.Model): | |||
|         :param vals: | ||||
|         :return: | ||||
|         """ | ||||
| #        print('1') | ||||
|         if not vals.get('portal_id', False): | ||||
|             raise ValidationError( | ||||
|                 _("Der Kunde mit der Portal-ID \'%s\' kann nicht zugeordnet werden") % vals['portal_id']) | ||||
|  | @ -236,12 +240,14 @@ class SaleOrder(models.Model): | |||
|                 _('Zu dem Kontakt mit der portal-ID %s existiert kein Unternehmen') % vals['portal_id']) | ||||
|         partner = partner.parent_id | ||||
|         vals['partner_id'] = partner.id | ||||
| #        print('2') | ||||
|         if not partner: | ||||
|             raise ValidationError( | ||||
|                 _("Der Kunde mit der Portal-ID \'%s\' kann nicht zugeordnet werden") % vals['portal_id']) | ||||
|         del vals['portal_id'] | ||||
|         delivery_partner = self.env['res.partner'] | ||||
|         delivery_vals = {} | ||||
| #        print('3') | ||||
|         if vals.get('portal_delivery_id', False): | ||||
|             delivery_partner = self.env['res.partner'].search([('portal_id', '=', vals['portal_delivery_id'])]) | ||||
|             delivery_vals['portal_id'] = vals['portal_delivery_id'] | ||||
|  | @ -251,35 +257,44 @@ class SaleOrder(models.Model): | |||
|                 delivery_vals[key.replace('delivery_', '')] = vals[key] | ||||
|                 del vals[key] | ||||
| 
 | ||||
| #        print('4') | ||||
|         delivery_partner.with_context(delivery_partner=True).check_not_specified_fields(delivery_vals) | ||||
|         delivery_vals = delivery_partner.correct_values(delivery_vals) | ||||
|         delivery_vals['parent_id'] = partner.id | ||||
| 
 | ||||
|         if delivery_partner: | ||||
| #            print('4a') | ||||
|             allowed_update_keys = ['firstname', 'lastname', 'midname', 'email', 'phone'] | ||||
|             for key in list(delivery_vals.keys()): | ||||
|                 if key not in allowed_update_keys: | ||||
|                     del delivery_vals[key] | ||||
| #            print('4a1') | ||||
|             delivery_partner.write(delivery_vals) | ||||
| #            print('4a2') | ||||
|         else: | ||||
| #            print('4b') | ||||
|             if not delivery_vals.get('type', False): | ||||
|                 delivery_vals['type'] = 'delivery' | ||||
|             delivery_vals['property_delivery_carrier_id'] = partner.property_delivery_carrier_id.id | ||||
|             delivery_partner = delivery_partner.create(delivery_vals) | ||||
| 
 | ||||
| #        print('5') | ||||
|         attachment_vals = vals.pop('attachment_ids', False) | ||||
|         order_line_vals = vals.get('order_lines', False) | ||||
| #        if 'attachment_ids' in vals: del vals['attachment_ids'] | ||||
|         del vals['order_lines'] | ||||
| #        print('6') | ||||
|         self.check_not_specified_fields(vals) | ||||
|         vals = self.correct_values(vals) | ||||
|         payment_term = partner.property_payment_term_id | ||||
|         if partner.retail_partner_id: | ||||
|             payment_term = partner.retail_partner_id.property_payment_term_id | ||||
|         addr = partner.address_get(['delivery', 'invoice']) | ||||
| #        print('7') | ||||
|         vals['partner_invoice_id'] = vals.setdefault('partner_invoice_id', addr['invoice']) | ||||
|         partner_invoice_id = self.env['res.partner'].browse([vals['partner_invoice_id']]) | ||||
|         fiscal_position_id = False | ||||
| #        print('8') | ||||
|         if partner_invoice_id: | ||||
|             if partner_invoice_id.property_account_position_id: | ||||
|                 fiscal_position_id = partner_invoice_id.property_account_position_id.id | ||||
|  | @ -293,6 +308,7 @@ class SaleOrder(models.Model): | |||
|             'incoterm': partner.sale_incoterm_id.id, | ||||
|             'carrier_id': delivery_partner.property_delivery_carrier_id.id | ||||
|         }) | ||||
| #        print('9') | ||||
|         order_id = self.create(vals) | ||||
|         if attachment_vals: | ||||
|             order_id.pg_create_sale_order_attachments(attachment_vals) | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ | |||
|         <field name="arch" type="xml"> | ||||
|             <field name="company_registry" position="after"> | ||||
|                 <field name="eori_nr"/> | ||||
|                 <field name="portal_prefix"/> | ||||
|             </field> | ||||
|             <field name="email" position="before"> | ||||
|                 <field name="fax" string="Fax"/> | ||||
|  |  | |||
|  | @ -63,6 +63,7 @@ | |||
|                         <field name="info_uid"/> | ||||
|                         <field name="portal_id"/> | ||||
|                         <field name="portal_export_pending"/> | ||||
|                         <field name="root"/> | ||||
|                         <field name="line_ids" widget="many2many_tags"/> | ||||
|                     </group> | ||||
|                 </group> | ||||
|  |  | |||
|  | @ -36,8 +36,12 @@ class PortalAssignCompany(models.TransientModel): | |||
|         self.ensure_one() | ||||
|         portal_url = tools.config.get('portal_url') | ||||
|         application_id = tools.config.get('portal_secret') | ||||
|         try: | ||||
|             lPortal_id = portal_id.split('.')[1] | ||||
|         except: | ||||
|             lPortal_id = portal_id | ||||
|         data = { | ||||
|             'portal_id': portal_id, | ||||
|             'portal_id': lPortal_id, | ||||
|             'company_odoo_id': odoo_id | ||||
|         } | ||||
|         response = requests.post(portal_url + '/api/v1/set-odoo-id/?secret=' + application_id, | ||||
|  | @ -63,7 +67,7 @@ class PortalAssignCompany(models.TransientModel): | |||
|             raise ValidationError(_('Der Partner konnte nicht gefunden werden.')) | ||||
| 
 | ||||
|         # 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, der dann blockieren würde. | ||||
|         self.send_to_portal(partner.portal_id, partner.id) | ||||
|         partner.write({'portal_pending': False, 'active': True}) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue