PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [WD12] LIVRAISON CLASSES OBJETS METIER SAGE
[WD12] LIVRAISON CLASSES OBJETS METIER SAGE
Iniciado por ismael.watrin, 08,sep. 2008 13:13 - 11 respuestas
Publicado el 08,septiembre 2008 - 13:13
Bonjour
Reprenant le travail sur les acces SAGE 100 ( compta, gescom) sur base SQL, je livre les classes que nous avons développé, j'attends bien entendu vos commentaires et améliorations pour essayer d'en faire une réference... !!!

Tenez moi au courant et si vous avez des soucis avec leurs utilisations , j'essayerai de vous aider...

Cordialement

Bien entendu ces classes sont spécifiques a des traitements particuliers de SAGE pour notre activité...

// CLASSE -------------------- GESTION DES ARTICLES -------------------------

stArticleDepot est une structure
oDepot est un cDepot
nStockReel est un monétaire
FIN

cArticle est une classe
PUBLIC
PRIVÉ
oBaseSAGE est un cCialSage
cnxBDD est une Connexion
oArticleOLE est un objet OLE dynamique
bArticleOK est booléen
oDepotPrincipal est un cArticleDepot
bDepotPrincipalOK est booléen = Faux //indique si le depot principal est initialise ou non
tabQteDepot est un tableau dynamique de 0 stArticleDepot
bStockDepotOK est booléen //indique si les quantites par depot sont chargees
oInfosLibres est un cInfosLibres
oFamille est un cFamille
FIN


PROCEDURE Constructeur()
PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getArticleOLE ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// objet Automation : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getArticleOLE()
RENVOYER(:oArticleOLE)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getDesignation ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDesignation()
RENVOYER(:oArticleOLE>>AR_Design())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] lireReference (<pBaseCIAL> est cCialSage, <pCnxBDD>, <pCodArticle>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCnxBDD : <indiquez ici le rôle de cnxBDD>
// pCodArticle : <indiquez ici le rôle de pCodArticle>
// Valeur de retour :
// booléen : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE lireReference(LOCAL pBaseCIAL est un cCialSage, LOCAL pCnxBDD, LOCAL pCodArticle)
oCial est un objet OLE dynamique = pBaseCIAL:getcial()
SI oCial>>FactoryArticle>>ExistReference(pCodArticle) ALORS
:oArticleOLE = oCial>>FactoryArticle>>ReadReference(pCodArticle)
:bArticleOK = Vrai
:oBaseSAGE = pBaseCIAL
:cnxBDD = pcnxbdd
:oInfosLibres:setObjetOLE(:oArticleOLE>>InfoLibre())
:oFamille:setfamille(:oArticleOLE>>Famille())
SINON
:bArticleOK = Faux
FIN
RENVOYER(:bArticleOK)
// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//setArticleOLE (<pBaseCIAL> est cCialSage, <pCnxBDD>, <pArticle>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pArticle : <indiquez ici le rôle de pArticle>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setArticleOLE(LOCAL pBaseCIAL est un cCialSage, LOCAL pCnxBDD, pArticle)
//:oArticleOLE = particle
:lireReference(pBaseCIAL,pCnxBDD,pArticle>>AR_Ref())
:bArticleOK = Vrai

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getRef ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getRef()
SI :bArticleOK ALORS
RENVOYER(:oArticleOLE>>AR_Ref())
SINON
Erreur("erreur")
FIN

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getStockReel ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockReel()
RENVOYER(:oArticleOLE>>StockReel())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getFournisseurPrincipal ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getFournisseurPrincipal()
//oArtTarifFour est un cArticleTarifFournisseur()
//oArtTarifFour:setArticleTarifFournisseur(:mArticle>>FournisseurPrincipal())
//renvoyer(oArtTarifFour)
RENVOYER(:oArticleOLE>>FournisseurPrincipal())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getDepotPrincipal ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cArticleDepot : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDepotPrincipal()
SI PAS :bDepotPrincipalOK ALORS
:oDepotPrincipal:setArticleDepot(:oBaseSAGE, :cnxBDD, :oArticleOLE>>ArticleDepotPrincipal())
:bDepotPrincipalOK = Vrai
FIN
RENVOYER(:oDepotPrincipal)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//chargeStockDepot (<pBaseCIAL> est cCialSage, <pCodArticle>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCodArticle : <indiquez ici le rôle de pCodArticle>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE PRIVÉE chargeStockDepot(LOCAL pBaseCIAL est un cCialSage, LOCAL pCodArticle)
nInd est entier
cArticle_chargeArticle_sdDataSet est une Source de Données
sRequete est chaîne = "SELECT F_ARTSTOCK.AS_QteSto, F_DEPOT.DE_INTITULE FROM F_ARTSTOCK , F_DEPOT WHERE F_ARTSTOCK.AR_Ref = '"+pCodArticle+"' and f_artstock.de_no = f_depot.de_no"
SI PAS HExécuteRequêteSQL(cArticle_chargeArticle_sdDataSet,cnxBDDGESPROD,hRequêteDéfaut,sRequete) ALORS Erreur("Erreur cArticle:chargeArticle",HErreurInfo())
POUR TOUT cArticle_chargeArticle_sdDataSet
oDep est un cDepot()
oDep:lireIntitule(pBaseCIAL,cnxBDDGESPROD, cArticle_chargeArticle_sdDataSet.de_intitule)
nInd++
Dimension(:tabQteDepot,nInd)
:tabQteDepot[nInd]:oDepot = oDep
:tabQteDepot[nInd]:nStockReel = cArticle_chargeArticle_sdDataSet.AS_QteSto
FIN
HAnnuleDéclaration(cArticle_chargeArticle_sdDataSet)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getStockDepot (<pIntituleDepot>)
//
// Paramètres :
// pIntituleDepot : <indiquez ici le rôle de pIntituleDepot>
// Valeur de retour :
// monétaire : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockDepot(pIntituleDepot)
SI PAS :bStockDepotOK ALORS
:chargeStockDepot(:oBaseSAGE, :getRef())
:bStockDepotOK = Vrai
FIN
nInd est un entier = 1
TANTQUE nInd <= Dimension(:tabQteDepot) ET :tabQteDepot[nInd]:oDepot:getIntitule() <> pIntituleDepot
nInd++
FIN
SI nInd > Dimension(:tabQteDepot) ALORS
//depot pas trouve
RENVOYER(MONE_INFINIPOSITIF)
SINON
RENVOYER(:tabQteDepot[nInd]:nStockReel)
FIN
// Résumé : renvoie le code barre de l'article
// Syntaxe :
//[ <Résultat> = ] getCodeBarre ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getCodeBarre()
RENVOYER(:oArticleOLE>>AR_CodeBarre())

// Résumé : renvoie le poids net de l'article
// Syntaxe :
//[ <Résultat> = ] getPoidsNet ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : // Poids de l'article
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getPoidsNet()
RENVOYER(:oArticleOLE>>AR_PoidsNet())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] lireRefUniverse (<pBase> est cCialSage, <pCnxBDD>, <pRefUniverse> est chaîne)
//
// Paramètres :
// pBase (cCialSage) : <indiquez ici le rôle de pBase>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pRefUniverse (chaîne) : <indiquez ici le rôle de pRefUniverse>
// Valeur de retour :
// booléen : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE lireRefUniverse(LOCAL pBase est un cCialSage, LOCAL pCnxBDD, LOCAL pRefUniverse est chaîne)
sdcArticleLireRefUniverse est Source de Données
sRequete est chaîne = [
SELECT F_ARTICLE_PROD.AR_Ref
FROM F_ARTICLE_PROD
WHERE F_ARTICLE_PROD.Reference_WINNIX = '%1'
]

SI PAS HExécuteRequêteSQL(sdcArticleLireRefUniverse,pCnxBDD,ChaîneConstruit(sRequete,pRefUniverse)) ALORS
Erreur("Erreur requete "+dbgInfo(dbgElément),HErreurInfo())
FinProgramme
FIN
HLitPremier(sdcArticleLireRefUniverse)
SI HTrouve(sdcArticleLireRefUniverse) ALORS
//chargement de l'article
RENVOYER(:lireReference(pBase, pCnxBDD, sdcArticleLireRefUniverse.AR_Ref))
SINON
RENVOYER(Faux)
FIN


// Résumé : Renvoie la valeur de l'info libre dont le rang est passé en paramétre
// Syntaxe :
//[ <Résultat> = ] getInfoLibre (<pInd> est entier)
//
// Paramètres :
// pInd (entier) : Rang de l'info libre
// Valeur de retour :
// Chaine : valeur de l'info libre
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getInfoLibre(LOCAL pInd est entier)
Trace("DEPRECATED", dbgInfo(dbgPile))
RENVOYER(:oArticleOLE>>InfoLibre>>Item(pind))

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getStockDispo ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockDispo()
RENVOYER(:oArticleOLE>>StockDispo())

// Résumé : Renvoie le stock a terme de l'article (Stock réel + Stock commandé - Stock réservé – Stock préparé)
// Syntaxe :
//[ <Résultat> = ] getStockATerme ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : stock a terme
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockATerme()
RENVOYER(:oArticleOLE>>StockATerme())

// Résumé : Renvoie le stock commande de l'article
// Syntaxe :
//[ <Résultat> = ] getStockCommande ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : stock commande
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockCommande()
RENVOYER(:oArticleOLE>>StockCommande())

// Résumé : Renvoie le stock reserve de l'article
// Syntaxe :
//[ <Résultat> = ] getStockReserve ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : stock reserve
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockReserve()
RENVOYER(:oArticleOLE>>StockReserve())

// Résumé : Renvoie le stock prepare de l'article
// Syntaxe :
//[ <Résultat> = ] getStockPrepare ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : stock prepare
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockPrepare()
RENVOYER(:oArticleOLE>>StockPrepare())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getInfosLibres ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cInfosLibres : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getInfosLibres()
RENVOYER(:oInfosLibres)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//ecrire ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE ecrire()
:oArticleOLE>>write()

// Résumé : //cette procedure renvoie le radical du code article passe en parametre
//ne s'applique qu'aux matières premieres. pas aux produits finis
//le code article est constitué de :
// - code saison sur 2 chiffres
// - code article sur 3 chiffres
// - code couleur sur 2 chiffres


// Syntaxe :
//[ <Résultat> = ] getRadical ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// chaîne : // Aucune
//

PROCEDURE getRadical()
sValRetour est une chaîne = :getRef()
//enlever la laize du code article (identifié par /)
SI Position(sValRetour,"/") > 0 ALORS
sValRetour = Gauche(sValRetour,Position(sValRetour,"/")-1)
FIN
//enlever le code couleur de la reference(2 derniers caracteres)
sValRetour = Gauche(sValRetour,Taille(sValRetour)-2)
RENVOYER(sValRetour)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getFamille ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cFamille : // Aucune
//

PROCEDURE getFamille()
RENVOYER(:oFamille)

// Résumé : Renvoie le code suivi de stock de l'article (enumerateur SuiviStockType)
// Syntaxe :
//[ <Résultat> = ] getSuiviStock ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//

PROCEDURE getSuiviStock()
RENVOYER(:oArticleOLE>>AR_SuiviStock())

//------------ FIN DE CLASSE GESTION DES ARTICLES ---------------------


// CLASSE GESTION DES ARTICLES DNAS LES DEPOTS -------------
cArticleDepot est une classe
PUBLIC
PRIVÉ
mDepot est un cDepot
mArticleDepot est un objet OLE dynamique
FIN


PROCEDURE Constructeur()


PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//setArticleDepot (<oBase> est cCialSage, <cnxBDD>, <pArticleDepot>)
//
// Paramètres :
// oBase (cCialSage) : <indiquez ici le rôle de oBase>
// cnxBDD : <indiquez ici le rôle de cnxBDD>
// pArticleDepot : <indiquez ici le rôle de pArticleDepot>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setArticleDepot(LOCAL oBase est un cCialSage, LOCAL cnxBDD, LOCAL pArticleDepot)
:mArticleDepot = particledepot
:mDepot:setDepot(obase, cnxbdd, :getDepot())

// Résumé : renvoie un objet OLE depot
// Syntaxe :
//[ <Résultat> = ] getDepot ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cDepot : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDepot()
:mDepot:setDepotOLE(:mArticleDepot>>Depot())
RENVOYER(:mDepot)

// Résumé : renvoie l'emplacement de stockage
// Syntaxe :
//[ <Résultat> = ] getEmplacement ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getEmplacement()
RENVOYER(:mArticleDepot>>AS_Emplacement())

// Résumé : renvoie la quantité maxi
// Syntaxe :
//[ <Résultat> = ] getQteMaxi ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getQteMaxi()
RENVOYER(:mArticleDepot>>AS_QteMaxi())

// Résumé : renvoie la quantité mini
// Syntaxe :
//[ <Résultat> = ] getQteMini ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getQteMini()
RENVOYER(:mArticleDepot>>AS_QteMini())

// Résumé : renvoie le stock reel dans le depot
// Syntaxe :
//[ <Résultat> = ] getStockReel ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockReel()
RENVOYER(:mArticleDepot>>StockReel())

//---* FIN CLASSE DE GESTION DES ARTICLES DANS LES DEPOTS ---



// --- CLASSE ENTETE DE FACTURES --------------------------------------
cFactureEntete est une classe
hérite de cdocumentvente
PUBLIC
PRIVÉ

FIN


PROCEDURE Constructeur()

PROCEDURE Destructeur()


// Résumé : crée une nouvelle facture
// Syntaxe :
//[ <Résultat> = ] creer (<pBase> est cCialSage, <pClient> est cClient [, <pNumPiece> est chaîne [, <pDateFac> [, <pTypeDoc> est chaîne]]])
//
// Paramètres :
// pBase (cCialSage) : objet base commerciale SAGE
// pClient (cClient) : numéro de client de la facture
// pNumPiece (chaîne) : <indiquez ici le rôle de pNumPiece>
// pDateFac : Date de la facture
// pTypeDoc (chaîne - valeur par défaut="FAC") : "FAC" pour créer une facture, "AVO" pour créer un avoir
// Valeur de retour :
// Type indéterminé : // Aucune

PROCEDURE creer(LOCAL pBase est un cCialSage, LOCAL pClient est un cClient, LOCAL pNumPiece est chaîne = "", LOCAL pDateFac = "",LOCAL pTypeDoc est chaîne = "FAC")
oBase est un objet OLE dynamique = pBase:getCial()
oCpta est un objet OLE dynamique = pBase:getCpta()
SI oCpta>>FactoryClient>>ExistNumero(pClient:getNum()) ALORS
oTiers est un objet OLE dynamique = oCpta>>FactoryClient>>ReadNumero(pClient:getNum())
SINON
Erreur("Le client %1 n'existe pas dans la base SAGE Gescom","Traitement arrêté")
FinProgramme()
FIN
//:mEntete = oBase>>FactoryDocumentVente>>CreateType(DocumentType_DocumentTypeVenteFacture)
SELON pTypeDoc
CAS "FAC"
:mEntete = oBase>>FactoryDocumentVente>>CreateFacture(DocumentProvenanceType_DocProvenanceNormale)
CAS "AVO"
:mEntete = oBase>>FactoryDocumentVente>>CreateFacture(DocumentProvenanceType_DocProvenanceAvoir)
AUTRE CAS
Erreur(ChaîneConstruit("Le type de document %1 n'est pas géré",pTypeDoc))
RENVOYER(0)
FIN

SI pDateFac = "" ALORS pDateFac = DateVersChaîne(DateSys())
SI pNumPiece <> "" ALORS :mEntete>>DO_Piece = pNumPiece
oClient est un objet OLE dynamique = pClient:getTiers()
:mEntete>>SetDefaultClient(oTiers)
:mEntete>>DO_Date = DateVersEntier(pDateFac) - 36523
:ecrire()
RENVOYER(:mEntete>>DO_Piece())


// Résumé : Ajoute une ligne de facture
// Syntaxe :
//[ <Résultat> = ] creerLigne (<pBase> est cCialSage, <pCnxBDD>, <pArticle> est cArticle [, <pQte> est numérique])
//
// Paramètres :
// pBase (cCialSage) : <indiquez ici le rôle de pBase>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pArticle (cArticle) : Article
// pQte (numérique - valeur par défaut=1) : Quantité
// Valeur de retour :
// objet dynamique : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE creerLigne(LOCAL pBase est cCialSage, LOCAL pCnxBDD, LOCAL pArticle est un cArticle, LOCAL pQte est un numérique = 1)
oLigne est un objet OLE dynamique = :mEntete>>FactoryDocumentLigne>>Create()
:mNbLignes++
Dimension(:mTabLignes,:mNbLignes)
:mTabLignes[:mNbLignes] = allouer un cFactureLigne()
:mTabLignes[:mNbLignes]:creer(:mEntete>>FactoryDocumentLigne>>Create())
//:mTabLignes[:mNbLignes]:setdocumentligneole(pbase, pcnxbdd, oLigne)
:mTabLignes[:mNbLignes]:setdefaultarticle(pArticle, pQte)
:mTabLignes[:mNbLignes]:ecrire()
RENVOYER(:mTabLignes[:mNbLignes])

// Résumé : charge une facture à partir du numéro de facture
// Syntaxe :
//[ <Résultat> = ] chargeNumFac (<pBaseCial> est cCialSage, <pCnxBDD>, <pNum> est chaîne)
//
// Paramètres :
// pBaseCial (cCialSage) : <indiquez ici le rôle de pBaseCial>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pNum (chaîne) : <indiquez ici le rôle de pNum>
// Valeur de retour :
// booléen : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE chargeNumFac(LOCAL pBaseCial est un cCialSage, LOCAL pCnxBDD, LOCAL pNum est chaîne)
:mCial = pBaseCial:getCial()
nFactureExiste est un entier
SI :mCial>>FactoryDocumentVente>>ExistPiece(DocumentType_DocumentTypeVenteFacture, pNum) ALORS
nFactureExiste = DocumentType_DocumentTypeVenteFacture
SINON SI :mCial>>FactoryDocumentVente>>ExistPiece(DocumentType_DocumentTypeVenteFactureCpta, pNum) ALORS
nFactureExiste = DocumentType_DocumentTypeVenteFactureCpta
FIN
SI nFactureExiste <> 0 ALORS
:mEntete = :mCial>>FactoryDocumentVente>>ReadPiece(nFactureExiste, pNum)
oLignes est un objet OLE dynamique = :mEntete>>FactoryDocumentLigne>>List()
:mNbLignes = oLignes>>Count()
nInd est entier = 1
TANTQUE nInd <= :mNbLignes
Dimension(:mTabLignes,nInd)
:mTabLignes[nInd] = allouer un cfactureligne()
:mTabLignes[nInd]:setdocumentligneole(pBaseCial, pCnxBDD, oLignes>>item(nInd))
nInd++
FIN
:getEcheances()
:bDocumentChargeOK = Vrai
//chargement de l'objet valorisation
:oValorisation:setObjetOLE(:mEntete>>Valorisation())
SINON
:bDocumentChargeOK = Faux
FIN


//--------- fin de classe entete factures ------------------------

// --- CLASSE DETAIL FACTURES ------------------------------------

cFactureLigne est une classe
hérite de cdocumentligne
FIN


PROCEDURE Constructeur()


PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//setPUDevise (<pPUDev> est numérique)
//
// Paramètres :
// pPUDev (numérique) : <indiquez ici le rôle de pPUDev>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setPUDevise(LOCAL pPUDev est numérique)
nPuDev est réel = pPUDev
:oDocumentLigneOLE>>DL_PUDevise = nPuDev


// ----------------- FIN CLASSE DETAIL FACTURES


// DEBUT CLASSE d'HERITAGE CDOCUMENTLIGNE de detail de factures --------------

cDocumentLigne est une classe
PUBLIC
PROTÉGÉ
oDocumentLigneOLE est un objet OLE dynamique
oArticle est un cArticle
oInfosLibres est un cInfosLibres
oDepot est un cDepot
FIN


PROCEDURE Constructeur()



PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//ecrire ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE ecrire()
:oDocumentLigneOLE>>write()

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getArticle ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cArticle : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getArticle()
RENVOYER(:oArticle)
// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//InitArticleDefaut (<pArticle> est cArticle, <nQte> est monétaire)
//
// Paramètres :
// pArticle (cArticle) : <indiquez ici le rôle de oArticle>
// nQte (monétaire) : <indiquez ici le rôle de nQte>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE InitArticleDefaut(LOCAL pArticle est un cArticle, LOCAL nQte est monétaire)
oArt est un objet OLE dynamique = pArticle:getArticleOLE()
SI oArt>>Gamme1 <> Null ALORS
oGamme1 est un objet OLE dynamique = oArt>>FactoryArticleGammeEnum1()>>List()
SI oGamme1>>count() = 1 ALORS
:oDocumentLigneOLE>>SetDefaultArticleMonoGamme(oGamme1>>item(1),nQte)
SINON
Erreur("Un article possède "+oGamme1>>count()+" énuméré de gamme","Le programme ne sait pas gérer ce cas et va se terminer")
FinProgramme()
FIN
SINON
:oDocumentLigneOLE>>SetDefaultArticle(pArticle:getArticleOLE(),nQte)
FIN

:oArticle = pArticle

// Résumé : modifie ou initialise le depot pour la ligne
// Syntaxe :
//setDepot (<pDepot> est cDepot)
//
// Paramètres :
// pDepot (cDepot) : depot
// Valeur de retour :
// Aucune
//// Exemple :
//
//
PROCEDURE setDepot(LOCAL pDepot est un cDepot)
:oDocumentLigneOLE>>Depot = pDepot:getDepotOLE()
:oDepot = pDepot
// Résumé : initialise la quantité
// Syntaxe :
//setQte (<nQte> est numérique)
//
// Paramètres :
// nQte (numérique) : quantite
// Valeur de retour :
// Aucune
//// Exemple :
//
//
PROCEDURE setQte(LOCAL nQte est numérique)
x est réel = nqte
:oDocumentLigneOLE>>DL_Qte = x

// Résumé : Supprime la ligne
// Syntaxe :
//supprimer ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE supprimer()
:oDocumentLigneOLE>>remove()


// Résumé : renvoie la quantite
// Syntaxe :
//[ <Résultat> = ] getQte ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// numérique : // Quantite
//// Exemple :
//
//
PROCEDURE getQte()
nQte est numérique = :oDocumentLigneOLE>>DL_Qte()
RENVOYER(nQte)


// Résumé : initialise les valeurs par défaut liées à l'article sur la ilgne de document et fixe la quantité
// Syntaxe :
//setDefaultArticle (<pArt> est cArticle [, <pQte> est numérique])
//
// Paramètres :
// pArt (cArticle) : objet article
// pQte (numérique - valeur par défaut=1) : quantité d'article sur la ligne
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setDefaultArticle(LOCAL pArt est cArticle, pQte est numérique = 1)
:oArticle = part
nQte est réel = pqte
:oDocumentLigneOLE>>setDefaultArticle(part:getArticleOLE(),nQte)

// Résumé : initialise le prix unitaire de l'article sur la ligne
// Syntaxe :
//setPrixUnitaire (<pPrixUnit> est numérique)
//
// Paramètres :
// pPrixUnit (numérique) : prix unitaire
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setPrixUnitaire(LOCAL pPrixUnit est numérique)
nPrixUnit est réel = pPrixUnit
:oDocumentLigneOLE>>DL_PrixUnitaire = nPrixUnit

// Résumé : initialise le membre de classe objet OLE Automation
// Syntaxe :
//setDocumentLigneOLE (<pBaseCIAL> est cCialSage, <pCnxBDD>, <oLigne>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// oLigne : objet OLE de type ligne de document
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setDocumentLigneOLE(LOCAL pBaseCIAL est un cCialSage, LOCAL pCnxBDD, oLigne)
:oDocumentLigneOLE = oLigne
:oArticle:setArticleOLE(pBaseCIAL, pCnxBDD, :oDocumentLigneOLE>>Article())
:oDepot:setDepotOLE(:oDocumentLigneOLE>>Depot())


// Résumé : initialise la reférence de la ligne de document
// Syntaxe :
//setRef (<pRef> est chaîne)
//
// Paramètres :
// pRef (chaîne) : référence
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setRef(LOCAL pRef est chaîne)
:oDocumentLigneOLE>>DL_Ref = pref

// Résumé : initialise la designation de la ligne de document
// Syntaxe :
//setDesignation (<pDesign> est chaîne)
//
// Paramètres :
// pDesign (chaîne) : designation
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setDesignation(LOCAL pDesign est chaîne)
:oDocumentLigneOLE>>DL_Design = pDesign

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//creer (<oLigne>)
//
// Paramètres :
// oLigne : <indiquez ici le rôle de oLigne>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE creer(oLigne)
:oDocumentLigneOLE = oLigne


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getInfosLibres ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cInfosLibres : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getInfosLibres()
RENVOYER(:oInfosLibres)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getDepot ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cDepot : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDepot()
RENVOYER(:oDepot)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getMontantHT ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//
// Aucune documentation n'a été saisie par le concepteur (IW)
PROCEDURE getMontantHT()
RENVOYER(:oDocumentLigneOLE>>DL_MontantHT())


//--- fin classe d'heritage des details de factures ---
Publicado el 11,septiembre 2008 - 02:07
Merci Ismaël pour cette contribution ;-)

--

Bien à toi,
Fabrice De Weerd.

www.fawax.com - www.softweerd.com - www.be-dev.be

"Ismaël" <ismael.watrin@club-internet.fr> a écrit dans le message de news:
361743646209fc54b37708e85e8741e7@news.pcsoft...

Bonjour
Reprenant le travail sur les acces SAGE 100 ( compta, gescom) sur base
SQL, je livre les classes que nous avons développé, j'attends bien entendu
vos commentaires et améliorations pour essayer d'en faire une réference...
!!!

Tenez moi au courant et si vous avez des soucis avec leurs utilisations ,
j'essayerai de vous aider...

Cordialement

Bien entendu ces classes sont spécifiques a des traitements particuliers
de SAGE pour notre activité...

// CLASSE -------------------- GESTION DES
ARTICLES -------------------------

stArticleDepot est une structure
oDepot est un cDepot
nStockReel est un monétaire
FIN

cArticle est une classe
PUBLIC
PRIVÉ
oBaseSAGE est un cCialSage
cnxBDD est une Connexion
oArticleOLE est un objet OLE dynamique
bArticleOK est booléen
oDepotPrincipal est un cArticleDepot
bDepotPrincipalOK est booléen = Faux //indique si le depot principal est
initialise ou non
tabQteDepot est un tableau dynamique de 0 stArticleDepot
bStockDepotOK est booléen //indique si les quantites par depot sont
chargees
oInfosLibres est un cInfosLibres
oFamille est un cFamille
FIN


PROCEDURE Constructeur()
PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getArticleOLE ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// objet Automation : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getArticleOLE()
RENVOYER(:oArticleOLE)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getDesignation ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDesignation()
RENVOYER(:oArticleOLE>>AR_Design())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] lireReference (<pBaseCIAL> est cCialSage, <pCnxBDD>,
<pCodArticle>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCnxBDD : <indiquez ici le rôle de cnxBDD>
// pCodArticle : <indiquez ici le rôle de pCodArticle>
// Valeur de retour :
// booléen : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE lireReference(LOCAL pBaseCIAL est un cCialSage, LOCAL pCnxBDD,
LOCAL pCodArticle)
oCial est un objet OLE dynamique = pBaseCIAL:getcial()
SI oCial>>FactoryArticle>>ExistReference(pCodArticle) ALORS
:oArticleOLE = oCial>>FactoryArticle>>ReadReference(pCodArticle)
:bArticleOK = Vrai
:oBaseSAGE = pBaseCIAL
:cnxBDD = pcnxbdd
:oInfosLibres:setObjetOLE(:oArticleOLE>>InfoLibre())
:oFamille:setfamille(:oArticleOLE>>Famille())
SINON
:bArticleOK = Faux
FIN
RENVOYER(:bArticleOK)
// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//setArticleOLE (<pBaseCIAL> est cCialSage, <pCnxBDD>, <pArticle>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pArticle : <indiquez ici le rôle de pArticle>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setArticleOLE(LOCAL pBaseCIAL est un cCialSage, LOCAL pCnxBDD,
pArticle)
//:oArticleOLE = particle
:lireReference(pBaseCIAL,pCnxBDD,pArticle>>AR_Ref())
:bArticleOK = Vrai

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getRef ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getRef()
SI :bArticleOK ALORS
RENVOYER(:oArticleOLE>>AR_Ref())
SINON
Erreur("erreur")
FIN

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getStockReel ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockReel()
RENVOYER(:oArticleOLE>>StockReel())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getFournisseurPrincipal ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getFournisseurPrincipal()
//oArtTarifFour est un cArticleTarifFournisseur()
//oArtTarifFour:setArticleTarifFournisseur(:mArticle>>FournisseurPrincipal())
//renvoyer(oArtTarifFour)
RENVOYER(:oArticleOLE>>FournisseurPrincipal())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getDepotPrincipal ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cArticleDepot : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDepotPrincipal()
SI PAS :bDepotPrincipalOK ALORS
:oDepotPrincipal:setArticleDepot(:oBaseSAGE, :cnxBDD,
:oArticleOLE>>ArticleDepotPrincipal())
:bDepotPrincipalOK = Vrai
FIN
RENVOYER(:oDepotPrincipal)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//chargeStockDepot (<pBaseCIAL> est cCialSage, <pCodArticle>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCodArticle : <indiquez ici le rôle de pCodArticle>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE PRIVÉE chargeStockDepot(LOCAL pBaseCIAL est un cCialSage, LOCAL
pCodArticle)
nInd est entier
cArticle_chargeArticle_sdDataSet est une Source de Données
sRequete est chaîne = "SELECT F_ARTSTOCK.AS_QteSto, F_DEPOT.DE_INTITULE
FROM F_ARTSTOCK , F_DEPOT WHERE F_ARTSTOCK.AR_Ref = '"+pCodArticle+"' and
f_artstock.de_no = f_depot.de_no"
SI PAS
HExécuteRequêteSQL(cArticle_chargeArticle_sdDataSet,cnxBDDGESPROD,hRequêteDéfaut,sRequete)
ALORS Erreur("Erreur cArticle:chargeArticle",HErreurInfo())
POUR TOUT cArticle_chargeArticle_sdDataSet
oDep est un cDepot()
oDep:lireIntitule(pBaseCIAL,cnxBDDGESPROD,
cArticle_chargeArticle_sdDataSet.de_intitule)
nInd++
Dimension(:tabQteDepot,nInd)
:tabQteDepot[nInd]:oDepot = oDep
:tabQteDepot[nInd]:nStockReel = cArticle_chargeArticle_sdDataSet.AS_QteSto
FIN
HAnnuleDéclaration(cArticle_chargeArticle_sdDataSet)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getStockDepot (<pIntituleDepot>)
//
// Paramètres :
// pIntituleDepot : <indiquez ici le rôle de pIntituleDepot>
// Valeur de retour :
// monétaire : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockDepot(pIntituleDepot)
SI PAS :bStockDepotOK ALORS
:chargeStockDepot(:oBaseSAGE, :getRef())
:bStockDepotOK = Vrai
FIN
nInd est un entier = 1
TANTQUE nInd <= Dimension(:tabQteDepot) ET
:tabQteDepot[nInd]:oDepot:getIntitule() <> pIntituleDepot
nInd++
FIN
SI nInd > Dimension(:tabQteDepot) ALORS
//depot pas trouve
RENVOYER(MONE_INFINIPOSITIF)
SINON
RENVOYER(:tabQteDepot[nInd]:nStockReel)
FIN
// Résumé : renvoie le code barre de l'article
// Syntaxe :
//[ <Résultat> = ] getCodeBarre ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getCodeBarre()
RENVOYER(:oArticleOLE>>AR_CodeBarre())

// Résumé : renvoie le poids net de l'article
// Syntaxe :
//[ <Résultat> = ] getPoidsNet ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : // Poids de l'article
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getPoidsNet()
RENVOYER(:oArticleOLE>>AR_PoidsNet())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] lireRefUniverse (<pBase> est cCialSage, <pCnxBDD>,
<pRefUniverse> est chaîne)
//
// Paramètres :
// pBase (cCialSage) : <indiquez ici le rôle de pBase>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pRefUniverse (chaîne) : <indiquez ici le rôle de pRefUniverse>
// Valeur de retour :
// booléen : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE lireRefUniverse(LOCAL pBase est un cCialSage, LOCAL pCnxBDD,
LOCAL pRefUniverse est chaîne)
sdcArticleLireRefUniverse est Source de Données
sRequete est chaîne = [
SELECT F_ARTICLE_PROD.AR_Ref
FROM F_ARTICLE_PROD
WHERE F_ARTICLE_PROD.Reference_WINNIX = '%1'
]

SI PAS
HExécuteRequêteSQL(sdcArticleLireRefUniverse,pCnxBDD,ChaîneConstruit(sRequete,pRefUniverse))
ALORS
Erreur("Erreur requete "+dbgInfo(dbgElément),HErreurInfo())
FinProgramme
FIN
HLitPremier(sdcArticleLireRefUniverse)
SI HTrouve(sdcArticleLireRefUniverse) ALORS
//chargement de l'article
RENVOYER(:lireReference(pBase, pCnxBDD, sdcArticleLireRefUniverse.AR_Ref))
SINON
RENVOYER(Faux)
FIN


// Résumé : Renvoie la valeur de l'info libre dont le rang est passé en
paramétre
// Syntaxe :
//[ <Résultat> = ] getInfoLibre (<pInd> est entier)
//
// Paramètres :
// pInd (entier) : Rang de l'info libre
// Valeur de retour :
// Chaine : valeur de l'info libre
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getInfoLibre(LOCAL pInd est entier)
Trace("DEPRECATED", dbgInfo(dbgPile))
RENVOYER(:oArticleOLE>>InfoLibre>>Item(pind))

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getStockDispo ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockDispo()
RENVOYER(:oArticleOLE>>StockDispo())

// Résumé : Renvoie le stock a terme de l'article (Stock réel + Stock
commandé - Stock réservé - Stock préparé)
// Syntaxe :
//[ <Résultat> = ] getStockATerme ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : stock a terme
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockATerme()
RENVOYER(:oArticleOLE>>StockATerme())

// Résumé : Renvoie le stock commande de l'article
// Syntaxe :
//[ <Résultat> = ] getStockCommande ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : stock commande
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockCommande()
RENVOYER(:oArticleOLE>>StockCommande())

// Résumé : Renvoie le stock reserve de l'article
// Syntaxe :
//[ <Résultat> = ] getStockReserve ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : stock reserve
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockReserve()
RENVOYER(:oArticleOLE>>StockReserve())

// Résumé : Renvoie le stock prepare de l'article
// Syntaxe :
//[ <Résultat> = ] getStockPrepare ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Numerique : stock prepare
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockPrepare()
RENVOYER(:oArticleOLE>>StockPrepare())

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getInfosLibres ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cInfosLibres : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getInfosLibres()
RENVOYER(:oInfosLibres)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//ecrire ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE ecrire()
:oArticleOLE>>write()

// Résumé : //cette procedure renvoie le radical du code article passe en
parametre
//ne s'applique qu'aux matières premieres. pas aux produits finis
//le code article est constitué de :
// - code saison sur 2 chiffres
// - code article sur 3 chiffres
// - code couleur sur 2 chiffres


// Syntaxe :
//[ <Résultat> = ] getRadical ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// chaîne : // Aucune
//

PROCEDURE getRadical()
sValRetour est une chaîne = :getRef()
//enlever la laize du code article (identifié par /)
SI Position(sValRetour,"/") > 0 ALORS
sValRetour = Gauche(sValRetour,Position(sValRetour,"/")-1)
FIN
//enlever le code couleur de la reference(2 derniers caracteres)
sValRetour = Gauche(sValRetour,Taille(sValRetour)-2)
RENVOYER(sValRetour)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getFamille ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cFamille : // Aucune
//

PROCEDURE getFamille()
RENVOYER(:oFamille)

// Résumé : Renvoie le code suivi de stock de l'article (enumerateur
SuiviStockType)
// Syntaxe :
//[ <Résultat> = ] getSuiviStock ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//

PROCEDURE getSuiviStock()
RENVOYER(:oArticleOLE>>AR_SuiviStock())

//------------ FIN DE CLASSE GESTION DES ARTICLES ---------------------


// CLASSE GESTION DES ARTICLES DNAS LES DEPOTS -------------
cArticleDepot est une classe
PUBLIC
PRIVÉ
mDepot est un cDepot
mArticleDepot est un objet OLE dynamique
FIN


PROCEDURE Constructeur()


PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//setArticleDepot (<oBase> est cCialSage, <cnxBDD>, <pArticleDepot>)
//
// Paramètres :
// oBase (cCialSage) : <indiquez ici le rôle de oBase>
// cnxBDD : <indiquez ici le rôle de cnxBDD>
// pArticleDepot : <indiquez ici le rôle de pArticleDepot>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setArticleDepot(LOCAL oBase est un cCialSage, LOCAL cnxBDD,
LOCAL pArticleDepot)
:mArticleDepot = particledepot
:mDepot:setDepot(obase, cnxbdd, :getDepot())

// Résumé : renvoie un objet OLE depot
// Syntaxe :
//[ <Résultat> = ] getDepot ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cDepot : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDepot()
:mDepot:setDepotOLE(:mArticleDepot>>Depot())
RENVOYER(:mDepot)

// Résumé : renvoie l'emplacement de stockage
// Syntaxe :
//[ <Résultat> = ] getEmplacement ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getEmplacement()
RENVOYER(:mArticleDepot>>AS_Emplacement())

// Résumé : renvoie la quantité maxi
// Syntaxe :
//[ <Résultat> = ] getQteMaxi ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getQteMaxi()
RENVOYER(:mArticleDepot>>AS_QteMaxi())

// Résumé : renvoie la quantité mini
// Syntaxe :
//[ <Résultat> = ] getQteMini ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getQteMini()
RENVOYER(:mArticleDepot>>AS_QteMini())

// Résumé : renvoie le stock reel dans le depot
// Syntaxe :
//[ <Résultat> = ] getStockReel ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getStockReel()
RENVOYER(:mArticleDepot>>StockReel())

//---* FIN CLASSE DE GESTION DES ARTICLES DANS LES DEPOTS ---



// --- CLASSE ENTETE DE FACTURES --------------------------------------
cFactureEntete est une classe
hérite de cdocumentvente
PUBLIC
PRIVÉ

FIN


PROCEDURE Constructeur()

PROCEDURE Destructeur()


// Résumé : crée une nouvelle facture
// Syntaxe :
//[ <Résultat> = ] creer (<pBase> est cCialSage, <pClient> est cClient [,
<pNumPiece> est chaîne [, <pDateFac> [, <pTypeDoc> est chaîne]]])
//
// Paramètres :
// pBase (cCialSage) : objet base commerciale SAGE
// pClient (cClient) : numéro de client de la facture
// pNumPiece (chaîne) : <indiquez ici le rôle de pNumPiece>
// pDateFac : Date de la facture
// pTypeDoc (chaîne - valeur par défaut="FAC") : "FAC" pour créer une
facture, "AVO" pour créer un avoir
// Valeur de retour :
// Type indéterminé : // Aucune

PROCEDURE creer(LOCAL pBase est un cCialSage, LOCAL pClient est un
cClient, LOCAL pNumPiece est chaîne = "", LOCAL pDateFac = "",LOCAL
pTypeDoc est chaîne = "FAC")
oBase est un objet OLE dynamique = pBase:getCial()
oCpta est un objet OLE dynamique = pBase:getCpta()
SI oCpta>>FactoryClient>>ExistNumero(pClient:getNum()) ALORS
oTiers est un objet OLE dynamique =
oCpta>>FactoryClient>>ReadNumero(pClient:getNum())
SINON
Erreur("Le client %1 n'existe pas dans la base SAGE Gescom","Traitement
arrêté")
FinProgramme()
FIN
//:mEntete =
oBase>>FactoryDocumentVente>>CreateType(DocumentType_DocumentTypeVenteFacture)
SELON pTypeDoc
CAS "FAC"
:mEntete =
oBase>>FactoryDocumentVente>>CreateFacture(DocumentProvenanceType_DocProvenanceNormale)
CAS "AVO"
:mEntete =
oBase>>FactoryDocumentVente>>CreateFacture(DocumentProvenanceType_DocProvenanceAvoir)
AUTRE CAS
Erreur(ChaîneConstruit("Le type de document %1 n'est pas géré",pTypeDoc))
RENVOYER(0)
FIN

SI pDateFac = "" ALORS pDateFac = DateVersChaîne(DateSys())
SI pNumPiece <> "" ALORS :mEntete>>DO_Piece = pNumPiece
oClient est un objet OLE dynamique = pClient:getTiers()
:mEntete>>SetDefaultClient(oTiers)
:mEntete>>DO_Date = DateVersEntier(pDateFac) - 36523
:ecrire()
RENVOYER(:mEntete>>DO_Piece())


// Résumé : Ajoute une ligne de facture
// Syntaxe :
//[ <Résultat> = ] creerLigne (<pBase> est cCialSage, <pCnxBDD>,
<pArticle> est cArticle [, <pQte> est numérique])
//
// Paramètres :
// pBase (cCialSage) : <indiquez ici le rôle de pBase>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pArticle (cArticle) : Article
// pQte (numérique - valeur par défaut=1) : Quantité
// Valeur de retour :
// objet dynamique : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE creerLigne(LOCAL pBase est cCialSage, LOCAL pCnxBDD, LOCAL
pArticle est un cArticle, LOCAL pQte est un numérique = 1)
oLigne est un objet OLE dynamique =
:mEntete>>FactoryDocumentLigne>>Create()
:mNbLignes++
Dimension(:mTabLignes,:mNbLignes)
:mTabLignes[:mNbLignes] = allouer un cFactureLigne()
:mTabLignes[:mNbLignes]:creer(:mEntete>>FactoryDocumentLigne>>Create())
//:mTabLignes[:mNbLignes]:setdocumentligneole(pbase, pcnxbdd, oLigne)
:mTabLignes[:mNbLignes]:setdefaultarticle(pArticle, pQte)
:mTabLignes[:mNbLignes]:ecrire()
RENVOYER(:mTabLignes[:mNbLignes])

// Résumé : charge une facture à partir du numéro de facture
// Syntaxe :
//[ <Résultat> = ] chargeNumFac (<pBaseCial> est cCialSage, <pCnxBDD>,
<pNum> est chaîne)
//
// Paramètres :
// pBaseCial (cCialSage) : <indiquez ici le rôle de pBaseCial>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// pNum (chaîne) : <indiquez ici le rôle de pNum>
// Valeur de retour :
// booléen : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE chargeNumFac(LOCAL pBaseCial est un cCialSage, LOCAL pCnxBDD,
LOCAL pNum est chaîne)
:mCial = pBaseCial:getCial()
nFactureExiste est un entier
SI
:mCial>>FactoryDocumentVente>>ExistPiece(DocumentType_DocumentTypeVenteFacture,
pNum) ALORS
nFactureExiste = DocumentType_DocumentTypeVenteFacture
SINON SI
:mCial>>FactoryDocumentVente>>ExistPiece(DocumentType_DocumentTypeVenteFactureCpta,
pNum) ALORS
nFactureExiste = DocumentType_DocumentTypeVenteFactureCpta
FIN
SI nFactureExiste <> 0 ALORS
:mEntete = :mCial>>FactoryDocumentVente>>ReadPiece(nFactureExiste, pNum)
oLignes est un objet OLE dynamique =
:mEntete>>FactoryDocumentLigne>>List()
:mNbLignes = oLignes>>Count()
nInd est entier = 1
TANTQUE nInd <= :mNbLignes
Dimension(:mTabLignes,nInd)
:mTabLignes[nInd] = allouer un cfactureligne()
:mTabLignes[nInd]:setdocumentligneole(pBaseCial, pCnxBDD,
oLignes>>item(nInd))
nInd++
FIN
:getEcheances()
:bDocumentChargeOK = Vrai
//chargement de l'objet valorisation
:oValorisation:setObjetOLE(:mEntete>>Valorisation())
SINON
:bDocumentChargeOK = Faux
FIN


//--------- fin de classe entete factures ------------------------

// --- CLASSE DETAIL FACTURES ------------------------------------

cFactureLigne est une classe
hérite de cdocumentligne
FIN


PROCEDURE Constructeur()


PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//setPUDevise (<pPUDev> est numérique)
//
// Paramètres :
// pPUDev (numérique) : <indiquez ici le rôle de pPUDev>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setPUDevise(LOCAL pPUDev est numérique)
nPuDev est réel = pPUDev
:oDocumentLigneOLE>>DL_PUDevise = nPuDev


// ----------------- FIN CLASSE DETAIL FACTURES


// DEBUT CLASSE d'HERITAGE CDOCUMENTLIGNE de detail de
factures --------------

cDocumentLigne est une classe
PUBLIC
PROTÉGÉ
oDocumentLigneOLE est un objet OLE dynamique
oArticle est un cArticle
oInfosLibres est un cInfosLibres
oDepot est un cDepot
FIN


PROCEDURE Constructeur()



PROCEDURE Destructeur()


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//ecrire ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE ecrire()
:oDocumentLigneOLE>>write()

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getArticle ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cArticle : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getArticle()
RENVOYER(:oArticle)
// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//InitArticleDefaut (<pArticle> est cArticle, <nQte> est monétaire)
//
// Paramètres :
// pArticle (cArticle) : <indiquez ici le rôle de oArticle>
// nQte (monétaire) : <indiquez ici le rôle de nQte>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE InitArticleDefaut(LOCAL pArticle est un cArticle, LOCAL nQte est
monétaire)
oArt est un objet OLE dynamique = pArticle:getArticleOLE()
SI oArt>>Gamme1 <> Null ALORS
oGamme1 est un objet OLE dynamique =
oArt>>FactoryArticleGammeEnum1()>>List()
SI oGamme1>>count() = 1 ALORS
:oDocumentLigneOLE>>SetDefaultArticleMonoGamme(oGamme1>>item(1),nQte)
SINON
Erreur("Un article possède "+oGamme1>>count()+" énuméré de gamme","Le
programme ne sait pas gérer ce cas et va se terminer")
FinProgramme()
FIN
SINON
:oDocumentLigneOLE>>SetDefaultArticle(pArticle:getArticleOLE(),nQte)
FIN

:oArticle = pArticle

// Résumé : modifie ou initialise le depot pour la ligne
// Syntaxe :
//setDepot (<pDepot> est cDepot)
//
// Paramètres :
// pDepot (cDepot) : depot
// Valeur de retour :
// Aucune
//// Exemple :
//
//
PROCEDURE setDepot(LOCAL pDepot est un cDepot)
:oDocumentLigneOLE>>Depot = pDepot:getDepotOLE()
:oDepot = pDepot
// Résumé : initialise la quantité
// Syntaxe :
//setQte (<nQte> est numérique)
//
// Paramètres :
// nQte (numérique) : quantite
// Valeur de retour :
// Aucune
//// Exemple :
//
//
PROCEDURE setQte(LOCAL nQte est numérique)
x est réel = nqte
:oDocumentLigneOLE>>DL_Qte = x

// Résumé : Supprime la ligne
// Syntaxe :
//supprimer ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE supprimer()
:oDocumentLigneOLE>>remove()


// Résumé : renvoie la quantite
// Syntaxe :
//[ <Résultat> = ] getQte ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// numérique : // Quantite
//// Exemple :
//
//
PROCEDURE getQte()
nQte est numérique = :oDocumentLigneOLE>>DL_Qte()
RENVOYER(nQte)


// Résumé : initialise les valeurs par défaut liées à l'article sur la
ilgne de document et fixe la quantité
// Syntaxe :
//setDefaultArticle (<pArt> est cArticle [, <pQte> est numérique])
//
// Paramètres :
// pArt (cArticle) : objet article
// pQte (numérique - valeur par défaut=1) : quantité d'article sur la
ligne
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setDefaultArticle(LOCAL pArt est cArticle, pQte est numérique =
1)
:oArticle = part
nQte est réel = pqte
:oDocumentLigneOLE>>setDefaultArticle(part:getArticleOLE(),nQte)

// Résumé : initialise le prix unitaire de l'article sur la ligne
// Syntaxe :
//setPrixUnitaire (<pPrixUnit> est numérique)
//
// Paramètres :
// pPrixUnit (numérique) : prix unitaire
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setPrixUnitaire(LOCAL pPrixUnit est numérique)
nPrixUnit est réel = pPrixUnit
:oDocumentLigneOLE>>DL_PrixUnitaire = nPrixUnit

// Résumé : initialise le membre de classe objet OLE Automation
// Syntaxe :
//setDocumentLigneOLE (<pBaseCIAL> est cCialSage, <pCnxBDD>, <oLigne>)
//
// Paramètres :
// pBaseCIAL (cCialSage) : <indiquez ici le rôle de pBaseCIAL>
// pCnxBDD : <indiquez ici le rôle de pCnxBDD>
// oLigne : objet OLE de type ligne de document
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setDocumentLigneOLE(LOCAL pBaseCIAL est un cCialSage, LOCAL
pCnxBDD, oLigne)
:oDocumentLigneOLE = oLigne
:oArticle:setArticleOLE(pBaseCIAL, pCnxBDD, :oDocumentLigneOLE>>Article())
:oDepot:setDepotOLE(:oDocumentLigneOLE>>Depot())


// Résumé : initialise la reférence de la ligne de document
// Syntaxe :
//setRef (<pRef> est chaîne)
//
// Paramètres :
// pRef (chaîne) : référence
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setRef(LOCAL pRef est chaîne)
:oDocumentLigneOLE>>DL_Ref = pref

// Résumé : initialise la designation de la ligne de document
// Syntaxe :
//setDesignation (<pDesign> est chaîne)
//
// Paramètres :
// pDesign (chaîne) : designation
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE setDesignation(LOCAL pDesign est chaîne)
:oDocumentLigneOLE>>DL_Design = pDesign

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//creer (<oLigne>)
//
// Paramètres :
// oLigne : <indiquez ici le rôle de oLigne>
// Valeur de retour :
// Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE creer(oLigne)
:oDocumentLigneOLE = oLigne


// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getInfosLibres ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cInfosLibres : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getInfosLibres()
RENVOYER(:oInfosLibres)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getDepot ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// cDepot : // Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE getDepot()
RENVOYER(:oDepot)

// Résumé : <indiquez ici ce que fait la procédure>
// Syntaxe :
//[ <Résultat> = ] getMontantHT ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Type indéterminé : // Aucune
//
// Aucune documentation n'a été saisie par le concepteur (IW)
PROCEDURE getMontantHT()
RENVOYER(:oDocumentLigneOLE>>DL_MontantHT())


//--- fin classe d'heritage des details de factures ---

Publicado el 06,octubre 2008 - 17:51
Trés bien ton code... Merci Beaucoup !!!

J'ai juste une petite question, je sais pas si tu s'est faire... Lors de la création de ligne de document.

Je n'arrive pas a définir le montant de la remise (pour les lignes)

Peut tu m'aider????

Merci
Publicado el 04,junio 2010 - 16:19
Bonjour,
Juste au cas ou ...

vous utilisez des constantes dans votre codes.
Pouvez vous les indiquez ? ex : DocumentTypeVenteFactureCompta

J'essaie d'utiliser la fonction QueryTypeOrderPiece(DocumentTypeVenteFactureCompta) dans succes. j'ai l'impression que l'objet retourné est trop volumineux.

Cordialement.
Publicado el 13,julio 2010 - 10:38
Bonjour

Quel est la version de votre SAGE (15 ou 16) et de vos objets metier (4.00) ... ?
Publicado el 13,julio 2010 - 11:29
J'utilise la version 15.53 de la ligne 100 SQL avec les objets métier 3.0.

j'ai trouvé une autre solution. je passe par l'acces SQL, ca marche et c plus rapide !

par contre maintenant je cherche comment basculer un bon de commande en BL proprement. Les objets métiers ne le font pas. du coup en SQL, je ne veux rien oublier.
Publicado el 18,julio 2010 - 19:22
Bonjour

Les objets metiers de la derniere generation 4.02 .. stream 3, Sage ne gere plus l'incrementation des streams.. utilise bien les transformations des types de documents.. pour ce faire il faut vous procurer le kit de developpement des objets metiers... puis chez votre revendeur, la mise a jour, correctif et suppression des classes de la dll... exemple representant devient collaborateur... entre autre.....
bon courage
Publicado el 13,septiembre 2012 - 12:09
Bonjour,
J'en cherche pour la compta Sage 15 ou plus
Merci
Publicado el 26,agosto 2015 - 18:15
Bonjour savez vous comment on peut transformer un document avec les objets metiers ?
merci par avance
Publicado el 27,agosto 2015 - 11:10
Bonjour


On ne peut helas pas modifier un document avec les objets metiers du moins avec la version 100 sql 16.51 ... Je ne connais pas la I7 .

Bon courage
Miembro registrado
42 mensajes
Publicado el 23,octubre 2018 - 11:40
Bonjour Xavier ,

Avez-vous finalement les valeurs de ces constantes des objets métiers SAGE ?
Si Oui pouvez-vous les communiquer ?

Merci
Publicado el 15,abril 2019 - 12:16
Auriez-vous une librairie à disposition

Cordialement,

Jean-Christophe Vandenostende
SETG