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.
 
 
 

263 lines
8.1 KiB

<?php
/**
* Gestion du formulaire de d'édition d'une commande
*
* @plugin Commandes
* @copyright 2014
* @author Ateliers CYM, Matthieu Marcillaud, Les Développements Durables
* @licence GPL 3
* @package SPIP\Commandes\Formulaires
*/
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/actions');
include_spip('inc/editer');
/**
* Description des saisies du formulaire d'édition d'un détail de commande
*
* @param int|string $id_commande
* Identifiant du commande. 'new' pour une nouvelle commande.
* @param string $retour
* URL de redirection après le traitement
* @return array
* Description des saisies
*/
function formulaires_editer_commandes_detail_saisies($id_commandes_detail='new', $retour=''){
// Il est possible de prédéfinir la commande en donnant la référence
$reference_defaut = _request('reference');
return array(
array(
'saisie' => 'input',
'options' => array(
'nom' => 'reference',
'label' => _T('commandes:reference_label'),
'obligatoire' => 'oui',
'defaut' => $reference_defaut,
)
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'descriptif',
'label' => _T('commandes:detail_champ_descriptif_label'),
'explication' => _T('commandes:detail_champ_descriptif_explication'),
//'obligatoire' => 'oui', // Rempli automatiquement si vide
)
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'objet',
'label' => _T('commandes:detail_champ_objet_label'),
)
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'id_objet',
'label' => _T('commandes:detail_champ_id_objet_label'),
),
'verifier' => array(
'type' => 'entier',
'options' => array(
'min' => 1,
),
),
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'quantite',
'label' => _T('commandes:detail_champ_quantite_label'),
),
'verifier' => array(
'type' => 'entier',
'options' => array(
'min' => 1,
),
),
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'prix_unitaire_ht',
'label' => _T('commandes:detail_champ_prix_unitaire_ht_label'),
'obligatoire' => 'oui',
'defaut' => 0,
),
'verifier' => array(
'type' => 'decimal',
),
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'reduction',
'label' => _T('commandes:detail_champ_reduction_label'),
'obligatoire' => 'non',
'defaut' => 0,
),
'verifier' => array(
'type' => 'decimal',
'options' => array(
'min' => 0,
'max' => 1,
),
),
),
array(
'saisie' => 'input',
'options' => array(
'nom' => 'taxe',
'label' => _T('commandes:detail_champ_taxe_label'),
'placeholder' => 0.2,
),
'verifier' => array(
'type' => 'decimal',
'options' => array(
'min' => 0,
'max' => 1,
),
),
),
);
}
/**
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
*
* @param int|string $id_commande
* Identifiant du commande. 'new' pour une nouvelle commande.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un commande source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du commande, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return string
* Hash du formulaire
*/
function formulaires_editer_commande_identifier_dist($id_commandes_detail='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
return serialize(array(intval($id_commandes_detail)));
}
/**
* Chargement du formulaire d'édition d'un détail de commande
*
* Déclarer les champs postés et y intégrer les valeurs par défaut
*
* @uses formulaires_editer_objet_charger()
*
* @param int|string $id_commande
* Identifiant du commande. 'new' pour une nouvelle commande.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un commande source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du commande, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Environnement du formulaire
*/
function formulaires_editer_commandes_detail_charger($id_commandes_detail='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$valeurs = formulaires_editer_objet_charger('commandes_detail', $id_commandes_detail, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
unset($valeurs['id_commandes_detail']); // ?
// Charger la référence de la commande de ce détail
if ($valeurs['id_commande'] > 0) {
$valeurs['reference'] = sql_getfetsel('reference', 'spip_commandes', 'id_commande = '.intval($valeurs['id_commande']));
}
return $valeurs;
}
/**
* Vérifications du formulaire d'édition d'un détail de commande
*
* Vérifier les champs postés et signaler d'éventuelles erreurs
*
* @uses formulaires_editer_objet_verifier()
*
* @param int|string $id_commande
* Identifiant du commande. 'new' pour une nouvelle commande.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un commande source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du commande, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Tableau des erreurs
*/
function formulaires_editer_commandes_detail_verifier($id_commandes_detail='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$erreurs = array();
// La référence doit être celle d'une vraie commande existante !
if (
$reference = _request('reference')
and !$id_commande = sql_getfetsel('id_commande', 'spip_commandes', 'reference = '.sql_quote($reference))
) {
$erreurs['reference'] = _T('commandes:erreur_reference_inexistante');
}
// Si c'est le cas, on remplit le champ id_commande
else {
set_request('id_commande', $id_commande);
}
// Si le descriptif est vide ET qu'il y a un objet valide, on remplit le descriptif
if (
!_request('descriptif')
and $objet = _request('objet')
and $id_objet = _request('id_objet')
and $descriptif = generer_info_entite($id_objet, $objet, 'titre')
) {
set_request('descriptif', $descriptif);
}
return $erreurs;
}
/**
* Traitement du formulaire d'édition d'un détail de commande
*
* Traiter les champs postés
*
* @uses formulaires_editer_objet_traiter()
*
* @param int|string $id_commande
* Identifiant du commande. 'new' pour une nouvelle commande.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un commande source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du commande, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Retours des traitements
*/
function formulaires_editer_commandes_detail_traiter($id_commandes_detail='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
return formulaires_editer_objet_traiter('commandes_detail', $id_commandes_detail, '', '', $retour, $config_fonc, $row, $hidden);
}
?>