Skip to content
Extraits de code Groupes Projets
Valider 20f76fd9 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

[UPD]Change print pdf on app

parent d744d73d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -12,66 +12,115 @@ from odoo.addons.portal.controllers.portal import CustomerPortal
class AccAccountMain(CustomerPortal):
# @http.route(
# ["/invoice/<int:invoice_id>"],
# type="http",
# auth="public",
# website=True,
# method=["GET"],
# csrf=False,
# sitemap=False,
# )
# def print_invoice(self, invoice_id, access_token=None, report_type="pdf", **kw):
# try:
# invoice_sudo = self._document_check_access(
# "acc.account", invoice_id, access_token=access_token
# )
# except (AccessError, MissingError):
# raise AccessError(_("Vous n'êtes pas autorisé à accéder à ce document"))
#
# if report_type == "pdf":
# return self._show_report(
# model=invoice_sudo,
# report_type=report_type,
# report_ref="acc_account.acc_account_invoices",
# download=False,
# )
# else:
# return Response(
# _("Aucun document n'est disponible à cette URL."), status=404
# )
@http.route(
["/invoice/<int:invoice_id>"],
["/contract/<int:contract_id>"],
type="http",
auth="public",
website=True,
method=["GET"],
csrf=False,
sitemap=False,
)
def print_invoice(self, invoice_id, access_token=None, report_type="pdf", **kw):
try:
invoice_sudo = self._document_check_access(
"acc.account", invoice_id, access_token=access_token
)
except (AccessError, MissingError):
raise AccessError(_("Vous n'êtes pas autorisé à accéder à ce document"))
if report_type == "pdf":
return self._show_report(
model=invoice_sudo,
report_type=report_type,
report_ref="acc_account.acc_account_invoices",
download=False,
def print_contract(self, contract_id, access_token=None, **kw):
contract = request.env["acc.contract"].browse([contract_id])
contract_sudo = contract.with_user(SUPERUSER_ID).exists()
if not contract_sudo:
return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
else:
if (
not access_token
or not contract_sudo.access_token
or not consteq(contract_sudo.access_token, access_token)
):
return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
else:
status, headers, content_base64 = (
request.env["ir.http"]
.sudo()
.binary_content(
model="acc.contract",
id=contract_sudo.id,
field="document",
default_mimetype="application/pdf",
download=False,
)
)
content = base64.b64decode(content_base64)
headers = http.set_safe_image_headers(headers, content)
response = request.make_response(content, headers)
response.status_code = status
return response
@http.route(
["/contract/<int:contract_id>"],
["/invoice/<int:invoice_id>"],
type="http",
auth="public",
website=True,
csrf=False,
sitemap=False,
)
def print_contract(self, contract_id, access_token=None, **kw):
contract = request.env["acc.contract"].browse([contract_id])
contract_sudo = contract.with_user(SUPERUSER_ID).exists()
if not contract_sudo:
def print_invoice(self, invoice_id, access_token=None, **kw):
invoice = request.env["acc.account"].browse([invoice_id])
invoice_sudo = invoice.with_user(SUPERUSER_ID).exists()
if not invoice_sudo:
return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
if (
not access_token
or not contract_sudo.access_token
or not consteq(contract_sudo.access_token, access_token)
or not invoice_sudo.access_token
or not consteq(invoice_sudo.access_token, access_token)
):
return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
else:
domain = [("res_model", "=", "acc.account"), ("res_id", "=", invoice_id)]
doc_id = request.env["ir.attachment"].search(domain, limit=1)
if not doc_id:
return Response(
_("Aucun document n'est disponible à cette URL."), status=404
)
else:
status, headers, content_base64 = (
request.env["ir.http"]
.sudo()
.binary_content(
model="acc.contract",
id=contract_sudo.id,
field="document",
model="ir.attachment",
id=doc_id.id,
field="datas",
default_mimetype="application/pdf",
download=False,
)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter