public override int GetHashCode()
        {
            int hashCode = 772730141;

            if (Uid != null)
            {
                hashCode += Uid.GetHashCode();
            }

            if (RequestMethod != null)
            {
                hashCode += RequestMethod.GetHashCode();
            }

            if (RequestType != null)
            {
                hashCode += RequestType.GetHashCode();
            }

            if (DueDate != null)
            {
                hashCode += DueDate.GetHashCode();
            }

            if (FixedAmountRequestedMoney != null)
            {
                hashCode += FixedAmountRequestedMoney.GetHashCode();
            }

            if (PercentageRequested != null)
            {
                hashCode += PercentageRequested.GetHashCode();
            }

            if (TippingEnabled != null)
            {
                hashCode += TippingEnabled.GetHashCode();
            }

            if (AutomaticPaymentSource != null)
            {
                hashCode += AutomaticPaymentSource.GetHashCode();
            }

            if (CardId != null)
            {
                hashCode += CardId.GetHashCode();
            }

            if (Reminders != null)
            {
                hashCode += Reminders.GetHashCode();
            }

            if (ComputedAmountMoney != null)
            {
                hashCode += ComputedAmountMoney.GetHashCode();
            }

            if (TotalCompletedAmountMoney != null)
            {
                hashCode += TotalCompletedAmountMoney.GetHashCode();
            }

            if (RoundingAdjustmentIncludedMoney != null)
            {
                hashCode += RoundingAdjustmentIncludedMoney.GetHashCode();
            }

            return(hashCode);
        }
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (obj == this)
            {
                return(true);
            }

            return(obj is InvoicePaymentRequest other &&
                   ((Uid == null && other.Uid == null) || (Uid?.Equals(other.Uid) == true)) &&
                   ((RequestMethod == null && other.RequestMethod == null) || (RequestMethod?.Equals(other.RequestMethod) == true)) &&
                   ((RequestType == null && other.RequestType == null) || (RequestType?.Equals(other.RequestType) == true)) &&
                   ((DueDate == null && other.DueDate == null) || (DueDate?.Equals(other.DueDate) == true)) &&
                   ((FixedAmountRequestedMoney == null && other.FixedAmountRequestedMoney == null) || (FixedAmountRequestedMoney?.Equals(other.FixedAmountRequestedMoney) == true)) &&
                   ((PercentageRequested == null && other.PercentageRequested == null) || (PercentageRequested?.Equals(other.PercentageRequested) == true)) &&
                   ((TippingEnabled == null && other.TippingEnabled == null) || (TippingEnabled?.Equals(other.TippingEnabled) == true)) &&
                   ((AutomaticPaymentSource == null && other.AutomaticPaymentSource == null) || (AutomaticPaymentSource?.Equals(other.AutomaticPaymentSource) == true)) &&
                   ((CardId == null && other.CardId == null) || (CardId?.Equals(other.CardId) == true)) &&
                   ((Reminders == null && other.Reminders == null) || (Reminders?.Equals(other.Reminders) == true)) &&
                   ((ComputedAmountMoney == null && other.ComputedAmountMoney == null) || (ComputedAmountMoney?.Equals(other.ComputedAmountMoney) == true)) &&
                   ((TotalCompletedAmountMoney == null && other.TotalCompletedAmountMoney == null) || (TotalCompletedAmountMoney?.Equals(other.TotalCompletedAmountMoney) == true)) &&
                   ((RoundingAdjustmentIncludedMoney == null && other.RoundingAdjustmentIncludedMoney == null) || (RoundingAdjustmentIncludedMoney?.Equals(other.RoundingAdjustmentIncludedMoney) == true)));
        }