\n";
}
}
@@ -453,5 +521,6 @@ if (!empty($date_start) && !empty($date_stop))
print '';
}
+
llxFooter();
$db->close();
diff --git a/htdocs/datapolicy/admin/index.html b/htdocs/datapolicy/admin/index.html
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/htdocs/datapolicy/class/index.html b/htdocs/datapolicy/class/index.html
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/htdocs/datapolicy/index.html b/htdocs/datapolicy/index.html
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/htdocs/datapolicy/lib/index.html b/htdocs/datapolicy/lib/index.html
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/htdocs/debugbar/index.html b/htdocs/debugbar/index.html
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php
index 34cbdfe89bd..666403a7412 100644
--- a/htdocs/expensereport/list.php
+++ b/htdocs/expensereport/list.php
@@ -47,10 +47,25 @@ $confirm=GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$contextpage=GETPOST('contextpage', 'aZ')?GETPOST('contextpage', 'aZ'):'expensereportlist';
+$childids = $user->getAllChildIds(1);
+
// Security check
$socid = GETPOST('socid', 'int');
if ($user->societe_id) $socid=$user->societe_id;
$result = restrictedArea($user, 'expensereport', '', '');
+$id = GETPOST('id', 'int');
+// If we are on the view of a specific user
+if ($id > 0)
+{
+ $canread=0;
+ if ($id == $user->id) $canread=1;
+ if (! empty($user->rights->expensereport->readall)) $canread=1;
+ if (! empty($user->rights->expensereport->lire) && in_array($id, $childids)) $canread=1;
+ if (! $canread)
+ {
+ accessforbidden();
+ }
+}
$diroutputmassaction=$conf->expensereport->dir_output . '/temp/massgeneration/'.$user->id;
@@ -67,7 +82,6 @@ $pagenext = $page + 1;
if (!$sortorder) $sortorder="DESC";
if (!$sortfield) $sortfield="d.date_debut";
-$id = GETPOST('id', 'int');
$sall = trim((GETPOST('search_all', 'alphanohtml')!='')?GETPOST('search_all', 'alphanohtml'):GETPOST('sall', 'alphanohtml'));
$search_ref = GETPOST('search_ref', 'alpha');
@@ -291,7 +305,6 @@ if ($search_status != '' && $search_status >= 0) $sql.=" AND d.fk_statut IN (".$
if (empty($user->rights->expensereport->readall) && empty($user->rights->expensereport->lire_tous)
&& (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->expensereport->writeall_advance)))
{
- $childids = $user->getAllChildIds(1);
$sql.= " AND d.fk_user_author IN (".join(',', $childids).")\n";
}
// Add where from extra fields
diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php
index ce038709fcf..f74d731e8bd 100644
--- a/htdocs/holiday/list.php
+++ b/htdocs/holiday/list.php
@@ -61,6 +61,18 @@ if ($user->societe_id > 0) // Protection if external user
}
$result = restrictedArea($user, 'holiday', $id, '');
$id = GETPOST('id', 'int');
+// If we are on the view of a specific user
+if ($id > 0)
+{
+ $canread=0;
+ if ($id == $user->id) $canread=1;
+ if (! empty($user->rights->holiday->read_all)) $canread=1;
+ if (! empty($user->rights->holiday->read) && in_array($id, $childids)) $canread=1;
+ if (! $canread)
+ {
+ accessforbidden();
+ }
+}
// Load variable for pagination
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit;
diff --git a/htdocs/install/mysql/migration/9.0.0-10.0.0.sql b/htdocs/install/mysql/migration/9.0.0-10.0.0.sql
index 40f7da3fa95..1270b8b279a 100644
--- a/htdocs/install/mysql/migration/9.0.0-10.0.0.sql
+++ b/htdocs/install/mysql/migration/9.0.0-10.0.0.sql
@@ -60,6 +60,8 @@ CREATE TABLE llx_pos_cash_fence(
-- For 10.0
+UPDATE llx_chargesociales SET date_creation = tms WHERE date_creation IS NULL;
+
DROP TABLE llx_cotisation;
ALTER TABLE llx_accounting_bookkeeping DROP COLUMN validated;
ALTER TABLE llx_accounting_bookkeeping_tmp DROP COLUMN validated;
diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql
index 387f8e159ec..076f1962325 100755
--- a/htdocs/install/mysql/migration/repair.sql
+++ b/htdocs/install/mysql/migration/repair.sql
@@ -199,6 +199,15 @@ delete from llx_element_element where sourcetype='commande' and fk_source not in
DELETE FROM llx_actioncomm_resources WHERE fk_actioncomm not in (select id from llx_actioncomm);
+-- Fix link on parent that were removed
+DROP table tmp_user;
+CREATE TABLE tmp_user as (select * from llx_user);
+UPDATE llx_user SET fk_user = NULL where fk_user NOT IN (select rowid from tmp_user);
+
+
+update llx_user set fk_user = null where fk_user not in (select rowid from llx_user);
+
+
UPDATE llx_product SET canvas = NULL where canvas = 'default@product';
UPDATE llx_product SET canvas = NULL where canvas = 'service@product';
@@ -400,6 +409,7 @@ ALTER TABLE llx_accounting_account ADD UNIQUE INDEX uk_accounting_account (accou
-- p.tva_tx = 0
-- where price = 17.5
+UPDATE llx_chargesociales SET date_creation = tms WHERE date_creation IS NULL;
-- VMYSQL4.1 SET sql_mode = 'ALLOW_INVALID_DATES';
-- VMYSQL4.1 update llx_accounting_account set tms = datec where DATE(STR_TO_DATE(tms, '%Y-%m-%d')) IS NULL;
diff --git a/htdocs/install/mysql/tables/llx_societe.sql b/htdocs/install/mysql/tables/llx_societe.sql
index ed4919c3fc5..e7a948d67c2 100644
--- a/htdocs/install/mysql/tables/llx_societe.sql
+++ b/htdocs/install/mysql/tables/llx_societe.sql
@@ -65,34 +65,34 @@ create table llx_societe
fk_typent integer DEFAULT 0, --
fk_forme_juridique integer DEFAULT 0, -- juridical status
fk_currency varchar(3), -- default currency
- siren varchar(128), -- IDProf1: siren or RCS for france, ...
- siret varchar(128), -- IDProf2: siret for france, ...
- ape varchar(128), -- IDProf3: code ape for france, ...
- idprof4 varchar(128), -- IDProf4: nu for france
- idprof5 varchar(128), -- IDProf5: nu for france
- idprof6 varchar(128), -- IDProf6: nu for france
- tva_intra varchar(20), -- tva
- capital double(24,8) DEFAULT NULL, -- capital de la societe
- fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial statut
+ siren varchar(128), -- IDProf1: depends on country (example: siren or RCS for france, ...)
+ siret varchar(128), -- IDProf2: depends on country (example: siret for france, ...)
+ ape varchar(128), -- IDProf3: depends on country (example: code ape for france, ...)
+ idprof4 varchar(128), -- IDProf4: depends on country (example: nu for france, ...)
+ idprof5 varchar(128), -- IDProf5: depends on country (example: nu for france, ...)
+ idprof6 varchar(128), -- IDProf6: depends on country (example: nu for france, ...
+ tva_intra varchar(20), -- vat numero
+ capital double(24,8) DEFAULT NULL, -- capital of company
+ fk_stcomm integer DEFAULT 0 NOT NULL, -- commercial status
note_private text, --
note_public text, --
model_pdf varchar(255),
- prefix_comm varchar(5), -- prefix commercial
+ prefix_comm varchar(5), -- prefix commercial (deprecated)
client tinyint DEFAULT 0, -- client 0/1/2
fournisseur tinyint DEFAULT 0, -- fournisseur 0/1
- supplier_account varchar(32), -- compte client chez un fournisseur
+ supplier_account varchar(32), -- Id of our customer account known by the supplier
fk_prospectlevel varchar(12), -- prospect level (in llx_c_prospectlevel)
fk_incoterms integer, -- for incoterms
location_incoterms varchar(255), -- for incoterms
customer_bad tinyint DEFAULT 0, -- mauvais payeur 0/1
customer_rate real DEFAULT 0, -- taux fiabilite client (0 a 1)
supplier_rate real DEFAULT 0, -- taux fiabilite fournisseur (0 a 1)
- remise_client real DEFAULT 0, -- remise systematique pour le client
- remise_supplier real DEFAULT 0, -- remise systematique auprès du fournisseur
- mode_reglement tinyint, -- mode de reglement
- cond_reglement tinyint, -- condition de reglement
- mode_reglement_supplier tinyint, -- mode de reglement fournisseur
- cond_reglement_supplier tinyint, -- condition de reglement fournisseur
+ remise_client real DEFAULT 0, -- discount by default granted to this customer
+ remise_supplier real DEFAULT 0, -- discount by default granted by this supplier
+ mode_reglement tinyint, -- payment mode customer
+ cond_reglement tinyint, -- payment term customer
+ mode_reglement_supplier tinyint, -- payment mode supplier
+ cond_reglement_supplier tinyint, -- payment term supplier
fk_shipping_method integer, -- preferred shipping method id
tva_assuj tinyint DEFAULT 1, -- assujeti ou non a la TVA
localtax1_assuj tinyint DEFAULT 0, -- assujeti ou non a local tax 1
diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php
index 2ded2013601..90228aa952e 100644
--- a/htdocs/user/param_ihm.php
+++ b/htdocs/user/param_ihm.php
@@ -173,7 +173,7 @@ if (! empty($conf->projet->enabled)) $tmparray['projet/index.php?mainmenu=projec
if (! empty($conf->holiday->enabled) || ! empty($conf->expensereport->enabled)) $tmparray['hrm/index.php?mainmenu=hrm&leftmenu=']='HRMArea'; // TODO Complete list with first level of menus
if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) $tmparray['product/index.php?mainmenu=products&leftmenu=']='ProductsAndServicesArea';
if (! empty($conf->propal->enabled) || ! empty($conf->commande->enabled) || ! empty($conf->ficheinter->enabled) || ! empty($conf->contrat->enabled)) $tmparray['comm/index.php?mainmenu=commercial&leftmenu=']='CommercialArea';
-if (! empty($conf->compta->enabled) || ! empty($conf->accounting->enabled)) $tmparray['compta/index.php?mainmenu=compta&leftmenu=']='AccountancyTreasuryArea';
+if (! empty($conf->comptabilite->enabled) || ! empty($conf->accounting->enabled)) $tmparray['compta/index.php?mainmenu=compta&leftmenu=']='AccountancyTreasuryArea';
if (! empty($conf->adherent->enabled)) $tmparray['adherents/index.php?mainmenu=members&leftmenu=']='MembersArea';
if (! empty($conf->agenda->enabled)) $tmparray['comm/action/index.php?mainmenu=agenda&leftmenu=']='Agenda';
diff --git a/htdocs/website/class/index.html b/htdocs/website/class/index.html
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/htdocs/website/lib/index.html b/htdocs/website/lib/index.html
new file mode 100644
index 00000000000..e69de29bb2d