Pola dasar: CPR - Navision kode perbaikan Template

BUG #: 188280 (pemeliharaan konten)

Artikel ini berlaku untuk Microsoft Dynamics NAV untuk lokal bahasa Portugis (Brasil)

Gejala

Ketika Anda mengirim jurnal tanda terima kas dengan faktur dan tagihan menolak pada saat yang sama dalam bahasa Portugis versi Microsoft Dynamics NAV 2009, semua entri buku besar yang dikirim dikirim dengan menggunakan akun tagihan menolak. Namun, Account piutang yang dapat digunakan untuk faktur, dan akun tagihan ditolak harus digunakan untuk dokumen ditolak. Masalah ini terjadi di dalam produk berikut ini:

  • Portugis versi Microsoft Dynamics NAV 2009 R2

  • Portugis versi Microsoft Dynamics NAV 2009 Paket Layanan 1

Pemecahan masalah

Informasi Hotfix

Sekarang tersedia hotfix yang didukung dari Microsoft. Namun, hanya ditujukan untuk memperbaiki masalah yang dijelaskan di artikel ini. Terapkan hanya ke sistem yang mengalami masalah khusus ini. Perbaikan terbaru ini dapat menerima pengujian tambahan. Oleh karena itu, jika Anda tidak terlalu dipengaruhi oleh masalah ini, kami sarankan Anda menunggu paket layanan Microsoft Dynamics NAV 2009 atau versi Microsoft Dynamics NAV berikutnya yang berisi perbaikan terbaru ini.

Catatan Dalam kasus tertentu, biaya yang biasanya diadakan untuk panggilan mungkin dibatalkan apabila profesional dukungan teknis untuk Microsoft Dynamics dan produk-produk terkait dukungan menentukan bahwa pembaruan khusus akan memecahkan masalah Anda. Biaya dukungan biasa akan berlaku untuk pertanyaan dan masalah yang tidak termasuk pada pembaruan tertentu yang dimaksud dukungan tambahan.

Apabila hotfix ini tidak dikirimkan untuk unduhan publik (berarti URL publik untuk hotfix ini tidak disediakan dalam artikel ini), distribusi memerlukan arahan teknis, eskalasi anggota tim, atau persetujuan manajer dan informasi berikut ini berlaku:

  • Untuk menerima hotfix, pelanggan harus mengalami bug yang disebutkan di bagian "Gejala".

  • Anda harus melacak sendiri Pelanggan yang Anda kirimi dan memberikan paket layanan berikutnya kepada mereka setelah hotfix tersedia (setelah paket layanan diedarkan).

Hotfix ini dijadwalkan untuk disertakan dengan Microsoft Dynamics NAV 2013.


Informasi penginstalan

Microsoft menyediakan contoh pemrogaman hanya untuk ilustrasi, tanpa garansi baik tersurat maupun tersirat. Ini mencakup, namun tidak terbatas pada, garansi yang tersirat dapat diperjualbelikan atau kesesuaian untuk tujuan tertentu. Artikel ini menganggap bahwa Anda sudah terbiasa dengan bahasa pemrograman yang ditunjukkan dan terbiasa dengan alat-alat yang digunakan untuk membuat dan prosedur debug. Teknisi dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu. Namun, mereka tidak akan mengubah contoh tersebut untuk memberikan fungsionalitas tambahan atau menyusun prosedur untuk memenuhi persyaratan khusus Anda.

Catatan Sebelum Anda menginstal perbaikan terbaru ini, verifikasi bahwa semua pengguna klien Microsoft Navision log off sistem. Ini termasuk Microsoft Navision aplikasi Layanan (NAS) klien pengguna. Anda harus klien hanya pengguna yang masuk saat Anda menerapkan perbaikan terbaru ini.

Untuk menerapkan hotfix ini, Anda harus memiliki lisensi pengembang.

Kami menyarankan bahwa akun pengguna di jendela login Windows atau jendela login Database ditetapkan id peran "SUPER" Jika account pengguna tidak dapat ditetapkan ID peran "SUPER", Anda harus memverifikasi bahwa account pengguna yang memiliki izin berikut ini:

  • Ubah izin untuk objek yang Anda akan berubah.

  • Izin eksekusi untuk sistem objek ID 5210 objek dan objek sistem objek ID 9015 .



Catatan Anda tidak harus memiliki hak untuk penyimpanan data kecuali jika Anda harus melakukan perbaikan data.

Perubahan kode

Catatan Selalu menguji kode perbaikan di lingkungan yang dikontrol sebelum menerapkan perbaikan untuk komputer produksi.
Untuk mengatasi masalah ini, Ubah kode di kejadian Jnl.-posting baris codeunit (12). Untuk melakukannya, ikuti langkah-langkah berikut:

  1. Tambahkan variabel global berikut ini:

    TempRejCustLedgEntry@1100047 : TEMPORARY Record 21;
  2. Ubah kode di fungsi PostCust sebagai berikut:
    Kode yang ada 1

    ...          DiscRiskFactAmountLCY := 0;
    DiscUnriskFactAmountLCY := 0;
    CollFactAmountLCY := 0;
    //--------

    IF Cust."No." <> "Account No." THEN
    Cust.GET("Account No.");
    Cust.CheckBlockedCustOnJnls(Cust,"Document Type",TRUE);

    IF "Posting Group" = '' THEN BEGIN
    ...

    Penggantian kode 1

    ...          DiscRiskFactAmountLCY := 0;
    DiscUnriskFactAmountLCY := 0;
    CollFactAmountLCY := 0;
    //--------

    // Add the following lines.
    TempRejCustLedgEntry.RESET;
    TempRejCustLedgEntry.DELETEALL;
    // End of the lines.

    IF Cust."No." <> "Account No." THEN
    Cust.GET("Account No.");
    Cust.CheckBlockedCustOnJnls(Cust,"Document Type",TRUE);

    IF "Posting Group" = '' THEN BEGIN
    ...

    Kode yang ada 2

    ...            END;

    // Post the application
    ApplyCustLedgEntry(
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    // Delete the following lines.
    IF GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::" " THEN
    GenJnlLine."Applies-to Doc. Type" := AppliesToDocType;
    // End of the lines.

    IF AppManagement.AccessToCartera AND NOT GenJnlLine.Prepayment THEN BEGIN
    IF "Document Type" = "Document Type"::Bill THEN BEGIN
    DocPost.CreateReceivableDoc(GenJnlLine,CVLedgEntryBuf);
    CustLedgEntry."Document Situation" := CustLedgEntry."Document Situation"::Cartera;
    ...

    Penggantian kode 2

    ...            END;

    // Post the application
    ApplyCustLedgEntry(
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    // Add the following lines.
    IF ("Applies-to ID" = '') AND ("Applies-to Doc. Type" = "Applies-to Doc. Type"::" ") THEN
    "Applies-to Doc. Type" := AppliesToDocType;
    // End of the lines.

    IF AppManagement.AccessToCartera AND NOT GenJnlLine.Prepayment THEN BEGIN
    IF "Document Type" = "Document Type"::Bill THEN BEGIN
    DocPost.CreateReceivableDoc(GenJnlLine,CVLedgEntryBuf);
    CustLedgEntry."Document Situation" := CustLedgEntry."Document Situation"::Cartera;
    ...

  3. Ubah kode di fungsi PostVend sebagai berikut:
    Kode yang ada

    ...          // Post the application
    ApplyVendLedgEntry(
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,
    GLSetup."Appln. Rounding Precision");

    // Delete the following lines.
    IF GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::" " THEN
    GenJnlLine."Applies-to Doc. Type" := AppliesToDocType;
    // End of the lines.

    IF AppManagement.AccessToCartera AND NOT GenJnlLine.Prepayment THEN BEGIN
    IF "Document Type" = "Document Type"::Bill THEN BEGIN
    DocPost.CreatePayableDoc(GenJnlLine,CVLedgEntryBuf);
    VendLedgEntry."Document Situation" := VendLedgEntry."Document Situation"::Cartera;
    ...

    Penggantian kode

    ...          // Post the application
    ApplyVendLedgEntry(
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,
    GLSetup."Appln. Rounding Precision");

    // Add the following lines.
    IF ("Applies-to ID" = '') AND ("Applies-to Doc. Type" = "Applies-to Doc. Type"::" ") THEN
    "Applies-to Doc. Type" := AppliesToDocType;
    // End of the lines.

    IF AppManagement.AccessToCartera AND NOT GenJnlLine.Prepayment THEN BEGIN
    IF "Document Type" = "Document Type"::Bill THEN BEGIN
    DocPost.CreatePayableDoc(GenJnlLine,CVLedgEntryBuf);
    VendLedgEntry."Document Situation" := VendLedgEntry."Document Situation"::Cartera;
    ...

  4. Ubah kode di fungsi ApplyCustLedgEntry sebagai berikut:
    Kode yang ada

    ...                OldCustLedgEntry."Document Situation"::"Closed Documents",
    OldCustLedgEntry."Document Situation"::"Closed BG/PO"]) THEN
    FromClosedDoc := TRUE
    ELSE
    FromClosedDoc := FALSE;
    DocPost.UpdateReceivableDoc(
    OldCustLedgEntry,GenJnlLine,AppliedAmountLCY + DeltaUnrealAmount + DeltaAmountLCY,
    DocAmountLCY,RejDocAmountLCY,DiscDocAmountLCY,CollDocAmountLCY,
    DiscRiskFactAmountLCY,DiscUnriskFactAmountLCY,CollFactAmountLCY);
    END;
    ...

    Penggantian kode

    ...                OldCustLedgEntry."Document Situation"::"Closed Documents",
    OldCustLedgEntry."Document Situation"::"Closed BG/PO"]) THEN
    FromClosedDoc := TRUE
    ELSE
    FromClosedDoc := FALSE;

    // Add the following lines.
    IF OldCustLedgEntry."Document Status" = OldCustLedgEntry."Document Status"::Rejected THEN BEGIN
    TempRejCustLedgEntry := OldCustLedgEntry;
    TempRejCustLedgEntry."Remaining Amount (LCY) stats." := AppliedAmountLCY + DeltaUnrealAmount + DeltaAmountLCY;
    TempRejCustLedgEntry.INSERT;
    END;
    // End of the lines.

    DocPost.UpdateReceivableDoc(
    OldCustLedgEntry,GenJnlLine,AppliedAmountLCY + DeltaUnrealAmount + DeltaAmountLCY,
    DocAmountLCY,RejDocAmountLCY,DiscDocAmountLCY,CollDocAmountLCY,
    DiscRiskFactAmountLCY,DiscUnriskFactAmountLCY,CollFactAmountLCY);
    END;
    ...

  5. Ubah kode di fungsi PostDtldCustLedgEntries sebagai berikut:
    Kode yang ada

    ...              AccNo := CustPostingGr."Bills Account";
    END ELSE BEGIN
    CustPostingGr.TESTFIELD("Receivables Account");
    AccNo := CustPostingGr."Receivables Account";
    END;

    // Delete the following lines.
    IF DiscDocAmountLCY <> 0 THEN BEGIN
    CustPostingGr.TESTFIELD("Discted. Bills Acc.");
    AccNo := CustPostingGr."Discted. Bills Acc.";
    END;
    IF CollDocAmountLCY <> 0 THEN BEGIN
    CustPostingGr.TESTFIELD("Bills on Collection Acc.");
    AccNo := CustPostingGr."Bills on Collection Acc.";
    END;
    IF RejDocAmountLCY <> 0 THEN BEGIN
    CASE GenJnlLine."Applies-to Doc. Type" OF
    GenJnlLine."Applies-to Doc. Type"::Bill:
    BEGIN
    CustPostingGr.TESTFIELD("Rejected Bills Acc.");
    AccNo := CustPostingGr."Rejected Bills Acc.";
    END;
    GenJnlLine."Applies-to Doc. Type"::Invoice:
    BEGIN
    CustPostingGr.TESTFIELD("Rejected Factoring Acc.");
    AccNo := CustPostingGr."Rejected Factoring Acc.";
    END;
    ELSE
    IF (GenJnlLine."Document Type" IN [GenJnlLine."Document Type"::"Credit Memo",GenJnlLine."Document Type"::Payment]) AND
    (OldCVLedgEntryBuf4."Applies-to ID" <> '') THEN BEGIN
    CASE OldCVLedgEntryBuf4."Document Type" OF
    OldCVLedgEntryBuf4."Document Type"::Bill:
    BEGIN
    CustPostingGr.TESTFIELD("Receivables Account");
    AccNo := CustPostingGr."Receivables Account";
    END;
    OldCVLedgEntryBuf4."Document Type"::Invoice:
    BEGIN
    CustPostingGr.TESTFIELD("Receivables Account");
    AccNo := CustPostingGr."Receivables Account";
    END;
    END;
    END;
    END;
    END;
    IF (DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) THEN BEGIN
    CustPostingGr.TESTFIELD("Factoring for Discount Acc.");
    AccNo := CustPostingGr."Factoring for Discount Acc.";
    END;
    IF CollFactAmountLCY <> 0 THEN BEGIN
    CustPostingGr.TESTFIELD("Factoring for Collection Acc.");
    AccNo := CustPostingGr."Factoring for Collection Acc.";
    END;
    // End of the lines.

    ReceivableAccAmtLCY :=
    TotalAmountLCY -
    (DocAmountLCY + DiscDocAmountLCY +
    CollDocAmountLCY + RejDocAmountLCY + DiscRiskFactAmountLCY +
    ...

    Penggantian kode

    ...              AccNo := CustPostingGr."Bills Account";
    END ELSE BEGIN
    CustPostingGr.TESTFIELD("Receivables Account");
    AccNo := CustPostingGr."Receivables Account";
    END;

    ReceivableAccAmtLCY :=
    TotalAmountLCY -
    (DocAmountLCY + DiscDocAmountLCY +
    CollDocAmountLCY + RejDocAmountLCY + DiscRiskFactAmountLCY +
    ...

  6. Ubah kode di fungsi PostReceivableDocs sebagai berikut:
    Kode yang ada

    ...          GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    IF RejDocAmountLCY <> 0 THEN BEGIN

    // Delete the following lines.
    CASE GenJnlLine."Applies-to Doc. Type" OF
    GenJnlLine."Applies-to Doc. Type"::Bill:
    BEGIN
    CustPostingGr.TESTFIELD("Rejected Bills Acc.");
    InitGLEntry(CustPostingGr."Rejected Bills Acc.",RejDocAmountLCY,DocAmtCalcAddCurrency(RejDocAmountLCY),TRUE,TRUE);
    GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    GenJnlLine."Applies-to Doc. Type"::Invoice:
    BEGIN
    CustPostingGr.TESTFIELD("Rejected Factoring Acc.");
    InitGLEntry(CustPostingGr."Rejected Factoring Acc.",RejDocAmountLCY,DocAmtCalcAddCurrency(RejDocAmountLCY),TRUE,TRUE);
    GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    ELSE
    IF (GenJnlLine."Document Type" IN [GenJnlLine."Document Type"::"Credit Memo",GenJnlLine."Document Type"::Payment]) AND
    (OldCVLedgEntryBuf4."Applies-to ID" <> '') THEN BEGIN
    CASE OldCVLedgEntryBuf4."Document Type" OF
    OldCVLedgEntryBuf4."Document Type"::Bill:
    BEGIN
    CustPostingGr.TESTFIELD("Rejected Bills Acc.");
    InitGLEntry(CustPostingGr."Rejected Bills Acc.",RejDocAmountLCY,DocAmtCalcAddCurrency(RejDocAmountLCY),TRUE,TRUE);
    GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    OldCVLedgEntryBuf4."Document Type"::Invoice:
    BEGIN
    CustPostingGr.TESTFIELD("Rejected Factoring Acc.");
    InitGLEntry(CustPostingGr."Rejected Factoring Acc.",RejDocAmountLCY,DocAmtCalcAddCurrency(RejDocAmountLCY),TRUE,TRUE
    );

    GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    END;
    END;
    // End of the lines.

    END;
    END;
    IF DiscRiskFactAmountLCY <> 0 THEN BEGIN
    CustPostingGr.TESTFIELD("Factoring for Discount Acc.");
    InitGLEntry(CustPostingGr."Factoring for Discount Acc.",
    ...

    Penggantian kode

    ...          GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    IF RejDocAmountLCY <> 0 THEN BEGIN

    // Add the following lines.
    WITH TempRejCustLedgEntry DO BEGIN
    RESET;
    SETCURRENTKEY("Customer No.","Document Type","Document Situation","Document Status");
    SETRANGE("Document Type","Document Type"::Bill);
    CALCSUMS("Remaining Amount (LCY) stats.");
    IF "Remaining Amount (LCY) stats." <> 0 THEN BEGIN
    CustPostingGr.TESTFIELD("Rejected Bills Acc.");
    InitGLEntry(
    CustPostingGr."Rejected Bills Acc.","Remaining Amount (LCY) stats.",
    DocAmtCalcAddCurrency("Remaining Amount (LCY) stats."),TRUE,TRUE);
    GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    SETRANGE("Document Type","Document Type"::Invoice);
    CALCSUMS("Remaining Amount (LCY) stats.");
    IF "Remaining Amount (LCY) stats." <> 0 THEN BEGIN
    CustPostingGr.TESTFIELD("Rejected Factoring Acc.");
    InitGLEntry(
    CustPostingGr."Rejected Factoring Acc.","Remaining Amount (LCY) stats.",
    DocAmtCalcAddCurrency("Remaining Amount (LCY) stats."),TRUE,TRUE);
    GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";
    GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";
    InsertGLEntry(TRUE);
    END;
    // End of the lines.

    END;
    END;
    IF DiscRiskFactAmountLCY <> 0 THEN BEGIN
    CustPostingGr.TESTFIELD("Factoring for Discount Acc.");
    InitGLEntry(CustPostingGr."Factoring for Discount Acc.",
    ...

Prasyarat

Anda harus memiliki salah satu produk berikut ini diinstal untuk menerapkan perbaikan terbaru ini:

  • Portugis versi Microsoft Dynamics NAV 2009 R2

  • Portugis versi Microsoft Dynamics NAV 2009 Paket Layanan 1

Informasi penghapusan

Anda tidak dapat menghapus hotfix ini.

Status

Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Referensi

VSFT DynamicsNAVSE: 344551

Catatan Ini adalah artikel "Penerbitan cepat" dibuat langsung dari dalam organisasi dukungan Microsoft. Informasi yang terkandung di dalamnya disediakan sebagai tanggapan masalah yang muncul. Sebagai akibat dari kecepatan untuk menjadikannya tersedia, materi dapat mengandung kesalahan ketik dan dapat direvisi setiap saat tanpa pemberitahuan. Lihat Ketentuan untuk pertimbangan lainnya.

Penulis: vagarcia
Penulis: v-brialu
Pemeriksa teknis: vagarcia
Editor:

Perlu bantuan lainnya?

Kembangkan keterampilan Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung Microsoft Insider

Apakah informasi ini bermanfaat?

Seberapa puaskah Anda dengan kualitas terjemahannya?
Apa yang memengaruhi pengalaman Anda?

Terima kasih atas umpan balik Anda!

×