import { SdkResponse } from './base.js';
export interface SaleOrderData {
    saleOrders: SaleOrder[];
}
/** 出库单明细项 */
export interface CarrierAddedService {
    /**
     * 增值服务代码
     * (请参考附录 4.3： 承运商增值服务表)
     * 说明：需要使用电子回单的，该字段传IN149
     */
    ServiceCode?: string;
    /**
     * 说明：需要使用电子回单的，该字段传 3
     */
    Attr01?: string;
    Attr02?: string;
    Attr03?: string;
    Attr04?: string;
    Attr05?: string;
    Attr06?: string;
    Attr07?: string;
    Attr08?: string;
}
export interface OrderCarrier {
    /** 是否内部件 */
    IsInternalParts?: number;
    /**
     * 承运商
     * CP: 顺丰速运 ✅
     * ZT: 自提承运商 ✅
     * */
    Carrier: 'CP' | 'ZT';
    /**
     * 承运商产品
     * S2： 顺丰标快 ✅
     * SE0129：极效前置 ✅
     * SE0141：顺丰卡航 ✅
     * ZT: 自提 ✅
     * */
    CarrierProduct: 'ZT' | 'S2' | 'SE0129' | 'SE0141';
    /** 运单号 */
    WaybillNo?: string;
    /** 线路编号 */
    RouteNumbers?: string;
    /** 运费支付方式 */
    PaymentOfCharge?: string;
    /** 月结账号 */
    MonthlyAccount?: string;
    /** 付款地区 */
    PaymentDistrict?: string;
    /**
     * 是否需要签回单
     * Y 是 N 否
     * 注意：需要签纸质版回单的这里传 Y
     */
    ReturnService?: string;
    /** 签回单号 */
    ReturnTracking?: string;
    /** 是否是自取件 */
    IfSelfPickup?: string;
    /** 承运商属性1 */
    CarrierAttr1?: string;
    /** 承运商属性2 */
    CarrierAttr2?: string;
    /** 承运商属性3 */
    CarrierAttr3?: string;
    /** 承运商系统 */
    CarrierSystem?: string;
    /** 打印标识 */
    PrintMark?: string;
    /** 承运商增值服务 */
    CarrierAddedServices?: CarrierAddedService[];
}
export interface OrderReceiverInfo {
    /**
     * 收件方公司
     * 传 Apple 厂 商 要 求 的
     * ToLocationName，例如“销售出库- 2C 消费者”传 DTC，“大仓分货-门店”传门店名称
     */
    ReceiverCompany?: string;
    /** 收件方姓名 */
    ReceiverName?: string;
    /** 收件方电子邮箱 */
    ReceiverEmail?: string;
    /** 收件方邮编 */
    ReceiverZipCode?: string;
    /** 收件方手机 */
    ReceiverMobile?: string;
    /** 收件方电话 */
    ReceiverPhone?: string;
    /** 收件方国家 */
    ReceiverCountry: string;
    /** 收件方省份 */
    ReceiverProvince?: string;
    /** 收件方城市 */
    ReceiverCity?: string;
    /** 收件方区/县 */
    ReceiverArea?: string;
    /** 收件方地址 */
    ReceiverAddress?: string;
    /** 收件方证件类型 */
    ReceiverIdType?: string;
    /** 收件方证件号码 */
    ReceiverIdCard?: string;
    /** 收件方街道 */
    EndStationStreet?: string;
}
export interface OrderSenderInfo {
    SenderCompany?: string;
    SenderName?: string;
    SenderEmail?: string;
    SenderZipCode?: string;
    SenderMobile?: string;
    SenderPhone?: string;
    SenderCountry?: string;
    SenderProvince?: string;
    SenderCity?: string;
    SenderArea?: string;
    SenderAddress?: string;
    SenderIdType?: string;
    SenderIdCard?: string;
    SenderStationStreet?: string;
}
export interface OrderExtendAttribute {
    /** 扩展字段1 */
    UserDef1?: string;
    /**
     * ND 发 T2,传 T2 HQID （回传 Apple 厂商供数）
     */
    UserDef2?: string;
    /** 扩展字段3 */
    UserDef3?: string;
    /**
     * 传 Apple 厂 商 要 求 的
     * toLocationCode，例如“销售出库- 2C 消费者”传 DTC
     * erp 仓库对接收发地信息
     */
    UserDef4?: string;
    /**
     * 存回传 Apple 厂商的调拨单原参考 erp 单号
     */
    UserDef5?: string;
    /**
     * 存放云签标识
     */
    UserDef6?: string;
    /**
     * ASAB 苹果地址校验的 code，传值同
     * toLocationCode，例如“销售出库- 2C 消费者”传 DTC
     */
    UserDef7?: string;
    /**
     * ASAB 苹 果 地 址 校 验 的
     * accountName ， EDU 、 EDTC 和
     * ResellerOffice 场景必填，例如："北京
     * 大学"，可在 ASAB 系统看到不同
     * ship-to-id 对应不同的 accountName
     */
    UserDef8?: string;
    /**
     * ASAB 苹 果 地 址 校 验 的 hqid,EDU 、
     * EDTC 和 ResellerOffice 场景必填；
     * 可在 ASAB 系统看到不同 ship-to-id
     * 对应不同的 hqid
     */
    UserDef9?: string;
    /**
     * 电 商 平 台 苹 果 店 铺 ID ， 用 于 回 传
     * Apple 厂商供数
     */
    UserDef10?: string;
    /**
     * 传 Apple 厂 商 要 求 的
     * toLocationType，例如“销售出库-2C
     * 消费者”传 3
     */
    UserDef11?: string;
    /**
     * 用|拼接省市区县详细地址，例如：
     * 广东|深圳市|南山区|中山路 1 号
     * （回传 Apple 厂商供数）
     */
    UserDef12?: string;
    /**
     * 奇门对接情景存 Apple 的 erpordertype
     */
    UserDef13?: string;
    UserDef14?: string;
    /**
     * 传 Apple 厂 商 要 求 的
     * FromLocationname，ND/T1 在苹果
     * 报备的仓库名，例如：XXX 良品仓
     */
    UserDef15?: string;
    /**
     * 如 SKU 明细包含 Demo，传 Demo
     */
    UserDef16?: string;
}
export interface OrderInvoice {
    /** 发票类型 */
    InvoiceType?: string;
    /** 发票号 */
    InvoiceNo?: string;
    /** 发票抬头 */
    InvoiceTitle?: string;
    /** 发票内容 */
    InvoiceContent?: string;
    /** 发票金额 */
    InvoiceAccount?: string;
    /** 收件方名称 */
    ReceiverName?: string;
    /** 收件方手机 */
    ReceiverMobile?: string;
    /** 收件方地址 */
    ReceiverAddress?: string;
    /** 扩展字段1 */
    UserDef1?: string;
    /** 扩展字段2 */
    UserDef2?: string;
    /** 扩展字段3 */
    UserDef3?: string;
    /** 扩展字段4 */
    UserDef4?: string;
    /** 扩展字段5 */
    UserDef5?: string;
    /** 扩展字段6 */
    UserDef6?: string;
    /** 扩展字段7 */
    UserDef7?: string;
    /** 扩展字段8 */
    UserDef8?: string;
}
export interface OrderItem {
    /** 商品明细字段 */
    /** ERP行号 */
    ErpOrderLineNum?: string;
    /** 商品编码 */
    SkuNo: string;
    /** 商品名称 */
    ItemName?: string;
    /** 商品单位 */
    ItemUom?: string;
    /** 数量 */
    ItemQuantity: number;
    /** 单价 */
    ItemPrice?: number;
    /** 批准文号 */
    ApproveDocno?: string;
    /** 拼箱数量 */
    CubeMultipleQty?: string;
    /** 优惠金额 */
    ItemDiscount?: number;
    /** 商品国检备案编号 */
    CheckPrepardNo?: string;
    /** 商品海关备案号 */
    CustomsPrepardNo?: string;
    /** 海关编号 */
    HsCode?: string;
    /** 商品品牌 */
    ItemBrand?: string;
    /** 商品型号 */
    ItemSpecifications?: string;
    /** 商品运输温度 */
    SkuTransportTemperature?: string;
    /** 商品运输温度名称 */
    SkuTransportTemperatureName?: string;
    /** 是否是组合商品 */
    BomAction?: string;
    /** 是否赠品 */
    IsPresent?: string;
    /** 是否虚拟增值产品 */
    IsVirtualProduct?: string;
    /**
     * 库存类型
     * 10：良品
     * 20：残次品
     */
    InventoryStatus: '10' | '20';
    /** 批号 */
    Lot?: string;
    /** 明细备注 */
    Note?: string;
    /** 供应商编码 */
    VendorCode?: string;
    /** 生产日期 */
    Mfgdate?: string;
    /** 失效日期 */
    Expdate?: string;
    /** 入库日期 */
    Recdate?: string;
    /** BOM商品编码 */
    LotAttr1?: string;
    LotAttr2?: string;
    LotAttr3?: string;
    /**
     * 苹果 的逻辑 仓，传 Apple 厂商 要 求
     * fromLocationcode，ND/T1 在苹果报
     * 备的逻辑仓编码，hqid-XXX,例如：
     * 15XXX-1001；
     */
    LotAttr4: string;
    LotAttr5?: string;
    LotAttr6?: string;
    LotAttr7?: string;
    LotAttr8?: string;
    LotAttr9?: string;
    LotAttr10?: string;
    LotAttr11?: string;
    LotAttr12?: string;
    UserDef1?: string;
    /**
     * 传 Apple 厂商的 MPN
     */
    UserDef2: string;
    UserDef3?: string;
    UserDef4?: string;
    UserDef5?: string;
    UserDef6?: string;
    UserDef7?: string;
    UserDef8?: string;
    /** 物资类型 */
    MaterialType?: number;
    /** 增值服务标签 */
    ValueAdded?: string;
    /**
     * 国补标识枚举值：dy 为抖音；sn 为苏
     * 宁；tb 为淘天；pdd 为拼多多；ks 为
     * 快手；wph 为唯品会；dw 为得物；xhs 为
     * 小红书；sph 为视频号；merchant 为
     * 商家自营国补，新增：bl 为百联
     */
    SubsidySource?: string;
    /**
     * 国补分类。枚举值：手机、平板、电脑、穿戴
     */
    SubsidyClassify?: string;
    SerialNumbers?: string[];
}
export type SfOutOrderType = '10' | '20' | '22' | '30' | '40' | '50' | '90' | '112' | 'PKCK' | 'JXQZ';
/** 单个出库单 */
export interface SaleOrder {
    /** 仓库编码（可选） */
    WarehouseCode?: string;
    /**
     * 订单类型（必填）
     * 10 销售订单
     * 20 返厂订单
     * 30 换货订单
     * 40 调拨订单
     * 50 退仓订单
     * 90 NPR 订单
     * PKCK：盘亏出库
     * 112：其他出库
     * 极效前置订单必须传 JXQZ
     */
    SfOrderType: SfOutOrderType;
    /**
     * 传 Apple 厂 商 要 求 的 TransactionCode，例如“销售出库-2C 消费者”传 1001
     */
    ErpOrderType: string;
    /** 客户订单号（必填） */
    ErpOrder: string;
    /** 业务部门（可选） */
    BusinessDepartment?: string;
    /** 销售代表（可选） */
    SalesRepresentative?: string;
    /** 运输条件（可选） */
    TransportationCondition?: string;
    /** 组合标识（可选） */
    CombinationSign?: string;
    /** 目的地设施别名ID（可选） */
    DestinationFacilityAliasId?: string;
    /** 目的地设施名称（可选） */
    DestinationFacilityName?: string;
    /** 质量类型（可选） */
    QualityType?: string;
    /** 供应商编码（可选） */
    VendorCode?: string;
    /** 订单运输温度（可选） */
    OrderTransportTemperature?: string;
    /** 订单备注（可选） */
    OrderNote?: string;
    /** 包装备注（可选） */
    PackageNote?: string;
    /** 交易订单日期（可选） */
    TradeOrderDateTime?: Date;
    /** 交易订单时间（可选） */
    PayDateTime?: Date;
    /**
     * 极效前置放行时间 格式：YYYY-MM-DD HH24:MI:SS
     */
    ExpeditedPrereleaseTime?: string;
    /** 币种简码 */
    CurrencyCode?: string;
    /** 商家备注 */
    CompanyNote?: string;
    /**
     * 店铺名称,平台店铺名称,用于 Apple 厂商供数
     */
    ShopName?: string;
    /** 交易平台 */
    TradePlatform?: string;
    /** 平台交易号 */
    TradeOrder?: string;
    /** 买家账号 */
    BuyerId?: string;
    /** 是否需要整单发货 */
    CompleteDelivery?: string;
    /** 运单打印寄件方信息来源 */
    FromFlag?: string;
    /** 要求派送日期 */
    DeliveryDate?: string;
    /** 配送要求 */
    DeliveryRequested?: string;
    /** 客户支付方式 */
    PaymentMethod?: string;
    /** 支付号码 */
    PaymentNumber?: string;
    /** 订单支付运费 */
    Freight?: number;
    /** 面单备注 */
    Remark?: string;
    /** 订单总金额 */
    OrderTotalAmount?: number;
    /** 订单优惠金额 */
    OrderDiscount?: number;
    /** 其他金额 */
    OtherCharge?: number;
    /** 实际支付金额 */
    ActualAmount?: number;
    /** 订单实际重量 */
    ActualWeight?: number;
    /** 订单优先级 */
    Priority?: number;
    /** 订单发货模式 */
    DeliveryMode?: string;
    /** 是否需要发票 */
    IsInvoice?: string;
    /** 是否允许拆单 */
    IsAllowSplit?: string;
    /**
     * 原始ERP单号
     * 苹果销售出库单附带传参 T2 采购单号
     */
    OrgErpOrder?: string;
    /** 原始电商单号 */
    OrgTradeOrder?: string;
    /** 头程运单号 */
    InProcessWaybillNo?: string;
    /** 客户网络代码 */
    CustomerNetCode?: string;
    /** 客户网点名称 */
    CustomerNetName?: string;
    /** 客户区域代码 */
    CustomerAreaCode?: string;
    /** 是否需要自动分仓 */
    IsNeedAllot?: string;
    /** 系统来源 */
    SysSource?: string;
    /**
     * 是否订单加密（Y:加密|N:不加密）
     * 用于标记订单是否加密，根据客户场景传值。
     */
    IsEncryptedData?: string;
    /** 加密标识 */
    Oaid?: string;
    /** 创建人 */
    CreateEmp?: string;
    /** 需求类型 */
    NeedsType?: string;
    /** 排线号 */
    ShiftNumber?: string;
    /** 收件方网点编码 */
    ReceiverStationCode?: string;
    /** 是否高价值 */
    HighValue?: string;
    /** 上门取货开始时间 */
    ReserveTime?: string;
    /** 上门取货结束时间 */
    ReserveEndTime?: string;
    /** 要求发货时间 */
    RequiredDeliveryDate?: string;
    /** 业务类型 */
    BusinessModel?: string;
    /** 原始承运商 */
    OrgCarrier?: string;
    /**
     * 订单类型：1-修改，其他值下单
     * 接口传值为 1 时，portal 会调用出库单取消接口将单据进行取消，同时调用出库单接口生成新的出库单。
     * 修改地址：将原 erp 单据的地址修改后，重新调用 出库单接口（ 将 AddOrModifyType 赋值 1），
     * SF 系统会自动做原出库单取消以及生成新的出库单据下发 WMS；
     * 但受限于单据处理的状态，例如：当 WMS 已经发运时，单据不允许修改
     */
    AddOrModifyType?: number;
    /** 订单承运商 */
    OrderCarrier: OrderCarrier;
    /** 收件方信息 */
    OrderReceiverInfo: OrderReceiverInfo;
    /** 寄件方信息 */
    OrderSenderInfo: OrderSenderInfo;
    /** 扩展属性 */
    OrderExtendAttribute: OrderExtendAttribute;
    /** 发票信息 */
    OrderInvoice?: OrderInvoice;
    /** 订单明细 */
    OrderItems: OrderItem[];
}
/** 出库单接口请求 */
export interface SaleOrderRequest {
    /** 货主编码（必填） */
    CompanyCode: string;
    /** 访问码（必填） */
    AccessCode: string;
    /** 校验码（必填） */
    Checkword: string;
    /** 服务编码（必填） */
    ServiceCode: string;
    /** 出库单列表（必填） */
    SaleOrders: SaleOrder[];
}
/** 单个出库单响应 */
export interface SaleOrderResponseItem {
    /** 客户订单号（必填） */
    ErpOrder: string;
    /** 出库单号（可选） */
    ShipmentId?: string;
    /** 处理结果（必填） */
    Result: '1' | '2';
    /** 失败备注（可选） */
    Note?: string;
}
/** 出库单接口响应 Body */
export interface SaleOrderResponseBody {
    SaleOrders: SaleOrderResponseItem[];
}
/** 出库单接口响应 */
export type SaleOrderResponse = SdkResponse & SaleOrderResponseBody;
