Caisse (PointOfSale) - Fonctionnement optimisé

Ouverture de la caisse

sequenceDiagram participant K as Caissière participant U as UI participant H as hwproxy participant A as API participant J as Job U->>H: Récupération du hostname U->>A: GET pos/getByHostname (pour les infos caisse de base) U->>A: GET pos/getPosData (pour les infos caisse complètes) K->>U: Identifiant U->>A: GET user/getAuthenticationData U-->K: Auth possible K->>U: Mot de passe activate K U->>A: Auth (métier, émulation keystone) A-->J: métier auth (login failed) A->>U: token U->>A: GET pos/getById U->>U: Vérifications (cas "caisse fermée") U->>A: POST pos/open activate U A->>J: cineges.pos.open J->>J: Ouverture Odoo J->>U: Notif open deactivate U U->>U: Annulation des paniers ouvert U->>A: POST posbasket/_search activate U U->>A: DELETE posbasket/cancel A->>J: cineges.posbasket.cancel J->>U: Notif cancel deactivate U U->>U: Nouveau panier activate U U->>A: PUT posbasket/create A->>J: cineges.posbasket.create J->>U: Notif + panier deactivate U U->>H: CustomerDisplay: infos panier deactivate K K->>U: ... encaissements ...

Fonctionnement commun

Note: n’a pas changé: l’aspect métier “Continuer la session” doit encore être demander avant l’appel à l’api pos/open

Changements

Pour l’ouverture de session ou pour continuer une session, il faut dans les deux cas appeler pos/open : des traitements de nettoyage sont fait, et un id de panier vide est renvoyé.

getByHostname peut éventuellement être remplacé par getPosData qui renvoie la totalité des infos pour que la caisse fonctionne.

Il faut souscrire aux notifications de modifications d’items {"type": "xxx"} pour maintenir à jour les données dans PosData.

Les opérations de modification/calcul du panier sont faites dans le navigateur, une modification de panier déclenche uniquement une persistence du panier pos/persist.

Le boolean doFinalize de pos/persist permet de clôturer le panier, et de générer les places de cinéma Ticket.