import { number } from "echarts";
import { PageParams } from "../base/BaseDataModel";

/**
 * 客户账期查询参数
 */
export interface AccountPeriodParam extends PageParams {
    /**
     * 客户编号
     *
     * @mbg.generated
     */
    customerId?: number;

    /**
     * 账期类型
     *
     * @mbg.generated
     */
    accountPeriod?: string;

    /**
     * 删除标志
     *
     * @mbg.generated
     */
    deleteFlag?: boolean;
}
/**
 * 客户账期返回值
 */
export interface AccountPeriodDto {
    /**
     * 编号
     *
     * @mbg.generated
     */
    id?: number;

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

    /**
     * 客户名称
     */
    customerName: string;

    /**
     * 账期类型
     *
     * @mbg.generated
     */
    accountPeriod: number;

    /**
     * 账期类型
     *
     * @mbg.generated
     */
    accountPeriodName: string;

    /**
     * 结账类型 0 根据账期生成 1 手工填写
     */
    checkoutTypes: 0 | 1;

    /**
     * 结账类型 0 根据账期生成 1 手工填写
     */
    checkoutTypesName: string;

    /**
     * 账期额度
     *
     * @mbg.generated
     */
    accountingPeriodLimit: number;

    /**
     * 结账天数
     *
     * @mbg.generated
     */
    checkoutDays: number;

    /**
     * 创建人编号
     *
     * @mbg.generated
     */
    createUserId: number;

    /**
     * 创建人名
     *
     * @mbg.generated
     */
    createUserName: string;

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

/**
 * 客户账单查询参数
 */
export interface CustomerBillParam extends PageParams {
    /**
     * 编号
     *
     * @mbg.generated
     */
    id?: number;

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

    /**
     * 分公司编号
     */
    orgId?: string;

    /**
     * 账期类型
     *
     * @mbg.generated
     */
    accountPeriod?: number;

    /**
     * 账单日期
     *
     * @mbg.generated
     */
    billDate?: string | Date;

    /**
     * 状态 0 未还清，1 已还清
     *
     * @mbg.generated
     */
    status?: number;

    /**
     * 日期类型 0 账期起始时间 1 账单日期 2还款日期
     */
    dateType?: number;
    /**
     * 账单起始时间
     */
    beginDate?: string | Date;

    /**
     * 账单结束时间
     */
    endDate?: string | Date;

    /**
     * 有支出记录
     */
    haveExpenditure?: boolean;
    /**
     * 业务员编号
     *
     * @mbg.generated
     */
    salesmanId?: number;

    /**
     * 币种
     */
    currencyCode?: string

    /**
     * 是否拦截
     */
    isInterceptCustomers?: boolean
}

/**
 * 客户账单返回值
 */
export interface CustomerBillWithDetailDto {
    /**
     * 编号
     *
     * @mbg.generated
     */
    id: number;

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

    /**
     * 账期类型
     *
     * @mbg.generated
     */
    accountPeriod: number;

    /**
     * 账单起始时间
     *
     * @mbg.generated
     */
    periodBeginDate: string | Date;

    /**
     * 账单结束时间
     *
     * @mbg.generated
     */
    periodEndDate: string | Date;

    /**
     * 账单日期
     *
     * @mbg.generated
     */
    billDate: string | Date;

    /**
     * 还款日期
     *
     * @mbg.generated
     */
    payDate: string | Date;

    /**
     * 客户账单币种明细列表
     */
    customerBillCurrencyCodeDetailDtoList: CustomerBillCurrencyCodeDetailDto[];
}
/**
 * 客户账单多币种明细
 */
export interface CustomerBillCurrencyCodeDetailDto {
    /**
     * 币种
     *
     * @mbg.generated
     */
    currencyCode: string;

    /**
     * 期初余额
     *
     * @mbg.generated
     */
    openingBalance: number;

    /**
     * 本期付款
     *
     * @mbg.generated
     */
    payment: number;

    /**
     * 本期收入
     *
     * @mbg.generated
     */
    income: number;

    /**
     * 本期支出
     *
     * @mbg.generated
     */
    expenditure: number;

    /**
     * 期末余额
     *
     * @mbg.generated
     */
    balance: number;

    /**
     * 状态
     *
     * @mbg.generated
     */
    status: number;

    /**
     * 状态
     *
     * @mbg.generated
     */
    statusName: string;

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

/**
 * 是否启用与停用
 */
export interface AccountPeriodStatus {
     /**
     * 编号
     *
     * @mbg.generated
     */
     id: number;

     /**
      * 删除标志
      *
      * @mbg.generated
      */
     deleteFlag: boolean;
}

/**
 * 临时收货查询参数
 */
export interface TmpReceiveParam extends PageParams, TmpReceiveStatusParam {}
export interface TmpReceiveStatusParam {
    /**
     * 编号
     *
     * @mbg.generated
     */
    id?: number;

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

    /**
     * 当前时间
     */
    currentDate?: string | Date;
    /**
     * 起始时间
     *
     * @mbg.generated
     */
    beginDate?: string;

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

    /**
     * 是否删除
     *
     * @mbg.generated
     */
    deleteFlag?: boolean;
    
    /**
     * 0 新增 1:已转账
     *
     * @mbg.generated
     */
    status?: number;

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

/**
 * 临时收货返回参数
 */
export interface TmpReceiveDto {
    /**
     * 编号
     *
     * @mbg.generated
     */
    id: number;

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

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

    /**
     * 起始时间
     *
     * @mbg.generated
     */
    beginDate: string | Date;

    /**
     * 结束时间
     *
     * @mbg.generated
     */
    endDate: string | Date;

    /**
     * 是否删除
     *
     * @mbg.generated
     */
    deleteFlag: boolean;

    /**
     * 创建人编号
     *
     * @mbg.generated
     */
    createUserId: number;

    /**
     * 创建人名
     *
     * @mbg.generated
     */
    createUserName: string;

    /**
     * 创建时间
     *
     * @mbg.generated
     */
    createTime: string | Date;
    /**
     * 上传文件
     *
     * @mbg.generated
     */
    uploadFileList: string[];
    /**
     * 0 新增 1:已转账
     *
     * @mbg.generated
     */
    status: 0 | 1;
    /**
     * 状态名称
     */
    statusName: string;
}

/**
 * 临时收货新增参数
 */
export interface TmpReceiveDtoAdd {
    /**
     * id
     */
    id?: number
    /**
     * 客户编号
     *
     * @mbg.generated
     */
    customerId: number | string;

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

    /**
     * 客户名称
     *
     * @mbg.generated
     */
    customerName: string;
    
    /**
     * 起始时间
     *
     * @mbg.generated
     */
    beginDate: string | Date;

    /**
     * 结束时间
     *
     * @mbg.generated
     */
    endDate: string | Date;
    /**
     * 临时额度
     *
     * @mbg.generated
     */
    tempLimit?: number;
    /**
     * 上传文件
     */
    files?: File[]
    /**
     * 操作类型 0 新增 1 编辑 2 版本新增 3 重算新增
     */
    type?: number;
}

/**
 * 转账参数
 */
export interface TransferAccountsParams {
    /**
     * 临时收货id
     */
    id: number
    
    /**
     * 确认金额
     */
    confirmFee: number;

    /**
     * 备注
     */
    remark?: string;
    
    /**
     * 支付类型
     */
    paymentType?: number;
    /**
     * 收货时间
     * @mbg.generated
     * @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     */
    receiveTime?: string;
}

// 批量修改账期额度
export interface BatchEditTmpReceive {
    /**
     * 客户名称列表
     */
    customerNameList: string[];
    /**
     * 账期类型
     *
     * @mbg.generated
     */
    accountPeriod: number;
    /**
     * 账期额度
     *
     * @mbg.generated
     */
    accountingPeriodLimit: number;
}