source: spip-zone/_plugins_/Association/Associaspip/action/editer_asso_ventes.php @ 63500

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

comme on ne peut plus modifier les opérations comptables validées il faut quand même le signaler dans les formulaires qui en dépendent

File size: 6.0 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
12if (!defined('_ECRIRE_INC_VERSION'))
13        return;
14
15function action_editer_asso_ventes()
16{
17        $securiser_action = charger_fonction('securiser_action', 'inc');
18        $id_vente = $securiser_action();
19        $erreur = '';
20        $date_vente = association_recupere_date(_request('date_vente'));
21        $article = _request('article');
22        $code = _request('code');
23        $id_acheteur = intval(_request('id_acheteur'));
24        $acheteur = _request('acheteur');
25        if (!$acheteur AND $id_acheteur) {
26                $data =  sql_fetsel('sexe, nom_famille, prenom', 'spip_asso_membres', "id_auteur=$id_acheteur");
27                $acheteur = association_calculer_nom_membre($data['sexe'], $data['prenom'], $data['nom_famille']);
28        }
29        $quantite = association_recupere_montant(_request('quantite'));
30        $date_envoi = association_recupere_date(_request('date_envoi'));
31        $frais_envoi = association_recupere_montant(_request('frais_envoi'));
32        $prix_unite =  association_recupere_montant(_request('prix_vente'));
33        if (test_plugin_actif('CATALOGUE') && intval($code)==$code) { // le plugin "Catalogue est actif" : certains champs peuvent ne pas etre saisis...
34                if ($code>0) { // c'est une variante
35                        $variante = sql_fetsel('*', 'spip_cat_variantes', 'id_cat_variante='.$code);
36                        if (!$article)
37                                $article = $variante['id_article'];
38                        if ($prix_unite==0)
39                                $prix_unite = $variante['prix']*(1+$variante['tva']);
40                } else { // c'est une option
41                        $option = sql_fetsel('*', 'spip_cat_options', 'id_cat_option='.abs($code));
42                        if (!$article)
43                                $article = $option['id_article'];
44                        if ($prix_unite==0)
45                                $prix_unite = $option['prix']*(1+$option['tva']);
46                }
47        }
48        $modifs = array(
49                'date_vente' => $date_vente,
50                'article' => $article,
51                'code' => $code,
52                'acheteur' => _request('acheteur'),
53                'id_acheteur' => $id_acheteur,
54                'quantite' => $quantite,
55                'date_envoi' => $date_envoi,
56                'frais_envoi' => $frais_envoi,
57                'prix_vente' => $prix_unite,
58                'commentaire' => _request('commentaire'),
59        );
60    include_spip('base/association');
61        $id_compte = intval(_request('id_compte'));
62        $journal = _request('journal');
63        include_spip('inc/association_comptabilite');
64        if ($id_vente) { // modification
65                // on modifie les operations comptables associees a la vente
66                if ($GLOBALS['association_metas']['pc_ventes']==$GLOBALS['association_metas']['pc_frais_envoi']) { // si ventes et frais d'envoi sont associes a la meme reference, on modifie une seule operation
67                        association_modifier_operation_comptable($date_vente, $quantite*$prix_unite+$frais_envoi, 0, '['. _T('asso:titre_num', array('titre'=>_T('local:vente'),'num'=>"$id_vente : '$code' &times;&nbsp;$quantite") ) ."->vente$id_vente] &mdash; ". ($id_acheteur?"[$acheteur"."->membre$id_acheteur]":$acheteur), $GLOBALS['association_metas']['pc_ventes'], $journal, $id_vente, $id_compte);
68                } else { // sinon on en modifie deux
69                        association_modifier_operation_comptable($date_vente, $quantite*$prix_unite, 0, '['. _T('asso:titre_num', array('titre'=>_T('local:vente'),'num'=>"$id_vente : '$code' &times;&nbsp;$quantite") ) ."->vente$id_vente] &mdash; ". ($id_acheteur?"[$acheteur"."->membre$id_acheteur]":$acheteur), $GLOBALS['association_metas']['pc_ventes'], $journal, $id_vente, $id_compte);
70                        $association_imputation = charger_fonction('association_imputation', 'inc');
71                        $critere = $association_imputation('pc_frais_envoi');
72                        $critere .= ($critere?' AND ':'') ."id_journal=$id_vente";
73                        $erreur = association_modifier_operation_comptable($date_envoi, $frais_envoi, 0, '['. _T('asso:titre_num', array('titre'=>_T('asso:config_libelle_frais_envoi'),'num'=>$id_vente) ) ."->vente$id_vente] &mdash; ". ($id_acheteur?"[$acheteur"."->membre$id_acheteur]":$acheteur), $GLOBALS['association_metas']['pc_frais_envoi'], $journal, $id_vente, sql_getfetsel('id_compte', 'spip_asso_comptes', $critere));
74                }
75                // on modifie les informations relatives a la vente
76                sql_updateq('spip_asso_ventes', $modifs, "id_vente=$id_vente" );
77        } else { // ajout
78                // on ajoute les informations relatives a la vente
79                $id_vente = sql_insertq('spip_asso_ventes', $modifs);
80                if (!$id_vente) { // la suite serait aleatoire sans cette cle...
81                        $erreur = _T('asso:erreur_sgbdr');
82                } else { // on ajoute les operations comptables associees a la vente
83                        if ($GLOBALS['association_metas']['pc_ventes']==$GLOBALS['association_metas']['pc_frais_envoi']) { // si ventes et frais d'envoi sont associes a la meme reference, on ajoute une seule operation
84                                association_ajouter_operation_comptable($date_vente, $quantite*$prix_unite+$frais_envoi, 0, '['. _T('asso:titre_num', array('titre'=>_T('local:vente'),'num'=>"$id_vente : '$code' &times;&nbsp;$quantite") ) ."->vente$id_vente] &mdash; ". ($id_acheteur?"[$acheteur"."->membre$id_acheteur]":$acheteur), $GLOBALS['association_metas']['pc_ventes'], $journal, $id_vente);
85                        } else { // sinon on en insere deux
86                                association_ajouter_operation_comptable($date_vente, $quantite*$prix_unite, 0, "[ref&nbsp;'$code' &times;&nbsp;$quantite"."->vente$id_vente] &mdash; ". ($id_acheteur?"[$acheteur"."->membre$id_acheteur]":$acheteur), $GLOBALS['association_metas']['pc_ventes'], $journal, $id_vente);
87                                association_ajouter_operation_comptable($date_en, $frais_envoi, 0, '['. _T('asso:titre_num', array('titre'=>_T('asso:config_libelle_frais_envoi'),'num'=>$id_vente) ) ."->vente$id_vente] &mdash; ". ($id_acheteur?"[$acheteur"."->membre$id_acheteur]":$acheteur), $GLOBALS['association_metas']['pc_frais_envoi'], $journal, $id_vente);
88                        }
89                }
90        }
91
92        return array($id_vente, $erreur);
93}
94
95?>
Note: See TracBrowser for help on using the repository browser.