รวมบัญชีของธุรกรรมสินค้าคงคลัง
เมื่อเวลาผ่านไป ตารางรายการความเคลื่อนไหวของสินค้าคงคลัง (InventTrans
) จะยังคงเพิ่มขึ้นและใช้พื้นที่ฐานข้อมูลเพิ่มขึ้น ดังนั้น การสอบถามที่ถูกสร้างขึ้นเทียบกับตารางจะช้าลงทีละน้อย หัวข้อนี้อธิบายวิธีการที่คุณสามารถใช้ลักษณะการงานการรวม บัญชีธุรกรรม สินค้าคงคลัง เพื่อรวมข้อมูลเกี่ยวกับรายการความเคลื่อนไหวของสินค้าคงคลัง เพื่อช่วยปรับปรุงประสิทธิภาพของระบบ
หมายเหตุ
เฉพาะรายการความเคลื่อนไหวของสินค้าคงคลังที่อัพเดตทางการเงินเท่านั้น ที่สามารถรวมบัญชีในรอบระยะเวลาบัญชีแยกประเภทที่ปิดบัญชีแล้วที่เลือก เมื่อต้องการรวมบัญชี รายการความเคลื่อนไหวของสินค้าคงคลังขาออก ที่อัพเดตทางการเงินต้องมีสถานะการตัดสินค้าจากคลังเป็น ขายแล้ว และรายการความเคลื่อนไหวของสินค้าคงคลังขาเข้าต้องมีสถานะการรับ สินค้าเป็น ซื้อแล้ว
เมื่อคุณรวมบัญชีรายการความเคลื่อนไหวของสินค้าคงคลัง ธุรกรรมที่เกี่ยวข้องทั้งหมดจะถูกย้ายไปยัง InventTransArchive
ตาราง ธุรกรรมการตัดสินค้าจากคลังของสินค้าคงคลังและธุรกรรมการรับสต็อกจะถูกรวมบัญชีโดยแยกต่างหาก ตามชุดข้อมูลของรหัสสินค้า () และรหัสมิติสินค้าคงคลัง (itemId
inventDimId
) และสินค้าเหล่านั้นจะถูกรวมเข้าในสรุปการตัดสินค้าจากคลังและสรุปธุรกรรมการรับสินค้า
ถ้าชุด itemId
inventDimId
และประกอบด้วยธุรกรรมการรับสินค้าหรือการตัดสินค้าจากคลังเพียงธุรกรรมเดียว ธุรกรรมจะไม่รวมบัญชี
หมายเหตุ
หลังจากรวมรายการความเคลื่อนไหวของสินค้าคงคลังแล้ว Dataverse คุณยังสามารถเพิ่มประสิทธิภาพในการจัดเก็บและประสิทธิภาพของระบบของฉันได้โดยใช้ส่วนเก็บถาวรที่มี คุณลักษณะเงินประกันผลงานระยะยาวเพื่อย้าย InventTransArchive
เรกคอร์ดไปยัง Microsoft Azure ชุดข้อมูล ดูข้อมูลเพิ่มเติมที่ เก็บถาวร ข้อมูลธุรกรรมสินค้าคงคลัง Dynamics 365 Supply Chain Management
เปิดใช้งานคุณลักษณะการทำงานในระบบของคุณ
ถ้าระบบของคุณยังไม่ได้รวมคุณลักษณะที่อธิบายไว้บทความนี้ ให้ไปที่การจัดการลักษณะการงาน และเปิดลักษณะการงานการรวม บัญชีธุรกรรม สินค้าคงคลัง คุณลักษณะนี้ไม่สามารถปิดใช้งานได้หลังจากเปิดใช้งานแล้ว
สิ่งที่ต้องพิจารณาก่อนที่คุณจะรวมบัญชีธุรกรรมสินค้าคงคลัง
ก่อนที่คุณจะรวมบัญชีรายการความเคลื่อนไหวของสินค้าคงคลัง คุณควรพิจารณาถึงสถานการณ์ทางธุรกิจต่อไปนี้ เนื่องจากสถานการณ์ดังกล่าวจะได้รับผลกระทบจากการปฏิบัติการ:
- เมื่อคุณตรวจสอบรายการความเคลื่อนไหวของสินค้าคงคลังจากเอกสารที่เกี่ยวข้อง เช่น บรรทัดใบสั่งซื้อ รายการความเคลื่อนไหวของสินค้าคงคลังจะแสดงเป็นรวมบัญชี เมื่อต้องการตรวจทานธุรกรรมที่รวมบัญชี คุณต้องไปที่งาน ล้างข้อมูลการรวมบัญชี ธุรกรรมสินค้าคงคลัง > > ของการบริหาร > สินค้าคงคลัง
- ไม่สามารถยกเลิกการปิดบัญชีสินค้าคงคลังในรอบระยะเวลาที่รวมบัญชี
- ไม่สามารถแปลงต้นทุนมาตรฐานได้กับรอบระยะเวลาที่รวมบัญชี
- รายงานสินค้าคงคลังที่ได้รับมาจากรายการความเคลื่อนไหวของสินค้าคงคลังจะได้รับผลกระทบเมื่อคุณรวมบัญชีรายการความเคลื่อนไหวของสินค้าคงคลัง รายงานเหล่านี้รวมรายงานอายุหนี้ของสินค้าคงคลังและรายงานมูลค่าสินค้าคงคลัง
- การคาดการณ์สินค้าคงคลังอาจได้รับผลกระทบถ้ารันอีกครั้งระหว่างระดับเวลาที่รอบระยะเวลาที่รวมบัญชี
ข้อกำหนดเบื้องต้น
สามารถรวมบัญชีรายการความเคลื่อนไหวของสินค้าคงคลังได้เฉพาะในระหว่างรอบระยะเวลาที่เป็นไปตามเงื่อนไขต่อไปนี้เท่านั้น
- ต้องปิดรอบระยะเวลาบัญชีแยกประเภท
- ต้องรันการปิดบัญชีสินค้าคงคลังในวันที่หรือหลังจากวันที่ถึงรอบระยะเวลาของการรวมบัญชี
- รอบระยะเวลาต้องเป็นอย่างน้อยหนึ่งปีก่อนหน้าวันที่เริ่มต้นของรอบระยะเวลาการรวมบัญชี
- ต้องไม่มีการคำนวณซ้ำสินค้าคงคลังที่มีอยู่ใดๆ
การรวมรายการความเคลื่อนไหวของสินค้าคงคลัง
หากต้องการรวมบัญชีรายการความเคลื่อนไหวของสินค้าคงคลัง ให้ปฏิบัติตามขั้นตอนต่อไปนี้
ไปที่งาน การบริหารสินค้าคงคลัง>เมื่อล้างข้อมูล>การรวม>บัญชีธุรกรรมสินค้าคงคลัง
หน้า การรวมบัญชี ธุรกรรมสินค้าคงคลังจะปรากฏและแสดงรายการเรกคอร์ดกระบวนการรวมบัญชี
ในบานหน้าต่างการคลิก "การรวมบัญชีรายการ ความเคลื่อนไหวของสินค้าคงคลัง " เพื่อสร้างการรวมบัญชีรายการความเคลื่อนไหวของสินค้าคงคลัง
ในกล่องโต้ตอบ การรวมบัญชี ธุรกรรมสินค้าคงคลัง บนแท็บ ด่วน พารามิเตอร์ ให้ตั้งค่าฟิลด์ต่อไปนี้
- วันที่เริ่มต้นในรอบระยะเวลาบัญชีแยกประเภทที่ ปิด– เลือกวันที่ธุรกรรมแรกสุดที่จะรวมไว้ในการรวมบัญชี
- วันที่สิ้นสุดในรอบระยะเวลาบัญชีแยกประเภทที่ ปิด– เลือกวันที่ธุรกรรมล่าสุดที่จะรวมไว้ในการรวมบัญชี
หมายเหตุ
เฉพาะรอบระยะเวลาที่ตรงตาม เงื่อนไขเบื้องต้น เท่านั้นที่จะพร้อมใช้งานในการเลือก
บน FastTab รันในแบบเบื้องหลัง ให้ตั้งค่ารายละเอียดการประมวลผลชุดงานตามที่คุณต้องการ ปฏิบัติตามขั้นตอนปกติของชุดงาน Microsoft Dynamics 365 Supply Chain Managementใน
เลือก ตกลง
คุณจะได้รับข้อความเตือนให้คุณยืนยันว่าคุณต้องการดำเนินการต่อหรือไม่ อ่านข้อความอย่างรอบคอบ แล้วจากนั้น เลือก ใช่ ถ้าคุณต้องการดำเนินการต่อ
คุณจะได้รับข้อความระบุว่างานการรวมบัญชีธุรกรรมสินค้าคงคลังของคุณถูกเพิ่มเข้าในคิวชุดงาน งานจะเริ่มต้นรวมบัญชีรายการความเคลื่อนไหวของสินค้าคงคลังจากรอบระยะเวลาที่เลือก
ดูธุรกรรมสินค้าคงคลังแบบรวมบัญชี
หน้า การรวมบัญชีธุรกรรม สินค้าคงคลังแสดงประวัติการรวมบัญชีแบบเต็มของคุณ แต่ละแถวในกริดแสดงข้อมูล เช่น วันที่สร้างการรวมบัญชี ผู้ใช้ที่สร้างบัญชี และสถานะของการรวมบัญชี
ในรายการแบบหล่นลงที่ด้านบนของหน้า เลือกค่าใดค่าหนึ่งต่อไปนี้เพื่อกรองข้อมูลการรวมบัญชีที่แสดงในกริด
- ใช้งานอยู่ – แสดงเฉพาะการรวมบัญชีที่ใช้งานอยู่เท่านั้น
- ทั้งหมด – แสดงการรวมบัญชีทั้งหมด
ข้อมูลต่อไปนี้จะมีไว้ดังต่อไปนี้:
- ใช้งานอยู่ – เครื่องหมายถูกบ่งชี้ว่าการรวมบัญชีเปิดใช้งานอยู่
- วันที่เริ่มต้น– วันที่ของธุรกรรมที่เก่าที่สุดที่สามารถรวมอยู่ในการรวมบัญชี
- วันที่สิ้นสุด – วันที่ของธุรกรรมล่าสุดที่สามารถรวมไว้ในการรวมบัญชี
- จัดตารางการผลิต ตาม– บัญชีผู้ใช้ที่สร้างการรวมบัญชี
- ปฏิบัติการแล้ว– วันที่ที่สร้างการรวมบัญชี
- หยุดการอัพเดต ปัจจุบัน– เครื่องหมายถูกบ่งชี้ว่าการรวมบัญชีอยู่ระหว่างกระบวนการ แต่ถูกหยุดไว้ชั่วคราว
- รัฐ – สถานะการประมวลผลของการรวมบัญชี ค่าที่เป็นไปได้คือ กำลังรอ อยู่ระหว่างดำเนินการ และ เสร็จสิ้นแล้ว
แถบเครื่องมือเหนือกริดจะมีปุ่มต่อไปนี้ที่คุณสามารถใช้ในการงานกับการรวมบัญชีที่เลือก:
ธุรกรรมที่รวม บัญชี– ดูรายละเอียดทั้งหมดของการรวมบัญชีที่เลือก หน้า ธุรกรรมที่ รวมบัญชีที่ปรากฏแสดงธุรกรรมทั้งหมดในการรวมบัญชี
เมื่อต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับธุรกรรมเฉพาะบนหน้าธุรกรรม ที่รวม บัญชี ให้เลือกธุรกรรมนั้นในกริด แล้วในบานหน้าต่างการเบิกสินค้า ให้เลือกรายละเอียด ธุรกรรมที่รวมบัญชี หน้า รายละเอียดธุรกรรมที่ รวมบัญชีที่ปรากฏ แสดงข้อมูล เช่น การลงรายการบัญชีแยกประเภท ข้อมูลอ้างอิงของบัญชีแยกประเภทย่อยที่เกี่ยวข้อง และมิติทางการเงิน
หยุดชั่วคราว – หยุดการรวมบัญชีที่เลือกที่ประมวลผลอยู่ในขณะนี้ชั่วคราว การหยุดชั่วคราวจะมีผลเฉพาะหลังจากสร้างงานการเก็บถาวรเท่านั้น ดังนั้น อาจมีความล่าช้าสั้นๆ ก่อนที่การหยุดชั่วคราวจะมีผล ถ้าการรวมบัญชีถูกหยุดไว้ เครื่องหมายถูกจะปรากฏขึ้นในฟิลด์ หยุดการอัพเดต ปัจจุบัน
ประวัติ ย่อ– เริ่มการประมวลผลการรวมบัญชีที่เลือกที่หยุดชั่วคราวในปัจจุบัน
ขยายโค้ดของคุณเพื่อรองรับฟิลด์ที่กำหนดเอง
ถ้า InventTrans
ตารางมีฟิลด์ที่ศุลกากรหนึ่งฟิลด์หรือมากกว่า นั้น คุณอาจต้องขยายรหัสเพื่อสนับสนุนฟิลด์เหล่านั้น ทั้งนี้ขึ้นอยู่กับวิธีการตั้งชื่อใหม่
- ถ้าฟิลด์ที่ศุลกากรจาก
InventTrans
ตารางมีชื่อฟิลด์เหมือนกับในตารางInventtransArchive
ซึ่งหมายความว่าฟิลด์นั้นถูกแม็ปใหม่ 1:1 ดังนั้นคุณจึงสามารถวางฟิลด์ที่กำหนดเองลงในกลุ่มฟิลด์InventoryArchiveFields
ของตารางinventTrans
ได้ - ถ้าชื่อฟิลด์ที่กำหนดเองในตาราง
InventTrans
ไม่ตรงกับชื่อฟิลด์ในตารางInventtransArchive
คุณต้องเพิ่มโค้ดเพื่อแมปชื่อฟิลด์เหล่านั้น ตัวอย่างเช่น ถ้าคุณมีฟิลด์ระบบที่ชื่อInventTrans.CreatedDateTime
คุณต้องสร้างฟิลด์ในตารางInventTransArchive
ด้วยชื่ออื่น (เช่นInventtransArchive.InventTransCreatedDateTime
) และเพิ่มส่วนขยายไปยังคลาสInventTransArchiveProcessTask
และInventTransArchiveSqlStatementHelper
ตามที่แสดงในโค้ดตัวอย่างต่อไปนี้
โค้ดตัวอย่างต่อไปนี้แสดงตัวอย่างวิธีเพิ่มส่วนขยายที่ต้องการลงในคลาส InventTransArchiveProcessTask
[ExtensionOf(classStr(InventTransArchiveProcessTask))]
Final class InventTransArchiveProcessTask_Extension
{
protected void addInventTransFields(SysDaSelection _selectionObject)
{
_selectionObject.add(fieldStr(InventTrans, ModifiedBy))
.add(fieldStr(InventTrans, CreatedBy)).add(fieldStr(InventTrans, CreatedDateTime));
next addInventTransFields(_selectionObject);
}
protected void addInventTransArchiveFields(SysDaSelection _selectionObject)
{
_selectionObject.add(fieldStr(InventTransArchive, InventTransModifiedBy))
.add(fieldStr(InventTransArchive, InventTransCreatedBy)).add(fieldStr(InventTransArchive, InventTransCreatedDateTime));
next addInventTransArchiveFields(_selectionObject);
}
}
โค้ดตัวอย่างต่อไปนี้แสดงตัวอย่างวิธีเพิ่มส่วนขยายที่ต้องการลงในคลาส InventTransArchiveSqlStatementHelper
[ExtensionOf(classStr(InventTransArchiveSqlStatementHelper))]
final class InventTransArchiveSqlStatementHelper_Extension
{
private str inventTransModifiedBy;
private str inventTransCreatedBy;
private str inventTransCreatedDateTime;
protected void initialize()
{
next initialize();
inventTransModifiedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, ModifiedBy)).name(DbBackend::Sql);
inventTransCreatedDateTime = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedDateTime)).name(DbBackend::Sql);
inventTransCreatedBy = new SysDictField(tablenum(InventTrans), fieldNum(InventTrans, CreatedBy)).name(DbBackend::Sql);
}
protected str buildInventTransArchiveSelectionFieldsStatement()
{
str ret;
ret = next buildInventTransArchiveSelectionFieldsStatement();
if (inventTransModifiedBy)
{
ret += ',';
ret += strFmt('%1', new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransModifiedBy)).name(DbBackend::Sql));
}
if (inventTransCreatedBy)
{
ret += ',';
ret += strFmt('%1', new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedBy)).name(DbBackend::Sql));
}
if (inventTransCreatedDateTime)
{
ret += ',';
ret += strFmt('%1', new SysDictField(tablenum(InventTransArchive), fieldNum(InventTransArchive, InventTransCreatedDateTime)).name(DbBackend::Sql));
}
return ret;
}
protected str buildInventTransTargetFieldsStatement()
{
str ret;
ret = next buildInventTransTargetFieldsStatement();
if (inventTransModifiedBy)
{
ret += ',';
ret += strFmt('%1', inventTransModifiedBy);
}
if (inventTransCreatedBy)
{
ret += ',';
ret += strFmt('%1', inventTransCreatedBy);
}
if (inventTransCreatedDateTime)
{
ret += ',';
ret += strFmt('%1', inventTransCreatedDateTime);
}
return ret;
}
}