41 include_once
'inc.php';
42 if (!file_exists($conffile)) {
43 print
'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/index.php" instead of "/install/upgrade.php").';
45 require_once $conffile;
46 require_once $dolibarr_main_document_root.
'/compta/facture/class/facture.class.php';
47 require_once $dolibarr_main_document_root.
'/comm/propal/class/propal.class.php';
48 require_once $dolibarr_main_document_root.
'/contrat/class/contrat.class.php';
49 require_once $dolibarr_main_document_root.
'/commande/class/commande.class.php';
50 require_once $dolibarr_main_document_root.
'/fourn/class/fournisseur.commande.class.php';
51 require_once $dolibarr_main_document_root.
'/core/lib/price.lib.php';
52 require_once $dolibarr_main_document_root.
'/core/class/menubase.class.php';
53 require_once $dolibarr_main_document_root.
'/core/lib/files.lib.php';
64 $err = error_reporting();
66 if (!empty($conf->global->MAIN_OVERRIDE_TIME_LIMIT)) {
67 @set_time_limit((
int) $conf->global->MAIN_OVERRIDE_TIME_LIMIT);
71 error_reporting($err);
73 $setuplang =
GETPOST(
"selectlang",
'aZ09', 3) ?
GETPOST(
"selectlang",
'aZ09', 3) :
'auto';
74 $langs->setDefaultLang($setuplang);
75 $versionfrom =
GETPOST(
"versionfrom",
'alpha', 3) ?
GETPOST(
"versionfrom",
'alpha', 3) : (empty($argv[1]) ?
'' : $argv[1]);
76 $versionto =
GETPOST(
"versionto",
'alpha', 3) ?
GETPOST(
"versionto",
'alpha', 3) : (empty($argv[2]) ?
'' : $argv[2]);
77 $enablemodules =
GETPOST(
"enablemodules",
'alpha', 3) ?
GETPOST(
"enablemodules",
'alpha', 3) : (empty($argv[3]) ?
'' : $argv[3]);
79 $langs->loadLangs(array(
"admin",
"install",
"bills",
"suppliers"));
81 if ($dolibarr_main_db_type ==
'mysqli') {
84 if ($dolibarr_main_db_type ==
'pgsql') {
87 if ($dolibarr_main_db_type ==
'mssql') {
92 dolibarr_install_syslog(
"--- upgrade2: entering upgrade2.php page ".$versionfrom.
" ".$versionto.
" ".$enablemodules);
93 if (!is_object($conf)) {
103 if ((!$versionfrom || preg_match(
'/version/', $versionfrom)) && (!$versionto || preg_match(
'/version/', $versionto))) {
104 print
'Error: Parameter versionfrom or versionto missing or having a bad format.'.
"\n";
105 print
'Upgrade must be ran from command line with parameters or called from page install/index.php (like a first install)'.
"\n";
107 $sapi_type = php_sapi_name();
108 $script_file = basename(__FILE__);
110 if (substr($sapi_type, 0, 3) ==
'cli') {
111 print
'Syntax from command line: '.$script_file.
" x.y.z a.b.c [MAIN_MODULE_NAME1_TO_ENABLE,MAIN_MODULE_NAME2_TO_ENABLE...]\n";
116 pHeader(
'',
'step5',
GETPOST(
'action',
'aZ09') ?
GETPOST(
'action',
'aZ09') :
'upgrade',
'versionfrom='.$versionfrom.
'&versionto='.$versionto,
'',
'main-inside main-inside-borderbottom');
119 if (!
GETPOST(
'action',
'aZ09') || preg_match(
'/upgrade/i',
GETPOST(
'action',
'aZ09'))) {
120 print
'<h3><img class="valignmiddle inline-block paddingright" src="../theme/common/octicons/build/svg/database.svg" width="20" alt="Database"> ';
121 print
'<span class="inline-block">'.$langs->trans(
'DataMigration').
'</span></h3>';
123 print
'<table border="0" width="100%">';
126 if (preg_match(
'/crypted:/i', $dolibarr_main_db_pass) || !empty($dolibarr_main_db_encrypted_pass)) {
127 require_once $dolibarr_main_document_root.
'/core/lib/security.lib.php';
128 if (preg_match(
'/crypted:/i', $dolibarr_main_db_pass)) {
129 $dolibarr_main_db_pass = preg_replace(
'/crypted:/i',
'', $dolibarr_main_db_pass);
130 $dolibarr_main_db_pass =
dol_decode($dolibarr_main_db_pass);
131 $dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass;
133 $dolibarr_main_db_pass =
dol_decode($dolibarr_main_db_encrypted_pass);
138 $conf->db->type = $dolibarr_main_db_type;
139 $conf->db->host = $dolibarr_main_db_host;
140 $conf->db->port = $dolibarr_main_db_port;
141 $conf->db->name = $dolibarr_main_db_name;
142 $conf->db->user = $dolibarr_main_db_user;
143 $conf->db->pass = $dolibarr_main_db_pass;
145 $db =
getDoliDBInstance($conf->db->type, $conf->db->host, $conf->db->user, $conf->db->pass, $conf->db->name, $conf->db->port);
147 if (!$db->connected) {
148 print
'<tr><td colspan="4">'.$langs->trans(
"ErrorFailedToConnectToDatabase", $conf->db->name).
'</td><td class="right">'.$langs->trans(
'Error').
'</td></tr>';
149 dolibarr_install_syslog(
'upgrade2: failed to connect to database :'.$conf->db->name.
' on '.$conf->db->host.
' for user '.$conf->db->user, LOG_ERR);
154 if ($db->database_selected) {
161 if (empty($dolibarr_main_db_encryption)) {
162 $dolibarr_main_db_encryption = 0;
164 $conf->db->dolibarr_main_db_encryption = $dolibarr_main_db_encryption;
165 if (empty($dolibarr_main_db_cryptkey)) {
166 $dolibarr_main_db_cryptkey =
'';
168 $conf->db->dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey;
171 $conf->setValues($db);
174 $listofentities = array(1);
177 include_once DOL_DOCUMENT_ROOT.
'/core/class/hookmanager.class.php';
179 $hookmanager->initHooks(array(
'upgrade2'));
181 $parameters = array(
'versionfrom' => $versionfrom,
'versionto' => $versionto);
182 $object =
new stdClass();
184 $reshook = $hookmanager->executeHooks(
'doUpgradeBefore', $parameters, $object, $action);
185 if ($reshook >= 0 && is_array($hookmanager->resArray)) {
187 $listofentities = array_unique(array_merge($listofentities, $hookmanager->resArray));
198 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'user ADD COLUMN birth date';
200 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'user ADD COLUMN dateemployment date';
202 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'user ADD COLUMN dateemploymentend date';
204 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'user ADD COLUMN default_range integer';
206 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'user ADD COLUMN default_c_exp_tax_cat integer';
208 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'extrafields ADD COLUMN langs varchar(24)';
210 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'extrafields ADD COLUMN fieldcomputed text';
212 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'extrafields ADD COLUMN fielddefault varchar(255)';
214 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
"extrafields ADD COLUMN enabled varchar(255) DEFAULT '1'";
216 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'extrafields ADD COLUMN help text';
218 $sql =
'ALTER TABLE '.MAIN_DB_PREFIX.
'user_rights ADD COLUMN entity integer DEFAULT 1 NOT NULL';
224 foreach ($listofentities as $entity) {
226 $conf->setEntityValues($db, $entity);
228 if (defined(
'SYSLOG_FILE')) {
229 $conf->global->SYSLOG_FILE = constant(
'SYSLOG_FILE');
231 $conf->global->MAIN_ENABLE_LOG_TO_HTML = 1;
234 if (count($listofentities) > 1) {
235 print
'<tr><td colspan="4">*** '.$langs->trans(
"Entity").
' '.$entity.
'</td></tr>'.
"\n";
240 $dolibarrlastupgradeversionarray = preg_split(
'/[\.-]/', isset($conf->global->MAIN_VERSION_LAST_UPGRADE) ? $conf->global->MAIN_VERSION_LAST_UPGRADE : (isset($conf->global->MAIN_VERSION_LAST_INSTALL) ? $conf->global->MAIN_VERSION_LAST_INSTALL :
''));
246 $versiontoarray = explode(
'.', $versionto);
247 $versionranarray = explode(
'.', DOL_VERSION);
250 $afterversionarray = explode(
'.',
'2.0.0');
251 $beforeversionarray = explode(
'.',
'2.7.9');
312 $afterversionarray = explode(
'.',
'2.7.9');
313 $beforeversionarray = explode(
'.',
'2.8.9');
338 $afterversionarray = explode(
'.',
'2.8.9');
339 $beforeversionarray = explode(
'.',
'2.9.9');
351 $afterversionarray = explode(
'.',
'2.9.9');
352 $beforeversionarray = explode(
'.',
'3.0.9');
358 $afterversionarray = explode(
'.',
'3.0.9');
359 $beforeversionarray = explode(
'.',
'3.1.9');
367 $afterversionarray = explode(
'.',
'3.1.9');
368 $beforeversionarray = explode(
'.',
'3.2.9');
378 $afterversionarray = explode(
'.',
'3.2.9');
379 $beforeversionarray = explode(
'.',
'3.3.9');
388 $afterversionarray = explode(
'.',
'3.6.9');
389 $beforeversionarray = explode(
'.',
'3.7.9');
395 $afterversionarray = explode(
'.',
'3.7.9');
396 $beforeversionarray = explode(
'.',
'3.8.9');
402 $afterversionarray = explode(
'.',
'3.9.9');
403 $beforeversionarray = explode(
'.',
'4.0.9');
409 $afterversionarray = explode(
'.',
'4.0.9');
410 $beforeversionarray = explode(
'.',
'5.0.9');
420 $afterversionarray = explode(
'.',
'5.0.9');
421 $beforeversionarray = explode(
'.',
'6.0.9');
423 if (!empty($conf->multicompany->enabled)) {
424 global $multicompany_transverse_mode;
427 if (empty($multicompany_transverse_mode)) {
438 $afterversionarray = explode(
'.',
'6.0.9');
439 $beforeversionarray = explode(
'.',
'7.0.9');
448 $afterversionarray = explode(
'.',
'7.0.9');
449 $beforeversionarray = explode(
'.',
'8.0.9');
455 $afterversionarray = explode(
'.',
'8.0.9');
456 $beforeversionarray = explode(
'.',
'9.0.9');
462 $afterversionarray = explode(
'.',
'10.0.9');
463 $beforeversionarray = explode(
'.',
'11.0.9');
472 $afterversionarray = explode(
'.',
'13.0.9');
473 $beforeversionarray = explode(
'.',
'14.0.9');
480 $afterversionarray = explode(
'.',
'15.0.9');
481 $beforeversionarray = explode(
'.',
'16.0.9');
491 $listofmodule = array(
492 'MAIN_MODULE_ACCOUNTING'=>
'newboxdefonly',
493 'MAIN_MODULE_AGENDA'=>
'newboxdefonly',
494 'MAIN_MODULE_BOM'=>
'menuonly',
495 'MAIN_MODULE_BANQUE'=>
'menuonly',
496 'MAIN_MODULE_BARCODE'=>
'newboxdefonly',
497 'MAIN_MODULE_CRON'=>
'newboxdefonly',
498 'MAIN_MODULE_COMMANDE'=>
'newboxdefonly',
499 'MAIN_MODULE_BLOCKEDLOG'=>
'noboxes',
500 'MAIN_MODULE_DEPLACEMENT'=>
'newboxdefonly',
501 'MAIN_MODULE_DON'=>
'newboxdefonly',
502 'MAIN_MODULE_ECM'=>
'newboxdefonly',
503 'MAIN_MODULE_EXTERNALSITE'=>
'newboxdefonly',
504 'MAIN_MODULE_EXPENSEREPORT'=>
'newboxdefonly',
505 'MAIN_MODULE_FACTURE'=>
'newboxdefonly',
506 'MAIN_MODULE_FOURNISSEUR'=>
'newboxdefonly',
507 'MAIN_MODULE_HOLIDAY'=>
'newboxdefonly',
508 'MAIN_MODULE_MARGIN'=>
'menuonly',
509 'MAIN_MODULE_MRP'=>
'menuonly',
510 'MAIN_MODULE_OPENSURVEY'=>
'newboxdefonly',
511 'MAIN_MODULE_PAYBOX'=>
'newboxdefonly',
512 'MAIN_MODULE_PRINTING'=>
'newboxdefonly',
513 'MAIN_MODULE_PRODUIT'=>
'newboxdefonly',
514 'MAIN_MODULE_RECRUITMENT'=>
'menuonly',
515 'MAIN_MODULE_RESOURCE'=>
'noboxes',
516 'MAIN_MODULE_SALARIES'=>
'newboxdefonly',
517 'MAIN_MODULE_SERVICE'=>
'newboxdefonly',
518 'MAIN_MODULE_SYSLOG'=>
'newboxdefonly',
519 'MAIN_MODULE_SOCIETE'=>
'newboxdefonly',
520 'MAIN_MODULE_STRIPE'=>
'menuonly',
521 'MAIN_MODULE_TICKET'=>
'newboxdefonly',
522 'MAIN_MODULE_TAKEPOS'=>
'newboxdefonly',
523 'MAIN_MODULE_USER'=>
'newboxdefonly',
524 'MAIN_MODULE_VARIANTS'=>
'newboxdefonly',
525 'MAIN_MODULE_WEBSITE'=>
'newboxdefonly',
541 if (!$error && $enablemodules) {
543 $listofmodules = array();
544 $enablemodules = preg_replace(
'/enablemodules=/',
'', $enablemodules);
545 $tmplistofmodules = explode(
',', $enablemodules);
546 foreach ($tmplistofmodules as $value) {
547 $listofmodules[$value] =
'forceactivate';
551 if ($resultreloadmodules < 0) {
559 $parameters = array(
'versionfrom' => $versionfrom,
'versionto' => $versionto,
'conf'=>$conf);
560 $object =
new stdClass();
562 $reshook = $hookmanager->executeHooks(
'doUpgradeAfterDB', $parameters, $object, $action);
563 if ($hookmanager->resNbOfHooks > 0) {
565 print
'<tr><td colspan="4">';
566 print
'<b>'.$langs->trans(
'UpgradeExternalModule').
'</b>: ';
567 print $hookmanager->error;
568 print
"<!-- (".$reshook.
") -->";
571 print
'<tr class="trforrunsql"><td colspan="4">';
572 print
'<b>'.$langs->trans(
'UpgradeExternalModule').
' (DB)</b>: <span class="ok">OK</span>';
573 print
"<!-- (".$reshook.
") -->";
578 if (!empty($conf->modules_parts[
'hooks'])) {
579 print
'<tr class="trforrunsql"><td colspan="4">';
580 print
'<b>'.$langs->trans(
'UpgradeExternalModule').
'</b>: '.$langs->trans(
"NodoUpgradeAfterDB");
591 $sql =
'UPDATE '.MAIN_DB_PREFIX.
"const SET VALUE = 'torefresh' WHERE name = 'MAIN_FIRST_PING_OK_ID'";
606 foreach ($listofentities as $entity) {
608 $conf->setEntityValues($db, $entity);
610 if (defined(
'SYSLOG_FILE')) {
611 $conf->global->SYSLOG_FILE = constant(
'SYSLOG_FILE');
613 $conf->global->MAIN_ENABLE_LOG_TO_HTML = 1;
617 $srcroot = DOL_DOCUMENT_ROOT.
'/install/medias';
618 $destroot = DOL_DATA_ROOT.
'/medias';
631 $parameters = array(
'versionfrom' => $versionfrom,
'versionto' => $versionto,
'conf'=>$conf);
632 $object =
new stdClass();
634 $reshook = $hookmanager->executeHooks(
'doUpgradeAfterFiles', $parameters, $object, $action);
635 if ($hookmanager->resNbOfHooks > 0) {
637 print
'<tr><td colspan="4">';
638 print
'<b>'.$langs->trans(
'UpgradeExternalModule').
'</b>: ';
639 print $hookmanager->error;
640 print
"<!-- (".$reshook.
") -->";
643 print
'<tr class="trforrunsql"><td colspan="4">';
644 print
'<b>'.$langs->trans(
'UpgradeExternalModule').
' (Files)</b>: <span class="ok">OK</span>';
645 print
"<!-- (".$reshook.
") -->";
650 if (!empty($conf->modules_parts[
'hooks'])) {
651 print
'<tr class="trforrunsql"><td colspan="4">';
652 print
'<b>'.$langs->trans(
'UpgradeExternalModule').
'</b>: '.$langs->trans(
"NodoUpgradeAfterFiles");
662 print
'<table width="100%">';
663 print
'<tr><td style="width: 30%">'.$langs->trans(
"MigrationFinished").
'</td>';
664 print
'<td class="right">';
668 print
'<span class="error">'.$langs->trans(
"Error").
'</span> - ';
672 print
'<script type="text/javascript">
673 jQuery(document).ready(function() {
674 function init_trrunsql()
676 console.log("toggle .trforrunsql");
677 jQuery(".trforrunsql").toggle();
680 jQuery(".trforrunsqlshowhide").click(function() {
685 print
'<a class="trforrunsqlshowhide" href="#">'.$langs->trans(
"ShowHideDetails").
'</a>';
688 print
'</td></tr>'.
"\n";
694 print
'<div class="error">'.$langs->trans(
'ErrorWrongParameters').
'</div>';
699 if ($error && isset($argv[1])) {
705 pFooter($error ? 2 : 0, $setuplang);
707 if ($db->connected) {
728 print
'<tr><td colspan="4">';
731 print
'<b>'.$langs->trans(
'MigrationPaymentsUpdate').
"</b><br>\n";
733 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"paiement",
"fk_facture");
734 $obj = $db->fetch_object($result);
736 $sql =
"SELECT p.rowid, p.fk_facture, p.amount";
737 $sql .=
" FROM ".MAIN_DB_PREFIX.
"paiement as p";
738 $sql .=
" WHERE p.fk_facture > 0";
740 $resql = $db->query($sql);
746 $num = $db->num_rows(
$resql);
749 $obj = $db->fetch_object(
$resql);
750 $row[$i][0] = $obj->rowid;
751 $row[$i][1] = $obj->fk_facture;
752 $row[$i][2] = $obj->amount;
760 print $langs->trans(
'MigrationPaymentsNumberToUpdate', $num).
"<br>\n";
764 for ($i = 0; $i < $num; $i++) {
765 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"paiement_facture (fk_facture, fk_paiement, amount)";
766 $sql .=
" VALUES (".((int) $row[$i][1]).
",".((int) $row[$i][0]).
",".((
float) $row[$i][2]).
")";
768 $res += $db->query($sql);
770 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"paiement SET fk_facture = 0 WHERE rowid = ".((int) $row[$i][0]);
772 $res += $db->query($sql);
774 print $langs->trans(
'MigrationProcessPaymentUpdate', $row[$i][0]).
"<br>\n";
778 if ($res == (2 * count($row))) {
780 print $langs->trans(
'MigrationSuccessfullUpdate').
"<br>";
783 print $langs->trans(
'MigrationUpdateFailed').
'<br>';
786 print $langs->trans(
'MigrationPaymentsNothingToUpdate').
"<br>\n";
789 print $langs->trans(
'MigrationPaymentsNothingToUpdate').
"<br>\n";
807 print
'<tr><td colspan="4">';
810 print
'<b>'.$langs->trans(
'MigrationPaymentsUpdate').
"</b><br>\n";
812 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"paiement",
"fk_facture");
813 $obj = $db->fetch_object($result);
816 $sql =
"SELECT distinct p.rowid, p.datec, p.amount as pamount, bu.fk_bank, b.amount as bamount,";
817 $sql .=
" bu2.url_id as socid";
818 $sql .=
" FROM (".MAIN_DB_PREFIX.
"paiement as p, ".MAIN_DB_PREFIX.
"bank_url as bu, ".MAIN_DB_PREFIX.
"bank as b)";
819 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"paiement_facture as pf ON pf.fk_paiement = p.rowid";
820 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_url as bu2 ON (bu.fk_bank=bu2.fk_bank AND bu2.type = 'company')";
821 $sql .=
" WHERE pf.rowid IS NULL AND (p.rowid=bu.url_id AND bu.type='payment') AND bu.fk_bank = b.rowid";
822 $sql .=
" AND b.rappro = 1";
823 $sql .=
" AND (p.fk_facture = 0 OR p.fk_facture IS NULL)";
825 $resql = $db->query($sql);
831 $num = $db->num_rows(
$resql);
834 $obj = $db->fetch_object(
$resql);
835 if ($obj->pamount == $obj->bamount && $obj->socid) {
836 $row[$j][
'paymentid'] = $obj->rowid;
837 $row[$j][
'pamount'] = $obj->pamount;
838 $row[$j][
'fk_bank'] = $obj->fk_bank;
839 $row[$j][
'bamount'] = $obj->bamount;
840 $row[$j][
'socid'] = $obj->socid;
841 $row[$j][
'datec'] = $obj->datec;
851 print $langs->trans(
'OrphelinsPaymentsDetectedByMethod', 1).
': '.count($row).
"<br>\n";
856 for ($i = 0; $i < $num; $i++) {
857 if ($conf->global->MAIN_FEATURES_LEVEL == 2) {
858 print
'* '.$row[$i][
'datec'].
' paymentid='.$row[$i][
'paymentid'].
' pamount='.$row[$i][
'pamount'].
' fk_bank='.$row[$i][
'fk_bank'].
' bamount='.$row[$i][
'bamount'].
' socid='.$row[$i][
'socid'].
'<br>';
862 $sql =
" SELECT distinct f.rowid from ".MAIN_DB_PREFIX.
"facture as f";
863 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"paiement_facture as pf ON f.rowid = pf.fk_facture";
864 $sql .=
" WHERE f.fk_statut in (2,3) AND fk_soc = ".((int) $row[$i][
'socid']).
" AND total_ttc = ".((
float) $row[$i][
'pamount']);
865 $sql .=
" AND pf.fk_facture IS NULL";
866 $sql .=
" ORDER BY f.fk_statut";
868 $resql = $db->query($sql);
870 $num = $db->num_rows(
$resql);
873 $obj = $db->fetch_object(
$resql);
874 $facid = $obj->rowid;
876 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"paiement_facture (fk_facture, fk_paiement, amount)";
877 $sql .=
" VALUES (".((int) $facid).
",".((int) $row[$i][
'paymentid']).
", ".((
float) $row[$i][
'pamount']).
")";
879 $res += $db->query($sql);
881 print $langs->trans(
'MigrationProcessPaymentUpdate',
'facid='.$facid.
'-paymentid='.$row[$i][
'paymentid'].
'-amount='.$row[$i][
'pamount']).
"<br>\n";
889 print $langs->trans(
'MigrationSuccessfullUpdate').
"<br>";
891 print $langs->trans(
'MigrationPaymentsNothingUpdatable').
"<br>\n";
896 print $langs->trans(
'MigrationPaymentsNothingUpdatable').
"<br>\n";
899 print $langs->trans(
'MigrationPaymentsNothingUpdatable').
"<br>\n";
917 print
'<tr><td colspan="4">';
920 print
'<b>'.$langs->trans(
'MigrationPaymentsUpdate').
"</b><br>\n";
922 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"paiement",
"fk_facture");
923 $obj = $db->fetch_object($result);
926 $sql =
"SELECT distinct p.rowid, p.datec, p.amount as pamount, bu.fk_bank, b.amount as bamount,";
927 $sql .=
" bu2.url_id as socid";
928 $sql .=
" FROM (".MAIN_DB_PREFIX.
"paiement as p, ".MAIN_DB_PREFIX.
"bank_url as bu, ".MAIN_DB_PREFIX.
"bank as b)";
929 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"paiement_facture as pf ON pf.fk_paiement = p.rowid";
930 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_url as bu2 ON (bu.fk_bank = bu2.fk_bank AND bu2.type = 'company')";
931 $sql .=
" WHERE pf.rowid IS NULL AND (p.fk_bank = bu.fk_bank AND bu.type = 'payment') AND bu.fk_bank = b.rowid";
932 $sql .=
" AND (p.fk_facture = 0 OR p.fk_facture IS NULL)";
934 $resql = $db->query($sql);
940 $num = $db->num_rows(
$resql);
943 $obj = $db->fetch_object(
$resql);
944 if ($obj->pamount == $obj->bamount && $obj->socid) {
945 $row[$j][
'paymentid'] = $obj->rowid;
946 $row[$j][
'pamount'] = $obj->pamount;
947 $row[$j][
'fk_bank'] = $obj->fk_bank;
948 $row[$j][
'bamount'] = $obj->bamount;
949 $row[$j][
'socid'] = $obj->socid;
950 $row[$j][
'datec'] = $obj->datec;
963 print $langs->trans(
'OrphelinsPaymentsDetectedByMethod', 2).
': '.count($row).
"<br>\n";
967 for ($i = 0; $i < $num; $i++) {
968 if ($conf->global->MAIN_FEATURES_LEVEL == 2) {
969 print
'* '.$row[$i][
'datec'].
' paymentid='.$row[$i][
'paymentid'].
' pamount='.$row[$i][
'pamount'].
' fk_bank='.$row[$i][
'fk_bank'].
' '.$row[$i][
'bamount'].
' socid='.$row[$i][
'socid'].
'<br>';
973 $sql =
" SELECT distinct f.rowid from ".MAIN_DB_PREFIX.
"facture as f";
974 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"paiement_facture as pf ON f.rowid = pf.fk_facture";
975 $sql .=
" WHERE f.fk_statut in (2,3) AND fk_soc = ".((int) $row[$i][
'socid']).
" AND total_ttc = ".((
float) $row[$i][
'pamount']);
976 $sql .=
" AND pf.fk_facture IS NULL";
977 $sql .=
" ORDER BY f.fk_statut";
979 $resql = $db->query($sql);
981 $num = $db->num_rows(
$resql);
984 $obj = $db->fetch_object(
$resql);
985 $facid = $obj->rowid;
987 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"paiement_facture (fk_facture, fk_paiement, amount)";
988 $sql .=
" VALUES (".((int) $facid).
",".((int) $row[$i][
'paymentid']).
", ".((
float) $row[$i][
'pamount']).
")";
990 $res += $db->query($sql);
992 print $langs->trans(
'MigrationProcessPaymentUpdate',
'facid='.$facid.
'-paymentid='.$row[$i][
'paymentid'].
'-amount='.$row[$i][
'pamount']).
"<br>\n";
1001 print $langs->trans(
'MigrationSuccessfullUpdate').
"<br>";
1003 print $langs->trans(
'MigrationPaymentsNothingUpdatable').
"<br>\n";
1008 print $langs->trans(
'MigrationPaymentsNothingUpdatable').
"<br>\n";
1014 $sql =
"ALTER TABLE ".MAIN_DB_PREFIX.
"paiement DROP COLUMN fk_facture";
1024 print $langs->trans(
'MigrationPaymentsNothingUpdatable').
"<br>\n";
1041 print
'<tr><td colspan="4">';
1046 print
'<b>'.$langs->trans(
'MigrationContractsUpdate').
"</b><br>\n";
1048 $sql =
"SELECT c.rowid as cref, c.date_contrat, c.statut, c.fk_product, c.fk_facture, c.fk_user_author,";
1049 $sql .=
" p.ref, p.label, p.description, p.price, p.tva_tx, p.duration, cd.rowid";
1050 $sql .=
" FROM ".MAIN_DB_PREFIX.
"contrat as c";
1051 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p";
1052 $sql .=
" ON c.fk_product = p.rowid";
1053 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"contratdet as cd";
1054 $sql .=
" ON c.rowid=cd.fk_contrat";
1055 $sql .=
" WHERE cd.rowid IS NULL AND p.rowid IS NOT NULL";
1056 $resql = $db->query($sql);
1062 $num = $db->num_rows(
$resql);
1065 print $langs->trans(
'MigrationContractsNumberToUpdate', $num).
"<br>\n";
1069 $obj = $db->fetch_object(
$resql);
1071 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"contratdet (";
1072 $sql .=
"fk_contrat, fk_product, statut, label, description,";
1073 $sql .=
"date_ouverture_prevue, date_ouverture, date_fin_validite, tva_tx, qty,";
1074 $sql .=
"subprice, price_ht, fk_user_author, fk_user_ouverture)";
1075 $sql .=
" VALUES (";
1076 $sql .= ((int) $obj->cref).
", ".($obj->fk_product ? ((int) $obj->fk_product) : 0).
", ";
1078 $sql .=
"'".$db->escape($obj->label).
"', null, ";
1079 $sql .= ($obj->date_contrat ?
"'".$db->idate($db->jdate($obj->date_contrat)).
"'" :
"null").
", ";
1082 $sql .= ((
float) $obj->tva_tx).
", 1, ";
1083 $sql .= ((
float) $obj->price).
", ".((
float) $obj->price).
", ".((int) $obj->fk_user_author).
",";
1087 if ($db->query($sql)) {
1088 print $langs->trans(
'MigrationContractsLineCreation', $obj->cref).
"<br>\n";
1100 print $langs->trans(
'MigrationSuccessfullUpdate').
"<br>";
1103 print $langs->trans(
'MigrationUpdateFailed').
'<br>';
1106 print $langs->trans(
'MigrationContractsNothingToUpdate').
"<br>\n";
1109 print $langs->trans(
'MigrationContractsFieldDontExist').
"<br>\n";
1126 print
'<tr><td colspan="4">';
1131 print
'<b>'.$langs->trans(
'MigrationBankTransfertsUpdate').
"</b><br>\n";
1133 $sql =
"SELECT ba.rowid as barowid, bb.rowid as bbrowid";
1134 $sql .=
" FROM ".MAIN_DB_PREFIX.
"bank as bb, ".MAIN_DB_PREFIX.
"bank as ba";
1135 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_url as bu ON bu.fk_bank = ba.rowid";
1136 $sql .=
" WHERE ba.amount = -bb.amount AND ba.fk_account <> bb.fk_account";
1137 $sql .=
" AND ba.datev = bb.datev AND ba.datec = bb.datec";
1138 $sql .=
" AND bu.fk_bank IS NULL";
1139 $resql = $db->query($sql);
1145 $num = $db->num_rows(
$resql);
1148 print $langs->trans(
'MigrationBankTransfertsToUpdate', $num).
"<br>\n";
1152 $obj = $db->fetch_object(
$resql);
1154 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"bank_url (";
1155 $sql .=
"fk_bank, url_id, url, label, type";
1157 $sql .=
" VALUES (";
1158 $sql .= $obj->barowid.
",".$obj->bbrowid.
", '/compta/bank/line.php?rowid=', '(banktransfert)', 'banktransfert'";
1164 if (!$db->query($sql)) {
1175 print $langs->trans(
'MigrationSuccessfullUpdate').
"<br>";
1178 print $langs->trans(
'MigrationUpdateFailed').
'<br>';
1181 print $langs->trans(
'MigrationBankTransfertsNothingToUpdate').
"<br>\n";
1200 print
'<tr><td colspan="4">';
1203 print
'<b>'.$langs->trans(
'MigrationContractsEmptyDatesUpdate').
"</b><br>\n";
1205 $sql =
"update ".MAIN_DB_PREFIX.
"contrat set date_contrat=tms where date_contrat is null";
1207 $resql = $db->query($sql);
1211 if ($db->affected_rows(
$resql) > 0) {
1212 print $langs->trans(
'MigrationContractsEmptyDatesUpdateSuccess').
"<br>\n";
1214 print $langs->trans(
'MigrationContractsEmptyDatesNothingToUpdate').
"<br>\n";
1217 $sql =
"update ".MAIN_DB_PREFIX.
"contrat set datec=tms where datec is null";
1219 $resql = $db->query($sql);
1223 if ($db->affected_rows(
$resql) > 0) {
1224 print $langs->trans(
'MigrationContractsEmptyCreationDatesUpdateSuccess').
"<br>\n";
1226 print $langs->trans(
'MigrationContractsEmptyCreationDatesNothingToUpdate').
"<br>\n";
1242 print
'<tr><td colspan="4">';
1247 print
'<b>'.$langs->trans(
'MigrationContractsInvalidDatesUpdate').
"</b><br>\n";
1249 $sql =
"SELECT c.rowid as cref, c.datec, c.date_contrat, MIN(cd.date_ouverture) as datemin";
1250 $sql .=
" FROM ".MAIN_DB_PREFIX.
"contrat as c,";
1251 $sql .=
" ".MAIN_DB_PREFIX.
"contratdet as cd";
1252 $sql .=
" WHERE c.rowid=cd.fk_contrat AND cd.date_ouverture IS NOT NULL";
1253 $sql .=
" GROUP BY c.rowid, c.date_contrat";
1254 $resql = $db->query($sql);
1260 $num = $db->num_rows(
$resql);
1263 $nbcontratsmodifie = 0;
1267 $obj = $db->fetch_object(
$resql);
1268 if ($obj->date_contrat > $obj->datemin) {
1269 $datemin = $db->jdate($obj->datemin);
1271 print $langs->trans(
'MigrationContractsInvalidDateFix', $obj->cref, $obj->date_contrat, $obj->datemin).
"<br>\n";
1272 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"contrat";
1273 $sql .=
" SET date_contrat='".$db->idate($datemin).
"'";
1274 $sql .=
" WHERE rowid = ".((int) $obj->cref);
1275 $resql2 = $db->query($sql);
1280 $nbcontratsmodifie++;
1287 if ($nbcontratsmodifie) {
1288 print $langs->trans(
'MigrationContractsInvalidDatesNumber', $nbcontratsmodifie).
"<br>\n";
1290 print $langs->trans(
'MigrationContractsInvalidDatesNothingToUpdate').
"<br>\n";
1310 print
'<tr><td colspan="4">';
1313 print
'<b>'.$langs->trans(
'MigrationContractsIncoherentCreationDateUpdate').
"</b><br>\n";
1315 $sql =
"update ".MAIN_DB_PREFIX.
"contrat set datec=date_contrat where datec is null or datec > date_contrat";
1317 $resql = $db->query($sql);
1321 if ($db->affected_rows(
$resql) > 0) {
1322 print $langs->trans(
'MigrationContractsIncoherentCreationDateUpdateSuccess').
"<br>\n";
1324 print $langs->trans(
'MigrationContractsIncoherentCreationDateNothingToUpdate').
"<br>\n";
1340 print
'<tr><td colspan="4">';
1343 print
'<b>'.$langs->trans(
'MigrationReopeningContracts').
"</b><br>\n";
1345 $sql =
"SELECT c.rowid as cref FROM ".MAIN_DB_PREFIX.
"contrat as c, ".MAIN_DB_PREFIX.
"contratdet as cd";
1346 $sql .=
" WHERE cd.statut = 4 AND c.statut=2 AND c.rowid=cd.fk_contrat";
1348 $resql = $db->query($sql);
1352 if ($db->affected_rows(
$resql) > 0) {
1355 $num = $db->num_rows(
$resql);
1358 $nbcontratsmodifie = 0;
1362 $obj = $db->fetch_object(
$resql);
1364 print $langs->trans(
'MigrationReopenThisContract', $obj->cref).
"<br>\n";
1365 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"contrat";
1366 $sql .=
" SET statut = 1";
1367 $sql .=
" WHERE rowid = ".((int) $obj->cref);
1368 $resql2 = $db->query($sql);
1373 $nbcontratsmodifie++;
1380 if ($nbcontratsmodifie) {
1381 print $langs->trans(
'MigrationReopenedContractsNumber', $nbcontratsmodifie).
"<br>\n";
1383 print $langs->trans(
'MigrationReopeningContractsNothingToUpdate').
"<br>\n";
1387 print $langs->trans(
'MigrationReopeningContractsNothingToUpdate').
"<br>\n";
1405 print
'<tr><td colspan="4">';
1407 print
'<b>'.$langs->trans(
'SuppliersInvoices').
"</b><br>\n";
1410 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"paiementfourn",
"fk_facture_fourn");
1411 $obj = $db->fetch_object($result);
1416 $select_sql =
'SELECT rowid, fk_facture_fourn, amount';
1417 $select_sql .=
' FROM '.MAIN_DB_PREFIX.
'paiementfourn';
1418 $select_sql .=
' WHERE fk_facture_fourn IS NOT NULL';
1421 $select_resql = $db->query($select_sql);
1422 if ($select_resql) {
1423 $select_num = $db->num_rows($select_resql);
1427 while (($i < $select_num) && (!$error)) {
1428 $select_obj = $db->fetch_object($select_resql);
1431 $check_sql =
'SELECT fk_paiementfourn, fk_facturefourn';
1432 $check_sql .=
' FROM '.MAIN_DB_PREFIX.
'paiementfourn_facturefourn';
1433 $check_sql .=
' WHERE fk_paiementfourn = '.((int) $select_obj->rowid).
' AND fk_facturefourn = '.((int) $select_obj->fk_facture_fourn);
1434 $check_resql = $db->query($check_sql);
1436 $check_num = $db->num_rows($check_resql);
1437 if ($check_num == 0) {
1441 print
'<tr><td colspan="4" class="nowrap"><b>'.$langs->trans(
'SuppliersInvoices').
'</b></td></tr>';
1442 print
'<tr><td>fk_paiementfourn</td><td>fk_facturefourn</td><td>'.$langs->trans(
'Amount').
'</td><td> </td></tr>';
1445 print
'<tr class="oddeven">';
1446 print
'<td>'.$select_obj->rowid.
'</td><td>'.$select_obj->fk_facture_fourn.
'</td><td>'.$select_obj->amount.
'</td>';
1448 $insert_sql =
'INSERT INTO '.MAIN_DB_PREFIX.
'paiementfourn_facturefourn SET ';
1449 $insert_sql .=
' fk_paiementfourn = \''.$select_obj->rowid.
'\',
';
1450 $insert_sql .= ' fk_facturefourn = \
''.$select_obj->fk_facture_fourn.
'\',
';
1451 $insert_sql .= ' amount = \
''.$select_obj->amount.
'\'';
1452 $insert_resql = $db->query($insert_sql);
1454 if ($insert_resql) {
1456 print
'<td><span class="ok">'.$langs->trans(
"OK").
'</span></td>';
1458 print
'<td><span class="error">Error on insert</span></td>';
1474 print
'<tr><td>'.$langs->trans(
"AlreadyDone").
'</td></tr>';
1478 $sql =
"ALTER TABLE ".MAIN_DB_PREFIX.
"paiementfourn DROP COLUMN fk_facture_fourn";
1481 print
'<tr><td>'.$langs->trans(
"Error").
'</td></tr>';
1485 print
'<tr><td>'.$langs->trans(
"AlreadyDone").
'</td></tr>';
1502 $tmpmysoc->setMysoc($conf);
1506 print
'<tr><td colspan="4">';
1509 print
'<b>'.$langs->trans(
'MigrationInvoice').
"</b><br>\n";
1512 $sql =
"SELECT fd.rowid, fd.qty, fd.subprice, fd.remise_percent, fd.tva_tx as vatrate, fd.total_ttc, fd.info_bits,";
1513 $sql .=
" f.rowid as facid, f.remise_percent as remise_percent_global, f.total_ttc as total_ttc_f";
1514 $sql .=
" FROM ".MAIN_DB_PREFIX.
"facturedet as fd, ".MAIN_DB_PREFIX.
"facture as f";
1515 $sql .=
" WHERE fd.fk_facture = f.rowid";
1516 $sql .=
" AND (((fd.total_ttc = 0 AND fd.remise_percent != 100) or fd.total_ttc IS NULL) or f.total_ttc IS NULL)";
1520 $resql = $db->query($sql);
1522 $num = $db->num_rows(
$resql);
1526 $obj = $db->fetch_object(
$resql);
1528 $rowid = $obj->rowid;
1530 $pu = $obj->subprice;
1531 $vatrate = $obj->vatrate;
1532 $remise_percent = $obj->remise_percent;
1533 $remise_percent_global = $obj->remise_percent_global;
1534 $total_ttc_f = $obj->total_ttc_f;
1535 $info_bits = $obj->info_bits;
1539 $facligne->fetch($rowid);
1541 $result =
calcul_price_total($qty, $pu, $remise_percent, $vatrate, 0, 0, $remise_percent_global,
'HT', $info_bits, $facligne->product_type, $tmpmysoc);
1542 $total_ht = $result[0];
1543 $total_tva = $result[1];
1544 $total_ttc = $result[2];
1546 $facligne->total_ht = $total_ht;
1547 $facligne->total_tva = $total_tva;
1548 $facligne->total_ttc = $total_ttc;
1550 dolibarr_install_syslog(
"upgrade2: line ".$rowid.
": facid=".$obj->facid.
" pu=".$pu.
" qty=".$qty.
" vatrate=".$vatrate.
" remise_percent=".$remise_percent.
" remise_global=".$remise_percent_global.
" -> ".$total_ht.
", ".$total_tva.
", ".$total_ttc);
1552 $facligne->update_total();
1556 if (!$total_ttc_f) {
1558 $facture->id = $obj->facid;
1560 if ($facture->fetch($facture->id) >= 0) {
1561 if ($facture->update_price() > 0) {
1564 print
"Error id=".$facture->id;
1577 print $langs->trans(
"AlreadyDone");
1583 print
"Error #1 ".$db->error();
1605 $tmpmysoc->setMysoc($conf);
1609 print
'<tr><td colspan="4">';
1612 print
'<b>'.$langs->trans(
'MigrationProposal').
"</b><br>\n";
1615 $sql =
"SELECT pd.rowid, pd.qty, pd.subprice, pd.remise_percent, pd.tva_tx as vatrate, pd.info_bits,";
1616 $sql .=
" p.rowid as propalid, p.remise_percent as remise_percent_global";
1617 $sql .=
" FROM ".MAIN_DB_PREFIX.
"propaldet as pd, ".MAIN_DB_PREFIX.
"propal as p";
1618 $sql .=
" WHERE pd.fk_propal = p.rowid";
1619 $sql .=
" AND ((pd.total_ttc = 0 AND pd.remise_percent != 100) or pd.total_ttc IS NULL)";
1622 $resql = $db->query($sql);
1624 $num = $db->num_rows(
$resql);
1628 $obj = $db->fetch_object(
$resql);
1630 $rowid = $obj->rowid;
1632 $pu = $obj->subprice;
1633 $vatrate = $obj->vatrate;
1634 $remise_percent = $obj->remise_percent;
1635 $remise_percent_global = $obj->remise_percent_global;
1636 $info_bits = $obj->info_bits;
1640 $propalligne->fetch($rowid);
1642 $result =
calcul_price_total($qty, $pu, $remise_percent, $vatrate, 0, 0, $remise_percent_global,
'HT', $info_bits, $propalligne->product_type, $tmpmysoc);
1643 $total_ht = $result[0];
1644 $total_tva = $result[1];
1645 $total_ttc = $result[2];
1647 $propalligne->total_ht = $total_ht;
1648 $propalligne->total_tva = $total_tva;
1649 $propalligne->total_ttc = $total_ttc;
1651 dolibarr_install_syslog(
"upgrade2: Line ".$rowid.
": propalid=".$obj->rowid.
" pu=".$pu.
" qty=".$qty.
" vatrate=".$vatrate.
" remise_percent=".$remise_percent.
" remise_global=".$remise_percent_global.
" -> ".$total_ht.
", ".$total_tva.
", ".$total_ttc);
1653 $propalligne->update_total();
1678 print $langs->trans(
"AlreadyDone");
1685 print
"Error #1 ".$db->error();
1708 $tmpmysoc->setMysoc($conf);
1709 if (empty($tmpmysoc->country_id)) {
1710 $tmpmysoc->country_id = 0;
1713 print
'<tr><td colspan="4">';
1716 print
'<b>'.$langs->trans(
'MigrationContract').
"</b><br>\n";
1719 $sql =
"SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as vatrate, cd.info_bits,";
1720 $sql .=
" c.rowid as contratid";
1721 $sql .=
" FROM ".MAIN_DB_PREFIX.
"contratdet as cd, ".MAIN_DB_PREFIX.
"contrat as c";
1722 $sql .=
" WHERE cd.fk_contrat = c.rowid";
1723 $sql .=
" AND ((cd.total_ttc = 0 AND cd.remise_percent != 100 AND cd.subprice > 0) or cd.total_ttc IS NULL)";
1726 $resql = $db->query($sql);
1728 $num = $db->num_rows(
$resql);
1732 $obj = $db->fetch_object(
$resql);
1734 $rowid = $obj->rowid;
1736 $pu = $obj->subprice;
1737 $vatrate = $obj->vatrate;
1738 $remise_percent = $obj->remise_percent;
1739 $info_bits = $obj->info_bits;
1744 $contratligne->fetch($rowid);
1746 $result =
calcul_price_total($qty, $pu, $remise_percent, $vatrate, 0, 0, 0,
'HT', $info_bits, $contratligne->product_type, $tmpmysoc);
1747 $total_ht = $result[0];
1748 $total_tva = $result[1];
1749 $total_ttc = $result[2];
1751 $contratligne->total_ht = $total_ht;
1752 $contratligne->total_tva = $total_tva;
1753 $contratligne->total_ttc = $total_ttc;
1755 dolibarr_install_syslog(
"upgrade2: Line ".$rowid.
": contratdetid=".$obj->rowid.
" pu=".$pu.
" qty=".$qty.
" vatrate=".$vatrate.
" remise_percent=".$remise_percent.
" -> ".$total_ht.
", ".$total_tva.
" , ".$total_ttc);
1757 $contratligne->update_total();
1762 print $langs->trans(
"AlreadyDone");
1769 print
"Error #1 ".$db->error();
1792 $tmpmysoc->setMysoc($conf);
1794 print
'<tr><td colspan="4">';
1797 print
'<b>'.$langs->trans(
'MigrationOrder').
"</b><br>\n";
1800 $sql =
"SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as vatrate, cd.info_bits,";
1801 $sql .=
" c.rowid as commandeid, c.remise_percent as remise_percent_global";
1802 $sql .=
" FROM ".MAIN_DB_PREFIX.
"commandedet as cd, ".MAIN_DB_PREFIX.
"commande as c";
1803 $sql .=
" WHERE cd.fk_commande = c.rowid";
1804 $sql .=
" AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)";
1807 $resql = $db->query($sql);
1809 $num = $db->num_rows(
$resql);
1813 $obj = $db->fetch_object(
$resql);
1815 $rowid = $obj->rowid;
1817 $pu = $obj->subprice;
1818 $vatrate = $obj->vatrate;
1819 $remise_percent = $obj->remise_percent;
1820 $remise_percent_global = $obj->remise_percent_global;
1821 $info_bits = $obj->info_bits;
1825 $commandeligne->fetch($rowid);
1827 $result =
calcul_price_total($qty, $pu, $remise_percent, $vatrate, 0, 0, $remise_percent_global,
'HT', $info_bits, $commandeligne->product_type, $tmpmysoc);
1828 $total_ht = $result[0];
1829 $total_tva = $result[1];
1830 $total_ttc = $result[2];
1832 $commandeligne->total_ht = $total_ht;
1833 $commandeligne->total_tva = $total_tva;
1834 $commandeligne->total_ttc = $total_ttc;
1836 dolibarr_install_syslog(
"upgrade2: Line ".$rowid.
" : commandeid=".$obj->rowid.
" pu=".$pu.
" qty=".$qty.
" vatrate=".$vatrate.
" remise_percent=".$remise_percent.
" remise_global=".$remise_percent_global.
" -> ".$total_ht.
", ".$total_tva.
", ".$total_ttc);
1838 $commandeligne->update_total();
1862 print $langs->trans(
"AlreadyDone");
1879 print
"Error #1 ".$db->error();
1902 $tmpmysoc->setMysoc($conf);
1904 print
'<tr><td colspan="4">';
1907 print
'<b>'.$langs->trans(
'MigrationSupplierOrder').
"</b><br>\n";
1910 $sql =
"SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as vatrate, cd.info_bits,";
1911 $sql .=
" c.rowid as commandeid, c.remise_percent as remise_percent_global";
1912 $sql .=
" FROM ".MAIN_DB_PREFIX.
"commande_fournisseurdet as cd, ".MAIN_DB_PREFIX.
"commande_fournisseur as c";
1913 $sql .=
" WHERE cd.fk_commande = c.rowid";
1914 $sql .=
" AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)";
1917 $resql = $db->query($sql);
1919 $num = $db->num_rows(
$resql);
1923 $obj = $db->fetch_object(
$resql);
1925 $rowid = $obj->rowid;
1927 $pu = $obj->subprice;
1928 $vatrate = $obj->vatrate;
1929 $remise_percent = $obj->remise_percent;
1930 $remise_percent_global = $obj->remise_percent_global;
1931 $info_bits = $obj->info_bits;
1935 $commandeligne->fetch($rowid);
1937 $result =
calcul_price_total($qty, $pu, $remise_percent, $vatrate, 0, 0, $remise_percent_global,
'HT', $info_bits, $commandeligne->product_type, $tmpsoc);
1938 $total_ht = $result[0];
1939 $total_tva = $result[1];
1940 $total_ttc = $result[2];
1942 $commandeligne->total_ht = $total_ht;
1943 $commandeligne->total_tva = $total_tva;
1944 $commandeligne->total_ttc = $total_ttc;
1946 dolibarr_install_syslog(
"upgrade2: Line ".$rowid.
": commandeid=".$obj->rowid.
" pu=".$pu.
" qty=".$qty.
" vatrate=".$vatrate.
" remise_percent=".$remise_percent.
" remise_global=".$remise_percent_global.
" -> ".$total_ht.
", ".$total_tva.
", ".$total_ttc);
1948 $commandeligne->update_total();
1972 print $langs->trans(
"AlreadyDone");
1989 print
"Error #1 ".$db->error();
2015 include_once DOL_DOCUMENT_ROOT.
'/core/modules/facture/modules_facture.php';
2017 if (count($modellist) == 0) {
2019 $sql =
" insert into ".MAIN_DB_PREFIX.
"document_model(nom,type) values('crabe','invoice')";
2020 $resql = $db->query($sql);
2027 if (!empty($conf->commande->enabled)) {
2028 include_once DOL_DOCUMENT_ROOT.
'/core/modules/commande/modules_commande.php';
2030 if (count($modellist) == 0) {
2032 $sql =
" insert into ".MAIN_DB_PREFIX.
"document_model(nom,type) values('einstein','order')";
2033 $resql = $db->query($sql);
2040 if (!empty($conf->expedition->enabled)) {
2041 include_once DOL_DOCUMENT_ROOT.
'/core/modules/expedition/modules_expedition.php';
2042 $modellist = ModelePDFExpedition::liste_modeles($db);
2043 if (count($modellist) == 0) {
2045 $sql =
" insert into ".MAIN_DB_PREFIX.
"document_model(nom,type) values('rouget','shipping')";
2046 $resql = $db->query($sql);
2069 print
'<tr><td colspan="4">';
2072 print
'<b>'.$langs->trans(
'MigrationShipmentOrderMatching').
"</b><br>\n";
2074 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"expedition",
"fk_commande");
2075 $obj = $db->fetch_object($result);
2081 $sql =
"SELECT e.rowid, e.fk_commande FROM ".MAIN_DB_PREFIX.
"expedition as e";
2082 $resql = $db->query($sql);
2085 $num = $db->num_rows(
$resql);
2089 $obj = $db->fetch_object(
$resql);
2091 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"co_exp (fk_expedition,fk_commande)";
2092 $sql .=
" VALUES (".((int) $obj->rowid).
", ".((int) $obj->fk_commande).
")";
2093 $resql2 = $db->query($sql);
2106 $sql =
"ALTER TABLE ".MAIN_DB_PREFIX.
"expedition DROP COLUMN fk_commande";
2107 print $langs->trans(
'FieldRenamed').
"<br>\n";
2117 print $langs->trans(
'AlreadyDone').
"<br>\n";
2134 print
'<tr><td colspan="4">';
2137 print
'<b>'.$langs->trans(
'MigrationDeliveryOrderMatching').
"</b><br>\n";
2139 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"livraison",
"fk_commande");
2140 $obj = $db->fetch_object($result);
2146 $sql =
"SELECT l.rowid, l.fk_commande,";
2147 $sql .=
" c.ref_client, c.date_livraison as delivery_date";
2148 $sql .=
" FROM ".MAIN_DB_PREFIX.
"livraison as l, ".MAIN_DB_PREFIX.
"commande as c";
2149 $sql .=
" WHERE c.rowid = l.fk_commande";
2150 $resql = $db->query($sql);
2153 $num = $db->num_rows(
$resql);
2157 $obj = $db->fetch_object(
$resql);
2159 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"co_liv (fk_livraison,fk_commande)";
2160 $sql .=
" VALUES (".((int) $obj->rowid).
", ".((int) $obj->fk_commande).
")";
2161 $resql2 = $db->query($sql);
2164 $delivery_date = $db->jdate($obj->delivery_date);
2166 $sqlu =
"UPDATE ".MAIN_DB_PREFIX.
"livraison SET";
2167 $sqlu .=
" ref_client = '".$db->escape($obj->ref_client).
"'";
2168 $sqlu .=
", date_livraison = '".$db->idate($delivery_date).
"'";
2169 $sqlu .=
" WHERE rowid = ".((int) $obj->rowid);
2170 $resql3 = $db->query($sqlu);
2186 $sql =
"ALTER TABLE ".MAIN_DB_PREFIX.
"livraison DROP COLUMN fk_commande";
2187 print $langs->trans(
'FieldRenamed').
"<br>\n";
2197 print $langs->trans(
'AlreadyDone').
"<br>\n";
2214 print
'<tr><td colspan="4">';
2217 print
'<b>'.$langs->trans(
'MigrationDeliveryDetail').
"</b><br>\n";
2221 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"livraisondet",
"fk_commande_ligne");
2222 $obj = $db->fetch_object($result);
2228 $sql =
"SELECT cd.rowid, cd.fk_product, cd.description, cd.subprice, cd.total_ht";
2229 $sql .=
", ld.fk_livraison";
2230 $sql .=
" FROM ".MAIN_DB_PREFIX.
"commandedet as cd, ".MAIN_DB_PREFIX.
"livraisondet as ld";
2231 $sql .=
" WHERE ld.fk_commande_ligne = cd.rowid";
2232 $resql = $db->query($sql);
2235 $num = $db->num_rows(
$resql);
2239 $obj = $db->fetch_object(
$resql);
2241 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"livraisondet SET";
2242 $sql .=
" fk_product = ".((int) $obj->fk_product);
2243 $sql .=
",description = '".$db->escape($obj->description).
"'";
2244 $sql .=
",subprice = ".price2num($obj->subprice);
2245 $sql .=
",total_ht = ".price2num($obj->total_ht);
2246 $sql .=
" WHERE fk_commande_ligne = ".((int) $obj->rowid);
2247 $resql2 = $db->query($sql);
2250 $sql =
"SELECT total_ht";
2251 $sql .=
" FROM ".MAIN_DB_PREFIX.
"livraison";
2252 $sql .=
" WHERE rowid = ".((int) $obj->fk_livraison);
2253 $resql3 = $db->query($sql);
2256 $obju = $db->fetch_object($resql3);
2257 $total_ht = $obju->total_ht + $obj->total_ht;
2259 $sqlu =
"UPDATE ".MAIN_DB_PREFIX.
"livraison SET";
2260 $sqlu .=
" total_ht = ".price2num($total_ht,
'MT');
2261 $sqlu .=
" WHERE rowid = ".((int) $obj->fk_livraison);
2262 $resql4 = $db->query($sqlu);
2282 $sql =
"ALTER TABLE ".MAIN_DB_PREFIX.
"livraisondet CHANGE fk_commande_ligne fk_origin_line integer";
2283 print $langs->trans(
'FieldRenamed').
"<br>\n";
2293 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"livraisondet",
"fk_origin_line");
2294 $obj = $db->fetch_object($result);
2296 $sql =
"ALTER TABLE ".MAIN_DB_PREFIX.
"livraisondet ADD COLUMN fk_origin_line integer after fk_livraison";
2299 print $langs->trans(
'AlreadyDone').
"<br>\n";
2316 print
'<tr><td colspan="4">';
2319 print
'<b>'.$langs->trans(
'MigrationStockDetail').
"</b><br>\n";
2325 $sql =
"SELECT SUM(reel) as total, fk_product";
2326 $sql .=
" FROM ".MAIN_DB_PREFIX.
"product_stock as ps";
2327 $sql .=
" GROUP BY fk_product";
2328 $resql = $db->query($sql);
2331 $num = $db->num_rows(
$resql);
2335 $obj = $db->fetch_object(
$resql);
2337 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"product SET";
2338 $sql .=
" stock = ".price2num($obj->total,
'MS');
2339 $sql .=
" WHERE rowid = ".((int) $obj->fk_product);
2341 $resql2 = $db->query($sql);
2378 print
'<tr><td colspan="4">';
2381 print
'<b>'.$langs->trans(
'MigrationMenusDetail').
"</b><br>\n";
2385 if ($db->DDLInfoTable(MAIN_DB_PREFIX.
"menu_constraint")) {
2388 $sql =
"SELECT m.rowid, mc.action";
2389 $sql .=
" FROM ".MAIN_DB_PREFIX.
"menu_constraint as mc, ".MAIN_DB_PREFIX.
"menu_const as md, ".MAIN_DB_PREFIX.
"menu as m";
2390 $sql .=
" WHERE md.fk_menu = m.rowid AND md.fk_constraint = mc.rowid";
2391 $sql .=
" AND m.enabled = '1'";
2392 $resql = $db->query($sql);
2395 $num = $db->num_rows(
$resql);
2398 $obj = $db->fetch_object(
$resql);
2400 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"menu SET";
2401 $sql .=
" enabled = '".$db->escape($obj->action).
"'";
2402 $sql .=
" WHERE rowid = ".((int) $obj->rowid);
2403 $sql .=
" AND enabled = '1'";
2405 $resql2 = $db->query($sql);
2426 print $langs->trans(
'AlreadyDone').
"<br>\n";
2445 print
'<tr><td colspan="4">';
2448 print
'<b>'.$langs->trans(
'MigrationDeliveryAddress').
"</b><br>\n";
2452 if ($db->DDLInfoTable(MAIN_DB_PREFIX.
"co_exp")) {
2455 $sql =
"SELECT c.fk_adresse_livraison, ce.fk_expedition";
2456 $sql .=
" FROM ".MAIN_DB_PREFIX.
"commande as c";
2457 $sql .=
", ".MAIN_DB_PREFIX.
"co_exp as ce";
2458 $sql .=
" WHERE c.rowid = ce.fk_commande";
2459 $sql .=
" AND c.fk_adresse_livraison IS NOT NULL AND c.fk_adresse_livraison != 0";
2461 $resql = $db->query($sql);
2464 $num = $db->num_rows(
$resql);
2468 $obj = $db->fetch_object(
$resql);
2470 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"expedition SET";
2471 $sql .=
" fk_adresse_livraison = '".$db->escape($obj->fk_adresse_livraison).
"'";
2472 $sql .=
" WHERE rowid = ".((int) $obj->fk_expedition);
2474 $resql2 = $db->query($sql);
2483 print $langs->trans(
'AlreadyDone').
"<br>\n";
2496 print $langs->trans(
'AlreadyDone').
"<br>\n";
2515 if (($db->type ==
'mysql' || $db->type ==
'mysqli')) {
2517 dolibarr_install_syslog(
"upgrade2::migrate_restore_missing_links Version of database too old to make this migrate action");
2521 print
'<tr><td colspan="4">';
2524 print
'<b>'.$langs->trans(
'MigrationFixData').
"</b> (1)<br>\n";
2530 $table1 =
'facturedet'; $field1 =
'fk_remise_except';
2531 $table2 =
'societe_remise_except'; $field2 =
'fk_facture_line';
2535 $sql =
"SELECT t1.rowid, t1.".$field1.
" as field";
2536 $sql .=
" FROM ".MAIN_DB_PREFIX.$table1.
" as t1";
2537 $sql .=
" WHERE t1.".$field1.
" IS NOT NULL AND t1.".$field1.
" NOT IN";
2538 $sql .=
" (SELECT t2.rowid FROM ".MAIN_DB_PREFIX.$table2.
" as t2";
2539 $sql .=
" WHERE t1.rowid = t2.".$field2.
")";
2542 $resql = $db->query($sql);
2545 $num = $db->num_rows(
$resql);
2549 $obj = $db->fetch_object(
$resql);
2551 print
'Line '.$obj->rowid.
' in '.$table1.
' is linked to record '.$obj->field.
' in '.$table2.
' that has no link to '.$table1.
'. We fix this.<br>';
2552 $sql =
"UPDATE ".MAIN_DB_PREFIX.$table2.
" SET";
2553 $sql .=
" ".$field2.
" = '".$db->escape($obj->rowid).
"'";
2554 $sql .=
" WHERE rowid = ".((int) $obj->field);
2556 $resql2 = $db->query($sql);
2565 print $langs->trans(
'AlreadyDone').
"<br>\n";
2581 print
'<tr><td colspan="4">';
2584 print
'<b>'.$langs->trans(
'MigrationFixData').
"</b> (2)<br>\n";
2587 $table2 =
'facturedet'; $field2 =
'fk_remise_except';
2588 $table1 =
'societe_remise_except'; $field1 =
'fk_facture_line';
2592 $sql =
"SELECT t1.rowid, t1.".$field1.
" as field";
2593 $sql .=
" FROM ".MAIN_DB_PREFIX.$table1.
" as t1";
2594 $sql .=
" WHERE t1.".$field1.
" IS NOT NULL AND t1.".$field1.
" NOT IN";
2595 $sql .=
" (SELECT t2.rowid FROM ".MAIN_DB_PREFIX.$table2.
" as t2";
2596 $sql .=
" WHERE t1.rowid = t2.".$field2.
")";
2599 $resql = $db->query($sql);
2602 $num = $db->num_rows(
$resql);
2606 $obj = $db->fetch_object(
$resql);
2608 print
'Line '.$obj->rowid.
' in '.$table1.
' is linked to record '.$obj->field.
' in '.$table2.
' that has no link to '.$table1.
'. We fix this.<br>';
2609 $sql =
"UPDATE ".MAIN_DB_PREFIX.$table2.
" SET";
2610 $sql .=
" ".$field2.
" = '".$db->escape($obj->rowid).
"'";
2611 $sql .=
" WHERE rowid = ".((int) $obj->field);
2613 $resql2 = $db->query($sql);
2622 print $langs->trans(
'AlreadyDone').
"<br>\n";
2650 print
'<tr><td colspan="4">';
2653 print
'<b>'.$langs->trans(
'MigrationProjectUserResp').
"</b><br>\n";
2655 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"projet",
"fk_user_resp");
2656 $obj = $db->fetch_object($result);
2662 $sql =
"SELECT rowid, fk_user_resp FROM ".MAIN_DB_PREFIX.
"projet";
2663 $resql = $db->query($sql);
2666 $num = $db->num_rows(
$resql);
2670 $obj = $db->fetch_object(
$resql);
2672 $sql2 =
"INSERT INTO ".MAIN_DB_PREFIX.
"element_contact (";
2673 $sql2 .=
"datecreate";
2674 $sql2 .=
", statut";
2675 $sql2 .=
", element_id";
2676 $sql2 .=
", fk_c_type_contact";
2677 $sql2 .=
", fk_socpeople";
2678 $sql2 .=
") VALUES (";
2679 $sql2 .=
"'".$db->idate(
dol_now()).
"'";
2681 $sql2 .=
", ".$obj->rowid;
2683 $sql2 .=
", ".$obj->fk_user_resp;
2686 if ($obj->fk_user_resp > 0) {
2687 $resql2 = $db->query($sql2);
2700 $sqlDrop =
"ALTER TABLE ".MAIN_DB_PREFIX.
"projet DROP COLUMN fk_user_resp";
2701 if ($db->query($sqlDrop)) {
2714 print $langs->trans(
'AlreadyDone').
"<br>\n";
2731 print
'<tr><td colspan="4">';
2734 print
'<b>'.$langs->trans(
'MigrationProjectTaskActors').
"</b><br>\n";
2736 if ($db->DDLInfoTable(MAIN_DB_PREFIX.
"projet_task_actors")) {
2741 $sql =
"SELECT fk_projet_task as fk_project_task, fk_user FROM ".MAIN_DB_PREFIX.
"projet_task_actors";
2742 $resql = $db->query($sql);
2745 $num = $db->num_rows(
$resql);
2749 $obj = $db->fetch_object(
$resql);
2751 $sql2 =
"INSERT INTO ".MAIN_DB_PREFIX.
"element_contact (";
2752 $sql2 .=
"datecreate";
2753 $sql2 .=
", statut";
2754 $sql2 .=
", element_id";
2755 $sql2 .=
", fk_c_type_contact";
2756 $sql2 .=
", fk_socpeople";
2757 $sql2 .=
") VALUES (";
2758 $sql2 .=
"'".$db->idate(
dol_now()).
"'";
2760 $sql2 .=
", ".$obj->fk_project_task;
2762 $sql2 .=
", ".$obj->fk_user;
2765 $resql2 = $db->query($sql2);
2777 $sqlDrop =
"DROP TABLE ".MAIN_DB_PREFIX.
"projet_task_actors";
2778 if ($db->query($sqlDrop)) {
2791 print $langs->trans(
'AlreadyDone').
"<br>\n";
2811 print
'<tr><td colspan="4">';
2814 print
'<b>'.$langs->trans(
'MigrationRelationshipTables', MAIN_DB_PREFIX.$table).
"</b><br>\n";
2818 if ($db->DDLInfoTable(MAIN_DB_PREFIX.$table)) {
2823 $sqlSelect =
"SELECT ".$fk_source.
", ".$fk_target;
2824 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.$table;
2826 $resql = $db->query($sqlSelect);
2829 $num = $db->num_rows(
$resql);
2833 $obj = $db->fetch_object(
$resql);
2835 $sqlInsert =
"INSERT INTO ".MAIN_DB_PREFIX.
"element_element (";
2836 $sqlInsert .=
"fk_source";
2837 $sqlInsert .=
", sourcetype";
2838 $sqlInsert .=
", fk_target";
2839 $sqlInsert .=
", targettype";
2840 $sqlInsert .=
") VALUES (";
2841 $sqlInsert .= $obj->$fk_source;
2842 $sqlInsert .=
", '".$db->escape($sourcetype).
"'";
2843 $sqlInsert .=
", ".$obj->$fk_target;
2844 $sqlInsert .=
", '".$db->escape($targettype).
"'";
2847 $result = $db->query($sqlInsert);
2856 print $langs->trans(
'AlreadyDone').
"<br>\n";
2860 $sqlDrop =
"DROP TABLE ".MAIN_DB_PREFIX.$table;
2861 if ($db->query($sqlDrop)) {
2874 print $langs->trans(
'AlreadyDone').
"<br>\n";
2892 print
'<tr><td colspan="4">';
2895 print
'<b>'.$langs->trans(
'MigrationProjectTaskTime').
"</b><br>\n";
2901 $sql =
"SELECT rowid, fk_task, task_duration";
2902 $sql .=
" FROM ".MAIN_DB_PREFIX.
"projet_task_time";
2903 $resql = $db->query($sql);
2906 $num = $db->num_rows(
$resql);
2909 $totaltime = array();
2913 $obj = $db->fetch_object(
$resql);
2915 if ($obj->task_duration > 0) {
2918 list($hour, $min) = explode(
'.', $obj->task_duration);
2919 $hour = $hour * 60 * 60;
2920 $min = ($min / 100) * 60 * 60;
2921 $newtime = $hour + $min;
2923 $sql2 =
"UPDATE ".MAIN_DB_PREFIX.
"projet_task_time SET";
2924 $sql2 .=
" task_duration = ".((int) $newtime);
2925 $sql2 .=
" WHERE rowid = ".((int) $obj->rowid);
2927 $resql2 = $db->query($sql2);
2934 if (!empty($totaltime[$obj->fk_task])) {
2935 $totaltime[$obj->fk_task] += $newtime;
2937 $totaltime[$obj->fk_task] = $newtime;
2940 if (!empty($totaltime[$obj->fk_task])) {
2941 $totaltime[$obj->fk_task] += $obj->task_duration;
2943 $totaltime[$obj->fk_task] = $obj->task_duration;
2952 foreach ($totaltime as $taskid => $total_duration) {
2953 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"projet_task SET";
2954 $sql .=
" duration_effective = ".((int) $total_duration);
2955 $sql .=
" WHERE rowid = ".((int) $taskid);
2957 $resql = $db->query($sql);
2964 print $langs->trans(
'AlreadyDone').
"<br>\n";
2970 print $langs->trans(
'AlreadyDone').
"<br>\n";
2995 print
'<tr><td colspan="4">';
2998 print
'<b>'.$langs->trans(
'MigrationCustomerOrderShipping').
"</b><br>\n";
3002 $result1 = $db->DDLDescTable(MAIN_DB_PREFIX.
"expedition",
"ref_customer");
3003 $result2 = $db->DDLDescTable(MAIN_DB_PREFIX.
"expedition",
"date_delivery");
3004 $obj1 = $db->fetch_object($result1);
3005 $obj2 = $db->fetch_object($result2);
3006 if (!$obj1 && !$obj2) {
3011 $sqlAdd1 =
"ALTER TABLE ".MAIN_DB_PREFIX.
"expedition ADD COLUMN ref_customer varchar(30) AFTER entity";
3012 $sqlAdd2 =
"ALTER TABLE ".MAIN_DB_PREFIX.
"expedition ADD COLUMN date_delivery date DEFAULT NULL AFTER date_expedition";
3014 if ($db->query($sqlAdd1) && $db->query($sqlAdd2)) {
3015 $sqlSelect =
"SELECT e.rowid as shipping_id, c.ref_client, c.date_livraison as delivery_date";
3016 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"expedition as e";
3017 $sqlSelect .=
", ".MAIN_DB_PREFIX.
"element_element as el";
3018 $sqlSelect .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"commande as c ON c.rowid = el.fk_source AND el.sourcetype = 'commande'";
3019 $sqlSelect .=
" WHERE e.rowid = el.fk_target";
3020 $sqlSelect .=
" AND el.targettype = 'shipping'";
3022 $resql = $db->query($sqlSelect);
3025 $num = $db->num_rows(
$resql);
3029 $obj = $db->fetch_object(
$resql);
3031 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"expedition SET";
3032 $sqlUpdate .=
" ref_customer = '".$db->escape($obj->ref_client).
"'";
3033 $sqlUpdate .=
", date_delivery = '".$db->escape($obj->delivery_date ? $obj->delivery_date :
'null').
"'";
3034 $sqlUpdate .=
" WHERE rowid = ".((int) $obj->shipping_id);
3036 $result = $db->query($sqlUpdate);
3045 print $langs->trans(
'AlreadyDone').
"<br>\n";
3063 print $langs->trans(
'AlreadyDone').
"<br>\n";
3079 print
'<tr><td colspan="4">';
3082 print
'<b>'.$langs->trans(
'MigrationShippingDelivery').
"</b><br>\n";
3086 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"livraison",
"fk_expedition");
3087 $obj = $db->fetch_object($result);
3093 $sqlSelect =
"SELECT rowid, fk_expedition";
3094 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"livraison";
3095 $sqlSelect .=
" WHERE fk_expedition is not null";
3097 $resql = $db->query($sqlSelect);
3100 $num = $db->num_rows(
$resql);
3104 $obj = $db->fetch_object(
$resql);
3106 $sqlInsert =
"INSERT INTO ".MAIN_DB_PREFIX.
"element_element (";
3107 $sqlInsert .=
"fk_source";
3108 $sqlInsert .=
", sourcetype";
3109 $sqlInsert .=
", fk_target";
3110 $sqlInsert .=
", targettype";
3111 $sqlInsert .=
") VALUES (";
3112 $sqlInsert .= $obj->fk_expedition;
3113 $sqlInsert .=
", 'shipping'";
3114 $sqlInsert .=
", ".$obj->rowid;
3115 $sqlInsert .=
", 'delivery'";
3118 $result = $db->query($sqlInsert);
3120 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"livraison SET fk_expedition = NULL";
3121 $sqlUpdate .=
" WHERE rowid = ".((int) $obj->rowid);
3123 $result = $db->query($sqlUpdate);
3136 print $langs->trans(
'AlreadyDone').
"<br>\n";
3140 $sqlDelete =
"DELETE FROM ".MAIN_DB_PREFIX.
"element_element WHERE sourcetype = 'commande' AND targettype = 'delivery'";
3141 $db->query($sqlDelete);
3146 $sqlDrop =
"ALTER TABLE ".MAIN_DB_PREFIX.
"livraison DROP COLUMN fk_expedition";
3147 $db->query($sqlDrop);
3157 print $langs->trans(
'AlreadyDone').
"<br>\n";
3174 print
'<tr><td colspan="4">';
3177 print
'<b>'.$langs->trans(
'MigrationShippingDelivery2').
"</b><br>\n";
3185 $sqlSelect =
"SELECT l.rowid as delivery_id, e.ref_customer, e.date_delivery";
3186 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"livraison as l,";
3187 $sqlSelect .=
" ".MAIN_DB_PREFIX.
"element_element as el,";
3188 $sqlSelect .=
" ".MAIN_DB_PREFIX.
"expedition as e";
3189 $sqlSelect .=
" WHERE l.rowid = el.fk_target";
3190 $sqlSelect .=
" AND el.targettype = 'delivery'";
3191 $sqlSelect .=
" AND e.rowid = el.fk_source AND el.sourcetype = 'shipping'";
3192 $sqlSelect .=
" AND (e.ref_customer IS NOT NULL OR e.date_delivery IS NOT NULL)";
3194 $sqlSelect .=
" AND (l.ref_customer IS NULL".($db->type !=
'pgsql' ?
" or l.ref_customer = ''" :
"").
")";
3195 $sqlSelect .=
" AND (l.date_delivery IS NULL".($db->type !=
'pgsql' ?
" or l.date_delivery = ''" :
"").
")";
3197 $resql = $db->query($sqlSelect);
3200 $num = $db->num_rows(
$resql);
3204 $obj = $db->fetch_object(
$resql);
3206 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"livraison SET";
3207 $sqlUpdate .=
" ref_customer = '".$db->escape($obj->ref_customer).
"',";
3208 $sqlUpdate .=
" date_delivery = ".($obj->date_delivery ?
"'".$db->escape($obj->date_delivery).
"'" :
'null');
3209 $sqlUpdate .=
" WHERE rowid = ".((int) $obj->delivery_id);
3211 $result = $db->query($sqlUpdate);
3220 print $langs->trans(
'AlreadyDone').
"<br>\n";
3247 print
'<tr><td colspan="4">';
3250 print
'<b>'.$langs->trans(
'MigrationActioncommElement').
"</b><br>\n";
3253 'propal' =>
'propalrowid',
3254 'order' =>
'fk_commande',
3255 'invoice' =>
'fk_facture',
3256 'contract' =>
'fk_contract',
3257 'order_supplier' =>
'fk_supplier_order',
3258 'invoice_supplier' =>
'fk_supplier_invoice'
3261 foreach ($elements as $type => $field) {
3262 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"actioncomm", $field);
3263 $obj = $db->fetch_object($result);
3269 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"actioncomm SET ";
3270 $sql .=
"fk_element = ".$field.
", elementtype = '".$db->escape($type).
"'";
3271 $sql .=
" WHERE ".$field.
" IS NOT NULL";
3272 $sql .=
" AND fk_element IS NULL";
3273 $sql .=
" AND elementtype IS NULL";
3275 $resql = $db->query($sql);
3289 print $langs->trans(
'AlreadyDone').
"<br>\n";
3306 print
'<tr><td colspan="4">';
3309 print
'<b>'.$langs->trans(
'MigrationPaymentMode').
"</b><br>\n";
3312 'old_id' => array(5, 8, 9, 10, 11),
3313 'new_id' => array(50, 51, 52, 53, 54),
3314 'code' => array(
'VAD',
'TRA',
'LCR',
'FAC',
'PRO'),
3315 'tables' => array(
'commande_fournisseur',
'commande',
'facture_rec',
'facture',
'propal')
3319 foreach ($elements[
'old_id'] as $key => $old_id) {
3324 $sqlSelect =
"SELECT id";
3325 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"c_paiement";
3326 $sqlSelect .=
" WHERE id = ".((int) $old_id);
3327 $sqlSelect .=
" AND code = '".$db->escape($elements[
'code'][$key]).
"'";
3329 $resql = $db->query($sqlSelect);
3331 $num = $db->num_rows(
$resql);
3337 $sqla =
"UPDATE ".MAIN_DB_PREFIX.
"paiement SET";
3338 $sqla .=
" fk_paiement = ".((int) $elements[
'new_id'][$key]);
3339 $sqla .=
" WHERE fk_paiement = ".((int) $old_id);
3340 $sqla .=
" AND fk_paiement IN (SELECT id FROM ".MAIN_DB_PREFIX.
"c_paiement WHERE id = ".((int) $old_id).
" AND code = '".$db->escape($elements[
'code'][$key]).
"')";
3341 $resqla = $db->query($sqla);
3343 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"c_paiement SET";
3344 $sql .=
" id = ".((int) $elements[
'new_id'][$key]);
3345 $sql .=
" WHERE id = ".((int) $old_id);
3346 $sql .=
" AND code = '".$db->escape($elements[
'code'][$key]).
"'";
3347 $resql = $db->query($sql);
3350 foreach ($elements[
'tables'] as $table) {
3351 $sql =
"UPDATE ".MAIN_DB_PREFIX.$table.
" SET ";
3352 $sql .=
"fk_mode_reglement = ".((int) $elements[
'new_id'][$key]);
3353 $sql .=
" WHERE fk_mode_reglement = ".((int) $old_id);
3355 $resql = $db->query($sql);
3378 print $langs->trans(
'AlreadyDone').
"<br>\n";
3396 $result = $db->DDLDescTable(MAIN_DB_PREFIX.
"categorie_association");
3398 $obj = $db->fetch_object($result);
3402 $sql =
"SELECT fk_categorie_mere, fk_categorie_fille";
3403 $sql .=
" FROM ".MAIN_DB_PREFIX.
"categorie_association";
3405 $resql = $db->query($sql);
3407 $num = $db->num_rows(
$resql);
3408 while ($obj = $db->fetch_object(
$resql)) {
3409 if (!isset($filles[$obj->fk_categorie_fille])) {
3410 if ($obj->fk_categorie_mere != $obj->fk_categorie_fille) {
3411 $filles[$obj->fk_categorie_fille] = 1;
3412 $couples[$obj->fk_categorie_mere.
'_'.$obj->fk_categorie_fille] = array(
'mere'=>$obj->fk_categorie_mere,
'fille'=>$obj->fk_categorie_fille);
3420 if (count($couples) > 0 && $num > count($couples)) {
3426 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"categorie_association";
3428 $resqld = $db->query($sql);
3431 foreach ($couples as $key => $val) {
3432 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"categorie_association(fk_categorie_mere,fk_categorie_fille)";
3433 $sql .=
" VALUES(".((int) $val[
'mere']).
", ".((int) $val[
'fille']).
")";
3435 $resqli = $db->query($sql);
3443 print
'<tr><td>'.$langs->trans(
"MigrationCategorieAssociation").
'</td>';
3444 print
'<td class="right">'.$langs->trans(
"RemoveDuplicates").
' '.$langs->trans(
"Success").
' ('.$num.
'=>'.count($couples).
')</td></tr>';
3447 print
'<tr><td>'.$langs->trans(
"MigrationCategorieAssociation").
'</td>';
3448 print
'<td class="right">'.$langs->trans(
"RemoveDuplicates").
' '.$langs->trans(
"Failed").
'</td></tr>';
3453 print
'<tr><td>'.$langs->trans(
"Error").
'</td>';
3454 print
'<td class="right"><div class="error">'.$db->lasterror().
'</div></td></tr>';
3471 print
'<tr><td colspan="4">';
3474 print
'<b>'.$langs->trans(
'MigrationCategorieAssociation').
"</b><br>\n";
3478 if ($db->DDLInfoTable(MAIN_DB_PREFIX.
"categorie_association")) {
3483 $sqlSelect =
"SELECT fk_categorie_mere, fk_categorie_fille";
3484 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"categorie_association";
3486 $resql = $db->query($sqlSelect);
3489 $num = $db->num_rows(
$resql);
3493 $obj = $db->fetch_object(
$resql);
3495 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"categorie SET ";
3496 $sqlUpdate .=
"fk_parent = ".((int) $obj->fk_categorie_mere);
3497 $sqlUpdate .=
" WHERE rowid = ".((int) $obj->fk_categorie_fille);
3499 $result = $db->query($sqlUpdate);
3508 print $langs->trans(
'AlreadyDone').
"<br>\n";
3521 print $langs->trans(
'AlreadyDone').
"<br>\n";
3537 print
'<tr><td colspan="4">';
3540 print
'<b>'.$langs->trans(
'MigrationEvents').
"</b><br>\n";
3548 $sqlSelect =
"SELECT a.id, a.fk_user_action";
3549 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"actioncomm as a";
3550 $sqlSelect .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"actioncomm_resources as ar ON ar.fk_actioncomm = a.id AND ar.element_type = 'user' AND ar.fk_element = a.fk_user_action";
3551 $sqlSelect .=
" WHERE fk_user_action > 0 AND fk_user_action NOT IN (SELECT fk_element FROM ".MAIN_DB_PREFIX.
"actioncomm_resources as ar WHERE ar.fk_actioncomm = a.id AND ar.element_type = 'user')";
3552 $sqlSelect .=
" ORDER BY a.id";
3555 $resql = $db->query($sqlSelect);
3558 $num = $db->num_rows(
$resql);
3562 $obj = $db->fetch_object(
$resql);
3564 $sqlUpdate =
"INSERT INTO ".MAIN_DB_PREFIX.
"actioncomm_resources(fk_actioncomm, element_type, fk_element) ";
3565 $sqlUpdate .=
"VALUES(".((int) $obj->id).
", 'user', ".((int) $obj->fk_user_action).
")";
3567 $result = $db->query($sqlUpdate);
3576 print $langs->trans(
'AlreadyDone').
"<br>\n";
3603 print
'<tr><td colspan="4">';
3606 print
'<b>'.$langs->trans(
'MigrationEventsContact').
"</b><br>\n";
3614 $sqlSelect =
"SELECT a.id, a.fk_contact";
3615 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"actioncomm as a";
3616 $sqlSelect .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"actioncomm_resources as ar ON ar.fk_actioncomm = a.id AND ar.element_type = 'socpeople' AND ar.fk_element = a.fk_contact";
3617 $sqlSelect .=
" WHERE fk_contact > 0 AND fk_contact NOT IN (SELECT fk_element FROM ".MAIN_DB_PREFIX.
"actioncomm_resources as ar WHERE ar.fk_actioncomm = a.id AND ar.element_type = 'socpeople')";
3618 $sqlSelect .=
" ORDER BY a.id";
3621 $resql = $db->query($sqlSelect);
3624 $num = $db->num_rows(
$resql);
3628 $obj = $db->fetch_object(
$resql);
3630 $sqlUpdate =
"INSERT INTO ".MAIN_DB_PREFIX.
"actioncomm_resources(fk_actioncomm, element_type, fk_element) ";
3631 $sqlUpdate .=
"VALUES(".((int) $obj->id).
", 'socpeople', ".((int) $obj->fk_contact).
")";
3633 $result = $db->query($sqlUpdate);
3642 print $langs->trans(
'AlreadyDone').
"<br>\n";
3672 require_once DOL_DOCUMENT_ROOT.
'/blockedlog/class/blockedlog.class.php';
3674 print
'<tr><td colspan="4">';
3677 print
'<b>'.$langs->trans(
'MigrationResetBlockedLog').
"</b><br>\n";
3685 $sqlSelect =
"SELECT DISTINCT entity";
3686 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"blockedlog";
3690 $resql = $db->query($sqlSelect);
3693 $num = $db->num_rows(
$resql);
3697 $obj = $db->fetch_object(
$resql);
3699 print
'Process entity '.$obj->entity;
3701 $sqlSearch =
"SELECT count(rowid) as nb FROM ".MAIN_DB_PREFIX.
"blockedlog WHERE action = 'MODULE_SET' and entity = ".((int) $obj->entity);
3702 $resqlSearch = $db->query($sqlSearch);
3704 $objSearch = $db->fetch_object($resqlSearch);
3706 if ($objSearch && $objSearch->nb == 0) {
3707 print
' - Record for entity must be reset...';
3709 $sqlUpdate =
"DELETE FROM ".MAIN_DB_PREFIX.
"blockedlog";
3710 $sqlUpdate .=
" WHERE entity = ".((int) $obj->entity);
3711 $resqlUpdate = $db->query($sqlUpdate);
3712 if (!$resqlUpdate) {
3717 $object =
new stdClass();
3719 $object->element =
'module';
3720 $object->ref =
'systemevent';
3721 $object->entity = $obj->entity;
3725 $b->setObjectData($object,
'MODULE_SET', 0);
3727 $res = $b->create($user);
3733 print
' - '.$langs->trans(
'AlreadyInV7').
'<br>';
3742 print $langs->trans(
'NothingToDo').
"<br>\n";
3769 print
'<tr><td colspan="4">';
3772 print
'<b>'.$langs->trans(
'MigrationRemiseEntity').
"</b><br>\n";
3780 $sqlSelect =
"SELECT sr.rowid, s.entity";
3781 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"societe_remise as sr, ".MAIN_DB_PREFIX.
"societe as s";
3782 $sqlSelect .=
" WHERE sr.fk_soc = s.rowid and sr.entity != s.entity";
3786 $resql = $db->query($sqlSelect);
3789 $num = $db->num_rows(
$resql);
3793 $obj = $db->fetch_object(
$resql);
3795 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"societe_remise SET";
3796 $sqlUpdate .=
" entity = ".$obj->entity;
3797 $sqlUpdate .=
" WHERE rowid = ".((int) $obj->rowid);
3799 $result = $db->query($sqlUpdate);
3809 print $langs->trans(
'AlreadyDone').
"<br>\n";
3835 print
'<tr><td colspan="4">';
3838 print
'<b>'.$langs->trans(
'MigrationRemiseExceptEntity').
"</b><br>\n";
3846 $sqlSelect =
"SELECT sr.rowid, sr.fk_soc, sr.fk_facture_source, sr.fk_facture, sr.fk_facture_line";
3847 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"societe_remise_except as sr";
3850 $resql = $db->query($sqlSelect);
3853 $num = $db->num_rows(
$resql);
3857 $obj = $db->fetch_object(
$resql);
3859 if (!empty($obj->fk_facture_source) || !empty($obj->fk_facture)) {
3860 $fk_facture = (!empty($obj->fk_facture_source) ? $obj->fk_facture_source : $obj->fk_facture);
3862 $sqlSelect2 =
"SELECT f.entity";
3863 $sqlSelect2 .=
" FROM ".MAIN_DB_PREFIX.
"facture as f";
3864 $sqlSelect2 .=
" WHERE f.rowid = ".((int) $fk_facture);
3865 } elseif (!empty($obj->fk_facture_line)) {
3866 $sqlSelect2 =
"SELECT f.entity";
3867 $sqlSelect2 .=
" FROM ".MAIN_DB_PREFIX.
"facture as f, ".MAIN_DB_PREFIX.
"facturedet as fd";
3868 $sqlSelect2 .=
" WHERE fd.rowid = ".((int) $obj->fk_facture_line);
3869 $sqlSelect2 .=
" AND fd.fk_facture = f.rowid";
3871 $sqlSelect2 =
"SELECT s.entity";
3872 $sqlSelect2 .=
" FROM ".MAIN_DB_PREFIX.
"societe as s";
3873 $sqlSelect2 .=
" WHERE s.rowid = ".((int) $obj->fk_soc);
3876 $resql2 = $db->query($sqlSelect2);
3878 if ($db->num_rows($resql2) > 0) {
3879 $obj2 = $db->fetch_object($resql2);
3881 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"societe_remise_except SET";
3882 $sqlUpdate .=
" entity = ".((int) $obj2->entity);
3883 $sqlUpdate .=
" WHERE rowid = ".((int) $obj->rowid);
3885 $result = $db->query($sqlUpdate);
3900 print $langs->trans(
'AlreadyDone').
"<br>\n";
3927 print
'<tr><td colspan="4">';
3929 print
'<b>'.$langs->trans(
'MigrationUserRightsEntity').
"</b><br>\n";
3937 $sqlSelect =
"SELECT u.rowid, u.entity";
3938 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"user as u";
3939 $sqlSelect .=
" WHERE u.entity > 1";
3942 $resql = $db->query($sqlSelect);
3945 $num = $db->num_rows(
$resql);
3949 $obj = $db->fetch_object(
$resql);
3951 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"user_rights SET";
3952 $sqlUpdate .=
" entity = ".((int) $obj->entity);
3953 $sqlUpdate .=
" WHERE fk_user = ".((int) $obj->rowid);
3955 $result = $db->query($sqlUpdate);
3965 print $langs->trans(
'AlreadyDone').
"<br>\n";
3992 print
'<tr><td colspan="4">';
3994 print
'<b>'.$langs->trans(
'MigrationUserGroupRightsEntity').
"</b><br>\n";
4002 $sqlSelect =
"SELECT u.rowid, u.entity";
4003 $sqlSelect .=
" FROM ".MAIN_DB_PREFIX.
"usergroup as u";
4004 $sqlSelect .=
" WHERE u.entity > 1";
4007 $resql = $db->query($sqlSelect);
4010 $num = $db->num_rows(
$resql);
4014 $obj = $db->fetch_object(
$resql);
4016 $sqlUpdate =
"UPDATE ".MAIN_DB_PREFIX.
"usergroup_rights SET";
4017 $sqlUpdate .=
" entity = ".((int) $obj->entity);
4018 $sqlUpdate .=
" WHERE fk_usergroup = ".((int) $obj->rowid);
4020 $result = $db->query($sqlUpdate);
4030 print $langs->trans(
'AlreadyDone').
"<br>\n";
4061 if (is_dir(DOL_DATA_ROOT.$oldname) && !file_exists(DOL_DATA_ROOT.$newname)) {
4062 dolibarr_install_syslog(
"upgrade2::migrate_rename_directories move ".DOL_DATA_ROOT.$oldname.
' into '.DOL_DATA_ROOT.$newname);
4063 @rename(DOL_DATA_ROOT.$oldname, DOL_DATA_ROOT.$newname);
4083 $filetodeletearray = array(
4084 '/core/triggers/interface_demo.class.php',
4085 '/core/menus/barre_left/default.php',
4086 '/core/menus/barre_top/default.php',
4087 '/core/modules/modComptabiliteExpert.class.php',
4088 '/core/modules/modCommercial.class.php',
4089 '/core/modules/modProduit.class.php',
4090 '/core/modules/modSkype.class.php',
4091 '/phenix/inc/triggers/interface_modPhenix_Phenixsynchro.class.php',
4092 '/webcalendar/inc/triggers/interface_modWebcalendar_webcalsynchro.class.php',
4093 '/core/triggers/interface_modWebcalendar_Webcalsynchro.class.php',
4094 '/core/triggers/interface_modCommande_Ecotax.class.php',
4095 '/core/triggers/interface_modCommande_fraisport.class.php',
4096 '/core/triggers/interface_modPropale_PropalWorkflow.class.php',
4097 '/core/menus/smartphone/iphone.lib.php',
4098 '/core/menus/smartphone/iphone_backoffice.php',
4099 '/core/menus/smartphone/iphone_frontoffice.php',
4100 '/core/menus/standard/auguria_backoffice.php',
4101 '/core/menus/standard/auguria_frontoffice.php',
4102 '/core/menus/standard/eldy_backoffice.php',
4103 '/core/menus/standard/eldy_frontoffice.php',
4104 '/core/modules/mailings/contacts2.modules.php',
4105 '/core/modules/mailings/contacts3.modules.php',
4106 '/core/modules/mailings/contacts4.modules.php',
4107 '/core/modules/mailings/framboise.modules.php',
4108 '/core/modules/mailings/dolibarr_services_expired.modules.php',
4109 '/core/modules/mailings/peche.modules.php',
4110 '/core/modules/mailings/poire.modules.php',
4111 '/core/modules/mailings/kiwi.modules.php',
4112 '/core/modules/facture/pdf_crabe.modules.php',
4113 '/core/modules/facture/pdf_oursin.modules.php',
4114 '/core/modules/export/export_excel.modules.php',
4115 '/core/modules/export/export_excel2007new.modules.php',
4116 '/core/boxes/box_members.php',
4118 '/api/class/api_generic.class.php',
4119 '/categories/class/api_category.class.php',
4120 '/categories/class/api_deprecated_category.class.php',
4121 '/compta/facture/class/api_invoice.class.php',
4122 '/commande/class/api_commande.class.php',
4123 '/user/class/api_user.class.php',
4124 '/product/class/api_product.class.php',
4125 '/societe/class/api_contact.class.php',
4126 '/societe/class/api_thirdparty.class.php',
4127 '/support/online.php',
4128 '/takepos/class/actions_takepos.class.php',
4130 '/install/mysql/tables/llx_c_ticketsup_category.key.sql',
4131 '/install/mysql/tables/llx_c_ticketsup_category.sql',
4132 '/install/mysql/tables/llx_c_ticketsup_severity.key.sql',
4133 '/install/mysql/tables/llx_c_ticketsup_severity.sql',
4134 '/install/mysql/tables/llx_c_ticketsup_type.key.sql',
4135 '/install/mysql/tables/llx_c_ticketsup_type.sql'
4138 foreach ($filetodeletearray as $filetodelete) {
4141 if (file_exists(DOL_DOCUMENT_ROOT.$filetodelete)) {
4142 $result =
dol_delete_file(DOL_DOCUMENT_ROOT.$filetodelete, 0, 0, 0,
null,
true,
false);
4144 $langs->load(
"errors");
4145 print
'<div class="error">'.$langs->trans(
"Error").
': '.$langs->trans(
"ErrorFailToDeleteFile", DOL_DOCUMENT_ROOT.$filetodelete);
4146 print
' '.$langs->trans(
"RemoveItManuallyAndPressF5ToContinue").
'</div>';
4170 $filetodeletearray = array(
4171 DOL_DOCUMENT_ROOT.
'/core/modules/facture/terre',
4172 DOL_DOCUMENT_ROOT.
'/core/modules/facture/mercure',
4176 if (!empty($_SERVER[
"WINDIR"])) {
4177 $filetodeletearray[] = DOL_DOCUMENT_ROOT.
'/includes/phpoffice/PhpSpreadsheet';
4180 foreach ($filetodeletearray as $filetodelete) {
4182 if (file_exists($filetodelete)) {
4186 $langs->load(
"errors");
4187 print
'<div class="error">'.$langs->trans(
"Error").
': '.$langs->trans(
"ErrorFailToDeleteDir", $filetodelete);
4188 print
' '.$langs->trans(
"RemoveItManuallyAndPressF5ToContinue").
'</div>';
4209 if (count($listofmodule) == 0) {
4213 dolibarr_install_syslog(
"upgrade2::migrate_reload_modules force=".$force.
", listofmodule=".join(
',', array_keys($listofmodule)));
4215 foreach ($listofmodule as $moduletoreload => $reloadmode) {
4216 if (empty($moduletoreload) || (empty($conf->global->$moduletoreload) && !$force)) {
4222 if ($moduletoreload ==
'MAIN_MODULE_AGENDA') {
4224 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modAgenda.class.php';
4227 $mod->remove(
'noboxes');
4228 $mod->init($reloadmode);
4230 } elseif ($moduletoreload ==
'MAIN_MODULE_API') {
4232 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modApi.class.php';
4236 $mod->init($reloadmode);
4238 } elseif ($moduletoreload ==
'MAIN_MODULE_BARCODE') {
4240 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modBarcode.class.php';
4243 $mod->remove(
'noboxes');
4244 $mod->init($reloadmode);
4246 } elseif ($moduletoreload ==
'MAIN_MODULE_BLOCKEDLOG') {
4248 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modBlockedLog.class.php';
4252 $mod->delete_menus();
4253 $mod->insert_menus();
4255 } elseif ($moduletoreload ==
'MAIN_MODULE_CRON') {
4257 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modCron.class.php';
4260 $mod->remove(
'noboxes');
4261 $mod->init($reloadmode);
4263 } elseif ($moduletoreload ==
'MAIN_MODULE_EXTERNALSITE') {
4265 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modExternalSite.class.php';
4268 $mod->remove(
'noboxes');
4269 $mod->init($reloadmode);
4271 } elseif ($moduletoreload ==
'MAIN_MODULE_SOCIETE') {
4273 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modSociete.class.php';
4276 $mod->remove(
'noboxes');
4277 $mod->init($reloadmode);
4279 } elseif ($moduletoreload ==
'MAIN_MODULE_PRODUIT') {
4281 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modProduct.class.php';
4285 $mod->init($reloadmode);
4287 } elseif ($moduletoreload ==
'MAIN_MODULE_SERVICE') {
4289 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modService.class.php';
4293 $mod->init($reloadmode);
4295 } elseif ($moduletoreload ==
'MAIN_MODULE_COMMANDE') {
4297 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modCommande.class.php';
4301 $mod->init($reloadmode);
4303 } elseif ($moduletoreload ==
'MAIN_MODULE_FACTURE') {
4305 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modFacture.class.php';
4309 $mod->init($reloadmode);
4311 } elseif ($moduletoreload ==
'MAIN_MODULE_FOURNISSEUR') {
4313 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modFournisseur.class.php';
4317 $mod->init($reloadmode);
4319 } elseif ($moduletoreload ==
'MAIN_MODULE_HOLIDAY') {
4321 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modHoliday.class.php';
4324 $mod->remove(
'noboxes');
4325 $mod->init($reloadmode);
4327 } elseif ($moduletoreload ==
'MAIN_MODULE_DEPLACEMENT') {
4329 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modDeplacement.class.php';
4333 $mod->init($reloadmode);
4335 } elseif ($moduletoreload ==
'MAIN_MODULE_EXPENSEREPORT') {
4337 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modExpenseReport.class.php';
4341 $mod->init($reloadmode);
4343 } elseif ($moduletoreload ==
'MAIN_MODULE_DON') {
4345 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modDon.class.php';
4349 $mod->init($reloadmode);
4351 } elseif ($moduletoreload ==
'MAIN_MODULE_ECM') {
4353 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modECM.class.php';
4356 $mod->remove(
'noboxes');
4357 $mod->init($reloadmode);
4359 } elseif ($moduletoreload ==
'MAIN_MODULE_KNOWLEDGEMANAGEMENT') {
4361 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modKnowledgeManagement.class.php';
4364 $mod->remove(
'noboxes');
4365 $mod->init($reloadmode);
4367 } elseif ($moduletoreload ==
'MAIN_MODULE_EVENTORGANIZATION') {
4369 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modEventOrganization.class.php';
4372 $mod->remove(
'noboxes');
4373 $mod->init($reloadmode);
4375 } elseif ($moduletoreload ==
'MAIN_MODULE_PAYBOX') {
4377 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modPaybox.class.php';
4379 $mod =
new modPaybox($db);
4380 $mod->remove(
'noboxes');
4381 $mod->init($reloadmode);
4383 } elseif ($moduletoreload ==
'MAIN_MODULE_SUPPLIERPROPOSAL') {
4385 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modSupplierProposal.class.php';
4388 $mod->remove(
'noboxes');
4389 $mod->init($reloadmode);
4391 } elseif ($moduletoreload ==
'MAIN_MODULE_OPENSURVEY') {
4393 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modOpenSurvey.class.php';
4396 $mod->remove(
'noboxes');
4397 $mod->init($reloadmode);
4399 } elseif ($moduletoreload ==
'MAIN_MODULE_PRODUCTBATCH') {
4401 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modProductBatch.class.php';
4404 $mod->remove(
'noboxes');
4405 $mod->init($reloadmode);
4407 } elseif ($moduletoreload ==
'MAIN_MODULE_TAKEPOS') {
4409 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/modTakePos.class.php';
4412 $mod->remove(
'noboxes');
4413 $mod->init($reloadmode);
4417 $tmp = preg_match(
'/MAIN_MODULE_([a-zA-Z0-9]+)/', $moduletoreload, $reg);
4418 if (!empty($reg[1])) {
4419 if (strtoupper($moduletoreload) == $moduletoreload) {
4420 $moduletoreloadshort = ucfirst(strtolower($reg[1]));
4423 $moduletoreloadshort = $reg[1];
4426 dolibarr_install_syslog(
"upgrade2::migrate_reload_modules Reactivate module ".$moduletoreloadshort.
" with mode ".$reloadmode);
4427 $res = @include_once DOL_DOCUMENT_ROOT.
'/core/modules/mod'.$moduletoreloadshort.
'.class.php';
4429 $classname =
'mod'.$moduletoreloadshort;
4430 $mod =
new $classname($db);
4433 $mod->delete_menus();
4434 $mod->init($reloadmode);
4436 dolibarr_install_syslog(
'Failed to include '.DOL_DOCUMENT_ROOT.
'/core/modules/mod'.$moduletoreloadshort.
'.class.php');
4438 $res = @
dol_include_once(strtolower($moduletoreloadshort).
'/core/modules/mod'.$moduletoreloadshort.
'.class.php');
4440 $classname =
'mod'.$moduletoreloadshort;
4441 $mod =
new $classname($db);
4442 $mod->init($reloadmode);
4444 dolibarr_install_syslog(
'Failed to include '.strtolower($moduletoreloadshort).
'/core/modules/mod'.$moduletoreloadshort.
'.class.php', LOG_ERR);
4445 print
"Error, can't find module with name ".$moduletoreload.
"\n";
4451 print
"Error, can't find module with name ".$moduletoreload.
"\n";
4456 if (!empty($mod) && is_object($mod)) {
4457 print
'<tr class="trforrunsql"><td colspan="4">';
4458 print
'<b>'.$langs->trans(
'Upgrade').
'</b>: ';
4459 print $langs->trans(
'MigrationReloadModule').
' '.$mod->getName();
4460 print
"<!-- (".$reloadmode.
") -->";
4485 $listofmenuhandler = array();
4486 if ($conf->global->MAIN_MENU_STANDARD ==
'auguria_menu' || $conf->global->MAIN_MENU_SMARTPHONE ==
'auguria_menu'
4487 || $conf->global->MAIN_MENUFRONT_STANDARD ==
'auguria_menu' || $conf->global->MAIN_MENUFRONT_SMARTPHONE ==
'auguria_menu') {
4488 $listofmenuhandler[
'auguria'] = 1;
4491 foreach ($listofmenuhandler as $key => $val) {
4492 print
'<tr class="trforrunsql"><td colspan="4">';
4496 print
'<b>'.$langs->trans(
'Upgrade').
'</b>: '.$langs->trans(
'MenuHandler').
" ".$key.
"<br>\n";
4499 $dir = DOL_DOCUMENT_ROOT.
"/core/menus/";
4500 $file =
'init_menu_'.$key.
'.sql';
4501 if (file_exists($dir.$file)) {
4502 $result =
run_sql($dir.$file, 1,
'', 1, $key);
4516 global $conf, $db, $langs, $user;
4518 print
'<tr><td colspan="4">';
4520 print
'<b>'.$langs->trans(
'MigrationUserPhotoPath').
"</b><br>\n";
4522 include_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
4523 $fuser =
new User($db);
4525 if (!is_object($user)) {
4529 $sql =
"SELECT rowid as uid from ".MAIN_DB_PREFIX.
"user";
4530 $resql = $db->query($sql);
4532 while ($obj = $db->fetch_object(
$resql)) {
4533 $fuser->fetch($obj->uid);
4535 $entity = (empty($fuser->entity) ? 1 : $fuser->entity);
4537 $dir = DOL_DATA_ROOT.
'/'.$entity.
'/users';
4539 $dir = $conf->user->multidir_output[$entity];
4544 $origin = $dir.
'/'.
get_exdir($fuser->id, 2, 0, 1, $fuser,
'user');
4545 $destin = $dir.
'/'.$fuser->id;
4553 $handle = opendir($origin_osencoded);
4554 if (is_resource($handle)) {
4555 while (($file = readdir($handle)) !==
false) {
4556 if ($file ==
'.' || $file ==
'..') {
4561 $thumbs = opendir($origin_osencoded.
'/'.$file);
4562 if (is_resource($thumbs)) {
4564 while (($thumb = readdir($thumbs)) !==
false) {
4566 if ($thumb ==
'.' || $thumb ==
'..') {
4572 dol_copy($origin.
'/'.$file.
'/'.$thumb, $destin.
'/'.$file.
'/'.$thumb, 0, 0);
4582 dol_copy($origin.
'/'.$file, $destin.
'/'.$file, 0, 0);
4603 global $conf, $db, $langs, $user;
4605 print
'<tr><td colspan="4">';
4607 print
'<b>'.$langs->trans(
'MigrationUserPhotoPath').
"</b><br>\n";
4609 include_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
4610 $fuser =
new User($db);
4612 if (!is_object($user)) {
4616 $sql =
"SELECT rowid as uid from ".MAIN_DB_PREFIX.
"user";
4617 $resql = $db->query($sql);
4619 while ($obj = $db->fetch_object(
$resql)) {
4620 $fuser->fetch($obj->uid);
4622 $entity = (empty($fuser->entity) ? 1 : $fuser->entity);
4624 $dir = DOL_DATA_ROOT.
'/'.$entity.
'/users';
4626 $dir = DOL_DATA_ROOT.
'/users';
4631 $origin = $dir.
'/'.$fuser->id;
4632 $destin = $dir.
'/'.$fuser->id.
'/photos';
4640 $handle = opendir($origin_osencoded);
4641 if (is_resource($handle)) {
4642 while (($file = readdir($handle)) !==
false) {
4643 if ($file ==
'.' || $file ==
'..' || $file ==
'photos') {
4646 if (!empty($fuser->photo) && ($file != $fuser->photo && $file !=
'thumbs')) {
4651 $thumbs = opendir($origin_osencoded.
'/'.$file);
4652 if (is_resource($thumbs)) {
4654 while (($thumb = readdir($thumbs)) !==
false) {
4656 if ($thumb ==
'.' || $thumb ==
'..') {
4662 dol_copy($origin.
'/'.$file.
'/'.$thumb, $destin.
'/'.$file.
'/'.$thumb, 0, 0);
4671 dol_copy($origin.
'/'.$file, $destin.
'/'.$file, 0, 0);
4708 print
'<tr><td colspan="4">';
4709 $sql =
'SELECT rowid, socialnetworks';
4710 $sql .=
', skype, twitter, facebook, linkedin, instagram, snapchat, googleplus, youtube, whatsapp FROM '.MAIN_DB_PREFIX.
'user WHERE';
4711 $sql .=
" skype IS NOT NULL OR skype <> ''";
4712 $sql .=
" OR twitter IS NOT NULL OR twitter <> ''";
4713 $sql .=
" OR facebook IS NOT NULL OR facebook <> ''";
4714 $sql .=
" OR linkedin IS NOT NULL OR linkedin <> ''";
4715 $sql .=
" OR instagram IS NOT NULL OR instagram <> ''";
4716 $sql .=
" OR snapchat IS NOT NULL OR snapchat <> ''";
4717 $sql .=
" OR googleplus IS NOT NULL OR googleplus <> ''";
4718 $sql .=
" OR youtube IS NOT NULL OR youtube <> ''";
4719 $sql .=
" OR whatsapp IS NOT NULL OR whatsapp <> ''";
4721 $resql = $db->query($sql);
4723 while ($obj = $db->fetch_object(
$resql)) {
4724 $arraysocialnetworks = array();
4725 if (!empty($obj->skype)) {
4726 $arraysocialnetworks[
'skype'] = $obj->skype;
4728 if (!empty($obj->twitter)) {
4729 $arraysocialnetworks[
'twitter'] = $obj->twitter;
4731 if (!empty($obj->facebook)) {
4732 $arraysocialnetworks[
'facebook'] = $obj->facebook;
4734 if (!empty($obj->linkedin)) {
4735 $arraysocialnetworks[
'linkedin'] = $obj->linkedin;
4737 if (!empty($obj->instagram)) {
4738 $arraysocialnetworks[
'instagram'] = $obj->instagram;
4740 if (!empty($obj->snapchat)) {
4741 $arraysocialnetworks[
'snapchat'] = $obj->snapchat;
4743 if (!empty($obj->googleplus)) {
4744 $arraysocialnetworks[
'googleplus'] = $obj->googleplus;
4746 if (!empty($obj->youtube)) {
4747 $arraysocialnetworks[
'youtube'] = $obj->youtube;
4749 if (!empty($obj->whatsapp)) {
4750 $arraysocialnetworks[
'whatsapp'] = $obj->whatsapp;
4752 if ($obj->socialnetworks ==
'' || is_null($obj->socialnetworks)) {
4753 $obj->socialnetworks =
'[]';
4755 $socialnetworks = array_merge($arraysocialnetworks, json_decode($obj->socialnetworks,
true));
4756 $sqlupd =
'UPDATE '.MAIN_DB_PREFIX.
"user SET socialnetworks='".$db->escape(json_encode($socialnetworks,
true)).
"'";
4757 $sqlupd .=
', skype=null';
4758 $sqlupd .=
', twitter=null';
4759 $sqlupd .=
', facebook=null';
4760 $sqlupd .=
', linkedin=null';
4761 $sqlupd .=
', instagram=null';
4762 $sqlupd .=
', snapchat=null';
4763 $sqlupd .=
', googleplus=null';
4764 $sqlupd .=
', youtube=null';
4765 $sqlupd .=
', whatsapp=null';
4766 $sqlupd .=
' WHERE rowid = '.((int) $obj->rowid);
4768 $resqlupd = $db->query($sqlupd);
4783 print
'<b>'.$langs->trans(
'MigrationFieldsSocialNetworks',
'Users').
"</b><br>\n";
4797 print
'<tr><td colspan="4">';
4800 print
'<tr><td colspan="4">';
4801 $sql =
'SELECT rowid, socialnetworks';
4802 $sql .=
', skype, twitter, facebook, linkedin, instagram, snapchat, googleplus, youtube, whatsapp FROM '.MAIN_DB_PREFIX.
'adherent WHERE ';
4803 $sql .=
" skype IS NOT NULL OR skype <> ''";
4804 $sql .=
" OR twitter IS NOT NULL OR twitter <> ''";
4805 $sql .=
" OR facebook IS NOT NULL OR facebook <> ''";
4806 $sql .=
" OR linkedin IS NOT NULL OR linkedin <> ''";
4807 $sql .=
" OR instagram IS NOT NULL OR instagram <> ''";
4808 $sql .=
" OR snapchat IS NOT NULL OR snapchat <> ''";
4809 $sql .=
" OR googleplus IS NOT NULL OR googleplus <> ''";
4810 $sql .=
" OR youtube IS NOT NULL OR youtube <> ''";
4811 $sql .=
" OR whatsapp IS NOT NULL OR whatsapp <> ''";
4813 $resql = $db->query($sql);
4815 while ($obj = $db->fetch_object(
$resql)) {
4816 $arraysocialnetworks = array();
4817 if (!empty($obj->skype)) {
4818 $arraysocialnetworks[
'skype'] = $obj->skype;
4820 if (!empty($obj->twitter)) {
4821 $arraysocialnetworks[
'twitter'] = $obj->twitter;
4823 if (!empty($obj->facebook)) {
4824 $arraysocialnetworks[
'facebook'] = $obj->facebook;
4826 if (!empty($obj->linkedin)) {
4827 $arraysocialnetworks[
'linkedin'] = $obj->linkedin;
4829 if (!empty($obj->instagram)) {
4830 $arraysocialnetworks[
'instagram'] = $obj->instagram;
4832 if (!empty($obj->snapchat)) {
4833 $arraysocialnetworks[
'snapchat'] = $obj->snapchat;
4835 if (!empty($obj->googleplus)) {
4836 $arraysocialnetworks[
'googleplus'] = $obj->googleplus;
4838 if (!empty($obj->youtube)) {
4839 $arraysocialnetworks[
'youtube'] = $obj->youtube;
4841 if (!empty($obj->whatsapp)) {
4842 $arraysocialnetworks[
'whatsapp'] = $obj->whatsapp;
4844 if ($obj->socialnetworks ==
'' || is_null($obj->socialnetworks)) {
4845 $obj->socialnetworks =
'[]';
4847 $socialnetworks = array_merge($arraysocialnetworks, json_decode($obj->socialnetworks,
true));
4848 $sqlupd =
'UPDATE '.MAIN_DB_PREFIX.
"adherent SET socialnetworks='".$db->escape(json_encode($socialnetworks,
true)).
"'";
4849 $sqlupd .=
', skype=null';
4850 $sqlupd .=
', twitter=null';
4851 $sqlupd .=
', facebook=null';
4852 $sqlupd .=
', linkedin=null';
4853 $sqlupd .=
', instagram=null';
4854 $sqlupd .=
', snapchat=null';
4855 $sqlupd .=
', googleplus=null';
4856 $sqlupd .=
', youtube=null';
4857 $sqlupd .=
', whatsapp=null';
4858 $sqlupd .=
' WHERE rowid = '.((int) $obj->rowid);
4860 $resqlupd = $db->query($sqlupd);
4875 print
'<b>'.$langs->trans(
'MigrationFieldsSocialNetworks',
'Members').
"</b><br>\n";
4891 print
'<tr><td colspan="4">';
4892 $sql =
'SELECT rowid, socialnetworks';
4893 $sql .=
', jabberid, skype, twitter, facebook, linkedin, instagram, snapchat, googleplus, youtube, whatsapp FROM '.MAIN_DB_PREFIX.
'socpeople WHERE';
4894 $sql .=
" jabberid IS NOT NULL OR jabberid <> ''";
4895 $sql .=
" OR skype IS NOT NULL OR skype <> ''";
4896 $sql .=
" OR twitter IS NOT NULL OR twitter <> ''";
4897 $sql .=
" OR facebook IS NOT NULL OR facebook <> ''";
4898 $sql .=
" OR linkedin IS NOT NULL OR linkedin <> ''";
4899 $sql .=
" OR instagram IS NOT NULL OR instagram <> ''";
4900 $sql .=
" OR snapchat IS NOT NULL OR snapchat <> ''";
4901 $sql .=
" OR googleplus IS NOT NULL OR googleplus <> ''";
4902 $sql .=
" OR youtube IS NOT NULL OR youtube <> ''";
4903 $sql .=
" OR whatsapp IS NOT NULL OR whatsapp <> ''";
4905 $resql = $db->query($sql);
4907 while ($obj = $db->fetch_object(
$resql)) {
4908 $arraysocialnetworks = array();
4909 if (!empty($obj->jabberid)) {
4910 $arraysocialnetworks[
'jabber'] = $obj->jabberid;
4912 if (!empty($obj->skype)) {
4913 $arraysocialnetworks[
'skype'] = $obj->skype;
4915 if (!empty($obj->twitter)) {
4916 $arraysocialnetworks[
'twitter'] = $obj->twitter;
4918 if (!empty($obj->facebook)) {
4919 $arraysocialnetworks[
'facebook'] = $obj->facebook;
4921 if (!empty($obj->linkedin)) {
4922 $arraysocialnetworks[
'linkedin'] = $obj->linkedin;
4924 if (!empty($obj->instagram)) {
4925 $arraysocialnetworks[
'instagram'] = $obj->instagram;
4927 if (!empty($obj->snapchat)) {
4928 $arraysocialnetworks[
'snapchat'] = $obj->snapchat;
4930 if (!empty($obj->googleplus)) {
4931 $arraysocialnetworks[
'googleplus'] = $obj->googleplus;
4933 if (!empty($obj->youtube)) {
4934 $arraysocialnetworks[
'youtube'] = $obj->youtube;
4936 if (!empty($obj->whatsapp)) {
4937 $arraysocialnetworks[
'whatsapp'] = $obj->whatsapp;
4939 if ($obj->socialnetworks ==
'' || is_null($obj->socialnetworks)) {
4940 $obj->socialnetworks =
'[]';
4942 $socialnetworks = array_merge($arraysocialnetworks, json_decode($obj->socialnetworks,
true));
4943 $sqlupd =
'UPDATE '.MAIN_DB_PREFIX.
"socpeople SET socialnetworks='".$db->escape(json_encode($socialnetworks,
true)).
"'";
4944 $sqlupd .=
', jabberid=null';
4945 $sqlupd .=
', skype=null';
4946 $sqlupd .=
', twitter=null';
4947 $sqlupd .=
', facebook=null';
4948 $sqlupd .=
', linkedin=null';
4949 $sqlupd .=
', instagram=null';
4950 $sqlupd .=
', snapchat=null';
4951 $sqlupd .=
', googleplus=null';
4952 $sqlupd .=
', youtube=null';
4953 $sqlupd .=
', whatsapp=null';
4954 $sqlupd .=
' WHERE rowid = '.((int) $obj->rowid);
4956 $resqlupd = $db->query($sqlupd);
4971 print
'<b>'.$langs->trans(
'MigrationFieldsSocialNetworks',
'Contacts').
"</b><br>\n";
4987 print
'<tr><td colspan="4">';
4988 $sql =
'SELECT rowid, socialnetworks';
4989 $sql .=
', skype, twitter, facebook, linkedin, instagram, snapchat, googleplus, youtube, whatsapp FROM '.MAIN_DB_PREFIX.
'societe WHERE ';
4990 $sql .=
" skype IS NOT NULL OR skype <> ''";
4991 $sql .=
" OR twitter IS NOT NULL OR twitter <> ''";
4992 $sql .=
" OR facebook IS NOT NULL OR facebook <> ''";
4993 $sql .=
" OR linkedin IS NOT NULL OR linkedin <> ''";
4994 $sql .=
" OR instagram IS NOT NULL OR instagram <> ''";
4995 $sql .=
" OR snapchat IS NOT NULL OR snapchat <> ''";
4996 $sql .=
" OR googleplus IS NOT NULL OR googleplus <> ''";
4997 $sql .=
" OR youtube IS NOT NULL OR youtube <> ''";
4998 $sql .=
" OR whatsapp IS NOT NULL OR whatsapp <> ''";
5000 $resql = $db->query($sql);
5002 while ($obj = $db->fetch_object(
$resql)) {
5003 $arraysocialnetworks = array();
5004 if (!empty($obj->skype)) {
5005 $arraysocialnetworks[
'skype'] = $obj->skype;
5007 if (!empty($obj->twitter)) {
5008 $arraysocialnetworks[
'twitter'] = $obj->twitter;
5010 if (!empty($obj->facebook)) {
5011 $arraysocialnetworks[
'facebook'] = $obj->facebook;
5013 if (!empty($obj->linkedin)) {
5014 $arraysocialnetworks[
'linkedin'] = $obj->linkedin;
5016 if (!empty($obj->instagram)) {
5017 $arraysocialnetworks[
'instagram'] = $obj->instagram;
5019 if (!empty($obj->snapchat)) {
5020 $arraysocialnetworks[
'snapchat'] = $obj->snapchat;
5022 if (!empty($obj->googleplus)) {
5023 $arraysocialnetworks[
'googleplus'] = $obj->googleplus;
5025 if (!empty($obj->youtube)) {
5026 $arraysocialnetworks[
'youtube'] = $obj->youtube;
5028 if (!empty($obj->whatsapp)) {
5029 $arraysocialnetworks[
'whatsapp'] = $obj->whatsapp;
5031 if ($obj->socialnetworks ==
'' || is_null($obj->socialnetworks)) {
5032 $obj->socialnetworks =
'[]';
5034 $socialnetworks = array_merge($arraysocialnetworks, json_decode($obj->socialnetworks,
true));
5035 $sqlupd =
'UPDATE '.MAIN_DB_PREFIX.
"societe SET socialnetworks='".$db->escape(json_encode($socialnetworks,
true)).
"'";
5036 $sqlupd .=
', skype=null';
5037 $sqlupd .=
', twitter=null';
5038 $sqlupd .=
', facebook=null';
5039 $sqlupd .=
', linkedin=null';
5040 $sqlupd .=
', instagram=null';
5041 $sqlupd .=
', snapchat=null';
5042 $sqlupd .=
', googleplus=null';
5043 $sqlupd .=
', youtube=null';
5044 $sqlupd .=
', whatsapp=null';
5045 $sqlupd .=
' WHERE rowid = '.((int) $obj->rowid);
5047 $resqlupd = $db->query($sqlupd);
5062 print
'<b>'.$langs->trans(
'MigrationFieldsSocialNetworks',
'Thirdparties').
"</b><br>\n";
5082 print
'<tr class="trforrunsql"><td colspan="4">';
5083 $sql =
'SELECT rowid, field';
5084 if ($mode ==
'export') {
5087 $sql .=
' FROM '.MAIN_DB_PREFIX.$mode.
'_model WHERE';
5088 $sql .=
" type LIKE 'propale_%' OR type LIKE 'commande_%' OR type LIKE 'facture_%'";
5090 $resql = $db->query($sql);
5092 while ($obj = $db->fetch_object(
$resql)) {
5093 $oldfield = $obj->field;
5094 $newfield = str_replace(array(
',f.facnumber',
'f.facnumber,',
'f.total,',
'f.tva,'), array(
',f.ref',
'f.ref,',
'f.total_ht,',
'f.total_tva,'), $oldfield);
5096 if ($mode ==
'export') {
5097 $oldfilter = $obj->filter;
5098 $newfilter = str_replace(array(
'f.facnumber=',
'f.total=',
'f.tva='), array(
'f.ref=',
'f.total_ht=',
'f.total_tva='), $oldfilter);
5104 if ($oldfield != $newfield || $oldfilter != $newfilter) {
5105 $sqlupd =
'UPDATE '.MAIN_DB_PREFIX.$mode.
"_model SET field = '".$db->escape($newfield).
"'";
5106 if ($mode ==
'export') {
5107 $sqlupd .=
", filter = '".$db->escape($newfilter).
"'";
5109 $sqlupd .=
' WHERE rowid = '.((int) $obj->rowid);
5110 $resultstring .=
'<tr class="trforrunsql" style=""><td class="wordbreak" colspan="4">'.$sqlupd.
"</td></tr>\n";
5111 $resqlupd = $db->query($sqlupd);
5127 print
'<b>'.$langs->trans(
'MigrationImportOrExportProfiles', $mode).
"</b><br>\n";
5130 if ($resultstring) {
5131 print $resultstring;
5133 print
'<tr class="trforrunsql" style=""><td class="wordbreak" colspan="4">'.$langs->trans(
"NothingToDo").
"</td></tr>\n";