Overview
Comment:Correction de l'association de moyen de paiement à l'import, corrige [5294465736e2ef3e82af49cf4c2a69c0d31f4e77], signalé par @Marc Gaudillot
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | stable | 0.9.3
Files: files | file ages | folders
SHA1: 26aeff6d3a69c3bdc589b22054715eb4fe7bc3da
User & Date: bohwaz on 2019-09-23 20:11:53
Other Links: manifest | tags
References
2019-09-23
20:12 Fixed ticket [5294465736]: Corriger import moyen de paiement compta plus 5 other changes artifact: 1af44e9d9f user: bohwaz
Context
2019-09-23
20:47
Mise à jour version check-in: 1d2b0786d4 user: bohwaz tags: trunk, stable, 0.9.3
20:11
Correction de l'association de moyen de paiement à l'import, corrige [5294465736e2ef3e82af49cf4c2a69c0d31f4e77], signalé par @Marc Gaudillot check-in: 26aeff6d3a user: bohwaz tags: trunk, stable, 0.9.3
20:03
Cohérence format de liste membres, corrige [37b3fab88e63a975dbce0c1c0402892ae642044f] check-in: 6b5ef651c6 user: bohwaz tags: trunk
Changes

Modified src/include/lib/Garradin/Compta/Categories.php from [1997e6a481] to [aacf281b4b].

106
107
108
109
110
111
112
113
114
115

116







117
118
119
120
121
122
123
            FROM compta_categories AS cat INNER JOIN compta_comptes AS cc
                ON cc.id = cat.compte
            WHERE %s ORDER BY cat.intitule;', $where);

        return $db->getGrouped($query);
    }

    public function listMoyensPaiement()
    {
        $db = DB::getInstance();

        return $db->getGrouped('SELECT code, nom FROM compta_moyens_paiement ORDER BY nom COLLATE NOCASE;');







    }

    public function getMoyenPaiement($code)
    {
        $db = DB::getInstance();
        return $db->firstColumn('SELECT nom FROM compta_moyens_paiement WHERE code = ?;', $code);
    }







|


>
|
>
>
>
>
>
>
>







106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
            FROM compta_categories AS cat INNER JOIN compta_comptes AS cc
                ON cc.id = cat.compte
            WHERE %s ORDER BY cat.intitule;', $where);

        return $db->getGrouped($query);
    }

    public function listMoyensPaiement($assoc = false)
    {
        $db = DB::getInstance();

        $query = 'SELECT code, nom FROM compta_moyens_paiement ORDER BY nom COLLATE NOCASE;';

        if ($assoc) {
            return $db->getAssoc($query);
        }
        else {
            return $db->getGrouped($query);
        }
    }

    public function getMoyenPaiement($code)
    {
        $db = DB::getInstance();
        return $db->firstColumn('SELECT nom FROM compta_moyens_paiement WHERE code = ?;', $code);
    }

Modified src/include/lib/Garradin/Compta/Import.php from [85a128e4c5] to [2b6a446835].

85
86
87
88
89
90
91

92
93
94
95
96
97
98
99
...
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
...
158
159
160
161
162
163
164

165







166
167
168
169
170
171
172
		$db = DB::getInstance();
		$db->begin();
		$cats = new Categories;
		$journal = new Journal;

		$columns = array_flip($this->header);
		$liste_cats = $db->getAssoc('SELECT intitule, id FROM compta_categories;');

		$liste_moyens = $cats->listMoyensPaiement();

		$col = function($column) use (&$row, &$columns)
		{
			if (!isset($columns[$column]))
				return null;

			if (!isset($row[$columns[$column]]))
................................................................................

			if ($line === 1)
			{
				if (trim($row[0]) != 'Numéro mouvement')
				{
					throw new UserException('Erreur sur la ligne ' . $line . ' : l\'entête des colonnes est absent ou incorrect.');
				}
				
				continue;
			}
	
			if (count($row) != count($columns))
			{
				$db->rollback();
				throw new UserException('Erreur sur la ligne ' . $line . ' : le nombre de colonnes est incorrect.');
			}

			if (trim($row[0]) !== '' && !is_numeric($row[0]))
................................................................................

			$debit = $col('Compte de débit - numéro');
			$credit = $col('Compte de crédit - numéro');

			$cat = $col('Catégorie');
			$moyen = strtoupper(substr($col('Moyen de paiement'), 0, 2));


			if (!$moyen || !array_key_exists($moyen, $liste_moyens))







			{
				$moyen = false;
				$cat = false;
			}

			if ($cat && !array_key_exists($cat, $liste_cats))
			{







>
|







 







|


|







 







>
|
>
>
>
>
>
>
>







85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
...
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
...
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
		$db = DB::getInstance();
		$db->begin();
		$cats = new Categories;
		$journal = new Journal;

		$columns = array_flip($this->header);
		$liste_cats = $db->getAssoc('SELECT intitule, id FROM compta_categories;');
		// Liste des moyens sous la forme nom -> code
		$liste_moyens = array_flip($cats->listMoyensPaiement(true));

		$col = function($column) use (&$row, &$columns)
		{
			if (!isset($columns[$column]))
				return null;

			if (!isset($row[$columns[$column]]))
................................................................................

			if ($line === 1)
			{
				if (trim($row[0]) != 'Numéro mouvement')
				{
					throw new UserException('Erreur sur la ligne ' . $line . ' : l\'entête des colonnes est absent ou incorrect.');
				}

				continue;
			}

			if (count($row) != count($columns))
			{
				$db->rollback();
				throw new UserException('Erreur sur la ligne ' . $line . ' : le nombre de colonnes est incorrect.');
			}

			if (trim($row[0]) !== '' && !is_numeric($row[0]))
................................................................................

			$debit = $col('Compte de débit - numéro');
			$credit = $col('Compte de crédit - numéro');

			$cat = $col('Catégorie');
			$moyen = strtoupper(substr($col('Moyen de paiement'), 0, 2));

			// Association du moyen de paiement par nom
			if ($moyen && array_key_exists($moyen, $liste_moyens))
			{
				$moyen = $liste_moyens[$moyen];
			}

			// Vérification de l'existence du moyen de paiement
			// s'il n'est pas valide, on ne peut pas avoir de catégorie non plus
			if (!$moyen || !in_array($moyen, $liste_moyens, true))
			{
				$moyen = false;
				$cat = false;
			}

			if ($cat && !array_key_exists($cat, $liste_cats))
			{