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
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

Aller en bas
avatar
xantso290
Nombre de messages : 3
Date d'inscription : 07/03/2019

État de comptes sommaire Empty État de comptes sommaire

Jeu 7 Mar 2019 - 9:49
Nous voulons produire sur papier ou PDF un état de comptes sommaire pour un client donné.
Les mêmes informations que lors de l'impression de l'état de comptes sommaire à partir de l'interface client dans Acomba.
L'état de comptes sommaire résume les factures impayées et produit également un age des comptes sommaire (courant, 30, 60 et 90 jours).

Est-ce qu'il y a un interface au niveau du SDK qui permet de produit un état de compte sommaire?
Ou sinon, de quelle manière peut-on produire un état de compte à partir de l'interface InvoiceAR?

Nous développons en VB.

Merci
avatar
xantso290
Nombre de messages : 3
Date d'inscription : 07/03/2019

État de comptes sommaire Empty Méthode VB pour produire état de compte

Lun 11 Mar 2019 - 10:16
' Nous avons trouvé la façon de produire un état de compte client avec factures en souffrance à partir de nos tests.
' Nous avons bien voulu partager cette méthode.
' Le code est en VB6 mais tout bon développeur peut adapter ce code à un autre langage.

' Appel de la procédure avec numéro de client comme paramètre

rtACOMBA_EtatDeComptesClient 5149901111

' Procédure de traitement et de production de l'état de compte

Private Sub rtACOMBA_EtatDeComptesClient(sClient As String)
 Dim InvoiceARInt As New AcoSDK.InvoiceAR
 Dim CustomerInt As New AcoSDK.Customer
 Dim vecteur_EtatDeCompteTemp() As String
 Dim vecteur_EtatDeCompte() As String
 Dim nErreur As Long
 Dim datDate As Date
 Dim strType As String
 Dim strReference As String
 Dim ii As Integer
 Dim jj As Integer
 Dim nIndex As Integer
 Dim nMnt As Double
 
' Initialiser les vecteurs afin de recevoir les infos des factures clients

 ReDim vecteur_EtatDeCompteTemp(500, 25) ' Maximum de 500 factures à lire (cette dimension peut-être augmentée)
 ReDim vecteur_EtatDeCompte(500, 7)
 
' Lire les infos client de l'interface client
 
 CustomerInt.PKey_CuNumber = Trim(sClient)
 nErreur = CustomerInt.FindKey(1, True)
 
 If nErreur = 0 Then
   
'   Factures
'   On lit toutes les factures du client
   
   InvoiceARInt.BlankKey
   InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   InvoiceARInt.Key_InTransactionType = TA_Invoice
   nErreur = InvoiceARInt.SearchKey(2, True)
   
   While nErreur = 0 And InvoiceARInt.Key_InTransactionType = TA_Invoice And InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
     
     datDate = InvoiceARInt.InDate ' On conserve la date
     strType = "Fac" ' Constante afin de préciser qu'il s'agit d'une facture (vous pouvez inscrire ce que vous voulez)
     strReference = InvoiceARInt.InReference ' La référence de la facture
     
     If InvoiceARInt.InAllPaid = 0 Then
'       Obtenir le total des paiements de la facture si impayé via une autre fonction
       nMnt = fACOMBA_ObtenirTotalPaiementsTransaction(InvoiceARInt.Key_InCardPos)
     Else
       nMnt = InvoiceARInt.InTransactionTotal
     End If
     
'     Chaque facture est conservé dans un tableau (vecteur) dont le montant de la facture, les paiements ainsi que le solde
     For ii = 0 To 499
       If vecteur_EtatDeCompteTemp(ii, 0) = "" Then
         vecteur_EtatDeCompteTemp(ii, 0) = Trim(InvoiceARInt.InInvoiceNumber)
         vecteur_EtatDeCompteTemp(ii, 1) = Format(datDate, "Short date")
         vecteur_EtatDeCompteTemp(ii, 2) = strType
         vecteur_EtatDeCompteTemp(ii, 3) = strReference
         vecteur_EtatDeCompteTemp(ii, 4) = Trim(Str(InvoiceARInt.InTransactionTotal))
         vecteur_EtatDeCompteTemp(ii, 5) = Trim(Str(nMnt))
         vecteur_EtatDeCompteTemp(ii, 6) = Trim(Str(InvoiceARInt.InTransactionTotal - nMnt))
         Exit For
       End If
     Next
       
     nErreur = InvoiceARInt.NextKey(2, True) ' Prochaine facture
   
   Wend
   
'   Intérêts
'   Même logique de traitement pour les intérêts
   
   InvoiceARInt.BlankKey
   InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   InvoiceARInt.Key_InTransactionType = TA_InterestCharge
   nErreur = InvoiceARInt.SearchKey(2, True)
   
   While nErreur = 0 And InvoiceARInt.Key_InTransactionType = TA_InterestCharge And InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   
     datDate = InvoiceARInt.InDate
     strType = "Int"
     strReference = InvoiceARInt.InReference
     
     If InvoiceARInt.InAllPaid = 0 Then
       nMnt = fACOMBA_ObtenirTotalPaiementsTransaction(InvoiceARInt.Key_InCardPos)
     End If
     
     For ii = 0 To 499
       If vecteur_EtatDeCompteTemp(ii, 0) = "" Then
         vecteur_EtatDeCompteTemp(ii, 0) = Trim(InvoiceARInt.InInvoiceNumber)
         vecteur_EtatDeCompteTemp(ii, 1) = Format(datDate, "Short date")
         vecteur_EtatDeCompteTemp(ii, 2) = strType
         vecteur_EtatDeCompteTemp(ii, 3) = strReference
         vecteur_EtatDeCompteTemp(ii, 7) = Trim(Str(InvoiceARInt.InTransactionTotal))
         vecteur_EtatDeCompteTemp(ii, Cool = Trim(Str(nMnt))
         vecteur_EtatDeCompteTemp(ii, 9) = Trim(Str(InvoiceARInt.InTransactionTotal - nMnt))
         Exit For
       End If
     Next
     
     nErreur = InvoiceARInt.NextKey(2, True)
     
   Wend

'   Pénalités
'   Même logique de traitement pour les pénalités
   
   InvoiceARInt.BlankKey
   InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   InvoiceARInt.Key_InTransactionType = TA_Penalty
   nErreur = InvoiceARInt.SearchKey(2, True)
   
   While nErreur = 0 And InvoiceARInt.Key_InTransactionType = TA_Penalty And InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
     
     datDate = InvoiceARInt.InDate
     strType = "Pen"
     strReference = InvoiceARInt.InReference
     
     If InvoiceARInt.InAllPaid = 0 Then
       nMnt = fACOMBA_ObtenirTotalPaiementsTransaction(InvoiceARInt.Key_InCardPos)
     End If
     
     For ii = 0 To 499
       If vecteur_EtatDeCompteTemp(ii, 0) = "" Then
         vecteur_EtatDeCompteTemp(ii, 0) = Trim(InvoiceARInt.InInvoiceNumber)
         vecteur_EtatDeCompteTemp(ii, 1) = Format(datDate, "Short date")
         vecteur_EtatDeCompteTemp(ii, 2) = strType
         vecteur_EtatDeCompteTemp(ii, 3) = strReference
         vecteur_EtatDeCompteTemp(ii, 10) = Trim(Str(InvoiceARInt.InTransactionTotal))
         vecteur_EtatDeCompteTemp(ii, 11) = Trim(Str(nMnt))
         vecteur_EtatDeCompteTemp(ii, 12) = Trim(Str(InvoiceARInt.InTransactionTotal - nMnt))
         Exit For
       End If
     Next
           
     nErreur = InvoiceARInt.NextKey(2, True)
   
   Wend

'   Autres charges
'   Même logique de traitement pour les autres charges
   
   InvoiceARInt.BlankKey
   InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   InvoiceARInt.Key_InTransactionType = TA_OtherCharge
   nErreur = InvoiceARInt.SearchKey(2, True)
   
   While nErreur = 0 And InvoiceARInt.Key_InTransactionType = TA_OtherCharge And InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
     
     datDate = InvoiceARInt.InDate
     strType = "Aut"
     strReference = InvoiceARInt.InReference
     
     If InvoiceARInt.InAllPaid = 0 Then
       nMnt = fACOMBA_ObtenirTotalPaiementsTransaction(InvoiceARInt.Key_InCardPos)
     Else
       nMnt = InvoiceARInt.InTransactionTotal
     End If
       
     For ii = 0 To 499
       If vecteur_EtatDeCompteTemp(ii, 0) = "" Then
         vecteur_EtatDeCompteTemp(ii, 0) = Trim(InvoiceARInt.InInvoiceNumber)
         vecteur_EtatDeCompteTemp(ii, 1) = Format(datDate, "Short date")
         vecteur_EtatDeCompteTemp(ii, 2) = strType
         vecteur_EtatDeCompteTemp(ii, 3) = strReference
         vecteur_EtatDeCompteTemp(ii, 13) = Trim(Str(InvoiceARInt.InTransactionTotal))
         vecteur_EtatDeCompteTemp(ii, 14) = Trim(Str(nMnt))
         vecteur_EtatDeCompteTemp(ii, 15) = Trim(Str(InvoiceARInt.InTransactionTotal - nMnt))
         Exit For
       End If
     Next
           
     nErreur = InvoiceARInt.NextKey(2, True)
   
   Wend

'   Credits
'   Même logique de traitement pour les crédits

   InvoiceARInt.BlankKey
   InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   InvoiceARInt.Key_InTransactionType = TA_Credit
   nErreur = InvoiceARInt.SearchKey(2, True)
   
   While nErreur = 0 And InvoiceARInt.Key_InTransactionType = TA_Credit And InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
     
     datDate = InvoiceARInt.InDate
     strType = "Cre"
     strReference = InvoiceARInt.InReference
     
     If InvoiceARInt.InAllPaid = 0 Then
       nMnt = fACOMBA_ObtenirTotalPaiementsTransaction(InvoiceARInt.Key_InCardPos)
     Else
       nMnt = InvoiceARInt.InTransactionTotal
     End If
       
     For ii = 0 To 499
       If vecteur_EtatDeCompteTemp(ii, 0) = "" Then
         vecteur_EtatDeCompteTemp(ii, 0) = Trim(InvoiceARInt.InInvoiceNumber)
         vecteur_EtatDeCompteTemp(ii, 1) = Format(datDate, "Short date")
         vecteur_EtatDeCompteTemp(ii, 2) = strType
         vecteur_EtatDeCompteTemp(ii, 3) = strReference
         vecteur_EtatDeCompteTemp(ii, 16) = Trim(Str(InvoiceARInt.InTransactionTotal))
         vecteur_EtatDeCompteTemp(ii, 17) = Trim(Str(nMnt))
         vecteur_EtatDeCompteTemp(ii, 18) = Trim(Str(InvoiceARInt.InTransactionTotal - nMnt))
         Exit For
       End If
     Next
     
     nErreur = InvoiceARInt.NextKey(2, True)
   Wend

'   Surcharges
'   Même logique de traitement pour les sur charges (par contre il faut ajouter les montants reçus au solde)
   
   InvoiceARInt.BlankKey
   InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   InvoiceARInt.Key_InTransactionType = TA_Overpayment
   nErreur = InvoiceARInt.SearchKey(2, True)
   
   While nErreur = 0 And InvoiceARInt.Key_InTransactionType = TA_Overpayment And InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   
     datDate = InvoiceARInt.InDate
     strType = "Sur"
     strReference = InvoiceARInt.InReference
     
     If InvoiceARInt.InAllPaid = 0 Then
       nMnt = fACOMBA_ObtenirTotalPaiementsTransaction(InvoiceARInt.Key_InCardPos)
     End If
     
     For ii = 0 To 499
       If vecteur_EtatDeCompteTemp(ii, 0) = "" Then
         vecteur_EtatDeCompteTemp(ii, 0) = Trim(InvoiceARInt.InInvoiceNumber)
         vecteur_EtatDeCompteTemp(ii, 1) = Format(datDate, "Short date")
         vecteur_EtatDeCompteTemp(ii, 2) = strType
         vecteur_EtatDeCompteTemp(ii, 3) = strReference
         vecteur_EtatDeCompteTemp(ii, 19) = Trim(Str(InvoiceARInt.InTransactionTotal))
         vecteur_EtatDeCompteTemp(ii, 20) = Trim(Str(nMnt))
         vecteur_EtatDeCompteTemp(ii, 21) = Trim(Str(InvoiceARInt.InTransactionTotal + nMnt))
         Exit For
       End If
     Next
     
     nErreur = InvoiceARInt.NextKey(2, True)
   Wend

'   Dépots
'   Même logique de traitement pour les dépôts (par contre il faut ajouter les montants reçus au solde)
   
   InvoiceARInt.BlankKey
   InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   InvoiceARInt.Key_InTransactionType = TA_Deposit
   nErreur = InvoiceARInt.SearchKey(2, True)
   
   While nErreur = 0 And InvoiceARInt.Key_InTransactionType = TA_Deposit And InvoiceARInt.Key_InCustomerCP = CustomerInt.Key_CuCardPos
   
     datDate = InvoiceARInt.InDate
     strType = "Dep"
     strReference = InvoiceARInt.InReference
     
     If InvoiceARInt.InAllPaid = 0 Then
       nMnt = fACOMBA_ObtenirTotalPaiementsTransaction(InvoiceARInt.Key_InCardPos) * -1
     Else
       nMnt = InvoiceARInt.InTransactionTotal * -1
     End If
       
     For ii = 0 To 499
       If vecteur_EtatDeCompteTemp(ii, 0) = "" Then
         vecteur_EtatDeCompteTemp(ii, 0) = Trim(InvoiceARInt.InInvoiceNumber)
         vecteur_EtatDeCompteTemp(ii, 1) = Format(datDate, "Short date")
         vecteur_EtatDeCompteTemp(ii, 2) = strType
         vecteur_EtatDeCompteTemp(ii, 3) = strReference
         vecteur_EtatDeCompteTemp(ii, 22) = Trim(Str(InvoiceARInt.InTransactionTotal))
         vecteur_EtatDeCompteTemp(ii, 23) = Trim(Str(nMnt))
         vecteur_EtatDeCompteTemp(ii, 24) = Trim(Str(InvoiceARInt.InTransactionTotal + nMnt))
         Exit For
       End If
     Next
           
     nErreur = InvoiceARInt.NextKey(2, True)
     
   Wend
   
'   Une fois toutes les infos factures compilées, on transfert seulement les factures ayant un solde dans un nouveau tableau.
'   Ce tableau contient alors l'état de compte du client avec les factures en souffrance
'   Le tableau peut-être imprimé ou simplement consulté
   
   nIndex = -1
   For ii = 0 To 499
     If Trim(vecteur_EtatDeCompteTemp(ii, 0)) <> "" Then
       For jj = 6 To 24 Step 3
         If Val(vecteur_EtatDeCompteTemp(ii, jj)) <> 0 Then
           nIndex = nIndex + 1
           vecteur_EtatDeCompte(nIndex, 0) = Trim(vecteur_EtatDeCompteTemp(ii, 0))
           vecteur_EtatDeCompte(nIndex, 1) = Trim(vecteur_EtatDeCompteTemp(ii, 1))
           vecteur_EtatDeCompte(nIndex, 2) = Trim(vecteur_EtatDeCompteTemp(ii, 2))
           vecteur_EtatDeCompte(nIndex, 3) = Trim(vecteur_EtatDeCompteTemp(ii, 3))
           vecteur_EtatDeCompte(nIndex, 4) = Trim(vecteur_EtatDeCompteTemp(ii, jj - 2))
           vecteur_EtatDeCompte(nIndex, 5) = Trim(vecteur_EtatDeCompteTemp(ii, jj - 1))
           vecteur_EtatDeCompte(nIndex, 6) = Trim(vecteur_EtatDeCompteTemp(ii, jj))
         End If
       Next
     End If
   Next
   
 End If
 
End Sub

' Fonction permettant d'obtenir tous les paiements d'une facture

Function fACOMBA_ObtenirTotalPaiementsTransaction(CardPos As Long) As Double
 Dim CustomerPaymentLineInt As New AcoSDK.CustomerPaymentLine
 Dim Montant As Double
 Dim Error As Long

 Montant = 0
 fACOMBA_ObtenirTotalPaiementsTransaction = 0
 CustomerPaymentLineInt.Key_CPInvoiceARCP = CardPos
 Error = CustomerPaymentLineInt.SearchKey(1, False)
 While (Error = 0) And (CustomerPaymentLineInt.Key_CPInvoiceARCP = CardPos)
   Montant = Montant + CustomerPaymentLineInt.Key_CPAmount + CustomerPaymentLineInt.Key_CPDiscount
   Error = CustomerPaymentLineInt.NextKey(1, False)
 Wend
 fACOMBA_ObtenirTotalPaiementsTransaction = Montant

End Function
avatar
xantso290
Nombre de messages : 3
Date d'inscription : 07/03/2019

État de comptes sommaire Empty Tableau final état de compte

Lun 11 Mar 2019 - 10:25
Le tableau final de la production de l'état de compte contient les valeurs suivantes pour chaque indice

nIndex = -1
For ii = 0 To 499
If Trim(vecteur_EtatDeCompteTemp(ii, 0)) <> "" Then
For jj = 6 To 24 Step 3
If Val(vecteur_EtatDeCompteTemp(ii, jj)) <> 0 Then
nIndex = nIndex + 1
vecteur_EtatDeCompte(nIndex, 0) = Trim(vecteur_EtatDeCompteTemp(ii, 0)) ' le numéro de facture
vecteur_EtatDeCompte(nIndex, 1) = Trim(vecteur_EtatDeCompteTemp(ii, 1)) ' la date de la transaction
vecteur_EtatDeCompte(nIndex, 2) = Trim(vecteur_EtatDeCompteTemp(ii, 2)) ' le type de transaction
vecteur_EtatDeCompte(nIndex, 3) = Trim(vecteur_EtatDeCompteTemp(ii, 3)) ' la référence de la transaction
vecteur_EtatDeCompte(nIndex, 4) = Trim(vecteur_EtatDeCompteTemp(ii, jj - 2)) ' Le montant de la transaction
vecteur_EtatDeCompte(nIndex, 5) = Trim(vecteur_EtatDeCompteTemp(ii, jj - 1)) ' les paiements effectués
vecteur_EtatDeCompte(nIndex, 6) = Trim(vecteur_EtatDeCompteTemp(ii, jj)) ' le solde de la transaction
End If
Next
End If
Next
Contenu sponsorisé

État de comptes sommaire Empty Re: État de comptes sommaire

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum