package com.lukouguoji.module_base.bean

import androidx.databinding.ObservableBoolean
import java.io.Serializable

/**
 * 国际进港舱单Bean
 * 用于国际进港舱单列表接口返回
 */
data class GjjManifest(
    var mfId: Long = 0,                 // 主键ID
    var no: String = "",                // 编号
    var prefix: String = "",            // 前缀
    var wbNo: String = "",              // 运单号
    var origin: String = "",            // 货源地（始发站）
    var dest: String = "",              // 目的站
    var fdep: String = "",              // 航班起始站
    var fdest: String = "",             // 航班目的站
    var fid: Long = 0,                  // FID
    var pc: Long = 0,                   // 件数
    var totalPc: Long = 0,              // 总件数
    var totalWeight: Double = 0.0,      // 总重量
    var weight: Double = 0.0,           // 重量
    var volume: Double = 0.0,           // 体积
    var goods: String = "",             // 品名（英）
    var goodsCn: String = "",           // 品名（中）
    var agentCode: String = "",         // 代理代码
    var agentName: String = "",         // 代理名称
    var awbType: String = "",           // 运单类型
    var awbTypeName: String = "",       // 运单类型（中）
    var businessType: String = "",      // 业务类型
    var businessName: String = "",      // 业务类型名称
    var cargoType: String = "",         // 货物类型
    var spCode: String = "",            // 特码
    var packageType: String = "",       // 包装类型
    var haWbNum: Int = 0,               // 分单数量
    var consignee: String = "",         // 收货人
    var cashWeight: Double = 0.0,       // 计费重量
    var cneeCode: String = "",          // 收货人代码
    var cneeId: String = "",            // 收货人ID
    var cneeTel: String = "",           // 收货人电话
    var edep: String = "",              // 中转站1
    var edest1: String = "",            // 中转站2
    var edest2: String = "",            // 中转站3
    var efDate: String = "",            // 中转航班日期
    var efNo: String = "",              // 中转航班号
    var isEdiAwb: String = "",          // 是否EDI运单
    var locFlag: String = "",           // 库位标志
    var locFlagMft: String = "",        // 舱单库位标志
    var location: String = "",          // 库位
    var locationMft: String = "",       // 舱单库位
    var opDate: String = "",            // 操作日期
    var opId: String = "",              // 操作人ID
    var ref: String = "",               // 参考
    var remark: String = "",            // 备注
    var splitFlag: String = "",         // 分批标志
    var subCode: String = "",           // 子代码
    var unNumber: String = "",          // 危险品编号
    var activeId: Long = 0,             // 活动ID
    var locationTally: String = "",     // 理货库位号
    var pic: String = "",               // 交接图片缩略图路径
    var originalPic: String = "",       // 交接图片原图地址
    var picNumber: String = ""          // 交接图片数量
) : Serializable {
    // 分单列表
    var haWbList: List<GjjHaWb>? = null

    // 展开/收起状态
    @Transient
    val showMore: ObservableBoolean = ObservableBoolean(false)

    // 选中状态（用于多选功能）- 不参与序列化
    @Transient
    val checked: ObservableBoolean = ObservableBoolean(false)

    // 兼容现有API的isSelected属性
    var isSelected: Boolean
        get() = checked.get()
        set(value) = checked.set(value)

    // 获取完整运单号
    fun getWaybillNo() = "$prefix$no"
}
