20use Luracast\Restler\RestException;
22require_once DOL_DOCUMENT_ROOT.
'/salaries/class/salary.class.php';
23require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
37 public static $FIELDS = array(
46 public static $FIELDSPAYMENT = array(
76 public function index($sortfield =
"t.rowid", $sortorder =
'ASC', $limit = 100, $page = 0)
80 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'read')) {
81 throw new RestException(403);
84 $sql =
"SELECT rowid FROM " . MAIN_DB_PREFIX .
"salary as t";
87 $sql .= $this->db->order($sortfield, $sortorder);
92 $offset = $limit * $page;
94 $sql .= $this->db->plimit($limit + 1, $offset);
98 $result = $this->db->query($sql);
101 $num = $this->db->num_rows($result);
102 $min = min($num, ($limit <= 0 ? $num : $limit));
103 for ($i = 0; $i < $min; $i++) {
104 $obj = $this->db->fetch_object($result);
105 $salary =
new Salary($this->db);
106 if ($salary->fetch($obj->rowid) > 0) {
111 throw new RestException(503,
'Error when retrieving list of salaries: ' . $this->db->lasterror());
127 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'read')) {
128 throw new RestException(403);
131 $salary =
new Salary($this->db);
132 $result = $salary->fetch(
$id);
134 throw new RestException(404,
'salary not found');
148 public function post($request_data =
null)
150 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'write')) {
151 throw new RestException(403);
154 $result = $this->
_validate($request_data);
156 $salary =
new Salary($this->db);
157 foreach ($request_data as $field => $value) {
161 if ($salary->create(DolibarrApiAccess::$user) < 0) {
162 throw new RestException(500,
'Error creating salary', array_merge(array($salary->error), $salary->errors));
176 public function put(
$id, $request_data =
null)
178 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'write')) {
179 throw new RestException(403);
182 $salary =
new Salary($this->db);
183 $result = $salary->fetch(
$id);
185 throw new RestException(404,
'salary not found');
188 foreach ($request_data as $field => $value) {
189 if ($field ==
'id') {
195 if ($salary->update(DolibarrApiAccess::$user) > 0) {
196 return $this->
get(
$id);
198 throw new RestException(500, $salary->error);
247 public function getAllPayments($sortfield =
"t.rowid", $sortorder =
'ASC', $limit = 100, $page = 0)
251 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'read')) {
252 throw new RestException(403);
255 $sql =
"SELECT t.rowid FROM " . MAIN_DB_PREFIX .
"payment_salary as t, ".MAIN_DB_PREFIX.
"salary as s";
256 $sql .=
' WHERE s.rowid = t.fk_salary AND t.entity IN ('.getEntity(
'salary').
')';
258 $sql .= $this->db->order($sortfield, $sortorder);
263 $offset = $limit * $page;
265 $sql .= $this->db->plimit($limit + 1, $offset);
270 $result = $this->db->query($sql);
273 $num = $this->db->num_rows($result);
274 $min = min($num, ($limit <= 0 ? $num : $limit));
275 for ($i = 0; $i < $min; $i++) {
276 $obj = $this->db->fetch_object($result);
278 if ($paymentsalary->fetch($obj->rowid) > 0) {
283 throw new RestException(503,
'Error when retrieving list of paymentsalaries: ' . $this->db->lasterror());
301 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'read')) {
302 throw new RestException(403);
306 $result = $paymentsalary->fetch($pid);
308 throw new RestException(404,
'paymentsalary not found');
329 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'write')) {
330 throw new RestException(403);
335 $salary =
new Salary($this->db);
336 if ($salary->fetch(
$id) <= 0 || empty($salary->id)) {
337 throw new RestException(404,
'Salary not found');
340 if (!is_array($request_data[
'amounts']) || array_diff(array_keys($request_data[
'amounts']), array($salary->id))) {
341 throw new RestException(400,
'amounts must be keyed by the salary id '.$salary->id);
345 $paymentsalary->fk_salary =
$id;
346 foreach ($request_data as $field => $value) {
347 $paymentsalary->$field = $this->
_checkValForAPI($field, $value, $paymentsalary);
350 if (empty($paymentsalary->fk_typepayment)) {
351 $paymentsalary->fk_typepayment = (int) $request_data[
'paiementtype'];
357 if ($paymentsalary->create(DolibarrApiAccess::$user, 1) < 0) {
358 $this->db->rollback();
359 throw new RestException(400,
'Payment error : '.$paymentsalary->errorsToString());
361 if (isModEnabled(
"bank")) {
362 $result = $paymentsalary->addPaymentToBank(
363 DolibarrApiAccess::$user,
366 (
int) $request_data[
'accountid'],
371 $this->db->rollback();
372 throw new RestException(400,
'Add payment to bank error : '.$paymentsalary->errorsToString());
378 return $paymentsalary->id;
396 if (!DolibarrApiAccess::$user->hasRight(
'salaries',
'write')) {
397 throw new RestException(403);
401 $result = $paymentsalary->fetch(
$id);
403 throw new RestException(404,
'Payment salary not found');
406 foreach ($request_data as $field => $value) {
407 if ($field ==
'id') {
410 $paymentsalary->$field = $this->
_checkValForAPI($field, $value, $paymentsalary);
413 if ($paymentsalary->update(DolibarrApiAccess::$user) > 0) {
414 return $this->
get(
$id);
416 throw new RestException(500, $paymentsalary->error);
462 if ($data ===
null) {
466 foreach (Salaries::$FIELDS as $field) {
467 if (!isset($data[$field])) {
468 throw new RestException(400,
"$field field missing");
470 $salary[$field] = $data[$field];
485 if ($data ===
null) {
488 $paymentsalary = array();
489 $fields = Salaries::$FIELDSPAYMENT;
490 if (isModEnabled(
"bank")) {
491 array_push($fields,
"accountid");
493 foreach ($fields as $field) {
494 if (!isset($data[$field])) {
495 throw new RestException(400,
"$field field missing");
497 $paymentsalary[$field] = $data[$field];
499 return $paymentsalary;
$id
Support class for third parties, contacts, members, users or resources.
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
_checkValForAPI($field, $value, $object)
Check and convert a string depending on its type/name.
Class to manage payments of salaries.
put($id, $request_data=null)
Update salary.
__construct()
Constructor.
index($sortfield="t.rowid", $sortorder='ASC', $limit=100, $page=0)
Get the list of salaries.
updatePayment($id, $request_data=null)
Update paymentsalary.
_cleanObjectDatas($object)
Clean sensible object datas.
_validate($data)
Delete a payment salary.
getPayments($pid)
Get a given payment.
getAllPayments($sortfield="t.rowid", $sortorder='ASC', $limit=100, $page=0)
Delete salary.
post($request_data=null)
Create salary object.
_validatepayments($data)
Validate fields before creating an object.
addPayment($id, $request_data=null)
Create payment salary on a salary.
Class to manage salary payments.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.