diff --git a/dev/initdemo/mysqldump_dolibarr_17.0.0.sql b/dev/initdemo/mysqldump_dolibarr_17.0.0.sql index 4e2f622e7ee..20112e77bb6 100644 --- a/dev/initdemo/mysqldump_dolibarr_17.0.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_17.0.0.sql @@ -8511,7 +8511,6 @@ CREATE TABLE `llx_oauth_token` ( LOCK TABLES `llx_oauth_token` WRITE; /*!40000 ALTER TABLE `llx_oauth_token` DISABLE KEYS */; -INSERT INTO `llx_oauth_token` VALUES (5,'Google-bbb','O:33:\"OAuth\\OAuth2\\Token\\StdOAuth2Token\":4:{s:14:\"\0*\0accessToken\";s:213:\"ya29.a0AVvZVspOt6VbV__LcmVXJorqkcctfy5fIYrw75WO67fvPr5TEXsf_9Vyv3uuEmM5x2aHaHUVZyZT-ksOAvrMoIqUAMomVsLq9lfuTlnPqWLViZN9PtK6wjRqxWWPrIW5vx8_5W-tBnMkECI6nwUoZJiw1kIQOkAaCgYKAcISAQASFQGbdwaIxGW7tliRYKieCUJOyLDmpg0166\";s:15:\"\0*\0refreshToken\";s:103:\"1//03afP-2eKt8kACgYIARAAGAMSNwF-L9IrLBFL7IE-lJNkb7tEHGppNzxSScqUFdBZJxGKex5_0Ux3hZcImM6tjodn98orN5YI1oU\";s:12:\"\0*\0endOfLife\";i:1675817952;s:14:\"\0*\0extraParams\";a:3:{s:5:\"scope\";s:73:\"https://www.googleapis.com/auth/userinfo.profile https://mail.google.com/\";s:10:\"token_type\";s:6:\"Bearer\";s:8:\"id_token\";s:833:\"eyJhbGciOiJSUzI1NiIsImtpZCI6ImI0OWM1MDYyZDg5MGY1Y2U0NDllODkwYzg4ZThkZDk4YzRmZWUwYWIiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiMzg4NTQ2MzQ1OTg5LXZwMm5mcDY4ZTJkdDNsZThvYWhicnB1NG9zc2Ntbm9qLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiMzg4NTQ2MzQ1OTg5LXZwMm5mcDY4ZTJkdDNsZThvYWhicnB1NG9zc2Ntbm9qLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE0MTAxNDQyMDYyNDA1MDE4MDk4IiwiYXRfaGFzaCI6Imx0dFVoU19lNnJ1SzI0dGVYcVU3Z2ciLCJpYXQiOjE2NzU4MTQzNTMsImV4cCI6MTY3NTgxNzk1M30.V23p-2SddCMLJmnm1Q_lahRLhcI7jHyQ3GT1czAJTeAaQ5skup1EIZ1XeCCSTQO7Jp0BgszN1EeOf8CAzM2Re6dQEqGHr0xNTh-xfWQsBPAt8mvEK7oQnmf0MZ0hr-7Kz6kuud4VLtHNr2RtIv3jHS682Xf4k6gKHae7NAWtmpeTz7Kc2aV0WIxeHozCSBhuxFEmooQmm9fCOnyh4QikVYp_K1hWb_J4AvBhy2fq-4xrAQojHLZJB_5qpDVKVdzYQSkNWY6xcmT3_mVBKYHzqgM-mMxWd8aaqgB0pRdTev39VxdrMYyecHIZUOH9eMN8Ps7uUoGSXmDMvaDH3AcaIQ\";}}',NULL,NULL,NULL,1,NULL,'profile,gmail_full-fc97b9aa9a76c88e804b923b7a82e8c9',NULL,NULL,'2023-02-07 23:59:13'),(8,'Microsoft','dolcrypt:AES-256-CTR:f7799b6fc99fd52b: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',NULL,NULL,NULL,1,NULL,NULL,NULL,'2023-02-07 19:25:54','2023-02-07 22:40:27'),(25,'Microsoft-ddd','dolcrypt:AES-256-CTR:c01912ec63ab6a5d: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',NULL,NULL,NULL,1,NULL,NULL,NULL,'2023-02-08 00:35:57','2023-02-08 03:40:28'); /*!40000 ALTER TABLE `llx_oauth_token` ENABLE KEYS */; UNLOCK TABLES; diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index fe43bb50c05..4e66009d942 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -249,7 +249,7 @@ if ($id > 0 || $ref) { print ''; print ''; */ - print ''; + print ''; print ''; + print ''; print '\n"; print '\n"; print ''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index e55be478e0b..7779c6e16d8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -255,7 +255,7 @@ class Form if (empty($notabletag)) { $ret .= '\n"; } + // Inventory code if (!empty($arrayfields['m.inventorycode']['checked'])) { - // Inventory code - print ''; } + // Label of movement if (!empty($arrayfields['m.label']['checked'])) { - // Label of movement print ''; } + // Type of movement if (!empty($arrayfields['m.type_mouvement']['checked'])) { - // Type of movement switch ($objp->type_mouvement) { case "0": print ''; @@ -972,17 +972,18 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (!empty($arrayfields['m.value']['checked'])) { // Qty print ''; } if (!empty($arrayfields['m.price']['checked'])) { // Price print ''; } diff --git a/htdocs/projet/class/api_tasks.class.php b/htdocs/projet/class/api_tasks.class.php index 4f1cc85ce8c..8bf6769d8fa 100644 --- a/htdocs/projet/class/api_tasks.class.php +++ b/htdocs/projet/class/api_tasks.class.php @@ -517,6 +517,7 @@ class Tasks extends DolibarrApi * @param string $note Note * * @url POST {id}/addtimespent + * NOTE: Should be "POST {id}/timespent", since POST already implies "add" * * @return array */ @@ -563,6 +564,110 @@ class Tasks extends DolibarrApi ); } + /** + * Update time spent for a task of a project. + * You can test this API with the following input message + * { "date": "2016-12-31 23:15:00", "duration": 1800, "user_id": 1, "note": "My time test" } + * + * @param int $id Task ID + * @param int $timespent_id Time spent ID (llx_projet_task_time.rowid) + * @param datetime $date Date (YYYY-MM-DD HH:MI:SS in GMT) + * @param int $duration Duration in seconds (3600 = 1h) + * @param int $user_id User (Use 0 for connected user) + * @param string $note Note + * + * @url PUT {id}/timespent/{timespent_id} + * + * @return array + */ + public function putTimeSpent($id, $timespent_id, $date, $duration, $user_id = 0, $note = '') + { + if (!DolibarrApiAccess::$user->rights->projet->creer) { + throw new RestException(401); + } + $this->timespentRecordChecks($id, $timespent_id); + + if (!DolibarrApi::_checkAccessToResource('task', $this->task->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $newdate = dol_stringtotime($date, 1); + $this->task->timespent_date = $newdate; + $this->task->timespent_datehour = $newdate; + $this->task->timespent_withhour = 1; + $this->task->timespent_duration = $duration; + $this->task->timespent_fk_user = $user_id ?? DolibarrApiAccess::$user->id; + $this->task->timespent_note = $note; + + $result = $this->task->updateTimeSpent(DolibarrApiAccess::$user, 0); + if ($result == 0) { + throw new RestException(304, 'Error nothing done.'); + } + if ($result < 0) { + throw new RestException(500, 'Error when updating time spent: '.$this->task->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Time spent updated' + ) + ); + } + + /** + * Delete time spent for a task of a project. + * + * @param int $id Task ID + * @param int $timespent_id Time spent ID (llx_projet_task_time.rowid) + * + * @url DELETE {id}/timespent/{timespent_id} + * + * @return array + */ + public function deleteTimeSpent($id, $timespent_id) + { + if (!DolibarrApiAccess::$user->rights->projet->supprimer) { + throw new RestException(401); + } + $this->timespentRecordChecks($id, $timespent_id); + + if (!DolibarrApi::_checkAccessToResource('task', $this->task->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + if ($this->task->delTimeSpent(DolibarrApiAccess::$user, 0) < 0) { + throw new RestException(500, 'Error when deleting time spent: '.$this->task->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Time spent deleted' + ) + ); + } + + /** + * Validate task & timespent IDs for timespent API methods. + * Loads the selected task & timespent records. + * + * @param int $id Task ID + * @param int $timespent_id Time spent ID (llx_projet_task_time.rowid) + * + * @return void + */ + protected function timespentRecordChecks($id, $timespent_id) + { + if ($this->task->fetch($id) <= 0) { + throw new RestException(404, 'Task not found'); + } + if ($this->task->fetchTimeSpent($timespent_id) <= 0) { + throw new RestException(404, 'Timespent not found'); + } elseif ($this->task->id != $id) { + throw new RestException(404, 'Timespent not found in selected task'); + } + } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore /** diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 43526abf0ab..c72dcbccda8 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -504,6 +504,7 @@ $listofreferent = array( 'buttonnew'=>'CreateMO', 'testnew'=>$user->hasRight('mrp', 'write'), 'project_field'=>'fk_project', + 'nototal'=>1, 'test'=>!empty($conf->mrp->enabled) && $user->hasRight('mrp', 'read')), 'trip'=>array( 'name'=>"TripsAndExpenses", @@ -992,6 +993,7 @@ foreach ($listofreferent as $key => $value) { $buttonnew = empty($value['buttonnew']) ? '' : $value['buttonnew']; $testnew = empty($value['testnew']) ? '' : $value['testnew']; $project_field = empty($value['project_field']) ? '' : $value['project_field']; + $nototal = empty($value['nototal']) ? 0 : 1; $exclude_select_element = array('payment_various'); if (!empty($value['exclude_select_element'])) { @@ -1518,47 +1520,49 @@ foreach ($listofreferent as $key => $value) { } // Total - $colspan = 4; - if (in_array($tablename, array('projet_task'))) { - $colspan = 2; - } + if (empty($nototal)) { + $colspan = 4; + if (in_array($tablename, array('projet_task'))) { + $colspan = 2; + } - print ''; - if (in_array($tablename, array('projet_task'))) { - print ''; - print ''; - } - //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print ''; - //elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print ''; - // If fichinter add the total_duration - if ($tablename == 'fichinter') { - print ''; - } - print ''; + if (in_array($tablename, array('projet_task'))) { + print ''; + print ''; } - } - print ''; - //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print ''; - //elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print ''; - print ''; + //elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print ''; + // If fichinter add the total_duration + if ($tablename == 'fichinter') { + print ''; } + print ''; + //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print ''; + //elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print ''; + print ''; + print ''; + print ''; } - print ''; - print ''; - print ''; } else { if (!is_array($elementarray)) { // error print ''; diff --git a/test/phpunit/CodingSqlTest.php b/test/phpunit/CodingSqlTest.php index 23ffa2f26ed..94b6d57b558 100644 --- a/test/phpunit/CodingSqlTest.php +++ b/test/phpunit/CodingSqlTest.php @@ -321,6 +321,10 @@ class CodingSqlTest extends PHPUnit\Framework\TestCase $result=strpos($filecontent, 'eldy@'); print __METHOD__." Result for checking we don't have personal data = ".$result."\n"; $this->assertTrue($result===false, 'Found a bad key eldy@ into file '.$file); + + $result=strpos($filecontent, 'INSERT INTO `llx_oauth_token`'); + print __METHOD__." Result for checking we don't have data into llx_oauth_token = ".$result."\n"; + $this->assertTrue($result===false, 'Found a non expected insert into file '.$file); } return;
'; print $form->textwithpicto($langs->trans("BankAccount"), $langs->trans($labelofbankfield)); print ''; diff --git a/htdocs/compta/prelevement/factures.php b/htdocs/compta/prelevement/factures.php index 9488380ad31..22da9e20afb 100644 --- a/htdocs/compta/prelevement/factures.php +++ b/htdocs/compta/prelevement/factures.php @@ -147,6 +147,7 @@ if ($id > 0 || $ref) { print '
'; print $form->textwithpicto($langs->trans("BankAccount"), $langs->trans($labelofbankfield)); print ''; if ($acc->id > 0) { print $acc->getNomUrl(1); @@ -347,12 +348,12 @@ if ($resql) { } print ' '; - //if ($totalinvoices != $object->amount) print img_warning("AmountOfFileDiffersFromSumOfInvoices"); // It is normal to have total that differs. For an amount of invoice of 100, request to pay may be 50 only. - if ($totalamount_requested != $object->amount) { - print img_warning("AmountOfFileDiffersFromSumOfInvoices"); - } print "'; + // If the page show all record (no pagination) and total does not match total of file, we show a warning. Should not happen. + if (($nbtotalofrecords <= $num) && $totalamount_requested != $object->amount) { + print img_warning("AmountOfFileDiffersFromSumOfInvoices"); + } print price($totalamount_requested); print " 
'; } - if (preg_match('/^(string|safehtmlstring|email)/', $typeofdata)) { + if (preg_match('/^(string|safehtmlstring|email|url)/', $typeofdata)) { $tmp = explode(':', $typeofdata); $ret .= ''; } elseif (preg_match('/^(integer)/', $typeofdata)) { @@ -339,6 +339,8 @@ class Form } else { if (preg_match('/^(email)/', $typeofdata)) { $ret .= dol_print_email($value, 0, 0, 0, 0, 1); + } elseif (preg_match('/^url/', $typeofdata)) { + $ret .= dol_print_url($value, '_blank', 32, 1); } elseif (preg_match('/^(amount|numeric)/', $typeofdata)) { $ret .= ($value != '' ? price($value, '', $langs, 0, -1, -1, $conf->currency) : ''); } elseif (preg_match('/^(checkbox)/', $typeofdata)) { diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang index edcb5923af0..02fb5b5d6a9 100644 --- a/htdocs/langs/en_US/modulebuilder.lang +++ b/htdocs/langs/en_US/modulebuilder.lang @@ -6,7 +6,7 @@ EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. ModuleBuilderDesc2=Path where modules are generated/edited (first directory for external modules defined into %s): %s ModuleBuilderDesc3=Generated/editable modules found: %s -ModuleBuilderDesc4=A module is detected as 'editable' when the file %s exists in root of module directory +ModuleBuilderDesc4=A module is detected as a 'module for Module Builer' when the file %s exists in the root of the module directory NewModule=New module NewObjectInModulebuilder=New object NewDictionary=New dictionary diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 309e0d99f4a..b291b313e43 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -223,7 +223,7 @@ print '
'; if (empty($action) && !empty($user->rights->loan->delete)) { if (!$disable_delete) { - print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', 1); + print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$id.'&action=delete&token='.newToken(), 'delete', 1); } else { print dolGetButtonAction($langs->trans("CantRemovePaymentWithOneInvoicePaid"), $langs->trans("Delete"), 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', 0); } diff --git a/htdocs/mrp/mo_movements.php b/htdocs/mrp/mo_movements.php index 5b30237b1b7..87cedbab0cb 100644 --- a/htdocs/mrp/mo_movements.php +++ b/htdocs/mrp/mo_movements.php @@ -928,20 +928,20 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print $userstatic->getNomUrl(-1); print "
'; + print ''; //print ''; print dol_escape_htmltag($objp->inventorycode); //print ''; print ''.dol_escape_htmltag($objp->label).''.$langs->trans('StockIncreaseAfterCorrectTransfer').''; - if ($objp->qt > 0) { - print '+'; + if ($objp->qty >0) { + print '+'.$objp->qty.''; + } else { + print ''.$objp->qty.''; } - print $objp->qty; print ''; if ($objp->price != 0) { - print price($objp->price); + print ''.price($objp->price).''; } print '
'.$langs->trans("Number").': '.$i.''; - print convertSecondToTime($total_time, 'allhourmin'); - print ''; - print ''.$langs->trans("TotalHT").' : '.price($total_ht).''.$langs->trans("Total").' : '.price($total_ht).''.convertSecondToTime($total_duration, 'all', $conf->global->MAIN_DURATION_OF_WORKDAY).''; - if (empty($value['disableamount'])) { - if ($key == 'loan') { - print $langs->trans("Total").' '.$langs->trans("LoanCapital").' : '.price($total_ttc); - } elseif ($tablename != 'projet_task' || !empty($conf->salaries->enabled)) { - print ''.$langs->trans("TotalHT").' : '.price($total_ht); + print '
'.$langs->trans("Number").': '.$i.''; + print convertSecondToTime($total_time, 'allhourmin'); + print ''; + print ''.$langs->trans("TotalTTC").' : '.price($total_ttc).''; - if (empty($value['disableamount'])) { - if ($key == 'loan') { - print $langs->trans("Total").' '.$langs->trans("RemainderToPay").' : '.price($total_ttc); - } elseif ($tablename != 'projet_task' || !empty($conf->salaries->enabled)) { - print $langs->trans("TotalTTC").' : '.price($total_ttc); + //if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print ''.$langs->trans("TotalHT").' : '.price($total_ht).''.$langs->trans("Total").' : '.price($total_ht).''.convertSecondToTime($total_duration, 'all', $conf->global->MAIN_DURATION_OF_WORKDAY).''; + if (empty($value['disableamount'])) { + if ($key == 'loan') { + print $langs->trans("Total").' '.$langs->trans("LoanCapital").' : '.price($total_ttc); + } elseif ($tablename != 'projet_task' || !empty($conf->salaries->enabled)) { + print ''.$langs->trans("TotalHT").' : '.price($total_ht); + } + } + print ''.$langs->trans("TotalTTC").' : '.price($total_ttc).''; + if (empty($value['disableamount'])) { + if ($key == 'loan') { + print $langs->trans("Total").' '.$langs->trans("RemainderToPay").' : '.price($total_ttc); + } elseif ($tablename != 'projet_task' || !empty($conf->salaries->enabled)) { + print $langs->trans("TotalTTC").' : '.price($total_ttc); + } + } + print ' 
 
'.$elementarray.'