Припустімо, що впровадити "Податок Authorties прийняти Digipoort ПДВ та ЄС продажу список надсилання відомостей для Microsoft Dynamics NAV SP1-NL" у версії Microsoft Dynamics NAV, 2009 нідерландською. Використовуючи Digipoort інтерфейс, з'являється одне з таких помилок перевірки:
SBR_DIGIPOORT bd-alg:ContactPrefix не може бути порожнім.
Фірмову розмір не має бути нуль.
Ця проблема виникає в таких продуктів:
-
Нідерландською версії Microsoft Dynamics NAV 2009-R2
-
Нідерландською версії Microsoft Dynamics NAV 2009 року з пакетом оновлень 1 (SP1)
Вирішення
Відомості про виправлення
Корпорація Майкрософт випустила підтримуване виправлення доступна. Однак, застосовувати лише для вирішення проблеми, описаної в цій статті. Він придатний лише для систем, які зазнають цієї конкретної проблеми. Те, що це виправлення може потребувати додаткового тестування. Таким чином, якщо ви не завдає значної, рекомендовано почекати до виходу чергового пакета оновлень Microsoft Dynamics NAV, 2009 або наступної версії Microsoft Dynamics NAV, що містить це виправлення.
Примітка. В окремих випадках оплату звернення до служби підтримки може бути скасовано якщо технічної підтримки професійного для Microsoft Dynamics і пов'язані продукти визначає телефонів служби. Плата стягується на додаткові питання і проблеми, які не пов'язані з оновленням.
Відомості про інсталяцію
Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації, без гарантій – прямих або інших. Це включає, але не обмежується, будь-яких гарантій придатності до продажу та придатності для певної мети. У цій статті припускається, що ви знайомі з, що демонструє мову програмування та інструменти, які використовуються для створення та налагодження процедури. Співробітники служби підтримки корпорації Майкрософт можуть пояснити функціональні особливості кожної конкретної процедури. Проте вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів.
Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всіх користувачів Microsoft Dynamics NAV-клієнт відключився системи. Це стосується, служби Microsoft Dynamics NAV Application Server (NAS). Ви повинні тільки клієнт користувача, який увійшов до системи, під час виконання цього виправлення.
Щоб застосувати це виправлення, потрібно мати ліцензію для розробників.
Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows, вхід вікна або у вікні бази даних вхід призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено роль ID "Супер", необхідно переконатися, що обліковий запис користувача, має такі дозволи:
-
Змінити дозвіл об'єкт, який буде змінити.
-
Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт і, код 9015 системи-об'єкт
об'єкт.
Примітка. Маєте відповідних прав у сховища даних, якщо не потрібно виконати дані відновлення не потрібно.
Зміни коду
Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії.
-
Змінити код у звіті про створення електронн Фірмову декларації (11404), наступним чином:
Наявний код 1...ElecTaxDeclarationHeader@1000000 : Record 11409;
ApplicationManagement@1000001 : Codeunit 1;
UseVATRegNo@1000010 : Text[20];
BEGIN
IF Status > Status::Created THEN
ERROR(StatusErr);
...Код на заміну 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);
...Наявний код 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*
...Код на заміну 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*
...Наявний код 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',
...Код на заміну 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
...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',
...Заміна з кодом 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',
...Наявний код 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',
...Код на заміну 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
...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',
...Код на заміну 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',
...Наявний код 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");
...Код на заміну 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");
... -
Змінити код глобальних параметрів у звіті про створення електронн Фірмову декларації (11404), наступним чином:
Наявний код...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];
...Заміна код
...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];
... -
Змін у звіті про створення електронн Фірмову декларації (11404), функція ExtractStreetName наступним чином:
Наявний код...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;
...Заміна код
...ElecTaxDeclHeader.InsertLine(1,Indentation + 1,'unitRef',unitRef);
END;
LOCAL PROCEDURE ExtractInitials@1000014(FullName@1000000 : Text[35]) Initials : Text[30];
VAR
Pos@1000001 : Integer;
... -
Змін у звіті про створення електронн Фірмову декларації (11404), функція IndexOfFirstNumber наступним чином:
Наявний код...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.
}
...Заміна код
...Surname := COPYSTR(FullName,STRPOS(FullName,' ') + 1);
END;
BEGIN
END.
}
... -
Змінити код ParseAddressAdditionHouseNo функції в codeunit-повідомлення з кодом керування (11401), таким чином:
Наявний код...EXIT(TRUE);
END;
BEGIN
{
<changelog>
...Заміна код
...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>
...
Попередні вимоги
Ви повинні мати одну з таких продуктів, щоб застосувати це виправлення:
-
Нідерландською версії Microsoft Dynamics NAV 2009-R2
-
Нідерландською версії Microsoft Dynamics NAV 2009 пакетом оновлень 1
Крім того, потрібно здійснювати за "Digipoort Authorties прийняти податок, ПДВ та ЄС продажу список надсилання відомостей для Microsoft Dynamics NAV SP1-NL."
Відомості про видалення
Це виправлення не можна видалити.
Стан
Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".
Примітка. Це "Швидка публікація" статті, надана службою підтримки корпорації Майкрософт. Відомості в цій статті надано без змін у відповідь на повідомлення про проблеми. З огляду на швидкість публікації матеріали можуть містити орфографічні помилки. Їх може бути змінено в будь-який час без повідомлення. Див. Умови використанняінші міркування.