diff --git a/htdocs/comm/addpropal.php b/htdocs/comm/addpropal.php index 9ea8683e8d1f1100986a0649fbaa369e38f03f97..cbdfb02f455db43326e7625afad0763550051cde 100644 --- a/htdocs/comm/addpropal.php +++ b/htdocs/comm/addpropal.php @@ -161,6 +161,11 @@ if ($_GET["action"] == 'create') print '<tr><td>'.$langs->trans('PaymentMode').'</td><td colspan="2">'; $html->select_types_paiements($soc->mode_reglement,'mode_reglement_id'); print '</td></tr>'; + + // Source de propale + print '<tr><td>'.$langs->trans('Source').'</td><td>'; + $html->select_demand_reason($soc->demand_reason,'demand_reason_id'); + print '</td></tr>'; // delai de livraison print '<tr><td>'.$langs->trans('AvailabilityPeriod').'</td><td colspan="2">'; diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index a2f833704d5d9e0b0b1104e96c9fda0ad2624b7a..d09cf9b934b3c1f808fa88a7ce1066f860faf022 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -6,6 +6,7 @@ * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2010-2011 Philippe Grand <philippe.grand@atoo-net.com> * * 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 @@ -259,6 +260,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer) $object->datep = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); $object->date_livraison = dol_mktime(12, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']); $object->availability_id = $_POST['availability_id']; + $object->demand_reason_id = $_POST['demand_reason_id']; $object->fk_delivery_address = $_POST['fk_address']; $object->duree_validite = $_POST['duree_validite']; $object->cond_reglement_id = $_POST['cond_reglement_id']; @@ -287,6 +289,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer) $object->datep = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); $object->date_livraison = dol_mktime(12, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']); $object->availability_id = $_POST['availability_id']; + $object->demand_reason_id = $_POST['demand_reason_id']; $object->fk_delivery_address = $_POST['fk_address']; $object->duree_validite = $_POST['duree_validite']; $object->cond_reglement_id = $_POST['cond_reglement_id']; @@ -894,6 +897,14 @@ if ($_POST["action"] == 'setavailability') $_GET['id']=$_REQUEST['id']; } +// Origine de la propale +if ($_POST["action"] == 'setdemandreason') +{ + $object->fetch($_REQUEST['id']); + $result = $object->demand_reason($_POST['demand_reason_id']); + $_GET['id']=$_REQUEST['id']; +} + // Conditions de reglement if ($_POST["action"] == 'setconditions') { @@ -1119,7 +1130,7 @@ if ($id > 0 || ! empty($ref)) print '</td>'; print '</tr>'; - $rowspan=10; + $rowspan=11; // Company print '<tr><td>'.$langs->trans('Company').'</td><td colspan="5">'.$soc->getNomUrl(1).'</td>'; @@ -1299,6 +1310,26 @@ if ($id > 0 || ! empty($ref)) $html->form_availability($_SERVER['PHP_SELF'].'?id='.$object->id,$object->availability_id,'none'); } + print '</td>'; + print '</tr>'; + + // Origine de la demande + print '<tr><td>'; + print '<table class="nobordernopadding" width="100%"><tr><td>'; + print $langs->trans('Source'); + print '</td>'; + if ($_GET['action'] != 'editdemandreason' && $object->brouillon) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdemandreason&id='.$object->id.'">'.img_edit($langs->trans('SetDemandReason'),1).'</a></td>'; + print '</tr></table>'; + print '</td><td colspan="3">'; + if ($_GET['action'] == 'editdemandreason') + { + $html->form_demand_reason($_SERVER['PHP_SELF'].'?id='.$object->id,$object->demand_reason_id,'demand_reason_id'); + } + else + { + $html->form_demand_reason($_SERVER['PHP_SELF'].'?id='.$object->id,$object->demand_reason_id,'none'); + } + print '</td>'; print '</tr>'; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index e39d711c19b312955a23cee287b34317a1ffc55a..ba6b90b46cc3725ca6ec964d6b1d85549a151fe2 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -7,6 +7,7 @@ * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr> * Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es> + * Copyright (C) 2010-2011 Philippe Grand <philippe.grand@atoo-net.com> * * 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 @@ -97,6 +98,8 @@ class Propal extends CommonObject var $adresse; var $availability_id; var $availability_code; + var $demand_reason_id; + var $demand_reason_code; var $products=array(); @@ -631,6 +634,7 @@ class Propal extends CommonObject $sql.= ", ref_client"; $sql.= ", date_livraison"; $sql.= ", fk_availability"; + $sql.= ", fk_demand_reason"; $sql.= ", entity"; $sql.= ") "; $sql.= " VALUES ("; @@ -654,6 +658,7 @@ class Propal extends CommonObject $sql.= ", '".$this->db->escape($this->ref_client)."'"; $sql.= ", ".($this->date_livraison!=''?"'".$this->db->idate($this->date_livraison)."'":'null'); $sql.= ", ".$this->availability_id; + $sql.= ", ".$this->demand_reason_id; $sql.= ", ".$conf->entity; $sql.= ")"; @@ -954,6 +959,7 @@ class Propal extends CommonObject $sql.= ", fk_user_author, fk_user_valid, fk_user_cloture"; $sql.= ", fk_adresse_livraison"; $sql.= ", p.fk_availability"; + $sql.= ", p.fk_demand_reason"; $sql.= ", p.fk_cond_reglement"; $sql.= ", p.fk_mode_reglement"; $sql.= ", c.label as statut_label"; @@ -963,6 +969,7 @@ class Propal extends CommonObject $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_mode_reglement = cp.id'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as cr ON p.fk_cond_reglement = cr.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_availability as ca ON p.fk_availability = ca.rowid'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_demand_reason as dr ON p.fk_demand_reason = dr.rowid'; $sql.= " WHERE p.fk_statut = c.id"; $sql.= " AND p.entity = ".$conf->entity; if ($ref) $sql.= " AND p.ref='".$ref."'"; @@ -1006,6 +1013,9 @@ class Propal extends CommonObject $this->availability_id = $obj->fk_availability; $this->availability_code = $obj->availability_code; $this->availability = $obj->availability; + $this->demand_reason_id = $obj->fk_demand_reason; + $this->demand_reason_code = $obj->demand_reason_code; + $this->demand_reason = $obj->demand_reason; $this->fk_delivery_address = $obj->fk_adresse_livraison; // TODO obsolete $this->fk_address = $obj->fk_adresse_livraison; @@ -1307,6 +1317,34 @@ class Propal extends CommonObject } } + /** + * \brief Set source of demand + * \param user Objet utilisateur qui modifie + * \param demand_reason source of demand + * \return int <0 si ko, >0 si ok + */ + function set_demand_reason($user, $id) + { + if ($user->rights->propale->creer) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."propal "; + $sql.= " SET fk_demand_reason = '".$id."'"; + $sql.= " WHERE rowid = ".$this->id; + + if ($this->db->query($sql)) + { + $this->fk_demand_reason = $id; + return 1; + } + else + { + $this->error=$this->db->error(); + dol_syslog("Propal::set_demand_reason Erreur SQL"); + return -1; + } + } + } + /** * \brief Positionne numero reference client * \param user Utilisateur qui modifie @@ -1858,6 +1896,39 @@ class Propal extends CommonObject return -2; } } + + /** + * \brief Change l'origine de la demande + * \param demand_reason_id Id de la nouvelle origine de demande + * \return int >0 si ok, <0 si ko + */ + function demand_reason($demand_reason_id) + { + dol_syslog('Propale::demand_reason('.$demand_reason_id.')'); + if ($this->statut >= 0) + { + $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal'; + $sql .= ' SET fk_demand_reason = '.$demand_reason_id; + $sql .= ' WHERE rowid='.$this->id; + if ( $this->db->query($sql) ) + { + $this->demand_reason_id = $demand_reason_id; + return 1; + } + else + { + dol_syslog('Propale::demand_reason Erreur '.$sql.' - '.$this->db->error()); + $this->error=$this->db->error(); + return -1; + } + } + else + { + dol_syslog('Propale::demand_reason, etat propale incompatible'); + $this->error='Etat propale incompatible '.$this->statut; + return -2; + } + } /** @@ -2078,6 +2149,8 @@ class Propal extends CommonObject $this->mode_reglement_code = 'CHQ'; $this->availability_id = 1; $this->availability_code = 'DSP'; + $this->demand_reason_id = 1; + $this->demand_reason_code = 'SRC_00'; $this->note_public='This is a comment (public)'; $this->note='This is a comment (private)'; // Lines diff --git a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql index a106b09e2021486eb8210e96ab4a619890a8b139..0811450a548f4b3ea34d327bb0beccd0cff02ba0 100755 --- a/htdocs/install/mysql/migration/3.0.0-3.1.0.sql +++ b/htdocs/install/mysql/migration/3.0.0-3.1.0.sql @@ -16,6 +16,7 @@ RENAME TABLE llx_c_source TO llx_c_demand_reason; ALTER TABLE llx_adherent MODIFY login varchar(50); ALTER TABLE llx_c_actioncomm ADD COLUMN position integer NOT NULL DEFAULT 0; +ALTER TABLE llx_propal ADD COLUMN fk_demand_reason integer NULL DEFAULT 0; ALTER TABLE llx_commande_fournisseur MODIFY model_pdf varchar(255); ALTER TABLE llx_commande MODIFY model_pdf varchar(255);