OCA / l10n-italy

Odoo Italian localization
https://www.odoo-italia.org
GNU Affero General Public License v3.0
154 stars 306 forks source link

[FIX] Precisione decimale non usata durante l'importazione della fattura elettronica #4446

Open SirAionTech opened 2 days ago

SirAionTech commented 2 days ago

Risolve https://github.com/OCA/l10n-italy/issues/4445 per 16.0.

Sostituisce https://github.com/OCA/l10n-italy/pull/3843 per risolvere https://github.com/OCA/l10n-italy/pull/3843#pullrequestreview-1911224225. 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".
SirAionTech commented 2 days ago

@eLBati il primo commit è un cherry-pick del tuo commit https://github.com/OCA/l10n-italy/pull/3843/commits/e7a60c90a70dbee835768805d312b391cb81304f, mi sono aggiunto come co-autore perché l'ho modificato, fammi sapere se per te è ok

SirAionTech commented 1 day ago

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 :smile: magari ne parliamo domattina

eLBati commented 17 hours ago

A questo punto vedo 2 strade:

Un approccio per il ricalcolo: https://github.com/OCA/l10n-italy/pull/2874

SirAionTech commented 17 hours ago

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