mirror of
https://github.com/bringout/oca-ocb-sale.git
synced 2026-04-27 06:52:06 +02:00
19.0 vanilla
This commit is contained in:
parent
79f83631d5
commit
73afc09215
6267 changed files with 1534193 additions and 1130106 deletions
56
odoo-bringout-oca-ocb-sale/sale/models/ir_actions_report.py
Normal file
56
odoo-bringout-oca-ocb-sale/sale/models/ir_actions_report.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import io
|
||||
|
||||
from odoo import models
|
||||
from odoo.tools.pdf import OdooPdfFileReader, OdooPdfFileWriter
|
||||
|
||||
|
||||
class IrActionsReport(models.Model):
|
||||
_inherit = 'ir.actions.report'
|
||||
|
||||
def _render_qweb_pdf_prepare_streams(self, report_ref, data, res_ids=None):
|
||||
# EXTENDS base
|
||||
collected_streams = super()._render_qweb_pdf_prepare_streams(report_ref, data, res_ids=res_ids)
|
||||
|
||||
if (
|
||||
collected_streams
|
||||
and res_ids
|
||||
and len(res_ids) == 1
|
||||
and self._is_sale_order_report(report_ref)
|
||||
):
|
||||
sale_order = self.env['sale.order'].browse(res_ids)
|
||||
builders = sale_order._get_edi_builders()
|
||||
if len(builders) == 0:
|
||||
return collected_streams
|
||||
|
||||
# Read pdf content.
|
||||
pdf_stream = collected_streams[sale_order.id]['stream']
|
||||
pdf_content = pdf_stream.getvalue()
|
||||
reader_buffer = io.BytesIO(pdf_content)
|
||||
reader = OdooPdfFileReader(reader_buffer, strict=False)
|
||||
writer = OdooPdfFileWriter()
|
||||
writer.cloneReaderDocumentRoot(reader)
|
||||
|
||||
# Generate and attach EDI documents from each builder
|
||||
for builder in builders:
|
||||
xml_content = builder._export_order(sale_order)
|
||||
|
||||
writer.addAttachment(
|
||||
builder._export_invoice_filename(sale_order), # works even if it's a SO or PO
|
||||
xml_content,
|
||||
subtype='text/xml'
|
||||
)
|
||||
|
||||
# Replace the current content.
|
||||
pdf_stream.close()
|
||||
new_pdf_stream = io.BytesIO()
|
||||
writer.write(new_pdf_stream)
|
||||
collected_streams[sale_order.id]['stream'] = new_pdf_stream
|
||||
|
||||
return collected_streams
|
||||
|
||||
def _is_sale_order_report(self, report_ref):
|
||||
return self._get_report(report_ref).report_name in (
|
||||
'sale.report_saleorder_document',
|
||||
'sale.report_saleorder',
|
||||
'sale.report_saleorder_raw',
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue