Портът за данни "Remittance - import (BBS)" (15000060) винаги създава записи на баланса за всяка платежна транзакция в норвежката версия на Microsoft Dynamics NAV

Отнася се за
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Тази статия се отнася за Microsoft Dynamics NAV за езиково-географска променлива за норвежки език (не).

Симптоми

Когато стартирате порта за данни (15000060) "Remittance - import (BBS)" за импортиране на данни в норвежката версия на Microsoft Dynamics NAV, винаги се създават записи в баланса за всяка платежна транзакция. Портът за данни "Паричен превод – импортиране (BBS)" (15000060) не отчита настройките в диалоговия прозорец " Карта за споразумение за паричен превод " или в диалоговия прозорец " Карта на сметка за паричен превод ".
Този проблем възниква в следните продукти:

  • Норвежката версия на Microsoft Dynamics NAV 2009 R2
  • Норвежката версия на Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Норвежката версия на Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

Решение

Информация за горещи поправки

Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV или следващата версия на Microsoft Dynamics NAV, която съдържа тази гореща корекция.

Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.

            
          

Информация за инсталиране

Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжка на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура, но няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.

Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.

За да приложите тази гореща корекция, трябва да имате лиценз за разработчик.

Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:

  • Разрешението за промяна за обекта, който ще променяте.
  • Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.

                
Забележка: Не е необходимо да имате права за хранилищата за данни, освен ако не трябва да извършите поправка на данни.

Промени в кода

Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да решите този проблем, изпълнете следните стъпки:

  1. Променете кода във функцията ProcessBETFOR23and04 в порта за данни (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 в порта за данни "Парични преводи – импортиране (банково)" (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 в порта за данни (15000060 Паричния превод – импортиране (BBS) по следния начин:
    Съществуващ код

    ...
    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 в порта за данни (15000060 Remittance - import (BBS) както следва:
    Съществуващ код

    ...
    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 в порта за данни (15000060 Паричния превод – импортиране (BBS) както следва:
    Съществуващ код

    ...
    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 в порта за данни (15000060 за пренос - импортиране (BBS) по следния начин:
    Съществуващ код

    ...
    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 Service Pack 1 (SP1)
  • Норвежката версия на Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

Информация за премахване

Не можете да премахнете тази гореща корекция.

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Забележка: Това е статия "FAST PUBLISH", създадена директно от организацията за поддръжка на Microsoft. Информацията, съдържаща се тук, е предоставена както е в отговор на възникващи проблеми. В резултат на бързината на предоставянето им, материалите могат да включват печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте условията на използване за други съображения.