source: spip-zone/_plugins_/Association/Associaspip/action/editer_asso_prets.php @ 62726

Last change on this file since 62726 was 62726, checked in by gildas.cotomale@…, 8 years ago

quelques corrections sur la gestion des ressources

File size: 6.5 KB
Line 
1<?php
2/***************************************************************************\
3 *  Associaspip, extension de SPIP pour gestion d'associations             *
4 *                                                                         *
5 *  Copyright (c) 2007 Bernard Blazin & François de Montlivault (V1)       *
6 *  Copyright (c) 2010-2011 Emmanuel Saint-James & Jeannot Lapin (V2)       *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12
13if (!defined('_ECRIRE_INC_VERSION'))
14    return;
15
16function action_editer_asso_prets_dist()
17{
18    $securiser_action = charger_fonction('securiser_action', 'inc');
19    $id_pret = $securiser_action();
20    $erreur = '';
21    $id_ressource = intval(_request('id_ressource'));
22    $id_emprunteur = intval(_request('id_emprunteur'));
23    $emprunteur = _request('emprunteur');
24    if (!$emprunteur AND $id_emprunteur) {
25        $data =  sql_fetsel('sexe, nom_famille, prenom', 'spip_asso_membres', "id_auteur=$id_emprunteur");
26        $emprunteur = association_calculer_nom_membre($data['sexe'], $data['prenom'], $data['nom_famille']);
27    }
28    $date_sortie = association_recupere_date(_request('date_sortie'));
29    $date_retour = association_recupere_date(_request('date_retour'));
30    $date_caution1 = association_recupere_date(_request('date_caution1'));
31    $date_caution0 = association_recupere_date(_request('date_caution0'));
32    $duree = association_recupere_montant(_request('duree'));
33    $montant = association_recupere_montant(_request('montant'));
34    $caution = association_recupere_montant(_request('prix_caution'));
35    $fiso_sortie = $date_sortie.'T'._request('heure_sortie').':00'; // si on n'indique que l'heure, on s'assure que ce sera bien compris hh:00 et non 00:mm sinon c'est hh:mm:00 qui est transmis...
36    $fiso_retour = $date_retour.'T'._request('heure_retour').':00'; // idem...
37    $modifs = array(
38        'duree' => $duree,
39        'date_sortie' => $fiso_sortie,
40        'date_retour' => $fiso_retour,
41        'date_caution1' => $date_caution1,
42        'date_caution0' => $date_caution0,
43        'id_ressource' => $id_ressource,
44        'id_emprunteur' => $id_emprunteur,
45        'prix_unitaire' => $montant,
46        'prix_caution' => $caution,
47        'commentaire_sortie' => _request('commentaire_sortie'),
48        'commentaire_retour' => _request('commentaire_retour'),
49    );
50    include_spip('base/association');
51    $id_compte = intval(_request('id_compte'));
52    $journal = _request('journal');
53    include_spip('inc/association_comptabilite');
54    if ($id_pret) { // modification
55        // on modifie les informations relatives au pret
56        sql_updateq('spip_asso_prets', $modifs, "id_pret=$id_pret" );
57        // on modifie l'operation comptable associee a la location meme
58        association_modifier_operation_comptable(($fiso_retour>$fiso_sortie)?$date_retour:$date_sortie, $montant*($duree?$duree:1), 0, '['. _T('asso:titre_num', array('titre'=>_T('local:pret'),'num'=>$id_pret) ) ."->pret$id_pret] - ". ($id_emprunteur?"[$emprunteur"."->membre$id_emprunteur]":$emprunteur), $GLOBALS['association_metas']['pc_prets'], $journal, $id_pret, $id_compte);
59        // on modifie l'opertation comptable associee a la caution
60        if ( $GLOBALS['association_metas']['pc_cautions'] ) { // les cautions sont encaissees
61            $association_imputation = charger_fonction('association_imputation', 'inc');
62            $critere = $association_imputation('pc_cautions');
63            $critere .= ($critere?' AND ':'') ."id_journal=$id_pret";
64            association_modifier_operation_comptable(($date_caution1, $caution, 0, '['. _T('asso:titre_num', array('titre'=>_T('local:caution'),'num'=>$id_pret) ) ."->pret$id_pret] - ". ($id_emprunteur?"[$emprunteur"."->membre$id_emprunteur]":$emprunteur), $GLOBALS['association_metas']['pc_cautions'], _request('mode_caution1'), $id_pret, sql_getfetsel('id_compte', 'spip_asso_comptes', "$critere AND recette>0") ); // depot
65            association_modifier_operation_comptable(($date_caution0, 0, $caution, '['. _T('asso:titre_num', array('titre'=>_T('local:caution'),'num'=>$id_pret) ) ."->pret$id_pret] - ". ($id_emprunteur?"[$emprunteur"."->membre$id_emprunteur]":$emprunteur), $GLOBALS['association_metas']['pc_cautions'], _request('mode_caution0'), $id_pret, sql_getfetsel('id_compte', 'spip_asso_comptes', "$critere AND depense>0") ); // restitution
66        }
67        // on met a jour le statut de la ressource
68        $statut_old = sql_getfetsel('statut', 'spip_asso_ressources', "id_ressource=$id_ressource");
69        if (is_numeric($statut_old)) { /* nouveaux statuts numeriques */
70            if ($statut_old<0)
71                $statut_new = $statut_old-1;
72            else
73                $statut_new = $statut_old+1;
74        } else { /* anciens statuts textuels */
75            $statut_new = 'ok';
76        }
77        if ($fiso_retour>$fiso_sortie)
78            sql_updateq('spip_asso_ressources',
79                array('statut' => $statut_new),
80            "id_ressource=$id_ressource" );
81    } else { // ajout
82        // on ajoute les informations relatives au pret
83        $id_pret = sql_insertq('spip_asso_prets', $modifs);
84        if ($id_pret) { // on ajoute les informations connexes
85            // on ajoute l'operation comptable associe au pret en lui-meme
86            association_ajouter_operation_comptable($date_sortie, $montant*($duree?$duree:1), 0, '['. _T('asso:titre_num', array('titre'=>_T('local:pret'),'num'=>$id_pret) ) ."->pret$id_pret] - ". ($id_emprunteur?"[$emprunteur"."->membre$id_emprunteur]":$emprunteur), $GLOBALS['association_metas']['pc_prets'], $journal, $id_pret);
87            // on encaisse la caution
88            if ( $caution>0 AND $GLOBALS['association_metas']['pc_cautions'] AND $date_caution1 )
89                association_ajouter_operation_comptable($date_caution1, $caution, 0, '['. _T('asso:titre_num', array('titre'=>_T('local:caution'),'num'=>$id_pret) ) ."->pret$id_pret] - ". ($id_emprunteur?"[$emprunteur"."->membre$id_emprunteur]":$emprunteur), $GLOBALS['association_metas']['pc_cautions'], _request('mode_caution1'), $id_pret);
90            // on met a jour le statut de la ressource
91            $statut_old = sql_getfetsel('statut', 'spip_asso_ressources', "id_ressource=$id_ressource");
92            if (is_numeric($statut_old)) { // nouveaux statuts numeriques
93                if ($statut_old<0)
94                    $statut_new = $statut_old+1;
95                else
96                    $statut_new = $statut_old-1;
97            } else { // anciens statuts textuels
98                $statut_new = 'reserve';
99            }
100            sql_updateq('spip_asso_ressources',
101                array('statut' => $statut_new),
102            "id_ressource=$id_ressource" );
103        } else
104            $erreur = _T('asso:erreur_sgbdr');
105    }
106    return array($id_pret, $erreur);
107}
108
109?>
Note: See TracBrowser for help on using the repository browser.