Après l’application du RU6, le formulaire NF-e Federal sera vide

S’applique à
Microsoft Dynamics AX 2009

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() ;
    }