คุณไม่สามารถประมวลผลจ่ายการชำระเงินล่วงหน้าตามที่คาดไว้ในรุ่นของ Microsoft Dynamics NAV 2009 R2 ยุโรปตะวันออก


บทความนี้นำไปใช้กับ Microsoft Dynamics NAV สำหรับภูมิภาคยุโรปตะวันออก (ดู)

อาการ


คุณไม่สามารถประมวลผลจ่ายการชำระเงินล่วงหน้าตามที่คาดไว้ในรุ่นของ Microsoft Dynamics NAV 2009 R2 ยุโรปตะวันออก เมื่อคุณประมวลผลจดหมายที่จ่ายล่วงหน้าสำหรับลูกค้า คุณไม่สามารถลงรายการบัญชีการคืนเงินเป็นการชำระเงินล่วงหน้า ดังนั้น คุณไม่สามารถส่งคืนเงินให้กับลูกค้า

การแก้ปัญหา


ข้อมูลโปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนจะพร้อมใช้งานได้ในขณะนี้จาก Microsoft อย่างไรก็ตาม มีเป้าหมายเพียงเพื่อการแก้ไขปัญหาที่อธิบายไว้ในบทความนี้ นำวิธีนี้ไปใช้กับระบบที่ประสบกับปัญหาที่เฉพาะเจาะจงเท่านั้น โปรแกรมแก้ไขด่วนนี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณจะไม่รุนแรงได้รับผลกระทบจากปัญหานี้ เราขอแนะนำให้ คุณรอ service pack ถัดไปของ Microsoft Dynamics NAV หรือเวอร์ชันถัดไป Microsoft Dynamics NAV ที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้

หมายเหตุ ในกรณีพิเศษ ค่าธรรมเนียมค่าใช้จ่ายสำหรับการสนับสนุนโทรศัพท์อาจถูกยกเลิกถ้า Technical Support Professional สำหรับ Microsoft Dynamics และผลิตภัณฑ์ที่เกี่ยวข้องตรวจพบว่าการปรับปรุงเฉพาะจะแก้ปัญหาของคุณ ค่าใช้จ่ายในการสนับสนุนตามปกติจะใช้กับคำถามและปัญหาในการสนับสนุนเพิ่มเติมซึ่งไม่สอดคล้องตามเกณฑ์สำหรับโปรแกรมปรับปรุงเฉพาะที่เกี่ยวข้อง


ข้อมูลการติดตั้ง

Microsoft ให้ตัวอย่างการเขียนโปรแกรมไว้สำหรับประกอบการอธิบายเท่านั้นโดยไม่มีการรับประกันไม่ว่าจะโดยชัดแจ้งหรือโดยนัย กรณีนี้รวมถึงแต่มิได้จำกัดเพียงแค่การการรับประกันโดยนัยเกี่ยวกับการจำหน่ายเป็นสินค้าหรือความเหมาะสำหรับวัตถุประสงค์เฉพาะ บทความนี้ตั้งสมมติฐานว่าคุณมีความคุ้นเคยกับภาษาการเขียนโปรแกรมที่กำลังแสดงและคุ้นเคยกับเครื่องมือที่ใช้ใน การสร้างและแก้จุดบกพร่องของขั้นตอนการดำเนินการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายฟังก์ชันการทำงานของกระบวนการเฉพาะได้ แต่จะไม่ปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้ฟังก์ชันการทำงานเพิ่มเติมหรือสร้างกระบวนงานเพื่อตอบสนองความต้องการเฉพาะของคุณ

หมายเหตุ ก่อนที่คุณติดตั้งโปรแกรมแก้ไขด่วนนี้ โปรดตรวจสอบว่า ผู้ใช้ไคลเอนต์ของ Microsoft Navision ทั้งหมดเข้าสู่ระบบออกจากระบบ ข้อมูลนี้รวมถึงผู้ใช้ไคลเอ็นต์บริการแอพลิเคชัน Navision Microsoft (NAS) คุณควรไคลเอ็นต์เฉพาะผู้ใช้ที่เข้าสู่ระบบเมื่อคุณใช้โปรแกรมแก้ไขด่วนนี้

เมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องมีสิทธิ์การใช้งานสำหรับนักพัฒนา

เราขอแนะนำว่า บัญชีผู้ใช้ ในหน้าต่างล็อกอินของ Windows หรือ ในหน้าต่างล็อกอินฐานข้อมูลสามารถกำหนดรหัสการเข้าถึงข้อมูล "ขั้นสูง" ถ้าบัญชีผู้ใช้ไม่สามารถกำหนดรหัสการบทบาท "SUPER" คุณต้องตรวจสอบว่า บัญชีผู้ใช้มีสิทธิ์ต่อไปนี้:
  • สิทธิ์การปรับเปลี่ยนสำหรับออปเจ็กต์ที่คุณจะสามารถเปลี่ยน
  • สิทธิ์ Execute สำหรับออบเจ็กต์5210 รหัสวัตถุของระบบและ สำหรับออบเจ็กต์ระบบ 9015 ID ของวัตถุ


หมายเหตุ คุณไม่จำเป็นต้องมีสิทธิ์ไปยังร้านค้าข้อมูลยกเว้นว่าคุณจำเป็นต้องซ่อมแซมข้อมูล

การเปลี่ยนแปลงรหัส

หมายเหตุ เสมอทดสอบรหัสแก้ไขในสภาพแวดล้อมการควบคุมก่อนที่คุณนำไปใช้แก้ไขปัญหากับคอมพิวเตอร์ของคุณผลิต
เมื่อต้องการแก้ไขปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้:
  1. เปลี่ยนแปลงรหัสนี้ในการฟิลด์ใช้-กับหมายเลขเอกสาร - OnLookupทริกเกอร์ในตารางบรรทัดสมุดรายวันทั่วไป (81) ดังนี้:
    รหัสที่อยู่ 1
    ...IF CustLedgEntry.FIND('-') THEN;
    CustLedgEntry.SETRANGE(Positive);
    END;
    ApplyCustEntries.SetGenJnlLine(Rec,GenJnlLine.FIELDNO("Applies-to Doc. No."));
    ApplyCustEntries.SETTABLEVIEW(CustLedgEntry);
    ApplyCustEntries.SETRECORD(CustLedgEntry);
    ...
    รหัสแทนที่ 1
    ...IF CustLedgEntry.FIND('-') THEN;
    CustLedgEntry.SETRANGE(Positive);
    END;

    // Add the following lines.
    IF "Prepayment Type" = "Prepayment Type"::Advance THEN
    CustLedgEntry.SETRANGE("Prepayment Type","Prepayment Type"::Advance)
    ELSE
    CustLedgEntry.SETFILTER("Prepayment Type",'<>%1',GenJnlLine."Prepayment Type"::Advance);
    //End of the lines.

    ApplyCustEntries.SetGenJnlLine(Rec,GenJnlLine.FIELDNO("Applies-to Doc. No."));
    ApplyCustEntries.SETTABLEVIEW(CustLedgEntry);
    ApplyCustEntries.SETRECORD(CustLedgEntry);
    ...
    รหัสที่มีอยู่ 2
    ...IF VendLedgEntry.FIND('-') THEN;
    VendLedgEntry.SETRANGE(Positive);
    END;
    ApplyVendEntries.SetGenJnlLine(Rec,GenJnlLine.FIELDNO("Applies-to Doc. No."));
    ApplyVendEntries.SETTABLEVIEW(VendLedgEntry);
    ApplyVendEntries.SETRECORD(VendLedgEntry);
    ...
    รหัสแทนที่ 2
    ...IF VendLedgEntry.FIND('-') THEN;
    VendLedgEntry.SETRANGE(Positive);
    END;

    // Add the following lines.
    IF "Prepayment Type" = "Prepayment Type"::Advance THEN
    VendLedgEntry.SETRANGE("Prepayment Type","Prepayment Type"::Advance)
    ELSE
    VendLedgEntry.SETFILTER("Prepayment Type",'<>%1',GenJnlLine."Prepayment Type"::Advance);
    //End of the lines.

    ApplyVendEntries.SetGenJnlLine(Rec,GenJnlLine.FIELDNO("Applies-to Doc. No."));
    ApplyVendEntries.SETTABLEVIEW(VendLedgEntry);
    ApplyVendEntries.SETRECORD(VendLedgEntry);
    ...
  2. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันUpdatePrepmtTypeในตารางบรรทัดสมุดรายวันทั่วไป (81) เป็นดังนี้:
    รหัสที่มีอยู่
    ...GLSetup.GET;
    GLSetup.TESTFIELD("Prepayment Type");
    "Prepayment Type" := GLSetup."Prepayment Type";
    END ELSE
    "Prepayment Type" := "Prepayment Type"::" ";
    ...
    รหัสแทน
    ...GLSetup.GET;
    GLSetup.TESTFIELD("Prepayment Type");
    "Prepayment Type" := GLSetup."Prepayment Type";

    // Add the following lines.
    IF NOT ("Document Type" IN ["Document Type"::Refund,"Document Type"::Payment]) THEN
    FIELDERROR(Prepayment);
    //End of the lines.

    END ELSE
    "Prepayment Type" := "Prepayment Type"::" ";
    ...
  3. เปลี่ยนแปลงข้อกำหนดของฟิลด์ชนิดรายการในตารางเชื่อมโยงล่วงหน้า (26590) เป็นดังนี้:
    ข้อกำหนดที่มีอยู่
    ...
    OptionString=ยอดเงินเริ่มต้น เชื่อมโยงกับจดหมาย
    ...
    คำนิยามการเปลี่ยนทดแทน
    ...
    OptionString=ยอดเงินเริ่มต้น เชื่อมโยงกับจดหมาย แอพลิเคชัน
    ...
  4. ลบคำนิยามSourceTableViewในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลลูกค้า (232)
  5. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันSetApplyingCustLedgEntryในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลลูกค้า (232) เป็นดังนี้:
    รหัสที่มีอยู่
    ... CalcApplnAmount;
    END;
    END;
    ...
    รหัสแทน
    ...CalcApplnAmount;
    END;
    END;

    // Add the following line.
    SetAdvanceFilter;
    ...
  6. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันFindApplyingEntryในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลลูกค้า (232) เป็นดังนี้:
    รหัสที่มีอยู่
    ...ApplyingAmount := CustLedgEntry."Remaining Amount";
    ApplnDate := CustLedgEntry."Posting Date";
    ApplnCurrencyCode := CustLedgEntry."Currency Code";
    END;
    CalcApplnAmount;
    ...
    รหัสแทน
    ...ApplyingAmount := CustLedgEntry."Remaining Amount";
    ApplnDate := CustLedgEntry."Posting Date";
    ApplnCurrencyCode := CustLedgEntry."Currency Code";

    // Add the following line.
    SetAdvanceFilter;

    END;
    CalcApplnAmount;
    ...
  7. สร้างฟังก์ชันใหม่ในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลลูกค้า (232) เป็นดังนี้:
    LOCAL PROCEDURE SetAdvanceFilter@1470011();BEGIN
    IF ApplyingCustLedgEntry."Prepayment Type" = ApplyingCustLedgEntry."Prepayment Type"::Advance THEN
    SETRANGE("Prepayment Type","Prepayment Type"::Advance)
    ELSE
    SETFILTER("Prepayment Type",'<>%1',"Prepayment Type"::Advance);
    END;
  8. ลบคำนิยามSourceTableViewในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลผู้จัดจำหน่าย (233)
  9. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันSetApplyingVendLedgEntryในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลผู้จัดจำหน่าย (233) ดังนี้:
    รหัสที่มีอยู่
    ... CalcApplnAmount;
    END;
    END;
    ...
    รหัสแทน
    ...CalcApplnAmount;
    END;
    END;

    // Add the following line.
    SetAdvanceFilter;
    ...
  10. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันFindApplyingEntryในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลผู้จัดจำหน่าย (233) ดังนี้:
    รหัสที่มีอยู่
    ...ApplyingAmount := VendLedgEntry."Remaining Amount";
    ApplnDate := VendLedgEntry."Posting Date";
    ApplnCurrencyCode := VendLedgEntry."Currency Code";
    END;
    CalcApplnAmount;
    ...
    รหัสแทน
    ...ApplyingAmount := VendLedgEntry."Remaining Amount";
    ApplnDate := VendLedgEntry."Posting Date";
    ApplnCurrencyCode := VendLedgEntry."Currency Code";

    // Add the following line.
    SetAdvanceFilter;
    END;
    CalcApplnAmount;
    ...
  11. สร้างฟังก์ชันใหม่ในแบบฟอร์มใช้รายการบัญชีที่แสดงข้อมูลผู้จัดจำหน่าย (233) ดังนี้:
    LOCAL PROCEDURE SetAdvanceFilter@1470011();BEGIN
    IF ApplyingVendLedgEntry."Prepayment Type" = ApplyingVendLedgEntry."Prepayment Type"::Advance THEN
    SETRANGE("Prepayment Type","Prepayment Type"::Advance)
    ELSE
    SETFILTER("Prepayment Type",'<>%1',"Prepayment Type"::Advance);
    END;
  12. ลบตัวแปรส่วนกลางต่อไปนี้ในการทั่วไปงานสมุดรายวัน-ลงรายการบัญชีบรรทัดโค้ดยูนิต (12):
    • ชื่อ: Text26500
    • TextConst: ' ENU =ขาย %1 %2 ไม่สามารถนำไปใช้ด้วยตนเองได้ '
  13. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันApplyCustLedgEntryในแบบทั่วไปงานสมุดรายวัน-ลงรายการบัญชีบรรทัดโค้ดยูนิต (12) ดัง:
    รหัสที่อยู่ 1
    ...THEN
    EXIT;

    // Delete the following lines.
    IF NOT GenJnlLine."System-Created Entry" AND (GenJnlLine."Applies-to ID" <> '') AND
    (NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance)
    THEN
    ERROR(Text26500,NewCVLedgEntryBuf."Document Type",NewCVLedgEntryBuf."Document No.");
    // End of the lines.

    PmtTolAmtToBeApplied := 0;
    NewRemainingAmtBeforeAppln := NewCVLedgEntryBuf."Remaining Amount";
    NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;
    ...
    รหัสแทนที่ 1
    ...THEN
    EXIT;

    PmtTolAmtToBeApplied := 0;
    NewRemainingAmtBeforeAppln := NewCVLedgEntryBuf."Remaining Amount";
    NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;
    ...
    รหัสที่มีอยู่ 2
    ...OldCustLedgEntry.FINDFIRST;
    OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
    IF NOT GenJnlLine."System-Created Entry" THEN BEGIN

    // Delete the following lines.
    IF NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance THEN
    ERROR(Text26500,NewCVLedgEntryBuf."Document Type",NewCVLedgEntryBuf."Document No.");
    IF OldCustLedgEntry."Prepayment Type" = OldCustLedgEntry."Prepayment Type"::Advance THEN
    ERROR(Text26500,OldCustLedgEntry."Document Type",OldCustLedgEntry."Document No.");
    // End of the lines.

    END;
    IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN
    ApplyingDate := OldCustLedgEntry."Posting Date";
    ...
    รหัสแทนที่ 2
    ...OldCustLedgEntry.FINDFIRST;
    OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
    IF NOT GenJnlLine."System-Created Entry" THEN BEGIN

    // Add the following lines.
    IF GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance THEN
    OldCustLedgEntry.TESTFIELD("Prepayment Type",OldCustLedgEntry."Prepayment Type"::Advance);
    IF OldCustLedgEntry."Prepayment Type" = OldCustLedgEntry."Prepayment Type"::Advance THEN
    GenJnlLine.TESTFIELD("Prepayment Type",GenJnlLine."Prepayment Type"::Advance);
    //End of the lines.

    END;
    IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN
    ApplyingDate := OldCustLedgEntry."Posting Date";
    ...
    รหัสที่มีอยู่ 3
    ...OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
    IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN
    REPEAT

    // Delete the following lines.
    IF (OldCustLedgEntry."Prepayment Type" <> OldCustLedgEntry."Prepayment Type"::Advance) OR
    (OldCustLedgEntry."Applies-to ID" <> '')
    THEN
    // End of the lines.

    IF GenJnlApply.CheckAgainstApplnCurrency(
    NewCVLedgEntryBuf."Currency Code",
    OldCustLedgEntry."Currency Code",
    ...
    รหัสแทนที่ 3
    ...OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
    IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN
    REPEAT

    // Add the following lines.
    IF NOT GenJnlLine."System-Created Entry" THEN BEGIN
    IF GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance THEN
    OldCustLedgEntry.TESTFIELD("Prepayment Type",OldCustLedgEntry."Prepayment Type"::Advance);
    IF OldCustLedgEntry."Prepayment Type" = OldCustLedgEntry."Prepayment Type"::Advance THEN
    GenJnlLine.TESTFIELD("Prepayment Type",GenJnlLine."Prepayment Type"::Advance);
    END;
    //End of the lines.

    IF GenJnlApply.CheckAgainstApplnCurrency(
    NewCVLedgEntryBuf."Currency Code",
    OldCustLedgEntry."Currency Code",
    ...
  14. เพิ่มตัวแปรท้องถิ่นใหม่ในฟังก์ชันCalcApplicationในแบบทั่วไปงานสมุดรายวัน-ลงรายการบัญชีบรรทัดโค้ดยูนิต (12), แล้ว ระบุตัวแปรดังนี้:
    • ชื่อ: OldDtldCVLedgEntryBuf
    • ชนิดข้อมูล:เรกคอร์ด
    • ชนิดย่อย: รายการบัญชีแยกประเภท CV โดยละเอียดของ บัฟเฟอร์รายการ(383)
  15. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันCalcApplicationในแบบทั่วไปงานสมุดรายวัน-ลงรายการบัญชีบรรทัดโค้ดยูนิต (12) ดัง:
    รหัสที่อยู่ 1
    ...OldCVLedgEntryBuf."Open For Advance Letter" := FALSE;
    END ELSE
    AllApplied := FALSE;

    InitNewCVLedgEntry(DtldCVLedgEntryBuf,GenJnlLine);
    InitOldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf);
    ...
    รหัสแทนที่ 1
    ...OldCVLedgEntryBuf."Open For Advance Letter" := FALSE;
    END ELSE
    AllApplied := FALSE;

    // Add the following line.
    OldDtldCVLedgEntryBuf := DtldCVLedgEntryBuf;

    InitNewCVLedgEntry(DtldCVLedgEntryBuf,GenJnlLine);
    InitOldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf);
    ...
    รหัสที่มีอยู่ 2
    ...NewCVLedgEntryBuf.Prepayment AND (NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance);
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf,FALSE);

    // Delete the following line.
    NewCVLedgEntryBuf.Open := NewCVLedgEntryBuf."Remaining Amount" <> 0;

    IF NOT NewCVLedgEntryBuf.Open AND NOT AllApplied THEN BEGIN
    NewCVLedgEntryBuf."Closed by Entry No." := OldCVLedgEntryBuf."Entry No.";
    NewCVLedgEntryBuf."Closed at Date" := GenJnlLine."Posting Date";
    ...
    รหัสแทนที่ 2
    ...NewCVLedgEntryBuf.Prepayment AND (NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance);
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf,FALSE);

    // Add the following lines.
    IF DtldCVLedgEntryBuf.Advance AND
    OldDtldCVLedgEntryBuf.Advance AND
    (NOT GenJnlLine."System-Created Entry" OR
    (GenJnlLine."System-Created Entry" AND
    (GenJnlLine."Applies-to Doc. No." = '')))
    THEN
    IF (NewCVLedgEntryBuf."Document Type" IN [DtldCVLedgEntryBuf."Document Type"::Refund,
    DtldCVLedgEntryBuf."Document Type"::Payment]) AND
    (OldCVLedgEntryBuf."Document Type" IN [DtldCVLedgEntryBuf."Document Type"::Refund,
    DtldCVLedgEntryBuf."Document Type"::Payment])
    THEN
    IF (DtldCVLedgEntryBuf."Document Type" = DtldCVLedgEntryBuf."Document Type"::Payment) THEN
    SalesPostAdvances.InsertTempApplnAdvanceLink(DtldCVLedgEntryBuf."Entry No.")
    ELSE
    SalesPostAdvances.InsertTempApplnAdvanceLink(OldDtldCVLedgEntryBuf."Entry No.");

    NewCVLedgEntryBuf.Open := NewCVLedgEntryBuf."Remaining Amount" <> 0;
    NewCVLedgEntryBuf."Open For Advance Letter" := NewCVLedgEntryBuf.Open;
    //End of the lines.

    IF NOT NewCVLedgEntryBuf.Open AND NOT AllApplied THEN BEGIN
    NewCVLedgEntryBuf."Closed by Entry No." := OldCVLedgEntryBuf."Entry No.";
    NewCVLedgEntryBuf."Closed at Date" := GenJnlLine."Posting Date";
    ...
    รหัสที่มีอยู่ 3
    ...NewCVLedgEntryBuf."Closed by Amount (LCY)" := AppliedAmountLCY;
    NewCVLedgEntryBuf."Closed by Currency Code" := OldCVLedgEntryBuf."Currency Code";
    NewCVLedgEntryBuf."Closed by Currency Amount" := OldAppliedAmount;

    // Delete the following line.
    NewCVLedgEntryBuf."Open For Advance Letter" := FALSE;
    END;
    ...
    รหัสแทนที่ 3
    ...NewCVLedgEntryBuf."Closed by Amount (LCY)" := AppliedAmountLCY;
    NewCVLedgEntryBuf."Closed by Currency Code" := OldCVLedgEntryBuf."Currency Code";
    NewCVLedgEntryBuf."Closed by Currency Amount" := OldAppliedAmount;
    END;
    ...
  16. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันPostDtldCustLedgEntriesในแบบทั่วไปงานสมุดรายวัน-ลงรายการบัญชีบรรทัดโค้ดยูนิต (12) ดัง:
    รหัสที่มีอยู่
    ...InitGLEntry(GLAccNo,DtldCVLedgEntryBuf."Amount (LCY)",0,FALSE,TRUE);
    InsertGLEntry(TRUE);
    END;
    END;
    DtldCVLedgEntryBuf."Entry Type"::"Unrealized Loss":
    BEGIN
    ...
    รหัสแทน
    ...InitGLEntry(GLAccNo,DtldCVLedgEntryBuf."Amount (LCY)",0,FALSE,TRUE);
    InsertGLEntry(TRUE);
    END;

    // Add the following line.
    SalesPostAdvances.InsertApplnAdvanceLink(DtldCVLedgEntryBuf);

    END;
    DtldCVLedgEntryBuf."Entry Type"::"Unrealized Loss":
    BEGIN
    ...
  17. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันApplyVendLedgEntryในแบบทั่วไปงานสมุดรายวัน-ลงรายการบัญชีบรรทัดโค้ดยูนิต (12) ดัง:
    รหัสที่อยู่ 1
    ...THEN
    EXIT;

    // Delete the following lines.
    IF NOT GenJnlLine."System-Created Entry" AND (GenJnlLine."Applies-to ID" <> '') AND
    (NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance)
    THEN
    ERROR(Text26500,NewCVLedgEntryBuf."Document Type",NewCVLedgEntryBuf."Document No.");
    // End of the lines.

    PmtTolAmtToBeApplied := 0;
    NewRemainingAmtBeforeAppln := NewCVLedgEntryBuf."Remaining Amount";
    NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;
    ...
    รหัสแทนที่ 1
    ...THEN
    EXIT;

    PmtTolAmtToBeApplied := 0;
    NewRemainingAmtBeforeAppln := NewCVLedgEntryBuf."Remaining Amount";
    NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;
    ...
    รหัสที่มีอยู่ 2
    ...OldVendLedgEntry.FINDFIRST;
    OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
    IF NOT GenJnlLine."System-Created Entry" THEN BEGIN

    // Delete the following lines.
    IF NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance THEN
    ERROR(Text26500,NewCVLedgEntryBuf."Document Type",NewCVLedgEntryBuf."Document No.");
    IF OldVendLedgEntry."Prepayment Type" = OldVendLedgEntry."Prepayment Type"::Advance THEN
    ERROR(Text26500,OldVendLedgEntry."Document Type",OldVendLedgEntry."Document No.");
    // End of the lines.

    END;
    IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN
    ApplyingDate := OldVendLedgEntry."Posting Date";
    ...
    รหัสแทนที่ 2
    ...OldVendLedgEntry.FINDFIRST;
    OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
    IF NOT GenJnlLine."System-Created Entry" THEN BEGIN

    // Add the following lines.
    IF GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance THEN
    OldVendLedgEntry.TESTFIELD("Prepayment Type",OldVendLedgEntry."Prepayment Type"::Advance);
    IF OldVendLedgEntry."Prepayment Type" = OldVendLedgEntry."Prepayment Type"::Advance THEN
    GenJnlLine.TESTFIELD("Prepayment Type",GenJnlLine."Prepayment Type"::Advance);
    // End of the lines.

    END;
    IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN
    ApplyingDate := OldVendLedgEntry."Posting Date";
    ...
    รหัสที่มีอยู่ 3
    ...OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
    IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN
    REPEAT

    // Delete the following lines.
    IF (OldVendLedgEntry."Prepayment Type" <> OldVendLedgEntry."Prepayment Type"::Advance) OR
    (OldVendLedgEntry."Applies-to ID" <> '')
    THEN
    // End of the lines.

    IF GenJnlApply.CheckAgainstApplnCurrency(
    NewCVLedgEntryBuf."Currency Code",
    OldVendLedgEntry."Currency Code",
    ...
    รหัสแทนที่ 3
    ...OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code");
    IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN
    REPEAT

    // Add the following lines.
    IF NOT GenJnlLine."System-Created Entry" THEN BEGIN
    IF GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance THEN
    OldVendLedgEntry.TESTFIELD("Prepayment Type",OldVendLedgEntry."Prepayment Type"::Advance);
    IF OldVendLedgEntry."Prepayment Type" = OldVendLedgEntry."Prepayment Type"::Advance THEN
    GenJnlLine.TESTFIELD("Prepayment Type",GenJnlLine."Prepayment Type"::Advance);
    END;
    //End of the lines.

    IF GenJnlApply.CheckAgainstApplnCurrency(
    NewCVLedgEntryBuf."Currency Code",
    OldVendLedgEntry."Currency Code",
    ...
  18. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันPostDtldVendLedgEntriesในแบบทั่วไปงานสมุดรายวัน-ลงรายการบัญชีบรรทัดโค้ดยูนิต (12) ดัง:
    รหัสที่มีอยู่
    ...InitGLEntry(GLAccNo,DtldCVLedgEntryBuf."Amount (LCY)",0,FALSE,TRUE);
    InsertGLEntry(TRUE);
    END;
    END;
    DtldCVLedgEntryBuf."Entry Type"::"Unrealized Loss":
    BEGIN
    ...
    รหัสแทน
    ...InitGLEntry(GLAccNo,DtldCVLedgEntryBuf."Amount (LCY)",0,FALSE,TRUE);
    InsertGLEntry(TRUE);
    END;

    // Add the following line.
    SalesPostAdvances.InsertApplnAdvanceLink(DtldCVLedgEntryBuf);

    END;
    DtldCVLedgEntryBuf."Entry Type"::"Unrealized Loss":
    BEGIN
    ...
  19. เปลี่ยนแปลงรหัสนี้ในทริกเกอร์OnRunในแบบทั่วไปงานสมุดรายวัน-ใช้โค้ดยูนิต (225) เป็นดังนี้:
    รหัสที่อยู่ 1
    ...CustLedgEntry.SETCURRENTKEY("Customer No.",Open,Positive);
    CustLedgEntry.SETRANGE("Customer No.",AccNo);
    CustLedgEntry.SETRANGE(Open,TRUE);
    IF "Cash Order Type" <> "Cash Order Type"::" " THEN
    CustLedgEntry.SETRANGE("Currency Code","Currency Code");
    IF "Applies-to ID" = '' THEN
    ...
    รหัสแทนที่ 1
    ...CustLedgEntry.SETCURRENTKEY("Customer No.",Open,Positive);
    CustLedgEntry.SETRANGE("Customer No.",AccNo);
    CustLedgEntry.SETRANGE(Open,TRUE);

    // Add the following lines.
    IF GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance THEN
    CustLedgEntry.SETRANGE("Prepayment Type",GenJnlLine."Prepayment Type"::Advance)
    ELSE
    CustLedgEntry.SETFILTER("Prepayment Type",'<>%1',GenJnlLine."Prepayment Type"::Advance);
    //End of the lines.

    IF "Cash Order Type" <> "Cash Order Type"::" " THEN
    CustLedgEntry.SETRANGE("Currency Code","Currency Code");
    IF "Applies-to ID" = '' THEN
    ...
    รหัสที่มีอยู่ 2
    ...VendLedgEntry.SETCURRENTKEY("Vendor No.",Open,Positive);
    VendLedgEntry.SETRANGE("Vendor No.",AccNo);
    VendLedgEntry.SETRANGE(Open,TRUE);
    IF "Cash Order Type" <> "Cash Order Type"::" " THEN
    VendLedgEntry.SETRANGE("Currency Code","Currency Code");
    IF "Applies-to ID" = '' THEN
    ...
    รหัสแทนที่ 2
    ...VendLedgEntry.SETCURRENTKEY("Vendor No.",Open,Positive);
    VendLedgEntry.SETRANGE("Vendor No.",AccNo);
    VendLedgEntry.SETRANGE(Open,TRUE);

    // Add the following lines.
    IF GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance THEN
    VendLedgEntry.SETRANGE("Prepayment Type",GenJnlLine."Prepayment Type"::Advance)
    ELSE
    VendLedgEntry.SETFILTER("Prepayment Type",'<>%1',GenJnlLine."Prepayment Type"::Advance);
    //End of the lines.

    IF "Cash Order Type" <> "Cash Order Type"::" " THEN
    VendLedgEntry.SETRANGE("Currency Code","Currency Code");
    IF "Applies-to ID" = '' THEN
    ...
  20. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันPostUnApplyCustomerในโค้ดยูนิต (226) CustEntry-ใช้รายการบัญชีที่ลงรายการบัญชีเป็นดังนี้:
    รหัสที่มีอยู่
    ...DtldCustLedgEntry.LOCKTABLE;
    CustLedgEntry.LOCKTABLE;
    CustLedgEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.");
    CheckPostingDate(PostingDate,'',0);
    IF PostingDate < DtldCustLedgEntry2."Posting Date" THEN
    ERROR(Text003,
    ...
    รหัสแทน
    ...DtldCustLedgEntry.LOCKTABLE;
    CustLedgEntry.LOCKTABLE;
    CustLedgEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.");

    // Add the following line.
    CustLedgEntry.TESTFIELD(Prepayment,FALSE);

    CheckPostingDate(PostingDate,'',0);
    IF PostingDate < DtldCustLedgEntry2."Posting Date" THEN
    ERROR(Text003,
    ...
  21. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันPostUnApplyVendorในโค้ดยูนิต (227) VendEntry-ใช้รายการบัญชีที่ลงรายการบัญชีเป็นดังนี้:
    รหัสที่มีอยู่
    ...DtldVendLedgEntry.LOCKTABLE;
    VendLedgEntry.LOCKTABLE;
    VendLedgEntry.GET(DtldVendLedgEntry2."Vendor Ledger Entry No.");
    CheckPostingDate(PostingDate,'',0);
    IF PostingDate < DtldVendLedgEntry2."Posting Date" THEN
    ERROR(Text003,
    ...
    รหัสแทน
    ...DtldVendLedgEntry.LOCKTABLE;
    VendLedgEntry.LOCKTABLE;
    VendLedgEntry.GET(DtldVendLedgEntry2."Vendor Ledger Entry No.");

    // Add the following line.
    VendLedgEntry.TESTFIELD(Prepayment,FALSE);

    CheckPostingDate(PostingDate,'',0);
    IF PostingDate < DtldVendLedgEntry2."Posting Date" THEN
    ERROR(Text003,
    ...
  22. เปลี่ยนแปลงรหัสนี้ในฟังก์ชันรหัสในแบบทั่วไปงานสมุดรายวัน-การลงรายการบัญชีโค้ดยูนิต (231) เป็นดังนี้:
    รหัสที่มีอยู่
    ...EXIT;

    TempJnlBatchName := "Journal Batch Name";

    GenJnlPostBatch.RUN(GenJnlLine);
    ...
    รหัสแทน
    ...EXIT;

    TempJnlBatchName := "Journal Batch Name";

    // Add the following lines.
    IF Prepayment THEN
    IF NOT ("Document Type" IN ["Document Type"::Payment,"Document Type"::Refund]) THEN
    FIELDERROR("Document Type");
    //End of the lines.

    GenJnlPostBatch.RUN(GenJnlLine);
    ...
  23. เพิ่มตัวแปรส่วนกลางใหม่ในโค้ดยูนิตล่วงหน้าที่ลงรายการบัญชีการขาย (26585), และระบุตัวแปรดังนี้:
    • ชื่อ: TempAdvanceLink
    • ชนิดข้อมูล:ระเบียนชั่วคราว
    • ชนิดย่อย:การเชื่อมโยงล่วงหน้า(26590)
  24. เพิ่มฟังก์ชันท้องถิ่นใหม่ในโค้ดยูนิตล่วงหน้าที่ลงรายการบัญชีการขาย (26585) เป็นดังนี้:
    PROCEDURE InsertTempApplnAdvanceLink@1470048(DtldEntryBufEntryNo@1470002 : Integer);BEGIN
    TempAdvanceLink.INIT;
    TempAdvanceLink."Entry No." := DtldEntryBufEntryNo;
    TempAdvanceLink.INSERT;
    END;
  25. เพิ่มฟังก์ชันท้องถิ่นใหม่ในโค้ดยูนิตล่วงหน้าที่ลงรายการบัญชีการขาย (26585) เป็นดังนี้:
    PROCEDURE InsertApplnAdvanceLink@140049(DtldCVLedgEntryBuf@1102601000 : Record 383);VAR
    AdvanceLink@1470001 : Record 26590;
    BEGIN
    WITH AdvanceLink DO BEGIN
    IF TempAdvanceLink.GET(DtldCVLedgEntryBuf."Entry No.") THEN BEGIN
    IF FINDLAST THEN
    NextLinkEntryNo := AdvanceLink."Entry No." + 1
    ELSE
    NextLinkEntryNo := 1;
    INIT;
    "Entry No." := NextLinkEntryNo;
    "Entry Type" := "Entry Type"::Application;
    "Document No." := DtldCVLedgEntryBuf."Document No.";
    "CV Ledger Entry No." := DtldCVLedgEntryBuf."Cust. Ledger Entry No.";
    Amount := DtldCVLedgEntryBuf.Amount;
    "Amount (LCY)" := DtldCVLedgEntryBuf."Amount (LCY)";
    INSERT;
    TempAdvanceLink.DELETE;
    END;
    END;
    END;

ข้อกำหนดเบื้องต้น

คุณต้องมีรุ่นยุโรปตะวันออกของ Microsoft Dynamics NAV 2009 R2 ติดตั้งเมื่อต้องการใช้โปรแกรมแก้ไขด่วนนี้

ข้อมูลการเอาออก

คุณไม่สามารถเอาโปรแกรมแก้ไขด่วนนี้

สถานะ


Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ"
หมายเหตุ นี่คือบทความ "เผยแพร่เร็ว" ที่สร้างขึ้นโดยตรงจากภายใน Microsoft สนับสนุนองค์กร ข้อมูลในที่นี้ให้ไว้ตามสภาพ เพื่อตอบสนองกับปัญหาที่เกิดขึ้นใหม่ เป็นผลมาจากความเร็วในการทำให้พร้อมใช้งาน วัสดุอาจรวมถึงข้อผิดพลาดการพิมพ์ผิด และอาจแก้ไขได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบ ดูข้อตกลงการใช้สำหรับข้อควรพิจารณาอื่น ๆ