prestation/Modele/Encaissement.php
2025-12-01 18:54:33 +00:00

208 lines
10 KiB
PHP

<?php
require_once 'Framework/Modele.php';
class Encaissement extends Modele {
public function existeligne($numeroEncaissement) {
$sql = 'select id FROM encaissement WHERE (codeSociete=?) and (numeroEncaissement=?)';
$resultat = $this->executerRequete($sql, array($_SESSION['codeSociete'],$numeroEncaissement));
return ($resultat->rowCount() > 0);
}
public function getDenierNumeroEncaissement()
{
$sql = 'select dernierNumeroEncaissement from numerotationencaissement WHERE (codeSociete=?)';
$resultat = $this->executerRequete($sql, array($_SESSION['codeSociete']));
if ($resultat->rowCount() == 0)
{
$sql = 'INSERT INTO numerotationencaissement (codeSociete, dernierNumeroEncaissement) values (?,?)';
$this->executerRequete($sql, array($_SESSION['codeSociete'], "1"));
return "0";
} else
{
$ligne = $resultat->fetch(PDO::FETCH_ASSOC);
return $ligne['dernierNumeroEncaissement'];
}
}
public function setDenierNumeroEncaissement($numeroEncaissement)
{
$sql = 'update numerotationencaissement set dernierNumeroEncaissement=? WHERE (codeSociete=?)';
$this->executerRequete($sql, array($numeroEncaissement, $_SESSION['codeSociete']));
}
public function EnregistrerDepot($idEncaissementTemp, $numeroEncaissement) {
$sql = 'insert into encaissement (codeSociete, sens, numeroEncaissement, codeApporteur, codeModePaiement, codeMoyenPaiement,
referencePaiement, nomTireur, banquePayeur, numeroBordereau, dateBordereau, montant, libelleOperation, dateEncaissement,
dateComptable, ecart, codeEcart, dateCre, user, affecte)
select codeSociete, sens, ? as numeroEncaissement, codeApporteur, codeModePaiement, codeMoyenPaiement,
referencePaiement, nomTireur, banquePayeur, numeroBordereau, dateBordereau, montant, libelleOperation, dateEncaissement,
dateComptable, ecart, codeEcart, dateCre, user, 0 as affecte from encaissement_temp
where id=?';
$encaissement = $this->executerRequete($sql, array($numeroEncaissement, $idEncaissementTemp));
$dernierId = $this->dernierId();
$user = $_SESSION['login'];
$sql = 'DELETE FROM encaissement_temp WHERE (user=?)';
$this->executerRequete($sql, array($user));
return $dernierId;
}
public function EnregistrerBordereau($idEncaissementTemp, $numeroEncaissement)
{
$sql = 'insert into encaissement (codeSociete, sens, numeroEncaissement, codeApporteur, codeModePaiement, codeMoyenPaiement,
referencePaiement, nomTireur, banquePayeur, numeroBordereau, dateBordereau, montant, libelleOperation, dateEncaissement,
dateComptable, ecart, codeEcart, dateCre, user, affecte)
select codeSociete, sens, ? as numeroEncaissement, codeApporteur, codeModePaiement, codeMoyenPaiement,
referencePaiement, nomTireur, banquePayeur, numeroBordereau, dateBordereau, montant, libelleOperation, dateEncaissement,
dateComptable, ecart, codeEcart, dateCre, user, montantSelection as affecte
from encaissement_temp where id=?';
$this->executerRequete($sql, array($numeroEncaissement, $idEncaissementTemp));
$dernierId = $this->dernierId();
$idEncaissement = $dernierId;
$_SESSION['idEncaissement'] = $idEncaissement;
$sql = 'insert into detailencaissement (codeSociete, idEncaissement, numeroEncaissement, idQuittance, numeroQuittance,
primeNette, primeNetteCie, accessoireCie, assesoireApporteur, accessoire, primeHt, taxe, fraisCarte,
commission, commissionAutre, primeTtc, dateCre, user, regle, anc_solde, deduireComm, idPolice)
select codeSociete, ? as idEncaissement, ? as numeroEncaissement, idQuittance, numeroQuittance,
primeNette, primeNetteCie, accessoireCie, assesoireApporteur, accessoire, primeHt, taxe, fraisCarte,
commission, commissionAutre, primeTtc, dateCre, user, regle, anc_solde, deduireComm, idPolice
from detailencaissement_temp where idEncaissement=?';
$this->executerRequete($sql, array($idEncaissement, $numeroEncaissement, $idEncaissementTemp));
$sql = 'update quittance A
join detailencaissement_temp B on (B.idQuittance=A.id)
set A.encaisse = (A.encaisse+B.primeTtc), A.regle=B.regle
where (B.idEncaissement=?)';
$this->executerRequete($sql, array($idEncaissementTemp));
$sql = 'update quittance A
join detailencaissement_temp B on (B.idQuittance=A.id)
set A.regle="1" where (B.idEncaissement=?) and (A.primeTtc=A.encaisse)';
$this->executerRequete($sql, array($idEncaissementTemp));
$user = $_SESSION['login'];
$sql = 'DELETE FROM encaissement_temp WHERE (user=?)';
$this->executerRequete($sql, array($user));
$sql = 'DELETE FROM detailencaissement_temp WHERE (user=?)';
$this->executerRequete($sql, array($user));
return $dernierId;
}
public function EncaisserQuittance($montant, $primeTtc_Q, $idQuittance, $numeroEncaissement, $codeModePaiement, $codeMoyenPaiement,
$referencePaiement, $nomTireur, $banquePayeur, $libelleOperation, $dateEncaissement, $dateComptable, $dateCre, $anc_solde)
{
$user = $_SESSION['login'];
$rapport = 0;
if($primeTtc_Q!=0)
{
$rapport =($montant/$primeTtc_Q);
}
$sql = 'insert into encaissement (codeSociete, numeroEncaissement, codeApporteur, codeModePaiement, codeMoyenPaiement,
referencePaiement, nomTireur, banquePayeur, numeroBordereau, dateBordereau, montant, libelleOperation, dateEncaissement,
dateComptable, ecart, codeEcart, dateCre, user, affecte, idClient, idPolice)
select A.codeSociete, ? as numeroEncaissement, B.codeApporteur, ? as codeModePaiement, ? as codeMoyenPaiement,
? as referencePaiement, ? as nomTireur, ? as banquePayeur, ? as numeroBordereau, ? as dateBordereau, ? as montant, ? as libelleOperation,
? as dateEncaissement, ? as dateComptable, "0" as ecart, "0" as codeEcart, ? as dateCre, ? as user, ? as affecte, A.idClient, A.idPolice
from quittance A join police B on (B.id=A.idPolice) where A.id=?';
$this->executerRequete($sql, array($numeroEncaissement, $codeModePaiement, $codeMoyenPaiement, $referencePaiement, $nomTireur, $banquePayeur,
$numeroEncaissement, $dateEncaissement, $montant, $libelleOperation, $dateEncaissement, $dateComptable, $dateCre, $user, $montant, $idQuittance));
$dernierId = $this->dernierId();
$idEncaissement = $dernierId;
$_SESSION['idEncaissement'] = $idEncaissement;
$sql = 'insert into detailencaissement (codeSociete, idEncaissement, numeroEncaissement, idQuittance, numeroQuittance,
primeNette, primeNetteCie, accessoireCie, assesoireApporteur, accessoire, primeHt, taxe, fraisCarte,
commission, commissionAutre, primeTtc, dateCre, user, anc_solde, deduireComm, idPolice)
select codeSociete, ? as idEncaissement, ? as numeroEncaissement, id as idQuittance, numeroQuittance,
primeNette*?, primeNetteCie*?, accessoireCie*?, assesoireApporteur*?, accessoire*?, primeHt*?, taxe*?, fraisCarte*?,
commission*?, commissionAutre*?, primeTtc*?, ? as dateCre, ? as user, (primeTtc-encaisse) as anc_solde, deduireComm, idPolice
from quittance where id=?';
$this->executerRequete($sql, array($idEncaissement, $numeroEncaissement, $rapport, $rapport, $rapport, $rapport, $rapport,
$rapport, $rapport, $rapport, $rapport, $rapport, $rapport, $dateCre, $user, $idQuittance));
$sql = 'update quittance set encaisse = (encaisse+?) where (id=?)';
$this->executerRequete($sql, array($montant, $idQuittance));
if($anc_solde==$montant)
{
$sql = 'update quittance set regle="1" where (id=?)';
$this->executerRequete($sql, array($idQuittance));
}
return $dernierId;
}
public function getEncaissementId($idEncaissement)
{
$sql = 'SELECT A.id AS idEncaissement, A.*, B.libelle as apporteur, C.libelle as modepaiement,
D.libelle as moyenpaiement, D.numeroCompte, (A.montant-A.affecte) As montantEcart
from encaissement A
left join apporteur B on (B.codeSociete=A.codeSociete) AND (B.codeApporteur=A.codeApporteur)
left join modepaiement C on (C.codeModePaiement=A.codeModePaiement)
left join moyenpaiement D on (D.codeSociete=A.codeSociete) AND (D.codeMoyenPaiement=A.codeMoyenPaiement)
where A.id=?';
$encaissement = $this->executerRequete($sql, array($idEncaissement));
return $encaissement->fetch(PDO::FETCH_ASSOC);
}
public function supprimer($id) {
$sql = 'DELETE FROM encaissement WHERE (id=?)';
$this->executerRequete($sql, array($id));
}
public function getEncaissementsPolice($idPolice) {
$sql = 'SELECT id, numeroQuittance, numeroAvenant, codeTypeOperation, codeTypeAvenant,
dateEffet, dateEcheance, dateEmission, primeNette, commission, commissionAutre, accessoire, primeHt, taxe, fraisCarte,
primeTtc, encaisse, (primeTtc-encaisse) AS solde, nbAliment FROM quittance WHERE (idPolice=?)
ORDER BY numeroQuittance DESC';
$quittances = $this->executerRequete($sql, array($idPolice));
return $quittances;
}
public function getTotalENcaissementPolice($idPolice) {
$sql = 'select IFNULL(sum(primeNette),"0") as primeNette, IFNULL(sum(commission),"0") as commission,
IFNULL(sum(commissionAutre),"0") as commissionAutre, IFNULL(sum(accessoire),"0") as accessoire,
IFNULL(sum(primeHt),"0") as primeHt, IFNULL(sum(taxe),"0") as taxe,
IFNULL(sum(fraisCarte),"0") as fraisCarte, IFNULL(sum(primeTtc),"0") as primeTtc,
IFNULL(sum(encaisse),"0") as encaisse, IFNULL(sum(primeTtc-encaisse),"0") as solde
FROM quittance A WHERE (A.idPolice=?)';
$totalquittance = $this->executerRequete($sql, array($idPolice));
return $totalquittance->fetch(PDO::FETCH_ASSOC);
}
public function getEncaissementNo($numeroEncaissement)
{
$codeSociete = $_SESSION['codeSociete'];
$sql = 'CALL sp_get_ancaissement_no(?, ?);';
$resultat = $this->executerRequete($sql, array($codeSociete, $numeroEncaissement));
return $resultat->fetch(PDO::FETCH_ASSOC);
}
}