/* 
 * TSE Cloud - CO
 *
 * This is Swagger Docs for Document WebApi Teamsystemn Enterprise Cloud, more detail at [https://swagger.io](https://swagger.io).
 *
 * OpenAPI spec version: v2025.3000
 * 
 * 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>
    /// CG64_SOTTOTIPO - SubTypeCO&lt;br&gt;Proprietà chiave:&lt;ul&gt;&lt;li&gt;&lt;b&gt;Id&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
    /// </summary>
    [DataContract]
        public partial class SubTypeCODTO :  IEquatable<SubTypeCODTO>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="SubTypeCODTO" /> class.
        /// </summary>
        /// <param name="codiceCg07">CG64_CODICE_CG07 - Nazione di incasso.</param>
        /// <param name="codPaguc">CG64_CODPAGUC - Codice pagamento estero.</param>
        /// <param name="codStipoeff">CG64_CODSTIPOEFF - Sottotipo effetto (required).</param>
        /// <param name="descstipo">CG64_DESCSTIPO - Descrizione sottotipo effetto.</param>
        /// <param name="flgAssegno">CG64_FLGASSEGNO - Assegno (required).</param>
        /// <param name="ggoffset">CG64_GGOFFSET - Giorni spostamento scadenza.</param>
        /// <param name="id">CG64_ID - ID (Required only in PUT/PATCH).</param>
        /// <param name="indModfatturapa">CG64_INDMODFATTURAPA - Modalità fattura elettronica&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;0&lt;/i&gt; - Nessuna&lt;/li&gt;&lt;li&gt;&lt;i&gt;10&lt;/i&gt; - Contanti&lt;/li&gt;&lt;li&gt;&lt;i&gt;2&lt;/i&gt; - Assegno&lt;/li&gt;&lt;li&gt;&lt;i&gt;3&lt;/i&gt; - Assegno circolare&lt;/li&gt;&lt;li&gt;&lt;i&gt;1&lt;/i&gt; - Contanti presso tesoreria&lt;/li&gt;&lt;li&gt;&lt;i&gt;4&lt;/i&gt; - Vaglia cambiario&lt;/li&gt;&lt;li&gt;&lt;i&gt;5&lt;/i&gt; - Bollettino bancario&lt;/li&gt;&lt;li&gt;&lt;i&gt;6&lt;/i&gt; - Quietanza erario&lt;/li&gt;&lt;li&gt;&lt;i&gt;7&lt;/i&gt; - Giroconto su conti di contabilità speciale&lt;/li&gt;&lt;li&gt;&lt;i&gt;8&lt;/i&gt; - Domiciliazione bancaria&lt;/li&gt;&lt;li&gt;&lt;i&gt;9&lt;/i&gt; - Domiciliazione postale&lt;/li&gt;&lt;li&gt;&lt;i&gt;11&lt;/i&gt; - Trattenuta su somme già riscosse&lt;/li&gt;&lt;li&gt;&lt;i&gt;12&lt;/i&gt; - PagoPa&lt;/li&gt;&lt;/ul&gt;.</param>
        /// <param name="rowversion">CG64_ROWVERSION - RowVersion.</param>
        /// <param name="tipoeff">CG64_TIPOEFF - Tipo scadenza&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;0&lt;/i&gt; - Tutti&lt;/li&gt;&lt;li&gt;&lt;i&gt;1&lt;/i&gt; - Contanti&lt;/li&gt;&lt;li&gt;&lt;i&gt;2&lt;/i&gt; - Ricevuta bancaria&lt;/li&gt;&lt;li&gt;&lt;i&gt;3&lt;/i&gt; - Tratta&lt;/li&gt;&lt;li&gt;&lt;i&gt;4&lt;/i&gt; - Tratta accettata&lt;/li&gt;&lt;li&gt;&lt;i&gt;5&lt;/i&gt; - Cessione&lt;/li&gt;&lt;li&gt;&lt;i&gt;6&lt;/i&gt; - Cambiale&lt;/li&gt;&lt;li&gt;&lt;i&gt;7&lt;/i&gt; - Carta di credito&lt;/li&gt;&lt;li&gt;&lt;i&gt;8&lt;/i&gt; - Bancomat&lt;/li&gt;&lt;li&gt;&lt;i&gt;9&lt;/i&gt; - Contrassegno&lt;/li&gt;&lt;li&gt;&lt;i&gt;10&lt;/i&gt; - Lettera di credito&lt;/li&gt;&lt;li&gt;&lt;i&gt;11&lt;/i&gt; - RID&lt;/li&gt;&lt;li&gt;&lt;i&gt;12&lt;/i&gt; - Leasing&lt;/li&gt;&lt;li&gt;&lt;i&gt;13&lt;/i&gt; - Rimessa diretta&lt;/li&gt;&lt;li&gt;&lt;i&gt;14&lt;/i&gt; - Bonifico&lt;/li&gt;&lt;li&gt;&lt;i&gt;15&lt;/i&gt; - C/C postale&lt;/li&gt;&lt;li&gt;&lt;i&gt;16&lt;/i&gt; - MAV&lt;/li&gt;&lt;/ul&gt;.</param>
        /// <param name="foreignPaymentCodeCO">foreignPaymentCodeCO.</param>
        /// <param name="nationCO">nationCO.</param>
        /// <param name="additionalData">additionalData.</param>
        /// <param name="pluginData">pluginData.</param>
        public SubTypeCODTO(double? codiceCg07 = default(double?), string codPaguc = default(string), double? codStipoeff = default(double?), string descstipo = default(string), int? flgAssegno = default(int?), double? ggoffset = default(double?), long? id = default(long?), int? indModfatturapa = default(int?), byte[] rowversion = default(byte[]), double? tipoeff = default(double?), ForeignPaymentCodeCODTO foreignPaymentCodeCO = default(ForeignPaymentCodeCODTO), NationCODTO nationCO = default(NationCODTO), Dictionary<string, Object> additionalData = default(Dictionary<string, Object>), Dictionary<string, Object> pluginData = default(Dictionary<string, Object>))
        {
            // to ensure "codStipoeff" is required (not null)
            if (codStipoeff == null)
            {
                throw new InvalidDataException("codStipoeff is a required property for SubTypeCODTO and cannot be null");
            }
            else
            {
                this.CodStipoeff = codStipoeff;
            }
            // to ensure "flgAssegno" is required (not null)
            if (flgAssegno == null)
            {
                throw new InvalidDataException("flgAssegno is a required property for SubTypeCODTO and cannot be null");
            }
            else
            {
                this.FlgAssegno = flgAssegno;
            }
            this.CodiceCg07 = codiceCg07;
            this.CodPaguc = codPaguc;
            this.Descstipo = descstipo;
            this.Ggoffset = ggoffset;
            this.Id = id;
            this.IndModfatturapa = indModfatturapa;
            this.Rowversion = rowversion;
            this.Tipoeff = tipoeff;
            this.ForeignPaymentCodeCO = foreignPaymentCodeCO;
            this.NationCO = nationCO;
            this.AdditionalData = additionalData;
            this.PluginData = pluginData;
        }
        
        /// <summary>
        /// CG64_CODICE_CG07 - Nazione di incasso
        /// </summary>
        /// <value>CG64_CODICE_CG07 - Nazione di incasso</value>
        [DataMember(Name="codiceCg07", EmitDefaultValue=false)]
        public double? CodiceCg07 { get; set; }

        /// <summary>
        /// CG64_CODPAGUC - Codice pagamento estero
        /// </summary>
        /// <value>CG64_CODPAGUC - Codice pagamento estero</value>
        [DataMember(Name="codPaguc", EmitDefaultValue=false)]
        public string CodPaguc { get; set; }

        /// <summary>
        /// CG64_CODSTIPOEFF - Sottotipo effetto
        /// </summary>
        /// <value>CG64_CODSTIPOEFF - Sottotipo effetto</value>
        [DataMember(Name="codStipoeff", EmitDefaultValue=false)]
        public double? CodStipoeff { get; set; }

        /// <summary>
        /// CG64_DESCSTIPO - Descrizione sottotipo effetto
        /// </summary>
        /// <value>CG64_DESCSTIPO - Descrizione sottotipo effetto</value>
        [DataMember(Name="descstipo", EmitDefaultValue=false)]
        public string Descstipo { get; set; }

        /// <summary>
        /// CG64_FLGASSEGNO - Assegno
        /// </summary>
        /// <value>CG64_FLGASSEGNO - Assegno</value>
        [DataMember(Name="flgAssegno", EmitDefaultValue=false)]
        public int? FlgAssegno { get; set; }

        /// <summary>
        /// CG64_GGOFFSET - Giorni spostamento scadenza
        /// </summary>
        /// <value>CG64_GGOFFSET - Giorni spostamento scadenza</value>
        [DataMember(Name="ggoffset", EmitDefaultValue=false)]
        public double? Ggoffset { get; set; }

        /// <summary>
        /// CG64_ID - ID (Required only in PUT/PATCH)
        /// </summary>
        /// <value>CG64_ID - ID (Required only in PUT/PATCH)</value>
        [DataMember(Name="id", EmitDefaultValue=false)]
        public long? Id { get; set; }

        /// <summary>
        /// CG64_INDMODFATTURAPA - Modalità fattura elettronica&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;0&lt;/i&gt; - Nessuna&lt;/li&gt;&lt;li&gt;&lt;i&gt;10&lt;/i&gt; - Contanti&lt;/li&gt;&lt;li&gt;&lt;i&gt;2&lt;/i&gt; - Assegno&lt;/li&gt;&lt;li&gt;&lt;i&gt;3&lt;/i&gt; - Assegno circolare&lt;/li&gt;&lt;li&gt;&lt;i&gt;1&lt;/i&gt; - Contanti presso tesoreria&lt;/li&gt;&lt;li&gt;&lt;i&gt;4&lt;/i&gt; - Vaglia cambiario&lt;/li&gt;&lt;li&gt;&lt;i&gt;5&lt;/i&gt; - Bollettino bancario&lt;/li&gt;&lt;li&gt;&lt;i&gt;6&lt;/i&gt; - Quietanza erario&lt;/li&gt;&lt;li&gt;&lt;i&gt;7&lt;/i&gt; - Giroconto su conti di contabilità speciale&lt;/li&gt;&lt;li&gt;&lt;i&gt;8&lt;/i&gt; - Domiciliazione bancaria&lt;/li&gt;&lt;li&gt;&lt;i&gt;9&lt;/i&gt; - Domiciliazione postale&lt;/li&gt;&lt;li&gt;&lt;i&gt;11&lt;/i&gt; - Trattenuta su somme già riscosse&lt;/li&gt;&lt;li&gt;&lt;i&gt;12&lt;/i&gt; - PagoPa&lt;/li&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>CG64_INDMODFATTURAPA - Modalità fattura elettronica&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;0&lt;/i&gt; - Nessuna&lt;/li&gt;&lt;li&gt;&lt;i&gt;10&lt;/i&gt; - Contanti&lt;/li&gt;&lt;li&gt;&lt;i&gt;2&lt;/i&gt; - Assegno&lt;/li&gt;&lt;li&gt;&lt;i&gt;3&lt;/i&gt; - Assegno circolare&lt;/li&gt;&lt;li&gt;&lt;i&gt;1&lt;/i&gt; - Contanti presso tesoreria&lt;/li&gt;&lt;li&gt;&lt;i&gt;4&lt;/i&gt; - Vaglia cambiario&lt;/li&gt;&lt;li&gt;&lt;i&gt;5&lt;/i&gt; - Bollettino bancario&lt;/li&gt;&lt;li&gt;&lt;i&gt;6&lt;/i&gt; - Quietanza erario&lt;/li&gt;&lt;li&gt;&lt;i&gt;7&lt;/i&gt; - Giroconto su conti di contabilità speciale&lt;/li&gt;&lt;li&gt;&lt;i&gt;8&lt;/i&gt; - Domiciliazione bancaria&lt;/li&gt;&lt;li&gt;&lt;i&gt;9&lt;/i&gt; - Domiciliazione postale&lt;/li&gt;&lt;li&gt;&lt;i&gt;11&lt;/i&gt; - Trattenuta su somme già riscosse&lt;/li&gt;&lt;li&gt;&lt;i&gt;12&lt;/i&gt; - PagoPa&lt;/li&gt;&lt;/ul&gt;</value>
        [DataMember(Name="indModfatturapa", EmitDefaultValue=false)]
        public int? IndModfatturapa { get; set; }

        /// <summary>
        /// CG64_ROWVERSION - RowVersion
        /// </summary>
        /// <value>CG64_ROWVERSION - RowVersion</value>
        [DataMember(Name="rowversion", EmitDefaultValue=false)]
        public byte[] Rowversion { get; set; }

        /// <summary>
        /// CG64_TIPOEFF - Tipo scadenza&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;0&lt;/i&gt; - Tutti&lt;/li&gt;&lt;li&gt;&lt;i&gt;1&lt;/i&gt; - Contanti&lt;/li&gt;&lt;li&gt;&lt;i&gt;2&lt;/i&gt; - Ricevuta bancaria&lt;/li&gt;&lt;li&gt;&lt;i&gt;3&lt;/i&gt; - Tratta&lt;/li&gt;&lt;li&gt;&lt;i&gt;4&lt;/i&gt; - Tratta accettata&lt;/li&gt;&lt;li&gt;&lt;i&gt;5&lt;/i&gt; - Cessione&lt;/li&gt;&lt;li&gt;&lt;i&gt;6&lt;/i&gt; - Cambiale&lt;/li&gt;&lt;li&gt;&lt;i&gt;7&lt;/i&gt; - Carta di credito&lt;/li&gt;&lt;li&gt;&lt;i&gt;8&lt;/i&gt; - Bancomat&lt;/li&gt;&lt;li&gt;&lt;i&gt;9&lt;/i&gt; - Contrassegno&lt;/li&gt;&lt;li&gt;&lt;i&gt;10&lt;/i&gt; - Lettera di credito&lt;/li&gt;&lt;li&gt;&lt;i&gt;11&lt;/i&gt; - RID&lt;/li&gt;&lt;li&gt;&lt;i&gt;12&lt;/i&gt; - Leasing&lt;/li&gt;&lt;li&gt;&lt;i&gt;13&lt;/i&gt; - Rimessa diretta&lt;/li&gt;&lt;li&gt;&lt;i&gt;14&lt;/i&gt; - Bonifico&lt;/li&gt;&lt;li&gt;&lt;i&gt;15&lt;/i&gt; - C/C postale&lt;/li&gt;&lt;li&gt;&lt;i&gt;16&lt;/i&gt; - MAV&lt;/li&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>CG64_TIPOEFF - Tipo scadenza&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;0&lt;/i&gt; - Tutti&lt;/li&gt;&lt;li&gt;&lt;i&gt;1&lt;/i&gt; - Contanti&lt;/li&gt;&lt;li&gt;&lt;i&gt;2&lt;/i&gt; - Ricevuta bancaria&lt;/li&gt;&lt;li&gt;&lt;i&gt;3&lt;/i&gt; - Tratta&lt;/li&gt;&lt;li&gt;&lt;i&gt;4&lt;/i&gt; - Tratta accettata&lt;/li&gt;&lt;li&gt;&lt;i&gt;5&lt;/i&gt; - Cessione&lt;/li&gt;&lt;li&gt;&lt;i&gt;6&lt;/i&gt; - Cambiale&lt;/li&gt;&lt;li&gt;&lt;i&gt;7&lt;/i&gt; - Carta di credito&lt;/li&gt;&lt;li&gt;&lt;i&gt;8&lt;/i&gt; - Bancomat&lt;/li&gt;&lt;li&gt;&lt;i&gt;9&lt;/i&gt; - Contrassegno&lt;/li&gt;&lt;li&gt;&lt;i&gt;10&lt;/i&gt; - Lettera di credito&lt;/li&gt;&lt;li&gt;&lt;i&gt;11&lt;/i&gt; - RID&lt;/li&gt;&lt;li&gt;&lt;i&gt;12&lt;/i&gt; - Leasing&lt;/li&gt;&lt;li&gt;&lt;i&gt;13&lt;/i&gt; - Rimessa diretta&lt;/li&gt;&lt;li&gt;&lt;i&gt;14&lt;/i&gt; - Bonifico&lt;/li&gt;&lt;li&gt;&lt;i&gt;15&lt;/i&gt; - C/C postale&lt;/li&gt;&lt;li&gt;&lt;i&gt;16&lt;/i&gt; - MAV&lt;/li&gt;&lt;/ul&gt;</value>
        [DataMember(Name="tipoeff", EmitDefaultValue=false)]
        public double? Tipoeff { get; set; }

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

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

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

        /// <summary>
        /// Gets or Sets PluginData
        /// </summary>
        [DataMember(Name="pluginData", EmitDefaultValue=false)]
        public Dictionary<string, Object> PluginData { 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 SubTypeCODTO {\n");
            sb.Append("  CodiceCg07: ").Append(CodiceCg07).Append("\n");
            sb.Append("  CodPaguc: ").Append(CodPaguc).Append("\n");
            sb.Append("  CodStipoeff: ").Append(CodStipoeff).Append("\n");
            sb.Append("  Descstipo: ").Append(Descstipo).Append("\n");
            sb.Append("  FlgAssegno: ").Append(FlgAssegno).Append("\n");
            sb.Append("  Ggoffset: ").Append(Ggoffset).Append("\n");
            sb.Append("  Id: ").Append(Id).Append("\n");
            sb.Append("  IndModfatturapa: ").Append(IndModfatturapa).Append("\n");
            sb.Append("  Rowversion: ").Append(Rowversion).Append("\n");
            sb.Append("  Tipoeff: ").Append(Tipoeff).Append("\n");
            sb.Append("  ForeignPaymentCodeCO: ").Append(ForeignPaymentCodeCO).Append("\n");
            sb.Append("  NationCO: ").Append(NationCO).Append("\n");
            sb.Append("  AdditionalData: ").Append(AdditionalData).Append("\n");
            sb.Append("  PluginData: ").Append(PluginData).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 SubTypeCODTO);
        }

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

            return 
                (
                    this.CodiceCg07 == input.CodiceCg07 ||
                    (this.CodiceCg07 != null &&
                    this.CodiceCg07.Equals(input.CodiceCg07))
                ) && 
                (
                    this.CodPaguc == input.CodPaguc ||
                    (this.CodPaguc != null &&
                    this.CodPaguc.Equals(input.CodPaguc))
                ) && 
                (
                    this.CodStipoeff == input.CodStipoeff ||
                    (this.CodStipoeff != null &&
                    this.CodStipoeff.Equals(input.CodStipoeff))
                ) && 
                (
                    this.Descstipo == input.Descstipo ||
                    (this.Descstipo != null &&
                    this.Descstipo.Equals(input.Descstipo))
                ) && 
                (
                    this.FlgAssegno == input.FlgAssegno ||
                    (this.FlgAssegno != null &&
                    this.FlgAssegno.Equals(input.FlgAssegno))
                ) && 
                (
                    this.Ggoffset == input.Ggoffset ||
                    (this.Ggoffset != null &&
                    this.Ggoffset.Equals(input.Ggoffset))
                ) && 
                (
                    this.Id == input.Id ||
                    (this.Id != null &&
                    this.Id.Equals(input.Id))
                ) && 
                (
                    this.IndModfatturapa == input.IndModfatturapa ||
                    (this.IndModfatturapa != null &&
                    this.IndModfatturapa.Equals(input.IndModfatturapa))
                ) && 
                (
                    this.Rowversion == input.Rowversion ||
                    (this.Rowversion != null &&
                    this.Rowversion.Equals(input.Rowversion))
                ) && 
                (
                    this.Tipoeff == input.Tipoeff ||
                    (this.Tipoeff != null &&
                    this.Tipoeff.Equals(input.Tipoeff))
                ) && 
                (
                    this.ForeignPaymentCodeCO == input.ForeignPaymentCodeCO ||
                    (this.ForeignPaymentCodeCO != null &&
                    this.ForeignPaymentCodeCO.Equals(input.ForeignPaymentCodeCO))
                ) && 
                (
                    this.NationCO == input.NationCO ||
                    (this.NationCO != null &&
                    this.NationCO.Equals(input.NationCO))
                ) && 
                (
                    this.AdditionalData == input.AdditionalData ||
                    this.AdditionalData != null &&
                    input.AdditionalData != null &&
                    this.AdditionalData.SequenceEqual(input.AdditionalData)
                ) && 
                (
                    this.PluginData == input.PluginData ||
                    this.PluginData != null &&
                    input.PluginData != null &&
                    this.PluginData.SequenceEqual(input.PluginData)
                );
        }

        /// <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.CodiceCg07 != null)
                    hashCode = hashCode * 59 + this.CodiceCg07.GetHashCode();
                if (this.CodPaguc != null)
                    hashCode = hashCode * 59 + this.CodPaguc.GetHashCode();
                if (this.CodStipoeff != null)
                    hashCode = hashCode * 59 + this.CodStipoeff.GetHashCode();
                if (this.Descstipo != null)
                    hashCode = hashCode * 59 + this.Descstipo.GetHashCode();
                if (this.FlgAssegno != null)
                    hashCode = hashCode * 59 + this.FlgAssegno.GetHashCode();
                if (this.Ggoffset != null)
                    hashCode = hashCode * 59 + this.Ggoffset.GetHashCode();
                if (this.Id != null)
                    hashCode = hashCode * 59 + this.Id.GetHashCode();
                if (this.IndModfatturapa != null)
                    hashCode = hashCode * 59 + this.IndModfatturapa.GetHashCode();
                if (this.Rowversion != null)
                    hashCode = hashCode * 59 + this.Rowversion.GetHashCode();
                if (this.Tipoeff != null)
                    hashCode = hashCode * 59 + this.Tipoeff.GetHashCode();
                if (this.ForeignPaymentCodeCO != null)
                    hashCode = hashCode * 59 + this.ForeignPaymentCodeCO.GetHashCode();
                if (this.NationCO != null)
                    hashCode = hashCode * 59 + this.NationCO.GetHashCode();
                if (this.AdditionalData != null)
                    hashCode = hashCode * 59 + this.AdditionalData.GetHashCode();
                if (this.PluginData != null)
                    hashCode = hashCode * 59 + this.PluginData.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;
        }
    }
}
