@@ -31,6 +31,7 @@ export interface RoughProdScheduleLineResultByFg { | |||||
type: string; | type: string; | ||||
availableQty: number; | availableQty: number; | ||||
prodQty: number; | prodQty: number; | ||||
uomName: string; | |||||
lastMonthAvgSales: number; | lastMonthAvgSales: number; | ||||
estCloseBal: number; | estCloseBal: number; | ||||
priority: number; | priority: number; | ||||
@@ -94,6 +95,7 @@ export interface DetailedProdScheduleLineResult { | |||||
type: string; | type: string; | ||||
demandQty: number; | demandQty: number; | ||||
bomOutputQty: number; | bomOutputQty: number; | ||||
uomName: string; | |||||
prodTimeInMinute: DetailedProdScheduleLineProdTimeResult[]; | prodTimeInMinute: DetailedProdScheduleLineProdTimeResult[]; | ||||
priority: number; | priority: number; | ||||
approved: boolean; | approved: boolean; | ||||
@@ -107,6 +109,7 @@ export interface DetailedProdScheduleLineBomMaterialResult { | |||||
type: string; | type: string; | ||||
availableQty: number; | availableQty: number; | ||||
demandQty: number; | demandQty: number; | ||||
uomName: string; | |||||
} | } | ||||
export interface DetailedProdScheduleLineProdTimeResult { | export interface DetailedProdScheduleLineProdTimeResult { | ||||
@@ -19,6 +19,7 @@ import dayjs from "dayjs"; | |||||
import { orderBy, uniqBy } from "lodash"; | import { orderBy, uniqBy } from "lodash"; | ||||
import { Button, Stack } from "@mui/material"; | import { Button, Stack } from "@mui/material"; | ||||
import isToday from 'dayjs/plugin/isToday'; | import isToday from 'dayjs/plugin/isToday'; | ||||
import useUploadContext from "../UploadProvider/useUploadContext"; | |||||
dayjs.extend(isToday); | dayjs.extend(isToday); | ||||
// may need move to "index" or "actions" | // may need move to "index" or "actions" | ||||
@@ -45,6 +46,7 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => { | |||||
ProdScheduleResult[] | ProdScheduleResult[] | ||||
>([]); | >([]); | ||||
const { t } = useTranslation("schedule"); | const { t } = useTranslation("schedule"); | ||||
const { setIsUploading } = useUploadContext(); | |||||
const router = useRouter(); | const router = useRouter(); | ||||
// const [filterObj, setFilterObj] = useState({}); | // const [filterObj, setFilterObj] = useState({}); | ||||
@@ -282,11 +284,16 @@ const DSOverview: React.FC<Props> = ({ type, defaultInputs }) => { | |||||
}, []); | }, []); | ||||
const testDetailedScheduleClick = useCallback(async () => { | const testDetailedScheduleClick = useCallback(async () => { | ||||
console.log(inputs.scheduleAt) | |||||
const response = await testDetailedSchedule(inputs.scheduleAt) | |||||
if (response) { | |||||
refetchData(inputs, "paging"); | |||||
try { | |||||
setIsUploading(true) | |||||
const response = await testDetailedSchedule(inputs.scheduleAt) | |||||
if (response) { | |||||
refetchData(inputs, "paging"); | |||||
} | |||||
} catch(e) { | |||||
console.log(e) | |||||
} finally { | |||||
setIsUploading(false) | |||||
} | } | ||||
}, [inputs]) | }, [inputs]) | ||||
@@ -168,6 +168,17 @@ const ViewByFGDetails: React.FC<Props> = ({ apiRef, isEdit, type, onReleaseClick | |||||
return row.demandQty; | return row.demandQty; | ||||
}, | }, | ||||
}, | }, | ||||
{ | |||||
field: "uomName", | |||||
label: t("UoM Name"), | |||||
type: "read-only", | |||||
style: { | |||||
textAlign: "left", | |||||
}, | |||||
renderCell: (row) => { | |||||
return row.uomName; | |||||
}, | |||||
}, | |||||
{ | { | ||||
field: "prodTimeInMinute", | field: "prodTimeInMinute", | ||||
label: t("Estimated Production Time"), | label: t("Estimated Production Time"), | ||||
@@ -28,6 +28,7 @@ import dayjs from "dayjs"; | |||||
import { defaultPagingController } from "../SearchResults/SearchResults"; | import { defaultPagingController } from "../SearchResults/SearchResults"; | ||||
import { ScheduleType } from "@/app/api/scheduling"; | import { ScheduleType } from "@/app/api/scheduling"; | ||||
import { Button, Stack } from "@mui/material"; | import { Button, Stack } from "@mui/material"; | ||||
import useUploadContext from "../UploadProvider/useUploadContext"; | |||||
// type RecordStructure ={ | // type RecordStructure ={ | ||||
// id: number, | // id: number, | ||||
@@ -59,6 +60,7 @@ const RSOverview: React.FC<Props> = ({ type, defaultInputs }) => { | |||||
); | ); | ||||
const [totalCount, setTotalCount] = useState(0); | const [totalCount, setTotalCount] = useState(0); | ||||
const [inputs, setInputs] = useState(defaultInputs); | const [inputs, setInputs] = useState(defaultInputs); | ||||
const { setIsUploading } = useUploadContext(); | |||||
const searchCriteria: Criterion<SearchParamNames>[] = useMemo(() => { | const searchCriteria: Criterion<SearchParamNames>[] = useMemo(() => { | ||||
const searchCriteria: Criterion<SearchParamNames>[] = [ | const searchCriteria: Criterion<SearchParamNames>[] = [ | ||||
@@ -254,10 +256,16 @@ const RSOverview: React.FC<Props> = ({ type, defaultInputs }) => { | |||||
}, []); | }, []); | ||||
const testRoughScheduleClick = useCallback(async () => { | const testRoughScheduleClick = useCallback(async () => { | ||||
const response = await testRoughSchedule() | |||||
if (response) { | |||||
refetchData(inputs, "paging"); | |||||
try { | |||||
setIsUploading(true) | |||||
const response = await testRoughSchedule() | |||||
if (response) { | |||||
refetchData(inputs, "paging"); | |||||
} | |||||
} catch(e) { | |||||
console.log(e) | |||||
} finally { | |||||
setIsUploading(false) | |||||
} | } | ||||
}, []); | }, []); | ||||
@@ -302,6 +302,17 @@ const ViewByBomDetails: React.FC<Props> = ({ | |||||
return row.demandQty7; | return row.demandQty7; | ||||
}, | }, | ||||
}, | }, | ||||
{ | |||||
field: "uomName", | |||||
label: t("UoM Name"), | |||||
type: "read-only", | |||||
style: { | |||||
textAlign: "left", | |||||
}, | |||||
renderCell: (row) => { | |||||
return row.uomName; | |||||
}, | |||||
}, | |||||
], | ], | ||||
[t], | [t], | ||||
); | ); | ||||
@@ -356,6 +367,17 @@ const ViewByBomDetails: React.FC<Props> = ({ | |||||
return row.demandQty; | return row.demandQty; | ||||
}, | }, | ||||
}, | }, | ||||
{ | |||||
field: "uomName", | |||||
label: t("UoM Name"), | |||||
type: "read-only", | |||||
style: { | |||||
textAlign: "left", | |||||
}, | |||||
renderCell: (row) => { | |||||
return row.uomName; | |||||
}, | |||||
}, | |||||
], | ], | ||||
[], | [], | ||||
); | ); | ||||
@@ -184,6 +184,18 @@ const ViewByFGDetails: React.FC<Props> = ({ | |||||
return row.prodQty; | return row.prodQty; | ||||
}, | }, | ||||
}, | }, | ||||
{ | |||||
field: "uomName", | |||||
label: t("UoM Name"), | |||||
type: "read-only", | |||||
style: { | |||||
textAlign: "left", | |||||
}, | |||||
// editable: true, | |||||
renderCell: (row) => { | |||||
return row.uomName; | |||||
}, | |||||
}, | |||||
], | ], | ||||
[], | [], | ||||
); | ); | ||||
@@ -269,12 +281,21 @@ const ViewByFGDetails: React.FC<Props> = ({ | |||||
return row.prodQty; | return row.prodQty; | ||||
}, | }, | ||||
}, | }, | ||||
{ | |||||
field: "uomName", | |||||
label: t("UoM Name"), | |||||
type: "read-only", | |||||
style: { | |||||
textAlign: "left", | |||||
}, | |||||
renderCell: (row) => { | |||||
return row.uomName; | |||||
}, | |||||
}, | |||||
], | ], | ||||
[], | [], | ||||
); | ); | ||||
console.log(getValues("prodScheduleLinesByFg")); | |||||
return ( | return ( | ||||
<Grid container spacing={2}> | <Grid container spacing={2}> | ||||
<Grid item xs={12} key={"all"}> | <Grid item xs={12} key={"all"}> | ||||
@@ -133,6 +133,16 @@ function BomMaterialTable({ bomMaterial }: Props) { | |||||
return decimalFormatter.format(row.value); | return decimalFormatter.format(row.value); | ||||
}, | }, | ||||
}, | }, | ||||
{ | |||||
field: "uomName", | |||||
headerName: t("UoM Name"), | |||||
flex: 0.5, | |||||
align: "left", | |||||
headerAlign: "left", | |||||
renderCell: (row) => { | |||||
return row.value; | |||||
}, | |||||
}, | |||||
{ | { | ||||
field: "status", | field: "status", | ||||
headerName: t("status"), | headerName: t("status"), | ||||