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