- xantso290
- Nombre de messages : 3
Date d'inscription : 07/03/2019
É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
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
- xantso290
- Nombre de messages : 3
Date d'inscription : 07/03/2019
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, = 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
' 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, = 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
- xantso290
- Nombre de messages : 3
Date d'inscription : 07/03/2019
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
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
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum