diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index ca23640aa4a555341e290693f79f14b35a508cc5..16384ffd6a3022ebf7bbe70b9307c416c753deee 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 33d14d18f8fed37c1446be99c22df6c62a87da7c..66927c9eb8f64abfb53b508ffc05230fb0af6060 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 '</td><td colspan="3">'; 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 '</td>'; print '</tr>'; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 045002f460cf18f6dcf5fe7fc39f8da74a232843..1e8cc5acf6bc15333c8d3996002f0a5389ee7ef8 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 462b4e00a0f94804535d63e3157abea45b0a2117..3b55841a03d80d817784afda3395671ba87367cd 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 cee4efe2527f32a36eb051357f41092ddee0c3aa..aa81adcd2078d3536c566aa8cd33a81268709171 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))