Private
Public Access
1
0

Liens vers les stack #62

Closed
opened 2026-11-12 09:33:25 +00:00 by mcmuzzle · 1 comment
Owner

Quand on est dans les ordres de vente, ce serait interessant de pouvoir afficher pour un ordre, le ou les stack associé pour avoir l'information du cout de production par exemple.

Quand on est dans les ordres de vente, ce serait interessant de pouvoir afficher pour un ordre, le ou les stack associé pour avoir l'information du cout de production par exemple.
mcmuzzle added this to the 0.0.11 milestone 2026-11-12 09:33:29 +00:00
mcmuzzle added the Kind/Enhancement label 2026-11-12 09:33:34 +00:00
Author
Owner

Analyse : ce qui existe déjà pour relier un ordre à ses lots

Il n'y a pas de lien direct entre un SellOrder et un StockLot. Une partie du chemin existe déjà, en passant par les ventes :

SellOrder  ←(SaleTransaction.EsiOrderId, V4)—  SaleTransaction  —(SaleAllocation, V3)→  StockLot
  • SaleOrderMatcher (Stock/SaleFees.cs) retrouve l'ordre d'une vente du wallet. ESI ne donne pas l'order_id dans les transactions, donc il s'appuie sur des règles : même item, même lieu, vente immédiate, même prix, ordre seul ouvert. Le résultat est enregistré dans SaleTransaction.EsiOrderId (SellOrderSyncService.MatchSalesToOrdersAsync, sur les 90 derniers jours).
  • SaleAllocationService rattache chaque vente aux lots ForSale du même item, sur tout le compte, en FIFO (date de mise en vente, puis date d'entrée en stock). L'ordre et le lieu de vente n'entrent pas en compte.

Il faut donc distinguer deux parties d'un ordre :

1. Les unités déjà vendues : lien fiable

Ordre → ventes dont EsiOrderId est celui de l'ordre → SaleAllocation → lots. On connaît le coût de chaque unité vendue (UnitCost, origine, projet source) et on peut afficher une marge réalisée : prix de vente − taxe − part des frais de courtage − coût du lot. Une simple requête suffit, sans nouveau champ.

2. Les unités encore en ligne : lien probable seulement

Aucun lot n'est rattaché à un ordre avant la vente. On peut afficher les lots ForSale du même item, dans l'ordre FIFO où les prochaines ventes les consommeront. Pour un ordre qui reste à vendre, ce sont ses « lots probables ». Ce n'est fiable que s'il n'y a qu'un seul ordre ouvert pour cet item sur le compte. Avec deux ordres du même item (deux lieux, ou deux prix), les lots sont communs et le FIFO décide.

Proposition

Étape 1 (simple, sans changer le modèle). Dans SellOrderModule, un panneau dépliable par ordre :

  • Vendu : les lots consommés par les ventes de cet ordre (quantité, coût unitaire, origine ou projet, lien vers le lot dans Stocks), et la marge réalisée.
  • En vente : les lots ForSale du même item, en FIFO, jusqu'au volume restant de l'ordre, marqués « probables ». On y ajoute un coût unitaire moyen pondéré et une marge estimée au prix de l'ordre.
  • Un avertissement quand plusieurs ordres ouverts partagent le même item.

Étape 2 (si l'étape 1 ne suffit pas). Un lien explicite et facultatif StockLot.SellOrderId, renseigné quand on met un lot en vente ou corrigé à la main. Le rattachement des ventes (V3) privilégierait alors les lots de l'ordre trouvé par SaleOrderMatcher, puis reviendrait au FIFO actuel. C'est plus juste avec plusieurs ordres du même item, mais ça modifie V3 : à décider plus tard.

Questions

  • Afficher la marge (réalisée ou estimée) dans la ligne de l'ordre, ou seulement dans le panneau ?
  • Le lien vers un lot doit-il ouvrir l'outil Stocks sur ce lot ? Il faudrait un paramètre d'URL, comme pour l'onglet actif (#17).
## Analyse : ce qui existe déjà pour relier un ordre à ses lots Il n'y a **pas de lien direct** entre un `SellOrder` et un `StockLot`. Une partie du chemin existe déjà, en passant par les ventes : ``` SellOrder ←(SaleTransaction.EsiOrderId, V4)— SaleTransaction —(SaleAllocation, V3)→ StockLot ``` - `SaleOrderMatcher` (`Stock/SaleFees.cs`) retrouve l'ordre d'une vente du wallet. ESI ne donne pas l'`order_id` dans les transactions, donc il s'appuie sur des règles : même item, même lieu, vente immédiate, même prix, ordre seul ouvert. Le résultat est enregistré dans `SaleTransaction.EsiOrderId` (`SellOrderSyncService.MatchSalesToOrdersAsync`, sur les 90 derniers jours). - `SaleAllocationService` rattache chaque vente aux lots `ForSale` du même item, **sur tout le compte**, en FIFO (date de mise en vente, puis date d'entrée en stock). L'ordre et le lieu de vente n'entrent pas en compte. Il faut donc distinguer deux parties d'un ordre : ### 1. Les unités déjà vendues : lien fiable Ordre → ventes dont `EsiOrderId` est celui de l'ordre → `SaleAllocation` → lots. On connaît le coût de chaque unité vendue (`UnitCost`, origine, projet source) et on peut afficher une **marge réalisée** : prix de vente − taxe − part des frais de courtage − coût du lot. Une simple requête suffit, sans nouveau champ. ### 2. Les unités encore en ligne : lien probable seulement Aucun lot n'est rattaché à un ordre avant la vente. On peut afficher les lots `ForSale` du même item, dans l'ordre FIFO où les prochaines ventes les consommeront. Pour un ordre qui reste à vendre, ce sont ses « lots probables ». Ce n'est fiable que s'il n'y a qu'un seul ordre ouvert pour cet item sur le compte. Avec deux ordres du même item (deux lieux, ou deux prix), les lots sont communs et le FIFO décide. ## Proposition **Étape 1 (simple, sans changer le modèle).** Dans `SellOrderModule`, un panneau dépliable par ordre : - **Vendu :** les lots consommés par les ventes de cet ordre (quantité, coût unitaire, origine ou projet, lien vers le lot dans Stocks), et la marge réalisée. - **En vente :** les lots `ForSale` du même item, en FIFO, jusqu'au volume restant de l'ordre, marqués « probables ». On y ajoute un coût unitaire moyen pondéré et une **marge estimée** au prix de l'ordre. - Un avertissement quand plusieurs ordres ouverts partagent le même item. **Étape 2 (si l'étape 1 ne suffit pas).** Un lien explicite et facultatif `StockLot.SellOrderId`, renseigné quand on met un lot en vente ou corrigé à la main. Le rattachement des ventes (V3) privilégierait alors les lots de l'ordre trouvé par `SaleOrderMatcher`, puis reviendrait au FIFO actuel. C'est plus juste avec plusieurs ordres du même item, mais ça modifie V3 : à décider plus tard. ## Questions - Afficher la marge (réalisée ou estimée) dans la ligne de l'ordre, ou seulement dans le panneau ? - Le lien vers un lot doit-il ouvrir l'outil Stocks sur ce lot ? Il faudrait un paramètre d'URL, comme pour l'onglet actif (#17).
Sign in to join this conversation.