Ajout fonction AddFacture

This commit is contained in:
Rodolphe Quiedeville 2005-03-01 11:00:21 +00:00
parent e13df82468
commit 24fa2bd618

View File

@ -60,6 +60,112 @@ class BonPrelevement
return 1; return 1;
} }
/*
*
*
*
*/
function AddFacture($facture_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number)
{
$result = 0;
$ligne_id = 0;
$result = $this->AddLigne($ligne_id, $client_id, $client_nom,
$amount, $code_banque, $code_guichet, $number);
if ($result == 0)
{
if ($ligne_id > 0)
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_facture ";
$sql .= " (fk_facture,fk_prelevement_lignes)";
$sql .= " VALUES (".$facture_id.",".$ligne_id.")";
if ($this->db->query($sql))
{
$result = 0;
}
else
{
$result = -1;
dolibarr_syslog("BonPrelevement::AddFacture Erreur $result");
}
}
else
{
$result = -2;
dolibarr_syslog("BonPrelevement::AddFacture Erreur $result");
}
}
else
{
$result = -3;
dolibarr_syslog("BonPrelevement::AddFacture Erreur $result");
}
return $result;
}
/*
*
*
*/
function AddLigne(&$ligne_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number)
{
$result = -1;
$concat = 0;
if ($concat == 1)
{
/*
* On aggrège les lignes
*/
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes";
$sql .= " WHERE fk_prelevement_bons".$this->id;
$sql .= " AND fk_soc =".$client_id;
$sql .= " AND code_banque ='".$code_banque."'";
$sql .= " AND code_guichet ='".$code_guichet."'";
$sql .= " AND number ='".$number."'";
if ($this->db->query($sql))
{
$num = $this->db->num_rows();
}
else
{
$result = -1;
}
}
else
{
/*
* Pas de d'agrégation
*/
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_lignes (fk_prelevement_bons";
$sql .= " , fk_soc , client_nom ";
$sql .= " , amount";
$sql .= " , code_banque , code_guichet , number)";
$sql .= " VALUES (".$this->id;
$sql .= ",".$client_id.",'".addslashes($client_nom)."'";
$sql .= ",'".ereg_replace(",",".",$amount)."'";
$sql .= ", '$code_banque', '$code_guichet', '$number')";
if ($this->db->query($sql))
{
$ligne_id = $this->db->last_insert_id();
$result = 0;
}
else
{
dolibarr_syslog("BonPrelevement::AddLigne Erreur -2");
$result = -2;
}
}
return $result;
}
/* /*
* *
* *
@ -73,7 +179,9 @@ class BonPrelevement
$sql .= " , method_trans, fk_user_trans"; $sql .= " , method_trans, fk_user_trans";
$sql .= ",".$this->db->pdate("p.date_credit")." as date_credit"; $sql .= ",".$this->db->pdate("p.date_credit")." as date_credit";
$sql .= " , fk_user_credit"; $sql .= " , fk_user_credit";
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement as p";
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
$sql .= " WHERE p.rowid=".$rowid; $sql .= " WHERE p.rowid=".$rowid;
$result=$this->db->query($sql); $result=$this->db->query($sql);
@ -101,13 +209,13 @@ class BonPrelevement
} }
else else
{ {
dolibarr_syslog("bon-prelevment::Fetch Erreur aucune ligne retournée"); dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée");
return -1; return -1;
} }
} }
else else
{ {
dolibarr_syslog("bon-prelevment::Fetch Erreur "); dolibarr_syslog("BonPrelevement::Fetch Erreur ");
dolibarr_syslog($sql); dolibarr_syslog($sql);
return -2; return -2;
} }
@ -122,16 +230,14 @@ class BonPrelevement
if ($this->db->begin()) if ($this->db->begin())
{ {
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons ";
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
$sql .= " SET credite = 1"; $sql .= " SET credite = 1";
$sql .= " WHERE rowid=".$this->id; $sql .= " WHERE rowid=".$this->id;
$result=$this->db->query($sql); $result=$this->db->query($sql);
if (! $result) if (! $result)
{ {
dolibarr_syslog("bon-prelevment::set_credite Erreur 1"); dolibarr_syslog("bon-prelevement::set_credite Erreur 1");
$error++; $error++;
} }
@ -157,18 +263,14 @@ class BonPrelevement
if ($error == 0) if ($error == 0)
{ {
/*
* Change le statut des lignes de factures
*/
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_facture ";
$sql .= " SET statut = 1";
$sql .= " WHERE fk_prelevement=".$this->id;
$result=$this->db->query($sql); $sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_lignes ";
if (!$result) $sql .= " SET statut = 2";
$sql .= " WHERE fk_prelevement_bons=".$this->id;
if (! $this->db->query($sql))
{ {
dolibarr_syslog("bon-prelevment::set_credite Erreur 3"); dolibarr_syslog("BonPrelevement::set_infocredit Erreur 1");
$error++; $error++;
} }
} }
@ -184,8 +286,10 @@ class BonPrelevement
} }
else else
{ {
$this->db->rollback(); $this->db->rollback();
dolibarr_syslog("bon-prelevment::set_credite ROLLBACK "); dolibarr_syslog("BonPrelevement::set_credite ROLLBACK ");
return -1; return -1;
} }
@ -194,7 +298,7 @@ class BonPrelevement
else else
{ {
dolibarr_syslog("bon-prelevment::set_credite Ouverture transaction SQL impossible "); dolibarr_syslog("BonPrelevement::set_credite Ouverture transaction SQL impossible ");
return -2; return -2;
} }
} }
@ -208,18 +312,16 @@ class BonPrelevement
if ($this->db->begin()) if ($this->db->begin())
{ {
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons ";
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
$sql .= " SET fk_user_credit = ".$user->id; $sql .= " SET fk_user_credit = ".$user->id;
$sql .= " , statut = 2";
$sql .= " , date_credit='".$this->db->idate($date)."'"; $sql .= " , date_credit='".$this->db->idate($date)."'";
$sql .= " WHERE rowid=".$this->id; $sql .= " WHERE rowid=".$this->id;
$sql .= " AND statut = 1";
$result=$this->db->query($sql);
if (! $result) if (! $this->db->query($sql))
{ {
dolibarr_syslog("bon-prelevment::set_infotrans Erreur 1"); dolibarr_syslog("BonPrelevement::set_infocredit Erreur 1");
dolibarr_syslog($this->db->error());
$error++; $error++;
} }
@ -234,15 +336,17 @@ class BonPrelevement
} }
else else
{ {
$this->db->rollback(); $this->db->rollback();
dolibarr_syslog("bon-prelevment::set_infotrans ROLLBACK "); dolibarr_syslog("bon-prelevment::set_infotrans ROLLBACK ");
return -1; return -1;
} }
} }
else else
{ {
dolibarr_syslog("bon-prelevment::set_infotrans Ouverture transaction SQL impossible "); dolibarr_syslog("bon-prelevement::set_infocredit Ouverture transaction SQL impossible ");
return -2; return -2;
} }
} }
@ -257,17 +361,17 @@ class BonPrelevement
if ($this->db->begin()) if ($this->db->begin())
{ {
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons ";
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
$sql .= " SET fk_user_trans = ".$user->id; $sql .= " SET fk_user_trans = ".$user->id;
$sql .= " , date_trans='".$this->db->idate($date)."'"; $sql .= " , date_trans='".$this->db->idate($date)."'";
$sql .= " , method_trans=".$method; $sql .= " , method_trans=".$method;
$sql .= " , statut = 1";
$sql .= " WHERE rowid=".$this->id; $sql .= " WHERE rowid=".$this->id;
$sql .= " AND statut = 0";
$result=$this->db->query($sql); if (! $this->db->query($sql))
if (! $result)
{ {
dolibarr_syslog("bon-prelevment::set_infotrans Erreur 1"); dolibarr_syslog("bon-prelevement::set_infotrans Erreur 1");
dolibarr_syslog($this->db->error()); dolibarr_syslog($this->db->error());
$error++; $error++;
} }
@ -284,14 +388,15 @@ class BonPrelevement
else else
{ {
$this->db->rollback(); $this->db->rollback();
dolibarr_syslog("bon-prelevment::set_infotrans ROLLBACK "); dolibarr_syslog("BonPrelevement::set_infotrans ROLLBACK ");
return -1; return -1;
} }
} }
else else
{ {
dolibarr_syslog("bon-prelevment::set_infotrans Ouverture transaction SQL impossible "); dolibarr_syslog("BonPrelevement::set_infotrans Ouverture transaction SQL impossible ");
return -2; return -2;
} }
} }
@ -344,45 +449,208 @@ class BonPrelevement
*/ */
function Generate() function Generate()
{ {
$result = -1;
/*
* En-tete Emetteur
*/
$this->EnregEmetteur(); $this->EnregEmetteur();
$nbfactures = sizeof($this->factures); /*
* Lignes
*/
$this->total = 0; $this->total = 0;
$sql = "SELECT rowid, client_nom, code_banque, code_guichet, number, amount";
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_lignes";
$sql .= " WHERE fk_prelevement_bons = ".$this->id;
$i = 0;
if ($this->db->query($sql))
{
$num = $this->db->num_rows();
while ($i < $num)
{
$row = $this->db->fetch_row();
$this->EnregDestinataire($row[0],
$row[1],
$row[2],
$row[3],
$row[4],
$row[5]);
$this->total = $this->total + $row[5];
$i++;
}
}
else
{
$result = -2;
}
/*
$nbfactures = sizeof($this->factures);
for ($i = 0 ; $i < $nbfactures ; $i++) for ($i = 0 ; $i < $nbfactures ; $i++)
{ {
$fac = new Facture($this->db); $fac = new Facture($this->db);
$fac->fetch($this->factures[$i]); $fac->fetch($this->factures[$i]);
$fac->fetch_client(); $fac->fetch_client();
$fac->client->rib();
$fac->client->rib(); // Set client->bank_account if ($fac->client->bank_account->verif()) {
if ($fac->client->bank_account->verif())
{
$this->total = $this->total + $fac->total_ttc; $this->total = $this->total + $fac->total_ttc;
$this->EnregDestinataire($fac); $this->EnregDestinataire($fac);
} }else{
else
{
print $fac->client->bank_account->error_message; print $fac->client->bank_account->error_message;
print $fac->client->nom; print $fac->client->nom; }
}
} }
*/
/*
* Pied de page total
*/
$this->EnregTotal($this->total); $this->EnregTotal($this->total);
fclose($this->file); fclose($this->file);
return $result;
} }
/*
* Enregistrements destinataires
*
*
*/
function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount)
{
fputs ($this->file, "06");
fputs ($this->file, "08"); // Prélèvement ordinaire
fputs ($this->file, " "); // Zone Réservée B2
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3
// Date d'échéance C1
fputs ($this->file, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance));
fputs ($this->file, substr(strftime("%y", $this->date_echeance),1));
// Raison Sociale Destinataire C2
fputs ($this->file, substr($client->nom. " ",0,24));
// Domiciliation facultative D1
fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2
fputs ($this->file, substr(" ",0,8));
// Code Guichet D3
fputs ($this->file, $rib_guichet);
// Numero de compte D4
fputs ($this->file, substr("000000000000000".$rib_number, -11));
// Zone E Montant
$montant = (round($amount,2) * 100);
fputs ($this->file, substr("000000000000000".$montant, -16));
// Libellé F
fputs ($this->file, substr("*".$this->ref.$rowid." ",0,13));
fputs ($this->file, substr(" ",0,18));
// Code établissement G1
fputs ($this->file, $rib_banque);
// Zone Réservée G2
fputs ($this->file, substr(" ",0,5));
fputs ($this->file, "\n");
}
/*
* Enregistrements destinataires
*
*
*/
function EnregDestinataireVersion1($fac)
{
fputs ($this->file, "06");
fputs ($this->file, "08"); // Prélèvement ordinaire
fputs ($this->file, " "); // Zone Réservée B2
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3
// Date d'échéance C1
fputs ($this->file, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance));
fputs ($this->file, substr(strftime("%y", $this->date_echeance),1));
// Raison Sociale Destinataire C2
fputs ($this->file, substr($fac->client->nom. " ",0,24));
// Reference de la remise créancier D1
fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2
fputs ($this->file, substr(" ",0,8));
// Code Guichet D3
fputs ($this->file, $fac->client->bank_account->code_guichet);
// Numero de compte D4
fputs ($this->file, substr("000000000000000".$fac->client->bank_account->number, -11));
// Zone E Montant
$montant = (round($fac->total_ttc,2) * 100);
fputs ($this->file, substr("000000000000000".$montant, -16));
// Libellé F
fputs ($this->file, substr("*".$fac->ref." ",0,13));
fputs ($this->file, substr(" ",0,18));
// Code établissement G1
fputs ($this->file, $fac->client->bank_account->code_banque);
// Zone Réservée G2
fputs ($this->file, substr(" ",0,5));
fputs ($this->file, "\n");
}
/* /*
* *
* *
*/ */
function EnregEmetteur() function EnregEmetteur()
{ {
fputs ($this->file, "03"); fputs ($this->file, "03");
@ -445,71 +713,11 @@ class BonPrelevement
} }
/* /*
* Enregistrements destinataires * Pied de page
*
* *
*/ */
function EnregDestinataire($fac)
{
fputs ($this->file, "06");
fputs ($this->file, "08"); // Prélèvement ordinaire
fputs ($this->file, " "); // Zone Réservée B2
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3
// Date d'échéance C1
fputs ($this->file, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance));
fputs ($this->file, substr(strftime("%y", $this->date_echeance),1));
// Raison Sociale Destinataire C2
fputs ($this->file, substr($fac->client->nom. " ",0,24));
// Reference de la remise créancier D1
fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2
fputs ($this->file, substr(" ",0,8));
// Code Guichet D3
fputs ($this->file, $fac->client->bank_account->code_guichet);
// Numero de compte D4
fputs ($this->file, substr("000000000000000".$fac->client->bank_account->number, -11));
// Zone E Montant
$montant = (round($fac->total_ttc,2) * 100);
fputs ($this->file, substr("000000000000000".$montant, -16));
// Libellé F
fputs ($this->file, substr("*".$fac->ref." ",0,13));
fputs ($this->file, substr(" ",0,18));
// Code établissement G1
fputs ($this->file, $fac->client->bank_account->code_banque);
// Zone Réservée G2
fputs ($this->file, substr(" ",0,5));
fputs ($this->file, "\n");
}
function EnregTotal($total) function EnregTotal($total)
{ {
fputs ($this->file, "08"); fputs ($this->file, "08");