gestion date début et fin versements

FossilOrigin-Name: 323bbe3ae892ca099aac2f897e592b35b7224c22ce25bd813e9a11dca0cf9f19
This commit is contained in:
engel 2022-05-20 19:43:38 +00:00
parent 7b9b0fda13
commit 4eb8b7c61d
4 changed files with 73 additions and 24 deletions

View File

@ -30,7 +30,7 @@ class Personne
$this->adresse = $adresse;
$this->codePostal = $codePostal;
$this->ville = $ville;
$this->versements = array(); // clé = tarif, valeur = montant
$this->versements = array(); // clé = tarif, valeur = Versement
}
/**
@ -51,19 +51,24 @@ class Personne
* ajouter un versement
* @param $tauxReduction
* @param $montant
* @param $dateMin
* @param $dateMax
*/
public function ajouterVersement(
$tauxReduction,
$montant
$montant,
$dateMin,
$dateMax
)
{
if (array_key_exists($tauxReduction, $this->versements))
{
$this->versements[$tauxReduction] += $montant;
$this->versements[$tauxReduction]->ajouter($montant, $dateMin, $dateMax);
}
else
{
$this->versements[$tauxReduction] = $montant;
$this->versements[$tauxReduction] = new Versement($montant, $dateMin, $dateMax);
}
}
}

View File

@ -4,21 +4,37 @@ namespace Garradin\Plugin\RecusFiscaux;
class Versement
{
public $idActivite;
public $idTarif;
public $montant;
public $tauxReduction;
public $dateMin; // estampille
public $dateMax; // estampille
public function __construct(
$idActivite,
$idTarif,
$montant,
$tauxReduction
$dateMin,
$dateMax
)
{
$this->idActivite = $idActivite;
$this->idTarif = $idTarif;
$this->montant = $montant;
$this->tauxReduction = $tauxReduction;
$this->dateMin = $dateMin;
$this->dateMax = $dateMax;
}
/**
* ajouter un versement en fixant les dates min et max
* @param $montant
* @param $dateMin
* @param $dateMax
*/
public function ajouter($montant, $dateMin, $dateMax)
{
$this->montant += $montant;
if ($dateMin < $this->dateMin)
{
$this->dateMin = $dateMin;
}
if ($dateMax > $this->dateMax)
{
$this->dateMax = $dateMax;
}
}
}

View File

@ -117,7 +117,14 @@
{{if $libelle != ""}}
({{$libelle}})
{{/if}}
<br />date des versements :
{{if $dateMin == $dateMax}}
le {{$dateMin}}
{{else}}
du {{$dateMin}} au {{$dateMax}}
{{/if}}
</li>
<br />
{{/versements}}
</ul>

View File

@ -93,17 +93,18 @@ foreach ($totalPersonnes as $idPersonne => $personne)
$tpl->registerSection('versements',
function () use($personne, $libelles_taux)
{
foreach ($personne->versements as $taux => $montant)
foreach ($personne->versements as $taux => $versement)
{
$ligne['montant'] = $montant;
$ligne['montant'] = $versement->montant;
$ligne['libelle'] = $libelles_taux[$taux];
$ligne['dateMin'] = date("d/m/Y", $versement->dateMin);
$ligne['dateMax'] = date("d/m/Y", $versement->dateMax);
yield $ligne;
}
});
// mentions complémentaires
$donnees = array(
'Date des versements : ' => "année " . $_SESSION['annee_recu'],
'Nature du don : ' => "Numéraire",
'Mode de versement : ' => "chèque et/ou virement"
);
@ -162,6 +163,8 @@ function cumulerVersementsPersonne($versements)
{
$totalPersonnes = array();
$idPersonneCourant = -1;
$dateMin = PHP_INT_MAX;
$dateMax = -1;
$totalVersements = 0;
foreach ($versements as $ligne)
{
@ -172,9 +175,13 @@ function cumulerVersementsPersonne($versements)
{
$totalPersonnes[$idPersonneCourant]->ajouterVersement(
$_SESSION['taux_reduction'],
$totalVersements
$totalVersements,
$dateMin,
$dateMax
);
}
$dateMin = strtotime($ligne->date);
$dateMax = strtotime($ligne->date);
$idPersonneCourant = $ligne->idUser;
$totalVersements = $ligne->versement;
// créer les infos de la personne, sauf si elle est déjà présente
@ -183,14 +190,18 @@ function cumulerVersementsPersonne($versements)
$totalPersonnes["$idPersonneCourant"] = $_SESSION['membresDonateurs'][$ligne->idUser]->clone();
}
} else {
// cumuler versements
// même personne : cumuler versements et mettre à jour les dates
$totalVersements += $ligne->versement;
if (strtotime($ligne->date) < $dateMin) { $dateMin = strtotime($ligne->date); }
if (strtotime($ligne->date) > $dateMax) { $dateMax = strtotime($ligne->date); }
}
}
// et le dernier
$totalPersonnes[$idPersonneCourant]->ajouterVersement(
$_SESSION['taux_reduction'],
$totalVersements
$totalVersements,
$dateMin,
$dateMax
);
return $totalPersonnes;
}
@ -206,6 +217,8 @@ function cumulerVersementsTarif($versements)
$idTarifCourant = -1;
$idPersonneCourant = -1;
$idCompteCourant = -1;
$dateMin = PHP_INT_MAX;
$dateMax = -1;
$totalVersements = 0;
foreach ($versements as $ligne)
{
@ -217,15 +230,19 @@ function cumulerVersementsTarif($versements)
{
if ($idTarifCourant != -1)
{
// changement de tarif ou de personne
// changement de tarif, de personne ou de compte
$tarifCompte = ($idTarifCourant == 0) ?
$idCompteCourant :
$idTarifCourant . "_" . $idCompteCourant;
$totalPersonnes[$idPersonneCourant]->ajouterVersement(
$_SESSION['tauxSelectionnes'][$tarifCompte],
$totalVersements
$totalVersements,
$dateMin,
$dateMax
);
}
$dateMin = strtotime($ligne->date);
$dateMax = strtotime($ligne->date);
$idTarifCourant = $ligne->idTarif;
$idPersonneCourant = $ligne->idUser;
$idCompteCourant = $ligne->idCompte;
@ -236,8 +253,10 @@ function cumulerVersementsTarif($versements)
$totalPersonnes["$idPersonneCourant"] = $_SESSION['membresDonateurs'][$ligne->idUser]->clone();
}
} else {
// cumuler versements
// même personne : cumuler versements et mettre à jour les dates
$totalVersements += $ligne->versement;
if (strtotime($ligne->date) < $dateMin) { $dateMin = strtotime($ligne->date); }
if (strtotime($ligne->date) > $dateMax) { $dateMax = strtotime($ligne->date); }
}
}
// et le dernier
@ -246,7 +265,9 @@ function cumulerVersementsTarif($versements)
$idTarifCourant . "_" . $idCompteCourant;
$totalPersonnes[$idPersonneCourant]->ajouterVersement(
$_SESSION['tauxSelectionnes'][$tarifCompte],
$totalVersements
$totalVersements,
$dateMin,
$dateMax
);
return $totalPersonnes;
}