diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php
index 6318e4d5c54..b8ede4d7d14 100644
--- a/htdocs/core/actions_addupdatedelete.inc.php
+++ b/htdocs/core/actions_addupdatedelete.inc.php
@@ -93,8 +93,16 @@ if ($action == 'update' && ! empty($permissiontoadd))
if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields
// Set value to update
- if (in_array($object->fields[$key]['type'], array('text', 'html'))) $value = GETPOST($key,'none');
- else $value = GETPOST($key,'alpha');
+ if (in_array($object->fields[$key]['type'], array('text', 'html'))) {
+ $value = GETPOST($key,'none');
+ }
+ elseif ($object->fields[$key]['type']=='date') {
+ $value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
+ } elseif ($object->fields[$key]['type']=='datetime') {
+ $value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year'));
+ } else {
+ $value = GETPOST($key,'alpha');
+ }
if (preg_match('/^integer:/i', $object->fields[$key]['type']) && $value == '-1') $value=''; // This is an implicit foreign key field
if (! empty($object->fields[$key]['foreignkey']) && $value == '-1') $value=''; // This is an explicit foreign key field
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index d55e564d774..388dfe9799b 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -5371,7 +5371,7 @@ abstract class CommonObject
$label = $val['label'];
$type = $val['type'];
$size = $val['css'];
-
+
// Convert var to be able to share same code than showOutputField of extrafields
if (preg_match('/varchar\((\d+)\)/', $type, $reg))
{
@@ -6047,7 +6047,7 @@ abstract class CommonObject
{
if(is_array($info))
{
- if(isset($info['type']) && ($info['type']=='int' || $info['type']=='integer' )) return true;
+ if(isset($info['type']) && ($info['type']=='int' || preg_match('/^integer/i',$info['type']) ) ) return true;
else return false;
}
else return false;
diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php
index f1d407d3bba..a6c94d79780 100644
--- a/htdocs/core/class/html.formprojet.class.php
+++ b/htdocs/core/class/html.formprojet.class.php
@@ -91,7 +91,7 @@ class FormProjets
}
else
{
- $out.=$this->select_projects_list($socid, $selected, $htmlname, $maxlength, $option_only, $show_empty, $discard_closed, $forcefocus, $disabled, 0, $filterkey, 1, $forceaddid, $htmlid);
+ $out.=$this->select_projects_list($socid, $selected, $htmlname, $maxlength, $option_only, $show_empty, $discard_closed, $forcefocus, $disabled, 0, $filterkey, 1, $forceaddid, $htmlid, $morecss);
}
if ($discard_closed)
{
@@ -177,7 +177,7 @@ class FormProjets
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$comboenhancement = ajax_combobox($htmlid, array(), 0, $forcefocus);
$out.=$comboenhancement;
- $morecss='minwidth100 maxwidth500';
+ $morecss.=' minwidth100';
}
if (empty($option_only)) {
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index 077b6c8ba64..15a262654f4 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -1257,9 +1257,18 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
if (! empty($conf->stock->enabled))
{
$langs->load("stocks");
- $newmenu->add("/product/inventory/list.php?leftmenu=stock", $langs->trans("Inventory"), 0, $user->rights->stock->lire, '', $mainmenu, 'stock');
- $newmenu->add("/product/inventory/card.php?action=create", $langs->trans("NewInventory"), 1, $user->rights->stock->creer);
- $newmenu->add("/product/inventory/list.php", $langs->trans("List"), 1, $user->rights->stock->lire);
+ if (empty($conf->global->MAIN_USE_ADVANCED_PERMS))
+ {
+ $newmenu->add("/product/inventory/list.php?leftmenu=stock", $langs->trans("Inventory"), 0, $user->rights->stock->lire, '', $mainmenu, 'stock');
+ $newmenu->add("/product/inventory/card.php?action=create", $langs->trans("NewInventory"), 1, $user->rights->stock->creer);
+ $newmenu->add("/product/inventory/list.php", $langs->trans("List"), 1, $user->rights->stock->lire);
+ }
+ else
+ {
+ $newmenu->add("/product/inventory/list.php?leftmenu=stock", $langs->trans("Inventory"), 0, $user->rights->stock->advance_inventory->read, '', $mainmenu, 'stock');
+ $newmenu->add("/product/inventory/card.php?action=create", $langs->trans("NewInventory"), 1, $user->rights->stock->advance_inventory->write);
+ $newmenu->add("/product/inventory/list.php", $langs->trans("List"), 1, $user->rights->stock->advance_inventory->read);
+ }
}
}
diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php
index 6cebfb0fe2d..34b78e4eb80 100644
--- a/htdocs/expensereport/card.php
+++ b/htdocs/expensereport/card.php
@@ -52,22 +52,15 @@ $action=GETPOST('action','aZ09');
$cancel=GETPOST('cancel','alpha');
$confirm = GETPOST('confirm', 'alpha');
-$date_start = dol_mktime(0, 0, 0, GETPOST('date_debutmonth'), GETPOST('date_debutday'), GETPOST('date_debutyear'));
-$date_end = dol_mktime(0, 0, 0, GETPOST('date_finmonth'), GETPOST('date_finday'), GETPOST('date_finyear'));
-$date = dol_mktime(0, 0, 0, GETPOST('datemonth'), GETPOST('dateday'), GETPOST('dateyear'));
-$fk_projet=GETPOST('fk_projet');
-$vatrate=GETPOST('vatrate');
+$date_start = dol_mktime(0, 0, 0, GETPOST('date_debutmonth','int'), GETPOST('date_debutday','int'), GETPOST('date_debutyear','int'));
+$date_end = dol_mktime(0, 0, 0, GETPOST('date_finmonth','int'), GETPOST('date_finday','int'), GETPOST('date_finyear','int'));
+$date = dol_mktime(0, 0, 0, GETPOST('datemonth','int'), GETPOST('dateday','int'), GETPOST('dateyear','int'));
+$fk_projet=GETPOST('fk_projet','int');
+$vatrate=GETPOST('vatrate','alpha');
$ref=GETPOST("ref",'alpha');
-$comments=GETPOST('comments');
+$comments=GETPOST('comments','none');
$fk_c_type_fees=GETPOST('fk_c_type_fees','int');
-
-// If socid provided by ajax company selector
-if (! empty($_REQUEST['socid_id']))
-{
- $_GET['socid'] = $_GET['socid_id'];
- $_POST['socid'] = $_POST['socid_id'];
- $_REQUEST['socid'] = $_REQUEST['socid_id'];
-}
+$socid = GETPOST('socid','int')?GETPOST('socid','int'):GETPOST('socid_id','int');
// Security check
$id=GETPOST("id",'int');
@@ -154,7 +147,7 @@ if (empty($reshook))
// Action clone object
if ($action == 'confirm_clone' && $confirm == 'yes' && $user->rights->expensereport->creer)
{
- if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers'))
+ if (1==0 && ! GETPOST('clone_content','alpha') && ! GETPOST('clone_receivers','alpha'))
{
setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors');
}
@@ -181,7 +174,7 @@ if (empty($reshook))
}
}
- if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->supprimer)
+ if ($action == 'confirm_delete' && GETPOST("confirm",'alpha') == "yes" && $id > 0 && $user->rights->expensereport->supprimer)
{
$object = new ExpenseReport($db);
$result = $object->fetch($id);
@@ -288,7 +281,7 @@ if (empty($reshook))
{
// Fill array 'array_options' with data from update form
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
- $ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute'));
+ $ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute', 'alpha'));
if ($ret < 0) $error++;
if (! $error)
@@ -313,7 +306,7 @@ if (empty($reshook))
$action = 'edit_extras';
}
- if ($action == "confirm_validate" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->creer)
+ if ($action == "confirm_validate" && GETPOST("confirm", 'alpha') == "yes" && $id > 0 && $user->rights->expensereport->creer)
{
$error = 0;
@@ -439,7 +432,7 @@ if (empty($reshook))
}
}
- if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->creer)
+ if ($action == "confirm_save_from_refuse" && GETPOST("confirm", 'alpha') == "yes" && $id > 0 && $user->rights->expensereport->creer)
{
$object = new ExpenseReport($db);
$object->fetch($id);
@@ -556,7 +549,7 @@ if (empty($reshook))
}
// Approve
- if ($action == "confirm_approve" && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->approve)
+ if ($action == "confirm_approve" && GETPOST("confirm", 'alpha') == "yes" && $id > 0 && $user->rights->expensereport->approve)
{
$object = new ExpenseReport($db);
$object->fetch($id);
@@ -679,12 +672,12 @@ if (empty($reshook))
setEventMessages($object->error, $object->errors, 'errors');
}
- if ($action == "confirm_refuse" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->approve)
+ if ($action == "confirm_refuse" && GETPOST('confirm', 'alpha')=="yes" && $id > 0 && $user->rights->expensereport->approve)
{
$object = new ExpenseReport($db);
$object->fetch($id);
- $result = $object->setDeny($user,GETPOST('detail_refuse'));
+ $result = $object->setDeny($user, GETPOST('detail_refuse', 'alpha'));
if ($result > 0)
{
@@ -800,14 +793,14 @@ if (empty($reshook))
}
//var_dump($user->id == $object->fk_user_validator);exit;
- if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && GETPOST('detail_cancel') && $id > 0 && $user->rights->expensereport->creer)
+ if ($action == "confirm_cancel" && GETPOST('confirm', 'alpha')=="yes" && GETPOST('detail_cancel', 'alpha') && $id > 0 && $user->rights->expensereport->creer)
{
$object = new ExpenseReport($db);
$object->fetch($id);
if ($user->id == $object->fk_user_valid || $user->id == $object->fk_user_author)
{
- $result = $object->set_cancel($user,GETPOST('detail_cancel'));
+ $result = $object->set_cancel($user, GETPOST('detail_cancel', 'alpha'));
if ($result > 0)
{
@@ -923,7 +916,7 @@ if (empty($reshook))
}
}
- if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->creer)
+ if ($action == "confirm_brouillonner" && GETPOST('confirm', 'alpha')=="yes" && $id > 0 && $user->rights->expensereport->creer)
{
$object = new ExpenseReport($db);
$object->fetch($id);
@@ -1091,10 +1084,10 @@ if (empty($reshook))
if (empty($vatrate)) $vatrate = "0.000";
$vatrate = price2num($vatrate);
- $value_unit=price2num(GETPOST('value_unit'),'MU');
- $fk_c_exp_tax_cat = GETPOST('fk_c_exp_tax_cat');
+ $value_unit=price2num(GETPOST('value_unit', 'alpha'),'MU');
+ $fk_c_exp_tax_cat = GETPOST('fk_c_exp_tax_cat', 'int');
- $qty = GETPOST('qty','int');
+ $qty = GETPOST('qty','int');
if (empty($qty)) $qty=1;
if (! $fk_c_type_fees > 0)
@@ -1128,7 +1121,7 @@ if (empty($reshook))
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
}
// Si aucun prix n'est rentré
- if($value_unit==0)
+ if ($value_unit==0)
{
$error++;
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("PriceUTTC")), null, 'errors');
@@ -1175,17 +1168,17 @@ if (empty($reshook))
$action='';
}
- if ($action == 'confirm_delete_line' && GETPOST("confirm") == "yes" && $user->rights->expensereport->creer)
+ if ($action == 'confirm_delete_line' && GETPOST("confirm", 'alpha') == "yes" && $user->rights->expensereport->creer)
{
$object = new ExpenseReport($db);
$object->fetch($id);
$object_ligne = new ExpenseReportLine($db);
- $object_ligne->fetch(GETPOST("rowid"));
+ $object_ligne->fetch(GETPOST("rowid", 'int'));
$total_ht = $object_ligne->total_ht;
$total_tva = $object_ligne->total_tva;
- $result=$object->deleteline(GETPOST("rowid"), $user);
+ $result=$object->deleteline(GETPOST("rowid", 'int'), $user);
if ($result >= 0)
{
if ($result > 0)
@@ -1224,19 +1217,19 @@ if (empty($reshook))
$object->fetch($id);
$rowid = $_POST['rowid'];
- $type_fees_id = GETPOST('fk_c_type_fees');
- $fk_c_exp_tax_cat = GETPOST('fk_c_exp_tax_cat');
+ $type_fees_id = GETPOST('fk_c_type_fees', 'int');
+ $fk_c_exp_tax_cat = GETPOST('fk_c_exp_tax_cat', 'int');
$projet_id = $fk_projet;
- $comments = GETPOST('comments');
- $qty = GETPOST('qty');
- $value_unit = GETPOST('value_unit');
- $vatrate = GETPOST('vatrate');
+ $comments = GETPOST('comments', 'none');
+ $qty = GETPOST('qty', 'int');
+ $value_unit = price2num(GETPOST('value_unit', 'alpha'), 'MU');
+ $vatrate = GETPOST('vatrate', 'alpha');
// if VAT is not used in Dolibarr, set VAT rate to 0 because VAT rate is necessary.
if (empty($vatrate)) $vatrate = "0.000";
$vatrate = price2num($vatrate);
- if (! GETPOST('fk_c_type_fees') > 0)
+ if (! GETPOST('fk_c_type_fees', 'int') > 0)
{
$error++;
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors');
@@ -1352,7 +1345,7 @@ if ($action == 'create')
print '
'.$langs->trans("User").' | ';
print '';
$defaultselectuser=$user->id;
- if (GETPOST('fk_user_author') > 0) $defaultselectuser=GETPOST('fk_user_author');
+ if (GETPOST('fk_user_author', 'int') > 0) $defaultselectuser=GETPOST('fk_user_author', 'int');
$include_users = 'hierarchyme';
if (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->expensereport->writeall_advance)) $include_users=array();
$s=$form->select_dolusers($defaultselectuser, "fk_user_author", 0, "", 0, $include_users);
@@ -1370,7 +1363,7 @@ if ($action == 'create')
{
$defaultselectuser=$user->fk_user; // Will work only if supervisor has permission to approve so is inside include_users
if (! empty($conf->global->EXPENSEREPORT_DEFAULT_VALIDATOR)) $defaultselectuser=$conf->global->EXPENSEREPORT_DEFAULT_VALIDATOR; // Can force default approver
- if (GETPOST('fk_user_validator') > 0) $defaultselectuser=GETPOST('fk_user_validator');
+ if (GETPOST('fk_user_validator', 'int') > 0) $defaultselectuser=GETPOST('fk_user_validator', 'int');
$s=$form->select_dolusers($defaultselectuser, "fk_user_validator", 1, "", 0, $include_users);
print $form->textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate"));
}
@@ -1628,7 +1621,7 @@ else
if ($action == 'delete_line')
{
- $formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id."&rowid=".GETPOST('rowid'),$langs->trans("DeleteLine"),$langs->trans("ConfirmDeleteLine"),"confirm_delete_line",'','yes',1);
+ $formconfirm=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id."&rowid=".GETPOST('rowid','int'),$langs->trans("DeleteLine"),$langs->trans("ConfirmDeleteLine"),"confirm_delete_line",'','yes',1);
}
// Print form confirm
@@ -2004,7 +1997,7 @@ else
{
$numline = $i + 1;
- if ($action != 'editline' || $line->rowid != GETPOST('rowid'))
+ if ($action != 'editline' || $line->rowid != GETPOST('rowid', 'int'))
{
print ' | ';
@@ -2035,15 +2028,14 @@ else
print dol_getIdFromCode($db, $line->fk_c_exp_tax_cat, 'c_exp_tax_cat', 'rowid', 'label');
print '';
}
- // print '| '.$langs->trans("TF_".strtoupper(empty($objp->type_fees_libelle)?'OTHER':$objp->type_fees_libelle)).' | ';
- print '';
+ print ' | ';
$labeltype = ($langs->trans(($line->type_fees_code)) == $line->type_fees_code ? $line->type_fees_libelle : $langs->trans($line->type_fees_code));
print $labeltype;
print ' | ';
- print ''.$line->comments.' | ';
+ print ''.dol_escape_htmltag($line->comments).' | ';
print ''.vatrate($line->vatrate,true).' | ';
print ''.price($line->value_unit).' | ';
- print ''.$line->qty.' | ';
+ print ''.dol_escape_htmltag($line->qty).' | ';
if ($action != 'editline')
{
@@ -2069,7 +2061,7 @@ else
print '
';
}
- if ($action == 'editline' && $line->rowid == GETPOST('rowid'))
+ if ($action == 'editline' && $line->rowid == GETPOST('rowid', 'int'))
{
print '';
@@ -2103,7 +2095,7 @@ else
// Add comments
print '| ';
- print '';
+ print '';
print ' | ';
// VAT
@@ -2113,12 +2105,12 @@ else
// Unit price
print '';
- print '';
+ print '';
print ' | ';
// Quantity
print '';
- print '';
+ print '';
print ' | ';
if ($action != 'editline')
@@ -2154,7 +2146,7 @@ else
print ' | ';
print '
';
- print '';
+ print '
';
print ' | ';
@@ -2167,7 +2159,7 @@ else
if (! empty($conf->projet->enabled))
{
print '';
- $formproject->select_projects(-1, $fk_projet, 'fk_projet', 0, 0, 1, 1);
+ $formproject->select_projects(-1, $fk_projet, 'fk_projet', 0, 0, 1, 1, 0, 0, 0, '', 0, 0, 'maxwidth300');
print ' | ';
}
@@ -2186,7 +2178,7 @@ else
// Add comments
print '';
- print '';
+ print '';
print ' | ';
// Select VAT
@@ -2198,12 +2190,12 @@ else
// Unit price
print '';
- print '';
+ print '';
print ' | ';
// Quantity
print '';
- print ''; // We must be able to enter decimal qty
+ print ''; // We must be able to enter decimal qty
print ' | ';
if ($action != 'editline')
@@ -2409,7 +2401,7 @@ print '';
// Select mail models is same action as presend
-if (GETPOST('modelselected')) {
+if (GETPOST('modelselected', 'alpha')) {
$action = 'presend';
}
diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php
index b1523f3bbf9..6bbd45eef14 100644
--- a/htdocs/expensereport/class/expensereport.class.php
+++ b/htdocs/expensereport/class/expensereport.class.php
@@ -2482,24 +2482,22 @@ class ExpenseReportLine
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'expensereport_det';
$sql.= ' (fk_expensereport, fk_c_type_fees, fk_projet,';
$sql.= ' tva_tx, vat_src_code, comments, qty, value_unit, total_ht, total_tva, total_ttc, date, rule_warning_message, fk_c_exp_tax_cat)';
- $sql.= " VALUES (".$this->fk_expensereport.",";
- $sql.= " ".$this->fk_c_type_fees.",";
- $sql.= " ".($this->fk_projet>0?$this->fk_projet:'null').",";
- $sql.= " ".$this->vatrate.",";
+ $sql.= " VALUES (".$this->db->escape($this->fk_expensereport).",";
+ $sql.= " ".$this->db->escape($this->fk_c_type_fees).",";
+ $sql.= " ".$this->db->escape($this->fk_projet>0?$this->fk_projet:'null').",";
+ $sql.= " ".$this->db->escape($this->vatrate).",";
$sql.= " '".$this->db->escape($this->vat_src_code)."',";
$sql.= " '".$this->db->escape($this->comments)."',";
- $sql.= " ".$this->qty.",";
- $sql.= " ".$this->value_unit.",";
- $sql.= " ".$this->total_ht.",";
- $sql.= " ".$this->total_tva.",";
- $sql.= " ".$this->total_ttc.",";
+ $sql.= " ".$this->db->escape($this->qty).",";
+ $sql.= " ".$this->db->escape($this->value_unit).",";
+ $sql.= " ".$this->db->escape($this->total_ht).",";
+ $sql.= " ".$this->db->escape($this->total_tva).",";
+ $sql.= " ".$this->db->escape($this->total_ttc).",";
$sql.= "'".$this->db->idate($this->date)."',";
$sql.= " '".$this->db->escape($this->rule_warning_message)."',";
- $sql.= " ".$this->fk_c_exp_tax_cat;
+ $sql.= " ".$this->db->escape($this->fk_c_exp_tax_cat);
$sql.= ")";
- dol_syslog("ExpenseReportLine::insert sql=".$sql);
-
$resql=$this->db->query($sql);
if ($resql)
{
@@ -2603,21 +2601,21 @@ class ExpenseReportLine
// Update line in database
$sql = "UPDATE ".MAIN_DB_PREFIX."expensereport_det SET";
$sql.= " comments='".$this->db->escape($this->comments)."'";
- $sql.= ",value_unit=".$this->value_unit;
- $sql.= ",qty=".$this->qty;
+ $sql.= ",value_unit=".$this->db->escape($this->value_unit);
+ $sql.= ",qty=".$this->db->escape($this->qty);
$sql.= ",date='".$this->db->idate($this->date)."'";
- $sql.= ",total_ht=".$this->total_ht."";
- $sql.= ",total_tva=".$this->total_tva."";
- $sql.= ",total_ttc=".$this->total_ttc."";
- $sql.= ",tva_tx=".$this->vatrate;
+ $sql.= ",total_ht=".$this->db->escape($this->total_ht)."";
+ $sql.= ",total_tva=".$this->db->escape($this->total_tva)."";
+ $sql.= ",total_ttc=".$this->db->escape($this->total_ttc)."";
+ $sql.= ",tva_tx=".$this->db->escape($this->vatrate);
$sql.= ",vat_src_code='".$this->db->escape($this->vat_src_code)."'";
$sql.= ",rule_warning_message='".$this->db->escape($this->rule_warning_message)."'";
- $sql.= ",fk_c_exp_tax_cat=".$this->fk_c_exp_tax_cat;
- if ($this->fk_c_type_fees) $sql.= ",fk_c_type_fees=".$this->fk_c_type_fees;
+ $sql.= ",fk_c_exp_tax_cat=".$this->db->escape($this->fk_c_exp_tax_cat);
+ if ($this->fk_c_type_fees) $sql.= ",fk_c_type_fees=".$this->db->escape($this->fk_c_type_fees);
else $sql.= ",fk_c_type_fees=null";
- if ($this->fk_projet) $sql.= ",fk_projet=".$this->fk_projet;
+ if ($this->fk_projet) $sql.= ",fk_projet=".$this->db->escape($this->fk_projet);
else $sql.= ",fk_projet=null";
- $sql.= " WHERE rowid = ".$this->rowid;
+ $sql.= " WHERE rowid = ".$this->db->escape($this->rowid);
dol_syslog("ExpenseReportLine::update sql=".$sql);
diff --git a/htdocs/expensereport/note.php b/htdocs/expensereport/note.php
index 8376733d634..a715d85f6a6 100644
--- a/htdocs/expensereport/note.php
+++ b/htdocs/expensereport/note.php
@@ -19,9 +19,9 @@
*/
/**
- * \file htdocs/commande/note.php
- * \ingroup commande
- * \brief Fiche de notes sur une commande
+ * \file htdocs/expensereport/note.php
+ * \ingroup expensereport
+ * \brief Tab for notes on expense reports
*/
require '../main.inc.php';
@@ -90,7 +90,7 @@ if ($id > 0 || ! empty($ref))
print '';
print '
';
-
+var_dump($value_public);
$cssclass="titlefield";
include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php';
diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index 6e3604a4e68..ec831b91458 100644
--- a/htdocs/product/class/product.class.php
+++ b/htdocs/product/class/product.class.php
@@ -1649,7 +1649,7 @@ class Product extends CommonObject
* @param string $newdefaultvatcode Default vat code
* @return int <0 if KO, >0 if OK
*/
- function updatePrice($newprice, $newpricebase, $user, $newvat='',$newminprice='', $level=0, $newnpr=0, $newpbq=0, $ignore_autogen=0, $localtaxes_array=array(), $newdefaultvatcode='')
+ function updatePrice($newprice, $newpricebase, $user, $newvat='',$newminprice=0, $level=0, $newnpr=0, $newpbq=0, $ignore_autogen=0, $localtaxes_array=array(), $newdefaultvatcode='')
{
global $conf,$langs;
@@ -1685,7 +1685,7 @@ class Product extends CommonObject
$price = price2num($newprice) / (1 + ($newvat / 100));
$price = price2num($price,'MU');
- if ($newminprice!='' || $newminprice==0)
+ if ($newminprice != '' || $newminprice == 0)
{
$price_min_ttc = price2num($newminprice,'MU');
$price_min = price2num($newminprice) / (1 + ($newvat / 100));
@@ -2271,6 +2271,35 @@ class Product extends CommonObject
}
}
}
+
+ // If stock decrease is on invoice validation, the theorical stock continue to
+ // count the orders to ship in theorical stock when some are already removed b invoice validation.
+ // If option DECREASE_ONLY_UNINVOICEDPRODUCTS is on, we make a compensation.
+ if (! empty($conf->global->STOCK_CALCULATE_ON_BILL))
+ {
+ if (! empty($conf->global->DECREASE_ONLY_UNINVOICEDPRODUCTS))
+ {
+ $adeduire = 0;
+ $sql = "SELECT sum(fd.qty) as count FROM ".MAIN_DB_PREFIX."facturedet fd ";
+ $sql .= " JOIN ".MAIN_DB_PREFIX."facture f ON fd.fk_facture = f.rowid ";
+ $sql .= " JOIN ".MAIN_DB_PREFIX."element_element el ON el.fk_target = f.rowid and el.targettype = 'facture' and sourcetype = 'commande'";
+ $sql .= " JOIN ".MAIN_DB_PREFIX."commande c ON el.fk_source = c.rowid ";
+ $sql .= " WHERE c.fk_statut IN (".$filtrestatut.") AND c.facture = 0 AND fd.fk_product = ".$this->id;
+ dol_syslog(__METHOD__.":: sql $sql", LOG_NOTICE);
+
+ $resql = $this->db->query($sql);
+ if ( $resql )
+ {
+ if ($this->db->num_rows($resql) > 0)
+ {
+ $obj = $this->db->fetch_object($resql);
+ $adeduire += $obj->count;
+ }
+ }
+
+ $this->stats_commande['qty'] -= $adeduire;
+ }
+ }
return 1;
}
diff --git a/htdocs/product/inventory/card.php b/htdocs/product/inventory/card.php
index e393721c47d..30bb3312576 100644
--- a/htdocs/product/inventory/card.php
+++ b/htdocs/product/inventory/card.php
@@ -36,6 +36,15 @@ $action = GETPOST('action', 'alpha');
$cancel = GETPOST('cancel', 'aZ09');
$backtopage = GETPOST('backtopage', 'alpha');
+if (empty($conf->global->MAIN_USE_ADVANCED_PERMS))
+{
+ $result = restrictedArea($user, 'stock', $id);
+}
+else
+{
+ $result = restrictedArea($user, 'stock', $id, '', 'advance_inventory');
+}
+
// Initialize technical objects
$object=new Inventory($db);
$extrafields = new ExtraFields($db);
@@ -66,6 +75,16 @@ $extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
// Load object
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
+if (empty($conf->global->MAIN_USE_ADVANCED_PERMS))
+{
+ $permissiontoadd = $user->rights->stock->write;
+ $permissiontodelete = $user->rights->stock->write;
+}
+else
+{
+ $permissiontoadd = $user->rights->stock->advance_inventory->create;
+ $permissiontodelete = $user->rights->stock->advance_inventory->write;
+}
/*
@@ -80,8 +99,6 @@ if (empty($reshook))
{
$error=0;
- $permissiontoadd = $user->rights->stock->creer;
- $permissiontodelete = $user->rights->stock->supprimer;
$backurlforlist = DOL_URL_ROOT.'/product/inventory/list.php';
// Actions cancel, add, update or delete
@@ -327,7 +344,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
// Send
print '
id . '&action=presend&mode=init#formmailbeforetitle">' . $langs->trans('SendMail') . ''."\n";
- if ($user->rights->inventory->write)
+ if ($permissiontoadd)
{
print '
id.'&action=edit">'.$langs->trans("Modify").''."\n";
}
@@ -336,7 +353,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print '
'.$langs->trans('Modify').''."\n";
}
- if ($user->rights->inventory->delete)
+ if ($permissiontodelete)
{
print '
id.'&action=delete">'.$langs->trans('Delete').''."\n";
}
diff --git a/htdocs/product/inventory/list.php b/htdocs/product/inventory/list.php
index cb67168b214..f3089099efe 100644
--- a/htdocs/product/inventory/list.php
+++ b/htdocs/product/inventory/list.php
@@ -72,6 +72,14 @@ if ($user->societe_id > 0)
//$socid = $user->societe_id;
accessforbidden();
}
+if (empty($conf->global->MAIN_USE_ADVANCED_PERMS))
+{
+ $result = restrictedArea($user, 'stock', $objectid);
+}
+else
+{
+ $result = restrictedArea($user, 'stock', $objectid, '', 'advance_inventory');
+}
// Initialize array of search criterias
$search_all=trim(GETPOST("search_all",'alpha'));