Subversion Repositories SmartDukaan

Rev

Rev 23120 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#
# Autogenerated by Thrift Compiler (0.7.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#

from thrift.Thrift import *
import shop2020.thriftpy.generic.ttypes


from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol, TProtocol
try:
  from thrift.protocol import fastbinary
except:
  fastbinary = None


class AmazonFCWarehouseLocation:
  """
  *
  Order objects.
  """
  Mumbai = 0
  Bangalore = 1
  Gurgaon = 2

  _VALUES_TO_NAMES = {
    0: "Mumbai",
    1: "Bangalore",
    2: "Gurgaon",
  }

  _NAMES_TO_VALUES = {
    "Mumbai": 0,
    "Bangalore": 1,
    "Gurgaon": 2,
  }

class FlipkartFCWarehouseLocation:
  Delhi = 0

  _VALUES_TO_NAMES = {
    0: "Delhi",
  }

  _NAMES_TO_VALUES = {
    "Delhi": 0,
  }

class OrderStatus:
  PAYMENT_PENDING = 0
  PAYMENT_FAILED = 1
  COD_VERIFICATION_PENDING = 2
  SUBMITTED_FOR_PROCESSING = 3
  ACCEPTED = 4
  INVENTORY_LOW = 5
  REJECTED = 6
  BILLED = 7
  PAYMENT_FLAGGED = 8
  SHIPPED_FROM_WH = 9
  SHIPPED_TO_LOGST = 10
  PAYMENT_FLAGGED_DENIED = 11
  DELIVERY_SUCCESS = 12
  CANCEL_REQUEST_RECEIVED = 13
  CANCEL_REQUEST_CONFIRMED = 14
  CANCELLED_ON_CUSTOMER_REQUEST = 15
  SHIPPED_TO_DESTINATION_CITY = 16
  REACHED_DESTINATION_CITY = 17
  COD_VERIFICATION_FAILED = 18
  FAILED = 19
  RTO_IN_TRANSIT = 20
  RTO_RECEIVED_PRESTINE = 21
  DOA_PICKUP_REQUEST_RAISED = 22
  DOA_PICKUP_CONFIRMED = 23
  DOA_RETURN_IN_TRANSIT = 24
  DOA_RECEIVED_PRESTINE = 25
  DOA_CERT_INVALID = 26
  DOA_CERT_VALID = 27
  RTO_RESHIPPED = 28
  DOA_INVALID_RESHIPPED = 29
  DOA_VALID_RESHIPPED = 30
  RTO_REFUNDED = 31
  DOA_VALID_REFUNDED = 32
  DOA_INVALID_REFUNDED = 33
  CANCELLED_DUE_TO_LOW_INVENTORY = 34
  LOW_INV_PO_RAISED = 35
  LOW_INV_REVERSAL_IN_PROCESS = 36
  LOW_INV_NOT_AVAILABLE_AT_HOTSPOT = 37
  LOW_INV_PO_RAISED_TIMEOUT = 38
  LOW_INV_REVERSAL_TIMEOUT = 39
  FIRST_DELIVERY_ATTEMPT_MADE = 40
  CAPTURE_IN_PROCESS = 41
  DOA_REQUEST_RECEIVED = 42
  DOA_REQUEST_AUTHORIZED = 43
  DOA_PICKUP_DENIED = 44
  DOA_RECEIVED_DAMAGED = 45
  DOA_LOST_IN_TRANSIT = 46
  DOA_RESHIPPED_RCVD_DAMAGED = 47
  DOA_REFUNDED_RCVD_DAMAGED = 48
  DOA_RESHIPPED_LOST_IN_TRANSIT = 49
  DOA_REFUNDED_LOST_IN_TRANSIT = 50
  RTO_RECEIVED_DAMAGED = 51
  RTO_LOST_IN_TRANSIT = 52
  RTO_DAMAGED_RESHIPPED = 53
  RTO_DAMAGED_REFUNDED = 54
  RTO_LOST_IN_TRANSIT_RESHIPPED = 55
  RTO_LOST_IN_TRANSIT_REFUNDED = 56
  RTO_INVENTORY_REVERSED = 57
  RET_REQUEST_RECEIVED = 58
  RET_REQUEST_AUTHORIZED = 59
  RET_PICKUP_REQUEST_RAISED = 60
  RET_PICKUP_DENIED = 61
  RET_PICKUP_CONFIRMED = 62
  RET_RETURN_IN_TRANSIT = 63
  RET_RECEIVED_PRESTINE = 64
  RET_RECEIVED_DAMAGED = 65
  RET_LOST_IN_TRANSIT = 66
  RET_PRODUCT_USABLE = 67
  RET_PRODUCT_UNUSABLE = 68
  RET_PRODUCT_USABLE_RESHIPPED = 69
  RET_PRODUCT_USABLE_REFUNDED = 70
  RET_PRODUCT_UNUSABLE_RESHIPPED = 71
  RET_PRODUCT_UNUSABLE_REFUNDED = 72
  RET_RESHIPPED_RCVD_DAMAGED = 73
  RET_REFUNDED_RCVD_DAMAGED = 74
  RET_RESHIPPED_LOST_IN_TRANSIT = 75
  RET_REFUNDED_LOST_IN_TRANSIT = 76
  LOST_IN_TRANSIT = 77
  LOST_IN_TRANSIT_RESHIPPED = 78
  LOST_IN_TRANSIT_REFUNDED = 79
  DELIVERED_AT_STORE = 80
  RECEIVED_AT_STORE = 81
  APPROVAL_PENDING = 82
  PARTIAL_RETURN_IN_PROCESS = 83
  PARTIAL_RETURN = 84
  COMPLETE_RETURN_IN_PROCESS = 85
  COMPLETE_RETURN = 86
  REFUNDED_WITHOUT_PICKUP = 87
  REPLACED_WITHOUT_PICKUP = 88

  _VALUES_TO_NAMES = {
    0: "PAYMENT_PENDING",
    1: "PAYMENT_FAILED",
    2: "COD_VERIFICATION_PENDING",
    3: "SUBMITTED_FOR_PROCESSING",
    4: "ACCEPTED",
    5: "INVENTORY_LOW",
    6: "REJECTED",
    7: "BILLED",
    8: "PAYMENT_FLAGGED",
    9: "SHIPPED_FROM_WH",
    10: "SHIPPED_TO_LOGST",
    11: "PAYMENT_FLAGGED_DENIED",
    12: "DELIVERY_SUCCESS",
    13: "CANCEL_REQUEST_RECEIVED",
    14: "CANCEL_REQUEST_CONFIRMED",
    15: "CANCELLED_ON_CUSTOMER_REQUEST",
    16: "SHIPPED_TO_DESTINATION_CITY",
    17: "REACHED_DESTINATION_CITY",
    18: "COD_VERIFICATION_FAILED",
    19: "FAILED",
    20: "RTO_IN_TRANSIT",
    21: "RTO_RECEIVED_PRESTINE",
    22: "DOA_PICKUP_REQUEST_RAISED",
    23: "DOA_PICKUP_CONFIRMED",
    24: "DOA_RETURN_IN_TRANSIT",
    25: "DOA_RECEIVED_PRESTINE",
    26: "DOA_CERT_INVALID",
    27: "DOA_CERT_VALID",
    28: "RTO_RESHIPPED",
    29: "DOA_INVALID_RESHIPPED",
    30: "DOA_VALID_RESHIPPED",
    31: "RTO_REFUNDED",
    32: "DOA_VALID_REFUNDED",
    33: "DOA_INVALID_REFUNDED",
    34: "CANCELLED_DUE_TO_LOW_INVENTORY",
    35: "LOW_INV_PO_RAISED",
    36: "LOW_INV_REVERSAL_IN_PROCESS",
    37: "LOW_INV_NOT_AVAILABLE_AT_HOTSPOT",
    38: "LOW_INV_PO_RAISED_TIMEOUT",
    39: "LOW_INV_REVERSAL_TIMEOUT",
    40: "FIRST_DELIVERY_ATTEMPT_MADE",
    41: "CAPTURE_IN_PROCESS",
    42: "DOA_REQUEST_RECEIVED",
    43: "DOA_REQUEST_AUTHORIZED",
    44: "DOA_PICKUP_DENIED",
    45: "DOA_RECEIVED_DAMAGED",
    46: "DOA_LOST_IN_TRANSIT",
    47: "DOA_RESHIPPED_RCVD_DAMAGED",
    48: "DOA_REFUNDED_RCVD_DAMAGED",
    49: "DOA_RESHIPPED_LOST_IN_TRANSIT",
    50: "DOA_REFUNDED_LOST_IN_TRANSIT",
    51: "RTO_RECEIVED_DAMAGED",
    52: "RTO_LOST_IN_TRANSIT",
    53: "RTO_DAMAGED_RESHIPPED",
    54: "RTO_DAMAGED_REFUNDED",
    55: "RTO_LOST_IN_TRANSIT_RESHIPPED",
    56: "RTO_LOST_IN_TRANSIT_REFUNDED",
    57: "RTO_INVENTORY_REVERSED",
    58: "RET_REQUEST_RECEIVED",
    59: "RET_REQUEST_AUTHORIZED",
    60: "RET_PICKUP_REQUEST_RAISED",
    61: "RET_PICKUP_DENIED",
    62: "RET_PICKUP_CONFIRMED",
    63: "RET_RETURN_IN_TRANSIT",
    64: "RET_RECEIVED_PRESTINE",
    65: "RET_RECEIVED_DAMAGED",
    66: "RET_LOST_IN_TRANSIT",
    67: "RET_PRODUCT_USABLE",
    68: "RET_PRODUCT_UNUSABLE",
    69: "RET_PRODUCT_USABLE_RESHIPPED",
    70: "RET_PRODUCT_USABLE_REFUNDED",
    71: "RET_PRODUCT_UNUSABLE_RESHIPPED",
    72: "RET_PRODUCT_UNUSABLE_REFUNDED",
    73: "RET_RESHIPPED_RCVD_DAMAGED",
    74: "RET_REFUNDED_RCVD_DAMAGED",
    75: "RET_RESHIPPED_LOST_IN_TRANSIT",
    76: "RET_REFUNDED_LOST_IN_TRANSIT",
    77: "LOST_IN_TRANSIT",
    78: "LOST_IN_TRANSIT_RESHIPPED",
    79: "LOST_IN_TRANSIT_REFUNDED",
    80: "DELIVERED_AT_STORE",
    81: "RECEIVED_AT_STORE",
    82: "APPROVAL_PENDING",
    83: "PARTIAL_RETURN_IN_PROCESS",
    84: "PARTIAL_RETURN",
    85: "COMPLETE_RETURN_IN_PROCESS",
    86: "COMPLETE_RETURN",
    87: "REFUNDED_WITHOUT_PICKUP",
    88: "REPLACED_WITHOUT_PICKUP",
  }

  _NAMES_TO_VALUES = {
    "PAYMENT_PENDING": 0,
    "PAYMENT_FAILED": 1,
    "COD_VERIFICATION_PENDING": 2,
    "SUBMITTED_FOR_PROCESSING": 3,
    "ACCEPTED": 4,
    "INVENTORY_LOW": 5,
    "REJECTED": 6,
    "BILLED": 7,
    "PAYMENT_FLAGGED": 8,
    "SHIPPED_FROM_WH": 9,
    "SHIPPED_TO_LOGST": 10,
    "PAYMENT_FLAGGED_DENIED": 11,
    "DELIVERY_SUCCESS": 12,
    "CANCEL_REQUEST_RECEIVED": 13,
    "CANCEL_REQUEST_CONFIRMED": 14,
    "CANCELLED_ON_CUSTOMER_REQUEST": 15,
    "SHIPPED_TO_DESTINATION_CITY": 16,
    "REACHED_DESTINATION_CITY": 17,
    "COD_VERIFICATION_FAILED": 18,
    "FAILED": 19,
    "RTO_IN_TRANSIT": 20,
    "RTO_RECEIVED_PRESTINE": 21,
    "DOA_PICKUP_REQUEST_RAISED": 22,
    "DOA_PICKUP_CONFIRMED": 23,
    "DOA_RETURN_IN_TRANSIT": 24,
    "DOA_RECEIVED_PRESTINE": 25,
    "DOA_CERT_INVALID": 26,
    "DOA_CERT_VALID": 27,
    "RTO_RESHIPPED": 28,
    "DOA_INVALID_RESHIPPED": 29,
    "DOA_VALID_RESHIPPED": 30,
    "RTO_REFUNDED": 31,
    "DOA_VALID_REFUNDED": 32,
    "DOA_INVALID_REFUNDED": 33,
    "CANCELLED_DUE_TO_LOW_INVENTORY": 34,
    "LOW_INV_PO_RAISED": 35,
    "LOW_INV_REVERSAL_IN_PROCESS": 36,
    "LOW_INV_NOT_AVAILABLE_AT_HOTSPOT": 37,
    "LOW_INV_PO_RAISED_TIMEOUT": 38,
    "LOW_INV_REVERSAL_TIMEOUT": 39,
    "FIRST_DELIVERY_ATTEMPT_MADE": 40,
    "CAPTURE_IN_PROCESS": 41,
    "DOA_REQUEST_RECEIVED": 42,
    "DOA_REQUEST_AUTHORIZED": 43,
    "DOA_PICKUP_DENIED": 44,
    "DOA_RECEIVED_DAMAGED": 45,
    "DOA_LOST_IN_TRANSIT": 46,
    "DOA_RESHIPPED_RCVD_DAMAGED": 47,
    "DOA_REFUNDED_RCVD_DAMAGED": 48,
    "DOA_RESHIPPED_LOST_IN_TRANSIT": 49,
    "DOA_REFUNDED_LOST_IN_TRANSIT": 50,
    "RTO_RECEIVED_DAMAGED": 51,
    "RTO_LOST_IN_TRANSIT": 52,
    "RTO_DAMAGED_RESHIPPED": 53,
    "RTO_DAMAGED_REFUNDED": 54,
    "RTO_LOST_IN_TRANSIT_RESHIPPED": 55,
    "RTO_LOST_IN_TRANSIT_REFUNDED": 56,
    "RTO_INVENTORY_REVERSED": 57,
    "RET_REQUEST_RECEIVED": 58,
    "RET_REQUEST_AUTHORIZED": 59,
    "RET_PICKUP_REQUEST_RAISED": 60,
    "RET_PICKUP_DENIED": 61,
    "RET_PICKUP_CONFIRMED": 62,
    "RET_RETURN_IN_TRANSIT": 63,
    "RET_RECEIVED_PRESTINE": 64,
    "RET_RECEIVED_DAMAGED": 65,
    "RET_LOST_IN_TRANSIT": 66,
    "RET_PRODUCT_USABLE": 67,
    "RET_PRODUCT_UNUSABLE": 68,
    "RET_PRODUCT_USABLE_RESHIPPED": 69,
    "RET_PRODUCT_USABLE_REFUNDED": 70,
    "RET_PRODUCT_UNUSABLE_RESHIPPED": 71,
    "RET_PRODUCT_UNUSABLE_REFUNDED": 72,
    "RET_RESHIPPED_RCVD_DAMAGED": 73,
    "RET_REFUNDED_RCVD_DAMAGED": 74,
    "RET_RESHIPPED_LOST_IN_TRANSIT": 75,
    "RET_REFUNDED_LOST_IN_TRANSIT": 76,
    "LOST_IN_TRANSIT": 77,
    "LOST_IN_TRANSIT_RESHIPPED": 78,
    "LOST_IN_TRANSIT_REFUNDED": 79,
    "DELIVERED_AT_STORE": 80,
    "RECEIVED_AT_STORE": 81,
    "APPROVAL_PENDING": 82,
    "PARTIAL_RETURN_IN_PROCESS": 83,
    "PARTIAL_RETURN": 84,
    "COMPLETE_RETURN_IN_PROCESS": 85,
    "COMPLETE_RETURN": 86,
    "REFUNDED_WITHOUT_PICKUP": 87,
    "REPLACED_WITHOUT_PICKUP": 88,
  }

class TransactionStatus:
  INIT = 0
  IN_PROCESS = 1
  COMPLETED = 2
  FAILED = 3
  AUTHORIZED = 4
  COD_IN_PROCESS = 5
  FLAGGED = 6

  _VALUES_TO_NAMES = {
    0: "INIT",
    1: "IN_PROCESS",
    2: "COMPLETED",
    3: "FAILED",
    4: "AUTHORIZED",
    5: "COD_IN_PROCESS",
    6: "FLAGGED",
  }

  _NAMES_TO_VALUES = {
    "INIT": 0,
    "IN_PROCESS": 1,
    "COMPLETED": 2,
    "FAILED": 3,
    "AUTHORIZED": 4,
    "COD_IN_PROCESS": 5,
    "FLAGGED": 6,
  }

class OrderType:
  B2C = 0
  B2Cbulk = 1
  B2B = 2
  RECHARGE = 3
  RCH4HOTSPOT = 4
  WALLETCREDIT = 5

  _VALUES_TO_NAMES = {
    0: "B2C",
    1: "B2Cbulk",
    2: "B2B",
    3: "RECHARGE",
    4: "RCH4HOTSPOT",
    5: "WALLETCREDIT",
  }

  _NAMES_TO_VALUES = {
    "B2C": 0,
    "B2Cbulk": 1,
    "B2B": 2,
    "RECHARGE": 3,
    "RCH4HOTSPOT": 4,
    "WALLETCREDIT": 5,
  }

class ExtraTransactionProcessingType:
  COD_VERIFICATION = 0
  DELAYED_DELIVERY = 1
  PAYMENT_FLAGGED = 2
  RECHARGE_UNKNOWN = 3

  _VALUES_TO_NAMES = {
    0: "COD_VERIFICATION",
    1: "DELAYED_DELIVERY",
    2: "PAYMENT_FLAGGED",
    3: "RECHARGE_UNKNOWN",
  }

  _NAMES_TO_VALUES = {
    "COD_VERIFICATION": 0,
    "DELAYED_DELIVERY": 1,
    "PAYMENT_FLAGGED": 2,
    "RECHARGE_UNKNOWN": 3,
  }

class DenominationType:
  TOPUP = 1
  SPECIAL = 2
  DATA = 3

  _VALUES_TO_NAMES = {
    1: "TOPUP",
    2: "SPECIAL",
    3: "DATA",
  }

  _NAMES_TO_VALUES = {
    "TOPUP": 1,
    "SPECIAL": 2,
    "DATA": 3,
  }

class TaxType:
  VAT = 0
  CST = 1
  CFORM = 2
  IGST = 3
  SGST = 4

  _VALUES_TO_NAMES = {
    0: "VAT",
    1: "CST",
    2: "CFORM",
    3: "IGST",
    4: "SGST",
  }

  _NAMES_TO_VALUES = {
    "VAT": 0,
    "CST": 1,
    "CFORM": 2,
    "IGST": 3,
    "SGST": 4,
  }

class WalletReferenceType:
  RECHARGE = 0
  PURCHASE = 1
  CASHBACK = 2
  REVERSAL = 3
  REFUND = 4
  FAILURE = 5
  ADVANCE_AMOUNT = 6
  SHIPPING_REFUND = 7
  ADVANCE_REVERSAL = 8
  OPENING_BALANCE = 9
  SCHEME_IN = 10
  SCHEME_OUT = 11
  DAMAGE_PROTECTION = 12
  PRICE_DROP = 13
  RECHARGE_COMMISSIONS = 14
  PREBOOKING_ORDER = 15

  _VALUES_TO_NAMES = {
    0: "RECHARGE",
    1: "PURCHASE",
    2: "CASHBACK",
    3: "REVERSAL",
    4: "REFUND",
    5: "FAILURE",
    6: "ADVANCE_AMOUNT",
    7: "SHIPPING_REFUND",
    8: "ADVANCE_REVERSAL",
    9: "OPENING_BALANCE",
    10: "SCHEME_IN",
    11: "SCHEME_OUT",
    12: "DAMAGE_PROTECTION",
    13: "PRICE_DROP",
    14: "RECHARGE_COMMISSIONS",
    15: "PREBOOKING_ORDER",
  }

  _NAMES_TO_VALUES = {
    "RECHARGE": 0,
    "PURCHASE": 1,
    "CASHBACK": 2,
    "REVERSAL": 3,
    "REFUND": 4,
    "FAILURE": 5,
    "ADVANCE_AMOUNT": 6,
    "SHIPPING_REFUND": 7,
    "ADVANCE_REVERSAL": 8,
    "OPENING_BALANCE": 9,
    "SCHEME_IN": 10,
    "SCHEME_OUT": 11,
    "DAMAGE_PROTECTION": 12,
    "PRICE_DROP": 13,
    "RECHARGE_COMMISSIONS": 14,
    "PREBOOKING_ORDER": 15,
  }

class DelayReason:
  INVENTORY_LOW_PHASED_OUT = 0
  INVENTORY_LOW_COLOR_NOT_AVAILABLE = 1
  INVENTORY_LOW_REVERSAL_NOT_ON_TIME = 2
  INVENTORY_LOW_PRODUCT_NOT_SEALED = 3
  COURIER_DELAY_NOT_DELIVERED_TO_COURIER_ON_TIME = 4
  COURIER_DELAY_DID_NOT_CONNECT = 5
  COURIER_DELAY_CUSTOMER_NOT_AVAILABLE = 6
  COURIER_DELAY_INCORRECT_ADDRESS = 7
  COURIER_DELAY_OCTROI_DELAY = 8
  COURIER_DELAY_FORCES_OF_NATURE = 9
  COD_VERIFICATION_DELAY = 10
  PAYMENT_FLAGGED = 11
  OTHERS = 12

  _VALUES_TO_NAMES = {
    0: "INVENTORY_LOW_PHASED_OUT",
    1: "INVENTORY_LOW_COLOR_NOT_AVAILABLE",
    2: "INVENTORY_LOW_REVERSAL_NOT_ON_TIME",
    3: "INVENTORY_LOW_PRODUCT_NOT_SEALED",
    4: "COURIER_DELAY_NOT_DELIVERED_TO_COURIER_ON_TIME",
    5: "COURIER_DELAY_DID_NOT_CONNECT",
    6: "COURIER_DELAY_CUSTOMER_NOT_AVAILABLE",
    7: "COURIER_DELAY_INCORRECT_ADDRESS",
    8: "COURIER_DELAY_OCTROI_DELAY",
    9: "COURIER_DELAY_FORCES_OF_NATURE",
    10: "COD_VERIFICATION_DELAY",
    11: "PAYMENT_FLAGGED",
    12: "OTHERS",
  }

  _NAMES_TO_VALUES = {
    "INVENTORY_LOW_PHASED_OUT": 0,
    "INVENTORY_LOW_COLOR_NOT_AVAILABLE": 1,
    "INVENTORY_LOW_REVERSAL_NOT_ON_TIME": 2,
    "INVENTORY_LOW_PRODUCT_NOT_SEALED": 3,
    "COURIER_DELAY_NOT_DELIVERED_TO_COURIER_ON_TIME": 4,
    "COURIER_DELAY_DID_NOT_CONNECT": 5,
    "COURIER_DELAY_CUSTOMER_NOT_AVAILABLE": 6,
    "COURIER_DELAY_INCORRECT_ADDRESS": 7,
    "COURIER_DELAY_OCTROI_DELAY": 8,
    "COURIER_DELAY_FORCES_OF_NATURE": 9,
    "COD_VERIFICATION_DELAY": 10,
    "PAYMENT_FLAGGED": 11,
    "OTHERS": 12,
  }

class ProductCondition:
  GOOD = 0
  BAD = 1

  _VALUES_TO_NAMES = {
    0: "GOOD",
    1: "BAD",
  }

  _NAMES_TO_VALUES = {
    "GOOD": 0,
    "BAD": 1,
  }

class AlertType:
  NEW_INVENTORY_ALERT = 0
  ORDER_READY_TO_ACCEPT = 1

  _VALUES_TO_NAMES = {
    0: "NEW_INVENTORY_ALERT",
    1: "ORDER_READY_TO_ACCEPT",
  }

  _NAMES_TO_VALUES = {
    "NEW_INVENTORY_ALERT": 0,
    "ORDER_READY_TO_ACCEPT": 1,
  }

class HotspotAction:
  PO_RAISED = 0
  REVERSAL_INITIATED = 1
  NOT_AVAILABLE = 2

  _VALUES_TO_NAMES = {
    0: "PO_RAISED",
    1: "REVERSAL_INITIATED",
    2: "NOT_AVAILABLE",
  }

  _NAMES_TO_VALUES = {
    "PO_RAISED": 0,
    "REVERSAL_INITIATED": 1,
    "NOT_AVAILABLE": 2,
  }

class RechargeType:
  MOBILE = 1
  DTH = 2

  _VALUES_TO_NAMES = {
    1: "MOBILE",
    2: "DTH",
  }

  _NAMES_TO_VALUES = {
    "MOBILE": 1,
    "DTH": 2,
  }

class RechargeOrderStatus:
  PAYMENT_PENDING = 1
  PAYMENT_FAILED = 2
  PAYMENT_SUCCESSFUL = 3
  RECHARGE_FAILED = 4
  RECHARGE_SUCCESSFUL = 5
  RECHARGE_FAILED_REFUNDED = 6
  REFUNDED = 7
  PARTIALLY_REFUNDED = 8
  INIT = 9
  RECHARGE_UNKNOWN = 10
  RECHARGE_IN_PROCESS = 11

  _VALUES_TO_NAMES = {
    1: "PAYMENT_PENDING",
    2: "PAYMENT_FAILED",
    3: "PAYMENT_SUCCESSFUL",
    4: "RECHARGE_FAILED",
    5: "RECHARGE_SUCCESSFUL",
    6: "RECHARGE_FAILED_REFUNDED",
    7: "REFUNDED",
    8: "PARTIALLY_REFUNDED",
    9: "INIT",
    10: "RECHARGE_UNKNOWN",
    11: "RECHARGE_IN_PROCESS",
  }

  _NAMES_TO_VALUES = {
    "PAYMENT_PENDING": 1,
    "PAYMENT_FAILED": 2,
    "PAYMENT_SUCCESSFUL": 3,
    "RECHARGE_FAILED": 4,
    "RECHARGE_SUCCESSFUL": 5,
    "RECHARGE_FAILED_REFUNDED": 6,
    "REFUNDED": 7,
    "PARTIALLY_REFUNDED": 8,
    "INIT": 9,
    "RECHARGE_UNKNOWN": 10,
    "RECHARGE_IN_PROCESS": 11,
  }

class OrderSource:
  WEBSITE = 1
  STORE = 2
  AMAZON = 3
  HOMESHOP18 = 4
  NAAPTOL = 5
  EBAY = 6
  SNAPDEAL = 7
  FLIPKART = 8
  MOBILESITE = 9
  JUNGLEE = 10

  _VALUES_TO_NAMES = {
    1: "WEBSITE",
    2: "STORE",
    3: "AMAZON",
    4: "HOMESHOP18",
    5: "NAAPTOL",
    6: "EBAY",
    7: "SNAPDEAL",
    8: "FLIPKART",
    9: "MOBILESITE",
    10: "JUNGLEE",
  }

  _NAMES_TO_VALUES = {
    "WEBSITE": 1,
    "STORE": 2,
    "AMAZON": 3,
    "HOMESHOP18": 4,
    "NAAPTOL": 5,
    "EBAY": 6,
    "SNAPDEAL": 7,
    "FLIPKART": 8,
    "MOBILESITE": 9,
    "JUNGLEE": 10,
  }

class RechargeMode:
  SYNC = 1
  ASYNC = 2

  _VALUES_TO_NAMES = {
    1: "SYNC",
    2: "ASYNC",
  }

  _NAMES_TO_VALUES = {
    "SYNC": 1,
    "ASYNC": 2,
  }

class WalletSource:
  RECHARGE = 1
  PHYSICAL = 2
  DTR = 3

  _VALUES_TO_NAMES = {
    1: "RECHARGE",
    2: "PHYSICAL",
    3: "DTR",
  }

  _NAMES_TO_VALUES = {
    "RECHARGE": 1,
    "PHYSICAL": 2,
    "DTR": 3,
  }

class EmiChargeType:
  FIXED = 1
  PERCENTAGE = 2

  _VALUES_TO_NAMES = {
    1: "FIXED",
    2: "PERCENTAGE",
  }

  _NAMES_TO_VALUES = {
    "FIXED": 1,
    "PERCENTAGE": 2,
  }

class PayMethod:
  CASH = 1
  CARD = 2
  CHEQUE = 3

  _VALUES_TO_NAMES = {
    1: "CASH",
    2: "CARD",
    3: "CHEQUE",
  }

  _NAMES_TO_VALUES = {
    "CASH": 1,
    "CARD": 2,
    "CHEQUE": 3,
  }

class StorePaymentStatus:
  ADV_RECEIVED = 1
  ADV_REFUNDED = 2
  FULL_PAY_RECEIVED = 3
  REFUNDED = 4
  REFUND_REQUESTED = 5
  REFUND_INITIATED = 6

  _VALUES_TO_NAMES = {
    1: "ADV_RECEIVED",
    2: "ADV_REFUNDED",
    3: "FULL_PAY_RECEIVED",
    4: "REFUNDED",
    5: "REFUND_REQUESTED",
    6: "REFUND_INITIATED",
  }

  _NAMES_TO_VALUES = {
    "ADV_RECEIVED": 1,
    "ADV_REFUNDED": 2,
    "FULL_PAY_RECEIVED": 3,
    "REFUNDED": 4,
    "REFUND_REQUESTED": 5,
    "REFUND_INITIATED": 6,
  }

class CreditTxnType:
  BLOCKED = 0
  BLOCKED_REVERSED = 1
  LOAN = 2
  LOAN_CANCELLED = 3
  PAID = 4
  DEFAULTED = 5
  CORRECTION = 6

  _VALUES_TO_NAMES = {
    0: "BLOCKED",
    1: "BLOCKED_REVERSED",
    2: "LOAN",
    3: "LOAN_CANCELLED",
    4: "PAID",
    5: "DEFAULTED",
    6: "CORRECTION",
  }

  _NAMES_TO_VALUES = {
    "BLOCKED": 0,
    "BLOCKED_REVERSED": 1,
    "LOAN": 2,
    "LOAN_CANCELLED": 3,
    "PAID": 4,
    "DEFAULTED": 5,
    "CORRECTION": 6,
  }

class ReturnAction:
  REPLACEMENT = 0
  REFUND = 1

  _VALUES_TO_NAMES = {
    0: "REPLACEMENT",
    1: "REFUND",
  }

  _NAMES_TO_VALUES = {
    "REPLACEMENT": 0,
    "REFUND": 1,
  }

class ReturnPickupType:
  NOW = 0
  LATER = 1
  NOT_REQUIRED = 2

  _VALUES_TO_NAMES = {
    0: "NOW",
    1: "LATER",
    2: "NOT_REQUIRED",
  }

  _NAMES_TO_VALUES = {
    "NOW": 0,
    "LATER": 1,
    "NOT_REQUIRED": 2,
  }

class RefundType:
  INIT = 0
  CHEQUE = 1
  WALLET = 2
  COUPON = 3
  GATEWAY = 4
  REPLACEMENT = 5

  _VALUES_TO_NAMES = {
    0: "INIT",
    1: "CHEQUE",
    2: "WALLET",
    3: "COUPON",
    4: "GATEWAY",
    5: "REPLACEMENT",
  }

  _NAMES_TO_VALUES = {
    "INIT": 0,
    "CHEQUE": 1,
    "WALLET": 2,
    "COUPON": 3,
    "GATEWAY": 4,
    "REPLACEMENT": 5,
  }

class ReplacementShippingType:
  IMMEDIATE = 0
  LATER = 1

  _VALUES_TO_NAMES = {
    0: "IMMEDIATE",
    1: "LATER",
  }

  _NAMES_TO_VALUES = {
    "IMMEDIATE": 0,
    "LATER": 1,
  }

class ReturnTxnPickupStatus:
  PENDING = 0
  PICKUP_REQUESTED = 1
  PICKUP_CONFIRMED = 2
  PICKUP_SCHEDULED = 3
  PICKUP_IN_TRANSIT = 4
  PICKUP_RECEIVED = 5

  _VALUES_TO_NAMES = {
    0: "PENDING",
    1: "PICKUP_REQUESTED",
    2: "PICKUP_CONFIRMED",
    3: "PICKUP_SCHEDULED",
    4: "PICKUP_IN_TRANSIT",
    5: "PICKUP_RECEIVED",
  }

  _NAMES_TO_VALUES = {
    "PENDING": 0,
    "PICKUP_REQUESTED": 1,
    "PICKUP_CONFIRMED": 2,
    "PICKUP_SCHEDULED": 3,
    "PICKUP_IN_TRANSIT": 4,
    "PICKUP_RECEIVED": 5,
  }

class ReceivedReturnType:
  PRESTINE = 0
  DAMAGED = 1
  LOST_IN_TRANSIT = 2

  _VALUES_TO_NAMES = {
    0: "PRESTINE",
    1: "DAMAGED",
    2: "LOST_IN_TRANSIT",
  }

  _NAMES_TO_VALUES = {
    "PRESTINE": 0,
    "DAMAGED": 1,
    "LOST_IN_TRANSIT": 2,
  }

class ReturnTxnResolutionStatus:
  PENDING = 0
  AWAITING_PICKUP = 1
  QUALITY_CHECK = 2
  REPLACEMENT_ORDER_CREATED = 3
  REPLACEMENT_DONE = 4
  REFUND_IN_PROCESS = 5
  REFUND_DONE = 6
  CLOSED = 7

  _VALUES_TO_NAMES = {
    0: "PENDING",
    1: "AWAITING_PICKUP",
    2: "QUALITY_CHECK",
    3: "REPLACEMENT_ORDER_CREATED",
    4: "REPLACEMENT_DONE",
    5: "REFUND_IN_PROCESS",
    6: "REFUND_DONE",
    7: "CLOSED",
  }

  _NAMES_TO_VALUES = {
    "PENDING": 0,
    "AWAITING_PICKUP": 1,
    "QUALITY_CHECK": 2,
    "REPLACEMENT_ORDER_CREATED": 3,
    "REPLACEMENT_DONE": 4,
    "REFUND_IN_PROCESS": 5,
    "REFUND_DONE": 6,
    "CLOSED": 7,
  }

class ReturnTransactionStatus:
  INITIATED = 0
  AUTHORIZED = 1
  INPROCESS = 2
  REJECTED = 3
  PROCESSED = 4
  COMPLETED = 5
  CLOSED = 6

  _VALUES_TO_NAMES = {
    0: "INITIATED",
    1: "AUTHORIZED",
    2: "INPROCESS",
    3: "REJECTED",
    4: "PROCESSED",
    5: "COMPLETED",
    6: "CLOSED",
  }

  _NAMES_TO_VALUES = {
    "INITIATED": 0,
    "AUTHORIZED": 1,
    "INPROCESS": 2,
    "REJECTED": 3,
    "PROCESSED": 4,
    "COMPLETED": 5,
    "CLOSED": 6,
  }


class LineItem:
  """
  Attributes:
   - id
   - item_id
   - productGroup
   - brand
   - model_number
   - color
   - model_name
   - extra_info
   - quantity
   - mrp
   - unit_price
   - unit_weight
   - total_price
   - transfer_price
   - total_weight
   - serial_number
   - item_number
   - dealText
   - warrantry_expiry_timestamp
   - vatRate
   - nlc
   - logisticsCost
   - codCollectionCharges
   - returnQty
   - damaged_expiry_timestamp
   - igstRate
   - cgstRate
   - sgstRate
   - hsnCode
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'item_id', None, None, ), # 2
    (3, TType.STRING, 'productGroup', None, None, ), # 3
    (4, TType.STRING, 'brand', None, None, ), # 4
    (5, TType.STRING, 'model_number', None, None, ), # 5
    (6, TType.STRING, 'color', None, None, ), # 6
    (7, TType.STRING, 'model_name', None, None, ), # 7
    (8, TType.STRING, 'extra_info', None, None, ), # 8
    (9, TType.DOUBLE, 'quantity', None, None, ), # 9
    (10, TType.DOUBLE, 'mrp', None, None, ), # 10
    (11, TType.DOUBLE, 'unit_price', None, None, ), # 11
    (12, TType.DOUBLE, 'unit_weight', None, None, ), # 12
    (13, TType.DOUBLE, 'total_price', None, None, ), # 13
    (14, TType.DOUBLE, 'transfer_price', None, None, ), # 14
    (15, TType.DOUBLE, 'total_weight', None, None, ), # 15
    (16, TType.STRING, 'serial_number', None, None, ), # 16
    (17, TType.STRING, 'item_number', None, None, ), # 17
    (18, TType.STRING, 'dealText', None, None, ), # 18
    (19, TType.I64, 'warrantry_expiry_timestamp', None, None, ), # 19
    (20, TType.DOUBLE, 'vatRate', None, None, ), # 20
    (21, TType.DOUBLE, 'nlc', None, None, ), # 21
    (22, TType.DOUBLE, 'logisticsCost', None, None, ), # 22
    (23, TType.DOUBLE, 'codCollectionCharges', None, None, ), # 23
    (24, TType.DOUBLE, 'returnQty', None, None, ), # 24
    (25, TType.I64, 'damaged_expiry_timestamp', None, None, ), # 25
    (26, TType.DOUBLE, 'igstRate', None, None, ), # 26
    (27, TType.DOUBLE, 'cgstRate', None, None, ), # 27
    (28, TType.DOUBLE, 'sgstRate', None, None, ), # 28
    (29, TType.STRING, 'hsnCode', None, None, ), # 29
  )

  def __init__(self, id=None, item_id=None, productGroup=None, brand=None, model_number=None, color=None, model_name=None, extra_info=None, quantity=None, mrp=None, unit_price=None, unit_weight=None, total_price=None, transfer_price=None, total_weight=None, serial_number=None, item_number=None, dealText=None, warrantry_expiry_timestamp=None, vatRate=None, nlc=None, logisticsCost=None, codCollectionCharges=None, returnQty=None, damaged_expiry_timestamp=None, igstRate=None, cgstRate=None, sgstRate=None, hsnCode=None,):
    self.id = id
    self.item_id = item_id
    self.productGroup = productGroup
    self.brand = brand
    self.model_number = model_number
    self.color = color
    self.model_name = model_name
    self.extra_info = extra_info
    self.quantity = quantity
    self.mrp = mrp
    self.unit_price = unit_price
    self.unit_weight = unit_weight
    self.total_price = total_price
    self.transfer_price = transfer_price
    self.total_weight = total_weight
    self.serial_number = serial_number
    self.item_number = item_number
    self.dealText = dealText
    self.warrantry_expiry_timestamp = warrantry_expiry_timestamp
    self.vatRate = vatRate
    self.nlc = nlc
    self.logisticsCost = logisticsCost
    self.codCollectionCharges = codCollectionCharges
    self.returnQty = returnQty
    self.damaged_expiry_timestamp = damaged_expiry_timestamp
    self.igstRate = igstRate
    self.cgstRate = cgstRate
    self.sgstRate = sgstRate
    self.hsnCode = hsnCode

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.item_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.productGroup = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.brand = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.model_number = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.color = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.model_name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.extra_info = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.DOUBLE:
          self.quantity = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.DOUBLE:
          self.mrp = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.DOUBLE:
          self.unit_price = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.DOUBLE:
          self.unit_weight = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.DOUBLE:
          self.total_price = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.DOUBLE:
          self.transfer_price = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.DOUBLE:
          self.total_weight = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRING:
          self.serial_number = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.STRING:
          self.item_number = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.STRING:
          self.dealText = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.I64:
          self.warrantry_expiry_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 20:
        if ftype == TType.DOUBLE:
          self.vatRate = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 21:
        if ftype == TType.DOUBLE:
          self.nlc = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 22:
        if ftype == TType.DOUBLE:
          self.logisticsCost = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 23:
        if ftype == TType.DOUBLE:
          self.codCollectionCharges = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 24:
        if ftype == TType.DOUBLE:
          self.returnQty = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 25:
        if ftype == TType.I64:
          self.damaged_expiry_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 26:
        if ftype == TType.DOUBLE:
          self.igstRate = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 27:
        if ftype == TType.DOUBLE:
          self.cgstRate = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 28:
        if ftype == TType.DOUBLE:
          self.sgstRate = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 29:
        if ftype == TType.STRING:
          self.hsnCode = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('LineItem')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.item_id is not None:
      oprot.writeFieldBegin('item_id', TType.I64, 2)
      oprot.writeI64(self.item_id)
      oprot.writeFieldEnd()
    if self.productGroup is not None:
      oprot.writeFieldBegin('productGroup', TType.STRING, 3)
      oprot.writeString(self.productGroup)
      oprot.writeFieldEnd()
    if self.brand is not None:
      oprot.writeFieldBegin('brand', TType.STRING, 4)
      oprot.writeString(self.brand)
      oprot.writeFieldEnd()
    if self.model_number is not None:
      oprot.writeFieldBegin('model_number', TType.STRING, 5)
      oprot.writeString(self.model_number)
      oprot.writeFieldEnd()
    if self.color is not None:
      oprot.writeFieldBegin('color', TType.STRING, 6)
      oprot.writeString(self.color)
      oprot.writeFieldEnd()
    if self.model_name is not None:
      oprot.writeFieldBegin('model_name', TType.STRING, 7)
      oprot.writeString(self.model_name)
      oprot.writeFieldEnd()
    if self.extra_info is not None:
      oprot.writeFieldBegin('extra_info', TType.STRING, 8)
      oprot.writeString(self.extra_info)
      oprot.writeFieldEnd()
    if self.quantity is not None:
      oprot.writeFieldBegin('quantity', TType.DOUBLE, 9)
      oprot.writeDouble(self.quantity)
      oprot.writeFieldEnd()
    if self.mrp is not None:
      oprot.writeFieldBegin('mrp', TType.DOUBLE, 10)
      oprot.writeDouble(self.mrp)
      oprot.writeFieldEnd()
    if self.unit_price is not None:
      oprot.writeFieldBegin('unit_price', TType.DOUBLE, 11)
      oprot.writeDouble(self.unit_price)
      oprot.writeFieldEnd()
    if self.unit_weight is not None:
      oprot.writeFieldBegin('unit_weight', TType.DOUBLE, 12)
      oprot.writeDouble(self.unit_weight)
      oprot.writeFieldEnd()
    if self.total_price is not None:
      oprot.writeFieldBegin('total_price', TType.DOUBLE, 13)
      oprot.writeDouble(self.total_price)
      oprot.writeFieldEnd()
    if self.transfer_price is not None:
      oprot.writeFieldBegin('transfer_price', TType.DOUBLE, 14)
      oprot.writeDouble(self.transfer_price)
      oprot.writeFieldEnd()
    if self.total_weight is not None:
      oprot.writeFieldBegin('total_weight', TType.DOUBLE, 15)
      oprot.writeDouble(self.total_weight)
      oprot.writeFieldEnd()
    if self.serial_number is not None:
      oprot.writeFieldBegin('serial_number', TType.STRING, 16)
      oprot.writeString(self.serial_number)
      oprot.writeFieldEnd()
    if self.item_number is not None:
      oprot.writeFieldBegin('item_number', TType.STRING, 17)
      oprot.writeString(self.item_number)
      oprot.writeFieldEnd()
    if self.dealText is not None:
      oprot.writeFieldBegin('dealText', TType.STRING, 18)
      oprot.writeString(self.dealText)
      oprot.writeFieldEnd()
    if self.warrantry_expiry_timestamp is not None:
      oprot.writeFieldBegin('warrantry_expiry_timestamp', TType.I64, 19)
      oprot.writeI64(self.warrantry_expiry_timestamp)
      oprot.writeFieldEnd()
    if self.vatRate is not None:
      oprot.writeFieldBegin('vatRate', TType.DOUBLE, 20)
      oprot.writeDouble(self.vatRate)
      oprot.writeFieldEnd()
    if self.nlc is not None:
      oprot.writeFieldBegin('nlc', TType.DOUBLE, 21)
      oprot.writeDouble(self.nlc)
      oprot.writeFieldEnd()
    if self.logisticsCost is not None:
      oprot.writeFieldBegin('logisticsCost', TType.DOUBLE, 22)
      oprot.writeDouble(self.logisticsCost)
      oprot.writeFieldEnd()
    if self.codCollectionCharges is not None:
      oprot.writeFieldBegin('codCollectionCharges', TType.DOUBLE, 23)
      oprot.writeDouble(self.codCollectionCharges)
      oprot.writeFieldEnd()
    if self.returnQty is not None:
      oprot.writeFieldBegin('returnQty', TType.DOUBLE, 24)
      oprot.writeDouble(self.returnQty)
      oprot.writeFieldEnd()
    if self.damaged_expiry_timestamp is not None:
      oprot.writeFieldBegin('damaged_expiry_timestamp', TType.I64, 25)
      oprot.writeI64(self.damaged_expiry_timestamp)
      oprot.writeFieldEnd()
    if self.igstRate is not None:
      oprot.writeFieldBegin('igstRate', TType.DOUBLE, 26)
      oprot.writeDouble(self.igstRate)
      oprot.writeFieldEnd()
    if self.cgstRate is not None:
      oprot.writeFieldBegin('cgstRate', TType.DOUBLE, 27)
      oprot.writeDouble(self.cgstRate)
      oprot.writeFieldEnd()
    if self.sgstRate is not None:
      oprot.writeFieldBegin('sgstRate', TType.DOUBLE, 28)
      oprot.writeDouble(self.sgstRate)
      oprot.writeFieldEnd()
    if self.hsnCode is not None:
      oprot.writeFieldBegin('hsnCode', TType.STRING, 29)
      oprot.writeString(self.hsnCode)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class Order:
  """
  Attributes:
   - id
   - warehouse_id
   - lineitems:         item info
  *
   - logistics_provider_id:   logistics info
  *
   - airwaybill_no
   - tracking_id
   - expected_delivery_time
   - customer_id:   customer info
  *
   - customer_name
   - customer_mobilenumber
   - customer_pincode
   - customer_address1
   - customer_address2
   - customer_email
   - customer_city
   - customer_state
   - status:    status and misc info
  *
   - statusDescription
   - total_amount
   - total_weight
   - invoice_number:    billing info
  *
   - billed_by
   - created_timestamp:         timestamps
  *
   - accepted_timestamp
   - billing_timestamp
   - shipping_timestamp
   - pickup_timestamp
   - delivery_timestamp
   - outofstock_timestamp
   - jacket_number
   - receiver
   - batchNo
   - serialNo
   - doaFlag
   - pickupRequestNo
   - transactionId
   - purchaseOrderNo
   - cod
   - delayReason
   - promised_delivery_time
   - expected_shipping_time
   - verification_timestamp
   - promised_shipping_time
   - reship_timestamp
   - refund_timestamp
   - new_order_id
   - previousStatus
   - vendorId
   - doa_auth_timestamp
   - delayReasonText
   - refundReason
   - purchaseOrderId
   - doa_logistics_provider_id
   - originalOrderId
   - fulfilmentWarehouseId
   - vendorPaid
   - received_return_timestamp
   - first_attempt_timestamp
   - orderType
   - pickupStoreId
   - logisticsCod
   - gvAmount
   - otg
   - courier_delivery_time
   - insurer
   - insuranceAmount
   - dob
   - guardianName
   - freebieItemId
   - source
   - advanceAmount
   - storeId
   - productCondition
   - dataProtectionInsurer
   - dataProtectionAmount
   - taxType
   - logisticsTransactionId
   - shippingCost
   - codCharges
   - seller_id
   - warehouse_address_id
   - wallet_amount
   - net_payable_amount
   - shippingRefund
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'warehouse_id', None, None, ), # 2
    (3, TType.LIST, 'lineitems', (TType.STRUCT,(LineItem, LineItem.thrift_spec)), None, ), # 3
    (4, TType.I64, 'logistics_provider_id', None, None, ), # 4
    (5, TType.STRING, 'airwaybill_no', None, None, ), # 5
    (6, TType.STRING, 'tracking_id', None, None, ), # 6
    (7, TType.I64, 'expected_delivery_time', None, None, ), # 7
    (8, TType.I64, 'customer_id', None, None, ), # 8
    (9, TType.STRING, 'customer_name', None, None, ), # 9
    (10, TType.STRING, 'customer_mobilenumber', None, None, ), # 10
    (11, TType.STRING, 'customer_pincode', None, None, ), # 11
    (12, TType.STRING, 'customer_address1', None, None, ), # 12
    (13, TType.STRING, 'customer_address2', None, None, ), # 13
    (14, TType.STRING, 'customer_email', None, None, ), # 14
    (15, TType.STRING, 'customer_city', None, None, ), # 15
    (16, TType.STRING, 'customer_state', None, None, ), # 16
    (17, TType.I32, 'status', None, None, ), # 17
    (18, TType.STRING, 'statusDescription', None, None, ), # 18
    (19, TType.DOUBLE, 'total_amount', None, None, ), # 19
    (20, TType.DOUBLE, 'total_weight', None, None, ), # 20
    (21, TType.STRING, 'invoice_number', None, None, ), # 21
    (22, TType.STRING, 'billed_by', None, None, ), # 22
    (23, TType.I64, 'created_timestamp', None, None, ), # 23
    (24, TType.I64, 'accepted_timestamp', None, None, ), # 24
    (25, TType.I64, 'billing_timestamp', None, None, ), # 25
    (26, TType.I64, 'shipping_timestamp', None, None, ), # 26
    (27, TType.I64, 'pickup_timestamp', None, None, ), # 27
    (28, TType.I64, 'delivery_timestamp', None, None, ), # 28
    (29, TType.I64, 'outofstock_timestamp', None, None, ), # 29
    (30, TType.I64, 'jacket_number', None, None, ), # 30
    (31, TType.STRING, 'receiver', None, None, ), # 31
    (32, TType.I64, 'batchNo', None, None, ), # 32
    (33, TType.I64, 'serialNo', None, None, ), # 33
    (34, TType.BOOL, 'doaFlag', None, None, ), # 34
    (35, TType.STRING, 'pickupRequestNo', None, None, ), # 35
    (36, TType.I64, 'transactionId', None, None, ), # 36
    (37, TType.STRING, 'purchaseOrderNo', None, None, ), # 37
    (38, TType.BOOL, 'cod', None, None, ), # 38
    (39, TType.I32, 'delayReason', None, None, ), # 39
    (40, TType.I64, 'promised_delivery_time', None, None, ), # 40
    (41, TType.I64, 'expected_shipping_time', None, None, ), # 41
    (42, TType.I64, 'verification_timestamp', None, None, ), # 42
    (43, TType.I64, 'promised_shipping_time', None, None, ), # 43
    (44, TType.I64, 'reship_timestamp', None, None, ), # 44
    (45, TType.I64, 'refund_timestamp', None, None, ), # 45
    (46, TType.I64, 'new_order_id', None, None, ), # 46
    (47, TType.I32, 'previousStatus', None, None, ), # 47
    (48, TType.I64, 'vendorId', None, None, ), # 48
    (49, TType.I64, 'doa_auth_timestamp', None, None, ), # 49
    (50, TType.STRING, 'delayReasonText', None, None, ), # 50
    (51, TType.STRING, 'refundReason', None, None, ), # 51
    (52, TType.I64, 'purchaseOrderId', None, None, ), # 52
    (53, TType.I64, 'doa_logistics_provider_id', None, None, ), # 53
    (54, TType.I64, 'originalOrderId', None, None, ), # 54
    (55, TType.I64, 'fulfilmentWarehouseId', None, None, ), # 55
    (56, TType.BOOL, 'vendorPaid', None, None, ), # 56
    (57, TType.I64, 'received_return_timestamp', None, None, ), # 57
    (58, TType.I64, 'first_attempt_timestamp', None, None, ), # 58
    (59, TType.I32, 'orderType', None, None, ), # 59
    (60, TType.I64, 'pickupStoreId', None, None, ), # 60
    (61, TType.BOOL, 'logisticsCod', None, None, ), # 61
    (62, TType.I64, 'gvAmount', None, None, ), # 62
    (63, TType.BOOL, 'otg', None, None, ), # 63
    (64, TType.I64, 'courier_delivery_time', None, None, ), # 64
    (65, TType.I64, 'insurer', None, None, ), # 65
    (66, TType.DOUBLE, 'insuranceAmount', None, None, ), # 66
    (67, TType.STRING, 'dob', None, None, ), # 67
    (68, TType.STRING, 'guardianName', None, None, ), # 68
    (69, TType.I64, 'freebieItemId', None, None, ), # 69
    (70, TType.I64, 'source', None, None, ), # 70
    (71, TType.DOUBLE, 'advanceAmount', None, None, ), # 71
    (72, TType.I64, 'storeId', None, None, ), # 72
    (73, TType.I32, 'productCondition', None, None, ), # 73
    (74, TType.I64, 'dataProtectionInsurer', None, None, ), # 74
    (75, TType.DOUBLE, 'dataProtectionAmount', None, None, ), # 75
    (76, TType.I32, 'taxType', None, None, ), # 76
    (77, TType.STRING, 'logisticsTransactionId', None, None, ), # 77
    (78, TType.DOUBLE, 'shippingCost', None, None, ), # 78
    (79, TType.DOUBLE, 'codCharges', None, None, ), # 79
    (80, TType.I64, 'seller_id', None, None, ), # 80
    (81, TType.I64, 'warehouse_address_id', None, None, ), # 81
    (82, TType.DOUBLE, 'wallet_amount', None, None, ), # 82
    (83, TType.DOUBLE, 'net_payable_amount', None, None, ), # 83
    (84, TType.DOUBLE, 'shippingRefund', None, None, ), # 84
  )

  def __init__(self, id=None, warehouse_id=None, lineitems=None, logistics_provider_id=None, airwaybill_no=None, tracking_id=None, expected_delivery_time=None, customer_id=None, customer_name=None, customer_mobilenumber=None, customer_pincode=None, customer_address1=None, customer_address2=None, customer_email=None, customer_city=None, customer_state=None, status=None, statusDescription=None, total_amount=None, total_weight=None, invoice_number=None, billed_by=None, created_timestamp=None, accepted_timestamp=None, billing_timestamp=None, shipping_timestamp=None, pickup_timestamp=None, delivery_timestamp=None, outofstock_timestamp=None, jacket_number=None, receiver=None, batchNo=None, serialNo=None, doaFlag=None, pickupRequestNo=None, transactionId=None, purchaseOrderNo=None, cod=None, delayReason=None, promised_delivery_time=None, expected_shipping_time=None, verification_timestamp=None, promised_shipping_time=None, reship_timestamp=None, refund_timestamp=None, new_order_id=None, previousStatus=None, vendorId=None, doa_auth_timestamp=None, delayReasonText=None, refundReason=None, purchaseOrderId=None, doa_logistics_provider_id=None, originalOrderId=None, fulfilmentWarehouseId=None, vendorPaid=None, received_return_timestamp=None, first_attempt_timestamp=None, orderType=None, pickupStoreId=None, logisticsCod=None, gvAmount=None, otg=None, courier_delivery_time=None, insurer=None, insuranceAmount=None, dob=None, guardianName=None, freebieItemId=None, source=None, advanceAmount=None, storeId=None, productCondition=None, dataProtectionInsurer=None, dataProtectionAmount=None, taxType=None, logisticsTransactionId=None, shippingCost=None, codCharges=None, seller_id=None, warehouse_address_id=None, wallet_amount=None, net_payable_amount=None, shippingRefund=None,):
    self.id = id
    self.warehouse_id = warehouse_id
    self.lineitems = lineitems
    self.logistics_provider_id = logistics_provider_id
    self.airwaybill_no = airwaybill_no
    self.tracking_id = tracking_id
    self.expected_delivery_time = expected_delivery_time
    self.customer_id = customer_id
    self.customer_name = customer_name
    self.customer_mobilenumber = customer_mobilenumber
    self.customer_pincode = customer_pincode
    self.customer_address1 = customer_address1
    self.customer_address2 = customer_address2
    self.customer_email = customer_email
    self.customer_city = customer_city
    self.customer_state = customer_state
    self.status = status
    self.statusDescription = statusDescription
    self.total_amount = total_amount
    self.total_weight = total_weight
    self.invoice_number = invoice_number
    self.billed_by = billed_by
    self.created_timestamp = created_timestamp
    self.accepted_timestamp = accepted_timestamp
    self.billing_timestamp = billing_timestamp
    self.shipping_timestamp = shipping_timestamp
    self.pickup_timestamp = pickup_timestamp
    self.delivery_timestamp = delivery_timestamp
    self.outofstock_timestamp = outofstock_timestamp
    self.jacket_number = jacket_number
    self.receiver = receiver
    self.batchNo = batchNo
    self.serialNo = serialNo
    self.doaFlag = doaFlag
    self.pickupRequestNo = pickupRequestNo
    self.transactionId = transactionId
    self.purchaseOrderNo = purchaseOrderNo
    self.cod = cod
    self.delayReason = delayReason
    self.promised_delivery_time = promised_delivery_time
    self.expected_shipping_time = expected_shipping_time
    self.verification_timestamp = verification_timestamp
    self.promised_shipping_time = promised_shipping_time
    self.reship_timestamp = reship_timestamp
    self.refund_timestamp = refund_timestamp
    self.new_order_id = new_order_id
    self.previousStatus = previousStatus
    self.vendorId = vendorId
    self.doa_auth_timestamp = doa_auth_timestamp
    self.delayReasonText = delayReasonText
    self.refundReason = refundReason
    self.purchaseOrderId = purchaseOrderId
    self.doa_logistics_provider_id = doa_logistics_provider_id
    self.originalOrderId = originalOrderId
    self.fulfilmentWarehouseId = fulfilmentWarehouseId
    self.vendorPaid = vendorPaid
    self.received_return_timestamp = received_return_timestamp
    self.first_attempt_timestamp = first_attempt_timestamp
    self.orderType = orderType
    self.pickupStoreId = pickupStoreId
    self.logisticsCod = logisticsCod
    self.gvAmount = gvAmount
    self.otg = otg
    self.courier_delivery_time = courier_delivery_time
    self.insurer = insurer
    self.insuranceAmount = insuranceAmount
    self.dob = dob
    self.guardianName = guardianName
    self.freebieItemId = freebieItemId
    self.source = source
    self.advanceAmount = advanceAmount
    self.storeId = storeId
    self.productCondition = productCondition
    self.dataProtectionInsurer = dataProtectionInsurer
    self.dataProtectionAmount = dataProtectionAmount
    self.taxType = taxType
    self.logisticsTransactionId = logisticsTransactionId
    self.shippingCost = shippingCost
    self.codCharges = codCharges
    self.seller_id = seller_id
    self.warehouse_address_id = warehouse_address_id
    self.wallet_amount = wallet_amount
    self.net_payable_amount = net_payable_amount
    self.shippingRefund = shippingRefund

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.warehouse_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.lineitems = []
          (_etype3, _size0) = iprot.readListBegin()
          for _i4 in xrange(_size0):
            _elem5 = LineItem()
            _elem5.read(iprot)
            self.lineitems.append(_elem5)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.logistics_provider_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.airwaybill_no = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.tracking_id = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.expected_delivery_time = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.customer_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.customer_name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.customer_mobilenumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.customer_pincode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.customer_address1 = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.STRING:
          self.customer_address2 = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRING:
          self.customer_email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.STRING:
          self.customer_city = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRING:
          self.customer_state = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.I32:
          self.status = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.STRING:
          self.statusDescription = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.DOUBLE:
          self.total_amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 20:
        if ftype == TType.DOUBLE:
          self.total_weight = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 21:
        if ftype == TType.STRING:
          self.invoice_number = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 22:
        if ftype == TType.STRING:
          self.billed_by = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 23:
        if ftype == TType.I64:
          self.created_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 24:
        if ftype == TType.I64:
          self.accepted_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 25:
        if ftype == TType.I64:
          self.billing_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 26:
        if ftype == TType.I64:
          self.shipping_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 27:
        if ftype == TType.I64:
          self.pickup_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 28:
        if ftype == TType.I64:
          self.delivery_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 29:
        if ftype == TType.I64:
          self.outofstock_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 30:
        if ftype == TType.I64:
          self.jacket_number = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 31:
        if ftype == TType.STRING:
          self.receiver = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 32:
        if ftype == TType.I64:
          self.batchNo = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 33:
        if ftype == TType.I64:
          self.serialNo = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 34:
        if ftype == TType.BOOL:
          self.doaFlag = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 35:
        if ftype == TType.STRING:
          self.pickupRequestNo = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 36:
        if ftype == TType.I64:
          self.transactionId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 37:
        if ftype == TType.STRING:
          self.purchaseOrderNo = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 38:
        if ftype == TType.BOOL:
          self.cod = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 39:
        if ftype == TType.I32:
          self.delayReason = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 40:
        if ftype == TType.I64:
          self.promised_delivery_time = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 41:
        if ftype == TType.I64:
          self.expected_shipping_time = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 42:
        if ftype == TType.I64:
          self.verification_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 43:
        if ftype == TType.I64:
          self.promised_shipping_time = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 44:
        if ftype == TType.I64:
          self.reship_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 45:
        if ftype == TType.I64:
          self.refund_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 46:
        if ftype == TType.I64:
          self.new_order_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 47:
        if ftype == TType.I32:
          self.previousStatus = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 48:
        if ftype == TType.I64:
          self.vendorId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 49:
        if ftype == TType.I64:
          self.doa_auth_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 50:
        if ftype == TType.STRING:
          self.delayReasonText = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 51:
        if ftype == TType.STRING:
          self.refundReason = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 52:
        if ftype == TType.I64:
          self.purchaseOrderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 53:
        if ftype == TType.I64:
          self.doa_logistics_provider_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 54:
        if ftype == TType.I64:
          self.originalOrderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 55:
        if ftype == TType.I64:
          self.fulfilmentWarehouseId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 56:
        if ftype == TType.BOOL:
          self.vendorPaid = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 57:
        if ftype == TType.I64:
          self.received_return_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 58:
        if ftype == TType.I64:
          self.first_attempt_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 59:
        if ftype == TType.I32:
          self.orderType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 60:
        if ftype == TType.I64:
          self.pickupStoreId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 61:
        if ftype == TType.BOOL:
          self.logisticsCod = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 62:
        if ftype == TType.I64:
          self.gvAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 63:
        if ftype == TType.BOOL:
          self.otg = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 64:
        if ftype == TType.I64:
          self.courier_delivery_time = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 65:
        if ftype == TType.I64:
          self.insurer = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 66:
        if ftype == TType.DOUBLE:
          self.insuranceAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 67:
        if ftype == TType.STRING:
          self.dob = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 68:
        if ftype == TType.STRING:
          self.guardianName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 69:
        if ftype == TType.I64:
          self.freebieItemId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 70:
        if ftype == TType.I64:
          self.source = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 71:
        if ftype == TType.DOUBLE:
          self.advanceAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 72:
        if ftype == TType.I64:
          self.storeId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 73:
        if ftype == TType.I32:
          self.productCondition = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 74:
        if ftype == TType.I64:
          self.dataProtectionInsurer = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 75:
        if ftype == TType.DOUBLE:
          self.dataProtectionAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 76:
        if ftype == TType.I32:
          self.taxType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 77:
        if ftype == TType.STRING:
          self.logisticsTransactionId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 78:
        if ftype == TType.DOUBLE:
          self.shippingCost = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 79:
        if ftype == TType.DOUBLE:
          self.codCharges = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 80:
        if ftype == TType.I64:
          self.seller_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 81:
        if ftype == TType.I64:
          self.warehouse_address_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 82:
        if ftype == TType.DOUBLE:
          self.wallet_amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 83:
        if ftype == TType.DOUBLE:
          self.net_payable_amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 84:
        if ftype == TType.DOUBLE:
          self.shippingRefund = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('Order')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.warehouse_id is not None:
      oprot.writeFieldBegin('warehouse_id', TType.I64, 2)
      oprot.writeI64(self.warehouse_id)
      oprot.writeFieldEnd()
    if self.lineitems is not None:
      oprot.writeFieldBegin('lineitems', TType.LIST, 3)
      oprot.writeListBegin(TType.STRUCT, len(self.lineitems))
      for iter6 in self.lineitems:
        iter6.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.logistics_provider_id is not None:
      oprot.writeFieldBegin('logistics_provider_id', TType.I64, 4)
      oprot.writeI64(self.logistics_provider_id)
      oprot.writeFieldEnd()
    if self.airwaybill_no is not None:
      oprot.writeFieldBegin('airwaybill_no', TType.STRING, 5)
      oprot.writeString(self.airwaybill_no)
      oprot.writeFieldEnd()
    if self.tracking_id is not None:
      oprot.writeFieldBegin('tracking_id', TType.STRING, 6)
      oprot.writeString(self.tracking_id)
      oprot.writeFieldEnd()
    if self.expected_delivery_time is not None:
      oprot.writeFieldBegin('expected_delivery_time', TType.I64, 7)
      oprot.writeI64(self.expected_delivery_time)
      oprot.writeFieldEnd()
    if self.customer_id is not None:
      oprot.writeFieldBegin('customer_id', TType.I64, 8)
      oprot.writeI64(self.customer_id)
      oprot.writeFieldEnd()
    if self.customer_name is not None:
      oprot.writeFieldBegin('customer_name', TType.STRING, 9)
      oprot.writeString(self.customer_name)
      oprot.writeFieldEnd()
    if self.customer_mobilenumber is not None:
      oprot.writeFieldBegin('customer_mobilenumber', TType.STRING, 10)
      oprot.writeString(self.customer_mobilenumber)
      oprot.writeFieldEnd()
    if self.customer_pincode is not None:
      oprot.writeFieldBegin('customer_pincode', TType.STRING, 11)
      oprot.writeString(self.customer_pincode)
      oprot.writeFieldEnd()
    if self.customer_address1 is not None:
      oprot.writeFieldBegin('customer_address1', TType.STRING, 12)
      oprot.writeString(self.customer_address1)
      oprot.writeFieldEnd()
    if self.customer_address2 is not None:
      oprot.writeFieldBegin('customer_address2', TType.STRING, 13)
      oprot.writeString(self.customer_address2)
      oprot.writeFieldEnd()
    if self.customer_email is not None:
      oprot.writeFieldBegin('customer_email', TType.STRING, 14)
      oprot.writeString(self.customer_email)
      oprot.writeFieldEnd()
    if self.customer_city is not None:
      oprot.writeFieldBegin('customer_city', TType.STRING, 15)
      oprot.writeString(self.customer_city)
      oprot.writeFieldEnd()
    if self.customer_state is not None:
      oprot.writeFieldBegin('customer_state', TType.STRING, 16)
      oprot.writeString(self.customer_state)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.I32, 17)
      oprot.writeI32(self.status)
      oprot.writeFieldEnd()
    if self.statusDescription is not None:
      oprot.writeFieldBegin('statusDescription', TType.STRING, 18)
      oprot.writeString(self.statusDescription)
      oprot.writeFieldEnd()
    if self.total_amount is not None:
      oprot.writeFieldBegin('total_amount', TType.DOUBLE, 19)
      oprot.writeDouble(self.total_amount)
      oprot.writeFieldEnd()
    if self.total_weight is not None:
      oprot.writeFieldBegin('total_weight', TType.DOUBLE, 20)
      oprot.writeDouble(self.total_weight)
      oprot.writeFieldEnd()
    if self.invoice_number is not None:
      oprot.writeFieldBegin('invoice_number', TType.STRING, 21)
      oprot.writeString(self.invoice_number)
      oprot.writeFieldEnd()
    if self.billed_by is not None:
      oprot.writeFieldBegin('billed_by', TType.STRING, 22)
      oprot.writeString(self.billed_by)
      oprot.writeFieldEnd()
    if self.created_timestamp is not None:
      oprot.writeFieldBegin('created_timestamp', TType.I64, 23)
      oprot.writeI64(self.created_timestamp)
      oprot.writeFieldEnd()
    if self.accepted_timestamp is not None:
      oprot.writeFieldBegin('accepted_timestamp', TType.I64, 24)
      oprot.writeI64(self.accepted_timestamp)
      oprot.writeFieldEnd()
    if self.billing_timestamp is not None:
      oprot.writeFieldBegin('billing_timestamp', TType.I64, 25)
      oprot.writeI64(self.billing_timestamp)
      oprot.writeFieldEnd()
    if self.shipping_timestamp is not None:
      oprot.writeFieldBegin('shipping_timestamp', TType.I64, 26)
      oprot.writeI64(self.shipping_timestamp)
      oprot.writeFieldEnd()
    if self.pickup_timestamp is not None:
      oprot.writeFieldBegin('pickup_timestamp', TType.I64, 27)
      oprot.writeI64(self.pickup_timestamp)
      oprot.writeFieldEnd()
    if self.delivery_timestamp is not None:
      oprot.writeFieldBegin('delivery_timestamp', TType.I64, 28)
      oprot.writeI64(self.delivery_timestamp)
      oprot.writeFieldEnd()
    if self.outofstock_timestamp is not None:
      oprot.writeFieldBegin('outofstock_timestamp', TType.I64, 29)
      oprot.writeI64(self.outofstock_timestamp)
      oprot.writeFieldEnd()
    if self.jacket_number is not None:
      oprot.writeFieldBegin('jacket_number', TType.I64, 30)
      oprot.writeI64(self.jacket_number)
      oprot.writeFieldEnd()
    if self.receiver is not None:
      oprot.writeFieldBegin('receiver', TType.STRING, 31)
      oprot.writeString(self.receiver)
      oprot.writeFieldEnd()
    if self.batchNo is not None:
      oprot.writeFieldBegin('batchNo', TType.I64, 32)
      oprot.writeI64(self.batchNo)
      oprot.writeFieldEnd()
    if self.serialNo is not None:
      oprot.writeFieldBegin('serialNo', TType.I64, 33)
      oprot.writeI64(self.serialNo)
      oprot.writeFieldEnd()
    if self.doaFlag is not None:
      oprot.writeFieldBegin('doaFlag', TType.BOOL, 34)
      oprot.writeBool(self.doaFlag)
      oprot.writeFieldEnd()
    if self.pickupRequestNo is not None:
      oprot.writeFieldBegin('pickupRequestNo', TType.STRING, 35)
      oprot.writeString(self.pickupRequestNo)
      oprot.writeFieldEnd()
    if self.transactionId is not None:
      oprot.writeFieldBegin('transactionId', TType.I64, 36)
      oprot.writeI64(self.transactionId)
      oprot.writeFieldEnd()
    if self.purchaseOrderNo is not None:
      oprot.writeFieldBegin('purchaseOrderNo', TType.STRING, 37)
      oprot.writeString(self.purchaseOrderNo)
      oprot.writeFieldEnd()
    if self.cod is not None:
      oprot.writeFieldBegin('cod', TType.BOOL, 38)
      oprot.writeBool(self.cod)
      oprot.writeFieldEnd()
    if self.delayReason is not None:
      oprot.writeFieldBegin('delayReason', TType.I32, 39)
      oprot.writeI32(self.delayReason)
      oprot.writeFieldEnd()
    if self.promised_delivery_time is not None:
      oprot.writeFieldBegin('promised_delivery_time', TType.I64, 40)
      oprot.writeI64(self.promised_delivery_time)
      oprot.writeFieldEnd()
    if self.expected_shipping_time is not None:
      oprot.writeFieldBegin('expected_shipping_time', TType.I64, 41)
      oprot.writeI64(self.expected_shipping_time)
      oprot.writeFieldEnd()
    if self.verification_timestamp is not None:
      oprot.writeFieldBegin('verification_timestamp', TType.I64, 42)
      oprot.writeI64(self.verification_timestamp)
      oprot.writeFieldEnd()
    if self.promised_shipping_time is not None:
      oprot.writeFieldBegin('promised_shipping_time', TType.I64, 43)
      oprot.writeI64(self.promised_shipping_time)
      oprot.writeFieldEnd()
    if self.reship_timestamp is not None:
      oprot.writeFieldBegin('reship_timestamp', TType.I64, 44)
      oprot.writeI64(self.reship_timestamp)
      oprot.writeFieldEnd()
    if self.refund_timestamp is not None:
      oprot.writeFieldBegin('refund_timestamp', TType.I64, 45)
      oprot.writeI64(self.refund_timestamp)
      oprot.writeFieldEnd()
    if self.new_order_id is not None:
      oprot.writeFieldBegin('new_order_id', TType.I64, 46)
      oprot.writeI64(self.new_order_id)
      oprot.writeFieldEnd()
    if self.previousStatus is not None:
      oprot.writeFieldBegin('previousStatus', TType.I32, 47)
      oprot.writeI32(self.previousStatus)
      oprot.writeFieldEnd()
    if self.vendorId is not None:
      oprot.writeFieldBegin('vendorId', TType.I64, 48)
      oprot.writeI64(self.vendorId)
      oprot.writeFieldEnd()
    if self.doa_auth_timestamp is not None:
      oprot.writeFieldBegin('doa_auth_timestamp', TType.I64, 49)
      oprot.writeI64(self.doa_auth_timestamp)
      oprot.writeFieldEnd()
    if self.delayReasonText is not None:
      oprot.writeFieldBegin('delayReasonText', TType.STRING, 50)
      oprot.writeString(self.delayReasonText)
      oprot.writeFieldEnd()
    if self.refundReason is not None:
      oprot.writeFieldBegin('refundReason', TType.STRING, 51)
      oprot.writeString(self.refundReason)
      oprot.writeFieldEnd()
    if self.purchaseOrderId is not None:
      oprot.writeFieldBegin('purchaseOrderId', TType.I64, 52)
      oprot.writeI64(self.purchaseOrderId)
      oprot.writeFieldEnd()
    if self.doa_logistics_provider_id is not None:
      oprot.writeFieldBegin('doa_logistics_provider_id', TType.I64, 53)
      oprot.writeI64(self.doa_logistics_provider_id)
      oprot.writeFieldEnd()
    if self.originalOrderId is not None:
      oprot.writeFieldBegin('originalOrderId', TType.I64, 54)
      oprot.writeI64(self.originalOrderId)
      oprot.writeFieldEnd()
    if self.fulfilmentWarehouseId is not None:
      oprot.writeFieldBegin('fulfilmentWarehouseId', TType.I64, 55)
      oprot.writeI64(self.fulfilmentWarehouseId)
      oprot.writeFieldEnd()
    if self.vendorPaid is not None:
      oprot.writeFieldBegin('vendorPaid', TType.BOOL, 56)
      oprot.writeBool(self.vendorPaid)
      oprot.writeFieldEnd()
    if self.received_return_timestamp is not None:
      oprot.writeFieldBegin('received_return_timestamp', TType.I64, 57)
      oprot.writeI64(self.received_return_timestamp)
      oprot.writeFieldEnd()
    if self.first_attempt_timestamp is not None:
      oprot.writeFieldBegin('first_attempt_timestamp', TType.I64, 58)
      oprot.writeI64(self.first_attempt_timestamp)
      oprot.writeFieldEnd()
    if self.orderType is not None:
      oprot.writeFieldBegin('orderType', TType.I32, 59)
      oprot.writeI32(self.orderType)
      oprot.writeFieldEnd()
    if self.pickupStoreId is not None:
      oprot.writeFieldBegin('pickupStoreId', TType.I64, 60)
      oprot.writeI64(self.pickupStoreId)
      oprot.writeFieldEnd()
    if self.logisticsCod is not None:
      oprot.writeFieldBegin('logisticsCod', TType.BOOL, 61)
      oprot.writeBool(self.logisticsCod)
      oprot.writeFieldEnd()
    if self.gvAmount is not None:
      oprot.writeFieldBegin('gvAmount', TType.I64, 62)
      oprot.writeI64(self.gvAmount)
      oprot.writeFieldEnd()
    if self.otg is not None:
      oprot.writeFieldBegin('otg', TType.BOOL, 63)
      oprot.writeBool(self.otg)
      oprot.writeFieldEnd()
    if self.courier_delivery_time is not None:
      oprot.writeFieldBegin('courier_delivery_time', TType.I64, 64)
      oprot.writeI64(self.courier_delivery_time)
      oprot.writeFieldEnd()
    if self.insurer is not None:
      oprot.writeFieldBegin('insurer', TType.I64, 65)
      oprot.writeI64(self.insurer)
      oprot.writeFieldEnd()
    if self.insuranceAmount is not None:
      oprot.writeFieldBegin('insuranceAmount', TType.DOUBLE, 66)
      oprot.writeDouble(self.insuranceAmount)
      oprot.writeFieldEnd()
    if self.dob is not None:
      oprot.writeFieldBegin('dob', TType.STRING, 67)
      oprot.writeString(self.dob)
      oprot.writeFieldEnd()
    if self.guardianName is not None:
      oprot.writeFieldBegin('guardianName', TType.STRING, 68)
      oprot.writeString(self.guardianName)
      oprot.writeFieldEnd()
    if self.freebieItemId is not None:
      oprot.writeFieldBegin('freebieItemId', TType.I64, 69)
      oprot.writeI64(self.freebieItemId)
      oprot.writeFieldEnd()
    if self.source is not None:
      oprot.writeFieldBegin('source', TType.I64, 70)
      oprot.writeI64(self.source)
      oprot.writeFieldEnd()
    if self.advanceAmount is not None:
      oprot.writeFieldBegin('advanceAmount', TType.DOUBLE, 71)
      oprot.writeDouble(self.advanceAmount)
      oprot.writeFieldEnd()
    if self.storeId is not None:
      oprot.writeFieldBegin('storeId', TType.I64, 72)
      oprot.writeI64(self.storeId)
      oprot.writeFieldEnd()
    if self.productCondition is not None:
      oprot.writeFieldBegin('productCondition', TType.I32, 73)
      oprot.writeI32(self.productCondition)
      oprot.writeFieldEnd()
    if self.dataProtectionInsurer is not None:
      oprot.writeFieldBegin('dataProtectionInsurer', TType.I64, 74)
      oprot.writeI64(self.dataProtectionInsurer)
      oprot.writeFieldEnd()
    if self.dataProtectionAmount is not None:
      oprot.writeFieldBegin('dataProtectionAmount', TType.DOUBLE, 75)
      oprot.writeDouble(self.dataProtectionAmount)
      oprot.writeFieldEnd()
    if self.taxType is not None:
      oprot.writeFieldBegin('taxType', TType.I32, 76)
      oprot.writeI32(self.taxType)
      oprot.writeFieldEnd()
    if self.logisticsTransactionId is not None:
      oprot.writeFieldBegin('logisticsTransactionId', TType.STRING, 77)
      oprot.writeString(self.logisticsTransactionId)
      oprot.writeFieldEnd()
    if self.shippingCost is not None:
      oprot.writeFieldBegin('shippingCost', TType.DOUBLE, 78)
      oprot.writeDouble(self.shippingCost)
      oprot.writeFieldEnd()
    if self.codCharges is not None:
      oprot.writeFieldBegin('codCharges', TType.DOUBLE, 79)
      oprot.writeDouble(self.codCharges)
      oprot.writeFieldEnd()
    if self.seller_id is not None:
      oprot.writeFieldBegin('seller_id', TType.I64, 80)
      oprot.writeI64(self.seller_id)
      oprot.writeFieldEnd()
    if self.warehouse_address_id is not None:
      oprot.writeFieldBegin('warehouse_address_id', TType.I64, 81)
      oprot.writeI64(self.warehouse_address_id)
      oprot.writeFieldEnd()
    if self.wallet_amount is not None:
      oprot.writeFieldBegin('wallet_amount', TType.DOUBLE, 82)
      oprot.writeDouble(self.wallet_amount)
      oprot.writeFieldEnd()
    if self.net_payable_amount is not None:
      oprot.writeFieldBegin('net_payable_amount', TType.DOUBLE, 83)
      oprot.writeDouble(self.net_payable_amount)
      oprot.writeFieldEnd()
    if self.shippingRefund is not None:
      oprot.writeFieldBegin('shippingRefund', TType.DOUBLE, 84)
      oprot.writeDouble(self.shippingRefund)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class Attribute:
  """
  Attributes:
   - name
   - value
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'name', None, None, ), # 1
    (2, TType.STRING, 'value', None, None, ), # 2
  )

  def __init__(self, name=None, value=None,):
    self.name = name
    self.value = value

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.value = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('Attribute')
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 1)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.value is not None:
      oprot.writeFieldBegin('value', TType.STRING, 2)
      oprot.writeString(self.value)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class PendingStoreOrder:
  """
  Attributes:
   - id
   - storeId
   - productId
   - pincode
   - name
   - email
   - phone
   - line1
   - line2
   - city
   - state
   - createdOn
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'storeId', None, None, ), # 2
    (3, TType.I64, 'productId', None, None, ), # 3
    (4, TType.STRING, 'pincode', None, None, ), # 4
    (5, TType.STRING, 'name', None, None, ), # 5
    (6, TType.STRING, 'email', None, None, ), # 6
    (7, TType.STRING, 'phone', None, None, ), # 7
    (8, TType.STRING, 'line1', None, None, ), # 8
    (9, TType.STRING, 'line2', None, None, ), # 9
    (10, TType.STRING, 'city', None, None, ), # 10
    (11, TType.STRING, 'state', None, None, ), # 11
    (12, TType.I64, 'createdOn', None, None, ), # 12
  )

  def __init__(self, id=None, storeId=None, productId=None, pincode=None, name=None, email=None, phone=None, line1=None, line2=None, city=None, state=None, createdOn=None,):
    self.id = id
    self.storeId = storeId
    self.productId = productId
    self.pincode = pincode
    self.name = name
    self.email = email
    self.phone = phone
    self.line1 = line1
    self.line2 = line2
    self.city = city
    self.state = state
    self.createdOn = createdOn

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.storeId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.productId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.pincode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.phone = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.line1 = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.line2 = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.city = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.state = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.createdOn = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('PendingStoreOrder')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.storeId is not None:
      oprot.writeFieldBegin('storeId', TType.I64, 2)
      oprot.writeI64(self.storeId)
      oprot.writeFieldEnd()
    if self.productId is not None:
      oprot.writeFieldBegin('productId', TType.I64, 3)
      oprot.writeI64(self.productId)
      oprot.writeFieldEnd()
    if self.pincode is not None:
      oprot.writeFieldBegin('pincode', TType.STRING, 4)
      oprot.writeString(self.pincode)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 5)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.email is not None:
      oprot.writeFieldBegin('email', TType.STRING, 6)
      oprot.writeString(self.email)
      oprot.writeFieldEnd()
    if self.phone is not None:
      oprot.writeFieldBegin('phone', TType.STRING, 7)
      oprot.writeString(self.phone)
      oprot.writeFieldEnd()
    if self.line1 is not None:
      oprot.writeFieldBegin('line1', TType.STRING, 8)
      oprot.writeString(self.line1)
      oprot.writeFieldEnd()
    if self.line2 is not None:
      oprot.writeFieldBegin('line2', TType.STRING, 9)
      oprot.writeString(self.line2)
      oprot.writeFieldEnd()
    if self.city is not None:
      oprot.writeFieldBegin('city', TType.STRING, 10)
      oprot.writeString(self.city)
      oprot.writeFieldEnd()
    if self.state is not None:
      oprot.writeFieldBegin('state', TType.STRING, 11)
      oprot.writeString(self.state)
      oprot.writeFieldEnd()
    if self.createdOn is not None:
      oprot.writeFieldBegin('createdOn', TType.I64, 12)
      oprot.writeI64(self.createdOn)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class OrderStatusAuditTrail:
  """
  Attributes:
   - id
   - orderId
   - status
   - timestamp
   - description
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'orderId', None, None, ), # 2
    (3, TType.I64, 'status', None, None, ), # 3
    (4, TType.I64, 'timestamp', None, None, ), # 4
    (5, TType.I64, 'description', None, None, ), # 5
  )

  def __init__(self, id=None, orderId=None, status=None, timestamp=None, description=None,):
    self.id = id
    self.orderId = orderId
    self.status = status
    self.timestamp = timestamp
    self.description = description

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.status = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.description = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('OrderStatusAuditTrail')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 2)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.I64, 3)
      oprot.writeI64(self.status)
      oprot.writeFieldEnd()
    if self.timestamp is not None:
      oprot.writeFieldBegin('timestamp', TType.I64, 4)
      oprot.writeI64(self.timestamp)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.I64, 5)
      oprot.writeI64(self.description)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class AmazonOrdersToAcknowledge:
  """
  Attributes:
   - amazonOrderId
   - amazonOrderItemId
   - status
   - transaction_id
   - count
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'amazonOrderId', None, None, ), # 1
    (2, TType.STRING, 'amazonOrderItemId', None, None, ), # 2
    (3, TType.STRING, 'status', None, None, ), # 3
    (4, TType.I64, 'transaction_id', None, None, ), # 4
    (5, TType.I32, 'count', None, None, ), # 5
  )

  def __init__(self, amazonOrderId=None, amazonOrderItemId=None, status=None, transaction_id=None, count=None,):
    self.amazonOrderId = amazonOrderId
    self.amazonOrderItemId = amazonOrderItemId
    self.status = status
    self.transaction_id = transaction_id
    self.count = count

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.amazonOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.amazonOrderItemId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.status = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.transaction_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I32:
          self.count = iprot.readI32();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('AmazonOrdersToAcknowledge')
    if self.amazonOrderId is not None:
      oprot.writeFieldBegin('amazonOrderId', TType.STRING, 1)
      oprot.writeString(self.amazonOrderId)
      oprot.writeFieldEnd()
    if self.amazonOrderItemId is not None:
      oprot.writeFieldBegin('amazonOrderItemId', TType.STRING, 2)
      oprot.writeString(self.amazonOrderItemId)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 3)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.transaction_id is not None:
      oprot.writeFieldBegin('transaction_id', TType.I64, 4)
      oprot.writeI64(self.transaction_id)
      oprot.writeFieldEnd()
    if self.count is not None:
      oprot.writeFieldBegin('count', TType.I32, 5)
      oprot.writeI32(self.count)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class SellerInfo:
  """
  Attributes:
   - sellerId
   - organisationName
   - registeredAddress
   - regId
   - cinNumber
   - tin
   - stateId
   - gstin
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'sellerId', None, None, ), # 1
    (2, TType.STRING, 'organisationName', None, None, ), # 2
    (3, TType.STRING, 'registeredAddress', None, None, ), # 3
    (4, TType.STRING, 'regId', None, None, ), # 4
    (5, TType.STRING, 'cinNumber', None, None, ), # 5
    (6, TType.STRING, 'tin', None, None, ), # 6
    (7, TType.I64, 'stateId', None, None, ), # 7
    (8, TType.STRING, 'gstin', None, None, ), # 8
  )

  def __init__(self, sellerId=None, organisationName=None, registeredAddress=None, regId=None, cinNumber=None, tin=None, stateId=None, gstin=None,):
    self.sellerId = sellerId
    self.organisationName = organisationName
    self.registeredAddress = registeredAddress
    self.regId = regId
    self.cinNumber = cinNumber
    self.tin = tin
    self.stateId = stateId
    self.gstin = gstin

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.sellerId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.organisationName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.registeredAddress = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.regId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.cinNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.tin = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.stateId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.gstin = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('SellerInfo')
    if self.sellerId is not None:
      oprot.writeFieldBegin('sellerId', TType.I64, 1)
      oprot.writeI64(self.sellerId)
      oprot.writeFieldEnd()
    if self.organisationName is not None:
      oprot.writeFieldBegin('organisationName', TType.STRING, 2)
      oprot.writeString(self.organisationName)
      oprot.writeFieldEnd()
    if self.registeredAddress is not None:
      oprot.writeFieldBegin('registeredAddress', TType.STRING, 3)
      oprot.writeString(self.registeredAddress)
      oprot.writeFieldEnd()
    if self.regId is not None:
      oprot.writeFieldBegin('regId', TType.STRING, 4)
      oprot.writeString(self.regId)
      oprot.writeFieldEnd()
    if self.cinNumber is not None:
      oprot.writeFieldBegin('cinNumber', TType.STRING, 5)
      oprot.writeString(self.cinNumber)
      oprot.writeFieldEnd()
    if self.tin is not None:
      oprot.writeFieldBegin('tin', TType.STRING, 6)
      oprot.writeString(self.tin)
      oprot.writeFieldEnd()
    if self.stateId is not None:
      oprot.writeFieldBegin('stateId', TType.I64, 7)
      oprot.writeI64(self.stateId)
      oprot.writeFieldEnd()
    if self.gstin is not None:
      oprot.writeFieldBegin('gstin', TType.STRING, 8)
      oprot.writeString(self.gstin)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class WarehouseAddress:
  """
  Attributes:
   - id
   - address
   - pin
   - state_id
   - created
   - contact_number
   - contact_person
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'address', None, None, ), # 2
    (3, TType.STRING, 'pin', None, None, ), # 3
    (4, TType.I64, 'state_id', None, None, ), # 4
    (5, TType.I64, 'created', None, None, ), # 5
    (6, TType.STRING, 'contact_number', None, None, ), # 6
    (7, TType.STRING, 'contact_person', None, None, ), # 7
  )

  def __init__(self, id=None, address=None, pin=None, state_id=None, created=None, contact_number=None, contact_person=None,):
    self.id = id
    self.address = address
    self.pin = pin
    self.state_id = state_id
    self.created = created
    self.contact_number = contact_number
    self.contact_person = contact_person

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.address = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.pin = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.state_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.created = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.contact_number = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.contact_person = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('WarehouseAddress')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.address is not None:
      oprot.writeFieldBegin('address', TType.STRING, 2)
      oprot.writeString(self.address)
      oprot.writeFieldEnd()
    if self.pin is not None:
      oprot.writeFieldBegin('pin', TType.STRING, 3)
      oprot.writeString(self.pin)
      oprot.writeFieldEnd()
    if self.state_id is not None:
      oprot.writeFieldBegin('state_id', TType.I64, 4)
      oprot.writeI64(self.state_id)
      oprot.writeFieldEnd()
    if self.created is not None:
      oprot.writeFieldBegin('created', TType.I64, 5)
      oprot.writeI64(self.created)
      oprot.writeFieldEnd()
    if self.contact_number is not None:
      oprot.writeFieldBegin('contact_number', TType.STRING, 6)
      oprot.writeString(self.contact_number)
      oprot.writeFieldEnd()
    if self.contact_person is not None:
      oprot.writeFieldBegin('contact_person', TType.STRING, 7)
      oprot.writeString(self.contact_person)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class BuyerInfo:
  """
  Attributes:
   - buyerId
   - organisationName
   - registeredAddress
   - regId
   - cinNumber
   - tin
   - addressId
   - buyerAddress
   - stateId
   - gstin
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'buyerId', None, None, ), # 1
    (2, TType.STRING, 'organisationName', None, None, ), # 2
    (3, TType.STRING, 'registeredAddress', None, None, ), # 3
    (4, TType.STRING, 'regId', None, None, ), # 4
    (5, TType.STRING, 'cinNumber', None, None, ), # 5
    (6, TType.STRING, 'tin', None, None, ), # 6
    (7, TType.I64, 'addressId', None, None, ), # 7
    (8, TType.STRUCT, 'buyerAddress', (WarehouseAddress, WarehouseAddress.thrift_spec), None, ), # 8
    (9, TType.I64, 'stateId', None, None, ), # 9
    (10, TType.STRING, 'gstin', None, None, ), # 10
  )

  def __init__(self, buyerId=None, organisationName=None, registeredAddress=None, regId=None, cinNumber=None, tin=None, addressId=None, buyerAddress=None, stateId=None, gstin=None,):
    self.buyerId = buyerId
    self.organisationName = organisationName
    self.registeredAddress = registeredAddress
    self.regId = regId
    self.cinNumber = cinNumber
    self.tin = tin
    self.addressId = addressId
    self.buyerAddress = buyerAddress
    self.stateId = stateId
    self.gstin = gstin

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.buyerId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.organisationName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.registeredAddress = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.regId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.cinNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.tin = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.addressId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRUCT:
          self.buyerAddress = WarehouseAddress()
          self.buyerAddress.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.stateId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.gstin = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('BuyerInfo')
    if self.buyerId is not None:
      oprot.writeFieldBegin('buyerId', TType.I64, 1)
      oprot.writeI64(self.buyerId)
      oprot.writeFieldEnd()
    if self.organisationName is not None:
      oprot.writeFieldBegin('organisationName', TType.STRING, 2)
      oprot.writeString(self.organisationName)
      oprot.writeFieldEnd()
    if self.registeredAddress is not None:
      oprot.writeFieldBegin('registeredAddress', TType.STRING, 3)
      oprot.writeString(self.registeredAddress)
      oprot.writeFieldEnd()
    if self.regId is not None:
      oprot.writeFieldBegin('regId', TType.STRING, 4)
      oprot.writeString(self.regId)
      oprot.writeFieldEnd()
    if self.cinNumber is not None:
      oprot.writeFieldBegin('cinNumber', TType.STRING, 5)
      oprot.writeString(self.cinNumber)
      oprot.writeFieldEnd()
    if self.tin is not None:
      oprot.writeFieldBegin('tin', TType.STRING, 6)
      oprot.writeString(self.tin)
      oprot.writeFieldEnd()
    if self.addressId is not None:
      oprot.writeFieldBegin('addressId', TType.I64, 7)
      oprot.writeI64(self.addressId)
      oprot.writeFieldEnd()
    if self.buyerAddress is not None:
      oprot.writeFieldBegin('buyerAddress', TType.STRUCT, 8)
      self.buyerAddress.write(oprot)
      oprot.writeFieldEnd()
    if self.stateId is not None:
      oprot.writeFieldBegin('stateId', TType.I64, 9)
      oprot.writeI64(self.stateId)
      oprot.writeFieldEnd()
    if self.gstin is not None:
      oprot.writeFieldBegin('gstin', TType.STRING, 10)
      oprot.writeString(self.gstin)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class Transaction:
  """
  Attributes:
   - id
   - orders
   - createdOn
   - transactionStatus
   - statusDescription
   - shoppingCartid
   - customer_id
   - coupon_code
   - sessionSource
   - sessionStartTime
   - firstSource
   - firstSourceTime
   - payment_option
   - totalShippingCost
   - totalCodCharges
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.LIST, 'orders', (TType.STRUCT,(Order, Order.thrift_spec)), None, ), # 2
    (3, TType.I64, 'createdOn', None, None, ), # 3
    (4, TType.I32, 'transactionStatus', None, None, ), # 4
    (5, TType.STRING, 'statusDescription', None, None, ), # 5
    (6, TType.I64, 'shoppingCartid', None, None, ), # 6
    (7, TType.I64, 'customer_id', None, None, ), # 7
    (8, TType.STRING, 'coupon_code', None, None, ), # 8
    (9, TType.STRING, 'sessionSource', None, None, ), # 9
    (10, TType.I64, 'sessionStartTime', None, None, ), # 10
    (11, TType.STRING, 'firstSource', None, None, ), # 11
    (12, TType.I64, 'firstSourceTime', None, None, ), # 12
    (13, TType.I64, 'payment_option', None, None, ), # 13
    (14, TType.DOUBLE, 'totalShippingCost', None, None, ), # 14
    (15, TType.DOUBLE, 'totalCodCharges', None, None, ), # 15
  )

  def __init__(self, id=None, orders=None, createdOn=None, transactionStatus=None, statusDescription=None, shoppingCartid=None, customer_id=None, coupon_code=None, sessionSource=None, sessionStartTime=None, firstSource=None, firstSourceTime=None, payment_option=None, totalShippingCost=None, totalCodCharges=None,):
    self.id = id
    self.orders = orders
    self.createdOn = createdOn
    self.transactionStatus = transactionStatus
    self.statusDescription = statusDescription
    self.shoppingCartid = shoppingCartid
    self.customer_id = customer_id
    self.coupon_code = coupon_code
    self.sessionSource = sessionSource
    self.sessionStartTime = sessionStartTime
    self.firstSource = firstSource
    self.firstSourceTime = firstSourceTime
    self.payment_option = payment_option
    self.totalShippingCost = totalShippingCost
    self.totalCodCharges = totalCodCharges

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.LIST:
          self.orders = []
          (_etype10, _size7) = iprot.readListBegin()
          for _i11 in xrange(_size7):
            _elem12 = Order()
            _elem12.read(iprot)
            self.orders.append(_elem12)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.createdOn = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I32:
          self.transactionStatus = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.statusDescription = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.shoppingCartid = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.customer_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.coupon_code = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.sessionSource = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.sessionStartTime = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.firstSource = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.firstSourceTime = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.payment_option = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.DOUBLE:
          self.totalShippingCost = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.DOUBLE:
          self.totalCodCharges = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('Transaction')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.orders is not None:
      oprot.writeFieldBegin('orders', TType.LIST, 2)
      oprot.writeListBegin(TType.STRUCT, len(self.orders))
      for iter13 in self.orders:
        iter13.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.createdOn is not None:
      oprot.writeFieldBegin('createdOn', TType.I64, 3)
      oprot.writeI64(self.createdOn)
      oprot.writeFieldEnd()
    if self.transactionStatus is not None:
      oprot.writeFieldBegin('transactionStatus', TType.I32, 4)
      oprot.writeI32(self.transactionStatus)
      oprot.writeFieldEnd()
    if self.statusDescription is not None:
      oprot.writeFieldBegin('statusDescription', TType.STRING, 5)
      oprot.writeString(self.statusDescription)
      oprot.writeFieldEnd()
    if self.shoppingCartid is not None:
      oprot.writeFieldBegin('shoppingCartid', TType.I64, 6)
      oprot.writeI64(self.shoppingCartid)
      oprot.writeFieldEnd()
    if self.customer_id is not None:
      oprot.writeFieldBegin('customer_id', TType.I64, 7)
      oprot.writeI64(self.customer_id)
      oprot.writeFieldEnd()
    if self.coupon_code is not None:
      oprot.writeFieldBegin('coupon_code', TType.STRING, 8)
      oprot.writeString(self.coupon_code)
      oprot.writeFieldEnd()
    if self.sessionSource is not None:
      oprot.writeFieldBegin('sessionSource', TType.STRING, 9)
      oprot.writeString(self.sessionSource)
      oprot.writeFieldEnd()
    if self.sessionStartTime is not None:
      oprot.writeFieldBegin('sessionStartTime', TType.I64, 10)
      oprot.writeI64(self.sessionStartTime)
      oprot.writeFieldEnd()
    if self.firstSource is not None:
      oprot.writeFieldBegin('firstSource', TType.STRING, 11)
      oprot.writeString(self.firstSource)
      oprot.writeFieldEnd()
    if self.firstSourceTime is not None:
      oprot.writeFieldBegin('firstSourceTime', TType.I64, 12)
      oprot.writeI64(self.firstSourceTime)
      oprot.writeFieldEnd()
    if self.payment_option is not None:
      oprot.writeFieldBegin('payment_option', TType.I64, 13)
      oprot.writeI64(self.payment_option)
      oprot.writeFieldEnd()
    if self.totalShippingCost is not None:
      oprot.writeFieldBegin('totalShippingCost', TType.DOUBLE, 14)
      oprot.writeDouble(self.totalShippingCost)
      oprot.writeFieldEnd()
    if self.totalCodCharges is not None:
      oprot.writeFieldBegin('totalCodCharges', TType.DOUBLE, 15)
      oprot.writeDouble(self.totalCodCharges)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class WarehouseAddressMapping:
  """
  Attributes:
   - warehouse_id
   - address_id
   - created
   - updated
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'warehouse_id', None, None, ), # 1
    (2, TType.I64, 'address_id', None, None, ), # 2
    (3, TType.I64, 'created', None, None, ), # 3
    (4, TType.I64, 'updated', None, None, ), # 4
  )

  def __init__(self, warehouse_id=None, address_id=None, created=None, updated=None,):
    self.warehouse_id = warehouse_id
    self.address_id = address_id
    self.created = created
    self.updated = updated

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.warehouse_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.address_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.created = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.updated = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('WarehouseAddressMapping')
    if self.warehouse_id is not None:
      oprot.writeFieldBegin('warehouse_id', TType.I64, 1)
      oprot.writeI64(self.warehouse_id)
      oprot.writeFieldEnd()
    if self.address_id is not None:
      oprot.writeFieldBegin('address_id', TType.I64, 2)
      oprot.writeI64(self.address_id)
      oprot.writeFieldEnd()
    if self.created is not None:
      oprot.writeFieldBegin('created', TType.I64, 3)
      oprot.writeI64(self.created)
      oprot.writeFieldEnd()
    if self.updated is not None:
      oprot.writeFieldBegin('updated', TType.I64, 4)
      oprot.writeI64(self.updated)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class Alert:
  """
  Attributes:
   - id
   - type
   - status
   - timestamp
   - description
   - warehouseId
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I32, 'type', None, None, ), # 2
    (3, TType.I64, 'status', None, None, ), # 3
    (4, TType.I64, 'timestamp', None, None, ), # 4
    (5, TType.STRING, 'description', None, None, ), # 5
    (6, TType.I64, 'warehouseId', None, None, ), # 6
  )

  def __init__(self, id=None, type=None, status=None, timestamp=None, description=None, warehouseId=None,):
    self.id = id
    self.type = type
    self.status = status
    self.timestamp = timestamp
    self.description = description
    self.warehouseId = warehouseId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I32:
          self.type = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.status = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.warehouseId = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('Alert')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.type is not None:
      oprot.writeFieldBegin('type', TType.I32, 2)
      oprot.writeI32(self.type)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.I64, 3)
      oprot.writeI64(self.status)
      oprot.writeFieldEnd()
    if self.timestamp is not None:
      oprot.writeFieldBegin('timestamp', TType.I64, 4)
      oprot.writeI64(self.timestamp)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 5)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.warehouseId is not None:
      oprot.writeFieldBegin('warehouseId', TType.I64, 6)
      oprot.writeI64(self.warehouseId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class ReturnOrder:
  """
  Attributes:
   - orderId
   - warehouseId
   - jacketNumber
   - invoiceNumber
   - itemId
   - productGroup
   - brand
   - modelNumber
   - modelName
   - color
   - totalPrice
   - transferPrice
   - processedStatus
   - createdAt
   - processedAt
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.I64, 'warehouseId', None, None, ), # 2
    (3, TType.I64, 'jacketNumber', None, None, ), # 3
    (4, TType.STRING, 'invoiceNumber', None, None, ), # 4
    (5, TType.I64, 'itemId', None, None, ), # 5
    (6, TType.STRING, 'productGroup', None, None, ), # 6
    (7, TType.STRING, 'brand', None, None, ), # 7
    (8, TType.STRING, 'modelNumber', None, None, ), # 8
    (9, TType.STRING, 'modelName', None, None, ), # 9
    (10, TType.STRING, 'color', None, None, ), # 10
    (11, TType.DOUBLE, 'totalPrice', None, None, ), # 11
    (12, TType.DOUBLE, 'transferPrice', None, None, ), # 12
    (13, TType.BOOL, 'processedStatus', None, None, ), # 13
    (14, TType.I64, 'createdAt', None, None, ), # 14
    (15, TType.I64, 'processedAt', None, None, ), # 15
  )

  def __init__(self, orderId=None, warehouseId=None, jacketNumber=None, invoiceNumber=None, itemId=None, productGroup=None, brand=None, modelNumber=None, modelName=None, color=None, totalPrice=None, transferPrice=None, processedStatus=None, createdAt=None, processedAt=None,):
    self.orderId = orderId
    self.warehouseId = warehouseId
    self.jacketNumber = jacketNumber
    self.invoiceNumber = invoiceNumber
    self.itemId = itemId
    self.productGroup = productGroup
    self.brand = brand
    self.modelNumber = modelNumber
    self.modelName = modelName
    self.color = color
    self.totalPrice = totalPrice
    self.transferPrice = transferPrice
    self.processedStatus = processedStatus
    self.createdAt = createdAt
    self.processedAt = processedAt

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.warehouseId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.jacketNumber = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.invoiceNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.itemId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.productGroup = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.brand = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.modelNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.modelName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.color = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.DOUBLE:
          self.totalPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.DOUBLE:
          self.transferPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.BOOL:
          self.processedStatus = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.I64:
          self.createdAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.I64:
          self.processedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('ReturnOrder')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.warehouseId is not None:
      oprot.writeFieldBegin('warehouseId', TType.I64, 2)
      oprot.writeI64(self.warehouseId)
      oprot.writeFieldEnd()
    if self.jacketNumber is not None:
      oprot.writeFieldBegin('jacketNumber', TType.I64, 3)
      oprot.writeI64(self.jacketNumber)
      oprot.writeFieldEnd()
    if self.invoiceNumber is not None:
      oprot.writeFieldBegin('invoiceNumber', TType.STRING, 4)
      oprot.writeString(self.invoiceNumber)
      oprot.writeFieldEnd()
    if self.itemId is not None:
      oprot.writeFieldBegin('itemId', TType.I64, 5)
      oprot.writeI64(self.itemId)
      oprot.writeFieldEnd()
    if self.productGroup is not None:
      oprot.writeFieldBegin('productGroup', TType.STRING, 6)
      oprot.writeString(self.productGroup)
      oprot.writeFieldEnd()
    if self.brand is not None:
      oprot.writeFieldBegin('brand', TType.STRING, 7)
      oprot.writeString(self.brand)
      oprot.writeFieldEnd()
    if self.modelNumber is not None:
      oprot.writeFieldBegin('modelNumber', TType.STRING, 8)
      oprot.writeString(self.modelNumber)
      oprot.writeFieldEnd()
    if self.modelName is not None:
      oprot.writeFieldBegin('modelName', TType.STRING, 9)
      oprot.writeString(self.modelName)
      oprot.writeFieldEnd()
    if self.color is not None:
      oprot.writeFieldBegin('color', TType.STRING, 10)
      oprot.writeString(self.color)
      oprot.writeFieldEnd()
    if self.totalPrice is not None:
      oprot.writeFieldBegin('totalPrice', TType.DOUBLE, 11)
      oprot.writeDouble(self.totalPrice)
      oprot.writeFieldEnd()
    if self.transferPrice is not None:
      oprot.writeFieldBegin('transferPrice', TType.DOUBLE, 12)
      oprot.writeDouble(self.transferPrice)
      oprot.writeFieldEnd()
    if self.processedStatus is not None:
      oprot.writeFieldBegin('processedStatus', TType.BOOL, 13)
      oprot.writeBool(self.processedStatus)
      oprot.writeFieldEnd()
    if self.createdAt is not None:
      oprot.writeFieldBegin('createdAt', TType.I64, 14)
      oprot.writeI64(self.createdAt)
      oprot.writeFieldEnd()
    if self.processedAt is not None:
      oprot.writeFieldBegin('processedAt', TType.I64, 15)
      oprot.writeI64(self.processedAt)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class PaymentSettlement:
  """
  Attributes:
   - paymentGatewayId
   - referenceId
   - settlementDate
   - serviceTax
   - otherCharges
   - netCollection
  """

  thrift_spec = (
    None, # 0
    None, # 1
    (2, TType.I64, 'paymentGatewayId', None, None, ), # 2
    (3, TType.I64, 'referenceId', None, None, ), # 3
    (4, TType.I64, 'settlementDate', None, None, ), # 4
    (5, TType.DOUBLE, 'serviceTax', None, None, ), # 5
    (6, TType.DOUBLE, 'otherCharges', None, None, ), # 6
    (7, TType.DOUBLE, 'netCollection', None, None, ), # 7
  )

  def __init__(self, paymentGatewayId=None, referenceId=None, settlementDate=None, serviceTax=None, otherCharges=None, netCollection=None,):
    self.paymentGatewayId = paymentGatewayId
    self.referenceId = referenceId
    self.settlementDate = settlementDate
    self.serviceTax = serviceTax
    self.otherCharges = otherCharges
    self.netCollection = netCollection

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 2:
        if ftype == TType.I64:
          self.paymentGatewayId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.referenceId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.settlementDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.serviceTax = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.otherCharges = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.DOUBLE:
          self.netCollection = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('PaymentSettlement')
    if self.paymentGatewayId is not None:
      oprot.writeFieldBegin('paymentGatewayId', TType.I64, 2)
      oprot.writeI64(self.paymentGatewayId)
      oprot.writeFieldEnd()
    if self.referenceId is not None:
      oprot.writeFieldBegin('referenceId', TType.I64, 3)
      oprot.writeI64(self.referenceId)
      oprot.writeFieldEnd()
    if self.settlementDate is not None:
      oprot.writeFieldBegin('settlementDate', TType.I64, 4)
      oprot.writeI64(self.settlementDate)
      oprot.writeFieldEnd()
    if self.serviceTax is not None:
      oprot.writeFieldBegin('serviceTax', TType.DOUBLE, 5)
      oprot.writeDouble(self.serviceTax)
      oprot.writeFieldEnd()
    if self.otherCharges is not None:
      oprot.writeFieldBegin('otherCharges', TType.DOUBLE, 6)
      oprot.writeDouble(self.otherCharges)
      oprot.writeFieldEnd()
    if self.netCollection is not None:
      oprot.writeFieldBegin('netCollection', TType.DOUBLE, 7)
      oprot.writeDouble(self.netCollection)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class CODPaymentSettlement:
  """
  Attributes:
   - orderId
   - settlementDate
   - collection
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.I64, 'settlementDate', None, None, ), # 2
    (3, TType.DOUBLE, 'collection', None, None, ), # 3
  )

  def __init__(self, orderId=None, settlementDate=None, collection=None,):
    self.orderId = orderId
    self.settlementDate = settlementDate
    self.collection = collection

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.settlementDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.DOUBLE:
          self.collection = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('CODPaymentSettlement')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.settlementDate is not None:
      oprot.writeFieldBegin('settlementDate', TType.I64, 2)
      oprot.writeI64(self.settlementDate)
      oprot.writeFieldEnd()
    if self.collection is not None:
      oprot.writeFieldBegin('collection', TType.DOUBLE, 3)
      oprot.writeDouble(self.collection)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TimeoutSummary:
  """
  Attributes:
   - poRaised
   - poEstimate
   - reversalInitiated
   - reversalEstimate
  """

  thrift_spec = (
    None, # 0
    (1, TType.I32, 'poRaised', None, None, ), # 1
    (2, TType.I32, 'poEstimate', None, None, ), # 2
    (3, TType.I32, 'reversalInitiated', None, None, ), # 3
    (4, TType.I32, 'reversalEstimate', None, None, ), # 4
  )

  def __init__(self, poRaised=None, poEstimate=None, reversalInitiated=None, reversalEstimate=None,):
    self.poRaised = poRaised
    self.poEstimate = poEstimate
    self.reversalInitiated = reversalInitiated
    self.reversalEstimate = reversalEstimate

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I32:
          self.poRaised = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I32:
          self.poEstimate = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.reversalInitiated = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I32:
          self.reversalEstimate = iprot.readI32();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TimeoutSummary')
    if self.poRaised is not None:
      oprot.writeFieldBegin('poRaised', TType.I32, 1)
      oprot.writeI32(self.poRaised)
      oprot.writeFieldEnd()
    if self.poEstimate is not None:
      oprot.writeFieldBegin('poEstimate', TType.I32, 2)
      oprot.writeI32(self.poEstimate)
      oprot.writeFieldEnd()
    if self.reversalInitiated is not None:
      oprot.writeFieldBegin('reversalInitiated', TType.I32, 3)
      oprot.writeI32(self.reversalInitiated)
      oprot.writeFieldEnd()
    if self.reversalEstimate is not None:
      oprot.writeFieldBegin('reversalEstimate', TType.I32, 4)
      oprot.writeI32(self.reversalEstimate)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class CODVerificationAgent:
  """
  Attributes:
   - orderId
   - agentEmailId
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.STRING, 'agentEmailId', None, None, ), # 2
  )

  def __init__(self, orderId=None, agentEmailId=None,):
    self.orderId = orderId
    self.agentEmailId = agentEmailId

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.agentEmailId = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('CODVerificationAgent')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.agentEmailId is not None:
      oprot.writeFieldBegin('agentEmailId', TType.STRING, 2)
      oprot.writeString(self.agentEmailId)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class RechargeOrder:
  """
  Attributes:
   - id
   - displayId
   - totalAmount
   - walletAmount
   - transactionId
   - invoiceNumber
   - orderType
   - operatorId
   - rechargeType
   - status
   - deviceNumber
   - userId
   - userEmailId
   - creationTimestamp
   - spiceTID
   - responseTimestamp
   - description
   - plan
   - couponCode
   - couponAmount
   - refundTimestamp
   - ipAddress
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'displayId', None, None, ), # 2
    (3, TType.I64, 'totalAmount', None, None, ), # 3
    (4, TType.I64, 'walletAmount', None, None, ), # 4
    (5, TType.I64, 'transactionId', None, None, ), # 5
    (6, TType.I64, 'invoiceNumber', None, None, ), # 6
    (7, TType.I32, 'orderType', None, None, ), # 7
    (8, TType.I64, 'operatorId', None, None, ), # 8
    (9, TType.I32, 'rechargeType', None, None, ), # 9
    (10, TType.I32, 'status', None, None, ), # 10
    (11, TType.STRING, 'deviceNumber', None, None, ), # 11
    (12, TType.I64, 'userId', None, None, ), # 12
    (13, TType.STRING, 'userEmailId', None, None, ), # 13
    (14, TType.I64, 'creationTimestamp', None, None, ), # 14
    (15, TType.STRING, 'spiceTID', None, None, ), # 15
    (16, TType.I64, 'responseTimestamp', None, None, ), # 16
    (17, TType.STRING, 'description', None, None, ), # 17
    (18, TType.STRING, 'plan', None, None, ), # 18
    (19, TType.STRING, 'couponCode', None, None, ), # 19
    (20, TType.I64, 'couponAmount', None, None, ), # 20
    (21, TType.I64, 'refundTimestamp', None, None, ), # 21
    (22, TType.STRING, 'ipAddress', None, None, ), # 22
  )

  def __init__(self, id=None, displayId=None, totalAmount=None, walletAmount=None, transactionId=None, invoiceNumber=None, orderType=None, operatorId=None, rechargeType=None, status=None, deviceNumber=None, userId=None, userEmailId=None, creationTimestamp=None, spiceTID=None, responseTimestamp=None, description=None, plan=None, couponCode=None, couponAmount=None, refundTimestamp=None, ipAddress=None,):
    self.id = id
    self.displayId = displayId
    self.totalAmount = totalAmount
    self.walletAmount = walletAmount
    self.transactionId = transactionId
    self.invoiceNumber = invoiceNumber
    self.orderType = orderType
    self.operatorId = operatorId
    self.rechargeType = rechargeType
    self.status = status
    self.deviceNumber = deviceNumber
    self.userId = userId
    self.userEmailId = userEmailId
    self.creationTimestamp = creationTimestamp
    self.spiceTID = spiceTID
    self.responseTimestamp = responseTimestamp
    self.description = description
    self.plan = plan
    self.couponCode = couponCode
    self.couponAmount = couponAmount
    self.refundTimestamp = refundTimestamp
    self.ipAddress = ipAddress

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.displayId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.totalAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.walletAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.transactionId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.invoiceNumber = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I32:
          self.orderType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.operatorId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I32:
          self.rechargeType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I32:
          self.status = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.deviceNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.userId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.STRING:
          self.userEmailId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.I64:
          self.creationTimestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.STRING:
          self.spiceTID = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.I64:
          self.responseTimestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.STRING:
          self.plan = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.STRING:
          self.couponCode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 20:
        if ftype == TType.I64:
          self.couponAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 21:
        if ftype == TType.I64:
          self.refundTimestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 22:
        if ftype == TType.STRING:
          self.ipAddress = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('RechargeOrder')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.displayId is not None:
      oprot.writeFieldBegin('displayId', TType.STRING, 2)
      oprot.writeString(self.displayId)
      oprot.writeFieldEnd()
    if self.totalAmount is not None:
      oprot.writeFieldBegin('totalAmount', TType.I64, 3)
      oprot.writeI64(self.totalAmount)
      oprot.writeFieldEnd()
    if self.walletAmount is not None:
      oprot.writeFieldBegin('walletAmount', TType.I64, 4)
      oprot.writeI64(self.walletAmount)
      oprot.writeFieldEnd()
    if self.transactionId is not None:
      oprot.writeFieldBegin('transactionId', TType.I64, 5)
      oprot.writeI64(self.transactionId)
      oprot.writeFieldEnd()
    if self.invoiceNumber is not None:
      oprot.writeFieldBegin('invoiceNumber', TType.I64, 6)
      oprot.writeI64(self.invoiceNumber)
      oprot.writeFieldEnd()
    if self.orderType is not None:
      oprot.writeFieldBegin('orderType', TType.I32, 7)
      oprot.writeI32(self.orderType)
      oprot.writeFieldEnd()
    if self.operatorId is not None:
      oprot.writeFieldBegin('operatorId', TType.I64, 8)
      oprot.writeI64(self.operatorId)
      oprot.writeFieldEnd()
    if self.rechargeType is not None:
      oprot.writeFieldBegin('rechargeType', TType.I32, 9)
      oprot.writeI32(self.rechargeType)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.I32, 10)
      oprot.writeI32(self.status)
      oprot.writeFieldEnd()
    if self.deviceNumber is not None:
      oprot.writeFieldBegin('deviceNumber', TType.STRING, 11)
      oprot.writeString(self.deviceNumber)
      oprot.writeFieldEnd()
    if self.userId is not None:
      oprot.writeFieldBegin('userId', TType.I64, 12)
      oprot.writeI64(self.userId)
      oprot.writeFieldEnd()
    if self.userEmailId is not None:
      oprot.writeFieldBegin('userEmailId', TType.STRING, 13)
      oprot.writeString(self.userEmailId)
      oprot.writeFieldEnd()
    if self.creationTimestamp is not None:
      oprot.writeFieldBegin('creationTimestamp', TType.I64, 14)
      oprot.writeI64(self.creationTimestamp)
      oprot.writeFieldEnd()
    if self.spiceTID is not None:
      oprot.writeFieldBegin('spiceTID', TType.STRING, 15)
      oprot.writeString(self.spiceTID)
      oprot.writeFieldEnd()
    if self.responseTimestamp is not None:
      oprot.writeFieldBegin('responseTimestamp', TType.I64, 16)
      oprot.writeI64(self.responseTimestamp)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 17)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.plan is not None:
      oprot.writeFieldBegin('plan', TType.STRING, 18)
      oprot.writeString(self.plan)
      oprot.writeFieldEnd()
    if self.couponCode is not None:
      oprot.writeFieldBegin('couponCode', TType.STRING, 19)
      oprot.writeString(self.couponCode)
      oprot.writeFieldEnd()
    if self.couponAmount is not None:
      oprot.writeFieldBegin('couponAmount', TType.I64, 20)
      oprot.writeI64(self.couponAmount)
      oprot.writeFieldEnd()
    if self.refundTimestamp is not None:
      oprot.writeFieldBegin('refundTimestamp', TType.I64, 21)
      oprot.writeI64(self.refundTimestamp)
      oprot.writeFieldEnd()
    if self.ipAddress is not None:
      oprot.writeFieldBegin('ipAddress', TType.STRING, 22)
      oprot.writeString(self.ipAddress)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class RechargeStatistics:
  """
  Attributes:
   - statusCounts
   - operatorCounts
   - currentOrders
   - amounts
  """

  thrift_spec = (
    None, # 0
    (1, TType.MAP, 'statusCounts', (TType.I64,None,TType.I64,None), None, ), # 1
    (2, TType.MAP, 'operatorCounts', (TType.I64,None,TType.I64,None), None, ), # 2
    (3, TType.MAP, 'currentOrders', (TType.STRING,None,TType.LIST,(TType.STRUCT,(RechargeOrder, RechargeOrder.thrift_spec))), None, ), # 3
    (4, TType.MAP, 'amounts', (TType.STRING,None,TType.I64,None), None, ), # 4
  )

  def __init__(self, statusCounts=None, operatorCounts=None, currentOrders=None, amounts=None,):
    self.statusCounts = statusCounts
    self.operatorCounts = operatorCounts
    self.currentOrders = currentOrders
    self.amounts = amounts

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.MAP:
          self.statusCounts = {}
          (_ktype15, _vtype16, _size14 ) = iprot.readMapBegin() 
          for _i18 in xrange(_size14):
            _key19 = iprot.readI64();
            _val20 = iprot.readI64();
            self.statusCounts[_key19] = _val20
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.MAP:
          self.operatorCounts = {}
          (_ktype22, _vtype23, _size21 ) = iprot.readMapBegin() 
          for _i25 in xrange(_size21):
            _key26 = iprot.readI64();
            _val27 = iprot.readI64();
            self.operatorCounts[_key26] = _val27
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.MAP:
          self.currentOrders = {}
          (_ktype29, _vtype30, _size28 ) = iprot.readMapBegin() 
          for _i32 in xrange(_size28):
            _key33 = iprot.readString();
            _val34 = []
            (_etype38, _size35) = iprot.readListBegin()
            for _i39 in xrange(_size35):
              _elem40 = RechargeOrder()
              _elem40.read(iprot)
              _val34.append(_elem40)
            iprot.readListEnd()
            self.currentOrders[_key33] = _val34
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.MAP:
          self.amounts = {}
          (_ktype42, _vtype43, _size41 ) = iprot.readMapBegin() 
          for _i45 in xrange(_size41):
            _key46 = iprot.readString();
            _val47 = iprot.readI64();
            self.amounts[_key46] = _val47
          iprot.readMapEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('RechargeStatistics')
    if self.statusCounts is not None:
      oprot.writeFieldBegin('statusCounts', TType.MAP, 1)
      oprot.writeMapBegin(TType.I64, TType.I64, len(self.statusCounts))
      for kiter48,viter49 in self.statusCounts.items():
        oprot.writeI64(kiter48)
        oprot.writeI64(viter49)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.operatorCounts is not None:
      oprot.writeFieldBegin('operatorCounts', TType.MAP, 2)
      oprot.writeMapBegin(TType.I64, TType.I64, len(self.operatorCounts))
      for kiter50,viter51 in self.operatorCounts.items():
        oprot.writeI64(kiter50)
        oprot.writeI64(viter51)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.currentOrders is not None:
      oprot.writeFieldBegin('currentOrders', TType.MAP, 3)
      oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.currentOrders))
      for kiter52,viter53 in self.currentOrders.items():
        oprot.writeString(kiter52)
        oprot.writeListBegin(TType.STRUCT, len(viter53))
        for iter54 in viter53:
          iter54.write(oprot)
        oprot.writeListEnd()
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    if self.amounts is not None:
      oprot.writeFieldBegin('amounts', TType.MAP, 4)
      oprot.writeMapBegin(TType.STRING, TType.I64, len(self.amounts))
      for kiter55,viter56 in self.amounts.items():
        oprot.writeString(kiter55)
        oprot.writeI64(viter56)
      oprot.writeMapEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class RechargePlan:
  """
  Attributes:
   - operatorId
   - name
   - displayName
   - description
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'operatorId', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'displayName', None, None, ), # 3
    (4, TType.STRING, 'description', None, None, ), # 4
  )

  def __init__(self, operatorId=None, name=None, displayName=None, description=None,):
    self.operatorId = operatorId
    self.name = name
    self.displayName = displayName
    self.description = description

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.operatorId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.displayName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('RechargePlan')
    if self.operatorId is not None:
      oprot.writeFieldBegin('operatorId', TType.I64, 1)
      oprot.writeI64(self.operatorId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.displayName is not None:
      oprot.writeFieldBegin('displayName', TType.STRING, 3)
      oprot.writeString(self.displayName)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 4)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class RechargeDenomination:
  """
  Attributes:
   - operatorId
   - circleId
   - denominationType
   - amount
   - validity
   - description
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'operatorId', None, None, ), # 1
    (2, TType.I64, 'circleId', None, None, ), # 2
    (3, TType.I32, 'denominationType', None, None, ), # 3
    (4, TType.I64, 'amount', None, None, ), # 4
    (5, TType.STRING, 'validity', None, None, ), # 5
    (6, TType.STRING, 'description', None, None, ), # 6
  )

  def __init__(self, operatorId=None, circleId=None, denominationType=None, amount=None, validity=None, description=None,):
    self.operatorId = operatorId
    self.circleId = circleId
    self.denominationType = denominationType
    self.amount = amount
    self.validity = validity
    self.description = description

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.operatorId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.circleId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.denominationType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.amount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.validity = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('RechargeDenomination')
    if self.operatorId is not None:
      oprot.writeFieldBegin('operatorId', TType.I64, 1)
      oprot.writeI64(self.operatorId)
      oprot.writeFieldEnd()
    if self.circleId is not None:
      oprot.writeFieldBegin('circleId', TType.I64, 2)
      oprot.writeI64(self.circleId)
      oprot.writeFieldEnd()
    if self.denominationType is not None:
      oprot.writeFieldBegin('denominationType', TType.I32, 3)
      oprot.writeI32(self.denominationType)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.I64, 4)
      oprot.writeI64(self.amount)
      oprot.writeFieldEnd()
    if self.validity is not None:
      oprot.writeFieldBegin('validity', TType.STRING, 5)
      oprot.writeString(self.validity)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 6)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class DeviceNumberInfo:
  """
  Attributes:
   - operatorId
   - circleCode
   - operatorName
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'operatorId', None, None, ), # 1
    (2, TType.STRING, 'circleCode', None, None, ), # 2
    (3, TType.STRING, 'operatorName', None, None, ), # 3
  )

  def __init__(self, operatorId=None, circleCode=None, operatorName=None,):
    self.operatorId = operatorId
    self.circleCode = circleCode
    self.operatorName = operatorName

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.operatorId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.circleCode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.operatorName = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('DeviceNumberInfo')
    if self.operatorId is not None:
      oprot.writeFieldBegin('operatorId', TType.I64, 1)
      oprot.writeI64(self.operatorId)
      oprot.writeFieldEnd()
    if self.circleCode is not None:
      oprot.writeFieldBegin('circleCode', TType.STRING, 2)
      oprot.writeString(self.circleCode)
      oprot.writeFieldEnd()
    if self.operatorName is not None:
      oprot.writeFieldBegin('operatorName', TType.STRING, 3)
      oprot.writeString(self.operatorName)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class UserWallet:
  """
  Attributes:
   - id
   - amount
   - userId
   - refundable_amount
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'amount', None, None, ), # 2
    (3, TType.I64, 'userId', None, None, ), # 3
    (4, TType.I64, 'refundable_amount', None, None, ), # 4
  )

  def __init__(self, id=None, amount=None, userId=None, refundable_amount=None,):
    self.id = id
    self.amount = amount
    self.userId = userId
    self.refundable_amount = refundable_amount

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.amount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.userId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.refundable_amount = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('UserWallet')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.I64, 2)
      oprot.writeI64(self.amount)
      oprot.writeFieldEnd()
    if self.userId is not None:
      oprot.writeFieldBegin('userId', TType.I64, 3)
      oprot.writeI64(self.userId)
      oprot.writeFieldEnd()
    if self.refundable_amount is not None:
      oprot.writeFieldBegin('refundable_amount', TType.I64, 4)
      oprot.writeI64(self.refundable_amount)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class UserWalletHistory:
  """
  Attributes:
   - id
   - walletId
   - refundableAmount
   - amount
   - timestamp
   - description
   - referenceNumber
   - referenceType
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'walletId', None, None, ), # 2
    (3, TType.I64, 'refundableAmount', None, None, ), # 3
    (4, TType.I64, 'amount', None, None, ), # 4
    (5, TType.I64, 'timestamp', None, None, ), # 5
    (6, TType.STRING, 'description', None, None, ), # 6
    (7, TType.I64, 'referenceNumber', None, None, ), # 7
    (8, TType.I32, 'referenceType', None, None, ), # 8
  )

  def __init__(self, id=None, walletId=None, refundableAmount=None, amount=None, timestamp=None, description=None, referenceNumber=None, referenceType=None,):
    self.id = id
    self.walletId = walletId
    self.refundableAmount = refundableAmount
    self.amount = amount
    self.timestamp = timestamp
    self.description = description
    self.referenceNumber = referenceNumber
    self.referenceType = referenceType

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.walletId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.refundableAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.amount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.referenceNumber = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I32:
          self.referenceType = iprot.readI32();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('UserWalletHistory')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.walletId is not None:
      oprot.writeFieldBegin('walletId', TType.I64, 2)
      oprot.writeI64(self.walletId)
      oprot.writeFieldEnd()
    if self.refundableAmount is not None:
      oprot.writeFieldBegin('refundableAmount', TType.I64, 3)
      oprot.writeI64(self.refundableAmount)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.I64, 4)
      oprot.writeI64(self.amount)
      oprot.writeFieldEnd()
    if self.timestamp is not None:
      oprot.writeFieldBegin('timestamp', TType.I64, 5)
      oprot.writeI64(self.timestamp)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 6)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.referenceNumber is not None:
      oprot.writeFieldBegin('referenceNumber', TType.I64, 7)
      oprot.writeI64(self.referenceNumber)
      oprot.writeFieldEnd()
    if self.referenceType is not None:
      oprot.writeFieldBegin('referenceType', TType.I32, 8)
      oprot.writeI32(self.referenceType)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class EmiScheme:
  """
  Attributes:
   - id
   - gatewayId
   - bankId
   - tenure
   - bankName
   - minAmount
   - tenureDescription
   - chargeType
   - chargeValue
   - interestRate
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'gatewayId', None, None, ), # 2
    (3, TType.I64, 'bankId', None, None, ), # 3
    (4, TType.I64, 'tenure', None, None, ), # 4
    (5, TType.STRING, 'bankName', None, None, ), # 5
    (6, TType.I64, 'minAmount', None, None, ), # 6
    (7, TType.STRING, 'tenureDescription', None, None, ), # 7
    (8, TType.I32, 'chargeType', None, None, ), # 8
    (9, TType.DOUBLE, 'chargeValue', None, None, ), # 9
    (10, TType.DOUBLE, 'interestRate', None, None, ), # 10
  )

  def __init__(self, id=None, gatewayId=None, bankId=None, tenure=None, bankName=None, minAmount=None, tenureDescription=None, chargeType=None, chargeValue=None, interestRate=None,):
    self.id = id
    self.gatewayId = gatewayId
    self.bankId = bankId
    self.tenure = tenure
    self.bankName = bankName
    self.minAmount = minAmount
    self.tenureDescription = tenureDescription
    self.chargeType = chargeType
    self.chargeValue = chargeValue
    self.interestRate = interestRate

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.gatewayId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.bankId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.tenure = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.bankName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.minAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.tenureDescription = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I32:
          self.chargeType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.DOUBLE:
          self.chargeValue = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.DOUBLE:
          self.interestRate = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('EmiScheme')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.gatewayId is not None:
      oprot.writeFieldBegin('gatewayId', TType.I64, 2)
      oprot.writeI64(self.gatewayId)
      oprot.writeFieldEnd()
    if self.bankId is not None:
      oprot.writeFieldBegin('bankId', TType.I64, 3)
      oprot.writeI64(self.bankId)
      oprot.writeFieldEnd()
    if self.tenure is not None:
      oprot.writeFieldBegin('tenure', TType.I64, 4)
      oprot.writeI64(self.tenure)
      oprot.writeFieldEnd()
    if self.bankName is not None:
      oprot.writeFieldBegin('bankName', TType.STRING, 5)
      oprot.writeString(self.bankName)
      oprot.writeFieldEnd()
    if self.minAmount is not None:
      oprot.writeFieldBegin('minAmount', TType.I64, 6)
      oprot.writeI64(self.minAmount)
      oprot.writeFieldEnd()
    if self.tenureDescription is not None:
      oprot.writeFieldBegin('tenureDescription', TType.STRING, 7)
      oprot.writeString(self.tenureDescription)
      oprot.writeFieldEnd()
    if self.chargeType is not None:
      oprot.writeFieldBegin('chargeType', TType.I32, 8)
      oprot.writeI32(self.chargeType)
      oprot.writeFieldEnd()
    if self.chargeValue is not None:
      oprot.writeFieldBegin('chargeValue', TType.DOUBLE, 9)
      oprot.writeDouble(self.chargeValue)
      oprot.writeFieldEnd()
    if self.interestRate is not None:
      oprot.writeFieldBegin('interestRate', TType.DOUBLE, 10)
      oprot.writeDouble(self.interestRate)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TransactionServiceException(Exception):
  """
  Attributes:
   - errorCode
   - message
  """

  thrift_spec = (
    None, # 0
    (1, TType.I32, 'errorCode', None, None, ), # 1
    (2, TType.STRING, 'message', None, None, ), # 2
  )

  def __init__(self, errorCode=None, message=None,):
    self.errorCode = errorCode
    self.message = message

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I32:
          self.errorCode = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.message = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TransactionServiceException')
    if self.errorCode is not None:
      oprot.writeFieldBegin('errorCode', TType.I32, 1)
      oprot.writeI32(self.errorCode)
      oprot.writeFieldEnd()
    if self.message is not None:
      oprot.writeFieldBegin('message', TType.STRING, 2)
      oprot.writeString(self.message)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __str__(self):
    return repr(self)

  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class Company:
  """
  Attributes:
   - id
   - name
   - Address
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'Address', None, None, ), # 3
  )

  def __init__(self, id=None, name=None, Address=None,):
    self.id = id
    self.name = name
    self.Address = Address

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.Address = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('Company')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.Address is not None:
      oprot.writeFieldBegin('Address', TType.STRING, 3)
      oprot.writeString(self.Address)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class WalletForCompany:
  """
  Attributes:
   - id
   - companyId
   - amount
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'companyId', None, None, ), # 2
    (3, TType.DOUBLE, 'amount', None, None, ), # 3
  )

  def __init__(self, id=None, companyId=None, amount=None,):
    self.id = id
    self.companyId = companyId
    self.amount = amount

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.companyId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.DOUBLE:
          self.amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('WalletForCompany')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.companyId is not None:
      oprot.writeFieldBegin('companyId', TType.I64, 2)
      oprot.writeI64(self.companyId)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.DOUBLE, 3)
      oprot.writeDouble(self.amount)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class WalletHistoryForCompany:
  """
  Attributes:
   - id
   - walletId
   - amount
   - transactionTime
   - openingBal
   - closingBal
   - referenceNumber
   - description
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'walletId', None, None, ), # 2
    (3, TType.DOUBLE, 'amount', None, None, ), # 3
    (4, TType.I64, 'transactionTime', None, None, ), # 4
    (5, TType.DOUBLE, 'openingBal', None, None, ), # 5
    (6, TType.DOUBLE, 'closingBal', None, None, ), # 6
    (7, TType.I64, 'referenceNumber', None, None, ), # 7
    (8, TType.STRING, 'description', None, None, ), # 8
  )

  def __init__(self, id=None, walletId=None, amount=None, transactionTime=None, openingBal=None, closingBal=None, referenceNumber=None, description=None,):
    self.id = id
    self.walletId = walletId
    self.amount = amount
    self.transactionTime = transactionTime
    self.openingBal = openingBal
    self.closingBal = closingBal
    self.referenceNumber = referenceNumber
    self.description = description

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.walletId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.DOUBLE:
          self.amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.transactionTime = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.openingBal = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.closingBal = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.referenceNumber = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('WalletHistoryForCompany')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.walletId is not None:
      oprot.writeFieldBegin('walletId', TType.I64, 2)
      oprot.writeI64(self.walletId)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.DOUBLE, 3)
      oprot.writeDouble(self.amount)
      oprot.writeFieldEnd()
    if self.transactionTime is not None:
      oprot.writeFieldBegin('transactionTime', TType.I64, 4)
      oprot.writeI64(self.transactionTime)
      oprot.writeFieldEnd()
    if self.openingBal is not None:
      oprot.writeFieldBegin('openingBal', TType.DOUBLE, 5)
      oprot.writeDouble(self.openingBal)
      oprot.writeFieldEnd()
    if self.closingBal is not None:
      oprot.writeFieldBegin('closingBal', TType.DOUBLE, 6)
      oprot.writeDouble(self.closingBal)
      oprot.writeFieldEnd()
    if self.referenceNumber is not None:
      oprot.writeFieldBegin('referenceNumber', TType.I64, 7)
      oprot.writeI64(self.referenceNumber)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 8)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class FRC:
  """
  Attributes:
   - id
   - operatorId
   - circleId
   - denomination
   - maxDiscount
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'operatorId', None, None, ), # 2
    (3, TType.I64, 'circleId', None, None, ), # 3
    (4, TType.I64, 'denomination', None, None, ), # 4
    (5, TType.I64, 'maxDiscount', None, None, ), # 5
  )

  def __init__(self, id=None, operatorId=None, circleId=None, denomination=None, maxDiscount=None,):
    self.id = id
    self.operatorId = operatorId
    self.circleId = circleId
    self.denomination = denomination
    self.maxDiscount = maxDiscount

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.operatorId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.circleId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.denomination = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.maxDiscount = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('FRC')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.operatorId is not None:
      oprot.writeFieldBegin('operatorId', TType.I64, 2)
      oprot.writeI64(self.operatorId)
      oprot.writeFieldEnd()
    if self.circleId is not None:
      oprot.writeFieldBegin('circleId', TType.I64, 3)
      oprot.writeI64(self.circleId)
      oprot.writeFieldEnd()
    if self.denomination is not None:
      oprot.writeFieldBegin('denomination', TType.I64, 4)
      oprot.writeI64(self.denomination)
      oprot.writeFieldEnd()
    if self.maxDiscount is not None:
      oprot.writeFieldBegin('maxDiscount', TType.I64, 5)
      oprot.writeI64(self.maxDiscount)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class HotspotStore:
  """
  Attributes:
   - id
   - hotspotId
   - companyId
   - name
   - city
   - collectedAmount
   - availableLimit
   - creditLimit
   - salt
   - password
   - isActive
   - circleId
   - email
   - line1
   - line2
   - state
   - pin
   - phone
   - approvalEmail
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'hotspotId', None, None, ), # 2
    (3, TType.I64, 'companyId', None, None, ), # 3
    (4, TType.STRING, 'name', None, None, ), # 4
    (5, TType.STRING, 'city', None, None, ), # 5
    (6, TType.I64, 'collectedAmount', None, None, ), # 6
    (7, TType.I64, 'availableLimit', None, None, ), # 7
    (8, TType.I64, 'creditLimit', None, None, ), # 8
    (9, TType.STRING, 'salt', None, None, ), # 9
    (10, TType.STRING, 'password', None, None, ), # 10
    (11, TType.BOOL, 'isActive', None, None, ), # 11
    (12, TType.I64, 'circleId', None, None, ), # 12
    (13, TType.STRING, 'email', None, None, ), # 13
    (14, TType.STRING, 'line1', None, None, ), # 14
    (15, TType.STRING, 'line2', None, None, ), # 15
    (16, TType.STRING, 'state', None, None, ), # 16
    (17, TType.STRING, 'pin', None, None, ), # 17
    (18, TType.STRING, 'phone', None, None, ), # 18
    (19, TType.STRING, 'approvalEmail', None, None, ), # 19
  )

  def __init__(self, id=None, hotspotId=None, companyId=None, name=None, city=None, collectedAmount=None, availableLimit=None, creditLimit=None, salt=None, password=None, isActive=None, circleId=None, email=None, line1=None, line2=None, state=None, pin=None, phone=None, approvalEmail=None,):
    self.id = id
    self.hotspotId = hotspotId
    self.companyId = companyId
    self.name = name
    self.city = city
    self.collectedAmount = collectedAmount
    self.availableLimit = availableLimit
    self.creditLimit = creditLimit
    self.salt = salt
    self.password = password
    self.isActive = isActive
    self.circleId = circleId
    self.email = email
    self.line1 = line1
    self.line2 = line2
    self.state = state
    self.pin = pin
    self.phone = phone
    self.approvalEmail = approvalEmail

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.hotspotId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.companyId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.city = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.collectedAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.availableLimit = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.creditLimit = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.salt = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.password = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.BOOL:
          self.isActive = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.circleId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.STRING:
          self.email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRING:
          self.line1 = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.STRING:
          self.line2 = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRING:
          self.state = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.STRING:
          self.pin = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.STRING:
          self.phone = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.STRING:
          self.approvalEmail = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('HotspotStore')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.hotspotId is not None:
      oprot.writeFieldBegin('hotspotId', TType.STRING, 2)
      oprot.writeString(self.hotspotId)
      oprot.writeFieldEnd()
    if self.companyId is not None:
      oprot.writeFieldBegin('companyId', TType.I64, 3)
      oprot.writeI64(self.companyId)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 4)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.city is not None:
      oprot.writeFieldBegin('city', TType.STRING, 5)
      oprot.writeString(self.city)
      oprot.writeFieldEnd()
    if self.collectedAmount is not None:
      oprot.writeFieldBegin('collectedAmount', TType.I64, 6)
      oprot.writeI64(self.collectedAmount)
      oprot.writeFieldEnd()
    if self.availableLimit is not None:
      oprot.writeFieldBegin('availableLimit', TType.I64, 7)
      oprot.writeI64(self.availableLimit)
      oprot.writeFieldEnd()
    if self.creditLimit is not None:
      oprot.writeFieldBegin('creditLimit', TType.I64, 8)
      oprot.writeI64(self.creditLimit)
      oprot.writeFieldEnd()
    if self.salt is not None:
      oprot.writeFieldBegin('salt', TType.STRING, 9)
      oprot.writeString(self.salt)
      oprot.writeFieldEnd()
    if self.password is not None:
      oprot.writeFieldBegin('password', TType.STRING, 10)
      oprot.writeString(self.password)
      oprot.writeFieldEnd()
    if self.isActive is not None:
      oprot.writeFieldBegin('isActive', TType.BOOL, 11)
      oprot.writeBool(self.isActive)
      oprot.writeFieldEnd()
    if self.circleId is not None:
      oprot.writeFieldBegin('circleId', TType.I64, 12)
      oprot.writeI64(self.circleId)
      oprot.writeFieldEnd()
    if self.email is not None:
      oprot.writeFieldBegin('email', TType.STRING, 13)
      oprot.writeString(self.email)
      oprot.writeFieldEnd()
    if self.line1 is not None:
      oprot.writeFieldBegin('line1', TType.STRING, 14)
      oprot.writeString(self.line1)
      oprot.writeFieldEnd()
    if self.line2 is not None:
      oprot.writeFieldBegin('line2', TType.STRING, 15)
      oprot.writeString(self.line2)
      oprot.writeFieldEnd()
    if self.state is not None:
      oprot.writeFieldBegin('state', TType.STRING, 16)
      oprot.writeString(self.state)
      oprot.writeFieldEnd()
    if self.pin is not None:
      oprot.writeFieldBegin('pin', TType.STRING, 17)
      oprot.writeString(self.pin)
      oprot.writeFieldEnd()
    if self.phone is not None:
      oprot.writeFieldBegin('phone', TType.STRING, 18)
      oprot.writeString(self.phone)
      oprot.writeFieldEnd()
    if self.approvalEmail is not None:
      oprot.writeFieldBegin('approvalEmail', TType.STRING, 19)
      oprot.writeString(self.approvalEmail)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class HotspotServiceMatrix:
  """
  Attributes:
   - storeId
   - hotspotId
   - pickupFromStoreService
   - storeWebsiteService
   - rechargeService
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'storeId', None, None, ), # 1
    (2, TType.STRING, 'hotspotId', None, None, ), # 2
    (3, TType.BOOL, 'pickupFromStoreService', None, None, ), # 3
    (4, TType.BOOL, 'storeWebsiteService', None, None, ), # 4
    (5, TType.BOOL, 'rechargeService', None, None, ), # 5
  )

  def __init__(self, storeId=None, hotspotId=None, pickupFromStoreService=None, storeWebsiteService=None, rechargeService=None,):
    self.storeId = storeId
    self.hotspotId = hotspotId
    self.pickupFromStoreService = pickupFromStoreService
    self.storeWebsiteService = storeWebsiteService
    self.rechargeService = rechargeService

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.storeId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.hotspotId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.BOOL:
          self.pickupFromStoreService = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.BOOL:
          self.storeWebsiteService = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.rechargeService = iprot.readBool();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('HotspotServiceMatrix')
    if self.storeId is not None:
      oprot.writeFieldBegin('storeId', TType.I64, 1)
      oprot.writeI64(self.storeId)
      oprot.writeFieldEnd()
    if self.hotspotId is not None:
      oprot.writeFieldBegin('hotspotId', TType.STRING, 2)
      oprot.writeString(self.hotspotId)
      oprot.writeFieldEnd()
    if self.pickupFromStoreService is not None:
      oprot.writeFieldBegin('pickupFromStoreService', TType.BOOL, 3)
      oprot.writeBool(self.pickupFromStoreService)
      oprot.writeFieldEnd()
    if self.storeWebsiteService is not None:
      oprot.writeFieldBegin('storeWebsiteService', TType.BOOL, 4)
      oprot.writeBool(self.storeWebsiteService)
      oprot.writeFieldEnd()
    if self.rechargeService is not None:
      oprot.writeFieldBegin('rechargeService', TType.BOOL, 5)
      oprot.writeBool(self.rechargeService)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class RechargeTransaction:
  """
  Attributes:
   - id
   - storeId
   - amount
   - transactionTime
   - deviceNum
   - deviceType
   - isFrc
   - email
   - discount
   - paymentAmount
   - payMethod
   - status
   - invoiceNumber
   - circleId
   - operatorId
   - plan
   - ipAddress
   - name
   - cafNum
   - simNum
   - alternateNumber
   - description
   - responseTime
   - spiceTID
   - aggTID
   - providerTID
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'storeId', None, None, ), # 2
    (3, TType.DOUBLE, 'amount', None, None, ), # 3
    (4, TType.I64, 'transactionTime', None, None, ), # 4
    (5, TType.STRING, 'deviceNum', None, None, ), # 5
    (6, TType.I32, 'deviceType', None, None, ), # 6
    (7, TType.BOOL, 'isFrc', None, None, ), # 7
    (8, TType.STRING, 'email', None, None, ), # 8
    (9, TType.DOUBLE, 'discount', None, None, ), # 9
    (10, TType.DOUBLE, 'paymentAmount', None, None, ), # 10
    (11, TType.I32, 'payMethod', None, None, ), # 11
    (12, TType.I32, 'status', None, None, ), # 12
    (13, TType.STRING, 'invoiceNumber', None, None, ), # 13
    (14, TType.I64, 'circleId', None, None, ), # 14
    (15, TType.I64, 'operatorId', None, None, ), # 15
    (16, TType.STRING, 'plan', None, None, ), # 16
    (17, TType.STRING, 'ipAddress', None, None, ), # 17
    (18, TType.STRING, 'name', None, None, ), # 18
    (19, TType.STRING, 'cafNum', None, None, ), # 19
    (20, TType.STRING, 'simNum', None, None, ), # 20
    (21, TType.STRING, 'alternateNumber', None, None, ), # 21
    (22, TType.STRING, 'description', None, None, ), # 22
    (23, TType.I64, 'responseTime', None, None, ), # 23
    (24, TType.STRING, 'spiceTID', None, None, ), # 24
    (25, TType.STRING, 'aggTID', None, None, ), # 25
    (26, TType.STRING, 'providerTID', None, None, ), # 26
  )

  def __init__(self, id=None, storeId=None, amount=None, transactionTime=None, deviceNum=None, deviceType=None, isFrc=None, email=None, discount=None, paymentAmount=None, payMethod=None, status=None, invoiceNumber=None, circleId=None, operatorId=None, plan=None, ipAddress=None, name=None, cafNum=None, simNum=None, alternateNumber=None, description=None, responseTime=None, spiceTID=None, aggTID=None, providerTID=None,):
    self.id = id
    self.storeId = storeId
    self.amount = amount
    self.transactionTime = transactionTime
    self.deviceNum = deviceNum
    self.deviceType = deviceType
    self.isFrc = isFrc
    self.email = email
    self.discount = discount
    self.paymentAmount = paymentAmount
    self.payMethod = payMethod
    self.status = status
    self.invoiceNumber = invoiceNumber
    self.circleId = circleId
    self.operatorId = operatorId
    self.plan = plan
    self.ipAddress = ipAddress
    self.name = name
    self.cafNum = cafNum
    self.simNum = simNum
    self.alternateNumber = alternateNumber
    self.description = description
    self.responseTime = responseTime
    self.spiceTID = spiceTID
    self.aggTID = aggTID
    self.providerTID = providerTID

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.storeId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.DOUBLE:
          self.amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.transactionTime = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.deviceNum = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.deviceType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.BOOL:
          self.isFrc = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.DOUBLE:
          self.discount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.DOUBLE:
          self.paymentAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I32:
          self.payMethod = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I32:
          self.status = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.STRING:
          self.invoiceNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.I64:
          self.circleId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.I64:
          self.operatorId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRING:
          self.plan = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.STRING:
          self.ipAddress = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.STRING:
          self.cafNum = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 20:
        if ftype == TType.STRING:
          self.simNum = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 21:
        if ftype == TType.STRING:
          self.alternateNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 22:
        if ftype == TType.STRING:
          self.description = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 23:
        if ftype == TType.I64:
          self.responseTime = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 24:
        if ftype == TType.STRING:
          self.spiceTID = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 25:
        if ftype == TType.STRING:
          self.aggTID = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 26:
        if ftype == TType.STRING:
          self.providerTID = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('RechargeTransaction')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.storeId is not None:
      oprot.writeFieldBegin('storeId', TType.I64, 2)
      oprot.writeI64(self.storeId)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.DOUBLE, 3)
      oprot.writeDouble(self.amount)
      oprot.writeFieldEnd()
    if self.transactionTime is not None:
      oprot.writeFieldBegin('transactionTime', TType.I64, 4)
      oprot.writeI64(self.transactionTime)
      oprot.writeFieldEnd()
    if self.deviceNum is not None:
      oprot.writeFieldBegin('deviceNum', TType.STRING, 5)
      oprot.writeString(self.deviceNum)
      oprot.writeFieldEnd()
    if self.deviceType is not None:
      oprot.writeFieldBegin('deviceType', TType.I32, 6)
      oprot.writeI32(self.deviceType)
      oprot.writeFieldEnd()
    if self.isFrc is not None:
      oprot.writeFieldBegin('isFrc', TType.BOOL, 7)
      oprot.writeBool(self.isFrc)
      oprot.writeFieldEnd()
    if self.email is not None:
      oprot.writeFieldBegin('email', TType.STRING, 8)
      oprot.writeString(self.email)
      oprot.writeFieldEnd()
    if self.discount is not None:
      oprot.writeFieldBegin('discount', TType.DOUBLE, 9)
      oprot.writeDouble(self.discount)
      oprot.writeFieldEnd()
    if self.paymentAmount is not None:
      oprot.writeFieldBegin('paymentAmount', TType.DOUBLE, 10)
      oprot.writeDouble(self.paymentAmount)
      oprot.writeFieldEnd()
    if self.payMethod is not None:
      oprot.writeFieldBegin('payMethod', TType.I32, 11)
      oprot.writeI32(self.payMethod)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.I32, 12)
      oprot.writeI32(self.status)
      oprot.writeFieldEnd()
    if self.invoiceNumber is not None:
      oprot.writeFieldBegin('invoiceNumber', TType.STRING, 13)
      oprot.writeString(self.invoiceNumber)
      oprot.writeFieldEnd()
    if self.circleId is not None:
      oprot.writeFieldBegin('circleId', TType.I64, 14)
      oprot.writeI64(self.circleId)
      oprot.writeFieldEnd()
    if self.operatorId is not None:
      oprot.writeFieldBegin('operatorId', TType.I64, 15)
      oprot.writeI64(self.operatorId)
      oprot.writeFieldEnd()
    if self.plan is not None:
      oprot.writeFieldBegin('plan', TType.STRING, 16)
      oprot.writeString(self.plan)
      oprot.writeFieldEnd()
    if self.ipAddress is not None:
      oprot.writeFieldBegin('ipAddress', TType.STRING, 17)
      oprot.writeString(self.ipAddress)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 18)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.cafNum is not None:
      oprot.writeFieldBegin('cafNum', TType.STRING, 19)
      oprot.writeString(self.cafNum)
      oprot.writeFieldEnd()
    if self.simNum is not None:
      oprot.writeFieldBegin('simNum', TType.STRING, 20)
      oprot.writeString(self.simNum)
      oprot.writeFieldEnd()
    if self.alternateNumber is not None:
      oprot.writeFieldBegin('alternateNumber', TType.STRING, 21)
      oprot.writeString(self.alternateNumber)
      oprot.writeFieldEnd()
    if self.description is not None:
      oprot.writeFieldBegin('description', TType.STRING, 22)
      oprot.writeString(self.description)
      oprot.writeFieldEnd()
    if self.responseTime is not None:
      oprot.writeFieldBegin('responseTime', TType.I64, 23)
      oprot.writeI64(self.responseTime)
      oprot.writeFieldEnd()
    if self.spiceTID is not None:
      oprot.writeFieldBegin('spiceTID', TType.STRING, 24)
      oprot.writeString(self.spiceTID)
      oprot.writeFieldEnd()
    if self.aggTID is not None:
      oprot.writeFieldBegin('aggTID', TType.STRING, 25)
      oprot.writeString(self.aggTID)
      oprot.writeFieldEnd()
    if self.providerTID is not None:
      oprot.writeFieldBegin('providerTID', TType.STRING, 26)
      oprot.writeString(self.providerTID)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class TelecomCircle:
  """
  Attributes:
   - id
   - name
   - code
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'code', None, None, ), # 3
  )

  def __init__(self, id=None, name=None, code=None,):
    self.id = id
    self.name = name
    self.code = code

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.code = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('TelecomCircle')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.code is not None:
      oprot.writeFieldBegin('code', TType.STRING, 3)
      oprot.writeString(self.code)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class SourceDetail:
  """
  Attributes:
   - id
   - name
   - email
   - tinNumber
   - lastUpdatedOn
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'email', None, None, ), # 3
    (4, TType.STRING, 'tinNumber', None, None, ), # 4
    (5, TType.I64, 'lastUpdatedOn', None, None, ), # 5
  )

  def __init__(self, id=None, name=None, email=None, tinNumber=None, lastUpdatedOn=None,):
    self.id = id
    self.name = name
    self.email = email
    self.tinNumber = tinNumber
    self.lastUpdatedOn = lastUpdatedOn

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.tinNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.lastUpdatedOn = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('SourceDetail')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.email is not None:
      oprot.writeFieldBegin('email', TType.STRING, 3)
      oprot.writeString(self.email)
      oprot.writeFieldEnd()
    if self.tinNumber is not None:
      oprot.writeFieldBegin('tinNumber', TType.STRING, 4)
      oprot.writeString(self.tinNumber)
      oprot.writeFieldEnd()
    if self.lastUpdatedOn is not None:
      oprot.writeFieldBegin('lastUpdatedOn', TType.I64, 5)
      oprot.writeI64(self.lastUpdatedOn)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class AmazonOrder:
  """
  Attributes:
   - orderId
   - amazonOrderCode
   - amazonOrderItemCode
   - transactionId
   - item_id
   - status
   - purchaseDateOnAmazon
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.STRING, 'amazonOrderCode', None, None, ), # 2
    (3, TType.STRING, 'amazonOrderItemCode', None, None, ), # 3
    (4, TType.I64, 'transactionId', None, None, ), # 4
    (5, TType.I64, 'item_id', None, None, ), # 5
    (6, TType.STRING, 'status', None, None, ), # 6
    (7, TType.I64, 'purchaseDateOnAmazon', None, None, ), # 7
  )

  def __init__(self, orderId=None, amazonOrderCode=None, amazonOrderItemCode=None, transactionId=None, item_id=None, status=None, purchaseDateOnAmazon=None,):
    self.orderId = orderId
    self.amazonOrderCode = amazonOrderCode
    self.amazonOrderItemCode = amazonOrderItemCode
    self.transactionId = transactionId
    self.item_id = item_id
    self.status = status
    self.purchaseDateOnAmazon = purchaseDateOnAmazon

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.amazonOrderCode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.amazonOrderItemCode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.transactionId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.item_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.status = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.purchaseDateOnAmazon = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('AmazonOrder')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.amazonOrderCode is not None:
      oprot.writeFieldBegin('amazonOrderCode', TType.STRING, 2)
      oprot.writeString(self.amazonOrderCode)
      oprot.writeFieldEnd()
    if self.amazonOrderItemCode is not None:
      oprot.writeFieldBegin('amazonOrderItemCode', TType.STRING, 3)
      oprot.writeString(self.amazonOrderItemCode)
      oprot.writeFieldEnd()
    if self.transactionId is not None:
      oprot.writeFieldBegin('transactionId', TType.I64, 4)
      oprot.writeI64(self.transactionId)
      oprot.writeFieldEnd()
    if self.item_id is not None:
      oprot.writeFieldBegin('item_id', TType.I64, 5)
      oprot.writeI64(self.item_id)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 6)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.purchaseDateOnAmazon is not None:
      oprot.writeFieldBegin('purchaseDateOnAmazon', TType.I64, 7)
      oprot.writeI64(self.purchaseDateOnAmazon)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class StoreOrderDetail:
  """
  Attributes:
   - orderId
   - storeId
   - advanceAmount
   - cashAmount
   - cardAmount
   - payStatus
   - edcBank
   - cashRefundAmount
   - cardRefundAmount
   - approvalCode
   - cardType
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.I64, 'storeId', None, None, ), # 2
    (3, TType.DOUBLE, 'advanceAmount', None, None, ), # 3
    (4, TType.DOUBLE, 'cashAmount', None, None, ), # 4
    (5, TType.DOUBLE, 'cardAmount', None, None, ), # 5
    (6, TType.I32, 'payStatus', None, None, ), # 6
    (7, TType.STRING, 'edcBank', None, None, ), # 7
    (8, TType.DOUBLE, 'cashRefundAmount', None, None, ), # 8
    (9, TType.DOUBLE, 'cardRefundAmount', None, None, ), # 9
    (10, TType.STRING, 'approvalCode', None, None, ), # 10
    (11, TType.STRING, 'cardType', None, None, ), # 11
  )

  def __init__(self, orderId=None, storeId=None, advanceAmount=None, cashAmount=None, cardAmount=None, payStatus=None, edcBank=None, cashRefundAmount=None, cardRefundAmount=None, approvalCode=None, cardType=None,):
    self.orderId = orderId
    self.storeId = storeId
    self.advanceAmount = advanceAmount
    self.cashAmount = cashAmount
    self.cardAmount = cardAmount
    self.payStatus = payStatus
    self.edcBank = edcBank
    self.cashRefundAmount = cashRefundAmount
    self.cardRefundAmount = cardRefundAmount
    self.approvalCode = approvalCode
    self.cardType = cardType

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.storeId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.DOUBLE:
          self.advanceAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.DOUBLE:
          self.cashAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.cardAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.payStatus = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.edcBank = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.DOUBLE:
          self.cashRefundAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.DOUBLE:
          self.cardRefundAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.approvalCode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.cardType = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('StoreOrderDetail')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.storeId is not None:
      oprot.writeFieldBegin('storeId', TType.I64, 2)
      oprot.writeI64(self.storeId)
      oprot.writeFieldEnd()
    if self.advanceAmount is not None:
      oprot.writeFieldBegin('advanceAmount', TType.DOUBLE, 3)
      oprot.writeDouble(self.advanceAmount)
      oprot.writeFieldEnd()
    if self.cashAmount is not None:
      oprot.writeFieldBegin('cashAmount', TType.DOUBLE, 4)
      oprot.writeDouble(self.cashAmount)
      oprot.writeFieldEnd()
    if self.cardAmount is not None:
      oprot.writeFieldBegin('cardAmount', TType.DOUBLE, 5)
      oprot.writeDouble(self.cardAmount)
      oprot.writeFieldEnd()
    if self.payStatus is not None:
      oprot.writeFieldBegin('payStatus', TType.I32, 6)
      oprot.writeI32(self.payStatus)
      oprot.writeFieldEnd()
    if self.edcBank is not None:
      oprot.writeFieldBegin('edcBank', TType.STRING, 7)
      oprot.writeString(self.edcBank)
      oprot.writeFieldEnd()
    if self.cashRefundAmount is not None:
      oprot.writeFieldBegin('cashRefundAmount', TType.DOUBLE, 8)
      oprot.writeDouble(self.cashRefundAmount)
      oprot.writeFieldEnd()
    if self.cardRefundAmount is not None:
      oprot.writeFieldBegin('cardRefundAmount', TType.DOUBLE, 9)
      oprot.writeDouble(self.cardRefundAmount)
      oprot.writeFieldEnd()
    if self.approvalCode is not None:
      oprot.writeFieldBegin('approvalCode', TType.STRING, 10)
      oprot.writeString(self.approvalCode)
      oprot.writeFieldEnd()
    if self.cardType is not None:
      oprot.writeFieldBegin('cardType', TType.STRING, 11)
      oprot.writeString(self.cardType)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class StoreOrderCollection:
  """
  Attributes:
   - hotspotId
   - orderId
   - collectionType
   - productName
   - advanceAmount
   - cash
   - card
   - addedAt
   - pushedAt
   - pushedToOcr
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'hotspotId', None, None, ), # 1
    (2, TType.I64, 'orderId', None, None, ), # 2
    (3, TType.STRING, 'collectionType', None, None, ), # 3
    (4, TType.STRING, 'productName', None, None, ), # 4
    (5, TType.I64, 'advanceAmount', None, None, ), # 5
    (6, TType.I64, 'cash', None, None, ), # 6
    (7, TType.I64, 'card', None, None, ), # 7
    (8, TType.I64, 'addedAt', None, None, ), # 8
    (9, TType.I64, 'pushedAt', None, None, ), # 9
    (10, TType.BOOL, 'pushedToOcr', None, None, ), # 10
  )

  def __init__(self, hotspotId=None, orderId=None, collectionType=None, productName=None, advanceAmount=None, cash=None, card=None, addedAt=None, pushedAt=None, pushedToOcr=None,):
    self.hotspotId = hotspotId
    self.orderId = orderId
    self.collectionType = collectionType
    self.productName = productName
    self.advanceAmount = advanceAmount
    self.cash = cash
    self.card = card
    self.addedAt = addedAt
    self.pushedAt = pushedAt
    self.pushedToOcr = pushedToOcr

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.hotspotId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.collectionType = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.productName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.advanceAmount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.cash = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.card = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.addedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.pushedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.BOOL:
          self.pushedToOcr = iprot.readBool();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('StoreOrderCollection')
    if self.hotspotId is not None:
      oprot.writeFieldBegin('hotspotId', TType.STRING, 1)
      oprot.writeString(self.hotspotId)
      oprot.writeFieldEnd()
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 2)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.collectionType is not None:
      oprot.writeFieldBegin('collectionType', TType.STRING, 3)
      oprot.writeString(self.collectionType)
      oprot.writeFieldEnd()
    if self.productName is not None:
      oprot.writeFieldBegin('productName', TType.STRING, 4)
      oprot.writeString(self.productName)
      oprot.writeFieldEnd()
    if self.advanceAmount is not None:
      oprot.writeFieldBegin('advanceAmount', TType.I64, 5)
      oprot.writeI64(self.advanceAmount)
      oprot.writeFieldEnd()
    if self.cash is not None:
      oprot.writeFieldBegin('cash', TType.I64, 6)
      oprot.writeI64(self.cash)
      oprot.writeFieldEnd()
    if self.card is not None:
      oprot.writeFieldBegin('card', TType.I64, 7)
      oprot.writeI64(self.card)
      oprot.writeFieldEnd()
    if self.addedAt is not None:
      oprot.writeFieldBegin('addedAt', TType.I64, 8)
      oprot.writeI64(self.addedAt)
      oprot.writeFieldEnd()
    if self.pushedAt is not None:
      oprot.writeFieldBegin('pushedAt', TType.I64, 9)
      oprot.writeI64(self.pushedAt)
      oprot.writeFieldEnd()
    if self.pushedToOcr is not None:
      oprot.writeFieldBegin('pushedToOcr', TType.BOOL, 10)
      oprot.writeBool(self.pushedToOcr)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class EbayOrder:
  """
  Attributes:
   - orderId
   - salesRecordNumber
   - paisaPayId
   - ebayListingId
   - subsidyAmount
   - ebayTxnDate
   - transactionId
   - listingName
   - listingPrice
   - bluedartPaisaPayRef
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.I64, 'salesRecordNumber', None, None, ), # 2
    (3, TType.STRING, 'paisaPayId', None, None, ), # 3
    (4, TType.STRING, 'ebayListingId', None, None, ), # 4
    (5, TType.DOUBLE, 'subsidyAmount', None, None, ), # 5
    (6, TType.I64, 'ebayTxnDate', None, None, ), # 6
    (7, TType.STRING, 'transactionId', None, None, ), # 7
    (8, TType.STRING, 'listingName', None, None, ), # 8
    (9, TType.DOUBLE, 'listingPrice', None, None, ), # 9
    (10, TType.STRING, 'bluedartPaisaPayRef', None, None, ), # 10
  )

  def __init__(self, orderId=None, salesRecordNumber=None, paisaPayId=None, ebayListingId=None, subsidyAmount=None, ebayTxnDate=None, transactionId=None, listingName=None, listingPrice=None, bluedartPaisaPayRef=None,):
    self.orderId = orderId
    self.salesRecordNumber = salesRecordNumber
    self.paisaPayId = paisaPayId
    self.ebayListingId = ebayListingId
    self.subsidyAmount = subsidyAmount
    self.ebayTxnDate = ebayTxnDate
    self.transactionId = transactionId
    self.listingName = listingName
    self.listingPrice = listingPrice
    self.bluedartPaisaPayRef = bluedartPaisaPayRef

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.salesRecordNumber = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.paisaPayId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.ebayListingId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.subsidyAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.ebayTxnDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.transactionId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.listingName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.DOUBLE:
          self.listingPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.bluedartPaisaPayRef = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('EbayOrder')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.salesRecordNumber is not None:
      oprot.writeFieldBegin('salesRecordNumber', TType.I64, 2)
      oprot.writeI64(self.salesRecordNumber)
      oprot.writeFieldEnd()
    if self.paisaPayId is not None:
      oprot.writeFieldBegin('paisaPayId', TType.STRING, 3)
      oprot.writeString(self.paisaPayId)
      oprot.writeFieldEnd()
    if self.ebayListingId is not None:
      oprot.writeFieldBegin('ebayListingId', TType.STRING, 4)
      oprot.writeString(self.ebayListingId)
      oprot.writeFieldEnd()
    if self.subsidyAmount is not None:
      oprot.writeFieldBegin('subsidyAmount', TType.DOUBLE, 5)
      oprot.writeDouble(self.subsidyAmount)
      oprot.writeFieldEnd()
    if self.ebayTxnDate is not None:
      oprot.writeFieldBegin('ebayTxnDate', TType.I64, 6)
      oprot.writeI64(self.ebayTxnDate)
      oprot.writeFieldEnd()
    if self.transactionId is not None:
      oprot.writeFieldBegin('transactionId', TType.STRING, 7)
      oprot.writeString(self.transactionId)
      oprot.writeFieldEnd()
    if self.listingName is not None:
      oprot.writeFieldBegin('listingName', TType.STRING, 8)
      oprot.writeString(self.listingName)
      oprot.writeFieldEnd()
    if self.listingPrice is not None:
      oprot.writeFieldBegin('listingPrice', TType.DOUBLE, 9)
      oprot.writeDouble(self.listingPrice)
      oprot.writeFieldEnd()
    if self.bluedartPaisaPayRef is not None:
      oprot.writeFieldBegin('bluedartPaisaPayRef', TType.STRING, 10)
      oprot.writeString(self.bluedartPaisaPayRef)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class FbaItemPrices:
  """
  Attributes:
   - item_id
   - minFbaPrice
   - minMfnPrice
   - ourPrice
   - salePrice
   - minFbaPriceSnapshotDate
   - minMfnPriceSnapshotDate
   - ourPriceSnapshotDate
   - salePriceSnapshotDate
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'item_id', None, None, ), # 1
    (2, TType.DOUBLE, 'minFbaPrice', None, None, ), # 2
    (3, TType.DOUBLE, 'minMfnPrice', None, None, ), # 3
    (4, TType.DOUBLE, 'ourPrice', None, None, ), # 4
    (5, TType.DOUBLE, 'salePrice', None, None, ), # 5
    (6, TType.I64, 'minFbaPriceSnapshotDate', None, None, ), # 6
    (7, TType.I64, 'minMfnPriceSnapshotDate', None, None, ), # 7
    (8, TType.I64, 'ourPriceSnapshotDate', None, None, ), # 8
    (9, TType.I64, 'salePriceSnapshotDate', None, None, ), # 9
  )

  def __init__(self, item_id=None, minFbaPrice=None, minMfnPrice=None, ourPrice=None, salePrice=None, minFbaPriceSnapshotDate=None, minMfnPriceSnapshotDate=None, ourPriceSnapshotDate=None, salePriceSnapshotDate=None,):
    self.item_id = item_id
    self.minFbaPrice = minFbaPrice
    self.minMfnPrice = minMfnPrice
    self.ourPrice = ourPrice
    self.salePrice = salePrice
    self.minFbaPriceSnapshotDate = minFbaPriceSnapshotDate
    self.minMfnPriceSnapshotDate = minMfnPriceSnapshotDate
    self.ourPriceSnapshotDate = ourPriceSnapshotDate
    self.salePriceSnapshotDate = salePriceSnapshotDate

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.item_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.DOUBLE:
          self.minFbaPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.DOUBLE:
          self.minMfnPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.DOUBLE:
          self.ourPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.salePrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.minFbaPriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.minMfnPriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.ourPriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.salePriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('FbaItemPrices')
    if self.item_id is not None:
      oprot.writeFieldBegin('item_id', TType.I64, 1)
      oprot.writeI64(self.item_id)
      oprot.writeFieldEnd()
    if self.minFbaPrice is not None:
      oprot.writeFieldBegin('minFbaPrice', TType.DOUBLE, 2)
      oprot.writeDouble(self.minFbaPrice)
      oprot.writeFieldEnd()
    if self.minMfnPrice is not None:
      oprot.writeFieldBegin('minMfnPrice', TType.DOUBLE, 3)
      oprot.writeDouble(self.minMfnPrice)
      oprot.writeFieldEnd()
    if self.ourPrice is not None:
      oprot.writeFieldBegin('ourPrice', TType.DOUBLE, 4)
      oprot.writeDouble(self.ourPrice)
      oprot.writeFieldEnd()
    if self.salePrice is not None:
      oprot.writeFieldBegin('salePrice', TType.DOUBLE, 5)
      oprot.writeDouble(self.salePrice)
      oprot.writeFieldEnd()
    if self.minFbaPriceSnapshotDate is not None:
      oprot.writeFieldBegin('minFbaPriceSnapshotDate', TType.I64, 6)
      oprot.writeI64(self.minFbaPriceSnapshotDate)
      oprot.writeFieldEnd()
    if self.minMfnPriceSnapshotDate is not None:
      oprot.writeFieldBegin('minMfnPriceSnapshotDate', TType.I64, 7)
      oprot.writeI64(self.minMfnPriceSnapshotDate)
      oprot.writeFieldEnd()
    if self.ourPriceSnapshotDate is not None:
      oprot.writeFieldBegin('ourPriceSnapshotDate', TType.I64, 8)
      oprot.writeI64(self.ourPriceSnapshotDate)
      oprot.writeFieldEnd()
    if self.salePriceSnapshotDate is not None:
      oprot.writeFieldBegin('salePriceSnapshotDate', TType.I64, 9)
      oprot.writeI64(self.salePriceSnapshotDate)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class SnapdealOrder:
  """
  Attributes:
   - orderId
   - referenceCode
   - subOrderId
   - listingPrice
   - productName
   - snapdealTxnDate
   - maxNlc
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.STRING, 'referenceCode', None, None, ), # 2
    (3, TType.STRING, 'subOrderId', None, None, ), # 3
    (4, TType.DOUBLE, 'listingPrice', None, None, ), # 4
    (5, TType.STRING, 'productName', None, None, ), # 5
    (6, TType.I64, 'snapdealTxnDate', None, None, ), # 6
    (7, TType.DOUBLE, 'maxNlc', None, None, ), # 7
  )

  def __init__(self, orderId=None, referenceCode=None, subOrderId=None, listingPrice=None, productName=None, snapdealTxnDate=None, maxNlc=None,):
    self.orderId = orderId
    self.referenceCode = referenceCode
    self.subOrderId = subOrderId
    self.listingPrice = listingPrice
    self.productName = productName
    self.snapdealTxnDate = snapdealTxnDate
    self.maxNlc = maxNlc

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.referenceCode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.subOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.DOUBLE:
          self.listingPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.productName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.snapdealTxnDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.DOUBLE:
          self.maxNlc = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('SnapdealOrder')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.referenceCode is not None:
      oprot.writeFieldBegin('referenceCode', TType.STRING, 2)
      oprot.writeString(self.referenceCode)
      oprot.writeFieldEnd()
    if self.subOrderId is not None:
      oprot.writeFieldBegin('subOrderId', TType.STRING, 3)
      oprot.writeString(self.subOrderId)
      oprot.writeFieldEnd()
    if self.listingPrice is not None:
      oprot.writeFieldBegin('listingPrice', TType.DOUBLE, 4)
      oprot.writeDouble(self.listingPrice)
      oprot.writeFieldEnd()
    if self.productName is not None:
      oprot.writeFieldBegin('productName', TType.STRING, 5)
      oprot.writeString(self.productName)
      oprot.writeFieldEnd()
    if self.snapdealTxnDate is not None:
      oprot.writeFieldBegin('snapdealTxnDate', TType.I64, 6)
      oprot.writeI64(self.snapdealTxnDate)
      oprot.writeFieldEnd()
    if self.maxNlc is not None:
      oprot.writeFieldBegin('maxNlc', TType.DOUBLE, 7)
      oprot.writeDouble(self.maxNlc)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class FlipkartOrder:
  """
  Attributes:
   - flipkartOrderId
   - flipkartSubOrderId
   - flipkartTxnDate
   - orderId
   - shippingPrice
   - octroiFee
   - emiFee
   - maxNlc
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'flipkartOrderId', None, None, ), # 1
    (2, TType.STRING, 'flipkartSubOrderId', None, None, ), # 2
    (3, TType.I64, 'flipkartTxnDate', None, None, ), # 3
    (4, TType.I64, 'orderId', None, None, ), # 4
    (5, TType.DOUBLE, 'shippingPrice', None, None, ), # 5
    (6, TType.DOUBLE, 'octroiFee', None, None, ), # 6
    (7, TType.DOUBLE, 'emiFee', None, None, ), # 7
    (8, TType.DOUBLE, 'maxNlc', None, None, ), # 8
  )

  def __init__(self, flipkartOrderId=None, flipkartSubOrderId=None, flipkartTxnDate=None, orderId=None, shippingPrice=None, octroiFee=None, emiFee=None, maxNlc=None,):
    self.flipkartOrderId = flipkartOrderId
    self.flipkartSubOrderId = flipkartSubOrderId
    self.flipkartTxnDate = flipkartTxnDate
    self.orderId = orderId
    self.shippingPrice = shippingPrice
    self.octroiFee = octroiFee
    self.emiFee = emiFee
    self.maxNlc = maxNlc

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.flipkartOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.flipkartSubOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.flipkartTxnDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.shippingPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.octroiFee = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.DOUBLE:
          self.emiFee = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.DOUBLE:
          self.maxNlc = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('FlipkartOrder')
    if self.flipkartOrderId is not None:
      oprot.writeFieldBegin('flipkartOrderId', TType.STRING, 1)
      oprot.writeString(self.flipkartOrderId)
      oprot.writeFieldEnd()
    if self.flipkartSubOrderId is not None:
      oprot.writeFieldBegin('flipkartSubOrderId', TType.STRING, 2)
      oprot.writeString(self.flipkartSubOrderId)
      oprot.writeFieldEnd()
    if self.flipkartTxnDate is not None:
      oprot.writeFieldBegin('flipkartTxnDate', TType.I64, 3)
      oprot.writeI64(self.flipkartTxnDate)
      oprot.writeFieldEnd()
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 4)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.shippingPrice is not None:
      oprot.writeFieldBegin('shippingPrice', TType.DOUBLE, 5)
      oprot.writeDouble(self.shippingPrice)
      oprot.writeFieldEnd()
    if self.octroiFee is not None:
      oprot.writeFieldBegin('octroiFee', TType.DOUBLE, 6)
      oprot.writeDouble(self.octroiFee)
      oprot.writeFieldEnd()
    if self.emiFee is not None:
      oprot.writeFieldBegin('emiFee', TType.DOUBLE, 7)
      oprot.writeDouble(self.emiFee)
      oprot.writeFieldEnd()
    if self.maxNlc is not None:
      oprot.writeFieldBegin('maxNlc', TType.DOUBLE, 8)
      oprot.writeDouble(self.maxNlc)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class OrderStatusGroups:
  """
  Attributes:
   - codCancellable
   - prepaidCancellableBeforeBilled
   - prepaidCancellableAfterBilled
   - openOrders
   - refundedOrders
   - shippedOrders
   - failedOrders
  """

  thrift_spec = (
    None, # 0
    (1, TType.LIST, 'codCancellable', (TType.I32,None), [
            2,
            3,
            4,
            5,
            35,
            36,
            37,
            7,
            8,
    ], ), # 1
    (2, TType.LIST, 'prepaidCancellableBeforeBilled', (TType.I32,None), [
            2,
            3,
            4,
            5,
            35,
            36,
            37,
    ], ), # 2
    (3, TType.LIST, 'prepaidCancellableAfterBilled', (TType.I32,None), [
            7,
            8,
    ], ), # 3
    (4, TType.LIST, 'openOrders', (TType.I32,None), [
            0,
            2,
            3,
            4,
            5,
            7,
            8,
            9,
            10,
            11,
            16,
            17,
            13,
            14,
            20,
            21,
            22,
            23,
            24,
            25,
            26,
            27,
            35,
            36,
            37,
            38,
            39,
            40,
            41,
            42,
            43,
            45,
            46,
            51,
            52,
            57,
            58,
            59,
            60,
            61,
            62,
            63,
            64,
            65,
            66,
            67,
            80,
            81,
    ], ), # 4
    (5, TType.LIST, 'refundedOrders', (TType.I32,None), [
            15,
            31,
            32,
            33,
            34,
            48,
            50,
            54,
            56,
            70,
            72,
            76,
            74,
            79,
    ], ), # 5
    (6, TType.LIST, 'shippedOrders', (TType.I32,None), [
            9,
            10,
            16,
            17,
            20,
            21,
            22,
            23,
            24,
            25,
            26,
            27,
            40,
            42,
            43,
            45,
            46,
            51,
            52,
            57,
            58,
            59,
            60,
            61,
            62,
            63,
            64,
            65,
            66,
            67,
            68,
            77,
            80,
            81,
    ], ), # 6
    (7, TType.LIST, 'failedOrders', (TType.I32,None), [
            1,
            34,
            6,
            33,
            29,
            32,
            30,
            31,
            28,
            18,
    ], ), # 7
  )

  def __init__(self, codCancellable=thrift_spec[1][4], prepaidCancellableBeforeBilled=thrift_spec[2][4], prepaidCancellableAfterBilled=thrift_spec[3][4], openOrders=thrift_spec[4][4], refundedOrders=thrift_spec[5][4], shippedOrders=thrift_spec[6][4], failedOrders=thrift_spec[7][4],):
    if codCancellable is self.thrift_spec[1][4]:
      codCancellable = [
            2,
            3,
            4,
            5,
            35,
            36,
            37,
            7,
            8,
    ]
    self.codCancellable = codCancellable
    if prepaidCancellableBeforeBilled is self.thrift_spec[2][4]:
      prepaidCancellableBeforeBilled = [
            2,
            3,
            4,
            5,
            35,
            36,
            37,
    ]
    self.prepaidCancellableBeforeBilled = prepaidCancellableBeforeBilled
    if prepaidCancellableAfterBilled is self.thrift_spec[3][4]:
      prepaidCancellableAfterBilled = [
            7,
            8,
    ]
    self.prepaidCancellableAfterBilled = prepaidCancellableAfterBilled
    if openOrders is self.thrift_spec[4][4]:
      openOrders = [
            0,
            2,
            3,
            4,
            5,
            7,
            8,
            9,
            10,
            11,
            16,
            17,
            13,
            14,
            20,
            21,
            22,
            23,
            24,
            25,
            26,
            27,
            35,
            36,
            37,
            38,
            39,
            40,
            41,
            42,
            43,
            45,
            46,
            51,
            52,
            57,
            58,
            59,
            60,
            61,
            62,
            63,
            64,
            65,
            66,
            67,
            80,
            81,
    ]
    self.openOrders = openOrders
    if refundedOrders is self.thrift_spec[5][4]:
      refundedOrders = [
            15,
            31,
            32,
            33,
            34,
            48,
            50,
            54,
            56,
            70,
            72,
            76,
            74,
            79,
    ]
    self.refundedOrders = refundedOrders
    if shippedOrders is self.thrift_spec[6][4]:
      shippedOrders = [
            9,
            10,
            16,
            17,
            20,
            21,
            22,
            23,
            24,
            25,
            26,
            27,
            40,
            42,
            43,
            45,
            46,
            51,
            52,
            57,
            58,
            59,
            60,
            61,
            62,
            63,
            64,
            65,
            66,
            67,
            68,
            77,
            80,
            81,
    ]
    self.shippedOrders = shippedOrders
    if failedOrders is self.thrift_spec[7][4]:
      failedOrders = [
            1,
            34,
            6,
            33,
            29,
            32,
            30,
            31,
            28,
            18,
    ]
    self.failedOrders = failedOrders

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.LIST:
          self.codCancellable = []
          (_etype60, _size57) = iprot.readListBegin()
          for _i61 in xrange(_size57):
            _elem62 = iprot.readI32();
            self.codCancellable.append(_elem62)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.LIST:
          self.prepaidCancellableBeforeBilled = []
          (_etype66, _size63) = iprot.readListBegin()
          for _i67 in xrange(_size63):
            _elem68 = iprot.readI32();
            self.prepaidCancellableBeforeBilled.append(_elem68)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.prepaidCancellableAfterBilled = []
          (_etype72, _size69) = iprot.readListBegin()
          for _i73 in xrange(_size69):
            _elem74 = iprot.readI32();
            self.prepaidCancellableAfterBilled.append(_elem74)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.LIST:
          self.openOrders = []
          (_etype78, _size75) = iprot.readListBegin()
          for _i79 in xrange(_size75):
            _elem80 = iprot.readI32();
            self.openOrders.append(_elem80)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.LIST:
          self.refundedOrders = []
          (_etype84, _size81) = iprot.readListBegin()
          for _i85 in xrange(_size81):
            _elem86 = iprot.readI32();
            self.refundedOrders.append(_elem86)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.LIST:
          self.shippedOrders = []
          (_etype90, _size87) = iprot.readListBegin()
          for _i91 in xrange(_size87):
            _elem92 = iprot.readI32();
            self.shippedOrders.append(_elem92)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.LIST:
          self.failedOrders = []
          (_etype96, _size93) = iprot.readListBegin()
          for _i97 in xrange(_size93):
            _elem98 = iprot.readI32();
            self.failedOrders.append(_elem98)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('OrderStatusGroups')
    if self.codCancellable is not None:
      oprot.writeFieldBegin('codCancellable', TType.LIST, 1)
      oprot.writeListBegin(TType.I32, len(self.codCancellable))
      for iter99 in self.codCancellable:
        oprot.writeI32(iter99)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.prepaidCancellableBeforeBilled is not None:
      oprot.writeFieldBegin('prepaidCancellableBeforeBilled', TType.LIST, 2)
      oprot.writeListBegin(TType.I32, len(self.prepaidCancellableBeforeBilled))
      for iter100 in self.prepaidCancellableBeforeBilled:
        oprot.writeI32(iter100)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.prepaidCancellableAfterBilled is not None:
      oprot.writeFieldBegin('prepaidCancellableAfterBilled', TType.LIST, 3)
      oprot.writeListBegin(TType.I32, len(self.prepaidCancellableAfterBilled))
      for iter101 in self.prepaidCancellableAfterBilled:
        oprot.writeI32(iter101)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.openOrders is not None:
      oprot.writeFieldBegin('openOrders', TType.LIST, 4)
      oprot.writeListBegin(TType.I32, len(self.openOrders))
      for iter102 in self.openOrders:
        oprot.writeI32(iter102)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.refundedOrders is not None:
      oprot.writeFieldBegin('refundedOrders', TType.LIST, 5)
      oprot.writeListBegin(TType.I32, len(self.refundedOrders))
      for iter103 in self.refundedOrders:
        oprot.writeI32(iter103)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.shippedOrders is not None:
      oprot.writeFieldBegin('shippedOrders', TType.LIST, 6)
      oprot.writeListBegin(TType.I32, len(self.shippedOrders))
      for iter104 in self.shippedOrders:
        oprot.writeI32(iter104)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    if self.failedOrders is not None:
      oprot.writeFieldBegin('failedOrders', TType.LIST, 7)
      oprot.writeListBegin(TType.I32, len(self.failedOrders))
      for iter105 in self.failedOrders:
        oprot.writeI32(iter105)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class AmazonFbaSalesSnapshot:
  """
  Attributes:
   - dateOfSale
   - item_id
   - totalOrderCount
   - amazonFbaInventory
   - isOutOfStock
   - salePrice
   - minFbaPrice
   - minMfnPrice
   - totalSale
   - promotionSale
   - promotionOrderCount
   - ourPrice
   - minFbaPriceSnapshotDate
   - minMfnPriceSnapshotDate
   - ourPriceSnapshotDate
   - salePriceSnapshotDate
   - fcLocation
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'dateOfSale', None, None, ), # 1
    (2, TType.I64, 'item_id', None, None, ), # 2
    (3, TType.I32, 'totalOrderCount', None, None, ), # 3
    (4, TType.I64, 'amazonFbaInventory', None, None, ), # 4
    (5, TType.BOOL, 'isOutOfStock', None, None, ), # 5
    (6, TType.DOUBLE, 'salePrice', None, None, ), # 6
    (7, TType.DOUBLE, 'minFbaPrice', None, None, ), # 7
    (8, TType.DOUBLE, 'minMfnPrice', None, None, ), # 8
    (9, TType.DOUBLE, 'totalSale', None, None, ), # 9
    (10, TType.DOUBLE, 'promotionSale', None, None, ), # 10
    (11, TType.I32, 'promotionOrderCount', None, None, ), # 11
    (12, TType.DOUBLE, 'ourPrice', None, None, ), # 12
    (13, TType.I64, 'minFbaPriceSnapshotDate', None, None, ), # 13
    (14, TType.I64, 'minMfnPriceSnapshotDate', None, None, ), # 14
    (15, TType.I64, 'ourPriceSnapshotDate', None, None, ), # 15
    (16, TType.I64, 'salePriceSnapshotDate', None, None, ), # 16
    (17, TType.I32, 'fcLocation', None, None, ), # 17
  )

  def __init__(self, dateOfSale=None, item_id=None, totalOrderCount=None, amazonFbaInventory=None, isOutOfStock=None, salePrice=None, minFbaPrice=None, minMfnPrice=None, totalSale=None, promotionSale=None, promotionOrderCount=None, ourPrice=None, minFbaPriceSnapshotDate=None, minMfnPriceSnapshotDate=None, ourPriceSnapshotDate=None, salePriceSnapshotDate=None, fcLocation=None,):
    self.dateOfSale = dateOfSale
    self.item_id = item_id
    self.totalOrderCount = totalOrderCount
    self.amazonFbaInventory = amazonFbaInventory
    self.isOutOfStock = isOutOfStock
    self.salePrice = salePrice
    self.minFbaPrice = minFbaPrice
    self.minMfnPrice = minMfnPrice
    self.totalSale = totalSale
    self.promotionSale = promotionSale
    self.promotionOrderCount = promotionOrderCount
    self.ourPrice = ourPrice
    self.minFbaPriceSnapshotDate = minFbaPriceSnapshotDate
    self.minMfnPriceSnapshotDate = minMfnPriceSnapshotDate
    self.ourPriceSnapshotDate = ourPriceSnapshotDate
    self.salePriceSnapshotDate = salePriceSnapshotDate
    self.fcLocation = fcLocation

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.dateOfSale = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.item_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.totalOrderCount = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.amazonFbaInventory = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.isOutOfStock = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.salePrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.DOUBLE:
          self.minFbaPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.DOUBLE:
          self.minMfnPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.DOUBLE:
          self.totalSale = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.DOUBLE:
          self.promotionSale = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I32:
          self.promotionOrderCount = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.DOUBLE:
          self.ourPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.minFbaPriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.I64:
          self.minMfnPriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.I64:
          self.ourPriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.I64:
          self.salePriceSnapshotDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.I32:
          self.fcLocation = iprot.readI32();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('AmazonFbaSalesSnapshot')
    if self.dateOfSale is not None:
      oprot.writeFieldBegin('dateOfSale', TType.I64, 1)
      oprot.writeI64(self.dateOfSale)
      oprot.writeFieldEnd()
    if self.item_id is not None:
      oprot.writeFieldBegin('item_id', TType.I64, 2)
      oprot.writeI64(self.item_id)
      oprot.writeFieldEnd()
    if self.totalOrderCount is not None:
      oprot.writeFieldBegin('totalOrderCount', TType.I32, 3)
      oprot.writeI32(self.totalOrderCount)
      oprot.writeFieldEnd()
    if self.amazonFbaInventory is not None:
      oprot.writeFieldBegin('amazonFbaInventory', TType.I64, 4)
      oprot.writeI64(self.amazonFbaInventory)
      oprot.writeFieldEnd()
    if self.isOutOfStock is not None:
      oprot.writeFieldBegin('isOutOfStock', TType.BOOL, 5)
      oprot.writeBool(self.isOutOfStock)
      oprot.writeFieldEnd()
    if self.salePrice is not None:
      oprot.writeFieldBegin('salePrice', TType.DOUBLE, 6)
      oprot.writeDouble(self.salePrice)
      oprot.writeFieldEnd()
    if self.minFbaPrice is not None:
      oprot.writeFieldBegin('minFbaPrice', TType.DOUBLE, 7)
      oprot.writeDouble(self.minFbaPrice)
      oprot.writeFieldEnd()
    if self.minMfnPrice is not None:
      oprot.writeFieldBegin('minMfnPrice', TType.DOUBLE, 8)
      oprot.writeDouble(self.minMfnPrice)
      oprot.writeFieldEnd()
    if self.totalSale is not None:
      oprot.writeFieldBegin('totalSale', TType.DOUBLE, 9)
      oprot.writeDouble(self.totalSale)
      oprot.writeFieldEnd()
    if self.promotionSale is not None:
      oprot.writeFieldBegin('promotionSale', TType.DOUBLE, 10)
      oprot.writeDouble(self.promotionSale)
      oprot.writeFieldEnd()
    if self.promotionOrderCount is not None:
      oprot.writeFieldBegin('promotionOrderCount', TType.I32, 11)
      oprot.writeI32(self.promotionOrderCount)
      oprot.writeFieldEnd()
    if self.ourPrice is not None:
      oprot.writeFieldBegin('ourPrice', TType.DOUBLE, 12)
      oprot.writeDouble(self.ourPrice)
      oprot.writeFieldEnd()
    if self.minFbaPriceSnapshotDate is not None:
      oprot.writeFieldBegin('minFbaPriceSnapshotDate', TType.I64, 13)
      oprot.writeI64(self.minFbaPriceSnapshotDate)
      oprot.writeFieldEnd()
    if self.minMfnPriceSnapshotDate is not None:
      oprot.writeFieldBegin('minMfnPriceSnapshotDate', TType.I64, 14)
      oprot.writeI64(self.minMfnPriceSnapshotDate)
      oprot.writeFieldEnd()
    if self.ourPriceSnapshotDate is not None:
      oprot.writeFieldBegin('ourPriceSnapshotDate', TType.I64, 15)
      oprot.writeI64(self.ourPriceSnapshotDate)
      oprot.writeFieldEnd()
    if self.salePriceSnapshotDate is not None:
      oprot.writeFieldBegin('salePriceSnapshotDate', TType.I64, 16)
      oprot.writeI64(self.salePriceSnapshotDate)
      oprot.writeFieldEnd()
    if self.fcLocation is not None:
      oprot.writeFieldBegin('fcLocation', TType.I32, 17)
      oprot.writeI32(self.fcLocation)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class AmazonFbaOrderReturns:
  """
  Attributes:
   - amazonOrderId
   - insertionTimestamp
   - sku
   - creationTimestamp
   - shippedQuantity
   - sellableReturnQuantity
   - nonSellableReturnQuantity
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'amazonOrderId', None, None, ), # 1
    (2, TType.I64, 'insertionTimestamp', None, None, ), # 2
    (3, TType.I64, 'sku', None, None, ), # 3
    (4, TType.I64, 'creationTimestamp', None, None, ), # 4
    (5, TType.I64, 'shippedQuantity', None, None, ), # 5
    (6, TType.I64, 'sellableReturnQuantity', None, None, ), # 6
    (7, TType.I64, 'nonSellableReturnQuantity', None, None, ), # 7
  )

  def __init__(self, amazonOrderId=None, insertionTimestamp=None, sku=None, creationTimestamp=None, shippedQuantity=None, sellableReturnQuantity=None, nonSellableReturnQuantity=None,):
    self.amazonOrderId = amazonOrderId
    self.insertionTimestamp = insertionTimestamp
    self.sku = sku
    self.creationTimestamp = creationTimestamp
    self.shippedQuantity = shippedQuantity
    self.sellableReturnQuantity = sellableReturnQuantity
    self.nonSellableReturnQuantity = nonSellableReturnQuantity

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.amazonOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.insertionTimestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.sku = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.creationTimestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.shippedQuantity = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.sellableReturnQuantity = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.nonSellableReturnQuantity = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('AmazonFbaOrderReturns')
    if self.amazonOrderId is not None:
      oprot.writeFieldBegin('amazonOrderId', TType.STRING, 1)
      oprot.writeString(self.amazonOrderId)
      oprot.writeFieldEnd()
    if self.insertionTimestamp is not None:
      oprot.writeFieldBegin('insertionTimestamp', TType.I64, 2)
      oprot.writeI64(self.insertionTimestamp)
      oprot.writeFieldEnd()
    if self.sku is not None:
      oprot.writeFieldBegin('sku', TType.I64, 3)
      oprot.writeI64(self.sku)
      oprot.writeFieldEnd()
    if self.creationTimestamp is not None:
      oprot.writeFieldBegin('creationTimestamp', TType.I64, 4)
      oprot.writeI64(self.creationTimestamp)
      oprot.writeFieldEnd()
    if self.shippedQuantity is not None:
      oprot.writeFieldBegin('shippedQuantity', TType.I64, 5)
      oprot.writeI64(self.shippedQuantity)
      oprot.writeFieldEnd()
    if self.sellableReturnQuantity is not None:
      oprot.writeFieldBegin('sellableReturnQuantity', TType.I64, 6)
      oprot.writeI64(self.sellableReturnQuantity)
      oprot.writeFieldEnd()
    if self.nonSellableReturnQuantity is not None:
      oprot.writeFieldBegin('nonSellableReturnQuantity', TType.I64, 7)
      oprot.writeI64(self.nonSellableReturnQuantity)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class FlipkartAdvantageOrder:
  """
  Attributes:
   - fkOrderId
   - fkOrderItemId
   - sku
   - creationTimestamp
   - customerName
   - customerAddress
   - pincode
   - customerCity
   - customerState
   - customerPhone
   - status
   - quantity
   - totalPrice
   - listPrice
   - modifiedDate
   - listingId
   - cancelReason
   - returnReason
   - freebieItemId
   - productTitle
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'fkOrderId', None, None, ), # 1
    (2, TType.STRING, 'fkOrderItemId', None, None, ), # 2
    (3, TType.I64, 'sku', None, None, ), # 3
    (4, TType.I64, 'creationTimestamp', None, None, ), # 4
    (5, TType.STRING, 'customerName', None, None, ), # 5
    (6, TType.STRING, 'customerAddress', None, None, ), # 6
    (7, TType.STRING, 'pincode', None, None, ), # 7
    (8, TType.STRING, 'customerCity', None, None, ), # 8
    (9, TType.STRING, 'customerState', None, None, ), # 9
    (10, TType.STRING, 'customerPhone', None, None, ), # 10
    (11, TType.STRING, 'status', None, None, ), # 11
    (12, TType.I64, 'quantity', None, None, ), # 12
    (13, TType.DOUBLE, 'totalPrice', None, None, ), # 13
    (14, TType.DOUBLE, 'listPrice', None, None, ), # 14
    (15, TType.I64, 'modifiedDate', None, None, ), # 15
    (16, TType.STRING, 'listingId', None, None, ), # 16
    (17, TType.STRING, 'cancelReason', None, None, ), # 17
    (18, TType.STRING, 'returnReason', None, None, ), # 18
    (19, TType.STRING, 'freebieItemId', None, None, ), # 19
    (20, TType.STRING, 'productTitle', None, None, ), # 20
  )

  def __init__(self, fkOrderId=None, fkOrderItemId=None, sku=None, creationTimestamp=None, customerName=None, customerAddress=None, pincode=None, customerCity=None, customerState=None, customerPhone=None, status=None, quantity=None, totalPrice=None, listPrice=None, modifiedDate=None, listingId=None, cancelReason=None, returnReason=None, freebieItemId=None, productTitle=None,):
    self.fkOrderId = fkOrderId
    self.fkOrderItemId = fkOrderItemId
    self.sku = sku
    self.creationTimestamp = creationTimestamp
    self.customerName = customerName
    self.customerAddress = customerAddress
    self.pincode = pincode
    self.customerCity = customerCity
    self.customerState = customerState
    self.customerPhone = customerPhone
    self.status = status
    self.quantity = quantity
    self.totalPrice = totalPrice
    self.listPrice = listPrice
    self.modifiedDate = modifiedDate
    self.listingId = listingId
    self.cancelReason = cancelReason
    self.returnReason = returnReason
    self.freebieItemId = freebieItemId
    self.productTitle = productTitle

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.fkOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.fkOrderItemId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.sku = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.creationTimestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.customerName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.customerAddress = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.pincode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.customerCity = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.customerState = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.customerPhone = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.status = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.quantity = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.DOUBLE:
          self.totalPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.DOUBLE:
          self.listPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.I64:
          self.modifiedDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRING:
          self.listingId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.STRING:
          self.cancelReason = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.STRING:
          self.returnReason = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.STRING:
          self.freebieItemId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 20:
        if ftype == TType.STRING:
          self.productTitle = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('FlipkartAdvantageOrder')
    if self.fkOrderId is not None:
      oprot.writeFieldBegin('fkOrderId', TType.STRING, 1)
      oprot.writeString(self.fkOrderId)
      oprot.writeFieldEnd()
    if self.fkOrderItemId is not None:
      oprot.writeFieldBegin('fkOrderItemId', TType.STRING, 2)
      oprot.writeString(self.fkOrderItemId)
      oprot.writeFieldEnd()
    if self.sku is not None:
      oprot.writeFieldBegin('sku', TType.I64, 3)
      oprot.writeI64(self.sku)
      oprot.writeFieldEnd()
    if self.creationTimestamp is not None:
      oprot.writeFieldBegin('creationTimestamp', TType.I64, 4)
      oprot.writeI64(self.creationTimestamp)
      oprot.writeFieldEnd()
    if self.customerName is not None:
      oprot.writeFieldBegin('customerName', TType.STRING, 5)
      oprot.writeString(self.customerName)
      oprot.writeFieldEnd()
    if self.customerAddress is not None:
      oprot.writeFieldBegin('customerAddress', TType.STRING, 6)
      oprot.writeString(self.customerAddress)
      oprot.writeFieldEnd()
    if self.pincode is not None:
      oprot.writeFieldBegin('pincode', TType.STRING, 7)
      oprot.writeString(self.pincode)
      oprot.writeFieldEnd()
    if self.customerCity is not None:
      oprot.writeFieldBegin('customerCity', TType.STRING, 8)
      oprot.writeString(self.customerCity)
      oprot.writeFieldEnd()
    if self.customerState is not None:
      oprot.writeFieldBegin('customerState', TType.STRING, 9)
      oprot.writeString(self.customerState)
      oprot.writeFieldEnd()
    if self.customerPhone is not None:
      oprot.writeFieldBegin('customerPhone', TType.STRING, 10)
      oprot.writeString(self.customerPhone)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.STRING, 11)
      oprot.writeString(self.status)
      oprot.writeFieldEnd()
    if self.quantity is not None:
      oprot.writeFieldBegin('quantity', TType.I64, 12)
      oprot.writeI64(self.quantity)
      oprot.writeFieldEnd()
    if self.totalPrice is not None:
      oprot.writeFieldBegin('totalPrice', TType.DOUBLE, 13)
      oprot.writeDouble(self.totalPrice)
      oprot.writeFieldEnd()
    if self.listPrice is not None:
      oprot.writeFieldBegin('listPrice', TType.DOUBLE, 14)
      oprot.writeDouble(self.listPrice)
      oprot.writeFieldEnd()
    if self.modifiedDate is not None:
      oprot.writeFieldBegin('modifiedDate', TType.I64, 15)
      oprot.writeI64(self.modifiedDate)
      oprot.writeFieldEnd()
    if self.listingId is not None:
      oprot.writeFieldBegin('listingId', TType.STRING, 16)
      oprot.writeString(self.listingId)
      oprot.writeFieldEnd()
    if self.cancelReason is not None:
      oprot.writeFieldBegin('cancelReason', TType.STRING, 17)
      oprot.writeString(self.cancelReason)
      oprot.writeFieldEnd()
    if self.returnReason is not None:
      oprot.writeFieldBegin('returnReason', TType.STRING, 18)
      oprot.writeString(self.returnReason)
      oprot.writeFieldEnd()
    if self.freebieItemId is not None:
      oprot.writeFieldBegin('freebieItemId', TType.STRING, 19)
      oprot.writeString(self.freebieItemId)
      oprot.writeFieldEnd()
    if self.productTitle is not None:
      oprot.writeFieldBegin('productTitle', TType.STRING, 20)
      oprot.writeString(self.productTitle)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class FlipkartFaSalesSnapshot:
  """
  Attributes:
   - dateOfSale
   - item_id
   - totalOrderCount
   - isOutOfStock
   - totalSale
   - ourPrice
   - fcLocation
   - returnQuantity
   - returnValue
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'dateOfSale', None, None, ), # 1
    (2, TType.I64, 'item_id', None, None, ), # 2
    (3, TType.I32, 'totalOrderCount', None, None, ), # 3
    (4, TType.BOOL, 'isOutOfStock', None, None, ), # 4
    (5, TType.DOUBLE, 'totalSale', None, None, ), # 5
    (6, TType.DOUBLE, 'ourPrice', None, None, ), # 6
    (7, TType.I32, 'fcLocation', None, None, ), # 7
    (8, TType.I32, 'returnQuantity', None, None, ), # 8
    (9, TType.DOUBLE, 'returnValue', None, None, ), # 9
  )

  def __init__(self, dateOfSale=None, item_id=None, totalOrderCount=None, isOutOfStock=None, totalSale=None, ourPrice=None, fcLocation=None, returnQuantity=None, returnValue=None,):
    self.dateOfSale = dateOfSale
    self.item_id = item_id
    self.totalOrderCount = totalOrderCount
    self.isOutOfStock = isOutOfStock
    self.totalSale = totalSale
    self.ourPrice = ourPrice
    self.fcLocation = fcLocation
    self.returnQuantity = returnQuantity
    self.returnValue = returnValue

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.dateOfSale = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.item_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.totalOrderCount = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.BOOL:
          self.isOutOfStock = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.totalSale = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.ourPrice = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I32:
          self.fcLocation = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I32:
          self.returnQuantity = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.DOUBLE:
          self.returnValue = iprot.readDouble();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('FlipkartFaSalesSnapshot')
    if self.dateOfSale is not None:
      oprot.writeFieldBegin('dateOfSale', TType.I64, 1)
      oprot.writeI64(self.dateOfSale)
      oprot.writeFieldEnd()
    if self.item_id is not None:
      oprot.writeFieldBegin('item_id', TType.I64, 2)
      oprot.writeI64(self.item_id)
      oprot.writeFieldEnd()
    if self.totalOrderCount is not None:
      oprot.writeFieldBegin('totalOrderCount', TType.I32, 3)
      oprot.writeI32(self.totalOrderCount)
      oprot.writeFieldEnd()
    if self.isOutOfStock is not None:
      oprot.writeFieldBegin('isOutOfStock', TType.BOOL, 4)
      oprot.writeBool(self.isOutOfStock)
      oprot.writeFieldEnd()
    if self.totalSale is not None:
      oprot.writeFieldBegin('totalSale', TType.DOUBLE, 5)
      oprot.writeDouble(self.totalSale)
      oprot.writeFieldEnd()
    if self.ourPrice is not None:
      oprot.writeFieldBegin('ourPrice', TType.DOUBLE, 6)
      oprot.writeDouble(self.ourPrice)
      oprot.writeFieldEnd()
    if self.fcLocation is not None:
      oprot.writeFieldBegin('fcLocation', TType.I32, 7)
      oprot.writeI32(self.fcLocation)
      oprot.writeFieldEnd()
    if self.returnQuantity is not None:
      oprot.writeFieldBegin('returnQuantity', TType.I32, 8)
      oprot.writeI32(self.returnQuantity)
      oprot.writeFieldEnd()
    if self.returnValue is not None:
      oprot.writeFieldBegin('returnValue', TType.DOUBLE, 9)
      oprot.writeDouble(self.returnValue)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class AmazonHourlySaleSnapshot:
  """
  Attributes:
   - snapshotTime
   - item_id
   - totalOrderCount
   - amazonFbaInventory
   - isOutOfStock
   - totalSale
   - promotionSale
   - promotionOrderCount
   - fcLocation
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'snapshotTime', None, None, ), # 1
    (2, TType.I64, 'item_id', None, None, ), # 2
    (3, TType.I32, 'totalOrderCount', None, None, ), # 3
    (4, TType.I64, 'amazonFbaInventory', None, None, ), # 4
    (5, TType.BOOL, 'isOutOfStock', None, None, ), # 5
    (6, TType.DOUBLE, 'totalSale', None, None, ), # 6
    (7, TType.DOUBLE, 'promotionSale', None, None, ), # 7
    (8, TType.I32, 'promotionOrderCount', None, None, ), # 8
    (9, TType.I32, 'fcLocation', None, None, ), # 9
  )

  def __init__(self, snapshotTime=None, item_id=None, totalOrderCount=None, amazonFbaInventory=None, isOutOfStock=None, totalSale=None, promotionSale=None, promotionOrderCount=None, fcLocation=None,):
    self.snapshotTime = snapshotTime
    self.item_id = item_id
    self.totalOrderCount = totalOrderCount
    self.amazonFbaInventory = amazonFbaInventory
    self.isOutOfStock = isOutOfStock
    self.totalSale = totalSale
    self.promotionSale = promotionSale
    self.promotionOrderCount = promotionOrderCount
    self.fcLocation = fcLocation

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.snapshotTime = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.item_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I32:
          self.totalOrderCount = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.amazonFbaInventory = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.isOutOfStock = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.totalSale = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.DOUBLE:
          self.promotionSale = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I32:
          self.promotionOrderCount = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I32:
          self.fcLocation = iprot.readI32();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('AmazonHourlySaleSnapshot')
    if self.snapshotTime is not None:
      oprot.writeFieldBegin('snapshotTime', TType.I64, 1)
      oprot.writeI64(self.snapshotTime)
      oprot.writeFieldEnd()
    if self.item_id is not None:
      oprot.writeFieldBegin('item_id', TType.I64, 2)
      oprot.writeI64(self.item_id)
      oprot.writeFieldEnd()
    if self.totalOrderCount is not None:
      oprot.writeFieldBegin('totalOrderCount', TType.I32, 3)
      oprot.writeI32(self.totalOrderCount)
      oprot.writeFieldEnd()
    if self.amazonFbaInventory is not None:
      oprot.writeFieldBegin('amazonFbaInventory', TType.I64, 4)
      oprot.writeI64(self.amazonFbaInventory)
      oprot.writeFieldEnd()
    if self.isOutOfStock is not None:
      oprot.writeFieldBegin('isOutOfStock', TType.BOOL, 5)
      oprot.writeBool(self.isOutOfStock)
      oprot.writeFieldEnd()
    if self.totalSale is not None:
      oprot.writeFieldBegin('totalSale', TType.DOUBLE, 6)
      oprot.writeDouble(self.totalSale)
      oprot.writeFieldEnd()
    if self.promotionSale is not None:
      oprot.writeFieldBegin('promotionSale', TType.DOUBLE, 7)
      oprot.writeDouble(self.promotionSale)
      oprot.writeFieldEnd()
    if self.promotionOrderCount is not None:
      oprot.writeFieldBegin('promotionOrderCount', TType.I32, 8)
      oprot.writeI32(self.promotionOrderCount)
      oprot.writeFieldEnd()
    if self.fcLocation is not None:
      oprot.writeFieldBegin('fcLocation', TType.I32, 9)
      oprot.writeI32(self.fcLocation)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class AmazonFbaOrderItem:
  """
  Attributes:
   - amazonOrderId
   - purchaseDate
   - orderStatus
   - item_id
   - fcLocation
   - totalAmount
   - promotionDiscount
   - quantity
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'amazonOrderId', None, None, ), # 1
    (2, TType.I64, 'purchaseDate', None, None, ), # 2
    (3, TType.STRING, 'orderStatus', None, None, ), # 3
    (4, TType.I64, 'item_id', None, None, ), # 4
    (5, TType.I32, 'fcLocation', None, None, ), # 5
    (6, TType.DOUBLE, 'totalAmount', None, None, ), # 6
    (7, TType.DOUBLE, 'promotionDiscount', None, None, ), # 7
    (8, TType.I64, 'quantity', None, None, ), # 8
  )

  def __init__(self, amazonOrderId=None, purchaseDate=None, orderStatus=None, item_id=None, fcLocation=None, totalAmount=None, promotionDiscount=None, quantity=None,):
    self.amazonOrderId = amazonOrderId
    self.purchaseDate = purchaseDate
    self.orderStatus = orderStatus
    self.item_id = item_id
    self.fcLocation = fcLocation
    self.totalAmount = totalAmount
    self.promotionDiscount = promotionDiscount
    self.quantity = quantity

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.amazonOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.purchaseDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.orderStatus = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.item_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I32:
          self.fcLocation = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.totalAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.DOUBLE:
          self.promotionDiscount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.quantity = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('AmazonFbaOrderItem')
    if self.amazonOrderId is not None:
      oprot.writeFieldBegin('amazonOrderId', TType.STRING, 1)
      oprot.writeString(self.amazonOrderId)
      oprot.writeFieldEnd()
    if self.purchaseDate is not None:
      oprot.writeFieldBegin('purchaseDate', TType.I64, 2)
      oprot.writeI64(self.purchaseDate)
      oprot.writeFieldEnd()
    if self.orderStatus is not None:
      oprot.writeFieldBegin('orderStatus', TType.STRING, 3)
      oprot.writeString(self.orderStatus)
      oprot.writeFieldEnd()
    if self.item_id is not None:
      oprot.writeFieldBegin('item_id', TType.I64, 4)
      oprot.writeI64(self.item_id)
      oprot.writeFieldEnd()
    if self.fcLocation is not None:
      oprot.writeFieldBegin('fcLocation', TType.I32, 5)
      oprot.writeI32(self.fcLocation)
      oprot.writeFieldEnd()
    if self.totalAmount is not None:
      oprot.writeFieldBegin('totalAmount', TType.DOUBLE, 6)
      oprot.writeDouble(self.totalAmount)
      oprot.writeFieldEnd()
    if self.promotionDiscount is not None:
      oprot.writeFieldBegin('promotionDiscount', TType.DOUBLE, 7)
      oprot.writeDouble(self.promotionDiscount)
      oprot.writeFieldEnd()
    if self.quantity is not None:
      oprot.writeFieldBegin('quantity', TType.I64, 8)
      oprot.writeI64(self.quantity)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class HsOrder:
  """
  Attributes:
   - orderId
   - hsOrderNo
   - hsSubOrderNo
   - catalogueName
   - hsOrderDate
   - hsProductId
   - hsItemId
   - sellerSku
   - paymentMode
   - courierName
   - slaDays
   - shippingName
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.STRING, 'hsOrderNo', None, None, ), # 2
    (3, TType.STRING, 'hsSubOrderNo', None, None, ), # 3
    (4, TType.STRING, 'catalogueName', None, None, ), # 4
    (5, TType.I64, 'hsOrderDate', None, None, ), # 5
    (6, TType.STRING, 'hsProductId', None, None, ), # 6
    (7, TType.STRING, 'hsItemId', None, None, ), # 7
    (8, TType.STRING, 'sellerSku', None, None, ), # 8
    (9, TType.STRING, 'paymentMode', None, None, ), # 9
    (10, TType.STRING, 'courierName', None, None, ), # 10
    (11, TType.I64, 'slaDays', None, None, ), # 11
    (12, TType.STRING, 'shippingName', None, None, ), # 12
  )

  def __init__(self, orderId=None, hsOrderNo=None, hsSubOrderNo=None, catalogueName=None, hsOrderDate=None, hsProductId=None, hsItemId=None, sellerSku=None, paymentMode=None, courierName=None, slaDays=None, shippingName=None,):
    self.orderId = orderId
    self.hsOrderNo = hsOrderNo
    self.hsSubOrderNo = hsSubOrderNo
    self.catalogueName = catalogueName
    self.hsOrderDate = hsOrderDate
    self.hsProductId = hsProductId
    self.hsItemId = hsItemId
    self.sellerSku = sellerSku
    self.paymentMode = paymentMode
    self.courierName = courierName
    self.slaDays = slaDays
    self.shippingName = shippingName

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.hsOrderNo = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.hsSubOrderNo = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.catalogueName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.hsOrderDate = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.hsProductId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.hsItemId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.sellerSku = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.paymentMode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.STRING:
          self.courierName = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I64:
          self.slaDays = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.shippingName = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('HsOrder')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.hsOrderNo is not None:
      oprot.writeFieldBegin('hsOrderNo', TType.STRING, 2)
      oprot.writeString(self.hsOrderNo)
      oprot.writeFieldEnd()
    if self.hsSubOrderNo is not None:
      oprot.writeFieldBegin('hsSubOrderNo', TType.STRING, 3)
      oprot.writeString(self.hsSubOrderNo)
      oprot.writeFieldEnd()
    if self.catalogueName is not None:
      oprot.writeFieldBegin('catalogueName', TType.STRING, 4)
      oprot.writeString(self.catalogueName)
      oprot.writeFieldEnd()
    if self.hsOrderDate is not None:
      oprot.writeFieldBegin('hsOrderDate', TType.I64, 5)
      oprot.writeI64(self.hsOrderDate)
      oprot.writeFieldEnd()
    if self.hsProductId is not None:
      oprot.writeFieldBegin('hsProductId', TType.STRING, 6)
      oprot.writeString(self.hsProductId)
      oprot.writeFieldEnd()
    if self.hsItemId is not None:
      oprot.writeFieldBegin('hsItemId', TType.STRING, 7)
      oprot.writeString(self.hsItemId)
      oprot.writeFieldEnd()
    if self.sellerSku is not None:
      oprot.writeFieldBegin('sellerSku', TType.STRING, 8)
      oprot.writeString(self.sellerSku)
      oprot.writeFieldEnd()
    if self.paymentMode is not None:
      oprot.writeFieldBegin('paymentMode', TType.STRING, 9)
      oprot.writeString(self.paymentMode)
      oprot.writeFieldEnd()
    if self.courierName is not None:
      oprot.writeFieldBegin('courierName', TType.STRING, 10)
      oprot.writeString(self.courierName)
      oprot.writeFieldEnd()
    if self.slaDays is not None:
      oprot.writeFieldBegin('slaDays', TType.I64, 11)
      oprot.writeI64(self.slaDays)
      oprot.writeFieldEnd()
    if self.shippingName is not None:
      oprot.writeFieldBegin('shippingName', TType.STRING, 12)
      oprot.writeString(self.shippingName)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class Creditor:
  """
  Attributes:
   - id
   - name
   - active
   - ticket_size
   - credit_due_days
   - created
   - updated
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.BOOL, 'active', None, None, ), # 3
    (4, TType.DOUBLE, 'ticket_size', None, None, ), # 4
    (5, TType.I64, 'credit_due_days', None, None, ), # 5
    (6, TType.I64, 'created', None, None, ), # 6
    (7, TType.I64, 'updated', None, None, ), # 7
  )

  def __init__(self, id=None, name=None, active=None, ticket_size=None, credit_due_days=None, created=None, updated=None,):
    self.id = id
    self.name = name
    self.active = active
    self.ticket_size = ticket_size
    self.credit_due_days = credit_due_days
    self.created = created
    self.updated = updated

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.BOOL:
          self.active = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.DOUBLE:
          self.ticket_size = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.credit_due_days = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.created = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.updated = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('Creditor')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.active is not None:
      oprot.writeFieldBegin('active', TType.BOOL, 3)
      oprot.writeBool(self.active)
      oprot.writeFieldEnd()
    if self.ticket_size is not None:
      oprot.writeFieldBegin('ticket_size', TType.DOUBLE, 4)
      oprot.writeDouble(self.ticket_size)
      oprot.writeFieldEnd()
    if self.credit_due_days is not None:
      oprot.writeFieldBegin('credit_due_days', TType.I64, 5)
      oprot.writeI64(self.credit_due_days)
      oprot.writeFieldEnd()
    if self.created is not None:
      oprot.writeFieldBegin('created', TType.I64, 6)
      oprot.writeI64(self.created)
      oprot.writeFieldEnd()
    if self.updated is not None:
      oprot.writeFieldBegin('updated', TType.I64, 7)
      oprot.writeI64(self.updated)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class UserSanction:
  """
  Attributes:
   - id
   - user_id
   - creditor_id
   - user_ref_id
   - credit_limit
   - credit_blocked
   - loan
   - active
   - created
   - updated
   - ticket_size
   - credit_due_days
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'user_id', None, None, ), # 2
    (3, TType.I64, 'creditor_id', None, None, ), # 3
    (4, TType.STRING, 'user_ref_id', None, None, ), # 4
    (5, TType.DOUBLE, 'credit_limit', None, None, ), # 5
    (6, TType.DOUBLE, 'credit_blocked', None, None, ), # 6
    (7, TType.DOUBLE, 'loan', None, None, ), # 7
    (8, TType.BOOL, 'active', None, None, ), # 8
    (9, TType.I64, 'created', None, None, ), # 9
    (10, TType.I64, 'updated', None, None, ), # 10
    (11, TType.DOUBLE, 'ticket_size', None, None, ), # 11
    (12, TType.I64, 'credit_due_days', None, None, ), # 12
  )

  def __init__(self, id=None, user_id=None, creditor_id=None, user_ref_id=None, credit_limit=None, credit_blocked=None, loan=None, active=None, created=None, updated=None, ticket_size=None, credit_due_days=None,):
    self.id = id
    self.user_id = user_id
    self.creditor_id = creditor_id
    self.user_ref_id = user_ref_id
    self.credit_limit = credit_limit
    self.credit_blocked = credit_blocked
    self.loan = loan
    self.active = active
    self.created = created
    self.updated = updated
    self.ticket_size = ticket_size
    self.credit_due_days = credit_due_days

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.user_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.creditor_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.user_ref_id = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.credit_limit = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.credit_blocked = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.DOUBLE:
          self.loan = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.BOOL:
          self.active = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.created = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.updated = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.DOUBLE:
          self.ticket_size = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.credit_due_days = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('UserSanction')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.user_id is not None:
      oprot.writeFieldBegin('user_id', TType.I64, 2)
      oprot.writeI64(self.user_id)
      oprot.writeFieldEnd()
    if self.creditor_id is not None:
      oprot.writeFieldBegin('creditor_id', TType.I64, 3)
      oprot.writeI64(self.creditor_id)
      oprot.writeFieldEnd()
    if self.user_ref_id is not None:
      oprot.writeFieldBegin('user_ref_id', TType.STRING, 4)
      oprot.writeString(self.user_ref_id)
      oprot.writeFieldEnd()
    if self.credit_limit is not None:
      oprot.writeFieldBegin('credit_limit', TType.DOUBLE, 5)
      oprot.writeDouble(self.credit_limit)
      oprot.writeFieldEnd()
    if self.credit_blocked is not None:
      oprot.writeFieldBegin('credit_blocked', TType.DOUBLE, 6)
      oprot.writeDouble(self.credit_blocked)
      oprot.writeFieldEnd()
    if self.loan is not None:
      oprot.writeFieldBegin('loan', TType.DOUBLE, 7)
      oprot.writeDouble(self.loan)
      oprot.writeFieldEnd()
    if self.active is not None:
      oprot.writeFieldBegin('active', TType.BOOL, 8)
      oprot.writeBool(self.active)
      oprot.writeFieldEnd()
    if self.created is not None:
      oprot.writeFieldBegin('created', TType.I64, 9)
      oprot.writeI64(self.created)
      oprot.writeFieldEnd()
    if self.updated is not None:
      oprot.writeFieldBegin('updated', TType.I64, 10)
      oprot.writeI64(self.updated)
      oprot.writeFieldEnd()
    if self.ticket_size is not None:
      oprot.writeFieldBegin('ticket_size', TType.DOUBLE, 11)
      oprot.writeDouble(self.ticket_size)
      oprot.writeFieldEnd()
    if self.credit_due_days is not None:
      oprot.writeFieldBegin('credit_due_days', TType.I64, 12)
      oprot.writeI64(self.credit_due_days)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class PaginatedUserSanction:
  """
  Attributes:
   - hasMore
   - totalCount
   - userSanctions
  """

  thrift_spec = (
    None, # 0
    (1, TType.BOOL, 'hasMore', None, None, ), # 1
    (2, TType.I64, 'totalCount', None, None, ), # 2
    (3, TType.LIST, 'userSanctions', (TType.STRUCT,(UserSanction, UserSanction.thrift_spec)), None, ), # 3
  )

  def __init__(self, hasMore=None, totalCount=None, userSanctions=None,):
    self.hasMore = hasMore
    self.totalCount = totalCount
    self.userSanctions = userSanctions

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.BOOL:
          self.hasMore = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.totalCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.userSanctions = []
          (_etype109, _size106) = iprot.readListBegin()
          for _i110 in xrange(_size106):
            _elem111 = UserSanction()
            _elem111.read(iprot)
            self.userSanctions.append(_elem111)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('PaginatedUserSanction')
    if self.hasMore is not None:
      oprot.writeFieldBegin('hasMore', TType.BOOL, 1)
      oprot.writeBool(self.hasMore)
      oprot.writeFieldEnd()
    if self.totalCount is not None:
      oprot.writeFieldBegin('totalCount', TType.I64, 2)
      oprot.writeI64(self.totalCount)
      oprot.writeFieldEnd()
    if self.userSanctions is not None:
      oprot.writeFieldBegin('userSanctions', TType.LIST, 3)
      oprot.writeListBegin(TType.STRUCT, len(self.userSanctions))
      for iter112 in self.userSanctions:
        iter112.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class CreditHistory:
  """
  Attributes:
   - id
   - user_id
   - creditor_id
   - payment_id
   - amount
   - credit_type
   - created
   - shipping_id
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'user_id', None, None, ), # 2
    (3, TType.I64, 'creditor_id', None, None, ), # 3
    (4, TType.I64, 'payment_id', None, None, ), # 4
    (5, TType.DOUBLE, 'amount', None, None, ), # 5
    (6, TType.I32, 'credit_type', None, None, ), # 6
    (7, TType.I64, 'created', None, None, ), # 7
    (8, TType.STRING, 'shipping_id', None, None, ), # 8
  )

  def __init__(self, id=None, user_id=None, creditor_id=None, payment_id=None, amount=None, credit_type=None, created=None, shipping_id=None,):
    self.id = id
    self.user_id = user_id
    self.creditor_id = creditor_id
    self.payment_id = payment_id
    self.amount = amount
    self.credit_type = credit_type
    self.created = created
    self.shipping_id = shipping_id

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.user_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.creditor_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.payment_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.credit_type = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.created = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.shipping_id = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('CreditHistory')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.user_id is not None:
      oprot.writeFieldBegin('user_id', TType.I64, 2)
      oprot.writeI64(self.user_id)
      oprot.writeFieldEnd()
    if self.creditor_id is not None:
      oprot.writeFieldBegin('creditor_id', TType.I64, 3)
      oprot.writeI64(self.creditor_id)
      oprot.writeFieldEnd()
    if self.payment_id is not None:
      oprot.writeFieldBegin('payment_id', TType.I64, 4)
      oprot.writeI64(self.payment_id)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.DOUBLE, 5)
      oprot.writeDouble(self.amount)
      oprot.writeFieldEnd()
    if self.credit_type is not None:
      oprot.writeFieldBegin('credit_type', TType.I32, 6)
      oprot.writeI32(self.credit_type)
      oprot.writeFieldEnd()
    if self.created is not None:
      oprot.writeFieldBegin('created', TType.I64, 7)
      oprot.writeI64(self.created)
      oprot.writeFieldEnd()
    if self.shipping_id is not None:
      oprot.writeFieldBegin('shipping_id', TType.STRING, 8)
      oprot.writeString(self.shipping_id)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class PaginatedCreditHistory:
  """
  Attributes:
   - hasMore
   - totalCount
   - creditHistoryList
  """

  thrift_spec = (
    None, # 0
    (1, TType.BOOL, 'hasMore', None, None, ), # 1
    (2, TType.I64, 'totalCount', None, None, ), # 2
    (3, TType.LIST, 'creditHistoryList', (TType.STRUCT,(CreditHistory, CreditHistory.thrift_spec)), None, ), # 3
  )

  def __init__(self, hasMore=None, totalCount=None, creditHistoryList=None,):
    self.hasMore = hasMore
    self.totalCount = totalCount
    self.creditHistoryList = creditHistoryList

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.BOOL:
          self.hasMore = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.totalCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.creditHistoryList = []
          (_etype116, _size113) = iprot.readListBegin()
          for _i117 in xrange(_size113):
            _elem118 = CreditHistory()
            _elem118.read(iprot)
            self.creditHistoryList.append(_elem118)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('PaginatedCreditHistory')
    if self.hasMore is not None:
      oprot.writeFieldBegin('hasMore', TType.BOOL, 1)
      oprot.writeBool(self.hasMore)
      oprot.writeFieldEnd()
    if self.totalCount is not None:
      oprot.writeFieldBegin('totalCount', TType.I64, 2)
      oprot.writeI64(self.totalCount)
      oprot.writeFieldEnd()
    if self.creditHistoryList is not None:
      oprot.writeFieldBegin('creditHistoryList', TType.LIST, 3)
      oprot.writeListBegin(TType.STRUCT, len(self.creditHistoryList))
      for iter119 in self.creditHistoryList:
        iter119.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class LoanHistory:
  """
  Attributes:
   - id
   - user_id
   - creditor_id
   - payment_id
   - amount
   - credit_type
   - created
   - updated
   - loan_id
   - due_date
   - value_date
   - invoiceNumber
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'user_id', None, None, ), # 2
    (3, TType.I64, 'creditor_id', None, None, ), # 3
    (4, TType.I64, 'payment_id', None, None, ), # 4
    (5, TType.DOUBLE, 'amount', None, None, ), # 5
    (6, TType.I32, 'credit_type', None, None, ), # 6
    (7, TType.I64, 'created', None, None, ), # 7
    (8, TType.I64, 'updated', None, None, ), # 8
    (9, TType.STRING, 'loan_id', None, None, ), # 9
    (10, TType.I64, 'due_date', None, None, ), # 10
    (11, TType.I64, 'value_date', None, None, ), # 11
    (12, TType.STRING, 'invoiceNumber', None, None, ), # 12
  )

  def __init__(self, id=None, user_id=None, creditor_id=None, payment_id=None, amount=None, credit_type=None, created=None, updated=None, loan_id=None, due_date=None, value_date=None, invoiceNumber=None,):
    self.id = id
    self.user_id = user_id
    self.creditor_id = creditor_id
    self.payment_id = payment_id
    self.amount = amount
    self.credit_type = credit_type
    self.created = created
    self.updated = updated
    self.loan_id = loan_id
    self.due_date = due_date
    self.value_date = value_date
    self.invoiceNumber = invoiceNumber

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.user_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.creditor_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.payment_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.amount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I32:
          self.credit_type = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.created = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.updated = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.loan_id = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.due_date = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I64:
          self.value_date = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.invoiceNumber = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('LoanHistory')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.user_id is not None:
      oprot.writeFieldBegin('user_id', TType.I64, 2)
      oprot.writeI64(self.user_id)
      oprot.writeFieldEnd()
    if self.creditor_id is not None:
      oprot.writeFieldBegin('creditor_id', TType.I64, 3)
      oprot.writeI64(self.creditor_id)
      oprot.writeFieldEnd()
    if self.payment_id is not None:
      oprot.writeFieldBegin('payment_id', TType.I64, 4)
      oprot.writeI64(self.payment_id)
      oprot.writeFieldEnd()
    if self.amount is not None:
      oprot.writeFieldBegin('amount', TType.DOUBLE, 5)
      oprot.writeDouble(self.amount)
      oprot.writeFieldEnd()
    if self.credit_type is not None:
      oprot.writeFieldBegin('credit_type', TType.I32, 6)
      oprot.writeI32(self.credit_type)
      oprot.writeFieldEnd()
    if self.created is not None:
      oprot.writeFieldBegin('created', TType.I64, 7)
      oprot.writeI64(self.created)
      oprot.writeFieldEnd()
    if self.updated is not None:
      oprot.writeFieldBegin('updated', TType.I64, 8)
      oprot.writeI64(self.updated)
      oprot.writeFieldEnd()
    if self.loan_id is not None:
      oprot.writeFieldBegin('loan_id', TType.STRING, 9)
      oprot.writeString(self.loan_id)
      oprot.writeFieldEnd()
    if self.due_date is not None:
      oprot.writeFieldBegin('due_date', TType.I64, 10)
      oprot.writeI64(self.due_date)
      oprot.writeFieldEnd()
    if self.value_date is not None:
      oprot.writeFieldBegin('value_date', TType.I64, 11)
      oprot.writeI64(self.value_date)
      oprot.writeFieldEnd()
    if self.invoiceNumber is not None:
      oprot.writeFieldBegin('invoiceNumber', TType.STRING, 12)
      oprot.writeString(self.invoiceNumber)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class PaginatedLoanHistory:
  """
  Attributes:
   - hasMore
   - totalCount
   - loanHistoryList
  """

  thrift_spec = (
    None, # 0
    (1, TType.BOOL, 'hasMore', None, None, ), # 1
    (2, TType.I64, 'totalCount', None, None, ), # 2
    (3, TType.LIST, 'loanHistoryList', (TType.STRUCT,(LoanHistory, LoanHistory.thrift_spec)), None, ), # 3
  )

  def __init__(self, hasMore=None, totalCount=None, loanHistoryList=None,):
    self.hasMore = hasMore
    self.totalCount = totalCount
    self.loanHistoryList = loanHistoryList

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.BOOL:
          self.hasMore = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.totalCount = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.LIST:
          self.loanHistoryList = []
          (_etype123, _size120) = iprot.readListBegin()
          for _i124 in xrange(_size120):
            _elem125 = LoanHistory()
            _elem125.read(iprot)
            self.loanHistoryList.append(_elem125)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('PaginatedLoanHistory')
    if self.hasMore is not None:
      oprot.writeFieldBegin('hasMore', TType.BOOL, 1)
      oprot.writeBool(self.hasMore)
      oprot.writeFieldEnd()
    if self.totalCount is not None:
      oprot.writeFieldBegin('totalCount', TType.I64, 2)
      oprot.writeI64(self.totalCount)
      oprot.writeFieldEnd()
    if self.loanHistoryList is not None:
      oprot.writeFieldBegin('loanHistoryList', TType.LIST, 3)
      oprot.writeListBegin(TType.STRUCT, len(self.loanHistoryList))
      for iter126 in self.loanHistoryList:
        iter126.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class OutstandingPayments:
  """
  Attributes:
   - user_id
   - counter_name
   - creditor_id
   - payment_id
   - totalAmount
   - created
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'user_id', None, None, ), # 1
    (2, TType.STRING, 'counter_name', None, None, ), # 2
    (3, TType.I64, 'creditor_id', None, None, ), # 3
    (4, TType.I64, 'payment_id', None, None, ), # 4
    (5, TType.DOUBLE, 'totalAmount', None, None, ), # 5
    (6, TType.I64, 'created', None, None, ), # 6
  )

  def __init__(self, user_id=None, counter_name=None, creditor_id=None, payment_id=None, totalAmount=None, created=None,):
    self.user_id = user_id
    self.counter_name = counter_name
    self.creditor_id = creditor_id
    self.payment_id = payment_id
    self.totalAmount = totalAmount
    self.created = created

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.user_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.counter_name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.I64:
          self.creditor_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.payment_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.totalAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.created = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('OutstandingPayments')
    if self.user_id is not None:
      oprot.writeFieldBegin('user_id', TType.I64, 1)
      oprot.writeI64(self.user_id)
      oprot.writeFieldEnd()
    if self.counter_name is not None:
      oprot.writeFieldBegin('counter_name', TType.STRING, 2)
      oprot.writeString(self.counter_name)
      oprot.writeFieldEnd()
    if self.creditor_id is not None:
      oprot.writeFieldBegin('creditor_id', TType.I64, 3)
      oprot.writeI64(self.creditor_id)
      oprot.writeFieldEnd()
    if self.payment_id is not None:
      oprot.writeFieldBegin('payment_id', TType.I64, 4)
      oprot.writeI64(self.payment_id)
      oprot.writeFieldEnd()
    if self.totalAmount is not None:
      oprot.writeFieldBegin('totalAmount', TType.DOUBLE, 5)
      oprot.writeDouble(self.totalAmount)
      oprot.writeFieldEnd()
    if self.created is not None:
      oprot.writeFieldBegin('created', TType.I64, 6)
      oprot.writeI64(self.created)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class ReturnPickupRequest:
  """
  Attributes:
   - id
   - logisticsProviderId
   - pickupRequestNo
   - confirmedAt
   - promised_pickup_timestamp
   - pickedUpAt
   - pickupStatus
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'logisticsProviderId', None, None, ), # 2
    (3, TType.STRING, 'pickupRequestNo', None, None, ), # 3
    (4, TType.I64, 'confirmedAt', None, None, ), # 4
    (5, TType.I64, 'promised_pickup_timestamp', None, None, ), # 5
    (6, TType.I64, 'pickedUpAt', None, None, ), # 6
    (7, TType.I32, 'pickupStatus', None, None, ), # 7
  )

  def __init__(self, id=None, logisticsProviderId=None, pickupRequestNo=None, confirmedAt=None, promised_pickup_timestamp=None, pickedUpAt=None, pickupStatus=None,):
    self.id = id
    self.logisticsProviderId = logisticsProviderId
    self.pickupRequestNo = pickupRequestNo
    self.confirmedAt = confirmedAt
    self.promised_pickup_timestamp = promised_pickup_timestamp
    self.pickedUpAt = pickedUpAt
    self.pickupStatus = pickupStatus

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.logisticsProviderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.pickupRequestNo = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.confirmedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.promised_pickup_timestamp = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.pickedUpAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I32:
          self.pickupStatus = iprot.readI32();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('ReturnPickupRequest')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.logisticsProviderId is not None:
      oprot.writeFieldBegin('logisticsProviderId', TType.I64, 2)
      oprot.writeI64(self.logisticsProviderId)
      oprot.writeFieldEnd()
    if self.pickupRequestNo is not None:
      oprot.writeFieldBegin('pickupRequestNo', TType.STRING, 3)
      oprot.writeString(self.pickupRequestNo)
      oprot.writeFieldEnd()
    if self.confirmedAt is not None:
      oprot.writeFieldBegin('confirmedAt', TType.I64, 4)
      oprot.writeI64(self.confirmedAt)
      oprot.writeFieldEnd()
    if self.promised_pickup_timestamp is not None:
      oprot.writeFieldBegin('promised_pickup_timestamp', TType.I64, 5)
      oprot.writeI64(self.promised_pickup_timestamp)
      oprot.writeFieldEnd()
    if self.pickedUpAt is not None:
      oprot.writeFieldBegin('pickedUpAt', TType.I64, 6)
      oprot.writeI64(self.pickedUpAt)
      oprot.writeFieldEnd()
    if self.pickupStatus is not None:
      oprot.writeFieldBegin('pickupStatus', TType.I32, 7)
      oprot.writeI32(self.pickupStatus)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class ReturnOrderInfo:
  """
  Attributes:
   - id
   - returnTransactionId
   - masterOrderId
   - orderId
   - lineItemId
   - logisticsRequestId
   - returnQuantity
   - receivedQuantity
   - createdAt
   - processedAt
   - returnStatus
   - reshippedAt
   - receivedAt
   - refundReason
   - refundedBy
   - refundedAt
   - warehouse_id
   - refundAmount
   - refundType
   - refundDescription
   - returnPickupType
   - shippingType
   - replacementOrderId
   - receivedReturnType
   - freebieItemId
   - returnAction
   - returnTxnResolutionStatus
   - lineitem
   - returnPickUpRequest
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I64, 'returnTransactionId', None, None, ), # 2
    (3, TType.STRING, 'masterOrderId', None, None, ), # 3
    (4, TType.I64, 'orderId', None, None, ), # 4
    (5, TType.I64, 'lineItemId', None, None, ), # 5
    (6, TType.I64, 'logisticsRequestId', None, None, ), # 6
    (7, TType.I64, 'returnQuantity', None, None, ), # 7
    (8, TType.I64, 'receivedQuantity', None, None, ), # 8
    (9, TType.I64, 'createdAt', None, None, ), # 9
    (10, TType.I64, 'processedAt', None, None, ), # 10
    (11, TType.STRING, 'returnStatus', None, None, ), # 11
    (12, TType.I64, 'reshippedAt', None, None, ), # 12
    (13, TType.I64, 'receivedAt', None, None, ), # 13
    (14, TType.STRING, 'refundReason', None, None, ), # 14
    (15, TType.STRING, 'refundedBy', None, None, ), # 15
    (16, TType.I64, 'refundedAt', None, None, ), # 16
    (17, TType.I64, 'warehouse_id', None, None, ), # 17
    (18, TType.DOUBLE, 'refundAmount', None, None, ), # 18
    (19, TType.I32, 'refundType', None, None, ), # 19
    (20, TType.STRING, 'refundDescription', None, None, ), # 20
    (21, TType.I32, 'returnPickupType', None, None, ), # 21
    (22, TType.I32, 'shippingType', None, None, ), # 22
    (23, TType.I64, 'replacementOrderId', None, None, ), # 23
    (24, TType.I32, 'receivedReturnType', None, None, ), # 24
    (25, TType.I64, 'freebieItemId', None, None, ), # 25
    (26, TType.I32, 'returnAction', None, None, ), # 26
    (27, TType.I32, 'returnTxnResolutionStatus', None, None, ), # 27
    (28, TType.STRUCT, 'lineitem', (LineItem, LineItem.thrift_spec), None, ), # 28
    (29, TType.STRUCT, 'returnPickUpRequest', (ReturnPickupRequest, ReturnPickupRequest.thrift_spec), None, ), # 29
  )

  def __init__(self, id=None, returnTransactionId=None, masterOrderId=None, orderId=None, lineItemId=None, logisticsRequestId=None, returnQuantity=None, receivedQuantity=None, createdAt=None, processedAt=None, returnStatus=None, reshippedAt=None, receivedAt=None, refundReason=None, refundedBy=None, refundedAt=None, warehouse_id=None, refundAmount=None, refundType=None, refundDescription=None, returnPickupType=None, shippingType=None, replacementOrderId=None, receivedReturnType=None, freebieItemId=None, returnAction=None, returnTxnResolutionStatus=None, lineitem=None, returnPickUpRequest=None,):
    self.id = id
    self.returnTransactionId = returnTransactionId
    self.masterOrderId = masterOrderId
    self.orderId = orderId
    self.lineItemId = lineItemId
    self.logisticsRequestId = logisticsRequestId
    self.returnQuantity = returnQuantity
    self.receivedQuantity = receivedQuantity
    self.createdAt = createdAt
    self.processedAt = processedAt
    self.returnStatus = returnStatus
    self.reshippedAt = reshippedAt
    self.receivedAt = receivedAt
    self.refundReason = refundReason
    self.refundedBy = refundedBy
    self.refundedAt = refundedAt
    self.warehouse_id = warehouse_id
    self.refundAmount = refundAmount
    self.refundType = refundType
    self.refundDescription = refundDescription
    self.returnPickupType = returnPickupType
    self.shippingType = shippingType
    self.replacementOrderId = replacementOrderId
    self.receivedReturnType = receivedReturnType
    self.freebieItemId = freebieItemId
    self.returnAction = returnAction
    self.returnTxnResolutionStatus = returnTxnResolutionStatus
    self.lineitem = lineitem
    self.returnPickUpRequest = returnPickUpRequest

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I64:
          self.returnTransactionId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.masterOrderId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.lineItemId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.logisticsRequestId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.returnQuantity = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.receivedQuantity = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.createdAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.processedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.returnStatus = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.I64:
          self.reshippedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.receivedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRING:
          self.refundReason = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.STRING:
          self.refundedBy = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.I64:
          self.refundedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.I64:
          self.warehouse_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 18:
        if ftype == TType.DOUBLE:
          self.refundAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 19:
        if ftype == TType.I32:
          self.refundType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 20:
        if ftype == TType.STRING:
          self.refundDescription = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 21:
        if ftype == TType.I32:
          self.returnPickupType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 22:
        if ftype == TType.I32:
          self.shippingType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 23:
        if ftype == TType.I64:
          self.replacementOrderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 24:
        if ftype == TType.I32:
          self.receivedReturnType = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 25:
        if ftype == TType.I64:
          self.freebieItemId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 26:
        if ftype == TType.I32:
          self.returnAction = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 27:
        if ftype == TType.I32:
          self.returnTxnResolutionStatus = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 28:
        if ftype == TType.STRUCT:
          self.lineitem = LineItem()
          self.lineitem.read(iprot)
        else:
          iprot.skip(ftype)
      elif fid == 29:
        if ftype == TType.STRUCT:
          self.returnPickUpRequest = ReturnPickupRequest()
          self.returnPickUpRequest.read(iprot)
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('ReturnOrderInfo')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.returnTransactionId is not None:
      oprot.writeFieldBegin('returnTransactionId', TType.I64, 2)
      oprot.writeI64(self.returnTransactionId)
      oprot.writeFieldEnd()
    if self.masterOrderId is not None:
      oprot.writeFieldBegin('masterOrderId', TType.STRING, 3)
      oprot.writeString(self.masterOrderId)
      oprot.writeFieldEnd()
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 4)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.lineItemId is not None:
      oprot.writeFieldBegin('lineItemId', TType.I64, 5)
      oprot.writeI64(self.lineItemId)
      oprot.writeFieldEnd()
    if self.logisticsRequestId is not None:
      oprot.writeFieldBegin('logisticsRequestId', TType.I64, 6)
      oprot.writeI64(self.logisticsRequestId)
      oprot.writeFieldEnd()
    if self.returnQuantity is not None:
      oprot.writeFieldBegin('returnQuantity', TType.I64, 7)
      oprot.writeI64(self.returnQuantity)
      oprot.writeFieldEnd()
    if self.receivedQuantity is not None:
      oprot.writeFieldBegin('receivedQuantity', TType.I64, 8)
      oprot.writeI64(self.receivedQuantity)
      oprot.writeFieldEnd()
    if self.createdAt is not None:
      oprot.writeFieldBegin('createdAt', TType.I64, 9)
      oprot.writeI64(self.createdAt)
      oprot.writeFieldEnd()
    if self.processedAt is not None:
      oprot.writeFieldBegin('processedAt', TType.I64, 10)
      oprot.writeI64(self.processedAt)
      oprot.writeFieldEnd()
    if self.returnStatus is not None:
      oprot.writeFieldBegin('returnStatus', TType.STRING, 11)
      oprot.writeString(self.returnStatus)
      oprot.writeFieldEnd()
    if self.reshippedAt is not None:
      oprot.writeFieldBegin('reshippedAt', TType.I64, 12)
      oprot.writeI64(self.reshippedAt)
      oprot.writeFieldEnd()
    if self.receivedAt is not None:
      oprot.writeFieldBegin('receivedAt', TType.I64, 13)
      oprot.writeI64(self.receivedAt)
      oprot.writeFieldEnd()
    if self.refundReason is not None:
      oprot.writeFieldBegin('refundReason', TType.STRING, 14)
      oprot.writeString(self.refundReason)
      oprot.writeFieldEnd()
    if self.refundedBy is not None:
      oprot.writeFieldBegin('refundedBy', TType.STRING, 15)
      oprot.writeString(self.refundedBy)
      oprot.writeFieldEnd()
    if self.refundedAt is not None:
      oprot.writeFieldBegin('refundedAt', TType.I64, 16)
      oprot.writeI64(self.refundedAt)
      oprot.writeFieldEnd()
    if self.warehouse_id is not None:
      oprot.writeFieldBegin('warehouse_id', TType.I64, 17)
      oprot.writeI64(self.warehouse_id)
      oprot.writeFieldEnd()
    if self.refundAmount is not None:
      oprot.writeFieldBegin('refundAmount', TType.DOUBLE, 18)
      oprot.writeDouble(self.refundAmount)
      oprot.writeFieldEnd()
    if self.refundType is not None:
      oprot.writeFieldBegin('refundType', TType.I32, 19)
      oprot.writeI32(self.refundType)
      oprot.writeFieldEnd()
    if self.refundDescription is not None:
      oprot.writeFieldBegin('refundDescription', TType.STRING, 20)
      oprot.writeString(self.refundDescription)
      oprot.writeFieldEnd()
    if self.returnPickupType is not None:
      oprot.writeFieldBegin('returnPickupType', TType.I32, 21)
      oprot.writeI32(self.returnPickupType)
      oprot.writeFieldEnd()
    if self.shippingType is not None:
      oprot.writeFieldBegin('shippingType', TType.I32, 22)
      oprot.writeI32(self.shippingType)
      oprot.writeFieldEnd()
    if self.replacementOrderId is not None:
      oprot.writeFieldBegin('replacementOrderId', TType.I64, 23)
      oprot.writeI64(self.replacementOrderId)
      oprot.writeFieldEnd()
    if self.receivedReturnType is not None:
      oprot.writeFieldBegin('receivedReturnType', TType.I32, 24)
      oprot.writeI32(self.receivedReturnType)
      oprot.writeFieldEnd()
    if self.freebieItemId is not None:
      oprot.writeFieldBegin('freebieItemId', TType.I64, 25)
      oprot.writeI64(self.freebieItemId)
      oprot.writeFieldEnd()
    if self.returnAction is not None:
      oprot.writeFieldBegin('returnAction', TType.I32, 26)
      oprot.writeI32(self.returnAction)
      oprot.writeFieldEnd()
    if self.returnTxnResolutionStatus is not None:
      oprot.writeFieldBegin('returnTxnResolutionStatus', TType.I32, 27)
      oprot.writeI32(self.returnTxnResolutionStatus)
      oprot.writeFieldEnd()
    if self.lineitem is not None:
      oprot.writeFieldBegin('lineitem', TType.STRUCT, 28)
      self.lineitem.write(oprot)
      oprot.writeFieldEnd()
    if self.returnPickUpRequest is not None:
      oprot.writeFieldBegin('returnPickUpRequest', TType.STRUCT, 29)
      self.returnPickUpRequest.write(oprot)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class ReturnTransaction:
  """
  Attributes:
   - id
   - status
   - customer_email
   - customer_name
   - customer_id
   - address_id
   - ticketId
   - createdAt
   - processedAt
   - authorizedAt
   - closedAt
   - customerAddress
   - pincode
   - customerCity
   - customerState
   - customerPhone
   - returnOrders
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.I32, 'status', None, None, ), # 2
    (3, TType.STRING, 'customer_email', None, None, ), # 3
    (4, TType.STRING, 'customer_name', None, None, ), # 4
    (5, TType.I64, 'customer_id', None, None, ), # 5
    (6, TType.I64, 'address_id', None, None, ), # 6
    (7, TType.I64, 'ticketId', None, None, ), # 7
    (8, TType.I64, 'createdAt', None, None, ), # 8
    (9, TType.I64, 'processedAt', None, None, ), # 9
    (10, TType.I64, 'authorizedAt', None, None, ), # 10
    (11, TType.I64, 'closedAt', None, None, ), # 11
    (12, TType.STRING, 'customerAddress', None, None, ), # 12
    (13, TType.STRING, 'pincode', None, None, ), # 13
    (14, TType.STRING, 'customerCity', None, None, ), # 14
    (15, TType.STRING, 'customerState', None, None, ), # 15
    (16, TType.STRING, 'customerPhone', None, None, ), # 16
    (17, TType.LIST, 'returnOrders', (TType.STRUCT,(ReturnOrderInfo, ReturnOrderInfo.thrift_spec)), None, ), # 17
  )

  def __init__(self, id=None, status=None, customer_email=None, customer_name=None, customer_id=None, address_id=None, ticketId=None, createdAt=None, processedAt=None, authorizedAt=None, closedAt=None, customerAddress=None, pincode=None, customerCity=None, customerState=None, customerPhone=None, returnOrders=None,):
    self.id = id
    self.status = status
    self.customer_email = customer_email
    self.customer_name = customer_name
    self.customer_id = customer_id
    self.address_id = address_id
    self.ticketId = ticketId
    self.createdAt = createdAt
    self.processedAt = processedAt
    self.authorizedAt = authorizedAt
    self.closedAt = closedAt
    self.customerAddress = customerAddress
    self.pincode = pincode
    self.customerCity = customerCity
    self.customerState = customerState
    self.customerPhone = customerPhone
    self.returnOrders = returnOrders

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I32:
          self.status = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.customer_email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.customer_name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.I64:
          self.customer_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.I64:
          self.address_id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.ticketId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.createdAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.I64:
          self.processedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.I64:
          self.authorizedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.I64:
          self.closedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.customerAddress = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.STRING:
          self.pincode = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 14:
        if ftype == TType.STRING:
          self.customerCity = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 15:
        if ftype == TType.STRING:
          self.customerState = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 16:
        if ftype == TType.STRING:
          self.customerPhone = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 17:
        if ftype == TType.LIST:
          self.returnOrders = []
          (_etype130, _size127) = iprot.readListBegin()
          for _i131 in xrange(_size127):
            _elem132 = ReturnOrderInfo()
            _elem132.read(iprot)
            self.returnOrders.append(_elem132)
          iprot.readListEnd()
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('ReturnTransaction')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.status is not None:
      oprot.writeFieldBegin('status', TType.I32, 2)
      oprot.writeI32(self.status)
      oprot.writeFieldEnd()
    if self.customer_email is not None:
      oprot.writeFieldBegin('customer_email', TType.STRING, 3)
      oprot.writeString(self.customer_email)
      oprot.writeFieldEnd()
    if self.customer_name is not None:
      oprot.writeFieldBegin('customer_name', TType.STRING, 4)
      oprot.writeString(self.customer_name)
      oprot.writeFieldEnd()
    if self.customer_id is not None:
      oprot.writeFieldBegin('customer_id', TType.I64, 5)
      oprot.writeI64(self.customer_id)
      oprot.writeFieldEnd()
    if self.address_id is not None:
      oprot.writeFieldBegin('address_id', TType.I64, 6)
      oprot.writeI64(self.address_id)
      oprot.writeFieldEnd()
    if self.ticketId is not None:
      oprot.writeFieldBegin('ticketId', TType.I64, 7)
      oprot.writeI64(self.ticketId)
      oprot.writeFieldEnd()
    if self.createdAt is not None:
      oprot.writeFieldBegin('createdAt', TType.I64, 8)
      oprot.writeI64(self.createdAt)
      oprot.writeFieldEnd()
    if self.processedAt is not None:
      oprot.writeFieldBegin('processedAt', TType.I64, 9)
      oprot.writeI64(self.processedAt)
      oprot.writeFieldEnd()
    if self.authorizedAt is not None:
      oprot.writeFieldBegin('authorizedAt', TType.I64, 10)
      oprot.writeI64(self.authorizedAt)
      oprot.writeFieldEnd()
    if self.closedAt is not None:
      oprot.writeFieldBegin('closedAt', TType.I64, 11)
      oprot.writeI64(self.closedAt)
      oprot.writeFieldEnd()
    if self.customerAddress is not None:
      oprot.writeFieldBegin('customerAddress', TType.STRING, 12)
      oprot.writeString(self.customerAddress)
      oprot.writeFieldEnd()
    if self.pincode is not None:
      oprot.writeFieldBegin('pincode', TType.STRING, 13)
      oprot.writeString(self.pincode)
      oprot.writeFieldEnd()
    if self.customerCity is not None:
      oprot.writeFieldBegin('customerCity', TType.STRING, 14)
      oprot.writeString(self.customerCity)
      oprot.writeFieldEnd()
    if self.customerState is not None:
      oprot.writeFieldBegin('customerState', TType.STRING, 15)
      oprot.writeString(self.customerState)
      oprot.writeFieldEnd()
    if self.customerPhone is not None:
      oprot.writeFieldBegin('customerPhone', TType.STRING, 16)
      oprot.writeString(self.customerPhone)
      oprot.writeFieldEnd()
    if self.returnOrders is not None:
      oprot.writeFieldBegin('returnOrders', TType.LIST, 17)
      oprot.writeListBegin(TType.STRUCT, len(self.returnOrders))
      for iter133 in self.returnOrders:
        iter133.write(oprot)
      oprot.writeListEnd()
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class ShipmentLogisticsCostDetail:
  """
  Attributes:
   - logisticsTransactionId
   - airwayBillNo
   - shipmentAmount
   - shipmentWeight
   - shipmentLogsiticsCost
   - shipmentCodCollectionCharges
   - createdAt
   - updatedAt
   - packageDimensions
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'logisticsTransactionId', None, None, ), # 1
    (2, TType.STRING, 'airwayBillNo', None, None, ), # 2
    (3, TType.DOUBLE, 'shipmentAmount', None, None, ), # 3
    (4, TType.DOUBLE, 'shipmentWeight', None, None, ), # 4
    (5, TType.DOUBLE, 'shipmentLogsiticsCost', None, None, ), # 5
    (6, TType.DOUBLE, 'shipmentCodCollectionCharges', None, None, ), # 6
    (7, TType.I64, 'createdAt', None, None, ), # 7
    (8, TType.I64, 'updatedAt', None, None, ), # 8
    (9, TType.STRING, 'packageDimensions', None, None, ), # 9
  )

  def __init__(self, logisticsTransactionId=None, airwayBillNo=None, shipmentAmount=None, shipmentWeight=None, shipmentLogsiticsCost=None, shipmentCodCollectionCharges=None, createdAt=None, updatedAt=None, packageDimensions=None,):
    self.logisticsTransactionId = logisticsTransactionId
    self.airwayBillNo = airwayBillNo
    self.shipmentAmount = shipmentAmount
    self.shipmentWeight = shipmentWeight
    self.shipmentLogsiticsCost = shipmentLogsiticsCost
    self.shipmentCodCollectionCharges = shipmentCodCollectionCharges
    self.createdAt = createdAt
    self.updatedAt = updatedAt
    self.packageDimensions = packageDimensions

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.logisticsTransactionId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.airwayBillNo = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.DOUBLE:
          self.shipmentAmount = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.DOUBLE:
          self.shipmentWeight = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.DOUBLE:
          self.shipmentLogsiticsCost = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.DOUBLE:
          self.shipmentCodCollectionCharges = iprot.readDouble();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.I64:
          self.createdAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.I64:
          self.updatedAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.packageDimensions = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('ShipmentLogisticsCostDetail')
    if self.logisticsTransactionId is not None:
      oprot.writeFieldBegin('logisticsTransactionId', TType.STRING, 1)
      oprot.writeString(self.logisticsTransactionId)
      oprot.writeFieldEnd()
    if self.airwayBillNo is not None:
      oprot.writeFieldBegin('airwayBillNo', TType.STRING, 2)
      oprot.writeString(self.airwayBillNo)
      oprot.writeFieldEnd()
    if self.shipmentAmount is not None:
      oprot.writeFieldBegin('shipmentAmount', TType.DOUBLE, 3)
      oprot.writeDouble(self.shipmentAmount)
      oprot.writeFieldEnd()
    if self.shipmentWeight is not None:
      oprot.writeFieldBegin('shipmentWeight', TType.DOUBLE, 4)
      oprot.writeDouble(self.shipmentWeight)
      oprot.writeFieldEnd()
    if self.shipmentLogsiticsCost is not None:
      oprot.writeFieldBegin('shipmentLogsiticsCost', TType.DOUBLE, 5)
      oprot.writeDouble(self.shipmentLogsiticsCost)
      oprot.writeFieldEnd()
    if self.shipmentCodCollectionCharges is not None:
      oprot.writeFieldBegin('shipmentCodCollectionCharges', TType.DOUBLE, 6)
      oprot.writeDouble(self.shipmentCodCollectionCharges)
      oprot.writeFieldEnd()
    if self.createdAt is not None:
      oprot.writeFieldBegin('createdAt', TType.I64, 7)
      oprot.writeI64(self.createdAt)
      oprot.writeFieldEnd()
    if self.updatedAt is not None:
      oprot.writeFieldBegin('updatedAt', TType.I64, 8)
      oprot.writeI64(self.updatedAt)
      oprot.writeFieldEnd()
    if self.packageDimensions is not None:
      oprot.writeFieldBegin('packageDimensions', TType.STRING, 9)
      oprot.writeString(self.packageDimensions)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class ShipmentDelayDetail:
  """
  Attributes:
   - orderId
   - delayReason
   - delayReasonText
   - delay
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'orderId', None, None, ), # 1
    (2, TType.I32, 'delayReason', None, None, ), # 2
    (3, TType.STRING, 'delayReasonText', None, None, ), # 3
    (4, TType.I64, 'delay', None, None, ), # 4
  )

  def __init__(self, orderId=None, delayReason=None, delayReasonText=None, delay=None,):
    self.orderId = orderId
    self.delayReason = delayReason
    self.delayReasonText = delayReasonText
    self.delay = delay

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.orderId = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.I32:
          self.delayReason = iprot.readI32();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.delayReasonText = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.I64:
          self.delay = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('ShipmentDelayDetail')
    if self.orderId is not None:
      oprot.writeFieldBegin('orderId', TType.I64, 1)
      oprot.writeI64(self.orderId)
      oprot.writeFieldEnd()
    if self.delayReason is not None:
      oprot.writeFieldBegin('delayReason', TType.I32, 2)
      oprot.writeI32(self.delayReason)
      oprot.writeFieldEnd()
    if self.delayReasonText is not None:
      oprot.writeFieldBegin('delayReasonText', TType.STRING, 3)
      oprot.writeString(self.delayReasonText)
      oprot.writeFieldEnd()
    if self.delay is not None:
      oprot.writeFieldBegin('delay', TType.I64, 4)
      oprot.writeI64(self.delay)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class Pmsa:
  """
  Attributes:
   - id
   - name
   - phone
   - emailId
   - address
   - state
   - level
   - l1_email
   - l2_email
   - activated
   - pin
   - code
   - createdAt
  """

  thrift_spec = (
    None, # 0
    (1, TType.I64, 'id', None, None, ), # 1
    (2, TType.STRING, 'name', None, None, ), # 2
    (3, TType.STRING, 'phone', None, None, ), # 3
    (4, TType.STRING, 'emailId', None, None, ), # 4
    (5, TType.STRING, 'address', None, None, ), # 5
    (6, TType.STRING, 'state', None, None, ), # 6
    (7, TType.STRING, 'level', None, None, ), # 7
    (8, TType.STRING, 'l1_email', None, None, ), # 8
    (9, TType.STRING, 'l2_email', None, None, ), # 9
    (10, TType.BOOL, 'activated', None, None, ), # 10
    (11, TType.STRING, 'pin', None, None, ), # 11
    (12, TType.STRING, 'code', None, None, ), # 12
    (13, TType.I64, 'createdAt', None, None, ), # 13
  )

  def __init__(self, id=None, name=None, phone=None, emailId=None, address=None, state=None, level=None, l1_email=None, l2_email=None, activated=None, pin=None, code=None, createdAt=None,):
    self.id = id
    self.name = name
    self.phone = phone
    self.emailId = emailId
    self.address = address
    self.state = state
    self.level = level
    self.l1_email = l1_email
    self.l2_email = l2_email
    self.activated = activated
    self.pin = pin
    self.code = code
    self.createdAt = createdAt

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.I64:
          self.id = iprot.readI64();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.phone = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.emailId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.STRING:
          self.address = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.state = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.level = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 8:
        if ftype == TType.STRING:
          self.l1_email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 9:
        if ftype == TType.STRING:
          self.l2_email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 10:
        if ftype == TType.BOOL:
          self.activated = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 11:
        if ftype == TType.STRING:
          self.pin = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 12:
        if ftype == TType.STRING:
          self.code = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 13:
        if ftype == TType.I64:
          self.createdAt = iprot.readI64();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('Pmsa')
    if self.id is not None:
      oprot.writeFieldBegin('id', TType.I64, 1)
      oprot.writeI64(self.id)
      oprot.writeFieldEnd()
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 2)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.phone is not None:
      oprot.writeFieldBegin('phone', TType.STRING, 3)
      oprot.writeString(self.phone)
      oprot.writeFieldEnd()
    if self.emailId is not None:
      oprot.writeFieldBegin('emailId', TType.STRING, 4)
      oprot.writeString(self.emailId)
      oprot.writeFieldEnd()
    if self.address is not None:
      oprot.writeFieldBegin('address', TType.STRING, 5)
      oprot.writeString(self.address)
      oprot.writeFieldEnd()
    if self.state is not None:
      oprot.writeFieldBegin('state', TType.STRING, 6)
      oprot.writeString(self.state)
      oprot.writeFieldEnd()
    if self.level is not None:
      oprot.writeFieldBegin('level', TType.STRING, 7)
      oprot.writeString(self.level)
      oprot.writeFieldEnd()
    if self.l1_email is not None:
      oprot.writeFieldBegin('l1_email', TType.STRING, 8)
      oprot.writeString(self.l1_email)
      oprot.writeFieldEnd()
    if self.l2_email is not None:
      oprot.writeFieldBegin('l2_email', TType.STRING, 9)
      oprot.writeString(self.l2_email)
      oprot.writeFieldEnd()
    if self.activated is not None:
      oprot.writeFieldBegin('activated', TType.BOOL, 10)
      oprot.writeBool(self.activated)
      oprot.writeFieldEnd()
    if self.pin is not None:
      oprot.writeFieldBegin('pin', TType.STRING, 11)
      oprot.writeString(self.pin)
      oprot.writeFieldEnd()
    if self.code is not None:
      oprot.writeFieldBegin('code', TType.STRING, 12)
      oprot.writeString(self.code)
      oprot.writeFieldEnd()
    if self.createdAt is not None:
      oprot.writeFieldBegin('createdAt', TType.I64, 13)
      oprot.writeI64(self.createdAt)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)

class PmsaSearchFilter:
  """
  Attributes:
   - name
   - phone
   - emailId
   - code
   - activated
   - l1_email
   - l2_email
  """

  thrift_spec = (
    None, # 0
    (1, TType.STRING, 'name', None, None, ), # 1
    (2, TType.STRING, 'phone', None, None, ), # 2
    (3, TType.STRING, 'emailId', None, None, ), # 3
    (4, TType.STRING, 'code', None, None, ), # 4
    (5, TType.BOOL, 'activated', None, None, ), # 5
    (6, TType.STRING, 'l1_email', None, None, ), # 6
    (7, TType.STRING, 'l2_email', None, None, ), # 7
  )

  def __init__(self, name=None, phone=None, emailId=None, code=None, activated=None, l1_email=None, l2_email=None,):
    self.name = name
    self.phone = phone
    self.emailId = emailId
    self.code = code
    self.activated = activated
    self.l1_email = l1_email
    self.l2_email = l2_email

  def read(self, iprot):
    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
      return
    iprot.readStructBegin()
    while True:
      (fname, ftype, fid) = iprot.readFieldBegin()
      if ftype == TType.STOP:
        break
      if fid == 1:
        if ftype == TType.STRING:
          self.name = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 2:
        if ftype == TType.STRING:
          self.phone = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 3:
        if ftype == TType.STRING:
          self.emailId = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 4:
        if ftype == TType.STRING:
          self.code = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 5:
        if ftype == TType.BOOL:
          self.activated = iprot.readBool();
        else:
          iprot.skip(ftype)
      elif fid == 6:
        if ftype == TType.STRING:
          self.l1_email = iprot.readString();
        else:
          iprot.skip(ftype)
      elif fid == 7:
        if ftype == TType.STRING:
          self.l2_email = iprot.readString();
        else:
          iprot.skip(ftype)
      else:
        iprot.skip(ftype)
      iprot.readFieldEnd()
    iprot.readStructEnd()

  def write(self, oprot):
    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
      return
    oprot.writeStructBegin('PmsaSearchFilter')
    if self.name is not None:
      oprot.writeFieldBegin('name', TType.STRING, 1)
      oprot.writeString(self.name)
      oprot.writeFieldEnd()
    if self.phone is not None:
      oprot.writeFieldBegin('phone', TType.STRING, 2)
      oprot.writeString(self.phone)
      oprot.writeFieldEnd()
    if self.emailId is not None:
      oprot.writeFieldBegin('emailId', TType.STRING, 3)
      oprot.writeString(self.emailId)
      oprot.writeFieldEnd()
    if self.code is not None:
      oprot.writeFieldBegin('code', TType.STRING, 4)
      oprot.writeString(self.code)
      oprot.writeFieldEnd()
    if self.activated is not None:
      oprot.writeFieldBegin('activated', TType.BOOL, 5)
      oprot.writeBool(self.activated)
      oprot.writeFieldEnd()
    if self.l1_email is not None:
      oprot.writeFieldBegin('l1_email', TType.STRING, 6)
      oprot.writeString(self.l1_email)
      oprot.writeFieldEnd()
    if self.l2_email is not None:
      oprot.writeFieldBegin('l2_email', TType.STRING, 7)
      oprot.writeString(self.l2_email)
      oprot.writeFieldEnd()
    oprot.writeFieldStop()
    oprot.writeStructEnd()

  def validate(self):
    return


  def __repr__(self):
    L = ['%s=%r' % (key, value)
      for key, value in self.__dict__.iteritems()]
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

  def __eq__(self, other):
    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

  def __ne__(self, other):
    return not (self == other)