Archives de la liste d​e​v​@p​a​h​e​k​o​.c​l​o​u​d​

API : créer une association entre deux écritures

lesanges at murena.io via dev

27/02/2024 20:34:44

Bonjour,

Pour un module sur lequel je travaille, j'ai besoin de créer une association 
entre deux écritures existantes en ajoutant une ligne dans la table 
acc_transactions_links

Or actuellement je n'y arrive pas directement ; la solution que je vois consiste 
à supprimer l'une des deux écritures puis la recréer avec la liaison, mais cela 
pose un problème si l'écriture que je supprime a été rapprochée ; autre
problème 
si l'écriture appartient à un exercice déjà clôturé... et il y peut-être 
d'autres problèmes que je ne vois pas...

Bref, y a-t-il une solution simple et directe ou bien est-il possible d'ajouter 
la fonctionnalité ?

merci d'avance

API : créer une association entre deux écritures

BohwaZ/Paheko

04/03/2024 22:31:41

Hello,

bonne remarque, il manquait cela à l'API, je viens de rajouter :
https://fossil.kd2.org/paheko/info/3659fa393e108123

API : créer une association entre deux écritures

lesanges at murena.io via dev

16/03/2024 11:46:14

Le 04/03/2024 à 22:31, BohwaZ/Paheko a écrit :
> Hello,
> 
> bonne remarque, il manquait cela à l'API, je viens de rajouter :
> https://fossil.kd2.org/paheko/info/3659fa393e108123

Si je regarde le code, il me semble que ceci ne répond pas tout-à-fait à mon 
besoin : en effet, si je comprends bien, la fonction accounting crée 
systématiquement une nouvelle écriture (ligne 445) et c'est bien ce que j'ai 
constaté en l'utilisant.

Mon besoin est simplement de lier deux écritures existantes, dont d'ajouter une 
ligne dans la table acc_transactions_links sans modifier les écritures 
existantes. Est-ce possible ?


Jean-Christophe Engel

API : créer une association entre deux écritures

BohwaZ/Paheko

16/03/2024 17:41:52

> Mon besoin est simplement de lier deux écritures existantes, dont
> d'ajouter une ligne dans la table acc_transactions_links sans
> modifier les écritures existantes. Est-ce possible ?

Oui c'est exactement ce que fait la route
accounting/transaction/{ID_TRANSACTION}/transactions

comme indiqué dans mon message :)

API : créer une association entre deux écritures

lesanges at murena.io via dev

18/03/2024 19:09:58

Après pas mal d'essais, j'en viens à conclure qu'il manque un petit truc
dans le 
code de API.php (voir fichier patch joint).

À moins que je me plante complètement... et que je sois passé à côté de quelque 
chose

voici mon code : je veux associer les écritures 1350 et 1355 à l'écriture 1336

{{:assign immo_id=1336}}
{{:assign amort_id1=1350}}
{{:assign amort_id2=1355}}

{{:assign var="linked_transactions." value=$amort_id1}}
{{:assign var="linked_transactions." value=$amort_id2}}

{{:api
	method="POST"
	path="accounting/transaction/%s/transactions"|args:$immo_id
	assign="result"
	assign_code="result_code"
	linked_transactions=$linked_transactions
}}

actuellement, la fonction accounting de API.php appelle (ligne 482)
updateLinkedTransactions ((array)($_POST['transactions'] ?? null))

et le paramètre est systématiquement à null

J'ai l'impression que dans mon cas, il faudrait faire l'appel
updateLinkedTransactions((array)$this->params['linked_transactions'])

J'ai appliqué le petit patch joint et ça fonctionne.. mais tu verras toi-même 
s'il est correct


Jean-Christophe Engel

Le 16/03/2024 à 17:41, BohwaZ/Paheko a écrit :
>> Mon besoin est simplement de lier deux écritures existantes, dont
>> d'ajouter une ligne dans la table acc_transactions_links sans
>> modifier les écritures existantes. Est-ce possible ?
> 
> Oui c'est exactement ce que fait la route
> accounting/transaction/{ID_TRANSACTION}/transactions
> 
> comme indiqué dans mon message :)
>

API : créer une association entre deux écritures

lesanges at murena.io via dev

19/03/2024 11:35:55

Pour compléter : je ne comprends pas pourquoi updateLinkedTransactions supprime 
les anciennes liaisons avant d'ajouter les nouvelles..

Jean-Christophe Engel

API : créer une association entre deux écritures

BohwaZ/Paheko

19/03/2024 13:27:16

Non c'est toi qui n'a pas lu la doc ;)

### accounting/transaction/{ID_TRANSACTION}/transactions (POST)

Met à jour la liste des écritures liées à une écriture, en utilisant
les ID des écritures, passées dans un tableau nommé `transactions`.

```
 curl -v "http://…/api/accounting/transaction/9337/transactions"  -F
'transactions[]=2' ```

API : créer une association entre deux écritures

BohwaZ/Paheko

19/03/2024 13:28:04

> Pour compléter : je ne comprends pas pourquoi
> updateLinkedTransactions supprime les anciennes liaisons avant
> d'ajouter les nouvelles..

Ben parce que sinon tu fait comment pour supprimer une liaison entre 2
écritures ?