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;
}
/*
*
*
*
*/
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 .= ",".$this->db->pdate("p.date_credit")." as date_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;
$result=$this->db->query($sql);
@ -101,13 +209,13 @@ class BonPrelevement
}
else
{
dolibarr_syslog("bon-prelevment::Fetch Erreur aucune ligne retournée");
dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée");
return -1;
}
}
else
{
dolibarr_syslog("bon-prelevment::Fetch Erreur ");
dolibarr_syslog("BonPrelevement::Fetch Erreur ");
dolibarr_syslog($sql);
return -2;
}
@ -122,16 +230,14 @@ class BonPrelevement
if ($this->db->begin())
{
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons ";
$sql .= " SET credite = 1";
$sql .= " WHERE rowid=".$this->id;
$result=$this->db->query($sql);
if (! $result)
{
dolibarr_syslog("bon-prelevment::set_credite Erreur 1");
dolibarr_syslog("bon-prelevement::set_credite Erreur 1");
$error++;
}
@ -157,18 +263,14 @@ class BonPrelevement
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);
if (!$result)
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_lignes ";
$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++;
}
}
@ -184,8 +286,10 @@ class BonPrelevement
}
else
{
$this->db->rollback();
dolibarr_syslog("bon-prelevment::set_credite ROLLBACK ");
dolibarr_syslog("BonPrelevement::set_credite ROLLBACK ");
return -1;
}
@ -194,7 +298,7 @@ class BonPrelevement
else
{
dolibarr_syslog("bon-prelevment::set_credite Ouverture transaction SQL impossible ");
dolibarr_syslog("BonPrelevement::set_credite Ouverture transaction SQL impossible ");
return -2;
}
}
@ -208,18 +312,16 @@ class BonPrelevement
if ($this->db->begin())
{
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons ";
$sql .= " SET fk_user_credit = ".$user->id;
$sql .= " , statut = 2";
$sql .= " , date_credit='".$this->db->idate($date)."'";
$sql .= " WHERE rowid=".$this->id;
$result=$this->db->query($sql);
if (! $result)
$sql .= " AND statut = 1";
if (! $this->db->query($sql))
{
dolibarr_syslog("bon-prelevment::set_infotrans Erreur 1");
dolibarr_syslog($this->db->error());
dolibarr_syslog("BonPrelevement::set_infocredit Erreur 1");
$error++;
}
@ -234,15 +336,17 @@ class BonPrelevement
}
else
{
$this->db->rollback();
dolibarr_syslog("bon-prelevment::set_infotrans ROLLBACK ");
return -1;
}
}
else
{
dolibarr_syslog("bon-prelevment::set_infotrans Ouverture transaction SQL impossible ");
dolibarr_syslog("bon-prelevement::set_infocredit Ouverture transaction SQL impossible ");
return -2;
}
}
@ -257,17 +361,17 @@ class BonPrelevement
if ($this->db->begin())
{
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons ";
$sql .= " SET fk_user_trans = ".$user->id;
$sql .= " , date_trans='".$this->db->idate($date)."'";
$sql .= " , method_trans=".$method;
$sql .= " , statut = 1";
$sql .= " WHERE rowid=".$this->id;
$sql .= " AND statut = 0";
$result=$this->db->query($sql);
if (! $result)
if (! $this->db->query($sql))
{
dolibarr_syslog("bon-prelevment::set_infotrans Erreur 1");
dolibarr_syslog("bon-prelevement::set_infotrans Erreur 1");
dolibarr_syslog($this->db->error());
$error++;
}
@ -284,14 +388,15 @@ class BonPrelevement
else
{
$this->db->rollback();
dolibarr_syslog("bon-prelevment::set_infotrans ROLLBACK ");
dolibarr_syslog("BonPrelevement::set_infotrans ROLLBACK ");
return -1;
}
}
else
{
dolibarr_syslog("bon-prelevment::set_infotrans Ouverture transaction SQL impossible ");
dolibarr_syslog("BonPrelevement::set_infotrans Ouverture transaction SQL impossible ");
return -2;
}
}
@ -344,45 +449,208 @@ class BonPrelevement
*/
function Generate()
{
$result = -1;
/*
* En-tete Emetteur
*/
$this->EnregEmetteur();
$nbfactures = sizeof($this->factures);
/*
* Lignes
*/
$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++)
{
$fac = new Facture($this->db);
$fac->fetch($this->factures[$i]);
$fac->fetch_client();
$fac->client->rib(); // Set client->bank_account
if ($fac->client->bank_account->verif())
{
$fac->client->rib();
if ($fac->client->bank_account->verif()) {
$this->total = $this->total + $fac->total_ttc;
$this->EnregDestinataire($fac);
}
else
{
}else{
print $fac->client->bank_account->error_message;
print $fac->client->nom;
}
print $fac->client->nom; }
}
*/
/*
* Pied de page total
*/
$this->EnregTotal($this->total);
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()
{
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)
{
fputs ($this->file, "08");