diff --git a/htdocs/comm/action/pre.inc.php3 b/htdocs/comm/action/pre.inc.php similarity index 100% rename from htdocs/comm/action/pre.inc.php3 rename to htdocs/comm/action/pre.inc.php diff --git a/htdocs/comm/pre.inc.php3 b/htdocs/comm/pre.inc.php similarity index 100% rename from htdocs/comm/pre.inc.php3 rename to htdocs/comm/pre.inc.php diff --git a/htdocs/compta/bank/pre.inc.php3 b/htdocs/compta/bank/pre.inc.php similarity index 100% rename from htdocs/compta/bank/pre.inc.php3 rename to htdocs/compta/bank/pre.inc.php diff --git a/htdocs/compta/charges/pre.inc.php3 b/htdocs/compta/charges/pre.inc.php similarity index 100% rename from htdocs/compta/charges/pre.inc.php3 rename to htdocs/compta/charges/pre.inc.php diff --git a/htdocs/compta/pre.inc.php3 b/htdocs/compta/pre.inc.php similarity index 100% rename from htdocs/compta/pre.inc.php3 rename to htdocs/compta/pre.inc.php diff --git a/htdocs/compta/resultat/pre.inc.php3 b/htdocs/compta/resultat/pre.inc.php similarity index 100% rename from htdocs/compta/resultat/pre.inc.php3 rename to htdocs/compta/resultat/pre.inc.php diff --git a/htdocs/compta/sociales/pre.inc.php3 b/htdocs/compta/sociales/pre.inc.php similarity index 100% rename from htdocs/compta/sociales/pre.inc.php3 rename to htdocs/compta/sociales/pre.inc.php diff --git a/htdocs/compta/tva/pre.inc.php3 b/htdocs/compta/tva/pre.inc.php similarity index 100% rename from htdocs/compta/tva/pre.inc.php3 rename to htdocs/compta/tva/pre.inc.php diff --git a/htdocs/compta/voyage/pre.inc.php3 b/htdocs/compta/voyage/pre.inc.php similarity index 100% rename from htdocs/compta/voyage/pre.inc.php3 rename to htdocs/compta/voyage/pre.inc.php diff --git a/htdocs/domain/pre.inc.php3 b/htdocs/domain/pre.inc.php similarity index 100% rename from htdocs/domain/pre.inc.php3 rename to htdocs/domain/pre.inc.php diff --git a/htdocs/facture.class.php3 b/htdocs/facture.class.php similarity index 100% rename from htdocs/facture.class.php3 rename to htdocs/facture.class.php diff --git a/htdocs/fourn/facture/pre.inc.php3 b/htdocs/fourn/facture/pre.inc.php similarity index 100% rename from htdocs/fourn/facture/pre.inc.php3 rename to htdocs/fourn/facture/pre.inc.php diff --git a/htdocs/fourn/pre.inc.php3 b/htdocs/fourn/pre.inc.php similarity index 100% rename from htdocs/fourn/pre.inc.php3 rename to htdocs/fourn/pre.inc.php diff --git a/htdocs/main.inc.php3 b/htdocs/main.inc.php similarity index 100% rename from htdocs/main.inc.php3 rename to htdocs/main.inc.php diff --git a/htdocs/menu.class.php3 b/htdocs/menu.class.php similarity index 100% rename from htdocs/menu.class.php3 rename to htdocs/menu.class.php diff --git a/htdocs/product/pre.inc.php3 b/htdocs/product/pre.inc.php similarity index 100% rename from htdocs/product/pre.inc.php3 rename to htdocs/product/pre.inc.php diff --git a/htdocs/propal.class.php b/htdocs/propal.class.php new file mode 100644 index 00000000000..760057ddd3d --- /dev/null +++ b/htdocs/propal.class.php @@ -0,0 +1,597 @@ + + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + * + */ + +class Propal +{ + var $id; + var $db; + var $socidp; + var $contactid; + var $projetidp; + var $author; + var $ref; + var $datep; + var $remise; + var $products; + var $products_qty; + var $note; + + var $price; + + Function Propal($DB, $soc_idp="", $propalid=0) + { + $this->db = $DB ; + $this->socidp = $soc_idp; + $this->id = $propalid; + $this->products = array(); + $this->remise = 0; + } + /* + * + * + * + */ + Function add_product($idproduct, $qty) + { + if ($idproduct > 0) + { + $i = sizeof($this->products); + $this->products[$i] = $idproduct; + if (!$qty) + { + $qty = 1 ; + } + $this->products_qty[$i] = $qty; + } + } + /* + * + * + */ + Function insert_product($idproduct, $qty) + { + if ($this->statut == 0) + { + $prod = new Product($this->db, $idproduct); + if ($prod->fetch($idproduct) > 0) + { + + $sql = "INSERT INTO llx_propaldet (fk_propal, fk_product, qty, price, tva_tx, description) VALUES "; + $sql .= " (".$this->id.",". $idproduct.",". $qty.",". $prod->price.",".$prod->tva_tx.",'".addslashes($prod->label)."') ; "; + + if ($this->db->query($sql) ) + { + + $this->update_price($this->id); + + return 1; + } + else + { + return -1; + } + } + else + { + return -2; + } + } + } + /* + * + * + */ + Function insert_product_generic($p_desc, $p_price, $p_qty, $p_tva_tx=19.6) + { + if ($this->statut == 0) + { + $p_price = ereg_replace(",",".",$p_price); + $sql = "INSERT INTO llx_propaldet (fk_propal, fk_product, qty, price, tva_tx, description) VALUES "; + $sql .= " (".$this->id.", 0,". $p_qty.",". $p_price.",".$p_tva_tx.",'".$p_desc."') ; "; + + if ($this->db->query($sql) ) + { + + if ($this->update_price($this->id) > 0) + { + return 1; + } + else + { + return -1; + } + } + else + { + print $this->db->error(); + print "
".$sql; + return -2; + } + } + } + /* + * + * + */ + Function fetch_client() + { + $client = new Societe($this->db); + $client->fetch($this->socidp); + $this->client = $client; + + } + /* + * + * + */ + Function delete_product($idligne) + { + if ($this->statut == 0) + { + $sql = "DELETE FROM llx_propaldet WHERE rowid = $idligne"; + + if ($this->db->query($sql) ) + { + + $this->update_price($this->id); + + return 1; + } + else + { + return 0; + } + } + } + /* + * + * + * + */ + Function create() + { + /* + * Insertion dans la base + */ + $sql = "INSERT INTO llx_propal (fk_soc, fk_soc_contact, price, remise, tva, total, datep, datec, ref, fk_user_author, note, model_pdf) "; + $sql .= " VALUES ($this->socidp, $this->contactid, 0, $this->remise, 0,0, $this->datep, now(), '$this->ref', $this->author, '$this->note','$this->modelpdf')"; + $sqlok = 0; + + if ( $this->db->query($sql) ) + { + + $this->id = $this->db->last_insert_id(); + + $sql = "SELECT rowid FROM llx_propal WHERE ref='$this->ref';"; + if ( $this->db->query($sql) ) + { + /* + * Insertion du detail des produits dans la base + */ + if ( $this->db->num_rows() ) + { + $propalid = $this->db->result( 0, 0); + $this->db->free(); + + for ($i = 0 ; $i < sizeof($this->products) ; $i++) + { + $prod = new Product($this->db, $this->products[$i]); + $prod->fetch($this->products[$i]); + + $sql = "INSERT INTO llx_propaldet (fk_propal, fk_product, qty, price, tva_tx) VALUES "; + $sql .= " ($propalid,".$this->products[$i].",".$this->products_qty[$i].",$prod->price,$prod->tva_tx);"; + + if (! $this->db->query($sql) ) + { + print $sql . '
' . $this->db->error() .'
'; + } + } + /* + * + */ + $this->update_price($this->id); + /* + * Affectation au projet + */ + if ($this->projetidp) + { + $sql = "UPDATE llx_propal SET fk_projet=$this->projetidp WHERE ref='$this->ref';"; + $this->db->query($sql); + } + } + } + else + { + print $this->db->error() . '
'.$sql; + } + } + else + { + print $this->db->error() . '
'.$sql; + } + return $this->id; + } + /* + * + * + */ + Function update_price($rowid) + { + $totalht=0; + $totaltva=0; + $totalttc=0; + $total_remise=0; + + /* + * Remise + */ + $sql = "SELECT remise_percent FROM llx_propal WHERE rowid = $rowid"; + if ( $this->db->query($sql) ) + { + $remise_percent = $this->db->result(0, 0); + $this->db->free(); + + /* + * Total des produits a ajouter + */ + $sql = "SELECT price, qty, tva_tx FROM llx_propaldet WHERE fk_propal = $rowid"; + if ( $this->db->query($sql) ) + { + $num = $this->db->num_rows(); + $i = 0; + + while ($i < $num) + { + $obj = $this->db->fetch_object($i); + + $lprice = ($obj->qty * $obj->price); + + if ($remise_percent > 0) + { + $lremise = ($lprice * $remise_percent / 100); + $total_remise = $total_remise + $lremise; + $lprice = $lprice - $lremise; + } + + $totalht = $totalht + $lprice; + $totaltva = $totaltva + (tva(($lprice), $obj->tva_tx)); + $i++; + } + + $this->db->free(); + + /* + * Calcul TVA + */ + $totalttc = $totalht + $totaltva; + /* + * + */ + $sql = "UPDATE llx_propal set price=$totalht, tva=$totaltva, total=$totalttc, remise=$total_remise WHERE rowid = $rowid"; + if ( $this->db->query($sql) ) + { + return 1; + } + else + { + print "Erreur mise à jour du prix

".$sql; + return -1; + } + } + } + + } + + /* + * + * + * + */ + Function fetch($rowid) + { + + $sql = "SELECT ref,total,price,remise,tva,fk_soc,fk_soc_contact,".$this->db->pdate(datep)."as dp, model_pdf, note, fk_statut, remise_percent"; + $sql .= " FROM llx_propal WHERE rowid=$rowid;"; + + if ($this->db->query($sql) ) + { + if ($this->db->num_rows()) + { + $obj = $this->db->fetch_object(0); + + $this->id = $rowid; + $this->datep = $obj->dp; + $this->date = $obj->dp; + $this->ref = $obj->ref; + $this->price = $obj->price; + $this->remise = $obj->remise; + $this->remise_percent = $obj->remise_percent; + $this->total = $obj->total; + $this->total_ht = $obj->price; + $this->total_tva = $obj->tva; + $this->total_ttc = $obj->total; + $this->socidp = $obj->fk_soc; + $this->contactid = $obj->fk_soc_contact; + $this->modelpdf = $obj->model_pdf; + $this->note = $obj->note; + + if ($obj->fk_statut == 0) + { + $this->brouillon = 1; + } + + $this->lignes = array(); + $this->db->free(); + + $this->ref_url = ''.$this->ref.''; + + /* + * Lignes + */ + + $sql = "SELECT d.qty, p.description, p.ref, p.price, d.tva_tx, p.rowid"; + $sql .= " FROM llx_propaldet as d, llx_product as p"; + $sql .= " WHERE d.fk_propal = ".$this->id ." AND d.fk_product = p.rowid"; + + $result = $this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows(); + $i = 0; + + while ($i < $num) + { + $objp = $this->db->fetch_object($i); + $ligne = new PropaleLigne(); + $ligne->desc = stripslashes($objp->description); + $ligne->qty = $objp->qty; + $ligne->ref = $objp->ref; + $ligne->tva_tx = $objp->tva_tx; + $ligne->price = $objp->price; + $ligne->product_id = $objp->rowid; + $this->lignes[$i] = $ligne; + $i++; + } + + $this->db->free(); + } + else + { + print $this->db->error(); + } + + /* + * Lignes + */ + + $sql = "SELECT d.qty, d.description, d.price, d.tva_tx, d.rowid"; + $sql .= " FROM llx_propaldet as d"; + $sql .= " WHERE d.fk_propal = ".$this->id ." AND d.fk_product = 0"; + + $result = $this->db->query($sql); + if ($result) + { + $num = $this->db->num_rows(); + $j = 0; + + while ($j < $num) + { + $objp = $this->db->fetch_object($i); + $ligne = new PropaleLigne(); + $ligne->desc = stripslashes($objp->description); + $ligne->qty = $objp->qty; + $ligne->ref = $objp->ref; + $ligne->tva_tx = $objp->tva_tx; + $ligne->price = $objp->price; + $ligne->product_id = $objp->rowid; + $this->lignes[$i] = $ligne; + $i++; + $j++; + } + + $this->db->free(); + } + else + { + print $this->db->error(); + } + + + } + return 1; + } + else + { + print $this->db->error(); + return 0; + } + } + /* + * + * + * + */ + Function valid($user) + { + + if ($user->rights->propale->valider) + { + + $sql = "UPDATE llx_propal SET fk_statut = 1, date_valid=now(), fk_user_valid=$user->id"; + $sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;"; + + if ($this->db->query($sql) ) + { + return 1; + } + else + { + print $this->db->error() . ' in ' . $sql; + } + } + } + /* + * + * + * + */ + Function set_remise($user, $remise) + { + if ($user->rights->propale->creer) + { + + $sql = "UPDATE llx_propal SET remise_percent = ".ereg_replace(",",".",$remise); + $sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;"; + + if ($this->db->query($sql) ) + { + $this->update_price($this->id); + return 1; + } + else + { + print $this->db->error() . ' in ' . $sql; + } + } + } + /* + * + * + * + */ + Function set_pdf_model($user, $modelpdf) + { + if ($user->rights->propale->creer) + { + + $sql = "UPDATE llx_propal SET model_pdf = '$modelpdf'"; + $sql .= " WHERE rowid = $this->id AND fk_statut = 0 ;"; + + if ($this->db->query($sql) ) + { + return 1; + } + else + { + print $this->db->error() . ' in ' . $sql; + return 0; + } + } + } + /* + * + * + * + */ + Function cloture($userid, $statut, $note) + { + $sql = "UPDATE llx_propal SET fk_statut = $statut, note = '$note', date_cloture=now(), fk_user_cloture=$userid"; + + $sql .= " WHERE rowid = $this->id;"; + + if ($this->db->query($sql) ) + { + return 1; + } + else + { + print $this->db->error() . ' in ' . $sql; + } + } + /* + * + * + * + */ + Function reopen($userid) + { + $sql = "UPDATE llx_propal SET fk_statut = 0"; + + $sql .= " WHERE rowid = $this->id;"; + + if ($this->db->query($sql) ) + { + return 1; + } + else + { + print $this->db->error() . ' in ' . $sql; + } + } + /* + * + * + */ + Function liste_array ($brouillon=0, $user='') + { + $ga = array(); + + $sql = "SELECT rowid, ref FROM llx_propal"; + if ($brouillon = 1) + { + $sql .= " WHERE fk_statut = 0"; + if ($user) + { + $sql .= " AND fk_user_author".$user; + } + } + else + { + if ($user) + { + $sql .= " WHERE fk_user_author".$user; + } + } + + $sql .= " ORDER BY datep DESC"; + + if ($this->db->query($sql) ) + { + $nump = $this->db->num_rows(); + + if ($nump) + { + $i = 0; + while ($i < $nump) + { + $obj = $this->db->fetch_object($i); + + $ga[$obj->rowid] = $obj->ref; + $i++; + } + } + return $ga; + } + else + { + print $this->db->error(); + } + } +} + +class PropaleLigne +{ + Function PropaleLigne() + { + } +} +?> diff --git a/htdocs/service/pre.inc.php3 b/htdocs/service/pre.inc.php similarity index 100% rename from htdocs/service/pre.inc.php3 rename to htdocs/service/pre.inc.php diff --git a/htdocs/user.class.php3 b/htdocs/user.class.php similarity index 100% rename from htdocs/user.class.php3 rename to htdocs/user.class.php