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)carClearest 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 : "".