<?php

declare(strict_types=1);

/**
 * 本文件属于 DBErp 进销存系统。
 *
 * 版权所有 © 2026 北京珑大钜商科技有限公司。保留所有权利。
 *
 * 未经官方授权，不得删除、篡改或隐藏本文件中的版权声明、产品标识与来源信息。
 * 商业授权、官方更新与技术支持服务，请以珑大官方支持中心记录为准。
 *
 * @link https://support.loongdom.cn
 * @see  https://www.dberp.com.cn
 */

namespace App\Business\Purchase\Enums;

use App\Support\Concerns\TranslatesDberpBackedEnumLabel;

enum PurchaseOrderStatus: string
{
    use TranslatesDberpBackedEnumLabel;

    case Draft = 'draft';
    case Confirmed = 'confirmed';
    case PartiallyReceived = 'partially_received';
    case FullyReceived = 'fully_received';
    case Closed = 'closed';
    case Voided = 'voided';

    /**
     * 参与统计的有效状态（草稿与作废不进入统计口径）。
     *
     * @return list<self>
     */
    public static function statisticsScope(): array
    {
        return [self::Confirmed, self::PartiallyReceived, self::FullyReceived, self::Closed];
    }

    /**
     * @return list<string>
     */
    public static function statisticsScopeValues(): array
    {
        return array_map(static fn (self $status): string => $status->value, self::statisticsScope());
    }

    /**
     * 统计筛选下拉选项（value => label）。
     *
     * @return array<string, string>
     */
    public static function statisticsScopeOptions(): array
    {
        $options = [];

        foreach (self::statisticsScope() as $status) {
            $options[$status->value] = $status->label();
        }

        return $options;
    }
}
