You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

197 lines
6.0 KiB

<?php
/**
* Fichier gérant l'installation et désinstallation du plugin Commandes
*
* @plugin Commandes
* @copyright 2014
* @author Ateliers CYM, Matthieu Marcillaud, Les Développements Durables
* @licence GPL 3
* @package SPIP\Commandes\Installation
*/
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'installation et de mise à jour du plugin Commandes.
*
* @uses commandes_id_premier_webmestre()
* @uses commandes_lister_statuts()
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @param string $version_cible
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
* */
function commandes_upgrade($nom_meta_base_version, $version_cible) {
include_spip('commandes_fonctions');
include_spip('inc/config');
$maj = array();
$config = lire_config('commandes');
if (!is_array($config)) {
$config = array();
}
$id_webmestre = commandes_id_premier_webmestre();
$config = array_merge(array(
'duree_vie' => '',
'activer' => '',
'quand' => array_keys(commandes_lister_statuts()),
'expediteur' => 'webmaster',
'expediteur_webmaster' => $id_webmestre,
'expediteur_administrateur' => '',
'expediteur_email' => '',
'vendeur' => 'webmaster',
'vendeur_webmaster' => $id_webmestre,
'vendeur_administrateur' => '',
'vendeur_email' => '',
'client' => 'on'
), $config);
$maj['create'] = array(
array(
'maj_tables', array('spip_commandes', 'spip_commandes_details', 'spip_commandes_liens'),
),
array(
'ecrire_config', 'commandes', $config
),
);
$maj['0.2'] = array(
array('maj_tables', array('spip_commandes_details'))
);
$maj['0.3'] = array(
array(
'ecrire_config', 'commandes', array('duree_vie' => 3600)
),
);
$maj['0.4'] = array(
array('sql_alter', 'TABLE spip_commandes ADD mode varchar(25) not null default ""')
);
$maj['0.5.0'] = array(
array(
'sql_updateq',
'spip_commandes_details',
array('statut' => 'attente'),
array(
'statut = ""',
'id_commande IN (select id_commande from spip_commandes where statut in ("encours","attente","paye","partiel","erreur"))',
),
),
array(
'sql_updateq',
'spip_commandes_details',
array('statut' => 'envoye'),
array(
'statut = ""',
'id_commande IN (select id_commande from spip_commandes where statut="envoye")',
),
),
array(
'sql_updateq',
'spip_commandes_details',
array('statut' => 'retour'),
array(
'statut = ""',
'id_commande IN (select id_commande from spip_commandes where statut in ("retour","retour_partiel"))',
)
),
);
// Ajouter une table de liens pour les commandes
$maj['0.6.0'] = array(
array('maj_tables', array('spip_commandes_liens')),
);
// Ajouter des champs (bank_uid, echeances_type, echeances) pour gérer d'éventuels renouvellements bancaires automatiques
$maj['0.7.0'] = array(
array('maj_tables', array('spip_commandes')),
);
// Ajout du champ source
$maj['0.7.1'] = array(
array('maj_tables', array('spip_commandes'))
);
// TVA à taux réduit 1,05% pour les DOM, il faut 4 décimales pour le champ taxe
$maj['0.7.2'] = array(
array('maj_tables', array('spip_commandes')),
array('sql_alter', 'TABLE spip_commandes_details CHANGE taxe taxe DECIMAL(4,4) NULL DEFAULT NULL')
);
// Corriger les UID bancaires manquant dans les commandes
$maj['0.7.4'] = array(
array('commandes_maj_0_7_4'),
);
// ajout du champ echeances_date_debut
$maj['0.7.5'] = array(
array('maj_tables', array('spip_commandes')),
);
// ajout du champ taxe_exoneree_raison
$maj['0.7.6'] = array(
array('maj_tables', array('spip_commandes')),
);
// ajout du champ reduction
$maj['0.7.7'] = array(
array('maj_tables', array('spip_commandes_details')),
);
// passer en decimal plutôt que float
$maj['0.7.8'] = array(
array('sql_alter', 'TABLE spip_commandes_details CHANGE prix_unitaire_ht prix_unitaire_ht DECIMAL(20,6) NOT NULL DEFAULT 0'),
);
// refaire la même màj car celleux qui avaient installé à neuf depuis avaient toujours float
$maj['0.7.9'] = array(
array('sql_alter', 'TABLE spip_commandes_details CHANGE prix_unitaire_ht prix_unitaire_ht DECIMAL(20,6) NOT NULL DEFAULT 0'),
);
// le champ reduction peut etre 1.0000 mais du coup il n'est plus clampé par construction en base, faire attention a sa manipulation
$maj['0.8.0'] = array(
array('sql_alter', 'TABLE spip_commandes_details CHANGE reduction reduction decimal(5,4) not null default 0'),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
// Replacer les UID bancaires dans les commandes à partir des transactions
function commandes_maj_0_7_4() {
// On récupère toutes les commandes qui ont un renouvellement récurent
if ($commandes_recurentes = sql_allfetsel('id_commande', 'spip_commandes', 'echeances_type!=""')) {
$commandes_recurentes = array_map('reset', $commandes_recurentes);
foreach ($commandes_recurentes as $id_commande) {
$id_commande = intval($id_commande);
// On récupère l'UID chez le prestataire
if ($abo_uid = sql_getfetsel('abo_uid', 'spip_transactions', 'id_commande = '.$id_commande)) {
// On le copie dans la commande
sql_updateq('spip_commandes', array('bank_uid'=>$abo_uid), 'id_commande = '.$id_commande);
}
}
}
}
/**
* Fonction de désinstallation du plugin Commandes.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @return void
* */
function commandes_vider_tables($nom_meta_base_version) {
sql_drop_table("spip_commandes,spip_commandes_details,spip_commandes_liens");
# Nettoyer les versionnages et forums
sql_delete("spip_versions", sql_in("objet", array('commande')));
sql_delete("spip_versions_fragments", sql_in("objet", array('commande')));
effacer_meta($nom_meta_base_version);
}