<?php

namespace Garradin\Plugin\RecusFiscaux;

// génération du formulaire

class RecusHTML
{
    private $nomAsso;
    private $adresseAsso;
    private $objetAsso;
    private $nomResponsable;
    private $fonctionResponsable;
    private $articlesCGI;
    private $signature;

    /**
     * initialize global data
     */
    function __construct($nomAsso,
                         $adresseAsso,
                         $objetAsso,
                         $nomResponsable,
                         $fonctionResponsable,
                         $articlesCGI,
                         $signature)
    {
        $this->nomAsso = $nomAsso;
        $this->adresseAsso = $adresseAsso;
        $this->objetAsso = $objetAsso;
        $this->nomResponsable = $nomResponsable;
        $this->fonctionResponsable = $fonctionResponsable;
        $this->signature = $signature;
        $this->articlesCGI = $articlesCGI;
        $this->html = $this->entete();
    }

    function get()
    {
        return $this->html;
    }

    // imprimer le reçu
    function imprimer_recu($annee_recu,
                           $numero,
                           $nom,
                           $lesMontants,
                           $adresse,
                           $code_postal,
                           $ville)
    {
        ob_start();
echo <<<FDD
            <div id="numRecu">
                <p class="important">Reçu numéro {$annee_recu}/{$numero}</p>
            </div>
        </div>
        <div class="cartouche" id="beneficiaire">
            <h3 class="rubrique">Bénéficiaire des versements</h3>
            <p class="important">Association « {$this->nomAsso} »</p>
            <p class="important" >{$this->adresseAsso}</p>
            <p><span class="titre">Objet : </span><span class="libelle">{$this->objetAsso}</span></p>
        </div>

        <div class="cartouche" id="donateur">
            <h3 class="rubrique">Donateur</h3>
            <p>{$nom}</p>
            <p>{$adresse}</p>
            <p>{$code_postal} {$ville}</p>
        </div>

        <div class="cartouche" id="versements">
            <p>Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction d'impôt :</p>
            <ul>

FDD;

        foreach ($lesMontants as $taux => $montant)
        {
            $this->imprimer_montant($montant,
                                    Utils::getLigneReduction($taux));
        }
        echo "</ul>\n";
        $this->imprimer_description("Date des versements :",
                                    "année {$annee_recu}");
        $this->imprimer_description("Nature du don : ",
                                    "Numéraire");
        $this->imprimer_description("Mode de versement : ",
                                    "chèque et/ou virement");

        // articles du CGI
        $nbArticles = count($this->articlesCGI);
        if ($nbArticles == 1)
        {
            echo "Le bénéficiaire certifie sur l’honneur que les dons et versements qu’il reçoit ouvrent droit à la réduction d'impôt prévue à l’article $this->articlesCGI[0] du CGI</p>\n";
        }
        else if ($nbArticles > 1)
        {
            echo "<p>Le bénéficiaire certifie sur l’honneur que les dons et versements qu’il reçoit ouvrent droit à la réduction d'impôt prévue aux articles ";
            for ($i = 0; $i < $nbArticles; ++$i) {
                printf("%s", $this->articlesCGI[$i]);
                if ($i < $nbArticles - 2) {
                    echo ", ";
                }
                else if ($i == $nbArticles - 2) {
                    echo " et ";
                }
            }
            echo " du code général des impôts</p>";
        }
        echo "</div>\n";

        // cartouche final
        $date = date("j/m/Y");
echo <<<FDD
        <div class="cartouche" id="final">
        <p>Rennes le {$date}</p>
        <img id="signature" src="$this->signature" />
        <p id="nom">$this->nomResponsable</p>
        <p id="fonction">$this->fonctionResponsable</p>
        </div>
        </body>
        </html>
FDD;
        $this->html .= ob_get_clean();
    }

    // imprimer un libellé précédé de son titre en gras
    function imprimer_description($titre, $libelle)
    {
        echo <<<FDD
<p><span class="titre">{$titre}</span><span class="libelle"> {$libelle}</span></p>

FDD;
    }

    // imprimer le montant du versement et un libellé
    function imprimer_montant($montant, $libelle = "")
    {
        $valeur = number_format($montant, 2, ',', '');
        echo "<li>la somme de <b>{$valeur} euros</b>";
        if ($libelle != "") {
        echo " ({$libelle})";
        }
        echo "</li>\n";
    }

    protected function entete()
    {
        $styleSheet = \Garradin\PLUGIN_ROOT . "/lib/pdf.css";
        ob_start();
echo <<<FDD
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" type="text/css" href="{$styleSheet}" />
    </head>
    <body>
        <div class="cartouche" id="entete">
            <div id="logoCerfa">
              <span class="centre">Cerfa</span>
            </div>
            <div id="numCerfa">
              <span>N° 11580*4</span>
            </div>
            <p id="titre">Reçu au titre des dons à certains organismes d'intérêt général</p>
            <p id="articles">Articles 200, 238 bis et 978 du code général des impôts</p>

FDD;
        return ob_get_clean();
    }
}