package com.lukouguoji.module_base.bean

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

/**
 * 国际进港提取出库-列表数据Bean
 * 对应API: IntImpPickUpDlv/pageQuery
 */
class IntImpPickUpDLVBean : Serializable {
    var id: Long = 0                     // 主键ID
    var wbNo: String = ""                // 运单号
    var no: String = ""                  // 主单号
    var prefix: String = ""              // 主单前缀
    var hno: String = ""                 // 分单号
    var agentCode: String = ""           // 代理人代码
    var agentName: String = ""           // 代理人名称
    var flight: String = ""              // 航班信息
    var fno: String = ""                 // 航班号
    var fdate: String = ""               // 航班日期
    var pc: Long = 0                     // 件数
    var weight: Double = 0.0             // 重量
    var cashWeight: Double = 0.0         // 计费重量
    var pkId: String = ""                // 提货编号（提货单号）
    var location: String = ""            // 库位
    var locationInStore: String = ""     // 入库库位
    var chargeTime: String = ""          // 缴费时间（提取时间）
    var dlvTime: String = ""             // 出库时间
    var goods: String = ""               // 品名
    var spCode: String = ""              // 特码
    var pickFlag: String = ""            // 提取出库标识
    var chargeFlag: String = ""          // 提取标识
    var serialNo: Long = 0               // 收费记录项目序号
    var amount: Double = 0.0             // 总金额
    var optCharge: Double = 0.0          // 服务费
    var whsCharge: Double = 0.0          // 仓储费
    var tranCharge: Double = 0.0         // 信息费
    var drawBillCharge: Double = 0.0     // 抽单费
    var efrCharge: Double = 0.0          // 冷藏费
    var svlCharge: Double = 0.0          // 铲车费
    var tallyCharge: Double = 0.0        // 理货费
    var pipFee: Double = 0.0             // 精密仪器处理费
    var lapFee: Double = 0.0             // 活体动物处理费
    var chargeId: String = ""            // 收费员
    var chargeName: String = ""          // 收费员名称
    var dlvId: String = ""
    var dlvIdType: String = ""
    var dlvName: String = ""
    var dlvPhone: String = ""
    var locFlag: String = ""
    var origin: String = ""
    var refId: String = ""
    var receiptNo: String = ""
    var chgMode: String = ""
    var billReviewStatus: String = ""
    var billAgentRemark: String = ""
    var awbPc: Long = 0

    // ========== UI扩展字段 ==========
    /**
     * 航班信息展示：优先使用 flight 字段，否则用 fdate(去杠)/fno 拼接
     * 格式示例：20240204/MU2023
     */
    val flightInfo: String
        get() {
            if (!flight.isNullOrEmpty()) return flight
            val dateStr = fdate?.replace("-", "")?.take(8) ?: ""
            val noStr = fno ?: ""
            return if (dateStr.isNotEmpty() || noStr.isNotEmpty()) "$dateStr/$noStr" else ""
        }

    val checked: ObservableBoolean = ObservableBoolean(false)

    var isSelected: Boolean
        get() = checked.get()
        set(value) = checked.set(value)

    /**
     * 5.5寸手机版：是否已出库（出库时间非空）。
     * 卡片按此切两种形态：待出库（勾选框+橙标签+库位行）/已出库（绿标签+出库人行）。
     */
    val isPickedUp: Boolean
        get() = dlvTime.isNotEmpty()
}
