class PaymentLine < InvoicingRecord
  include Hashable

  belongs_to :payment
  belongs_to :billing

  after_create :set_billing_paid

  def computed_hash_string
    Digest::SHA2.new(256).hexdigest [
      previous_hash_string,
      payment_id,
      billing_id,
      amount,
      payment&.created_at&.utc&.strftime('%Y-%m-%d %H:%M:%S'),
      payment&.billing_company_id,
      payment&.payment_type_id,
      payment&.payment_date&.strftime('%Y-%m-%d')
    ].join('/')
  end

  private

  def set_billing_paid
    billing.update(paid: billing.payment_lines.pluck(:amount).reduce(0, :+))
  end
end
