Příznaky
Nesprávný typ dokladu se používá při importu souborů DD LSV (přímý debet) a odmítnuté platby existují v švýcarskou verzi aplikace Microsoft Dynamics NAV 2009. V případě, že platba byla zrušena, typ dokladu je stále nastavena na platbu. Však nelze zaúčtovat položky z důvodu nesprávné znaménko částky. Postupujte podle pokynů změny kódu sekce Chcete-li vyřešit tento problém. K tomuto problému dochází v následujících produktů:
-
Švýcarskou verzi aplikace Microsoft Dynamics NAV 2009 R2
-
Švýcarskou verzi aplikace Microsoft Dynamics NAV 2009 SP1
Řešení
Informace o opravě hotfix
Podporovaná oprava hotfix je nyní k dispozici od společnosti Microsoft. Však je určena pouze k odstranění problému popsaného v tomto článku. Použijte ji pouze u systémů, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může být dále testována. Proto pokud jste závažně tento problém, doporučujeme počkat na další aktualizaci service pack produktu Microsoft Dynamics NAV 2009 nebo další verze produktu Microsoft Dynamics NAV, která obsahuje tuto opravu hotfix.
Poznámka: Ve zvláštních případech poplatky, které jsou třeba obvykle zaplatit za telefonní hovory mohou být stornovány, jestliže pracovník technické podpory společnosti Microsoft Dynamics a souvisejících produktů Určuje, že konkrétní aktualizace odstraní váš problém. Výdaje na technickou podporu použije dalších otázek a problémů, které nelze vyřešit konkrétní aktualizací.
Informace o instalaci
Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci bez žádné záruky výslovně uvedené nebo odvozené. To zahrnuje, ale není omezen pouze na předpokládané záruky obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předmětem ukázky a s nástroji, které slouží k vytvoření a ladění skriptu. Pracovníci podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu. Nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků.
Poznámka: Před instalací této opravy hotfix ověřte, že všichni uživatelé klienta Microsoft Dynamics NAV odhlášeni systému. To zahrnuje služby Microsoft Dynamics NAV Application Server (NAS). Je třeba klienta pouze uživatel přihlášený při implementaci opravy hotfix.
Chcete-li implementovat tuto opravu hotfix, musí mít licenci vývojáře.
Doporučujeme, aby uživatelský účet v okně přihlášení systému Windows nebo v okně přihlášení databáze přidělí "SUPER" ID role. Pokud uživatelský účet nelze přiřadit ID role "SUPER", musíte ověřit, že uživatelský účet má následující oprávnění:
-
Změnit oprávnění pro objekt, který budete měnit.
-
Oprávnění ke spuštění pro System Object ID 5210 objekt a System Object ID 9015
objektu.
Poznámka: Nemáte práva k úložištím dat. Pokud nebudete provádět opravu dat.
Změny kódu
Poznámka: Vždy otestujte opravy kódu v kontrolovaném prostředí před instalací opravy v provozních počítačích.
Chcete-li vyřešit tento problém, postupujte takto:
-
Změňte kód v globální proměnné v procedura LSVMgt (3010831) takto:
Existující kód...Text11500@1150080 : TextConst 'ENU=Could not find Transaction No. %1 in Debit Direct Order No. %2.';
FileMgt@1150042 : Codeunit 419;
FileSystemObject@1150081 : Automation "{420B2830-E718-11CF-893D-00A0C9054228} 1.0:{0D43FE01-F093-11CF-8940-00A0C9054228}:'Microsoft Scripting Runtime'.FileSystemObject";
PROCEDURE ReleaseCustLedgEntries@1(_GenJnlLine@1150000 : Record 81);
BEGIN
...Změněný kód
...Text11500@1150080 : TextConst 'ENU=Could not find Transaction No. %1 in Debit Direct Order No. %2.';
FileMgt@1150042 : Codeunit 419;
FileSystemObject@1150081 : Automation "{420B2830-E718-11CF-893D-00A0C9054228} 1.0:{0D43FE01-F093-11CF-8940-00A0C9054228}:'Microsoft Scripting Runtime'.FileSystemObject";
// Add the following line.
IsCancellationExist@1150082 : Boolean;
// End of the added line.
PROCEDURE ReleaseCustLedgEntries@1(_GenJnlLine@1150000 : Record 81);
BEGIN
... -
Změňte kód ve funkci ImportDebitDirectFile v LSVMgt procedury (3010831) takto:
Existující kód 1...FeeAmount := 0;
TotalRecRecords := 0;
TotalRecRecordsRev := 0;
// Journal name for no serie
GlBatchName.GET(ActGenJnlLine."Journal Template Name",ActGenJnlLine."Journal Batch Name");
...Změněný kód 1
...FeeAmount := 0;
TotalRecRecords := 0;
TotalRecRecordsRev := 0;
// Add the following line.
IsCancellationExist := FALSE;
// End of the added line.
// Journal name for no serie
GlBatchName.GET(ActGenJnlLine."Journal Template Name",ActGenJnlLine."Journal Batch Name");
...Existující kód 2
...// Split File line into fields
// Delete the following lines.
FileID := COPYSTR(Line,1,3);
IF FileID <> '036' THEN
ERROR(Text049 + Text011);
TA := COPYSTR(Line,36,2);
IF NOT (TA = '97') THEN BEGIN
TotalRecord := FALSE;
EVALUATE(InvoiceAmt,COPYSTR(Line,54,13));
EVALUATE(yyCR,COPYSTR(Line,4,2));
EVALUATE(mmCR,COPYSTR(Line,6,2));
EVALUATE(ddCR,COPYSTR(Line,8,2));
IF yyCR > 98 THEN
PostDate := DMY2DATE(ddCR,mmCR,1900 + yyCR)
ELSE
PostDate := DMY2DATE(ddCR,mmCR,2000 + yyCR);
DebitDirectOrderNo := COPYSTR(Line,34,2);
EVALUATE(DebitDirectRecordNo,COPYSTR(Line,38,6));
EVALUATE(RejectionCode,COPYSTR(Line,543,2));
Currency := COPYSTR(Line,51,3);
// DEBIT DIRECT
LsvJour.RESET;
LsvJour.SETRANGE("Credit Date",PostDate);
LsvJour.SETRANGE("DebitDirect Orderno.",DebitDirectOrderNo);
IF NOT LsvJour.FIND('+') THEN
ERROR(Text059,DebitDirectOrderNo,PostDate);
LsvJournalLine.RESET;
//CH0001.begin
LsvJournalLine.SETCURRENTKEY("LSV Journal No.","Transaction No.");
LsvJournalLine.SETRANGE("LSV Journal No.",LsvJour."No.");
//LsvJournalLine.SETRANGE("Line No.",DebitDirectRecordNo);
LsvJournalLine.SETRANGE("Transaction No.",DebitDirectRecordNo);
//LsvJournalLine.FIND('-');
IF NOT LsvJournalLine.FINDFIRST THEN BEGIN
d.CLOSE;
ERROR(Text11500, DebitDirectRecordNo, DebitDirectOrderNo);
END;
//CH0001.end
InInvoiceNo := LsvJournalLine."Applies-to Doc. No.";
// END DEBIT DIRECT
// Process transaction of credit record
CASE TA OF
'81': // Credit
BEGIN
Transaction := Transaction::Credit;
LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Open;
LsvJournalLine."DD Rejection Reason" := LsvJournalLine."DD Rejection Reason"::" ";
LsvJournalLine.MODIFY;
IF LSVSetup.READPERMISSION THEN BEGIN
ClosedByESR(InInvoiceNo);
END;
END;
'84': // Cancellation "Storno"
BEGIN
IF RejectionCode <> 2 THEN
Transaction := Transaction::Correction
ELSE
Transaction := Transaction::Cancellation;
LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Rejected;
LsvJournalLine."DD Rejection Reason" := RejectionCode;
LsvJournalLine.MODIFY;
END;
ELSE
ERROR(Text023 + Text011);
END;
END ELSE BEGIN
TotalRecord := TRUE;
EVALUATE(TempAmount,COPYSTR(Line,60,13));
CreditAmount := CreditAmount + TempAmount / 100;
EVALUATE(TempAmount,COPYSTR(Line,82,13));
RejectionAmount := RejectionAmount + TempAmount / 100;
EVALUATE(TempAmount,COPYSTR(Line,104,13));
ReversalAmount := ReversalAmount + TempAmount / 100;
EVALUATE(TempAmount,COPYSTR(Line,120,11));
FeeAmount := FeeAmount + TempAmount / 100;
// Credit Count
EVALUATE(TempAmount,COPYSTR(Line,54,6));
TotalRecRecords := TotalRecRecords + TempAmount;
// Rejection Count
EVALUATE(TempAmount,COPYSTR(Line,76,6));
TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
// Reversal Count
EVALUATE(TempAmount,COPYSTR(Line,98,6));
TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
END;
// END OF SPLIT
IF NOT (TotalRecord) AND (Transaction <> Transaction::Correction) THEN BEGIN
// End of the deleted lines.
// Insert GL line
GenJournalLine.INIT;
GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";
...Náhradní kód 2
...// Split File line into fields
// Add the following lines.
FileID := COPYSTR(Line,1,3);
IF FileID <> '036' THEN
ERROR(Text049 + Text011);
TA := COPYSTR(Line,36,2);
IF NOT (TA = '97') THEN BEGIN
TotalRecord := FALSE;
EVALUATE(InvoiceAmt,COPYSTR(Line,54,13));
EVALUATE(yyCR,COPYSTR(Line,4,2));
EVALUATE(mmCR,COPYSTR(Line,6,2));
EVALUATE(ddCR,COPYSTR(Line,8,2));
IF yyCR > 98 THEN
PostDate := DMY2DATE(ddCR,mmCR,1900 + yyCR)
ELSE
PostDate := DMY2DATE(ddCR,mmCR,2000 + yyCR);
DebitDirectOrderNo := COPYSTR(Line,34,2);
EVALUATE(DebitDirectRecordNo,COPYSTR(Line,38,6));
EVALUATE(RejectionCode,COPYSTR(Line,543,2));
Currency := COPYSTR(Line,51,3);
// DEBIT DIRECT
LsvJour.RESET;
LsvJour.SETRANGE("Credit Date",PostDate);
LsvJour.SETRANGE("DebitDirect Orderno.",DebitDirectOrderNo);
IF NOT LsvJour.FIND('+') THEN
ERROR(Text059,DebitDirectOrderNo,PostDate);
LsvJournalLine.RESET;
//CH0001.begin
LsvJournalLine.SETCURRENTKEY("LSV Journal No.","Transaction No.");
LsvJournalLine.SETRANGE("LSV Journal No.",LsvJour."No.");
//LsvJournalLine.SETRANGE("Line No.",DebitDirectRecordNo);
LsvJournalLine.SETRANGE("Transaction No.",DebitDirectRecordNo);
//LsvJournalLine.FIND('-');
IF NOT LsvJournalLine.FINDFIRST THEN BEGIN
d.CLOSE;
ERROR(Text11500, DebitDirectRecordNo, DebitDirectOrderNo);
END;
//CH0001.end
InInvoiceNo := LsvJournalLine."Applies-to Doc. No.";
// END DEBIT DIRECT
// Process transaction of credit record
CASE TA OF
'81': // Credit
BEGIN
Transaction := Transaction::Credit;
LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Open;
LsvJournalLine."DD Rejection Reason" := LsvJournalLine."DD Rejection Reason"::" ";
LsvJournalLine.MODIFY;
IF LSVSetup.READPERMISSION THEN BEGIN
ClosedByESR(InInvoiceNo);
END;
END;
'84': // Cancellation "Storno"
BEGIN
IF RejectionCode <> 2 THEN
Transaction := Transaction::Correction
ELSE
Transaction := Transaction::Cancellation;
LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Rejected;
LsvJournalLine."DD Rejection Reason" := RejectionCode;
LsvJournalLine.MODIFY;
END;
ELSE
ERROR(Text023 + Text011);
END;
END ELSE BEGIN
TotalRecord := TRUE;
EVALUATE(TempAmount,COPYSTR(Line,60,13));
CreditAmount := CreditAmount + TempAmount / 100;
EVALUATE(TempAmount,COPYSTR(Line,82,13));
RejectionAmount := RejectionAmount + TempAmount / 100;
EVALUATE(TempAmount,COPYSTR(Line,104,13));
ReversalAmount := ReversalAmount + TempAmount / 100;
EVALUATE(TempAmount,COPYSTR(Line,120,11));
FeeAmount := FeeAmount + TempAmount / 100;
// Credit Count
EVALUATE(TempAmount,COPYSTR(Line,54,6));
TotalRecRecords := TotalRecRecords + TempAmount;
// Rejection Count
EVALUATE(TempAmount,COPYSTR(Line,76,6));
TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
// Reversal Count
EVALUATE(TempAmount,COPYSTR(Line,98,6));
TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
END;
// END OF SPLIT
IF NOT (TotalRecord) AND (Transaction <> Transaction::Correction) THEN BEGIN
// End of the added lines.
// Insert GL line
GenJournalLine.INIT;
GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";
...Existující kód 3
...GenJournalLine.INIT;
GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";
GenJournalLine."Journal Batch Name" := ActGenJnlLine."Journal Batch Name";
LastLineNo := LastLineNo + 10000;
GenJournalLine."Line No." := LastLineNo;
GenJournalLine."Document No." := NextDocNo;
...Změněný kód 3
... GenJournalLine.INIT;
GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";
GenJournalLine."Journal Batch Name" := ActGenJnlLine."Journal Batch Name";
// Add the following lines.
GenJournalLine."Posting Date" := PostDate;
GenJournalLine."Account Type" := GenJournalLine."Account Type"::Customer;
IF Transaction = Transaction::Cancellation THEN BEGIN
IsCancellationExist := TRUE;
GenJournalLine."Document Type" := GenJournalLine."Document Type"::Refund;
NextDocNo := NoSeriesMgt.GetNextNo(GlBatchName."No. Series",PostDate,FALSE);
END ELSE
GenJournalLine."Document Type" := GenJournalLine."Document Type"::Payment;
// End of the added lines.
LastLineNo := LastLineNo + 10000;
GenJournalLine."Line No." := LastLineNo;
GenJournalLine."Document No." := NextDocNo;
...Existující kód 4
...LastLineNo := LastLineNo + 10000;
GenJournalLine."Line No." := LastLineNo;
GenJournalLine."Document No." := NextDocNo;
// Delete the following lines.
GenJournalLine."Posting Date" := PostDate;
GenJournalLine."Account Type" := GenJournalLine."Account Type"::Customer;
GenJournalLine."Document Type" := GenJournalLine."Document Type"::Payment;
// End of the deleted lines.
GeneralLedgerSetup.GET;
IF GeneralLedgerSetup."LCY Code" <> Currency THEN
...Náhradní kód 4
... LastLineNo := LastLineNo + 10000;
GenJournalLine."Line No." := LastLineNo;
GenJournalLine."Document No." := NextDocNo;
// Add the following lines.
IF Transaction = Transaction::Cancellation THEN
NextDocNo := NoSeriesMgt.GetNextNo(GlBatchName."No. Series",PostDate,FALSE);
// End of the added lines.
GeneralLedgerSetup.GET;
IF GeneralLedgerSetup."LCY Code" <> Currency THEN
...Existující kód 5
... IF CustLedgerEntry.FIND('-') THEN
GenJournalLine.VALIDATE("Account No.",CustLedgerEntry."Customer No.");
// Delete the following lines.
GenJournalLine."Applies-to Doc. Type" := GenJournalLine."Applies-to Doc. Type"::Invoice;
GenJournalLine."Applies-to Doc. No." := InInvoiceNo;
// End of the deleted lines.
IF GenJournalLine."Currency Code" <> CustLedgerEntry."Currency Code" THEN
GenJournalLine.VALIDATE("Currency Code",CustLedgerEntry."Currency Code");
...Změněný kód 5
... IF CustLedgerEntry.FIND('-') THEN
GenJournalLine.VALIDATE("Account No.",CustLedgerEntry."Customer No.");
// Add the following lines.
IF Transaction <> Transaction::Cancellation THEN BEGIN
GenJournalLine."Applies-to Doc. Type" := GenJournalLine."Applies-to Doc. Type"::Invoice;
GenJournalLine."Applies-to Doc. No." := InInvoiceNo;
END;
// End of the added lines.
IF GenJournalLine."Currency Code" <> CustLedgerEntry."Currency Code" THEN
GenJournalLine.VALIDATE("Currency Code",CustLedgerEntry."Currency Code");
...Existující kód 6
...// *** Bal account per line or as combined entry
// Delete the following line.
IF MultiplePostingDates THEN BEGIN
// End of the deleted line.
// Bal Account per line
IF GenJournalLine.FIND('-') THEN
REPEAT
...Náhradní kód 6
...// *** Bal account per line or as combined entry
// Add the following line.
IF MultiplePostingDates OR IsCancellationExist THEN BEGIN
// End of the added line.
// Bal Account per line
IF GenJournalLine.FIND('-') THEN
REPEAT
...
Předpoklady
Musí mít jednu z následujících produktů nainstalovali tuto opravu hotfix:
-
Švýcarskou verzi aplikace Microsoft Dynamics NAV 2009 R2
-
Švýcarskou verzi aplikace Microsoft Dynamics NAV 2009 SP1
Informace o odinstalaci
Tato oprava hotfix nelze odebrat.
Stav
Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".
Poznámka: Toto je článek "Rychlé publikování" vytvářen přímo v rámci odborné pomoci společnosti Microsoft. Informace obsažené v tomto dokumentu jsou poskytovány tak, jak je v reakci na vznikající problémy. V důsledku rychlosti v jeho zpřístupnění materiály, mohou obsahovat typografické chyby a mohou být upraveny kdykoli bez předchozího upozornění. Viz Podmínky použitípro další aspekty.