/// <summary>
 /// Initializes a new instance of the <see cref="GetCharactersCharacterIdWalletJournal200Ok" /> class.
 /// </summary>
 /// <param name="date">Date and time of transaction (required).</param>
 /// <param name="refId">Unique journal reference ID (required).</param>
 /// <param name="refType">Transaction type, different type of transaction will populate different fields in &#x60;extra_info&#x60; Note: If you have an existing XML API application that is using ref_types, you will need to know which string ESI ref_type maps to which integer. You can use the following gist to see string-&gt;int mappings: https://gist.github.com/ccp-zoetrope/c03db66d90c2148724c06171bc52e0ec (required).</param>
 /// <param name="firstPartyId">first_party_id integer.</param>
 /// <param name="firstPartyType">first_party_type string.</param>
 /// <param name="secondPartyId">second_party_id integer.</param>
 /// <param name="secondPartyType">second_party_type string.</param>
 /// <param name="amount">Transaction amount. Positive when value transferred to the first party. Negative otherwise.</param>
 /// <param name="balance">Wallet balance after transaction occurred.</param>
 /// <param name="reason">reason string.</param>
 /// <param name="taxReceiverId">the corporation ID receiving any tax paid.</param>
 /// <param name="tax">Tax amount received for tax related transactions.</param>
 /// <param name="extraInfo">extraInfo.</param>
 public GetCharactersCharacterIdWalletJournal200Ok(DateTime?date = default(DateTime?), long?refId = default(long?), RefTypeEnum refType = default(RefTypeEnum), int?firstPartyId = default(int?), FirstPartyTypeEnum?firstPartyType = default(FirstPartyTypeEnum?), int?secondPartyId = default(int?), SecondPartyTypeEnum?secondPartyType = default(SecondPartyTypeEnum?), double?amount = default(double?), double?balance = default(double?), string reason = default(string), int?taxReceiverId = default(int?), double?tax = default(double?), GetCharactersCharacterIdWalletJournalExtraInfo extraInfo = default(GetCharactersCharacterIdWalletJournalExtraInfo))
 {
     // to ensure "date" is required (not null)
     if (date == null)
     {
         throw new InvalidDataException("date is a required property for GetCharactersCharacterIdWalletJournal200Ok and cannot be null");
     }
     else
     {
         this.Date = date;
     }
     // to ensure "refId" is required (not null)
     if (refId == null)
     {
         throw new InvalidDataException("refId is a required property for GetCharactersCharacterIdWalletJournal200Ok and cannot be null");
     }
     else
     {
         this.RefId = refId;
     }
     // to ensure "refType" is required (not null)
     if (refType == null)
     {
         throw new InvalidDataException("refType is a required property for GetCharactersCharacterIdWalletJournal200Ok and cannot be null");
     }
     else
     {
         this.RefType = refType;
     }
     this.FirstPartyId    = firstPartyId;
     this.FirstPartyType  = firstPartyType;
     this.SecondPartyId   = secondPartyId;
     this.SecondPartyType = secondPartyType;
     this.Amount          = amount;
     this.Balance         = balance;
     this.Reason          = reason;
     this.TaxReceiverId   = taxReceiverId;
     this.Tax             = tax;
     this.ExtraInfo       = extraInfo;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GetCharactersCharacterIdWalletJournal200Ok" /> class.
 /// </summary>
 /// <param name="Amount">Transaction amount. Positive when value transferred to the first party. Negative otherwise.</param>
 /// <param name="Balance">Wallet balance after transaction occurred.</param>
 /// <param name="Date">Date and time of transaction (required).</param>
 /// <param name="ExtraInfo">ExtraInfo.</param>
 /// <param name="FirstPartyId">first_party_id integer.</param>
 /// <param name="FirstPartyType">first_party_type string.</param>
 /// <param name="Reason">reason string.</param>
 /// <param name="RefId">Unique journal reference ID (required).</param>
 /// <param name="RefType">Transaction type, different type of transaction will populate different fields in &#x60;extra_info&#x60; (required).</param>
 /// <param name="SecondPartyId">second_party_id integer.</param>
 /// <param name="SecondPartyType">second_party_type string.</param>
 /// <param name="Tax">Tax amount received for tax related transactions.</param>
 /// <param name="TaxRecieverId">the corporation ID receiving any tax paid.</param>
 public GetCharactersCharacterIdWalletJournal200Ok(float?Amount = default(float?), float?Balance = default(float?), DateTime?Date = default(DateTime?), GetCharactersCharacterIdWalletJournalExtraInfo ExtraInfo = default(GetCharactersCharacterIdWalletJournalExtraInfo), int?FirstPartyId = default(int?), FirstPartyTypeEnum?FirstPartyType = default(FirstPartyTypeEnum?), string Reason = default(string), long?RefId = default(long?), RefTypeEnum?RefType = default(RefTypeEnum?), int?SecondPartyId = default(int?), SecondPartyTypeEnum?SecondPartyType = default(SecondPartyTypeEnum?), float?Tax = default(float?), int?TaxRecieverId = default(int?))
 {
     // to ensure "Date" is required (not null)
     if (Date == null)
     {
         throw new InvalidDataException("Date is a required property for GetCharactersCharacterIdWalletJournal200Ok and cannot be null");
     }
     else
     {
         this.Date = Date;
     }
     // to ensure "RefId" is required (not null)
     if (RefId == null)
     {
         throw new InvalidDataException("RefId is a required property for GetCharactersCharacterIdWalletJournal200Ok and cannot be null");
     }
     else
     {
         this.RefId = RefId;
     }
     // to ensure "RefType" is required (not null)
     if (RefType == null)
     {
         throw new InvalidDataException("RefType is a required property for GetCharactersCharacterIdWalletJournal200Ok and cannot be null");
     }
     else
     {
         this.RefType = RefType;
     }
     this.Amount          = Amount;
     this.Balance         = Balance;
     this.ExtraInfo       = ExtraInfo;
     this.FirstPartyId    = FirstPartyId;
     this.FirstPartyType  = FirstPartyType;
     this.Reason          = Reason;
     this.SecondPartyId   = SecondPartyId;
     this.SecondPartyType = SecondPartyType;
     this.Tax             = Tax;
     this.TaxRecieverId   = TaxRecieverId;
 }