<?php
/**
 * @copyright (c) Kufer Software GmbH, Oderstraße 7, D-84453 Mühldorf
 */

class GebuehrenElementVisitorSpendenBetrag extends GebuehrenElementVisitorBase
{
  
  private $spendenInfos;

  
  private $useKostenstelleAndererKursgebuehren;

  public function __construct(SpendenFondInfos $spendenInfos, bool $useKostenstelleAndererKursgebuehren)
  {
    $this->spendenInfos = $spendenInfos;
    $this->useKostenstelleAndererKursgebuehren = $useKostenstelleAndererKursgebuehren;
  }

  public function visit(\GebuehrenElement $elem)
  {
    $spendenKursGeb = new Kursgebuehr();
    $spendenKursGeb->knr = $elem->getKnr();
    $spendenKursGeb->gebart = $this->spendenInfos->gebuehrenArt->schluessel;
    $spendenKursGeb->text = $this->spendenInfos->gebuehrenArt->text;
    $spendenKursGeb->ermaessigbar = $this->spendenInfos->gebuehrenArt->ermaessigbar;
    $spendenKursGeb->konto = $this->spendenInfos->gebuehrenArt->konto;
    $spendenKursGeb->kostenst = $this->spendenInfos->gebuehrenArt->kostenst;
    $spendenKursGeb->dp = $this->spendenInfos->gebuehrenArt->dp;
    $spendenKursGeb->mwst = $this->spendenInfos->gebuehrenArt->mwst;
    $spendenKursGeb->betrag = $this->spendenInfos->betrag;
    $spendenKursGeb->betrag_ermaessigt = $this->spendenInfos->betrag;

    if ($this->useKostenstelleAndererKursgebuehren && count($elem->getGebuehrensaetze()) > 0) {
      
      $firstGebuehrenSatz = \ArrayOperations::firstValue($elem->getGebuehrensaetze());
      $spendenKursGeb->konto = $firstGebuehrenSatz->konto;
      $spendenKursGeb->kostenst = $firstGebuehrenSatz->kostenst;
    }

    $elem->addGebuehrensatz($spendenKursGeb);
  }
}