TauxCotisationPrelevement.php 1.52 KB
Newer Older
1 2 3 4 5 6 7 8 9
<?php

namespace App\Entity;

use App\Enum\CurrencyEnum;
use App\Utils\OperationFactory;
use Doctrine\ORM\Mapping as ORM;

/**
Damien Moulard committed
10 11
 * En cas de taux < 1, l'adhérent•e reçoit moins d'emlc que ce qu'elle•il paye en € :
 * un second flux est créé pour prélever le complément de la cotisation.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
 *
 * @ORM\Entity
 */
class TauxCotisationPrelevement extends TauxCotisationApplication
{
    /**
     * @ORM\OneToOne(targetEntity="Adherent")
     * @ORM\JoinColumn(name="adherent_id", referencedColumnName="id")
     */
    protected $expediteur;

    /**
     * @ORM\OneToOne(targetEntity="Siege")
     * @ORM\JoinColumn(name="siege_id", referencedColumnName="id")
     */
    protected $destinataire;

    public function getAllOperations($em)
    {
        return [
            OperationFactory::getOperation($this, $this->getExpediteur(), CurrencyEnum::CURRENCY_EMLC, -$this->getMontant()),
            OperationFactory::getOperation($this, $this->getDestinataire(), CurrencyEnum::CURRENCY_EMLC, -$this->getMontant()),  // Decrease siege ecompte too
        ];
    }

    public function operate($em)
    {
        $this->getDestinataire()->removeEcompteNantie($this->getMontant());
        $this->getExpediteur()->removeEcompte($this->getMontant());

        return [$this->getExpediteur(), $this->getDestinataire()];
    }

    /**
     * @return string
     */
    public function getType(): string
    {
        return parent::TYPE_PRELEVEMENT_COTISATION_ADHERENT;
    }

    public function getUsersToNotify()
    {
        return [];
    }
}