Go to the documentation of this file.
25 require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.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;
76 public $fields = array(
77 'rowid'=>array(
'type'=>
'integer',
'index'=>
true)
78 ,
'fk_c_exp_tax_cat'=>array(
'type'=>
'integer',
'index'=>
true)
79 ,
'fk_range'=>array(
'type'=>
'integer',
'index'=>
true)
80 ,
'coef'=>array(
'type'=>
'double')
81 ,
'ikoffset'=>array(
'type'=>
'double')
109 return $resultcreate;
120 public function fetch($id, $ref =
null)
123 if ($result > 0 && !empty($this->table_element_line)) {
149 public function delete(
User $user, $notrigger =
false)
164 $categories = array();
166 $sql =
'SELECT rowid, label, entity, active';
167 $sql .=
' FROM '.MAIN_DB_PREFIX.
'c_exp_tax_cat';
168 $sql .=
' WHERE entity IN (0, '.getEntity($this->element).
')';
170 $sql .=
' AND active = 1';
171 } elseif ($mode == 2) {
172 $sql .=
'AND active = 0';
175 dol_syslog(get_called_class().
'::getTaxCategories', LOG_DEBUG);
179 while ($obj = $this->
db->fetch_object(
$resql)) {
180 $categories[$obj->rowid] = $obj;
198 $default_range = (int) $userauthor->default_range;
199 $ranges = $this->getRangesByCategory($fk_c_exp_tax_cat);
201 $indice = $default_range - 1;
203 if (empty($ranges) || $indice < 0 || !isset($ranges[$indice])) {
206 return $ranges[$indice];
221 dol_syslog(get_called_class().
'::getRangesByCategory for fk_c_exp_tax_cat='.$fk_c_exp_tax_cat, LOG_DEBUG);
223 $sql =
'SELECT r.rowid FROM '.MAIN_DB_PREFIX.
'c_exp_tax_range r';
225 $sql .=
' INNER JOIN '.MAIN_DB_PREFIX.
'c_exp_tax_cat c ON (r.fk_c_exp_tax_cat = c.rowid)';
227 $sql .=
' WHERE r.fk_c_exp_tax_cat = '.((int) $fk_c_exp_tax_cat);
228 $sql .=
" AND r.entity IN(0, ".getEntity($this->element).
")";
230 $sql .=
' AND r.active = 1 AND c.active = 1';
232 $sql .=
' ORDER BY r.range_ik';
238 while ($obj = $this->
db->fetch_object(
$resql)) {
240 $object->fetch($obj->rowid);
261 $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';
262 $sql .=
' FROM '.MAIN_DB_PREFIX.
'c_exp_tax_range r';
263 $sql .=
' INNER JOIN '.MAIN_DB_PREFIX.
'c_exp_tax_cat c ON (r.fk_c_exp_tax_cat = c.rowid)';
264 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'expensereport_ik i ON (r.rowid = i.fk_range)';
265 $sql .=
' WHERE r.entity IN (0, '.getEntity($this->element).
')';
266 $sql .=
' ORDER BY r.fk_c_exp_tax_cat, r.range_ik';
268 dol_syslog(get_called_class().
'::getAllRanges', LOG_DEBUG);
272 while ($obj = $this->
db->fetch_object(
$resql)) {
274 if ($obj->fk_expense_ik > 0) {
275 $ik->fetch($obj->fk_expense_ik);
279 if (!isset($ranges[$obj->fk_c_exp_tax_cat])) {
280 $ranges[$obj->fk_c_exp_tax_cat] = array(
'label' => $obj->label,
'active' => $obj->cat_active,
'ranges' => array());
282 $ranges[$obj->fk_c_exp_tax_cat][
'ranges'][] = $obj;
299 $sql =
'SELECT MAX(counted) as nbRange FROM (';
300 $sql .=
' SELECT COUNT(*) as counted';
301 $sql .=
' FROM '.MAIN_DB_PREFIX.
'c_exp_tax_range r';
302 $sql .=
' WHERE r.entity IN (0, '.getEntity($this->element).
')';
303 if ($default_c_exp_tax_cat > 0) {
304 $sql .=
' AND r.fk_c_exp_tax_cat = '.((int) $default_c_exp_tax_cat);
306 $sql .=
' GROUP BY r.fk_c_exp_tax_cat';
307 $sql .=
') as counts';
309 dol_syslog(get_called_class().
'::getMaxRangeNumber', LOG_DEBUG);
312 $obj = $this->
db->fetch_object(
$resql);
313 return $obj->nbRange;
deleteCommon(User $user, $notrigger=false, $forcechilddeletion=0)
Delete object in database.
getAllRanges()
Return an array of ranges grouped by category.
$conf db
API class for accounts.
fetchCommon($id, $ref=null, $morewhere='')
Load object in memory from the database.
getMaxRangeNumber($default_c_exp_tax_cat=0)
Return the max number of range by a category.
Class to manage Dolibarr database access.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
Class to manage inventories.
Parent class of all other business classes (invoices, contracts, proposals, orders,...
fetch($id, $ref=null)
Load object in memory from the database.
createCommon(User $user, $notrigger=false)
Create object into database.
getRangesByCategory(int $fk_c_exp_tax_cat, $active=1)
Return an array of ranges for a category.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
create(User $user, $notrigger=false)
Create object into database.
updateCommon(User $user, $notrigger=false)
Update object into database.
__construct(DoliDB $db)
Constructor.
Class to manage Dolibarr users.
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice') && $user->rights->supplier_invoice->lire)) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
getRangeByUser(User $userauthor, int $fk_c_exp_tax_cat)
Return an array of ranges for a user.
update(User $user, $notrigger=false)
Update object into database.
getTaxCategories($mode=1)
Return expense categories in array.