lumnik. / scénarios Tous les scénarios · English

Une ligne par article à préparer avec modèle couleur et taille

Objectif Sortir de l'export d'une marketplace une ligne par article, pour préparer le stock.

L'export de la marketplace donne une ligne par commande. Les articles sont serrés dans une cellule, et chaque référence serre modèle, couleur et taille.

manifests/90-dlq-beside-split-row.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-order-items-b  connector_type: csv-file  scopes: [logistics-b]spec:  transport:    kind: local    path: /tmp/lumnik-scenario/marketplace-order-items/b/orders.csv  parser:    delimiter: ";"  after_process: none  mapping:    on-error:      fields: { items: dlq }                              # refused: a split order has no single row to dead-letter    row:      - split-row: { by: items, sep: "|" }      - validate-row: { required: [items] }               # refused: it would drop items, not orders    cell:      - split: { column: items, by: "-", into: [model, colour, size] }
orders.csv
order_no;customer;items
CMD-1001;Durand;TSH-BLEU-M|TSH-ROUGE-L|CASQ-NOIR-U
CMD-1002;Morel;SWEAT-GRIS-XL
CMD-1003;Nguyen;TSH-BLEU-M|TSH-BLEU-M
;;
CMD-1004;Faure;tsh-vert-s|SWEAT-GRIS-M
CMD-1005;Roux;CASQ-NOIR

CMD-1006;Garnier;TSH-ROUGE-L|SWEAT-BLEU-MARINE-L
$ lm entity get pick_line_b
ORDER_NO  ITEM_NO  CUSTOMER  ITEMS                MODEL  COLOUR  SIZE    _CONFLICTS
CMD-1001  1        Durand    TSH-BLEU-M           TSH    BLEU    M       {}
CMD-1001  2        Durand    TSH-ROUGE-L          TSH    ROUGE   L       {}
CMD-1001  3        Durand    CASQ-NOIR-U          CASQ   NOIR    U       {}
CMD-1002  1        Morel     SWEAT-GRIS-XL        SWEAT  GRIS    XL      {}
CMD-1003  1        Nguyen    TSH-BLEU-M           TSH    BLEU    M       {}
CMD-1003  2        Nguyen    TSH-BLEU-M           TSH    BLEU    M       {}
CMD-1004  1        Faure     TSH-VERT-S           TSH    VERT    S       {}
CMD-1004  2        Faure     SWEAT-GRIS-M         SWEAT  GRIS    M       {}
CMD-1005  1        Roux      CASQ-NOIR            CASQ   NOIR            {}
CMD-1006  1        Garnier   TSH-ROUGE-L          TSH    ROUGE   L       {}
CMD-1006  2        Garnier   SWEAT-BLEU-MARINE-L  SWEAT  BLEU    MARINE  {}
orders-renamed.csv
order_no;customer;articles
CMD-1001;Durand;TSH-BLEU-M|TSH-ROUGE-L|CASQ-NOIR-U
CMD-1002;Morel;SWEAT-GRIS-XL
CMD-1003;Nguyen;TSH-BLEU-M|TSH-BLEU-M
;;
CMD-1004;Faure;tsh-vert-s|SWEAT-GRIS-M
CMD-1005;Roux;CASQ-NOIR

CMD-1006;Garnier;TSH-ROUGE-L|SWEAT-BLEU-MARINE-L

Limites

  • Une couleur qui contient un tiret, comme BLEU-MARINE, décale la taille: split compte la cellule mais ne la corrige pas.
  • OUT compte les commandes écrites ; le nombre d'articles se lit dans la table.
  • Deux lignes identiques dans le fichier lui-même n'en font qu'une dans la table.
  • Commandes synthétiques.

Logistique · marketplace

Les commandes arrivent de la marketplace.

La logistique veut une ligne par article.

Sept commandes, onze articles

Le problème

Tout est serré dans une cellule.

  • Plusieurs articles par commande.
  • Modèle, couleur, taille dans une référence.

Ce qui n'est pas modifié

L'export reste tel quel.

  • Le fichier de la marketplace.
  • Aucun script à côté.

Le piège

Deux t-shirts identiques.

  • Même commande, même référence.
  • Sans rang, la table n'en garde qu'un.

Ce qu'il a fallu écrire

split-row: { by: items, position: item_no }

Une ligne.

  • Un article, une ligne, son rang.
  • Une référence mal formée est comptée.
  • Deux manifestes, 39 lignes.

Le lendemain

La colonne change de nom: refusé.

  • Le run nomme la colonne manquante.
  • Les lignes de la veille restent.

La limite

Une couleur à tiret décale la taille.

  • BLEU-MARINE donne la taille MARINE.
  • La cellule est comptée, pas corrigée.

Essayer

Le scénario se rejoue en local.

Chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →