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->adresse = $adresse;
$this->codePostal = $codePostal; $this->codePostal = $codePostal;
$this->ville = $ville; $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 * ajouter un versement
* @param $tauxReduction * @param $tauxReduction
* @param $montant * @param $montant
* @param $dateMin
* @param $dateMax
*/ */
public function ajouterVersement( public function ajouterVersement(
$tauxReduction, $tauxReduction,
$montant $montant,
$dateMin,
$dateMax
) )
{ {
if (array_key_exists($tauxReduction, $this->versements)) if (array_key_exists($tauxReduction, $this->versements))
{ {
$this->versements[$tauxReduction] += $montant; $this->versements[$tauxReduction]->ajouter($montant, $dateMin, $dateMax);
} }
else 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 class Versement
{ {
public $idActivite;
public $idTarif;
public $montant; public $montant;
public $tauxReduction; public $dateMin; // estampille
public $dateMax; // estampille
public function __construct( public function __construct(
$idActivite,
$idTarif,
$montant, $montant,
$tauxReduction $dateMin,
$dateMax
) )
{ {
$this->idActivite = $idActivite;
$this->idTarif = $idTarif;
$this->montant = $montant; $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 != ""}} {{if $libelle != ""}}
({{$libelle}}) ({{$libelle}})
{{/if}} {{/if}}
<br />date des versements :
{{if $dateMin == $dateMax}}
le {{$dateMin}}
{{else}}
du {{$dateMin}} au {{$dateMax}}
{{/if}}
</li> </li>
<br />
{{/versements}} {{/versements}}
</ul> </ul>

View File

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