first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
# 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 io import BytesIO
from pypdf import PdfReader, PdfWriter
from trytond.pool import Pool, PoolMeta
from trytond.report import Report
from trytond.transaction import Transaction
class Invoice(metaclass=PoolMeta):
__name__ = 'account.invoice'
@classmethod
def _execute(cls, records, header, data, action):
pool = Pool()
Watermark = pool.get('account.invoice.watermark', type='report')
format_, data = super()._execute(records, header, data, action)
if format_ == 'pdf':
invoice, = records
report_id = cls.get_report_id(invoice)
if report_id is not None:
if invoice.party.lang:
language = invoice.party.lang.code
else:
language = Transaction().language
with Transaction().set_context(language=language):
_, watermark, _, _ = Watermark.execute([invoice.id], {
'action_id': report_id,
})
data = cls.merge(data, watermark)
return format_, data
@classmethod
def get_report_id(cls, invoice):
pool = Pool()
ModelData = pool.get('ir.model.data')
if invoice.state == 'paid':
return ModelData.get_id(
'account_invoice_watermark', 'report_invoice_watermark_paid')
elif invoice.state == 'draft':
return ModelData.get_id(
'account_invoice_watermark', 'report_invoice_watermark_draft')
@classmethod
def merge(cls, invoice, watermark):
output = PdfWriter()
invoice = PdfReader(BytesIO(invoice))
watermark = PdfReader(BytesIO(watermark))
watermark = watermark.pages[0]
for i in range(len(invoice.pages)):
page = invoice.pages[i]
page.merge_page(watermark)
output.add_page(page)
data = BytesIO()
output.write(data)
return data.getvalue()
class InvoiceWatermark(Report):
__name__ = 'account.invoice.watermark'