Files

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)