Créer une proposition commerciale
API Reference : Clients
Description
Création d’une proposition commerciale correspondant à un document de vente de type Devis
en statut Saisi
.
L’application d’exemple Catalogues et Stocks permet aux utilisateurs d’optimiser leurs actions commerciales en saisissant en direct, depuis leur smartphone une proposition commerciale, voir : Exemples / Catalogues et stocks.
Les lignes de la proposition pourront soit correspondre à une ligne d’article, soit à une ligne de commentaire.
Propriétés de l’entête
propriété | Type | Description | Longueur |
---|---|---|---|
datePrevisionnelle | datetime | date estimée de signature |
Propriétés du body des lignes
propriété | Type | Description | Longueur |
---|---|---|---|
articleId | string | Identifiant de l’article ou C Plus d'infos | |
description | string | Description de la ligne ou du commentaire Plus d'infos | 69 |
enumereGamme1Id | string | Identifiant de l’énuméré de gamme 1 | |
enumereGamme2Id | string | Identifiant de l’énuméré de gamme 2 | |
prixHT | double | Prix HT | |
quantite | double | Quantité | |
remise | double | Remise |
Route
Verbe | Power Automate | Power Apps |
---|---|---|
Créer une proposition commerciale | ProposerByDatasetidAndKey |
Exemple
Dans cet exemple les éléments suivants sont définis :
Set(currentCompanyId;{idCompany});; // Id de la société courante
Set(currenClientID;{idClient});; // Id du client courant
Set(datePrevisionnelle;Today());; // Date prévisionnelle de signature
ClearCollect(ColPanier;{id:0;articleid:"";intitule:"";reference:"";gamme1:"";enumgam1:"";enumgam1id:"";gamme2:"";enumgam2:"";enumgam2id:"";qte:0;prixHT:0;remise:0;description:"";typeNomenclature:""});; // Collection du panier contenant les articles sélectionnés
Le code suivant va créer la structure de la proposition commerciale d’après les lignes de la collection ColPanier
, les id currentCompanyID
et currentClientID
et avec la date prévisionnelle datePrevisionnelle
.
Notez :
- l’astuce pour découper une ligne de commentaires en x lignes de 69 caractères maximum pour respecter la longueur maximale de 69 caractères de la propriété description.
- la syntaxe particulière
Remove(collection;collection)
qui équivaut à unClear(collection)
carClear
est interdit dans unForAll
. - qu’en l’absence de remise, la remise doit être forcée à 0.
- l’obligation de forcer le format date de la date Prévisionnelle.
- La gestion optionnelle des gammes 1 et gammes 2 pour les articles à gamme.
Clear(propositionCommercialeLigne);;
//Variable pour itérer sur les lignes de commentaires
Set(colIterate;"||||||||||||||||||||||||||||||||||||");;
ForAll(Sort(ColPanier;id);
// On découpe une ligne de commentaire en x lignes de 69 car. Priorité à la découpe si retour de ligne sinon blocs de 69 car.
If(articleid="C";
Remove(lignes;lignes);;
Collect(lignes;Split(Substitute(Substitute(description;Char(10);"|");"||";"|");"|"));;
ForAll(lignes;
Remove(cptLig;cptLig);;
ForAll(Split(Left(colIterate;RoundUp(Len(lignes[@Result])/69;0)-1);"|");
Collect(propositionCommercialeLigne;{description:Mid(lignes[@Result];CountRows(cptLig)*69+1;69)});;
Collect(cptLig;{})
)
)
;
// Si pas ligne de commentaire alors c'est une ligne d'article
Collect(propositionCommercialeLigne;{
articleId:articleid;
enumereGamme1Id:enumgam1id;
enumereGamme2Id:enumgam2id;
quantite:qte;
prixHT:prixHT;
remise:Coalesce(remise;0);
description:description
}
)
)
);;
// On peut à présent créer la proposition commerciale
Sage100cloud.ClientsProposerByDatasetidAndKey(
currentCompanyId;
currentClientId;
propositionCommercialeLigne;
{datePrevisionnelle:Text(datePrevisionnelle;"[$-en-US]yyyy-mm-ddThh:mm:ssZ")}
);;
Informations
- articleId : La valeur de cette propriété doit contenir l’Id d’un article existant pour une ligne d’article ou la valeur C pour une ligne de commentaire.
- description : Si la propriété description est affectée avec une valeur nulle
description : Blank()
l’API affectera automatiquement la description de l’article. Pour forcer une description vide il faudra l’affecter avec une chaine vide :description : ""
.