forked from Wavyzz/dolibarr
test action (#31815)
* NEW : Add category feature on Fichinter category update * Update viewcat.php * Update categories.lang * Update categorie.class.php * Update categories.lang * Update viewcat.php * Update viewcat.php * test action * test action * test action * test action * test action * test action * test action * test action * test action * test action * test action * clean baseline Debug v21 NEW: use Expedition::$date_shipping property in card and list (#31701) * NEW: use Expedition::$date_shipping property in card and list * FIX: translation * FIX: PHPStan rebutal * FIX: not a great idea to copy and not edit comment * FIX: on create, expected delivery date should precede sending date * Update card.php * Update list.php * Update list.php * Update list.php --------- Co-authored-by: Laurent Destailleur <eldy@destailleur.fr> clean baseline clean baseline clean baseline * clean baseline * clean baseline * merge * fix * fix * fix * fix * fix * fix * fix translations * fix translations * fix translations * fix translations * fix * fix filters * fix filters * fix filters * fix filters * fix --------- Co-authored-by: Charlène Benke <1179011+defrance@users.noreply.github.com>
This commit is contained in:
5
.github/workflows/phpstan_baseline.yml
vendored
5
.github/workflows/phpstan_baseline.yml
vendored
@@ -23,6 +23,9 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
phpstan:
|
phpstan:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions: write-all
|
||||||
|
# contents: write
|
||||||
|
# pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -51,7 +54,7 @@ jobs:
|
|||||||
phpstan-cache-${{ env.PHP_VERSION }}-
|
phpstan-cache-${{ env.PHP_VERSION }}-
|
||||||
- uses: ruudk/phpstan-baseline-refresh-create-pr-action@main
|
- uses: ruudk/phpstan-baseline-refresh-create-pr-action@main
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.PAT_GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
phpstan_path: phpstan
|
phpstan_path: phpstan
|
||||||
configuration_path: phpstan.neon.dist
|
configuration_path: phpstan.neon.dist
|
||||||
phpstan_additional_arguments: --memory-limit 7G -a build/phpstan/bootstrap_action.php
|
phpstan_additional_arguments: --memory-limit 7G -a build/phpstan/bootstrap_action.php
|
||||||
|
|||||||
@@ -3918,30 +3918,6 @@ parameters:
|
|||||||
count: 2
|
count: 2
|
||||||
path: ../../htdocs/categories/photos.php
|
path: ../../htdocs/categories/photos.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^If condition is always true\.$#'
|
|
||||||
identifier: if.alwaysTrue
|
|
||||||
count: 9
|
|
||||||
path: ../../htdocs/categories/viewcat.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Loose comparison using \=\= between ''bank_account'' and ''bank_account'' will always evaluate to true\.$#'
|
|
||||||
identifier: equal.alwaysTrue
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/categories/viewcat.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Strict comparison using \!\=\= between Account\|Adherent\|Contact\|Product\|Project\|Societe\|Ticket\|User and null will always evaluate to true\.$#'
|
|
||||||
identifier: notIdentical.alwaysTrue
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/categories/viewcat.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Variable \$elementtype might not be defined\.$#'
|
|
||||||
identifier: variable.undefined
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/categories/viewcat.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Variable \$object might not be defined\.$#'
|
message: '#^Variable \$object might not be defined\.$#'
|
||||||
identifier: variable.undefined
|
identifier: variable.undefined
|
||||||
@@ -4608,12 +4584,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: ../../htdocs/comm/propal/card.php
|
path: ../../htdocs/comm/propal/card.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#4 \$url of function dolGetButtonAction expects array\<int, array\{lang\: string, enabled\: bool, perm\: bool, label\: string, url\: string, urlroot\?\: string, isDropDown\?\: int\<0, 1\>\}\>\|string, array\{0\: array\{lang\: ''orders'', enabled\: bool, perm\: 0\|1, label\: ''AddOrder'', url\: non\-falsy\-string\}, 1\: array\{lang\: ''interventions'', enabled\: bool, perm\: 0\|1, label\: ''AddIntervention'', url\: non\-falsy\-string\}\|array\{lang\: ''orders'', enabled\: bool, perm\: bool, label\: ''AddPurchaseOrder'', url\: non\-falsy\-string\}, 2\: array\{lang\: ''contracts'', enabled\: bool, perm\: 0\|1, label\: ''AddContract'', url\: non\-falsy\-string\}\|array\{lang\: ''interventions'', enabled\: bool, perm\: 0\|1, label\: ''AddIntervention'', url\: non\-falsy\-string\}, 3\?\: array\{lang\: ''contracts'', enabled\: bool, perm\: 0\|1, label\: ''AddContract'', url\: non\-falsy\-string\}\|array\{lang\: ''invoice'', enabled\: bool, perm\: 0\|1, label\: ''CreateBill'', url\: non\-falsy\-string\}, 4\?\: array\{lang\: ''invoice'', enabled\: bool, perm\: 0\|1, label\: ''CreateBill'', url\: non\-falsy\-string\}\} given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 2
|
|
||||||
path: ../../htdocs/comm/propal/card.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Property CommonObject\:\:\$fk_project \(int\) in isset\(\) is not nullable\.$#'
|
message: '#^Property CommonObject\:\:\$fk_project \(int\) in isset\(\) is not nullable\.$#'
|
||||||
identifier: isset.property
|
identifier: isset.property
|
||||||
@@ -5028,12 +4998,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: ../../htdocs/commande/card.php
|
path: ../../htdocs/commande/card.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#4 \$url of function dolGetButtonAction expects array\<int, array\{lang\: string, enabled\: bool, perm\: bool, label\: string, url\: string, urlroot\?\: string, isDropDown\?\: int\<0, 1\>\}\>\|string, array\{0\: array\{lang\: ''interventions'', enabled\: bool, perm\: 0\|1, label\: ''AddIntervention'', url\: non\-falsy\-string\}, 1\: array\{lang\: ''contracts'', enabled\: bool, perm\: 0\|1, label\: ''AddContract'', url\: non\-falsy\-string\}, 2\: array\{lang\: ''bills'', enabled\: bool, perm\: bool, label\: ''CreateBill'', url\: non\-falsy\-string\}\|array\{lang\: ''sendings'', enabled\: bool, perm\: 0\|1, label\: ''CreateShipment'', url\: non\-falsy\-string\}, 3\?\: array\{lang\: ''bills'', enabled\: bool, perm\: bool, label\: ''CreateBill'', url\: non\-falsy\-string\}\}\|array\{0\: array\{lang\: ''orders'', enabled\: bool, perm\: bool, label\: ''AddPurchaseOrder'', url\: non\-falsy\-string\}, 1\: array\{lang\: ''interventions'', enabled\: bool, perm\: 0\|1, label\: ''AddIntervention'', url\: non\-falsy\-string\}, 2\: array\{lang\: ''contracts'', enabled\: bool, perm\: 0\|1, label\: ''AddContract'', url\: non\-falsy\-string\}, 3\: array\{lang\: ''bills'', enabled\: bool, perm\: bool, label\: ''CreateBill'', url\: non\-falsy\-string\}\|array\{lang\: ''sendings'', enabled\: bool, perm\: 0\|1, label\: ''CreateShipment'', url\: non\-falsy\-string\}, 4\?\: array\{lang\: ''bills'', enabled\: bool, perm\: bool, label\: ''CreateBill'', url\: non\-falsy\-string\}\} given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 2
|
|
||||||
path: ../../htdocs/commande/card.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Result of && is always false\.$#'
|
message: '#^Result of && is always false\.$#'
|
||||||
identifier: booleanAnd.alwaysFalse
|
identifier: booleanAnd.alwaysFalse
|
||||||
@@ -30750,36 +30714,6 @@ parameters:
|
|||||||
count: 5
|
count: 5
|
||||||
path: ../../htdocs/projet/tasks/time.php
|
path: ../../htdocs/projet/tasks/time.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#1 \$hour of function dol_mktime expects int, array\<mixed\>\|string given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/projet/tasks/time.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#2 \$minute of function dol_mktime expects int, array\<mixed\>\|string given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/projet/tasks/time.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#4 \$month of function dol_mktime expects int, array\<mixed\>\|string given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 2
|
|
||||||
path: ../../htdocs/projet/tasks/time.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#5 \$day of function dol_mktime expects int, array\<mixed\>\|string given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 2
|
|
||||||
path: ../../htdocs/projet/tasks/time.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#6 \$year of function dol_mktime expects int, array\<mixed\>\|string given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 2
|
|
||||||
path: ../../htdocs/projet/tasks/time.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Right side of && is always true\.$#'
|
message: '#^Right side of && is always true\.$#'
|
||||||
identifier: booleanAnd.rightAlwaysTrue
|
identifier: booleanAnd.rightAlwaysTrue
|
||||||
@@ -31884,30 +31818,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: ../../htdocs/public/test/test_arrays.php
|
path: ../../htdocs/public/test/test_arrays.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Variable \$conf might not be defined\.$#'
|
|
||||||
identifier: variable.undefined
|
|
||||||
count: 3
|
|
||||||
path: ../../htdocs/public/test/test_badges.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Variable \$dolibarr_main_prod might not be defined\.$#'
|
|
||||||
identifier: variable.undefined
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/public/test/test_badges.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Parameter \#7 \$params of function dolGetButtonAction expects array\{confirm\?\: array\{url\?\: string, title\?\: string, content\?\: string, action\-btn\-label\?\: string, cancel\-btn\-label\?\: string, modal\?\: bool\}, attr\?\: array\<string, mixed\>, areDropdownButtons\?\: bool, backtopage\?\: string, lang\?\: string, enabled\?\: bool, perm\?\: int\<0, 1\>, label\?\: string, \.\.\.\}, array\{confirm\: true\} given\.$#'
|
|
||||||
identifier: argument.type
|
|
||||||
count: 2
|
|
||||||
path: ../../htdocs/public/test/test_buttons.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Variable \$dolibarr_main_prod might not be defined\.$#'
|
|
||||||
identifier: variable.undefined
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/public/test/test_buttons.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Variable \$dolibarr_main_prod might not be defined\.$#'
|
message: '#^Variable \$dolibarr_main_prod might not be defined\.$#'
|
||||||
identifier: variable.undefined
|
identifier: variable.undefined
|
||||||
@@ -31920,18 +31830,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: ../../htdocs/public/test/test_exec.php
|
path: ../../htdocs/public/test/test_exec.php
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Variable \$db might not be defined\.$#'
|
|
||||||
identifier: variable.undefined
|
|
||||||
count: 2
|
|
||||||
path: ../../htdocs/public/test/test_forms.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: '#^Variable \$dolibarr_main_prod might not be defined\.$#'
|
|
||||||
identifier: variable.undefined
|
|
||||||
count: 1
|
|
||||||
path: ../../htdocs/public/test/test_forms.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: '#^Variable \$dolibarr_main_prod might not be defined\.$#'
|
message: '#^Variable \$dolibarr_main_prod might not be defined\.$#'
|
||||||
identifier: variable.undefined
|
identifier: variable.undefined
|
||||||
|
|||||||
@@ -1204,6 +1204,7 @@ Feature
|
|||||||
FeatureIsSupportedInInOutModeOnly
|
FeatureIsSupportedInInOutModeOnly
|
||||||
Features
|
Features
|
||||||
FichinterNoContractLinked
|
FichinterNoContractLinked
|
||||||
|
FichintersCategoriesArea
|
||||||
FieldNeedSource
|
FieldNeedSource
|
||||||
FieldTarget
|
FieldTarget
|
||||||
FieldTitle
|
FieldTitle
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
// Load Dolibarr environment
|
// Load Dolibarr environment
|
||||||
@@ -87,7 +89,7 @@ This page is a sample of page using tables. It is designed to make test with<br>
|
|||||||
<div class="wordbreak">
|
<div class="wordbreak">
|
||||||
- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
|
- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
|
||||||
- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
|
- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
|
||||||
- no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
|
- no javascript / usage for blind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
|
||||||
- tablednd<br>
|
- tablednd<br>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
define("NOCSRFCHECK", 1); // We accept to go on this page from external web site.
|
define("NOCSRFCHECK", 1); // We accept to go on this page from external web site.
|
||||||
//define("NOLOGIN",1); // This means this output page does not require to be logged.
|
//define("NOLOGIN",1); // This means this output page does not require to be logged.
|
||||||
/*if (!defined('NOSESSION')) {
|
/*if (!defined('NOSESSION')) {
|
||||||
@@ -26,7 +41,7 @@ llxHeader();
|
|||||||
This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br>
|
This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br>
|
||||||
- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
|
- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
|
||||||
- jmobile (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
|
- jmobile (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
|
||||||
- no javascript / usage for bind people (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
|
- no javascript / usage for blind people (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
|
||||||
- use with a text browser (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?textbrowser=1'; ?>">textbrowser=1</a> to force detection of a text browser)<br>
|
- use with a text browser (add parameter <a class="wordbreak" href="<?php echo $_SERVER["PHP_SELF"].'?textbrowser=1'; ?>">textbrowser=1</a> to force detection of a text browser)<br>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
* Copyright (C) 2013-2018 Philippe Grand <philippe.grand@atoo-net.com>
|
* Copyright (C) 2013-2018 Philippe Grand <philippe.grand@atoo-net.com>
|
||||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||||
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
* Copyright (C) 2015 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
* Copyright (C) 2016 Charlie Benke <charlie@patas-monkey.com>
|
* Copyright (C) 2016-2024 Charlene Benke <charlene@patas-monkey.com>
|
||||||
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2023-2024 Benjamin Falière <benjamin.faliere@altairis.fr>
|
* Copyright (C) 2023-2024 Benjamin Falière <benjamin.faliere@altairis.fr>
|
||||||
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
||||||
@@ -62,6 +62,7 @@ class Categorie extends CommonObject
|
|||||||
const TYPE_WEBSITE_PAGE = 'website_page';
|
const TYPE_WEBSITE_PAGE = 'website_page';
|
||||||
const TYPE_TICKET = 'ticket';
|
const TYPE_TICKET = 'ticket';
|
||||||
const TYPE_KNOWLEDGEMANAGEMENT = 'knowledgemanagement';
|
const TYPE_KNOWLEDGEMANAGEMENT = 'knowledgemanagement';
|
||||||
|
const TYPE_FICHINTER = 'fichinter';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png
|
* @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png
|
||||||
@@ -86,7 +87,8 @@ class Categorie extends CommonObject
|
|||||||
'actioncomm' => 10,
|
'actioncomm' => 10,
|
||||||
'website_page' => 11,
|
'website_page' => 11,
|
||||||
'ticket' => 12,
|
'ticket' => 12,
|
||||||
'knowledgemanagement' => 13
|
'knowledgemanagement' => 13,
|
||||||
|
'fichinter' => 14,
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -108,7 +110,8 @@ class Categorie extends CommonObject
|
|||||||
10 => 'actioncomm',
|
10 => 'actioncomm',
|
||||||
11 => 'website_page',
|
11 => 'website_page',
|
||||||
12 => 'ticket',
|
12 => 'ticket',
|
||||||
13 => 'knowledgemanagement'
|
13 => 'knowledgemanagement',
|
||||||
|
14 => 'fichinter',
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -153,7 +156,8 @@ class Categorie extends CommonObject
|
|||||||
'actioncomm' => 'ActionComm',
|
'actioncomm' => 'ActionComm',
|
||||||
'website_page' => 'WebsitePage',
|
'website_page' => 'WebsitePage',
|
||||||
'ticket' => 'Ticket',
|
'ticket' => 'Ticket',
|
||||||
'knowledgemanagement' => 'KnowledgeRecord'
|
'knowledgemanagement' => 'KnowledgeRecord',
|
||||||
|
'fichinter' => 'Fichinter',
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -173,9 +177,10 @@ class Categorie extends CommonObject
|
|||||||
'project' => 'ProjectsCategoriesArea',
|
'project' => 'ProjectsCategoriesArea',
|
||||||
'warehouse' => 'StocksCategoriesArea',
|
'warehouse' => 'StocksCategoriesArea',
|
||||||
'actioncomm' => 'ActioncommCategoriesArea',
|
'actioncomm' => 'ActioncommCategoriesArea',
|
||||||
'website_page' => 'WebsitePageCategoriesArea',
|
'website_page' => 'WebsitePagesCategoriesArea',
|
||||||
'ticket' => 'TicketCategoriesArea',
|
'ticket' => 'TicketsCategoriesArea',
|
||||||
'knowledgemanagement' => 'KnowledgemanagementCategoriesArea'
|
'knowledgemanagement' => 'KnowledgemanagementsCategoriesArea',
|
||||||
|
'fichinter' => 'FichintersCategoriesArea',
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -190,7 +195,8 @@ class Categorie extends CommonObject
|
|||||||
'account' => 'bank_account', // old for bank account
|
'account' => 'bank_account', // old for bank account
|
||||||
'project' => 'projet',
|
'project' => 'projet',
|
||||||
'warehouse' => 'entrepot',
|
'warehouse' => 'entrepot',
|
||||||
'knowledgemanagement' => 'knowledgemanagement_knowledgerecord'
|
'knowledgemanagement' => 'knowledgemanagement_knowledgerecord',
|
||||||
|
'fichinter' => 'fichinter',
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -254,6 +260,7 @@ class Categorie extends CommonObject
|
|||||||
* @see Categorie::TYPE_ACTIONCOMM
|
* @see Categorie::TYPE_ACTIONCOMM
|
||||||
* @see Categorie::TYPE_WEBSITE_PAGE
|
* @see Categorie::TYPE_WEBSITE_PAGE
|
||||||
* @see Categorie::TYPE_TICKET
|
* @see Categorie::TYPE_TICKET
|
||||||
|
* @see Categorie::TYPE_FICHINTER
|
||||||
*/
|
*/
|
||||||
public $type;
|
public $type;
|
||||||
|
|
||||||
@@ -695,6 +702,7 @@ class Categorie extends CommonObject
|
|||||||
'categorie_contact' => 'fk_categorie',
|
'categorie_contact' => 'fk_categorie',
|
||||||
'categorie_fournisseur' => 'fk_categorie',
|
'categorie_fournisseur' => 'fk_categorie',
|
||||||
'categorie_knowledgemanagement' => array('field' => 'fk_categorie', 'enabled' => isModEnabled('knowledgemanagement')),
|
'categorie_knowledgemanagement' => array('field' => 'fk_categorie', 'enabled' => isModEnabled('knowledgemanagement')),
|
||||||
|
'categorie_fichinter' => array('field' => 'fk_categorie', 'enabled' => isModEnabled('intervention')),
|
||||||
'categorie_member' => 'fk_categorie',
|
'categorie_member' => 'fk_categorie',
|
||||||
'categorie_user' => 'fk_categorie',
|
'categorie_user' => 'fk_categorie',
|
||||||
'categorie_product' => 'fk_categorie',
|
'categorie_product' => 'fk_categorie',
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ print dol_get_fiche_head($head, 'info', $langs->trans($title), -1, 'category');
|
|||||||
|
|
||||||
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
||||||
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = 'type = '.((int) $object->type);
|
$object->next_prev_filter = 'type:=:'.((int) $object->type);
|
||||||
$object->ref = $object->label;
|
$object->ref = $object->label;
|
||||||
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type).'">'.$langs->trans("Root").'</a> >> ';
|
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type).'">'.$langs->trans("Root").'</a> >> ';
|
||||||
$ways = $object->print_all_ways(" >> ", '', 1);
|
$ways = $object->print_all_ways(" >> ", '', 1);
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ if ($object->id) {
|
|||||||
|
|
||||||
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
||||||
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = 'type = '.((int) $object->type);
|
$object->next_prev_filter = 'type:=:'.((int) $object->type);
|
||||||
$object->ref = $object->label;
|
$object->ref = $object->label;
|
||||||
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.$type.'">'.$langs->trans("Root").'</a> >> ';
|
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.$type.'">'.$langs->trans("Root").'</a> >> ';
|
||||||
$ways = $object->print_all_ways(" >> ", '', 1);
|
$ways = $object->print_all_ways(" >> ", '', 1);
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ print dol_get_fiche_head($head, 'translation', $langs->trans($title), -1, 'categ
|
|||||||
|
|
||||||
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
||||||
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = 'type = '.((int) $object->type);
|
$object->next_prev_filter = 'type:=:'.((int) $object->type);
|
||||||
$object->ref = $object->label;
|
$object->ref = $object->label;
|
||||||
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.$type.'">'.$langs->trans("Root").'</a> >> ';
|
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.$type.'">'.$langs->trans("Root").'</a> >> ';
|
||||||
$ways = $object->print_all_ways(" >> ", '', 1);
|
$ways = $object->print_all_ways(" >> ", '', 1);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
||||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
* Copyright (C) 2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
|
||||||
|
* Copyright (C) 2023-2024 Charlene Benke <charlene@patas-monkey.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -116,12 +117,12 @@ if ($confirm == 'no') {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$parameters = array('type' => $type, 'id' => $id, 'label' => $label);
|
$parameters = array('type' => $type, 'id' => $id, 'label' => $label);
|
||||||
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
// Remove element from category
|
// Remove element from category
|
||||||
if ($id > 0 && $removeelem > 0 && $action == 'unlink') { // Test on permission not required here. Done later according to type of object.
|
if ($id > 0 && $removeelem > 0 && $action == 'unlink') { // Test on permission not required here. Done later according to type of object.
|
||||||
$tmpobject = null;
|
$tmpobject = null;
|
||||||
|
$elementtype = '';
|
||||||
if ($type == Categorie::TYPE_PRODUCT && ($user->hasRight('produit', 'creer') || $user->hasRight('service', 'creer'))) {
|
if ($type == Categorie::TYPE_PRODUCT && ($user->hasRight('produit', 'creer') || $user->hasRight('service', 'creer'))) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
$tmpobject = new Product($db);
|
$tmpobject = new Product($db);
|
||||||
@@ -165,6 +166,13 @@ if ($id > 0 && $removeelem > 0 && $action == 'unlink') { // Test on permission n
|
|||||||
$tmpobject = new Ticket($db);
|
$tmpobject = new Ticket($db);
|
||||||
$result = $tmpobject->fetch($removeelem);
|
$result = $tmpobject->fetch($removeelem);
|
||||||
$elementtype = 'ticket';
|
$elementtype = 'ticket';
|
||||||
|
} elseif ($type == Categorie::TYPE_FICHINTER && $user->hasRight('ficheinter', 'write')) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php';
|
||||||
|
$tmpobject = new Fichinter($db);
|
||||||
|
$result = $tmpobject->fetch($removeelem);
|
||||||
|
$elementtype = 'fichinter';
|
||||||
|
} else {
|
||||||
|
dol_print_error(null, "Not supported value of type = ".$type);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $object->del_type($tmpobject, $elementtype);
|
$result = $object->del_type($tmpobject, $elementtype);
|
||||||
@@ -188,50 +196,45 @@ if ($user->hasRight('categorie', 'supprimer') && $action == 'confirm_delete' &&
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($elemid && $action == 'addintocategory') { // Test on permission not required here. Done just after depending on object type
|
if ($elemid && $action == 'addintocategory') { // Test on permission not required here. Done just after depending on object type
|
||||||
if (($type == Categorie::TYPE_PRODUCT && ($user->hasRight('produit', 'creer') || $user->hasRight('service', 'creer'))) ||
|
|
||||||
($type == Categorie::TYPE_CUSTOMER && $user->hasRight('societe', 'creer')) ||
|
|
||||||
($type == Categorie::TYPE_SUPPLIER && $user->hasRight('societe', 'creer')) ||
|
|
||||||
($type == Categorie::TYPE_TICKET && $user->hasRight('ticket', 'write')) ||
|
|
||||||
($type == Categorie::TYPE_PROJECT && $user->hasRight('projet', 'creer')) ||
|
|
||||||
($type == Categorie::TYPE_MEMBER && $user->hasRight('adherent', 'creer')) ||
|
|
||||||
($type == Categorie::TYPE_CONTACT && $user->hasRight('societe', 'creer')) ||
|
|
||||||
($type == Categorie::TYPE_USER && $user->hasRight('user', 'user', 'creer')) ||
|
|
||||||
($type == Categorie::TYPE_ACCOUNT && $user->hasRight('banque', 'configurer'))
|
|
||||||
) {
|
|
||||||
$newobject = null;
|
$newobject = null;
|
||||||
if ($type == Categorie::TYPE_PRODUCT) {
|
$elementtype = '';
|
||||||
|
if ($type == Categorie::TYPE_PRODUCT && ($user->hasRight('produit', 'creer') || $user->hasRight('service', 'creer'))) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
|
||||||
$newobject = new Product($db);
|
$newobject = new Product($db);
|
||||||
$elementtype = 'product';
|
$elementtype = 'product';
|
||||||
} elseif ($type == Categorie::TYPE_CUSTOMER) {
|
} elseif ($type == Categorie::TYPE_CUSTOMER && $user->hasRight('societe', 'creer')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
$newobject = new Societe($db);
|
$newobject = new Societe($db);
|
||||||
$elementtype = 'customer';
|
$elementtype = 'customer';
|
||||||
} elseif ($type == Categorie::TYPE_SUPPLIER) {
|
} elseif ($type == Categorie::TYPE_SUPPLIER && $user->hasRight('societe', 'creer')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
$newobject = new Societe($db);
|
$newobject = new Societe($db);
|
||||||
$elementtype = 'supplier';
|
$elementtype = 'supplier';
|
||||||
} elseif ($type == Categorie::TYPE_TICKET) {
|
} elseif ($type == Categorie::TYPE_TICKET && $user->hasRight('ticket', 'write')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/ticket/class/ticket.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/ticket/class/ticket.class.php';
|
||||||
$newobject = new Ticket($db);
|
$newobject = new Ticket($db);
|
||||||
$elementtype = 'ticket';
|
$elementtype = 'ticket';
|
||||||
} elseif ($type == Categorie::TYPE_PROJECT) {
|
} elseif ($type == Categorie::TYPE_FICHINTER && $user->hasRight('ficheinter', 'write')) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php';
|
||||||
|
$newobject = new Fichinter($db);
|
||||||
|
$elementtype = 'fichinter';
|
||||||
|
} elseif ($type == Categorie::TYPE_PROJECT && $user->hasRight('projet', 'creer')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
$newobject = new Project($db);
|
$newobject = new Project($db);
|
||||||
$elementtype = 'project';
|
$elementtype = 'project';
|
||||||
} elseif ($type == Categorie::TYPE_MEMBER) {
|
} elseif ($type == Categorie::TYPE_MEMBER && $user->hasRight('adherent', 'creer')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
$newobject = new Adherent($db);
|
$newobject = new Adherent($db);
|
||||||
$elementtype = 'member';
|
$elementtype = 'member';
|
||||||
} elseif ($type == Categorie::TYPE_CONTACT) {
|
} elseif ($type == Categorie::TYPE_CONTACT && $user->hasRight('societe', 'creer')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
|
||||||
$newobject = new Contact($db);
|
$newobject = new Contact($db);
|
||||||
$elementtype = 'contact';
|
$elementtype = 'contact';
|
||||||
} elseif ($type == Categorie::TYPE_USER) {
|
} elseif ($type == Categorie::TYPE_USER && $user->hasRight('user', 'user', 'creer')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||||
$newobject = new User($db);
|
$newobject = new User($db);
|
||||||
$elementtype = 'user';
|
$elementtype = 'user';
|
||||||
} elseif ($type == Categorie::TYPE_ACCOUNT) {
|
} elseif ($type == Categorie::TYPE_ACCOUNT && $user->hasRight('banque', 'configurer')) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
$newobject = new Account($db);
|
$newobject = new Account($db);
|
||||||
$elementtype = 'bank_account';
|
$elementtype = 'bank_account';
|
||||||
@@ -254,7 +257,6 @@ if ($elemid && $action == 'addintocategory') { // Test on permission not require
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -264,7 +266,10 @@ if ($elemid && $action == 'addintocategory') { // Test on permission not require
|
|||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
$formother = new FormOther($db);
|
$formother = new FormOther($db);
|
||||||
|
|
||||||
$arrayofjs = array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.js', '/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js');
|
$arrayofjs = array(
|
||||||
|
'/includes/jquery/plugins/jquerytreeview/jquery.treeview.js',
|
||||||
|
'/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js'
|
||||||
|
);
|
||||||
$arrayofcss = array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.css');
|
$arrayofcss = array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.css');
|
||||||
|
|
||||||
$help_url = '';
|
$help_url = '';
|
||||||
@@ -278,7 +283,7 @@ print dol_get_fiche_head($head, 'card', $langs->trans($title), -1, 'category');
|
|||||||
|
|
||||||
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
$backtolist = (GETPOST('backtolist') ? GETPOST('backtolist') : DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type));
|
||||||
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.dol_sanitizeUrl($backtolist).'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = 'type = '.((int) $object->type);
|
$object->next_prev_filter = 'type:=:'.((int) $object->type);
|
||||||
$object->ref = $object->label;
|
$object->ref = $object->label;
|
||||||
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type).'">'.$langs->trans("Root").'</a> >> ';
|
$morehtmlref = '<br><div class="refidno"><a href="'.DOL_URL_ROOT.'/categories/index.php?leftmenu=cat&type='.urlencode($type).'">'.$langs->trans("Root").'</a> >> ';
|
||||||
$ways = $object->print_all_ways(" >> ", '', 1);
|
$ways = $object->print_all_ways(" >> ", '', 1);
|
||||||
@@ -519,6 +524,7 @@ $typeid = $type;
|
|||||||
if ($type == Categorie::TYPE_PRODUCT) {
|
if ($type == Categorie::TYPE_PRODUCT) {
|
||||||
if ($user->hasRight("product", "read") || $user->hasRight("service", "read")) {
|
if ($user->hasRight("product", "read") || $user->hasRight("service", "read")) {
|
||||||
$permission = ($user->hasRight('produit', 'creer') || $user->hasRight('service', 'creer'));
|
$permission = ($user->hasRight('produit', 'creer') || $user->hasRight('service', 'creer'));
|
||||||
|
$showclassifyform = ($user->hasRight('produit', 'creer') || $user->hasRight('service', 'creer'));
|
||||||
|
|
||||||
$prods = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$prods = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
if ($prods < 0) {
|
if ($prods < 0) {
|
||||||
@@ -544,7 +550,6 @@ if ($type == Categorie::TYPE_PRODUCT) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("ProductsAndServices"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'products', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("ProductsAndServices"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'products', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -599,6 +604,7 @@ if ($type == Categorie::TYPE_PRODUCT) {
|
|||||||
if ($type == Categorie::TYPE_CUSTOMER) {
|
if ($type == Categorie::TYPE_CUSTOMER) {
|
||||||
if ($user->hasRight("societe", "read")) {
|
if ($user->hasRight("societe", "read")) {
|
||||||
$permission = $user->hasRight('societe', 'creer');
|
$permission = $user->hasRight('societe', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('societe', 'creer');
|
||||||
|
|
||||||
$socs = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$socs = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
if ($socs < 0) {
|
if ($socs < 0) {
|
||||||
@@ -624,7 +630,6 @@ if ($type == Categorie::TYPE_CUSTOMER) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Customers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Customers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -679,6 +684,7 @@ if ($type == Categorie::TYPE_CUSTOMER) {
|
|||||||
if ($type == Categorie::TYPE_SUPPLIER) {
|
if ($type == Categorie::TYPE_SUPPLIER) {
|
||||||
if ($user->hasRight("fournisseur", "read")) {
|
if ($user->hasRight("fournisseur", "read")) {
|
||||||
$permission = $user->hasRight('societe', 'creer');
|
$permission = $user->hasRight('societe', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('societe', 'creer');
|
||||||
|
|
||||||
$socs = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$socs = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
|
|
||||||
@@ -705,7 +711,6 @@ if ($type == Categorie::TYPE_SUPPLIER) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Suppliers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Suppliers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -763,6 +768,7 @@ if ($type == Categorie::TYPE_MEMBER) {
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||||
|
|
||||||
$permission = $user->hasRight('adherent', 'creer');
|
$permission = $user->hasRight('adherent', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('adherent', 'creer');
|
||||||
|
|
||||||
$members = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$members = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
if ($members < 0) {
|
if ($members < 0) {
|
||||||
@@ -788,7 +794,6 @@ if ($type == Categorie::TYPE_MEMBER) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Member"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Member"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -845,6 +850,7 @@ if ($type == Categorie::TYPE_MEMBER) {
|
|||||||
if ($type == Categorie::TYPE_CONTACT) {
|
if ($type == Categorie::TYPE_CONTACT) {
|
||||||
if ($user->hasRight("societe", "read")) {
|
if ($user->hasRight("societe", "read")) {
|
||||||
$permission = $user->hasRight('societe', 'creer');
|
$permission = $user->hasRight('societe', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('societe', 'creer');
|
||||||
|
|
||||||
$contacts = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$contacts = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
if (is_numeric($contacts) && $contacts < 0) {
|
if (is_numeric($contacts) && $contacts < 0) {
|
||||||
@@ -872,7 +878,6 @@ if ($type == Categorie::TYPE_CONTACT) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Contact"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'contact', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Contact"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'contact', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -933,6 +938,7 @@ if ($type == Categorie::TYPE_ACCOUNT) {
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
|
||||||
$permission = $user->hasRight('banque', 'creer');
|
$permission = $user->hasRight('banque', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('banque', 'creer');
|
||||||
|
|
||||||
$accounts = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$accounts = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
if ($accounts < 0) {
|
if ($accounts < 0) {
|
||||||
@@ -958,7 +964,6 @@ if ($type == Categorie::TYPE_ACCOUNT) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Account"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bank_account', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Account"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bank_account', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -1016,6 +1021,7 @@ if ($type == Categorie::TYPE_PROJECT) {
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
|
|
||||||
$permission = $user->hasRight('projet', 'creer');
|
$permission = $user->hasRight('projet', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('projet', 'creer');
|
||||||
|
|
||||||
$objects = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$objects = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
if ($objects < 0) {
|
if ($objects < 0) {
|
||||||
@@ -1041,7 +1047,6 @@ if ($type == Categorie::TYPE_PROJECT) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Project"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'project', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Project"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'project', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -1096,6 +1101,7 @@ if ($type == Categorie::TYPE_PROJECT) {
|
|||||||
if ($type == Categorie::TYPE_USER) {
|
if ($type == Categorie::TYPE_USER) {
|
||||||
if ($user->hasRight("user", "user", "read")) {
|
if ($user->hasRight("user", "user", "read")) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||||
|
$showclassifyform = $user->hasRight("user", "user", "creer");
|
||||||
|
|
||||||
$users = $object->getObjectsInCateg($type);
|
$users = $object->getObjectsInCateg($type);
|
||||||
if ($users < 0) {
|
if ($users < 0) {
|
||||||
@@ -1122,7 +1128,6 @@ if ($type == Categorie::TYPE_USER) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Users"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'user', 0, '', '', $limit);
|
print_barre_liste($langs->trans("Users"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'user', 0, '', '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -1170,7 +1175,6 @@ if ($type == Categorie::TYPE_USER) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// List of warehouses
|
// List of warehouses
|
||||||
if ($type == Categorie::TYPE_WAREHOUSE) {
|
if ($type == Categorie::TYPE_WAREHOUSE) {
|
||||||
if ($user->hasRight("stock", "read")) {
|
if ($user->hasRight("stock", "read")) {
|
||||||
@@ -1246,6 +1250,7 @@ if ($type == Categorie::TYPE_WAREHOUSE) {
|
|||||||
if ($type == Categorie::TYPE_TICKET) {
|
if ($type == Categorie::TYPE_TICKET) {
|
||||||
if ($user->hasRight("ticket", "read")) {
|
if ($user->hasRight("ticket", "read")) {
|
||||||
$permission = $user->hasRight('categorie', 'creer');
|
$permission = $user->hasRight('categorie', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('categorie', 'creer');
|
||||||
|
|
||||||
$tickets = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
$tickets = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
if ($tickets < 0) {
|
if ($tickets < 0) {
|
||||||
@@ -1271,7 +1276,6 @@ if ($type == Categorie::TYPE_TICKET) {
|
|||||||
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
print_barre_liste($langs->trans("Ticket"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'ticket', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Ticket"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'ticket', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
$showclassifyform = 1;
|
|
||||||
if ($showclassifyform) {
|
if ($showclassifyform) {
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre"><td>';
|
print '<tr class="liste_titre"><td>';
|
||||||
@@ -1322,6 +1326,91 @@ if ($type == Categorie::TYPE_TICKET) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// List of Interventions
|
||||||
|
if ($type == Categorie::TYPE_FICHINTER) {
|
||||||
|
if ($user->hasRight("fichinter", "lire")) {
|
||||||
|
$permission = $user->hasRight('categorie', 'creer');
|
||||||
|
$showclassifyform = $user->hasRight('categorie', 'creer');
|
||||||
|
|
||||||
|
$fichinters = $object->getObjectsInCateg($type, 0, $limit, $offset);
|
||||||
|
if ($fichinters < 0) {
|
||||||
|
dol_print_error($db, $object->error, $object->errors);
|
||||||
|
} else {
|
||||||
|
// Form to add record into a category
|
||||||
|
if ($showclassifyform) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formintervention.class.php';
|
||||||
|
$formfichinter = new FormIntervention($db);
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
|
print '<input type="hidden" name="typeid" value="'.$typeid.'">';
|
||||||
|
print '<input type="hidden" name="type" value="'.$typeid.'">';
|
||||||
|
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||||
|
print '<input type="hidden" name="action" value="addintocategory">';
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
print '<tr class="liste_titre"><td>';
|
||||||
|
print $langs->trans("AddFichinterIntoCategory").' ';
|
||||||
|
print $formfichinter->select_interventions(-1, 0, 'elemid');
|
||||||
|
print '<input type="submit" class="button buttongen" value="'.$langs->trans("ClassifyInCategory").'"></td>';
|
||||||
|
print '</tr>';
|
||||||
|
print '</table>';
|
||||||
|
print '</form>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
|
print '<input type="hidden" name="typeid" value="'.$typeid.'">';
|
||||||
|
print '<input type="hidden" name="type" value="'.$typeid.'">';
|
||||||
|
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||||
|
print '<input type="hidden" name="action" value="list">';
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
$param = '&limit='.$limit.'&id='.$id.'&type='.$type;
|
||||||
|
$num = count($fichinters);
|
||||||
|
$nbtotalofrecords = '';
|
||||||
|
$newcardbutton = '';
|
||||||
|
|
||||||
|
$langs->load('interventions');
|
||||||
|
// @phan-suppress-next-line PhanPluginSuspiciousParamOrder
|
||||||
|
print_barre_liste($langs->trans("Intervention"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_intervention', 0, $newcardbutton, '', $limit);
|
||||||
|
print '<table class="noborder centpercent">'."\n";
|
||||||
|
print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("Ref").'</td></tr>'."\n";
|
||||||
|
|
||||||
|
if (count($fichinters) > 0) {
|
||||||
|
$i = 0;
|
||||||
|
foreach ($fichinters as $fichinter) {
|
||||||
|
$i++;
|
||||||
|
if ($i > $limit) break;
|
||||||
|
|
||||||
|
print "\t".'<tr class="oddeven">'."\n";
|
||||||
|
print '<td class="nowrap tdtop">';
|
||||||
|
print $fichinter->getNomUrl(1);
|
||||||
|
print "</td>\n";
|
||||||
|
print '<td class="tdtop">'.$fichinter->description."</td>\n";
|
||||||
|
// Link to delete from category
|
||||||
|
print '<td class="right">';
|
||||||
|
if ($permission) {
|
||||||
|
print "<a href= '".$_SERVER['PHP_SELF']."?".(empty($socid) ? 'id' : 'socid')."=".$object->id."&type=".$typeid."&action=unlink&token=".newToken()."&removeelem=".$fichinter->id."'>";
|
||||||
|
print $langs->trans("DeleteFromCat");
|
||||||
|
print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', 0, 0, 0, '', 'paddingleft');
|
||||||
|
print "</a>";
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print "</tr>\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print '<tr class="oddeven"><td colspan="2"><span class="opacitymedium">'.$langs->trans("ThisCategoryHasNoItems").'</span></td></tr>';
|
||||||
|
}
|
||||||
|
print "</table>\n";
|
||||||
|
print '</form>'."\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print_barre_liste($langs->trans("Intervention"), null, $_SERVER["PHP_SELF"], '', '', '', '', 0, '', 'fichinter');
|
||||||
|
accessforbidden("NotEnoughPermissions", 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Note that $action and $object may have been modified by some hooks
|
// Note that $action and $object may have been modified by some hooks
|
||||||
$parameters = array('type' => $type, 'id' => $id, 'label' => $label);
|
$parameters = array('type' => $type, 'id' => $id, 'label' => $label);
|
||||||
$reshook = $hookmanager->executeHooks('addMoreCategoriesList', $parameters, $object, $action);
|
$reshook = $hookmanager->executeHooks('addMoreCategoriesList', $parameters, $object, $action);
|
||||||
|
|||||||
@@ -137,10 +137,10 @@ $usercanvalidate = ((!getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && $usercanc
|
|||||||
$usercansend = (!getDolGlobalString('MAIN_USE_ADVANCED_PERMS') || (getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && $user->hasRight('propal', 'propal_advance', 'send')));
|
$usercansend = (!getDolGlobalString('MAIN_USE_ADVANCED_PERMS') || (getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && $user->hasRight('propal', 'propal_advance', 'send')));
|
||||||
|
|
||||||
$usermustrespectpricemin = ((getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && !$user->hasRight('produit', 'ignore_price_min_advance')) || !getDolGlobalString('MAIN_USE_ADVANCED_PERMS'));
|
$usermustrespectpricemin = ((getDolGlobalString('MAIN_USE_ADVANCED_PERMS') && !$user->hasRight('produit', 'ignore_price_min_advance')) || !getDolGlobalString('MAIN_USE_ADVANCED_PERMS'));
|
||||||
$usercancreateorder = $user->hasRight('commande', 'creer');
|
$usercancreateorder = ($user->hasRight('commande', 'creer') == 1);
|
||||||
$usercancreateinvoice = $user->hasRight('facture', 'creer');
|
$usercancreateinvoice = ($user->hasRight('facture', 'creer') == 1);
|
||||||
$usercancreatecontract = $user->hasRight('contrat', 'creer');
|
$usercancreatecontract = ($user->hasRight('contrat', 'creer') == 1);
|
||||||
$usercancreateintervention = $user->hasRight('ficheinter', 'creer');
|
$usercancreateintervention = ($user->hasRight('ficheinter', 'creer') == 1);
|
||||||
$usercancreatepurchaseorder = ($user->hasRight('fournisseur', 'commande', 'creer') || $user->hasRight('supplier_order', 'creer'));
|
$usercancreatepurchaseorder = ($user->hasRight('fournisseur', 'commande', 'creer') || $user->hasRight('supplier_order', 'creer'));
|
||||||
|
|
||||||
$permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc.php
|
$permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc.php
|
||||||
@@ -754,7 +754,7 @@ if (empty($reshook)) {
|
|||||||
} elseif (GETPOSTINT('statut') == $object::STATUS_SIGNED || GETPOSTINT('statut') == $object::STATUS_NOTSIGNED) {
|
} elseif (GETPOSTINT('statut') == $object::STATUS_SIGNED || GETPOSTINT('statut') == $object::STATUS_NOTSIGNED) {
|
||||||
$locationTarget = '';
|
$locationTarget = '';
|
||||||
// prevent browser refresh from closing proposal several times
|
// prevent browser refresh from closing proposal several times
|
||||||
if ($object->statut == $object::STATUS_VALIDATED || (getDolGlobalString('PROPAL_SKIP_ACCEPT_REFUSE') && $object->statut == $object::STATUS_DRAFT)) {
|
if ($object->status == $object::STATUS_VALIDATED || (getDolGlobalString('PROPAL_SKIP_ACCEPT_REFUSE') && $object->status == $object::STATUS_DRAFT)) {
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
$oldstatus = $object->status;
|
$oldstatus = $object->status;
|
||||||
@@ -833,7 +833,7 @@ if (empty($reshook)) {
|
|||||||
} elseif ($action == 'confirm_reopen' && $usercanclose && !GETPOST('cancel', 'alpha')) {
|
} elseif ($action == 'confirm_reopen' && $usercanclose && !GETPOST('cancel', 'alpha')) {
|
||||||
// Reopen proposal
|
// Reopen proposal
|
||||||
// prevent browser refresh from reopening proposal several times
|
// prevent browser refresh from reopening proposal several times
|
||||||
if ($object->statut == Propal::STATUS_SIGNED || $object->statut == Propal::STATUS_NOTSIGNED || $object->statut == Propal::STATUS_BILLED || $object->statut == Propal::STATUS_CANCELED) {
|
if ($object->status == Propal::STATUS_SIGNED || $object->status == Propal::STATUS_NOTSIGNED || $object->status == Propal::STATUS_BILLED || $object->status == Propal::STATUS_CANCELED) {
|
||||||
$db->begin();
|
$db->begin();
|
||||||
|
|
||||||
$newstatus = (getDolGlobalInt('PROPAL_SKIP_ACCEPT_REFUSE') ? Propal::STATUS_DRAFT : Propal::STATUS_VALIDATED);
|
$newstatus = (getDolGlobalInt('PROPAL_SKIP_ACCEPT_REFUSE') ? Propal::STATUS_DRAFT : Propal::STATUS_VALIDATED);
|
||||||
@@ -852,7 +852,7 @@ if (empty($reshook)) {
|
|||||||
$db->rollback();
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($action == 'import_lines_from_object' && $usercancreate && $object->statut == Propal::STATUS_DRAFT) {
|
} elseif ($action == 'import_lines_from_object' && $usercancreate && $object->status == Propal::STATUS_DRAFT) {
|
||||||
// add lines from objectlinked
|
// add lines from objectlinked
|
||||||
$fromElement = GETPOST('fromelement');
|
$fromElement = GETPOST('fromelement');
|
||||||
$fromElementid = GETPOST('fromelementid');
|
$fromElementid = GETPOST('fromelementid');
|
||||||
@@ -2663,7 +2663,7 @@ if ($action == 'create') {
|
|||||||
$absolute_discount = price2num($absolute_discount, 'MT');
|
$absolute_discount = price2num($absolute_discount, 'MT');
|
||||||
$absolute_creditnote = price2num($absolute_creditnote, 'MT');
|
$absolute_creditnote = price2num($absolute_creditnote, 'MT');
|
||||||
|
|
||||||
$caneditfield = ($object->statut != Propal::STATUS_SIGNED && $object->statut != Propal::STATUS_BILLED);
|
$caneditfield = ($object->status != Propal::STATUS_SIGNED && $object->status != Propal::STATUS_BILLED);
|
||||||
|
|
||||||
$thirdparty = $soc;
|
$thirdparty = $soc;
|
||||||
$discount_type = 0;
|
$discount_type = 0;
|
||||||
@@ -2683,7 +2683,7 @@ if ($action == 'create') {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// print '</tr></table>';
|
// print '</tr></table>';
|
||||||
$editenable = $usercancreate && $caneditfield && $object->statut == Propal::STATUS_DRAFT;
|
$editenable = $usercancreate && $caneditfield && $object->status == Propal::STATUS_DRAFT;
|
||||||
print $form->editfieldkey("DatePropal", 'date', '', $object, $editenable);
|
print $form->editfieldkey("DatePropal", 'date', '', $object, $editenable);
|
||||||
print '</td><td class="valuefield">';
|
print '</td><td class="valuefield">';
|
||||||
if ($action == 'editdate' && $usercancreate && $caneditfield) {
|
if ($action == 'editdate' && $usercancreate && $caneditfield) {
|
||||||
@@ -2725,7 +2725,7 @@ if ($action == 'create') {
|
|||||||
} else {
|
} else {
|
||||||
if (!empty($object->fin_validite)) {
|
if (!empty($object->fin_validite)) {
|
||||||
print dol_print_date($object->fin_validite, 'day');
|
print dol_print_date($object->fin_validite, 'day');
|
||||||
if ($object->statut == Propal::STATUS_VALIDATED && $object->fin_validite < ($now - $conf->propal->cloture->warning_delay)) {
|
if ($object->status == Propal::STATUS_VALIDATED && $object->fin_validite < ($now - $conf->propal->cloture->warning_delay)) {
|
||||||
print img_warning($langs->trans("Late"));
|
print img_warning($langs->trans("Late"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -3038,12 +3038,12 @@ if ($action == 'create') {
|
|||||||
<input type="hidden" name="id" value="' . $object->id.'">
|
<input type="hidden" name="id" value="' . $object->id.'">
|
||||||
';
|
';
|
||||||
|
|
||||||
if (!empty($conf->use_javascript_ajax) && $object->statut == Propal::STATUS_DRAFT) {
|
if (!empty($conf->use_javascript_ajax) && $object->status == Propal::STATUS_DRAFT) {
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
if (!empty($object->lines) || ($object->statut == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines' && $action != 'editline')) {
|
if (!empty($object->lines) || ($object->status == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines' && $action != 'editline')) {
|
||||||
print '<table id="tablelines" class="noborder noshadow centpercent">';
|
print '<table id="tablelines" class="noborder noshadow centpercent">';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3052,7 +3052,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Form to add new line
|
// Form to add new line
|
||||||
if ($object->statut == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines') {
|
if ($object->status == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines') {
|
||||||
if ($action != 'editline') {
|
if ($action != 'editline') {
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
$reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
$reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
@@ -3068,7 +3068,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($object->lines) || ($object->statut == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines' && $action != 'editline')) {
|
if (!empty($object->lines) || ($object->status == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines' && $action != 'editline')) {
|
||||||
print '</table>';
|
print '</table>';
|
||||||
}
|
}
|
||||||
print '</div>';
|
print '</div>';
|
||||||
@@ -3093,8 +3093,8 @@ if ($action == 'create') {
|
|||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
if ($action != 'editline') {
|
if ($action != 'editline') {
|
||||||
// Validate
|
// Validate
|
||||||
if (($object->statut == Propal::STATUS_DRAFT && $object->total_ttc >= 0 && count($object->lines) > 0)
|
if (($object->status == Propal::STATUS_DRAFT && $object->total_ttc >= 0 && count($object->lines) > 0)
|
||||||
|| ($object->statut == Propal::STATUS_DRAFT && getDolGlobalString('PROPAL_ENABLE_NEGATIVE') && count($object->lines) > 0)) {
|
|| ($object->status == Propal::STATUS_DRAFT && getDolGlobalString('PROPAL_ENABLE_NEGATIVE') && count($object->lines) > 0)) {
|
||||||
if ($usercanvalidate) {
|
if ($usercanvalidate) {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=validate&token='.newToken().'">'.(!getDolGlobalString('PROPAL_SKIP_ACCEPT_REFUSE') ? $langs->trans('Validate') : $langs->trans('ValidateAndSign')).'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=validate&token='.newToken().'">'.(!getDolGlobalString('PROPAL_SKIP_ACCEPT_REFUSE') ? $langs->trans('Validate') : $langs->trans('ValidateAndSign')).'</a>';
|
||||||
} else {
|
} else {
|
||||||
@@ -3107,19 +3107,19 @@ if ($action == 'create') {
|
|||||||
print '<a class="butAction" href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("AddAction") . '</a></div>';
|
print '<a class="butAction" href="' . DOL_URL_ROOT . '/comm/action/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid . '">' . $langs->trans("AddAction") . '</a></div>';
|
||||||
}*/
|
}*/
|
||||||
// Edit
|
// Edit
|
||||||
if ($object->statut == Propal::STATUS_VALIDATED && $usercancreate) {
|
if ($object->status == Propal::STATUS_VALIDATED && $usercancreate) {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=modif&token='.newToken().'">'.$langs->trans('Modify').'</a>';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=modif&token='.newToken().'">'.$langs->trans('Modify').'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReOpen
|
// ReOpen
|
||||||
if (((getDolGlobalString('PROPAL_REOPEN_UNSIGNED_ONLY') && $object->statut == Propal::STATUS_NOTSIGNED) || (!getDolGlobalString('PROPAL_REOPEN_UNSIGNED_ONLY') && ($object->statut == Propal::STATUS_SIGNED || $object->statut == Propal::STATUS_NOTSIGNED || $object->statut == Propal::STATUS_BILLED || $object->statut == Propal::STATUS_CANCELED))) && $usercanclose) {
|
if (((getDolGlobalString('PROPAL_REOPEN_UNSIGNED_ONLY') && $object->status == Propal::STATUS_NOTSIGNED) || (!getDolGlobalString('PROPAL_REOPEN_UNSIGNED_ONLY') && ($object->status == Propal::STATUS_SIGNED || $object->status == Propal::STATUS_NOTSIGNED || $object->status == Propal::STATUS_BILLED || $object->status == Propal::STATUS_CANCELED))) && $usercanclose) {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen&token='.newToken().(!getDolGlobalString('MAIN_JUMP_TAG') ? '' : '#reopen').'"';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen&token='.newToken().(!getDolGlobalString('MAIN_JUMP_TAG') ? '' : '#reopen').'"';
|
||||||
print '>'.$langs->trans('ReOpen').'</a>';
|
print '>'.$langs->trans('ReOpen').'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send
|
// Send
|
||||||
if (empty($user->socid)) {
|
if (empty($user->socid)) {
|
||||||
if ($object->statut == Propal::STATUS_VALIDATED || $object->statut == Propal::STATUS_SIGNED || getDolGlobalString('PROPOSAL_SENDBYEMAIL_FOR_ALL_STATUS')) {
|
if ($object->status == Propal::STATUS_VALIDATED || $object->status == Propal::STATUS_SIGNED || getDolGlobalString('PROPOSAL_SENDBYEMAIL_FOR_ALL_STATUS')) {
|
||||||
print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"].'?action=presend&token='.newToken().'&id='.$object->id.'&mode=init#formmailbeforetitle', '', $usercansend);
|
print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"].'?action=presend&token='.newToken().'&id='.$object->id.'&mode=init#formmailbeforetitle', '', $usercansend);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3127,8 +3127,14 @@ if ($action == 'create') {
|
|||||||
$arrayforbutaction = array();
|
$arrayforbutaction = array();
|
||||||
|
|
||||||
// Create a sale order
|
// Create a sale order
|
||||||
$arrayforbutaction[] = array('lang' => 'orders', 'enabled' => (isModEnabled('order') && $object->statut == Propal::STATUS_SIGNED), 'perm' => $usercancreateorder, 'label' => 'AddOrder', 'url' => '/commande/card.php?action=create&origin='.urlencode($object->element).'&originid='.((int) $object->id).'&socid='.((int) $object->socid));
|
$arrayforbutaction[] = array(
|
||||||
/*if (isModEnabled('order') && $object->statut == Propal::STATUS_SIGNED) {
|
'lang' => 'orders',
|
||||||
|
'enabled' => (isModEnabled('order') && $object->status == Propal::STATUS_SIGNED),
|
||||||
|
'perm' => $usercancreateorder,
|
||||||
|
'label' => 'AddOrder',
|
||||||
|
'url' => '/commande/card.php?action=create&origin=' . urlencode($object->element) . '&originid=' . ((int) $object->id) . '&socid=' . ((int) $object->socid)
|
||||||
|
);
|
||||||
|
/*if (isModEnabled('order') && $object->status == Propal::STATUS_SIGNED) {
|
||||||
if ($usercancreateorder) {
|
if ($usercancreateorder) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddOrder").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddOrder").'</a>';
|
||||||
}
|
}
|
||||||
@@ -3136,8 +3142,14 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
// Create a purchase order
|
// Create a purchase order
|
||||||
if (getDolGlobalString('WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_PROPOSAL')) {
|
if (getDolGlobalString('WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_PROPOSAL')) {
|
||||||
$arrayforbutaction[] = array('lang' => 'orders', 'enabled' => ($object->statut == Propal::STATUS_SIGNED && isModEnabled("supplier_order")), 'perm' => $usercancreatepurchaseorder, 'label' => 'AddPurchaseOrder', 'url' => '/fourn/commande/card.php?action=create&origin='.urlencode($object->element).'&originid='.((int) $object->id).'&socid='.((int) $object->socid));
|
$arrayforbutaction[] = array(
|
||||||
/*if ($object->statut == Propal::STATUS_SIGNED && isModEnabled("supplier_order")) {
|
'lang' => 'orders',
|
||||||
|
'enabled' => ($object->status == Propal::STATUS_SIGNED && isModEnabled("supplier_order")),
|
||||||
|
'perm' => $usercancreatepurchaseorder,
|
||||||
|
'label' => 'AddPurchaseOrder',
|
||||||
|
'url' => '/fourn/commande/card.php?action=create&origin=' . urlencode($object->element) . '&originid=' . ((int) $object->id) . '&socid=' . ((int) $object->socid)
|
||||||
|
);
|
||||||
|
/*if ($object->status == Propal::STATUS_SIGNED && isModEnabled("supplier_order")) {
|
||||||
if ($usercancreatepurchaseorder) {
|
if ($usercancreatepurchaseorder) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fourn/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddPurchaseOrder").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fourn/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddPurchaseOrder").'</a>';
|
||||||
}
|
}
|
||||||
@@ -3145,8 +3157,14 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create an intervention
|
// Create an intervention
|
||||||
$arrayforbutaction[] = array('lang' => 'interventions', 'enabled' => (isModEnabled("service") && isModEnabled('intervention') && $object->statut == Propal::STATUS_SIGNED), 'perm' => $usercancreateintervention, 'label' => 'AddIntervention', 'url' => '/fichinter/card.php?action=create&origin='.urlencode($object->element).'&originid='.((int) $object->id).'&socid='.((int) $object->socid));
|
$arrayforbutaction[] = array(
|
||||||
/*if (isModEnabled("service") && isModEnabled('intervention') && $object->statut == Propal::STATUS_SIGNED) {
|
'lang' => 'interventions',
|
||||||
|
'enabled' => (isModEnabled("service") && isModEnabled('intervention') && $object->status == Propal::STATUS_SIGNED),
|
||||||
|
'perm' => $usercancreateintervention,
|
||||||
|
'label' => 'AddIntervention',
|
||||||
|
'url' => '/fichinter/card.php?action=create&origin=' . urlencode($object->element) . '&originid=' . ((int) $object->id) . '&socid=' . ((int) $object->socid)
|
||||||
|
);
|
||||||
|
/*if (isModEnabled("service") && isModEnabled('intervention') && $object->status == Propal::STATUS_SIGNED) {
|
||||||
if ($usercancreateintervention) {
|
if ($usercancreateintervention) {
|
||||||
$langs->load("interventions");
|
$langs->load("interventions");
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fichinter/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddIntervention").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/fichinter/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("AddIntervention").'</a>';
|
||||||
@@ -3154,8 +3172,14 @@ if ($action == 'create') {
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Create contract
|
// Create contract
|
||||||
$arrayforbutaction[] = array('lang' => 'contracts', 'enabled' => (isModEnabled('contract') && $object->statut == Propal::STATUS_SIGNED), 'perm' => $usercancreatecontract, 'label' => 'AddContract', 'url' => '/contrat/card.php?action=create&origin='.urlencode($object->element).'&originid='.((int) $object->id).'&socid='.((int) $object->socid));
|
$arrayforbutaction[] = array(
|
||||||
/*if (isModEnabled('contract') && $object->statut == Propal::STATUS_SIGNED) {
|
'lang' => 'contracts',
|
||||||
|
'enabled' => (isModEnabled('contract') && $object->status == Propal::STATUS_SIGNED),
|
||||||
|
'perm' => $usercancreatecontract,
|
||||||
|
'label' => 'AddContract',
|
||||||
|
'url' => '/contrat/card.php?action=create&origin=' . urlencode($object->element) . '&originid=' . ((int) $object->id) . '&socid=' . ((int) $object->socid)
|
||||||
|
);
|
||||||
|
/*if (isModEnabled('contract') && $object->status == Propal::STATUS_SIGNED) {
|
||||||
$langs->load("contracts");
|
$langs->load("contracts");
|
||||||
|
|
||||||
if ($usercancreatecontract) {
|
if ($usercancreatecontract) {
|
||||||
@@ -3164,8 +3188,14 @@ if ($action == 'create') {
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Create an invoice and classify billed
|
// Create an invoice and classify billed
|
||||||
if ($object->statut == Propal::STATUS_SIGNED && !getDolGlobalString('PROPOSAL_ARE_NOT_BILLABLE')) {
|
if ($object->status == Propal::STATUS_SIGNED && !getDolGlobalString('PROPOSAL_ARE_NOT_BILLABLE')) {
|
||||||
$arrayforbutaction[] = array('lang' => 'invoice', 'enabled' => isModEnabled('invoice'), 'perm' => $usercancreateinvoice, 'label' => 'CreateBill', 'url' => '/compta/facture/card.php?action=create&origin='.urlencode($object->element).'&originid='.((int) $object->id).'&socid='.((int) $object->socid));
|
$arrayforbutaction[] = [
|
||||||
|
'lang' => 'invoice',
|
||||||
|
'enabled' => isModEnabled('invoice'),
|
||||||
|
'perm' => $usercancreateinvoice,
|
||||||
|
'label' => 'CreateBill',
|
||||||
|
'url' => '/compta/facture/card.php?action=create&origin='.urlencode($object->element).'&originid='.((int) $object->id).'&socid='.((int) $object->socid),
|
||||||
|
];
|
||||||
/*if (isModEnabled('invoice') && $usercancreateinvoice) {
|
/*if (isModEnabled('invoice') && $usercancreateinvoice) {
|
||||||
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("CreateBill").'</a>';
|
print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid.'">'.$langs->trans("CreateBill").'</a>';
|
||||||
}*/
|
}*/
|
||||||
@@ -3182,7 +3212,7 @@ if ($action == 'create') {
|
|||||||
print dolGetButtonAction($langs->trans("ErrorObjectMustHaveLinesToBeValidated", $object->ref), $langs->trans("Create"), 'default', $arrayforbutaction, $object->id, 0, $actionButtonsParameters);
|
print dolGetButtonAction($langs->trans("ErrorObjectMustHaveLinesToBeValidated", $object->ref), $langs->trans("Create"), 'default', $arrayforbutaction, $object->id, 0, $actionButtonsParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($object->statut == Propal::STATUS_SIGNED && !getDolGlobalString('PROPOSAL_ARE_NOT_BILLABLE')) {
|
if ($object->status == Propal::STATUS_SIGNED && !getDolGlobalString('PROPOSAL_ARE_NOT_BILLABLE')) {
|
||||||
$arrayofinvoiceforpropal = $object->getInvoiceArrayList();
|
$arrayofinvoiceforpropal = $object->getInvoiceArrayList();
|
||||||
if ((is_array($arrayofinvoiceforpropal) && count($arrayofinvoiceforpropal) > 0) || !getDolGlobalString('WORKFLOW_PROPAL_NEED_INVOICE_TO_BE_CLASSIFIED_BILLED')) {
|
if ((is_array($arrayofinvoiceforpropal) && count($arrayofinvoiceforpropal) > 0) || !getDolGlobalString('WORKFLOW_PROPAL_NEED_INVOICE_TO_BE_CLASSIFIED_BILLED')) {
|
||||||
if ($usercanclose) {
|
if ($usercanclose) {
|
||||||
@@ -3195,7 +3225,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
if (!getDolGlobalString('PROPAL_SKIP_ACCEPT_REFUSE')) {
|
if (!getDolGlobalString('PROPAL_SKIP_ACCEPT_REFUSE')) {
|
||||||
// Close as accepted/refused
|
// Close as accepted/refused
|
||||||
if ($object->statut == Propal::STATUS_VALIDATED) {
|
if ($object->status == Propal::STATUS_VALIDATED) {
|
||||||
if ($usercanclose) {
|
if ($usercanclose) {
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=closeas&token='.newToken().(!getDolGlobalString('MAIN_JUMP_TAG') ? '' : '#close').'"';
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=closeas&token='.newToken().(!getDolGlobalString('MAIN_JUMP_TAG') ? '' : '#close').'"';
|
||||||
print '>'.$langs->trans('SetAcceptedRefused').'</a>';
|
print '>'.$langs->trans('SetAcceptedRefused').'</a>';
|
||||||
@@ -3206,7 +3236,7 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Set not signed (close)
|
// Set not signed (close)
|
||||||
if ($object->statut == Propal::STATUS_DRAFT && $usercanclose) {
|
if ($object->status == Propal::STATUS_DRAFT && $usercanclose) {
|
||||||
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&token='.newToken().'&action=closeas&token='.newToken() . (!getDolGlobalString('MAIN_JUMP_TAG') ? '' : '#close') . '"';
|
print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&token='.newToken().'&action=closeas&token='.newToken() . (!getDolGlobalString('MAIN_JUMP_TAG') ? '' : '#close') . '"';
|
||||||
print '>' . $langs->trans('SetRefusedAndClose') . '</a>';
|
print '>' . $langs->trans('SetRefusedAndClose') . '</a>';
|
||||||
}
|
}
|
||||||
@@ -3256,7 +3286,7 @@ if ($action == 'create') {
|
|||||||
print $htmltoenteralink;
|
print $htmltoenteralink;
|
||||||
|
|
||||||
$compatibleImportElementsList = false;
|
$compatibleImportElementsList = false;
|
||||||
if ($user->hasRight('propal', 'creer') && $object->statut == Propal::STATUS_DRAFT) {
|
if ($user->hasRight('propal', 'creer') && $object->status == Propal::STATUS_DRAFT) {
|
||||||
$compatibleImportElementsList = array('commande', 'propal', 'facture'); // import from linked elements
|
$compatibleImportElementsList = array('commande', 'propal', 'facture'); // import from linked elements
|
||||||
}
|
}
|
||||||
$somethingshown = $form->showLinkedObjectBlock($object, $linktoelem, $compatibleImportElementsList);
|
$somethingshown = $form->showLinkedObjectBlock($object, $linktoelem, $compatibleImportElementsList);
|
||||||
@@ -3264,7 +3294,7 @@ if ($action == 'create') {
|
|||||||
// Show online signature link
|
// Show online signature link
|
||||||
$useonlinesignature = getDolGlobalInt('PROPOSAL_ALLOW_ONLINESIGN');
|
$useonlinesignature = getDolGlobalInt('PROPOSAL_ALLOW_ONLINESIGN');
|
||||||
|
|
||||||
if ($object->statut != Propal::STATUS_DRAFT && $useonlinesignature) {
|
if ($object->status != Propal::STATUS_DRAFT && $useonlinesignature) {
|
||||||
print '<br><!-- Link to sign -->';
|
print '<br><!-- Link to sign -->';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/signature.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/signature.lib.php';
|
||||||
print showOnlineSignatureUrl('proposal', $object->ref, $object).'<br>';
|
print showOnlineSignatureUrl('proposal', $object->ref, $object).'<br>';
|
||||||
|
|||||||
@@ -3041,7 +3041,13 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
// Create a purchase order
|
// Create a purchase order
|
||||||
|
|
||||||
if (!getDolGlobalInt('COMMANDE_DISABLE_ADD_PURCHASE_ORDER')) {
|
if (!getDolGlobalInt('COMMANDE_DISABLE_ADD_PURCHASE_ORDER')) {
|
||||||
$arrayforbutaction[] = array('lang' => 'orders', 'enabled' => (isModEnabled("supplier_order") && $object->statut > Commande::STATUS_DRAFT), 'perm' => $usercancreatepurchaseorder, 'label' => 'AddPurchaseOrder', 'url' => '/fourn/commande/card.php?action=create&origin='.urlencode($object->element).'&originid='.((int) $object->id));
|
$arrayforbutaction[] = array(
|
||||||
|
'lang' => 'orders',
|
||||||
|
'enabled' => (isModEnabled("supplier_order") && $object->statut > Commande::STATUS_DRAFT),
|
||||||
|
'perm' => $usercancreatepurchaseorder,
|
||||||
|
'label' => 'AddPurchaseOrder',
|
||||||
|
'url' => '/fourn/commande/card.php?action=create&origin=' . urlencode($object->element) . '&originid=' . ((int) $object->id)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*if (isModEnabled("supplier_order") && $object->statut > Commande::STATUS_DRAFT && $object->getNbOfServicesLines() > 0) {
|
/*if (isModEnabled("supplier_order") && $object->statut > Commande::STATUS_DRAFT && $object->getNbOfServicesLines() > 0) {
|
||||||
@@ -3051,8 +3057,14 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Create intervention
|
// Create intervention
|
||||||
$arrayforbutaction[] = array('lang' => 'interventions', 'enabled' => (isModEnabled("intervention") && $object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0), 'perm' => $user->hasRight('ficheinter', 'creer'), 'label' => 'AddIntervention', 'url' => '/fichinter/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid);
|
$arrayforbutaction[] = array(
|
||||||
/*if (isModEnabled('intervention')) {
|
'lang' => 'interventions',
|
||||||
|
'enabled' => (isModEnabled("intervention") && $object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0),
|
||||||
|
'perm' => ($user->hasRight('ficheinter', 'creer') == 1),
|
||||||
|
'label' => 'AddIntervention',
|
||||||
|
'url' => '/fichinter/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid,
|
||||||
|
);
|
||||||
|
/*if (isModEnabled('ficheinter')) {
|
||||||
$langs->load("interventions");
|
$langs->load("interventions");
|
||||||
|
|
||||||
if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) {
|
if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) {
|
||||||
@@ -3065,7 +3077,13 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Create contract
|
// Create contract
|
||||||
$arrayforbutaction[] = array('lang' => 'contracts', 'enabled' => (isModEnabled("contract") && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_SHIPMENTONPROCESS || $object->statut == Commande::STATUS_CLOSED)), 'perm' => $user->hasRight('contrat', 'creer'), 'label' => 'AddContract', 'url' => '/contrat/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid);
|
$arrayforbutaction[] = array(
|
||||||
|
'lang' => 'contracts',
|
||||||
|
'enabled' => (isModEnabled("contract") && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_SHIPMENTONPROCESS || $object->statut == Commande::STATUS_CLOSED)),
|
||||||
|
'perm' => ($user->hasRight('contrat', 'creer') == 1),
|
||||||
|
'label' => 'AddContract',
|
||||||
|
'url' => '/contrat/card.php?action=create&origin=' . $object->element . '&originid=' . $object->id . '&socid=' . $object->socid,
|
||||||
|
);
|
||||||
/*if (isModEnabled('contrat') && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_SHIPMENTONPROCESS || $object->statut == Commande::STATUS_CLOSED)) {
|
/*if (isModEnabled('contrat') && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_SHIPMENTONPROCESS || $object->statut == Commande::STATUS_CLOSED)) {
|
||||||
$langs->load("contracts");
|
$langs->load("contracts");
|
||||||
|
|
||||||
@@ -3082,7 +3100,13 @@ if ($action == 'create' && $usercancreate) {
|
|||||||
// Create shipment
|
// Create shipment
|
||||||
if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && ($object->getNbOfProductsLines() > 0 || getDolGlobalString('STOCK_SUPPORTS_SERVICES'))) {
|
if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && ($object->getNbOfProductsLines() > 0 || getDolGlobalString('STOCK_SUPPORTS_SERVICES'))) {
|
||||||
if ((getDolGlobalInt('MAIN_SUBMODULE_EXPEDITION') && $user->hasRight('expedition', 'creer')) || (getDolGlobalInt('MAIN_SUBMODULE_DELIVERY') && $user->hasRight('expedition', 'delivery', 'creer'))) {
|
if ((getDolGlobalInt('MAIN_SUBMODULE_EXPEDITION') && $user->hasRight('expedition', 'creer')) || (getDolGlobalInt('MAIN_SUBMODULE_DELIVERY') && $user->hasRight('expedition', 'delivery', 'creer'))) {
|
||||||
$arrayforbutaction[] = array('lang' => 'sendings', 'enabled' => (isModEnabled("shipping") && ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && ($object->getNbOfProductsLines() > 0 || getDolGlobalString('STOCK_SUPPORTS_SERVICES')))), 'perm' => $user->hasRight('expedition', 'creer'), 'label' => 'CreateShipment', 'url' => '/expedition/shipment.php?id='.$object->id);
|
$arrayforbutaction[] = array(
|
||||||
|
'lang' => 'sendings',
|
||||||
|
'enabled' => (isModEnabled("shipping") && ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && ($object->getNbOfProductsLines() > 0 || getDolGlobalString('STOCK_SUPPORTS_SERVICES')))),
|
||||||
|
'perm' => $user->hasRight('expedition', 'creer'),
|
||||||
|
'label' => 'CreateShipment',
|
||||||
|
'url' => '/expedition/shipment.php?id=' . $object->id
|
||||||
|
);
|
||||||
/*
|
/*
|
||||||
if ($user->hasRight('expedition', 'creer')) {
|
if ($user->hasRight('expedition', 'creer')) {
|
||||||
print dolGetButtonAction('', $langs->trans('CreateShipment'), 'default', DOL_URL_ROOT.'/expedition/shipment.php?id='.$object->id, '');
|
print dolGetButtonAction('', $langs->trans('CreateShipment'), 'default', DOL_URL_ROOT.'/expedition/shipment.php?id='.$object->id, '');
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class FormIntervention
|
|||||||
$sql = "SELECT f.rowid, f.ref, f.fk_soc, f.fk_statut";
|
$sql = "SELECT f.rowid, f.ref, f.fk_soc, f.fk_statut";
|
||||||
$sql .= " FROM ".$this->db->prefix()."fichinter as f";
|
$sql .= " FROM ".$this->db->prefix()."fichinter as f";
|
||||||
$sql .= " WHERE f.entity = ".$conf->entity;
|
$sql .= " WHERE f.entity = ".$conf->entity;
|
||||||
if ($socid != '') {
|
if ($socid >= 0) {
|
||||||
if ($socid == '0') {
|
if ($socid == '0') {
|
||||||
$sql .= " AND (f.fk_soc = 0 OR f.fk_soc IS NULL)";
|
$sql .= " AND (f.fk_soc = 0 OR f.fk_soc IS NULL)";
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1165,9 +1165,10 @@ function GETPOSTDATE($prefix, $hourTime = '', $gm = 'auto')
|
|||||||
$hour = $minute = $second = 0;
|
$hour = $minute = $second = 0;
|
||||||
}
|
}
|
||||||
// normalize out of range values
|
// normalize out of range values
|
||||||
$hour = min($hour, 23);
|
$hour = (int) min($hour, 23);
|
||||||
$minute = min($minute, 59);
|
$minute = (int) min($minute, 59);
|
||||||
$second = min($second, 59);
|
$second = (int) min($second, 59);
|
||||||
|
|
||||||
return dol_mktime($hour, $minute, $second, GETPOSTINT($prefix . 'month'), GETPOSTINT($prefix . 'day'), GETPOSTINT($prefix . 'year'), $gm);
|
return dol_mktime($hour, $minute, $second, GETPOSTINT($prefix . 'month'), GETPOSTINT($prefix . 'day'), GETPOSTINT($prefix . 'year'), $gm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4971,7 +4972,7 @@ function getPictoForType($key, $morecss = '')
|
|||||||
* @param int<0,1> $pictoisfullpath If true or 1, image path is a full path, 0 if not
|
* @param int<0,1> $pictoisfullpath If true or 1, image path is a full path, 0 if not
|
||||||
* @param int $srconly Return only content of the src attribute of img.
|
* @param int $srconly Return only content of the src attribute of img.
|
||||||
* @param int $notitle 1=Disable tag title. Use it if you add js tooltip, to avoid duplicate tooltip.
|
* @param int $notitle 1=Disable tag title. Use it if you add js tooltip, to avoid duplicate tooltip.
|
||||||
* @param string $alt Force alt for bind people
|
* @param string $alt Force alt for blind people
|
||||||
* @param string $morecss Add more class css on img tag (For example 'myclascss').
|
* @param string $morecss Add more class css on img tag (For example 'myclascss').
|
||||||
* @param int $marginleftonlyshort 1 = Add a short left margin on picto, 2 = Add a larger left margin on picto, 0 = No margin left. Works for fontawesome picto only.
|
* @param int $marginleftonlyshort 1 = Add a short left margin on picto, 2 = Add a larger left margin on picto, 0 = No margin left. Works for fontawesome picto only.
|
||||||
* @return string Return img tag
|
* @return string Return img tag
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
|
|||||||
*/
|
*/
|
||||||
class Fournisseur extends Societe
|
class Fournisseur extends Societe
|
||||||
{
|
{
|
||||||
public $next_prev_filter = "te.fournisseur = 1"; // Used to add a filter in Form::showrefnav method
|
public $next_prev_filter = "te.fournisseur:=:1"; // Used to add a filter in Form::showrefnav method
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ CategorieRecursivHelp=If option is on, when you add an object into a subcategory
|
|||||||
AddProductServiceIntoCategory=Assign category to the product/service
|
AddProductServiceIntoCategory=Assign category to the product/service
|
||||||
AddCustomerIntoCategory=Assign category to customer
|
AddCustomerIntoCategory=Assign category to customer
|
||||||
AddSupplierIntoCategory=Assign category to supplier
|
AddSupplierIntoCategory=Assign category to supplier
|
||||||
|
AddFichinterIntoCategory=Assign category to interventional
|
||||||
AssignCategoryTo=Assign category to
|
AssignCategoryTo=Assign category to
|
||||||
ShowCategory=Show tag/category
|
ShowCategory=Show tag/category
|
||||||
ByDefaultInList=By default in list
|
ByDefaultInList=By default in list
|
||||||
@@ -104,3 +105,4 @@ WebsitePagesCategoriesArea=Page-Container Categories
|
|||||||
KnowledgemanagementsCategoriesArea=KM article Categories
|
KnowledgemanagementsCategoriesArea=KM article Categories
|
||||||
UseOrOperatorForCategories=Use 'OR' operator for categories
|
UseOrOperatorForCategories=Use 'OR' operator for categories
|
||||||
AddObjectIntoCategory=Assign to the category
|
AddObjectIntoCategory=Assign to the category
|
||||||
|
FichintersCategoriesArea=Intervention Categories
|
||||||
|
|||||||
@@ -463,9 +463,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
$morehtmlref .= '</div>';
|
$morehtmlref .= '</div>';
|
||||||
|
|
||||||
if ($managedfor == 'member') {
|
if ($managedfor == 'member') {
|
||||||
$object->next_prev_filter = "te.fk_member > 0";
|
$object->next_prev_filter = "te.fk_member:>:0"; // usf filter
|
||||||
} else {
|
} else {
|
||||||
$object->next_prev_filter = "te.fk_soc > 0";
|
$object->next_prev_filter = "te.fk_soc:>:0"; // usf filter
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
|
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ $picto = ($object->type == Product::TYPE_SERVICE ? 'service' : 'product');
|
|||||||
print dol_get_fiche_head($head, 'agenda', $titre, -1, $picto);
|
print dol_get_fiche_head($head, 'agenda', $titre, -1, $picto);
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type); // usf filter
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ $titre = $langs->trans("CardProduct".$object->type);
|
|||||||
print dol_get_fiche_head($head, 'card', $titre, -1, 'product');
|
print dol_get_fiche_head($head, 'card', $titre, -1, 'product');
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type); // usf filter
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ $titre = $langs->trans("CardProduct".$object->type);
|
|||||||
print dol_get_fiche_head($head, 'card', $titre, -1, 'service');
|
print dol_get_fiche_head($head, 'card', $titre, -1, 'service');
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = " fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = " fk_product_type:=:".((int) $object->type);
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ if ($object->id > 0) {
|
|||||||
|
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type); // usf filter
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ $picto = ($object->type == Product::TYPE_SERVICE ? 'service' : 'product');
|
|||||||
print dol_get_fiche_head($head, 'agenda', $titre, -1, $picto);
|
print dol_get_fiche_head($head, 'agenda', $titre, -1, $picto);
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type); // usf filter
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ if ($id > 0 || !empty($ref)) {
|
|||||||
print dol_get_fiche_head($head, 'note', $titre, -1, $picto);
|
print dol_get_fiche_head($head, 'note', $titre, -1, $picto);
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type); // usf filter
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -1007,7 +1007,7 @@ $picto = ($object->type == Product::TYPE_SERVICE ? 'service' : 'product');
|
|||||||
print dol_get_fiche_head($head, 'price', $titre, -1, $picto);
|
print dol_get_fiche_head($head, 'price', $titre, -1, $picto);
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type);
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -403,7 +403,7 @@ if ($id > 0 || $ref) {
|
|||||||
print dol_get_fiche_head($head, 'suppliers', $titre, -1, $picto);
|
print dol_get_fiche_head($head, 'suppliers', $titre, -1, $picto);
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?restore_lastsearch_values=1&type='.$object->type.'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type); // usf filter
|
||||||
|
|
||||||
$shownav = 1;
|
$shownav = 1;
|
||||||
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
if ($user->socid && !in_array('product', explode(',', getDolGlobalString('MAIN_MODULES_FOR_EXTERNAL')))) {
|
||||||
|
|||||||
@@ -337,7 +337,7 @@ if ($id > 0 || !empty($ref)) {
|
|||||||
$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1);
|
$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1);
|
||||||
$object->next_prev_filter = "fk_projet IN (".$db->sanitize($projectsListId).")";
|
$object->next_prev_filter = "fk_projet IN (".$db->sanitize($projectsListId).")";
|
||||||
} else {
|
} else {
|
||||||
$object->next_prev_filter = "fk_projet = ".((int) $projectstatic->id);
|
$object->next_prev_filter = "fk_projet:=:".((int) $projectstatic->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$morehtmlref = '';
|
$morehtmlref = '';
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ if ($object->id > 0) {
|
|||||||
$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1);
|
$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1);
|
||||||
$object->next_prev_filter = "fk_projet IN (".$db->sanitize($projectsListId).")";
|
$object->next_prev_filter = "fk_projet IN (".$db->sanitize($projectsListId).")";
|
||||||
} else {
|
} else {
|
||||||
$object->next_prev_filter = "fk_projet = ".((int) $projectstatic->id);
|
$object->next_prev_filter = "fk_projet:=:".((int) $projectstatic->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$morehtmlref = '';
|
$morehtmlref = '';
|
||||||
|
|||||||
@@ -301,10 +301,10 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$cancel && $us
|
|||||||
$object->timespent_duration = GETPOSTINT("new_durationhour") * 60 * 60; // We store duration in seconds
|
$object->timespent_duration = GETPOSTINT("new_durationhour") * 60 * 60; // We store duration in seconds
|
||||||
$object->timespent_duration += (GETPOSTINT("new_durationmin") ? GETPOSTINT('new_durationmin') : 0) * 60; // We store duration in seconds
|
$object->timespent_duration += (GETPOSTINT("new_durationmin") ? GETPOSTINT('new_durationmin') : 0) * 60; // We store duration in seconds
|
||||||
if (GETPOST("timelinehour") != '' && GETPOST("timelinehour") >= 0) { // If hour was entered
|
if (GETPOST("timelinehour") != '' && GETPOST("timelinehour") >= 0) { // If hour was entered
|
||||||
$object->timespent_date = dol_mktime(GETPOST("timelinehour"), GETPOST("timelinemin"), 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear"));
|
$object->timespent_date = dol_mktime(GETPOSTINT("timelinehour"), GETPOSTINT("timelinemin"), 0, GETPOSTINT("timelinemonth"), GETPOSTINT("timelineday"), GETPOSTINT("timelineyear"));
|
||||||
$object->timespent_withhour = 1;
|
$object->timespent_withhour = 1;
|
||||||
} else {
|
} else {
|
||||||
$object->timespent_date = dol_mktime(12, 0, 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear"));
|
$object->timespent_date = dol_mktime(12, 0, 0, GETPOSTINT("timelinemonth"), GETPOSTINT("timelineday"), GETPOSTINT("timelineyear"));
|
||||||
}
|
}
|
||||||
$object->timespent_fk_user = GETPOSTINT("userid_line");
|
$object->timespent_fk_user = GETPOSTINT("userid_line");
|
||||||
$object->timespent_fk_product = GETPOSTINT("fk_product");
|
$object->timespent_fk_product = GETPOSTINT("fk_product");
|
||||||
@@ -1533,7 +1533,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
$forminter = new FormIntervention($db);
|
$forminter = new FormIntervention($db);
|
||||||
print $forminter->select_interventions($projectstatic->thirdparty->id, '', 'interid', 24, $langs->trans('NewInter'), true);
|
print $forminter->select_interventions($projectstatic->thirdparty->id, 0, 'interid', 24, $langs->trans('NewInter'), true);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||||
|
*/
|
||||||
//define("NOLOGIN",1); // This means this output page does not require to be logged.
|
//define("NOLOGIN",1); // This means this output page does not require to be logged.
|
||||||
//if (!defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1');
|
//if (!defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1');
|
||||||
//if (!defined('NOREQUIREDB')) define('NOREQUIREDB', '1');
|
//if (!defined('NOREQUIREDB')) define('NOREQUIREDB', '1');
|
||||||
@@ -102,7 +104,7 @@ This page is a sample of page using tables. It is designed to make test with<br>
|
|||||||
<div class="wordbreak">
|
<div class="wordbreak">
|
||||||
- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
|
- css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
|
||||||
- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
|
- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> and switch to small screen < 570 to enable with emulated jmobile)<br>
|
||||||
- no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
|
- no javascript / usage for blind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
|
||||||
- tablednd<br>
|
- tablednd<br>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -179,9 +179,9 @@ if ($socid > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
||||||
$object->next_prev_filter = "te.fk_user_assign = ".((int) $user->id);
|
$object->next_prev_filter = "te.fk_user_assign:=:".((int) $user->id);
|
||||||
} elseif ($user->socid > 0) {
|
} elseif ($user->socid > 0) {
|
||||||
$object->next_prev_filter = "te.fk_soc = ".((int) $user->socid);
|
$object->next_prev_filter = "te.fk_soc:=:".((int) $user->socid);
|
||||||
}
|
}
|
||||||
$head = ticket_prepare_head($object);
|
$head = ticket_prepare_head($object);
|
||||||
|
|
||||||
|
|||||||
@@ -905,9 +905,9 @@ if ($action == 'create' || $action == 'presend') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
||||||
$object->next_prev_filter = "te.fk_user_assign = ".((int) $user->id);
|
$object->next_prev_filter = "te.fk_user_assign:=:".((int) $user->id);
|
||||||
} elseif ($user->socid > 0) {
|
} elseif ($user->socid > 0) {
|
||||||
$object->next_prev_filter = "te.fk_soc = ".((int) $user->socid);
|
$object->next_prev_filter = "te.fk_soc:=:".((int) $user->socid);
|
||||||
}
|
}
|
||||||
|
|
||||||
$head = ticket_prepare_head($object);
|
$head = ticket_prepare_head($object);
|
||||||
|
|||||||
@@ -215,9 +215,9 @@ if ($id > 0 || !empty($track_id) || !empty($ref)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
||||||
$object->next_prev_filter = "te.fk_user_assign ='".((int) $user->id);
|
$object->next_prev_filter = "te.fk_user_assign:=:'".((int) $user->id);
|
||||||
} elseif ($user->socid > 0) {
|
} elseif ($user->socid > 0) {
|
||||||
$object->next_prev_filter = "te.fk_soc = ".((int) $user->socid);
|
$object->next_prev_filter = "te.fk_soc:=:".((int) $user->socid);
|
||||||
}
|
}
|
||||||
|
|
||||||
$head = ticket_prepare_head($object);
|
$head = ticket_prepare_head($object);
|
||||||
|
|||||||
@@ -149,9 +149,9 @@ if ($object->id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
||||||
$object->next_prev_filter = "te.fk_user_assign = ".((int) $user->id);
|
$object->next_prev_filter = "te.fk_user_assign:=:".((int) $user->id); // usf filter
|
||||||
} elseif ($user->socid > 0) {
|
} elseif ($user->socid > 0) {
|
||||||
$object->next_prev_filter = "te.fk_soc = ".((int) $user->socid);
|
$object->next_prev_filter = "te.fk_soc:=:".((int) $user->socid); // usf filter
|
||||||
}
|
}
|
||||||
|
|
||||||
$head = ticket_prepare_head($object);
|
$head = ticket_prepare_head($object);
|
||||||
|
|||||||
@@ -176,9 +176,9 @@ if ($socid > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
if (!$user->socid && getDolGlobalString('TICKET_LIMIT_VIEW_ASSIGNED_ONLY')) {
|
||||||
$object->next_prev_filter = "te.fk_user_assign = ".((int) $user->id);
|
$object->next_prev_filter = "te.fk_user_assign:=:".((int) $user->id); // usf filter
|
||||||
} elseif ($user->socid > 0) {
|
} elseif ($user->socid > 0) {
|
||||||
$object->next_prev_filter = "te.fk_soc = ".((int) $user->socid);
|
$object->next_prev_filter = "te.fk_soc:=:".((int) $user->socid); // usf filter
|
||||||
}
|
}
|
||||||
$head = ticket_prepare_head($object);
|
$head = ticket_prepare_head($object);
|
||||||
|
|
||||||
|
|||||||
@@ -864,7 +864,7 @@ class User extends CommonObject
|
|||||||
* @param string $module Module of permission to check
|
* @param string $module Module of permission to check
|
||||||
* @param string $permlevel1 Permission level1 (Example: 'read', 'write', 'delete')
|
* @param string $permlevel1 Permission level1 (Example: 'read', 'write', 'delete')
|
||||||
* @param string $permlevel2 Permission level2
|
* @param string $permlevel2 Permission level2
|
||||||
* @return 0|1 Return integer 1 if user has permission, 0 if not.
|
* @return int<0,1> Return integer 1 if user has permission, 0 if not.
|
||||||
* @see clearrights(), delrights(), loadRights(), hasRight()
|
* @see clearrights(), delrights(), loadRights(), hasRight()
|
||||||
*/
|
*/
|
||||||
public function hasRight($module, $permlevel1, $permlevel2 = '')
|
public function hasRight($module, $permlevel1, $permlevel2 = '')
|
||||||
|
|||||||
@@ -424,7 +424,7 @@ if (!empty($id) || !empty($ref)) {
|
|||||||
print dol_get_fiche_head($head, 'combinations', $titre, -1, $picto);
|
print dol_get_fiche_head($head, 'combinations', $titre, -1, $picto);
|
||||||
|
|
||||||
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?type='.((int) $object->type).'">'.$langs->trans("BackToList").'</a>';
|
$linkback = '<a href="'.DOL_URL_ROOT.'/product/list.php?type='.((int) $object->type).'">'.$langs->trans("BackToList").'</a>';
|
||||||
$object->next_prev_filter = "fk_product_type = ".((int) $object->type);
|
$object->next_prev_filter = "fk_product_type:=:".((int) $object->type); // usf filter
|
||||||
|
|
||||||
dol_banner_tab($object, 'ref', $linkback, ($user->socid ? 0 : 1), 'ref', '', '', '', 0, '', '');
|
dol_banner_tab($object, 'ref', $linkback, ($user->socid ? 0 : 1), 'ref', '', '', '', 0, '', '');
|
||||||
|
|
||||||
|
|||||||
@@ -371,7 +371,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
$morehtmlref .= '</div>';
|
$morehtmlref .= '</div>';
|
||||||
|
|
||||||
if ($socid > 0) {
|
if ($socid > 0) {
|
||||||
$object->next_prev_filter = 'te.fk_soc = '.((int) $socid);
|
$object->next_prev_filter = 'te.fk_soc:=:'.((int) $socid);
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'rowid', $morehtmlref);
|
dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'rowid', $morehtmlref);
|
||||||
|
|||||||
Reference in New Issue
Block a user