Forum d'entraide Acomba
Pourquoi ne pas devenir membre du forum ?

Identifiez-vous ou Inscrivez-vous afin d'accéder à l'inrégralité du forum:
Accès à toutes les catégories du forum,
Entraide entre les 6 500 membres, et ce nombre s'accroît quotidiennement!

Notez que ce forum est indépendant de la société Acceo Solutions, éditrice du logiciel Acomba.

Rejoignez le forum, c’est rapide et facile

Forum d'entraide Acomba
Pourquoi ne pas devenir membre du forum ?

Identifiez-vous ou Inscrivez-vous afin d'accéder à l'inrégralité du forum:
Accès à toutes les catégories du forum,
Entraide entre les 6 500 membres, et ce nombre s'accroît quotidiennement!

Notez que ce forum est indépendant de la société Acceo Solutions, éditrice du logiciel Acomba.
Forum d'entraide Acomba
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Connexion
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

Aller en bas
avatar
tchiktia
Nombre de messages : 1
Date d'inscription : 31/01/2012

Derniere facture d'un client Empty Derniere facture d'un client

Mar 31 Jan 2012 - 17:52
Bonjour!!

Petite question sur laquel je suis tanner de tourner en rond Wink
J'essaye d'avoir accès a la dernière facture D'UN CLIENT en utilisant le SDK.
Actuellement, je suis capable de récupérer toutes c'est facture du client, mais mis a part faire une boucle qui
passe toues ces factures, je ne trouve pas de méthode pour me mettre simplement sur la dernière facture...
La méthode de la boucle fonctionne, mais elle me semble étrangement lourde pour une opération aussi simple...
Étrangement j'ai été capable très rapidement de trouver la dernière facture du système au complet, mais cette même
méthode ne fonctionne si je cherche dans un client...

La compagnie est ouverte, le SDK activé, alors ce type de réponse ne me sera pas utile ^^
Le langage de prog vous sera peut etre inconnu, mais je connais aussi le C ou le VB... Sinon ce langage est facile a comprendre
Voici le code en question (la recherche du client, la boucle, la mise en tableau, etc...) Merci!!

autCustomer est un objet Automation "AcoSDK.Customer"
autInvoiceAR est un objet Automation "AcoSDK.InvoiceAR"
autTransaction est un objet Automation "AcoSDK.Transaction"
autProductGroup est un objet Automation "AcoSDK.ProductGroup"

xValeuradmis est un numérique
tabDetailfacture est un tableau dynamique de 0 par 6 chaînes
nOfactureverif est un entier=0
nBrligne est un entier
nCompteur est un entier

//Recherche d'un client
autCustomer>>BlankKey
autCustomer>>PKey_CuNumber(SAI_SansNom2)
autCustomer>>SearchKey(1,True)
SAI_SansNom1=autCustomer>>CuName

SI autCustomer>>FindKey(1, True) = 0 ALORS
autInvoiceAR>>BlankKey
autInvoiceAR>>Key_InCustomerCP = autCustomer>>Key_CuCardPos
autInvoiceAR>>SearchKey(1,True)


BOUCLE
SI autInvoiceAR>>InCustomerSupplierCP = autCustomer>>CardPos ET (autInvoiceAR>>InTransactionType = 2 OU autInvoiceAR>>InTransactionType = 3) ALORS
//recupere juste les factures du jour
dAtefacture est une Date = autInvoiceAR>>InDate
SI dAtefacture = DateDuJour() ALORS

//prend la derniere facture du jour pour le client
SI autInvoiceAR>>InInvoiceNumber > nOfactureverif ALORS
nOfactureverif=autInvoiceAR>>InInvoiceNumber
nCompteur=0
//analyse la facture
autTransaction>>GetCard(autInvoiceAR>>Key_InCardPos)
nBrligne = autTransaction>>TANumLines - 2 // -2 pour enlever les deux lignes de taxes
POUR i=1 A nBrligne
SI autTransaction>>ILOrderedQty(i) > 0 ALORS
//creer le tableau des details de transaction
nCompteur++
Dimension(tabDetailfacture,nCompteur,6)
tabDetailfacture[nCompteur][1]=autTransaction>>ILProductNumber(i)
tabDetailfacture[nCompteur][2]=autTransaction>>ILDescription(i)
tabDetailfacture[nCompteur][3]=autTransaction>>ILOrderedQty(i)
tabDetailfacture[nCompteur][4]=autTransaction>>ILSellingPrice(i)
tabDetailfacture[nCompteur][5]=autTransaction>>ILTotalAmount(i)
// recherche du nom du groupe de produit
autProductGroup>>PKey_PGNumber = autTransaction>>ILProductGroupNumber(i)
autProductGroup>>SearchKey(1,True)
SI autProductGroup>>FindKey(1,True) = 0 ALORS
tabDetailfacture[nCompteur][6]=autProductGroup>>PGDescription
SINON
tabDetailfacture[nCompteur][6]=autTransaction>>ILProductGroupNumber(i)
FIN
//nombre de point gagner sur la facture
xValeuradmis = autTransaction>>ILTotalAmount(i) + xValeuradmis
FIN
FIN
FIN
FIN
FIN
A FAIRE TANTQUE ((autInvoiceAR>>NextKey(1,True) = 0) ET autInvoiceAR>>InCustomerSupplierCP = autCustomer>>CardPos )
FIN
avatar
hench
Nombre de messages : 163
Date d'inscription : 30/12/2008

Fiche d'Entreprise
Nom de l'entreprise:

Derniere facture d'un client Empty Re: Derniere facture d'un client

Mer 6 Juin 2012 - 2:32
Bonjour!

WinDev !

1. Utiliser la méthode par tampons (curseur) s'avère un peu plus rapide

À essayer, utiliser le bon index de l'interface Invoicing (utilisant entre autre le numéro du client et la date si cela est facile à déterminer.)
Et utiliser la méthode LastKeys avec un tampon d'une seule fiche.
Ou bien la méthode LastKey


Int LastKey( Int Index, WordBool GetCard )

Cette méthode recherche la dernière clé de l'index spécifié en paramètre. Si une clé est retournée par LastKey, alors toutes les propriétés de l'interface pour laquelle la méthode est appelée, qui entrent dans la composition de l'index choisi, sont initialisées aux valeurs de la clé trouvée. De plus, la position de l'enregistrement, auquel la clé trouvée est associée dans le fichier de données, est assignée à la propriété Key_CardPos de l'interface.



Paramètres

Index
Numéro de l'index à utiliser pour effectuer la recherche.
Les différents index disponibles sont indiqués dans la description de chacune des interfaces fiches-clés. Pour en savoir plus sur le choix de l'index à utiliser, voir la section Localisation des enregistrements selon les différents index.

GetCard
Indique si la fiche associée à la clé d'index trouvée doit aussi être récupérée ou non.



Valeur retournée

Cette méthode retourne une valeur de type Int correspondant à un code d'erreur :


0 Aucune erreur ne s'est produite.

Autres codes Pour en savoir plus, voir la section L'interprétation des codes d'erreur.

Est-ce que cela fonctionne ?
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum