import dayjs, { ConfigType } from "dayjs"; import { Uom } from "../api/settings/uom"; import { ListIterateeCustom, every, isArray, isNaN, isNull, isUndefined, take } from "lodash"; export const manhourFormatter = new Intl.NumberFormat("en-HK", { minimumFractionDigits: 2, maximumFractionDigits: 2, }); export const moneyFormatter = new Intl.NumberFormat("en-HK", { style: "currency", currency: "HKD", }); export const decimalFormatter = new Intl.NumberFormat("en-HK", { minimumFractionDigits: 2, }) export const integerFormatter = new Intl.NumberFormat("en-HK", { }) export const INPUT_DATE_FORMAT = "YYYY-MM-DD"; export const OUTPUT_DATE_FORMAT = "YYYY/MM/DD"; export const OUTPUT_TIME_FORMAT = "HH:mm:ss"; export const arrayToDayjs = (arr: ConfigType | (number | undefined)[]) => { const isValidNumber = (item: ListIterateeCustom): boolean => typeof item === "number" && !isNaN(item) && isFinite(item) let tempArr = arr; if (isArray(arr) && every(arr, isValidNumber) && arr.length >= 3) { // [year, month, day] tempArr = take(arr, 3) } return dayjs(tempArr as ConfigType) } export const arrayToDateString = (arr: ConfigType | (number | undefined)[]) => { return arrayToDayjs(arr).format(OUTPUT_DATE_FORMAT) } export const dateStringToDayjs = (date: string) => { // Format: YYYY/MM/DD return dayjs(date, OUTPUT_DATE_FORMAT) } export const dateTimeStringToDayjs = (dateTime: string) => { // Format: YYYY/MM/DD HH:mm:ss return dayjs(dateTime, `${OUTPUT_DATE_FORMAT} ${OUTPUT_TIME_FORMAT}`) } export const stockInLineStatusMap: { [status: string]: number } = { "draft": 0, "pending": 1, "qc": 2, "determine1": 3, "determine2": 4, "determine3": 5, "receiving": 6, "received": 7, "completed": 8, "rejected": 9, }; export const pickOrderStatusMap: { [status: string]: number } = { "pending": 1, "consolidated": 2, "released": 3, "completed": 4, }; export const calculateWeight = (qty: number, uom: Uom) => { return qty * (uom.unit2Qty || 1) * (uom.unit3Qty || 1) * (uom.unit4Qty || 1); } export const returnWeightUnit = (uom: Uom) => { return uom.unit4 || uom.unit3 || uom.unit2 || uom.unit1; }