/* 
 * GK application - OmniPOS Service API
 *
 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 *
 * OpenAPI spec version: 5.21.1-b03
 * 
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 */

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.ComponentModel.DataAnnotations;
using SwaggerDateConverter = IO.Swagger.Client.SwaggerDateConverter;

namespace IO.Swagger.Model
{
    /// <summary>
    /// TransactionSearchView &lt;p&gt;Transaction search view entity.&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView :  IEquatable<ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView" /> class.
        /// </summary>
        /// <param name="businessUnitGroupID">businessUnitGroupID.</param>
        /// <param name="transactionID">transactionID.</param>
        /// <param name="operatorID">operatorID.</param>
        /// <param name="workstationID">workstationID.</param>
        /// <param name="businessUnitID">businessUnitID.</param>
        /// <param name="businessUnitAddress">businessUnitAddress.</param>
        /// <param name="sequenceNumber">sequenceNumber.</param>
        /// <param name="beginDateTimestamp">Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone).</param>
        /// <param name="endDateTimestamp">Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone).</param>
        /// <param name="transactionTimestamp">Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone).</param>
        /// <param name="suspendedFlag">suspendedFlag.</param>
        /// <param name="suspendNumber">suspendNumber.</param>
        /// <param name="totalAmount">totalAmount.</param>
        /// <param name="totalLineItemCount">totalLineItemCount.</param>
        /// <param name="canceledFlag">canceledFlag.</param>
        /// <param name="workerID">workerID.</param>
        /// <param name="workerFirstName">workerFirstName.</param>
        /// <param name="workerLastName">workerLastName.</param>
        /// <param name="workerFullName">workerFullName.</param>
        /// <param name="transactionTypeCode">transactionTypeCode.</param>
        /// <param name="transactionFactCriteriaTransactionTypeCode">transactionFactCriteriaTransactionTypeCode.</param>
        /// <param name="tillID">&lt;p&gt;The unique identifier of the till.&lt;/p&gt;.</param>
        /// <param name="customerID">&lt;p&gt;The unique system assigned identifier for the Customer(Buyer).&lt;/p&gt;.</param>
        /// <param name="xXCustom08">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom10">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom09">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom07">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom05">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom06">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom11">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom12">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom13">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom14">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom15">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom03">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom02">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom04">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom01">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        public ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView(string businessUnitGroupID = default(string), string transactionID = default(string), string operatorID = default(string), string workstationID = default(string), string businessUnitID = default(string), string businessUnitAddress = default(string), int? sequenceNumber = default(int?), string beginDateTimestamp = default(string), string endDateTimestamp = default(string), string transactionTimestamp = default(string), bool? suspendedFlag = default(bool?), string suspendNumber = default(string), double? totalAmount = default(double?), int? totalLineItemCount = default(int?), bool? canceledFlag = default(bool?), string workerID = default(string), string workerFirstName = default(string), string workerLastName = default(string), string workerFullName = default(string), string transactionTypeCode = default(string), string transactionFactCriteriaTransactionTypeCode = default(string), string tillID = default(string), string customerID = default(string), string xXCustom08 = default(string), string xXCustom10 = default(string), string xXCustom09 = default(string), string xXCustom07 = default(string), string xXCustom05 = default(string), string xXCustom06 = default(string), string xXCustom11 = default(string), string xXCustom12 = default(string), string xXCustom13 = default(string), string xXCustom14 = default(string), string xXCustom15 = default(string), string xXCustom03 = default(string), string xXCustom02 = default(string), string xXCustom04 = default(string), string xXCustom01 = default(string))
        {
            this.BusinessUnitGroupID = businessUnitGroupID;
            this.TransactionID = transactionID;
            this.OperatorID = operatorID;
            this.WorkstationID = workstationID;
            this.BusinessUnitID = businessUnitID;
            this.BusinessUnitAddress = businessUnitAddress;
            this.SequenceNumber = sequenceNumber;
            this.BeginDateTimestamp = beginDateTimestamp;
            this.EndDateTimestamp = endDateTimestamp;
            this.TransactionTimestamp = transactionTimestamp;
            this.SuspendedFlag = suspendedFlag;
            this.SuspendNumber = suspendNumber;
            this.TotalAmount = totalAmount;
            this.TotalLineItemCount = totalLineItemCount;
            this.CanceledFlag = canceledFlag;
            this.WorkerID = workerID;
            this.WorkerFirstName = workerFirstName;
            this.WorkerLastName = workerLastName;
            this.WorkerFullName = workerFullName;
            this.TransactionTypeCode = transactionTypeCode;
            this.TransactionFactCriteriaTransactionTypeCode = transactionFactCriteriaTransactionTypeCode;
            this.TillID = tillID;
            this.CustomerID = customerID;
            this.XXCustom08 = xXCustom08;
            this.XXCustom10 = xXCustom10;
            this.XXCustom09 = xXCustom09;
            this.XXCustom07 = xXCustom07;
            this.XXCustom05 = xXCustom05;
            this.XXCustom06 = xXCustom06;
            this.XXCustom11 = xXCustom11;
            this.XXCustom12 = xXCustom12;
            this.XXCustom13 = xXCustom13;
            this.XXCustom14 = xXCustom14;
            this.XXCustom15 = xXCustom15;
            this.XXCustom03 = xXCustom03;
            this.XXCustom02 = xXCustom02;
            this.XXCustom04 = xXCustom04;
            this.XXCustom01 = xXCustom01;
        }
        
        /// <summary>
        /// Gets or Sets BusinessUnitGroupID
        /// </summary>
        [DataMember(Name="businessUnitGroupID", EmitDefaultValue=false)]
        public string BusinessUnitGroupID { get; set; }

        /// <summary>
        /// Gets or Sets TransactionID
        /// </summary>
        [DataMember(Name="transactionID", EmitDefaultValue=false)]
        public string TransactionID { get; set; }

        /// <summary>
        /// Gets or Sets OperatorID
        /// </summary>
        [DataMember(Name="operatorID", EmitDefaultValue=false)]
        public string OperatorID { get; set; }

        /// <summary>
        /// Gets or Sets WorkstationID
        /// </summary>
        [DataMember(Name="workstationID", EmitDefaultValue=false)]
        public string WorkstationID { get; set; }

        /// <summary>
        /// Gets or Sets BusinessUnitID
        /// </summary>
        [DataMember(Name="businessUnitID", EmitDefaultValue=false)]
        public string BusinessUnitID { get; set; }

        /// <summary>
        /// Gets or Sets BusinessUnitAddress
        /// </summary>
        [DataMember(Name="businessUnitAddress", EmitDefaultValue=false)]
        public string BusinessUnitAddress { get; set; }

        /// <summary>
        /// Gets or Sets SequenceNumber
        /// </summary>
        [DataMember(Name="sequenceNumber", EmitDefaultValue=false)]
        public int? SequenceNumber { get; set; }

        /// <summary>
        /// Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)
        /// </summary>
        /// <value>Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)</value>
        [DataMember(Name="beginDateTimestamp", EmitDefaultValue=false)]
        public string BeginDateTimestamp { get; set; }

        /// <summary>
        /// Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)
        /// </summary>
        /// <value>Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)</value>
        [DataMember(Name="endDateTimestamp", EmitDefaultValue=false)]
        public string EndDateTimestamp { get; set; }

        /// <summary>
        /// Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)
        /// </summary>
        /// <value>Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)</value>
        [DataMember(Name="transactionTimestamp", EmitDefaultValue=false)]
        public string TransactionTimestamp { get; set; }

        /// <summary>
        /// Gets or Sets SuspendedFlag
        /// </summary>
        [DataMember(Name="suspendedFlag", EmitDefaultValue=false)]
        public bool? SuspendedFlag { get; set; }

        /// <summary>
        /// Gets or Sets SuspendNumber
        /// </summary>
        [DataMember(Name="suspendNumber", EmitDefaultValue=false)]
        public string SuspendNumber { get; set; }

        /// <summary>
        /// Gets or Sets TotalAmount
        /// </summary>
        [DataMember(Name="totalAmount", EmitDefaultValue=false)]
        public double? TotalAmount { get; set; }

        /// <summary>
        /// Gets or Sets TotalLineItemCount
        /// </summary>
        [DataMember(Name="totalLineItemCount", EmitDefaultValue=false)]
        public int? TotalLineItemCount { get; set; }

        /// <summary>
        /// Gets or Sets CanceledFlag
        /// </summary>
        [DataMember(Name="canceledFlag", EmitDefaultValue=false)]
        public bool? CanceledFlag { get; set; }

        /// <summary>
        /// Gets or Sets WorkerID
        /// </summary>
        [DataMember(Name="workerID", EmitDefaultValue=false)]
        public string WorkerID { get; set; }

        /// <summary>
        /// Gets or Sets WorkerFirstName
        /// </summary>
        [DataMember(Name="workerFirstName", EmitDefaultValue=false)]
        public string WorkerFirstName { get; set; }

        /// <summary>
        /// Gets or Sets WorkerLastName
        /// </summary>
        [DataMember(Name="workerLastName", EmitDefaultValue=false)]
        public string WorkerLastName { get; set; }

        /// <summary>
        /// Gets or Sets WorkerFullName
        /// </summary>
        [DataMember(Name="workerFullName", EmitDefaultValue=false)]
        public string WorkerFullName { get; set; }

        /// <summary>
        /// Gets or Sets TransactionTypeCode
        /// </summary>
        [DataMember(Name="transactionTypeCode", EmitDefaultValue=false)]
        public string TransactionTypeCode { get; set; }

        /// <summary>
        /// Gets or Sets TransactionFactCriteriaTransactionTypeCode
        /// </summary>
        [DataMember(Name="transactionFactCriteriaTransactionTypeCode", EmitDefaultValue=false)]
        public string TransactionFactCriteriaTransactionTypeCode { get; set; }

        /// <summary>
        /// &lt;p&gt;The unique identifier of the till.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The unique identifier of the till.&lt;/p&gt;</value>
        [DataMember(Name="tillID", EmitDefaultValue=false)]
        public string TillID { get; set; }

        /// <summary>
        /// &lt;p&gt;The unique system assigned identifier for the Customer(Buyer).&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The unique system assigned identifier for the Customer(Buyer).&lt;/p&gt;</value>
        [DataMember(Name="customerID", EmitDefaultValue=false)]
        public string CustomerID { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom08", EmitDefaultValue=false)]
        public string XXCustom08 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom10", EmitDefaultValue=false)]
        public string XXCustom10 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom09", EmitDefaultValue=false)]
        public string XXCustom09 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom07", EmitDefaultValue=false)]
        public string XXCustom07 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom05", EmitDefaultValue=false)]
        public string XXCustom05 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom06", EmitDefaultValue=false)]
        public string XXCustom06 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom11", EmitDefaultValue=false)]
        public string XXCustom11 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom12", EmitDefaultValue=false)]
        public string XXCustom12 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom13", EmitDefaultValue=false)]
        public string XXCustom13 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom14", EmitDefaultValue=false)]
        public string XXCustom14 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom15", EmitDefaultValue=false)]
        public string XXCustom15 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom03", EmitDefaultValue=false)]
        public string XXCustom03 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom02", EmitDefaultValue=false)]
        public string XXCustom02 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom04", EmitDefaultValue=false)]
        public string XXCustom04 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom01", EmitDefaultValue=false)]
        public string XXCustom01 { get; set; }

        /// <summary>
        /// Returns the string presentation of the object
        /// </summary>
        /// <returns>String presentation of the object</returns>
        public override string ToString()
        {
            var sb = new StringBuilder();
            sb.Append("class ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView {\n");
            sb.Append("  BusinessUnitGroupID: ").Append(BusinessUnitGroupID).Append("\n");
            sb.Append("  TransactionID: ").Append(TransactionID).Append("\n");
            sb.Append("  OperatorID: ").Append(OperatorID).Append("\n");
            sb.Append("  WorkstationID: ").Append(WorkstationID).Append("\n");
            sb.Append("  BusinessUnitID: ").Append(BusinessUnitID).Append("\n");
            sb.Append("  BusinessUnitAddress: ").Append(BusinessUnitAddress).Append("\n");
            sb.Append("  SequenceNumber: ").Append(SequenceNumber).Append("\n");
            sb.Append("  BeginDateTimestamp: ").Append(BeginDateTimestamp).Append("\n");
            sb.Append("  EndDateTimestamp: ").Append(EndDateTimestamp).Append("\n");
            sb.Append("  TransactionTimestamp: ").Append(TransactionTimestamp).Append("\n");
            sb.Append("  SuspendedFlag: ").Append(SuspendedFlag).Append("\n");
            sb.Append("  SuspendNumber: ").Append(SuspendNumber).Append("\n");
            sb.Append("  TotalAmount: ").Append(TotalAmount).Append("\n");
            sb.Append("  TotalLineItemCount: ").Append(TotalLineItemCount).Append("\n");
            sb.Append("  CanceledFlag: ").Append(CanceledFlag).Append("\n");
            sb.Append("  WorkerID: ").Append(WorkerID).Append("\n");
            sb.Append("  WorkerFirstName: ").Append(WorkerFirstName).Append("\n");
            sb.Append("  WorkerLastName: ").Append(WorkerLastName).Append("\n");
            sb.Append("  WorkerFullName: ").Append(WorkerFullName).Append("\n");
            sb.Append("  TransactionTypeCode: ").Append(TransactionTypeCode).Append("\n");
            sb.Append("  TransactionFactCriteriaTransactionTypeCode: ").Append(TransactionFactCriteriaTransactionTypeCode).Append("\n");
            sb.Append("  TillID: ").Append(TillID).Append("\n");
            sb.Append("  CustomerID: ").Append(CustomerID).Append("\n");
            sb.Append("  XXCustom08: ").Append(XXCustom08).Append("\n");
            sb.Append("  XXCustom10: ").Append(XXCustom10).Append("\n");
            sb.Append("  XXCustom09: ").Append(XXCustom09).Append("\n");
            sb.Append("  XXCustom07: ").Append(XXCustom07).Append("\n");
            sb.Append("  XXCustom05: ").Append(XXCustom05).Append("\n");
            sb.Append("  XXCustom06: ").Append(XXCustom06).Append("\n");
            sb.Append("  XXCustom11: ").Append(XXCustom11).Append("\n");
            sb.Append("  XXCustom12: ").Append(XXCustom12).Append("\n");
            sb.Append("  XXCustom13: ").Append(XXCustom13).Append("\n");
            sb.Append("  XXCustom14: ").Append(XXCustom14).Append("\n");
            sb.Append("  XXCustom15: ").Append(XXCustom15).Append("\n");
            sb.Append("  XXCustom03: ").Append(XXCustom03).Append("\n");
            sb.Append("  XXCustom02: ").Append(XXCustom02).Append("\n");
            sb.Append("  XXCustom04: ").Append(XXCustom04).Append("\n");
            sb.Append("  XXCustom01: ").Append(XXCustom01).Append("\n");
            sb.Append("}\n");
            return sb.ToString();
        }
  
        /// <summary>
        /// Returns the JSON string presentation of the object
        /// </summary>
        /// <returns>JSON string presentation of the object</returns>
        public virtual string ToJson()
        {
            return JsonConvert.SerializeObject(this, Formatting.Indented);
        }

        /// <summary>
        /// Returns true if objects are equal
        /// </summary>
        /// <param name="input">Object to be compared</param>
        /// <returns>Boolean</returns>
        public override bool Equals(object input)
        {
            return this.Equals(input as ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView);
        }

        /// <summary>
        /// Returns true if ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView instances are equal
        /// </summary>
        /// <param name="input">Instance of ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(ComGkSoftwarePosApiModelDomAppViewsTransactionSearchView input)
        {
            if (input == null)
                return false;

            return 
                (
                    this.BusinessUnitGroupID == input.BusinessUnitGroupID ||
                    (this.BusinessUnitGroupID != null &&
                    this.BusinessUnitGroupID.Equals(input.BusinessUnitGroupID))
                ) && 
                (
                    this.TransactionID == input.TransactionID ||
                    (this.TransactionID != null &&
                    this.TransactionID.Equals(input.TransactionID))
                ) && 
                (
                    this.OperatorID == input.OperatorID ||
                    (this.OperatorID != null &&
                    this.OperatorID.Equals(input.OperatorID))
                ) && 
                (
                    this.WorkstationID == input.WorkstationID ||
                    (this.WorkstationID != null &&
                    this.WorkstationID.Equals(input.WorkstationID))
                ) && 
                (
                    this.BusinessUnitID == input.BusinessUnitID ||
                    (this.BusinessUnitID != null &&
                    this.BusinessUnitID.Equals(input.BusinessUnitID))
                ) && 
                (
                    this.BusinessUnitAddress == input.BusinessUnitAddress ||
                    (this.BusinessUnitAddress != null &&
                    this.BusinessUnitAddress.Equals(input.BusinessUnitAddress))
                ) && 
                (
                    this.SequenceNumber == input.SequenceNumber ||
                    (this.SequenceNumber != null &&
                    this.SequenceNumber.Equals(input.SequenceNumber))
                ) && 
                (
                    this.BeginDateTimestamp == input.BeginDateTimestamp ||
                    (this.BeginDateTimestamp != null &&
                    this.BeginDateTimestamp.Equals(input.BeginDateTimestamp))
                ) && 
                (
                    this.EndDateTimestamp == input.EndDateTimestamp ||
                    (this.EndDateTimestamp != null &&
                    this.EndDateTimestamp.Equals(input.EndDateTimestamp))
                ) && 
                (
                    this.TransactionTimestamp == input.TransactionTimestamp ||
                    (this.TransactionTimestamp != null &&
                    this.TransactionTimestamp.Equals(input.TransactionTimestamp))
                ) && 
                (
                    this.SuspendedFlag == input.SuspendedFlag ||
                    (this.SuspendedFlag != null &&
                    this.SuspendedFlag.Equals(input.SuspendedFlag))
                ) && 
                (
                    this.SuspendNumber == input.SuspendNumber ||
                    (this.SuspendNumber != null &&
                    this.SuspendNumber.Equals(input.SuspendNumber))
                ) && 
                (
                    this.TotalAmount == input.TotalAmount ||
                    (this.TotalAmount != null &&
                    this.TotalAmount.Equals(input.TotalAmount))
                ) && 
                (
                    this.TotalLineItemCount == input.TotalLineItemCount ||
                    (this.TotalLineItemCount != null &&
                    this.TotalLineItemCount.Equals(input.TotalLineItemCount))
                ) && 
                (
                    this.CanceledFlag == input.CanceledFlag ||
                    (this.CanceledFlag != null &&
                    this.CanceledFlag.Equals(input.CanceledFlag))
                ) && 
                (
                    this.WorkerID == input.WorkerID ||
                    (this.WorkerID != null &&
                    this.WorkerID.Equals(input.WorkerID))
                ) && 
                (
                    this.WorkerFirstName == input.WorkerFirstName ||
                    (this.WorkerFirstName != null &&
                    this.WorkerFirstName.Equals(input.WorkerFirstName))
                ) && 
                (
                    this.WorkerLastName == input.WorkerLastName ||
                    (this.WorkerLastName != null &&
                    this.WorkerLastName.Equals(input.WorkerLastName))
                ) && 
                (
                    this.WorkerFullName == input.WorkerFullName ||
                    (this.WorkerFullName != null &&
                    this.WorkerFullName.Equals(input.WorkerFullName))
                ) && 
                (
                    this.TransactionTypeCode == input.TransactionTypeCode ||
                    (this.TransactionTypeCode != null &&
                    this.TransactionTypeCode.Equals(input.TransactionTypeCode))
                ) && 
                (
                    this.TransactionFactCriteriaTransactionTypeCode == input.TransactionFactCriteriaTransactionTypeCode ||
                    (this.TransactionFactCriteriaTransactionTypeCode != null &&
                    this.TransactionFactCriteriaTransactionTypeCode.Equals(input.TransactionFactCriteriaTransactionTypeCode))
                ) && 
                (
                    this.TillID == input.TillID ||
                    (this.TillID != null &&
                    this.TillID.Equals(input.TillID))
                ) && 
                (
                    this.CustomerID == input.CustomerID ||
                    (this.CustomerID != null &&
                    this.CustomerID.Equals(input.CustomerID))
                ) && 
                (
                    this.XXCustom08 == input.XXCustom08 ||
                    (this.XXCustom08 != null &&
                    this.XXCustom08.Equals(input.XXCustom08))
                ) && 
                (
                    this.XXCustom10 == input.XXCustom10 ||
                    (this.XXCustom10 != null &&
                    this.XXCustom10.Equals(input.XXCustom10))
                ) && 
                (
                    this.XXCustom09 == input.XXCustom09 ||
                    (this.XXCustom09 != null &&
                    this.XXCustom09.Equals(input.XXCustom09))
                ) && 
                (
                    this.XXCustom07 == input.XXCustom07 ||
                    (this.XXCustom07 != null &&
                    this.XXCustom07.Equals(input.XXCustom07))
                ) && 
                (
                    this.XXCustom05 == input.XXCustom05 ||
                    (this.XXCustom05 != null &&
                    this.XXCustom05.Equals(input.XXCustom05))
                ) && 
                (
                    this.XXCustom06 == input.XXCustom06 ||
                    (this.XXCustom06 != null &&
                    this.XXCustom06.Equals(input.XXCustom06))
                ) && 
                (
                    this.XXCustom11 == input.XXCustom11 ||
                    (this.XXCustom11 != null &&
                    this.XXCustom11.Equals(input.XXCustom11))
                ) && 
                (
                    this.XXCustom12 == input.XXCustom12 ||
                    (this.XXCustom12 != null &&
                    this.XXCustom12.Equals(input.XXCustom12))
                ) && 
                (
                    this.XXCustom13 == input.XXCustom13 ||
                    (this.XXCustom13 != null &&
                    this.XXCustom13.Equals(input.XXCustom13))
                ) && 
                (
                    this.XXCustom14 == input.XXCustom14 ||
                    (this.XXCustom14 != null &&
                    this.XXCustom14.Equals(input.XXCustom14))
                ) && 
                (
                    this.XXCustom15 == input.XXCustom15 ||
                    (this.XXCustom15 != null &&
                    this.XXCustom15.Equals(input.XXCustom15))
                ) && 
                (
                    this.XXCustom03 == input.XXCustom03 ||
                    (this.XXCustom03 != null &&
                    this.XXCustom03.Equals(input.XXCustom03))
                ) && 
                (
                    this.XXCustom02 == input.XXCustom02 ||
                    (this.XXCustom02 != null &&
                    this.XXCustom02.Equals(input.XXCustom02))
                ) && 
                (
                    this.XXCustom04 == input.XXCustom04 ||
                    (this.XXCustom04 != null &&
                    this.XXCustom04.Equals(input.XXCustom04))
                ) && 
                (
                    this.XXCustom01 == input.XXCustom01 ||
                    (this.XXCustom01 != null &&
                    this.XXCustom01.Equals(input.XXCustom01))
                );
        }

        /// <summary>
        /// Gets the hash code
        /// </summary>
        /// <returns>Hash code</returns>
        public override int GetHashCode()
        {
            unchecked // Overflow is fine, just wrap
            {
                int hashCode = 41;
                if (this.BusinessUnitGroupID != null)
                    hashCode = hashCode * 59 + this.BusinessUnitGroupID.GetHashCode();
                if (this.TransactionID != null)
                    hashCode = hashCode * 59 + this.TransactionID.GetHashCode();
                if (this.OperatorID != null)
                    hashCode = hashCode * 59 + this.OperatorID.GetHashCode();
                if (this.WorkstationID != null)
                    hashCode = hashCode * 59 + this.WorkstationID.GetHashCode();
                if (this.BusinessUnitID != null)
                    hashCode = hashCode * 59 + this.BusinessUnitID.GetHashCode();
                if (this.BusinessUnitAddress != null)
                    hashCode = hashCode * 59 + this.BusinessUnitAddress.GetHashCode();
                if (this.SequenceNumber != null)
                    hashCode = hashCode * 59 + this.SequenceNumber.GetHashCode();
                if (this.BeginDateTimestamp != null)
                    hashCode = hashCode * 59 + this.BeginDateTimestamp.GetHashCode();
                if (this.EndDateTimestamp != null)
                    hashCode = hashCode * 59 + this.EndDateTimestamp.GetHashCode();
                if (this.TransactionTimestamp != null)
                    hashCode = hashCode * 59 + this.TransactionTimestamp.GetHashCode();
                if (this.SuspendedFlag != null)
                    hashCode = hashCode * 59 + this.SuspendedFlag.GetHashCode();
                if (this.SuspendNumber != null)
                    hashCode = hashCode * 59 + this.SuspendNumber.GetHashCode();
                if (this.TotalAmount != null)
                    hashCode = hashCode * 59 + this.TotalAmount.GetHashCode();
                if (this.TotalLineItemCount != null)
                    hashCode = hashCode * 59 + this.TotalLineItemCount.GetHashCode();
                if (this.CanceledFlag != null)
                    hashCode = hashCode * 59 + this.CanceledFlag.GetHashCode();
                if (this.WorkerID != null)
                    hashCode = hashCode * 59 + this.WorkerID.GetHashCode();
                if (this.WorkerFirstName != null)
                    hashCode = hashCode * 59 + this.WorkerFirstName.GetHashCode();
                if (this.WorkerLastName != null)
                    hashCode = hashCode * 59 + this.WorkerLastName.GetHashCode();
                if (this.WorkerFullName != null)
                    hashCode = hashCode * 59 + this.WorkerFullName.GetHashCode();
                if (this.TransactionTypeCode != null)
                    hashCode = hashCode * 59 + this.TransactionTypeCode.GetHashCode();
                if (this.TransactionFactCriteriaTransactionTypeCode != null)
                    hashCode = hashCode * 59 + this.TransactionFactCriteriaTransactionTypeCode.GetHashCode();
                if (this.TillID != null)
                    hashCode = hashCode * 59 + this.TillID.GetHashCode();
                if (this.CustomerID != null)
                    hashCode = hashCode * 59 + this.CustomerID.GetHashCode();
                if (this.XXCustom08 != null)
                    hashCode = hashCode * 59 + this.XXCustom08.GetHashCode();
                if (this.XXCustom10 != null)
                    hashCode = hashCode * 59 + this.XXCustom10.GetHashCode();
                if (this.XXCustom09 != null)
                    hashCode = hashCode * 59 + this.XXCustom09.GetHashCode();
                if (this.XXCustom07 != null)
                    hashCode = hashCode * 59 + this.XXCustom07.GetHashCode();
                if (this.XXCustom05 != null)
                    hashCode = hashCode * 59 + this.XXCustom05.GetHashCode();
                if (this.XXCustom06 != null)
                    hashCode = hashCode * 59 + this.XXCustom06.GetHashCode();
                if (this.XXCustom11 != null)
                    hashCode = hashCode * 59 + this.XXCustom11.GetHashCode();
                if (this.XXCustom12 != null)
                    hashCode = hashCode * 59 + this.XXCustom12.GetHashCode();
                if (this.XXCustom13 != null)
                    hashCode = hashCode * 59 + this.XXCustom13.GetHashCode();
                if (this.XXCustom14 != null)
                    hashCode = hashCode * 59 + this.XXCustom14.GetHashCode();
                if (this.XXCustom15 != null)
                    hashCode = hashCode * 59 + this.XXCustom15.GetHashCode();
                if (this.XXCustom03 != null)
                    hashCode = hashCode * 59 + this.XXCustom03.GetHashCode();
                if (this.XXCustom02 != null)
                    hashCode = hashCode * 59 + this.XXCustom02.GetHashCode();
                if (this.XXCustom04 != null)
                    hashCode = hashCode * 59 + this.XXCustom04.GetHashCode();
                if (this.XXCustom01 != null)
                    hashCode = hashCode * 59 + this.XXCustom01.GetHashCode();
                return hashCode;
            }
        }

        /// <summary>
        /// To validate all properties of the instance
        /// </summary>
        /// <param name="validationContext">Validation context</param>
        /// <returns>Validation Result</returns>
        IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
        {
            yield break;
        }
    }

}
