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] Precisione decimale non usata durante l'importazione della fattura elettronica #4446

Open
wants to merge 2 commits into
base: 16.0
Choose a base branch
from

Conversation

SirAionTech
Copy link
Contributor

Risolve #4445 per 16.0.

Sostituisce #3843 per risolvere #3843 (review).
Non ho incluso un test perché il codice che imposta la precisione decimale quando eseguito nei test solleva l'errore:

Stack
  File "/path/to/l10n-italy/l10n_it_fatturapa_in/tests/fatturapa_common.py", line 305, in run_wizard
    return wizard.importFatturaPA()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/to/l10n-italy/l10n_it_fatturapa_in/wizard/wizard_import_fatturapa.py", line 1830, in importFatturaPA
    ) = self._set_decimal_precision("Product Price", "price_decimal_digits")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/to/l10n-italy/l10n_it_fatturapa_in/wizard/wizard_import_fatturapa.py", line 1808, in _set_decimal_precision
    new_cr.commit()
  File "/path/to/odoo/odoo/sql_db.py", line 461, in commit
    self.flush()
  File "/path/to/odoo/odoo/sql_db.py", line 134, in flush
    self.transaction.flush()
  File "/path/to/odoo/odoo/api.py", line 883, in flush
    env_to_flush.flush_all()
  File "/path/to/odoo/odoo/api.py", line 747, in flush_all
    self[model_name].flush_model()
  File "/path/to/odoo/odoo/models.py", line 5630, in flush_model
    self._flush(fnames)
  File "/path/to/odoo/odoo/models.py", line 5731, in _flush
    model.browse(ids)._write(vals)
  File "/path/to/odoo/odoo/models.py", line 3882, in _write
    cr.execute(query, params + [sub_ids])
  File "/path/to/odoo/odoo/sql_db.py", line 321, in execute
    res = self._obj.execute(query, params)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.errors.ForeignKeyViolation: insert or update on table "decimal_precision" violates foreign key constraint "decimal_precision_write_uid_fkey"
DETAIL:  Key (write_uid)=(80) is not present in table "res_users".

Otherwise, if another precision is used during import and an exception is raised, the system precision becomes the precision set during import.

Co-authored-by: Simone Rubino <[email protected]>
@SirAionTech
Copy link
Contributor Author

@eLBati il primo commit è un cherry-pick del tuo commit e7a60c9, mi sono aggiunto come co-autore perché l'ho modificato, fammi sapere se per te è ok

@SirAionTech SirAionTech marked this pull request as ready for review November 20, 2024 15:45
Copy link

@MaurizioPellegrinet MaurizioPellegrinet left a comment

Choose a reason for hiding this comment

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

Test funzionale: OK

Copy link

@MaurizioPellegrinet MaurizioPellegrinet left a comment

Choose a reason for hiding this comment

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

bug
STEPS

  1. importo xml con 3 decimali
  2. la fattura viene importata correttamente
  3. modifica data di registrazione (o conto contropartita)

ATTESO
gli importi dovrebbero rimanere corretti

RISULTATO
alla modifica di data registrazione (o conto contropartita) vengono ricalcolati gli importi
Allego video

Screencast.2024-11-21.14.43.38.mp4

@SirAionTech
Copy link
Contributor Author

bug STEPS

  1. importo xml con 3 decimali
  2. la fattura viene importata correttamente
  3. modifica data di registrazione (o conto contropartita)

ATTESO gli importi dovrebbero rimanere corretti

RISULTATO alla modifica di data registrazione (o conto contropartita) vengono ricalcolati gli importi Allego video

Screencast.2024-11-21.14.43.38.mp4

Giusto: quando gli importi vengono ricalcolati, si usa la precisione globale non quella temporanea impostata durante l'importazione.

Secondo me è un problema dovuto a queste precisioni temporanee in sé, non alla PR specifica.
Il fatto è che prima non venivano proprio applicate quindi il ricalcolo non cambiava gli importi: aggiustare questa feature in pratica ha fatto scoprire che esiste questo problema.

Comunque ci sta segnalarlo qui, grazie 😄 magari ne parliamo domattina

@eLBati
Copy link
Member

eLBati commented Nov 22, 2024

A questo punto vedo 2 strade:

  • quella semplice è togliere del tutto la funzionalità per non confondere l'utente
  • quella completa sarebbe impostare la precisione desiderata a livello di fattura e usarla per tutti i ricalcoli che coinvolgono prezzo, quantità e sconto

Un approccio per il ricalcolo: #2874

@SirAionTech
Copy link
Contributor Author

A questo punto vedo 2 strade:

  • quella semplice è togliere del tutto la funzionalità per non confondere l'utente
  • quella completa sarebbe impostare la precisione desiderata a livello di fattura e usarla per tutti i ricalcoli che coinvolgono prezzo, quantità e sconto

Un approccio per il ricalcolo: #2874

Ok grazie, vedo come fare

When price precision is increased during import, the price of the created lines should have been computed using the new precision
@SirAionTech SirAionTech force-pushed the 16.0-fix-l10n_it_fatturapa_in-wizard_precision branch from 89c5ed6 to 6ba5e5b Compare November 26, 2024 13:39
@SirAionTech SirAionTech marked this pull request as ready for review November 26, 2024 14:07
@SirAionTech
Copy link
Contributor Author

SirAionTech commented Nov 26, 2024

I test di l10n_it_financial_statements_report falliscono per la modifica OCA/account-financial-reporting#1243 mergiata poco fa nella sua dipendenza account_financial_report.

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

Successfully merging this pull request may close these issues.

Precisione decimale non usata durante l'importazione della fattura elettronica
3 participants