diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php
index ca23640aa4a..16384ffd6a3 100644
--- a/htdocs/admin/dict.php
+++ b/htdocs/admin/dict.php
@@ -121,7 +121,7 @@ $tabsql[17]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREF
$tabsql[18]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_shipment_mode";
$tabsql[19]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_effectif";
$tabsql[20]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_methode_commande_fournisseur";
-$tabsql[21]= "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_availability";
+$tabsql[21]= "SELECT c.rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_availability AS c";
// Critere de tri du dictionnaire
$tabsqlsort[1] ="pays ASC, code ASC";
@@ -238,7 +238,7 @@ $tabrowid[17]= "id";
$tabrowid[18]= "rowid";
$tabrowid[19]= "id";
$tabrowid[20]= "";
-$tabrowid[21]= "";
+$tabrowid[21]= "rowid";
// Condition to show dictionnary in setup page
$tabcond[1] = true;
diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 33d14d18f8f..66927c9eb8f 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -232,14 +232,6 @@ if ($_POST['action'] == 'setaddress' && $user->rights->propale->creer)
if ($result < 0) dol_print_error($db,$object->error);
}
-// Availability
-if ($_POST['action'] == 'setavailability' && $user->rights->propale->creer)
-{
- $object->fetch($_GET["id"]);
- $result=$object->set_availability($user,$_POST['fk_availability']);
- if ($result < 0) dol_print_error($db,$object->error);
-}
-
// Positionne ref client
if ($_POST['action'] == 'set_ref_client' && $user->rights->propale->creer)
{
@@ -265,7 +257,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer)
$object->ref = $_POST['ref'];
$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->fk_availability = $_POST['fk_availability'];
+ $object->availability_id = $_POST['availability_id'];
$object->fk_delivery_address = $_POST['fk_address'];
$object->duree_validite = $_POST['duree_validite'];
$object->cond_reglement_id = $_POST['cond_reglement_id'];
@@ -293,7 +285,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer)
$object->ref_client = $_POST['ref_client'];
$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->fk_availability = $_POST['fk_availability'];
+ $object->availability_id = $_POST['availability_id'];
$object->fk_delivery_address = $_POST['fk_address'];
$object->duree_validite = $_POST['duree_validite'];
$object->cond_reglement_id = $_POST['cond_reglement_id'];
@@ -890,6 +882,14 @@ if ($_POST['action'] == 'classin')
$object->setProject($_POST['projectid']);
}
+// Delai de livraison
+if ($_POST["action"] == 'setavailability')
+{
+ $object->fetch($_REQUEST['id']);
+ $result = $object->availability($_POST['availability_id']);
+ $_GET['id']=$_REQUEST['id'];
+}
+
// Conditions de reglement
if ($_POST["action"] == 'setconditions')
{
@@ -1284,12 +1284,13 @@ if ($id > 0 || ! empty($ref))
print '
';
if ($_GET['action'] == 'editavailability')
{
- $html->form_availability($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_availability,'fk_availability');
+ $html->form_availability($_SERVER['PHP_SELF'].'?id='.$object->id,$object->availability_id,'availability_id');
}
else
{
- $html->form_availability($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_availability,'none');
+ $html->form_availability($_SERVER['PHP_SELF'].'?id='.$object->id,$object->availability_id,'none');
}
+
print ' | ';
print '';
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index 045002f460c..1e8cc5acf6b 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -95,7 +95,8 @@ class Propal extends CommonObject
var $fk_address;
var $address_type;
var $adresse;
- var $fk_availability;
+ var $availability_id;
+ var $availability_code;
var $products=array();
@@ -642,7 +643,7 @@ class Propal extends CommonObject
$sql.= ", ".$this->mode_reglement_id;
$sql.= ", '".$this->db->escape($this->ref_client)."'";
$sql.= ", ".($this->date_livraison!=''?"'".$this->db->idate($this->date_livraison)."'":'null');
- $sql.= ", ".$this->fk_availability;
+ $sql.= ", ".$this->availability_id;
$sql.= ", ".$conf->entity;
$sql.= ")";
@@ -905,7 +906,7 @@ class Propal extends CommonObject
$sql.= ", datep as dp";
$sql.= ", fin_validite as dfv";
$sql.= ", date_livraison as date_livraison";
- $sql.= ", fk_availability";
+ $sql.= ", ca.code as availability_code, ca.label as availability";
$sql.= ", model_pdf, ref_client";
$sql.= ", note, note_public";
$sql.= ", fk_projet, fk_statut";
@@ -919,6 +920,7 @@ class Propal extends CommonObject
$sql.= " FROM ".MAIN_DB_PREFIX."c_propalst as c, ".MAIN_DB_PREFIX."propal as p";
$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.= " WHERE p.fk_statut = c.id";
$sql.= " AND p.entity = ".$conf->entity;
if ($ref) $sql.= " AND p.ref='".$ref."'";
@@ -959,7 +961,9 @@ class Propal extends CommonObject
$this->datep = $this->db->jdate($obj->dp);
$this->fin_validite = $this->db->jdate($obj->dfv);
$this->date_livraison = $this->db->jdate($obj->date_livraison);
- $this->fk_availability = $obj->fk_availability;
+ $this->availability_id = $obj->fk_availability;
+ $this->availability_code = $obj->availability_code;
+ $this->availability = $obj->availability;
$this->fk_delivery_address = $obj->fk_adresse_livraison; // TODO obsolete
$this->fk_address = $obj->fk_adresse_livraison;
@@ -1779,6 +1783,39 @@ class Propal extends CommonObject
return -2;
}
}
+
+/**
+ * \brief Change le delai de livraison
+ * \param availability_id Id du nouveau delai de livraison
+ * \return int >0 si ok, <0 si ko
+ */
+ function availability($availability_id)
+ {
+ dol_syslog('Propale::availability('.$availability_id.')');
+ if ($this->statut >= 0)
+ {
+ $sql = 'UPDATE '.MAIN_DB_PREFIX.'propal';
+ $sql .= ' SET fk_availability = '.$availability_id;
+ $sql .= ' WHERE rowid='.$this->id;
+ if ( $this->db->query($sql) )
+ {
+ $this->availability_id = $availability_id;
+ return 1;
+ }
+ else
+ {
+ dol_syslog('Propale::availability Erreur '.$sql.' - '.$this->db->error());
+ $this->error=$this->db->error();
+ return -1;
+ }
+ }
+ else
+ {
+ dol_syslog('Propale::availability, etat propale incompatible');
+ $this->error='Etat propale incompatible '.$this->statut;
+ return -2;
+ }
+ }
/**
@@ -1997,6 +2034,8 @@ class Propal extends CommonObject
$this->cond_reglement_code = 'RECEP';
$this->mode_reglement_id = 7;
$this->mode_reglement_code = 'CHQ';
+ $this->availability_id = 1;
+ $this->availability_code = 'DSP';
$this->note_public='This is a comment (public)';
$this->note='This is a comment (private)';
// Lines
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 462b4e00a0f..3b55841a03d 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -1490,7 +1490,7 @@ class Form
}
}
- /**
+ /**
* \brief Charge dans cache la liste des délais de livraison possibles
* \return int Nb lignes chargees, 0 si deja chargees, <0 si ko
*/
@@ -1535,7 +1535,7 @@ class Form
* \param filtertype Pour filtre
* \param addempty Ajoute entree vide
*/
- function select_availability($selected='',$htmlname='availability',$filtertype='',$addempty=0)
+ function select_availability($selected='',$htmlname='availid',$filtertype='',$addempty=0)
{
global $langs,$user;
@@ -2139,7 +2139,7 @@ class Form
* \param htmlname Name of select html field
* \param addempty Ajoute entree vide
*/
- function form_availability($page, $selected='', $htmlname='availability', $addempty=0)
+ function form_availability($page, $selected='', $htmlname='availability', $addempty=0)
{
global $langs;
if ($htmlname != "none")
diff --git a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php
index cee4efe2527..aa81adcd207 100644
--- a/htdocs/includes/modules/propale/pdf_propale_azur.modules.php
+++ b/htdocs/includes/modules/propale/pdf_propale_azur.modules.php
@@ -441,6 +441,23 @@ class pdf_propale_azur extends ModelePDFPropales
$posy=$pdf->GetY()+4;
}
+
+ // Show availability conditions
+ if ($object->type != 2 && $object->availability_code || $object->availability)
+ {
+ $pdf->SetFont('','B', $default_font_size - 2);
+ $pdf->SetXY($this->marge_gauche, $posy);
+ $titre = $outputlangs->transnoentities("AvailabilityPeriod").':';
+ $pdf->MultiCell(80, 4, $titre, 0, 'L');
+ $pdf->SetTextColor(200,0,0);
+ $pdf->SetFont('','B', $default_font_size - 2);
+ $pdf->SetXY(82, $posy);
+ $lib_availability=$outputlangs->transnoentities("AvailabilityPeriod".$object->availability_code)!=('AvailabilityPeriod'.$object->availability_code)?$outputlangs->transnoentities("AvailabilityPeriod".$object->availability_code):$outputlangs->convToOutputCharset($object->availability);
+ $lib_availability=str_replace('\n',"\n",$lib_availability);
+ $pdf->MultiCell(80, 4, $lib_availability,0,'L');
+
+ $posy=$pdf->GetY()+1;
+ }
// Show payments conditions
if ($object->type != 2 && ($object->cond_reglement_code || $object->cond_reglement))