diff --git a/htdocs/boutique/commande/commande.class.php b/htdocs/boutique/commande/commande.class.php index 22af6e33e6a..17ebb53adcb 100644 --- a/htdocs/boutique/commande/commande.class.php +++ b/htdocs/boutique/commande/commande.class.php @@ -20,6 +20,9 @@ * */ +require_once(DOL_DOCUMENT_ROOT ."/address.class.php"); + + class Commande { var $db ; diff --git a/htdocs/compta/facture/facture-rec.class.php b/htdocs/compta/facture/facture-rec.class.php index f9475562ab2..38a94076ba5 100644 --- a/htdocs/compta/facture/facture-rec.class.php +++ b/htdocs/compta/facture/facture-rec.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004 Laurent Destailleur + * Copyright (C) 2004-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 @@ -18,536 +18,519 @@ * * $Id$ * $Source$ - * */ -/*! - \file htdocs/compta/facture/facture-rec.class.php - \ingroup facture - \brief Fichier de la classe des factures recurentes - \version $Revision$ +/** + \file htdocs/compta/facture/facture-rec.class.php + \ingroup facture + \brief Fichier de la classe des factures recurentes + \version $Revision$ */ +require_once(DOL_DOCUMENT_ROOT ."/notify.class.php"); -/*! \class FactureRec + +/** + \class FactureRec \brief Classe de gestion des factures recurrentes */ class FactureRec { - var $id; - var $db; - var $socidp; - var $number; - var $author; - var $date; - var $ref; - var $amount; - var $remise; - var $tva; - var $total; - var $note; - var $db_table; - var $propalid; - var $projetid; + var $id; + var $db; + var $socidp; + var $number; + var $author; + var $date; + var $ref; + var $amount; + var $remise; + var $tva; + var $total; + var $note; + var $db_table; + var $propalid; + var $projetid; - /** - * Initialisation de la class - * - */ - function FactureRec($DB, $facid=0) - { - $this->db = $DB ; - $this->facid = $facid; - } - /** - * Créé la facture - * - * - */ - function create($user) + /** + * Initialisation de la class + * + */ + function FactureRec($DB, $facid=0) { - /* - * - */ - $facsrc = new Facture($this->db); - - if ($facsrc->fetch($this->facid) > 0) - { - /* - * On positionne en mode brouillon la facture - */ - $this->brouillon = 1; - if (! $facsrc->projetid) - { - $facsrc->projetid = "NULL"; - } + $this->db = $DB ; + $this->facid = $facid; + } + /** + * Créé la facture + */ + function create($user) + { + $facsrc = new Facture($this->db); - /* - * - */ - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_rec (titre, fk_soc, datec, amount, remise, remise_percent, note, fk_user_author,fk_projet, fk_cond_reglement) "; - $sql .= " VALUES ('$this->titre', '$facsrc->socidp', now(), '$facsrc->amount', '$facsrc->remise', '$facsrc->remise_percent', '$this->note','$user->id', '$facsrc->projetid', '$facsrc->cond_reglement_id')"; - if ( $this->db->query($sql) ) - { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."facture_rec"); - - /* - * Produits - * - */ - for ($i = 0 ; $i < sizeof($facsrc->lignes) ; $i++) - { - if ($facsrc->lignes[$i]->produit_id > 0) - { - $prod = new Product($this->db); - $prod->fetch($facsrc->lignes[$i]->produit_id); - } + if ($facsrc->fetch($this->facid) > 0) + { + /* + * On positionne en mode brouillon la facture + */ + $this->brouillon = 1; + if (! $facsrc->projetid) + { + $facsrc->projetid = "NULL"; + } - - $result_insert = $this->addline($this->id, - addslashes($facsrc->lignes[$i]->desc), - $facsrc->lignes[$i]->subprice, - $facsrc->lignes[$i]->qty, - $facsrc->lignes[$i]->tva_taux, - $facsrc->lignes[$i]->produit_id, - $facsrc->lignes[$i]->remise_percent); - - - if ( $result_insert < 0) - { - print '
' . $this->db->error() .'
'; - } - } - - return $this->id; - } - else - { - print $this->db->error() . '
'.$sql; - return 0; - } - } - else - { - return -1; - } + $sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_rec (titre, fk_soc, datec, amount, remise, remise_percent, note, fk_user_author,fk_projet, fk_cond_reglement) "; + $sql .= " VALUES ('$this->titre', '$facsrc->socidp', now(), '$facsrc->amount', '$facsrc->remise', '$facsrc->remise_percent', '$this->note','$user->id', '$facsrc->projetid', '$facsrc->cond_reglement_id')"; + if ( $this->db->query($sql) ) + { + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."facture_rec"); + + /* + * Produits + */ + for ($i = 0 ; $i < sizeof($facsrc->lignes) ; $i++) + { + if ($facsrc->lignes[$i]->produit_id > 0) + { + $prod = new Product($this->db); + $prod->fetch($facsrc->lignes[$i]->produit_id); + } + + + $result_insert = $this->addline($this->id, + addslashes($facsrc->lignes[$i]->desc), + $facsrc->lignes[$i]->subprice, + $facsrc->lignes[$i]->qty, + $facsrc->lignes[$i]->tva_taux, + $facsrc->lignes[$i]->produit_id, + $facsrc->lignes[$i]->remise_percent); + + + if ( $result_insert < 0) + { + print '
' . $this->db->error() .'
'; + } + } + + return $this->id; + } + else + { + print $this->db->error() . '
'.$sql; + return 0; + } + } + else + { + return -1; + } } - /** - * Recupére l'objet facture - * - * - */ - function fetch($rowid, $societe_id=0) + /** + * Recupére l'objet facture + */ + function fetch($rowid, $societe_id=0) { - $sql = "SELECT f.fk_soc,f.titre,f.amount,f.tva,f.total,f.total_ttc,f.remise,f.remise_percent,f.fk_projet, c.rowid as crid, c.libelle, c.libelle_facture, f.note, f.fk_user_author"; - $sql .= " FROM ".MAIN_DB_PREFIX."facture_rec as f, ".MAIN_DB_PREFIX."cond_reglement as c"; - $sql .= " WHERE f.rowid=$rowid AND c.rowid = f.fk_cond_reglement"; - - if ($societe_id > 0) - { - $sql .= " AND f.fk_soc = ".$societe_id; - } + $sql = "SELECT f.fk_soc,f.titre,f.amount,f.tva,f.total,f.total_ttc,f.remise,f.remise_percent,f.fk_projet, c.rowid as crid, c.libelle, c.libelle_facture, f.note, f.fk_user_author"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture_rec as f, ".MAIN_DB_PREFIX."cond_reglement as c"; + $sql .= " WHERE f.rowid=$rowid AND c.rowid = f.fk_cond_reglement"; - if ($this->db->query($sql) ) - { - if ($this->db->num_rows()) - { - $obj = $this->db->fetch_object(); - - $this->id = $rowid; - $this->datep = $obj->dp; - $this->titre = $obj->titre; - $this->amount = $obj->amount; - $this->remise = $obj->remise; - $this->total_ht = $obj->total; - $this->total_tva = $obj->tva; - $this->total_ttc = $obj->total_ttc; - $this->paye = $obj->paye; - $this->remise_percent = $obj->remise_percent; - $this->socidp = $obj->fk_soc; - $this->statut = $obj->fk_statut; - $this->date_lim_reglement = $obj->dlr; - $this->cond_reglement_id = $obj->crid; - $this->cond_reglement = $obj->libelle; - $this->cond_reglement_facture = $obj->libelle_facture; - $this->projetid = $obj->fk_projet; - $this->note = stripslashes($obj->note); - $this->user_author = $obj->fk_user_author; - $this->lignes = array(); + if ($societe_id > 0) + { + $sql .= " AND f.fk_soc = ".$societe_id; + } - if ($this->statut == 0) - { - $this->brouillon = 1; - } + if ($this->db->query($sql) ) + { + if ($this->db->num_rows()) + { + $obj = $this->db->fetch_object(); - $this->db->free(); + $this->id = $rowid; + $this->datep = $obj->dp; + $this->titre = $obj->titre; + $this->amount = $obj->amount; + $this->remise = $obj->remise; + $this->total_ht = $obj->total; + $this->total_tva = $obj->tva; + $this->total_ttc = $obj->total_ttc; + $this->paye = $obj->paye; + $this->remise_percent = $obj->remise_percent; + $this->socidp = $obj->fk_soc; + $this->statut = $obj->fk_statut; + $this->date_lim_reglement = $obj->dlr; + $this->cond_reglement_id = $obj->crid; + $this->cond_reglement = $obj->libelle; + $this->cond_reglement_facture = $obj->libelle_facture; + $this->projetid = $obj->fk_projet; + $this->note = stripslashes($obj->note); + $this->user_author = $obj->fk_user_author; + $this->lignes = array(); - /* - * Lignes - */ + if ($this->statut == 0) + { + $this->brouillon = 1; + } - $sql = "SELECT l.fk_product,l.description, l.subprice, l.price, l.qty, l.rowid, l.tva_taux, l.remise_percent"; - $sql .= " FROM ".MAIN_DB_PREFIX."facturedet_rec as l WHERE l.fk_facture = ".$this->id." ORDER BY l.rowid ASC"; - - $result = $this->db->query($sql); - if ($result) - { - $num = $this->db->num_rows(); - $i = 0; $total = 0; - - while ($i < $num) - { - $objp = $this->db->fetch_object($result); - $faclig = new FactureLigne($this->db); - $faclig->produit_id = $objp->fk_product; - $faclig->desc = stripslashes($objp->description); - $faclig->qty = $objp->qty; - $faclig->price = $objp->price; - $faclig->subprice = $objp->subprice; - $faclig->tva_taux = $objp->tva_taux; - $faclig->remise_percent = $objp->remise_percent; - $this->lignes[$i] = $faclig; - $i++; - } - - $this->db->free(); + $this->db->free(); - return 1; - } - else - { - print $this->db->error(); - return -1; - } - } - else - { - print "Error"; - return -2; - } - } - else - { - print $this->db->error(); - return -3; - } - } - /** - * Recupére l'objet client lié à la facture - * - */ - function fetch_client() - { - $client = new Societe($this->db); - $client->fetch($this->socidp); - $this->client = $client; - - } - /** - * Valide la facture - * - * - */ - function valid($userid, $dir) - { - $sql = "UPDATE ".MAIN_DB_PREFIX."facture SET fk_statut = 1, date_valid=now(), fk_user_valid=$userid"; - $sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;"; - - if ($this->db->query($sql) ) - { - return 1; - } - else - { - print $this->db->error() . ' in ' . $sql; - } + /* + * Lignes + */ + + $sql = "SELECT l.fk_product,l.description, l.subprice, l.price, l.qty, l.rowid, l.tva_taux, l.remise_percent"; + $sql .= " FROM ".MAIN_DB_PREFIX."facturedet_rec as l WHERE l.fk_facture = ".$this->id." ORDER BY l.rowid ASC"; + + $result = $this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows(); + $i = 0; $total = 0; + + while ($i < $num) + { + $objp = $this->db->fetch_object($result); + $faclig = new FactureLigne($this->db); + $faclig->produit_id = $objp->fk_product; + $faclig->desc = stripslashes($objp->description); + $faclig->qty = $objp->qty; + $faclig->price = $objp->price; + $faclig->subprice = $objp->subprice; + $faclig->tva_taux = $objp->tva_taux; + $faclig->remise_percent = $objp->remise_percent; + $this->lignes[$i] = $faclig; + $i++; + } + + $this->db->free(); + + return 1; + } + else + { + print $this->db->error(); + return -1; + } + } + else + { + print "Error"; + return -2; + } + } + else + { + print $this->db->error(); + return -3; + } } - /** - * Supprime la facture - * - */ - function delete($rowid) + /** + * Recupére l'objet client lié à la facture + */ + function fetch_client() { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = $rowid;"; - - if ($this->db->query( $sql) ) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."facture_rec WHERE rowid = $rowid"; - - if ($this->db->query( $sql) ) - { - return 1; - } - else - { - print "Err : ".$this->db->error(); - return -1; - } - } - else - { - print "Err : ".$this->db->error(); - return -2; - } + $client = new Societe($this->db); + $client->fetch($this->socidp); + $this->client = $client; + } - /** - * Valide la facture - * - */ - function set_valid($rowid, $user, $soc) + + /** + * Valide la facture + */ + function valid($userid, $dir) { - if ($this->brouillon) - { - $action_notify = 2; // ne pas modifier cette valeur + $sql = "UPDATE ".MAIN_DB_PREFIX."facture SET fk_statut = 1, date_valid=now(), fk_user_valid=$userid"; + $sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;"; - $numfa = facture_get_num($soc); // définit dans includes/modules/facture - - $sql = "UPDATE ".MAIN_DB_PREFIX."facture set facnumber='$numfa', fk_statut = 1, fk_user_valid = $user->id WHERE rowid = $rowid ;"; - $result = $this->db->query( $sql); - - /* - * Notify - * - */ - $forbidden_chars=array("/","\\",":","*","?","\"","<",">","|","[","]",",",";","="); - $facref = str_replace($forbidden_chars,"_",$this->ref); - $filepdf = $conf->facture->dir_output . "/" . $facref . "/" . $facref . ".pdf"; - - - $mesg = "La facture ".$this->ref." a été validée.\n"; - - $notify = New Notify($this->db); - $notify->send($action_notify, $this->socidp, $mesg, "facture", $rowid, $filepdf); - /* - * Update Stats - * - */ - $sql = "SELECT fk_product FROM ".MAIN_DB_PREFIX."facturedet WHERE fk_facture = ".$this->id; - $sql .= " AND fk_product IS NOT NULL"; - - $result = $this->db->query($sql); - - if ($result) - { - $num = $this->db->num_rows(); - $i = 0; - while ($i < $num) - { - $obj = $this->db->fetch_object($result); - - $sql = "UPDATE ".MAIN_DB_PREFIX."product SET nbvente=nbvente+1 WHERE rowid = ".$obj->fk_product; - $db2 = $this->db->dbclone(); - $result = $db2->query($sql); - $i++; - } - } - /* - * Contrats - */ - $contrat = new Contrat($this->db); - $contrat->create_from_facture($this->id, $user, $this->socidp); - - return $result; - } + if ($this->db->query($sql) ) + { + return 1; + } + else + { + print $this->db->error() . ' in ' . $sql; + } } - /** - * Ajoute un produit dans la facture - * - */ - function add_product($idproduct, $qty, $remise_percent) + + /** + * Supprime la facture + */ + function delete($rowid) { - if ($idproduct > 0) - { - $i = sizeof($this->products); - $this->products[$i] = $idproduct; - if (!$qty) - { - $qty = 1 ; - } - $this->products_qty[$i] = $qty; - $this->products_remise_percent[$i] = $remise_percent; - } + $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = $rowid;"; + + if ($this->db->query( $sql) ) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."facture_rec WHERE rowid = $rowid"; + + if ($this->db->query( $sql) ) + { + return 1; + } + else + { + print "Err : ".$this->db->error(); + return -1; + } + } + else + { + print "Err : ".$this->db->error(); + return -2; + } } - /** - * Ajoute une ligne de facture - * - */ - function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0) + + /** + * Valide la facture + */ + function set_valid($rowid, $user, $soc) { - if ($this->brouillon) - { - if (strlen(trim($qty))==0) - { - $qty=1; - } - $remise = 0; - $price = round(ereg_replace(",",".",$pu), 2); - $subprice = $price; - if (trim(strlen($remise_percent)) > 0) - { - $remise = round(($pu * $remise_percent / 100), 2); - $price = $pu - $remise; - } + if ($this->brouillon) + { + $action_notify = 2; // ne pas modifier cette valeur - $sql = "INSERT INTO ".MAIN_DB_PREFIX."facturedet_rec (fk_facture,description,price,qty,tva_taux, fk_product, remise_percent, subprice, remise)"; - $sql .= " VALUES ('$facid', '$desc', '$price', '$qty', '$txtva', '$fk_product', '$remise_percent', '$subprice', '$remise') ;"; + $numfa = facture_get_num($soc); // définit dans includes/modules/facture - if ( $this->db->query( $sql) ) - { - $this->updateprice($facid); - return 1; - } - else - { - print "$sql"; - return -1; - } - } + $sql = "UPDATE ".MAIN_DB_PREFIX."facture set facnumber='$numfa', fk_statut = 1, fk_user_valid = $user->id WHERE rowid = $rowid ;"; + $result = $this->db->query( $sql); + + /* + * Notify + */ + $forbidden_chars=array("/","\\",":","*","?","\"","<",">","|","[","]",",",";","="); + $facref = str_replace($forbidden_chars,"_",$this->ref); + $filepdf = $conf->facture->dir_output . "/" . $facref . "/" . $facref . ".pdf"; + + + $mesg = "La facture ".$this->ref." a été validée.\n"; + + $notify = New Notify($this->db); + $notify->send($action_notify, $this->socidp, $mesg, "facture", $rowid, $filepdf); + /* + * Update Stats + * + */ + $sql = "SELECT fk_product FROM ".MAIN_DB_PREFIX."facturedet WHERE fk_facture = ".$this->id; + $sql .= " AND fk_product IS NOT NULL"; + + $result = $this->db->query($sql); + + if ($result) + { + $num = $this->db->num_rows(); + $i = 0; + while ($i < $num) + { + $obj = $this->db->fetch_object($result); + + $sql = "UPDATE ".MAIN_DB_PREFIX."product SET nbvente=nbvente+1 WHERE rowid = ".$obj->fk_product; + $db2 = $this->db->dbclone(); + $result = $db2->query($sql); + $i++; + } + } + /* + * Contrats + */ + $contrat = new Contrat($this->db); + $contrat->create_from_facture($this->id, $user, $this->socidp); + + return $result; + } } - /** - * Mets à jour une ligne de facture - * - */ - function updateline($rowid, $desc, $pu, $qty, $remise_percent=0) + + /** + * Ajoute un produit dans la facture + */ + function add_product($idproduct, $qty, $remise_percent) { - if ($this->brouillon) - { - if (strlen(trim($qty))==0) - { - $qty=1; - } - $remise = 0; - $price = round(ereg_replace(",",".",$pu), 2); - $subprice = $price; - if (trim(strlen($remise_percent)) > 0) - { - $remise = round(($pu * $remise_percent / 100), 2); - $price = $pu - $remise; - } - else - { - $remise_percent=0; - } - - $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set description='$desc',price=$price,subprice=$subprice,remise=$remise,remise_percent=$remise_percent,qty=$qty WHERE rowid = $rowid ;"; - $result = $this->db->query( $sql); - - $this->updateprice($this->id); - } + if ($idproduct > 0) + { + $i = sizeof($this->products); + $this->products[$i] = $idproduct; + if (!$qty) + { + $qty = 1 ; + } + $this->products_qty[$i] = $qty; + $this->products_remise_percent[$i] = $remise_percent; + } } - /** - * Supprime une ligne - * - */ - function deleteline($rowid) + + /** + * Ajoute une ligne de facture + */ + function addline($facid, $desc, $pu, $qty, $txtva, $fk_product='NULL', $remise_percent=0) { - if ($this->brouillon) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE rowid = $rowid;"; - $result = $this->db->query( $sql); + if ($this->brouillon) + { + if (strlen(trim($qty))==0) + { + $qty=1; + } + $remise = 0; + $price = round(ereg_replace(",",".",$pu), 2); + $subprice = $price; + if (trim(strlen($remise_percent)) > 0) + { + $remise = round(($pu * $remise_percent / 100), 2); + $price = $pu - $remise; + } - $this->updateprice($this->id); - } + $sql = "INSERT INTO ".MAIN_DB_PREFIX."facturedet_rec (fk_facture,description,price,qty,tva_taux, fk_product, remise_percent, subprice, remise)"; + $sql .= " VALUES ('$facid', '$desc', '$price', '$qty', '$txtva', '$fk_product', '$remise_percent', '$subprice', '$remise') ;"; + + if ( $this->db->query( $sql) ) + { + $this->updateprice($facid); + return 1; + } + else + { + print "$sql"; + return -1; + } + } } - /** - * Mise à jour des sommes de la facture - * - */ - function updateprice($facid) + + /** + * Mets à jour une ligne de facture + */ + function updateline($rowid, $desc, $pu, $qty, $remise_percent=0) { - include_once DOL_DOCUMENT_ROOT . "/lib/price.lib.php"; - $err=0; - $sql = "SELECT price, qty, tva_taux FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = $facid;"; - - $result = $this->db->query($sql); + if ($this->brouillon) + { + if (strlen(trim($qty))==0) + { + $qty=1; + } + $remise = 0; + $price = round(ereg_replace(",",".",$pu), 2); + $subprice = $price; + if (trim(strlen($remise_percent)) > 0) + { + $remise = round(($pu * $remise_percent / 100), 2); + $price = $pu - $remise; + } + else + { + $remise_percent=0; + } - if ($result) - { - $num = $this->db->num_rows(); - $i = 0; - while ($i < $num) - { - $obj = $this->db->fetch_object($result); + $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set description='$desc',price=$price,subprice=$subprice,remise=$remise,remise_percent=$remise_percent,qty=$qty WHERE rowid = $rowid ;"; + $result = $this->db->query( $sql); - $products[$i][0] = $obj->price; - $products[$i][1] = $obj->qty; - $products[$i][2] = $obj->tva_taux; - - $i++; - } - - $this->db->free(); - /* - * - */ - $calculs = calcul_price($products, $this->remise_percent); - - $this->total_remise = $calculs[3]; - $this->amount_ht = $calculs[4]; - $this->total_ht = $calculs[0]; - $this->total_tva = $calculs[1]; - $this->total_ttc = $calculs[2]; - $tvas = $calculs[5]; - /* - * - */ - - $sql = "UPDATE ".MAIN_DB_PREFIX."facture_rec SET amount = $this->amount_ht, remise=$this->total_remise, total=$this->total_ht, tva=$this->total_tva, total_ttc=$this->total_ttc"; - $sql .= " WHERE rowid = $facid ;"; - - if ( $this->db->query($sql) ) - { - if ($err == 0) - { - return 1; - } - else - { - return -3; - } - } - else - { - print "$sql
"; - return -2; - } - } - else - { - print "Error"; - return -1; - } + $this->updateprice($this->id); + } } - /** - * Applique une remise - * - */ - function set_remise($user, $remise) + + /** + * Supprime une ligne + */ + function deleteline($rowid) { - if ($user->rights->facture->creer) - { + if ($this->brouillon) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE rowid = $rowid;"; + $result = $this->db->query( $sql); - $this->remise_percent = $remise ; + $this->updateprice($this->id); + } + } + + /** + * Mise à jour des sommes de la facture + */ + function updateprice($facid) + { + include_once DOL_DOCUMENT_ROOT . "/lib/price.lib.php"; + $err=0; + $sql = "SELECT price, qty, tva_taux FROM ".MAIN_DB_PREFIX."facturedet_rec WHERE fk_facture = $facid;"; + + $result = $this->db->query($sql); + + if ($result) + { + $num = $this->db->num_rows(); + $i = 0; + while ($i < $num) + { + $obj = $this->db->fetch_object($result); + + $products[$i][0] = $obj->price; + $products[$i][1] = $obj->qty; + $products[$i][2] = $obj->tva_taux; + + $i++; + } + + $this->db->free(); + + $calculs = calcul_price($products, $this->remise_percent); + + $this->total_remise = $calculs[3]; + $this->amount_ht = $calculs[4]; + $this->total_ht = $calculs[0]; + $this->total_tva = $calculs[1]; + $this->total_ttc = $calculs[2]; + $tvas = $calculs[5]; + + $sql = "UPDATE ".MAIN_DB_PREFIX."facture_rec SET amount = $this->amount_ht, remise=$this->total_remise, total=$this->total_ht, tva=$this->total_tva, total_ttc=$this->total_ttc"; + $sql .= " WHERE rowid = $facid ;"; + + if ( $this->db->query($sql) ) + { + if ($err == 0) + { + return 1; + } + else + { + return -3; + } + } + else + { + print "$sql
"; + return -2; + } + } + else + { + print "Error"; + return -1; + } + } + + /** + * Applique une remise + */ + function set_remise($user, $remise) + { + if ($user->rights->facture->creer) + { + + $this->remise_percent = $remise ; + + $sql = "UPDATE ".MAIN_DB_PREFIX."facture SET remise_percent = ".ereg_replace(",",".",$remise); + $sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;"; + + if ($this->db->query($sql) ) + { + $this->updateprice($this->id); + return 1; + } + else + { + print $this->db->error() . ' in ' . $sql; + return -1; + } + } + } - $sql = "UPDATE ".MAIN_DB_PREFIX."facture SET remise_percent = ".ereg_replace(",",".",$remise); - $sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;"; - - if ($this->db->query($sql) ) - { - $this->updateprice($this->id); - return 1; - } - else - { - print $this->db->error() . ' in ' . $sql; - return 0; - } - } - } - } + ?> diff --git a/htdocs/compta/facture/impayees.php b/htdocs/compta/facture/impayees.php index 08a9ff0d790..067acff7ab7 100644 --- a/htdocs/compta/facture/impayees.php +++ b/htdocs/compta/facture/impayees.php @@ -19,252 +19,237 @@ * * $Id$ * $Source$ - * */ /** - \file htdocs/compta/facture.php - \ingroup facture - \brief Page de création d'une facture - \version $Revision$ + \file htdocs/compta/facture.php + \ingroup facture + \brief Page de création d'une facture + \version $Revision$ */ require("./pre.inc.php"); +require_once DOL_DOCUMENT_ROOT."/facture.class.php"; +require_once DOL_DOCUMENT_ROOT."/paiement.class.php"; $user->getrights('facture'); $user->getrights('banque'); if (!$user->rights->facture->lire) - accessforbidden(); +accessforbidden(); $langs->load("main"); // BUG De chargement de traduction ne pas modifier cette ligne $langs->load("bills"); -require_once DOL_DOCUMENT_ROOT."/facture.class.php"; -require_once DOL_DOCUMENT_ROOT."/paiement.class.php"; +$warning_delay=31*24*60*60; // Delai affichage warning retard (si retard paiement facture > delai) if ($_GET["socidp"]) { $socidp=$_GET["socidp"]; } -/* - * Sécurité accés client - */ -if ($user->societe_id > 0) + +// Sécurité accés client +if ($user->societe_id > 0) { - $action = ''; - $socidp = $user->societe_id; + $action = ''; + $socidp = $user->societe_id; } -llxHeader('','Factures impayées'); - +llxHeader('',$langs->trans("UnpayedBills")); + + /*************************************************************************** - * * - * Mode Liste * - * * - ***************************************************************************/ +* * +* Mode Liste * +* * +***************************************************************************/ $page = $_GET["page"]; -$sortorder=$_GET["sortorder"]; $sortfield=$_GET["sortfield"]; -if (! $sortorder) $sortorder="DESC"; +$sortorder=$_GET["sortorder"]; if (! $sortfield) $sortfield="f.datef"; - -if ($page == -1) -{ - $page = 0 ; -} +if (! $sortorder) $sortorder="ASC"; +if ($page == -1) $page = 0; if ($user->rights->facture->lire) { - $limit = $conf->liste_limit; - $offset = $limit * $page ; - - - $sql = "SELECT s.nom,s.idp,f.facnumber,f.increment,f.total,f.total_ttc,".$db->pdate("f.datef")." as df, f.paye as paye, f.rowid as facid, f.fk_statut, sum(pf.amount) as am"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql .= ",".MAIN_DB_PREFIX."facture as f"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid=pf.fk_facture "; - $sql .= " WHERE f.fk_soc = s.idp"; - $sql .= " AND f.paye = 0 AND f.fk_statut = 1"; + $limit = $conf->liste_limit; + $offset = $limit * $page ; - if ($socidp) - $sql .= " AND s.idp = $socidp"; - - if ($_GET["filtre"]) - { - $filtrearr = split(",", $_GET["filtre"]); - foreach ($filtrearr as $fil) - { - $filt = split(":", $fil); - $sql .= " AND " . $filt[0] . " = " . $filt[1]; - } - } - - if ($_GET["search_ref"]) - { - $sql .= " AND f.facnumber like '%".$_GET["search_ref"]."%'"; - } - - if ($_GET["search_societe"]) - { - $sql .= " AND s.nom like '%".$_GET["search_societe"]."%'"; - } - - if ($_GET["search_montant_ht"]) - { - $sql .= " AND f.total = '".$_GET["search_montant_ht"]."'"; - } - - if ($_GET["search_montant_ttc"]) - { - $sql .= " AND f.total_ttc = '".$_GET["search_montant_ttc"]."'"; - } - - if (strlen($_POST["sf_ref"]) > 0) - { - $sql .= " AND f.facnumber like '%".$_POST["sf_ref"] . "%'"; - } - - $sql .= " GROUP BY f.facnumber"; + $sql = "SELECT s.nom,s.idp,f.facnumber,f.increment,f.total,f.total_ttc,"; + $sql.= $db->pdate("f.datef")." as df, ".$db->pdate("f.date_lim_reglement")." as datelimite, "; + $sql.= " f.paye as paye, f.rowid as facid, f.fk_statut, sum(pf.amount) as am"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql.= ",".MAIN_DB_PREFIX."facture as f"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid=pf.fk_facture "; + $sql.= " WHERE f.fk_soc = s.idp"; + $sql.= " AND f.paye = 0 AND f.fk_statut = 1"; + if ($socidp) $sql .= " AND s.idp = $socidp"; - $sql .= " ORDER BY "; - - - $listfield=split(',',$sortfield); - foreach ($listfield as $key => $value) + if ($_GET["filtre"]) { - $sql.=$listfield[$key]." ".$sortorder.","; + $filtrearr = split(",", $_GET["filtre"]); + foreach ($filtrearr as $fil) + { + $filt = split(":", $fil); + $sql .= " AND " . $filt[0] . " = " . $filt[1]; + } } - $sql .= " f.fk_soc DESC "; // Grouper les lignes pas sociétés - - //$sql .= $db->plimit($limit+1,$offset); - - $result = $db->query($sql); - - if ($result) + if ($_GET["search_ref"]) { - $num = $db->num_rows(); - - if ($socidp) - { - $soc = new Societe($db); - $soc->fetch($socidp); - } - - print_barre_liste($langs->trans("BillsCustomersUnpayed")." ".($socidp?" $soc->nom":""),$page,"impayees.php","&socidp=$socidp",$sortfield,$sortorder,'',$num); - $i = 0; - print ''; - print ''; - print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"f.facnumber","","&socidp=$socidp","",$sortfield); - print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"f.datef","","&socidp=$socidp",'align="center"',$sortfield); - print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","&socidp=$socidp","",$sortfield); - print_liste_field_titre($langs->trans("AmountHT"),$_SERVER["PHP_SELF"],"f.total","","&socidp=$socidp",'align="right"',$sortfield); - print_liste_field_titre($langs->trans("AmountTTC"),$_SERVER["PHP_SELF"],"f.total_ttc","","&socidp=$socidp",'align="right"',$sortfield); - print_liste_field_titre($langs->trans("Received"),$_SERVER["PHP_SELF"],"am","","&socidp=$socidp",'align="right"',$sortfield); - print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"fk_statut,paye","","&socidp=$socidp",'align="right"',$sortfield); - print "\n"; - - // Lignes des champs de filtre - print ''; - print ''; - print ''; - print ''; - print "\n"; - print ''; - - if ($num > 0) - { - $var=True; - $total=0; - $totalrecu=0; - - while ($i < $num) - { - $objp = $db->fetch_object($result); - - if ($objp->am == 0) - { - $var=!$var; - - print ""; - $class = "impayee"; - - print '\n"; - - if ($objp->df > 0 ) - { - print "\n"; - } - else - { - print "\n"; - } - print ''; - - print ""; - print ""; - print ""; - - // Affiche statut de la facture - if (! $objp->paye) - { - if ($objp->fk_statut == 0) - { - print ''; - } - elseif ($objp->fk_statut == 3) - { - print ''; - } - else - { - print ''; - } - } - else - { - print ''; - } - - print "\n"; - $total+=$objp->total; - $total_ttc+=$objp->total_ttc; - $totalrecu+=$objp->am; - } - $i++; - } - print ''; - print ""; - print ""; - print ""; - print ""; - print ''; - print "\n"; - } - - print "
'; - print ''; - print ' '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print '
'.img_object($langs->trans("ShowBill"),"bill")." "; - print ''.$objp->facnumber.''.$objp->increment.""; - print strftime("%d %b %Y",$objp->df)."!!!'.img_object($langs->trans("ShowCompany"),"company").' '.$objp->nom.'".price($objp->total)."".price($objp->total_ttc)."".price($objp->am)."'.$langs->trans("BillShortStatusDraft").''.$langs->trans("BillShortStatusCanceled").''.($objp->am?$langs->trans("BillShortStatusStarted"):$langs->trans("BillShortStatusNotPayed")).''.$langs->trans("BillShortStatusPayed").'
".$langs->trans("Total").": ".price($total)."".price($total_ttc)."".price($totalrecu)." 
"; - $db->free(); + $sql .= " AND f.facnumber like '%".$_GET["search_ref"]."%'"; } - else + + if ($_GET["search_societe"]) { - dolibarr_print_error($db); - } + $sql .= " AND s.nom like '%".$_GET["search_societe"]."%'"; + } + + if ($_GET["search_montant_ht"]) + { + $sql .= " AND f.total = '".$_GET["search_montant_ht"]."'"; + } + + if ($_GET["search_montant_ttc"]) + { + $sql .= " AND f.total_ttc = '".$_GET["search_montant_ttc"]."'"; + } + + if (strlen($_POST["sf_ref"]) > 0) + { + $sql .= " AND f.facnumber like '%".$_POST["sf_ref"] . "%'"; + } + + $sql .= " GROUP BY f.facnumber"; + + $sql .= " ORDER BY "; + $listfield=split(',',$sortfield); + foreach ($listfield as $key => $value) $sql.=$listfield[$key]." ".$sortorder.","; + $sql .= " f.fk_soc ASC"; + + //$sql .= $db->plimit($limit+1,$offset); + + $result = $db->query($sql); + + if ($result) + { + $num = $db->num_rows($result); + + if ($socidp) + { + $soc = new Societe($db); + $soc->fetch($socidp); + } + + print_barre_liste($langs->trans("BillsCustomersUnpayed")." ".($socidp?" $soc->nom":""),$page,"impayees.php","&socidp=$socidp",$sortfield,$sortorder,'',$num); + $i = 0; + print ''; + print ''; + print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"f.facnumber","","&socidp=$socidp","",$sortfield); + print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"f.datef","","&socidp=$socidp",'align="center"',$sortfield); + print_liste_field_titre($langs->trans("DateDue"),$_SERVER["PHP_SELF"],"f.date_lim_reglement","","&socidp=$socidp",'align="center"',$sortfield); + print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","&socidp=$socidp","",$sortfield); + print_liste_field_titre($langs->trans("AmountHT"),$_SERVER["PHP_SELF"],"f.total","","&socidp=$socidp",'align="right"',$sortfield); + print_liste_field_titre($langs->trans("AmountTTC"),$_SERVER["PHP_SELF"],"f.total_ttc","","&socidp=$socidp",'align="right"',$sortfield); + print_liste_field_titre($langs->trans("Received"),$_SERVER["PHP_SELF"],"am","","&socidp=$socidp",'align="right"',$sortfield); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"fk_statut,paye","","&socidp=$socidp",'align="right"',$sortfield); + print "\n"; + + // Lignes des champs de filtre + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + print ''; + + if ($num > 0) + { + $var=True; + $total=0; + $totalrecu=0; + + while ($i < $num) + { + $objp = $db->fetch_object($result); + + $var=!$var; + + print ""; + $class = "impayee"; + + print '\n"; + + print "\n"; + print "\n"; + + print ''; + + print ""; + print ""; + print ""; + + // Affiche statut de la facture + if (! $objp->paye) + { + if ($objp->fk_statut == 0) + { + print ''; + } + elseif ($objp->fk_statut == 3) + { + print ''; + } + else + { + print ''; + } + } + else + { + print ''; + } + + print "\n"; + $total+=$objp->total; + $total_ttc+=$objp->total_ttc; + $totalrecu+=$objp->am; + + $i++; + } + print ''; + print ""; + print ""; + print ""; + print ""; + print ''; + print "\n"; + } + + print "
'; + print '  '; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print '
'.img_object($langs->trans("ShowBill"),"bill")." "; + print ''.$objp->facnumber.''.$objp->increment; + if ($objp->datelimite < (time() - $warning_delay) && ! $objp->paye && $objp->fk_statut == 1 && ! $objp->am) print img_warning($langs->trans("Late")); + print "".dolibarr_print_date($objp->df)."".dolibarr_print_date($objp->datelimite)."'.img_object($langs->trans("ShowCompany"),"company").' '.$objp->nom.'".price($objp->total)."".price($objp->total_ttc)."".price($objp->am)."'.$langs->trans("BillShortStatusDraft").''.$langs->trans("BillShortStatusCanceled").''.($objp->am?$langs->trans("BillShortStatusStarted"):$langs->trans("BillShortStatusNotPayed")).''.$langs->trans("BillShortStatusPayed").'
".$langs->trans("Total").": ".price($total)."".price($total_ttc)."".price($totalrecu)." 
"; + $db->free(); + } + else + { + dolibarr_print_error($db); + } } - + $db->close(); diff --git a/htdocs/compta/paiement/liste.php b/htdocs/compta/paiement/liste.php index 43a0eccc131..35366476ade 100644 --- a/htdocs/compta/paiement/liste.php +++ b/htdocs/compta/paiement/liste.php @@ -30,6 +30,9 @@ require("./pre.inc.php"); +$langs->load("bills"); + + // Sécurité accés client if ($user->societe_id > 0) { diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php index 31718797bc7..9857b67a570 100644 --- a/htdocs/facture.class.php +++ b/htdocs/facture.class.php @@ -30,6 +30,8 @@ \version $Revision$ */ +require_once(DOL_DOCUMENT_ROOT ."/notify.class.php"); + /** \class Facture diff --git a/htdocs/fichinter/fichinter.class.php b/htdocs/fichinter/fichinter.class.php index ec1120b434f..84bac82ffae 100644 --- a/htdocs/fichinter/fichinter.class.php +++ b/htdocs/fichinter/fichinter.class.php @@ -27,11 +27,12 @@ \version $Revision$ */ +require_once(DOL_DOCUMENT_ROOT ."/notify.class.php"); + /** \class Ficheinter \brief Classe des gestion des fiches interventions */ - class Fichinter { var $id; @@ -237,7 +238,6 @@ class Fichinter */ $mesg = "La fiche d'intervention ".$this->ref." a été validée.\n"; - require_once(DOL_DOCUMENT_ROOT ."/notify.class.php"); $notify = New Notify($this->db); $notify->send($action_notify, $this->societe_id, $mesg, "ficheinter", $this->id, $filepdf); diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index ba42272a348..e6b34909ee5 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -102,11 +102,10 @@ define('MAIN_DB_PREFIX','llx_'); // A terme cette constan * Chargement des includes principaux */ require_once(DOL_DOCUMENT_ROOT ."/lib/".$conf->db->type.".lib.php"); -require_once(DOL_DOCUMENT_ROOT ."/user.class.php"); require_once(DOL_DOCUMENT_ROOT ."/lib/functions.inc.php"); -require_once(DOL_DOCUMENT_ROOT ."/html.form.class.php"); +require_once(DOL_DOCUMENT_ROOT ."/user.class.php"); require_once(DOL_DOCUMENT_ROOT ."/menu.class.php"); -require_once(DOL_DOCUMENT_ROOT ."/address.class.php"); +require_once(DOL_DOCUMENT_ROOT ."/html.form.class.php"); $db = new DoliDb($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name);