export type StokOpnameStatus = 'draft' | 'in_progress' | 'completed' | 'verified' | 'cancelled';

export type StockType = 'good' | 'reject' | 'retail';

export type StokOpnameItem = {
    id: number;
    product_variant_id: number;
    stock_quality: StockType;
    system_stock: number;
    physical_stock: number;
    difference: number;
    notes: string | null;
    variant_name: string;
    product_name: string;
    photo_url: string | null;
    photo_conversion_url: string | null;
};

export type StokOpname = {
    id: number;
    created_by_id: number;
    verified_by_id: number | null;
    opname_date: string;
    status: StokOpnameStatus;
    notes: string | null;
    verification_notes: string | null;
    created_at: string;
    items_count: number;
    total_difference: number;
    product_names: string | null;
    created_by: {
        id: number;
        user_profile: {
            full_name: string;
        };
    };
    verified_by: {
        id: number;
        user_profile: {
            full_name: string;
        };
    } | null;
};

export type StokOpnameForEdit = {
    id: number;
    opname_date: string;
    status: StokOpnameStatus;
    notes: string | null;
    items: {
        id: number;
        product_variant_id: number;
        stock_quality: StockType;
        system_stock: number;
        physical_stock: number;
        difference: number;
        notes: string | null;
        variant_name: string;
        product_name: string;
    }[];
};

export type ProductForStokOpname = {
    id: number;
    name: string;
    status: string;
    product_variants: {
        id: number;
        name: string;
        stock: number;
        reject_stock: number;
        retail_stock: number;
        photo_url: string | null;
    }[];
};

export type StokOpnameCreateData = {
    products: ProductForStokOpname[];
};
