- tchiktia
- Nombre de messages : 1
Date d'inscription : 31/01/2012
Derniere facture d'un client
Mar 31 Jan 2012 - 17:52
Bonjour!!
Petite question sur laquel je suis tanner de tourner en rond
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
Petite question sur laquel je suis tanner de tourner en rond
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
- hench
- Nombre de messages : 163
Date d'inscription : 30/12/2008
Fiche d'Entreprise
Nom de l'entreprise:
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
Est-ce que cela fonctionne ?
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 ?
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum