Browse Source

Nouveau champ non utilisé par défaut sur les détails : infos_extras. Ce champ sert à stocker n'importe quelles infos supplémentaires dans un tableau encodé en JSON. Dans la fonction d'api pour ajouter un détail, on donne un tableau PHP, comme le reste. Dans pre_edition, si jamais le champ n'est pas une string, on le json_encode (donc depuis un formulaire on peut renvoyer un tableau PHP aussi ou à donner à objet_modifier). En squelette #INFOS_EXTRAS est déjà décodé. Par cohérence ça sera bien d'ajouter un système similaire, dans le plugin Paniers (mais là je n'utilise pas de paniers sous la main pour aujourd'hui).

v1 v1.18.0
RastaPopoulos 2 years ago
parent
commit
20d2439d92
  1. 3
      base/commandes.php
  2. 5
      commandes_administrations.php
  3. 10
      commandes_pipelines.php
  4. 7
      inc/commandes.php
  5. 4
      paquet.xml

3
base/commandes.php

@ -30,6 +30,8 @@ function commandes_declarer_tables_interfaces($interfaces) {
// Toujours désérialiser les échéances
$interfaces['table_des_traitements']['ECHEANCES']['commandes'] = 'unserialize(%s)';
// Toujours désérialiser les infos extras
$interfaces['table_des_traitements']['INFOS_EXTRAS']['commandes_details'] = 'json_decode(%s, true)';
return $interfaces;
}
@ -137,6 +139,7 @@ function commandes_declarer_tables_objets_sql($tables) {
'id_commandes_detail' => 'bigint(21) not null',
'id_commande' => 'bigint(21) not null default 0',
'descriptif' => 'text not null default ""',
'infos_extras' => 'text not null default ""',
'quantite' => 'int not null default 0',
'prix_unitaire_ht' => 'decimal(20,6) not null default 0',
'taxe' => 'decimal(4,4) not null default 0',

5
commandes_administrations.php

@ -157,6 +157,11 @@ function commandes_upgrade($nom_meta_base_version, $version_cible) {
$maj['0.8.0'] = array(
array('sql_alter', 'TABLE spip_commandes_details CHANGE reduction reduction decimal(5,4) not null default 0'),
);
// ajout du champ infos_extras
$maj['0.9.0'] = array(
array('maj_tables', array('spip_commandes_details')),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);

10
commandes_pipelines.php

@ -529,5 +529,15 @@ function commandes_pre_edition($flux){
}
*/
}
elseif (
$flux['args']['table'] == 'spip_commandes_details'
and $flux['args']['action'] == 'modifier'
and isset($flux['data']['infos_extras'])
and !is_string($flux['data']['infos_extras'])
) {
// On assure que le champ s'enregistre bien en texte
$flux['data']['infos_extras'] = json_encode($flux['data']['infos_extras']);
}
return $flux;
}

7
inc/commandes.php

@ -144,6 +144,7 @@ function commandes_effacer($ids_commandes){
* objet : type de l'objet ajoute
* id_objet : id de l'objet ajoute
* quantite : quantite ajoutee
* infos_extras : tableau PHP d'informations quelconques
* @param bool $ajouter
* @return int
*/
@ -162,12 +163,18 @@ function commandes_ajouter_detail($id_commande, $emplette, $ajouter = true){
} else {
$taxe = 0;
}
$infos_extras = '';
if (isset($emplette['infos_extras']) and is_array($emplette['infos_extras'])) {
$infos_extras = json_encode($emplette['infos_extras']);
}
$set = array(
'id_commande' => $id_commande,
'objet' => $emplette['objet'],
'id_objet' => $emplette['id_objet'],
'descriptif' => generer_info_entite($emplette['id_objet'], $emplette['objet'], 'titre', '*'),
'infos_extras' => $infos_extras,
'quantite' => $emplette['quantite'],
'prix_unitaire_ht' => $prix_ht,
'taxe' => $taxe,

4
paquet.xml

@ -1,8 +1,8 @@
<paquet
prefix="commandes"
categorie="divers"
version="1.17.3"
schema="0.8.0"
version="1.18.0"
schema="0.9.0"
etat="stable"
compatibilite="[3.0.5;3.2.*]"
logo="prive/themes/spip/images/commande.png"

Loading…
Cancel
Save