to answer to this query :

http://www.dolibarr.fr/forum/12-howto--aide/20784-delais-de-livraison#24930
you can create a delivery type and add it to your propal
This commit is contained in:
Philippe Grand 2011-04-06 15:36:45 +00:00
parent e05f0caf60
commit daaffd5f14
5 changed files with 78 additions and 21 deletions

View File

@ -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;

View File

@ -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>';

View File

@ -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

View File

@ -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")

View File

@ -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))