using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XYY.Service.Standard.ChannelApi.Ultidel
{
    public class Request<T>
    {
        public string messageId { get; set; }
        public long timestamp { get; set; }
        public T data { get; set; }
    }

    public class SmallPackRequest : Request<SmallPackRequestBody>
    {

    }

    public class ShipmentPackageItemDetail
    {
        /// <summary>
        /// 
        /// </summary>
        public string destinationCountryHsCode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string harmonizedTariffDescription { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string harmonizedTariffNumber { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string hazmatException { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string isHazmat { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemCountryOfOrigin { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemDescriptionExport { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemDescriptionImport { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int itemQuantity { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemSKU { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemTotalPrice { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemTotalPriceCurrency { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int itemTotalWeight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemTotalWeightUnit { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemUnitPrice { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemUnitPriceCurrency { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int itemWeight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemWeightUnit { get; set; }
    }

    public class SmallPackRequestBody
    {
        /// <summary>
        /// 
        /// </summary>
        public string batteryStatements { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeAddressLine1 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeAddressLine2 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeAddressLine3 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeCity { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeContactEmail { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeContactFax { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeContactPhone { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeCountry { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeState { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeTaxID { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string consigneeZip { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public bool containBattery { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string customerAccountID { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string customerTrackingID { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string pickUpZone { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string productCode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string sellerOrderNo { get; set; }
        /// <summary>
        /// 武汉路1111号
        /// </summary>
        public string shipFromAddressLine1 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipFromAddressLine2 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipFromAddressLine3 { get; set; }
        /// <summary>
        /// 闵⾏区
        /// </summary>
        public string shipFromCounty { get; set; }
        /// <summary>
        /// 上海市
        /// </summary>
        public string shipFromCity { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipFromContactEmail { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipFromContactFax { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipFromContactPhone { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipFromCountry { get; set; }
        /// <summary>
        /// 张三
        /// </summary>
        public string shipFromName { get; set; }
        /// <summary>
        /// 上海市
        /// </summary>
        public string shipFromState { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipFromZip { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int shipmentPackageActualGrossWeight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageActualGrossWeightUnit { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageHeightUnit { get; set; }
        /// <summary>
        /// 有趣的东⻄
        /// </summary>
        public string packageDescriptionExport { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string packageDescriptionImport { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<ShipmentPackageItemDetail> shipmentPackageItemDetail { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int shipmentPackageItemQuantity { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageLengthUnit { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageTotalDeclaredValue { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageTotalDeclaredValueCurrency { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageTotalValue { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageTotalValueCurrency { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string shipmentPackageWidthUnit { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string termsOfSale { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public long transmissionDateTime { get; set; }
    }


    public class CanelSmallPackRequestData
    {
        public string customerAccountId { get; set; }
        public string customerTrackingID { get; set; }
        public string transmissionDateTime { get; set; }
    }

    public class CanelSmallPackRequest : Request<CanelSmallPackRequestData>
    {

    }


    public class GetBagLabelRequestData
    {
        public bool containBattery { get; set; }
        public int containerActualGrossWeight { get; set; }
        public string containerActualGrossWeightUnit { get; set; }
        public int containerPackageQuantity { get; set; }
        public string customerAccountId { get; set; }
        public string customerContainerTrackingId { get; set; }
        public string opCenterCode { get; set; }
        public long transmissionDateTime { get; set; }
        public List<packageDetail> packageDetail { get; set; }
    }

    public class packageDetail
    {
        public string customerTrackingID { get; set; }
    }

    public class GetBagLabelRequest : Request<GetBagLabelRequestData>
    {

    }
}
