Page 1 sur 1

Ligne 100 - Gestion devis avec OM V3 et Windev

MessagePosté: Jeu 14 Sep 2017 11:38
de fbal
Bonjour,

J'utilise les OM v3 avec Windev (21) pour la création de devis.
Tout se passe correctement mais j'ai un problème avec certains articles en nomenclature "Commerciale/composé".
Sous Sage, quand le même devis est réalisé, la création d'une ligne avec un article de ce type engendre automatiquement les lignes des articles liés.
Avec OM piloté par le programme sous Windev, je croyais que l'utilisation de WriteDefault() allait faire ce job mais il n'en est rien...

En gros, je fais :
Code: Tout sélectionner
// Création de l'objet métier devis
pautNVDocDevis = OM_Sage:autBaseCialEXPRESS>>FactoryDocumentVente>>CreateType(0)
// Affectation du client au devis
pautNVDocDevis>>SetDefaultClient(OM_Sage:autBaseCptaEXPRESS>>FactoryTiers>>ReadNumero(sCT_Num))
// Affectation n° piece
pautNVDocDevis>>SetDefaultDO_Piece()
// Création de l'entete du devis
pautNVDocDevis>>WriteDefault

// Création de l'OM ligne de document
pautLigneCDEArticle = pautNVDocDevis>>FactoryDocumentLigne>>Create
// Affectation de l'article, le deuxieme parametre est la quantité
pautLigneCDEArticle>>SetDefaultArticle(OM_Sage:autBaseCialEXPRESS>>FactoryArticle>>ReadReference(AR_Ref),1)
// Ecriture de la ligne
pautLigneCDEArticle>>WriteDefault



Question : est-ce qu'il faut vérifier pour chaque article si il est dans ce type de nomenclature et si oui, de lister et d'ajouter les articles liés ? L'un d'entre-vous aurait-il la bonté de poster un petit exemple ou les fonctions OM à utiliser ?

Un grand merci aux spécialistes OM qui pourront répondre...

Re: Ligne 100 - Gestion devis avec OM V3 et Windev

MessagePosté: Jeu 14 Sep 2017 14:21
de asr31
Bonjour,

Je suis aussi assez déçu par les OM qui soit disant doivent se comporter comme l'application cliente (Gescom.exe) ...

Pourtant, j'ai suivi les différents cursus de formation sur les OM, mais je ne suis pas forcément un bon développeur en .Net...

Pour avoir essayé de reprendre les exemples des formations, je n'arrive pas, par exemple, à appliquer leurs exemples sur un 'simple' transfert de dépôt à dépôt d'articles sérialisés sans gestion des emplacements.

Mais bon, c'est à moi de bien comprendre ce modèle objet SAGE...

Cordialement,

Re: Ligne 100 - Gestion devis avec OM V3 et Windev

MessagePosté: Lun 18 Sep 2017 16:29
de fbal
Bonjour,
J'ai pu résoudre mon problème, il faut utiliser le processus de création de document (voir page 91 du manuel OM).

Code: Tout sélectionner
// NB : strDoc est une structure que j'utilise pour stocker toutes les infos nécessaires
// à la création de mon document
mProcessDoc, mDoc est un objet Automation dynamique
mProcessDoc = :autBaseCialEXPRESS>>CreateProcess_Document(strDoc:nTypeDocument) // 0 = Devis
// Conversion (implicite) du document du processus (IBODocument3)
// dans le type du document de destination : Devis (IBODocumentVente3)
mDoc = mProcessDoc>>Document

// Affectation au client
mDoc>>SetDefaultClient(:autBaseCptaEXPRESS>>FactoryTiers>>ReadNumero(strDoc:sCT_Num))
// Affectation n° piece (donné automatiquement par Sage)
mDoc>>SetDefaultDO_Piece()
strDoc:sDOPiece = mDoc>>DO_Piece()

// Ajout références et coordonnées
mDoc>>DO_Ref = strDoc:sReference
mDoc>>DO_Coord(1) = strDoc:sContact

POUR c=1 _A_ Dimension(strDoc:tsLignes)
   mLig est un objet Automation dynamique
   //Si la ligne à insérer a un commentaire, on créé une ligne sans référence avant la ligne article
   SI PAS strDoc.tsLignes[c].sCommentaires ~="" ALORS
      // Création de l'OM ligne de document
      mLig = mDoc>>FactoryDocumentLigne>>Create
      // Affectation de l'article, le deuxieme parametre est la quantité
      mLig>>DL_Design = strDoc.tsLignes[c].sCommentaires
      // Ecriture de la ligne
      mLig>>WriteDefault
   FIN
   // Ajout de la ligne article, si il y a un ou plusieurs articles liés, il seront créés
   mLig = mProcessDoc>>AddArticle(:autBaseCialEXPRESS>>FactoryArticle>>ReadReference(strDoc:tsLignes[c]:sRéférence), strDoc.tsLignes[c]:eQuantité)
FIN


// Tout est prêt
SI mProcessDoc>>CanProcess ALORS
   mProcessDoc>>Process()
FIN
// On peut ensuite éventuellement ajouter des infos libres sur le document (pas en création, après)



Ouf...