{
    "table_name": "suppliers",
    "display_name": "仕入先マスタ",
    "description": "仕入先の基本情報（税務設定含む）",
    "type": "single_table",
    "supported_modes": ["insert", "update", "delete"],
    "key_fields": ["supplier_code"],
    "required_fields": [
        "supplier_code",
        "supplier_type",
        "tax_type",
        "is_custom_name_allowed",
        "rounding_type_tax",
        "rounding_unit_tax",
        "is_active"
    ],
    "unique_fields": {
        "supplier_code": {
            "table": "suppliers",
            "column": "supplier_code",
            "message": "仕入先コードが重複しています"
        }
    },
    "field_labels": {
        "id": "ID",
        "supplier_code": "仕入先コード",
        "supplier_name": "仕入先名",
        "supplier_kana": "仕入先名(カナ)",
        "supplier_abbr": "仕入先名(略称)",
        "postal_code": "郵便番号",
        "prefecture": "都道府県",
        "address1": "住所１",
        "address2": "住所２",
        "address3": "住所３",
        "tel": "TEL",
        "fax": "FAX",
        "email": "メールアドレス",
        "contact_person": "仕入先担当者名",
        "supplier_type": "国内/海外区分",
        "tax_type": "税区分",
        "is_custom_name_allowed": "諸口区分",
        "invoice_number": "適格請求書発行事業者番号",
        "rounding_type_tax": "消費税端数処理区分",
        "rounding_unit_tax": "消費税端数単位",
        "is_active": "有効フラグ",
        "note": "備考",
        "created_by": "作成者",
        "updated_by": "更新者",
        "created_at": "作成日時",
        "updated_at": "更新日時",
        "deleted_at": "削除日時"
    },
    "field_types": {
        "id": "bigint",
        "supplier_code": "varchar",
        "supplier_name": "varchar",
        "supplier_kana": "varchar",
        "supplier_abbr": "varchar",
        "postal_code": "varchar",
        "prefecture": "varchar",
        "address1": "varchar",
        "address2": "varchar",
        "address3": "varchar",
        "tel": "varchar",
        "fax": "varchar",
        "email": "varchar",
        "contact_person": "varchar",
        "supplier_type": "int",
        "tax_type": "int",
        "is_custom_name_allowed": "int",
        "invoice_number": "varchar",
        "rounding_type_tax": "int",
        "rounding_unit_tax": "int",
        "is_active": "tinyint",
        "note": "text",
        "created_by": "bigint",
        "updated_by": "bigint",
        "created_at": "timestamp",
        "updated_at": "timestamp",
        "deleted_at": "timestamp"
    },
    "enum_values": {
        "supplier_type": {
            "0": "国内",
            "1": "海外"
        },
        "tax_type": {
            "1": "課税",
            "2": "免税"
        },
        "is_custom_name_allowed": {
            "1": "通常",
            "2": "諸口"
        },
        "rounding_type_tax": {
            "1": "四捨五入",
            "2": "切り捨て",
            "3": "切り上げ"
        },
        "rounding_unit_tax": {
            "1": "0.01以下",
            "2": "0.1以下",
            "3": "1以下",
            "4": "10以下",
            "5": "100以下"
        },
        "is_active": {
            "1": "有効",
            "9": "無効"
        }
    },
    "code_padding": {
        "supplier_code": 3
    },
    "validation_rules": {
        "supplier_code": {
            "required": true,
            "max_length": 20,
            "unique": true
        },
        "supplier_name": {
            "required": false,
            "max_length": 500
        },
        "supplier_kana": {
            "required": false,
            "max_length": 500
        },
        "supplier_abbr": {
            "required": false,
            "max_length": 500
        },
        "postal_code": {
            "pattern": "^\\d{3}-?\\d{4}$",
            "message": "郵便番号の形式が正しくありません（例: 123-4567）"
        },
        "email": {
            "email": true,
            "max_length": 200
        },
        "supplier_type": {
            "enum": [0, 1]
        },
        "tax_type": {
            "enum": [1, 2]
        },
        "is_custom_name_allowed": {
            "enum": [1, 2]
        },
        "rounding_type_tax": {
            "enum": [1, 2, 3]
        },
        "rounding_unit_tax": {
            "enum": [1, 2, 3, 4, 5]
        },
        "is_active": {
            "enum": [1, 9]
        }
    }
}