Subversion Repositories SmartDukaan

Rev

Rev 23400 | 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
 */
package in.shop2020.warehouse;

import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DetailedPurchaseScan implements org.apache.thrift.TBase<DetailedPurchaseScan, DetailedPurchaseScan._Fields>, java.io.Serializable, Cloneable {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DetailedPurchaseScan");

  private static final org.apache.thrift.protocol.TField PURCHASE_ORDER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("purchaseOrderId", org.apache.thrift.protocol.TType.I64, (short)1);
  private static final org.apache.thrift.protocol.TField PO_CREATED_AT_FIELD_DESC = new org.apache.thrift.protocol.TField("poCreatedAt", org.apache.thrift.protocol.TType.I64, (short)2);
  private static final org.apache.thrift.protocol.TField SUPPLIER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("supplierName", org.apache.thrift.protocol.TType.STRING, (short)3);
  private static final org.apache.thrift.protocol.TField INVOICE_NUMBERS_FIELD_DESC = new org.apache.thrift.protocol.TField("invoiceNumbers", org.apache.thrift.protocol.TType.STRING, (short)4);
  private static final org.apache.thrift.protocol.TField RECEIVED_BY_FIELD_DESC = new org.apache.thrift.protocol.TField("receivedBy", org.apache.thrift.protocol.TType.STRING, (short)5);
  private static final org.apache.thrift.protocol.TField ITEM_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("itemId", org.apache.thrift.protocol.TType.I64, (short)6);
  private static final org.apache.thrift.protocol.TField BRAND_FIELD_DESC = new org.apache.thrift.protocol.TField("brand", org.apache.thrift.protocol.TType.STRING, (short)7);
  private static final org.apache.thrift.protocol.TField MODEL_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("modelName", org.apache.thrift.protocol.TType.STRING, (short)8);
  private static final org.apache.thrift.protocol.TField MODEL_NUMBER_FIELD_DESC = new org.apache.thrift.protocol.TField("modelNumber", org.apache.thrift.protocol.TType.STRING, (short)9);
  private static final org.apache.thrift.protocol.TField COLOR_FIELD_DESC = new org.apache.thrift.protocol.TField("color", org.apache.thrift.protocol.TType.STRING, (short)10);
  private static final org.apache.thrift.protocol.TField UNIT_PRICE_FIELD_DESC = new org.apache.thrift.protocol.TField("unitPrice", org.apache.thrift.protocol.TType.DOUBLE, (short)11);
  private static final org.apache.thrift.protocol.TField QUANTITY_FIELD_DESC = new org.apache.thrift.protocol.TField("quantity", org.apache.thrift.protocol.TType.I64, (short)12);
  private static final org.apache.thrift.protocol.TField PURCHASE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("purchaseId", org.apache.thrift.protocol.TType.I64, (short)13);
  private static final org.apache.thrift.protocol.TField PURCHASED_AT_FIELD_DESC = new org.apache.thrift.protocol.TField("purchasedAt", org.apache.thrift.protocol.TType.I64, (short)14);
  private static final org.apache.thrift.protocol.TField NLC_FIELD_DESC = new org.apache.thrift.protocol.TField("nlc", org.apache.thrift.protocol.TType.DOUBLE, (short)15);
  private static final org.apache.thrift.protocol.TField WAREHOUSE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("warehouseId", org.apache.thrift.protocol.TType.I64, (short)16);
  private static final org.apache.thrift.protocol.TField TAX_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("taxType", org.apache.thrift.protocol.TType.I64, (short)17);
  private static final org.apache.thrift.protocol.TField INVOICE_DATE_FIELD_DESC = new org.apache.thrift.protocol.TField("invoiceDate", org.apache.thrift.protocol.TType.I64, (short)18);
  private static final org.apache.thrift.protocol.TField MRP_FIELD_DESC = new org.apache.thrift.protocol.TField("mrp", org.apache.thrift.protocol.TType.DOUBLE, (short)19);
  private static final org.apache.thrift.protocol.TField PURCHASE_COMMENTS_FIELD_DESC = new org.apache.thrift.protocol.TField("purchaseComments", org.apache.thrift.protocol.TType.STRING, (short)20);
  private static final org.apache.thrift.protocol.TField SGST_RATE_FIELD_DESC = new org.apache.thrift.protocol.TField("sgstRate", org.apache.thrift.protocol.TType.DOUBLE, (short)21);
  private static final org.apache.thrift.protocol.TField CGST_RATE_FIELD_DESC = new org.apache.thrift.protocol.TField("cgstRate", org.apache.thrift.protocol.TType.DOUBLE, (short)22);
  private static final org.apache.thrift.protocol.TField IGST_RATE_FIELD_DESC = new org.apache.thrift.protocol.TField("igstRate", org.apache.thrift.protocol.TType.DOUBLE, (short)23);
  private static final org.apache.thrift.protocol.TField INVOICE_PRICE_FIELD_DESC = new org.apache.thrift.protocol.TField("invoicePrice", org.apache.thrift.protocol.TType.DOUBLE, (short)24);

  private long purchaseOrderId; // required
  private long poCreatedAt; // required
  private String supplierName; // required
  private String invoiceNumbers; // required
  private String receivedBy; // required
  private long itemId; // required
  private String brand; // required
  private String modelName; // required
  private String modelNumber; // required
  private String color; // required
  private double unitPrice; // required
  private long quantity; // required
  private long purchaseId; // required
  private long purchasedAt; // required
  private double nlc; // required
  private long warehouseId; // required
  private long taxType; // required
  private long invoiceDate; // required
  private double mrp; // required
  private String purchaseComments; // required
  private double sgstRate; // required
  private double cgstRate; // required
  private double igstRate; // required
  private double invoicePrice; // required

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    PURCHASE_ORDER_ID((short)1, "purchaseOrderId"),
    PO_CREATED_AT((short)2, "poCreatedAt"),
    SUPPLIER_NAME((short)3, "supplierName"),
    INVOICE_NUMBERS((short)4, "invoiceNumbers"),
    RECEIVED_BY((short)5, "receivedBy"),
    ITEM_ID((short)6, "itemId"),
    BRAND((short)7, "brand"),
    MODEL_NAME((short)8, "modelName"),
    MODEL_NUMBER((short)9, "modelNumber"),
    COLOR((short)10, "color"),
    UNIT_PRICE((short)11, "unitPrice"),
    QUANTITY((short)12, "quantity"),
    PURCHASE_ID((short)13, "purchaseId"),
    PURCHASED_AT((short)14, "purchasedAt"),
    NLC((short)15, "nlc"),
    WAREHOUSE_ID((short)16, "warehouseId"),
    TAX_TYPE((short)17, "taxType"),
    INVOICE_DATE((short)18, "invoiceDate"),
    MRP((short)19, "mrp"),
    PURCHASE_COMMENTS((short)20, "purchaseComments"),
    SGST_RATE((short)21, "sgstRate"),
    CGST_RATE((short)22, "cgstRate"),
    IGST_RATE((short)23, "igstRate"),
    INVOICE_PRICE((short)24, "invoicePrice");

    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();

    static {
      for (_Fields field : EnumSet.allOf(_Fields.class)) {
        byName.put(field.getFieldName(), field);
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // PURCHASE_ORDER_ID
          return PURCHASE_ORDER_ID;
        case 2: // PO_CREATED_AT
          return PO_CREATED_AT;
        case 3: // SUPPLIER_NAME
          return SUPPLIER_NAME;
        case 4: // INVOICE_NUMBERS
          return INVOICE_NUMBERS;
        case 5: // RECEIVED_BY
          return RECEIVED_BY;
        case 6: // ITEM_ID
          return ITEM_ID;
        case 7: // BRAND
          return BRAND;
        case 8: // MODEL_NAME
          return MODEL_NAME;
        case 9: // MODEL_NUMBER
          return MODEL_NUMBER;
        case 10: // COLOR
          return COLOR;
        case 11: // UNIT_PRICE
          return UNIT_PRICE;
        case 12: // QUANTITY
          return QUANTITY;
        case 13: // PURCHASE_ID
          return PURCHASE_ID;
        case 14: // PURCHASED_AT
          return PURCHASED_AT;
        case 15: // NLC
          return NLC;
        case 16: // WAREHOUSE_ID
          return WAREHOUSE_ID;
        case 17: // TAX_TYPE
          return TAX_TYPE;
        case 18: // INVOICE_DATE
          return INVOICE_DATE;
        case 19: // MRP
          return MRP;
        case 20: // PURCHASE_COMMENTS
          return PURCHASE_COMMENTS;
        case 21: // SGST_RATE
          return SGST_RATE;
        case 22: // CGST_RATE
          return CGST_RATE;
        case 23: // IGST_RATE
          return IGST_RATE;
        case 24: // INVOICE_PRICE
          return INVOICE_PRICE;
        default:
          return null;
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, throwing an exception
     * if it is not found.
     */
    public static _Fields findByThriftIdOrThrow(int fieldId) {
      _Fields fields = findByThriftId(fieldId);
      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
      return fields;
    }

    /**
     * Find the _Fields constant that matches name, or null if its not found.
     */
    public static _Fields findByName(String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final String _fieldName;

    _Fields(short thriftId, String fieldName) {
      _thriftId = thriftId;
      _fieldName = fieldName;
    }

    public short getThriftFieldId() {
      return _thriftId;
    }

    public String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final int __PURCHASEORDERID_ISSET_ID = 0;
  private static final int __POCREATEDAT_ISSET_ID = 1;
  private static final int __ITEMID_ISSET_ID = 2;
  private static final int __UNITPRICE_ISSET_ID = 3;
  private static final int __QUANTITY_ISSET_ID = 4;
  private static final int __PURCHASEID_ISSET_ID = 5;
  private static final int __PURCHASEDAT_ISSET_ID = 6;
  private static final int __NLC_ISSET_ID = 7;
  private static final int __WAREHOUSEID_ISSET_ID = 8;
  private static final int __TAXTYPE_ISSET_ID = 9;
  private static final int __INVOICEDATE_ISSET_ID = 10;
  private static final int __MRP_ISSET_ID = 11;
  private static final int __SGSTRATE_ISSET_ID = 12;
  private static final int __CGSTRATE_ISSET_ID = 13;
  private static final int __IGSTRATE_ISSET_ID = 14;
  private static final int __INVOICEPRICE_ISSET_ID = 15;
  private BitSet __isset_bit_vector = new BitSet(16);

  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.PURCHASE_ORDER_ID, new org.apache.thrift.meta_data.FieldMetaData("purchaseOrderId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.PO_CREATED_AT, new org.apache.thrift.meta_data.FieldMetaData("poCreatedAt", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.SUPPLIER_NAME, new org.apache.thrift.meta_data.FieldMetaData("supplierName", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.INVOICE_NUMBERS, new org.apache.thrift.meta_data.FieldMetaData("invoiceNumbers", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.RECEIVED_BY, new org.apache.thrift.meta_data.FieldMetaData("receivedBy", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.ITEM_ID, new org.apache.thrift.meta_data.FieldMetaData("itemId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.BRAND, new org.apache.thrift.meta_data.FieldMetaData("brand", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.MODEL_NAME, new org.apache.thrift.meta_data.FieldMetaData("modelName", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.MODEL_NUMBER, new org.apache.thrift.meta_data.FieldMetaData("modelNumber", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.COLOR, new org.apache.thrift.meta_data.FieldMetaData("color", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.UNIT_PRICE, new org.apache.thrift.meta_data.FieldMetaData("unitPrice", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
    tmpMap.put(_Fields.QUANTITY, new org.apache.thrift.meta_data.FieldMetaData("quantity", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.PURCHASE_ID, new org.apache.thrift.meta_data.FieldMetaData("purchaseId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.PURCHASED_AT, new org.apache.thrift.meta_data.FieldMetaData("purchasedAt", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.NLC, new org.apache.thrift.meta_data.FieldMetaData("nlc", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
    tmpMap.put(_Fields.WAREHOUSE_ID, new org.apache.thrift.meta_data.FieldMetaData("warehouseId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.TAX_TYPE, new org.apache.thrift.meta_data.FieldMetaData("taxType", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.INVOICE_DATE, new org.apache.thrift.meta_data.FieldMetaData("invoiceDate", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.MRP, new org.apache.thrift.meta_data.FieldMetaData("mrp", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
    tmpMap.put(_Fields.PURCHASE_COMMENTS, new org.apache.thrift.meta_data.FieldMetaData("purchaseComments", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.SGST_RATE, new org.apache.thrift.meta_data.FieldMetaData("sgstRate", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
    tmpMap.put(_Fields.CGST_RATE, new org.apache.thrift.meta_data.FieldMetaData("cgstRate", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
    tmpMap.put(_Fields.IGST_RATE, new org.apache.thrift.meta_data.FieldMetaData("igstRate", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
    tmpMap.put(_Fields.INVOICE_PRICE, new org.apache.thrift.meta_data.FieldMetaData("invoicePrice", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.DOUBLE)));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DetailedPurchaseScan.class, metaDataMap);
  }

  public DetailedPurchaseScan() {
  }

  public DetailedPurchaseScan(
    long purchaseOrderId,
    long poCreatedAt,
    String supplierName,
    String invoiceNumbers,
    String receivedBy,
    long itemId,
    String brand,
    String modelName,
    String modelNumber,
    String color,
    double unitPrice,
    long quantity,
    long purchaseId,
    long purchasedAt,
    double nlc,
    long warehouseId,
    long taxType,
    long invoiceDate,
    double mrp,
    String purchaseComments,
    double sgstRate,
    double cgstRate,
    double igstRate,
    double invoicePrice)
  {
    this();
    this.purchaseOrderId = purchaseOrderId;
    setPurchaseOrderIdIsSet(true);
    this.poCreatedAt = poCreatedAt;
    setPoCreatedAtIsSet(true);
    this.supplierName = supplierName;
    this.invoiceNumbers = invoiceNumbers;
    this.receivedBy = receivedBy;
    this.itemId = itemId;
    setItemIdIsSet(true);
    this.brand = brand;
    this.modelName = modelName;
    this.modelNumber = modelNumber;
    this.color = color;
    this.unitPrice = unitPrice;
    setUnitPriceIsSet(true);
    this.quantity = quantity;
    setQuantityIsSet(true);
    this.purchaseId = purchaseId;
    setPurchaseIdIsSet(true);
    this.purchasedAt = purchasedAt;
    setPurchasedAtIsSet(true);
    this.nlc = nlc;
    setNlcIsSet(true);
    this.warehouseId = warehouseId;
    setWarehouseIdIsSet(true);
    this.taxType = taxType;
    setTaxTypeIsSet(true);
    this.invoiceDate = invoiceDate;
    setInvoiceDateIsSet(true);
    this.mrp = mrp;
    setMrpIsSet(true);
    this.purchaseComments = purchaseComments;
    this.sgstRate = sgstRate;
    setSgstRateIsSet(true);
    this.cgstRate = cgstRate;
    setCgstRateIsSet(true);
    this.igstRate = igstRate;
    setIgstRateIsSet(true);
    this.invoicePrice = invoicePrice;
    setInvoicePriceIsSet(true);
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public DetailedPurchaseScan(DetailedPurchaseScan other) {
    __isset_bit_vector.clear();
    __isset_bit_vector.or(other.__isset_bit_vector);
    this.purchaseOrderId = other.purchaseOrderId;
    this.poCreatedAt = other.poCreatedAt;
    if (other.isSetSupplierName()) {
      this.supplierName = other.supplierName;
    }
    if (other.isSetInvoiceNumbers()) {
      this.invoiceNumbers = other.invoiceNumbers;
    }
    if (other.isSetReceivedBy()) {
      this.receivedBy = other.receivedBy;
    }
    this.itemId = other.itemId;
    if (other.isSetBrand()) {
      this.brand = other.brand;
    }
    if (other.isSetModelName()) {
      this.modelName = other.modelName;
    }
    if (other.isSetModelNumber()) {
      this.modelNumber = other.modelNumber;
    }
    if (other.isSetColor()) {
      this.color = other.color;
    }
    this.unitPrice = other.unitPrice;
    this.quantity = other.quantity;
    this.purchaseId = other.purchaseId;
    this.purchasedAt = other.purchasedAt;
    this.nlc = other.nlc;
    this.warehouseId = other.warehouseId;
    this.taxType = other.taxType;
    this.invoiceDate = other.invoiceDate;
    this.mrp = other.mrp;
    if (other.isSetPurchaseComments()) {
      this.purchaseComments = other.purchaseComments;
    }
    this.sgstRate = other.sgstRate;
    this.cgstRate = other.cgstRate;
    this.igstRate = other.igstRate;
    this.invoicePrice = other.invoicePrice;
  }

  public DetailedPurchaseScan deepCopy() {
    return new DetailedPurchaseScan(this);
  }

  @Override
  public void clear() {
    setPurchaseOrderIdIsSet(false);
    this.purchaseOrderId = 0;
    setPoCreatedAtIsSet(false);
    this.poCreatedAt = 0;
    this.supplierName = null;
    this.invoiceNumbers = null;
    this.receivedBy = null;
    setItemIdIsSet(false);
    this.itemId = 0;
    this.brand = null;
    this.modelName = null;
    this.modelNumber = null;
    this.color = null;
    setUnitPriceIsSet(false);
    this.unitPrice = 0.0;
    setQuantityIsSet(false);
    this.quantity = 0;
    setPurchaseIdIsSet(false);
    this.purchaseId = 0;
    setPurchasedAtIsSet(false);
    this.purchasedAt = 0;
    setNlcIsSet(false);
    this.nlc = 0.0;
    setWarehouseIdIsSet(false);
    this.warehouseId = 0;
    setTaxTypeIsSet(false);
    this.taxType = 0;
    setInvoiceDateIsSet(false);
    this.invoiceDate = 0;
    setMrpIsSet(false);
    this.mrp = 0.0;
    this.purchaseComments = null;
    setSgstRateIsSet(false);
    this.sgstRate = 0.0;
    setCgstRateIsSet(false);
    this.cgstRate = 0.0;
    setIgstRateIsSet(false);
    this.igstRate = 0.0;
    setInvoicePriceIsSet(false);
    this.invoicePrice = 0.0;
  }

  public long getPurchaseOrderId() {
    return this.purchaseOrderId;
  }

  public void setPurchaseOrderId(long purchaseOrderId) {
    this.purchaseOrderId = purchaseOrderId;
    setPurchaseOrderIdIsSet(true);
  }

  public void unsetPurchaseOrderId() {
    __isset_bit_vector.clear(__PURCHASEORDERID_ISSET_ID);
  }

  /** Returns true if field purchaseOrderId is set (has been assigned a value) and false otherwise */
  public boolean isSetPurchaseOrderId() {
    return __isset_bit_vector.get(__PURCHASEORDERID_ISSET_ID);
  }

  public void setPurchaseOrderIdIsSet(boolean value) {
    __isset_bit_vector.set(__PURCHASEORDERID_ISSET_ID, value);
  }

  public long getPoCreatedAt() {
    return this.poCreatedAt;
  }

  public void setPoCreatedAt(long poCreatedAt) {
    this.poCreatedAt = poCreatedAt;
    setPoCreatedAtIsSet(true);
  }

  public void unsetPoCreatedAt() {
    __isset_bit_vector.clear(__POCREATEDAT_ISSET_ID);
  }

  /** Returns true if field poCreatedAt is set (has been assigned a value) and false otherwise */
  public boolean isSetPoCreatedAt() {
    return __isset_bit_vector.get(__POCREATEDAT_ISSET_ID);
  }

  public void setPoCreatedAtIsSet(boolean value) {
    __isset_bit_vector.set(__POCREATEDAT_ISSET_ID, value);
  }

  public String getSupplierName() {
    return this.supplierName;
  }

  public void setSupplierName(String supplierName) {
    this.supplierName = supplierName;
  }

  public void unsetSupplierName() {
    this.supplierName = null;
  }

  /** Returns true if field supplierName is set (has been assigned a value) and false otherwise */
  public boolean isSetSupplierName() {
    return this.supplierName != null;
  }

  public void setSupplierNameIsSet(boolean value) {
    if (!value) {
      this.supplierName = null;
    }
  }

  public String getInvoiceNumbers() {
    return this.invoiceNumbers;
  }

  public void setInvoiceNumbers(String invoiceNumbers) {
    this.invoiceNumbers = invoiceNumbers;
  }

  public void unsetInvoiceNumbers() {
    this.invoiceNumbers = null;
  }

  /** Returns true if field invoiceNumbers is set (has been assigned a value) and false otherwise */
  public boolean isSetInvoiceNumbers() {
    return this.invoiceNumbers != null;
  }

  public void setInvoiceNumbersIsSet(boolean value) {
    if (!value) {
      this.invoiceNumbers = null;
    }
  }

  public String getReceivedBy() {
    return this.receivedBy;
  }

  public void setReceivedBy(String receivedBy) {
    this.receivedBy = receivedBy;
  }

  public void unsetReceivedBy() {
    this.receivedBy = null;
  }

  /** Returns true if field receivedBy is set (has been assigned a value) and false otherwise */
  public boolean isSetReceivedBy() {
    return this.receivedBy != null;
  }

  public void setReceivedByIsSet(boolean value) {
    if (!value) {
      this.receivedBy = null;
    }
  }

  public long getItemId() {
    return this.itemId;
  }

  public void setItemId(long itemId) {
    this.itemId = itemId;
    setItemIdIsSet(true);
  }

  public void unsetItemId() {
    __isset_bit_vector.clear(__ITEMID_ISSET_ID);
  }

  /** Returns true if field itemId is set (has been assigned a value) and false otherwise */
  public boolean isSetItemId() {
    return __isset_bit_vector.get(__ITEMID_ISSET_ID);
  }

  public void setItemIdIsSet(boolean value) {
    __isset_bit_vector.set(__ITEMID_ISSET_ID, value);
  }

  public String getBrand() {
    return this.brand;
  }

  public void setBrand(String brand) {
    this.brand = brand;
  }

  public void unsetBrand() {
    this.brand = null;
  }

  /** Returns true if field brand is set (has been assigned a value) and false otherwise */
  public boolean isSetBrand() {
    return this.brand != null;
  }

  public void setBrandIsSet(boolean value) {
    if (!value) {
      this.brand = null;
    }
  }

  public String getModelName() {
    return this.modelName;
  }

  public void setModelName(String modelName) {
    this.modelName = modelName;
  }

  public void unsetModelName() {
    this.modelName = null;
  }

  /** Returns true if field modelName is set (has been assigned a value) and false otherwise */
  public boolean isSetModelName() {
    return this.modelName != null;
  }

  public void setModelNameIsSet(boolean value) {
    if (!value) {
      this.modelName = null;
    }
  }

  public String getModelNumber() {
    return this.modelNumber;
  }

  public void setModelNumber(String modelNumber) {
    this.modelNumber = modelNumber;
  }

  public void unsetModelNumber() {
    this.modelNumber = null;
  }

  /** Returns true if field modelNumber is set (has been assigned a value) and false otherwise */
  public boolean isSetModelNumber() {
    return this.modelNumber != null;
  }

  public void setModelNumberIsSet(boolean value) {
    if (!value) {
      this.modelNumber = null;
    }
  }

  public String getColor() {
    return this.color;
  }

  public void setColor(String color) {
    this.color = color;
  }

  public void unsetColor() {
    this.color = null;
  }

  /** Returns true if field color is set (has been assigned a value) and false otherwise */
  public boolean isSetColor() {
    return this.color != null;
  }

  public void setColorIsSet(boolean value) {
    if (!value) {
      this.color = null;
    }
  }

  public double getUnitPrice() {
    return this.unitPrice;
  }

  public void setUnitPrice(double unitPrice) {
    this.unitPrice = unitPrice;
    setUnitPriceIsSet(true);
  }

  public void unsetUnitPrice() {
    __isset_bit_vector.clear(__UNITPRICE_ISSET_ID);
  }

  /** Returns true if field unitPrice is set (has been assigned a value) and false otherwise */
  public boolean isSetUnitPrice() {
    return __isset_bit_vector.get(__UNITPRICE_ISSET_ID);
  }

  public void setUnitPriceIsSet(boolean value) {
    __isset_bit_vector.set(__UNITPRICE_ISSET_ID, value);
  }

  public long getQuantity() {
    return this.quantity;
  }

  public void setQuantity(long quantity) {
    this.quantity = quantity;
    setQuantityIsSet(true);
  }

  public void unsetQuantity() {
    __isset_bit_vector.clear(__QUANTITY_ISSET_ID);
  }

  /** Returns true if field quantity is set (has been assigned a value) and false otherwise */
  public boolean isSetQuantity() {
    return __isset_bit_vector.get(__QUANTITY_ISSET_ID);
  }

  public void setQuantityIsSet(boolean value) {
    __isset_bit_vector.set(__QUANTITY_ISSET_ID, value);
  }

  public long getPurchaseId() {
    return this.purchaseId;
  }

  public void setPurchaseId(long purchaseId) {
    this.purchaseId = purchaseId;
    setPurchaseIdIsSet(true);
  }

  public void unsetPurchaseId() {
    __isset_bit_vector.clear(__PURCHASEID_ISSET_ID);
  }

  /** Returns true if field purchaseId is set (has been assigned a value) and false otherwise */
  public boolean isSetPurchaseId() {
    return __isset_bit_vector.get(__PURCHASEID_ISSET_ID);
  }

  public void setPurchaseIdIsSet(boolean value) {
    __isset_bit_vector.set(__PURCHASEID_ISSET_ID, value);
  }

  public long getPurchasedAt() {
    return this.purchasedAt;
  }

  public void setPurchasedAt(long purchasedAt) {
    this.purchasedAt = purchasedAt;
    setPurchasedAtIsSet(true);
  }

  public void unsetPurchasedAt() {
    __isset_bit_vector.clear(__PURCHASEDAT_ISSET_ID);
  }

  /** Returns true if field purchasedAt is set (has been assigned a value) and false otherwise */
  public boolean isSetPurchasedAt() {
    return __isset_bit_vector.get(__PURCHASEDAT_ISSET_ID);
  }

  public void setPurchasedAtIsSet(boolean value) {
    __isset_bit_vector.set(__PURCHASEDAT_ISSET_ID, value);
  }

  public double getNlc() {
    return this.nlc;
  }

  public void setNlc(double nlc) {
    this.nlc = nlc;
    setNlcIsSet(true);
  }

  public void unsetNlc() {
    __isset_bit_vector.clear(__NLC_ISSET_ID);
  }

  /** Returns true if field nlc is set (has been assigned a value) and false otherwise */
  public boolean isSetNlc() {
    return __isset_bit_vector.get(__NLC_ISSET_ID);
  }

  public void setNlcIsSet(boolean value) {
    __isset_bit_vector.set(__NLC_ISSET_ID, value);
  }

  public long getWarehouseId() {
    return this.warehouseId;
  }

  public void setWarehouseId(long warehouseId) {
    this.warehouseId = warehouseId;
    setWarehouseIdIsSet(true);
  }

  public void unsetWarehouseId() {
    __isset_bit_vector.clear(__WAREHOUSEID_ISSET_ID);
  }

  /** Returns true if field warehouseId is set (has been assigned a value) and false otherwise */
  public boolean isSetWarehouseId() {
    return __isset_bit_vector.get(__WAREHOUSEID_ISSET_ID);
  }

  public void setWarehouseIdIsSet(boolean value) {
    __isset_bit_vector.set(__WAREHOUSEID_ISSET_ID, value);
  }

  public long getTaxType() {
    return this.taxType;
  }

  public void setTaxType(long taxType) {
    this.taxType = taxType;
    setTaxTypeIsSet(true);
  }

  public void unsetTaxType() {
    __isset_bit_vector.clear(__TAXTYPE_ISSET_ID);
  }

  /** Returns true if field taxType is set (has been assigned a value) and false otherwise */
  public boolean isSetTaxType() {
    return __isset_bit_vector.get(__TAXTYPE_ISSET_ID);
  }

  public void setTaxTypeIsSet(boolean value) {
    __isset_bit_vector.set(__TAXTYPE_ISSET_ID, value);
  }

  public long getInvoiceDate() {
    return this.invoiceDate;
  }

  public void setInvoiceDate(long invoiceDate) {
    this.invoiceDate = invoiceDate;
    setInvoiceDateIsSet(true);
  }

  public void unsetInvoiceDate() {
    __isset_bit_vector.clear(__INVOICEDATE_ISSET_ID);
  }

  /** Returns true if field invoiceDate is set (has been assigned a value) and false otherwise */
  public boolean isSetInvoiceDate() {
    return __isset_bit_vector.get(__INVOICEDATE_ISSET_ID);
  }

  public void setInvoiceDateIsSet(boolean value) {
    __isset_bit_vector.set(__INVOICEDATE_ISSET_ID, value);
  }

  public double getMrp() {
    return this.mrp;
  }

  public void setMrp(double mrp) {
    this.mrp = mrp;
    setMrpIsSet(true);
  }

  public void unsetMrp() {
    __isset_bit_vector.clear(__MRP_ISSET_ID);
  }

  /** Returns true if field mrp is set (has been assigned a value) and false otherwise */
  public boolean isSetMrp() {
    return __isset_bit_vector.get(__MRP_ISSET_ID);
  }

  public void setMrpIsSet(boolean value) {
    __isset_bit_vector.set(__MRP_ISSET_ID, value);
  }

  public String getPurchaseComments() {
    return this.purchaseComments;
  }

  public void setPurchaseComments(String purchaseComments) {
    this.purchaseComments = purchaseComments;
  }

  public void unsetPurchaseComments() {
    this.purchaseComments = null;
  }

  /** Returns true if field purchaseComments is set (has been assigned a value) and false otherwise */
  public boolean isSetPurchaseComments() {
    return this.purchaseComments != null;
  }

  public void setPurchaseCommentsIsSet(boolean value) {
    if (!value) {
      this.purchaseComments = null;
    }
  }

  public double getSgstRate() {
    return this.sgstRate;
  }

  public void setSgstRate(double sgstRate) {
    this.sgstRate = sgstRate;
    setSgstRateIsSet(true);
  }

  public void unsetSgstRate() {
    __isset_bit_vector.clear(__SGSTRATE_ISSET_ID);
  }

  /** Returns true if field sgstRate is set (has been assigned a value) and false otherwise */
  public boolean isSetSgstRate() {
    return __isset_bit_vector.get(__SGSTRATE_ISSET_ID);
  }

  public void setSgstRateIsSet(boolean value) {
    __isset_bit_vector.set(__SGSTRATE_ISSET_ID, value);
  }

  public double getCgstRate() {
    return this.cgstRate;
  }

  public void setCgstRate(double cgstRate) {
    this.cgstRate = cgstRate;
    setCgstRateIsSet(true);
  }

  public void unsetCgstRate() {
    __isset_bit_vector.clear(__CGSTRATE_ISSET_ID);
  }

  /** Returns true if field cgstRate is set (has been assigned a value) and false otherwise */
  public boolean isSetCgstRate() {
    return __isset_bit_vector.get(__CGSTRATE_ISSET_ID);
  }

  public void setCgstRateIsSet(boolean value) {
    __isset_bit_vector.set(__CGSTRATE_ISSET_ID, value);
  }

  public double getIgstRate() {
    return this.igstRate;
  }

  public void setIgstRate(double igstRate) {
    this.igstRate = igstRate;
    setIgstRateIsSet(true);
  }

  public void unsetIgstRate() {
    __isset_bit_vector.clear(__IGSTRATE_ISSET_ID);
  }

  /** Returns true if field igstRate is set (has been assigned a value) and false otherwise */
  public boolean isSetIgstRate() {
    return __isset_bit_vector.get(__IGSTRATE_ISSET_ID);
  }

  public void setIgstRateIsSet(boolean value) {
    __isset_bit_vector.set(__IGSTRATE_ISSET_ID, value);
  }

  public double getInvoicePrice() {
    return this.invoicePrice;
  }

  public void setInvoicePrice(double invoicePrice) {
    this.invoicePrice = invoicePrice;
    setInvoicePriceIsSet(true);
  }

  public void unsetInvoicePrice() {
    __isset_bit_vector.clear(__INVOICEPRICE_ISSET_ID);
  }

  /** Returns true if field invoicePrice is set (has been assigned a value) and false otherwise */
  public boolean isSetInvoicePrice() {
    return __isset_bit_vector.get(__INVOICEPRICE_ISSET_ID);
  }

  public void setInvoicePriceIsSet(boolean value) {
    __isset_bit_vector.set(__INVOICEPRICE_ISSET_ID, value);
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case PURCHASE_ORDER_ID:
      if (value == null) {
        unsetPurchaseOrderId();
      } else {
        setPurchaseOrderId((Long)value);
      }
      break;

    case PO_CREATED_AT:
      if (value == null) {
        unsetPoCreatedAt();
      } else {
        setPoCreatedAt((Long)value);
      }
      break;

    case SUPPLIER_NAME:
      if (value == null) {
        unsetSupplierName();
      } else {
        setSupplierName((String)value);
      }
      break;

    case INVOICE_NUMBERS:
      if (value == null) {
        unsetInvoiceNumbers();
      } else {
        setInvoiceNumbers((String)value);
      }
      break;

    case RECEIVED_BY:
      if (value == null) {
        unsetReceivedBy();
      } else {
        setReceivedBy((String)value);
      }
      break;

    case ITEM_ID:
      if (value == null) {
        unsetItemId();
      } else {
        setItemId((Long)value);
      }
      break;

    case BRAND:
      if (value == null) {
        unsetBrand();
      } else {
        setBrand((String)value);
      }
      break;

    case MODEL_NAME:
      if (value == null) {
        unsetModelName();
      } else {
        setModelName((String)value);
      }
      break;

    case MODEL_NUMBER:
      if (value == null) {
        unsetModelNumber();
      } else {
        setModelNumber((String)value);
      }
      break;

    case COLOR:
      if (value == null) {
        unsetColor();
      } else {
        setColor((String)value);
      }
      break;

    case UNIT_PRICE:
      if (value == null) {
        unsetUnitPrice();
      } else {
        setUnitPrice((Double)value);
      }
      break;

    case QUANTITY:
      if (value == null) {
        unsetQuantity();
      } else {
        setQuantity((Long)value);
      }
      break;

    case PURCHASE_ID:
      if (value == null) {
        unsetPurchaseId();
      } else {
        setPurchaseId((Long)value);
      }
      break;

    case PURCHASED_AT:
      if (value == null) {
        unsetPurchasedAt();
      } else {
        setPurchasedAt((Long)value);
      }
      break;

    case NLC:
      if (value == null) {
        unsetNlc();
      } else {
        setNlc((Double)value);
      }
      break;

    case WAREHOUSE_ID:
      if (value == null) {
        unsetWarehouseId();
      } else {
        setWarehouseId((Long)value);
      }
      break;

    case TAX_TYPE:
      if (value == null) {
        unsetTaxType();
      } else {
        setTaxType((Long)value);
      }
      break;

    case INVOICE_DATE:
      if (value == null) {
        unsetInvoiceDate();
      } else {
        setInvoiceDate((Long)value);
      }
      break;

    case MRP:
      if (value == null) {
        unsetMrp();
      } else {
        setMrp((Double)value);
      }
      break;

    case PURCHASE_COMMENTS:
      if (value == null) {
        unsetPurchaseComments();
      } else {
        setPurchaseComments((String)value);
      }
      break;

    case SGST_RATE:
      if (value == null) {
        unsetSgstRate();
      } else {
        setSgstRate((Double)value);
      }
      break;

    case CGST_RATE:
      if (value == null) {
        unsetCgstRate();
      } else {
        setCgstRate((Double)value);
      }
      break;

    case IGST_RATE:
      if (value == null) {
        unsetIgstRate();
      } else {
        setIgstRate((Double)value);
      }
      break;

    case INVOICE_PRICE:
      if (value == null) {
        unsetInvoicePrice();
      } else {
        setInvoicePrice((Double)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case PURCHASE_ORDER_ID:
      return Long.valueOf(getPurchaseOrderId());

    case PO_CREATED_AT:
      return Long.valueOf(getPoCreatedAt());

    case SUPPLIER_NAME:
      return getSupplierName();

    case INVOICE_NUMBERS:
      return getInvoiceNumbers();

    case RECEIVED_BY:
      return getReceivedBy();

    case ITEM_ID:
      return Long.valueOf(getItemId());

    case BRAND:
      return getBrand();

    case MODEL_NAME:
      return getModelName();

    case MODEL_NUMBER:
      return getModelNumber();

    case COLOR:
      return getColor();

    case UNIT_PRICE:
      return Double.valueOf(getUnitPrice());

    case QUANTITY:
      return Long.valueOf(getQuantity());

    case PURCHASE_ID:
      return Long.valueOf(getPurchaseId());

    case PURCHASED_AT:
      return Long.valueOf(getPurchasedAt());

    case NLC:
      return Double.valueOf(getNlc());

    case WAREHOUSE_ID:
      return Long.valueOf(getWarehouseId());

    case TAX_TYPE:
      return Long.valueOf(getTaxType());

    case INVOICE_DATE:
      return Long.valueOf(getInvoiceDate());

    case MRP:
      return Double.valueOf(getMrp());

    case PURCHASE_COMMENTS:
      return getPurchaseComments();

    case SGST_RATE:
      return Double.valueOf(getSgstRate());

    case CGST_RATE:
      return Double.valueOf(getCgstRate());

    case IGST_RATE:
      return Double.valueOf(getIgstRate());

    case INVOICE_PRICE:
      return Double.valueOf(getInvoicePrice());

    }
    throw new IllegalStateException();
  }

  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
  public boolean isSet(_Fields field) {
    if (field == null) {
      throw new IllegalArgumentException();
    }

    switch (field) {
    case PURCHASE_ORDER_ID:
      return isSetPurchaseOrderId();
    case PO_CREATED_AT:
      return isSetPoCreatedAt();
    case SUPPLIER_NAME:
      return isSetSupplierName();
    case INVOICE_NUMBERS:
      return isSetInvoiceNumbers();
    case RECEIVED_BY:
      return isSetReceivedBy();
    case ITEM_ID:
      return isSetItemId();
    case BRAND:
      return isSetBrand();
    case MODEL_NAME:
      return isSetModelName();
    case MODEL_NUMBER:
      return isSetModelNumber();
    case COLOR:
      return isSetColor();
    case UNIT_PRICE:
      return isSetUnitPrice();
    case QUANTITY:
      return isSetQuantity();
    case PURCHASE_ID:
      return isSetPurchaseId();
    case PURCHASED_AT:
      return isSetPurchasedAt();
    case NLC:
      return isSetNlc();
    case WAREHOUSE_ID:
      return isSetWarehouseId();
    case TAX_TYPE:
      return isSetTaxType();
    case INVOICE_DATE:
      return isSetInvoiceDate();
    case MRP:
      return isSetMrp();
    case PURCHASE_COMMENTS:
      return isSetPurchaseComments();
    case SGST_RATE:
      return isSetSgstRate();
    case CGST_RATE:
      return isSetCgstRate();
    case IGST_RATE:
      return isSetIgstRate();
    case INVOICE_PRICE:
      return isSetInvoicePrice();
    }
    throw new IllegalStateException();
  }

  @Override
  public boolean equals(Object that) {
    if (that == null)
      return false;
    if (that instanceof DetailedPurchaseScan)
      return this.equals((DetailedPurchaseScan)that);
    return false;
  }

  public boolean equals(DetailedPurchaseScan that) {
    if (that == null)
      return false;

    boolean this_present_purchaseOrderId = true;
    boolean that_present_purchaseOrderId = true;
    if (this_present_purchaseOrderId || that_present_purchaseOrderId) {
      if (!(this_present_purchaseOrderId && that_present_purchaseOrderId))
        return false;
      if (this.purchaseOrderId != that.purchaseOrderId)
        return false;
    }

    boolean this_present_poCreatedAt = true;
    boolean that_present_poCreatedAt = true;
    if (this_present_poCreatedAt || that_present_poCreatedAt) {
      if (!(this_present_poCreatedAt && that_present_poCreatedAt))
        return false;
      if (this.poCreatedAt != that.poCreatedAt)
        return false;
    }

    boolean this_present_supplierName = true && this.isSetSupplierName();
    boolean that_present_supplierName = true && that.isSetSupplierName();
    if (this_present_supplierName || that_present_supplierName) {
      if (!(this_present_supplierName && that_present_supplierName))
        return false;
      if (!this.supplierName.equals(that.supplierName))
        return false;
    }

    boolean this_present_invoiceNumbers = true && this.isSetInvoiceNumbers();
    boolean that_present_invoiceNumbers = true && that.isSetInvoiceNumbers();
    if (this_present_invoiceNumbers || that_present_invoiceNumbers) {
      if (!(this_present_invoiceNumbers && that_present_invoiceNumbers))
        return false;
      if (!this.invoiceNumbers.equals(that.invoiceNumbers))
        return false;
    }

    boolean this_present_receivedBy = true && this.isSetReceivedBy();
    boolean that_present_receivedBy = true && that.isSetReceivedBy();
    if (this_present_receivedBy || that_present_receivedBy) {
      if (!(this_present_receivedBy && that_present_receivedBy))
        return false;
      if (!this.receivedBy.equals(that.receivedBy))
        return false;
    }

    boolean this_present_itemId = true;
    boolean that_present_itemId = true;
    if (this_present_itemId || that_present_itemId) {
      if (!(this_present_itemId && that_present_itemId))
        return false;
      if (this.itemId != that.itemId)
        return false;
    }

    boolean this_present_brand = true && this.isSetBrand();
    boolean that_present_brand = true && that.isSetBrand();
    if (this_present_brand || that_present_brand) {
      if (!(this_present_brand && that_present_brand))
        return false;
      if (!this.brand.equals(that.brand))
        return false;
    }

    boolean this_present_modelName = true && this.isSetModelName();
    boolean that_present_modelName = true && that.isSetModelName();
    if (this_present_modelName || that_present_modelName) {
      if (!(this_present_modelName && that_present_modelName))
        return false;
      if (!this.modelName.equals(that.modelName))
        return false;
    }

    boolean this_present_modelNumber = true && this.isSetModelNumber();
    boolean that_present_modelNumber = true && that.isSetModelNumber();
    if (this_present_modelNumber || that_present_modelNumber) {
      if (!(this_present_modelNumber && that_present_modelNumber))
        return false;
      if (!this.modelNumber.equals(that.modelNumber))
        return false;
    }

    boolean this_present_color = true && this.isSetColor();
    boolean that_present_color = true && that.isSetColor();
    if (this_present_color || that_present_color) {
      if (!(this_present_color && that_present_color))
        return false;
      if (!this.color.equals(that.color))
        return false;
    }

    boolean this_present_unitPrice = true;
    boolean that_present_unitPrice = true;
    if (this_present_unitPrice || that_present_unitPrice) {
      if (!(this_present_unitPrice && that_present_unitPrice))
        return false;
      if (this.unitPrice != that.unitPrice)
        return false;
    }

    boolean this_present_quantity = true;
    boolean that_present_quantity = true;
    if (this_present_quantity || that_present_quantity) {
      if (!(this_present_quantity && that_present_quantity))
        return false;
      if (this.quantity != that.quantity)
        return false;
    }

    boolean this_present_purchaseId = true;
    boolean that_present_purchaseId = true;
    if (this_present_purchaseId || that_present_purchaseId) {
      if (!(this_present_purchaseId && that_present_purchaseId))
        return false;
      if (this.purchaseId != that.purchaseId)
        return false;
    }

    boolean this_present_purchasedAt = true;
    boolean that_present_purchasedAt = true;
    if (this_present_purchasedAt || that_present_purchasedAt) {
      if (!(this_present_purchasedAt && that_present_purchasedAt))
        return false;
      if (this.purchasedAt != that.purchasedAt)
        return false;
    }

    boolean this_present_nlc = true;
    boolean that_present_nlc = true;
    if (this_present_nlc || that_present_nlc) {
      if (!(this_present_nlc && that_present_nlc))
        return false;
      if (this.nlc != that.nlc)
        return false;
    }

    boolean this_present_warehouseId = true;
    boolean that_present_warehouseId = true;
    if (this_present_warehouseId || that_present_warehouseId) {
      if (!(this_present_warehouseId && that_present_warehouseId))
        return false;
      if (this.warehouseId != that.warehouseId)
        return false;
    }

    boolean this_present_taxType = true;
    boolean that_present_taxType = true;
    if (this_present_taxType || that_present_taxType) {
      if (!(this_present_taxType && that_present_taxType))
        return false;
      if (this.taxType != that.taxType)
        return false;
    }

    boolean this_present_invoiceDate = true;
    boolean that_present_invoiceDate = true;
    if (this_present_invoiceDate || that_present_invoiceDate) {
      if (!(this_present_invoiceDate && that_present_invoiceDate))
        return false;
      if (this.invoiceDate != that.invoiceDate)
        return false;
    }

    boolean this_present_mrp = true;
    boolean that_present_mrp = true;
    if (this_present_mrp || that_present_mrp) {
      if (!(this_present_mrp && that_present_mrp))
        return false;
      if (this.mrp != that.mrp)
        return false;
    }

    boolean this_present_purchaseComments = true && this.isSetPurchaseComments();
    boolean that_present_purchaseComments = true && that.isSetPurchaseComments();
    if (this_present_purchaseComments || that_present_purchaseComments) {
      if (!(this_present_purchaseComments && that_present_purchaseComments))
        return false;
      if (!this.purchaseComments.equals(that.purchaseComments))
        return false;
    }

    boolean this_present_sgstRate = true;
    boolean that_present_sgstRate = true;
    if (this_present_sgstRate || that_present_sgstRate) {
      if (!(this_present_sgstRate && that_present_sgstRate))
        return false;
      if (this.sgstRate != that.sgstRate)
        return false;
    }

    boolean this_present_cgstRate = true;
    boolean that_present_cgstRate = true;
    if (this_present_cgstRate || that_present_cgstRate) {
      if (!(this_present_cgstRate && that_present_cgstRate))
        return false;
      if (this.cgstRate != that.cgstRate)
        return false;
    }

    boolean this_present_igstRate = true;
    boolean that_present_igstRate = true;
    if (this_present_igstRate || that_present_igstRate) {
      if (!(this_present_igstRate && that_present_igstRate))
        return false;
      if (this.igstRate != that.igstRate)
        return false;
    }

    boolean this_present_invoicePrice = true;
    boolean that_present_invoicePrice = true;
    if (this_present_invoicePrice || that_present_invoicePrice) {
      if (!(this_present_invoicePrice && that_present_invoicePrice))
        return false;
      if (this.invoicePrice != that.invoicePrice)
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    return 0;
  }

  public int compareTo(DetailedPurchaseScan other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;
    DetailedPurchaseScan typedOther = (DetailedPurchaseScan)other;

    lastComparison = Boolean.valueOf(isSetPurchaseOrderId()).compareTo(typedOther.isSetPurchaseOrderId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPurchaseOrderId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.purchaseOrderId, typedOther.purchaseOrderId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPoCreatedAt()).compareTo(typedOther.isSetPoCreatedAt());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPoCreatedAt()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.poCreatedAt, typedOther.poCreatedAt);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSupplierName()).compareTo(typedOther.isSetSupplierName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSupplierName()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.supplierName, typedOther.supplierName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetInvoiceNumbers()).compareTo(typedOther.isSetInvoiceNumbers());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetInvoiceNumbers()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.invoiceNumbers, typedOther.invoiceNumbers);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetReceivedBy()).compareTo(typedOther.isSetReceivedBy());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetReceivedBy()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.receivedBy, typedOther.receivedBy);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetItemId()).compareTo(typedOther.isSetItemId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetItemId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.itemId, typedOther.itemId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetBrand()).compareTo(typedOther.isSetBrand());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetBrand()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.brand, typedOther.brand);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetModelName()).compareTo(typedOther.isSetModelName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetModelName()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.modelName, typedOther.modelName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetModelNumber()).compareTo(typedOther.isSetModelNumber());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetModelNumber()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.modelNumber, typedOther.modelNumber);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetColor()).compareTo(typedOther.isSetColor());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetColor()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.color, typedOther.color);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetUnitPrice()).compareTo(typedOther.isSetUnitPrice());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUnitPrice()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.unitPrice, typedOther.unitPrice);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetQuantity()).compareTo(typedOther.isSetQuantity());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetQuantity()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.quantity, typedOther.quantity);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPurchaseId()).compareTo(typedOther.isSetPurchaseId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPurchaseId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.purchaseId, typedOther.purchaseId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPurchasedAt()).compareTo(typedOther.isSetPurchasedAt());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPurchasedAt()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.purchasedAt, typedOther.purchasedAt);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetNlc()).compareTo(typedOther.isSetNlc());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNlc()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nlc, typedOther.nlc);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetWarehouseId()).compareTo(typedOther.isSetWarehouseId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetWarehouseId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.warehouseId, typedOther.warehouseId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetTaxType()).compareTo(typedOther.isSetTaxType());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTaxType()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.taxType, typedOther.taxType);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetInvoiceDate()).compareTo(typedOther.isSetInvoiceDate());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetInvoiceDate()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.invoiceDate, typedOther.invoiceDate);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetMrp()).compareTo(typedOther.isSetMrp());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetMrp()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.mrp, typedOther.mrp);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPurchaseComments()).compareTo(typedOther.isSetPurchaseComments());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPurchaseComments()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.purchaseComments, typedOther.purchaseComments);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSgstRate()).compareTo(typedOther.isSetSgstRate());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSgstRate()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sgstRate, typedOther.sgstRate);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetCgstRate()).compareTo(typedOther.isSetCgstRate());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCgstRate()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.cgstRate, typedOther.cgstRate);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetIgstRate()).compareTo(typedOther.isSetIgstRate());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIgstRate()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.igstRate, typedOther.igstRate);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetInvoicePrice()).compareTo(typedOther.isSetInvoicePrice());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetInvoicePrice()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.invoicePrice, typedOther.invoicePrice);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    org.apache.thrift.protocol.TField field;
    iprot.readStructBegin();
    while (true)
    {
      field = iprot.readFieldBegin();
      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
        break;
      }
      switch (field.id) {
        case 1: // PURCHASE_ORDER_ID
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.purchaseOrderId = iprot.readI64();
            setPurchaseOrderIdIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 2: // PO_CREATED_AT
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.poCreatedAt = iprot.readI64();
            setPoCreatedAtIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 3: // SUPPLIER_NAME
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.supplierName = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 4: // INVOICE_NUMBERS
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.invoiceNumbers = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 5: // RECEIVED_BY
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.receivedBy = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 6: // ITEM_ID
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.itemId = iprot.readI64();
            setItemIdIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 7: // BRAND
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.brand = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 8: // MODEL_NAME
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.modelName = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 9: // MODEL_NUMBER
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.modelNumber = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 10: // COLOR
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.color = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 11: // UNIT_PRICE
          if (field.type == org.apache.thrift.protocol.TType.DOUBLE) {
            this.unitPrice = iprot.readDouble();
            setUnitPriceIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 12: // QUANTITY
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.quantity = iprot.readI64();
            setQuantityIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 13: // PURCHASE_ID
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.purchaseId = iprot.readI64();
            setPurchaseIdIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 14: // PURCHASED_AT
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.purchasedAt = iprot.readI64();
            setPurchasedAtIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 15: // NLC
          if (field.type == org.apache.thrift.protocol.TType.DOUBLE) {
            this.nlc = iprot.readDouble();
            setNlcIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 16: // WAREHOUSE_ID
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.warehouseId = iprot.readI64();
            setWarehouseIdIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 17: // TAX_TYPE
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.taxType = iprot.readI64();
            setTaxTypeIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 18: // INVOICE_DATE
          if (field.type == org.apache.thrift.protocol.TType.I64) {
            this.invoiceDate = iprot.readI64();
            setInvoiceDateIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 19: // MRP
          if (field.type == org.apache.thrift.protocol.TType.DOUBLE) {
            this.mrp = iprot.readDouble();
            setMrpIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 20: // PURCHASE_COMMENTS
          if (field.type == org.apache.thrift.protocol.TType.STRING) {
            this.purchaseComments = iprot.readString();
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 21: // SGST_RATE
          if (field.type == org.apache.thrift.protocol.TType.DOUBLE) {
            this.sgstRate = iprot.readDouble();
            setSgstRateIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 22: // CGST_RATE
          if (field.type == org.apache.thrift.protocol.TType.DOUBLE) {
            this.cgstRate = iprot.readDouble();
            setCgstRateIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 23: // IGST_RATE
          if (field.type == org.apache.thrift.protocol.TType.DOUBLE) {
            this.igstRate = iprot.readDouble();
            setIgstRateIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        case 24: // INVOICE_PRICE
          if (field.type == org.apache.thrift.protocol.TType.DOUBLE) {
            this.invoicePrice = iprot.readDouble();
            setInvoicePriceIsSet(true);
          } else { 
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
          }
          break;
        default:
          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
      }
      iprot.readFieldEnd();
    }
    iprot.readStructEnd();
    validate();
  }

  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    validate();

    oprot.writeStructBegin(STRUCT_DESC);
    oprot.writeFieldBegin(PURCHASE_ORDER_ID_FIELD_DESC);
    oprot.writeI64(this.purchaseOrderId);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(PO_CREATED_AT_FIELD_DESC);
    oprot.writeI64(this.poCreatedAt);
    oprot.writeFieldEnd();
    if (this.supplierName != null) {
      oprot.writeFieldBegin(SUPPLIER_NAME_FIELD_DESC);
      oprot.writeString(this.supplierName);
      oprot.writeFieldEnd();
    }
    if (this.invoiceNumbers != null) {
      oprot.writeFieldBegin(INVOICE_NUMBERS_FIELD_DESC);
      oprot.writeString(this.invoiceNumbers);
      oprot.writeFieldEnd();
    }
    if (this.receivedBy != null) {
      oprot.writeFieldBegin(RECEIVED_BY_FIELD_DESC);
      oprot.writeString(this.receivedBy);
      oprot.writeFieldEnd();
    }
    oprot.writeFieldBegin(ITEM_ID_FIELD_DESC);
    oprot.writeI64(this.itemId);
    oprot.writeFieldEnd();
    if (this.brand != null) {
      oprot.writeFieldBegin(BRAND_FIELD_DESC);
      oprot.writeString(this.brand);
      oprot.writeFieldEnd();
    }
    if (this.modelName != null) {
      oprot.writeFieldBegin(MODEL_NAME_FIELD_DESC);
      oprot.writeString(this.modelName);
      oprot.writeFieldEnd();
    }
    if (this.modelNumber != null) {
      oprot.writeFieldBegin(MODEL_NUMBER_FIELD_DESC);
      oprot.writeString(this.modelNumber);
      oprot.writeFieldEnd();
    }
    if (this.color != null) {
      oprot.writeFieldBegin(COLOR_FIELD_DESC);
      oprot.writeString(this.color);
      oprot.writeFieldEnd();
    }
    oprot.writeFieldBegin(UNIT_PRICE_FIELD_DESC);
    oprot.writeDouble(this.unitPrice);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(QUANTITY_FIELD_DESC);
    oprot.writeI64(this.quantity);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(PURCHASE_ID_FIELD_DESC);
    oprot.writeI64(this.purchaseId);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(PURCHASED_AT_FIELD_DESC);
    oprot.writeI64(this.purchasedAt);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(NLC_FIELD_DESC);
    oprot.writeDouble(this.nlc);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(WAREHOUSE_ID_FIELD_DESC);
    oprot.writeI64(this.warehouseId);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(TAX_TYPE_FIELD_DESC);
    oprot.writeI64(this.taxType);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(INVOICE_DATE_FIELD_DESC);
    oprot.writeI64(this.invoiceDate);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(MRP_FIELD_DESC);
    oprot.writeDouble(this.mrp);
    oprot.writeFieldEnd();
    if (this.purchaseComments != null) {
      oprot.writeFieldBegin(PURCHASE_COMMENTS_FIELD_DESC);
      oprot.writeString(this.purchaseComments);
      oprot.writeFieldEnd();
    }
    oprot.writeFieldBegin(SGST_RATE_FIELD_DESC);
    oprot.writeDouble(this.sgstRate);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(CGST_RATE_FIELD_DESC);
    oprot.writeDouble(this.cgstRate);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(IGST_RATE_FIELD_DESC);
    oprot.writeDouble(this.igstRate);
    oprot.writeFieldEnd();
    oprot.writeFieldBegin(INVOICE_PRICE_FIELD_DESC);
    oprot.writeDouble(this.invoicePrice);
    oprot.writeFieldEnd();
    oprot.writeFieldStop();
    oprot.writeStructEnd();
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder("DetailedPurchaseScan(");
    boolean first = true;

    sb.append("purchaseOrderId:");
    sb.append(this.purchaseOrderId);
    first = false;
    if (!first) sb.append(", ");
    sb.append("poCreatedAt:");
    sb.append(this.poCreatedAt);
    first = false;
    if (!first) sb.append(", ");
    sb.append("supplierName:");
    if (this.supplierName == null) {
      sb.append("null");
    } else {
      sb.append(this.supplierName);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("invoiceNumbers:");
    if (this.invoiceNumbers == null) {
      sb.append("null");
    } else {
      sb.append(this.invoiceNumbers);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("receivedBy:");
    if (this.receivedBy == null) {
      sb.append("null");
    } else {
      sb.append(this.receivedBy);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("itemId:");
    sb.append(this.itemId);
    first = false;
    if (!first) sb.append(", ");
    sb.append("brand:");
    if (this.brand == null) {
      sb.append("null");
    } else {
      sb.append(this.brand);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("modelName:");
    if (this.modelName == null) {
      sb.append("null");
    } else {
      sb.append(this.modelName);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("modelNumber:");
    if (this.modelNumber == null) {
      sb.append("null");
    } else {
      sb.append(this.modelNumber);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("color:");
    if (this.color == null) {
      sb.append("null");
    } else {
      sb.append(this.color);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("unitPrice:");
    sb.append(this.unitPrice);
    first = false;
    if (!first) sb.append(", ");
    sb.append("quantity:");
    sb.append(this.quantity);
    first = false;
    if (!first) sb.append(", ");
    sb.append("purchaseId:");
    sb.append(this.purchaseId);
    first = false;
    if (!first) sb.append(", ");
    sb.append("purchasedAt:");
    sb.append(this.purchasedAt);
    first = false;
    if (!first) sb.append(", ");
    sb.append("nlc:");
    sb.append(this.nlc);
    first = false;
    if (!first) sb.append(", ");
    sb.append("warehouseId:");
    sb.append(this.warehouseId);
    first = false;
    if (!first) sb.append(", ");
    sb.append("taxType:");
    sb.append(this.taxType);
    first = false;
    if (!first) sb.append(", ");
    sb.append("invoiceDate:");
    sb.append(this.invoiceDate);
    first = false;
    if (!first) sb.append(", ");
    sb.append("mrp:");
    sb.append(this.mrp);
    first = false;
    if (!first) sb.append(", ");
    sb.append("purchaseComments:");
    if (this.purchaseComments == null) {
      sb.append("null");
    } else {
      sb.append(this.purchaseComments);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("sgstRate:");
    sb.append(this.sgstRate);
    first = false;
    if (!first) sb.append(", ");
    sb.append("cgstRate:");
    sb.append(this.cgstRate);
    first = false;
    if (!first) sb.append(", ");
    sb.append("igstRate:");
    sb.append(this.igstRate);
    first = false;
    if (!first) sb.append(", ");
    sb.append("invoicePrice:");
    sb.append(this.invoicePrice);
    first = false;
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
    try {
      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
      __isset_bit_vector = new BitSet(1);
      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

}