ประมวลผลเฉลี่ยต้นทุนแฝง (Landed Cost)
จอรวมค่าใช้จ่ายที่ไม่ได้อยู่ในราคาสินค้า (ค่าขนส่ง ค่าชิปปิ้ง อากร ฯลฯ) แล้ว "เฉลี่ย" เข้าต้นทุนของสินค้าที่รับเข้าตามเอกสารซื้อ ตามแนว TAS 2 (หัวไฟล์ HiddenCostScreen.tsx:3-8) ผลเป็นเอกสารต้นทุนแฝงหนึ่งใบ พร้อม ใบปรับปรุงต้นทุน (ประเภท 66 / รูปแบบ IA) ที่ Go สร้างให้ใน transaction เดียว ตรรกะการคำนวณอยู่ที่ ต้นทุนแฝง เฉลี่ยค่าใช้จ่ายเข้าสินค้า (Hidden Cost, เมนู 2.22) และ เครื่องมือสต็อก กลุ่ม route stocktools (Stock Tools); ผลต่อต้นทุนเฉลี่ยดู เคลื่อนไหวสต็อกและต้นทุน (Stock Movement & Costing)
วิธีเปิด
เมนู 2050 "ประมวลผลเฉลี่ยต้นทุนแฝง" (menu_ic_hidden_cost_process, หมวดสินค้า/คลัง รหัสเก่า 2.22) ผูกที่ screenRegistry.tsx:779 มีเมนูรหัสซ้ำ menu_ic_weight_cost เปิดจอเดียวกัน (:791-800) กลไกเมนูดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu)
โครงจอ
- ซ้าย: รายการเอกสารต้นทุนแฝง (วันที่, เลขที่, มูลค่า =
total_amount, หมายเหตุ) จากic_hidden_cost_processเรียงวันที่ใหม่ก่อน ค้นจากเลขที่/หมายเหตุ/เลขที่ใบปรับ/เลขที่ใบขนศุลกากร/เรือ-ตู้ (listSql,:64-69) ไม่จำกัดจำนวนแถว ดับเบิลคลิกแถว = แก้ไข กลไกรายการดู รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog) - ขวา: หัวเอกสาร + ส่วนนำเข้าจากต่างประเทศ + ตารางเอกสารอ้างอิง 2 ชุด + ตารางผลปันส่วน
- ปุ่มโหมดดู: เพิ่มใหม่, แก้ไข, ลบ (เฉพาะเมื่อเลือกเอกสาร), ปิดหน้าจอ; โหมดแก้: บันทึก, ปิดหน้าจอ (ยกเลิกการแก้) คีย์ลัด Ctrl+S/F12 บันทึก, Esc ยกเลิก (
useShortcuts,:235) ตามสิทธิ์เพิ่ม/แก้ไข/ลบ ดู การตรวจสิทธิ์เมนูของ route process (Process route rights)
ช่องหัวเอกสาร (:347-383)
| ช่อง | ข้อกำหนด |
|---|---|
| วันที่เอกสาร / เวลา | วันนี้ / เวลาปัจจุบัน (เวลา 5 ตัวอักษร) |
| เลขที่เอกสาร | ไม่เกิน 25 ตัว ตัวพิมพ์ใหญ่ ว่างไว้ = รันเลขอัตโนมัติ แก้ได้เฉพาะตอนเพิ่มใหม่ |
| รูปแบบเอกสาร | เลือกจากรูปแบบเลขที่ประเภท AFC (เฉพาะตอนเพิ่มใหม่) ดู erp_doc_format — รูปแบบ/ชนิดเอกสารและเลขที่รัน |
| มูลค่ารวมต้นทุนแฝง | อ่านอย่างเดียว = totalAmount จากการประมวลผล (มูลค่าสุทธิเอกสารค่าใช้จ่าย + ค่านำเข้าตรง) แม้เลือก "มูลค่าก่อนภาษี" ก็ยังแสดงยอดสุทธิ ไม่ใช่ยอดที่ปันส่วน (:205, :361-362) |
| สาขา | ว่าง = สาขาของผู้ใช้ |
| หมายเหตุ | ไม่เกิน 255 ตัว |
| เลขที่ใบปรับปรุง / รูปแบบใบปรับปรุง | เลขที่ใบปรับต้นทุน (ว่าง = รันเลข) และรูปแบบเลขที่ IA |
| คำนวณต้นทุนแฝงจาก | มูลค่าสุทธิ / มูลค่าก่อนภาษี |
| เฉลี่ยต้นทุนตาม | มูลค่าสินค้า (FOB/Value) / จำนวนหน่วย (Qty) / น้ำหนักจริง/หน่วยขนาน (Weight kg) / เท่ากันทุกรายการ (Equal) |
เปลี่ยน "คำนวณจาก" หรือ "เฉลี่ยตาม" แล้ว ผลปันส่วนเดิมถูกล้าง (:379, :382)
ส่วนนำเข้าจากต่างประเทศ (Landed Cost / Import Shipment, :385-431)
Incoterms (CIF ค่าเริ่มต้น, FOB, CFR, EXW, DDP, DOMESTIC), เลขที่ใบขนสินค้าศุลกากร (ไม่เกิน 50 ตัว), เรือ/ตู้คอนเทนเนอร์/ทะเบียนรถ (ไม่เกิน 100 ตัว), สกุลเงิน (THB ค่าเริ่มต้น, USD, CNY, JPY, EUR, SGD), อัตราแลกเปลี่ยน (exchangeRate ทศนิยม 4 ตำแหน่ง ค่าเริ่มต้น 1, :416) และค่าตรง 4 ช่อง: ค่าขนส่ง/ระวาง (Freight, transportValue), ค่าประกันภัย (Insurance), อากรขาเข้า (Import Duty), ค่าชิปปิ้ง/พิธีการ/ท่าเรือ ทศนิยม 2 ตำแหน่ง (:419-428) ค่าคงที่/ค่าเริ่มต้นที่ :32-33, :59-60 ดู ตัวเลข เงิน ภาษี และปี พ.ศ. ฝั่ง frontend (numeric.ts) หัวกล่องแสดง "รวมต้นทุนนำเข้า/ขนส่งทางตรง" บวกฝั่งจอด้วย sumDec (:252, :393) แก้ค่า 4 ช่องเงิน ล้างผลปันส่วนเดิม ต้องกดประมวลผลใหม่ ส่วนช่อง Incoterms/ใบขน/เรือ/สกุลเงิน/อัตราแลกเปลี่ยนไม่ล้าง (อัตราแลกเปลี่ยนเก็บไว้เท่านั้น ไม่ได้คูณยอด ดู ค่าขนส่ง ค่าอากรขาเข้า (ต้นทุนแฝง / Landed Cost) เข้าต้นทุนสินค้ายังไง)
เอกสารอ้างอิง 2 ตาราง (:433-438)
- "เอกสารค่าใช้จ่ายอ้างอิง" ประเภท ตั้งหนี้อื่น ๆ (เจ้าหนี้) [87] หรือ ค่าใช้จ่ายอื่น ๆ [260] — มีคอลัมน์ "มูลค่าก่อนภาษี" เสมอ ไม่ขึ้นกับตัวเลือก "คำนวณจาก" (
:434,:530) - "เอกสารซื้อ/รับสินค้าเข้าคลังที่ต้องการปันส่วนต้นทุนแฝง" ประเภท ซื้อสินค้า [12], รับสินค้า [310], รับสินค้าสำเร็จรูป [60]
- แต่ละแถวเลือกประเภท พิมพ์เลขที่เอกสาร หรือกดไอคอนค้นหา: หน้าต่างค้นหาเอกสารอ้างอิงแสดง 500 ใบล่าสุดของประเภทนั้นที่ ยังไม่ถูกยกเลิก (
last_status = 0,openPicker,:237-244) พร้อมชื่อผู้ขายและยอด ดูที่มาเอกสารซื้อที่ หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) แก้แถวเอกสารแล้วผลปันส่วนถูกล้าง (setRows,:246-250) ท้ายตารางมีแถวรวม - ยอด/วันที่ของแต่ละแถวได้จากการประมวลผล (Go ส่งกลับ
expenses/purchases,:202-203)
ตารางผลปันส่วน (:440-454)
ปุ่ม ประมวลผล (ปิดเมื่อไม่ได้อยู่ในโหมดแก้) เรียก POST /api/process/stocktools/hiddencostcalc (:199) ส่งหัว + ข้อมูลนำเข้า + เลขที่เอกสารทั้งสองชุด จอใช้กลับแค่ expenses, purchases, items, totalAmount (:202-205) รายการสินค้าแสดง (itemCols, :254-270): เลขที่เอกสารซื้อ, วันที่, สินค้า, คลัง, ที่เก็บ, หน่วย, จำนวน, น้ำหนัก/หน่วย 2, ราคาซื้อ/หน่วย, มูลค่าสินค้าเดิม, % ปันส่วน (ratio 2 ตำแหน่ง, :266), ต้นทุนแฝงปันส่วน (adjustAmount), ต้นทุนรวมสุทธิ (TAS 2) (sumTotalAmount), ต้นทุนใหม่/หน่วย (averageCost 4 ตำแหน่ง, :269) และแถบสรุป มูลค่าสินค้าเดิมรวม · ต้นทุนแฝงปันส่วนรวม · ต้นทุนรวมสุทธิ (บวกด้วย sumDec ไม่ใช้ตัวเลขทศนิยมไบนารี, :449-453) ยังไม่ประมวลผลขึ้น "เลือกเอกสารซื้อ + เอกสารค่าใช้จ่าย (หรือกรอกค่าขนส่ง/อากรนำเข้า) แล้วกด ประมวลผล"
บันทึกและลบ
- บันทึก (
:207-222) ตรวจสิทธิ์ (เพิ่มสำหรับเอกสารใหม่ แก้ไขสำหรับเอกสารเดิม) ส่งPOST /api/process/stocktools/hiddencostsaveด้วยหัว + เลขที่เอกสารอ้างอิง (oldDocNo= เลขที่เดิมตอนแก้) Go คำนวณซ้ำแล้วเขียนเอกสารกับ ใบปรับปรุงต้นทุน ขึ้นบันทึกเอกสาร <เลขที่> และใบปรับปรุงต้นทุน <เลขที่ใบปรับ> เรียบร้อยแล้วแล้วโหลดเอกสารกลับมาดู เอกสาร 87/260/12/310/60 ที่อ้างไม่ถูกแก้ - ลบ (
:223-234) ถามยืนยันลบเอกสาร <เลขที่> และใบปรับปรุงต้นทุนที่อ้างอิง แล้วประมวลผลต้นทุนสินค้าใหม่?(:479) เรียกhiddencostdeleteลบทั้งเอกสารและใบปรับปรุงที่อ้างอิง - ผู้ใช้ออกจากโหมดแก้ขณะมีการเปลี่ยนค่า จะถามยืนยัน "มีการแก้ไขข้อมูลบางส่วน ต้องการยกเลิกการแก้ไขหรือไม่" (
:482) และมีป้าย "มีการแก้ไขข้อมูล" ที่แถบสถานะ - ดูเอกสารเก่า (
loadDoc,:71-104) จอ อ่านข้อมูลจากตารางตรงด้วย SQL:ic_hidden_cost_process(หัว),ic_hidden_cost_process_ref(เอกสารอ้างอิง แยกฝั่งด้วยref_type87/260),ic_hidden_cost_process_item(รายการสินค้า, ชื่อสินค้าจากic_inventory.name_1) หัวอ่านคอลัมน์เดียว เช่นexchange_rate,transport_value(:79-80) ส่วน item อ่านคู่คอลัมน์แบบสำรองกัน (qty_2/weight,item_amount/sum_amount,adjust_amount/hidden_cost_amount,:89-91) และratio,average_costอ่านตรง (:91-92) ดู ต้นทุนแฝง/ต้นทุนนำเข้า (ic_hidden_cost_process, _ref, _item)
ข้อควรระวัง
- ต้นทุนแฝงเปลี่ยนต้นทุนสินค้าผ่านใบปรับปรุง (ประเภท 66) ใบปรับนี้ไปโผล่ในรายการเอกสารสต็อกเพิ่มด้วย ดู ปรับปรุงสต็อกสินค้า/วัตถุดิบ (เพิ่ม) (Stock Adjustment In) อย่าลบใบปรับนั้นแยกจากเอกสารต้นทุนแฝง ให้ลบที่จอนี้
- เลขที่ใบขนและเรือ/ตู้บังคับเป็นตัวพิมพ์ใหญ่ (
:404,:408) - ฐานที่ยังไม่เคยบันทึกผ่านจอนี้ (ยังไม่มีคอลัมน์นำเข้า ซึ่ง Go เพิ่มให้ตอนบันทึก) เปิดเอกสารเก่าหรือค้นด้วยคำค้นจะ error เพราะ SQL อ้างคอลัมน์ใหม่ (
:65,:78-81,:89-92); รายการซ้ายที่ไม่ใส่คำค้นยังเปิดได้ (:66-68) - หน้าจอบอกว่ามีการ "ประมวลผลต้นทุนสินค้าใหม่" เมื่อลบ แต่วิธีคำนวณต้นทุนใหม่อยู่ที่ Go ไม่เห็นในหน้าจอ ดู การคำนวณยอดสต็อกคงเหลือใหม่ (Stock Balance Rebuild)
ที่มาในโค้ด
frontend/account/master/HiddenCostScreen.tsx:3-8หัวไฟล์;:28-62ค่าคงที่/ชนิดข้อมูล;:64-104รายการและโหลดเอกสาร;:106-หน้าจอ (:197คำนวณ,:207บันทึก,:223ลบ,:237ค้นเอกสารอ้างอิง,:254คอลัมน์ผลปันส่วน,:385ส่วนนำเข้า);:494-ตัวช่วยเลือก/ตาราง (RadioGroup,RefGrid:510)frontend/account/tabs/screenRegistry.tsx:779-800frontend/account/master/ScreenFrame.tsx:36-37คีย์ลัด- ดูเพิ่ม: ปรับปรุงสต็อกอัตโนมัติจากใบตรวจนับ และปรับมูลค่า Lot คงค้าง (StockAutoAdjustLotScreen, LotAmountAdjustScreen) · เครื่องมือตรวจสอบสินค้า ราคา บาร์โค้ด และ Serial (CheckPriceScreen, BarcodeCheckerScreen, SerialStockCountScreen, SerialAnalyzeScreen) · รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)