Порт даних "Remittance – імпорт (BBS)" (15000060) завжди створює записи балансу для кожної транзакції платежу в норвезькій версії Microsoft Dynamics NAV

Застосовується до
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Ця стаття стосується Microsoft Dynamics NAV для норвезької мови (без).

Ознаки

Під час запуску порту даних "Remittance – імпорт (BBS)" (15000060) для імпорту даних у норвезькій версії Microsoft Dynamics NAV, баланс записи завжди створюються для кожної платіжної транзакції. Порт даних "Remittance – імпорт (BBS)" (15000060) не розглядає параметри в діалоговому вікні Картка угоди про перекази або в діалоговому вікні Картка облікового запису.
Ця проблема виникає в таких продуктах:

  • Норвезька версія Microsoft Dynamics NAV 2009 R2
  • Норвезька версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
  • Норвезька версія Microsoft Dynamics NAV 5.0 із пакетом оновлень 1 (SP1)

Спосіб усунення проблеми

Відомості про виправлення

Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, радимо дочекатися наступного пакета оновлень Microsoft Dynamics NAV або наступної версії Microsoft Dynamics NAV, яка містить це виправлення.

Примітка У особливих випадках стягнення плати, які зазвичай понесені для викликів підтримки, може бути скасовано, якщо спеціаліст служби технічної підтримки Microsoft Dynamics і пов'язані продукти визначать, що конкретне оновлення вирішить вашу проблему. Звичайні витрати на підтримку застосовуватимуться до додаткових запитань і питань підтримки, які не відповідають вимогам для конкретного оновлення, про яке йде мова.

            
          

Відомості про інсталяцію

Корпорація Майкрософт надає приклади програмування лише для ілюстрації без жодних гарантій, явних або неявних. Це стосується зокрема неявних гарантій щодо придатності до продажу чи придатності для певної мети. У цій статті припускається, що ви знайомі з мовою програмування, яка демонструється, і з інструментами, які використовуються для створення і налагодження процедур. Спеціалісти служби підтримки Microsoft можуть допомогти пояснити функціональність певної процедури, але вони не змінюватимуть ці приклади, щоб надавати додаткові функції або конструювати процедури відповідно до ваших конкретних вимог.

Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі клієнта Microsoft Navision, вийти із системи. Це стосується користувачів клієнтських служб Microsoft Navision (NAS). Ви повинні бути єдиним клієнтом користувача, який ввійшов, коли ви впроваджуєте це виправлення.

Щоб реалізувати це виправлення, потрібно мати ліцензію розробника.

Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:

  • Дозвіл на змінення об'єкта, який буде змінюватися.
  • Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.

                
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.

Зміни коду

Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:

  1. Змініть код у функції ProcessBETFOR23and04 у порту даних Remittance – імпорт (Bank) (15000050):
    Наявний код

    ...
    // Update Waiting journal
    WaitingJournal.VALIDATE(WaitingJournal."Payment Order ID - Settled",PaymOrder.ID);
    WaitingJournal.VALIDATE("Journal, Settlement Template",GenJournalLine."Journal Template Name");
    WaitingJournal.VALIDATE("Journal - Settlement",GenJournalLine."Journal Batch Name");
    WaitingJournal.MODIFY(TRUE);
    
    // Update round off
    END ELSE // This error should not occur.
    ERROR(Text026,ReturnCode);
    ...
    

    Код заміни

    ...
    // Update Waiting journal
    WaitingJournal.VALIDATE(WaitingJournal."Payment Order ID - Settled",PaymOrder.ID);
    WaitingJournal.VALIDATE("Journal, Settlement Template",GenJournalLine."Journal Template Name");
    WaitingJournal.VALIDATE("Journal - Settlement",GenJournalLine."Journal Batch Name");
    
    // Add the following line.
    WaitingJournal."Remittance Status" := WaitingJournal."Remittance Status"::Sent;
    
    WaitingJournal.MODIFY(TRUE);
    
    // Update round off
    END ELSE // This error should not occur.
    ERROR(Text026,ReturnCode);
    ...
    
  2. Змініть код у функції CreateBalanceEntry в порту даних Remittance – імпорт (Bank) (15000050):
    Наявний код

    ...
    BalanceEntryAmount := BalanceEntryAmountLCY
    ELSE
    BalanceEntryAmount := ROUND(BalanceEntryAmountLCY * GenJournalLine."Currency Factor");
    GenJournalLine.VALIDATE(Amount,-BalanceEntryAmount);
    GenJournalLine.VALIDATE("Document No.",TransDocumentNo);
    CASE LatestRemAgreement."New Document Per." OF
    LatestRemAgreement."New Document Per."::Date:
    GenJournalLine.VALIDATE(
    Description,STRSUBSTNO(Text031,LatestDate));
    LatestRemAgreement."New Document Per."::Vendor:
    ...
    

    Код заміни

    ...
    BalanceEntryAmount := BalanceEntryAmountLCY
    ELSE
    BalanceEntryAmount := ROUND(BalanceEntryAmountLCY * GenJournalLine."Currency Factor");
    GenJournalLine.VALIDATE(Amount,-BalanceEntryAmount);
    GenJournalLine.VALIDATE("Document No.",TransDocumentNo);
    
    // Add the following lines.
    GenJournalLine.VALIDATE("Remittance Account Code",WaitingJournal."Remittance Account Code");
    GenJournalLine.VALIDATE("Remittance Agreement Code",WaitingJournal."Remittance Agreement Code");
    // End of the lines.
    
    CASE LatestRemAgreement."New Document Per." OF
    LatestRemAgreement."New Document Per."::Date:
    GenJournalLine.VALIDATE(
    Description,STRSUBSTNO(Text031,LatestDate));
    LatestRemAgreement."New Document Per."::Vendor:
    ...
    
  3. Змініть код у розділі Номер елемента даних 1 у порту даних Remittance – імпорт (BBS) (15000060):
    Наявний код

    ...
    ERROR(Text005,FileImp,Recordtype);
    END;
    END;
    
    OnPostDataItem=BEGIN
    // Recordtype89 must be read by the end of import:
    IF NOT Recordtype89IsRead THEN
    ERROR(
    Text006 +
    Text007,FileImp);
    ...
    

    Код заміни

    ...
    ERROR(Text005,FileImp,Recordtype);
    END;
    END;
    
    OnPostDataItem=BEGIN
    
    // Add the following line.
    CreateBalanceEntry(TransBBSDate,'',WaitingJournal."Account No.",RemAccount,RemAgreement);
    
    // Recordtype89 must be read by the end of import:
    IF NOT Recordtype89IsRead THEN
    ERROR(
    Text006 +
    Text007,FileImp);
    ...
    
  4. Змініть код у функції ProcessTransaction у порту даних Remittance – імпорт (BBS) (15000060):
    Наявний код

    ...
    WaitingJournal.VALIDATE("BBS Shipment No.",ShipmentNo);
    WaitingJournal.VALIDATE("BBS Payment Order No.",PaymOrderNo);
    WaitingJournal.VALIDATE("BBS Transaction No.",TransNo);
    WaitingJournal.VALIDATE("Journal, Settlement Template",GenJnlLine."Journal Template Name");
    WaitingJournal.VALIDATE("Journal - Settlement",GenJnlLine."Journal Batch Name");
    
    // Delete the following lines.
    WaitingJournal.MODIFY(TRUE);
    UNTIL WaitingJournal.NEXT = 0;
    
    CreateBalanceEntry(TransBBSDate,'',WaitingJournal."Account No.",RemAccount,RemAgreement);
    // End of the lines.
    
    END;
    
    LOCAL PROCEDURE CreatePaymOrder@6();
    VAR
    NextPaymOrderID@1000000000 : Integer;
    ...
    

    Код заміни

    ...
    WaitingJournal.VALIDATE("BBS Shipment No.",ShipmentNo);
    WaitingJournal.VALIDATE("BBS Payment Order No.",PaymOrderNo);
    WaitingJournal.VALIDATE("BBS Transaction No.",TransNo);
    WaitingJournal.VALIDATE("Journal, Settlement Template",GenJnlLine."Journal Template Name");
    WaitingJournal.VALIDATE("Journal - Settlement",GenJnlLine."Journal Batch Name");
    
    // Add the following lines.
    WaitingJournal."Remittance Status" := WaitingJournal."Remittance Status"::Sent;
    
    WaitingJournal.MODIFY(TRUE);
    UNTIL WaitingJournal.NEXT = 0;
    // End of the lines.
    
    END;
    
    LOCAL PROCEDURE CreatePaymOrder@6();
    VAR
    NextPaymOrderID@1000000000 : Integer;
    ...
    
  5. Змініть код у функції CreateBalanceEntry в порту даних Remittance – імпорт (BBS) (15000060):
    Наявний код

    ...
    GenJnlLine.VALIDATE("Posting Date",LatestDate);
    GenJnlLine.VALIDATE("Account Type",LatestRemAccount."Account Type");
    GenJnlLine.VALIDATE("Account No.",LatestRemAccount."Account No.");
    GenJnlLine.VALIDATE(Amount,-BalanceEntryAmountLCY);
    GenJnlLine.VALIDATE("Document No.",TransDocumentNo);
    CASE LatestRemAgreement."New Document Per." OF
    LatestRemAgreement."New Document Per."::Date:
    GenJnlLine.VALIDATE(
    Description,STRSUBSTNO(Text012,LatestDate));
    LatestRemAgreement."New Document Per."::Vendor:
    ...
    

    Код заміни

    ...
    GenJnlLine.VALIDATE("Posting Date",LatestDate);
    GenJnlLine.VALIDATE("Account Type",LatestRemAccount."Account Type");
    GenJnlLine.VALIDATE("Account No.",LatestRemAccount."Account No.");
    GenJnlLine.VALIDATE(Amount,-BalanceEntryAmountLCY);
    GenJnlLine.VALIDATE("Document No.",TransDocumentNo);
    
    // Add the following lines.
    GenJnlLine.VALIDATE("Remittance Account Code",WaitingJournal."Remittance Account Code");
    GenJnlLine.VALIDATE("Remittance Agreement Code",WaitingJournal."Remittance Agreement Code");
    // End of the lines.
    
    CASE LatestRemAgreement."New Document Per." OF
    LatestRemAgreement."New Document Per."::Date:
    GenJnlLine.VALIDATE(
    Description,STRSUBSTNO(Text012,LatestDate));
    LatestRemAgreement."New Document Per."::Vendor:
    ...
    
  6. Змініть код у функції NewTransaction у порту даних Remittance – імпорт (BBS) (15000060):
    Наявний код

    ...
    BEGIN
    // Initialize transaction import.
    // Called before import is started, after a transaction in the file is closed (BETFOR99)
    // and before the next transaction from the same file starts.
    First := TRUE; //Control of balance entry;
    
    // Delete the following line.
    BalanceEntryAmountLCY := 0;
    
    LatestDate := 0D;
    LatestVend := '';
    CLEAR(LatestRemAccount);
    END;
    ...
    

    Код заміни

    ...
    BEGIN
    // Initialize transaction import.
    // Called before import is started, after a transaction in the file is closed (BETFOR99)
    // and before the next transaction from the same file starts.
    First := TRUE; //Control of balance entry;
    
    LatestDate := 0D;
    LatestVend := '';
    CLEAR(LatestRemAccount);
    END;
    ...
    
  7. Змініть код у функції FindFiles у платіжному замовленні Rem. – імпорт (15000003), як виконайте такі дії:
    Наявний код

    ...
    FilePath := RemTools.FindPath(ReturnFileSetup."Return File Name");
    File.SETFILTER(Path,FilePath); // not case-sensitive
    File.SETRANGE("Is a file",TRUE);
    // Copy all these files to a temporary table with file name in lower-case letters:
    FileCopy.DELETEALL;
    
    // Delete the following lines.
    IF File.FIND('-') THEN
    REPEAT
    FileCopy.Name := LOWERCASE(File.Name);
    FileCopy.Size := File.Size;
    FileCopy.Date := File.Date;
    FileCopy.Time := File.Time;
    FileCopy.INSERT;
    UNTIL File.NEXT = 0;
    // End of the lines.
    
    // From now on use copies of file names :
    FileCopy.SETFILTER(Name,LOWERCASE(RemTools.FindFilename(ReturnFileSetup."Return File Name")));
    IF FileCopy.FIND('-') THEN
    REPEAT
    ReturnFiles.INIT;
    ...
    

    Код заміни

    ...
    FilePath := RemTools.FindPath(ReturnFileSetup."Return File Name");
    File.SETFILTER(Path,FilePath); // not case-sensitive
    File.SETRANGE("Is a file",TRUE);
    // Copy all these files to a temporary table with file name in lower-case letters:
    FileCopy.DELETEALL;
    
    // Add the following lines.
    IF EXISTS(FilePath) THEN BEGIN
    IF File.FIND('-') THEN
    REPEAT
    FileCopy.Name := LOWERCASE(File.Name);
    FileCopy.Size := File.Size;
    FileCopy.Date := File.Date;
    FileCopy.Time := File.Time;
    FileCopy.INSERT;
    UNTIL File.NEXT = 0;
    END;
    // End of the lines.
    
    // From now on use copies of file names :
    FileCopy.SETFILTER(Name,LOWERCASE(RemTools.FindFilename(ReturnFileSetup."Return File Name")));
    IF FileCopy.FIND('-') THEN
    REPEAT
    ReturnFiles.INIT;
    ...
    

          

Попередні вимоги

Щоб застосувати це виправлення, потрібно мати один із таких продуктів:

  • Норвезька версія Microsoft Dynamics NAV 2009 R2
  • Норвезька версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
  • Норвезька версія Microsoft Dynamics NAV 5.0 із пакетом оновлень 1 (SP1)

Відомості про видалення

Не можна видалити це виправлення.

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .