| @@ -605,67 +605,69 @@ const ApproverStockTake: React.FC<ApproverStockTakeProps> = ({ | |||
| )} | |||
| {hasSecond && ( | |||
| <Stack direction="row" spacing={1} alignItems="center"> | |||
| <Radio | |||
| size="small" | |||
| checked={selection === "approver"} | |||
| onChange={() => setQtySelection({ ...qtySelection, [detail.id]: "approver" })} | |||
| /> | |||
| <Typography variant="body2">{t("Approver Input")}:</Typography> | |||
| <TextField | |||
| size="small" | |||
| type="number" | |||
| value={approverQty[detail.id] || ""} | |||
| onFocus={() => { | |||
| setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:approver`]: false })); | |||
| if (selection !== "approver") { | |||
| setQtySelection({ ...qtySelection, [detail.id]: "approver" }); | |||
| } | |||
| }} | |||
| onBlur={() => | |||
| setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:approver`]: true })) | |||
| } | |||
| onChange={(e) => setApproverQty({ ...approverQty, [detail.id]: e.target.value })} | |||
| InputProps={{ | |||
| endAdornment: stockTakeQtyEndAdornment(detail.uomShortDesc), | |||
| }} | |||
| sx={{ | |||
| width: 168, | |||
| minWidth: 168, | |||
| '& .MuiInputBase-input': { | |||
| height: '1.4375em', | |||
| padding: '4px 8px' | |||
| } | |||
| }} | |||
| placeholder={t("Stock Take Qty") } | |||
| /> | |||
| <TextField | |||
| size="small" | |||
| type="number" | |||
| value={approverBadQty[detail.id] || ""} | |||
| onChange={(e) => setApproverBadQty({ ...approverBadQty, [detail.id]: e.target.value })} | |||
| sx={{ | |||
| width: 130, | |||
| minWidth: 130, | |||
| '& .MuiInputBase-input': { | |||
| height: '1.4375em', | |||
| padding: '4px 8px' | |||
| <Stack spacing={0.5} alignItems="flex-start"> | |||
| <Stack direction="row" spacing={1} alignItems="center"> | |||
| <Radio | |||
| size="small" | |||
| checked={selection === "approver"} | |||
| onChange={() => setQtySelection({ ...qtySelection, [detail.id]: "approver" })} | |||
| /> | |||
| <Typography variant="body2">{t("Approver Input")}:</Typography> | |||
| <TextField | |||
| size="small" | |||
| type="number" | |||
| value={approverQty[detail.id] || ""} | |||
| onFocus={() => { | |||
| setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:approver`]: false })); | |||
| if (selection !== "approver") { | |||
| setQtySelection({ ...qtySelection, [detail.id]: "approver" }); | |||
| } | |||
| }} | |||
| onBlur={() => | |||
| setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:approver`]: true })) | |||
| } | |||
| }} | |||
| placeholder={t("Bad Qty")} | |||
| disabled={selection !== "approver"} | |||
| onChange={(e) => setApproverQty({ ...approverQty, [detail.id]: e.target.value })} | |||
| InputProps={{ | |||
| endAdornment: stockTakeQtyEndAdornment(detail.uomShortDesc), | |||
| }} | |||
| sx={{ | |||
| width: 168, | |||
| minWidth: 168, | |||
| '& .MuiInputBase-input': { | |||
| height: '1.4375em', | |||
| padding: '4px 8px' | |||
| } | |||
| }} | |||
| placeholder={t("Stock Take Qty") } | |||
| /> | |||
| <TextField | |||
| size="small" | |||
| type="number" | |||
| value={approverBadQty[detail.id] || ""} | |||
| onChange={(e) => setApproverBadQty({ ...approverBadQty, [detail.id]: e.target.value })} | |||
| sx={{ | |||
| width: 130, | |||
| minWidth: 130, | |||
| '& .MuiInputBase-input': { | |||
| height: '1.4375em', | |||
| padding: '4px 8px' | |||
| } | |||
| }} | |||
| placeholder={t("Bad Qty")} | |||
| disabled={selection !== "approver"} | |||
| /> | |||
| <Typography variant="body2"> | |||
| = {formatNumber(parseFloat(approverQty[detail.id] || "0") - parseFloat(approverBadQty[detail.id] || "0"))} | |||
| </Typography> | |||
| </Stack> | |||
| <StockTakeQtyGapHint | |||
| open={!!gapCheckOpen[`${detail.id}:approver`]} | |||
| entered={approverQty[detail.id] || ""} | |||
| currentQty={stockTakeHiddenOnHand(detail)} | |||
| threshold={qtyGapWarnPercent} | |||
| /> | |||
| <Typography variant="body2"> | |||
| = {formatNumber(parseFloat(approverQty[detail.id] || "0") - parseFloat(approverBadQty[detail.id] || "0"))} | |||
| </Typography> | |||
| </Stack> | |||
| <StockTakeQtyGapHint | |||
| open={!!gapCheckOpen[`${detail.id}:approver`]} | |||
| entered={approverQty[detail.id] || ""} | |||
| currentQty={stockTakeHiddenOnHand(detail)} | |||
| threshold={qtyGapWarnPercent} | |||
| /> | |||
| )} | |||
| {(() => { | |||