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.
 
 

176 lines
6.4 KiB

<?php
/**
* Gestion du formulaire de d'édition de facture
*
* @plugin Factures &amp; devis
* @copyright 2013
* @author Cyril Marion - Ateliers CYM
* @licence GNU/GPL
* @package SPIP\Factures\Formulaires
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/actions');
include_spip('inc/editer');
include_spip('inc/config');
/**
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
*
* @param int|string $id_facture
* Identifiant du facture. 'new' pour un nouveau facture.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le facture créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un facture 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 facture, 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_facture_identifier_dist($id_facture='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
return serialize(array(intval($id_facture), $associer_objet));
}
/**
* Chargement du formulaire d'édition de facture
*
* Déclarer les champs postés et y intégrer les valeurs par défaut
*
* @uses formulaires_editer_objet_charger()
*
* @param int|string $id_facture
* Identifiant du facture. 'new' pour un nouveau facture.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le facture créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un facture 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 facture, 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_facture_charger_dist($id_facture='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$valeurs = formulaires_editer_objet_charger('facture',$id_facture,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
// sur une nouvelle facture, préremplir ce que l'on connait.
if (!intval($id_facture)) {
if ($id_organisation = _request('id_organisation')) {
$valeurs['id_organisation'] = $id_organisation;
}
$valeurs['id_organisation_emettrice'] = lire_config('factures/id_organisation_emettrice', 0);
$valeurs['date_facture'] = date("Y-m-d H:i:00", time());
$facture_reference = charger_fonction('facture_reference', 'inc');
$valeurs['num_facture'] = $facture_reference($valeurs);
}
return $valeurs;
}
/**
* Vérifications du formulaire d'édition de facture
*
* Vérifier les champs postés et signaler d'éventuelles erreurs
*
* @uses formulaires_editer_objet_verifier()
*
* @param int|string $id_facture
* Identifiant du facture. 'new' pour un nouveau facture.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le facture créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un facture 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 facture, 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_facture_verifier_dist($id_facture='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$erreurs = formulaires_editer_objet_verifier('facture',$id_facture);
// verifier et changer en datetime sql la date envoyee
$verifier = charger_fonction('verifier', 'inc');
$dates = array('date_facture','fin_validite');
foreach($dates AS $champ) {
$normaliser = null;
if ($erreur = $verifier(_request($champ), 'date', array('normaliser'=>'datetime'), $normaliser)) {
$erreurs[$champ] = $erreur;
// si une valeur de normalisation a ete transmis, la prendre.
} elseif (!is_null($normaliser)) {
set_request($champ, $normaliser);
} elseif (!_request($champ)) {
set_request($champ, null);
}
}
return $erreurs;
}
/**
* Traitement du formulaire d'édition de facture
*
* Traiter les champs postés
*
* @uses formulaires_editer_objet_traiter()
*
* @param int|string $id_facture
* Identifiant du facture. 'new' pour un nouveau facture.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le facture créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un facture 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 facture, 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_facture_traiter_dist($id_facture='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$res = formulaires_editer_objet_traiter('facture',$id_facture,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
// Un lien a prendre en compte ?
if ($associer_objet AND $id_facture = $res['id_facture']) {
list($objet, $id_objet) = explode('|', $associer_objet);
if ($objet AND $id_objet AND autoriser('modifier', $objet, $id_objet)) {
include_spip('action/editer_liens');
objet_associer(array('facture' => $id_facture), array($objet => $id_objet));
if (isset($res['redirect'])) {
$res['redirect'] = parametre_url ($res['redirect'], "id_lien_ajoute", $id_facture, '&');
}
}
}
return $res;
}
?>