Să presupunem că implementați "Taxe Authorties Digipoort adopta pentru TVA și EU vânzări lista remitere pentru Microsoft Dynamics NAV SP1 NL" în versiunea în limba olandeză din Microsoft Dynamics NAV 2009. Când utilizați interfața Digipoort, primiți unul dintre următoarele erori de validare:
SBR_DIGIPOORT bd-alg:ContactPrefix nu poate fi goală.
ICP cantitatea nu trebuie să fie zero.
Această problemă se produce în următoarele produse:
-
Versiunea în limba olandeză de Microsoft Dynamics NAV 2009 R2
-
Versiunea în limba olandeză Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Rezolvare
Informații despre remedierea rapidă
Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, acesta este destinat numai corectării problemei descrise în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare suplimentară. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următorul pachet service pack Microsoft Dynamics NAV 2009 sau versiunea Microsoft Dynamics NAV următoare, care conține această remediere rapidă.
Notă În cazuri speciale, costurile implicate de obicei pentru asistență apeluri pot fi anulate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produse asociate stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistenţă şi pentru probleme ce nu fac obiectul actualizării în cauză.
Informaţii despre instalare
Microsoft furnizează exemple de programare scop ilustrativ, fără nicio garanţie explicită sau implicită. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau de potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este prezentat şi cu instrumentele utilizate pentru a crea şi a depana proceduri. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri. Cu toate acestea, nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară construi proceduri pentru a răspunde cerințelor dvs. specifice.
Notă Înainte de a instala această remediere rapidă, verificați dacă toți utilizatorii de client Microsoft Dynamics NAV sunt log off sistemul. Aceasta include servicii Microsoft Dynamics NAV Application Server (NAS). Ar trebui să fie singurul client utilizatorului care este conectat când implementați această remediere rapidă.
Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltare.
Vă recomandăm că contul de utilizator în fereastra Conectări Windows sau în fereastra Conectări bază de date se atribuie "SUPER" rolul ID-ul. În cazul în care contul de utilizator nu poate fi atribuit ID-ul "SUPER" rolul, trebuie să verificați că contul de utilizator are următoarele permisiuni:
-
Modify permisiunea pentru obiectul care se va schimba.
-
Permisiunea de executare pentru obiectul sistem obiect ID 5210 și sistem obiect ID 9015
obiect.
Notă Nu trebuie să aveți drepturi de la magazine de date decât dacă trebuie să efectuați o reparare de date.
Modificări de cod
Notă Întotdeauna test cod remediază într-un mediu controlat înainte de a aplica remedieri pentru computerele de producție.
Pentru a rezolva această problemă, urmați acești pași:
-
Modificați codul din raportul crea elect ICP declarație (11404) după cum urmează:
Cod existent 1...ElecTaxDeclarationHeader@1000000 : Record 11409;
ApplicationManagement@1000001 : Codeunit 1;
UseVATRegNo@1000010 : Text[20];
BEGIN
IF Status > Status::Created THEN
ERROR(StatusErr);
...Înlocuirea cod 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);
...Cod existent 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*
...Înlocuirea cod 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*
...Cod existent 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',
...Înlocuirea cod 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',
...Cod existent 4
...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',
...Înlocuirea cod 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',
...Cod existent 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',
...Înlocuirea cod 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',
...Cod existent 6
...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',
...Înlocuirea cod 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',
...Cod existent 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");
...Înlocuirea cod 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");
... -
Modificați codul din variabile globale din raportul crea elect ICP declarație (11404) după cum urmează:
Cod existent...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];
...Cod de înlocuire
...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];
... -
Modificați codul din funcția ExtractStreetName din raportul crea elect ICP declarație (11404) după cum urmează:
Cod existent...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;
...Cod de înlocuire
...ElecTaxDeclHeader.InsertLine(1,Indentation + 1,'unitRef',unitRef);
END;
LOCAL PROCEDURE ExtractInitials@1000014(FullName@1000000 : Text[35]) Initials : Text[30];
VAR
Pos@1000001 : Integer;
... -
Modificați codul din funcția IndexOfFirstNumber din raportul crea elect ICP declarație (11404) după cum urmează:
Cod existent...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.
}
...Cod de înlocuire
...Surname := COPYSTR(FullName,STRPOS(FullName,' ') + 1);
END;
BEGIN
END.
}
... -
Modificați codul din funcția ParseAddressAdditionHouseNo în codeunit Post cod Management (11401) după cum urmează:
Cod existent...EXIT(TRUE);
END;
BEGIN
{
<changelog>
...Cod de înlocuire
...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>
...
Cerințe preliminare
Trebuie să aveți unul dintre următoarele produse instalate pentru a aplica această remediere rapidă:
-
Versiunea în limba olandeză de Microsoft Dynamics NAV 2009 R2
-
Versiunea în limba olandeză Microsoft Dynamics NAV 2009 SP1
În plus, trebuie să implementeze "taxe Digipoort Authorties adopta pentru TVA și EU vânzări lista remitere pentru Microsoft Dynamics NAV SP1 NL."
Eliminare informaţii
Nu se poate elimina această remediere rapidă.
Stare
Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".
Notă Acesta este un articol "rapid publicat" creat direct în cadrul organizației de asistență Microsoft. Informațiile conținute în acest document sunt furnizate ca răspuns la problemele care apar. Ca rezultat al vitezei în a-l face disponibil, materialele pot include erori tipografice și pot fi revizuite în orice moment, fără notificare. Consultați Termenii de utilizarepentru alte considerații.