import type { PageParams } from "../base/BaseDataModel";

// 费用比较搜索参数
export interface MoneyDetailCompareBaseParam {
    /**
     * 编号
     *
     * @mbg.generated
     */
    id?: number;

    /**
     * 客户编号
     *
     * @mbg.generated
     */
    customerId?: number;

     /**
     * 排除客户
     */
    exceptCustomerIdList?: number[];

    /**
     * 是否有差异标志
     */
    differenceFlag?: boolean;

    /**
     * 产品编号
     *
     * @mbg.generated
     */
    productId?: string;

    /**
     * 排除产品
     */
    exceptProductIdList?: string[]


    /**
     * 订单编号
     *
     * @mbg.generated
     */
    orderIdList?: string[];

    /**
     * 差异金额
     *
     * @mbg.generated
     */
    differenceFeeAmount?: number;

    /**
     * 业务员编号
     *
     * @mbg.generated
     */
    salesmanId?: number;

    /**
     * 起始时间
     *
     * @mbg.generated
     */
    beginTime?: string;

    /**
     * 结束时间
     *
     * @mbg.generated
     */
    endTime?: string;

    /**
     * 最新费用重新标志
     */
     recountByLastFee?: boolean;
     
     /**
     * 当前日期
     * @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     */
    currentDate?: string;
}

/**
 * 费用明细比较查询参数
 */
export interface MoneyDetailCompareParam  extends PageParams, MoneyDetailCompareBaseParam {
}

/**
 * 费用比较明细
 */
export interface MoneyDetailCompareDto {
    /**
     * 编号
     *
     * @mbg.generated
     */
    id: number;

    /**
     * 客户编号
     *
     * @mbg.generated
     */
    customerId: number;


    /**
     * 客户名称
     *
     * @mbg.generated
     */
    customerName: number;

    /**
     * 币种
     *
     * @mbg.generated
     */
    currencyCode: string;

    /**
     * 产品编号
     *
     * @mbg.generated
     */
    productId: string;

    /**
     * 产品名称
     *
     * @mbg.generated
     */
    productName: string;

    /**
     * 费用版本号
     *
     * @mbg.generated
     */
    feeVersionNumber: string;
    

    /**
     * 费用
     *
     * @mbg.generated
     */
    feeAmount: number;
    
    /**
     * 计费重量
     *
     * @mbg.generated
     */
    countFeeWeight: number;

    /**
     * 计费重(旧)
     *
     * @mbg.generated
     */
    opWeight: number;
    /**
     * 长
     *
     * @mbg.generated
     */
    length: number;

    /**
     * 宽
     *
     * @mbg.generated
     */
    width: number;

    /**
     * 高
     *
     * @mbg.generated
     */
    height: number;

    /**
     * 操作费(新)
     *
     * @mbg.generated
     */
    operatePrice: number;

     /**
     * 公斤价(旧)
     *
     * @mbg.generated
     */
     opcServiceCharge: number;

     /**
      * 操作费(旧)
      *
      * @mbg.generated
      */
     opcOperationFee: number;

     /**
     * 附加费(旧)
     *
     * @mbg.generated
     */
    attachFee: number;

    /**
     * 税费(旧)
     *
     * @mbg.generated
     */
    euTariff: number;

    /**
     * 公斤价
     *
     * @mbg.generated
     */
    weightPrice: number;

    /**
     * 订单编号
     *
     * @mbg.generated
     */
    orderId: string;

    /**
     * 收货时间
     *
     * @mbg.generated
     */
    receiveTime: string | Date;

    /**
     * 跟踪号
     *
     * @mbg.generated
     */
    trackingNumber: string;

    /**
     * 客单号
     *
     * @mbg.generated
     */
    customerOrderId: string;

    /**
     * 转单号
     *
     * @mbg.generated
     */
    transferNumber: string;

    /**
     * 老系统版本
     */
    opcVersion: string;

    /**
     * 老系统费用
     *
     * @mbg.generated
     */
    oldFeeAmount: number;

    /**
     * 差异金额
     *
     * @mbg.generated
     */
    differenceFeeAmount: number;

    /**
     * 业务员编号
     *
     * @mbg.generated
     */
    salesmanId: number;

    /**
     * 业务员名称
     *
     * @mbg.generated
     */
    salesmanName: string;

    /**
     * 创建时间
     *
     * @mbg.generated
     */
    createTime: string | Date;

    /**
     * 备注
     *
     * @mbg.generated
     */
    remark: string;

    /**
     * 国家名称
     *
     * @mbg.generated
     */
    countryName: string;    
     /**
     * 计费公式
     *
     * @mbg.generated
     */
    formulaDescription: string;
}

// 重算参数
export interface ReCountParams {
    /**
     * 客户编号
     *
     * @mbg.generated
     */
    customerId?: number;
    /**
     * 订单编号
     */
    orderIdList?: number[];
    /**
     * 起始时间
     *
     * @mbg.generated
     */
    beginTime?: string
    /**
     * 结束时间
     *
     * @mbg.generated
     */
    endTime?: string

    /**
     * 最新费用重新标志
     */
    recountByLastFee?: boolean;
    

    /**
     * 当前日期
     * @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     */
    currentDate?: string;

    /**
     * 业务员编号
     *
     * @mbg.generated
     */
    salesmanId?: number;

    /**
     * 产品编号
     *
     * @mbg.generated
     */
    productId?: string;
}