Merge remote-tracking branch 'origin/3.8' into develop

Conflicts:
	htdocs/commande/class/commande.class.php
	htdocs/filefunc.inc.php
	htdocs/product/list.php
	htdocs/societe/notify/card.php
	htdocs/societe/price.php
This commit is contained in:
Laurent Destailleur 2015-12-27 19:15:20 +01:00
commit 6f474c403c
13 changed files with 197 additions and 126 deletions

View File

@ -834,7 +834,7 @@ class ActionComm extends CommonObject
if (! empty($elementtype)) if (! empty($elementtype))
{ {
if ($elementtype == 'project') $sql.= ' AND a.fk_project = '.$fk_element; if ($elementtype == 'project') $sql.= ' AND a.fk_project = '.$fk_element;
else $sql.= " AND a.fk_element = ".$fk_element." AND a.elementtype = '".$elementtype."'"; else $sql.= " AND a.fk_element = ".(int) $fk_element." AND a.elementtype = '".$elementtype."'";
} }
if (! empty($filter)) $sql.= $filter; if (! empty($filter)) $sql.= $filter;
if ($sortorder && $sortfield) $sql.=$db->order($sortfield, $sortorder); if ($sortorder && $sortfield) $sql.=$db->order($sortfield, $sortorder);

View File

@ -76,9 +76,41 @@ class Commande extends CommonOrder
var $brouillon; var $brouillon;
var $cond_reglement_code; var $cond_reglement_code;
var $fk_account;
/**
* It holds the label of the payment mode. Use it in case translation cannot be found.
* @var string
*/
var $mode_reglement;
/**
* Payment mode id
* @var int
*/
var $mode_reglement_id;
/**
* Payment mode code
* @var string
*/
var $mode_reglement_code; var $mode_reglement_code;
/**
* Availability delivery time id
* @var int
*/
var $availability_id; var $availability_id;
/**
* Availability delivery time code
* @var string
*/
var $availability_code; var $availability_code;
/**
* Label of availability delivery time. Use it in case translation cannot be found.
* @var string
*/
var $availability;
var $demand_reason_id; var $demand_reason_id;
var $demand_reason_code; var $demand_reason_code;
var $address; var $address;
@ -1435,7 +1467,7 @@ class Commande extends CommonOrder
$sql.= ", i.libelle as libelle_incoterms"; $sql.= ", i.libelle as libelle_incoterms";
$sql.= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle'; $sql.= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle';
$sql.= ', cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle, cr.libelle_facture as cond_reglement_libelle_doc'; $sql.= ', cr.code as cond_reglement_code, cr.libelle as cond_reglement_libelle, cr.libelle_facture as cond_reglement_libelle_doc';
$sql.= ', ca.code as availability_code'; $sql.= ', ca.code as availability_code, ca.label as availability_label';
$sql.= ', dr.code as demand_reason_code'; $sql.= ', dr.code as demand_reason_code';
$sql.= ' FROM '.MAIN_DB_PREFIX.'commande as c'; $sql.= ' FROM '.MAIN_DB_PREFIX.'commande as c';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as cr ON (c.fk_cond_reglement = cr.rowid)'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_payment_term as cr ON (c.fk_cond_reglement = cr.rowid)';
@ -1492,6 +1524,7 @@ class Commande extends CommonOrder
$this->fk_account = $obj->fk_account; $this->fk_account = $obj->fk_account;
$this->availability_id = $obj->fk_availability; $this->availability_id = $obj->fk_availability;
$this->availability_code = $obj->availability_code; $this->availability_code = $obj->availability_code;
$this->availability = $obj->availability_label;
$this->demand_reason_id = $obj->fk_input_reason; $this->demand_reason_id = $obj->fk_input_reason;
$this->demand_reason_code = $obj->demand_reason_code; $this->demand_reason_code = $obj->demand_reason_code;
$this->date_livraison = $this->db->jdate($obj->date_livraison); $this->date_livraison = $this->db->jdate($obj->date_livraison);

View File

@ -1281,12 +1281,12 @@ class AccountLine extends CommonObject
$nbko++; $nbko++;
} }
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid=".$this->rowid; $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid=".(int) $this->rowid;
dol_syslog(get_class($this)."::delete", LOG_DEBUG); dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if (! $result) $nbko++; if (! $result) $nbko++;
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank WHERE rowid=".$this->rowid; $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank WHERE rowid=".(int) $this->rowid;
dol_syslog(get_class($this)."::delete", LOG_DEBUG); dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if (! $result) $nbko++; if (! $result) $nbko++;
@ -1323,7 +1323,7 @@ class AccountLine extends CommonObject
$this->db->begin(); $this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url WHERE fk_bank=".$this->rowid; $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url WHERE fk_bank=".(int) $this->rowid;
dol_syslog(get_class($this)."::delete_urls", LOG_DEBUG); dol_syslog(get_class($this)."::delete_urls", LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if (! $result) $nbko++; if (! $result) $nbko++;

View File

@ -99,11 +99,14 @@ if ($action == 'rappro' && $user->rights->banque->consolidate)
if ($action == 'del') if ($action == 'del')
{ {
$bankline=new AccountLine($db); $bankline=new AccountLine($db);
$bankline->fetch($_GET["rowid"]);
$result=$bankline->delete($user); if ($bankline->fetch($_GET["rowid"]) > 0) {
if ($result < 0) $result = $bankline->delete($user);
{ if ($result < 0) {
dol_print_error($db,$bankline->error); dol_print_error($db, $bankline->error);
}
} else {
setEventMessage($langs->trans('ErrorRecordNotFound'), 'errors');
} }
} }

View File

@ -1040,7 +1040,7 @@ class Facture extends CommonInvoice
} }
else else
{ {
$this->error='Bill with id '.$rowid.' or ref '.$ref.' not found sql='.$sql; $this->error='Bill with id '.$rowid.' or ref '.$ref.' not found';
dol_syslog(get_class($this)."::fetch Error ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::fetch Error ".$this->error, LOG_ERR);
return 0; return 0;
} }

View File

@ -66,7 +66,7 @@ class dolprintIPP
*/ */
function list_jobs($module) function list_jobs($module)
{ {
global $conf, $db, $bc; global $conf, $db, $bc, $langs;
include_once DOL_DOCUMENT_ROOT.'/includes/printipp/CupsPrintIPP.php'; include_once DOL_DOCUMENT_ROOT.'/includes/printipp/CupsPrintIPP.php';
$ipp = new CupsPrintIPP(); $ipp = new CupsPrintIPP();
$ipp->setLog(DOL_DATA_ROOT.'/printipp.log','file',3); // logging very verbose $ipp->setLog(DOL_DATA_ROOT.'/printipp.log','file',3); // logging very verbose
@ -96,7 +96,8 @@ class dolprintIPP
} }
catch(Exception $e) catch(Exception $e)
{ {
print $e->getMessage(); setEventMessage('[printipp] '.$langs->trans('CoreErrorMessage'), 'errors');
dol_syslog($e->getMessage(), LOG_ERR);
} }
print '<table width="100%" class="noborder">'; print '<table width="100%" class="noborder">';

View File

@ -1100,7 +1100,7 @@ class Form
$sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,"; $sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,";
$sql.= " re.description, re.fk_facture_source"; $sql.= " re.description, re.fk_facture_source";
$sql.= " FROM ".MAIN_DB_PREFIX ."societe_remise_except as re"; $sql.= " FROM ".MAIN_DB_PREFIX ."societe_remise_except as re";
$sql.= " WHERE fk_soc = ".$socid; $sql.= " WHERE fk_soc = ".(int) $socid;
if ($filter) $sql.= " AND ".$filter; if ($filter) $sql.= " AND ".$filter;
$sql.= " ORDER BY re.description ASC"; $sql.= " ORDER BY re.description ASC";

View File

@ -560,7 +560,7 @@ class Expedition extends CommonObject
else else
{ {
dol_syslog(get_class($this).'::Fetch no expedition found', LOG_ERR); dol_syslog(get_class($this).'::Fetch no expedition found', LOG_ERR);
$this->error='Delivery with id '.$id.' not found sql='.$sql; $this->error='Delivery with id '.$id.' not found';
return 0; return 0;
} }
} }

View File

@ -109,7 +109,7 @@ if ($sref)
} }
if ($snom) if ($snom)
{ {
$sql .= natural_search('s.nom', $snom); $sql .= natural_search('p.label', $snom);
} }
if($catid) if($catid)
{ {

View File

@ -49,6 +49,21 @@ $pagenext = $page + 1;
if (! $sortorder) $sortorder="DESC"; if (! $sortorder) $sortorder="DESC";
if (! $sortfield) $sortfield="f.datef"; if (! $sortfield) $sortfield="f.datef";
$object = new Societe($db);
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('thirdpartymargins','globalcard'));
/*
* Actions
*/
$parameters=array('id'=>$socid);
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
/* /*
* View * View

View File

@ -79,6 +79,8 @@ $extrafields = new ExtraFields($db);
$extralabels = $extrafields->fetch_name_optionals_label('product'); $extralabels = $extrafields->fetch_name_optionals_label('product');
$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); $search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_');
if (empty($action)) $action='list';
// Get object canvas (By default, this is not defined, so standard usage of dolibarr) // Get object canvas (By default, this is not defined, so standard usage of dolibarr)
$canvas=GETPOST("canvas"); $canvas=GETPOST("canvas");
$objcanvas=null; $objcanvas=null;
@ -165,8 +167,8 @@ $form=new Form($db);
if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action))
{ {
$objcanvas->assign_values('list'); // This must contains code to load data (must call LoadListDatas($limit, $offset, $sortfield, $sortorder)) $objcanvas->assign_values($action); // This must contains code to load data (must call LoadListDatas($limit, $offset, $sortfield, $sortorder))
$objcanvas->display_canvas('list'); // This is code to show template $objcanvas->display_canvas($action); // This is code to show template
} }
else else
{ {

View File

@ -56,65 +56,78 @@ if (! $sortfield) $sortfield="c.lastname";
$now=dol_now(); $now=dol_now();
$object = new Societe($db);
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('thirdpartynotification','globalcard'));
/* /*
* Actions * Actions
*/ */
// Add a notification $parameters=array('id'=>$socid);
if ($action == 'add') $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
if (empty($reshook))
{ {
$error=0; $error=0;
if (empty($contactid)) // Add a notification
if ($action == 'add')
{ {
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Contact")), null, 'errors'); if (empty($contactid))
$error++;
}
if ($actionid <= 0)
{
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Action")), null, 'errors');
$error++;
}
if (! $error)
{
$db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def";
$sql .= " WHERE fk_soc=".$socid." AND fk_contact=".$contactid." AND fk_action=".$actionid;
if ($db->query($sql))
{ {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."notify_def (datec,fk_soc, fk_contact, fk_action)"; setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Contact")), null, 'errors');
$sql .= " VALUES ('".$db->idate($now)."',".$socid.",".$contactid.",".$actionid.")"; $error++;
if (! $db->query($sql))
{
$error++;
dol_print_error($db);
}
} }
else if ($actionid <= 0)
{ {
dol_print_error($db); setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Action")), null, 'errors');
$error++;
} }
if (! $error) if (! $error)
{ {
$db->commit(); $db->begin();
}
else $sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def";
{ $sql .= " WHERE fk_soc=".$socid." AND fk_contact=".$contactid." AND fk_action=".$actionid;
$db->rollback(); if ($db->query($sql))
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."notify_def (datec,fk_soc, fk_contact, fk_action)";
$sql .= " VALUES ('".$db->idate($now)."',".$socid.",".$contactid.",".$actionid.")";
if (! $db->query($sql))
{
$error++;
dol_print_error($db);
}
}
else
{
dol_print_error($db);
}
if (! $error)
{
$db->commit();
}
else
{
$db->rollback();
}
} }
} }
}
// Remove a notification
// Remove a notification if ($action == 'delete')
if ($action == 'delete') {
{ $sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def where rowid=".$_GET["actid"];
$sql = "DELETE FROM ".MAIN_DB_PREFIX."notify_def where rowid=".$_GET["actid"]; $db->query($sql);
$db->query($sql); }
} }

View File

@ -49,78 +49,82 @@ if ($user->societe_id)
$socid = $user->societe_id; $socid = $user->societe_id;
$result = restrictedArea($user, 'societe', $socid, '&societe'); $result = restrictedArea($user, 'societe', $socid, '&societe');
$object = new Societe($db);
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('thirdpartycustomerprice','globalcard'));
/* /*
* Actions * Actions
*/ */
if ($action == 'add_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) { $parameters=array('id'=>$socid);
$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
$update_child_soc = GETPOST('updatechildprice'); if (empty($reshook))
{
// add price by customer if ($action == 'add_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) {
$prodcustprice->fk_soc = $socid;
$prodcustprice->fk_product = GETPOST('prodid', 'int'); $update_child_soc = GETPOST('updatechildprice');
$prodcustprice->price = price2num(GETPOST("price"), 'MU');
$prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); // add price by customer
$prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); $prodcustprice->fk_soc = $socid;
$prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx")); $prodcustprice->fk_product = GETPOST('prodid', 'int');
$prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0); $prodcustprice->price = price2num(GETPOST("price"), 'MU');
$prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU');
$result = $prodcustprice->create($user, 0, $update_child_soc); $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha');
$prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx"));
if ($result < 0) $prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0);
{
setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); $result = $prodcustprice->create($user, 0, $update_child_soc);
}
else if ($result < 0) {
{ setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors');
setEventMessages($langs->trans('Save'), null, 'mesgs'); } else {
} setEventMessages($langs->trans('Save'), null, 'mesgs');
}
$action = '';
} $action = '';
}
if ($action == 'delete_customer_price' && ($user->rights->produit->creer || $user->rights->service->creer)) {
// Delete price by customer if ($action == 'delete_customer_price' && ($user->rights->produit->creer || $user->rights->service->creer)) {
$prodcustprice->id = GETPOST('lineid'); // Delete price by customer
$result = $prodcustprice->delete($user); $prodcustprice->id = GETPOST('lineid');
$result = $prodcustprice->delete($user);
if ($result < 0)
{ if ($result < 0) {
setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); setEventMessages($prodcustprice->error, $prodcustprice->errors, 'mesgs');
} } else {
else setEventMessages($langs->trans('Delete'), null, 'errors');
{ }
setEventMessages($langs->trans('Delete'), null, 'mesgs'); $action = '';
} }
$action = '';
} if ($action == 'update_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) {
if ($action == 'update_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) { $prodcustprice->fetch(GETPOST('lineid', 'int'));
$prodcustprice->fetch(GETPOST('lineid', 'int')); $update_child_soc = GETPOST('updatechildprice');
$update_child_soc = GETPOST('updatechildprice'); // update price by customer
$prodcustprice->price = price2num(GETPOST("price"), 'MU');
// update price by customer $prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU');
$prodcustprice->price = price2num(GETPOST("price"), 'MU'); $prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha');
$prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU'); $prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx"));
$prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha'); $prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0);
$prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx"));
$prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0); $result = $prodcustprice->update($user, 0, $update_child_soc);
if ($result < 0) {
$result = $prodcustprice->update($user, 0, $update_child_soc); setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors');
if ($result < 0) } else {
{ setEventMessages($langs->trans('Save'), null, 'mesgs');
setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors'); }
}
else $action = '';
{ }
setEventMessages($langs->trans('Save'), null, 'mesgs');
}
$action = '';
} }