Browse Source

Commit 1.0.8 : pouvoir ajouter des lignes de factures dans une facture (commit pour cym avec ses modifications à lui)

master
marcimat@rezo.net 10 years ago
parent
commit
12ac779865
  1. 46
      .gitattributes
  2. 12
      base/factures.php
  3. 21
      fabrique_factures.php
  4. 10
      factures_administrations.php
  5. 24
      factures_autorisations.php
  6. 45
      formulaires/editer_factures_ligne.html
  7. 151
      formulaires/editer_factures_ligne.php
  8. 12
      lang/factures_fr.php
  9. 52
      lang/factures_ligne_fr.php
  10. 22
      paquet.xml
  11. 2
      prive/objets/contenu/facture.html
  12. 38
      prive/objets/contenu/factures_ligne.html
  13. 7
      prive/objets/infos/facture.html
  14. 7
      prive/objets/infos/factures_ligne.html
  15. 34
      prive/objets/liste/factures_lignes.html
  16. 69
      prive/objets/liste/factures_lignes_associer.html
  17. 18
      prive/objets/liste/factures_lignes_associer_fonctions.php
  18. 60
      prive/objets/liste/factures_lignes_lies.html
  19. 17
      prive/objets/liste/factures_lignes_lies_fonctions.php
  20. 18
      prive/squelettes/contenu/facture.html
  21. 8
      prive/squelettes/contenu/factures.html
  22. 46
      prive/squelettes/contenu/factures_ligne.html
  23. 30
      prive/squelettes/contenu/factures_ligne_edit.html
  24. 8
      prive/squelettes/contenu/factures_lignes.html
  25. BIN
      prive/themes/spip/images/facture-add-16.png
  26. BIN
      prive/themes/spip/images/facture-add-24.png
  27. BIN
      prive/themes/spip/images/facture-add-32.png
  28. BIN
      prive/themes/spip/images/facture-del-16.png
  29. BIN
      prive/themes/spip/images/facture-del-24.png
  30. BIN
      prive/themes/spip/images/facture-del-32.png
  31. BIN
      prive/themes/spip/images/facture-edit-16.png
  32. BIN
      prive/themes/spip/images/facture-edit-24.png
  33. BIN
      prive/themes/spip/images/facture-edit-32.png
  34. BIN
      prive/themes/spip/images/facture-new-24.png
  35. BIN
      prive/themes/spip/images/facture-new-32.png
  36. BIN
      prive/themes/spip/images/factures_ligne-12.png
  37. BIN
      prive/themes/spip/images/factures_ligne-16.png
  38. BIN
      prive/themes/spip/images/factures_ligne-24.png
  39. BIN
      prive/themes/spip/images/factures_ligne-32.png
  40. BIN
      prive/themes/spip/images/factures_ligne-add-16.png
  41. BIN
      prive/themes/spip/images/factures_ligne-add-24.png
  42. BIN
      prive/themes/spip/images/factures_ligne-add-32.png
  43. BIN
      prive/themes/spip/images/factures_ligne-del-16.png
  44. BIN
      prive/themes/spip/images/factures_ligne-del-24.png
  45. BIN
      prive/themes/spip/images/factures_ligne-del-32.png
  46. BIN
      prive/themes/spip/images/factures_ligne-edit-16.png
  47. BIN
      prive/themes/spip/images/factures_ligne-edit-24.png
  48. BIN
      prive/themes/spip/images/factures_ligne-edit-32.png
  49. BIN
      prive/themes/spip/images/factures_ligne-new-16.png
  50. BIN
      prive/themes/spip/images/factures_ligne-new-24.png
  51. BIN
      prive/themes/spip/images/factures_ligne-new-32.png
  52. 20
      saisies-vues/factures.html
  53. 20
      saisies-vues/factures_lignes.html
  54. 13
      saisies/factures.html
  55. 13
      saisies/factures_lignes.html

46
.gitattributes vendored

@ -7,22 +7,68 @@ base/factures.php -text
formulaires/configurer_factures.html -text
formulaires/editer_facture.html -text
formulaires/editer_facture.php -text
formulaires/editer_factures_ligne.html -text
formulaires/editer_factures_ligne.php -text
lang/facture_fr.php -text
lang/factures_fr.php -text
lang/factures_ligne_fr.php -text
lang/paquet-factures_fr.php -text
/paquet.xml -text
prive/objets/contenu/facture.html -text
prive/objets/contenu/factures_ligne.html -text
prive/objets/contenu/lignes_facture.html -text
prive/objets/infos/facture.html -text
prive/objets/infos/factures_ligne.html -text
prive/objets/liste/factures.html -text
prive/objets/liste/factures_associer.html -text
prive/objets/liste/factures_associer_fonctions.php -text
prive/objets/liste/factures_lies.html -text
prive/objets/liste/factures_lies_fonctions.php -text
prive/objets/liste/factures_lignes.html -text
prive/objets/liste/factures_lignes_associer.html -text
prive/objets/liste/factures_lignes_associer_fonctions.php -text
prive/objets/liste/factures_lignes_lies.html -text
prive/objets/liste/factures_lignes_lies_fonctions.php -text
prive/squelettes/contenu/configurer_factures.html -text
prive/squelettes/contenu/facture.html -text
prive/squelettes/contenu/facture_edit.html -text
prive/squelettes/contenu/factures.html -text
prive/squelettes/contenu/factures_ligne.html -text
prive/squelettes/contenu/factures_ligne_edit.html -text
prive/squelettes/contenu/factures_lignes.html -text
prive/themes/spip/images/facture-12.png -text svneol=unset#image/png
prive/themes/spip/images/facture-16.png -text svneol=unset#image/png
prive/themes/spip/images/facture-24.png -text svneol=unset#image/png
prive/themes/spip/images/facture-32.png -text svneol=unset#image/png
prive/themes/spip/images/facture-add-16.png -text
prive/themes/spip/images/facture-add-24.png -text
prive/themes/spip/images/facture-add-32.png -text
prive/themes/spip/images/facture-del-16.png -text
prive/themes/spip/images/facture-del-24.png -text
prive/themes/spip/images/facture-del-32.png -text
prive/themes/spip/images/facture-edit-16.png -text
prive/themes/spip/images/facture-edit-24.png -text
prive/themes/spip/images/facture-edit-32.png -text
prive/themes/spip/images/facture-new-16.png -text svneol=unset#image/png
prive/themes/spip/images/facture-new-24.png -text
prive/themes/spip/images/facture-new-32.png -text
prive/themes/spip/images/factures_ligne-12.png -text
prive/themes/spip/images/factures_ligne-16.png -text
prive/themes/spip/images/factures_ligne-24.png -text
prive/themes/spip/images/factures_ligne-32.png -text
prive/themes/spip/images/factures_ligne-add-16.png -text
prive/themes/spip/images/factures_ligne-add-24.png -text
prive/themes/spip/images/factures_ligne-add-32.png -text
prive/themes/spip/images/factures_ligne-del-16.png -text
prive/themes/spip/images/factures_ligne-del-24.png -text
prive/themes/spip/images/factures_ligne-del-32.png -text
prive/themes/spip/images/factures_ligne-edit-16.png -text
prive/themes/spip/images/factures_ligne-edit-24.png -text
prive/themes/spip/images/factures_ligne-edit-32.png -text
prive/themes/spip/images/factures_ligne-new-16.png -text
prive/themes/spip/images/factures_ligne-new-24.png -text
prive/themes/spip/images/factures_ligne-new-32.png -text
saisies-vues/factures.html -text
saisies-vues/factures_lignes.html -text
saisies/factures.html -text
saisies/factures_lignes.html -text

12
base/factures.php

@ -24,7 +24,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
function factures_declarer_tables_interfaces($interfaces) {
$interfaces['table_des_tables']['factures'] = 'factures';
$interfaces['table_des_tables']['lignes_factures'] = 'lignes_factures';
$interfaces['table_des_tables']['factures_lignes'] = 'factures_lignes';
return $interfaces;
}
@ -75,12 +75,12 @@ function factures_declarer_tables_objets_sql($tables) {
);
$tables['spip_lignes_factures'] = array(
'type' => 'ligne',
$tables['spip_factures_lignes'] = array(
'type' => 'factures_ligne',
'principale' => "oui",
'table_objet_surnoms' => array('lignesfacture'), // table_objet('ligne') => 'lignes_factures'
'table_objet_surnoms' => array('facturesligne'), // table_objet('factures_ligne') => 'factures_lignes'
'field'=> array(
"id_ligne" => "bigint(21) NOT NULL",
"id_factures_ligne" => "bigint(21) NOT NULL",
"id_facture" => "int(11) NOT NULL DEFAULT '0'",
"position" => "int(11) DEFAULT NULL",
"quantite" => "float DEFAULT NULL",
@ -91,7 +91,7 @@ function factures_declarer_tables_objets_sql($tables) {
"maj" => "TIMESTAMP"
),
'key' => array(
"PRIMARY KEY" => "id_ligne",
"PRIMARY KEY" => "id_factures_ligne",
),
'titre' => "designation AS titre, '' AS lang",
#'date' => "",

21
fabrique_factures.php

@ -2,7 +2,7 @@
/**
* Fichier généré par la Fabrique de plugin v5
* le 2013-04-04 17:44:27
* le 2013-04-05 11:50:18
*
* Ce fichier de sauvegarde peut servir à recréer
* votre plugin avec le plugin «Fabrique» qui a servi à le créer.
@ -30,7 +30,7 @@ $data = array (
'slogan' => 'Facturer et faire des devis avec SPIP',
'description' => 'Factures & devis permet d\'éditer, imprimer, archiver facilement vos devis et factures.',
'prefixe' => 'factures',
'version' => '1.0.7',
'version' => '1.0.9',
'auteur' => 'Cyril Marion - Ateliers CYM',
'auteur_lien' => 'http://www.cym.fr',
'licence' => 'GNU/GPL',
@ -41,7 +41,7 @@ $data = array (
'administrations' => 'on',
'schema' => '1.0.0',
'formulaire_config' => 'on',
'formulaire_config_titre' => 'Configurer Factures et Devis',
'formulaire_config_titre' => 'Configurer Factures & Devis',
'fichiers' =>
array (
0 => 'autorisations',
@ -67,7 +67,8 @@ $data = array (
'scripts' =>
array (
'pre_copie' => '',
'post_creation' => '',
'post_creation' => 'include_once($destination_ancien_plugin . \'factures_post_creation.php\');
factures_post_creation($data, $destination_plugin, $destination_ancien_plugin);',
),
'exemples' => '',
),
@ -348,10 +349,10 @@ $data = array (
'nom_singulier' => 'Ligne de facture',
'genre' => 'feminin',
'logo_variantes' => 'on',
'table' => 'spip_lignes_factures',
'cle_primaire' => 'id_ligne',
'table' => 'spip_factures_lignes',
'cle_primaire' => 'id_factures_ligne',
'cle_primaire_sql' => 'bigint(21) NOT NULL',
'table_type' => 'ligne',
'table_type' => 'factures_ligne',
'champs' =>
array (
0 =>
@ -365,7 +366,7 @@ $data = array (
1 => 'obligatoire',
),
'recherche' => '',
'saisie' => 'facture',
'saisie' => 'factures',
'explication' => '',
'saisie_options' => '',
),
@ -502,6 +503,10 @@ $data = array (
array (
0 => 'outils_rapides',
),
'saisies' =>
array (
0 => 'objets',
),
),
),
'images' =>

10
factures_administrations.php

@ -24,7 +24,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
function factures_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(array('maj_tables', array('spip_factures', 'spip_lignes_factures')));
$maj['create'] = array(array('maj_tables', array('spip_factures', 'spip_factures_lignes')));
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
@ -41,12 +41,12 @@ function factures_upgrade($nom_meta_base_version, $version_cible) {
function factures_vider_tables($nom_meta_base_version) {
sql_drop_table("spip_factures");
sql_drop_table("spip_lignes_factures");
sql_drop_table("spip_factures_lignes");
# Nettoyer les versionnages et forums
sql_delete("spip_versions", sql_in("objet", array('facture', 'ligne')));
sql_delete("spip_versions_fragments", sql_in("objet", array('facture', 'ligne')));
sql_delete("spip_forum", sql_in("objet", array('facture', 'ligne')));
sql_delete("spip_versions", sql_in("objet", array('facture', 'factures_ligne')));
sql_delete("spip_versions_fragments", sql_in("objet", array('facture', 'factures_ligne')));
sql_delete("spip_forum", sql_in("objet", array('facture', 'factures_ligne')));
effacer_meta($nom_meta_base_version);
}

24
factures_autorisations.php

@ -109,13 +109,13 @@ function autoriser_facture_supprimer_dist($faire, $type, $id, $qui, $opt) {
// -----------------
// Objet lignes_factures
// Objet factures_lignes
/**
* Autorisation de voir le bouton d'accès rapide de création (ligne)
* Autorisation de voir le bouton d'accès rapide de création (facturesligne)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
@ -124,12 +124,12 @@ function autoriser_facture_supprimer_dist($faire, $type, $id, $qui, $opt) {
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_lignecreer_menu_dist($faire, $type, $id, $qui, $opt){
return autoriser('creer', 'ligne', '', $qui, $opt);
function autoriser_factureslignecreer_menu_dist($faire, $type, $id, $qui, $opt){
return autoriser('creer', 'factures_ligne', '', $qui, $opt);
}
/**
* Autorisation de créer (ligne)
* Autorisation de créer (facturesligne)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
@ -138,12 +138,12 @@ function autoriser_lignecreer_menu_dist($faire, $type, $id, $qui, $opt){
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_ligne_creer_dist($faire, $type, $id, $qui, $opt) {
function autoriser_facturesligne_creer_dist($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo', '1comite'));
}
/**
* Autorisation de voir (ligne)
* Autorisation de voir (facturesligne)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
@ -152,12 +152,12 @@ function autoriser_ligne_creer_dist($faire, $type, $id, $qui, $opt) {
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_ligne_voir_dist($faire, $type, $id, $qui, $opt) {
function autoriser_facturesligne_voir_dist($faire, $type, $id, $qui, $opt) {
return true;
}
/**
* Autorisation de modifier (ligne)
* Autorisation de modifier (facturesligne)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
@ -166,12 +166,12 @@ function autoriser_ligne_voir_dist($faire, $type, $id, $qui, $opt) {
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_ligne_modifier_dist($faire, $type, $id, $qui, $opt) {
function autoriser_facturesligne_modifier_dist($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo', '1comite'));
}
/**
* Autorisation de supprimer (ligne)
* Autorisation de supprimer (facturesligne)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
@ -180,7 +180,7 @@ function autoriser_ligne_modifier_dist($faire, $type, $id, $qui, $opt) {
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_ligne_supprimer_dist($faire, $type, $id, $qui, $opt) {
function autoriser_facturesligne_supprimer_dist($faire, $type, $id, $qui, $opt) {
return $qui['statut'] == '0minirezo' AND !$qui['restreint'];
}

45
formulaires/editer_factures_ligne.html

@ -0,0 +1,45 @@
<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_factures_ligne,nouveau}'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<form method='post' action='#ENV{action}'><div>
#ACTION_FORMULAIRE{#ENV{action}}
<input type='hidden' name='id_factures_ligne' value='#ENV{id_factures_ligne}' />
<ul>
[(#SAISIE{factures, id_facture, obligatoire=oui,
label=<:factures_ligne:label_id_facture:>})]
[(#SAISIE{input, position,
label=<:factures_ligne:label_position:>,
explication=<:factures_ligne:explication_position:> })]
[(#SAISIE{input, quantite, obligatoire=oui,
label=<:factures_ligne:label_quantite:>,
explication=<:factures_ligne:explication_quantite:> })]
[(#SAISIE{input, unite, obligatoire=oui,
label=<:factures_ligne:label_unite:>,
explication=<:factures_ligne:explication_unite:> })]
[(#SAISIE{textarea, designation, obligatoire=oui,
label=<:factures_ligne:label_designation:>,
explication=<:factures_ligne:explication_designation:> })]
[(#SAISIE{input, prix_unitaire_ht,
label=<:factures_ligne:label_prix_unitaire_ht:>,
explication=<:factures_ligne:explication_prix_unitaire_ht:> ,
type=number,attributs='step=0.01'})]
[(#SAISIE{textarea, commentaire,
label=<:factures_ligne:label_commentaire:>,
explication=<:factures_ligne:explication_commentaire:> })]
</ul>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
</div></form>
]
</div>

151
formulaires/editer_factures_ligne.php

@ -0,0 +1,151 @@
<?php
/**
* Gestion du formulaire de d'édition de factures_ligne
*
* @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');
/**
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
*
* @param int|string $id_factures_ligne
* Identifiant du factures_ligne. 'new' pour un nouveau factures_ligne.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le factures_ligne créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un factures_ligne 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 factures_ligne, 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_factures_ligne_identifier_dist($id_factures_ligne='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
return serialize(array(intval($id_factures_ligne), $associer_objet));
}
/**
* Chargement du formulaire d'édition de factures_ligne
*
* Déclarer les champs postés et y intégrer les valeurs par défaut
*
* @uses formulaires_editer_objet_charger()
*
* @param int|string $id_factures_ligne
* Identifiant du factures_ligne. 'new' pour un nouveau factures_ligne.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le factures_ligne créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un factures_ligne 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 factures_ligne, 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_factures_ligne_charger_dist($id_factures_ligne='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$valeurs = formulaires_editer_objet_charger('factures_ligne',$id_factures_ligne,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
if ($id_facture = _request('id_parent')){
$valeurs['id_facture'] = $id_facture;
}
return $valeurs;
}
/**
* Vérifications du formulaire d'édition de factures_ligne
*
* Vérifier les champs postés et signaler d'éventuelles erreurs
*
* @uses formulaires_editer_objet_verifier()
*
* @param int|string $id_factures_ligne
* Identifiant du factures_ligne. 'new' pour un nouveau factures_ligne.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le factures_ligne créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un factures_ligne 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 factures_ligne, 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_factures_ligne_verifier_dist($id_factures_ligne='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
return formulaires_editer_objet_verifier('factures_ligne',$id_factures_ligne, array('id_facture', 'quantite', 'unite', 'designation'));
}
/**
* Traitement du formulaire d'édition de factures_ligne
*
* Traiter les champs postés
*
* @uses formulaires_editer_objet_traiter()
*
* @param int|string $id_factures_ligne
* Identifiant du factures_ligne. 'new' pour un nouveau factures_ligne.
* @param string $retour
* URL de redirection après le traitement
* @param string $associer_objet
* Éventuel `objet|x` indiquant de lier le factures_ligne créé à cet objet,
* tel que `article|3`
* @param int $lier_trad
* Identifiant éventuel d'un factures_ligne 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 factures_ligne, 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_factures_ligne_traiter_dist($id_factures_ligne='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
$res = formulaires_editer_objet_traiter('factures_ligne',$id_factures_ligne,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
// Un lien a prendre en compte ?
if ($associer_objet AND $id_factures_ligne = $res['id_factures_ligne']) {
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('factures_ligne' => $id_factures_ligne), array($objet => $id_objet));
if (isset($res['redirect'])) {
$res['redirect'] = parametre_url ($res['redirect'], "id_lien_ajoute", $id_factures_ligne, '&');
}
}
}
return $res;
}
?>

12
lang/factures_fr.php

@ -2,22 +2,22 @@
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// F
'factures_titre' => 'Factures & devis',
// I
'info_detail_lignes_facture' => "Détails des lignes de la facture",
// C
'cfg_exemple' => 'Exemple',
'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_titre_parametrages' => 'Paramétrages',
// I
'info_detail_lignes_facture' => "Détails des lignes de la facture",
// T
'titre_page_configurer_factures' => 'Configurer Factures et Devis',
'titre_page_configurer_factures' => 'Configurer Factures & Devis',
);
?>
?>

52
lang/factures_ligne_fr.php

@ -0,0 +1,52 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'ajouter_lien_factures_ligne' => 'Ajouter cette ligne de facture',
// E
'explication_commentaire' => 'Saisissez un commentaire le cas échéant',
'explication_designation' => 'Écrivez une description de l\'élément vendu ou proposé',
'explication_position' => 'Saisir la position de la ligne dans la facture ou le devis',
'explication_prix_unitaire_ht' => 'Indiquez le prix unitaire hors taxes de l\'élément vendu ou proposé',
'explication_quantite' => 'Veuillez indiquer la quandité vendue ou proposée',
'explication_unite' => 'Veuillez indiquer l\'unité vendue ou proposée',
// I
'icone_creer_factures_ligne' => 'Créer une ligne de facture',
'icone_modifier_factures_ligne' => 'Modifier cette ligne de facture',
'info_1_factures_ligne' => 'Une ligne de facture',
'info_aucun_factures_ligne' => 'Aucune ligne de facture',
'info_factures_lignes_auteur' => 'Les lignes de facture de cet auteur',
'info_nb_factures_lignes' => '@nb@ lignes de facture',
// L
'label_commentaire' => 'Commentaire',
'label_designation' => 'Désignation',
'label_id_facture' => 'Id facture',
'label_position' => 'Position',
'label_prix_unitaire_ht' => 'Prix unitaire hors taxes',
'label_quantite' => 'Quantité',
'label_unite' => 'Unité',
// R
'retirer_lien_factures_ligne' => 'Retirer cette ligne de facture',
'retirer_tous_liens_factures_lignes' => 'Retirer toutes les lignes de facture',
// T
'texte_ajouter_factures_ligne' => 'Ajouter une ligne de facture',
'texte_changer_statut_factures_ligne' => 'Cette ligne de facture est :',
'texte_creer_associer_factures_ligne' => 'Créer et associer une ligne de facture',
'titre_factures_ligne' => 'Ligne de facture',
'titre_factures_lignes' => 'Lignes de facture',
'titre_factures_lignes_rubrique' => 'Lignes de facture de la rubrique',
'titre_langue_factures_ligne' => 'Langue de cette ligne de facture',
'titre_logo_factures_ligne' => 'Logo de cette ligne de facture',
);
?>

22
paquet.xml

@ -1,15 +1,15 @@
<paquet
prefix="factures"
categorie="divers"
version="1.0.7"
version="1.0.9"
etat="experimental"
compatibilite="[3.0.7;3.0.*]"
logo=""
documentation=""
schema="1.0.0"
schema="1.0.0"
>
<!--
Paquet généré le 2013-04-04 17:44:27
Paquet généré le 2013-04-05 11:50:18
-->
<nom>Factures &amp; devis</nom>
@ -17,14 +17,14 @@
<auteur lien='http://www.cym.fr'>Cyril Marion - Ateliers CYM</auteur>
<licence>GNU/GPL</licence>
<necessite nom="saisies" compatibilite="[1.24.0;]" />
<necessite nom="saisies" compatibilite="[1.24.0;]" />
<pipeline nom="autoriser" inclure="factures_autorisations.php" />
<pipeline nom="autoriser" inclure="factures_autorisations.php" />
<pipeline nom="declarer_tables_objets_sql" inclure="base/factures.php" />
<pipeline nom="declarer_tables_interfaces" inclure="base/factures.php" />
<pipeline nom="declarer_tables_objets_sql" inclure="base/factures.php" />
<pipeline nom="declarer_tables_interfaces" inclure="base/factures.php" />
<menu nom="factures" titre="facture:titre_factures" parent="menu_edition" icone="images/facture-16.png" action="factures" />
<menu nom="facture_creer" titre="facture:icone_creer_facture" parent="outils_rapides" icone="images/facture-new-16.png" action="facture_edit" parametres="new=oui" />
<menu nom="ligne_creer" titre="ligne:icone_creer_ligne" parent="outils_rapides" icone="images/ligne-new-16.png" action="ligne_edit" parametres="new=oui" />
</paquet>
<menu nom="factures" titre="facture:titre_factures" parent="menu_edition" icone="images/facture-16.png" action="factures" />
<menu nom="facture_creer" titre="facture:icone_creer_facture" parent="outils_rapides" icone="images/facture-new-16.png" action="facture_edit" parametres="new=oui" />
<menu nom="factures_ligne_creer" titre="factures_ligne:icone_creer_factures_ligne" parent="outils_rapides" icone="images/factures_ligne-new-16.png" action="factures_ligne_edit" parametres="new=oui" />
</paquet>

2
prive/objets/contenu/facture.html

@ -70,4 +70,4 @@
<span dir='#LANG_DIR' class='#EDIT{num_devis} num_devis'>(#NUM_DEVIS)</span>
</div>]
</BOUCLE_facture>
</BOUCLE_facture>

38
prive/objets/contenu/factures_ligne.html

@ -0,0 +1,38 @@
<BOUCLE_factures_ligne(FACTURES_LIGNES){id_factures_ligne}>
[<div class="champ contenu_id_facture[ (#ID_FACTURE*|strlen|?{'',vide})]">
<label><:factures_ligne:label_id_facture:> : </label>
<span dir='#LANG_DIR' class='#EDIT{id_facture} id_facture'>(#ID_FACTURE)</span>
</div>]
[<div class="champ contenu_position[ (#POSITION*|strlen|?{'',vide})]">
<label><:factures_ligne:label_position:> : </label>
<span dir='#LANG_DIR' class='#EDIT{position} position'>(#POSITION)</span>
</div>]
[<div class="champ contenu_quantite[ (#QUANTITE*|strlen|?{'',vide})]">
<label><:factures_ligne:label_quantite:> : </label>
<span dir='#LANG_DIR' class='#EDIT{quantite} quantite'>(#QUANTITE)</span>
</div>]
[<div class="champ contenu_unite[ (#UNITE*|strlen|?{'',vide})]">
<label><:factures_ligne:label_unite:> : </label>
<span dir='#LANG_DIR' class='#EDIT{unite} unite'>(#UNITE)</span>
</div>]
[<div class="champ contenu_designation[ (#DESIGNATION*|strlen|?{'',vide})]">
<label><:factures_ligne:label_designation:> : </label>
<span dir='#LANG_DIR' class='#EDIT{designation} designation'>(#DESIGNATION)</span>
</div>]
[<div class="champ contenu_prix_unitaire_ht[ (#PRIX_UNITAIRE_HT*|strlen|?{'',vide})]">
<label><:factures_ligne:label_prix_unitaire_ht:> : </label>
<span dir='#LANG_DIR' class='#EDIT{prix_unitaire_ht} prix_unitaire_ht'>(#PRIX_UNITAIRE_HT)</span>
</div>]
[<div class="champ contenu_commentaire[ (#COMMENTAIRE*|strlen|?{'',vide})]">
<label><:factures_ligne:label_commentaire:> : </label>
<span dir='#LANG_DIR' class='#EDIT{commentaire} commentaire'>(#COMMENTAIRE)</span>
</div>]
</BOUCLE_factures_ligne>

7
prive/objets/infos/facture.html

@ -0,0 +1,7 @@
<BOUCLE_facture(FACTURES){id_facture=#ENV{id}}>
<div class='infos'>
[(#SET{texte_objet,<:facture:titre_facture:>})]
<div class='numero'><:titre_cadre_numero_objet{objet=#GET{texte_objet}}:><p>#ID_FACTURE</p></div>
</div>
</BOUCLE_facture>

7
prive/objets/infos/factures_ligne.html

@ -0,0 +1,7 @@
<BOUCLE_factures_ligne(FACTURES_LIGNES){id_factures_ligne=#ENV{id}}>
<div class='infos'>
[(#SET{texte_objet,<:factures_ligne:titre_factures_ligne:>})]
<div class='numero'><:titre_cadre_numero_objet{objet=#GET{texte_objet}}:><p>#ID_FACTURES_LIGNE</p></div>
</div>
</BOUCLE_factures_ligne>

34
prive/objets/liste/factures_lignes.html

@ -0,0 +1,34 @@
[(#SET{defaut_tri,#ARRAY{
designation,1,
id_factures_ligne,1,
points,-1
}})]<B_liste_factures_lignes>
#ANCRE_PAGINATION
<div class="liste-objets factures_lignes">
<table class='spip liste'>
[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{factures_ligne:info_1_factures_ligne,factures_ligne:info_nb_factures_lignes}})</strong></caption>]
<thead>
<tr class='first_row'>
<th class='picto' scope='col'></th>
<th class='designation' scope='col'>[(#TRI{designation,<:factures_ligne:label_designation:>,ajax})]</th>
<th class='id' scope='col'>[(#TRI{id_factures_ligne,<:info_numero_abbreviation:>,ajax})]</th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_factures_lignes(FACTURES_LIGNES){id_facture?}{id_mot?}{id_auteur?}{where?}{recherche?}{tri #ENV{par,num designation},#GET{defaut_tri}}{par designation}{pagination #ENV{nb,10}}>
<tr class='[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]'>
<td class='picto'>[(#CHEMIN_IMAGE{factures_ligne-16.png}|balise_img)]</td>
<td class='designation principale'>[(#LOGO_FACTURES_LIGNE|image_reduire{20,26})]<a href="[(#ID_FACTURES_LIGNE|generer_url_entite{factures_ligne})]" title="<:info_numero_abbreviation|attribut_html:> #ID_FACTURES_LIGNE">[(#RANG). ]#DESIGNATION</a></td>
<td class='id'>[(#AUTORISER{modifier,factures_ligne,#ID_FACTURES_LIGNE}|?{
<a href="[(#URL_ECRIRE{factures_ligne_edit,id_factures_ligne=#ID_FACTURES_LIGNE})]">#ID_FACTURES_LIGNE</a>,
#ID_FACTURES_LIGNE
})]</td>
</tr>
</BOUCLE_liste_factures_lignes>
</tbody>
</table>
[<p class='pagination'>(#PAGINATION{prive})</p>]
</div>
</B_liste_factures_lignes>[
<div class="liste-objets factures_lignes caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
]<//B_liste_factures_lignes>

69
prive/objets/liste/factures_lignes_associer.html

@ -0,0 +1,69 @@
[(#SET{defaut_tri,#ARRAY{
multi designation,1,
id_factures_ligne,1
}})
]
#SET{exclus,#ENV**{exclus,#ENV{objet_source}|lister_objets_lies{#ENV{objet},#ENV{id_objet},#ENV{_objet_lien}}}}
#SET{debut,#ENV{debutfaca,#EVAL{_request("debutfaca");}}}
<B_liste_factures_lignes>
[(#REM) En cas de pagination indirecte @32, il faut refaire le set car la boucle
a mis a jour la valeur avec la page reelle]
#SET{debut,#ENV{debutfaca,#EVAL{_request("debutfaca");}}}
#SET{afficher_lettres,#TRI|=={'multi designation'}|oui}
#ANCRE_PAGINATION
<div class="liste-objets liste-objets-associer factures_lignes">
<table class='spip liste'>
[<caption><span class="caption"><strong>(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{factures_ligne:info_1_factures_ligne,factures_ligne:info_nb_factures_lignes}})</strong>
<span class="recherche">
<label for="recherche-#ENV{id}"><:info_rechercher_02:></label>
<input type="text" class="recherche" name="recherche" id="recherche-#ENV{id}" value="#ENV{recherche}" />
<input type="submit" class="tout_voir" name="tout_voir" value="<:info_tout_afficher:>" />
</span>
</span>
</caption>]
<thead>
#SET{p,''}
<BOUCLE_lettre(FACTURES_LIGNES){tout}{!id_factures_ligne IN #GET{exclus}}{where?}{recherche?}
{tri #ENV{par,multi designation},#GET{defaut_tri}}{id_factures_ligne==#GET{afficher_lettres}|?{'.*','A'}}>[
(#DESIGNATION**|extraire_multi|initiale|unique|oui)
[(#SET{p,#GET{p}|concat{
#SELF|parametre_url{debutfaca,@#ID_FACTURES_LIGNE}|ancre_url{paginationfaca}|afficher_initiale{#DESIGNATION**|extraire_multi|initiale{},#COMPTEUR_BOUCLE,#GET{debut},#ENV{nb,10}}
}})]
]#SAUTER{#ENV{nb,10}|moins{#COMPTEUR_BOUCLE|=={1}|?{2,1}}}</BOUCLE_lettre>[
(#SET{p,
#GET{p}|concat{
#REM|afficher_initiale{#REM,#TOTAL_BOUCLE,#GET{debut},#ENV{nb,10}}
}
})]</B_lettre>
[<tr><td colspan="3"><p class='pagination'>(#GET{p})</p></td></tr>]
<tr class='first_row'>
<th class='designation' scope='col'>[(#TRI{multi designation,<:factures_ligne:label_designation:>,ajax})]</th>
<th class='action' scope='col'></th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_factures_lignes(FACTURES_LIGNES){!id_factures_ligne IN #GET{exclus}}{where?}{recherche?}
{tri #ENV{par,multi designation},#GET{defaut_tri}}{pagination #ENV{nb,10} faca}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#DESIGNATION**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)]">
<td class='designation'>[(#LOGO_FACTURES_LIGNE|image_reduire{20,20})]<a href="[(#ID_FACTURES_LIGNE|generer_url_entite{factures_ligne})]">#DESIGNATION</a></td>
<td class='action'>
<button class="button link add" name="ajouter_lien\[factures_ligne-#ID_FACTURES_LIGNE-#OBJET-#ID_OBJET\]" value="+"><:factures_ligne:ajouter_lien_factures_ligne:> [(#CHEMIN_IMAGE{ajouter-12.png}|balise_img{'+'})]</button>
</td>
</tr>
</BOUCLE_liste_factures_lignes>
</tbody>
</table>
[<p class='pagination'>(#PAGINATION{prive})</p>]
</div>
</B_liste_factures_lignes>[(#ENV{recherche}|oui)
<div class="liste-objets liste-objets-associer factures_lignes caption-wrap">
<span class="caption"><strong>[(#VAL{info_recherche_auteur_zero}|_T{#ARRAY{cherche_auteur,#ENV{recherche}}})]</strong>
<span class="recherche">
<label for="recherche-#ENV{id}"><:info_rechercher_02:></label>
<input type="text" class="recherche" name="recherche" id="recherche-#ENV{id}" value="#ENV{recherche}" />
<input type="submit" class="tout_voir" name="tout_voir" value="<:info_tout_afficher:>" />
</span>
</span>
</div>
]<//B_liste_factures_lignes>

18
prive/objets/liste/factures_lignes_associer_fonctions.php

@ -0,0 +1,18 @@
<?php
/**
* Fonctions du squelette associé
*
* @plugin Factures &amp; devis
* @copyright 2013
* @author Cyril Marion - Ateliers CYM
* @licence GNU/GPL
* @package SPIP\Factures\Fonctions
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
// pour initiale et afficher_initiale
include_spip('prive/objets/liste/auteurs_fonctions');
?>

60
prive/objets/liste/factures_lignes_lies.html

@ -0,0 +1,60 @@
[(#SET{defaut_tri,#ARRAY{
multi designation,1,
id_factures_ligne,1
}})
]
#SET{selection,#ENV**{selection,#ENV{objet_source}|lister_objets_lies{#ENV{objet},#ENV{id_objet},#ENV{_objet_lien}}}}
#SET{debut,#ENV{debutfacl,#EVAL{_request("debutfacl");}}}
<B_liste_factures_lignes>
[(#REM) En cas de pagination indirecte @32, il faut refaire le set car la boucle
a mis a jour la valeur avec la page reelle]
#SET{debut,#ENV{debutfacl,#EVAL{_request("debutfacl");}}}
#SET{afficher_lettres,#TRI|=={'multi designation'}|oui}
#ANCRE_PAGINATION
<div class="liste-objets liste-objets-lies factures_lignes">
<table class='spip liste'>
[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{factures_ligne:info_1_factures_ligne,factures_ligne:info_nb_factures_lignes}})</strong></caption>]
<thead>
#SET{p,''}
<BOUCLE_lettre(FACTURES_LIGNES){tout}{id_factures_ligne IN #GET{selection}}{where?}
{tri #ENV{par,multi designation},#GET{defaut_tri}}{id_factures_ligne==#GET{afficher_lettres}|?{'.*','A'}}>[
(#DESIGNATION**|extraire_multi|initiale|unique|oui)
[(#SET{p,#GET{p}|concat{
#SELF|parametre_url{debutfacl,@#ID_FACTURES_LIGNE}|ancre_url{paginationfacl}|afficher_initiale{#DESIGNATION**|extraire_multi|initiale{},#COMPTEUR_BOUCLE,#GET{debut},#ENV{nb,10}}
}})]
]#SAUTER{#ENV{nb,10}|moins{#COMPTEUR_BOUCLE|=={1}|?{2,1}}}</BOUCLE_lettre>[
(#SET{p,
#GET{p}|concat{
#REM|afficher_initiale{#REM,#TOTAL_BOUCLE,#GET{debut},#ENV{nb,10}}
}
})]</B_lettre>
[<tr><td colspan="4"><p class='pagination'>(#GET{p})</p></td></tr>]
<tr class='first_row'>
<th class='designation' scope='col'>[(#TRI{multi designation,<:factures_ligne:label_designation:>,ajax})]</th>
<th class='action' scope='col'></th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_factures_lignes(FACTURES_LIGNES){id_factures_ligne IN #GET{selection}}
{tri #ENV{par,multi designation},#GET{defaut_tri}}{pagination #ENV{nb,10} facl}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#DESIGNATION**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)][(#ID_FACTURES_LIGNE|=={#ENV{id_lien_ajoute}}|oui)append]">
<td class='designation'>[(#LOGO_FACTURES_LIGNE|image_reduire{20,20})]<a href="[(#ID_FACTURES_LIGNE|generer_url_entite{factures_ligne})]">#DESIGNATION</a></td>
<td class='action'>
[(#ENV{editable}|oui)
<button class="button link delete" name="supprimer_lien\[factures_ligne-#ID_FACTURES_LIGNE-#OBJET-#ID_OBJET\]" value="X"><:factures_ligne:retirer_lien_factures_ligne:> [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'X'})]</button>
]
</td>
</tr>
</BOUCLE_liste_factures_lignes>
</tbody>
</table>
[<p class='pagination'>(#PAGINATION{prive})</p>]
[(#GRAND_TOTAL|>{3}|oui)<div class="action"><button class="button link" name="supprimer_lien\[factures_ligne-*-#OBJET-#ID_OBJET\]" value="X"><:factures_ligne:retirer_tous_liens_factures_lignes:> [(#CHEMIN_IMAGE{supprimer-8.png}|balise_img{'X'})]</button></div>]
</div>
</B_liste_factures_lignes>
<div class="liste-objets liste-objets-lies FACTURES_LIGNES caption-wrap">
<strong class="caption">[(#ENV*{titre,<:factures_ligne:info_aucun_factures_ligne:>})]</strong>
</div>
<//B_liste_factures_lignes>

17
prive/objets/liste/factures_lignes_lies_fonctions.php

@ -0,0 +1,17 @@
<?php
/**
* Fonctions du squelette associé
*
* @plugin Factures &amp; devis
* @copyright 2013
* @author Cyril Marion - Ateliers CYM
* @licence GNU/GPL
* @package SPIP\Factures\Fonctions
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
// pour initiale et afficher_initiale
include_spip('prive/objets/liste/auteurs_fonctions');
?>

18
prive/squelettes/contenu/facture.html

@ -24,6 +24,18 @@
<INCLURE{fond=prive/objets/contenu/facture,id=#ID_FACTURE,id_facture=#ID_FACTURE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>
</div>
[(#REM) Affiche les lignes de factures ]
[(#INCLURE{fond=prive/objets/liste/factures_lignes,titre=<:factures:info_detail_lignes_facture:>,id_parent=#ID_FACTURE,par=position,ajax,env})]
[(#AUTORISER{creerlignefacturedans,facture,#ID_FACTURE}|oui)
[(#ID_FACTURE|?{
[(#URL_ECRIRE{factures_ligne_edit,new=oui&id_parent=#ID_FACTURE}|icone_verticale{<:factures_ligne:icone_creer_factures_ligne:>,factures_ligne,new,right clearright})]
,
[(#URL_ECRIRE{factures_ligne_edit,new=oui}|icone_verticale{<:factures_ligne:icone_creer_factures_ligne:>,factures_ligne,new,right clearright})]
})]
]
<div class="nettoyeur"></div>
[(#AUTORISER{modifier,facture,#ID_FACTURE})
@ -35,16 +47,12 @@
]
]
[(#REM) Affiche les lignes de factures ]
[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{exec,facture,id_facture,#ID_FACTURE,objet,id_objet},data,#INCLURE{fond=prive/objets/contenu/lignes_facture,id_facture,env}})]})]
#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,facture,id,#ID_FACTURE},data,'<div class="nettoyeur"></div>'}}
#BOITE_FERMER
[(#EVAL{_AJAX}|oui)
<script type="text/javascript">/*<!\\[CDATA\\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin');/*\\]\\]>*/</script>
]
</BOUCLE_facture>
[(#ENV**{exec}|=={facture_edit}|?{#INCLURE{fond=prive/squelettes/contenu/facture_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]
<//B_facture>
<//B_facture>

8
prive/squelettes/contenu/factures.html

@ -0,0 +1,8 @@
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class="nettoyeur"></div>
<INCLURE{fond=prive/objets/liste/factures, par=libelle_facture, env, ajax, sinon=<:facture:info_aucun_facture:>}>
[(#AUTORISER{creer,facture})
[(#URL_ECRIRE{facture_edit,new=oui}|icone_verticale{<:facture:icone_creer_facture:>,facture,new,right})]
]

46
prive/squelettes/contenu/factures_ligne.html

@ -0,0 +1,46 @@
[(#AUTORISER{voir,factures_ligne,#ID_FACTURES_LIGNE}|sinon_interdire_acces)]
<BOUCLE_factures_ligne(FACTURES_LIGNES){id_factures_ligne}{si #ENV{exec}|=={factures_ligne}}>
[(#BOITE_OUVRIR{[
[(#AUTORISER{modifier,factures_ligne,#ID_FACTURES_LIGNE})
[(#ID_FACTURES_LIGNE|afficher_qui_edite{factures_ligne}|non)
[(#URL_ECRIRE{factures_ligne_edit,id_factures_ligne=#ID_FACTURES_LIGNE}|icone_verticale{<:factures_ligne:icone_modifier_factures_ligne:>,factures_ligne,edit,right ajax preload})]
]
[(#ID_FACTURES_LIGNE|afficher_qui_edite{factures_ligne}|oui)
[(#URL_ECRIRE{factures_ligne_edit,id_factures_ligne=#ID_FACTURES_LIGNE}|icone_verticale{#ID_FACTURES_LIGNE|afficher_qui_edite{factures_ligne},warning-24,'',right edition_deja ajax preload})]
]
]
<h1>[(#RANG). ](#DESIGNATION|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{factures_ligne-24.png}|balise_img{factures_ligne,cadre-icone})]</h1>
],simple fiche_objet})]
<div class="ajax">
#FORMULAIRE_DATER{factures_ligne,#ID_FACTURES_LIGNE}
</div>
<!--affiche_milieu-->
<div id="wysiwyg">
<INCLURE{fond=prive/objets/contenu/factures_ligne,id=#ID_FACTURES_LIGNE,id_factures_ligne=#ID_FACTURES_LIGNE,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>
</div>
<div class="nettoyeur"></div>
[(#AUTORISER{modifier,factures_ligne,#ID_FACTURES_LIGNE})
[(#ID_FACTURES_LIGNE|afficher_qui_edite{factures_ligne}|non)
[(#URL_ECRIRE{factures_ligne_edit,id_factures_ligne=#ID_FACTURES_LIGNE}|icone_verticale{<:factures_ligne:icone_modifier_factures_ligne:>,factures_ligne,edit,right ajax preload})]
]
[(#ID_FACTURES_LIGNE|afficher_qui_edite{factures_ligne}|oui)
[(#URL_ECRIRE{factures_ligne_edit,id_factures_ligne=#ID_FACTURES_LIGNE}|icone_verticale{#ID_FACTURES_LIGNE|afficher_qui_edite{factures_ligne},warning-24,'',right edition_deja ajax preload})]
]
]
#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,factures_ligne,id,#ID_FACTURES_LIGNE},data,'<div class="nettoyeur"></div>'}}
#BOITE_FERMER
[(#EVAL{_AJAX}|oui)
<script type="text/javascript">/*<!\\[CDATA\\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin');/*\\]\\]>*/</script>
]
</BOUCLE_factures_ligne>
[(#ENV**{exec}|=={factures_ligne_edit}|?{#INCLURE{fond=prive/squelettes/contenu/factures_ligne_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]
<//B_factures_ligne>

30
prive/squelettes/contenu/factures_ligne_edit.html

@ -0,0 +1,30 @@
[(#ID_OBJET|oui)
[(#AUTORISER{modifier,factures_ligne,#ID_FACTURES_LIGNE}|sinon_interdire_acces)]
][(#ID_OBJET|non)
[(#AUTORISER{creer,factures_ligne}|sinon_interdire_acces)]
]
#SET{redirect,#ENV{redirect}|sinon{#ID_FACTURES_LIGNE|?{#ID_FACTURES_LIGNE|generer_url_entite{factures_ligne},#URL_ECRIRE{factures_lignes}}}}
<div class='cadre-formulaire-editer'>
<div class="entete-formulaire">
[(#ID_FACTURES_LIGNE|oui)
[(#GET{redirect}|icone_verticale{Retour,factures_ligne,'',left retour[(#ENV{retourajax,''}|oui)ajax preload]})]
]
[
[(#ID_FACTURES_LIGNE|?{<:factures_ligne:icone_modifier_factures_ligne:>,<:factures_ligne:icone_creer_factures_ligne:>})]
<h1>(#ENV{titre,#INFO_DESIGNATION{factures_ligne,#ID_FACTURES_LIGNE}|sinon{<:info_sans_titre:>}})</h1>
]
</div>
#SET{redirect,#ENV{redirect,#ID_FACTURES_LIGNE|generer_url_entite{factures_ligne}}}
[(#ENV{retourajax,''}|oui)
#SET{redirect,'javascript:if (window.jQuery) jQuery(".entete-formulaire .retour a").followLink();'}
<div class="ajax">
]
[(#FORMULAIRE_EDITER_FACTURES_LIGNE{#ENV{id_factures_ligne,oui}, #GET{redirect}, #ENV{associer_objet}})]
[(#ENV{retourajax,''}|oui)
</div>
<script type="text/javascript">/*<!\[CDATA\[*/reloadExecPage('#ENV{exec}');/*\]\]>*/</script>
]
</div>

8
prive/squelettes/contenu/factures_lignes.html

@ -0,0 +1,8 @@
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class="nettoyeur"></div>
<INCLURE{fond=prive/objets/liste/factures_lignes, par=designation, env, ajax, sinon=<:factures_ligne:info_aucun_factures_ligne:>}>
[(#AUTORISER{creer,factures_ligne})
[(#URL_ECRIRE{factures_ligne_edit,new=oui}|icone_verticale{<:factures_ligne:icone_creer_factures_ligne:>,factures_ligne,new,right})]
]

BIN
prive/themes/spip/images/facture-add-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

BIN
prive/themes/spip/images/facture-add-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
prive/themes/spip/images/facture-add-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
prive/themes/spip/images/facture-del-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

BIN
prive/themes/spip/images/facture-del-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
prive/themes/spip/images/facture-del-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
prive/themes/spip/images/facture-edit-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

BIN
prive/themes/spip/images/facture-edit-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
prive/themes/spip/images/facture-edit-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
prive/themes/spip/images/facture-new-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
prive/themes/spip/images/facture-new-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
prive/themes/spip/images/factures_ligne-12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

BIN
prive/themes/spip/images/factures_ligne-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

BIN
prive/themes/spip/images/factures_ligne-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
prive/themes/spip/images/factures_ligne-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
prive/themes/spip/images/factures_ligne-add-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

BIN
prive/themes/spip/images/factures_ligne-add-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
prive/themes/spip/images/factures_ligne-add-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
prive/themes/spip/images/factures_ligne-del-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

BIN
prive/themes/spip/images/factures_ligne-del-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
prive/themes/spip/images/factures_ligne-del-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
prive/themes/spip/images/factures_ligne-edit-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

BIN
prive/themes/spip/images/factures_ligne-edit-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
prive/themes/spip/images/factures_ligne-edit-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
prive/themes/spip/images/factures_ligne-new-16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

BIN
prive/themes/spip/images/factures_ligne-new-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
prive/themes/spip/images/factures_ligne-new-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

20
saisies-vues/factures.html

@ -0,0 +1,20 @@
<BOUCLE_test_multiple(CONDITION){si #ENV{multiple}|=={on}|oui}>
[(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})]
<B_factures_selectionnes>
<ul>
<BOUCLE_factures_selectionnes(FACTURES){id_facture IN #GET*{valeur}}
{par num libelle_facture, libelle_facture}{tout}>
<li class="choix">#LIBELLE_FACTURE (#ID_FACTURE)</li>
</BOUCLE_factures_selectionnes>
</ul>
</B_factures_selectionnes>
[(#ENV*{sans_reponse}|propre)]
<//B_factures_selectionnes>
</BOUCLE_test_multiple>
<BOUCLE_facture_selectionne(FACTURES){id_facture=#ENV{valeur}}
{par num libelle_facture, libelle_facture}{tout}>
<p>#LIBELLE_FACTURE (#ID_FACTURE)</p>
</BOUCLE_facture_selectionne>
[(#ENV*{sans_reponse}|propre)]
<//B_facture_selectionne>
<//B_test_multiple>

20
saisies-vues/factures_lignes.html

@ -0,0 +1,20 @@
<BOUCLE_test_multiple(CONDITION){si #ENV{multiple}|=={on}|oui}>
[(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})]
<B_factures_lignes_selectionnes>
<ul>
<BOUCLE_factures_lignes_selectionnes(FACTURES_LIGNES){id_factures_ligne IN #GET*{valeur}}
{par num designation, designation}{tout}>
<li class="choix">#DESIGNATION (#ID_FACTURES_LIGNE)</li>
</BOUCLE_factures_lignes_selectionnes>
</ul>
</B_factures_lignes_selectionnes>
[(#ENV*{sans_reponse}|propre)]
<//B_factures_lignes_selectionnes>
</BOUCLE_test_multiple>
<BOUCLE_factures_ligne_selectionne(FACTURES_LIGNES){id_factures_ligne=#ENV{valeur}}
{par num designation, designation}{tout}>
<p>#DESIGNATION (#ID_FACTURES_LIGNE)</p>
</BOUCLE_factures_ligne_selectionne>
[(#ENV*{sans_reponse}|propre)]
<//B_factures_ligne_selectionne>
<//B_test_multiple>

13
saisies/factures.html

@ -0,0 +1,13 @@
[(#ENV{multiple}|oui)
[(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})]
]
<select name="#ENV{nom}[(#ENV{multiple}|?{\[\]})]" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][(#ENV{multiple}|oui) multiple="multiple" size="#ENV{size,10}"][ disabled="(#ENV{disable})"]>
[(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non)
<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_factures(FACTURES){par num libelle_facture, libelle_facture}{id_organisation_emettrice?}{id_organisation?}{recherche?}{tout}>
[(#ENV{multiple}|oui)
<option value="#ID_FACTURE"[(#ID_FACTURE|in_array{#ENV{valeur_forcee,#GET{valeur,#ENV{defaut,#ARRAY}}}}|oui) selected="selected"]>#LIBELLE_FACTURE</option>]
[(#ENV{multiple}|non)
<option value="#ID_FACTURE"[(#ID_FACTURE|=={#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}}|oui) selected="selected"]>#LIBELLE_FACTURE</option>]
</BOUCLE_factures>
</select>

13
saisies/factures_lignes.html

@ -0,0 +1,13 @@
[(#ENV{multiple}|oui)
[(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})]
]
<select name="#ENV{nom}[(#ENV{multiple}|?{\[\]})]" id="champ_[(#ENV{nom}|saisie_nom2classe)]"[ class="(#ENV{class})"][(#ENV{multiple}|oui) multiple="multiple" size="#ENV{size,10}"][ disabled="(#ENV{disable})"]>
[(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non)
<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_factures_lignes(FACTURES_LIGNES){par num designation, designation}{id_facture?}{recherche?}{tout}>
[(#ENV{multiple}|oui)
<option value="#ID_FACTURES_LIGNE"[(#ID_FACTURES_LIGNE|in_array{#ENV{valeur_forcee,#GET{valeur,#ENV{defaut,#ARRAY}}}}|oui) selected="selected"]>#DESIGNATION</option>]
[(#ENV{multiple}|non)
<option value="#ID_FACTURES_LIGNE"[(#ID_FACTURES_LIGNE|=={#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}}|oui) selected="selected"]>#DESIGNATION</option>]
</BOUCLE_factures_lignes>
</select>
Loading…
Cancel
Save