Total commande

Product :4D - 4D Server

OS : Windows

Bonjour à tous,

Je débute sur 4D, je me suis aidé de l’autoformatiion pour commencer une base… mais là ça dépasse pour l’instant mes compétences…
2 difficultés auxquelles je ne trouve pas réponse:

  1. Total commande

J’ai une table [Commande], [Liaison_commande] et [Article]
Un formulaire table Commande “Entrée” dans lequel j’ai un sous-formulaire table Liaison_Commande “Formulaire1”

Je créé une commande à laquelle j’ajoute x articles, en indiquant l’ID_article ainsi que la quantite_article dans mon sous formulaire.

J’ai un champ [Total_ligne_commande] avec une formule qui me donne la total : prix_article*qté. pour chaque ligne.

Je cherche à obtenir le total de ces lignes dans mon sous-formulaire et stocker cette valeur dans le champs Total_commande de ma table commande.

  1. Format numéro commande.

Je souhaiterai connaître la méthode pour avoir une incrémentation automatique de mes numéros de commande sous format spécifique, par exemple, “C”&année&mois&numéro commande du mois,C20010001.

En pièce joint une vue de mon formulaire.
Merci par avance pour votre aide et conseils,
Louis

https://forums.4d.com/4DBB_Main/x_User/34534826/files/34707665.pdf

: Louis T
  1. Total commande
    Tu peux faire :
    <code 4D>
    [Commande]Total_commande:=Somme([Liaison_commande]Total_ligne_commande)
    </code 4D>
    ça marche à condition d’avoir au moment où tu l’exécutes la “bonne” sélection d’enregistrements dans [Liaison_commande].
: Louis T
  1. Format numéro commande
    Pour ça il n’y a pas d’autre solution qu’un enregistrement+un champ qui stocke le dernier numéro utilisé.
    Par exemple une table [compteur], avec un seul enregistrement, et un champ dernierNumeroDeCommande dans cette table.
    Quand il te faut un nouveau numéro :
    <code 4D>
    //methodeNouveauNumeroCommande -> numero commande
    c_texte($0)
    tout selectionner([compteur])
    [compteur]dernierNumeroDeCommande:=[compteur]dernierNumeroDeCommande+1
    $0:=[compteur]dernierNumeroDeCommande
    stocker enregistrement([compteur])
    libérer enregistrement([compteur])
    </code 4D>
    Bon, là c’est un peu simpliste ; a minima il faut tester que l’enregistrement compteur est libre, en client/serveur ça n’est pas forcément la super solution, etc.