Merge pull request #10559 from atm-florian/dev_importproduct_measuringunit
NEW : measuring unit dictionary and product size/unit import
This commit is contained in:
commit
9f0ea65db5
@ -88,7 +88,7 @@ $hookmanager->initHooks(array('admin'));
|
||||
// Put here declaration of dictionaries properties
|
||||
|
||||
// Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
|
||||
$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,33,34,0,6,0,29,0,7,24,28,17,35,36,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,26,0,25,0);
|
||||
$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,33,34,0,6,0,29,0,7,24,28,17,35,36,0,10,23,12,13,0,14,0,22,20,18,21,0,15,30,0,26,37,0,25,0);
|
||||
|
||||
// Name of SQL tables of dictionaries
|
||||
$tabname=array();
|
||||
@ -128,6 +128,7 @@ $tabname[33]= MAIN_DB_PREFIX."c_hrm_department";
|
||||
$tabname[34]= MAIN_DB_PREFIX."c_hrm_function";
|
||||
$tabname[35]= MAIN_DB_PREFIX."c_exp_tax_cat";
|
||||
$tabname[36]= MAIN_DB_PREFIX."c_exp_tax_range";
|
||||
$tabname[37]= MAIN_DB_PREFIX."c_measuring_units";
|
||||
|
||||
// Dictionary labels
|
||||
$tablib=array();
|
||||
@ -167,6 +168,7 @@ $tablib[33]= "DictionaryDepartment";
|
||||
$tablib[34]= "DictionaryFunction";
|
||||
$tablib[35]= "DictionaryExpenseTaxCat";
|
||||
$tablib[36]= "DictionaryExpenseTaxRange";
|
||||
$tablib[37]= "DictionaryMeasuringUnits";
|
||||
|
||||
// Requests to extract data
|
||||
$tabsql=array();
|
||||
@ -206,6 +208,7 @@ $tabsql[33]= "SELECT rowid, pos, code, label, active FROM ".MAIN_DB_PREFIX."c_hr
|
||||
$tabsql[34]= "SELECT rowid, pos, code, label, c_level, active FROM ".MAIN_DB_PREFIX."c_hrm_function";
|
||||
$tabsql[35]= "SELECT c.rowid, c.label, c.active, c.entity FROM ".MAIN_DB_PREFIX."c_exp_tax_cat c";
|
||||
$tabsql[36]= "SELECT r.rowid, r.fk_c_exp_tax_cat, r.range_ik, r.active, r.entity FROM ".MAIN_DB_PREFIX."c_exp_tax_range r";
|
||||
$tabsql[37]= "SELECT r.rowid, r.code, r.label, r.short_label, r.unit_type, r.active FROM ".MAIN_DB_PREFIX."c_measuring_units r";
|
||||
|
||||
// Criteria to sort dictionaries
|
||||
$tabsqlsort=array();
|
||||
@ -245,6 +248,7 @@ $tabsqlsort[33]="code ASC";
|
||||
$tabsqlsort[34]="code ASC";
|
||||
$tabsqlsort[35]="c.label ASC";
|
||||
$tabsqlsort[36]="r.fk_c_exp_tax_cat ASC, r.range_ik ASC";
|
||||
$tabsqlsort[37]="r.unit_type ASC, r.code ASC";
|
||||
|
||||
// Nom des champs en resultat de select pour affichage du dictionnaire
|
||||
$tabfield=array();
|
||||
@ -284,6 +288,7 @@ $tabfield[33]= "code,label";
|
||||
$tabfield[34]= "code,label";
|
||||
$tabfield[35]= "label";
|
||||
$tabfield[36]= "range_ik,fk_c_exp_tax_cat";
|
||||
$tabfield[37]= "code,label,short_label,unit_type";
|
||||
|
||||
// Nom des champs d'edition pour modification d'un enregistrement
|
||||
$tabfieldvalue=array();
|
||||
@ -323,6 +328,7 @@ $tabfieldvalue[33]= "code,label";
|
||||
$tabfieldvalue[34]= "code,label";
|
||||
$tabfieldvalue[35]= "label";
|
||||
$tabfieldvalue[36]= "range_ik,fk_c_exp_tax_cat";
|
||||
$tabfieldvalue[37]= "code,label,short_label,unit_type";
|
||||
|
||||
// Nom des champs dans la table pour insertion d'un enregistrement
|
||||
$tabfieldinsert=array();
|
||||
@ -362,6 +368,7 @@ $tabfieldinsert[33]= "code,label";
|
||||
$tabfieldinsert[34]= "code,label";
|
||||
$tabfieldinsert[35]= "label";
|
||||
$tabfieldinsert[36]= "range_ik,fk_c_exp_tax_cat";
|
||||
$tabfieldinsert[37]= "code,label,short_label,unit_type";
|
||||
|
||||
// Nom du rowid si le champ n'est pas de type autoincrement
|
||||
// Example: "" if id field is "rowid" and has autoincrement on
|
||||
@ -403,6 +410,7 @@ $tabrowid[33]= "rowid";
|
||||
$tabrowid[34]= "rowid";
|
||||
$tabrowid[35]= "";
|
||||
$tabrowid[36]= "";
|
||||
$tabrowid[37]= "";
|
||||
|
||||
// Condition to show dictionary in setup page
|
||||
$tabcond=array();
|
||||
@ -442,6 +450,7 @@ $tabcond[33]= ! empty($conf->hrm->enabled);
|
||||
$tabcond[34]= ! empty($conf->hrm->enabled);
|
||||
$tabcond[35]= ! empty($conf->expensereport->enabled);
|
||||
$tabcond[36]= ! empty($conf->expensereport->enabled);
|
||||
$tabcond[37]= ! empty($conf->product->enabled);
|
||||
|
||||
// List of help for fields
|
||||
$tabhelp=array();
|
||||
@ -481,6 +490,7 @@ $tabhelp[33] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
$tabhelp[34] = array('code'=>$langs->trans("EnterAnyCode"));
|
||||
$tabhelp[35]= array();
|
||||
$tabhelp[36]= array('range_ik'=>$langs->trans('PrevRangeToThisRange'));
|
||||
$tabhelp[37]= array('short_label'=>$langs->trans("EnterAnyCode"));
|
||||
|
||||
// List of check for fields (NOT USED YET)
|
||||
$tabfieldcheck=array();
|
||||
@ -520,6 +530,7 @@ $tabfieldcheck[33] = array();
|
||||
$tabfieldcheck[34] = array();
|
||||
$tabfieldcheck[35]= array();
|
||||
$tabfieldcheck[36]= array();
|
||||
$tabfieldcheck[37]= array();
|
||||
|
||||
// Complete all arrays with entries found into modules
|
||||
complete_dictionary_with_modules($taborder, $tabname, $tablib, $tabsql, $tabsqlsort, $tabfield, $tabfieldvalue, $tabfieldinsert, $tabrowid, $tabcond, $tabhelp, $tabfieldcheck);
|
||||
@ -1583,6 +1594,12 @@ if ($id)
|
||||
{
|
||||
$valuetoshow = $langs->trans($valuetoshow);
|
||||
}
|
||||
elseif ($fieldlist[$field] == 'label' && $tabname[$id] == MAIN_DB_PREFIX.'c_measuring_units')
|
||||
{
|
||||
$langs->load('other');
|
||||
$key = $langs->trans($obj->label);
|
||||
$valuetoshow = ($obj->label && $key != strtoupper($obj->label) ? $key : $obj->{$fieldlist[$field]});
|
||||
}
|
||||
|
||||
$class='tddict';
|
||||
if ($fieldlist[$field] == 'note' && $id == 10) $class.=' tdoverflowmax200';
|
||||
|
||||
@ -90,7 +90,7 @@ $entity = GETPOST('entity', 'int')?GETPOST('entity', 'int'):$conf->entity;
|
||||
|
||||
$filesarray=array();
|
||||
$result=false;
|
||||
if(($action=="searchfiles"||$action=="dl" ) && $date_start && $date_stop){
|
||||
if(($action=="searchfiles" || $action=="dl" ) && $date_start && $date_stop) {
|
||||
$wheretail=" '".$db->idate($date_start)."' AND '".$db->idate($date_stop)."'";
|
||||
$sql="SELECT rowid as id, ref as ref,paye as paid, total_ttc, fk_soc, datef as date, 'Invoice' as item FROM ".MAIN_DB_PREFIX."facture";
|
||||
$sql.=" WHERE datef between ".$wheretail;
|
||||
|
||||
432
htdocs/core/class/cmeasuringunits.class.php
Normal file
432
htdocs/core/class/cmeasuringunits.class.php
Normal file
@ -0,0 +1,432 @@
|
||||
<?php
|
||||
/* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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/core/class/cmeasuringunits.class.php
|
||||
* \ingroup core
|
||||
* \brief This file is CRUD class file (Create/Read/Update/Delete) for c_measuring_units dictionary
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Class of dictionary type of thirdparty (used by imports)
|
||||
*/
|
||||
class CMeasuringUnits // extends CommonObject
|
||||
{
|
||||
/**
|
||||
* @var DoliDB Database handler.
|
||||
*/
|
||||
public $db;
|
||||
|
||||
/**
|
||||
* @var string Error code (or message)
|
||||
*/
|
||||
public $error='';
|
||||
|
||||
/**
|
||||
* @var string[] Error codes (or messages)
|
||||
*/
|
||||
public $errors = array();
|
||||
public $records = array();
|
||||
|
||||
//var $element='ctypent'; //!< Id that identify managed objects
|
||||
//var $table_element='ctypent'; //!< Name of table without prefix where object is stored
|
||||
|
||||
/**
|
||||
* @var int ID
|
||||
*/
|
||||
public $id;
|
||||
|
||||
public $code;
|
||||
public $label;
|
||||
public $short_label;
|
||||
public $unit_type;
|
||||
public $active;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDb $db Database handler
|
||||
*/
|
||||
function __construct($db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create object into database
|
||||
*
|
||||
* @param User $user User that create
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, Id of created object if OK
|
||||
*/
|
||||
function create($user, $notrigger = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
$error=0;
|
||||
|
||||
// Clean parameters
|
||||
|
||||
if (isset($this->id)) $this->id=trim($this->id);
|
||||
if (isset($this->code)) $this->code=trim($this->code);
|
||||
if (isset($this->label)) $this->libelle=trim($this->label);
|
||||
if (isset($this->short_label)) $this->libelle=trim($this->short_label);
|
||||
if (isset($this->unit_type)) $this->active=trim($this->unit_type);
|
||||
if (isset($this->active)) $this->active=trim($this->active);
|
||||
|
||||
|
||||
|
||||
// Check parameters
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Insert request
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."c_measuring_units(";
|
||||
|
||||
$sql.= "rowid,";
|
||||
$sql.= "code,";
|
||||
$sql.= "label,";
|
||||
$sql.= "short_label,";
|
||||
$sql.= "unit_type";
|
||||
|
||||
|
||||
$sql.= ") VALUES (";
|
||||
|
||||
$sql.= " ".(! isset($this->id)?'NULL':"'".$this->db->escape($this->id)."'").",";
|
||||
$sql.= " ".(! isset($this->code)?'NULL':"'".$this->db->escape($this->code)."'").",";
|
||||
$sql.= " ".(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'").",";
|
||||
$sql.= " ".(! isset($this->short_label)?'NULL':"'".$this->db->active($this->short_label)."'").",";
|
||||
$sql.= " ".(! isset($this->unit_type)?'NULL':"'".$this->db->active($this->unit_type)."'");
|
||||
|
||||
$sql.= ")";
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_measuring_units");
|
||||
|
||||
if (! $notrigger)
|
||||
{
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action call a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error)
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1*$error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->commit();
|
||||
return $this->id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load object in memory from database
|
||||
*
|
||||
* @param int $id Id object
|
||||
* @param string $unit_type unit type
|
||||
* @param string $code Code
|
||||
* @param string $short_label Short Label
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function fetch($id, $unit_type = '', $code = '', $short_label = '')
|
||||
{
|
||||
global $langs;
|
||||
|
||||
$sql = "SELECT";
|
||||
$sql.= " t.rowid,";
|
||||
$sql.= " t.code,";
|
||||
$sql.= " t.label,";
|
||||
$sql.= " t.short_label,";
|
||||
$sql.= " t.unit_type,";
|
||||
$sql.= " t.active";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_measuring_units as t";
|
||||
$sql_where=array();
|
||||
if ($id) $sql_where[]= " t.id = ".$id;
|
||||
if ($unit_type) $sql_where[]= " t.unit_type = '".$this->db->escape($unit_type)."'";
|
||||
if ($code) $sql_where[]= " t.code = '".$this->db->escape($code)."'";
|
||||
if ($short_label) $sql_where[]= " t.short_label = '".$this->db->escape($short_label)."'";
|
||||
|
||||
if (count($sql_where)>0) {
|
||||
$sql.=' WHERE '. implode(' AND ', $sql_where);
|
||||
}
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($this->db->num_rows($resql))
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $obj->rowid;
|
||||
$this->code = $obj->code;
|
||||
$this->label = $obj->label;
|
||||
$this->short_label = $obj->short_label;
|
||||
$this->unit_type = $obj->unit_type;
|
||||
$this->active = $obj->active;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load list of objects in memory from the database.
|
||||
*
|
||||
* @param string $sortorder Sort Order
|
||||
* @param string $sortfield Sort field
|
||||
* @param int $limit limit
|
||||
* @param int $offset Offset
|
||||
* @param array $filter Filter array. Example array('field'=>'valueforlike', 'customurl'=>...)
|
||||
* @param string $filtermode Filter mode (AND or OR)
|
||||
* @return array|int int <0 if KO, array of pages if OK
|
||||
*/
|
||||
public function fetchAll($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||
|
||||
$records=array();
|
||||
|
||||
$sql = 'SELECT';
|
||||
$sql.= " t.rowid,";
|
||||
$sql.= " t.code,";
|
||||
$sql.= " t.label,";
|
||||
$sql.= " t.short_label,";
|
||||
$sql.= " t.unit_type,";
|
||||
$sql.= " t.active";
|
||||
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'c_measuring_units as t';
|
||||
// Manage filter
|
||||
$sqlwhere = array();
|
||||
if (count($filter) > 0) {
|
||||
foreach ($filter as $key => $value) {
|
||||
if ($key=='t.rowid' || $key=='t.active') {
|
||||
$sqlwhere[] = $key . '='. $value;
|
||||
}
|
||||
elseif (strpos($key, 'date') !== false) {
|
||||
$sqlwhere[] = $key.' = \''.$this->db->idate($value).'\'';
|
||||
}
|
||||
elseif ($key=='t.unit_type' || $key=='t.code' || $key=='t.short_label') {
|
||||
$sqlwhere[] = $key.' = \''.$this->db->escape($value).'\'';
|
||||
}
|
||||
else {
|
||||
$sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
|
||||
}
|
||||
}
|
||||
}
|
||||
if (count($sqlwhere) > 0) {
|
||||
$sql .= ' WHERE (' . implode(' '.$filtermode.' ', $sqlwhere).')';
|
||||
}
|
||||
|
||||
if (!empty($sortfield)) {
|
||||
$sql .= $this->db->order($sortfield, $sortorder);
|
||||
}
|
||||
if (!empty($limit)) {
|
||||
$sql .= ' ' . $this->db->plimit($limit, $offset);
|
||||
}
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
$this->records=array();
|
||||
$num = $this->db->num_rows($resql);
|
||||
if ($num>0) {
|
||||
while ($obj = $this->db->fetch_object($resql))
|
||||
{
|
||||
$record = new self($this->db);
|
||||
|
||||
$record->id = $obj->rowid;
|
||||
$record->code = $obj->code;
|
||||
$record->label = $obj->label;
|
||||
$record->short_label = $obj->short_label;
|
||||
$record->unit_type = $obj->unit_type;
|
||||
$record->active = $obj->active;
|
||||
$this->records[$record->id] = $record;
|
||||
}
|
||||
}
|
||||
$this->db->free($resql);
|
||||
|
||||
return $this->records;
|
||||
} else {
|
||||
$this->errors[] = 'Error ' . $this->db->lasterror();
|
||||
dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR);
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update object into database
|
||||
*
|
||||
* @param User $user User that modify
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function update($user = null, $notrigger = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
$error=0;
|
||||
|
||||
// Clean parameters
|
||||
if (isset($this->code)) $this->code=trim($this->code);
|
||||
if (isset($this->label)) $this->libelle=trim($this->label);
|
||||
if (isset($this->short_label)) $this->libelle=trim($this->short_label);
|
||||
if (isset($this->unit_type)) $this->libelle=trim($this->unit_type);
|
||||
if (isset($this->active)) $this->active=trim($this->active);
|
||||
|
||||
|
||||
// Check parameters
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Update request
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."c_measuring_units SET";
|
||||
$sql.= " code=".(isset($this->code)?"'".$this->db->escape($this->code)."'":"null").",";
|
||||
$sql.= " label=".(isset($this->label)?"'".$this->db->escape($this->label)."'":"null").",";
|
||||
$sql.= " short_label=".(isset($this->short_label)?"'".$this->db->escape($this->short_label)."'":"null").",";
|
||||
$sql.= " unit_type=".(isset($this->unit_type)?"'".$this->db->escape($this->unit_type)."'":"null").",";
|
||||
$sql.= " active=".(isset($this->active)?$this->active:"null");
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
if (! $notrigger)
|
||||
{
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action call a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error)
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1*$error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete object in database
|
||||
*
|
||||
* @param User $user User that delete
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function delete($user, $notrigger = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
$error=0;
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."c_measuring_units";
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
if (! $notrigger)
|
||||
{
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action call a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error)
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1*$error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
330
htdocs/core/class/cunits.class.php
Normal file
330
htdocs/core/class/cunits.class.php
Normal file
@ -0,0 +1,330 @@
|
||||
<?php
|
||||
/* Copyright (C) 2007-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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/core/class/cunits.class.php
|
||||
* \ingroup core
|
||||
* \brief This file is CRUD class file (Create/Read/Update/Delete) for c_units dictionary
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Class of dictionary type of thirdparty (used by imports)
|
||||
*/
|
||||
class CUnits // extends CommonObject
|
||||
{
|
||||
/**
|
||||
* @var DoliDB Database handler.
|
||||
*/
|
||||
public $db;
|
||||
|
||||
/**
|
||||
* @var string Error code (or message)
|
||||
*/
|
||||
public $error='';
|
||||
|
||||
/**
|
||||
* @var string[] Error codes (or messages)
|
||||
*/
|
||||
public $errors = array();
|
||||
|
||||
//var $element='ctypent'; //!< Id that identify managed objects
|
||||
//var $table_element='ctypent'; //!< Name of table without prefix where object is stored
|
||||
|
||||
/**
|
||||
* @var int ID
|
||||
*/
|
||||
public $id;
|
||||
|
||||
public $code;
|
||||
public $label;
|
||||
public $short_label;
|
||||
public $active;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDb $db Database handler
|
||||
*/
|
||||
function __construct($db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create object into database
|
||||
*
|
||||
* @param User $user User that create
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, Id of created object if OK
|
||||
*/
|
||||
function create($user, $notrigger = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
$error=0;
|
||||
|
||||
// Clean parameters
|
||||
|
||||
if (isset($this->id)) $this->id=trim($this->id);
|
||||
if (isset($this->code)) $this->code=trim($this->code);
|
||||
if (isset($this->label)) $this->libelle=trim($this->label);
|
||||
if (isset($this->short_label)) $this->libelle=trim($this->short_label);
|
||||
if (isset($this->active)) $this->active=trim($this->active);
|
||||
|
||||
|
||||
|
||||
// Check parameters
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Insert request
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."c_units(";
|
||||
|
||||
$sql.= "rowid,";
|
||||
$sql.= "code,";
|
||||
$sql.= "label,";
|
||||
$sql.= "short_label";
|
||||
|
||||
|
||||
$sql.= ") VALUES (";
|
||||
|
||||
$sql.= " ".(! isset($this->id)?'NULL':"'".$this->db->escape($this->id)."'").",";
|
||||
$sql.= " ".(! isset($this->code)?'NULL':"'".$this->db->escape($this->code)."'").",";
|
||||
$sql.= " ".(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'").",";
|
||||
$sql.= " ".(! isset($this->short_label)?'NULL':"'".$this->db->active($this->short_label)."'");
|
||||
|
||||
$sql.= ")";
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_units");
|
||||
|
||||
if (! $notrigger)
|
||||
{
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action call a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error)
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1*$error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->commit();
|
||||
return $this->id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load object in memory from database
|
||||
*
|
||||
* @param int $id Id object
|
||||
* @param string $code Code
|
||||
* @param string $short_label Label
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function fetch($id, $code = '', $short_label = '')
|
||||
{
|
||||
global $langs;
|
||||
$sql = "SELECT";
|
||||
$sql.= " t.rowid,";
|
||||
$sql.= " t.code,";
|
||||
$sql.= " t.label,";
|
||||
$sql.= " t.short_label,";
|
||||
$sql.= " t.active";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."c_units as t";
|
||||
if ($id) $sql.= " WHERE t.rowid = ".$id;
|
||||
elseif ($code) $sql.= " WHERE t.code = '".$this->db->escape($code)."'";
|
||||
elseif ($short_label) $sql.= " WHERE t.short_label = '".$this->db->escape($short_label)."'";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($this->db->num_rows($resql))
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $obj->rowid;
|
||||
$this->code = $obj->code;
|
||||
$this->label = $obj->label;
|
||||
$this->short_label = $obj->short_label;
|
||||
$this->active = $obj->active;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update object into database
|
||||
*
|
||||
* @param User $user User that modify
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function update($user = null, $notrigger = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
$error=0;
|
||||
|
||||
// Clean parameters
|
||||
if (isset($this->code)) $this->code=trim($this->code);
|
||||
if (isset($this->label)) $this->libelle=trim($this->label);
|
||||
if (isset($this->short_label)) $this->libelle=trim($this->short_label);
|
||||
if (isset($this->active)) $this->active=trim($this->active);
|
||||
|
||||
|
||||
// Check parameters
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Update request
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."c_units SET";
|
||||
$sql.= " code=".(isset($this->code)?"'".$this->db->escape($this->code)."'":"null").",";
|
||||
$sql.= " label=".(isset($this->label)?"'".$this->db->escape($this->label)."'":"null").",";
|
||||
$sql.= " short_label=".(isset($this->short_label)?"'".$this->db->escape($this->short_label)."'":"null").",";
|
||||
$sql.= " active=".(isset($this->active)?$this->active:"null");
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
if (! $notrigger)
|
||||
{
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action call a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error)
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1*$error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete object in database
|
||||
*
|
||||
* @param User $user User that delete
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function delete($user, $notrigger = 0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
$error=0;
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."c_units";
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
if (! $notrigger)
|
||||
{
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action call a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error)
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1*$error;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -461,7 +461,6 @@ function show_stats_for_company($product, $socid)
|
||||
return $nblines++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return translation label of a unit key
|
||||
*
|
||||
@ -472,50 +471,24 @@ function show_stats_for_company($product, $socid)
|
||||
*/
|
||||
function measuring_units_string($unit, $measuring_style = '')
|
||||
{
|
||||
global $langs;
|
||||
global $langs, $db;
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/cmeasuringunits.class.php';
|
||||
$measuringUnits= new CMeasuringUnits($db);
|
||||
$result = $measuringUnits->fetchAll('', '', 0, 0, array(
|
||||
't.code' => $unit,
|
||||
't.unit_type' => $measuring_style,
|
||||
't.active' => 1
|
||||
));
|
||||
|
||||
$measuring_units=array();
|
||||
if ($measuring_style == 'weight')
|
||||
{
|
||||
$measuring_units[3] = $langs->transnoentitiesnoconv("WeightUnitton");
|
||||
$measuring_units[0] = $langs->transnoentitiesnoconv("WeightUnitkg");
|
||||
$measuring_units[-3] = $langs->transnoentitiesnoconv("WeightUnitg");
|
||||
$measuring_units[-6] = $langs->transnoentitiesnoconv("WeightUnitmg");
|
||||
$measuring_units[98] = $langs->transnoentitiesnoconv("WeightUnitounce");
|
||||
$measuring_units[99] = $langs->transnoentitiesnoconv("WeightUnitpound");
|
||||
if ($result<0) {
|
||||
return -1;
|
||||
} else {
|
||||
if (is_array($measuringUnits->records) && count($measuringUnits->records)>0) {
|
||||
return $langs->transnoentitiesnoconv($measuringUnits->records[key($measuringUnits->records)]->label);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
elseif ($measuring_style == 'size')
|
||||
{
|
||||
$measuring_units[0] = $langs->transnoentitiesnoconv("SizeUnitm");
|
||||
$measuring_units[-1] = $langs->transnoentitiesnoconv("SizeUnitdm");
|
||||
$measuring_units[-2] = $langs->transnoentitiesnoconv("SizeUnitcm");
|
||||
$measuring_units[-3] = $langs->transnoentitiesnoconv("SizeUnitmm");
|
||||
$measuring_units[98] = $langs->transnoentitiesnoconv("SizeUnitfoot");
|
||||
$measuring_units[99] = $langs->transnoentitiesnoconv("SizeUnitinch");
|
||||
}
|
||||
elseif ($measuring_style == 'surface')
|
||||
{
|
||||
$measuring_units[0] = $langs->transnoentitiesnoconv("SurfaceUnitm2");
|
||||
$measuring_units[-2] = $langs->transnoentitiesnoconv("SurfaceUnitdm2");
|
||||
$measuring_units[-4] = $langs->transnoentitiesnoconv("SurfaceUnitcm2");
|
||||
$measuring_units[-6] = $langs->transnoentitiesnoconv("SurfaceUnitmm2");
|
||||
$measuring_units[98] = $langs->transnoentitiesnoconv("SurfaceUnitfoot2");
|
||||
$measuring_units[99] = $langs->transnoentitiesnoconv("SurfaceUnitinch2");
|
||||
}
|
||||
elseif ($measuring_style == 'volume')
|
||||
{
|
||||
$measuring_units[0] = $langs->transnoentitiesnoconv("VolumeUnitm3");
|
||||
$measuring_units[-3] = $langs->transnoentitiesnoconv("VolumeUnitdm3");
|
||||
$measuring_units[-6] = $langs->transnoentitiesnoconv("VolumeUnitcm3");
|
||||
$measuring_units[-9] = $langs->transnoentitiesnoconv("VolumeUnitmm3");
|
||||
$measuring_units[88] = $langs->transnoentitiesnoconv("VolumeUnitfoot3");
|
||||
$measuring_units[89] = $langs->transnoentitiesnoconv("VolumeUnitinch3");
|
||||
$measuring_units[97] = $langs->transnoentitiesnoconv("VolumeUnitounce");
|
||||
$measuring_units[98] = $langs->transnoentitiesnoconv("VolumeUnitlitre");
|
||||
$measuring_units[99] = $langs->transnoentitiesnoconv("VolumeUnitgallon");
|
||||
}
|
||||
|
||||
return $measuring_units[$unit];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -471,6 +471,43 @@ class ImportCsv extends ModeleImports
|
||||
{
|
||||
if (empty($newval)) $newval='0';
|
||||
}
|
||||
elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeunits')
|
||||
{
|
||||
$file=(empty($objimport->array_import_convertvalue[0][$val]['classfile'])?$objimport->array_import_convertvalue[0][$val]['file']:$objimport->array_import_convertvalue[0][$val]['classfile']);
|
||||
$class=$objimport->array_import_convertvalue[0][$val]['class'];
|
||||
$method=$objimport->array_import_convertvalue[0][$val]['method'];
|
||||
$units=$objimport->array_import_convertvalue[0][$val]['units'];
|
||||
if ($this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval] != '')
|
||||
{
|
||||
$newval=$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval];
|
||||
}
|
||||
else
|
||||
{
|
||||
$resultload = dol_include_once($file);
|
||||
if (empty($resultload))
|
||||
{
|
||||
dol_print_error('', 'Error trying to call file='.$file.', class='.$class.', method='.$method.', units='.$units);
|
||||
break;
|
||||
}
|
||||
$classinstance=new $class($this->db);
|
||||
// Try the fetch from code or ref
|
||||
call_user_func_array(array($classinstance, $method), array('', $units, $newval));
|
||||
$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval]=$classinstance->code;
|
||||
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
||||
if ($classinstance->code != '') // id may be 0, it is a found value
|
||||
{
|
||||
$newval=$classinstance->code;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib']=$langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
|
||||
else $this->errors[$error]['lib']='ErrorFieldValueNotIn';
|
||||
$this->errors[$error]['type']='FOREIGNKEY';
|
||||
$errorforthistable++;
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='getcustomercodeifauto')
|
||||
{
|
||||
if (strtolower($newval) == 'auto')
|
||||
|
||||
@ -498,6 +498,43 @@ class ImportXlsx extends ModeleImports
|
||||
{
|
||||
if (empty($newval)) $newval='0';
|
||||
}
|
||||
elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeunits')
|
||||
{
|
||||
$file=(empty($objimport->array_import_convertvalue[0][$val]['classfile'])?$objimport->array_import_convertvalue[0][$val]['file']:$objimport->array_import_convertvalue[0][$val]['classfile']);
|
||||
$class=$objimport->array_import_convertvalue[0][$val]['class'];
|
||||
$method=$objimport->array_import_convertvalue[0][$val]['method'];
|
||||
$units=$objimport->array_import_convertvalue[0][$val]['units'];
|
||||
if ($this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval] != '')
|
||||
{
|
||||
$newval=$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval];
|
||||
}
|
||||
else
|
||||
{
|
||||
$resultload = dol_include_once($file);
|
||||
if (empty($resultload))
|
||||
{
|
||||
dol_print_error('', 'Error trying to call file='.$file.', class='.$class.', method='.$method.', units='.$units);
|
||||
break;
|
||||
}
|
||||
$classinstance=new $class($this->db);
|
||||
// Try the fetch from code or ref
|
||||
call_user_func_array(array($classinstance, $method), array('', $units, '', $newval));
|
||||
$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'.$units][$newval]=$classinstance->code;
|
||||
//print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. ';
|
||||
if ($classinstance->code != '') // id may be 0, it is a found value
|
||||
{
|
||||
$newval=$classinstance->code;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) $this->errors[$error]['lib']=$langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
|
||||
else $this->errors[$error]['lib']='ErrorFieldValueNotIn';
|
||||
$this->errors[$error]['type']='FOREIGNKEY';
|
||||
$errorforthistable++;
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($objimport->array_import_convertvalue[0][$val]['rule']=='getcustomercodeifauto')
|
||||
{
|
||||
if (strtolower($newval) == 'auto')
|
||||
|
||||
@ -313,8 +313,11 @@ class modProduct extends DolibarrModules
|
||||
'p.note' => "PrivateNote",//private note
|
||||
'p.customcode' => 'CustomCode',
|
||||
'p.price' => "SellingPriceHT",//without tax
|
||||
'p.price_min' => "MinPrice",
|
||||
'p.price_ttc' => "SellingPriceTTC",//with tax
|
||||
'p.price_min_ttc' => "SellingMinPriceTTC",
|
||||
'p.price_base_type' => "PriceBaseType",//price base: with-tax (TTC) or without (HT) tax. Displays accordingly in Product card
|
||||
'p.cost_price' => "CostPrice",
|
||||
'p.tva_tx' => 'VATRate',
|
||||
'p.tosell' => "OnSell*",
|
||||
'p.tobuy' => "OnBuy*",
|
||||
@ -324,12 +327,18 @@ class modProduct extends DolibarrModules
|
||||
'p.accountancy_code_sell' => "ProductAccountancySellCode",
|
||||
'p.accountancy_code_buy' => "ProductAccountancyBuyCode",
|
||||
'p.weight' => "Weight",
|
||||
'p.weight_units' => "WeightUnits",
|
||||
'p.length' => "Length",
|
||||
'p.length_units' => "LengthUnit",
|
||||
'p.width' => "Width",
|
||||
'p.width_units' => "VolumeUnits",
|
||||
'p.height' => "Height",
|
||||
'p.height_units' => "HeightUnit",
|
||||
'p.surface' => "Surface",
|
||||
'p.surface_units' => "SurfaceUnit",
|
||||
'p.volume' => "Volume",
|
||||
'p.finished' => 'Nature'
|
||||
'p.volume_units' => "VolumeUnits",
|
||||
'p.finished' => 'Nature',
|
||||
);
|
||||
if (!empty($conf->stock->enabled)) {//if Stock module enabled
|
||||
$this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array(
|
||||
@ -338,6 +347,58 @@ class modProduct extends DolibarrModules
|
||||
'p.desiredstock' => 'DesiredStock'//desired stock for replenishment feature
|
||||
));
|
||||
}
|
||||
|
||||
$this->import_convertvalue_array[$r] = array(
|
||||
'p.weight_units' => array(
|
||||
'rule' => 'fetchidfromcodeunits',
|
||||
'classfile' => '/core/class/cmeasuringunits.class.php',
|
||||
'class' => 'CMeasuringUnits',
|
||||
'method' => 'fetch',
|
||||
'units' => 'weight',
|
||||
'dict' => 'DictionaryMeasuringUnits'
|
||||
),
|
||||
'p.length_units' => array(
|
||||
'rule' => 'fetchidfromcodeunits',
|
||||
'classfile' => '/core/class/cmeasuringunits.class.php',
|
||||
'class' => 'CMeasuringUnits',
|
||||
'method' => 'fetch',
|
||||
'units' => 'size',
|
||||
'dict' => 'DictionaryMeasuringUnits'
|
||||
),
|
||||
'p.width_units' => array(
|
||||
'rule' => 'fetchidfromcodeunits',
|
||||
'classfile' => '/core/class/cmeasuringunits.class.php',
|
||||
'class' => 'CMeasuringUnits',
|
||||
'method' => 'fetch',
|
||||
'units' => 'size',
|
||||
'dict' => 'DictionaryMeasuringUnits'
|
||||
),
|
||||
'p.height_units' => array(
|
||||
'rule' => 'fetchidfromcodeunits',
|
||||
'classfile' => '/core/class/cmeasuringunits.class.php',
|
||||
'class' => 'CMeasuringUnits',
|
||||
'method' => 'fetch',
|
||||
'units' => 'size',
|
||||
'dict' => 'DictionaryMeasuringUnits'
|
||||
),
|
||||
'p.surface_units' => array(
|
||||
'rule' => 'fetchidfromcodeunits',
|
||||
'classfile' => '/core/class/cmeasuringunits.class.php',
|
||||
'class' => 'CMeasuringUnits',
|
||||
'method' => 'fetch',
|
||||
'units' => 'surface',
|
||||
'dict' => 'DictionaryMeasuringUnits'
|
||||
),
|
||||
'p.volume_units' => array(
|
||||
'rule' => 'fetchidfromcodeunits',
|
||||
'classfile' => '/core/class/cmeasuringunits.class.php',
|
||||
'class' => 'CMeasuringUnits',
|
||||
'method' => 'fetch',
|
||||
'units' => 'volume',
|
||||
'dict' => 'DictionaryMeasuringUnits'
|
||||
)
|
||||
);
|
||||
|
||||
if (! empty($conf->fournisseur->enabled) || !empty($conf->margin->enabled)) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r], array('p.cost_price'=>'CostPrice'));
|
||||
if (is_object($mysoc) && $mysoc->useNPR()) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r], array('p.recuperableonly'=>'NPR'));
|
||||
if (is_object($mysoc) && $mysoc->useLocalTax(1)) $this->import_fields_array[$r]=array_merge($this->import_fields_array[$r], array('p.localtax1_tx'=>'LT1', 'p.localtax1_type'=>'LT1Type'));
|
||||
@ -371,7 +432,8 @@ class modProduct extends DolibarrModules
|
||||
'p.finished' => '^[0|1]$'
|
||||
);
|
||||
|
||||
$import_sample = array(//field order as per structure of table llx_product
|
||||
// field order as per structure of table llx_product
|
||||
$import_sample = array(
|
||||
'p.ref' => "PREF123456",
|
||||
'p.datec' => 'formatted as '.dol_print_date(dol_now(), '%Y-%m-%d'),
|
||||
'p.label' => "Product name in default language",
|
||||
@ -380,7 +442,9 @@ class modProduct extends DolibarrModules
|
||||
'p.note' => "a private note (free text)",
|
||||
'p.customcode' => 'customs code',
|
||||
'p.price' => "price ex-vat eg. 100",
|
||||
'p.price_min' => "price ex-vat eg. 100",
|
||||
'p.price_ttc' => "price inc-vat eg. 110",
|
||||
'p.price_min_ttc' => "price inc-vat eg. 110",
|
||||
'p.price_base_type' => "HT (show/use price excl. tax) / TTC (show/use price incl. tax)",
|
||||
'p.tva_tx' => 'tax rate eg: 10. Must match numerically one of the tax rates defined for your country',
|
||||
'p.tosell' => "0 (not for sale to customer, eg. raw material) / 1 (for sale)",
|
||||
@ -391,11 +455,17 @@ class modProduct extends DolibarrModules
|
||||
'p.accountancy_code_sell' => "",
|
||||
'p.accountancy_code_buy' => "",
|
||||
'p.weight' => "",
|
||||
'p.weight_units' => 'use a unit of measure from the dictionary. g/Kg/T etc....matches field "Short Label" for unit type "weight" in table "' . MAIN_DB_PREFIX . 'c_measuring_units',
|
||||
'p.length' => "",
|
||||
'p.length_units' => 'use a unit of measure from the dictionary. m/cm/mm etc....matches field "Short Label" for unit type "size" in table "' . MAIN_DB_PREFIX . 'c_measuring_units',
|
||||
'p.width' => "",
|
||||
'p.width_units' => 'use a unit of measure from the dictionary. m/cm/mm etc....matches field "Short Label" for unit type "size" in table "' . MAIN_DB_PREFIX . 'c_measuring_units',
|
||||
'p.height' => "",
|
||||
'p.height_units' => 'use a unit of measure from the dictionary. m/cm/mm etc....matches field "Short Label" for unit type "size" in table "' . MAIN_DB_PREFIX . 'c_measuring_units',
|
||||
'p.surface' => "",
|
||||
'p.surface_units' => 'use a unit of measure from the dictionary. m2/cm2/mm2 etc....matches field "Short Label" for unit type "surface" in table "' . MAIN_DB_PREFIX . 'c_measuring_units',
|
||||
'p.volume' => "",
|
||||
'p.volume_units' => 'use a unit of measure from the dictionary. m3/cm3/mm3 etc....matches field "Short Label" for unit type "volume" in table "' . MAIN_DB_PREFIX . 'c_measuring_units',
|
||||
'p.finished' => '0 (raw material) / 1 (finished goods)'
|
||||
);
|
||||
//clauses copied from import_fields_array
|
||||
@ -409,8 +479,21 @@ class modProduct extends DolibarrModules
|
||||
if (is_object($mysoc) && $mysoc->useLocalTax(1)) $import_sample=array_merge($import_sample, array('p.localtax1_tx'=>'', 'p.localtax1_type'=>''));
|
||||
if (is_object($mysoc) && $mysoc->useLocalTax(2)) $import_sample=array_merge($import_sample, array('p.localtax2_tx'=>'', 'p.localtax2_type'=>''));
|
||||
if (! empty($conf->barcode->enabled)) $import_sample=array_merge($import_sample, array('p.barcode'=>''));
|
||||
if (! empty($conf->global->PRODUCT_USE_UNITS)) $import_sample=array_merge($import_sample, array('p.fk_unit'=>'use a unit of measure from the dictionary. 1/2/3 etc....matches field "rowid" in table "'.MAIN_DB_PREFIX.'c_units"'));
|
||||
if (! empty($conf->global->PRODUCT_USE_UNITS)) {
|
||||
$import_sample = array_merge($import_sample, array(
|
||||
'p.fk_unit' => 'use a unit of measure from the dictionary. G/KG/M2/M3 etc....matches field "code" in table "' . MAIN_DB_PREFIX . 'c_units"'
|
||||
));
|
||||
|
||||
$this->import_convertvalue_array[$r] = array_merge($this->import_convertvalue_array[$r], array(
|
||||
'p.fk_unit' => array(
|
||||
'rule' => 'fetchidfromcodeorlabel',
|
||||
'classfile' => '/core/class/cunits.class.php',
|
||||
'class' => 'CUnits',
|
||||
'method' => 'fetch',
|
||||
'dict' => 'DictionaryUnits'
|
||||
)
|
||||
));
|
||||
}
|
||||
$this->import_examplevalues_array[$r]=array_merge($import_sample, $import_extrafield_sample);
|
||||
$this->import_updatekeys_array[$r] = array('p.ref'=>'Ref');
|
||||
if (! empty($conf->barcode->enabled)) $this->import_updatekeys_array[$r]=array_merge($this->import_updatekeys_array[$r], array('p.barcode'=>'BarCode'));//only show/allow barcode as update key if Barcode module enabled
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -37,7 +37,7 @@ currencySymbol = kr
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #NUL!
|
||||
DIV0 = #DIVISION/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = €
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #NULL!
|
||||
DIV0 = #DIV/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = $ ## I'm surprised that the Excel Documentation suggests $ rath
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #¡NULO!
|
||||
DIV0 = #¡DIV/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = $ # Symbol not known, should it be a € (Euro)?
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #TYHJÄ!
|
||||
DIV0 = #JAKO/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = €
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #NUL!
|
||||
DIV0 = #DIV/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = €
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #NULLO!
|
||||
DIV0 = #DIV/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = €
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #LEEG!
|
||||
DIV0 = #DEEL/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = kr
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #NULL!
|
||||
DIV0 = #DIV/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = zł
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #ZERO!
|
||||
DIV0 = #DZIEL/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = R$
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #NULO!
|
||||
DIV0 = #DIV/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = €
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #NULO!
|
||||
DIV0 = #DIV/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = р
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #ПУСТО!
|
||||
DIV0 = #ДЕЛ/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = kr
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #Skärning!
|
||||
DIV0 = #Division/0!
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
##
|
||||
## PHPExcel
|
||||
##
|
||||
##
|
||||
## Copyright (c) 2006 - 2013 PHPExcel
|
||||
##
|
||||
## This library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ currencySymbol = YTL
|
||||
|
||||
|
||||
##
|
||||
## Excel Error Codes (For future use)
|
||||
## Excel Error Codes (For future use)
|
||||
##
|
||||
NULL = #BOŞ!
|
||||
DIV0 = #SAYI/0!
|
||||
|
||||
51
htdocs/install/mysql/data/llx_c_measuring_units.sql
Normal file
51
htdocs/install/mysql/data/llx_c_measuring_units.sql
Normal file
@ -0,0 +1,51 @@
|
||||
-- ========================================================================
|
||||
-- Copyright (C) 2001-2002,2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2019 Florian Henry <florian.henry@atm-consulitng.fr>
|
||||
-- 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 2 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/>.
|
||||
--
|
||||
-- ========================================================================
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('3','WeightUnitton','T', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','WeightUnitkg','Kg', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-3','WeightUnitg','g', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-6','WeightUnitmg','g', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','WeightUnitounce','Oz', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','WeightUnitpound','lb', 'weight', 1);
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','SizeUnitm','m', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-1','SizeUnitdm','dm', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-2','SizeUnitcm','cm', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-3','SizeUnitmm','mm', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','SizeUnitfoot','ft', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','SizeUnitinch','in', 'size', 1);
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','SurfaceUnitm2','m2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-2','SurfaceUnitdm2','dm2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-4','SurfaceUnitcm2','cm2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-6','SurfaceUnitmm2','mm2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','SurfaceUnitfoot2','ft2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','SurfaceUnitinch2','in2', 'surface', 1);
|
||||
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','VolumeUnitm3','m3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-3','VolumeUnitdm3','dm3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-6','VolumeUnitcm3','cm3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-9','VolumeUnitmm3','mm3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('88','VolumeUnitfoot3','ft3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('89','VolumeUnitinch3','in3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('97','VolumeUnitounce','Oz', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','VolumeUnitlitre','L', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','VolumeUnitgallon','gal', 'volume', 1);
|
||||
|
||||
@ -94,4 +94,46 @@ ALTER TABLE llx_actioncomm ADD COLUMN calling_duration integer;
|
||||
|
||||
ALTER TABLE llx_don ADD COLUMN fk_soc integer NULL;
|
||||
|
||||
ALTER TABLE llx_payment_various ADD COLUMN subledger_account varchar(32);
|
||||
ALTER TABLE llx_payment_various ADD COLUMN subledger_account varchar(32);
|
||||
|
||||
CREATE TABLE llx_c_measuring_units(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
code varchar(3),
|
||||
label varchar(50),
|
||||
short_label varchar(5),
|
||||
unit_type varchar(10),
|
||||
active tinyint DEFAULT 1 NOT NULL
|
||||
) ENGINE=innodb;
|
||||
|
||||
ALTER TABLE llx_c_measuring_units ADD UNIQUE uk_c_measuring_units_code(code,unit_type);
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('3','WeightUnitton','T', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','WeightUnitkg','Kg', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-3','WeightUnitg','g', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-6','WeightUnitmg','g', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','WeightUnitounce','Oz', 'weight', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','WeightUnitpound','lb', 'weight', 1);
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','SizeUnitm','m', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-1','SizeUnitdm','dm', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-2','SizeUnitcm','cm', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-3','SizeUnitmm','mm', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','SizeUnitfoot','ft', 'size', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','SizeUnitinch','in', 'size', 1);
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','SurfaceUnitm2','m2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-2','SurfaceUnitdm2','dm2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-4','SurfaceUnitcm2','cm2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-6','SurfaceUnitmm2','mm2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','SurfaceUnitfoot2','ft2', 'surface', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','SurfaceUnitinch2','in2', 'surface', 1);
|
||||
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('0','VolumeUnitm3','m3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-3','VolumeUnitdm3','dm3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-6','VolumeUnitcm3','cm3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('-9','VolumeUnitmm3','mm3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('88','VolumeUnitfoot3','ft3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('89','VolumeUnitinch3','in3', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('97','VolumeUnitounce','Oz', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('98','VolumeUnitlitre','L', 'volume', 1);
|
||||
INSERT INTO llx_c_measuring_units (code, label, short_label, unit_type, active) VALUES ('99','VolumeUnitgallon','gal', 'volume', 1);
|
||||
|
||||
21
htdocs/install/mysql/tables/llx_c_measuring_units.key.sql
Normal file
21
htdocs/install/mysql/tables/llx_c_measuring_units.key.sql
Normal file
@ -0,0 +1,21 @@
|
||||
-- ========================================================================
|
||||
-- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||
--
|
||||
-- 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 2 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/>.
|
||||
--
|
||||
-- ========================================================================
|
||||
|
||||
|
||||
ALTER TABLE llx_c_measuring_units ADD UNIQUE uk_c_measuring_units_code(code,unit_type);
|
||||
28
htdocs/install/mysql/tables/llx_c_measuring_units.sql
Normal file
28
htdocs/install/mysql/tables/llx_c_measuring_units.sql
Normal file
@ -0,0 +1,28 @@
|
||||
-- ========================================================================
|
||||
-- Copyright (C) 2001-2002,2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
-- Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr>
|
||||
--
|
||||
-- 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 2 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/>.
|
||||
--
|
||||
-- ========================================================================
|
||||
|
||||
create table llx_c_measuring_units(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
code varchar(3),
|
||||
label varchar(50),
|
||||
short_label varchar(5),
|
||||
unit_type varchar(10),
|
||||
active tinyint DEFAULT 1 NOT NULL
|
||||
) ENGINE=innodb;
|
||||
@ -919,6 +919,7 @@ DictionaryAccountancysystem=Models for chart of accounts
|
||||
DictionaryAccountancyJournal=Accounting journals
|
||||
DictionaryEMailTemplates=Email Templates
|
||||
DictionaryUnits=Units
|
||||
DictionaryMeasuringUnits=Measuring Units
|
||||
DictionaryProspectStatus=Prospect status
|
||||
DictionaryHolidayTypes=Types of leave
|
||||
DictionaryOpportunityStatus=Lead status for project/lead
|
||||
|
||||
@ -64,6 +64,7 @@ AppliedPricesFrom=Applied from
|
||||
SellingPrice=Selling price
|
||||
SellingPriceHT=Selling price (excl. tax)
|
||||
SellingPriceTTC=Selling price (inc. tax)
|
||||
SellingMinPriceTTC=Minimum Selling price (inc. tax)
|
||||
CostPriceDescription=This price field (excl. tax) can be used to store the average amount this product costs to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost.
|
||||
CostPriceUsage=This value could be used for margin calculation.
|
||||
SoldAmount=Sold amount
|
||||
|
||||
@ -207,18 +207,18 @@ if ($result)
|
||||
print "<table class=\"noborder\" width=\"100%\">";
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
if ($agentid > 0)
|
||||
print_liste_field_titre("Customer", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder);
|
||||
else
|
||||
print_liste_field_titre("SalesRepresentative", $_SERVER["PHP_SELF"], "u.lastname", "", $param, '', $sortfield, $sortorder);
|
||||
if ($agentid > 0)
|
||||
print_liste_field_titre("Customer", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder);
|
||||
else
|
||||
print_liste_field_titre("SalesRepresentative", $_SERVER["PHP_SELF"], "u.lastname", "", $param, '', $sortfield, $sortorder);
|
||||
|
||||
print_liste_field_titre("SellingPrice", $_SERVER["PHP_SELF"], "selling_price", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
print_liste_field_titre($labelcostprice, $_SERVER["PHP_SELF"], "buying_price", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
print_liste_field_titre("Margin", $_SERVER["PHP_SELF"], "marge", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print_liste_field_titre("MarginRate", $_SERVER["PHP_SELF"], "", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print_liste_field_titre("MarkRate", $_SERVER["PHP_SELF"], "", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
print_liste_field_titre("SellingPrice", $_SERVER["PHP_SELF"], "selling_price", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
print_liste_field_titre($labelcostprice, $_SERVER["PHP_SELF"], "buying_price", "", $param, ' align="right"', $sortfield, $sortorder);
|
||||
print_liste_field_titre("Margin", $_SERVER["PHP_SELF"], "marge", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
if (! empty($conf->global->DISPLAY_MARGIN_RATES))
|
||||
print_liste_field_titre("MarginRate", $_SERVER["PHP_SELF"], "", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
if (! empty($conf->global->DISPLAY_MARK_RATES))
|
||||
print_liste_field_titre("MarkRate", $_SERVER["PHP_SELF"], "", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
print "</tr>\n";
|
||||
|
||||
$rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT);
|
||||
|
||||
@ -311,31 +311,38 @@ class FormProduct
|
||||
function load_measuring_units($name = 'measuring_units', $measuring_style = '', $default = '0', $adddefault = 0)
|
||||
{
|
||||
//phpcs:enable
|
||||
global $langs,$conf,$mysoc;
|
||||
global $langs, $conf, $mysoc, $db;
|
||||
$langs->load("other");
|
||||
|
||||
$return='';
|
||||
$return = '';
|
||||
|
||||
$measuring_units=array();
|
||||
if ($measuring_style == 'weight') $measuring_units=array(-6=>1,-3=>1,0=>1,3=>1,98=>1,99=>1);
|
||||
elseif ($measuring_style == 'size') $measuring_units=array(-3=>1,-2=>1,-1=>1,0=>1,98=>1,99=>1);
|
||||
elseif ($measuring_style == 'surface') $measuring_units=array(-6=>1,-4=>1,-2=>1,0=>1,98=>1,99=>1);
|
||||
elseif ($measuring_style == 'volume') $measuring_units=array(-9=>1,-6=>1,-3=>1,0=>1,88=>1,89=>1,97=>1,99=>1,/* 98=>1 */); // Liter is not used as already available with dm3
|
||||
$measuring_units = array();
|
||||
|
||||
$return.= '<select class="flat" name="'.$name.'">';
|
||||
if ($adddefault) $return.= '<option value="0">'.$langs->trans("Default").'</option>';
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/class/cmeasuringunits.class.php';
|
||||
$measuringUnits = new CMeasuringUnits($db);
|
||||
$result = $measuringUnits->fetchAll('', '', 0, 0, array(
|
||||
't.unit_type' => $measuring_style,
|
||||
't.active' => 1
|
||||
));
|
||||
if ($result < 0) {
|
||||
dol_print_error($db);
|
||||
return - 1;
|
||||
} else {
|
||||
$return .= '<select class="flat" name="' . $name . '">';
|
||||
if ($adddefault)
|
||||
$return .= '<option value="0">' . $langs->trans("Default") . '</option>';
|
||||
|
||||
foreach ($measuring_units as $key => $value)
|
||||
{
|
||||
$return.= '<option value="'.$key.'"';
|
||||
if ($key == $default)
|
||||
foreach ($measuringUnits->records as $lines)
|
||||
{
|
||||
$return.= ' selected';
|
||||
$return .= '<option value="' . $lines->code . '"';
|
||||
if ($key == $default) {
|
||||
$return .= ' selected';
|
||||
}
|
||||
// $return.= '>'.$value.'</option>';
|
||||
$return .= '>' . $langs->transnoentitiesnoconv($lines->label) . '</option>';
|
||||
}
|
||||
//$return.= '>'.$value.'</option>';
|
||||
$return.= '>'.measuring_units_string($key, $measuring_style).'</option>';
|
||||
$return .= '</select>';
|
||||
}
|
||||
$return.= '</select>';
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
@ -125,8 +125,8 @@ $usercandelete = (($user->rights->stock->mouvement->supprimer));
|
||||
if (GETPOST('cancel', 'alpha')) { $action='list'; $massaction=''; }
|
||||
if (! GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; }
|
||||
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||
$parameters = array();
|
||||
$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');
|
||||
|
||||
include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php';
|
||||
@ -452,8 +452,8 @@ $sql.= " u.login, u.photo, u.lastname, u.firstname";
|
||||
// Add fields from extrafields
|
||||
foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : '');
|
||||
// Add fields from hooks
|
||||
$parameters=array();
|
||||
$reshook=$hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$parameters = array();
|
||||
$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||
$sql.=$hookmanager->resPrint;
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e,";
|
||||
$sql.= " ".MAIN_DB_PREFIX."product as p,";
|
||||
@ -911,27 +911,42 @@ if ($resql)
|
||||
print "</tr>\n";
|
||||
|
||||
print '<tr class="liste_titre">';
|
||||
if (! empty($arrayfields['m.rowid']['checked'])) print_liste_field_titre($arrayfields['m.rowid']['label'], $_SERVER["PHP_SELF"], 'm.rowid', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.datem']['checked'])) print_liste_field_titre($arrayfields['m.datem']['label'], $_SERVER["PHP_SELF"], 'm.datem', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], 'p.ref', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['p.label']['checked'])) print_liste_field_titre($arrayfields['p.label']['label'], $_SERVER["PHP_SELF"], 'p.label', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.batch']['checked'])) print_liste_field_titre($arrayfields['m.batch']['label'], $_SERVER["PHP_SELF"], 'm.batch', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['pl.eatby']['checked'])) print_liste_field_titre($arrayfields['pl.eatby']['label'], $_SERVER["PHP_SELF"], 'pl.eatby', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['pl.sellby']['checked'])) print_liste_field_titre($arrayfields['pl.sellby']['label'], $_SERVER["PHP_SELF"], 'pl.sellby', '', $param,'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['e.ref']['checked'])) print_liste_field_titre($arrayfields['e.ref']['label'], $_SERVER["PHP_SELF"], "e.ref", '', $param, "", $sortfield, $sortorder); // We are on a specific warehouse card, no filter on other should be possible
|
||||
if (! empty($arrayfields['m.fk_user_author']['checked'])) print_liste_field_titre($arrayfields['m.fk_user_author']['label'], $_SERVER["PHP_SELF"], "m.fk_user_author", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.inventorycode']['checked'])) print_liste_field_titre($arrayfields['m.inventorycode']['label'], $_SERVER["PHP_SELF"], "m.inventorycode", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.label']['checked'])) print_liste_field_titre($arrayfields['m.label']['label'], $_SERVER["PHP_SELF"], "m.label", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.type_mouvement']['checked'])) print_liste_field_titre($arrayfields['m.type_mouvement']['label'], $_SERVER["PHP_SELF"], "m.type_mouvement", "", $param, 'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['origin']['checked'])) print_liste_field_titre($arrayfields['origin']['label'], $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.value']['checked'])) print_liste_field_titre($arrayfields['m.value']['label'], $_SERVER["PHP_SELF"], "m.value", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.price']['checked'])) print_liste_field_titre($arrayfields['m.price']['label'], $_SERVER["PHP_SELF"], "m.price", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.rowid']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.rowid']['label'], $_SERVER["PHP_SELF"], 'm.rowid', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.datem']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.datem']['label'], $_SERVER["PHP_SELF"], 'm.datem', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['p.ref']['checked']))
|
||||
print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], 'p.ref', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['p.label']['checked']))
|
||||
print_liste_field_titre($arrayfields['p.label']['label'], $_SERVER["PHP_SELF"], 'p.label', '', $param, '', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.batch']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.batch']['label'], $_SERVER["PHP_SELF"], 'm.batch', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['pl.eatby']['checked']))
|
||||
print_liste_field_titre($arrayfields['pl.eatby']['label'], $_SERVER["PHP_SELF"], 'pl.eatby', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['pl.sellby']['checked']))
|
||||
print_liste_field_titre($arrayfields['pl.sellby']['label'], $_SERVER["PHP_SELF"], 'pl.sellby', '', $param, 'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['e.ref']['checked']))
|
||||
print_liste_field_titre($arrayfields['e.ref']['label'], $_SERVER["PHP_SELF"], "e.ref", "", $param, "", $sortfield, $sortorder); // We are on a specific warehouse card, no filter on other should be possible
|
||||
if (! empty($arrayfields['m.fk_user_author']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.fk_user_author']['label'], $_SERVER["PHP_SELF"], "m.fk_user_author", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.inventorycode']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.inventorycode']['label'], $_SERVER["PHP_SELF"], "m.inventorycode", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.label']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.label']['label'], $_SERVER["PHP_SELF"], "m.label", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.type_mouvement']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.type_mouvement']['label'], $_SERVER["PHP_SELF"], "m.type_mouvement", "", $param, 'align="center"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['origin']['checked']))
|
||||
print_liste_field_titre($arrayfields['origin']['label'], $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.value']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.value']['label'], $_SERVER["PHP_SELF"], "m.value", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
if (! empty($arrayfields['m.price']['checked']))
|
||||
print_liste_field_titre($arrayfields['m.price']['label'], $_SERVER["PHP_SELF"], "m.price", "", $param, 'align="right"', $sortfield, $sortorder);
|
||||
|
||||
// Extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
||||
|
||||
// Hook fields
|
||||
$parameters=array('arrayfields'=>$arrayfields,'param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder);
|
||||
$parameters=array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
|
||||
$reshook=$hookmanager->executeHooks('printFieldListTitle', $parameters); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
if (! empty($arrayfields['m.datec']['checked'])) print_liste_field_titre($arrayfields['p.datec']['label'], $_SERVER["PHP_SELF"], "p.datec", "", $param, 'align="center" class="nowrap"', $sortfield, $sortorder);
|
||||
@ -939,6 +954,7 @@ if ($resql)
|
||||
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ');
|
||||
print "</tr>\n";
|
||||
|
||||
|
||||
$arrayofuniqueproduct=array();
|
||||
|
||||
while ($i < min($num, $limit))
|
||||
|
||||
@ -1047,6 +1047,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0)
|
||||
{
|
||||
if (in_array($user->id, $contactsofproject)) $userid = $user->id;
|
||||
else $userid = $contactsofproject[0];
|
||||
|
||||
if ($projectstatic->public) $contactsofproject = array();
|
||||
print $form->select_dolusers((GETPOST('userid')?GETPOST('userid'):$userid), 'userid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 0, $langs->trans("ResourceNotAssignedToProject"), 'maxwidth200');
|
||||
}
|
||||
|
||||
@ -211,6 +211,7 @@ function getCategory($authentication, $id)
|
||||
{
|
||||
$fuser->getrights();
|
||||
|
||||
$nbmax = 10;
|
||||
if ($fuser->rights->categorie->lire)
|
||||
{
|
||||
$categorie=new Categorie($db);
|
||||
|
||||
@ -337,8 +337,6 @@ function getProductOrService($authentication, $id = '', $ref = '', $ref_ext = ''
|
||||
{
|
||||
global $db,$conf,$langs;
|
||||
|
||||
$nbmax = 10;
|
||||
|
||||
dol_syslog("Function: getProductOrService login=".$authentication['login']." id=".$id." ref=".$ref." ref_ext=".$ref_ext);
|
||||
|
||||
$langcode=($lang?$lang:(empty($conf->global->MAIN_LANG_DEFAULT)?'auto':$conf->global->MAIN_LANG_DEFAULT));
|
||||
@ -366,6 +364,7 @@ function getProductOrService($authentication, $id = '', $ref = '', $ref_ext = ''
|
||||
|
||||
$fuser->getrights();
|
||||
|
||||
$nbmax = 10;
|
||||
if ($fuser->rights->produit->lire || $fuser->rights->service->lire)
|
||||
{
|
||||
$product=new Product($db);
|
||||
@ -419,7 +418,7 @@ function getProductOrService($authentication, $id = '', $ref = '', $ref_ext = ''
|
||||
'pmp' => $product->pmp,
|
||||
'import_key' => $product->import_key,
|
||||
'dir' => $pdir,
|
||||
'images' => $product->liste_photos($dir, $nbmax)
|
||||
'images' => $product->liste_photos($dir, $nbmax)
|
||||
);
|
||||
|
||||
//Retreive all extrafield for thirdsparty
|
||||
@ -1003,8 +1002,6 @@ function getProductsForCategory($authentication, $id, $lang = '')
|
||||
{
|
||||
global $db,$conf,$langs;
|
||||
|
||||
$nbmax = 10;
|
||||
|
||||
$langcode=($lang?$lang:(empty($conf->global->MAIN_LANG_DEFAULT)?'auto':$conf->global->MAIN_LANG_DEFAULT));
|
||||
$langs->setDefaultLang($langcode);
|
||||
|
||||
@ -1033,6 +1030,7 @@ function getProductsForCategory($authentication, $id, $lang = '')
|
||||
|
||||
$fuser->getrights();
|
||||
|
||||
$nbmax = 10;
|
||||
if ($fuser->rights->produit->lire)
|
||||
{
|
||||
$categorie=new Categorie($db);
|
||||
@ -1090,7 +1088,7 @@ function getProductsForCategory($authentication, $id, $lang = '')
|
||||
'pmp' => $obj->pmp,
|
||||
'import_key' => $obj->import_key,
|
||||
'dir' => $pdir,
|
||||
'images' => $obj->liste_photos($dir, $nbmax)
|
||||
'images' => $obj->liste_photos($dir, $nbmax)
|
||||
);
|
||||
|
||||
//Retreive all extrafield for thirdsparty
|
||||
|
||||
Loading…
Reference in New Issue
Block a user