2005-10-28 22:26:33 +02:00
< ? php
2007-11-28 22:24:36 +01:00
/* Copyright ( C ) 2005 Marc Barilley / Ocebo < marc @ ocebo . com >
2009-04-29 20:02:50 +02:00
* Copyright ( C ) 2005 - 2009 Laurent Destailleur < eldy @ users . sourceforge . net >
2009-05-08 13:04:25 +02:00
* Copyright ( C ) 2005 - 2009 Regis Houssin < regis @ dolibarr . fr >
2005-10-28 22:26:33 +02:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
/**
2009-04-29 20:02:50 +02:00
* \file htdocs / install / upgrade2 . php
* \brief Effectue la migration de donnees diverses
* \version $Id $
*/
2005-10-28 22:26:33 +02:00
include_once ( './inc.php' );
2009-09-11 17:23:42 +02:00
if ( ! file_exists ( $conffile ))
{
print 'Error: Dolibarr config file was not found. This may means that Dolibarr is not installed yet. Please call the page "/install/install.php" instead of "/install/upgrade.php").' ;
}
require_once ( $conffile );
2006-08-06 01:55:10 +02:00
require_once ( $dolibarr_main_document_root . " /lib/databases/ " . $dolibarr_main_db_type . " .lib.php " );
2007-10-04 19:07:15 +02:00
require_once ( $dolibarr_main_document_root . '/facture.class.php' );
require_once ( $dolibarr_main_document_root . '/propal.class.php' );
require_once ( $dolibarr_main_document_root . '/contrat/contrat.class.php' );
require_once ( $dolibarr_main_document_root . '/commande/commande.class.php' );
2008-03-07 11:34:16 +01:00
require_once ( $dolibarr_main_document_root . '/fourn/fournisseur.commande.class.php' );
2007-10-04 19:07:15 +02:00
require_once ( $dolibarr_main_document_root . '/lib/price.lib.php' );
2008-04-20 06:24:00 +02:00
require_once ( $dolibarr_main_document_root . '/core/menubase.class.php' );
2005-10-28 22:26:33 +02:00
$grant_query = '' ;
$etape = 2 ;
$error = 0 ;
2007-11-28 22:24:36 +01:00
// Cette page peut etre longue. On augmente le delai autorise.
2005-10-28 22:26:33 +02:00
// Ne fonctionne que si on est pas en safe_mode.
$err = error_reporting ();
error_reporting ( 0 );
2009-04-29 20:02:50 +02:00
@ set_time_limit ( 120 );
2005-10-28 22:26:33 +02:00
error_reporting ( $err );
2006-01-04 17:22:38 +01:00
$setuplang = isset ( $_POST [ 'selectlang' ]) ? $_POST [ 'selectlang' ] : ( isset ( $_GET [ 'selectlang' ]) ? $_GET [ 'selectlang' ] : 'auto' );
2005-10-30 02:07:00 +01:00
$langs -> setDefaultLang ( $setuplang );
2005-10-28 22:26:33 +02:00
$langs -> load ( 'admin' );
$langs -> load ( 'install' );
$langs -> load ( " bills " );
$langs -> load ( " suppliers " );
2006-08-06 01:55:10 +02:00
if ( $dolibarr_main_db_type == 'mysql' ) $choix = 1 ;
if ( $dolibarr_main_db_type == 'mysqli' ) $choix = 1 ;
if ( $dolibarr_main_db_type == 'pgsql' ) $choix = 2 ;
2007-09-01 13:23:34 +02:00
if ( $dolibarr_main_db_type == 'mssql' ) $choix = 3 ;
2006-08-06 01:55:10 +02:00
2005-10-28 22:26:33 +02:00
2007-05-10 20:58:52 +02:00
dolibarr_install_syslog ( " upgrade2: Entering upgrade2.php page " );
2007-10-04 19:07:15 +02:00
if ( ! is_object ( $conf )) dolibarr_install_syslog ( " upgrade2: conf file not initialized " , LOG_ERR );
2006-06-17 16:13:49 +02:00
2009-08-14 02:30:43 +02:00
/*
* Actions
*/
pHeader ( '' , 'etape5' , $_REQUEST [ " action " ]);
2005-10-28 22:26:33 +02:00
2009-08-14 02:30:43 +02:00
if ( isset ( $_POST [ 'action' ]) && eregi ( 'upgrade' , $_POST [ " action " ]))
2005-10-28 22:26:33 +02:00
{
2007-05-26 18:45:00 +02:00
print '<h3>' . $langs -> trans ( 'DataMigration' ) . '</h3>' ;
2006-08-20 04:06:48 +02:00
2005-10-28 22:26:33 +02:00
print '<table cellspacing="0" cellpadding="1" border="0" width="100%">' ;
2008-05-21 05:53:52 +02:00
2009-08-21 21:09:20 +02:00
// If password is encoded, we decode it
2009-10-21 16:02:14 +02:00
if ( preg_match ( '/crypted:/i' , $dolibarr_main_db_pass ) || ! empty ( $dolibarr_main_db_encrypted_pass ))
2008-04-29 23:13:49 +02:00
{
require_once ( $dolibarr_main_document_root . " /lib/security.lib.php " );
2009-10-21 16:02:14 +02:00
if ( preg_match ( '/crypted:/i' , $dolibarr_main_db_pass ))
2009-08-21 21:09:20 +02:00
{
2009-10-21 16:02:14 +02:00
$dolibarr_main_db_pass = preg_replace ( '/crypted:/i' , '' , $dolibarr_main_db_pass );
2009-08-21 21:09:20 +02:00
$dolibarr_main_db_pass = dol_decode ( $dolibarr_main_db_pass );
$dolibarr_main_db_encrypted_pass = $dolibarr_main_db_pass ; // We need to set this as it is used to know the password was initially crypted
}
else $dolibarr_main_db_pass = dol_decode ( $dolibarr_main_db_encrypted_pass );
2008-04-29 23:13:49 +02:00
}
2005-10-28 22:26:33 +02:00
2007-10-04 19:07:15 +02:00
// $conf is already instancied inside inc.php
2005-10-28 22:26:33 +02:00
$conf -> db -> type = $dolibarr_main_db_type ;
$conf -> db -> host = $dolibarr_main_db_host ;
2008-03-10 23:38:43 +01:00
$conf -> db -> port = $dolibarr_main_db_port ;
2005-10-28 22:26:33 +02:00
$conf -> db -> name = $dolibarr_main_db_name ;
$conf -> db -> user = $dolibarr_main_db_user ;
$conf -> db -> pass = $dolibarr_main_db_pass ;
2008-05-19 20:13:35 +02:00
$db = new DoliDb ( $conf -> db -> type , $conf -> db -> host , $conf -> db -> user , $conf -> db -> pass , $conf -> db -> name , $conf -> db -> port );
2005-10-28 22:26:33 +02:00
if ( $db -> connected != 1 )
{
2008-05-19 16:31:54 +02:00
print '<tr><td colspan="4">' . $langs -> trans ( " ErrorFailedToConnectToDatabase " , $conf -> db -> name ) . '</td><td align="right">' . $langs -> trans ( 'Error' ) . '</td></tr>' ;
dolibarr_install_syslog ( 'upgrade2: Failed to connect to database : ' . $conf -> db -> name . ' on ' . $conf -> db -> host . ' for user ' . $conf -> db -> user , LOG_ERR );
2005-10-28 22:26:33 +02:00
$error ++ ;
}
if ( ! $error )
{
if ( $db -> database_selected == 1 )
{
2007-05-10 20:58:52 +02:00
dolibarr_install_syslog ( 'upgrade2: Database connection successfull : ' . $dolibarr_main_db_name );
2005-10-28 22:26:33 +02:00
}
else
{
$error ++ ;
}
}
2009-07-04 14:52:40 +02:00
if ( empty ( $dolibarr_main_db_encryption )) $dolibarr_main_db_encryption = 0 ;
$conf -> db -> dolibarr_main_db_encryption = $dolibarr_main_db_encryption ;
if ( empty ( $dolibarr_main_db_cryptkey )) $dolibarr_main_db_cryptkey = '' ;
$conf -> db -> dolibarr_main_db_cryptkey = $dolibarr_main_db_cryptkey ;
2009-08-04 13:32:22 +02:00
2006-06-03 01:20:36 +02:00
// Chargement config
2008-05-19 16:31:54 +02:00
if ( ! $error ) $conf -> setValues ( $db );
2006-06-03 01:20:36 +02:00
/*
* Pour utiliser d ' autres versions des librairies externes que les
2007-11-28 22:24:36 +01:00
* versions embarquees dans Dolibarr , definir les constantes adequates :
2006-06-03 01:20:36 +02:00
* Pour FPDF : FPDF_PATH
* Pour PHP_WriteExcel : PHP_WRITEEXCEL_PATH
* Pour MagpieRss : MAGPIERSS_PATH
2006-08-13 21:07:43 +02:00
* Pour NuSOAP : NUSOAP_PATH
* Pour TCPDF : TCPDF_PATH
2006-06-03 01:20:36 +02:00
*/
if ( ! defined ( 'FPDF_PATH' )) { define ( 'FPDF_PATH' , DOL_DOCUMENT_ROOT . '/includes/fpdf/fpdf/' ); }
if ( ! defined ( 'PHP_WRITEEXCEL_PATH' )) { define ( 'PHP_WRITEEXCEL_PATH' , DOL_DOCUMENT_ROOT . '/includes/php_writeexcel/' ); }
if ( ! defined ( 'MAGPIERSS_PATH' )) { define ( 'MAGPIERSS_PATH' , DOL_DOCUMENT_ROOT . '/includes/magpierss/' ); }
2006-08-13 21:07:43 +02:00
if ( ! defined ( 'NUSOAP_PATH' )) { define ( 'NUSOAP_PATH' , DOL_DOCUMENT_ROOT . '/includes/nusoap/lib/' ); }
// Les autres path
if ( ! defined ( 'FPDF_FONTPATH' )) { define ( 'FPDF_FONTPATH' , FPDF_PATH . 'font/' ); }
if ( ! defined ( 'MAGPIE_DIR' )) { define ( 'MAGPIE_DIR' , MAGPIERSS_PATH ); }
2006-08-20 01:00:53 +02:00
if ( ! defined ( 'MAGPIE_CACHE_DIR' )) { define ( 'MAGPIE_CACHE_DIR' , DOL_DATA_ROOT . '/rss/temp' ); }
2006-06-03 01:20:36 +02:00
2005-10-28 22:26:33 +02:00
/***************************************************************************************
2008-05-21 05:53:52 +02:00
*
* Migration des donnees
*
***************************************************************************************/
2005-10-28 22:26:33 +02:00
if ( ! $error )
{
2008-05-21 05:53:52 +02:00
2005-10-28 22:26:33 +02:00
$db -> begin ();
2008-05-21 05:53:52 +02:00
2008-01-17 22:25:46 +01:00
// Chaque action de migration doit renvoyer une ligne sur 4 colonnes avec
// dans la 1ere colonne, la description de l'action a faire
// dans la 4eme colonne, le texte 'OK' si fait ou 'AlreadyDone' si rien n'est fait ou 'Error'
2005-10-28 22:26:33 +02:00
2008-05-21 05:53:52 +02:00
2007-05-24 00:39:52 +02:00
// Script pour V2 -> V2.1
2008-01-17 22:25:46 +01:00
migrate_paiements ( $db , $langs , $conf );
2005-10-28 22:26:33 +02:00
2008-01-17 22:25:46 +01:00
migrate_contracts_det ( $db , $langs , $conf );
2005-10-28 22:26:33 +02:00
2008-01-17 22:25:46 +01:00
migrate_contracts_date1 ( $db , $langs , $conf );
2005-10-28 22:26:33 +02:00
2008-01-17 22:25:46 +01:00
migrate_contracts_date2 ( $db , $langs , $conf );
2005-10-28 22:26:33 +02:00
2008-01-17 22:25:46 +01:00
migrate_contracts_date3 ( $db , $langs , $conf );
2008-05-21 05:53:52 +02:00
2008-01-17 22:25:46 +01:00
migrate_contracts_open ( $db , $langs , $conf );
2005-10-28 22:26:33 +02:00
2008-01-17 22:25:46 +01:00
migrate_modeles ( $db , $langs , $conf );
2006-06-03 01:20:36 +02:00
2006-06-23 00:00:23 +02:00
migrate_price_propal ( $db , $langs , $conf );
2006-06-17 03:53:32 +02:00
2006-06-23 00:00:23 +02:00
migrate_price_commande ( $db , $langs , $conf );
2006-06-17 03:53:32 +02:00
2008-03-07 11:34:16 +01:00
migrate_price_commande_fournisseur ( $db , $langs , $conf );
2006-06-23 00:00:23 +02:00
migrate_price_facture ( $db , $langs , $conf );
2006-06-03 01:20:36 +02:00
2007-07-07 18:38:58 +02:00
migrate_price_contrat ( $db , $langs , $conf );
2008-01-17 22:25:46 +01:00
migrate_paiementfourn_facturefourn ( $db , $langs , $conf );
2006-08-20 04:06:48 +02:00
2008-05-21 05:53:52 +02:00
2007-05-24 00:39:52 +02:00
// Script pour V2.1 -> V2.2
2007-05-25 22:02:23 +02:00
migrate_paiements_orphelins_1 ( $db , $langs , $conf );
migrate_paiements_orphelins_2 ( $db , $langs , $conf );
2007-10-30 00:11:42 +01:00
migrate_links_transfert ( $db , $langs , $conf );
2008-05-21 05:53:52 +02:00
2007-11-11 23:26:11 +01:00
migrate_delete_old_files ( $db , $langs , $conf );
2008-05-21 05:53:52 +02:00
2008-01-17 11:27:59 +01:00
// Script pour V2.2 -> V2.4
migrate_commande_expedition ( $db , $langs , $conf );
2008-05-21 05:53:52 +02:00
2008-01-21 20:17:46 +01:00
migrate_commande_livraison ( $db , $langs , $conf );
2008-05-21 05:53:52 +02:00
2008-01-21 20:17:46 +01:00
migrate_detail_livraison ( $db , $langs , $conf );
2007-11-11 23:26:11 +01:00
2008-01-17 22:25:46 +01:00
migrate_module_menus ( $db , $langs , $conf );
2008-05-21 05:53:52 +02:00
2009-02-06 07:26:45 +01:00
// Script pour V2.5 -> V2.6
migrate_stocks ( $db , $langs , $conf );
2009-05-27 16:48:44 +02:00
// Script pour V2.6 -> V2.7
2009-05-27 15:39:09 +02:00
migrate_menus ( $db , $langs , $conf );
2009-08-04 13:32:22 +02:00
2009-07-08 16:50:16 +02:00
migrate_commande_deliveryaddress ( $db , $langs , $conf );
2009-05-27 15:39:09 +02:00
2009-08-22 05:09:52 +02:00
migrate_restore_missing_links ( $db , $langs , $conf );
2009-05-27 15:39:09 +02:00
2008-05-21 05:53:52 +02:00
// On commit dans tous les cas.
// La procedure etant concue pour pouvoir passer plusieurs fois quelquesoit la situation.
$db -> commit ();
$db -> close ();
2005-10-28 22:26:33 +02:00
}
print '</table>' ;
2008-05-21 05:53:52 +02:00
2005-10-28 22:26:33 +02:00
}
else
{
print '<div class="error">' . $langs -> trans ( 'ErrorWrongParameters' ) . '</div>' ;
$error ++ ;
}
2005-10-30 02:07:00 +01:00
pFooter ( $error , $setuplang );
2005-10-28 22:26:33 +02:00
/**
2007-05-24 00:39:52 +02:00
* Reporte liens vers une facture de paiements sur table de jointure ( lien n - n paiements factures )
2005-10-28 22:26:33 +02:00
*/
function migrate_paiements ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationPaymentsUpdate' ) . " </b><br> \n " ;
$sql = " SELECT p.rowid, p.fk_facture, p.amount " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " paiement as p " ;
$sql .= " WHERE p.fk_facture > 0 " ;
$resql = $db -> query ( $sql );
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_paiements sql= " . $sql );
2008-05-21 05:53:52 +02:00
if ( $resql )
{
$i = 0 ;
$row = array ();
$num = $db -> num_rows ( $resql );
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$row [ $i ][ 0 ] = $obj -> rowid ;
$row [ $i ][ 1 ] = $obj -> fk_facture ;
$row [ $i ][ 2 ] = $obj -> amount ;
$i ++ ;
}
}
else {
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
if ( $num )
{
print $langs -> trans ( 'MigrationPaymentsNumberToUpdate' , $num ) . " <br> \n " ;
if ( $db -> begin ())
{
$res = 0 ;
for ( $i = 0 ; $i < sizeof ( $row ) ; $i ++ )
{
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " paiement_facture (fk_facture, fk_paiement, amount) " ;
$sql .= " VALUES ( " . $row [ $i ][ 1 ] . " , " . $row [ $i ][ 0 ] . " , " . $row [ $i ][ 2 ] . " ) " ;
$res += $db -> query ( $sql );
$sql = " UPDATE " . MAIN_DB_PREFIX . " paiement SET fk_facture = 0 WHERE rowid = " . $row [ $i ][ 0 ];
$res += $db -> query ( $sql );
print $langs -> trans ( 'MigrationProcessPaymentUpdate' , $row [ $i ][ 0 ]) . " <br> \n " ;
}
}
if ( $res == ( 2 * sizeof ( $row )))
{
$db -> commit ();
print $langs -> trans ( 'MigrationSuccessfullUpdate' ) . " <br> " ;
}
else
{
$db -> rollback ();
print $langs -> trans ( 'MigrationUpdateFailed' ) . '<br>' ;
}
}
else
{
print $langs -> trans ( 'MigrationPaymentsNothingToUpdate' ) . " <br> \n " ;
}
2006-08-20 04:06:48 +02:00
print '</td></tr>' ;
2005-10-28 22:26:33 +02:00
}
2007-05-24 00:39:52 +02:00
/**
* Corrige paiement orphelins ( liens paumes suite a bugs )
* Pour verifier s ' il reste des orphelins :
* select * from llx_paiement as p left join llx_paiement_facture as pf on pf . fk_paiement = p . rowid WHERE pf . rowid IS NULL AND ( p . fk_facture = 0 OR p . fk_facture IS NULL )
*/
2007-05-25 22:02:23 +02:00
function migrate_paiements_orphelins_1 ( $db , $langs , $conf )
2007-05-24 00:39:52 +02:00
{
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationPaymentsUpdate' ) . " </b><br> \n " ;
2008-05-21 05:53:52 +02:00
2007-05-24 00:39:52 +02:00
// Tous les enregistrements qui sortent de cette requete devrait avoir un pere dans llx_paiement_facture
$sql = " SELECT distinct p.rowid, p.datec, p.amount as pamount, bu.fk_bank, b.amount as bamount, " ;
$sql .= " bu2.url_id as socid " ;
$sql .= " FROM ( " . MAIN_DB_PREFIX . " paiement as p, " . MAIN_DB_PREFIX . " bank_url as bu, " . MAIN_DB_PREFIX . " bank as b) " ;
$sql .= " left join llx_paiement_facture as pf on pf.fk_paiement=p.rowid " ;
$sql .= " left join llx_bank_url as bu2 on (bu.fk_bank=bu2.fk_bank AND bu2.type='company') " ;
$sql .= " WHERE pf.rowid IS NULL AND (p.rowid=bu.url_id AND bu.type='payment') AND bu.fk_bank = b.rowid " ;
$sql .= " AND b.rappro = 1 " ;
$sql .= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL) " ;
$resql = $db -> query ( $sql );
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_paiements_orphelins_1 sql= " . $sql );
2007-05-25 22:02:23 +02:00
$row = array ();
2008-05-21 05:53:52 +02:00
if ( $resql )
2007-05-24 00:39:52 +02:00
{
$i = $j = 0 ;
$num = $db -> num_rows ( $resql );
2008-05-21 05:53:52 +02:00
2007-05-24 00:39:52 +02:00
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
2007-05-25 22:02:23 +02:00
if ( $obj -> pamount == $obj -> bamount && $obj -> socid ) // Pour etre sur d'avoir bon cas
2007-05-24 00:39:52 +02:00
{
$row [ $j ][ 'paymentid' ] = $obj -> rowid ; // paymentid
$row [ $j ][ 'pamount' ] = $obj -> pamount ;
$row [ $j ][ 'fk_bank' ] = $obj -> fk_bank ;
$row [ $j ][ 'bamount' ] = $obj -> bamount ;
$row [ $j ][ 'socid' ] = $obj -> socid ;
$row [ $j ][ 'datec' ] = $obj -> datec ;
$j ++ ;
}
$i ++ ;
}
}
else {
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2007-05-24 00:39:52 +02:00
}
2008-05-21 05:53:52 +02:00
2007-05-25 22:02:23 +02:00
if ( sizeof ( $row ))
2007-05-24 00:39:52 +02:00
{
2007-05-26 18:45:00 +02:00
print $langs -> trans ( 'OrphelinsPaymentsDetectedByMethod' , 1 ) . ': ' . sizeof ( $row ) . " <br> \n " ;
2007-05-25 22:02:23 +02:00
$db -> begin ();
2008-05-21 05:53:52 +02:00
2007-05-25 22:02:23 +02:00
$res = 0 ;
for ( $i = 0 ; $i < sizeof ( $row ) ; $i ++ )
2007-05-24 00:39:52 +02:00
{
2007-10-03 22:05:29 +02:00
if ( $conf -> global -> MAIN_FEATURES_LEVEL == 2 ) 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>' ;
2007-05-25 22:02:23 +02:00
// On cherche facture sans lien paiement et du meme montant et pour meme societe.
$sql = " SELECT distinct f.rowid from " . MAIN_DB_PREFIX . " facture as f " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " paiement_facture as pf ON f.rowid = pf.fk_facture " ;
$sql .= " WHERE f.fk_statut in (2,3) AND fk_soc = " . $row [ $i ][ 'socid' ] . " AND total_ttc = " . $row [ $i ][ 'pamount' ];
$sql .= " AND pf.fk_facture IS NULL " ;
$sql .= " ORDER BY f.fk_statut " ;
//print $sql.'<br>';
$resql = $db -> query ( $sql );
if ( $resql )
2007-05-24 00:39:52 +02:00
{
2007-05-25 22:02:23 +02:00
$num = $db -> num_rows ( $resql );
//print 'Nb of invoice found for this amount and company :'.$num.'<br>';
2008-05-21 05:53:52 +02:00
if ( $num >= 1 )
2007-05-24 00:39:52 +02:00
{
2007-05-25 22:02:23 +02:00
$obj = $db -> fetch_object ( $resql );
$facid = $obj -> rowid ;
2009-01-20 00:46:46 +01:00
2007-05-25 22:02:23 +02:00
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " paiement_facture (fk_facture, fk_paiement, amount) " ;
$sql .= " VALUES ( " . $facid . " , " . $row [ $i ][ 'paymentid' ] . " , " . $row [ $i ][ 'pamount' ] . " ) " ;
$res += $db -> query ( $sql );
print $langs -> trans ( 'MigrationProcessPaymentUpdate' , 'facid=' . $facid . '-paymentid=' . $row [ $i ][ 'paymentid' ] . '-amount=' . $row [ $i ][ 'pamount' ]) . " <br> \n " ;
2007-05-24 00:39:52 +02:00
}
2007-05-25 22:02:23 +02:00
}
else
{
print 'ERROR' ;
}
2008-05-21 05:53:52 +02:00
}
2007-05-25 22:02:23 +02:00
if ( $res > 0 )
{
print $langs -> trans ( 'MigrationSuccessfullUpdate' ) . " <br> " ;
}
else
{
2007-05-26 18:45:00 +02:00
print $langs -> trans ( 'MigrationPaymentsNothingUpdatable' ) . " <br> \n " ;
2007-05-25 22:02:23 +02:00
}
2008-05-21 05:53:52 +02:00
2007-05-25 22:02:23 +02:00
$db -> commit ();
}
else
{
2007-05-26 18:45:00 +02:00
print $langs -> trans ( 'MigrationPaymentsNothingUpdatable' ) . " <br> \n " ;
2007-05-25 22:02:23 +02:00
}
print '</td></tr>' ;
}
/**
* Corrige paiement orphelins ( liens paumes suite a bugs )
* Pour verifier s ' il reste des orphelins :
* select * from llx_paiement as p left join llx_paiement_facture as pf on pf . fk_paiement = p . rowid WHERE pf . rowid IS NULL AND ( p . fk_facture = 0 OR p . fk_facture IS NULL )
*/
function migrate_paiements_orphelins_2 ( $db , $langs , $conf )
{
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationPaymentsUpdate' ) . " </b><br> \n " ;
2008-05-21 05:53:52 +02:00
2007-05-25 22:02:23 +02:00
// Tous les enregistrements qui sortent de cette requete devrait avoir un pere dans llx_paiement_facture
$sql = " SELECT distinct p.rowid, p.datec, p.amount as pamount, bu.fk_bank, b.amount as bamount, " ;
$sql .= " bu2.url_id as socid " ;
$sql .= " FROM ( " . MAIN_DB_PREFIX . " paiement as p, " . MAIN_DB_PREFIX . " bank_url as bu, " . MAIN_DB_PREFIX . " bank as b) " ;
$sql .= " left join llx_paiement_facture as pf on pf.fk_paiement=p.rowid " ;
$sql .= " left join llx_bank_url as bu2 on (bu.fk_bank=bu2.fk_bank AND bu2.type='company') " ;
$sql .= " WHERE pf.rowid IS NULL AND (p.fk_bank=bu.fk_bank AND bu.type='payment') AND bu.fk_bank = b.rowid " ;
$sql .= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL) " ;
$resql = $db -> query ( $sql );
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_paiements_orphelins_2 sql= " . $sql );
2007-05-25 22:02:23 +02:00
$row = array ();
2008-05-21 05:53:52 +02:00
if ( $resql )
2007-05-25 22:02:23 +02:00
{
$i = $j = 0 ;
$num = $db -> num_rows ( $resql );
2008-05-21 05:53:52 +02:00
2007-05-25 22:02:23 +02:00
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
if ( $obj -> pamount == $obj -> bamount && $obj -> socid ) // Pour etre sur d'avoir bon cas
{
$row [ $j ][ 'paymentid' ] = $obj -> rowid ; // paymentid
$row [ $j ][ 'pamount' ] = $obj -> pamount ;
$row [ $j ][ 'fk_bank' ] = $obj -> fk_bank ;
$row [ $j ][ 'bamount' ] = $obj -> bamount ;
$row [ $j ][ 'socid' ] = $obj -> socid ;
$row [ $j ][ 'datec' ] = $obj -> datec ;
$j ++ ;
}
$i ++ ;
2007-05-24 00:39:52 +02:00
}
2007-05-25 22:02:23 +02:00
}
else {
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2007-05-25 22:02:23 +02:00
}
2008-05-21 05:53:52 +02:00
2007-05-25 22:02:23 +02:00
if ( sizeof ( $row ))
{
2007-05-26 18:45:00 +02:00
print $langs -> trans ( 'OrphelinsPaymentsDetectedByMethod' , 2 ) . ': ' . sizeof ( $row ) . " <br> \n " ;
2007-05-25 22:02:23 +02:00
$db -> begin ();
$res = 0 ;
for ( $i = 0 ; $i < sizeof ( $row ) ; $i ++ )
{
2007-10-03 22:05:29 +02:00
if ( $conf -> global -> MAIN_FEATURES_LEVEL == 2 ) print '* ' . $row [ $i ][ 'datec' ] . ' paymentid=' . $row [ $i ][ 'paymentid' ] . ' ' . $row [ $i ][ 'pamount' ] . ' fk_bank=' . $row [ $i ][ 'fk_bank' ] . ' ' . $row [ $i ][ 'bamount' ] . ' socid=' . $row [ $i ][ 'socid' ] . '<br>' ;
2007-05-25 22:02:23 +02:00
// On cherche facture sans lien paiement et du meme montant et pour meme societe.
$sql = " SELECT distinct f.rowid from " . MAIN_DB_PREFIX . " facture as f " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " paiement_facture as pf ON f.rowid = pf.fk_facture " ;
$sql .= " WHERE f.fk_statut in (2,3) AND fk_soc = " . $row [ $i ][ 'socid' ] . " AND total_ttc = " . $row [ $i ][ 'pamount' ];
$sql .= " AND pf.fk_facture IS NULL " ;
$sql .= " ORDER BY f.fk_statut " ;
//print $sql.'<br>';
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
//print 'Nb of invoice found for this amount and company :'.$num.'<br>';
2008-05-21 05:53:52 +02:00
if ( $num >= 1 )
2007-05-25 22:02:23 +02:00
{
$obj = $db -> fetch_object ( $resql );
$facid = $obj -> rowid ;
2009-01-20 00:46:46 +01:00
2007-05-25 22:02:23 +02:00
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " paiement_facture (fk_facture, fk_paiement, amount) " ;
$sql .= " VALUES ( " . $facid . " , " . $row [ $i ][ 'paymentid' ] . " , " . $row [ $i ][ 'pamount' ] . " ) " ;
$res += $db -> query ( $sql );
print $langs -> trans ( 'MigrationProcessPaymentUpdate' , 'facid=' . $facid . '-paymentid=' . $row [ $i ][ 'paymentid' ] . '-amount=' . $row [ $i ][ 'pamount' ]) . " <br> \n " ;
}
}
else
{
print 'ERROR' ;
}
2008-05-21 05:53:52 +02:00
}
2007-05-24 00:39:52 +02:00
if ( $res > 0 )
{
print $langs -> trans ( 'MigrationSuccessfullUpdate' ) . " <br> " ;
}
else
{
2007-05-26 18:45:00 +02:00
print $langs -> trans ( 'MigrationPaymentsNothingUpdatable' ) . " <br> \n " ;
2007-05-24 00:39:52 +02:00
}
2007-05-25 22:02:23 +02:00
$db -> commit ();
2007-05-24 00:39:52 +02:00
}
else
{
2007-05-26 18:45:00 +02:00
print $langs -> trans ( 'MigrationPaymentsNothingUpdatable' ) . " <br> \n " ;
2007-05-24 00:39:52 +02:00
}
print '</td></tr>' ;
}
2007-05-25 22:02:23 +02:00
function migrate_paiements_orphelins_3 ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
/*
select p . rowid from llx_paiement as p left join llx_paiement_facture as pf on pf . fk_paiement = p . rowid WHERE pf . rowid IS NULL AND ( p . fk_facture = 0 OR p . fk_facture IS NULL )
Poru chaque rep , test si
select count ( * ) from llx_bank where rowid = obj -> fk_bank
select count ( * ) from llx_bank_url where url_id = 128 and type = 'payment'
Si partout 0 , on efface ligne de llx_paiement
*/
2007-05-25 22:02:23 +02:00
}
2005-10-28 22:26:33 +02:00
/*
* Mise a jour des contrats ( gestion du contrat + detail de contrat )
*/
function migrate_contracts_det ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
$nberr = 0 ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationContractsUpdate' ) . " </b><br> \n " ;
$sql = " SELECT c.rowid as cref, c.date_contrat, c.statut, c.mise_en_service, c.fin_validite, c.date_cloture, c.fk_product, c.fk_facture, c.fk_user_author, " ;
$sql .= " p.ref, p.label, p.description, p.price, p.tva_tx, p.duration, cd.rowid " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " contrat as c " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " product as p " ;
$sql .= " ON c.fk_product = p.rowid " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " contratdet as cd " ;
$sql .= " ON c.rowid=cd.fk_contrat " ;
$sql .= " WHERE cd.rowid IS NULL AND p.rowid IS NOT NULL " ;
$resql = $db -> query ( $sql );
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_contracts_det sql= " . $sql );
2008-05-21 05:53:52 +02:00
if ( $resql )
{
$i = 0 ;
$row = array ();
$num = $db -> num_rows ( $resql );
if ( $num )
{
print $langs -> trans ( 'MigrationContractsNumberToUpdate' , $num ) . " <br> \n " ;
$db -> begin ();
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " contratdet ( " ;
$sql .= " fk_contrat, fk_product, statut, label, description, " ;
$sql .= " date_ouverture_prevue, date_ouverture, date_fin_validite, tva_tx, qty, " ;
$sql .= " subprice, price_ht, fk_user_author, fk_user_ouverture) " ;
$sql .= " VALUES ( " ;
$sql .= $obj -> cref . " , " . ( $obj -> fk_product ? $obj -> fk_product : 0 ) . " , " ;
$sql .= ( $obj -> mise_en_service ? " 4 " : " 0 " ) . " , " ;
$sql .= " ' " . addslashes ( $obj -> label ) . " ', null, " ;
$sql .= ( $obj -> mise_en_service ? " ' " . $obj -> mise_en_service . " ' " : ( $obj -> date_contrat ? " ' " . $obj -> date_contrat . " ' " : " null " )) . " , " ;
$sql .= ( $obj -> mise_en_service ? " ' " . $obj -> mise_en_service . " ' " : " null " ) . " , " ;
$sql .= ( $obj -> fin_validite ? " ' " . $obj -> fin_validite . " ' " : " null " ) . " , " ;
$sql .= " ' " . $obj -> tva_tx . " ', 1, " ;
$sql .= " ' " . $obj -> price . " ', ' " . $obj -> price . " ', " . $obj -> fk_user_author . " , " ;
$sql .= ( $obj -> mise_en_service ? $obj -> fk_user_author : " null " );
$sql .= " ) " ;
if ( $db -> query ( $sql ))
{
print $langs -> trans ( 'MigrationContractsLineCreation' , $obj -> cref ) . " <br> \n " ;
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
$nberr ++ ;
}
$i ++ ;
}
if ( ! $nberr )
{
// $db->rollback();
$db -> commit ();
print $langs -> trans ( 'MigrationSuccessfullUpdate' ) . " <br> " ;
}
else
{
$db -> rollback ();
print $langs -> trans ( 'MigrationUpdateFailed' ) . '<br>' ;
}
}
else {
print $langs -> trans ( 'MigrationContractsNothingToUpdate' ) . " <br> \n " ;
}
}
else
{
print $langs -> trans ( 'MigrationContractsFieldDontExist' ) . " <br> \n " ;
2009-02-20 23:53:15 +01:00
// dol_print_error($db);
2008-05-21 05:53:52 +02:00
}
2006-08-20 04:06:48 +02:00
print '</td></tr>' ;
2005-10-28 22:26:33 +02:00
}
2007-10-30 00:11:42 +01:00
function migrate_links_transfert ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
$nberr = 0 ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationBankTransfertsUpdate' ) . " </b><br> \n " ;
$sql = " SELECT ba.rowid as barowid, bb.rowid as bbrowid " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " bank as bb, " . MAIN_DB_PREFIX . " bank as ba " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " bank_url as bu ON bu.fk_bank = ba.rowid " ;
$sql .= " WHERE ba.amount = -bb.amount AND ba.fk_account <> bb.fk_account " ;
2007-10-30 00:11:42 +01:00
$sql .= " AND ba.datev = bb.datev AND ba.datec = bb.datec " ;
$sql .= " AND bu.fk_bank IS NULL " ;
2008-05-21 05:53:52 +02:00
$resql = $db -> query ( $sql );
2007-10-30 00:11:42 +01:00
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_links_transfert sql= " . $sql );
2008-05-21 05:53:52 +02:00
if ( $resql )
{
$i = 0 ;
$row = array ();
$num = $db -> num_rows ( $resql );
if ( $num )
{
print $langs -> trans ( 'MigrationBankTransfertsToUpdate' , $num ) . " <br> \n " ;
$db -> begin ();
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " bank_url ( " ;
$sql .= " fk_bank, url_id, url, label, type " ;
$sql .= " ) " ;
$sql .= " VALUES ( " ;
$sql .= $obj -> barowid . " , " . $obj -> bbrowid . " , '/compta/bank/ligne.php?rowid=', '(banktransfert)', 'banktransfert' " ;
2007-10-30 00:11:42 +01:00
$sql .= " ) " ;
print $sql . '<br>' ;
dolibarr_install_syslog ( " migrate_links_transfert sql= " . $sql );
2008-05-21 05:53:52 +02:00
if ( ! $db -> query ( $sql ))
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
$nberr ++ ;
}
$i ++ ;
}
if ( ! $nberr )
{
// $db->rollback();
$db -> commit ();
print $langs -> trans ( 'MigrationSuccessfullUpdate' ) . " <br> " ;
}
else
{
$db -> rollback ();
print $langs -> trans ( 'MigrationUpdateFailed' ) . '<br>' ;
}
}
else {
print $langs -> trans ( 'MigrationBankTransfertsNothingToUpdate' ) . " <br> \n " ;
}
}
2007-10-30 00:11:42 +01:00
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2007-10-30 00:11:42 +01:00
}
print '</td></tr>' ;
}
2005-10-28 22:26:33 +02:00
/*
2007-11-28 22:24:36 +01:00
* Mise a jour des date de contrats non renseignees
2005-10-28 22:26:33 +02:00
*/
function migrate_contracts_date1 ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationContractsEmptyDatesUpdate' ) . " </b><br> \n " ;
$sql = " update llx_contrat set date_contrat=tms where date_contrat is null " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_contracts_date1 sql= " . $sql );
2008-05-21 05:53:52 +02:00
$resql = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql ) dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
if ( $db -> affected_rows ( $resql ) > 0 )
print $langs -> trans ( 'MigrationContractsEmptyDatesUpdateSuccess' ) . " <br> \n " ;
else
print $langs -> trans ( 'MigrationContractsEmptyDatesNothingToUpdate' ) . " <br> \n " ;
$sql = " update llx_contrat set datec=tms where datec is null " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_contracts_date1 sql= " . $sql );
2008-05-21 05:53:52 +02:00
$resql = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql ) dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
if ( $db -> affected_rows ( $resql ) > 0 )
print $langs -> trans ( 'MigrationContractsEmptyCreationDatesUpdateSuccess' ) . " <br> \n " ;
else
print $langs -> trans ( 'MigrationContractsEmptyCreationDatesNothingToUpdate' ) . " <br> \n " ;
2006-08-20 04:06:48 +02:00
print '</td></tr>' ;
2005-10-28 22:26:33 +02:00
}
/*
2007-11-28 22:24:36 +01:00
* Mise a jour date contrat avec date min effective mise en service si inferieur
2005-10-28 22:26:33 +02:00
*/
function migrate_contracts_date2 ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
$nberr = 0 ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationContractsInvalidDatesUpdate' ) . " </b><br> \n " ;
$sql = " SELECT c.rowid as cref, c.datec, c.date_contrat, MIN(cd.date_ouverture) as datemin " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " contrat as c, " ;
$sql .= " " . MAIN_DB_PREFIX . " contratdet as cd " ;
$sql .= " WHERE c.rowid=cd.fk_contrat AND cd.date_ouverture IS NOT NULL " ;
$sql .= " GROUP BY c.rowid, c.date_contrat " ;
$resql = $db -> query ( $sql );
2009-04-29 20:02:50 +02:00
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_contracts_date2 sql= " . $sql );
2008-05-21 05:53:52 +02:00
if ( $resql )
{
$i = 0 ;
$row = array ();
$num = $db -> num_rows ( $resql );
if ( $num )
{
$nbcontratsmodifie = 0 ;
$db -> begin ();
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
if ( $obj -> date_contrat > $obj -> datemin )
{
print $langs -> trans ( 'MigrationContractsInvalidDateFix' , $obj -> cref , $obj -> date_contrat , $obj -> datemin ) . " <br> \n " ;
$sql = " UPDATE " . MAIN_DB_PREFIX . " contrat " ;
$sql .= " SET date_contrat=' " . $obj -> datemin . " ' " ;
$sql .= " WHERE rowid= " . $obj -> cref ;
$resql2 = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql2 ) dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
$nbcontratsmodifie ++ ;
}
$i ++ ;
}
$db -> commit ();
if ( $nbcontratsmodifie )
print $langs -> trans ( 'MigrationContractsInvalidDatesNumber' , $nbcontratsmodifie ) . " <br> \n " ;
else
print $langs -> trans ( 'MigrationContractsInvalidDatesNothingToUpdate' ) . " <br> \n " ;
}
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
2006-08-20 04:06:48 +02:00
print '</td></tr>' ;
2005-10-28 22:26:33 +02:00
}
/*
2007-11-28 22:24:36 +01:00
* Mise a jour des dates de creation de contrat
2005-10-28 22:26:33 +02:00
*/
function migrate_contracts_date3 ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationContractsIncoherentCreationDateUpdate' ) . " </b><br> \n " ;
$sql = " update llx_contrat set datec=date_contrat where datec is null or datec > date_contrat " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_contracts_date3 sql= " . $sql );
2008-05-21 05:53:52 +02:00
$resql = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql ) dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
if ( $db -> affected_rows () > 0 )
print $langs -> trans ( 'MigrationContractsIncoherentCreationDateUpdateSuccess' ) . " <br> \n " ;
else
print $langs -> trans ( 'MigrationContractsIncoherentCreationDateNothingToUpdate' ) . " <br> \n " ;
2006-08-20 04:06:48 +02:00
print '</td></tr>' ;
2005-10-28 22:26:33 +02:00
}
/*
2007-11-28 22:24:36 +01:00
* Reouverture des contrats qui ont au moins une ligne non fermee
2005-10-28 22:26:33 +02:00
*/
function migrate_contracts_open ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationReopeningContracts' ) . " </b><br> \n " ;
$sql = " SELECT c.rowid as cref FROM llx_contrat as c, llx_contratdet as cd " ;
$sql .= " WHERE cd.statut = 4 AND c.statut=2 AND c.rowid=cd.fk_contrat " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_contracts_open sql= " . $sql );
2008-05-21 05:53:52 +02:00
$resql = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql ) dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
if ( $db -> affected_rows () > 0 ) {
$i = 0 ;
$row = array ();
$num = $db -> num_rows ( $resql );
if ( $num )
{
$nbcontratsmodifie = 0 ;
$db -> begin ();
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
print $langs -> trans ( 'MigrationReopenThisContract' , $obj -> cref ) . " <br> \n " ;
$sql = " UPDATE " . MAIN_DB_PREFIX . " contrat " ;
$sql .= " SET statut=1 " ;
$sql .= " WHERE rowid= " . $obj -> cref ;
$resql2 = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql2 ) dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
$nbcontratsmodifie ++ ;
$i ++ ;
}
$db -> commit ();
if ( $nbcontratsmodifie )
print $langs -> trans ( 'MigrationReopenedContractsNumber' , $nbcontratsmodifie ) . " <br> \n " ;
else
print $langs -> trans ( 'MigrationReopeningContractsNothingToUpdate' ) . " <br> \n " ;
}
}
else print $langs -> trans ( 'MigrationReopeningContractsNothingToUpdate' ) . " <br> \n " ;
2006-08-20 04:06:48 +02:00
print '</td></tr>' ;
2005-10-28 22:26:33 +02:00
}
/**
* Factures fournisseurs
*/
function migrate_paiementfourn_facturefourn ( $db , $langs , $conf )
{
2005-11-04 02:28:28 +01:00
global $bc ;
2007-05-28 15:39:02 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
2007-12-17 12:44:23 +01:00
print '<b>' . $langs -> trans ( 'SuppliersInvoices' ) . " </b><br> \n " ;
2007-05-28 15:39:02 +02:00
print '</td></tr>' ;
2008-05-21 05:53:52 +02:00
2005-10-28 22:26:33 +02:00
$error = 0 ;
2008-05-21 05:53:52 +02:00
$nb = 0 ;
2005-10-28 22:26:33 +02:00
$select_sql = 'SELECT rowid, fk_facture_fourn, amount ' ;
$select_sql .= ' FROM ' . MAIN_DB_PREFIX . 'paiementfourn ' ;
2006-08-06 01:55:10 +02:00
$select_sql .= ' WHERE fk_facture_fourn IS NOT NULL' ;
2009-04-29 20:02:50 +02:00
dolibarr_install_syslog ( " upgrade2::migrate_paiementfourn_facturefourn sql= " . $select_sql );
2005-10-28 22:26:33 +02:00
$select_resql = $db -> query ( $select_sql );
if ( $select_resql )
{
$select_num = $db -> num_rows ( $select_resql );
$i = 0 ;
2005-11-04 02:28:28 +01:00
$var = true ;
2008-05-21 05:53:52 +02:00
2007-11-28 22:24:36 +01:00
// Pour chaque paiement fournisseur, on insere une ligne dans paiementfourn_facturefourn
2006-08-06 01:55:10 +02:00
while (( $i < $select_num ) && ( ! $error ))
2005-10-28 22:26:33 +02:00
{
$var = ! $var ;
$select_obj = $db -> fetch_object ( $select_resql );
2007-11-28 22:24:36 +01:00
// Verifier si la ligne est deja dans la nouvelle table. On ne veut pas ins<6E> rer de doublons.
2005-10-28 22:26:33 +02:00
$check_sql = 'SELECT fk_paiementfourn, fk_facturefourn' ;
$check_sql .= ' FROM ' . MAIN_DB_PREFIX . 'paiementfourn_facturefourn' ;
$check_sql .= ' WHERE fk_paiementfourn = ' . $select_obj -> rowid . ' AND fk_facturefourn = ' . $select_obj -> fk_facture_fourn . ';' ;
$check_resql = $db -> query ( $check_sql );
if ( $check_resql )
{
$check_num = $db -> num_rows ( $check_resql );
2006-08-06 01:55:10 +02:00
if ( $check_num == 0 )
2005-10-28 22:26:33 +02:00
{
2008-05-21 05:53:52 +02:00
if ( $nb == 0 )
{
print '<tr><td colspan="4" nowrap="nowrap"><b>' . $langs -> trans ( 'SuppliersInvoices' ) . '</b></td></tr>' ;
print '<tr><td>fk_paiementfourn</td><td>fk_facturefourn</td><td>' . $langs -> trans ( 'Amount' ) . '</td><td> </td></tr>' ;
}
print '<tr ' . $bc [ $var ] . '>' ;
print '<td>' . $select_obj -> rowid . '</td><td>' . $select_obj -> fk_facture_fourn . '</td><td>' . $select_obj -> amount . '</td>' ;
2005-10-28 22:26:33 +02:00
$insert_sql = 'INSERT INTO ' . MAIN_DB_PREFIX . 'paiementfourn_facturefourn SET ' ;
$insert_sql .= ' fk_paiementfourn = \'' . $select_obj -> rowid . '\',' ;
$insert_sql .= ' fk_facturefourn = \'' . $select_obj -> fk_facture_fourn . '\',' ;
$insert_sql .= ' amount = \'' . $select_obj -> amount . '\';' ;
$insert_resql = $db -> query ( $insert_sql );
if ( $insert_resql )
{
$nb ++ ;
print '<td><span style="color:green">' . $langs -> trans ( " OK " ) . '</span></td>' ;
}
else
{
print '<td><span style="color:red">Error on insert</span></td>' ;
$error ++ ;
}
2008-05-21 05:53:52 +02:00
print '</tr>' ;
2005-10-28 22:26:33 +02:00
}
}
else
{
$error ++ ;
}
$i ++ ;
}
}
else
{
2008-05-21 05:53:52 +02:00
$error ++ ;
2005-10-28 22:26:33 +02:00
}
2008-05-21 05:53:52 +02:00
if ( ! $nb && ! $error )
2005-10-28 22:26:33 +02:00
{
2008-05-21 05:53:52 +02:00
print '<tr><td>' . $langs -> trans ( " AlreadyDone " ) . '</td></tr>' ;
}
if ( $error )
2005-10-28 22:26:33 +02:00
{
2008-05-21 05:53:52 +02:00
print '<tr><td>' . $langs -> trans ( " Error " ) . '</td></tr>' ;
}
2005-10-28 22:26:33 +02:00
}
2006-06-03 01:20:36 +02:00
2006-06-17 01:55:20 +02:00
/*
2006-06-17 16:13:49 +02:00
* Mise a jour des totaux lignes de facture
2006-06-17 01:55:20 +02:00
*/
function migrate_price_facture ( $db , $langs , $conf )
{
2007-07-07 18:38:58 +02:00
$db -> begin ();
2006-06-17 03:53:32 +02:00
2007-07-07 18:38:58 +02:00
print '<tr><td colspan="4">' ;
2006-08-20 04:06:48 +02:00
2007-07-07 18:38:58 +02:00
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationInvoice' ) . " </b><br> \n " ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
// Liste des lignes facture non a jour
2009-01-20 00:46:46 +01:00
$sql = " SELECT fd.rowid, fd.qty, fd.subprice, fd.remise_percent, fd.tva_taux, fd.total_ttc, fd.info_bits, " ;
2007-12-02 20:26:00 +01:00
$sql .= " f.rowid as facid, f.remise_percent as remise_percent_global, f.total_ttc as total_ttc_f " ;
2007-07-07 18:38:58 +02:00
$sql .= " FROM " . MAIN_DB_PREFIX . " facturedet as fd, " . MAIN_DB_PREFIX . " facture as f " ;
$sql .= " WHERE fd.fk_facture = f.rowid " ;
2007-12-02 20:26:00 +01:00
$sql .= " AND (((fd.total_ttc = 0 AND fd.remise_percent != 100) or fd.total_ttc IS NULL) or f.total_ttc IS NULL) " ;
//print $sql;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_price_facture sql= " . $sql );
2007-07-07 18:38:58 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num )
2006-06-17 01:55:20 +02:00
{
2007-07-07 18:38:58 +02:00
while ( $i < $num )
2006-06-17 01:55:20 +02:00
{
2007-07-07 18:38:58 +02:00
$obj = $db -> fetch_object ( $resql );
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
$rowid = $obj -> rowid ;
$qty = $obj -> qty ;
$pu = $obj -> subprice ;
$txtva = $obj -> tva_taux ;
$remise_percent = $obj -> remise_percent ;
$remise_percent_global = $obj -> remise_percent_global ;
2007-12-02 20:26:00 +01:00
$total_ttc_f = $obj -> total_ttc_f ;
2009-01-20 00:46:46 +01:00
$info_bits = $obj -> info_bits ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
// On met a jour les 3 nouveaux champs
$facligne = new FactureLigne ( $db );
$facligne -> fetch ( $rowid );
2008-02-22 00:15:55 +01:00
$result = calcul_price_total ( $qty , $pu , $remise_percent , $txtva , $remise_percent_global , 'HT' , $info_bits );
2007-07-07 18:38:58 +02:00
$total_ht = $result [ 0 ];
$total_tva = $result [ 1 ];
$total_ttc = $result [ 2 ];
2008-05-21 05:53:52 +02:00
$facligne -> total_ht = $total_ht ;
2007-07-07 18:38:58 +02:00
$facligne -> total_tva = $total_tva ;
$facligne -> total_ttc = $total_ttc ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
dolibarr_install_syslog ( " upgrade2: Line $rowid : facid= $obj->facid pu= $pu qty= $qty tva_taux= $txtva remise_percent= $remise_percent remise_global= $remise_percent_global -> $total_ht , $total_tva , $total_ttc " );
2008-03-07 11:34:16 +01:00
print " . " ;
2007-07-07 18:38:58 +02:00
$facligne -> update_total ();
2008-05-21 05:53:52 +02:00
2007-12-02 20:26:00 +01:00
/* On touche a facture mere uniquement si total_ttc = 0 */
if ( ! $total_ttc_f )
2006-06-17 01:55:20 +02:00
{
2007-12-02 20:26:00 +01:00
$facture = new Facture ( $db );
$facture -> id = $obj -> facid ;
if ( $facture -> fetch ( $facture -> id ) >= 0 )
2006-06-17 01:55:20 +02:00
{
2008-03-07 11:34:16 +01:00
if ( $facture -> update_price () > 0 )
2007-12-02 20:26:00 +01:00
{
2008-03-07 11:34:16 +01:00
//print $facture->id;
2007-12-02 20:26:00 +01:00
}
else
{
print " Error id= " . $facture -> id ;
$err ++ ;
}
2006-06-17 01:55:20 +02:00
}
else
{
2007-12-02 20:26:00 +01:00
print " Error #3 " ;
2006-06-17 01:55:20 +02:00
$err ++ ;
}
}
2008-03-07 11:34:16 +01:00
print " " ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
$i ++ ;
2006-06-17 16:13:49 +02:00
}
2006-06-17 01:55:20 +02:00
}
else
{
2008-05-21 05:53:52 +02:00
print $langs -> trans ( " AlreadyDone " );
2006-06-17 01:55:20 +02:00
}
2007-07-07 18:38:58 +02:00
$db -> free ( $resql );
2006-06-17 03:53:32 +02:00
2007-07-07 18:38:58 +02:00
$db -> commit ();
2006-06-17 01:55:20 +02:00
}
2007-07-07 18:38:58 +02:00
else
{
print " Error #1 " . $db -> error ();
$err ++ ;
$db -> rollback ();
}
print '<br>' ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
print '</td></tr>' ;
2006-06-17 01:55:20 +02:00
}
2006-06-17 03:53:32 +02:00
/*
2006-06-17 16:13:49 +02:00
* Mise a jour des totaux lignes de propal
2006-06-17 03:53:32 +02:00
*/
function migrate_price_propal ( $db , $langs , $conf )
{
2007-07-07 18:38:58 +02:00
$db -> begin ();
2006-06-17 16:13:49 +02:00
2007-07-07 18:38:58 +02:00
print '<tr><td colspan="4">' ;
2006-06-17 03:53:32 +02:00
2007-07-07 18:38:58 +02:00
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationProposal' ) . " </b><br> \n " ;
// Liste des lignes propal non a jour
2009-01-20 00:46:46 +01:00
$sql = " SELECT pd.rowid, pd.qty, pd.subprice, pd.remise_percent, pd.tva_tx as tva_taux, pd.info_bits, " ;
2007-07-07 18:38:58 +02:00
$sql .= " p.rowid as propalid, p.remise_percent as remise_percent_global " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " propaldet as pd, " . MAIN_DB_PREFIX . " propal as p " ;
$sql .= " WHERE pd.fk_propal = p.rowid " ;
$sql .= " AND ((pd.total_ttc = 0 AND pd.remise_percent != 100) or pd.total_ttc IS NULL) " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_price_propal sql= " . $sql );
2007-07-07 18:38:58 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num )
2006-06-17 03:53:32 +02:00
{
2007-07-07 18:38:58 +02:00
while ( $i < $num )
2006-06-17 03:53:32 +02:00
{
2007-07-07 18:38:58 +02:00
$obj = $db -> fetch_object ( $resql );
$rowid = $obj -> rowid ;
$qty = $obj -> qty ;
$pu = $obj -> subprice ;
$txtva = $obj -> tva_taux ;
$remise_percent = $obj -> remise_percent ;
$remise_percent_global = $obj -> remise_percent_global ;
2009-01-20 00:46:46 +01:00
$info_bits = $obj -> info_bits ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
// On met a jour les 3 nouveaux champs
$propalligne = new PropaleLigne ( $db );
$propalligne -> fetch ( $rowid );
2008-02-22 00:15:55 +01:00
$result = calcul_price_total ( $qty , $pu , $remise_percent , $txtva , $remise_percent_global , 'HT' , $info_bits );
2007-07-07 18:38:58 +02:00
$total_ht = $result [ 0 ];
$total_tva = $result [ 1 ];
$total_ttc = $result [ 2 ];
2008-05-21 05:53:52 +02:00
$propalligne -> total_ht = $total_ht ;
2007-07-07 18:38:58 +02:00
$propalligne -> total_tva = $total_tva ;
$propalligne -> total_ttc = $total_ttc ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
dolibarr_install_syslog ( " upgrade2: Line $rowid : propalid= $obj->rowid pu= $pu qty= $qty tva_taux= $txtva remise_percent= $remise_percent remise_global= $remise_percent_global -> $total_ht , $total_tva , $total_ttc " );
print " . " ;
$propalligne -> update_total ( $rowid );
2006-06-17 16:13:49 +02:00
2007-07-07 18:38:58 +02:00
/* On touche pas a propal mere
2008-05-21 05:53:52 +02:00
$propal = new Propal ( $db );
$propal -> id = $obj -> rowid ;
if ( $propal -> fetch ( $propal -> id ) >= 0 )
{
2008-03-07 11:34:16 +01:00
if ( $propal -> update_price () > 0 )
2006-06-17 03:53:32 +02:00
{
2008-05-21 05:53:52 +02:00
print " . " ;
2006-06-17 03:53:32 +02:00
}
else
{
2008-05-21 05:53:52 +02:00
print " Error id= " . $propal -> id ;
$err ++ ;
2006-06-17 03:53:32 +02:00
}
2008-05-21 05:53:52 +02:00
}
else
{
2007-07-07 18:38:58 +02:00
print " Error #3 " ;
$err ++ ;
2008-05-21 05:53:52 +02:00
}
*/
2007-07-07 18:38:58 +02:00
$i ++ ;
2006-06-17 03:53:32 +02:00
}
2007-07-07 18:38:58 +02:00
}
else
{
2008-05-21 05:53:52 +02:00
print $langs -> trans ( " AlreadyDone " );
2007-07-07 18:38:58 +02:00
}
2009-01-20 00:46:46 +01:00
2007-07-07 18:38:58 +02:00
$db -> free ( $resql );
$db -> commit ();
}
else
{
print " Error #1 " . $db -> error ();
$err ++ ;
$db -> rollback ();
}
print '<br>' ;
print '</td></tr>' ;
}
/*
* Mise a jour des totaux lignes de propal
*/
function migrate_price_contrat ( $db , $langs , $conf )
{
$db -> begin ();
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationContract' ) . " </b><br> \n " ;
// Liste des lignes contrat non a jour
2009-01-20 00:46:46 +01:00
$sql = " SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, cd.info_bits, " ;
2007-07-07 18:38:58 +02:00
$sql .= " c.rowid as contratid " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " contratdet as cd, " . MAIN_DB_PREFIX . " contrat as c " ;
$sql .= " WHERE cd.fk_contrat = c.rowid " ;
$sql .= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100 AND cd.subprice > 0) or cd.total_ttc IS NULL) " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_price_contrat sql= " . $sql );
2007-07-07 18:38:58 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num )
{
while ( $i < $num )
2006-06-17 16:13:49 +02:00
{
2007-07-07 18:38:58 +02:00
$obj = $db -> fetch_object ( $resql );
$rowid = $obj -> rowid ;
$qty = $obj -> qty ;
$pu = $obj -> subprice ;
$txtva = $obj -> tva_taux ;
$remise_percent = $obj -> remise_percent ;
$remise_percent_global = $obj -> remise_percent_global ;
2009-01-20 00:46:46 +01:00
$info_bits = $obj -> info_bits ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
// On met a jour les 3 nouveaux champs
$contratligne = new ContratLigne ( $db );
//$contratligne->fetch($rowid); Non requis car le update_total ne met a jour que chp redefinis
$contratligne -> rowid = $rowid ;
2008-05-21 05:53:52 +02:00
2008-02-22 00:15:55 +01:00
$result = calcul_price_total ( $qty , $pu , $remise_percent , $txtva , $remise_percent_global , 'HT' , $info_bits );
2007-07-07 18:38:58 +02:00
$total_ht = $result [ 0 ];
$total_tva = $result [ 1 ];
$total_ttc = $result [ 2 ];
2008-05-21 05:53:52 +02:00
$contratligne -> total_ht = $total_ht ;
2007-07-07 18:38:58 +02:00
$contratligne -> total_tva = $total_tva ;
$contratligne -> total_ttc = $total_ttc ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
dolibarr_install_syslog ( " upgrade2: Line $rowid : contratdetid= $obj->rowid pu= $pu qty= $qty tva_taux= $txtva remise_percent= $remise_percent remise_global= $remise_percent_global -> $total_ht , $total_tva , $total_ttc " );
print " . " ;
$contratligne -> update_total ( $rowid );
2006-06-17 16:13:49 +02:00
2007-07-07 18:38:58 +02:00
/* On touche pas a contrat mere
2008-05-21 05:53:52 +02:00
$propal = new Propal ( $db );
$propal -> id = $obj -> rowid ;
if ( $propal -> fetch ( $propal -> id ) >= 0 )
{
2008-03-07 11:34:16 +01:00
if ( $propal -> update_price () > 0 )
2007-07-07 18:38:58 +02:00
{
2008-05-21 05:53:52 +02:00
print " . " ;
2007-07-07 18:38:58 +02:00
}
else
{
2008-05-21 05:53:52 +02:00
print " Error id= " . $propal -> id ;
$err ++ ;
2007-07-07 18:38:58 +02:00
}
2008-05-21 05:53:52 +02:00
}
else
{
2007-07-07 18:38:58 +02:00
print " Error #3 " ;
$err ++ ;
2008-05-21 05:53:52 +02:00
}
*/
2007-07-07 18:38:58 +02:00
$i ++ ;
}
2006-06-17 03:53:32 +02:00
}
else
{
2008-05-21 05:53:52 +02:00
print $langs -> trans ( " AlreadyDone " );
2006-06-17 03:53:32 +02:00
}
2009-01-20 00:46:46 +01:00
2007-07-07 18:38:58 +02:00
$db -> free ( $resql );
2006-06-17 03:53:32 +02:00
2007-07-07 18:38:58 +02:00
$db -> commit ();
}
else
{
print " Error #1 " . $db -> error ();
$err ++ ;
2006-08-20 04:06:48 +02:00
2007-07-07 18:38:58 +02:00
$db -> rollback ();
2006-06-17 03:53:32 +02:00
}
2007-07-07 18:38:58 +02:00
print '<br>' ;
print '</td></tr>' ;
2006-06-17 03:53:32 +02:00
}
/*
2006-06-17 16:13:49 +02:00
* Mise a jour des totaux lignes de commande
2006-06-17 03:53:32 +02:00
*/
function migrate_price_commande ( $db , $langs , $conf )
{
2007-07-07 18:38:58 +02:00
$db -> begin ();
2006-06-17 03:53:32 +02:00
2007-07-07 18:38:58 +02:00
print '<tr><td colspan="4">' ;
2006-06-17 03:53:32 +02:00
2007-07-07 18:38:58 +02:00
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationOrder' ) . " </b><br> \n " ;
// Liste des lignes commande non a jour
2009-01-20 00:46:46 +01:00
$sql = " SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, cd.info_bits, " ;
2007-07-07 18:38:58 +02:00
$sql .= " c.rowid as commandeid, c.remise_percent as remise_percent_global " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commandedet as cd, " . MAIN_DB_PREFIX . " commande as c " ;
$sql .= " WHERE cd.fk_commande = c.rowid " ;
$sql .= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL) " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_price_commande sql= " . $sql );
2007-07-07 18:38:58 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num )
2006-06-17 03:53:32 +02:00
{
2007-07-07 18:38:58 +02:00
while ( $i < $num )
2006-06-17 03:53:32 +02:00
{
2007-07-07 18:38:58 +02:00
$obj = $db -> fetch_object ( $resql );
$rowid = $obj -> rowid ;
$qty = $obj -> qty ;
$pu = $obj -> subprice ;
$txtva = $obj -> tva_taux ;
$remise_percent = $obj -> remise_percent ;
$remise_percent_global = $obj -> remise_percent_global ;
2009-01-20 00:46:46 +01:00
$info_bits = $obj -> info_bits ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
// On met a jour les 3 nouveaux champs
$commandeligne = new CommandeLigne ( $db );
$commandeligne -> fetch ( $rowid );
2008-02-22 00:15:55 +01:00
$result = calcul_price_total ( $qty , $pu , $remise_percent , $txtva , $remise_percent_global , 'HT' , $info_bits );
2007-07-07 18:38:58 +02:00
$total_ht = $result [ 0 ];
$total_tva = $result [ 1 ];
$total_ttc = $result [ 2 ];
2008-05-21 05:53:52 +02:00
$commandeligne -> total_ht = $total_ht ;
2007-07-07 18:38:58 +02:00
$commandeligne -> total_tva = $total_tva ;
$commandeligne -> total_ttc = $total_ttc ;
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
dolibarr_install_syslog ( " upgrade2: Line $rowid : commandeid= $obj->rowid pu= $pu qty= $qty tva_taux= $txtva remise_percent= $remise_percent remise_global= $remise_percent_global -> $total_ht , $total_tva , $total_ttc " );
print " . " ;
$commandeligne -> update_total ( $rowid );
/* On touche pas a facture mere
2008-05-21 05:53:52 +02:00
$commande = new Commande ( $db );
$commande -> id = $obj -> rowid ;
if ( $commande -> fetch ( $commande -> id ) >= 0 )
{
2008-03-07 11:34:16 +01:00
if ( $commande -> update_price () > 0 )
2006-06-17 03:53:32 +02:00
{
2008-05-21 05:53:52 +02:00
print " . " ;
2006-06-17 03:53:32 +02:00
}
else
{
2008-05-21 05:53:52 +02:00
print " Error id= " . $commande -> id ;
$err ++ ;
2006-06-17 03:53:32 +02:00
}
2008-05-21 05:53:52 +02:00
}
else
{
2007-07-07 18:38:58 +02:00
print " Error #3 " ;
$err ++ ;
2008-05-21 05:53:52 +02:00
}
*/
2007-07-07 18:38:58 +02:00
$i ++ ;
2006-06-17 03:53:32 +02:00
}
}
else
{
2008-05-21 05:53:52 +02:00
print $langs -> trans ( " AlreadyDone " );
2006-06-17 03:53:32 +02:00
}
2007-07-07 18:38:58 +02:00
$db -> free ( $resql );
2006-08-20 04:06:48 +02:00
2009-06-04 02:36:23 +02:00
/*
2007-07-07 18:38:58 +02:00
$sql = " DELETE FROM " . MAIN_DB_PREFIX . " commandedet " ;
2009-06-04 02:36:23 +02:00
$sql .= " WHERE price = 0 and total_ttc = 0 and total_tva = 0 and total_ht = 0 AND remise_percent = 0 " ;
2007-07-07 18:38:58 +02:00
$resql = $db -> query ( $sql );
if ( ! $resql )
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2007-07-07 18:38:58 +02:00
}
2009-06-04 02:36:23 +02:00
*/
2008-05-21 05:53:52 +02:00
2007-07-07 18:38:58 +02:00
$db -> commit ();
}
else
{
print " Error #1 " . $db -> error ();
$err ++ ;
$db -> rollback ();
2006-06-17 03:53:32 +02:00
}
2007-07-07 18:38:58 +02:00
print '<br>' ;
print '</td></tr>' ;
2006-06-17 03:53:32 +02:00
}
2008-03-07 11:34:16 +01:00
/*
* Mise a jour des totaux lignes de commande fournisseur
*/
function migrate_price_commande_fournisseur ( $db , $langs , $conf )
{
$db -> begin ();
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationSupplierOrder' ) . " </b><br> \n " ;
// Liste des lignes commande non a jour
2009-01-20 00:46:46 +01:00
$sql = " SELECT cd.rowid, cd.qty, cd.subprice, cd.remise_percent, cd.tva_tx as tva_taux, cd.info_bits, " ;
2008-03-07 11:34:16 +01:00
$sql .= " c.rowid as commandeid, c.remise_percent as remise_percent_global " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande_fournisseurdet as cd, " . MAIN_DB_PREFIX . " commande_fournisseur as c " ;
$sql .= " WHERE cd.fk_commande = c.rowid " ;
$sql .= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL) " ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_price_commande_fournisseur sql= " . $sql );
2008-03-07 11:34:16 +01:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$rowid = $obj -> rowid ;
$qty = $obj -> qty ;
$pu = $obj -> subprice ;
$txtva = $obj -> tva_taux ;
$remise_percent = $obj -> remise_percent ;
$remise_percent_global = $obj -> remise_percent_global ;
2009-01-20 00:46:46 +01:00
$info_bits = $obj -> info_bits ;
2008-05-21 05:53:52 +02:00
2008-03-07 11:34:16 +01:00
// On met a jour les 3 nouveaux champs
$commandeligne = new CommandeFournisseurLigne ( $db );
$commandeligne -> fetch ( $rowid );
$result = calcul_price_total ( $qty , $pu , $remise_percent , $txtva , $remise_percent_global , 'HT' , $info_bits );
$total_ht = $result [ 0 ];
$total_tva = $result [ 1 ];
$total_ttc = $result [ 2 ];
2008-05-21 05:53:52 +02:00
$commandeligne -> total_ht = $total_ht ;
2008-03-07 11:34:16 +01:00
$commandeligne -> total_tva = $total_tva ;
$commandeligne -> total_ttc = $total_ttc ;
2008-05-21 05:53:52 +02:00
2008-03-07 11:34:16 +01:00
dolibarr_install_syslog ( " upgrade2: Line $rowid : commandeid= $obj->rowid pu= $pu qty= $qty tva_taux= $txtva remise_percent= $remise_percent remise_global= $remise_percent_global -> $total_ht , $total_tva , $total_ttc " );
print " . " ;
$commandeligne -> update_total ( $rowid );
/* On touche pas a facture mere
2008-05-21 05:53:52 +02:00
$commande = new Commande ( $db );
$commande -> id = $obj -> rowid ;
if ( $commande -> fetch ( $commande -> id ) >= 0 )
{
2008-03-07 11:34:16 +01:00
if ( $commande -> update_price () > 0 )
{
2008-05-21 05:53:52 +02:00
print " . " ;
2008-03-07 11:34:16 +01:00
}
else
{
2008-05-21 05:53:52 +02:00
print " Error id= " . $commande -> id ;
$err ++ ;
2008-03-07 11:34:16 +01:00
}
2008-05-21 05:53:52 +02:00
}
else
{
2008-03-07 11:34:16 +01:00
print " Error #3 " ;
$err ++ ;
2008-05-21 05:53:52 +02:00
}
*/
2008-03-07 11:34:16 +01:00
$i ++ ;
}
}
else
{
2008-05-21 05:53:52 +02:00
print $langs -> trans ( " AlreadyDone " );
2008-03-07 11:34:16 +01:00
}
$db -> free ( $resql );
2009-08-04 13:32:22 +02:00
/*
2008-03-07 11:34:16 +01:00
$sql = " DELETE FROM " . MAIN_DB_PREFIX . " commande_fournisseurdet " ;
2008-05-13 00:35:34 +02:00
$sql .= " WHERE subprice = 0 and total_ttc = 0 and total_tva = 0 and total_ht = 0 " ;
2008-03-07 11:34:16 +01:00
$resql = $db -> query ( $sql );
if ( ! $resql )
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-03-07 11:34:16 +01:00
}
2009-08-04 13:32:22 +02:00
*/
2008-05-21 05:53:52 +02:00
2008-03-07 11:34:16 +01:00
$db -> commit ();
}
else
{
print " Error #1 " . $db -> error ();
$err ++ ;
$db -> rollback ();
}
print '<br>' ;
print '</td></tr>' ;
}
2006-06-03 01:20:36 +02:00
/*
* Mise a jour des modeles selectionnes
*/
function migrate_modeles ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
//print '<br>';
//print '<b>'.$langs->trans('UpdateModelsTable')."</b><br>\n";
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_modeles " );
2009-04-29 20:02:50 +02:00
2009-05-09 03:59:19 +02:00
if ( ! empty ( $conf -> facture -> enabled ))
2008-05-21 05:53:52 +02:00
{
include_once ( DOL_DOCUMENT_ROOT . '/includes/modules/facture/modules_facture.php' );
$model = new ModelePDFFactures ();
$modellist = $model -> liste_modeles ( $db );
2006-06-03 01:20:36 +02:00
if ( sizeof ( $modellist ) == 0 )
{
2008-05-21 05:53:52 +02:00
// Aucun model par defaut.
$sql = " insert into llx_document_model(nom,type) values('crabe','invoice') " ;
$resql = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql ) dol_print_error ( $db );
2006-06-03 01:20:36 +02:00
}
}
2009-05-09 03:59:19 +02:00
if ( ! empty ( $conf -> commande -> enabled ))
2008-05-21 05:53:52 +02:00
{
include_once ( DOL_DOCUMENT_ROOT . '/includes/modules/commande/modules_commande.php' );
$model = new ModelePDFCommandes ();
$modellist = $model -> liste_modeles ( $db );
2006-06-03 01:20:36 +02:00
if ( sizeof ( $modellist ) == 0 )
{
2008-05-21 05:53:52 +02:00
// Aucun model par defaut.
$sql = " insert into llx_document_model(nom,type) values('einstein','order') " ;
$resql = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql ) dol_print_error ( $db );
2006-06-03 01:20:36 +02:00
}
}
2008-05-21 05:53:52 +02:00
2009-05-09 03:59:19 +02:00
if ( ! empty ( $conf -> expedition -> enabled ))
2008-05-21 05:53:52 +02:00
{
2008-10-25 13:16:39 +02:00
include_once ( DOL_DOCUMENT_ROOT . '/includes/modules/expedition/pdf/ModelePdfExpedition.class.php' );
2008-05-21 05:53:52 +02:00
$model = new ModelePDFExpedition ();
$modellist = $model -> liste_modeles ( $db );
2006-06-04 01:25:56 +02:00
if ( sizeof ( $modellist ) == 0 )
{
2008-05-21 05:53:52 +02:00
// Aucun model par defaut.
$sql = " insert into llx_document_model(nom,type) values('rouget','shipping') " ;
$resql = $db -> query ( $sql );
2009-02-20 23:53:15 +01:00
if ( ! $resql ) dol_print_error ( $db );
2006-06-04 01:25:56 +02:00
}
}
2008-05-21 05:53:52 +02:00
2006-06-03 01:20:36 +02:00
//print $langs->trans("AlreadyDone");
}
2007-05-14 21:28:02 +02:00
/*
* Supprime fichiers obsoletes
*/
function migrate_delete_old_files ( $db , $langs , $conf )
{
2008-05-21 05:53:52 +02:00
$result = true ;
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_delete_old_files " );
2009-04-29 20:02:50 +02:00
2007-11-11 23:26:11 +01:00
// List of files to delete
$filetodeletearray = array (
2008-05-21 05:53:52 +02:00
DOL_DOCUMENT_ROOT . '/includes/triggers/interface_demo.class.php' ,
DOL_DOCUMENT_ROOT . '/includes/menus/barre_left/default.php' ,
2009-06-17 03:15:52 +02:00
DOL_DOCUMENT_ROOT . '/includes/menus/barre_top/default.php' ,
DOL_DOCUMENT_ROOT . '/includes/modules/modComptabiliteExpert.class.php'
2007-11-11 23:26:11 +01:00
);
foreach ( $filetodeletearray as $filetodelete )
2007-05-14 21:28:02 +02:00
{
2007-11-11 23:26:11 +01:00
//print '<b>'.$filetodelete."</b><br>\n";
if ( file_exists ( $filetodelete ))
{
$result = dol_delete_file ( $filetodelete );
}
if ( ! $result )
{
$langs -> load ( " errors " );
print '<div class="error">' . $langs -> trans ( " Error " ) . ': ' . $langs -> trans ( " ErrorFailToDeleteFile " , $filetodelete );
print ' ' . $langs -> trans ( " RemoveItManuallyAndPressF5ToContinue " ) . '</div>' ;
}
2007-05-14 21:28:02 +02:00
}
2007-10-13 02:05:45 +02:00
return $result ;
2007-05-14 21:28:02 +02:00
}
2008-01-14 23:34:27 +01:00
/*
* Supprime fichiers obsoletes
*/
function migrate_module_menus ( $db , $langs , $conf )
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_module_menus " );
2009-04-29 20:02:50 +02:00
2008-01-17 22:25:46 +01:00
if ( ! empty ( $conf -> global -> MAIN_MODULE_AGENDA ))
2008-01-14 23:34:27 +01:00
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_module_menus Reactivate module Agenda " );
2008-01-14 23:34:27 +01:00
require_once ( DOL_DOCUMENT_ROOT . '/includes/modules/modAgenda.class.php' );
$mod = new modAgenda ( $db );
2009-03-20 15:33:56 +01:00
$mod -> remove ( 'noboxes' );
$mod -> init ( 'noboxes' );
2008-01-14 23:34:27 +01:00
}
2008-01-17 22:25:46 +01:00
if ( ! empty ( $conf -> global -> MAIN_MODULE_PHENIX ))
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_module_menus Reactivate module Phenix " );
2008-01-17 22:25:46 +01:00
require_once ( DOL_DOCUMENT_ROOT . '/includes/modules/modPhenix.class.php' );
$mod = new modPhenix ( $db );
$mod -> init ();
}
if ( ! empty ( $conf -> global -> MAIN_MODULE_WEBCALENDAR ))
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_module_menus Reactivate module Webcalendar " );
2008-01-17 22:25:46 +01:00
require_once ( DOL_DOCUMENT_ROOT . '/includes/modules/modWebcalendar.class.php' );
$mod = new modWebcalendar ( $db );
$mod -> init ();
}
if ( ! empty ( $conf -> global -> MAIN_MODULE_MANTIS ))
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_module_menus Reactivate module Mantis " );
2008-01-17 22:25:46 +01:00
require_once ( DOL_DOCUMENT_ROOT . '/includes/modules/modMantis.class.php' );
$mod = new modMantis ( $db );
$mod -> init ();
}
2008-03-01 02:39:51 +01:00
if ( ! empty ( $conf -> global -> MAIN_MODULE_SOCIETE ))
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_module_menus Reactivate module Societe " );
2008-03-01 02:39:51 +01:00
require_once ( DOL_DOCUMENT_ROOT . '/includes/modules/modSociete.class.php' );
$mod = new modSociete ( $db );
2009-03-20 15:33:56 +01:00
$mod -> remove ( 'noboxes' );
$mod -> init ( 'noboxes' );
2008-05-21 05:53:52 +02:00
}
2009-06-08 20:53:53 +02:00
if ( ! empty ( $conf -> global -> MAIN_MODULE_PRODUIT )) // Permission has changed into 2.7
{
dolibarr_install_syslog ( " upgrade2::migrate_module_menus Reactivate module Produit " );
require_once ( DOL_DOCUMENT_ROOT . '/includes/modules/modProduit.class.php' );
$mod = new modProduit ( $db );
$mod -> init ();
}
if ( ! empty ( $conf -> global -> MAIN_MODULE_SERVICE )) // Permission has changed into 2.7
{
dolibarr_install_syslog ( " upgrade2::migrate_module_menus Reactivate module Service " );
require_once ( DOL_DOCUMENT_ROOT . '/includes/modules/modService.class.php' );
$mod = new modService ( $db );
$mod -> init ();
}
2008-01-14 23:34:27 +01:00
}
2007-12-11 21:08:53 +01:00
2008-01-17 11:27:59 +01:00
/*
* Correspondance des expeditions et des commandes clients dans la table llx_co_exp
*/
function migrate_commande_expedition ( $db , $langs , $conf )
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_commande_expedition " );
2009-04-29 20:02:50 +02:00
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationShipmentOrderMatching' ) . " </b><br> \n " ;
$result = $db -> DDLDescTable ( MAIN_DB_PREFIX . " expedition " , " fk_commande " );
$obj = $db -> fetch_object ( $result );
if ( $obj )
2008-01-17 11:27:59 +01:00
{
2008-05-21 05:53:52 +02:00
$error = 0 ;
2009-01-20 00:46:46 +01:00
2008-05-21 05:53:52 +02:00
$db -> begin ();
2009-01-20 00:46:46 +01:00
2008-05-21 05:53:52 +02:00
$sql = " SELECT e.rowid, e.fk_commande FROM " . MAIN_DB_PREFIX . " expedition as e " ;
$resql = $db -> query ( $sql );
if ( $resql )
2008-01-17 11:27:59 +01:00
{
2008-05-21 05:53:52 +02:00
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
{
$db -> begin ();
2009-01-20 00:46:46 +01:00
2008-05-21 05:53:52 +02:00
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " co_exp (fk_expedition,fk_commande) " ;
$sql .= " VALUES ( " . $obj -> rowid . " , " . $obj -> fk_commande . " ) " ;
$resql2 = $db -> query ( $sql );
if ( ! $resql2 )
{
$error ++ ;
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
print " . " ;
$i ++ ;
}
}
if ( $error == 0 )
{
$db -> commit ();
$sql = " ALTER TABLE " . MAIN_DB_PREFIX . " expedition DROP COLUMN fk_commande " ;
print $langs -> trans ( 'FieldRenamed' ) . " <br> \n " ;
$db -> query ( $sql );
}
else
2008-01-17 11:27:59 +01:00
{
2008-05-21 05:53:52 +02:00
$db -> rollback ();
}
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
$db -> rollback ();
}
}
else
{
print $langs -> trans ( 'AlreadyDone' ) . " <br> \n " ;
}
print '</td></tr>' ;
2008-01-17 11:27:59 +01:00
}
2008-01-21 20:17:46 +01:00
/*
* Correspondance des livraisons et des commandes clients dans la table llx_co_liv
*/
function migrate_commande_livraison ( $db , $langs , $conf )
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_commande_livraison " );
2009-04-29 20:02:50 +02:00
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationDeliveryOrderMatching' ) . " </b><br> \n " ;
$result = $db -> DDLDescTable ( MAIN_DB_PREFIX . " livraison " , " fk_commande " );
$obj = $db -> fetch_object ( $result );
if ( $obj )
2008-01-21 20:17:46 +01:00
{
2008-05-21 05:53:52 +02:00
$error = 0 ;
2009-01-20 00:46:46 +01:00
2008-05-21 05:53:52 +02:00
$db -> begin ();
2009-01-20 00:46:46 +01:00
2008-05-21 05:53:52 +02:00
$sql = " SELECT l.rowid, l.fk_commande " ;
$sql .= " , c.ref_client, c.date_livraison " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " livraison as l, " . MAIN_DB_PREFIX . " commande as c " ;
$sql .= " WHERE c.rowid = l.fk_commande " ;
$resql = $db -> query ( $sql );
if ( $resql )
2008-01-21 20:17:46 +01:00
{
2008-05-21 05:53:52 +02:00
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$sql = " INSERT INTO " . MAIN_DB_PREFIX . " co_liv (fk_livraison,fk_commande) " ;
$sql .= " VALUES ( " . $obj -> rowid . " , " . $obj -> fk_commande . " ) " ;
$resql2 = $db -> query ( $sql );
if ( $resql2 )
{
$sqlu = " UPDATE " . MAIN_DB_PREFIX . " livraison SET " ;
$sqlu .= " ref_client=' " . $obj -> ref_client . " ' " ;
$sqlu .= " , date_livraison=' " . $obj -> date_livraison . " ' " ;
$sqlu .= " WHERE rowid = " . $obj -> rowid ;
$resql3 = $db -> query ( $sqlu );
if ( ! $resql3 )
{
$error ++ ;
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
}
else
{
$error ++ ;
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
print " . " ;
$i ++ ;
}
}
if ( $error == 0 )
2008-01-21 20:17:46 +01:00
{
2008-05-21 05:53:52 +02:00
$db -> commit ();
$sql = " ALTER TABLE " . MAIN_DB_PREFIX . " livraison DROP COLUMN fk_commande " ;
print $langs -> trans ( 'FieldRenamed' ) . " <br> \n " ;
$db -> query ( $sql );
}
else
{
$db -> rollback ();
}
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
$db -> rollback ();
}
}
else
{
print $langs -> trans ( 'AlreadyDone' ) . " <br> \n " ;
}
print '</td></tr>' ;
2008-01-21 20:17:46 +01:00
}
/*
2009-09-25 12:53:58 +02:00
* Migration des details commandes dans les details livraisons
2008-01-21 20:17:46 +01:00
*/
function migrate_detail_livraison ( $db , $langs , $conf )
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_detail_livraison " );
2009-04-29 20:02:50 +02:00
2008-05-21 05:53:52 +02:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationDeliveryDetail' ) . " </b><br> \n " ;
// This is done if field fk_commande_ligne exists.
// If not this means migration was already done.
$result = $db -> DDLDescTable ( MAIN_DB_PREFIX . " livraisondet " , " fk_commande_ligne " );
$obj = $db -> fetch_object ( $result );
if ( $obj )
2008-01-21 20:17:46 +01:00
{
2008-05-21 05:53:52 +02:00
$error = 0 ;
$db -> begin ();
2009-01-20 00:46:46 +01:00
2008-05-21 05:53:52 +02:00
$sql = " SELECT cd.rowid, cd.fk_product, cd.description, cd.subprice, cd.total_ht " ;
$sql .= " , ld.fk_livraison " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commandedet as cd, " . MAIN_DB_PREFIX . " livraisondet as ld " ;
$sql .= " WHERE ld.fk_commande_ligne = cd.rowid " ;
$resql = $db -> query ( $sql );
if ( $resql )
2008-01-21 20:17:46 +01:00
{
2008-05-21 05:53:52 +02:00
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
2008-01-21 20:17:46 +01:00
{
2008-05-21 05:53:52 +02:00
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$sql = " UPDATE " . MAIN_DB_PREFIX . " livraisondet SET " ;
$sql .= " fk_product= " . $obj -> fk_product ;
$sql .= " ,description=' " . addslashes ( $obj -> description ) . " ' " ;
$sql .= " ,subprice=' " . $obj -> subprice . " ' " ;
$sql .= " ,total_ht=' " . $obj -> total_ht . " ' " ;
$sql .= " WHERE fk_commande_ligne = " . $obj -> rowid ;
$resql2 = $db -> query ( $sql );
if ( $resql2 )
{
$sql = " SELECT total_ht " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " livraison " ;
$sql .= " WHERE rowid = " . $obj -> fk_livraison ;
$resql3 = $db -> query ( $sql );
2009-01-20 00:46:46 +01:00
2008-05-21 05:53:52 +02:00
if ( $resql3 )
{
$obju = $db -> fetch_object ( $resql3 );
$total_ht = $obju -> total_ht + $obj -> total_ht ;
$sqlu = " UPDATE " . MAIN_DB_PREFIX . " livraison SET " ;
$sqlu .= " total_ht=' " . $total_ht . " ' " ;
$sqlu .= " WHERE rowid= " . $obj -> fk_livraison ;
$resql4 = $db -> query ( $sqlu );
if ( ! $resql4 )
{
$error ++ ;
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
}
else
{
$error ++ ;
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
}
else
{
$error ++ ;
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
}
print " . " ;
$i ++ ;
}
}
if ( $error == 0 )
{
$db -> commit ();
$sql = " ALTER TABLE " . MAIN_DB_PREFIX . " livraisondet CHANGE fk_commande_ligne fk_origin_line integer " ;
print $langs -> trans ( 'FieldRenamed' ) . " <br> \n " ;
$db -> query ( $sql );
}
else
{
$db -> rollback ();
}
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2008-05-21 05:53:52 +02:00
$db -> rollback ();
}
}
else
{
$result = $db -> DDLDescTable ( MAIN_DB_PREFIX . " livraisondet " , " fk_origin_line " );
$obj = $db -> fetch_object ( $result );
if ( ! $obj )
{
$sql = " ALTER TABLE " . MAIN_DB_PREFIX . " livraisondet ADD COLUMN fk_origin_line integer after fk_livraison " ;
$db -> query ( $sql );
}
print $langs -> trans ( 'AlreadyDone' ) . " <br> \n " ;
}
print '</td></tr>' ;
2008-01-21 20:17:46 +01:00
}
2009-02-06 07:26:45 +01:00
/*
* Migration du champ stock dans produits
*/
function migrate_stocks ( $db , $langs , $conf )
{
2009-03-20 15:33:56 +01:00
dolibarr_install_syslog ( " upgrade2::migrate_stocks " );
2009-04-29 20:02:50 +02:00
2009-02-06 07:26:45 +01:00
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationStockDetail' ) . " </b><br> \n " ;
$error = 0 ;
$db -> begin ();
$sql = " SELECT SUM(reel) as total, fk_product " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " product_stock as ps " ;
$sql .= " GROUP BY fk_product " ;
$resql = $db -> query ( $sql );
if ( $resql )
{
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$sql = " UPDATE " . MAIN_DB_PREFIX . " product SET " ;
$sql .= " stock = ' " . $obj -> total . " ' " ;
$sql .= " WHERE rowid= " . $obj -> fk_product ;
$resql2 = $db -> query ( $sql );
if ( $resql2 )
{
}
else
{
$error ++ ;
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2009-02-06 07:26:45 +01:00
}
print " . " ;
$i ++ ;
}
}
if ( $error == 0 )
{
$db -> commit ();
}
else
{
$db -> rollback ();
}
}
else
{
2009-02-20 23:53:15 +01:00
dol_print_error ( $db );
2009-02-06 07:26:45 +01:00
$db -> rollback ();
}
print '</td></tr>' ;
}
2009-05-27 15:39:09 +02:00
/*
* Migration of menus ( use only 1 table instead of 3 )
*/
function migrate_menus ( $db , $langs , $conf )
{
dolibarr_install_syslog ( " upgrade2::migrate_menus " );
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationMenusDetail' ) . " </b><br> \n " ;
$error = 0 ;
2009-07-04 15:37:07 +02:00
if ( $db -> DDLInfoTable ( MAIN_DB_PREFIX . " menu_constraint " ))
2009-05-27 15:39:09 +02:00
{
2009-07-04 15:37:07 +02:00
$db -> begin ();
2009-08-04 13:32:22 +02:00
2009-07-04 15:37:07 +02:00
$sql = " SELECT m.rowid, mc.action " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " menu_constraint as mc, " . MAIN_DB_PREFIX . " menu_const as md, " . MAIN_DB_PREFIX . " menu as m " ;
$sql .= " WHERE md.fk_menu = m.rowid AND md.fk_constraint = mc.rowid " ;
$sql .= " AND m.enabled = '1' " ;
$resql = $db -> query ( $sql );
if ( $resql )
2009-05-27 15:39:09 +02:00
{
2009-07-04 15:37:07 +02:00
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
2009-05-27 15:39:09 +02:00
{
2009-07-04 15:37:07 +02:00
while ( $i < $num )
2009-05-27 15:39:09 +02:00
{
2009-07-04 15:37:07 +02:00
$obj = $db -> fetch_object ( $resql );
2009-08-04 13:32:22 +02:00
2009-07-04 15:37:07 +02:00
$sql = " UPDATE " . MAIN_DB_PREFIX . " menu SET " ;
$sql .= " enabled = ' " . $obj -> action . " ' " ;
$sql .= " WHERE rowid= " . $obj -> rowid ;
$sql .= " AND enabled = '1' " ;
2009-08-04 13:32:22 +02:00
2009-07-04 15:37:07 +02:00
$resql2 = $db -> query ( $sql );
if ( $resql2 )
{
2009-08-04 13:32:22 +02:00
2009-07-04 15:37:07 +02:00
}
else
{
$error ++ ;
dol_print_error ( $db );
}
print " . " ;
$i ++ ;
2009-05-27 15:39:09 +02:00
}
}
2009-08-04 13:32:22 +02:00
2009-07-04 15:37:07 +02:00
if ( $error == 0 )
{
$db -> commit ();
}
else
{
$db -> rollback ();
}
2009-05-27 15:39:09 +02:00
}
else
{
2009-07-04 15:37:07 +02:00
dol_print_error ( $db );
2009-05-27 15:39:09 +02:00
$db -> rollback ();
}
}
else
{
2009-07-04 15:37:07 +02:00
print $langs -> trans ( 'AlreadyDone' ) . " <br> \n " ;
2009-05-27 15:39:09 +02:00
}
print '</td></tr>' ;
}
2009-07-08 16:50:16 +02:00
/*
* Migration du champ fk_adresse_livraison dans expedition
*/
function migrate_commande_deliveryaddress ( $db , $langs , $conf )
{
dolibarr_install_syslog ( " upgrade2::migrate_commande_deliveryaddress " );
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationDeliveryAddress' ) . " </b><br> \n " ;
$error = 0 ;
$db -> begin ();
$sql = " SELECT c.fk_adresse_livraison, ce.fk_expedition " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " commande as c " ;
$sql .= " , " . MAIN_DB_PREFIX . " co_exp as ce " ;
$sql .= " WHERE c.rowid = ce.fk_commande " ;
2009-09-28 06:08:34 +02:00
$sql .= " AND c.fk_adresse_livraison IS NOT NULL AND c.fk_adresse_livraison != 0 " ;
2009-08-04 13:32:22 +02:00
2009-07-08 16:50:16 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$sql = " UPDATE " . MAIN_DB_PREFIX . " expedition SET " ;
$sql .= " fk_adresse_livraison = ' " . $obj -> fk_adresse_livraison . " ' " ;
$sql .= " WHERE rowid= " . $obj -> fk_expedition ;
$resql2 = $db -> query ( $sql );
if ( $resql2 )
{
}
else
{
$error ++ ;
dol_print_error ( $db );
}
print " . " ;
$i ++ ;
}
}
if ( $error == 0 )
{
$db -> commit ();
}
else
{
$db -> rollback ();
}
}
else
{
dol_print_error ( $db );
$db -> rollback ();
}
print '</td></tr>' ;
}
2009-05-27 15:39:09 +02:00
2009-08-22 05:09:52 +02:00
/*
* Migration du champ fk_remise_except dans llx_facturedet doit correspondre a
* lien dans llx_societe_remise_except vers llx_facturedet
*/
function migrate_restore_missing_links ( $db , $langs , $conf )
{
dolibarr_install_syslog ( " upgrade2::migrate_restore_missing_links " );
if (( $db -> type == 'mysql' || $db -> type == 'mysqli' ))
{
if ( versioncompare ( $db -> getVersionArray (), array ( 4 , 0 )) < 0 )
{
dolibarr_install_syslog ( " upgrade2::migrate_restore_missing_links Version of database too old to make this migrate action " );
return 0 ;
}
}
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationFixData' ) . " </b> (1)<br> \n " ;
$error = 0 ;
// Restore missing link for this cross foreign key (link 1 <=> 1). Direction 1.
$table1 = 'facturedet' ; $field1 = 'fk_remise_except' ;
$table2 = 'societe_remise_except' ; $field2 = 'fk_facture_line' ;
$db -> begin ();
$sql = " SELECT t1.rowid, t1. " . $field1 . " as field " ;
$sql .= " FROM " . MAIN_DB_PREFIX . $table1 . " as t1 " ;
$sql .= " WHERE t1. " . $field1 . " IS NOT NULL AND t1. " . $field1 . " NOT IN " ;
$sql .= " (SELECT t2.rowid FROM " . MAIN_DB_PREFIX . $table2 . " as t2 " ;
$sql .= " WHERE t1.rowid = t2. " . $field2 . " ) " ;
dolibarr_install_syslog ( " upgrade2:migrate_restore_missing_links DIRECTION 1 sql= " . $sql );
$resql = $db -> query ( $sql );
if ( $resql )
{
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
print 'Line ' . $obj -> rowid . ' in ' . $table1 . ' is linked to record ' . $obj -> field . ' in ' . $table2 . ' that has no link to ' . $table1 . '. We fix this.<br>' ;
$sql = " UPDATE " . MAIN_DB_PREFIX . $table2 . " SET " ;
$sql .= " " . $field2 . " = ' " . $obj -> rowid . " ' " ;
$sql .= " WHERE rowid= " . $obj -> field ;
$resql2 = $db -> query ( $sql );
if ( ! $resql2 )
{
$error ++ ;
dol_print_error ( $db );
}
//print ". ";
$i ++ ;
}
}
else print $langs -> trans ( 'AlreadyDone' ) . " <br> \n " ;
if ( $error == 0 )
{
$db -> commit ();
}
else
{
$db -> rollback ();
}
}
else
{
dol_print_error ( $db );
$db -> rollback ();
}
print '</td></tr>' ;
print '<tr><td colspan="4">' ;
print '<br>' ;
print '<b>' . $langs -> trans ( 'MigrationFixData' ) . " </b> (2)<br> \n " ;
// Restore missing link for this cross foreign key (link 1 <=> 1). Direction 2.
$table2 = 'facturedet' ; $field2 = 'fk_remise_except' ;
$table1 = 'societe_remise_except' ; $field1 = 'fk_facture_line' ;
$db -> begin ();
$sql = " SELECT t1.rowid, t1. " . $field1 . " as field " ;
$sql .= " FROM " . MAIN_DB_PREFIX . $table1 . " as t1 " ;
$sql .= " WHERE t1. " . $field1 . " IS NOT NULL AND t1. " . $field1 . " NOT IN " ;
$sql .= " (SELECT t2.rowid FROM " . MAIN_DB_PREFIX . $table2 . " as t2 " ;
$sql .= " WHERE t1.rowid = t2. " . $field2 . " ) " ;
dolibarr_install_syslog ( " upgrade2:migrate_restore_missing_links DIRECTION 2 sql= " . $sql );
$resql = $db -> query ( $sql );
if ( $resql )
{
$i = 0 ;
$num = $db -> num_rows ( $resql );
if ( $num )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
print 'Line ' . $obj -> rowid . ' in ' . $table1 . ' is linked to record ' . $obj -> field . ' in ' . $table2 . ' that has no link to ' . $table1 . '. We fix this.<br>' ;
$sql = " UPDATE " . MAIN_DB_PREFIX . $table2 . " SET " ;
$sql .= " " . $field2 . " = ' " . $obj -> rowid . " ' " ;
$sql .= " WHERE rowid= " . $obj -> field ;
$resql2 = $db -> query ( $sql );
if ( ! $resql2 )
{
$error ++ ;
dol_print_error ( $db );
}
//print ". ";
$i ++ ;
}
}
else print $langs -> trans ( 'AlreadyDone' ) . " <br> \n " ;
if ( $error == 0 )
{
$db -> commit ();
}
else
{
$db -> rollback ();
}
}
else
{
dol_print_error ( $db );
$db -> rollback ();
}
print '</td></tr>' ;
}
2008-05-21 05:53:52 +02:00
/* A faire egalement : Modif statut paye et fk_facture des factures payes completement
2007-12-11 21:08:53 +01:00
On recherche facture incorrecte :
select f . rowid , f . total_ttc as t1 , sum ( pf . amount ) as t2 from llx_facture as f , llx_paiement_facture as pf where pf . fk_facture = f . rowid and f . fk_statut in ( 2 , 3 ) and paye = 0 and close_code is null group by f . rowid
having f . total_ttc = sum ( pf . amount )
On les corrige :
update llx_facture set paye = 1 , fk_statut = 2 where close_code is null
and rowid in ( ... )
*/
2006-05-14 20:32:45 +02:00
?>