S’applique à
Dynamics NAV 2009

Supposons que vous implémentez le «Digipoort d’adopter Authorties de taxe pour la TVA et l’envoi de liste de vente de l’Union européenne pour Microsoft Dynamics NAV SP1 NL» dans la version néerlandaise de Microsoft Dynamics NAV 2009. Lorsque vous utilisez l’interface Digipoort, que vous receviez des erreurs de validation suivantes :

Bd SBR_DIGIPOORT-alg:ContactPrefix ne peut pas être vide.

Montant de l’ICP ne doit pas être zéro.

Ce problème se produit dans les produits suivants :

  • La version néerlandaise de Microsoft Dynamics NAV 2009 R2

  • La version néerlandaise de Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Résolution

Informations sur le correctif

Un correctif pris en charge est désormais disponible auprès de Microsoft. Toutefois, il est conçu uniquement pour corriger le problème décrit dans cet article. Il s’applique uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif peut subir des tests supplémentaires. Par conséquent, si vous n’êtes pas sérieusement concerné par ce problème, nous vous recommandons d’attendre le prochain service pack Microsoft Dynamics NAV 2009 ou la prochaine version de Microsoft Dynamics NAV qui comprendra ce correctif.Remarque Dans certains cas, les frais généralement encourus pour la prise en charge des appels peuvent être annulés si un technicien du Support technique pour Microsoft Dynamics et les produits associés détermine qu’une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes qui ne relèvent pas de la mise à jour spécifique en question.

Informations sur l’installation

Microsoft fournit des exemples de programmation à titre d'illustration uniquement, sans garantie expresse ou implicite. Ceci inclut, mais n'est pas limité à, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support technique Microsoft peuvent aider à expliquer la fonctionnalité d'une procédure particulière. Toutefois, ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.Remarque Avant d’installer ce correctif, vérifiez que tous les utilisateurs du client Microsoft Dynamics NAV sont déconnectés sur le système. Ceci comprend les services de Microsoft Dynamics NAV Application Server (NAS). Vous devez être le seul utilisateur client connecté lors de l’implémentation de ce correctif.Pour appliquer ce correctif, vous devez posséder une licence développeur.Il est recommandé que le compte d’utilisateur dans la fenêtre Logins Windows ou dans la fenêtre Logins base de données est affecté à l’ID de rôle « SUPER ». Si le compte d’utilisateur ne peut pas être affecté à l’ID de rôle « SUPER », vous devez vérifier que le compte d’utilisateur dispose des autorisations suivantes :

  • L’autorisation de modification pour l’objet que vous allez modifier.

  • L’autorisation d’exécution pour l’objet ID objet système 5210 et pour l' ID objet système 9015objet.

Remarque Vous n’êtes pas obligé de disposer des droits pour les banques de données excepté si vous devez réparer des données.

Modifications du code

Remarque Toujours tester le code des correctifs dans un environnement contrôlé, avant d'appliquer les correctifs à vos ordinateurs de production.Pour résoudre ce problème, procédez comme suit :

  1. Modifiez le code dans l’état de déclaration de ICP élec. de créer (11404) comme suit :Code existant 1

    ...ElecTaxDeclarationHeader@1000000 : Record 11409;                           ApplicationManagement@1000001 : Codeunit 1;                           UseVATRegNo@1000010 : Text[20];                         BEGIN                           IF Status > Status::Created THEN                             ERROR(StatusErr);...

    Code de substitution 1

    ...ElecTaxDeclarationHeader@1000000 : Record 11409;                           ApplicationManagement@1000001 : Codeunit 1;                           UseVATRegNo@1000010 : Text[20];                           StreetName@1000002 : Text[50];                           HouseNo@1000003 : Text[50];                           AdditionHouseNo@1000004 : Text[50];                           ContactPrefix@1000011 : Text[35];                         BEGIN                           IF Status > Status::Created THEN                             ERROR(StatusErr);...

    Code existant 2

    ...// zbrli:xbrl->bd-ob:VATIdentificationNumberNLFiscalEntityDivision                           IF ElecTaxDeclarationSetup."Part of Fiscal Entity" THEN BEGIN                             IF COPYSTR(                                  UPPERCASE(CompanyInfo."VAT Registration No."),                                  1,STRLEN(CompanyInfo."Country/Region Code")) = CompanyInfo."Country/Region Code"                             THEN                               CompanyInfo."VAT Registration No." := DELSTR(CompanyInfo."VAT Registration No.",1,STRLEN(CompanyInfo."Country/Region Code"));                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-ob:VATIdentificationNumberNLFiscalEntityDivision',                               CompanyInfo."VAT Registration No.",'','Msg','');                           END;                           // zbrli:xbrl->bd-alg:Contact*...

    Code de substitution 2

    ...// zbrli:xbrl->bd-ob:VATIdentificationNumberNLFiscalEntityDivision                           IF ElecTaxDeclarationSetup."Part of Fiscal Entity" THEN BEGIN                             IF COPYSTR(                                  UPPERCASE(CompanyInfo."Fiscal Entity No."),                                  1,STRLEN(CompanyInfo."Country/Region Code")) = CompanyInfo."Country/Region Code"                             THEN                               CompanyInfo."Fiscal Entity No." := DELSTR(CompanyInfo."Fiscal Entity No.",1,STRLEN(CompanyInfo."Country/Region Code"));                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-ob:VATIdentificationNumberNLFiscalEntityDivision',                               CompanyInfo."Fiscal Entity No.",'','Msg','');                           END;                           // zbrli:xbrl->bd-alg:Contact*...

    Code existant 3

    ...IF ElecTaxDeclarationSetup."ICP Contact Type" = ElecTaxDeclarationSetup."ICP Contact Type"::"Tax Payer" THEN BEGIN                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactInitials',                               ExtractInitials(ElecTaxDeclarationSetup."Tax Payer Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPrefix',                               ExtractNamePrefix(ElecTaxDeclarationSetup."Tax Payer Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactSurname',                               ExtractSurname(ElecTaxDeclarationSetup."Tax Payer Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactTelephoneNumber',...

    Code de substitution 3

    ...IF ElecTaxDeclarationSetup."ICP Contact Type" = ElecTaxDeclarationSetup."ICP Contact Type"::"Tax Payer" THEN BEGIN                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactInitials',                               ExtractInitials(ElecTaxDeclarationSetup."Tax Payer Contact Name"),'','Msg','');                             ContactPrefix := ExtractNamePrefix(ElecTaxDeclarationSetup."Tax Payer Contact Name");                             IF ContactPrefix <> '' THEN                               InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPrefix',ContactPrefix,'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactSurname',                               ExtractSurname(ElecTaxDeclarationSetup."Tax Payer Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactTelephoneNumber',...

    4 le code existant

    ...ExtractSurname(ElecTaxDeclarationSetup."Tax Payer Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactTelephoneNumber',                               ElecTaxDeclarationSetup."Tax Payer Contact Phone No.",'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactStreetNameNL',                               ExtractStreetName(CompanyInfo.Address),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactHouseNumberNL',                               ExtractStreetNo(CompanyInfo.Address),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPostalCodeNL',                               DELCHR(CompanyInfo."Post Code",'=',' '),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPlaceOfResidenceNL',...

    Code de remplacement 4

    ...ExtractSurname(ElecTaxDeclarationSetup."Tax Payer Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactTelephoneNumber',                               ElecTaxDeclarationSetup."Tax Payer Contact Phone No.",'','Msg','');                             PostCodeMgt.ParseAddressAdditionHouseNo(StreetName,HouseNo,AdditionHouseNo,CompanyInfo.Address);                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactStreetNameNL',StreetName,'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactHouseNumberNL',HouseNo,'','Msg','');                             IF AdditionHouseNo <> '' THEN                               InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactHouseNumberAddition',AdditionHouseNo,'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPostalCodeNL',                               DELCHR(CompanyInfo."Post Code",'=',' '),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPlaceOfResidenceNL',...

    Code existant 5

    ...END ELSE BEGIN                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactInitials',                               ExtractInitials(ElecTaxDeclarationSetup."Agent Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPrefix',                               ExtractNamePrefix(ElecTaxDeclarationSetup."Agent Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactSurname',                               ExtractSurname(ElecTaxDeclarationSetup."Agent Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactTelephoneNumber',...

    Code de remplacement 5

    ...END ELSE BEGIN                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactInitials',                               ExtractInitials(ElecTaxDeclarationSetup."Agent Contact Name"),'','Msg','');                             ContactPrefix := ExtractNamePrefix(ElecTaxDeclarationSetup."Agent Contact Name");                             IF ContactPrefix <> '' THEN                               InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPrefix',ContactPrefix,'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactSurname',                               ExtractSurname(ElecTaxDeclarationSetup."Agent Contact Name"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactTelephoneNumber',...

    6 le code existant

    ...ElecTaxDeclarationSetup."Agent Contact Phone No.",'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:TaxConsultantNumber',                               ElecTaxDeclarationSetup."Agent Contact ID",'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactStreetNameNL',                               ExtractStreetName(ElecTaxDeclarationSetup."Agent Contact Address"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactHouseNumberNL',                               ExtractStreetNo(ElecTaxDeclarationSetup."Agent Contact Address"),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPostalCodeNL',                               DELCHR(ElecTaxDeclarationSetup."Agent Contact Post Code",'=',' '),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPlaceOfResidenceNL',...

    Code de remplacement 6

    ...ElecTaxDeclarationSetup."Agent Contact Phone No.",'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:TaxConsultantNumber',                               ElecTaxDeclarationSetup."Agent Contact ID",'','Msg','');                             PostCodeMgt.ParseAddressAdditionHouseNo(                               StreetName,HouseNo,AdditionHouseNo,ElecTaxDeclarationSetup."Agent Contact Address");                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactStreetNameNL',StreetName,'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactHouseNumberNL',HouseNo,'','Msg','');                             IF AdditionHouseNo <> '' THEN                               InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactHouseNumberAddition',AdditionHouseNo,'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPostalCodeNL',                               DELCHR(ElecTaxDeclarationSetup."Agent Contact Post Code",'=',' '),'','Msg','');                             InsertDataLine("Elec. Tax Declaration Header",1,'bd-alg:ContactPlaceOfResidenceNL',...

    Code existant 7

    ...SETRANGE("VAT Registration No.", "VAT Registration No.");                           CALCSUMS(Base);                           "Elec. Tax Declaration Header".InsertLine(0,1,CurrentType,'');                           InsertDataLine("Elec. Tax Declaration Header",2,'bd-ob:CountryCodeISO-EC',                             COPYSTR("Country/Region Code",1,2),'','Msg','');                           IF COPYSTR(UPPERCASE("VAT Registration No."),1,STRLEN("Country/Region Code")) = "Country/Region Code" THEN                             "VAT Registration No." := DELSTR("VAT Registration No.",1,STRLEN("Country/Region Code"));                           InsertDataLine("Elec. Tax Declaration Header",2,'bd-ob:SuppliesAmount',                             FORMAT(-Base,0,'<Sign><Integer>'),'INF','Msg','EUR');                           InsertDataLine("Elec. Tax Declaration Header",2,'bd-ob:VATIdentificationNumberNational',                             "VAT Registration No.",'','Msg','');                           FIND('+');                           SETRANGE("Country/Region Code");...

    Code de remplacement 7

    ...SETRANGE("VAT Registration No.", "VAT Registration No.");                           CALCSUMS(Base);                           IF ABS(Base) >= 1 THEN BEGIN                             "Elec. Tax Declaration Header".InsertLine(0,1,CurrentType,'');                             InsertDataLine("Elec. Tax Declaration Header",2,'bd-ob:CountryCodeISO-EC',                               COPYSTR("Country/Region Code",1,2),'','Msg','');                             IF COPYSTR(UPPERCASE("VAT Registration No."),1,STRLEN("Country/Region Code")) = "Country/Region Code" THEN                               "VAT Registration No." := DELSTR("VAT Registration No.",1,STRLEN("Country/Region Code"));                             CASE Integer.Number OF                               0,2:                                 InsertDataLine("Elec. Tax Declaration Header",2,'bd-ob:SuppliesAmount',                                   FORMAT(-Base,0,'<Sign><Integer>'),'INF','Msg','EUR');                               1:                                 InsertDataLine("Elec. Tax Declaration Header",2,'bd-ob:ServicesAmount',                                   FORMAT(-Base,0,'<Sign><Integer>'),'INF','Msg','EUR');                             END;                             InsertDataLine("Elec. Tax Declaration Header",2,'bd-ob:VATIdentificationNumberNational',                               "VAT Registration No.",'','Msg','');                           END;                           FIND('+');                           SETRANGE("Country/Region Code");...
  2. Modifiez le code dans les Variables globales dans l’état de déclaration de ICP élec. de créer (11404) comme suit :Code existant

    ...CompanyInfo@1000003 : Record 79;      ElecTaxDeclarationSetup@1000001 : Record 11408;      StatusErr@1000005 : TextConst 'ENU=The report status need to have value " " or Created to create the report content.';      CurrentType@1000000 : Text[60];    LOCAL PROCEDURE GetStrippedAppVersion@1101100000(AppVersion@1101100001 : Text[250]) Res : Text[250];...

    Code de remplacement

    ...CompanyInfo@1000003 : Record 79;      ElecTaxDeclarationSetup@1000001 : Record 11408;      StatusErr@1000005 : TextConst 'ENU=The report status need to have value " " or Created to create the report content.';      PostCodeMgt@1000002 : Codeunit 11401;      CurrentType@1000000 : Text[60];    LOCAL PROCEDURE GetStrippedAppVersion@1101100000(AppVersion@1101100001 : Text[250]) Res : Text[250];...
  3. Modifiez le code dans la fonction ExtractStreetName dans l’état de déclaration de ICP élec. de créer (11404) comme suit :Code existant

    ...ElecTaxDeclHeader.InsertLine(1,Indentation + 1,'unitRef',unitRef);    END;    LOCAL PROCEDURE ExtractStreetName@1000013(Address@1000000 : Text[50]) : Text[50];    BEGIN      IF IndexOfFirstNumber(Address) > 1 THEN        EXIT(COPYSTR(Address,1,IndexOfFirstNumber(Address) - 2));      EXIT(Address);    END;    LOCAL PROCEDURE ExtractStreetNo@1000012(Address@1000000 : Text[50]) : Text[50];    BEGIN      IF IndexOfFirstNumber(Address) > 0 THEN        EXIT(COPYSTR(Address,IndexOfFirstNumber(Address)));      EXIT('');    END;    LOCAL PROCEDURE ExtractInitials@1000014(FullName@1000000 : Text[35]) Initials : Text[30];    VAR      Pos@1000001 : Integer;...

    Code de remplacement

    ...ElecTaxDeclHeader.InsertLine(1,Indentation + 1,'unitRef',unitRef);    END;    LOCAL PROCEDURE ExtractInitials@1000014(FullName@1000000 : Text[35]) Initials : Text[30];    VAR      Pos@1000001 : Integer;...
  4. Modifiez le code dans la fonction IndexOfFirstNumber dans l’état de déclaration de ICP élec. de créer (11404) comme suit :Code existant

    ...Surname := COPYSTR(FullName,STRPOS(FullName,' ') + 1);    END;    LOCAL PROCEDURE IndexOfFirstNumber@1000017(Str@1000000 : Text[50]) : Integer;    VAR      Index@1000001 : Integer;    BEGIN      FOR Index := 1 TO STRLEN(Str) DO BEGIN        IF Str[Index] IN ['0'..'9'] THEN          EXIT(Index);      END;      EXIT(0);    END;    BEGIN    END.  }...

    Code de remplacement

    ...Surname := COPYSTR(FullName,STRPOS(FullName,' ') + 1);    END;    BEGIN    END.  }...
  5. Modifiez le code dans la fonction ParseAddressAdditionHouseNo dans le codeunit de gestion de Code Post (11401) comme suit :Code existant

    ...EXIT(TRUE);    END;    BEGIN    {      <changelog>...

    Code de remplacement

    ...EXIT(TRUE);    END;    PROCEDURE ParseAddressAdditionHouseNo@1000003(VAR StreetName@1000001 : Text[50];VAR HouseNo@1000002 : Text[50];VAR AdditionHouseNo@1000003 : Text[50];Address@1000000 : Text[50]);    VAR      HouseString@1000004 : Text[50];    BEGIN      StreetName := '';      HouseNo := '';      AdditionHouseNo := '';      IF Address = '' THEN        EXIT;      // Suppose that house string is a last word in the Address      HouseString := GetHouseString(Address);      IF HouseString = '' THEN BEGIN        StreetName := Address;        EXIT;      END;      // The last word is a House string with possible AdditionHouseNo information. All before last word is a StreetName.      StreetName := COPYSTR(Address,1,STRLEN(Address) - STRLEN(HouseString) - 1);      HouseNo := GetHouseNoFromHouseString(HouseString);      AdditionHouseNo := HouseString;    END;    LOCAL PROCEDURE GetHouseString@1000002(Address@1000000 : Text[50]) : Text[50];    VAR      i@1000003 : Integer;    BEGIN      // If there's only one word then return empty HouseString      IF STRPOS(Address,' ') = 0 THEN        EXIT('');      //Lookup from end of string first space after a number      // Find the last word: revert address string, cut first word, revert result      RevertString(Address);      // Delete Spaces at beginning      Address := DELCHR(Address,'<');      i := 1;      // Find first number i ==> position of first number      WHILE  (NOT (Address[i] IN ['0'..'9']) AND (i < STRLEN(Address))) DO        i += 1;      IF ((i = STRLEN(Address)) AND NOT (Address[i] IN ['0'..'9'])) THEN //No number found      EXIT('');      // look further until number stops      WHILE ((Address[i] IN ['0'..'9']) AND (i < STRLEN(Address))) DO        i+= 1;      Address := DELCHR(COPYSTR(Address,1, i-1), '<=>'); // remove all spaces      RevertString(Address);      EXIT(Address);    END;    LOCAL PROCEDURE GetHouseNoFromHouseString@1000000(VAR HouseString@1000000 : Text[50]) HouseNo : Text[50];    VAR      Pos@1000002 : Integer;    BEGIN      Pos := 1;      WHILE HouseString[Pos] IN ['0'..'9'] DO        Pos += 1;      HouseNo := COPYSTR(HouseString,1,Pos - 1);      // remove HouseNo from the HouseString including special separating char if such exist      IF HouseString[Pos] IN ['/','\','-'] THEN        Pos += 1;      HouseString := COPYSTR(HouseString,Pos);    END;    LOCAL PROCEDURE RevertString@1170000000(VAR String@1170000000 : Text[50]);    VAR      StringCopy@1170000001 : Text[50];      i@1170000002 : Integer;      Length@1170000003 : Integer;    BEGIN      StringCopy := String;      Length := STRLEN(String);      FOR i := 1 TO Length DO        String[i] := StringCopy[Length - i + 1];    END;    BEGIN    {      <changelog>...

Conditions préalables

Vous devez disposer d’un des produits suivants est installé pour appliquer ce correctif :

  • La version néerlandaise de Microsoft Dynamics NAV 2009 R2

  • La version néerlandaise de Microsoft Dynamics NAV 2009 SP1

En outre, vous devez implémenter la «taxe Authorties adopter Digipoort de TVA et un enregistrement de liste de ventes de l’Union européenne pour NL Service Pack 1 de Microsoft Dynamics NAV. »

Informations sur la suppression

Vous ne pouvez pas supprimer ce correctif.

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Remarque Il s’agit d’un article de « Dernière minute » créé directement à partir de l’organisation de support technique de Microsoft. Les informations contenues dans ce document sont fournies en l'état, en réponse à des problèmes nouveaux. En raison de la rapidité de leur mise à disposition, les documents peuvent contenir des erreurs typographiques et peuvent être révisés à tout moment sans préavis. Consultez les Conditions d’utilisationpour d’autres considérations.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.