สมอง SML

คลังความรู้ / หน้าจอทีละจอ

#screens#process

ประมวลผลเฉลี่ยต้นทุนแฝง (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_type 87/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)

ที่มาในโค้ด