60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
|
|
from trytond.i18n import gettext
|
|
from trytond.model import fields
|
|
from trytond.modules.document_incoming.exceptions import (
|
|
DocumentIncomingProcessError)
|
|
from trytond.pool import Pool, PoolMeta
|
|
|
|
|
|
class IncomingConfiguration(metaclass=PoolMeta):
|
|
__name__ = 'document.incoming.configuration'
|
|
|
|
default_supplier = fields.Many2One('party.party', "Default Supplier")
|
|
|
|
|
|
class Incoming(metaclass=PoolMeta):
|
|
__name__ = 'document.incoming'
|
|
|
|
@classmethod
|
|
def __setup__(cls):
|
|
super().__setup__()
|
|
cls.type.selection.append(
|
|
('supplier_invoice', "Supplier Invoice"))
|
|
|
|
@classmethod
|
|
def _get_results(cls):
|
|
return super()._get_results() | {'account.invoice'}
|
|
|
|
def _process_supplier_invoice(self):
|
|
pool = Pool()
|
|
Invoice = pool.get('account.invoice')
|
|
Configuration = pool.get('document.incoming.configuration')
|
|
config = Configuration(1)
|
|
invoice = Invoice(
|
|
type='in',
|
|
company=self.company or self.supplier_invoice_company)
|
|
if invoice.company:
|
|
invoice.currency = invoice.company.currency
|
|
else:
|
|
raise DocumentIncomingProcessError(gettext(
|
|
'document_incoming_invoice'
|
|
'.msg_supplier_invoice_company',
|
|
document=self.rec_name))
|
|
invoice.on_change_type()
|
|
invoice.on_change_company()
|
|
# set party id after company for context
|
|
party = self.supplier_invoice_party or config.default_supplier
|
|
invoice.party = party.id if party else None
|
|
invoice.on_change_party()
|
|
return invoice
|
|
|
|
@property
|
|
def supplier_invoice_company(self):
|
|
pass
|
|
|
|
@property
|
|
def supplier_invoice_party(self):
|
|
pass
|