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 > 0 ? $default_range - 1 : 0;
203 if (empty($ranges) || !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.
getTaxCategories($mode=1)
Return expense categories in array.
$conf db
API class for accounts.
update(User $user, $notrigger=false)
Update object into database.
Class to manage inventories.
Class to manage Dolibarr users.
Class to manage Dolibarr database access.
createCommon(User $user, $notrigger=false)
Create object into database.
getMaxRangeNumber($default_c_exp_tax_cat=0)
Return the max number of range by a category.
__construct(DoliDB $db)
Constructor.
create(User $user, $notrigger=false)
Create object into database.
fetch($id, $ref=null)
Load object in memory from the database.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
getRangesByCategory(int $fk_c_exp_tax_cat, $active=1)
Return an array of ranges for a category.
updateCommon(User $user, $notrigger=false)
Update object into database.
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.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getAllRanges()
Return an array of ranges grouped by category.
Parent class of all other business classes (invoices, contracts, proposals, orders, ...)
fetchCommon($id, $ref=null, $morewhere= '')
Load object in memory from the database.