Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FIX] l10n_it_fatturapa: link fatturapa.attachments #4250

Merged
merged 2 commits into from
Jul 18, 2024

Conversation

micheledic
Copy link
Contributor

@micheledic micheledic commented Jul 4, 2024

Seguendo questa PR #4107 il problema rimane sugli eventuali allegati contenuti nella fattura elettronica ( fatturapa.attachments)
Riuso lo stesso abstract per allineare correttamente fatturapa.attachments

Risolve #4264

@francesco-ooops
Copy link
Contributor

@SirAionTech puoi verificare?

@SirAionTech
Copy link
Contributor

@SirAionTech puoi verificare?

Non so come riprodurre il problema quindi non posso verificare

@micheledic
Copy link
Contributor Author

micheledic commented Jul 11, 2024

@SirAionTech puoi verificare?

Non so come riprodurre il problema quindi non posso verificare

Per simulare il problema:

  • Importa un XML fattura con degli allegati all'interno dell'XML con utente A così che crea fatturapa.attachments (che sono gli allegati in base64 contenuti all'interno dell'XML)
  • Entra con utente B nella fattura importata ed esce errore perchè fatturapa.attachments ha un ir.attachment senza res_id e res_model e quindi per behaviour nativo di Odoo, se un ir.attachment non ha res_id/res_model (su cui fa il check dei permessi) , può accedervi SOLO l'utente che l'ha creato ... Lo stesso problema c'era prima del merge della PR [FIX] Import zip file e-fatture non possibile se non si hanno i diritti da Amministratore. Il sistema rimporta errore generico #4107 su fatturapa.attachment.in/fatturapa.attachment.out

@SirAionTech
Copy link
Contributor

@SirAionTech puoi verificare?

Non so come riprodurre il problema quindi non posso verificare

Per simulare il problema:

  • Importa un XML fattura con degli allegati all'interno dell'XML con utente A così che crea fatturapa.attachments (che sono gli allegati in base64 contenuti all'interno dell'XML)
  • Entra con utente B nella fattura importata ed esce errore perchè fatturapa.attachments ha un ir.attachment senza res_id e res_model e quindi per behaviour nativo di Odoo, se un ir.attachment non ha res_id/res_model (su cui fa il check dei permessi) , può accedervi SOLO l'utente che l'ha creato ... Lo stesso problema c'era prima del merge della PR [FIX] Import zip file e-fatture non possibile se non si hanno i diritti da Amministratore. Il sistema rimporta errore generico #4107 su fatturapa.attachment.in/fatturapa.attachment.out

Grazie, puoi riportare il tutto in una issue come descritto in https://github.com/OCA/l10n-italy/wiki/Team-di-sviluppo#apertura-issue?

@micheledic
Copy link
Contributor Author

@SirAionTech puoi verificare?

Non so come riprodurre il problema quindi non posso verificare

Per simulare il problema:

  • Importa un XML fattura con degli allegati all'interno dell'XML con utente A così che crea fatturapa.attachments (che sono gli allegati in base64 contenuti all'interno dell'XML)
  • Entra con utente B nella fattura importata ed esce errore perchè fatturapa.attachments ha un ir.attachment senza res_id e res_model e quindi per behaviour nativo di Odoo, se un ir.attachment non ha res_id/res_model (su cui fa il check dei permessi) , può accedervi SOLO l'utente che l'ha creato ... Lo stesso problema c'era prima del merge della PR [FIX] Import zip file e-fatture non possibile se non si hanno i diritti da Amministratore. Il sistema rimporta errore generico #4107 su fatturapa.attachment.in/fatturapa.attachment.out

Grazie, puoi riportare il tutto in una issue come descritto in https://github.com/OCA/l10n-italy/wiki/Team-di-sviluppo#apertura-issue?

#4264 fatto

@francesco-ooops francesco-ooops linked an issue Jul 11, 2024 that may be closed by this pull request
2 tasks
Copy link
Contributor

@SirAionTech SirAionTech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ho provato in runboat a seguire i passi descritti in #4264 e non ottengo errori:

Screencast.from.11-07-2024.16.40.36.webm

la fattura creata è in http://oca-l10n-italy-16-0-79f19bb8345f.runboat.odoo-community.org/web#id=47&cids=1&model=account.move&view_type=form&menu_id=140

@micheledic
Copy link
Contributor Author

Ho provato in runboat a seguire i passi descritti in #4264 e non ottengo errori:

Screencast.from.11-07-2024.16.40.36.webm
la fattura creata è in http://oca-l10n-italy-16-0-79f19bb8345f.runboat.odoo-community.org/web#id=47&cids=1&model=account.move&view_type=form&menu_id=140

Cliccando con user b sull'allegato :
image

@SirAionTech
Copy link
Contributor

Ho provato in runboat a seguire i passi descritti in #4264 e non ottengo errori:
Screencast.from.11-07-2024.16.40.36.webm
la fattura creata è in http://oca-l10n-italy-16-0-79f19bb8345f.runboat.odoo-community.org/web#id=47&cids=1&model=account.move&view_type=form&menu_id=140

Cliccando con user b sull'allegato : image

Ah ecco, dalla descrizione della issue avevo capito che veniva fuori un errore appena si apriva la fattura, puoi aggiungere nella issue che è questo l'errore cui ti riferisci?
Ora riprovo

Copy link
Contributor

@SirAionTech SirAionTech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grazie della PR!
Ho verificato che il problema esiste in 16.0 e viene corretto da queste modifiche.
Ho provato anche la migrazione e risolve il problema sui dati esistenti.
Stranamente, non sono riuscito a riprodurre il problema quando c'è installato solo l10n_it_fatturapa_in 🤷.
Sai mica come mai?

Puoi aggiungere un test che fallisce senza questa fix? Ci sono diversi esempi nella PR #4107 che hai linkato in descrizione.
Non credo possa andare in questo modulo perché qui non puoi creare fatture elettroniche, però puoi aggiungerlo in un altro modulo che dipende da questo; preferibilmente in un commit separato come fatto in #4107.

l10n_it_fatturapa/static/description/index.html Outdated Show resolved Hide resolved
l10n_it_fatturapa/migrations/16.0.1.1.1/post-migrate.py Outdated Show resolved Hide resolved
@micheledic micheledic force-pushed the 16.0_fix_l10n_it_fatturapa_attachments branch 5 times, most recently from 89e4db2 to f38e01c Compare July 12, 2024 06:52
@micheledic micheledic force-pushed the 16.0_fix_l10n_it_fatturapa_attachments branch 2 times, most recently from e266c1a to 469e4e1 Compare July 12, 2024 07:04
@micheledic
Copy link
Contributor Author

Grazie della PR! Ho verificato che il problema esiste in 16.0 e viene corretto da queste modifiche. Ho provato anche la migrazione e risolve il problema sui dati esistenti. Stranamente, non sono riuscito a riprodurre il problema quando c'è installato solo l10n_it_fatturapa_in 🤷. Sai mica come mai?

Puoi aggiungere un test che fallisce senza questa fix? Ci sono diversi esempi nella PR #4107 che hai linkato in descrizione. Non credo possa andare in questo modulo perché qui non puoi creare fatture elettroniche, però puoi aggiungerlo in un altro modulo che dipende da questo; preferibilmente in un commit separato come fatto in #4107.

Il problema probabilmente si presenta con l10n_it_fatturapa_out installato per questa compute che accede a doc_attachments e non avendo i permessi esce errore , anche se in caso di fattura IN nono dovrebbe capitare...

A questo field ci accede un altra compute presente su account.move

has_pdf_invoice_print = fields.Boolean(
        related="fatturapa_attachment_out_id.has_pdf_invoice_print", readonly=True
    )
 @api.depends("out_invoice_ids.fatturapa_doc_attachments.is_pdf_invoice_print")
    def _compute_has_pdf_invoice_print(self):
        """Check if all the invoices related to this attachment
        have at least one attachment containing
        the PDF report of the invoice"""
        for attachment_out in self:
            attachment_out.has_pdf_invoice_print = False
            for invoice in attachment_out.out_invoice_ids:
                invoice_attachments = invoice.fatturapa_doc_attachments`

@micheledic
Copy link
Contributor Author

@SirAionTech quel test in fail di cosa si tratta ? devo occuparmene o possiamo non considerarlo?

@SirAionTech
Copy link
Contributor

@SirAionTech quel test in fail di cosa si tratta ? devo occuparmene o possiamo non considerarlo?

I check del coverage non sono obbligatori, non serve che ci fai nulla

@SirAionTech
Copy link
Contributor

Quando hai fatto ricorda di chiedermi di aggiornare al review:
image

(da https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review)

@micheledic micheledic requested a review from SirAionTech July 12, 2024 08:16
@micheledic
Copy link
Contributor Author

Quando hai fatto ricorda di chiedermi di aggiornare al review: image

(da https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review)

fatto!

Copy link
Contributor

@SirAionTech SirAionTech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A parte la modifica minima suggerita sotto, il problema è che il test aggiunto non verifica la fix: il test aggiunto dovrebbe fallire quando la fix non è presente.
Potrebbe dipendere da quello che scrivevi in #4250 (comment)? Se è così forse ti conviene mettere un test invece in l10n_it_fatturapa_out.

l10n_it_fatturapa_in/tests/test_import_fatturapa_xml.py Outdated Show resolved Hide resolved
@micheledic micheledic force-pushed the 16.0_fix_l10n_it_fatturapa_attachments branch from 469e4e1 to d01553d Compare July 12, 2024 10:02
@micheledic
Copy link
Contributor Author

micheledic commented Jul 12, 2024

A parte la modifica minima suggerita sotto, il problema è che il test aggiunto non verifica la fix: il test aggiunto dovrebbe fallire quando la fix non è presente. Potrebbe dipendere da quello che scrivevi in #4250 (comment)? Se è così forse ti conviene mettere un test invece in l10n_it_fatturapa_out.

Ho provato a vedere nella PR #4107 e i test verificano solo che è possibile accedere dopo il fix con assertTrue...
Considerando che il fix allinea res_id e res_model alla create del ir.attachment, non saprei come testarlo visto che è un change proprio facendo l'override della create del mixin( e quindi includendolo nel commit, si verifica sempre )...
Il mixin è presente dalla #4107 e ho fatto l'inherit in fatturapa.attachments così che si triggeri ad ogni create

Per il piccolo cambio richiesto sotto invece , l'ho fatto

@micheledic micheledic requested a review from SirAionTech July 12, 2024 10:04
Copy link
Contributor

@SirAionTech SirAionTech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A parte la modifica minima suggerita sotto, il problema è che il test aggiunto non verifica la fix: il test aggiunto dovrebbe fallire quando la fix non è presente. Potrebbe dipendere da quello che scrivevi in #4250 (comment)? Se è così forse ti conviene mettere un test invece in l10n_it_fatturapa_out.

Ho provato a vedere nella PR #4107 e i test verificano solo che è possibile accedere dopo il fix con assertTrue... Considerando che il fix allinea res_id e res_model alla create del ir.attachment, non saprei come testarlo visto che è un change proprio facendo l'override della create del mixin( e quindi includendolo nel commit, si verifica sempre )... Il mixin è presente dalla #4107 e ho fatto l'inherit in fatturapa.attachments così che si triggeri ad ogni create

I test di #4107 però fallivano senza la loro fix.
Per aggiungere un test che fallisca senza la fix, puoi rimuoverla in locale (in questo caso ti basta commentare l'inherit che hai aggiunto) e verificare che il tuo test fallisca.
Poi ripristinando la fix (togli il commento che hai aggiunto), il test deve passare.

Qualcuno inizierebbe addirittura a sviluppare facendo prima il test e poi la correzione (vedi https://en.wikipedia.org/wiki/Test-driven_development).

@micheledic micheledic force-pushed the 16.0_fix_l10n_it_fatturapa_attachments branch 4 times, most recently from 336c2e7 to 3821e43 Compare July 12, 2024 13:14
@micheledic micheledic force-pushed the 16.0_fix_l10n_it_fatturapa_attachments branch from 3821e43 to cbf7cf1 Compare July 12, 2024 13:17
@micheledic micheledic requested a review from SirAionTech July 12, 2024 14:02
@micheledic
Copy link
Contributor Author

A parte la modifica minima suggerita sotto, il problema è che il test aggiunto non verifica la fix: il test aggiunto dovrebbe fallire quando la fix non è presente. Potrebbe dipendere da quello che scrivevi in #4250 (comment)? Se è così forse ti conviene mettere un test invece in l10n_it_fatturapa_out.

Ho provato a vedere nella PR #4107 e i test verificano solo che è possibile accedere dopo il fix con assertTrue... Considerando che il fix allinea res_id e res_model alla create del ir.attachment, non saprei come testarlo visto che è un change proprio facendo l'override della create del mixin( e quindi includendolo nel commit, si verifica sempre )... Il mixin è presente dalla #4107 e ho fatto l'inherit in fatturapa.attachments così che si triggeri ad ogni create

I test di #4107 però fallivano senza la loro fix. Per aggiungere un test che fallisca senza la fix, puoi rimuoverla in locale (in questo caso ti basta commentare l'inherit che hai aggiunto) e verificare che il tuo test fallisca. Poi ripristinando la fix (togli il commento che hai aggiunto), il test deve passare.

Qualcuno inizierebbe addirittura a sviluppare facendo prima il test e poi la correzione (vedi https://en.wikipedia.org/wiki/Test-driven_development).

ora è ok

Copy link
Contributor

@SirAionTech SirAionTech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oltre alle verifiche di #4250 (review):

Ho verificato che il problema esiste in 16.0 e viene corretto da queste modifiche.
Ho provato anche la migrazione e risolve il problema sui dati esistenti.

Ho anche verificato che il test fallisce senza la correzione, quindi per me è ok.
La nota qui sotto non la vedo come bloccante per il merge.

Grazie!

Comment on lines +1148 to +1149
e_invoice = invoices.fatturapa_doc_attachments
self.assertTrue(e_invoice.ir_attachment_id.read())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

e_invoice può essere fuorviante perché in realtà questo è un allegato della fattura elettronica, lo si potrebbe chiamare ad esempio e_attachment?

@SirAionTech
Copy link
Contributor

/ocabot merge minor

@OCA-git-bot
Copy link
Contributor

This PR looks fantastic, let's merge it!
Prepared branch 16.0-ocabot-merge-pr-4250-by-SirAionTech-bump-minor, awaiting test results.

@OCA-git-bot OCA-git-bot merged commit 88374b5 into OCA:16.0 Jul 18, 2024
6 of 7 checks passed
@OCA-git-bot
Copy link
Contributor

Congratulations, your PR was merged at ba26d48. Thanks a lot for contributing to OCA. ❤️

@SirAionTech
Copy link
Contributor

Ah dovevo usare nobump perché c'è una migrazione, mea culpa, la migrazione 16.0.1.1.1 comunque parte lo stesso quando si aggiorna da 16.0.1.1.0 a 16.0.1.2.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[l10n_fatturapa] Errore di accesso su fatturapa.attachments
4 participants