import { IMessageHead } from '@/services/socket/trade/protobuf/proto'
import Long from 'long'

declare global {
    namespace Proto {
        /** 保税仓进出仓商品明细列表 */
        interface BSCGoodsListDetail {
            GoodsID: number; // 商品ID,必填
            GoodsSpec: string; // 规格,必填
            RawDetail: string; // 原料明细,必填
            BackageNum: number; // 件数,必填
            NetWeightCT: number; // 净重(克拉),必填
            NetWeightGM: number; // 净重(克),必填
            BagWeightGM: number; // 连袋重(克),必填
            PrePriceGM: number; // 单价(克),必填
            TotalPrice: number; // 总价,必填
            CurrencyDes: string; // 币种,必填
            CustomsValue: number; // 报关总值,必填
            OriginCountry: string; // 原产国,必填
            Remark: string; // 备注,选填
        }

        /** 保税仓进出仓附表 */
        interface BSCOutWareHouseSchedule {
            GoodsID: number; // 商品ID,必填
            CustomsNo: string; // 报关单号,必填
            JCKDate: string; // 进口日期,必填
            CurNetWeightCT: number; // 本次扣减量(克拉),必填
        }

        /** 保税仓进出仓申请接口请求 */
        interface BSCInAndOutWareHouseApplyReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID,必填
            UserName: string; // 申请方名称,必填
            UserAddress: string; // 申请方地点,必填
            ContactName: string; // 申请方联系人,必填
            ContactNum: string; // 申请方联系电话,必填
            LogisticsCompany: string; // 物流公司名称,必填
            LogisticsNo: string; // 托运单号,选填
            OrderType: number; // 单据类型,必填1:进仓2:出仓
            BSCGoodsListDetails: BSCGoodsListDetail[]; // 明细列表(数组),必填
            BSCOutWareHouseSchedules: BSCOutWareHouseSchedule[]; // 出仓附表(数组),必填
            OperateID: number; // 操作人ID,必填
            OperateAccount: string; // 操作人账户,必填
            ClientSerialNo: string; // 客户端流水号
            OutType?: number; // 出仓类型,出仓类型-1:转厂2:出境(枚举:GZBSCOutType)OrderType=2：出仓
        }

        // 保税仓进出仓申请接口响应
        interface BSCInAndOutWareHouseApplyRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            OrderID: number; // 单据ID,必填
            ClientSerialNo: string; // 客户端流水号
        }

        /** 文件列表 */
        interface FileDetail {
            FileName: string; // 文件名
            FilePath: string; // 文件地址
        }

        // 保税仓上传文件接口请求
        interface BSCUploadFileReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID,必填
            OrderID: Long; // 单据ID,必填
            FileDetails: FileDetail[]; // 文件列表,必填
            ClientSerialNo: string; // 客户端流水号
            OperateID: number; // 操作人ID,必填
            OperateAccount: string; // 操作人账户,必填
        }

        // 保税仓上传文件接口响应
        interface BSCUploadFileRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID,必填
            OrderID: number; // 单据ID,必填
            ClientSerialNo: string; // 客户端流水号
        }

        // 保税仓确认支付接口请求
        interface BSCConfirmPayReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID,必填
            TradeMonth: string; // 月份(yyyMM),必填
            ClientSerialNo: string; // 客户端流水号
        }

        // 保税仓确认支付接口响应
        interface BSCConfirmPayRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID,必填
            ClientSerialNo: string; // 客户端流水号
        }

        // WMS结算单支付接口请求
        interface BSWMSReckonPayReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID,必填
            OrderID: number; // 单据ID,必填
            ClientSerialNo: string; // 客户端流水号
        }

        // WMS结算单支付接口响应
        interface BSWMSReckonPayRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            OrderID: number; // 单据ID
            ClientSerialNo: string; // 客户端流水号
        }
    }
}