Pernah menemukan error seperti dibawah ini :
“Accounting Period Starting Date MM/DD/YY already exists.”
Atau yang ini :
“Another user has modified the record for this Account Period after you retrieved it from the Database. Enter your changes again in the updated window, or start the interrupted activity again.
Identification Fields and values: Starting date: ‘MM/DD/YY‘”
Error ini saya hadapi di Navision 5
Untuk error yang pertama ditemukan saat melakukan klik pada kolom New fiscal year untuk accounting periode di dialogbox Accounting Periods. Ketika kita menekan tombol TAB maka error tersebut muncul.
Untuk error yang kedua ditemukan saat menambahkan accounting periode secara manual. Ketika pointer kita pindahkan maka muncul error tersebut.
Setelah mencari penyebab dan solusinya, akhirnya ditemukan bahwa ini merupakan bugs. Microsoft telah mengeluarkan hotfix untuk error ini. Kita dapat melakukan perubahan sesuai dengan hotfix yang telah disediakan.
Dibawah ini merupakan bagian coding function UpdateAvgCostFromAccPeriodChg di Change Average Cost Setting (Code Unit : 5810) yang harus dirubah untuk mengatasi error tersebut. Langkah yang harus dilakukan adalah
- Membuka object designer.
- Cari Code Unit 5810 Change Average Cost Setting
- Klik Design
- Cari function UpdateAvgCostFromAccPeriodChg
- Ubah isinya sesuai dengan code dibawah ini
ASLI
PROCEDURE UpdateAvgCostFromAccPeriodChg@1(AccPeriod@1004 : Record 50;PrevAccPeriod@1008 : Record 50;...) VAR xRecAccPeriod@1006 : Record 50; ... IF NOT (("New Fiscal Year" OR PrevAccPeriod."New Fiscal Year" OR (InvtSetup."Average Cost Period" = InvtSetup."Average Cost Period"::"Accounting Period"))) THEN EXIT; StartingValuationDate := "Starting Date"; CASE UpdateType OF ... UpdateType::Rename: BEGIN IF (StartingValuationDate > PrevAccPeriod."Starting Date") AND (PrevAccPeriod."Starting Date" <> 0D) THEN StartingValuationDate := PrevAccPeriod."Starting Date"; END; END; ProcessItemsFromDate(StartingValuationDate); END;
Pengganti
PROCEDURE UpdateAvgCostFromAccPeriodChg@1(VAR AccPeriod@1004 : Record 50;PrevAccPeriod@1008 : Record 50;...) VAR AccPeriod2@1006 : Record 50; ... IF NOT (("New Fiscal Year" OR PrevAccPeriod."New Fiscal Year" OR (InvtSetup."Average Cost Period" = InvtSetup."Average Cost Period"::"Accounting Period"))) THEN EXIT; StartingValuationDate := 0D; AccPeriod2 := AccPeriod; CASE UpdateType OF ... UpdateType::Rename: BEGIN PrevAccPeriod.DELETE; INSERT; IF ("Starting Date" > PrevAccPeriod."Starting Date") AND (PrevAccPeriod."Starting Date" <> 0D) THEN AccPeriod2 := PrevAccPeriod; END; END; IF AccPeriod2.NEXT(-1) <> 0 THEN StartingValuationDate := AccPeriod2."Starting Date"; ProcessItemsFromDate(StartingValuationDate); CASE UpdateType OF UpdateType::Insert: DELETE; UpdateType::Delete: INSERT; UpdateType::Rename: BEGIN PrevAccPeriod.INSERT; DELETE; END; END; END;