| @@ -207,7 +207,7 @@ interface PolInputResult { | |||||
| dnQty: string, | dnQty: string, | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| const PoDetail: React.FC<Props> = ({ po, warehouse, printerCombo }) => { | const PoDetail: React.FC<Props> = ({ po, warehouse, printerCombo }) => { | ||||
| const cameras = useContext(CameraContext); | const cameras = useContext(CameraContext); | ||||
| const { data: session } = useSession(); | const { data: session } = useSession(); | ||||
| @@ -68,7 +68,7 @@ type Props = { | |||||
| onSubmitted: (row: PurchaseOrderLine) => void; | onSubmitted: (row: PurchaseOrderLine) => void; | ||||
| }; | }; | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| export const PoDetailRow = memo(function PoDetailRow({ | export const PoDetailRow = memo(function PoDetailRow({ | ||||
| row, | row, | ||||
| selected, | selected, | ||||
| @@ -71,7 +71,8 @@ import { deleteDialog } from "../Swal/CustomAlerts"; | |||||
| import StockInLineRowActions from "./StockInLineRowActions"; | import StockInLineRowActions from "./StockInLineRowActions"; | ||||
| import { StockQtyRoundMode, needsPoQcStockQtyRound } from "./stockQtyRound"; | import { StockQtyRoundMode, needsPoQcStockQtyRound } from "./stockQtyRound"; | ||||
| const ACTIONS_COLUMN_WIDTH = 380; | |||||
| // 3 buttons after QC (view + print QR + delete): 176*3 + gap + cell padding | |||||
| const ACTIONS_COLUMN_WIDTH = 580; | |||||
| const PURCHASE_QTY_COLUMN_WIDTH = 72; | const PURCHASE_QTY_COLUMN_WIDTH = 72; | ||||
| const UOM_COLUMN_WIDTH = 124; | const UOM_COLUMN_WIDTH = 124; | ||||
| const STOCK_QTY_COLUMN_WIDTH = 110; | const STOCK_QTY_COLUMN_WIDTH = 110; | ||||
| @@ -153,7 +154,7 @@ class ProcessRowUpdateError extends Error { | |||||
| } | } | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| function PoInputGrid({ | function PoInputGrid({ | ||||
| // qc, | // qc, | ||||
| setRows, | setRows, | ||||
| @@ -71,7 +71,7 @@ interface CommonProps extends Omit<ModalProps, "children"> { | |||||
| interface Props extends CommonProps { | interface Props extends CommonProps { | ||||
| // itemDetail: StockInLine & { qcResult?: PurchaseQcResult[] } & { escResult?: EscalationResult[] }; | // itemDetail: StockInLine & { qcResult?: PurchaseQcResult[] } & { escResult?: EscalationResult[] }; | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| const PoQcStockInModalVer2: React.FC<Props> = ({ | const PoQcStockInModalVer2: React.FC<Props> = ({ | ||||
| open, | open, | ||||
| onClose, | onClose, | ||||
| @@ -26,7 +26,7 @@ type Props = { | |||||
| onRound?: (mode: StockQtyRoundMode) => void; | onRound?: (mode: StockQtyRoundMode) => void; | ||||
| }; | }; | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| export default function StockInLineRowActions({ | export default function StockInLineRowActions({ | ||||
| btnSx, | btnSx, | ||||
| onPrimaryClick, | onPrimaryClick, | ||||
| @@ -7,7 +7,7 @@ export type StockQtyRoundChoice = { | |||||
| after: number; | after: number; | ||||
| }; | }; | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| export function previewPoBatchStockQty( | export function previewPoBatchStockQty( | ||||
| orderM18Qty: number, | orderM18Qty: number, | ||||
| orderStockQty: number, | orderStockQty: number, | ||||
| @@ -25,7 +25,7 @@ export function isNotIntegerQty(qty: number): boolean { | |||||
| } | } | ||||
| /** | /** | ||||
| * FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 | |||||
| * FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 | |||||
| * PO 收貨/品檢:pending 或 escalated 且庫存數量非整數時需選擇 CEILING / FLOOR | * PO 收貨/品檢:pending 或 escalated 且庫存數量非整數時需選擇 CEILING / FLOOR | ||||
| */ | */ | ||||
| export function needsPoQcStockQtyRound( | export function needsPoQcStockQtyRound( | ||||
| @@ -39,7 +39,7 @@ export function needsPoQcStockQtyRound( | |||||
| return isNotIntegerQty(Number(acceptedQty ?? 0)); | return isNotIntegerQty(Number(acceptedQty ?? 0)); | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| export function roundStockQty(before: number, mode: StockQtyRoundMode): number { | export function roundStockQty(before: number, mode: StockQtyRoundMode): number { | ||||
| if (mode === "CEILING") return Math.ceil(before); | if (mode === "CEILING") return Math.ceil(before); | ||||
| return Math.floor(before); | return Math.floor(before); | ||||
| @@ -73,7 +73,7 @@ interface Props extends CommonProps { | |||||
| // itemDetail: StockInLine & { qcResult?: PurchaseQcResult[] } & { escResult?: EscalationResult[] }; | // itemDetail: StockInLine & { qcResult?: PurchaseQcResult[] } & { escResult?: EscalationResult[] }; | ||||
| } | } | ||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.3 | 2026-09-10 */ | |||||
| /** FP-MTMS Version Checklist | Functions Ref. No. 56 | v1.0.4 | 2026-09-10 */ | |||||
| const QcStockInModal: React.FC<Props> = ({ | const QcStockInModal: React.FC<Props> = ({ | ||||
| open, | open, | ||||
| onClose, | onClose, | ||||