diff --git a/htdocs/bon-prelevement.class.php b/htdocs/bon-prelevement.class.php index f58d1c33403..7ba491e84a9 100644 --- a/htdocs/bon-prelevement.class.php +++ b/htdocs/bon-prelevement.class.php @@ -32,1381 +32,1370 @@ require_once (DOL_DOCUMENT_ROOT."/societe.class.php"); class BonPrelevement { - var $db; + var $db; - var $date_echeance; - var $raison_sociale; - var $reference_remise; - var $emetteur_code_guichet; - var $emetteur_numero_compte; - var $emetteur_code_etablissement; - var $total; - var $_fetched; + var $date_echeance; + var $raison_sociale; + var $reference_remise; + var $emetteur_code_guichet; + var $emetteur_numero_compte; + var $emetteur_code_etablissement; + var $total; + var $_fetched; - function BonPrelevement($DB, $filename='') + function BonPrelevement($DB, $filename='') { - $error = 0; - $this->db = $DB; + $error = 0; + $this->db = $DB; - if (strlen($filename)) - { - $this->file = fopen ($filename,"w"); - } - - $this->date_echeance = time(); - $this->raison_sociale = ""; - $this->reference_remise = ""; + $this->filename=$filename; + + $this->date_echeance = time(); + $this->raison_sociale = ""; + $this->reference_remise = ""; - $this->emetteur_code_guichet = ""; - $this->emetteur_numero_compte = ""; - $this->emetteur_code_etablissement = ""; + $this->emetteur_code_guichet = ""; + $this->emetteur_numero_compte = ""; + $this->emetteur_code_etablissement = ""; - $this->factures = array(); + $this->factures = array(); - $this->numero_national_emetteur = ""; + $this->numero_national_emetteur = ""; - $this->methodes_trans = array(); + $this->methodes_trans = array(); - $this->methodes_trans[0] = "Internet"; + $this->methodes_trans[0] = "Internet"; - $this->_fetched = 0; + $this->_fetched = 0; - 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(MAIN_DB_PREFIX."prelevement_lignes"); - $result = 0; - } - else - { - dolibarr_syslog("BonPrelevement::AddLigne Erreur -2"); - $result = -2; - } - - } - - return $result; - } - /* - * - * - */ - function ReadError($error) - { - $errors = array(); - - $errors[1027] = "Date invalide"; - - return $errors[abs($error)]; - } - /* - * - * - */ - function Fetch($rowid) - { - $sql = "SELECT p.rowid, p.ref, p.amount, p.note, p.credite"; - $sql .= ",".$this->db->pdate("p.datec")." as dc"; - $sql .= ",".$this->db->pdate("p.date_trans")." as date_trans"; - $sql .= " , method_trans, fk_user_trans"; - $sql .= ",".$this->db->pdate("p.date_credit")." as date_credit"; - $sql .= " , fk_user_credit"; - $sql .= " , statut"; - $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; - - $sql .= " WHERE p.rowid=".$rowid; - - $result=$this->db->query($sql); - if ($result) - { - if ($this->db->num_rows($result)) - { - $obj = $this->db->fetch_object(); - - $this->id = $obj->rowid; - $this->ref = $obj->ref; - $this->amount = $obj->amount; - $this->note = stripslashes($obj->note); - $this->datec = $obj->dc; - $this->credite = $obj->credite; - - $this->date_trans = $obj->date_trans; - $this->method_trans = $obj->method_trans; - $this->user_trans = $obj->fk_user_trans; - - $this->date_credit = $obj->date_credit; - $this->user_credit = $obj->fk_user_credit; - - $this->statut = $obj->statut; - - $this->_fetched = 1; - - return 0; - } - else - { - dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée"); - return -1; - } - } - else - { - dolibarr_syslog("BonPrelevement::Fetch Erreur "); - dolibarr_syslog($sql); - return -2; - } - } - /** - * - * - */ - function set_credite() - { - $error == 0; - - if ($this->db->begin()) - { - $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-prelevement::set_credite Erreur 1"); - $error++; - } - - if ($error == 0) - { - /** - * - * - * - */ - $facs = array(); - $facs = $this->_get_list_factures(); - - for ($i = 0 ; $i < sizeof($facs) ; $i++) - { - $fac = new Facture($this->db); - - /* Tag la facture comme impayée */ - dolibarr_syslog("BonPrelevement::set_credite set_payed fac ".$facs[$i]); - $fac->set_payed($facs[$i]); - } - } - - if ($error == 0) - { - - $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("BonPrelevement::set_infocredit Erreur 1"); - $error++; - } - } - - /* - * Fin de la procédure - * - */ - if ($error == 0) - { - $this->db->commit(); - return 0; - } - else - { - - $this->db->rollback(); - dolibarr_syslog("BonPrelevement::set_credite ROLLBACK "); - - return -1; - } - - - } - else - { - - dolibarr_syslog("BonPrelevement::set_credite Ouverture transaction SQL impossible "); - return -2; - } - } - /** - * - * - */ - function set_infocredit($user, $date) - { - $error == 0; - - if ($this->_fetched == 1) - { - if ($date >= $this->date_trans) - { - if ($this->db->begin()) - { - $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; - $sql .= " AND statut = 1"; - - if ($this->db->query($sql)) - { - $subject = "Crédit prélèvement ".$this->ref." à la banque"; - $message = "Le bon de prélèvement ".$this->ref; - $message .= " a été crédité par la banque.\n"; - $message .= "Date crédit : ".strftime("%A %e %B %Y", $date); - - $this->Notify($user,"cr", $subject, $message); - } - else - { - dolibarr_syslog("BonPrelevement::set_infocredit Erreur 1"); - $error++; - } - - /* - * Fin de la procédure - * - */ - if ($error == 0) - { - $this->db->commit(); - return 0; - } - else - { - $this->db->rollback(); - dolibarr_syslog("bon-prelevment::set_infocredit ROLLBACK "); - return -1; - } - } - else - { - dolibarr_syslog("bon-prelevement::set_infocredit Ouverture transaction SQL impossible "); - return -1025; - } - } - else - { - dolibarr_syslog("bon-prelevment::set_infocredit 1027 Date de credit < Date de trans "); - return -1027; - } - } - else - { - return -1026; - } - } - /** - * - * - */ - function set_infotrans($user, $date, $method) - { - $error == 0; - dolibarr_syslog("bon-prelevement::set_infotrans Start",LOG_INFO); - if ($this->db->begin()) - { - $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"; - - if ($this->db->query($sql)) - { - $this->method_trans = $method; - - $subject = "Transmission du prélèvement ".$this->ref." à la banque"; - $message = "Le bon de prélèvement ".$this->ref; - $message .= " a été transmis à la banque par ".$user->prenom. " ".$user->nom; - $message .= "\n\n"; - $message .= "\nMontant : ".price($this->amount); - $message .= "\nMéthode : ".$this->methodes_trans[$this->method_trans]; - $message .= "\nDate : ".strftime("%A %e %B %Y", $date); - - $this->Notify($user,"tr", $subject, $message, 1); - } - else - { - dolibarr_syslog("bon-prelevement::set_infotrans Erreur 1", LOG_ERR); - dolibarr_syslog($this->db->error()); - $error++; - } - - /* - * Fin de la procédure - * - */ - if ($error == 0) - { - $this->db->commit(); - return 0; - } - else - { - $this->db->rollback(); - dolibarr_syslog("BonPrelevement::set_infotrans ROLLBACK", LOG_ERR); - - return -1; - } - } - else - { - - dolibarr_syslog("BonPrelevement::set_infotrans Ouverture transaction SQL impossible", LOG_CRIT); - return -2; - } - } - /* - * - * - */ - function Notify($user, $action, $subject, $message, $joinfile=0) - { - $message .= "\n\n--\n"; - $message .= "Ceci est un message automatique envoyé par Dolibarr"; - - - $sql = "SELECT u.name, u.firstname, u.email"; - $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; - $sql .= " , ".MAIN_DB_PREFIX."prelevement_notifications as pn"; - $sql .= " WHERE pn.action ='".$action."'"; - $sql .= " AND u.rowid = pn.fk_user;"; - - $resql = $this->db->query($sql); - if ($resql) - { - $num = $this->db->num_rows($resql); - $i = 0; - while ($i < $num) - { - $obj = $this->db->fetch_object($resql); - - require_once(DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"); - - - $sendto = $obj->firstname . " " .$obj->name . "<".$obj->email.">"; - $from = $user->prenom . " " .$user->nom . "<".$user->email.">"; - - $mailfile = new DolibarrMail($subject, - $sendto, - $from, - $message); - - if ($joinfile == 1) - { - - $arr_file = array(DOL_DATA_ROOT.'/prelevement/bon/'.$this->ref.'.ps'); - $arr_mime = array("application/ps"); - $arr_name = array($this->ref.".ps"); - - $mailfile->PrepareFile($arr_file, $arr_mime, $arr_name); - } - - - $mailfile->sendfile(); - - - - $i++; - } - $this->db->free($resql); - } - } - - /** - * \brief Recupére la liste des factures concernées - */ - function _get_list_factures() - { - $arr = array(); - /* - * Renvoie toutes les factures présente - * dans un bon de prélèvement - */ - - $sql = "SELECT fk_facture"; - $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; - $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; - $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture as pf"; - $sql .= " WHERE pf.fk_prelevement_lignes = pl.rowid"; - $sql .= " AND pl.fk_prelevement_bons = p.rowid"; - $sql .= " AND p.rowid=".$this->id; - - $resql=$this->db->query($sql); - if ($resql) - { - $num = $this->db->num_rows($resql); - - if ($num) - { - $i = 0; - while ($i < $num) - { - $row = $this->db->fetch_row($resql); - $arr[$i] = $row[0]; - $i++; - } - } - $this->db->free($resql); - } - else - { - dolibarr_syslog("Bon-Prelevement::_get_list_factures Erreur"); - } - - return $arr; + return 1; } - /** - * - * - */ - function SommeAPrelever() - { - $sql = "SELECT sum(f.total_ttc)"; - $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; - $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; - - $sql .= " WHERE f.fk_statut = 1"; - $sql .= " AND f.rowid = pfd.fk_facture"; - $sql .= " AND f.paye = 0"; - $sql .= " AND pfd.traite = 0"; - $sql .= " AND f.total_ttc > 0"; - $sql .= " AND f.fk_mode_reglement = 3"; - - $resql = $this->db->query($sql); - - if ( $resql ) - { - $row = $this->db->fetch_row($resql); - - return $row[0]; - - $this->db->free($resql); - } - else - { - $error = 1; - dolibarr_syslog("BonPrelevement::SommeAPrelever Erreur -1"); - dolibarr_syslog($this->db->error()); - } - } - /* - * - * - */ - function NbFactureAPrelever($banque=0,$agence=0) - { - $sql = "SELECT count(f.total_ttc)"; - $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; - $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; - $sql .= " , ".MAIN_DB_PREFIX."societe_rib as sr"; - - $sql .= " WHERE f.fk_statut = 1"; - $sql .= " AND f.rowid = pfd.fk_facture"; - $sql .= " AND f.fk_soc = sr.fk_soc"; - $sql .= " AND f.paye = 0"; - $sql .= " AND pfd.traite = 0"; - $sql .= " AND f.total_ttc > 0"; - $sql .= " AND f.fk_mode_reglement = 3"; - - if ($banque == 1) - { - $sql .= " AND sr.code_banque = '".PRELEVEMENT_CODE_BANQUE."'"; - } - - if ($agence == 1) - { - $sql .= " AND sr.code_guichet = '".PRELEVEMENT_CODE_GUICHET."'"; - } - - $resql = $this->db->query($sql); - - if ( $resql ) - { - $row = $this->db->fetch_row($resql); - - return $row[0]; - - $this->db->free($resql); - } - else - { - $error = 1; - dolibarr_syslog("BonPrelevement::SommeAPrelever Erreur -1"); - dolibarr_syslog($this->db->error()); - } - } - /* - * - * - */ - function Create($banque=0, $guichet=0) - { - dolibarr_syslog("BonPrelevement::Create"); - - require_once (DOL_DOCUMENT_ROOT."/bon-prelevement.class.php"); - require_once (DOL_DOCUMENT_ROOT."/facture.class.php"); - require_once (DOL_DOCUMENT_ROOT."/societe.class.php"); - require_once (DOL_DOCUMENT_ROOT."/paiement.class.php"); - require_once (DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"); - - $error = 0; - - $datetimeprev = time(); - - $month = strftime("%m", $datetimeprev); - $year = strftime("%Y", $datetimeprev); - - $user = new user($this->db, PRELEVEMENT_USER); - - /* - * - * Lectures des factures - * - */ - - $factures = array(); - $factures_prev = array(); - - if (!$error) - { - - $sql = "SELECT f.rowid, pfd.rowid as pfdrowid, f.fk_soc"; - $sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib"; - $sql .= ", pfd.amount"; - $sql .= ", s.nom"; - $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; - $sql .= " , ".MAIN_DB_PREFIX."societe as s"; - $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; - $sql .= " , ".MAIN_DB_PREFIX."societe_rib as sr"; - - $sql .= " WHERE f.rowid = pfd.fk_facture"; - $sql .= " AND s.idp = f.fk_soc"; - $sql .= " AND s.idp = sr.fk_soc"; - $sql .= " AND f.fk_statut = 1"; - $sql .= " AND f.paye = 0"; - $sql .= " AND pfd.traite = 0"; - $sql .= " AND f.total_ttc > 0"; - $sql .= " AND f.fk_mode_reglement = 3"; - - if ($banque == 1) - { - $sql .= " AND sr.code_banque = '".PRELEVEMENT_CODE_BANQUE."'"; - } - - if ($agence == 1) - { - $sql .= " AND sr.code_guichet = '".PRELEVEMENT_CODE_GUICHET."'"; - } - - $resql = $this->db->query($sql); - - if ( $resql) - { - $num = $this->db->num_rows($resql); - $i = 0; - - while ($i < $num) - { - $row = $this->db->fetch_row($resql); - $factures[$i] = $row; - $i++; - } - $this->db->free($resql); - dolibarr_syslog("$i factures à prélever"); - } - else - { - $error = 1; - dolibarr_syslog("Erreur -1"); - dolibarr_syslog($this->db->error()); - } - } - - /* - * - * Verif des clients - * - */ - - if (!$error) - { - /* - * Vérification des RIB - * - */ - $i = 0; - dolibarr_syslog("Début vérification des RIB"); - - if (sizeof($factures) > 0) - { - foreach ($factures as $fac) - { - $fact = new Facture($this->db); - - if ($fact->fetch($fac[0]) == 1) - { - $soc = new Societe($this->db); - if ($soc->fetch($fact->socidp) == 1) - { - if ($soc->verif_rib() == 1) - { - $factures_prev[$i] = $fac; - /* second tableau necessaire pour bon-prelevement */ - $factures_prev_id[$i] = $fac[0]; - $i++; - } - else - { - dolibarr_syslog("Erreur de RIB societe $fact->socidp $soc->nom"); - } - } - else - { - dolibarr_syslog("Impossible de lire la société"); - } - } - else - { - dolibarr_syslog("Impossible de lire la facture"); - } - } - } - else - { - dolibarr_syslog("Aucune factures a traiter"); - } - } - - /* - * + /** * * */ - - dolibarr_syslog(sizeof($factures_prev)." factures seront prélevées"); - - if (sizeof($factures_prev) > 0) - { - /* - * Ouverture de la transaction - * - */ - - if (!$this->db->query("BEGIN")) - { - $error++; - } - - /* - * Traitements - * - */ - - if (!$error) - { - $ref = "T".substr($year,-2).$month; - - /* - * - * - */ - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."prelevement_bons"; - $sql .= " WHERE ref LIKE '$ref%'"; - - $resql = $this->db->query($sql); + function AddFacture($facture_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number) + { + $result = 0; + $ligne_id = 0; - if ($resql) - { - $row = $this->db->fetch_row($resql); - } - else - { - $error++; - dolibarr_syslog("Erreur recherche reference"); - } - - $ref = $ref . substr("00".($row[0]+1), -2); - - $filebonprev = $ref; - - /* - * Creation du bon de prelevement - * - */ - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (ref,datec)"; - $sql .= " VALUES ('".$ref."',now())"; - - $resql = $this->db->query($sql); + $result = $this->AddLigne($ligne_id, $client_id, $client_nom, + $amount, $code_banque, $code_guichet, $number); - if ($resql) - { - $prev_id = $this->db->last_insert_id(MAIN_DB_PREFIX."prelevement_bons"); - - $bonprev = new BonPrelevement($this->db, DOL_DATA_ROOT."/prelevement/bon/".$filebonprev); - $bonprev->id = $prev_id; - } - else - { - $error++; - dolibarr_syslog("Erreur création du bon de prelevement"); - } - - } - - /* - * - * - * - */ - if (!$error) - { - dolibarr_syslog("Début génération des paiements"); - dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); - - if (sizeof($factures_prev) > 0) - { - foreach ($factures_prev as $fac) - { - $fact = new Facture($this->db); - $fact->fetch($fac[0]); - - $pai = new Paiement($this->db); - - $pai->amounts = array(); - $pai->amounts[$fac[0]] = $fact->total_ttc; - $pai->datepaye = $this->db->idate($datetimeprev); - $pai->paiementid = 3; // prélèvement - $pai->num_paiement = $ref; - - if ($pai->create($user, 1) == -1) // on appelle en no_commit - { - $error++; - dolibarr_syslog("Erreur creation paiement facture ".$fac[0]); - } - else - { - /* - * Validation du paiement - */ - $pai->valide(); - - /* - * Ajout d'une ligne de prélèvement - * - * - * $fac[3] : banque - * $fac[4] : guichet - * $fac[5] : number - * $fac[6] : cle rib - * $fac[7] : amount - * $fac[8] : client nom - * $fac[2] : client id - */ - - $ri = $bonprev->AddFacture($fac[0], $fac[2], $fac[8], $fac[7], - $fac[3], $fac[4], $fac[5], $fac[6]); - if ($ri <> 0) - { - $error++; - } - - /* - * Mise à jour des demandes - * - */ - $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande"; - $sql .= " SET traite = 1"; - $sql .= ", date_traite=now()"; - $sql .= ", fk_prelevement_bons = ".$prev_id; - $sql .= " WHERE rowid=".$fac[1]; - - if ($this->db->query($sql)) - { - - } - else - { - $error++; - dolibarr_syslog("Erreur mise a jour des demandes"); - dolibarr_syslog($this->db->error()); - } - - } - } - } - - dolibarr_syslog("Fin des paiements"); - } - - if (!$error) - { - /* - * Bon de Prelevement - * - * - */ - - dolibarr_syslog("Debut prelevement"); - dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); - - if (sizeof($factures_prev) > 0) - { - $bonprev->date_echeance = $datetimeprev; - $bonprev->reference_remise = $ref; - - - $bonprev->numero_national_emetteur = PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR; - $bonprev->raison_sociale = PRELEVEMENT_RAISON_SOCIALE; - - $bonprev->emetteur_code_etablissement = PRELEVEMENT_CODE_BANQUE; - $bonprev->emetteur_code_guichet = PRELEVEMENT_CODE_GUICHET; - $bonprev->emetteur_numero_compte = PRELEVEMENT_NUMERO_COMPTE; - - - $bonprev->factures = $factures_prev_id; - - $bonprev->generate(); - } - dolibarr_syslog( $filebonprev ) ; - dolibarr_syslog("Fin prelevement"); - } - - /* - * Mise à jour du total - * - */ - - $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons"; - $sql .= " SET amount = ".ereg_replace(",",".",$bonprev->total); - $sql .= " WHERE rowid = ".$prev_id; - - if (!$this->db->query($sql)) - { - $error++; - dolibarr_syslog("Erreur mise à jour du total"); - dolibarr_syslog($sql); - } - - /* - * Rollback ou Commit - * - */ - if (!$error) - { - $this->db->query("COMMIT"); - dolibarr_syslog("COMMIT"); - } - else - { - $this->db->query("ROLLBAK"); - dolibarr_syslog("ROLLBACK"); - } - } - } - /* - * - * - */ - function DeleteNotificationById($rowid) - { - $result = 0; + 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.")"; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_notifications "; - $sql .= " WHERE rowid = '".$rowid."';"; + 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"); + } - if ($this->db->query($sql)) - { - return 0; - } - else - { - return -1; - } - } - /* - * - */ - function DeleteNotification($user, $action) - { - $result = 0; + return $result; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_notifications "; - $sql .= " WHERE fk_user = '".$user."' AND action = '".$action."';"; + } - if ($this->db->query($sql)) - { - return 0; - } - else - { - return -1; - } - } - /* - * - * - */ - function AddNotification($user, $action) - { - $result = 0; - - if ($this->DeleteNotification($user, $action) == 0) - { - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_notifications "; - $sql .= " (fk_user, action )"; - $sql .= " VALUES ('".$user."','".$action."');"; - - if ($this->db->query($sql)) - { - $result = 0; - } - else - { - $result = -1; - dolibarr_syslog("BonPrelevement::AddNotification Erreur $result"); - } - } - - return $result; - } - /** - * Génération d'un bon de prélèvement - * - */ - function Generate() - { - $result = -1; - /* - * En-tete Emetteur + /** + * + * */ + function AddLigne(&$ligne_id, $client_id, $client_nom, $amount, $code_banque, $code_guichet, $number) + { + $result = -1; + $concat = 0; - $this->EnregEmetteur(); + 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."'"; - /* - * Lignes + 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(MAIN_DB_PREFIX."prelevement_lignes"); + $result = 0; + } + else + { + dolibarr_syslog("BonPrelevement::AddLigne Erreur -2"); + $result = -2; + } + + } + + return $result; + } + + /** + * + * */ - $this->total = 0; + function ReadError($error) + { + $errors = array(); - $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; + $errors[1027] = "Date invalide"; - $i = 0; + return $errors[abs($error)]; + } - 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(); - if ($fac->client->bank_account->verif()) { - $this->total = $this->total + $fac->total_ttc; - $this->EnregDestinataire($fac); - }else{ - print $fac->client->bank_account->error_message; - print $fac->client->nom; } - } - */ - - /* - * Pied de page total + /** + * + * */ + function Fetch($rowid) + { + $sql = "SELECT p.rowid, p.ref, p.amount, p.note, p.credite"; + $sql .= ",".$this->db->pdate("p.datec")." as dc"; + $sql .= ",".$this->db->pdate("p.date_trans")." as date_trans"; + $sql .= " , method_trans, fk_user_trans"; + $sql .= ",".$this->db->pdate("p.date_credit")." as date_credit"; + $sql .= " , fk_user_credit"; + $sql .= " , statut"; + $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; + + $sql .= " WHERE p.rowid=".$rowid; + + $result=$this->db->query($sql); + if ($result) + { + if ($this->db->num_rows($result)) + { + $obj = $this->db->fetch_object(); + + $this->id = $obj->rowid; + $this->ref = $obj->ref; + $this->amount = $obj->amount; + $this->note = stripslashes($obj->note); + $this->datec = $obj->dc; + $this->credite = $obj->credite; + + $this->date_trans = $obj->date_trans; + $this->method_trans = $obj->method_trans; + $this->user_trans = $obj->fk_user_trans; + + $this->date_credit = $obj->date_credit; + $this->user_credit = $obj->fk_user_credit; + + $this->statut = $obj->statut; + + $this->_fetched = 1; + + return 0; + } + else + { + dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée"); + return -1; + } + } + else + { + dolibarr_syslog("BonPrelevement::Fetch Erreur "); + dolibarr_syslog($sql); + return -2; + } + } + + /** + * + * + */ + function set_credite() + { + $error == 0; + + if ($this->db->begin()) + { + $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-prelevement::set_credite Erreur 1"); + $error++; + } + + if ($error == 0) + { + $facs = array(); + $facs = $this->_get_list_factures(); + + for ($i = 0 ; $i < sizeof($facs) ; $i++) + { + $fac = new Facture($this->db); + + /* Tag la facture comme impayée */ + dolibarr_syslog("BonPrelevement::set_credite set_payed fac ".$facs[$i]); + $fac->set_payed($facs[$i]); + } + } + + if ($error == 0) + { + + $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("BonPrelevement::set_credite Erreur 1"); + $error++; + } + } + + /* + * Fin de la procédure + * + */ + if ($error == 0) + { + $this->db->commit(); + return 0; + } + else + { + + $this->db->rollback(); + dolibarr_syslog("BonPrelevement::set_credite ROLLBACK "); + + return -1; + } + + + } + else + { + + dolibarr_syslog("BonPrelevement::set_credite Ouverture transaction SQL impossible "); + return -2; + } + } + + /** + * + * + */ + function set_infocredit($user, $date) + { + $error == 0; + + if ($this->_fetched == 1) + { + if ($date >= $this->date_trans) + { + if ($this->db->begin()) + { + $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; + $sql .= " AND statut = 1"; + + if ($this->db->query($sql)) + { + $subject = "Crédit prélèvement ".$this->ref." à la banque"; + $message = "Le bon de prélèvement ".$this->ref; + $message .= " a été crédité par la banque.\n"; + $message .= "Date crédit : ".strftime("%A %e %B %Y", $date); + + $this->Notify($user, "cr", $subject, $message); + } + else + { + dolibarr_syslog("BonPrelevement::set_infocredit Erreur 1"); + $error++; + } + + /* + * Fin de la procédure + * + */ + if ($error == 0) + { + $this->db->commit(); + return 0; + } + else + { + $this->db->rollback(); + dolibarr_syslog("bon-prelevment::set_infocredit ROLLBACK "); + return -1; + } + } + else + { + dolibarr_syslog("bon-prelevement::set_infocredit Ouverture transaction SQL impossible "); + return -1025; + } + } + else + { + dolibarr_syslog("bon-prelevment::set_infocredit 1027 Date de credit < Date de trans "); + return -1027; + } + } + else + { + return -1026; + } + } + + /** + * + * + */ + function set_infotrans($user, $date, $method) + { + $error == 0; + dolibarr_syslog("bon-prelevement::set_infotrans Start",LOG_INFO); + if ($this->db->begin()) + { + $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"; + + if ($this->db->query($sql)) + { + $this->method_trans = $method; + + $subject = "Transmission du prélèvement ".$this->ref." à la banque"; + $message = "Le bon de prélèvement ".$this->ref; + $message .= " a été transmis à la banque par ".$user->prenom. " ".$user->nom; + $message .= "\n\n"; + $message .= "\nMontant : ".price($this->amount); + $message .= "\nMéthode : ".$this->methodes_trans[$this->method_trans]; + $message .= "\nDate : ".strftime("%A %e %B %Y", $date); + + $this->Notify($user,"tr", $subject, $message, 1); + } + else + { + dolibarr_syslog("bon-prelevement::set_infotrans Erreur 1", LOG_ERR); + dolibarr_syslog($this->db->error()); + $error++; + } + + /* + * Fin de la procédure + * + */ + if ($error == 0) + { + $this->db->commit(); + return 0; + } + else + { + $this->db->rollback(); + dolibarr_syslog("BonPrelevement::set_infotrans ROLLBACK", LOG_ERR); + + return -1; + } + } + else + { + + dolibarr_syslog("BonPrelevement::set_infotrans Ouverture transaction SQL impossible", LOG_CRIT); + return -2; + } + } + + /** + * + * + */ + function Notify($user, $action, $subject, $message, $joinfile=0) + { + $message .= "\n\n--\n"; + $message .= "Ceci est un message automatique envoyé par Dolibarr"; + + $sql = "SELECT u.name, u.firstname, u.email"; + $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; + $sql .= " , ".MAIN_DB_PREFIX."prelevement_notifications as pn"; + $sql .= " WHERE pn.action ='".$action."'"; + $sql .= " AND u.rowid = pn.fk_user;"; + + $resql = $this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + $i = 0; + while ($i < $num) + { + $obj = $this->db->fetch_object($resql); + + require_once(DOL_DOCUMENT_ROOT."/lib/CMailFile.class.php"); + + $sendto = $obj->firstname . " " .$obj->name . "<".$obj->email.">"; + $from = $user->prenom . " " .$user->nom . "<".$user->email.">"; + $arr_file = array(); + $arr_mime = array(); + $arr_name = array(); + if ($joinfile == 1) + { + $arr_file = array(DOL_DATA_ROOT.'/prelevement/bon/'.$this->ref.'.ps'); + $arr_mime = array("application/ps"); + $arr_name = array($this->ref.".ps"); + } + + $mailfile = new CMailFile($subject,$sendto,$from,$message,$arr_file,$arr_mime,$arr_name); + + $result=$mailfile->sendfile(); + + $i++; + } + $this->db->free($resql); + } + } + + /** + * \brief Recupére la liste des factures concernées + */ + function _get_list_factures() + { + $arr = array(); + + /* + * Renvoie toutes les factures présente + * dans un bon de prélèvement + */ + $sql = "SELECT fk_facture"; + $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; + $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; + $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture as pf"; + $sql .= " WHERE pf.fk_prelevement_lignes = pl.rowid"; + $sql .= " AND pl.fk_prelevement_bons = p.rowid"; + $sql .= " AND p.rowid=".$this->id; + + $resql=$this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + + if ($num) + { + $i = 0; + while ($i < $num) + { + $row = $this->db->fetch_row($resql); + $arr[$i] = $row[0]; + $i++; + } + } + $this->db->free($resql); + } + else + { + dolibarr_syslog("Bon-Prelevement::_get_list_factures Erreur"); + } + + return $arr; + } + + /** + * + * + */ + function SommeAPrelever() + { + $sql = "SELECT sum(f.total_ttc)"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; + $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; + + $sql .= " WHERE f.fk_statut = 1"; + $sql .= " AND f.rowid = pfd.fk_facture"; + $sql .= " AND f.paye = 0"; + $sql .= " AND pfd.traite = 0"; + $sql .= " AND f.total_ttc > 0"; + $sql .= " AND f.fk_mode_reglement = 3"; + + $resql = $this->db->query($sql); + + if ( $resql ) + { + $row = $this->db->fetch_row($resql); + + return $row[0]; + + $this->db->free($resql); + } + else + { + $error = 1; + dolibarr_syslog("BonPrelevement::SommeAPrelever Erreur -1"); + dolibarr_syslog($this->db->error()); + } + } + + /* + * + * + */ + function NbFactureAPrelever($banque=0,$agence=0) + { + $sql = "SELECT count(f.total_ttc)"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; + $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; + $sql .= " , ".MAIN_DB_PREFIX."societe_rib as sr"; + + $sql .= " WHERE f.fk_statut = 1"; + $sql .= " AND f.rowid = pfd.fk_facture"; + $sql .= " AND f.fk_soc = sr.fk_soc"; + $sql .= " AND f.paye = 0"; + $sql .= " AND pfd.traite = 0"; + $sql .= " AND f.total_ttc > 0"; + $sql .= " AND f.fk_mode_reglement = 3"; + + if ($banque == 1) + { + $sql .= " AND sr.code_banque = '".PRELEVEMENT_CODE_BANQUE."'"; + } + + if ($agence == 1) + { + $sql .= " AND sr.code_guichet = '".PRELEVEMENT_CODE_GUICHET."'"; + } + + $resql = $this->db->query($sql); + + if ( $resql ) + { + $row = $this->db->fetch_row($resql); + + return $row[0]; + + $this->db->free($resql); + } + else + { + $error = 1; + dolibarr_syslog("BonPrelevement::SommeAPrelever Erreur -1"); + dolibarr_syslog($this->db->error()); + } + } + + /** + * \brief Cree prelevement + * + */ + function Create($banque=0, $guichet=0) + { + global $conf; + + dolibarr_syslog("BonPrelevement::Create"); + + require_once (DOL_DOCUMENT_ROOT."/bon-prelevement.class.php"); + require_once (DOL_DOCUMENT_ROOT."/facture.class.php"); + require_once (DOL_DOCUMENT_ROOT."/societe.class.php"); + require_once (DOL_DOCUMENT_ROOT."/paiement.class.php"); + + $error = 0; + + $datetimeprev = time(); + + $month = strftime("%m", $datetimeprev); + $year = strftime("%Y", $datetimeprev); + + $user = new user($this->db, PRELEVEMENT_USER); + + /** + * Lectures des factures + */ + $factures = array(); + $factures_prev = array(); + + if (!$error) + { + + $sql = "SELECT f.rowid, pfd.rowid as pfdrowid, f.fk_soc"; + $sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib"; + $sql .= ", pfd.amount"; + $sql .= ", s.nom"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; + $sql .= " , ".MAIN_DB_PREFIX."societe as s"; + $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; + $sql .= " , ".MAIN_DB_PREFIX."societe_rib as sr"; + + $sql .= " WHERE f.rowid = pfd.fk_facture"; + $sql .= " AND s.idp = f.fk_soc"; + $sql .= " AND s.idp = sr.fk_soc"; + $sql .= " AND f.fk_statut = 1"; + $sql .= " AND f.paye = 0"; + $sql .= " AND pfd.traite = 0"; + $sql .= " AND f.total_ttc > 0"; + $sql .= " AND f.fk_mode_reglement = 3"; // Mode prélèvement + + if ($banque == 1) + { + $sql .= " AND sr.code_banque = '".PRELEVEMENT_CODE_BANQUE."'"; + } + if ($agence == 1) + { + $sql .= " AND sr.code_guichet = '".PRELEVEMENT_CODE_GUICHET."'"; + } + + $resql = $this->db->query($sql); + + if ($resql) + { + $num = $this->db->num_rows($resql); + $i = 0; + + while ($i < $num) + { + $row = $this->db->fetch_row($resql); + $factures[$i] = $row; + $i++; + } + $this->db->free($resql); + dolibarr_syslog("$i factures à prélever"); + } + else + { + $error = 1; + dolibarr_syslog("Erreur -1"); + dolibarr_syslog($this->db->error()); + } + } + + /* + * + * Verif des clients + * + */ + + if (! $error) + { + /* + * Vérification des RIB + * + */ + $i = 0; + dolibarr_syslog("Début vérification des RIB"); + + if (sizeof($factures) > 0) + { + foreach ($factures as $fac) + { + $fact = new Facture($this->db); + + if ($fact->fetch($fac[0]) == 1) + { + $soc = new Societe($this->db); + if ($soc->fetch($fact->socidp) == 1) + { + if ($soc->verif_rib() == 1) + { + $factures_prev[$i] = $fac; + /* second tableau necessaire pour bon-prelevement */ + $factures_prev_id[$i] = $fac[0]; + $i++; + } + else + { + dolibarr_syslog("Erreur de RIB societe $fact->socidp $soc->nom"); + } + } + else + { + dolibarr_syslog("Impossible de lire la société"); + } + } + else + { + dolibarr_syslog("Impossible de lire la facture"); + } + } + } + else + { + dolibarr_syslog("Aucune factures a traiter"); + } + } + + /* + * + * + */ + + dolibarr_syslog(sizeof($factures_prev)." factures seront prélevées"); + + if (sizeof($factures_prev) > 0) + { + /* + * Ouverture de la transaction + * + */ + $result=$this->db->begin(); + if ($result <= 0) + { + $error++; + } + + /* + * Traitements + * + */ + if (!$error) + { + $ref = "T".substr($year,-2).$month; + + $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."prelevement_bons"; + $sql .= " WHERE ref LIKE '$ref%'"; + + $resql = $this->db->query($sql); + + if ($resql) + { + $row = $this->db->fetch_row($resql); + } + else + { + $error++; + dolibarr_syslog("Erreur recherche reference"); + } + + $ref = $ref . substr("00".($row[0]+1), -2); + + $filebonprev = $ref; + + /* + * Creation du bon de prelevement + * + */ + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons (ref,datec)"; + $sql .= " VALUES ('".$ref."',now())"; + + $resql = $this->db->query($sql); + + if ($resql) + { + $prev_id = $this->db->last_insert_id(MAIN_DB_PREFIX."prelevement_bons"); + + $dir=$conf->prelevement->dir_output.'/bon'; + $file=$filebonprev; + if (! is_dir($dir)) create_exdir($dir); + + $bonprev = new BonPrelevement($this->db, $dir."/".$file); + $bonprev->id = $prev_id; + } + else + { + $error++; + dolibarr_syslog("Erreur création du bon de prelevement"); + } + } + + /* + * + * + */ + if (!$error) + { + dolibarr_syslog("Début génération des paiements"); + dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); + + if (sizeof($factures_prev) > 0) + { + foreach ($factures_prev as $fac) + { + $fact = new Facture($this->db); + $fact->fetch($fac[0]); + + $pai = new Paiement($this->db); + + $pai->amounts = array(); + $pai->amounts[$fac[0]] = $fact->total_ttc; + $pai->datepaye = $this->db->idate($datetimeprev); + $pai->paiementid = 3; // prélèvement + $pai->num_paiement = $ref; + + if ($pai->create($user, 1) == -1) // on appelle en no_commit + { + $error++; + dolibarr_syslog("Erreur creation paiement facture ".$fac[0]); + } + else + { + /* + * Validation du paiement + */ + $pai->valide(); + + /* + * Ajout d'une ligne de prélèvement + * + * + * $fac[3] : banque + * $fac[4] : guichet + * $fac[5] : number + * $fac[6] : cle rib + * $fac[7] : amount + * $fac[8] : client nom + * $fac[2] : client id + */ + + $ri = $bonprev->AddFacture($fac[0], $fac[2], $fac[8], $fac[7], + $fac[3], $fac[4], $fac[5], $fac[6]); + if ($ri <> 0) + { + $error++; + } + + /* + * Mise à jour des demandes + * + */ + $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande"; + $sql .= " SET traite = 1"; + $sql .= ", date_traite=now()"; + $sql .= ", fk_prelevement_bons = ".$prev_id; + $sql .= " WHERE rowid=".$fac[1]; + + if ($this->db->query($sql)) + { + + } + else + { + $error++; + dolibarr_syslog("Erreur mise a jour des demandes"); + dolibarr_syslog($this->db->error()); + } + + } + } + } + + dolibarr_syslog("Fin des paiements"); + } + + if (!$error) + { + /* + * Bon de Prelevement + * + * + */ + + dolibarr_syslog("Debut prelevement"); + dolibarr_syslog("Nombre de factures ".sizeof($factures_prev)); + + if (sizeof($factures_prev) > 0) + { + $bonprev->date_echeance = $datetimeprev; + $bonprev->reference_remise = $ref; + + $bonprev->numero_national_emetteur = PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR; + $bonprev->raison_sociale = PRELEVEMENT_RAISON_SOCIALE; + + $bonprev->emetteur_code_etablissement = PRELEVEMENT_CODE_BANQUE; + $bonprev->emetteur_code_guichet = PRELEVEMENT_CODE_GUICHET; + $bonprev->emetteur_numero_compte = PRELEVEMENT_NUMERO_COMPTE; + + + $bonprev->factures = $factures_prev_id; + + $bonprev->generate(); + } + dolibarr_syslog( $filebonprev ) ; + dolibarr_syslog("Fin prelevement"); + } + + /* + * Mise à jour du total + * + */ + + $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons"; + $sql .= " SET amount = ".ereg_replace(",",".",$bonprev->total); + $sql .= " WHERE rowid = ".$prev_id; + + $resql=$this->db->query($sql); + if (! $resql) + { + $error++; + dolibarr_syslog("Erreur mise à jour du total - $sql"); + } + + /* + * Rollback ou Commit + * + */ + if (!$error) + { + $this->db->commit(); + dolibarr_syslog("COMMIT"); + } + else + { + $this->db->rollback(); + dolibarr_syslog("ROLLBACK"); + } + } + } + + /** + * + * + */ + function DeleteNotificationById($rowid) + { + $result = 0; + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_notifications "; + $sql .= " WHERE rowid = '".$rowid."';"; + + if ($this->db->query($sql)) + { + return 0; + } + else + { + return -1; + } + } + + /** + * + * + */ + function DeleteNotification($user, $action) + { + $result = 0; + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_notifications "; + $sql .= " WHERE fk_user = '".$user."' AND action = '".$action."';"; + + if ($this->db->query($sql)) + { + return 0; + } + else + { + return -1; + } + } + + /* + * + * + */ + function AddNotification($user, $action) + { + $result = 0; + + if ($this->DeleteNotification($user, $action) == 0) + { + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_notifications "; + $sql .= " (fk_user, action )"; + $sql .= " VALUES ('".$user."','".$action."');"; + + if ($this->db->query($sql)) + { + $result = 0; + } + else + { + $result = -1; + dolibarr_syslog("BonPrelevement::AddNotification Erreur $result"); + } + } + + return $result; + } + + /** + * Génération d'un bon de prélèvement + * + */ + function Generate() + { + $result = -1; + + $this->file = fopen ($this->filename,"w"); + + + /* + * En-tete Emetteur + */ + $this->EnregEmetteur(); + + /* + * 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->EnregTotal($this->total); + $this->EnregDestinataire($row[0], + $row[1], + $row[2], + $row[3], + $row[4], + $row[5]); - fclose($this->file); + $this->total = $this->total + $row[5]; - return $result; - } + $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(); + if ($fac->client->bank_account->verif()) { + $this->total = $this->total + $fac->total_ttc; + $this->EnregDestinataire($fac); + }else{ + print $fac->client->bank_account->error_message; + print $fac->client->nom; } + } + */ + /* + * Pied de page total + */ - /* - * Enregistrements destinataires - * - * - */ + $this->EnregTotal($this->total); - function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount) - { - fputs ($this->file, "06"); - fputs ($this->file, "08"); // Prélèvement ordinaire + fclose($this->file); - fputs ($this->file, " "); // Zone Réservée B2 + return $result; + } - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 - // Date d'échéance C1 + /** + * 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, " "); - 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, " "); // Zone Réservée B2 - fputs ($this->file, substr($client->nom. " ",0,24)); + fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 - // Domiciliation facultative D1 + // Date d'échéance C1 - fputs ($this->file, substr(" ",0,24)); + fputs ($this->file, " "); + fputs ($this->file, strftime("%d%m", $this->date_echeance)); + fputs ($this->file, substr(strftime("%y", $this->date_echeance),1)); - // Zone Réservée D2 + // Raison Sociale Destinataire C2 - fputs ($this->file, substr(" ",0,8)); - - // Code Guichet D3 + fputs ($this->file, substr($client->nom. " ",0,24)); - fputs ($this->file, $rib_guichet); + // Domiciliation facultative D1 - // Numero de compte D4 + fputs ($this->file, substr(" ",0,24)); - fputs ($this->file, substr("000000000000000".$rib_number, -11)); + // Zone Réservée D2 - // Zone E Montant - - $montant = (round($amount,2) * 100); + fputs ($this->file, substr(" ",0,8)); - fputs ($this->file, substr("000000000000000".$montant, -16)); + // Code Guichet D3 - // Libellé F - - fputs ($this->file, substr("*".$this->ref.$rowid." ",0,13)); - fputs ($this->file, substr(" ",0,18)); + fputs ($this->file, $rib_guichet); - // Code établissement G1 + // Numero de compte D4 - fputs ($this->file, $rib_banque); + fputs ($this->file, substr("000000000000000".$rib_number, -11)); - // Zone Réservée G2 - - fputs ($this->file, substr(" ",0,5)); + // Zone E Montant - fputs ($this->file, "\n"); - } + $montant = (round($amount,2) * 100); + fputs ($this->file, substr("000000000000000".$montant, -16)); - /* - * Enregistrements destinataires - * - * - */ + // Libellé F - function EnregDestinataireVersion1($fac) - { - fputs ($this->file, "06"); - fputs ($this->file, "08"); // Prélèvement ordinaire + fputs ($this->file, substr("*".$this->ref.$rowid." ",0,13)); + fputs ($this->file, substr(" ",0,18)); - fputs ($this->file, " "); // Zone Réservée B2 + // Code établissement G1 - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 + fputs ($this->file, $rib_banque); - // Date d'échéance C1 + // Zone Réservée G2 - 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(" ",0,5)); - fputs ($this->file, substr($fac->client->nom. " ",0,24)); + fputs ($this->file, "\n"); + } - // Reference de la remise créancier D1 - fputs ($this->file, substr(" ",0,24)); + /** + * Enregistrements destinataires + * + * + */ + function EnregDestinataireVersion1($fac) + { + fputs ($this->file, "06"); + fputs ($this->file, "08"); // Prélèvement ordinaire - // Zone Réservée D2 + fputs ($this->file, " "); // Zone Réservée B2 - fputs ($this->file, substr(" ",0,8)); - - // Code Guichet D3 + fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 - fputs ($this->file, $fac->client->bank_account->code_guichet); + // Date d'échéance C1 - // Numero de compte D4 + fputs ($this->file, " "); + fputs ($this->file, strftime("%d%m", $this->date_echeance)); + fputs ($this->file, substr(strftime("%y", $this->date_echeance),1)); - fputs ($this->file, substr("000000000000000".$fac->client->bank_account->number, -11)); + // Raison Sociale Destinataire C2 - // Zone E Montant - - $montant = (round($fac->total_ttc,2) * 100); + fputs ($this->file, substr($fac->client->nom. " ",0,24)); - fputs ($this->file, substr("000000000000000".$montant, -16)); + // Reference de la remise créancier D1 - // Libellé F - - fputs ($this->file, substr("*".$fac->ref." ",0,13)); - fputs ($this->file, substr(" ",0,18)); + fputs ($this->file, substr(" ",0,24)); - // Code établissement G1 + // Zone Réservée D2 - fputs ($this->file, $fac->client->bank_account->code_banque); + fputs ($this->file, substr(" ",0,8)); - // Zone Réservée G2 - - fputs ($this->file, substr(" ",0,5)); + // Code Guichet D3 - fputs ($this->file, "\n"); - } + fputs ($this->file, $fac->client->bank_account->code_guichet); - /* - * - * - */ - function EnregEmetteur() - { - fputs ($this->file, "03"); - fputs ($this->file, "08"); // Prélèvement ordinaire + // Numero de compte D4 - fputs ($this->file, " "); // Zone Réservée B2 + fputs ($this->file, substr("000000000000000".$fac->client->bank_account->number, -11)); - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 + // Zone E Montant - // Date d'échéance C1 + $montant = (round($fac->total_ttc,2) * 100); - fputs ($this->file, " "); - fputs ($this->file, strftime("%d%m", $this->date_echeance)); - fputs ($this->file, substr(strftime("%y", $this->date_echeance),1)); - - // Raison Sociale C2 + fputs ($this->file, substr("000000000000000".$montant, -16)); - fputs ($this->file, substr($this->raison_sociale. " ",0,24)); + // Libellé F - // Reference de la remise créancier D1 sur 7 caractéres + fputs ($this->file, substr("*".$fac->ref." ",0,13)); + fputs ($this->file, substr(" ",0,18)); - fputs ($this->file, substr($this->reference_remise. " ",0,7)); + // Code établissement G1 - // Zone Réservée D1-2 - - fputs ($this->file, substr(" ",0,17)); + fputs ($this->file, $fac->client->bank_account->code_banque); - // Zone Réservée D2 + // Zone Réservée G2 - fputs ($this->file, substr(" ",0,2)); - fputs ($this->file, "E"); - fputs ($this->file, substr(" ",0,5)); - - // Code Guichet D3 + fputs ($this->file, substr(" ",0,5)); - fputs ($this->file, $this->emetteur_code_guichet); + fputs ($this->file, "\n"); + } - // Numero de compte D4 + /** + * + * + */ + function EnregEmetteur() + { + fputs ($this->file, "03"); + fputs ($this->file, "08"); // Prélèvement ordinaire - fputs ($this->file, substr("000000000000000".$this->emetteur_numero_compte, -11)); + fputs ($this->file, " "); // Zone Réservée B2 - // Zone Réservée E - - fputs ($this->file, substr(" ",0,16)); + fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 - // Zone Réservée F - - fputs ($this->file, substr(" ",0,31)); + // Date d'échéance C1 - // Code établissement + fputs ($this->file, " "); + fputs ($this->file, strftime("%d%m", $this->date_echeance)); + fputs ($this->file, substr(strftime("%y", $this->date_echeance),1)); - fputs ($this->file, $this->emetteur_code_etablissement); + // Raison Sociale C2 - // Zone Réservée G - - fputs ($this->file, substr(" ",0,5)); + fputs ($this->file, substr($this->raison_sociale. " ",0,24)); - fputs ($this->file, "\n"); + // Reference de la remise créancier D1 sur 7 caractéres - } + fputs ($this->file, substr($this->reference_remise. " ",0,7)); - /* - * Pied de page - * - */ + // Zone Réservée D1-2 + fputs ($this->file, substr(" ",0,17)); - function EnregTotal($total) - { - fputs ($this->file, "08"); - fputs ($this->file, "08"); // Prélèvement ordinaire + // Zone Réservée D2 - fputs ($this->file, " "); // Zone Réservée B2 + fputs ($this->file, substr(" ",0,2)); + fputs ($this->file, "E"); + fputs ($this->file, substr(" ",0,5)); - fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 + // Code Guichet D3 - // Réservé C1 + fputs ($this->file, $this->emetteur_code_guichet); - fputs ($this->file, substr(" ",0,12)); + // Numero de compte D4 - - // Raison Sociale C2 + fputs ($this->file, substr("000000000000000".$this->emetteur_numero_compte, -11)); - fputs ($this->file, substr(" ",0,24)); + // Zone Réservée E - // D1 + fputs ($this->file, substr(" ",0,16)); - fputs ($this->file, substr(" ",0,24)); + // Zone Réservée F - // Zone Réservée D2 + fputs ($this->file, substr(" ",0,31)); - fputs ($this->file, substr(" ",0,8)); - - // Code Guichet D3 + // Code établissement - fputs ($this->file, substr(" ",0,5)); + fputs ($this->file, $this->emetteur_code_etablissement); - // Numero de compte D4 + // Zone Réservée G - fputs ($this->file, substr(" ",0,11)); - - // Zone E Montant - - $montant = ($total * 100); + fputs ($this->file, substr(" ",0,5)); - fputs ($this->file, substr("000000000000000".$montant, -16)); + fputs ($this->file, "\n"); - // Zone Réservée F - - fputs ($this->file, substr(" ",0,31)); + } - // Code établissement + /** + * Pied de page + * + */ + function EnregTotal($total) + { + fputs ($this->file, "08"); + fputs ($this->file, "08"); // Prélèvement ordinaire - fputs ($this->file, substr(" ",0,5)); + fputs ($this->file, " "); // Zone Réservée B2 - // Zone Réservée F - - fputs ($this->file, substr(" ",0,5)); + fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3 - fputs ($this->file, "\n"); - } + // Réservé C1 + + fputs ($this->file, substr(" ",0,12)); + + + // Raison Sociale C2 + + fputs ($this->file, substr(" ",0,24)); + + // D1 + + fputs ($this->file, substr(" ",0,24)); + + // Zone Réservée D2 + + fputs ($this->file, substr(" ",0,8)); + + // Code Guichet D3 + + fputs ($this->file, substr(" ",0,5)); + + // Numero de compte D4 + + fputs ($this->file, substr(" ",0,11)); + + // Zone E Montant + + $montant = ($total * 100); + + fputs ($this->file, substr("000000000000000".$montant, -16)); + + // Zone Réservée F + + fputs ($this->file, substr(" ",0,31)); + + // Code établissement + + fputs ($this->file, substr(" ",0,5)); + + // Zone Réservée F + + fputs ($this->file, substr(" ",0,5)); + + fputs ($this->file, "\n"); + } } + ?> diff --git a/htdocs/compta/prelevement/bon.php b/htdocs/compta/prelevement/bon.php index 6837a8df079..aa0b03a9127 100644 --- a/htdocs/compta/prelevement/bon.php +++ b/htdocs/compta/prelevement/bon.php @@ -22,10 +22,10 @@ */ /** - \file htdocs/compta/prelevement/bon.php - \ingroup prelevement - \brief Fiche aperçu du bon de prelevement - \version $Revision$ + \file htdocs/compta/prelevement/bon.php + \ingroup prelevement + \brief Fiche aperçu du bon de prelevement + \version $Revision$ */ require("./pre.inc.php"); @@ -45,13 +45,16 @@ $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche.php?id='.$_GET["id"]; $head[$h][1] = $langs->trans("Card"); $h++; -$head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Bon"); -$hselected = $h; -$h++; +if ($conf->use_preview_tabs) +{ + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; + $head[$h][1] = $langs->trans("Preview"); + $hselected = $h; + $h++; +} $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Lignes"); +$head[$h][1] = $langs->trans("Lines"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/factures.php?id='.$_GET["id"]; diff --git a/htdocs/compta/prelevement/bons.php b/htdocs/compta/prelevement/bons.php index f75a202e160..5436a6bb0f3 100644 --- a/htdocs/compta/prelevement/bons.php +++ b/htdocs/compta/prelevement/bons.php @@ -81,7 +81,7 @@ if ($result) print ''; print ''; - print_liste_field_titre($langs->trans("Receipt"),"bons.php","p.ref",'','','class="liste_titre"'); + print_liste_field_titre($langs->trans("WithdrawalReceipt"),"bons.php","p.ref",'','','class="liste_titre"'); print_liste_field_titre($langs->trans("Date"),"bons.php","p.datec","","",'class="liste_titre" align="center"'); print ''; print ''; diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php index c1ba7888a16..20044688873 100644 --- a/htdocs/compta/prelevement/create.php +++ b/htdocs/compta/prelevement/create.php @@ -20,21 +20,26 @@ */ /** - \file htdocs/compta/prelevement/create.php - \brief Prelevement - \version $Revision$ + \file htdocs/compta/prelevement/create.php + \brief Prelevement + \version $Revision$ */ require("./pre.inc.php"); -require_once DOL_DOCUMENT_ROOT."/includes/modules/modPrelevement.class.php"; +require_once(DOL_DOCUMENT_ROOT."/includes/modules/modPrelevement.class.php"); if (!$user->rights->prelevement->bons->creer) accessforbidden(); + +/* + * Actions + */ + if ($_GET["action"] == 'create') { - $bprev = new BonPrelevement($db); - $bprev->create($_GET["banque"],$_GET["guichet"]); + $bprev = new BonPrelevement($db); + $result=$bprev->create($_GET["banque"],$_GET["guichet"]); } @@ -49,42 +54,60 @@ dolibarr_fiche_head($head, $hselected, $langs->trans("StandingOrders")); $bprev = new BonPrelevement($db); -print '
'.$langs->trans("Amount").'
'; +$nb=$bprev->NbFactureAPrelever(); +$nb1=$bprev->NbFactureAPrelever(1); +$nb11=$bprev->NbFactureAPrelever(1,1); + +print '
'; print ''; print ''; + print ''; print '
Nb de facture à prélever :'; -print $bprev->NbFactureAPrelever(); +print $nb; print 'Notre banque :'; -print $bprev->NbFactureAPrelever(1); +print $nb1; print 'Notre agence :'; -print $bprev->NbFactureAPrelever(1,1); +print $nb11; print '
Somme à prélever'; print price($bprev->SommeAPrelever()); -print '
'; +print ''; +print ' '; + +print ''; print ''; -print "
\n"; +if ($nb) +{ + print "
\n"; + + if ($nb) print ''.$langs->trans("Create")."\n"; + if ($nb1) print ''.$langs->trans("CreateGuichet")."\n"; + if ($nb11) print ''.$langs->trans("CreateBanque")."\n"; + + print "
\n"; +} +else +{ + print "Aucune facture en mode de paiement 'Prélevement' n'a de demande de prélèvements en attente.
"; +} +print '
'; -print ''.$langs->trans("CreateGuichet")."\n"; -print ''.$langs->trans("CreateBanque")."\n"; -print ''.$langs->trans("Create")."\n"; - -print "

\n"; - /* - * Mode Liste + * Liste des derniers bons * */ +$limit=5; + $sql = "SELECT p.rowid, p.ref, p.amount,".$db->pdate("p.datec")." as datec"; -$sql .= ", p.statut"; -$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; - -$sql .= " ORDER BY datec DESC LIMIT 2"; - +$sql.= ", p.statut"; +$sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; +$sql.= " ORDER BY datec DESC"; +$sql.=$db->plimit($limit); + $result = $db->query($sql); if ($result) { @@ -93,13 +116,13 @@ if ($result) print"\n\n"; print ''; - print ''; + print ''; print ''; print ''; $var=True; - while ($i < min($num,$conf->liste_limit)) + while ($i < min($num,$limit)) { $obj = $db->fetch_object($result); $var=!$var; @@ -125,7 +148,7 @@ else /* - * Factures + * Factures en attente de prélèvement * */ $sql = "SELECT f.facnumber, f.rowid, s.nom, s.idp"; @@ -155,9 +178,9 @@ if ( $db->query($sql) ) $obj = $db->fetch_object(); $var=!$var; print ''; - print ''; + print ''.img_file().' '.$obj->facnumber.''; + print ''; + print ''; $i++; } @@ -171,5 +194,5 @@ else } -llxFooter(); +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index d5c00dbee77..6b9c1381167 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -69,17 +69,14 @@ $sql .= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s"; $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; $sql .= " WHERE s.idp = f.fk_soc"; $sql .= " AND pfd.traite = 0 AND pfd.fk_facture = f.rowid"; - if (strlen(trim($_GET["search_societe"]))) { $sql .= " AND s.nom LIKE '%".$_GET["search_societe"]."%'"; } - if ($socidp) { $sql .= " AND f.fk_soc = $socidp"; } - $sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit+1, $offset); if ( $db->query($sql) ) @@ -92,15 +89,13 @@ if ( $db->query($sql) ) print '
Derniers Bons
'.$langs->trans("LastWithdrawalReceipts",$limit).''.$langs->trans("Amount").'
'; - print ''.img_file().' '; - print ''.$obj->facnumber.''.$obj->nom.'
'.img_object($langs->trans("ShowCompany"),'company').' '.$obj->nom.'
'; print ''; print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; print ''; @@ -113,17 +108,24 @@ if ( $db->query($sql) ) { $obj = $db->fetch_object(); $var=!$var; - print ''; - print ''; - print ''; + print ''; + + // Ref facture + print ''; + + print ''; + + print ''; + if (!array_key_exists($obj->fk_user_demande,$users)) { $users[$obj->fk_user_demande] = new User($db, $obj->fk_user_demande); $users[$obj->fk_user_demande]->fetch(); } - print ''; + + // User + print ''; + print ''; $i++; } diff --git a/htdocs/compta/prelevement/factures.php b/htdocs/compta/prelevement/factures.php index 45e1eea64d9..a677ce1ba41 100644 --- a/htdocs/compta/prelevement/factures.php +++ b/htdocs/compta/prelevement/factures.php @@ -18,7 +18,6 @@ * * $Id$ * $Source$ - * */ /** @@ -29,38 +28,41 @@ */ require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"); +require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); -require_once DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"; -require_once DOL_DOCUMENT_ROOT."/paiement.class.php"; -require_once DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"; - -/* - * Sécurité accés client - */ +// Sécurité accés client if ($user->societe_id > 0) accessforbidden(); llxHeader('','Bon de prélèvement'); $h = 0; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Fiche"); +$head[$h][1] = $langs->trans("Card"); $h++; +if ($conf->use_preview_tabs) +{ + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; + $head[$h][1] = $langs->trans("Preview"); + $h++; +} + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Lignes"); +$head[$h][1] = $langs->trans("Lines"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/factures.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Factures"); +$head[$h][1] = $langs->trans("Bills"); $hselected = $h; $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-rejet.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Rejets"); +$head[$h][1] = $langs->trans("Rejects"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-stat.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Statistiques"); +$head[$h][1] = $langs->trans("Statistics"); $h++; @@ -131,9 +133,9 @@ if ($result) print"\n\n"; print '
'.$langs->trans("Bill").''.$langs->trans("Company").''.$langs->trans("Date").''.$langs->trans("Author").''.$langs->trans("Date").''.$langs->trans("Author").'
-'; - print ''; - print '
'; - print ''.img_file().' '; - print ''.$obj->facnumber.''.$obj->nom.''.strftime("%d %m %Y", $obj->date_demande).'
'.img_file().' '.$obj->facnumber.''.img_object($langs->trans("ShowCompany"),'company').' '.$obj->nom.''.dolibarr_print_date($obj->date_demande).''.$users[$obj->fk_user_demande]->fullname.''.img_object($langs->trans("ShowUser"),'user').' '.$users[$obj->fk_user_demande]->code.'
'; print ''; - print_liste_field_titre("Facture","factures.php","p.ref",'',$urladd,'class="liste_titre"'); - print_liste_field_titre("Société","factures.php","s.nom",'',$urladd,'class="liste_titre"'); - print_liste_field_titre("Montant","factures.php","f.total_ttc","",$urladd,'class="liste_titre" align="center"'); + print_liste_field_titre($langs->trans("Bill"),"factures.php","p.ref",'',$urladd,'class="liste_titre"'); + print_liste_field_titre($langs->trans("Company"),"factures.php","s.nom",'',$urladd,'class="liste_titre"'); + print_liste_field_titre($langs->trans("Amount"),"factures.php","f.total_ttc","",$urladd,'class="liste_titre" align="center"'); print ''; $var=True; @@ -202,5 +204,5 @@ else $db->close(); -llxFooter("Dernière modification $Date$ révision $Revision$"); +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/compta/prelevement/fiche-rejet.php b/htdocs/compta/prelevement/fiche-rejet.php index 73a71a4e801..268f8bee0ce 100644 --- a/htdocs/compta/prelevement/fiche-rejet.php +++ b/htdocs/compta/prelevement/fiche-rejet.php @@ -1,5 +1,6 @@ + * Copyright (C) 2005 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,42 +18,44 @@ * * $Id$ * $Source$ - * */ + require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"); +require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); -require_once DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"; -require_once DOL_DOCUMENT_ROOT."/paiement.class.php"; -require_once DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"; - -/* - * Sécurité accés client - */ +// Sécurité accés client if ($user->societe_id > 0) accessforbidden(); llxHeader('','Bon de prélèvement - Rejet'); $h = 0; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Fiche"); +$head[$h][1] = $langs->trans("Card"); $h++; +if ($conf->use_preview_tabs) +{ + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; + $head[$h][1] = $langs->trans("Preview"); + $h++; +} + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Lignes"); +$head[$h][1] = $langs->trans("Lines"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/factures.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Factures"); +$head[$h][1] = $langs->trans("Bills"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-rejet.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Rejets"); +$head[$h][1] = $langs->trans("Rejects"); $hselected = $h; $h++; - $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-stat.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Statistiques"); +$head[$h][1] = $langs->trans("Statistics"); $h++; $prev_id = $_GET["id"]; @@ -149,5 +152,5 @@ else $db->close(); -llxFooter("Dernière modification $Date$ révision $Revision$"); +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/compta/prelevement/fiche-stat.php b/htdocs/compta/prelevement/fiche-stat.php index e60c4f5a5c9..56e6e033fd5 100644 --- a/htdocs/compta/prelevement/fiche-stat.php +++ b/htdocs/compta/prelevement/fiche-stat.php @@ -1,5 +1,6 @@ + * Copyright (C) 2005 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,36 +18,41 @@ * * $Id$ * $Source$ - * */ + require("./pre.inc.php"); -/* - * Sécurité accés client - */ +// Sécurité accés client if ($user->societe_id > 0) accessforbidden(); llxHeader('','Statistique Bon de prélèvement'); $h = 0; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Fiche"); +$head[$h][1] = $langs->trans("Card"); $h++; +if ($conf->use_preview_tabs) +{ + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; + $head[$h][1] = $langs->trans("Preview"); + $h++; +} + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Lignes"); +$head[$h][1] = $langs->trans("Lines"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/factures.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Factures"); +$head[$h][1] = $langs->trans("Bills"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-rejet.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Rejets"); +$head[$h][1] = $langs->trans("Rejects"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-stat.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Statistiques"); +$head[$h][1] = $langs->trans("Statistics"); $hselected = $h; $h++; diff --git a/htdocs/compta/prelevement/fiche.php b/htdocs/compta/prelevement/fiche.php index fa4eb0a40e1..9751f873d6f 100644 --- a/htdocs/compta/prelevement/fiche.php +++ b/htdocs/compta/prelevement/fiche.php @@ -22,10 +22,10 @@ */ /** - \file htdocs/compta/prelevement/fiche.php - \ingroup prelevement - \brief Fiche prelevement - \version $Revision$ + \file htdocs/compta/prelevement/fiche.php + \ingroup prelevement + \brief Fiche prelevement + \version $Revision$ */ require("./pre.inc.php"); @@ -56,7 +56,7 @@ if ($_POST["action"] == 'infotrans') if ($_FILES['userfile']['name'] && basename($_FILES['userfile']['name'],".ps") == $bon->ref) { - $dir = DOL_DATA_ROOT.'/prelevement/bon/'; + $dir = $conf->prelevement->dir_output.'/bon/'; if (doliMoveFileUpload($_FILES['userfile']['tmp_name'], $dir . "/" . $_FILES['userfile']['name'])) { @@ -99,12 +99,15 @@ $head[$h][1] = $langs->trans("Card"); $hselected = $h; $h++; -$head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Bon"); -$h++; +if ($conf->use_preview_tabs) +{ + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; + $head[$h][1] = $langs->trans("Preview"); + $h++; +} $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Lignes"); +$head[$h][1] = $langs->trans("Lines"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/factures.php?id='.$_GET["id"]; @@ -112,7 +115,7 @@ $head[$h][1] = $langs->trans("Bills"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-rejet.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Rejets"); +$head[$h][1] = $langs->trans("Rejects"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-stat.php?id='.$_GET["id"]; diff --git a/htdocs/compta/prelevement/index.php b/htdocs/compta/prelevement/index.php index 37e3320dfca..860789af161 100644 --- a/htdocs/compta/prelevement/index.php +++ b/htdocs/compta/prelevement/index.php @@ -84,7 +84,7 @@ if ($result) print"\n\n"; print '
 
'; - print ''; + print ''; print ''; print ''; @@ -99,9 +99,9 @@ if ($result) print ''.$obj->ref."\n"; - print '\n"; + print '\n"; - print '\n"; + print '\n"; print "\n"; $i++; @@ -147,9 +147,9 @@ if ( $db->query($sql) ) $obj = $db->fetch_object(); $var=!$var; print ''; - print ''; + print ''.img_file().' '.$obj->facnumber.''; + print ''; + print ''; $i++; } diff --git a/htdocs/compta/prelevement/ligne.php b/htdocs/compta/prelevement/ligne.php index 9649646408f..6cbd1f14add 100644 --- a/htdocs/compta/prelevement/ligne.php +++ b/htdocs/compta/prelevement/ligne.php @@ -17,19 +17,17 @@ * * $Id$ * $Source$ - * */ + require("./pre.inc.php"); -require_once DOL_DOCUMENT_ROOT."/compta/prelevement/ligne-prelevement.class.php"; -require_once DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"; -require_once DOL_DOCUMENT_ROOT."/paiement.class.php"; -require_once DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"; +require_once(DOL_DOCUMENT_ROOT."/compta/prelevement/ligne-prelevement.class.php"); +require_once(DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"); +require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); -/* - * Sécurité accés client - */ +// Sécurité accés client if ($user->societe_id > 0) accessforbidden(); + if ($_POST["action"] == 'confirm_rejet') { if ( $_POST["confirm"] == 'yes') @@ -285,5 +283,5 @@ if ($_GET["id"]) print ""; } -llxFooter("Dernière modification $Date$ révision $Revision$"); +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/compta/prelevement/lignes.php b/htdocs/compta/prelevement/lignes.php index 47a70e11ba6..2651ada8ecf 100644 --- a/htdocs/compta/prelevement/lignes.php +++ b/htdocs/compta/prelevement/lignes.php @@ -1,5 +1,6 @@ + * Copyright (C) 2005 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,41 +18,44 @@ * * $Id$ * $Source$ - * */ + require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"); +require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); -require_once DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"; -require_once DOL_DOCUMENT_ROOT."/paiement.class.php"; -require_once DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"; - -/* - * Sécurité accés client - */ +// Sécurité accés client if ($user->societe_id > 0) accessforbidden(); llxHeader('','Bon de prélèvement'); $h = 0; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Fiche"); +$head[$h][1] = $langs->trans("Card"); $h++; +if ($conf->use_preview_tabs) +{ + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$_GET["id"]; + $head[$h][1] = $langs->trans("Preview"); + $h++; +} + $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Lignes"); +$head[$h][1] = $langs->trans("Lines"); $hselected = $h; $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/factures.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Factures"); +$head[$h][1] = $langs->trans("Bills"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-rejet.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Rejets"); +$head[$h][1] = $langs->trans("Rejects"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-stat.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Statistiques"); +$head[$h][1] = $langs->trans("Statistics"); $h++; $prev_id = $_GET["id"]; @@ -192,5 +196,5 @@ else $db->close(); -llxFooter("Dernière modification $Date$ révision $Revision$"); +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/compta/prelevement/liste.php b/htdocs/compta/prelevement/liste.php index 2f32a400828..3973a5cca11 100644 --- a/htdocs/compta/prelevement/liste.php +++ b/htdocs/compta/prelevement/liste.php @@ -103,7 +103,7 @@ if ($result) print ''; print ''; - print_liste_field_titre($langs->trans("Receipt"),"liste.php","p.ref"); + print_liste_field_titre($langs->trans("WithdrawalReceipt"),"liste.php","p.ref"); print_liste_field_titre($langs->trans("Company"),"liste.php","s.nom"); print_liste_field_titre($langs->trans("Date"),"liste.php","p.datec","","",'align="center"'); print_liste_field_titre($langs->trans("Amount"),"liste.php","pl.amount"); diff --git a/htdocs/compta/prelevement/liste_factures.php b/htdocs/compta/prelevement/liste_factures.php index df45a94e68b..f76edc7518d 100644 --- a/htdocs/compta/prelevement/liste_factures.php +++ b/htdocs/compta/prelevement/liste_factures.php @@ -28,16 +28,13 @@ */ require("./pre.inc.php"); - require_once(DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"); require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); -require_once(DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"); -/* - * Sécurité accés client - */ +// Sécurité accés client if ($user->societe_id > 0) accessforbidden(); + llxHeader('','Bon de prélèvement'); $page = $_GET["page"]; @@ -99,7 +96,7 @@ if ($result) print_liste_field_titre($langs->trans("Bill"),"liste_factures.php","f.facnumber",'',$urladd); print_liste_field_titre($langs->trans("Company"),"liste_factures.php","s.nom",'',$urladd); print_liste_field_titre($langs->trans("Amount"),"liste_factures.php","f.total_ttc","",$urladd,'align="right"'); - print_liste_field_titre($langs->trans("Receipt"),"liste_factures.php","p.rowid","",$urladd,'align="center"'); + print_liste_field_titre($langs->trans("WithdrawalReceipt"),"liste_factures.php","p.rowid","",$urladd,'align="center"'); print ''; print ''; @@ -113,7 +110,7 @@ if ($result) print "\n"; print ''; - $var=True; + $var=false; $total = 0; @@ -128,7 +125,6 @@ if ($result) print ''; print substr('000000'.$obj->rowid_ligne, -6).''; - print '
'.$langs->trans("Receipt").''.$langs->trans("Date").'
'.$langs->trans("WithdrawalReceiptShort").''.$langs->trans("Date").''.$langs->trans("Amount").'
'.strftime("%d/%m/%Y %H:%M",$obj->datec)."'.dolibarr_print_date($obj->datec,"%d/%m/%Y %H:%M")."'.price($obj->amount)." ".$langs->trans("Currency".$conf->monnaie)."'.price($obj->amount)."
'; - print ''.img_file().' '; - print ''.$obj->facnumber.''.$obj->nom.'
'.img_object($langs->trans("ShowCompany"),'company').' '.$obj->nom.'
'.$langs->trans("Line").'
'; print img_object($langs->trans("ShowBill"),"bill"); print ' '; diff --git a/htdocs/compta/prelevement/pre.inc.php b/htdocs/compta/prelevement/pre.inc.php index 5e788a4b020..29e9bbffd00 100644 --- a/htdocs/compta/prelevement/pre.inc.php +++ b/htdocs/compta/prelevement/pre.inc.php @@ -61,7 +61,7 @@ function llxHeader($head = "", $title="", $help_url='') $menu->add_submenu(DOL_URL_ROOT."/compta/prelevement/rejets.php",$langs->trans("Rejects")); $menu->add_submenu(DOL_URL_ROOT."/compta/prelevement/stats.php",$langs->trans("Statistics")); - $menu->add_submenu(DOL_URL_ROOT."/compta/prelevement/config.php",$langs->trans("Config")); + $menu->add_submenu(DOL_URL_ROOT."/compta/prelevement/config.php",$langs->trans("Setup")); $menu->add(DOL_URL_ROOT."/compta/prelevement/demandes.php",$langs->trans("Demandes")); $menu->add_submenu(DOL_URL_ROOT."/compta/prelevement/demandes.php",$langs->trans("StandingOrderToProcess")); diff --git a/htdocs/compta/prelevement/rejet-prelevement.class.php b/htdocs/compta/prelevement/rejet-prelevement.class.php index 0d0c80329e9..a6aa26fd87a 100644 --- a/htdocs/compta/prelevement/rejet-prelevement.class.php +++ b/htdocs/compta/prelevement/rejet-prelevement.class.php @@ -157,79 +157,75 @@ class RejetPrelevement } - /** - * - * - * - */ - function _send_email($fac) - { - $userid = 0; - - $sql = "SELECT fk_user_demande"; - $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; - $sql .= " WHERE pfd.fk_prelevement_bons = ".$this->bon_id; - $sql .= " AND pfd.fk_facture = ".$fac->id; - - $result=$this->db->query($sql); - if ($result) - { - $num = $this->db->num_rows(); - if ($num > 0) - { - $row = $this->db->fetch_row(); - $userid = $row[0]; - } - } - else - { - dolibarr_syslog("RejetPrelevement::_send_email Erreur lecture user"); - } - - if ($userid > 0) - { - $emuser = new User($this->db, $userid); - $emuser->fetch(); - - $subject = "Prélèvement rejeté"; - - $soc = new Societe($this->db); - $soc->fetch($fac->socidp); - - $sendto = $emuser->fullname." <".$emuser->email.">"; - $from = $this->user->fullname." <".$this->user->email.">"; - - $message = "Bonjour,\n"; - //$message .= "\nLe prélèvement de la facture ".$fac->ref." pour le compte de la société ".$soc->nom." d'un montant de ".price($fac->total_ttc).' '.$langs->trans("Currency".$conf->monnaie)." a été rejeté par la banque."; - // $langs n'est pas accessible ici !!! - // Inutile de traduire la monnaie si le reste du message n'est pas traduit - // TODO LATER - - $message .= "\nLe prélèvement de la facture ".$fac->ref." pour le compte de la société ".$soc->nom." d'un montant de ".price($fac->total_ttc)." a été rejeté par la banque."; - - $message .= "\n\n--\n".$this->user->fullname; - - $mailfile = new DolibarrMail($subject, - $sendto, - $from, - $message); - - $mailfile->errors_to = $this->user->email; - - if ( $mailfile->sendfile() ) - { - dolibarr_syslog("RejetPrelevement::_send_email email envoyé"); - } - else - { - dolibarr_syslog("RejetPrelevement::_send_email Erreur envoi email"); - } - } - else - { - dolibarr_syslog("RejetPrelevement::_send_email Userid invalide"); - } - } + /** + * \brief Envoi mail + * + */ + function _send_email($fac) + { + $userid = 0; + + $sql = "SELECT fk_user_demande"; + $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; + $sql .= " WHERE pfd.fk_prelevement_bons = ".$this->bon_id; + $sql .= " AND pfd.fk_facture = ".$fac->id; + + $resql=$this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + if ($num > 0) + { + $row = $this->db->fetch_row($resql); + $userid = $row[0]; + } + } + else + { + dolibarr_syslog("RejetPrelevement::_send_email Erreur lecture user"); + } + + if ($userid > 0) + { + $emuser = new User($this->db, $userid); + $emuser->fetch(); + + $soc = new Societe($this->db); + $soc->fetch($fac->socidp); + + require_once(DOL_DOCUMENT_ROOT."/lib/CMailFile.class.php"); + + $subject = "Prélèvement rejeté"; + $sendto = $emuser->fullname." <".$emuser->email.">"; + $from = $this->user->fullname." <".$this->user->email.">"; + + $arr_file = array(); + $arr_mime = array(); + $arr_name = array(); + + $message = "Bonjour,\n"; + $message .= "\nLe prélèvement de la facture ".$fac->ref." pour le compte de la société ".$soc->nom." d'un montant de ".price($fac->total_ttc)." a été rejeté par la banque."; + $message .= "\n\n--\n".$this->user->fullname; + + $mailfile = new CMailFile($subject,$sendto,$from,$message, + $arr_file,$arr_mime,$arr_name); + $mailfile->errors_to = $this->user->email; + + $result=$mailfile->sendfile(); + if ($result) + { + dolibarr_syslog("RejetPrelevement::_send_email email envoyé"); + } + else + { + dolibarr_syslog("RejetPrelevement::_send_email Erreur envoi email"); + } + } + else + { + dolibarr_syslog("RejetPrelevement::_send_email Userid invalide"); + } + } /** diff --git a/htdocs/compta/prelevement/rejets.php b/htdocs/compta/prelevement/rejets.php index e9c8502e814..77fe163f49b 100644 --- a/htdocs/compta/prelevement/rejets.php +++ b/htdocs/compta/prelevement/rejets.php @@ -17,41 +17,37 @@ * * $Id$ * $Source$ - * */ + require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"); +require_once(DOL_DOCUMENT_ROOT."/paiement.class.php"); if (!$user->rights->prelevement->bons->lire) accessforbidden(); -require_once DOL_DOCUMENT_ROOT."/compta/prelevement/rejet-prelevement.class.php"; -require_once DOL_DOCUMENT_ROOT."/paiement.class.php"; -require_once DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"; - -/* - * Sécurité accés client - */ +// Sécurité accés client if ($user->societe_id > 0) accessforbidden(); + llxHeader('','Bon de prélèvement - Rejet'); $h = 0; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Fiche"); +$head[$h][1] = $langs->trans("Card"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/factures.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Factures"); +$head[$h][1] = $langs->trans("Bills"); $h++; $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/rejets.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Rejets"); +$head[$h][1] = $langs->trans("Rejects"); $hselected = $h; $h++; - $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/fiche-stat.php?id='.$_GET["id"]; -$head[$h][1] = $langs->trans("Statistiques"); +$head[$h][1] = $langs->trans("Statistics"); $h++; $prev_id = $_GET["id"]; @@ -72,7 +68,6 @@ $rej = new RejetPrelevement($db, $user); /* * Liste des factures * - * */ $sql = "SELECT pl.rowid, pr.motif, p.ref, pl.statut"; $sql .= " , s.idp, s.nom"; @@ -138,5 +133,5 @@ else $db->close(); -llxFooter("Dernière modification $Date$ révision $Revision$"); +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php index d18f02b494f..20eb6148d51 100644 --- a/htdocs/facture.class.php +++ b/htdocs/facture.class.php @@ -1446,19 +1446,20 @@ class Facture /** - * \brief Créé une demande de prélèvement - * \param user utilisateur créant la demande + * \brief Créé une demande de prélèvement + * \param user Utilisateur créant la demande + * \return int <0 si ko, >0 si ok */ function demande_prelevement($user) { - //dolibarr_syslog("Facture::DemandePrelevement"); + dolibarr_syslog("Facture::demande_prelevement"); $soc = new Societe($this->db); $soc->id = $this->socidp; $soc->rib(); - if ($this->statut > 0 && $this->paye == 0 && $this->mode_reglement == 3) + if ($this->statut > 0 && $this->paye == 0 && $this->mode_reglement_id == 3) { $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."prelevement_facture_demande"; $sql .= " WHERE fk_facture=".$this->id; @@ -1482,28 +1483,32 @@ class Facture if ( $this->db->query( $sql) ) { - return 0; + return 1; } else { + $this->error=$this->db->error(); dolibarr_syslog("Facture::DemandePrelevement Erreur"); return -1; } } else { + $this->error="Une demande existe déjà"; dolibarr_syslog("Facture::DemandePrelevement Impossible de créer une demande, demande déja en cours"); } } else { + $this->error=$this->db->error(); dolibarr_syslog("Facture::DemandePrelevement Erreur -2"); return -2; } } else { - dolibarr_syslog("Facture::DemandePrelevement Impossible de créer une demande, etat facture incompatible"); + $this->error="Etat facture incompatible avec l'action"; + dolibarr_syslog("Facture::DemandePrelevement Etat facture incompatible $this->statut, $this->paye, $this->mode_reglement_id"); return -3; } } diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index 09e5d1ebf85..d3c495b90c8 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -295,27 +295,23 @@ $conf->actionscomm->dir_output=DOL_DATA_ROOT."/action"; /* * Modification de quelques variable de conf en fonction des Constantes */ + +// conf->use_preview_tabs +$conf->use_preview_tabs=1; +if (isset($conf->global->USE_PREVIEW_TABS)) $conf->use_preview_tabs=$conf->global->USE_PREVIEW_TABS; + +// conf->monnaie if (! $conf->global->MAIN_MONNAIE) $conf->global->MAIN_MONNAIE='EUR'; $conf->monnaie=$conf->global->MAIN_MONNAIE; -/* - * Option du module Compta: Defini le mode de calcul des etats comptables (CA,...) - */ +// $conf->compta->mode = Option du module Compta: Defini le mode de calcul des etats comptables (CA,...) $conf->compta->mode = 'RECETTES-DEPENSES'; // Par défaut if (defined('COMPTA_MODE') && COMPTA_MODE) { // Peut etre 'RECETTES-DEPENSES' ou 'CREANCES-DETTES' $conf->compta->mode = COMPTA_MODE; } -/* \todo Ajouter une option Gestion de la TVA dans le module compta qui permet de désactiver la fonction TVA - * (pour particuliers ou libéraux en franchise) - * En attendant, valeur forcée à 1 - */ -$conf->compta->tva=1; - -/* - * Option du module Facture - */ +// $conf->defaulttx if (defined('FACTURE_TVAOPTION') && FACTURE_TVAOPTION == 'franchise') { $conf->defaulttx='0'; // Taux par défaut des factures clients } @@ -323,15 +319,11 @@ else { $conf->defaulttx=''; // Pas de taux par défaut des factures clients, le premier sera pris } -/* - * SIZE_LISTE_LIMIT : constante de taille maximale des listes - */ +// $conf->liste_limit = constante de taille maximale des listes if (! $conf->global->SIZE_LISTE_LIMIT) $conf->global->SIZE_LISTE_LIMIT=20; $conf->liste_limit=$conf->global->SIZE_LISTE_LIMIT; -/* - * MAIN_THEME : theme - */ +// $conf->theme et $conf->css if (! $conf->global->MAIN_THEME) $conf->global->MAIN_THEME="eldy"; $conf->theme=$conf->global->MAIN_THEME; $conf->css = "theme/".$conf->theme."/".$conf->theme.".css"; @@ -349,6 +341,7 @@ if (defined('MAILING_EMAIL_FROM')) } else $conf->mailing->email_from=$conf->email_from; +// $conf->adherent->email_resil, ... if (defined("MAIN_MAIL_RESIL")) { $conf->adherent->email_resil=MAIN_MAIL_RESIL; @@ -382,6 +375,12 @@ if (defined("MAIN_MAIL_NEW_SUBJECT")) $conf->adherent->email_new_subject=MAIN_MAIL_NEW_SUBJECT; } +/* \todo Ajouter une option Gestion de la TVA dans le module compta qui permet de désactiver la fonction TVA + * (pour particuliers ou libéraux en franchise) + * En attendant, valeur forcée à 1 + */ +$conf->compta->tva=1; + // Delai de tolerance des alertes $conf->actions->warning_delay=7*24*60*60; // 1 semaine $conf->commande->traitement->warning_delay=2*24*60*60;