Merge branch 'develop' of https://github.com/Dolibarr/dolibarr into develop
This commit is contained in:
commit
cf945f0187
@ -49,6 +49,7 @@ For users:
|
||||
- New: [ task #814 ] Add extrafield feature into Project/project tasks module
|
||||
- New: [ task #770 ] Add ODT document generation for Projects module
|
||||
- New: [ task #741 ] Add intervention box
|
||||
- New: [ task #826 ] Optionnal increase stock when deleting an invoice already validated
|
||||
|
||||
For translators:
|
||||
- Update language files.
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* 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
|
||||
@ -67,6 +68,7 @@ if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL'
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", '','chaine',0,'',$conf->entity);
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", '','chaine',0,'',$conf->entity);
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", '','chaine',0,'',$conf->entity);
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_DELETE_INVOICE", '','chaine',0,'',$conf->entity);
|
||||
if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_BILL','alpha'),'chaine',0,'',$conf->entity);
|
||||
if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity);
|
||||
if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER','alpha'),'chaine',0,'',$conf->entity);
|
||||
@ -239,6 +241,19 @@ if (! empty($conf->fournisseur->enabled))
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
||||
print "</form>\n</td>\n</tr>\n";
|
||||
}
|
||||
if (! empty($conf->facture->enabled))
|
||||
{
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td width="60%">'.$langs->trans("ReStockOnDeleteInvoice").'</td>';
|
||||
print '<td width="160" align="right">';
|
||||
print "<form method=\"post\" action=\"stock.php\">";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_DELETE_INVOICE\">";
|
||||
print $form->selectyesno("STOCK_CALCULATE_ON_DELETE_INVOICE",$conf->global->STOCK_CALCULATE_ON_DELETE_INVOICE,1);
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
||||
print "</form>\n</td>\n</tr>\n";
|
||||
}
|
||||
|
||||
print '</table>';
|
||||
|
||||
|
||||
@ -1,34 +1,34 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
|
||||
* Copyright (C) 2005-2013 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||
* Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com>
|
||||
* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/commande/fiche.php
|
||||
* \ingroup commande
|
||||
* \brief Page to show customer order
|
||||
*/
|
||||
* \ingroup commande
|
||||
* \brief Page to show customer order
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
|
||||
@ -541,7 +541,7 @@ else if ($action == 'setnote_public' && $user->rights->commande->creer)
|
||||
|
||||
else if ($action == 'setnote_private' && $user->rights->commande->creer)
|
||||
{
|
||||
$result=$object->update_note_rivate(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES));
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES), '_private');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
@ -1121,7 +1121,7 @@ else if ($action == 'print_file' AND $user->rights->printipp->use)
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/dolprintipp.class.php';
|
||||
$printer = new dolPrintIPP($db,$conf->global->PRINTIPP_HOST,$conf->global->PRINTIPP_PORT,$user->login,$conf->global->PRINTIPP_USER,$conf->global->PRINTIPP_PASSWORD);
|
||||
$printer->print_file(GETPOST('file','alpha'),GETPOST('printer','alpha'));
|
||||
$printer->print_file(GETPOST('file','alpha'),GETPOST('printer','alpha'));
|
||||
}
|
||||
|
||||
else if ($action == 'update_extras')
|
||||
@ -2135,49 +2135,24 @@ else
|
||||
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
|
||||
if (empty($reshook) && ! empty($extrafields->attribute_label))
|
||||
{
|
||||
|
||||
if ($action == 'edit_extras')
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
}
|
||||
|
||||
// TODO : use showOptionals($extrafields) function
|
||||
foreach($extrafields->attribute_label as $key=>$label)
|
||||
{
|
||||
$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]);
|
||||
if ($extrafields->attribute_type[$key] == 'separate')
|
||||
{
|
||||
print $extrafields->showSeparator($key);
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<tr><td';
|
||||
if (! empty($extrafields->attribute_required[$key])) print ' class="fieldrequired"';
|
||||
print '>'.$label.'</td><td colspan="3">';
|
||||
|
||||
// Convert date into timestamp format
|
||||
if (in_array($extrafields->attribute_type[$key],array('date','datetime')))
|
||||
{
|
||||
$value = isset($_POST["options_".$key])?dol_mktime($_POST["options_".$key."hour"], $_POST["options_".$key."min"], 0, $_POST["options_".$key."month"], $_POST["options_".$key."day"], $_POST["options_".$key."year"]):$object->array_options['options_'.$key];
|
||||
}
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->propal->creer)
|
||||
{
|
||||
print $extrafields->showInputField($key,$value);
|
||||
}
|
||||
else
|
||||
{
|
||||
print $extrafields->showOutputField($key,$value);
|
||||
}
|
||||
print '</td></tr>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
if(count($extrafields->attribute_label) > 0) {
|
||||
|
||||
if ($action == 'edit_extras')
|
||||
{
|
||||
print '<form enctype="multipart/form-data" action="'.$_SERVER["PHP_SELF"].'" method="post" name="formsoc">';
|
||||
print '<input type="hidden" name="action" value="update_extras">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->propal->creer) {
|
||||
print $object->showOptionals($extrafields,'edit');
|
||||
}
|
||||
else {
|
||||
print $object->showOptionals($extrafields);
|
||||
}
|
||||
|
||||
if ($action == 'edit_extras' && $user->rights->propal->creer)
|
||||
{
|
||||
print '<tr><td></td><td>';
|
||||
@ -2307,7 +2282,7 @@ else
|
||||
|
||||
/*
|
||||
* Boutons actions
|
||||
*/
|
||||
*/
|
||||
if ($action != 'presend')
|
||||
{
|
||||
if ($user->societe_id == 0 && $action <> 'editline')
|
||||
@ -2447,7 +2422,7 @@ else
|
||||
|
||||
/*
|
||||
* Documents generes
|
||||
*/
|
||||
*/
|
||||
$comref = dol_sanitizeFileName($object->ref);
|
||||
$file = $conf->commande->dir_output . '/' . $comref . '/' . $comref . '.pdf';
|
||||
$relativepath = $comref.'/'.$comref.'.pdf';
|
||||
@ -2461,7 +2436,7 @@ else
|
||||
|
||||
/*
|
||||
* Linked object block
|
||||
*/
|
||||
*/
|
||||
$somethingshown=$object->showLinkedObjectBlock();
|
||||
|
||||
print '</div><div class="fichehalfright"><div class="ficheaddleft">';
|
||||
@ -2473,7 +2448,7 @@ else
|
||||
$somethingshown=$formactions->showactions($object,'order',$socid);
|
||||
|
||||
//print '</td></tr></table>';
|
||||
print '</div></div></div>';
|
||||
print '</div></div></div>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -50,7 +50,7 @@ $object->fetch($id,$ref);
|
||||
|
||||
if ($action == 'setnote_public' && $user->rights->contrat->creer)
|
||||
{
|
||||
$result=$object->update_note(dol_html_entity_decode(dol_htmlcleanlastbr(GETPOST('note_public')), ENT_QUOTES),'_pubic');
|
||||
$result=$object->update_note(dol_html_entity_decode(dol_htmlcleanlastbr(GETPOST('note_public')), ENT_QUOTES),'_public');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
|
||||
@ -64,20 +64,23 @@ class box_produits_alerte_stock extends ModeleBoxes
|
||||
|
||||
if ($user->rights->produit->lire || $user->rights->service->lire)
|
||||
{
|
||||
$sql = "SELECT p.rowid, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, s.reel";
|
||||
$sql = "SELECT p.rowid, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte,";
|
||||
$sql.= " SUM(".$db->ifsql("s.reel IS NULL","0","s.reel").") as total_stock";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."product as p";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product";
|
||||
$sql.= ' WHERE p.entity IN ('.getEntity($productstatic->element, 1).')';
|
||||
$sql.= " AND p.tosell = 1";
|
||||
$sql.= " AND p.tosell = 1 AND p.seuil_stock_alerte > 0";
|
||||
if (empty($user->rights->produit->lire)) $sql.=' AND p.fk_product_type != 0';
|
||||
if (empty($user->rights->service->lire)) $sql.=' AND p.fk_product_type != 1';
|
||||
$sql.= " HAVING s.reel < p.seuil_stock_alerte";
|
||||
$sql.= $db->order('s.reel', 'DESC');
|
||||
$sql.= " GROUP BY p.rowid, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte";
|
||||
$sql.= " HAVING SUM(".$db->ifsql("s.reel IS NULL","0","s.reel").") < p.seuil_stock_alerte";
|
||||
$sql.= $db->order('p.seuil_stock_alerte', 'DESC');
|
||||
$sql.= $db->plimit($max, 0);
|
||||
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$langs->load("stocks");
|
||||
$num = $db->num_rows($result);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
@ -128,7 +131,8 @@ class box_produits_alerte_stock extends ModeleBoxes
|
||||
'text' => $price_base_type);
|
||||
|
||||
$this->info_box_contents[$i][4] = array('td' => 'align="center"',
|
||||
'text' => $objp->reel . ' / '.$objp->seuil_stock_alerte);
|
||||
'text' => $objp->total_stock . ' / '.$objp->seuil_stock_alerte,
|
||||
'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit")));
|
||||
|
||||
$this->info_box_contents[$i][5] = array('td' => 'align="right" width="18"',
|
||||
'text' => $productstatic->LibStatut($objp->tosell,3,0));
|
||||
@ -138,7 +142,7 @@ class box_produits_alerte_stock extends ModeleBoxes
|
||||
|
||||
$i++;
|
||||
}
|
||||
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedProducts"));
|
||||
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoTooLowStockProducts"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -165,7 +165,8 @@ class ModeleBoxes // Can't be abtract as it is instanciated to build "empty"
|
||||
print '</td><td class="nocellnopadd boxclose" nowrap="nowrap">';
|
||||
// The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object
|
||||
print img_picto($langs->trans("MoveBox",$this->box_id),'grip','class="boxhandle hideonsmartphone" style="cursor:move;"');
|
||||
print img_picto($langs->trans("Close",$this->box_id),'close','class="boxclose" style="cursor:pointer;" id="imgclose'.$this->box_id.'"');
|
||||
print img_picto($langs->trans("Close",$this->box_id),'close','class="boxclose" rel="x:y" style="cursor:pointer;" id="imgclose'.$this->box_id.'"');
|
||||
print '<input type="hidden" id="boxlabelentry'.$this->box_id.'" value="'.dol_escape_htmltag($head['text']).'">';
|
||||
print '</td></tr></table>';
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
@ -2310,7 +2310,7 @@ abstract class CommonObject
|
||||
/**
|
||||
* Function to say how many lines object contains
|
||||
*
|
||||
* @param int $predefined -1=All, 0=Count free product/service only, 1=Count predefined product/service only
|
||||
* @param int $predefined -1=All, 0=Count free product/service only, 1=Count predefined product/service only, 2=Count predefined product, 3=Count predefined service
|
||||
* @return int <0 if KO, 0 if no predefined products, nb of lines with predefined products if found
|
||||
*/
|
||||
function hasProductsOrServices($predefined=-1)
|
||||
@ -2323,6 +2323,8 @@ abstract class CommonObject
|
||||
if ($predefined == -1) $qualified=1;
|
||||
if ($predefined == 1 && $val->fk_product > 0) $qualified=1;
|
||||
if ($predefined == 0 && $val->fk_product <= 0) $qualified=1;
|
||||
if ($predefined == 2 && $val->fk_product > 0 && $val->product_type==0) $qualified=1;
|
||||
if ($predefined == 3 && $val->fk_product > 0 && $val->product_type==1) $qualified=1;
|
||||
if ($qualified) $nb++;
|
||||
}
|
||||
dol_syslog(get_class($this).'::hasProductsOrServices we found '.$nb.' qualified lines of products/servcies');
|
||||
|
||||
@ -893,9 +893,34 @@ class FormOther
|
||||
$selectboxlist=$form->selectarray('boxcombo', $arrayboxtoactivatelabel,'',1);
|
||||
}
|
||||
|
||||
// Javascript code for dynamic actions
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
{
|
||||
print '<script type="text/javascript" language="javascript">
|
||||
|
||||
// To update list of activated boxes
|
||||
function updateBoxOrder(closing) {
|
||||
var left_list = cleanSerialize(jQuery("#left").sortable("serialize"));
|
||||
var right_list = cleanSerialize(jQuery("#right").sortable("serialize"));
|
||||
var boxorder = \'A:\' + left_list + \'-B:\' + right_list;
|
||||
if (boxorder==\'A:A-B:B\' && closing == 1) // There is no more boxes on screen, and we are after a delete of a box so we must hide title
|
||||
{
|
||||
jQuery.ajax({
|
||||
url: \''.DOL_URL_ROOT.'/core/ajax/box.php?boxorder=\'+boxorder+\'&zone='.$areacode.'&userid=\'+'.$user->id.',
|
||||
async: false
|
||||
});
|
||||
// We force reload to be sure to get all boxes into list
|
||||
window.location.search=\'mainmenu='.GETPOST("mainmenu").'&leftmenu='.GETPOST('leftmenu').'&action=delbox\';
|
||||
}
|
||||
else
|
||||
{
|
||||
jQuery.ajax({
|
||||
url: \''.DOL_URL_ROOT.'/core/ajax/box.php?boxorder=\'+boxorder+\'&zone='.$areacode.'&userid=\'+'.$user->id.',
|
||||
async: true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
jQuery("#boxcombo").change(function() {
|
||||
var boxid=jQuery("#boxcombo").val();
|
||||
@ -910,10 +935,33 @@ class FormOther
|
||||
window.location.search=\'mainmenu='.GETPOST("mainmenu").'&leftmenu='.GETPOST('leftmenu').'&action=addbox&boxid=\'+boxid;
|
||||
}
|
||||
});';
|
||||
if (! count($arrayboxtoactivatelabel)) print 'jQuery("#boxcombo").hide();';
|
||||
print '
|
||||
});
|
||||
</script>';
|
||||
if (! count($arrayboxtoactivatelabel)) print 'jQuery("#boxcombo").hide();';
|
||||
print '
|
||||
|
||||
jQuery("#left, #right").sortable({
|
||||
/* placeholder: \'ui-state-highlight\', */
|
||||
handle: \'.boxhandle\',
|
||||
revert: \'invalid\',
|
||||
items: \'.box\',
|
||||
containment: \'.fiche\',
|
||||
connectWith: \'.connectedSortable\',
|
||||
stop: function(event, ui) {
|
||||
updateBoxOrder(0);
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(".boxclose").click(function() {
|
||||
var self = this; // because JQuery can modify this
|
||||
var boxid=self.id.substring(8);
|
||||
var label=jQuery(\'#boxlabelentry\'+boxid).val();
|
||||
jQuery(\'#boxto_\'+boxid).remove();
|
||||
// TODO Add id, label into combo list
|
||||
updateBoxOrder(1);
|
||||
});
|
||||
|
||||
});'."\n";
|
||||
|
||||
print '</script>'."\n";
|
||||
}
|
||||
|
||||
$nbboxactivated=count($boxidactivatedforuser);
|
||||
@ -996,59 +1044,6 @@ class FormOther
|
||||
|
||||
print "</td></tr>";
|
||||
print "</table>";
|
||||
|
||||
if ($conf->use_javascript_ajax)
|
||||
{
|
||||
print "\n";
|
||||
print '<script type="text/javascript" language="javascript">';
|
||||
// For moving
|
||||
print 'jQuery(function() {
|
||||
jQuery("#left, #right").sortable({
|
||||
/* placeholder: \'ui-state-highlight\', */
|
||||
handle: \'.boxhandle\',
|
||||
revert: \'invalid\',
|
||||
items: \'.box\',
|
||||
containment: \'.fiche\',
|
||||
connectWith: \'.connectedSortable\',
|
||||
stop: function(event, ui) {
|
||||
updateBoxOrder(0);
|
||||
}
|
||||
});
|
||||
});
|
||||
'."\n";
|
||||
// To update list of activated boxes
|
||||
print 'function updateBoxOrder(closing) {
|
||||
var left_list = cleanSerialize(jQuery("#left").sortable("serialize"));
|
||||
var right_list = cleanSerialize(jQuery("#right").sortable("serialize"));
|
||||
var boxorder = \'A:\' + left_list + \'-B:\' + right_list;
|
||||
if (boxorder==\'A:A-B:B\' && closing == 1) // There is no more boxes on screen, and we are after a delete of a box so we must hide title
|
||||
{
|
||||
jQuery.ajax({
|
||||
url: \''.DOL_URL_ROOT.'/core/ajax/box.php?boxorder=\'+boxorder+\'&zone='.$areacode.'&userid=\'+'.$user->id.',
|
||||
async: false
|
||||
});
|
||||
// We force reload to be sure to get all boxes into list
|
||||
window.location.search=\'mainmenu='.GETPOST("mainmenu").'&leftmenu='.GETPOST('leftmenu').'&action=delbox\';
|
||||
}
|
||||
else
|
||||
{
|
||||
jQuery.ajax({
|
||||
url: \''.DOL_URL_ROOT.'/core/ajax/box.php?boxorder=\'+boxorder+\'&zone='.$areacode.'&userid=\'+'.$user->id.',
|
||||
async: true
|
||||
});
|
||||
}
|
||||
}'."\n";
|
||||
// For closing
|
||||
print 'jQuery(document).ready(function() {
|
||||
jQuery(".boxclose").click(function() {
|
||||
var self = this; // because JQuery can modify this
|
||||
var boxid=self.id.substring(8);
|
||||
jQuery(\'#boxto_\'+boxid).remove();
|
||||
updateBoxOrder(1);
|
||||
});
|
||||
});'."\n";
|
||||
print '</script>'."\n";
|
||||
}
|
||||
}
|
||||
|
||||
return count($boxactivated);
|
||||
|
||||
@ -78,14 +78,15 @@ function user_prepare_head($object)
|
||||
$head[$h][2] = 'clicktodial';
|
||||
$h++;
|
||||
}
|
||||
|
||||
|
||||
// Show more tabs from modules
|
||||
// Entries must be declared in modules descriptor with line
|
||||
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
|
||||
// $this->tabs = array('entity:-tabname); to remove a tab
|
||||
complete_head_from_modules($conf,$langs,$object,$head,$h,'user');
|
||||
|
||||
if (! empty($user->societe_id))
|
||||
|
||||
//Info on users is visible only by internal user
|
||||
if (empty($user->societe_id))
|
||||
{
|
||||
$head[$h][0] = DOL_URL_ROOT.'/user/note.php?id='.$object->id;
|
||||
$head[$h][1] = $langs->trans("Note");
|
||||
|
||||
@ -1,7 +1,18 @@
|
||||
<?php
|
||||
/* Copyright (C) 2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* Licensed under the GNU GPL v3 or higher (See file gpl-3.0.html)
|
||||
* 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
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -184,10 +195,11 @@ class modOpenSurvey extends DolibarrModules
|
||||
*/
|
||||
function init($options='')
|
||||
{
|
||||
// Permissions
|
||||
$this->remove($options);
|
||||
|
||||
$sql = array();
|
||||
|
||||
$result=$this->load_tables();
|
||||
|
||||
return $this->_init($sql,$options);
|
||||
}
|
||||
|
||||
@ -205,20 +217,6 @@ class modOpenSurvey extends DolibarrModules
|
||||
|
||||
return $this->_remove($sql,$options);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create tables and keys required by module
|
||||
* Files mymodule.sql and mymodule.key.sql with create table and create keys
|
||||
* commands must be stored in directory /mymodule/sql/
|
||||
* This function is called by this->init.
|
||||
*
|
||||
* @return int <=0 if KO, >0 if OK
|
||||
*/
|
||||
function load_tables()
|
||||
{
|
||||
return $this->_load_tables('/opensurvey/sql/');
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@ -386,7 +386,7 @@ else if ($action == 'setnote_public' && $user->rights->ficheinter->creer)
|
||||
else if ($action == 'setnote_private' && $user->rights->ficheinter->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES));
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES), '_private');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
|
||||
@ -54,9 +54,9 @@ if ($action == 'setnote_public' && $user->rights->fournisseur->commande->creer)
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_public'), ENT_QUOTES),'_public');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
elseif ($action == 'setnote' && $user->rights->fournisseur->commande->creer)
|
||||
elseif ($action == 'setnote_private' && $user->rights->fournisseur->commande->creer)
|
||||
{
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note'), ENT_QUOTES));
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES), '_private');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
|
||||
@ -61,10 +61,10 @@ padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
input[type=text] {
|
||||
input[type=text], input[type=password] {
|
||||
border: 1px solid #ACBCBB;
|
||||
}
|
||||
input[type=text]:focus, textarea:focus, select:focus {
|
||||
input[type=text]:focus, input[type=password]:focus, textarea:focus, select:focus {
|
||||
border: 1px solid #ACBCBB;
|
||||
box-shadow: 0 0 5px #C091AF;
|
||||
}
|
||||
|
||||
@ -406,7 +406,7 @@ if (! empty($force_install_message))
|
||||
<tr class="hidesqlite">
|
||||
<td class="label" valign="top"><b><?php echo $langs->trans("Password"); ?></b>
|
||||
</td>
|
||||
<td class="label" valign="top"><input type="text" id="db_pass" autocomplete="off"
|
||||
<td class="label" valign="top"><input type="password" id="db_pass" autocomplete="off"
|
||||
name="db_pass"
|
||||
value="<?php
|
||||
//$autofill=((! empty($dolibarr_main_db_pass))?$dolibarr_main_db_pass:$force_install_databasepass);
|
||||
@ -460,7 +460,7 @@ if (! empty($force_install_message))
|
||||
<tr class="hidesqlite hideroot">
|
||||
<td class="label" valign="top"><b><?php echo $langs->trans("Password"); ?></b>
|
||||
</td>
|
||||
<td class="label" valign="top"><input type="text" autocomplete="off"
|
||||
<td class="label" valign="top"><input type="password" autocomplete="off"
|
||||
id="db_pass_root" name="db_pass_root" class="needroot"
|
||||
value="<?php
|
||||
$autofill=((! empty($db_pass_root))?$db_pass_root:$force_install_databaserootpass);
|
||||
|
||||
@ -306,3 +306,44 @@ create table llx_projet_task_extrafields
|
||||
import_key varchar(14) -- import key
|
||||
) ENGINE=innodb;
|
||||
ALTER TABLE llx_projet_task_extrafields ADD INDEX idx_projet_task_extrafields (fk_object);
|
||||
|
||||
|
||||
CREATE TABLE llx_opensurvey_comments (
|
||||
id_comment INTEGER unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
id_sondage CHAR(16) NOT NULL,
|
||||
comment text NOT NULL,
|
||||
tms timestamp,
|
||||
usercomment text
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE llx_opensurvey_sondage (
|
||||
id_sondage VARCHAR(16) PRIMARY KEY,
|
||||
id_sondage_admin CHAR(24),
|
||||
commentaires text,
|
||||
mail_admin VARCHAR(128),
|
||||
nom_admin VARCHAR(64),
|
||||
titre text,
|
||||
date_fin datetime,
|
||||
format VARCHAR(2),
|
||||
mailsonde varchar(2) DEFAULT '0',
|
||||
survey_link_visible integer DEFAULT 1,
|
||||
canedit integer DEFAULT 0,
|
||||
origin varchar(64),
|
||||
tms timestamp,
|
||||
sujet TEXT
|
||||
) ENGINE=InnoDB;
|
||||
CREATE TABLE llx_opensurvey_user_studs (
|
||||
id_users INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
nom VARCHAR(64) NOT NULL,
|
||||
id_sondage VARCHAR(16) NOT NULL,
|
||||
reponses VARCHAR(100) NOT NULL,
|
||||
tms timestamp
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
ALTER TABLE llx_opensurvey_comments ADD INDEX idx_id_comment (id_comment);
|
||||
ALTER TABLE llx_opensurvey_comments ADD INDEX idx_id_sondage (id_sondage);
|
||||
ALTER TABLE llx_opensurvey_sondage ADD INDEX idx_id_sondage_admin (id_sondage_admin);
|
||||
ALTER TABLE llx_opensurvey_sondage ADD INDEX idx_date_fin (date_fin);
|
||||
ALTER TABLE llx_opensurvey_user_studs ADD INDEX idx_id_users (id_users);
|
||||
ALTER TABLE llx_opensurvey_user_studs ADD INDEX idx_nom (nom);
|
||||
ALTER TABLE llx_opensurvey_user_studs ADD INDEX idx_id_sondage (id_sondage);
|
||||
|
||||
@ -15,8 +15,8 @@
|
||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE llx_opensurvey_comments ADD INDEX idx_id_comment id_comment;
|
||||
ALTER TABLE llx_opensurvey_comments ADD INDEX idx_id_sondage id_sondage;
|
||||
ALTER TABLE llx_opensurvey_comments ADD INDEX idx_id_comment (id_comment);
|
||||
ALTER TABLE llx_opensurvey_comments ADD INDEX idx_id_sondage (id_sondage);
|
||||
|
||||
|
||||
|
||||
@ -15,5 +15,5 @@
|
||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE llx_opensurvey_sondage ADD INDEX idx_id_sondage_admin id_sondage_admin;
|
||||
ALTER TABLE llx_opensurvey_sondage ADD INDEX idx_date_fin date_fin;
|
||||
ALTER TABLE llx_opensurvey_sondage ADD INDEX idx_id_sondage_admin (id_sondage_admin);
|
||||
ALTER TABLE llx_opensurvey_sondage ADD INDEX idx_date_fin (date_fin);
|
||||
@ -1,6 +1,6 @@
|
||||
-- ============================================================================
|
||||
-- Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
@ -24,3 +24,4 @@ ALTER TABLE llx_product ADD UNIQUE INDEX uk_product_ref (ref, entity);
|
||||
ALTER TABLE llx_product ADD INDEX idx_product_label (label);
|
||||
ALTER TABLE llx_product ADD INDEX idx_product_barcode (barcode);
|
||||
ALTER TABLE llx_product ADD INDEX idx_product_import_key (import_key);
|
||||
ALTER TABLE llx_product ADD INDEX idx_product_seuil_stock_alerte (seuil_stock_alerte);
|
||||
|
||||
@ -40,6 +40,7 @@ ActionsEvents= Events for which Dolibarr will create an action in agenda automat
|
||||
PropalValidatedInDolibarr= Proposal %s validated
|
||||
InvoiceValidatedInDolibarr= Invoice %s validated
|
||||
InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status
|
||||
InvoiceDeleteDolibarr=Invoice %s deleted
|
||||
OrderValidatedInDolibarr= Order %s validated
|
||||
OrderApprovedInDolibarr=Order %s approved
|
||||
OrderBackToDraftInDolibarr=Order %s go back to draft status
|
||||
|
||||
@ -55,6 +55,7 @@ DeStockOnShipment=Decrease real stocks on shipment validation
|
||||
ReStockOnBill=Increase real stocks on suppliers invoices/credit notes validation
|
||||
ReStockOnValidateOrder=Increase real stocks on suppliers orders approbation
|
||||
ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receiving
|
||||
ReStockOnDeleteInvoice=Increase real stocks on invoice deletion
|
||||
OrderStatusNotReadyToDispatch=Order has not yet or no more a status that allows dispatching of products in stock warehouses.
|
||||
StockDiffPhysicTeoric=Reason for difference stock physical and theoretical
|
||||
NoPredefinedProductToDispatch=No predefined products for this object. So no dispatching in stock is required.
|
||||
@ -86,4 +87,5 @@ PersonalStock=Personal stock %s
|
||||
ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s
|
||||
SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease
|
||||
SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase
|
||||
NoStockAction=No stock action
|
||||
LastWaitingSupplierOrders=Orders waiting for receptions
|
||||
@ -41,6 +41,7 @@ ActionsEvents=Eventos para que Dolibarr cree una acción de forma automática
|
||||
PropalValidatedInDolibarr=Presupuesto %s validado
|
||||
InvoiceValidatedInDolibarr=Factura %s validada
|
||||
InvoiceBackToDraftInDolibarr=Factura %s devuelta a borrador
|
||||
InvoiceDeleteDolibarr=Factura %s eliminada
|
||||
OrderValidatedInDolibarr=Pedido %s validado
|
||||
OrderApprovedInDolibarr=Pedido %s aprobado
|
||||
OrderBackToDraftInDolibarr=Pedido %s devuelto a borrador
|
||||
|
||||
@ -54,6 +54,7 @@ DeStockOnShipment=Decrementar los stocks físicos sobre los envíos
|
||||
ReStockOnBill=Incrementar los stocks físicos sobre las facturas/abonos de proveedores
|
||||
ReStockOnValidateOrder=Incrementar los stocks físicos sobre los pedidos a proveedores
|
||||
ReStockOnDispatchOrder=Incrementa los stocks físicos en el desglose manual de la recepción de los pedidos a proveedores en los almacenes
|
||||
ReStockOnDeleteInvoice=Incrementa los stocks físicos en la eliminación de facturas
|
||||
OrderStatusNotReadyToDispatch=El pedido aún no está o no tiene un estado que permita un desglose de stock.
|
||||
StockDiffPhysicTeoric=Motivo de la diferencia entre valores físicos y teóricos
|
||||
NoPredefinedProductToDispatch=No hay productos predefinidos en este objeto. Por lo tanto no se puede realizar un desglose de stock.
|
||||
@ -85,4 +86,5 @@ PersonalStock=Stock personal %s
|
||||
ThisWarehouseIsPersonalStock=Este almacén representa el stock personal de %s %s
|
||||
SelectWarehouseForStockDecrease=Seleccione el almacén a usar en el decremento de stock
|
||||
SelectWarehouseForStockIncrease=Seleccione el almacén a usar en el incremento de stock
|
||||
NoStockAction=Sin acciones sobre el stock
|
||||
LastWaitingSupplierOrders=Pedidos en espera de recepción
|
||||
@ -40,6 +40,7 @@ ActionsEvents=Événements pour lesquels Dolibarr doit créer une action dans l'
|
||||
PropalValidatedInDolibarr=Proposition %s validée
|
||||
InvoiceValidatedInDolibarr=Facture %s validée
|
||||
InvoiceBackToDraftInDolibarr=Facture %s repassée en brouillon
|
||||
InvoiceDeleteDolibarr=Facture %s supprimée
|
||||
OrderValidatedInDolibarr=Commande %s validée
|
||||
OrderApprovedInDolibarr=Commande %s approuvée
|
||||
OrderBackToDraftInDolibarr=Commande %s repassée en brouillon
|
||||
|
||||
@ -55,6 +55,7 @@ DeStockOnShipment=Décrémente les stocks physiques sur validation des expéditi
|
||||
ReStockOnBill=Incrémente les stocks physiques sur validation des factures/avoirs fournisseurs
|
||||
ReStockOnValidateOrder=Incrémente les stocks physiques sur approbation des commandes fournisseurs
|
||||
ReStockOnDispatchOrder=Incrémente les stocks physiques sur ventilation manuelle de la réception des commandes fournisseurs dans les entrepôts
|
||||
ReStockOnDeleteInvoice=Incrémente les stocks physiques sur la suppression des factures
|
||||
OrderStatusNotReadyToDispatch=La commande n'a pas encore ou n'a plus un statut permettant une ventilation en stock.
|
||||
StockDiffPhysicTeoric=Raison écart stock physique-théorique
|
||||
NoPredefinedProductToDispatch=Pas de produits prédéfinis dans cet objet. Aucune ventilation en stock n'est donc à faire.
|
||||
@ -86,4 +87,5 @@ PersonalStock=Stock personnel %s
|
||||
ThisWarehouseIsPersonalStock=Cet entrepôt représente le stock personnel de %s %s
|
||||
SelectWarehouseForStockDecrease=Sélectionner l'entrepôt à utiliser pour la décrémentation du stock
|
||||
SelectWarehouseForStockIncrease=Sélectionner l'entrepôt à utiliser pour l'incrémentation du stock
|
||||
NoStockAction=Pas d'action sur l'entrepot
|
||||
LastWaitingSupplierOrders=Commandes en attente de réception
|
||||
@ -109,9 +109,10 @@ class FormProduct
|
||||
* @param int $empty 1=Can be empty, 0 if not
|
||||
* @param int $disabled 1=Select is disabled
|
||||
* @param int $fk_product Add quantity of stock in label for product with id fk_product. Nothing if 0.
|
||||
* @param string $empty_label Empty label if needed (only if $empty=1)
|
||||
* @return string HTML select
|
||||
*/
|
||||
function selectWarehouses($selected='',$htmlname='idwarehouse',$filtertype='',$empty=0,$disabled=0,$fk_product=0)
|
||||
function selectWarehouses($selected='',$htmlname='idwarehouse',$filtertype='',$empty=0,$disabled=0,$fk_product=0,$empty_label='')
|
||||
{
|
||||
global $langs,$user;
|
||||
|
||||
@ -120,7 +121,7 @@ class FormProduct
|
||||
$this->loadWarehouses($fk_product);
|
||||
|
||||
$out='<select class="flat"'.($disabled?' disabled="disabled"':'').' id="'.$htmlname.'" name="'.($htmlname.($disabled?'_disabled':'')).'">';
|
||||
if ($empty) $out.='<option value="-1"> </option>';
|
||||
if ($empty) $out.='<option value="-1">'.($empty_label?$empty_label:' ').'</option>';
|
||||
foreach($this->cache_warehouses as $id => $arraytypes)
|
||||
{
|
||||
$out.='<option value="'.$id.'"';
|
||||
|
||||
@ -693,7 +693,7 @@ else
|
||||
print '</td></tr>';
|
||||
|
||||
// Label
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td><input name="libelle" size="40" value="'.GETPOST('libelle').'"></td></tr>';
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td><input name="libelle" size="40" maxlength="255" value="'.GETPOST('libelle').'"></td></tr>';
|
||||
|
||||
// On sell
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("Status").' ('.$langs->trans("Sell").')</td><td>';
|
||||
@ -866,7 +866,7 @@ else
|
||||
print '<tr><td width="15%" class="fieldrequired">'.$langs->trans("Ref").'</td><td colspan="2"><input name="ref" size="40" maxlength="32" value="'.$object->ref.'"></td></tr>';
|
||||
|
||||
// Label
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td colspan="2"><input name="libelle" size="40" value="'.$object->libelle.'"></td></tr>';
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td colspan="2"><input name="libelle" size="40" maxlength="255" value="'.$object->libelle.'"></td></tr>';
|
||||
|
||||
// Status
|
||||
print '<tr><td class="fieldrequired">'.$langs->trans("Status").' ('.$langs->trans("Sell").')</td><td colspan="2">';
|
||||
|
||||
@ -1048,7 +1048,7 @@ class Project extends CommonObject
|
||||
}
|
||||
|
||||
$this->db->begin();
|
||||
$res=$clone_project->update_note(dol_html_entity_decode($clone_project->note_private, ENT_QUOTES));
|
||||
$res=$clone_project->update_note(dol_html_entity_decode($clone_project->note_private, ENT_QUOTES), '_private');
|
||||
if ($res < 0)
|
||||
{
|
||||
$this->error.=$clone_project->error;
|
||||
|
||||
@ -1064,7 +1064,7 @@ class Task extends CommonObject
|
||||
}
|
||||
|
||||
$this->db->begin();
|
||||
$res=$clone_task->update_note(dol_html_entity_decode($clone_task->note_private, ENT_QUOTES));
|
||||
$res=$clone_task->update_note(dol_html_entity_decode($clone_task->note_private, ENT_QUOTES), '_private');
|
||||
if ($res < 0)
|
||||
{
|
||||
$this->error.=$clone_task->error;
|
||||
|
||||
@ -63,7 +63,7 @@ if ($action == 'setnote_public' && $user->rights->projet->creer)
|
||||
if ($action == 'setnote_private' && $user->rights->projet->creer)
|
||||
{
|
||||
$object->fetch($id);
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES));
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES), '_private');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
|
||||
@ -93,7 +93,7 @@ if ($action == 'setnote_public' && ! empty($permission))
|
||||
|
||||
else if ($action == 'setnote_private' && ! empty($permission))
|
||||
{
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES));
|
||||
$result=$object->update_note(dol_html_entity_decode(GETPOST('note_private'), ENT_QUOTES), '_private');
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@ if ($action == 'update' && $user->rights->user->user->creer && ! $_POST["cancel"
|
||||
{
|
||||
$db->begin();
|
||||
|
||||
$res=$fuser->update_note($_POST["note"],$user);
|
||||
$res=$fuser->update_note(dol_html_entity_decode(GETPOST('note'), ENT_QUOTES));
|
||||
if ($res < 0)
|
||||
{
|
||||
$mesg='<div class="error">'.$adh->error.'</div>';
|
||||
|
||||
@ -260,7 +260,7 @@ print '</tr>'."\n";
|
||||
|
||||
// Lastname
|
||||
print '<tr><td width="25%" valign="top">'.$langs->trans("Lastname").'</td>';
|
||||
print '<td>'.$fuser->lastName.'</td>';
|
||||
print '<td>'.$fuser->lastname.'</td>';
|
||||
print '</tr>'."\n";
|
||||
|
||||
// Firstname
|
||||
|
||||
Loading…
Reference in New Issue
Block a user