package com.lukouguoji.module_base.bean

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

/**
 * 国际进港原始舱单
 */
data class GjjImportManifest(
    // 代理代码
    var agentCode: String = "",
    // 代理人名称（中）
    var agentName: String = "",
    // 运单类型
    var awbType: String = "",
    // 运单类型（中）
    var awbTypeName: String = "",
    // 收货人
    var consignee: String = "",
    // 收货人地址
    var consigneeAddress: String = "",
    // 收货人公司代码
    var consigneeCode: String = "",
    // 收货人通讯方式
    var consigneeComType: String = "",
    // 收货人国家代码
    var consigneeCountryCode: String = "",
    // 收货人名称
    var consigneeName: String = "",
    // 收货人电话号码
    var consigneePNum: String = "",
    // 发货人地址
    var consignorAddress: String = "",
    // 发货人公司代码
    var consignorCode: String = "",
    // 发货人通讯方式
    var consignorComType: String = "",
    // 发货人国家代码
    var consignorCountryCode: String = "",
    // 发货人名称
    var consignorName: String = "",
    // 发货人电话号码
    var consignorPNum: String = "",
    // 目的地
    var dest: String = "",
    // 危险品收货人通讯方式
    var dgrContactName: String = "",
    // 危险品收货人通讯方式
    var dgrContactNumber: String = "",
    // 航班日期
    var fdate: String = "",
    // 航班起始站
    var fdep: String = "",
    // 航班目的站
    var fdest: String = "",
    // 航班号
    var fno: String = "",
    // 航班id
    var fid: Long = 0,
    // 运费支付方式
    var freightPayment: String = "",
    // 品名
    var goods: String = "",
    // 品名（中）
    var goodsCn: String = "",
    // 分单数量
    var haWbNum: Int = 0,
    // 分单总件数
    var haWbTotalPc: Long = 0,
    // 分单总重
    var haWbTotalWeight: Double = 0.0,
    // 分单号
    var hno: String = "",
    // 舱单申报删除次数
    var mftDCount: Long = 0,
    // 舱单申报删除税率
    var mftDRate: Double = 0.0,
    // 舱单报文编号
    var mftMsgId: String = "",
    // 舱单申报次数
    var mftSCount: Long = 0,
    // 舱单申报税率
    var mftSRate: Double = 0.0,
    // 舱单申报状态
    var mftStatus: String = "",
    // 编号
    var no: String = "",
    // 货源地
    var origin: String = "",
    // 件数
    var pc: Long = 0,
    // 前缀
    var prefix: String = "",
    // 备注
    var remark: String = "",
    // 舱单报文回执
    var response: String = "",
    // 发货人
    var shipper: String = "",
    // 特码
    var spCode: String = "",
    // 特货收货人通讯方式
    var speConsigneeComType: String = "",
    // 特货收货人名称
    var speConsigneeName: String = "",
    // 特货收货人联系号码
    var speConsigneePNum: String = "",
    // 分批标志
    var splitFlag: String = "",
    // 总件数
    var totalPc: Long = 0,
    // 总重量
    var totalWeight: Double = 0.0,
    // 危险品编号
    var unNumber: String = "",
    // 体积
    var volume: Double = 0.0,
    // 主运单号（prefix+no拼接）
    var wbNo: String = "",
    // 重量
    var weight: Double = 0.0
) : Serializable {
    // 获取航班信息（日期去横杠/航班号）
    fun getFlightSplit(): String {
        if (fdate != "" && fno != "") {
            val (year, mon, day) = fdate.split("-")
            return "${year}${mon}${day}/${fno}"
        }
        return ""
    }

    // ========== UI扩展字段 ==========
    // 选中状态
    @Transient
    val checked: ObservableBoolean = ObservableBoolean(false)

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