25 require_once DOL_DOCUMENT_ROOT.
'/core/class/coreobject.class.php';
35 public $element =
'expenseik';
40 public $table_element =
'expensereport_ik';
45 public $fk_element =
'fk_expense_ik';
51 public $fk_c_exp_tax_cat;
75 public $fields = array(
76 'rowid'=>array(
'type'=>
'integer',
'index'=>
true)
77 ,
'fk_c_exp_tax_cat'=>array(
'type'=>
'integer',
'index'=>
true)
78 ,
'fk_range'=>array(
'type'=>
'integer',
'index'=>
true)
79 ,
'coef'=>array(
'type'=>
'double')
80 ,
'ikoffset'=>array(
'type'=>
'double')
92 parent::__construct($db);
95 $this->errors = array();
109 $categories = array();
111 $sql =
'SELECT rowid, label, entity, active';
112 $sql .=
' FROM '.MAIN_DB_PREFIX.
'c_exp_tax_cat';
113 $sql .=
' WHERE entity IN ('.getEntity(
'c_exp_tax_cat').
')';
114 if ($mode == 1) $sql .=
' AND active = 1';
115 elseif ($mode == 2) $sql .=
'AND active = 0';
117 dol_syslog(get_called_class().
'::getTaxCategories sql='.$sql, LOG_DEBUG);
118 $resql = $db->query($sql);
121 while ($obj = $db->fetch_object(
$resql))
123 $categories[$obj->rowid] = $obj;
141 $default_range = (int) $userauthor->default_range;
142 $ranges = self::getRangesByCategory($fk_c_exp_tax_cat);
145 if (empty($ranges) || !isset($ranges[$default_range - 1]))
return false;
146 else return $ranges[$default_range - 1];
162 $sql =
'SELECT r.rowid FROM '.MAIN_DB_PREFIX.
'c_exp_tax_range r';
163 if ($active) $sql .=
' INNER JOIN '.MAIN_DB_PREFIX.
'c_exp_tax_cat c ON (r.fk_c_exp_tax_cat = c.rowid)';
164 $sql .=
' WHERE r.fk_c_exp_tax_cat = '.$fk_c_exp_tax_cat;
165 if ($active) $sql .=
' AND r.active = 1 AND c.active = 1';
166 $sql .=
' ORDER BY r.range_ik';
168 dol_syslog(get_called_class().
'::getRangesByCategory sql='.$sql, LOG_DEBUG);
169 $resql = $db->query($sql);
172 $num = $db->num_rows(
$resql);
175 while ($obj = $db->fetch_object(
$resql))
178 $object->fetch($obj->rowid);
201 $sql =
' SELECT r.rowid, r.fk_c_exp_tax_cat, r.range_ik, c.label, i.rowid as fk_expense_ik, r.active as range_active, c.active as cat_active';
202 $sql .=
' FROM '.MAIN_DB_PREFIX.
'c_exp_tax_range r';
203 $sql .=
' INNER JOIN '.MAIN_DB_PREFIX.
'c_exp_tax_cat c ON (r.fk_c_exp_tax_cat = c.rowid)';
204 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'expensereport_ik i ON (r.rowid = i.fk_range)';
205 $sql .=
' WHERE r.entity IN (0, '.getEntity(
'').
')';
206 $sql .=
' ORDER BY r.fk_c_exp_tax_cat, r.range_ik';
208 dol_syslog(get_called_class().
'::getAllRanges sql='.$sql, LOG_DEBUG);
209 $resql = $db->query($sql);
212 while ($obj = $db->fetch_object(
$resql))
215 if ($obj->fk_expense_ik > 0) $ik->fetch($obj->fk_expense_ik);
218 if (!isset($ranges[$obj->fk_c_exp_tax_cat])) $ranges[$obj->fk_c_exp_tax_cat] = array(
'label' => $obj->label,
'active' => $obj->cat_active,
'ranges' => array());
219 $ranges[$obj->fk_c_exp_tax_cat][
'ranges'][] = $obj;
238 $sql =
'SELECT MAX(counted) as nbRange FROM (';
239 $sql .=
' SELECT COUNT(*) as counted';
240 $sql .=
' FROM '.MAIN_DB_PREFIX.
'c_exp_tax_range r';
241 $sql .=
' WHERE r.entity IN (0, '.$conf->entity.
')';
242 if ($default_c_exp_tax_cat > 0) $sql .=
' AND r.fk_c_exp_tax_cat = '.$default_c_exp_tax_cat;
243 $sql .=
' GROUP BY r.fk_c_exp_tax_cat';
244 $sql .=
') as counts';
246 dol_syslog(get_called_class().
'::getMaxRangeNumber sql='.$sql, LOG_DEBUG);
247 $resql = $db->query($sql);
250 $obj = $db->fetch_object(
$resql);
251 return $obj->nbRange;
static getMaxRangeNumber($default_c_exp_tax_cat=0)
Return the max number of range by a category.
static getAllRanges()
Return an array of ranges grouped by category.
static getRangeByUser(User $userauthor, $fk_c_exp_tax_cat)
Return an array of ranges for a user.
Class to manage inventories.
Class to manage Dolibarr users.
Class to manage Dolibarr database access.
static getTaxCategories($mode=1)
Return expense categories in array.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
__construct(DoliDB &$db)
Constructor.
static getRangesByCategory($fk_c_exp_tax_cat, $active=1)
Return an array of ranges for a category.
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->lire) if(!empty($conf->tax->enabled)&&$user->rights->tax->charges->lire) if(!empty($conf->facture->enabled)&&!empty($conf->commande->enabled)&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...