diff --git a/__init__.py b/__init__.py index 11671ffaead3d4042e93185d6ee1d4b81a032dd5..5ecde703183ac85bbad26d36504d87e633e4d4f3 100644 --- a/__init__.py +++ b/__init__.py @@ -1,4 +1,4 @@ # Copyright 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from . import models, wizard +from . import controllers, models, wizard diff --git a/controllers/__init__.py b/controllers/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..b0c3ec38f45f4fd345016803f0f2bde93f3c2e45 --- /dev/null +++ b/controllers/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2021 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import main diff --git a/controllers/main.py b/controllers/main.py new file mode 100644 index 0000000000000000000000000000000000000000..f175dee8fa8157bde8c25e94aa2462f84456b6f3 --- /dev/null +++ b/controllers/main.py @@ -0,0 +1,65 @@ +# Copyright 2021 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from odoo import SUPERUSER_ID, _, http +from odoo.exceptions import AccessError, MissingError +from odoo.http import request +from odoo.tools import consteq + +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: + raise AccessError(_("Vous n'êtes pas autorisé à accéder à ce document")) + + @http.route( + ["/contract/<int:contract_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 access_token + or not contract_sudo.access_token + or not consteq(contract_sudo.access_token, access_token) + ): + raise AccessError(_("Vous n'êtes pas autorisé à accéder à ce document")) + else: + content_base64 = contract_sudo.document + headers = [ + ("Content-Type", "application/pdf"), + ("Content-Length", len(content_base64)), + ] + + request.make_response(content_base64, headers=headers) diff --git a/report/account_template.xml b/report/account_template.xml index cd4d25a781c340f437480ec9fd6f6c90b84e22aa..e10d1ea7d2c96cab2a2059846fd72380595f39d7 100644 --- a/report/account_template.xml +++ b/report/account_template.xml @@ -464,17 +464,22 @@ </div> </div> - <p t-if="o.producer_id.iban" name="payment_term" > + <p t-if="o.producer_id.iban" name="payment_term"> <div class="row mt32 mb32"> <div class="col-12"> <span class="font-weight-bold" - >Modalités de paiement : règlement par virement</span><br /> + >Modalités de paiement : règlement par virement</span><br + /> <span >Le règlement par virement bancaire doit être effectué sur le compte suivant :</span><br /> - <span>IBAN : <t t-esc="o.producer_id.iban" /></span><br /> - <span>BIC : <t t-esc="o.producer_id.bic" /></span><br /> + <span>IBAN : <t + t-esc="o.producer_id.iban" + /></span><br /> + <span>BIC : <t + t-esc="o.producer_id.bic" + /></span><br /> <br /> <span >Merci de bien vouloir indiquer le numéro de facture sur l’ordre de virement</span> diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index f4fd523374c9c8fbda2a29b36780121e2181243c..647f9df9e0cc4e25f779e3c40c19780d122e3ebb 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -9,10 +9,13 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink "access_acc_sale_price_surplus_wizard_group_user","acc_sale_price_surplus_wizard group_user","model_acc_sale_price_surplus_wizard","base.group_user",1,0,0,0 "access_acc_account_group_partner_manager","acc_account group_partner_manager","model_acc_account","base.group_partner_manager",1,1,1,1 "access_acc_account_group_user","acc_account group_user","model_acc_account","base.group_user",1,0,0,0 +"access_acc_account_group_portal","acc_account group_portal","model_acc_account","base.group_portal",1,0,0,0 "access_acc_account_line_group_partner_manager","acc_account_line group_partner_manager","model_acc_account_line","base.group_partner_manager",1,1,1,1 "access_acc_account_line_group_user","acc_account_line group_user","model_acc_account_line","base.group_user",1,0,0,0 +"access_acc_account_line_group_portal","acc_account_line group_portal","model_acc_account_line","base.group_portal",1,0,0,0 "access_acc_account_tax_group_partner_manager","acc_account_tax group_partner_manager","model_acc_account_tax","base.group_partner_manager",1,1,1,1 "access_acc_account_tax_group_user","acc_account_tax group_user","model_acc_account_tax","base.group_user",1,0,0,0 +"access_acc_account_tax_group_portal","acc_account_tax group_portal","model_acc_account_tax","base.group_portal",1,0,0,0 "access_acc_account_wizard_group_partner_manager","acc_account_wizard group_partner_manager","model_acc_account_wizard","base.group_partner_manager",1,1,1,1 "access_acc_account_wizard_group_user","acc_account_wizard group_user","model_acc_account_wizard","base.group_user",1,0,0,0 "access_acc_account_surplus_wizard_group_partner_manager","acc_account_surplus_wizard group_partner_manager","model_acc_account_surplus_wizard","base.group_partner_manager",1,1,1,1