| @@ -207,6 +207,7 @@ export interface PickExecutionIssueData { | |||||
| actualPickQty: number; | actualPickQty: number; | ||||
| missQty: number; | missQty: number; | ||||
| badItemQty: number; | badItemQty: number; | ||||
| badPackageQty?: number; | |||||
| issueRemark: string; | issueRemark: string; | ||||
| pickerName: string; | pickerName: string; | ||||
| handledBy?: number; | handledBy?: number; | ||||
| @@ -996,6 +997,7 @@ export interface LotSubstitutionConfirmRequest { | |||||
| stockOutLineId: number; | stockOutLineId: number; | ||||
| originalSuggestedPickLotId: number; | originalSuggestedPickLotId: number; | ||||
| newInventoryLotNo: string; | newInventoryLotNo: string; | ||||
| newStockInLineId: number; | |||||
| } | } | ||||
| export const confirmLotSubstitution = async (data: LotSubstitutionConfirmRequest) => { | export const confirmLotSubstitution = async (data: LotSubstitutionConfirmRequest) => { | ||||
| const response = await serverFetchJson<PostPickOrderResponse>( | const response = await serverFetchJson<PostPickOrderResponse>( | ||||
| @@ -278,7 +278,9 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({ | |||||
| return ( | return ( | ||||
| <Dialog open={open} onClose={handleClose} maxWidth="sm" fullWidth> | <Dialog open={open} onClose={handleClose} maxWidth="sm" fullWidth> | ||||
| <DialogTitle> | <DialogTitle> | ||||
| {t("Pick Execution Issue Form") + " - "+selectedPickOrderLine.itemCode+ " "+ selectedPickOrderLine.itemName} | |||||
| {t("Pick Execution Issue Form") } | |||||
| <br /> | |||||
| {selectedPickOrderLine.itemCode+ " "+ selectedPickOrderLine.itemName} | |||||
| <br /> | <br /> | ||||
| {selectedLot.lotNo} | {selectedLot.lotNo} | ||||
| </DialogTitle> | </DialogTitle> | ||||
| @@ -333,20 +335,6 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({ | |||||
| /> | /> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12}> | |||||
| <FormControl fullWidth> | |||||
| <InputLabel>{t("Reason")}</InputLabel> | |||||
| <Select | |||||
| value={formData.reason || ""} | |||||
| onChange={(e) => handleInputChange("reason", e.target.value)} | |||||
| label={t("Reason")} | |||||
| > | |||||
| <MenuItem value="">{t("Select Reason")}</MenuItem> | |||||
| <MenuItem value="miss">{t("Edit")}</MenuItem> | |||||
| <MenuItem value="bad">{t("Just Complete")}</MenuItem> | |||||
| </Select> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| <Grid item xs={12}> | <Grid item xs={12}> | ||||
| <TextField | <TextField | ||||
| @@ -422,6 +410,21 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({ | |||||
| /> | /> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12}> | |||||
| <FormControl fullWidth> | |||||
| <InputLabel>{t("Remark")}</InputLabel> | |||||
| <Select | |||||
| value={formData.reason || ""} | |||||
| onChange={(e) => handleInputChange("reason", e.target.value)} | |||||
| label={t("Remark")} | |||||
| > | |||||
| <MenuItem value="">{t("Select Reason")}</MenuItem> | |||||
| <MenuItem value="miss">{t("Edit")}</MenuItem> | |||||
| <MenuItem value="bad">{t("Just Complete")}</MenuItem> | |||||
| </Select> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Box> | </Box> | ||||
| </DialogContent> | </DialogContent> | ||||
| <DialogActions> | <DialogActions> | ||||
| @@ -2695,7 +2695,7 @@ paginatedData.map((lot, index) => { | |||||
| }} | }} | ||||
| title="Report missing or bad items" | title="Report missing or bad items" | ||||
| > | > | ||||
| {t("Issue")} | |||||
| {t("Edit")} | |||||
| </Button> | </Button> | ||||
| <Button | <Button | ||||
| variant="outlined" | variant="outlined" | ||||
| @@ -2704,7 +2704,7 @@ paginatedData.map((lot, index) => { | |||||
| disabled={lot.stockOutLineStatus === 'completed'} | disabled={lot.stockOutLineStatus === 'completed'} | ||||
| sx={{ fontSize: '0.7rem', py: 0.5, minHeight: '28px', minWidth: '60px' }} | sx={{ fontSize: '0.7rem', py: 0.5, minHeight: '28px', minWidth: '60px' }} | ||||
| > | > | ||||
| {t("Skip")} | |||||
| {t("Just Completed")} | |||||
| </Button> | </Button> | ||||
| </Stack> | </Stack> | ||||
| ); | ); | ||||
| @@ -640,7 +640,7 @@ const handleRelease = useCallback(async ( jobOrderId: number) => { | |||||
| variant="contained" | variant="contained" | ||||
| color="primary" | color="primary" | ||||
| onClick={() => handleRelease(jobOrderId)} | onClick={() => handleRelease(jobOrderId)} | ||||
| disabled={stockCounts.insufficient > 0 || processData?.jobOrderStatus !== "planning"} | |||||
| //disabled={stockCounts.insufficient > 0 || processData?.jobOrderStatus !== "planning"} | |||||
| > | > | ||||
| {t("Release")} | {t("Release")} | ||||
| </Button> | </Button> | ||||
| @@ -19,6 +19,8 @@ | |||||
| "Loading...": "正在加載...", | "Loading...": "正在加載...", | ||||
| "Available Trucks": "可用車輛", | "Available Trucks": "可用車輛", | ||||
| "No trucks available": "沒有車輛可用", | "No trucks available": "沒有車輛可用", | ||||
| "Remark": "備註", | |||||
| "Just Completed": "已完成", | |||||
| "Code": "門店訂單編號", | "Code": "門店訂單編號", | ||||
| "code": "門店訂單編號", | "code": "門店訂單編號", | ||||
| "Create": "新增", | "Create": "新增", | ||||
| @@ -9,12 +9,14 @@ | |||||
| "Status": "來貨狀態", | "Status": "來貨狀態", | ||||
| "N/A": "不適用", | "N/A": "不適用", | ||||
| "Release Pick Orders": "放單", | "Release Pick Orders": "放單", | ||||
| "Remark": "備註", | |||||
| "Escalated": "上報狀態", | "Escalated": "上報狀態", | ||||
| "NotEscalated": "無上報", | "NotEscalated": "無上報", | ||||
| "Assigned To": "已分配", | "Assigned To": "已分配", | ||||
| "Skip": "跳過", | "Skip": "跳過", | ||||
| "Fetching all matching records...": "正在獲取所有匹配的記錄...", | "Fetching all matching records...": "正在獲取所有匹配的記錄...", | ||||
| "Edit": "改數", | |||||
| "Just Completed": "已完成", | |||||
| "Do you want to start?": "確定開始嗎?", | "Do you want to start?": "確定開始嗎?", | ||||
| "Start": "開始", | "Start": "開始", | ||||
| "Pick Order Code(s)": "提料單編號", | "Pick Order Code(s)": "提料單編號", | ||||