102 lines
3.7 KiB
Python
102 lines
3.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models, _
|
|
|
|
|
|
class ResPartner(models.Model):
|
|
_inherit = 'res.partner'
|
|
|
|
account_represented_company_ids = fields.One2many('res.company', 'account_representative_id')
|
|
|
|
def _get_followup_responsible(self, multiple_responsible=False):
|
|
return self.env.user
|
|
|
|
def open_customer_statement(self):
|
|
action = self.env["ir.actions.actions"]._for_xml_id("account_reports.action_account_report_customer_statement")
|
|
action['params'] = {
|
|
'options': {
|
|
'partner_ids': (self | self.commercial_partner_id).ids,
|
|
'unfold_all': len(self.ids) == 1,
|
|
},
|
|
'ignore_session': True,
|
|
}
|
|
return action
|
|
|
|
def open_follow_up_report(self):
|
|
action = self.env["ir.actions.actions"]._for_xml_id("account_reports.action_account_report_followup")
|
|
action['params'] = {
|
|
'options': {
|
|
'partner_ids': (self | self.commercial_partner_id).ids,
|
|
'unfold_all': len(self.ids) == 1,
|
|
},
|
|
'ignore_session': True,
|
|
}
|
|
return action
|
|
|
|
def open_partner(self):
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'res.partner',
|
|
'res_id': self.id,
|
|
'views': [[False, 'form']],
|
|
'view_mode': 'form',
|
|
'target': 'current',
|
|
}
|
|
|
|
@api.depends_context('show_more_partner_info')
|
|
def _compute_display_name(self):
|
|
if not self.env.context.get('show_more_partner_info'):
|
|
return super()._compute_display_name()
|
|
for partner in self:
|
|
res = ""
|
|
if partner.vat:
|
|
res += f" {partner.vat},"
|
|
if partner.country_id:
|
|
res += f" {partner.country_id.code},"
|
|
partner.display_name = f"{partner.name} - " + res
|
|
|
|
def _get_partner_account_report_attachment(self, report, options=None):
|
|
self.ensure_one()
|
|
if self.lang:
|
|
# Print the followup in the customer's language
|
|
report = report.with_context(lang=self.lang)
|
|
|
|
if not options:
|
|
options = report.get_options({
|
|
'forced_companies': self.env.company.search([('id', 'child_of', self.env.context.get('allowed_company_ids', self.env.company.id))]).ids,
|
|
'partner_ids': self.ids,
|
|
'unfold_all': True,
|
|
'unreconciled': True,
|
|
'all_entries': False,
|
|
})
|
|
attachment_file = report.export_to_pdf(options)
|
|
return self.env['ir.attachment'].create([
|
|
{
|
|
'name': f"{self.name} - {attachment_file['file_name']}",
|
|
'res_model': self._name,
|
|
'res_id': self.id,
|
|
'type': 'binary',
|
|
'raw': attachment_file['file_content'],
|
|
'mimetype': 'application/pdf',
|
|
},
|
|
])
|
|
|
|
def set_commercial_partner_main(self):
|
|
self.ensure_one()
|
|
|
|
main_partner = self
|
|
duplicated_partners = self.env['res.partner'].search([
|
|
('vat', '=', main_partner.vat),
|
|
('id', '!=', main_partner.id)
|
|
])
|
|
# Update commercial partner of all duplicates
|
|
duplicated_partners.write({
|
|
'is_company': False,
|
|
'parent_id': main_partner.id,
|
|
'type': 'invoice',
|
|
})
|
|
duplicated_partners_vat = self.env.context.get('duplicated_partners_vat', [])
|
|
remaining_vats = [pvat for pvat in duplicated_partners_vat if pvat != main_partner.vat]
|
|
return self.env['account.ec.sales.report.handler']._get_duplicated_vat_partners(remaining_vats)
|