Table des matières
API PA - Mise à jour du statut
Principe
Pour mettre à jour le statut d'un PA, veuillez utiliser l'API suivante, notamment dans le cadre d'une post-action.
Cette API permet de :
- garantir la traçabilité de l'action ;
- vérifier la faisabilité du changement de statut ;
- déclencher l'événement permettant de mettre effectivement à jour le statut sur le PA.
Ne modifiez jamais directement les tables _paachat ou _pavente.
La mise à jour doit obligatoirement passer par l'API update_status.
API
def update_status( usession, entity, newstatusid: int, tfqn=None, vrsid=None, pa_entity_id=None, remote=True, pa_tstamp=None, motifid=0 ) -> tuple[int, str, int]:
Paramètres
| Paramètre | Description |
|---|---|
usession | Session avec une connexion BDD ouverte. |
entity | Entité concernée : “achat” ou “vente”. |
newstatusid | Nouveau statut principal. Exemple : 204 → 212. |
tfqn | Nom de la table contenant l'entité. À utiliser avec vrsid. |
vrsid | Identifiant auto-incrémenté de l'entité dans la table tfqn. À utiliser avec tfqn. |
pa_entity_id | Identifiant auto-incrémenté de l'entité dans la table paachat ou pavente. Alternative au couple tfqn + vrsid. |
remote | Indique si le statut provient du PA. Pour une mise à jour locale, toujours utiliser False. |
pa_tstamp | Timestamp du PA. Ne pas renseigner : la date courante sera utilisée automatiquement. |
motifid | Statut secondaire / motif. Exemple : 21001, 21002, etc. |
Identification de l'entité
L'entité à mettre à jour peut être identifiée de deux façons.
Avec ''tfqn'' + ''vrsid''
Utiliser :
tfqn = nom_de_la_table vrsid = identifiant_auto_increment
Avec ''pa_entity_id''
Il est également possible de fournir directement l'identifiant auto-incrémenté de l'entité dans :
paachatpour un achat ;paventepour une vente.
Il faut utiliser soit le couple tfqn + vrsid, soit pa_entity_id.
Paramètre ''remote''
Pour une mise à jour effectuée localement, utilisez toujours :
remote=False
La valeur remote=True est réservée aux statuts reçus du PA.
Paramètre ''pa_tstamp''
Ne renseignez pas le paramètre pa_tstamp.
L'API utilisera automatiquement la date et l'heure courantes.
Exemple
Refus d'un achat avec le motif 21002
Dans cet exemple, l'achat passe au statut principal 210 avec le motif 21002.
import common import pa_common vses = common.dbses() retcode, reterror, retlogid = pa_common.update_status( vses, "achat", 210, tfqn="ez_facture_fournisseur", vrsid=345, remote=False, motifid=21002 ) vses.db.disconnect()
Retour de l'API
L'API retourne un tuple de trois valeurs :
(retcode, reterror, retlogid)
| Valeur | Description |
|---|---|
retcode | Code retour de l'opération. |
reterror | Message d'erreur ou “ok” si l'opération a réussi. |
retlogid | Identifiant de l'enregistrement de traçabilité (log). |
Exemple de succès
0, "ok", 15487
Dans cet exemple :
0indique que l'opération a réussi ;“ok”indique qu'aucune erreur n'a été rencontrée ;15487est l'identifiant du log de traçabilité.
Exemple d'erreur
-5, "mise a jour de statut impossible pour ce statut : deja en cours de synchronisation", 0
Dans cet exemple, la mise à jour n'a pas été effectuée car le PA est déjà en cours de synchronisation.
En cas d'erreur, il convient de vérifier retcode et reterror. Le retlogid peut être égal à 0 lorsqu'aucune opération de traçabilité n'a été enregistrée.
Récapitulatif
| Élément | Valeur / règle |
|---|---|
| API | pa_common.update_status() |
| Entité | “achat” ou “vente” |
| Statut principal | newstatusid |
| Motif / statut secondaire | motifid |
| Identification | tfqn + vrsid ou pa_entity_id |
| Mise à jour locale | remote=False |
pa_tstamp | Ne pas renseigner |
| Modification directe des tables | Interdite |
| Retour | retcode, reterror, retlogid |
