[18.0] [IMP] l10n_it_edi_doi_extension: add migration scripts#4830
[18.0] [IMP] l10n_it_edi_doi_extension: add migration scripts#4830odooNextev wants to merge 2 commits intoOCA:18.0from
Conversation
|
Scusa la pr è pronta per la review? hai già usato questo modulo su Odoo.sh? |
No, prima deve essere approvata e mergiata questa: #5029 |
Grazie del chiarimento |
|
@sergiocorato potresti lanciare un rebase qui cosi da arrivare al merge anche di questa? |
|
/ocabot rebase |
|
@francesco-ooops The rebase process failed, because command |
Il rebase fa prima a farlo l' autore in genere |
|
@mmircoli-nexapp purtroppo non basta il solo rebase, devo aggiungere la parte che riguarda le doi multiple siccome non avevo la certezza di come sarebbero stati definiti i modelli effettivamente finché l'altra PR fosse stata approvata. |
Grazie Mille |
fde17d0 to
d823abe
Compare
d823abe to
0c5a2d9
Compare
|
Ciao @mmircoli-nexapp, |
Grazie Mille come torno sul Cliente che devo migrare faccio qualche prova, che almeno non rompa nulla |
monen17
left a comment
There was a problem hiding this comment.
Grazie della PR!
Si può aggiungere il supporto per la migrazione con OpenUpgrade? Così migrando con OpenUpgrade il modulo viene migrato in automatico senza doverlo installare a manina, vedi ad esempio https://github.com/OCA/l10n-italy/wiki/Migrazione-con-rinomina-modulo,-compatibile-con-OpenUpgrade-e-Odoo-SA.
l10n_it_edi_doi_extension/views/l10n_it_edi_doi_declaration_of_intent_views.xml
Outdated
Show resolved
Hide resolved
l10n_it_edi_doi_extension/views/l10n_it_edi_doi_declaration_of_intent_views.xml
Outdated
Show resolved
Hide resolved
c995965 to
5737200
Compare
5737200 to
136358b
Compare
|
/ocabot rebase |
|
Congratulations, PR rebased to 18.0. |
monen17
left a comment
There was a problem hiding this comment.
Grazie delle modifiche!
C'è ancora qualcosa ma decisamente poca roba rispetto all'inizio.
Puoi aggiornare la descrizione della PR? Mi pare descriva ancora le vecchie modifiche.
Cosa ne pensi invece della proposta nella vecchia revisione:
Si può aggiungere il supporto per la migrazione con OpenUpgrade? Così migrando con OpenUpgrade il modulo viene migrato in automatico senza doverlo installare a manina, vedi ad esempio https://github.com/OCA/l10n-italy/wiki/Migrazione-con-rinomina-modulo,-compatibile-con-OpenUpgrade-e-Odoo-SA.
?
| - *Invoices with multiple DOIs show amount = 0*: expected behaviour. The old many2many | ||
| relation did not store per-declaration amounts. Open each affected invoice and assign | ||
| the correct amount in the "Declarations of Intent" tab. |
There was a problem hiding this comment.
Ora che viene popolato account_move_doi, questo non dovrebbe succedere giusto?
| Test that declaration_available uses remaining (which includes not_yet_invoiced) | ||
| """ | ||
| invoice = self._create_invoice("9e", self.partner, tax=self.tax, in_type=True) | ||
| invoice = self._create_invoice("9e", self.partner, taxes=self.tax, in_type=True) |
There was a problem hiding this comment.
Questa modifica va nell'altro commit
| # Populate l10n_it_edi_doi_amount for all invoices linked to DOI | ||
| # In v18, this field is a stored computed field that calculates the | ||
| # total amount of invoice lines that have the special DOI tax applied. | ||
| # However, in v16, invoices used different taxes | ||
| # (like "Non imponibile iva ART. 8...") and the DOI amount wasn't | ||
| # explicitly tracked. | ||
| # | ||
| # Since we can't recompute using the v18 logic (invoices don't have | ||
| # the v18 DOI tax), we manually populate it with the invoice's | ||
| # untaxed amount. This matches the v16 behavior where the full invoice | ||
| # amount was considered. | ||
| # | ||
| # In v18, l10n_it_edi_doi_amount is always positive regardless of move_type. | ||
| # The v18 compute is: sum(price_total) * -direction_sign | ||
| # Since price_total already has the accounting sign and direction_sign | ||
| # flips it back, the result is always positive. | ||
| # We use ABS(amount_untaxed) as a proxy for migrated invoices. | ||
| openupgrade.logged_query( | ||
| env.cr, | ||
| """ | ||
| UPDATE account_move am | ||
| SET l10n_it_edi_doi_amount = ABS(am.amount_untaxed) | ||
| WHERE am.l10n_it_edi_doi_id IS NOT NULL | ||
| AND am.l10n_it_edi_doi_amount = 0 | ||
| """, | ||
| ) |
There was a problem hiding this comment.
In 16.0 si sapeva l'importo per ogni abbinamento dichiarazione/fattura grazie alle righe della dichiarazione (l10n_it_declaration_of_intent.declaration_line).
Ora che account_move_doi viene popolato correttamente, non si potrebbe mettere l'importo giusto qui?
| # Populate account_move_doi bridge table for multiple DOI support. | ||
| # Source priority: | ||
| # 1. l10n_it_declaration_of_intent_declaration_line: has the real per-invoice | ||
| # amount (the authoritative source from v16). | ||
| # 2. _REL_TABLE (m2m): no amount, used only if lines were already dropped. | ||
| # 3. l10n_it_edi_doi_id (many2one): last resort if both old tables are gone. |
There was a problem hiding this comment.
Perché non si sa se esistono queste tabelle? La tabella delle righe dovrebbe esserci: prendiamo semplicemente i dati da lì no?
|
/ocabot rebase |
|
Congratulations, PR rebased to 18.0. |
136358b to
069a2dc
Compare
Migrazione da l10n_it_declaration_of_intent e fix di sincronizzazione
Obiettivo
Questa PR aggiunge al modulo
l10n_it_edi_doi_extensionla gestione automaticadella migrazione dei dati dal vecchio modulo OCA
l10n_it_declaration_of_intent(Odoo 16) al nuovo modulo
l10n_it_edi_doidi Odoo 18.La migrazione viene eseguita completamente in automatico tramite hook pre/post-init,
senza richiedere interventi manuali da parte dell'utente (a parte il backup del
database).
Le fatture con più dichiarazioni in v16 vengono migrate con
amount = 0nel bridge:è un comportamento atteso perché la v16 non memorizzava l'importo per dichiarazione
Commit inclusi
1.
[IMP] add migration scripts(5afe7901d)Introduce gli hook di migrazione e aggiorna la documentazione.
File principali:
__init__.py— cuore della migrazione (hook pre e post init)__manifest__.py— registrazione degli hookpre_init_hookepost_init_hookmodels/account_move.py— fallback per le fatture migrate senza imposta DOImodels/declaration_of_intent.py— aggiunto camponumber(già presente in v16)views/l10n_it_edi_doi_declaration_of_intent_views.xml— aggiunto camponumbernel form e nella list view
readme/USAGE.md— sezione di migrazione per gli utenti finaliCosa fa il pre-init hook:
(necessarie per Odoo 18, causavano
ValidationErroraltrimenti)(usavano il tag
<tree>rinominato in<list>)to removerinomina la tabella e il modello, rinomina i campi, mappa i valori degli stati
l10n_it_edi_doi(installazione parziale):inserisce i vecchi record con offset ID per evitare conflitti di chiave primaria
Cosa fa il post-init hook:
account.move.doidalle vecchie relazioni many2many,preservando tutti i collegamenti (non solo il primo)
l10n_it_edi_doi_amountda
amount_untaxedir.model.dataal nuovo moduloCome testare
Scenario 1 — Migrazione da v16 con dati
l10n_it_declaration_of_intentinstallato edalcune dichiarazioni di intento e fatture collegate a Odoo 18
l10n_it_edi_doi_extension(split in
protocol_number_part1/protocol_number_part2)valid→active,expired→terminated,close→revoked)l10n_it_edi_doi_idpopolatoaccount.move.doicontiene i record migratil10n_it_declaration_of_intente verificare che non ci siano errori2.
[FIX] sync l10n_it_edi_doi_id and fix available amount compute(d823abe29)Correzioni al modello bridge
account.move.doi.File:
models/account_move_doi.pyModifiche:
_compute_declaration_available: ora usadeclaration_id.remaininginvece diricalcolare
threshold - invoicedinline (allineato ai campi calcolati del modello)_sync_l10n_it_edi_doi_id: mantiene sincronizzato il campol10n_it_edi_doi_iddella fattura con il primo record bridge associatocreate,write,unlinkper chiamare_sync_l10n_it_edi_doi_idautomaticamente ad ogni modifica dei record bridge
Come testare
Scenario 1 — Installazione pulita (senza migrazione)
l10n_it_edi_doi_idsi aggiorni automaticamente alla creazione/modifica/eliminazione di un record bridge
Scenario 2 — Fix bridge model
l10n_it_edi_doi_idsulla fattura punti alla dichiarazione delprimo record bridge
l10n_it_edi_doi_idvenga svuotatoNote per i revisori
l10n_it_edi_doi(per posizioni fiscali o imposte già presenti dal v16), l'utente deve rimuovere
manualmente i duplicati: questo non è gestito dalla nostra migrazione perché
avviene nel
post_initdil10n_it_edi_doi, eseguito prima dei nostri hookamount = 0nel bridge:è un comportamento atteso perché la v16 non memorizzava l'importo per dichiarazione
USAGE.mdcontiene la documentazione tecnica completa per chi volesseapprofondire i dettagli