import { LogisticsOrderVO } from '@/api/amz/logisticsOrder/types';
import { LogisticsOrderDetailVO } from '@/api/amz/logisticsOrderDetail/types';
import { ShipmentItemVO } from '@/api/amz/shipmentItem/types';
import { SendOrderVO } from '@/api/amz/sendOrder/types';

export interface ShipmentPlanVO {
  /**
   * 主键ID
   */
  id: string | number;

  /**
   * 关联系统ID
   */
  sid: string | number;

  /**
   * 货件编号
   */
  shipmentId: string | number;

  shipmentIds?: string[] | number[];

  /**
   * 货件名称
   */
  shipmentName: string;

  /**
   * 是否关闭
   */
  isClosed: string;

  /**
   * 货件状态
   */
  shipmentStatus: string;

  /**
   * 物流中心编码
   */
  destination: string;

  /**
   * 运输模式
   */
  shippingMode: string;

  /**
   * 运输方案
   */
  shippingSolution: string;

  /**
   * 最后更新时间
   */
  gmtModified: string;

  /**
   * 创建时间
   */
  gmtCreate: string;

  /**
   * 同步时间
   */
  receivingTime: string;

  /**
   * 计划发货日期
   */
  staShipmentDate: string;

  /**
   * 预计到货开始日
   */
  staDeliveryStartDate: string;

  /**
   * 预计到货截止日
   */
  staDeliveryEndDate: string;

  /**
   * 发货地址
   */
  shipFromAddress: string;

  /**
   * 收货地址
   */
  shipToAddress: string;

  /**
   * 参考编号
   */
  referenceId: string | number;

  /**
   * 入库计划ID
   */
  staInboundPlanId: string | number;

  /**
   * 是否STA计划
   */
  isSta: string;

  /**
   * 货件唯一编号
   */
  shipmentUniqueId: string | number;

  /**
   * STA任务编号
   */
  inboundPlanId: string | number;

  /**
   * 运营操作货件状态
   */
  fbaStatus: string;

  /**
   * 总箱子数量
   */
  boxQuantity: number;

  /**
   * 箱子尺寸
   */
  boxSize: string;

  /**
   * 供应商称重-总重量（单位：KG，物流商实际测量值）
   */
  vendorWeight?: number;

  logisticsWeight?: number;

  weightDiff?: number;

  /**
   * 套数（系统中的申报量）
   */
  setTotal: number;

  /**
   * 渠道ID
   */
  channelId: string | number;

  /**
   * 物流渠道
   */
  channelName: string;

  sendOrders?: SendOrderVO[];

  amountPrice?: number | string;

  /**
   * 供应商发货单id
   */
  sendOrderId?: string | number;
  sendOrderIds?: string[] | number[];

  itemVoList?: ShipmentItemVO[];
}

interface Address {
  name: string | null;
  countryCode: string;
  stateOrProvinceCode: string | null;
  city: string;
  region: string;
  addressLine1: string;
  addressLine2: string | null;
  postalCode: string;
  phone: string | null;
  doorplate: string;
}

export interface DescriptItem {
  label: string;
  prop: keyof Address; // 确保属性存在于 Address 接口
}

export interface ShipmentPlanOrderVO {
  /**
   * 主键ID
   */
  id: string | number;

  /**
   * 关联系统ID
   */
  sid: string | number;

  /**
   * 货件编号
   */
  shipmentId: string | number;

  /**
   * 货件名称
   */
  shipmentName: string;

  /**
   * 是否关闭
   */
  isClosed: string;

  /**
   * 货件状态
   */
  shipmentStatus: string;

  /**
   * 物流中心编码
   */
  destination: string;

  /**
   * 运输模式
   */
  shippingMode: string;

  /**
   * 运输方案
   */
  shippingSolution: string;

  /**
   * 最后更新时间
   */
  gmtModified: string;

  /**
   * 创建时间
   */
  gmtCreate: string;

  /**
   * 同步时间
   */
  receivingTime: string;

  /**
   * 计划发货日期
   */
  staShipmentDate: string;

  /**
   * 预计到货开始日
   */
  staDeliveryStartDate: string;

  /**
   * 预计到货截止日
   */
  staDeliveryEndDate: string;

  /**
   * 发货地址
   */
  shipFromAddress: string;

  /**
   * 收货地址
   */
  shipToAddress: string;

  /**
   * 参考编号
   */
  referenceId: string | number;

  /**
   * 入库计划ID
   */
  staInboundPlanId: string | number;

  /**
   * 是否STA计划
   */
  isSta: string;

  /**
   * 货件唯一编号
   */
  shipmentUniqueId: string | number;

  /**
   * STA任务编号
   */
  inboundPlanId: string | number;

  /**
   * 运营操作货件状态
   */
  fbaStatus: string;

  /**
   * 总箱子数量
   */
  boxQuantity: number;

  /**
   * 箱子尺寸
   */
  boxSize: string;

  /**
   * 供应商称重-总重量（单位：KG，物流商实际测量值）
   */
  logisticsWeight: number;

  /**
   * 套数（系统中的申报量）
   */
  setTotal: number;

  /**
   * 渠道ID
   */
  channelId: string | number;

  /**
   * 物流渠道
   */
  channelName: string;

  order?: LogisticsOrderVO;

  detailList?: LogisticsOrderDetailVO[];

  itemVoList?: ShipmentItemVO[];

  quote?: LogisticsOrderVO;
}

export interface ShipmentPlanForm extends BaseEntity {
  /**
   * 主键ID
   */
  id?: string | number;

  /**
   * 关联系统ID
   */
  sid?: string | number;

  /**
   * 货件编号
   */
  shipmentId?: string | number;

  /**
   * 货件名称
   */
  shipmentName?: string;

  /**
   * 是否关闭
   */
  isClosed?: string;

  /**
   * 货件状态
   */
  shipmentStatus?: string;

  /**
   * 物流中心编码
   */
  destination?: string;

  /**
   * 运输模式
   */
  shippingMode?: string;

  /**
   * 运输方案
   */
  shippingSolution?: string;

  /**
   * 最后更新时间
   */
  gmtModified?: string;

  /**
   * 创建时间
   */
  gmtCreate?: string;

  /**
   * 同步时间
   */
  receivingTime?: string;

  /**
   * 计划发货日期
   */
  staShipmentDate?: string;

  /**
   * 预计到货开始日
   */
  staDeliveryStartDate?: string;

  /**
   * 预计到货截止日
   */
  staDeliveryEndDate?: string;

  /**
   * 发货地址
   */
  shipFromAddress?: string;

  /**
   * 收货地址
   */
  shipToAddress?: string;

  /**
   * 参考编号
   */
  referenceId?: string | number;

  /**
   * 入库计划ID
   */
  staInboundPlanId?: string | number;

  /**
   * 是否STA计划
   */
  isSta?: string;

  /**
   * 货件唯一编号
   */
  shipmentUniqueId?: string | number;

  /**
   * STA任务编号
   */
  inboundPlanId?: string | number;

  /**
   * 运营操作货件状态
   */
  fbaStatus?: string;

  /**
   * 总箱子数量
   */
  boxQuantity?: number;

  /**
   * 箱子尺寸
   */
  boxSize?: string;

  /**
   * 供应商称重-总重量
   */
  vendorWeight?: number;

  /**
   * 套数（系统中的申报量）
   */
  setTotal?: number;

  /**
   * 渠道ID
   */
  channelId?: string | number;

  /**
   * 物流渠道
   */
  channelName?: string;

  linkType?: string;

  customsFlag?: string;
}

export interface ShipmentPlanQuery extends PageQuery {
  /**
   * 关联系统ID
   */
  sid?: string | number;

  /**
   * 货件编号
   */
  shipmentId?: string;

  /**
   * 货件名称
   */
  shipmentName?: string;

  /**
   * 是否关闭
   */
  isClosed?: string;

  /**
   * 货件状态
   */
  shipmentStatus?: string;

  /**
   * 物流中心编码
   */
  destination?: string;

  sellerName?: string;

  /**
   * 运输模式
   */
  shippingMode?: string;

  /**
   * 运输方案
   */
  shippingSolution?: string;

  /**
   * 最后更新时间
   */
  gmtModified?: string;

  /**
   * 创建时间
   */
  gmtCreate?: string;

  /**
   * 同步时间
   */
  receivingTime?: string;

  /**
   * 计划发货日期
   */
  staShipmentDate?: string;

  /**
   * 预计到货开始日
   */
  staDeliveryStartDate?: string;

  /**
   * 预计到货截止日
   */
  staDeliveryEndDate?: string;

  /**
   * 发货地址
   */
  shipFromAddress?: string;

  /**
   * 收货地址
   */
  shipToAddress?: string;

  /**
   * 参考编号
   */
  referenceId?: string | number;

  /**
   * 入库计划ID
   */
  staInboundPlanId?: string | number;

  /**
   * 是否STA计划
   */
  isSta?: string;

  /**
   * 货件唯一编号
   */
  shipmentUniqueId?: string | number;

  /**
   * STA任务编号
   */
  inboundPlanId?: string | number;

  /**
   * 运营操作货件状态
   */
  fbaStatus?: string;

  /**
   * 总箱子数量
   */
  boxQuantity?: number;

  /**
   * 箱子尺寸
   */
  boxSize?: string;

  /**
   * 供应商称重-总重量（单位：KG，物流商实际测量值）
   */
  logisticsWeight?: number;

  /**
   * 套数（系统中的申报量）
   */
  setTotal?: number;

  /**
   * 渠道ID
   */
  channelId?: string | number;

  /**
   * 物流渠道
   */
  channelName?: string;

  /**
   * 日期范围参数
   */
  params?: any;
}
