Files
afup/sources/Afup/Comptabilite/Facture.php
Muriel 7f37063816 Filtrer devis by devis date
devis not transform to facture have not a facture date
2020-09-30 17:13:55 +02:00

612 lines
23 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Afup\Site\Comptabilite;
use Afup\Site\Utils\Mailing;
use Afup\Site\Utils\Pays;
use Afup\Site\Utils\PDF_Facture;
use AppBundle\Email\Mailer\Attachment;
use AppBundle\Email\Mailer\MailUser;
use AppBundle\Email\Mailer\Message;
class Facture
{
/**
* @var \Afup\Site\Utils\Base_De_Donnees
*/
var $_bdd;
function __construct(&$bdd)
{
$this->_bdd = $bdd;
}
/* Journal des opération
*
*/
function obtenirDevis($idPeriode = null)
{
$requete = 'SELECT ';
$requete .= ' acf.*, sum(quantite * pu) prix ';
$requete .= 'FROM ';
$requete .= ' afup_compta_facture acf ';
$requete .= 'LEFT JOIN ';
$requete .= ' afup_compta_facture_details acfd ';
$requete .= 'ON ';
$requete .= ' acfd.idafup_compta_facture = acf.id ';
$requete .= 'WHERE ';
$requete .= ' numero_devis != "" ';
if (null !== $idPeriode) {
$requete .= sprintf(' AND acf.date_devis >= (select date_debut from compta_periode where id = %s)', $this->_bdd->echapper($idPeriode));
$requete .= sprintf(' AND acf.date_devis <= (select date_fin from compta_periode where id = %s)', $this->_bdd->echapper($idPeriode));
}
$requete .= 'GROUP BY ';
$requete .= ' acf.id, date_devis, numero_devis, date_facture, numero_facture, societe, service, adresse, code_postal, ville, id_pays, email, observation, ref_clt1, ref_clt2, ref_clt3, nom, prenom, tel, etat_paiement, date_paiement, devise_facture ';
$requete .= 'ORDER BY ';
$requete .= ' acf.date_devis DESC';
return $this->_bdd->obtenirTous($requete);
}
function obtenirDevisDetails($id)
{
$requete = 'SELECT ';
$requete .= 'afup_compta_facture.*, ';
$requete .= 'afup_compta_facture_details.ref,afup_compta_facture_details.designation,afup_compta_facture_details.quantite,afup_compta_facture_details.pu ';
$requete .= 'FROM ';
$requete .= 'afup_compta_facture, ';
$requete .= 'afup_compta_facture_details ';
$requete .= 'WHERE ';
$requete .= ' numero_devis != "" ';
$requete .= 'afup_compta_facture.id = afup_compta_facture_details.idafup_compta_facture ';
$requete .= 'ORDER BY ';
$requete .= 'compta.date_devis ';
return $this->_bdd->obtenirTous($requete);
}
function obtenirFacture()
{
$requete = 'SELECT ';
$requete .= ' acf.*, sum(quantite * pu) prix ';
$requete .= 'FROM ';
$requete .= ' afup_compta_facture acf ';
$requete .= 'LEFT JOIN ';
$requete .= ' afup_compta_facture_details acfd ';
$requete .= 'ON ';
$requete .= ' acfd.idafup_compta_facture = acf.id ';
$requete .= 'WHERE ';
$requete .= ' numero_facture != "" ';
$requete .= 'GROUP BY ';
$requete .= ' acf.id, date_devis, numero_devis, date_facture, numero_facture, societe, service, adresse, code_postal, ville, id_pays, email, observation, ref_clt1, ref_clt2, ref_clt3, nom, prenom, tel, etat_paiement, date_paiement, devise_facture ';
$requete .= 'ORDER BY ';
$requete .= ' acf.date_facture DESC';
return $this->_bdd->obtenirTous($requete);
}
function obtenirFactureDetails($id)
{
$requete = 'SELECT ';
$requete .= 'afup_compta_facture.*, ';
$requete .= 'afup_compta_facture_details.ref,afup_compta_facture_details.designation,afup_compta_facture_details.quantite,afup_compta_facture_details.pu ';
$requete .= 'FROM ';
$requete .= 'afup_compta_facture, ';
$requete .= 'afup_compta_facture_details ';
$requete .= 'WHERE ';
$requete .= ' numero_facture != "" ';
$requete .= 'afup_compta_facture.id = afup_compta_facture_details.idafup_compta_facture ';
$requete .= 'ORDER BY ';
$requete .= 'compta.date_facture ';
return $this->_bdd->obtenirTous($requete);
}
function obtenir($id)
{
$requete = 'SELECT';
$requete .= ' * ';
$requete .= 'FROM';
$requete .= ' afup_compta_facture ';
$requete .= 'WHERE id=' . $id;
return $this->_bdd->obtenirEnregistrement($requete);
}
public function obtenirParNumeroFacture($numerofacture)
{
$requete = 'SELECT';
$requete .= ' * ';
$requete .= 'FROM';
$requete .= ' afup_compta_facture ';
$requete .= 'WHERE numero_facture = ' . $this->_bdd->echapper($numerofacture);
return $this->_bdd->obtenirEnregistrement($requete);
}
function obtenir_details($id)
{
$requete = 'SELECT';
$requete .= ' * ';
$requete .= 'FROM';
$requete .= ' afup_compta_facture_details ';
$requete .= 'WHERE idafup_compta_facture=' . $id;
return $this->_bdd->obtenirTous($requete);
}
function ajouter($date_devis, $societe, $service, $adresse, $code_postal, $ville, $id_pays,
$nom, $prenom, $tel, $email, $observation, $ref_clt1, $ref_clt2, $ref_clt3,
$etat_paiement = 0, $date_paiement = null, $devise = 'EUR')
{
$requete = 'INSERT INTO ';
$requete .= 'afup_compta_facture (';
$requete .= 'date_devis,societe,service,adresse,code_postal,ville,id_pays,';
$requete .= 'nom,prenom,tel,';
$requete .= 'email,observation,ref_clt1,ref_clt2,ref_clt3,etat_paiement,date_paiement,numero_devis,devise_facture) ';
$requete .= 'VALUES (';
$requete .= $this->_bdd->echapper($date_devis) . ',';
$requete .= $this->_bdd->echapper($societe) . ',';
$requete .= $this->_bdd->echapper($service) . ',';
$requete .= $this->_bdd->echapper($adresse) . ',';
$requete .= $this->_bdd->echapper($code_postal) . ',';
$requete .= $this->_bdd->echapper($ville) . ',';
$requete .= $this->_bdd->echapper($id_pays) . ',';
$requete .= $this->_bdd->echapper($nom) . ',';
$requete .= $this->_bdd->echapper($prenom) . ',';
$requete .= $this->_bdd->echapper($tel) . ',';
$requete .= $this->_bdd->echapper($email) . ',';
$requete .= $this->_bdd->echapper($observation) . ',';
$requete .= $this->_bdd->echapper($ref_clt1) . ',';
$requete .= $this->_bdd->echapper($ref_clt2) . ',';
$requete .= $this->_bdd->echapper($ref_clt3) . ', ';
$requete .= $this->_bdd->echapper($etat_paiement) . ', ';
$requete .= $this->_bdd->echapper($date_paiement) . ', ';
$requete .= $this->_bdd->echapper($this->genererNumeroDevis()) . ', ';
$requete .= $this->_bdd->echapper($devise) . ' ';
$requete .= ');';
return $this->_bdd->executer($requete);
}
function ajouter_details($ref, $designation, $quantite, $pu)
{
$requete = 'INSERT INTO ';
$requete .= 'afup_compta_facture_details (';
$requete .= 'idafup_compta_facture,ref,designation,quantite,pu) ';
$requete .= 'VALUES (';
$requete .= $this->obtenirDernier() . ',';
$requete .= $this->_bdd->echapper($ref) . ',';
$requete .= $this->_bdd->echapper($designation) . ',';
$requete .= $this->_bdd->echapper($quantite) . ',';
$requete .= $this->_bdd->echapper($pu) . ' ';
$requete .= ');';
return $this->_bdd->executer($requete);
}
function modifier($id, $date_devis, $societe, $service, $adresse, $code_postal, $ville, $id_pays,
$nom, $prenom, $tel, $email, $observation, $ref_clt1, $ref_clt2, $ref_clt3,
$numero_devis, $numero_facture, $etat_paiement, $date_paiement, $devise)
{
$requete = 'UPDATE ';
$requete .= 'afup_compta_facture ';
$requete .= 'SET ';
$requete .= 'date_devis=' . $this->_bdd->echapper($date_devis) . ',';
$requete .= 'societe=' . $this->_bdd->echapper($societe) . ',';
$requete .= 'service=' . $this->_bdd->echapper($service) . ',';
$requete .= 'adresse=' . $this->_bdd->echapper($adresse) . ',';
$requete .= 'code_postal=' . $this->_bdd->echapper($code_postal) . ',';
$requete .= 'ville=' . $this->_bdd->echapper($ville) . ',';
$requete .= 'id_pays=' . $this->_bdd->echapper($id_pays) . ',';
$requete .= 'nom=' . $this->_bdd->echapper($nom) . ',';
$requete .= 'prenom=' . $this->_bdd->echapper($prenom) . ',';
$requete .= 'tel=' . $this->_bdd->echapper($tel) . ',';
$requete .= 'email=' . $this->_bdd->echapper($email) . ',';
$requete .= 'observation=' . $this->_bdd->echapper($observation) . ', ';
$requete .= 'ref_clt1=' . $this->_bdd->echapper($ref_clt1) . ',';
$requete .= 'ref_clt2=' . $this->_bdd->echapper($ref_clt2) . ',';
$requete .= 'ref_clt3=' . $this->_bdd->echapper($ref_clt3) . ', ';
$requete .= 'etat_paiement=' . $this->_bdd->echapper($etat_paiement) . ', ';
$requete .= 'date_paiement=' . $this->_bdd->echapper($date_paiement) . ', ';
$requete .= 'numero_devis=' . $this->_bdd->echapper($numero_devis) . ', ';
$requete .= 'devise_facture=' . $this->_bdd->echapper($devise) . ' ';
if ($numero_facture) {
$requete .= ', ';
$requete .= 'numero_facture=' . $this->_bdd->echapper($numero_facture) . ' ';
}
$requete .= 'WHERE ';
$requete .= 'id=' . $this->_bdd->echapper($id) . ' ';
return $this->_bdd->executer($requete);
}
function modifier_details($id, $ref, $designation, $quantite, $pu)
{
$requete = 'UPDATE ';
$requete .= 'afup_compta_facture_details ';
$requete .= 'SET ';
$requete .= 'ref=' . $this->_bdd->echapper($ref) . ',';
$requete .= 'designation=' . $this->_bdd->echapper($designation) . ',';
$requete .= 'quantite=' . $this->_bdd->echapper($quantite) . ',';
$requete .= 'pu=' . $this->_bdd->echapper($pu) . ' ';
$requete .= 'WHERE ';
$requete .= 'id=' . $id . ' ';
return $this->_bdd->executer($requete);
}
function obtenirDernier()
{
/**
* @TODO ne supporte pas les enregistrements concurrents !
*/
$requete = 'SELECT MAX(id)';
$requete .= 'FROM';
$requete .= ' afup_compta_facture ';
return $this->_bdd->obtenirUn($requete);
}
function transfertDevis($numero_devis)
{
$numero_facture = $this->genererNumeroFacture();
$requete = 'UPDATE ';
$requete .= 'afup_compta_facture ';
$requete .= 'SET ';
$requete .= 'date_facture=' . $this->_bdd->echapper(date('Y-m-d')) . ',';
$requete .= 'numero_facture=' . $this->_bdd->echapper($numero_facture) . ' ';
$requete .= 'WHERE ';
$requete .= 'numero_devis=' . $this->_bdd->echapper($numero_devis) . ' ';
return $this->_bdd->executer($requete);
}
function genererNumeroFacture()
{
// afup_cotisations
$requete = 'SELECT';
$requete .= " MAX(CAST(SUBSTRING_INDEX(numero_facture, '-', -1) AS UNSIGNED)) + 1 ";
$requete .= 'FROM';
$requete .= ' afup_compta_facture ';
$requete .= 'WHERE';
$requete .= ' LEFT(numero_facture, 4)=' . $this->_bdd->echapper(date('Y'));
$index = $this->_bdd->obtenirUn($requete);
return date('Y') . '-' . (is_null($index) ? 1 : $index);
}
function genererNumeroDevis()
{
$requete = 'SELECT';
$requete .= " MAX(CAST(SUBSTRING_INDEX(numero_devis, '-', -1) AS UNSIGNED)) + 1 ";
$requete .= 'FROM';
$requete .= ' afup_compta_facture ';
$requete .= 'WHERE';
$requete .= ' LEFT(numero_devis, 4)=' . $this->_bdd->echapper(date('Y'));
$index = $this->_bdd->obtenirUn($requete);
return date('Y') . '-' . sprintf('%02d', (is_null($index) ? 1 : $index));
}
function genererDevis($reference, $chemin = null)
{
$requete = 'SELECT * FROM afup_compta_facture WHERE numero_devis=' . $this->_bdd->echapper($reference);
$coordonnees = $this->_bdd->obtenirEnregistrement($requete);
$requete = 'SELECT * FROM afup_compta_facture_details WHERE idafup_compta_facture=' . $this->_bdd->echapper($coordonnees['id']);
$details = $this->_bdd->obtenirTous($requete);
$configuration = $GLOBALS['AFUP_CONF'];
$pays = new Pays($this->_bdd);
// Construction du PDF
$pdf = new PDF_Facture($configuration);
$pdf->AddPage();
$pdf->Cell(130, 5);
$pdf->Cell(60, 5, 'Le ' . date('d/m/Y', (isset($coordonnees['date_devis']) && !empty($coordonnees['date_devis'])) ? strtotime($coordonnees['date_devis']) : time()));
$pdf->Ln();
$pdf->Ln();
$pdf->Ln();
// A l'attention du client [adresse]
$pdf->SetFont('Arial', '', 10);
$pdf->Ln(10);
$pdf->setx(120);
$pdf->MultiCell(130, 5, utf8_decode($coordonnees['societe']) . "\n" .
utf8_decode($coordonnees['service']) . "\n" .
utf8_decode($coordonnees['adresse']) . "\n" .
utf8_decode($coordonnees['code_postal']) . " " .
utf8_decode($coordonnees['ville']) . "\n" .
utf8_decode($pays->obtenirNom($coordonnees['id_pays'])));
$pdf->Ln(10);
$pdf->SetFont('Arial', 'BU', 10);
$pdf->Cell(0, 5, utf8_decode('Devis n° ' . $reference), 0, 0, "C");
$pdf->SetFont('Arial', '', 10);
if ($coordonnees['ref_clt1'] || $coordonnees['ref_clt2'] || $coordonnees['ref_clt3']) {
$pdf->Ln(15);
$pdf->Cell(40, 5, utf8_decode('Repère(s) : '));
}
if ($coordonnees['ref_clt1']) {
$pdf->setx(30);
$pdf->Cell(100, 5, utf8_decode($coordonnees['ref_clt1']));
$pdf->Ln(5);
}
if ($coordonnees['ref_clt2']) {
$pdf->setx(30);
$pdf->Cell(100, 5, utf8_decode($coordonnees['ref_clt2']));
$pdf->Ln(5);
}
if ($coordonnees['ref_clt3']) {
$pdf->setx(30);
$pdf->Cell(100, 5, utf8_decode($coordonnees['ref_clt3']));
$pdf->Ln(5);
}
$pdf->Ln(10);
$pdf->MultiCell(180, 5, utf8_decode("Comme convenu, nous vous prions de trouver votre devis"));
// Cadre
$pdf->Ln(5);
$pdf->SetFillColor(200, 200, 200);
$pdf->Cell(30, 5, 'Type', 1, 0, 'L', 1);
$pdf->Cell(80, 5, 'Description', 1, 0, 'L', 1);
$pdf->Cell(20, 5, 'Quantite', 1, 0, 'L', 1);
$pdf->Cell(30, 5, 'Prix', 1, 0, 'L', 1);
$pdf->Cell(30, 5, 'Total', 1, 0, 'L', 1);
$total = 0;
switch ($coordonnees['devise_facture']) {
case 'DOL':
$devise = ' $';
break;
case 'EUR':
default:
$devise = utf8_decode(' €');
break;
}
foreach ($details as $detail) {
if ($detail['quantite'] != 0) {
$montant = $detail['quantite'] * $detail['pu'];
$pdf->Ln();
$pdf->SetFillColor(255, 255, 255);
$pdf->Cell(30, 5, $detail['ref'], 1);
$pdf->Cell(80, 5, utf8_decode($detail['designation']), 1);
$pdf->Cell(20, 5, utf8_decode($detail['quantite']), 1, 0, "C");
$pdf->Cell(30, 5, utf8_decode($detail['pu']) . $devise, 1, 0, "R");
$pdf->Cell(30, 5, utf8_decode($montant) . $devise, 1, 0, "R");
$total += $montant;
}
}
$pdf->Ln();
$pdf->SetFillColor(225, 225, 225);
$pdf->Cell(160, 5, 'TOTAL', 1, 0, 'L', 1);
$pdf->Cell(30, 5, $total . $devise, 1, 0, 'R', 1);
$pdf->Ln(15);
$pdf->Cell(10, 5, 'TVA non applicable - art. 293B du CGI');
$pdf->Ln(10);
$pdf->Cell(10, 5, 'Observations : ');
$pdf->Ln(5);
$pdf->SetFont('Arial', '', 8);
$pdf->MultiCell(130, 5, utf8_decode($coordonnees['observation']));
if (is_null($chemin)) {
$pdf->Output('Devis - ' . $coordonnees['societe'] . ' - ' . $coordonnees['date_devis'] . '.pdf', 'D');
} else {
$pdf->Output($chemin, 'F');
}
}
function genererFacture($reference, $chemin = null)
{
$requete = 'SELECT * FROM afup_compta_facture WHERE numero_facture=' . $this->_bdd->echapper($reference);
$coordonnees = $this->_bdd->obtenirEnregistrement($requete);
$requete = 'SELECT * FROM afup_compta_facture_details WHERE idafup_compta_facture=' . $this->_bdd->echapper($coordonnees['id']);
$details = $this->_bdd->obtenirTous($requete);
$configuration = $GLOBALS['AFUP_CONF'];
$pays = new Pays($this->_bdd);
// Construction du PDF
$pdf = new PDF_Facture($configuration);
$pdf->AddPage();
$pdf->Cell(130, 5);
$pdf->Cell(60, 5, 'Le ' . date('d/m/Y', (isset($coordonnees['date_facture']) && !empty($coordonnees['date_facture'])) ? strtotime($coordonnees['date_facture']) : time()));
$pdf->Ln();
$pdf->Ln();
$pdf->Ln();
// A l'attention du client [adresse]
$pdf->SetFont('Arial', '', 10);
$pdf->Ln(10);
$pdf->setx(120);
$pdf->MultiCell(130, 5, utf8_decode($coordonnees['societe']) . "\n" .
utf8_decode($coordonnees['service']) . "\n" .
utf8_decode($coordonnees['adresse']) . "\n" .
utf8_decode($coordonnees['code_postal']) . "\n" .
utf8_decode($coordonnees['ville']) . "\n" .
utf8_decode($pays->obtenirNom($coordonnees['id_pays'])));
$pdf->Ln(10);
$pdf->SetFont('Arial', 'BU', 10);
$pdf->Cell(0, 5, utf8_decode('Facture n° ' . $reference), 0, 0, "C");
$pdf->SetFont('Arial', '', 10);
if ($coordonnees['ref_clt1'] || $coordonnees['ref_clt2'] || $coordonnees['ref_clt3']) {
$pdf->Ln(15);
$pdf->Cell(40, 5, utf8_decode('Repère(s) : '));
}
if ($coordonnees['ref_clt1']) {
$pdf->setx(30);
$pdf->Cell(100, 5, utf8_decode($coordonnees['ref_clt1']));
$pdf->Ln(5);
}
if ($coordonnees['ref_clt2']) {
$pdf->setx(30);
$pdf->Cell(100, 5, utf8_decode($coordonnees['ref_clt2']));
$pdf->Ln(5);
}
if ($coordonnees['ref_clt3']) {
$pdf->setx(30);
$pdf->Cell(100, 5, utf8_decode($coordonnees['ref_clt3']));
$pdf->Ln(5);
}
$pdf->Ln(10);
$pdf->MultiCell(180, 5, utf8_decode("Comme convenu, nous vous prions de trouver votre facture"));
// Cadre
$pdf->Ln(5);
$pdf->SetFillColor(200, 200, 200);
$pdf->Cell(30, 5, 'Type', 1, 0, 'L', 1);
$pdf->Cell(80, 5, 'Description', 1, 0, 'L', 1);
$pdf->Cell(20, 5, 'Quantite', 1, 0, 'L', 1);
$pdf->Cell(30, 5, 'Prix', 1, 0, 'L', 1);
$pdf->Cell(30, 5, 'Total', 1, 0, 'L', 1);
$total = 0;
switch ($coordonnees['devise_facture']) {
case 'DOL':
$devise = ' $';
break;
case 'EUR':
default:
$devise = utf8_decode(' €');
break;
}
$yInitial = $pdf->getY();
$columns = [0, 30, 110, 130, 160, 190];
foreach ($details as $detail) {
if ($detail['quantite'] != 0) {
$montant = $detail['quantite'] * $detail['pu'];
$pdf->Ln();
$pdf->SetFillColor(255, 255, 255);
$y = $pdf->GetY();
$x = $pdf->GetX();
$pdf->MultiCell(30, 5, $detail['ref'], 'T');
$x += 30;
$pdf->SetXY($x, $y);
$pdf->MultiCell(80, 5, utf8_decode($detail['designation']), 'T');
$x += 80;
$pdf->SetXY($x, $y);
$pdf->MultiCell(20, 5, utf8_decode($detail['quantite']), 'T', 0, "C");
$x += 20;
$pdf->SetXY($x, $y);
$pdf->MultiCell(30, 5, utf8_decode($detail['pu']) . $devise, 'T', 0, "R");
$x += 30;
$pdf->SetXY($x, $y);
$pdf->MultiCell(30, 5, utf8_decode($montant) . $devise, 'T', 0, "R");
$total += $montant;
}
}
$pdf->Ln();
foreach ($columns as $column) {
$pdf->Line($pdf->GetX() + $column, $yInitial, $pdf->GetX() + $column, $pdf->GetY());
}
$pdf->SetFillColor(225, 225, 225);
$pdf->Cell(160, 5, 'TOTAL', 1, 0, 'L', 1);
$pdf->Cell(30, 5, $total . $devise, 1, 0, 'R', 1);
$pdf->Ln(15);
$pdf->Cell(10, 5, 'TVA non applicable - art. 293B du CGI');
$pdf->Ln();
$pdf->Cell(10, 5, utf8_decode('Payable à réception'));
$pdf->Ln(10);
if ($coordonnees['observation']) {
$pdf->Cell(10, 5, 'Observations : ');
$pdf->Ln(5);
$pdf->SetFont('Arial', '', 8);
$pdf->MultiCell(130, 5, utf8_decode($coordonnees['observation']));
}
if (is_null($chemin)) {
$pdf->Output('Facture - ' . $coordonnees['societe'] . ' - ' . $coordonnees['date_facture'] . '.pdf', 'D');
} else {
$pdf->Output($chemin, 'F');
}
}
/**
* Envoi par mail d'une facture au format PDF
*
* @param string $reference Reference de la facturation
* @access public
* @return bool Succès de l'envoi
*/
function envoyerFacture($reference)
{
$configuration = $GLOBALS['AFUP_CONF'];
$personne = $this->obtenirParNumeroFacture($reference, 'email, nom, prenom');
$sujet = "Facture AFUP\n";
$corps = "Bonjour, \n\n";
$corps .= "Veuillez trouver ci-joint la facture correspondant à la participation au forum organisé par l'AFUP.\n";
$corps .= "Nous restons à votre disposition pour toute demande complémentaire.\n\n";
$corps .= "Le bureau\n\n";
$corps .= $configuration->obtenir('afup|raison_sociale') . "\n";
$corps .= $configuration->obtenir('afup|adresse') . "\n";
$corps .= $configuration->obtenir('afup|code_postal') . " " . $configuration->obtenir('afup|ville') . "\n";
$chemin_facture = AFUP_CHEMIN_RACINE . 'cache' . DIRECTORY_SEPARATOR . 'fact' . $reference . '.pdf';
$this->genererFacture($reference, $chemin_facture);
$expediteur = $GLOBALS['AFUP_CONF']->obtenir('mails|email_expediteur');
$message = new Message($sujet, new MailUser($expediteur), new MailUser($personne['email'], $personne['nom']));
$message->addAttachment(new Attachment(
$chemin_facture,
'facture-'.$reference.'.pdf',
'base64',
'application/pdf'
));
$ok = Mailing::envoyerMail($message, $corps);
@unlink($chemin_facture);
return $ok;
}
}