ปรับปรุงสต็อกอัตโนมัติจากใบตรวจนับ / ปรับมูลค่า Lot คงค้าง
สามเมนูในกลุ่มคลังสินค้า สร้าง "ใบปรับปรุงสต็อก" ให้เองจากข้อมูลที่ผู้ใช้เลือก แล้วตัวระบบออกเลขที่และเขียนเอกสารจริง ยอดทุกตัวคำนวณซ้ำใน Go ไม่เชื่อค่าจากหน้าจอ (หัวไฟล์ LotAdjustScreens.tsx:7) หน้าจอทำหน้าที่เลือกใบ/รายการ ยืนยัน และแสดงผล ตรรกะอยู่ที่ เครื่องมือสต็อก กลุ่ม route stocktools (Stock Tools) และ API สต็อกสินค้า (Process stock actions: stock/rebuild, stocktools/*, point-recal, check-ic-trans, ai-smart-reorder)
ใบปรับปรุงที่ได้เป็นสองแบบ (หัวไฟล์ :3-6): ปรับเพิ่ม (รูปแบบเอกสาร IA, ประเภท 66 ปรับปรุงสต็อกสินค้า/วัตถุดิบ (เพิ่ม) (Stock Adjustment In)) และ ปรับลด (IS, ประเภท 68 ปรับปรุงสต็อกสินค้า/วัตถุดิบ (ลด) (Stock Adjustment Out)) ส่วนต้นทางคือเอกสารนับสต็อก ประเภท 76 ตรวจนับสินค้า (Stock Count)
| รหัส | เมนู | จอ | ผูกที่ |
|---|---|---|---|
| 2045 | ปรับปรุงสต็อกสินค้า/วัตถุดิบอัตโนมัติ (menu_ic_stk_adjust_auto) |
StockAutoAdjustLotScreen mode="normal" |
screenRegistry.tsx:466 |
| 2046 | ปรับปรุงสต็อกสินค้า/วัตถุดิบอัตโนมัติ (สินค้า Lot) (menu_ic_stk_adjust_lot_auto) |
StockAutoAdjustLotScreen mode="lot" |
:482 |
| 2047 | ปรับปรุงมูลค่าสินค้า Lot คงค้าง (menu_ic_adjust_stock_lot_amount) |
LotAmountAdjustScreen |
:490 |
มีรหัสเมนูซ้ำ menu_ic_stk_adjust_auto_2 ที่เปิดจอเดียวกับ 2045 (:474, ค่าสำรองรหัสเดิม 2.19.6 เหมือนกัน) กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu) รหัสเก่า: 2045 = 2.19.6, 2046 = 2.19.7 |
2045 / 2046 ปรับปรุงสต็อกอัตโนมัติ (StockAutoAdjustLotScreen, :537-943)
เปรียบเทียบผลนับในใบตรวจนับกับยอดในระบบ แล้วสร้างใบปรับ
- 2045 (normal) เทียบยอดตามคลัง/ที่เก็บ (ส่ง
ignoreLot: trueไปที่ Go) และ 2046 (lot) เทียบยอดตาม LOT ด้วย (:667) จึงตารางตรวจมีคอลัมน์ LOT เพิ่มเฉพาะ 2046 (CHECK_COLS_LOT) หัวตารางบนบอกโหมด "สร้างเอกสารปรับปรุงสต็อกตามผลต่างคลัง/ที่เก็บ" หรือ "...ตามผลต่างของ LOT" - แถบเงื่อนไข: จากวันที่ / ถึงวันที่ (ค่าเริ่มต้น วันที่ 1 ของเดือนนี้ ถึงวันนี้), รหัสเอกสาร ปรับเพิ่ม (IA) และ รหัสเอกสารปรับปรุงลด (IS) ที่ปุ่มค้นเปิดกล่อง "เลือกรูปแบบเอกสาร" (
DocFormatPickerModal,:464-535เลือกรูปแบบเลขที่ IA หรือ IS จากรูปแบบเลขที่ในระบบ ดู erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน; ไม่มีรูปแบบขึ้น "ไม่พบรูปแบบเอกสาร ... (ระบบจะสร้างเลขที่อัตโนมัติ)"), ช่อง "รูปแบบเอกสาร" อ่านอย่างเดียวแสดงรูปแบบเลขที่ (เช่น IA-YYMM-####) และติ๊ก แสดงทั้งหมด เพื่อรวมใบที่ปรับแล้ว ตั้งต้นเลือกรูปแบบแรกของแต่ละประเภทให้เอง (:567-577) - เปิดจอแล้ว โหลดใบตรวจนับทันที (
load,:599-620) เรียกPOST /api/process/stocktools/lotautolistด้วย{dateBegin, dateEnd, showAll}ผลเป็นตารางใบนับ (เอกสารวันที่, เวลา, เลขที่, อ้างอิงวันที่/เลขที่, หมายเหตุ, สถานะ "ปรับปรุงแล้ว" / "ยังไม่ได้ปรับ") ใบที่ยังไม่ปรับถูกติ๊กไว้ให้ทั้งหมด ใบที่ปรับแล้วไม่ถูกนับรวมในการประมวลผล (นับเฉพาะ!processed,:582) ขึ้นสถานะพบเอกสารตรวจนับ N ใบ - ตารางล่าง: รายการในใบนับที่เลือก (
lotautocheck) หรือ "รายการตรวจสอบสินค้าซ้ำ" - ปุ่ม: Load · เลือกรูปแบบเอกสาร · เลือกทั้งหมด (เฉพาะใบยังไม่ปรับ) · ไม่เลือกทั้งหมด · ตรวจสอบสินค้าซ้ำ (
lotautocheckด้วยonlyDuplicate: trueใช้ใบที่ติ๊ก หรือทุกใบถ้ายังไม่ติ๊ก,:639-655) · สินค้าที่ไม่มีการตรวจนับและมียอดคงเหลือ (เปิดกล่องด้านล่าง) · ประมวลผล · Stop - ประมวลผล (หรือ Ctrl+S): ไม่มีสิทธิ์เพิ่ม/แก้ขึ้น
คุณไม่มีสิทธิ์ "เพิ่ม/แก้ไขข้อมูล" ...; ไม่ได้ติ๊กใบที่ยังไม่ปรับขึ้น "กรุณาเลือกเอกสารนับสต็อกที่ยังไม่ได้ปรับปรุง"; แล้วถามยืนยันต้องการทำการประมวลผล ปรับปรุงสต็อกสินค้า/วัตถุดิบ (N ใบ) หรือไม่ยืนยันแล้วPOST /api/process/stocktools/lotautorunด้วย{docNos, docFormatCode, downDocFormatCode, ignoreLot}(:657-683) ผลขึ้นข้อความรวม เช่นปรับเพิ่ม <เลขที่> (N รายการ) · ปรับลด <เลขที่> (M รายการ)หรือ "ไม่มีรายการที่ต้องปรับปรุง" และข้าม N รายการที่ปรับแล้วแล้วโหลดตารางใหม่ ข้อความสถานะ: "Start Process..." -> "Process Success!!" - Stop ไม่ได้ยกเลิกงานที่เซิร์ฟเวอร์:
stopProcessแค่ตั้งธงและปลดสถานะ busy ที่หน้าจอ แล้วไม่แสดงผลลัพธ์เมื่อคำขอกลับมา (:684-689) ไม่มีAbortControllerคำขอที่ส่งไปแล้วจึงอาจสร้างใบปรับจริง ถ้ากด Stop ให้กด Load ตรวจสถานะใบนับ ("ปรับปรุงแล้ว") ก่อนประมวลผลซ้ำ - กล่อง "สินค้าที่ไม่มีการตรวจนับและมียอดคงเหลือ" (
ProductNotFoundModal,:282-462): หาสินค้าที่มียอดในคลังแต่ไม่ถูกนับในใบที่เลือก เพื่อออกใบปรับให้เป็น 0 ช่อง เอกสารวันที่ (อ่านอย่างเดียว), เวลา (เช่น 23:59 ว่าง = ทั้งวัน), รายการคลัง (ติ๊กได้ ค่าเริ่มต้นติ๊กทุกคลังตามสิทธิ์ ดู สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf)) ปุ่ม ประมวลผลค้นหา (notcountedlist) แสดงสินค้า/คลัง/ที่เก็บ/จำนวน และปุ่ม สร้างเอกสารปรับปรุงเป็น 0 (notcountedrun) ไม่เลือกคลังขึ้น "กรุณาเลือกคลังสินค้าอย่างน้อย 1 คลัง"
2047 ปรับปรุงมูลค่าสินค้า Lot คงค้าง (LotAmountAdjustScreen, :93-280)
ปรับ LOT ที่จำนวนคงเหลือเป็น 0 แต่ยังมีมูลค่าเหลือ ให้มูลค่าเป็น 0 (โปรแกรมเดิม StockLotAdjustmentForm)
- เงื่อนไข: ณ วันที่ (วันนี้), สินค้าตั้งแต่ / ถึง (ปุ่มค้นหาเปิด รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog) ชุดค้นสินค้า; เลือก "ตั้งแต่" แล้วช่อง "ถึง" ว่างจะเติมค่าเดียวกันให้), รูปแบบ ปรับเพิ่ม (IA) และ รูปแบบ ปรับลด (IS)
- เปิดจอแล้วโหลดทันที (
lotamountload) ปุ่ม โหลดข้อมูล โหลดใหม่ ตาราง: รหัสสินค้า, ชื่อสินค้า, หน่วยนับ, คลัง, ที่เก็บ, LOT, จำนวนคงเหลือ, มูลค่าคงเหลือ ติ๊กเลือกรายการได้ (ค่าเริ่มต้นติ๊กทั้งหมด) ถ้าผลถูกตัดขึ้นสีแดง "แสดงเพียงบางส่วน กรุณาจำกัดช่วงรหัสสินค้าให้แคบลง" ว่างขึ้น "ไม่พบ LOT ที่มีมูลค่าคงเหลือค้าง" - ปุ่ม ปรับปรุงมูลค่า (Ctrl+S; ปิดเมื่อไม่ได้ติ๊กรายการ) ถามยืนยัน "ต้องการปรับปรุงมูลค่าคงเหลือ ของสินค้าหรือไม่" ส่ง
lotamountsaveด้วยเงื่อนไข + รายการที่ติ๊ก (รหัส/คลัง/ที่เก็บ/LOT) และรูปแบบเลขที่ IA/IS สร้างใบปรับเพิ่ม/ลดตามที่ Go คำนวณ แล้วขึ้นข้อความผลและโหลดใหม่
ตารางที่เกี่ยวข้อง
ตารางที่ Go เขียนไม่ปรากฏในโค้ดหน้าจอ เอกสารที่ได้คือใบปรับ 66/68 ใน หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) / รายการสินค้าในเอกสาร (ic_trans_detail) (รายการ LOT ที่ ยอดสินค้าตามล็อต (ic_trans_detail_lot)); รูปแบบเลขที่อ่านจาก erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน ผลกระทบต่อต้นทุน/ยอดคงเหลือดู เคลื่อนไหวสต็อกและต้นทุน (Stock Movement & Costing) และ เลข LOT, Serial Number และวันหมดอายุ (lot_number_1 / serial_number / date_expire)
ข้อควรระวัง
- เอกสารที่สร้างเป็นเอกสารจริง (66/68) ย้อนด้วยการยกเลิกเอกสาร ไม่มีปุ่ม "ย้อนการปรับ" ในจอ ดู ยกเลิกและอนุมัติเอกสาร (Document cancel / approve)
- สิทธิ์: สร้างใบปรับถือเป็นการเขียน ต้องมีสิทธิ์เพิ่มหรือแก้ไข (คอมเมนต์
:94) ผู้ใช้อ่านอย่างเดียวกดไม่ได้ - ไม่มีคีย์ Esc ในทั้งสามจอ (
useShortcuts(ask, null, true))
ที่มาในโค้ด
frontend/account/master/LotAdjustScreens.tsx:3-8หัวไฟล์/โปรแกรมเดิม;:93-280ปรับมูลค่า Lot;:282-462กล่องไม่มีการนับ;:464-535เลือกรูปแบบเอกสาร;:537-943ปรับอัตโนมัติ (:599โหลดใบ,:639ซ้ำ,:657ประมวลผล,:684Stop)frontend/account/tabs/screenRegistry.tsx:466-497- ดูเพิ่ม: เครื่องมือตรวจสอบสินค้า ราคา บาร์โค้ด และ Serial (CheckPriceScreen, BarcodeCheckerScreen, SerialStockCountScreen, SerialAnalyzeScreen) · ประมวลผลเฉลี่ยต้นทุนแฝง และต้นทุนนำเข้าสินค้าจากต่างประเทศ (HiddenCostScreen) · รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)