oldVersion(); error_log("upgrade:: à partir de la version = " . $old_version); // 0.2.0 - Stock le contenu en json plutôt qu'en serialized if (version_compare($old_version, '0.2.0', '<')) { $r = (array) DB::getInstance()->get('SELECT * FROM plugin_facturation_factures'); foreach ($r as $e) { $e->contenu =json_encode(unserialize((string) $e->contenu)); $db->update('plugin_facturation_factures', $e, $db->where('id', (int)$e->id)); } } // 0.3.0 - Migration Facturation\Config vers la table plugins if (version_compare($old_version, '0.3.0', '<')) { $conf = $db->getAssoc('SELECT cle, valeur FROM plugin_facturation_config ORDER BY cle;'); foreach($conf as $k=>$v) { $plugin->setConfigProperty($k, $v); } $plugin->save(); $db->exec('DROP TABLE `plugin_facturation_config`;'); } // 0.4.0 - if (version_compare($old_version, '0.4.0', '<')) { $db->exec(<<first('SELECT id, total FROM plugin_facturation_factures;'); if ($r && strpos((string) $r->total, '.') !== false) { // SQL -> total integer $db->exec(<<listAll(); foreach($factures as $k=>$f) { $contenu = []; foreach($f->contenu as $line => $content) { // Petit bug qui peut arriver avec des contenus mal enregistrés en db if (is_int($content)) { continue; } $contenu[] = ['designation' => $content['designation'], 'prix' => (int) ($content['prix'] * 100) ]; } $f->contenu = $contenu; $data = (array) $f; $data['total'] = (int) ($data['total'] * 100); unset($data['id']); unset($data['date_emission']); unset($data['date_echeance']); $facture->edit($f->id, $data); unset($contenu); } } } // 0.6.2 - if (version_compare($old_version, '0.6.2', '<')) { defined('DEVIS') || define('DEVIS', 0); defined('FACT') || define('FACT', 1); defined('CERFA') || define('CERFA', 2); defined('COTIS') || define('COTIS', 3); $facture = new Facture; $db->exec(<<listAll(); foreach($factures as $k=>$f) { if ($f->type_facture != CERFA) { continue; } $f->contenu = ['forme' => 1, 'nature' => 1, 'texte' => 0]; $data = (array) $f; unset($data['id']); unset($data['date_emission']); unset($data['date_echeance']); $facture->edit($f->id, $data); } } // 0.7.1 - Ajout clé config TTC/HT if (version_compare($old_version, '0.7.1', '<')) { $plugin->setConfigProperty('ttc', false); $plugin->save(); } // 0.8.1 - Signal menu item if (version_compare($old_version, '0.8.1', '<')) { $plugin->unregisterSignal('menu.item'); } // 0.8.5 Ajout champs SIREN/SIRET à la table clients if (version_compare($old_version, '0.8.5', '<')) { $db->exec(<<iterate($sql) as $client) { $db->insert('plugin_facturation_clients_tmp', $client); } // remplacer l'ancienne table par la nouvelle $db->exec(<<exec(<<exec(<<iterate($sql) as $client) { $db->insert('plugin_facturation_clients_tmp', $client); } // remplacer l'ancienne table par la nouvelle $db->exec(<<exec(<<iterate($sql) as $facture) { $db->insert('plugin_facturation_factures_tmp', $facture); } // remplacer l'ancienne table par la nouvelle $db->exec(<<getConfig($key) === null && array_key_exists($key, $defaults)) { $plugin->setConfigProperty($key, $defaults[$key]); } } $plugin->save(); } // 0.19 - Réparation des schémas partiellement migrés if (version_compare($old_version, '0.19', '<')) { $tables = [ 'plugin_facturation_clients' => [ 'siret' => 'siret TEXT', 'telephone' => 'telephone TEXT', 'email' => 'email TEXT', 'nom_contact' => 'nom_contact TEXT', 'note' => 'note TEXT', ], 'plugin_facturation_factures' => [ 'nom_contact' => 'nom_contact TEXT', 'numero_commande' => 'numero_commande TEXT', 'reference_acheteur' => 'reference_acheteur TEXT', ], ]; foreach ($tables as $table => $columns) { $schema = $db->getTableSchema($table); if (!$schema) { continue; } foreach ($columns as $column => $definition) { if (!isset($schema['columns'][$column])) { $db->exec(sprintf('ALTER TABLE %s ADD COLUMN %s;', $db->quoteIdentifier($table), $definition)); } } } } // 0.25 - Options d'affichage du rendu facture if (version_compare($old_version, '0.25', '<')) { $defaults = json_decode(file_get_contents(__DIR__ . '/config.json'), true); foreach (['invoice_show_address_borders', 'invoice_show_email', 'invoice_show_web'] as $key) { if ($plugin->getConfig($key) === null && array_key_exists($key, $defaults)) { $plugin->setConfigProperty($key, $defaults[$key]); } } $plugin->save(); }