class PhotographerClosingAmount < InvoicingRecord
  include Hashable

  belongs_to :photographer_closing, optional: true

  def previous_photographer_closing_amount
    self.class.order(id: :desc).find_by(vat_rate: vat_rate) if vat_rate
  end

  def computed_grand_vat_total(amount)
    previous_photographer_closing_amount&.grand_vat_total.to_f + amount
  end

  def computed_perpetual_vat_total(amount)
    previous_photographer_closing_amount&.perpetual_vat_total.to_f + amount
  end

  def computed_hash_string
    Digest::SHA2.new(256).hexdigest [
      previous_hash_string,
      photographer_closing_id,
      vat_rate,
      grand_vat_total,
      perpetual_vat_total,
      created_at&.utc&.strftime('%Y-%m-%d %H:%M:%S')
    ].join('/')
  end
end
