From 004290a232b990bb2d8d1f442908e8eadb1d19e3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 Jul 2005 15:09:55 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20Statut=20factur=E9e=20d'une=20propale=20?= =?UTF-8?q?non=20g=E9r=E9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/compta/propal.php | 6 +- htdocs/langs/en_US/compta.lang | 1 + htdocs/langs/en_US/projects.lang | 1 + htdocs/langs/en_US/propal.lang | 19 ++- htdocs/langs/fr_FR/compta.lang | 1 + htdocs/langs/fr_FR/projects.lang | 1 + htdocs/langs/fr_FR/propal.lang | 17 ++- htdocs/propal.class.php | 213 ++++++++++++++++++------------- 8 files changed, 165 insertions(+), 94 deletions(-) diff --git a/htdocs/compta/propal.php b/htdocs/compta/propal.php index ddc5b89293c..73a9e6e8148 100644 --- a/htdocs/compta/propal.php +++ b/htdocs/compta/propal.php @@ -125,8 +125,8 @@ if ($_GET["propalid"]) * */ $sql = 'SELECT s.nom, s.idp, p.price, p.fk_projet,p.remise, p.tva, p.total, p.ref,'.$db->pdate('p.datep').' as dp, c.id as statut, c.label as lst, p.note, x.firstname, x.name, x.fax, x.phone, x.email, p.fk_user_author, p.fk_user_valid, p.fk_user_cloture, p.datec, p.date_valid, p.date_cloture'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p, '.MAIN_DB_PREFIX.'c_propalst as c, '.MAIN_DB_PREFIX.'socpeople as x'; - $sql .= ' WHERE p.fk_soc = s.idp AND p.fk_statut = c.id AND x.idp = p.fk_soc_contact AND p.rowid = '.$propal->id; + $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p, '.MAIN_DB_PREFIX.'c_propalst as c, '.MAIN_DB_PREFIX.'socpeople as x'; + $sql.= ' WHERE p.fk_soc = s.idp AND p.fk_statut = c.id AND x.idp = p.fk_soc_contact AND p.rowid = '.$propal->id; if ($socidp) $sql .= ' AND s.idp = '.$socidp; $result = $db->query($sql); @@ -431,7 +431,7 @@ if ($_GET["propalid"]) print '".$langs->trans("BuildBill").""; } - if ($obj->statut == 2 && $num_fac_asso) + if ($obj->statut == 2 && sizeof($propal->facture_liste_array())) { print '".$langs->trans("ClassifyBilled").""; } diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index 2943330c456..cf3e0bab56f 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -1,5 +1,6 @@ # Dolibarr language file - en_US - compta Accountancy=Accountancy +AccountancyCard=Accountancy card Treasury=Treasury OptionMode=Option for accountancy OptionModeTrue=Option Recettes-Dépenses diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index fea0638649f..8b2eb0f6561 100755 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -9,3 +9,4 @@ ConfirmDeleteAProject=Are you sure you want to delete this project ? LastProjects=Last %s projects AllProjects=All projects ShowProject=Show project +NoProject=No project defined \ No newline at end of file diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang index 02130bc5984..5ceda43a8bf 100644 --- a/htdocs/langs/en_US/propal.lang +++ b/htdocs/langs/en_US/propal.lang @@ -27,6 +27,15 @@ PropalsOpened=Opened PropalStatusDraft=Draft (need to be validated) PropalStatusValidated=Validated (proposal is opened) PropalStatusClosed=Closed +PropalStatusSigned=Signed (need to be billed) +PropalStatusNotSigned=Not signed (closed) +PropalStatusBilled=Billed +PropalStatusDraftShort=Draft +PropalStatusValidatedShort=Validated +PropalStatusClosedShort=Closed +PropalStatusSignedShort=Signed +PropalStatusClosedShort=Not signed +PropalStatusBilledShort=Billed ListOfProposals=List of commercial proposals ActionsOnPropal=Tasks on proposal NoOpenedPropals=No opened commercial proposals @@ -38,5 +47,11 @@ FileNotUploaded=The file was not uploaded FileUploaded=The file was successfully uploaded AssociatedDocuments=Documents associated with the proposal: ErrorCantOpenDir=Can't open directory -DateEndPropal=Date fin validité -DateEndPropalShort=Date fin +DateEndPropal=Date end validity +DateEndPropalShort=Date end +ValidityDuration=Validity duration +CloseAs=Close with status +ClassifyBilled=Classify billed +BuildBill=Build bill +RelatedBill=Related bill +RelatedBills=Related bills \ No newline at end of file diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index 1c0d6ec16d9..5c7060ccb6f 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -1,5 +1,6 @@ # Dolibarr language file - fr_FR - compta Accountancy=Compta +AccountancyCard=Fiche Compta Treasury=Tréso OptionMode=Option de tenue de comptabilité OptionModeTrue=Option Recettes-Dépenses diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 518ccab2944..d016b1b4563 100755 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -9,3 +9,4 @@ ConfirmDeleteAProject= LastProjects=Les %s derniers projets AllProjects=Tous les projets ShowProject=Afficher projet +NoProject=Aucun projet défini \ No newline at end of file diff --git a/htdocs/langs/fr_FR/propal.lang b/htdocs/langs/fr_FR/propal.lang index e914747937b..45e5e2499db 100644 --- a/htdocs/langs/fr_FR/propal.lang +++ b/htdocs/langs/fr_FR/propal.lang @@ -26,7 +26,16 @@ PropalsDraft=Brouillons PropalsOpened=Ouvertes PropalStatusDraft=Brouillon (à valider) PropalStatusValidated=Validée (propale ouverte) -PropalStatusClosed=Fermé +PropalStatusClosed=Fermée +PropalStatusSigned=Signée (à facturer) +PropalStatusNotSigned=Non signée (fermée) +PropalStatusBilled=Facturée +PropalStatusDraftShort=Brouillon +PropalStatusValidatedShort=Validée +PropalStatusClosedShort=Fermée +PropalStatusSignedShort=Signée +PropalStatusClosedShort=Non signée +PropalStatusBilledShort=Facturée ListOfProposals=Liste des devis/propositions commerciales ActionsOnPropal=Actions sur la proposition NoOpenedPropals=Pas de proposition ouverte @@ -40,3 +49,9 @@ AssociatedDocuments=Documents associ ErrorCantOpenDir=Impossible d'ouvrir le répertoire DateEndPropal=Date fin validité DateEndPropalShort=Date fin +ValidityDuration=Durée de validité +CloseAs=Clôturer au statut +ClassifyBilled=Classer facturée +BuildBill=Créer facture +RelatedBill=Facture associée +RelatedBills=Factures associées \ No newline at end of file diff --git a/htdocs/propal.class.php b/htdocs/propal.class.php index e9a8b54f9ef..c7c5d9e1373 100644 --- a/htdocs/propal.class.php +++ b/htdocs/propal.class.php @@ -79,10 +79,14 @@ class Propal $langs->load("propals"); $this->labelstatut[0]=$langs->trans("PropalStatusDraft"); $this->labelstatut[1]=$langs->trans("PropalStatusValidated"); - $this->labelstatut[2]=$langs->trans("PropalStatusClosed"); - $this->labelstatut_short[0]=$langs->trans("PropalStatusDraft"); + $this->labelstatut[2]=$langs->trans("PropalStatusSigned"); + $this->labelstatut[3]=$langs->trans("PropalStatusNotSigned"); + $this->labelstatut[4]=$langs->trans("PropalStatusBilled"); + $this->labelstatut_short[0]=$langs->trans("PropalStatusDraftShort"); $this->labelstatut_short[1]=$langs->trans("Opened"); - $this->labelstatut_short[2]=$langs->trans("PropalStatusClosed"); + $this->labelstatut_short[2]=$langs->trans("PropalStatusSignedShort"); + $this->labelstatut_short[3]=$langs->trans("PropalStatusNotSignedShort"); + $this->labelstatut_short[4]=$langs->trans("PropalStatusBilledShort"); } @@ -786,45 +790,45 @@ class Propal } } - /** - * \brief Renvoie un tableau contenant les numéros de commandes associées - * - */ - - function commande_liste_array () + /** + * \brief Renvoie un tableau contenant les numéros de commandes associées + * \remarks Fonction plus light que associated_orders + * \seealso associated_orders + */ + function commande_liste_array () { - $ga = array(); - - $sql = "SELECT fk_commande FROM ".MAIN_DB_PREFIX."co_pr"; - $sql .= " WHERE fk_propale = " . $this->id; - if ($this->db->query($sql) ) - { - $nump = $this->db->num_rows(); - - if ($nump) - { - $i = 0; - while ($i < $nump) - { - $obj = $this->db->fetch_object(); - - $ga[$i] = $obj->fk_commande; - $i++; - } - } - return $ga; - } - else - { - dolibarr_print_error($this->db); - } + $ga = array(); + + $sql = "SELECT fk_commande FROM ".MAIN_DB_PREFIX."co_pr"; + $sql .= " WHERE fk_propale = " . $this->id; + if ($this->db->query($sql) ) + { + $nump = $this->db->num_rows(); + + if ($nump) + { + $i = 0; + while ($i < $nump) + { + $obj = $this->db->fetch_object(); + + $ga[$i] = $obj->fk_commande; + $i++; + } + } + return $ga; + } + else + { + dolibarr_print_error($this->db); + } } /** - * \brief Renvoie un tableau contenant les commandes associées - * + * \brief Renvoie un tableau contenant les commandes associées + * \remarks Fonction plus lourde que commande_liste_array + * \seealso commande_liste_array */ - function associated_orders () { $ga = array(); @@ -855,11 +859,42 @@ class Propal } } - /* - * - * + /** + * \brief Renvoie un tableau contenant les numéros de factures associées + */ + function facture_liste_array () + { + $ga = array(); + + $sql = "SELECT fk_facture FROM ".MAIN_DB_PREFIX."fa_pr as fp"; + $sql .= " WHERE fk_propal = " . $this->id; + if ($this->db->query($sql) ) + { + $nump = $this->db->num_rows(); + + if ($nump) + { + $i = 0; + while ($i < $nump) + { + $obj = $this->db->fetch_object(); + + $ga[$i] = $obj->fk_facture; + $i++; + } + } + return $ga; + } + else + { + dolibarr_print_error($this->db); + } + } + + /** + * \brief Efface propal + * \param user Objet du user qui efface */ - function delete($user) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."propaldet WHERE fk_propal = $this->id ;"; @@ -904,55 +939,57 @@ class Propal } - /* - * \brief Information sur l'objet - * - */ - - function info($id) + /** + * \brief Information sur l'objet propal + * \param id id de la propale + */ + function info($id) { - $sql = "SELECT c.rowid, ".$this->db->pdate("datec")." as datec"; - $sql .= ", fk_user_valid, fk_user_cloture, fk_user_author"; - $sql .= " FROM ".MAIN_DB_PREFIX."propal as c"; - $sql .= " WHERE c.rowid = $id"; - - if ($this->db->query($sql)) - { - if ($this->db->num_rows()) - { - $obj = $this->db->fetch_object(); + $sql = "SELECT c.rowid, "; + $sql.= $this->db->pdate("datec")." as datec, ".$this->db->pdate("date_valid")." as datev, ".$this->db->pdate("date_cloture")." as dateo"; + $sql.= ", fk_user_author, fk_user_valid, fk_user_cloture"; + $sql.= " FROM ".MAIN_DB_PREFIX."propal as c"; + $sql.= " WHERE c.rowid = $id"; + + if ($this->db->query($sql)) + { + if ($this->db->num_rows()) + { + $obj = $this->db->fetch_object(); + + $this->id = $obj->rowid; + + $this->date_creation = $obj->datec; + $this->date_validation = $obj->datev; + $this->date_cloture = $obj->dateo; - $this->id = $obj->rowid; - - $this->date_creation = $obj->datec; - - $cuser = new User($this->db, $obj->fk_user_author); - $cuser->fetch(); - $this->user_creation = $cuser; - - if ($obj->fk_user_valid) - { - $vuser = new User($this->db, $obj->fk_user_valid); - $vuser->fetch(); - $this->user_validation = $vuser; - } - - if ($obj->fk_user_cloture) - { - $cluser = new User($this->db, $obj->fk_user_cloture); - $cluser->fetch(); - $this->user_cloture = $cluser; - } - - - } - $this->db->free(); - - } - else - { - dolibarr_print_error($this->db); - } + $cuser = new User($this->db, $obj->fk_user_author); + $cuser->fetch(); + $this->user_creation = $cuser; + + if ($obj->fk_user_valid) + { + $vuser = new User($this->db, $obj->fk_user_valid); + $vuser->fetch(); + $this->user_validation = $vuser; + } + + if ($obj->fk_user_cloture) + { + $cluser = new User($this->db, $obj->fk_user_cloture); + $cluser->fetch(); + $this->user_cloture = $cluser; + } + + + } + $this->db->free(); + + } + else + { + dolibarr_print_error($this->db); + } }