62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
import { Check, RotateCcw, Scissors, X } from '@lucide/vue';
|
|
import type { Component } from 'vue';
|
|
import type { BadgeVariant } from '@/lib/badge-variant';
|
|
|
|
export const CuttingStatus = {
|
|
IN_PROGRESS: 'in_progress',
|
|
COMPLETED: 'completed',
|
|
PENDING_VERIFICATION: 'pending_verification',
|
|
VERIFIED: 'verified',
|
|
REJECTED: 'rejected',
|
|
} as const;
|
|
|
|
export type CuttingStatusValue = (typeof CuttingStatus)[keyof typeof CuttingStatus];
|
|
|
|
export function cuttingStatusBadgeVariant(status: string): BadgeVariant {
|
|
if (status === CuttingStatus.VERIFIED) {
|
|
return 'default';
|
|
}
|
|
|
|
if (status === CuttingStatus.REJECTED) {
|
|
return 'destructive';
|
|
}
|
|
|
|
if (status === CuttingStatus.COMPLETED) {
|
|
return 'secondary';
|
|
}
|
|
|
|
return 'outline';
|
|
}
|
|
|
|
export function cuttingStatusTransitionConfirmDescription(targetStatus: string): string {
|
|
if (targetStatus === CuttingStatus.COMPLETED) {
|
|
return 'Cutting akan ditandai selesai. Stok bahan baku akan dipotong sesuai pemakaian. Menunggu verifikasi admin toko.';
|
|
}
|
|
|
|
if (targetStatus === CuttingStatus.VERIFIED) {
|
|
return 'Hasil cutting akan diverifikasi. Stok Sample dan hasil cutting Diluar Sample akan ditambahkan ke produk.';
|
|
}
|
|
|
|
if (targetStatus === CuttingStatus.IN_PROGRESS) {
|
|
return 'Cutting dikembalikan ke proses untuk diperbaiki.';
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
export function cuttingStatusActionIcon(status: string): Component {
|
|
if (status === CuttingStatus.COMPLETED) {
|
|
return Scissors;
|
|
}
|
|
|
|
if (status === CuttingStatus.VERIFIED) {
|
|
return Check;
|
|
}
|
|
|
|
if (status === CuttingStatus.IN_PROGRESS) {
|
|
return RotateCcw;
|
|
}
|
|
|
|
return X;
|
|
}
|