File: document.py

package info (click to toggle)
tryton-modules-document-incoming-invoice 7.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 352 kB
  • sloc: python: 262; xml: 26; makefile: 11; sh: 3
file content (58 lines) | stat: -rw-r--r-- 1,878 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 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))
        # 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.set_journal()
        invoice.on_change_party()
        return invoice

    @property
    def supplier_invoice_company(self):
        pass

    @property
    def supplier_invoice_party(self):
        pass