Symptômes
Après l’application du correctif cumulatif 6 (KB2405516), le formulaire NF-e Federal est vide. Vous ne serez pas en mesure de vérifier les status liées aux factures NF-e Federal précédemment publiées et il n’est pas possible de savoir quelle action doit être effectuée.
Cause
Il existe un défaut de codage dans la classe RelaseUpdateDB60_Cust, updateReferencesInEFDocument_BR méthode.
Cette méthode met à jour la table EFDocument_BR afin qu’elle fasse toujours référence à la table FiscalDocJour_BR. Dans les versions précédentes, EFDocument_BR utilisé pour conserver les références à la facture qui provient du document fiscal brésilien, comme CustInvoiceJour et VendInvoiceJour. Désormais, la paire de champs RefTableId et RefRecId fait toujours référence à la table des documents fiscaux brésiliens : FiscalDocJour_BR.
Lorsque cette méthode est exécutée dans un environnement rollup 5 à partir duquel de nouveaux NF-e ont été créés, ces NF-e (qui étaient déjà ok) perdent désormais leurs relations avec FiscalDocJour_BR, ce qui entraîne le formulaire vide. Cette méthode doit être exécutée uniquement pour le référencement de NF-e à CustInvoiceJour et VendInvoiceJour.
Résolution
Nous vous recommandons vivement d’effectuer une sauvegarde complète de la base de données AX avant d’exécuter les étapes décrites dans cet article de la Base de connaissances.
1. Quand appliquer le correctif
Après avoir appliqué le package RU6, lancez le client AX et l’option « Liste de contrôle de mise à niveau » s’affiche. Avant d’exécuter « Presynchronize », vous devez appliquer ce correctif.
2. Ouvrez l’AOT et insérez l’instruction « WHERE » suivante dans la classe RelaseUpdateDB60_Cust, updateReferencesInEFDocument_BR méthode.
Avant :
tout en sélectionnant pour mettre à jour eFDocument
{
fiscalDocJour = FiscalDocJour_BR ::findRefRecId(eFDocument.RefTableId, eFDocument.RefRecId) ;
eFDocument.RefTableId = fiscalDocJour.TableId ;
eFDocument.RefRecId = fiscalDocJour.RecId ;
eFDocument.doUpdate() ;
}
Après :
tout en sélectionnant pour mettre à jour eFDocument
where eFDocument.RefTableId != tablenum(FiscalDocJour_BR)
{
fiscalDocJour = FiscalDocJour_BR ::findRefRecId(eFDocument.RefTableId, eFDocument.RefRecId) ;
eFDocument.RefTableId = fiscalDocJour.TableId ;
eFDocument.RefRecId = fiscalDocJour.RecId ;
eFDocument.doUpdate() ;
}