- LineB
- Nombre de messages : 10
Date d'inscription : 20/12/2010
Probleme de Calcul des taxes
Dim 2 Jan 2011 - 21:24
Bonsoir ,
A partir d'n formulaire de saisie, je crée une soumission qui emmagasine les valeurs dans une table ACCESS.
Lorsque l'usager click sur CREER SOUMISSION, celle-ci se crée dans ACOMBA.
Jusque là pas de problème.
Par contre les taxes ne se calculent pas dans ACOMBA a moins que je me rende dans la Soumission ACOMBA et que je click sur taxe (ligne du produit).
J'ai bien vérifier que le Client est taxable ainsi que les produits.
Code:
Private Sub btnCreer_Click()
'Dclaration des variables
Dim cnn As New ADODB.Connection
Dim rstTransactionHeader As New ADODB.Recordset
Dim rstTransactionDetail As New ADODB.Recordset
Dim rstCurrentTaxes As New ADODB.Recordset
Dim rstLastTransHeader As New ADODB.Recordset
Dim rstLastTransDetail As New ADODB.Recordset
Dim rstCustomerData As New ADODB.Recordset
Dim rstProductData As New ADODB.Recordset
Dim rstSoumission As DAO.Recordset
Dim TotLignes As Integer
Dim Lignes As Integer
Dim CustomerNumber As String
Dim PartNumber As String
Dim strPriceField As String
Dim InvoiceNumberSoumission As String
Dim ILInvoiceTotal As Double
Dim Amount As Double
Dim trILProductCP As String
Dim trILDescription As String
Dim trILSellingPrice As Double
Dim trILOrderedQty As String
Dim trILProductGroupCP As String
Dim cpt As Integer
cnn.ConnectionString = "Driver={Acomba ODBC Driver};AcombaExe=\\Acomba\Fortune\achat\Fortune;Dbq=x:\f1000.dta\Cyber;Uid=xx;Pwd=xxx"
cnn.CursorLocation = adUseClient
cnn.Open
On Error GoTo Command1_Err
Set rstSoumission = CurrentDb.OpenRecordset("SELECT * FROM tbSoumission Where tbSoumission.ClientNo = '" & Me.TxtNoClient & "' And tbSoumission.Vendeur = '" & Me.txtVendeur & "' ")
If rstSoumission.EOF Then
MsgBox ("Aucune Soumission trouvée")
cnn.Close
rstSoumission.Close
Exit Sub
End If
cnn.Execute ("BEGIN_TRANSACTION_IN")
rstSoumission.MoveFirst
rstSoumission.MoveLast
TotLignes = rstSoumission.RecordCount
rstSoumission.MoveFirst
rstTransactionHeader.Open "SELECT * FROM TransactionHeader Where RecCardPos = 0 ", cnn, adOpenKeyset, adLockOptimistic
rstTransactionHeader.AddNew
rstTransactionHeader!InInvoiceType = 4
rstTransactionHeader!InDescription = "NE PAS CONSIDERER TEST"
rstTransactionHeader!InCurrentDay = 1
rstTransactionHeader!InTransactionActive = 1
rstTransactionHeader!InSalesRepNumber = Me.txtVendeur
CustomerNumber = rstSoumission!ClientNo
PartNumber = rstSoumission!Part
'On veut aller chercher les informations du client
rstCustomerData.Open "SELECT * FROM Customer where cuNumber = '" & CustomerNumber & "'", cnn, adOpenKeyset, adLockOptimistic
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Pour le calcul des taxes avec le cnn.Execute("CALCULATE_TAXES")
'il faut initialiser un CardPos du groupe de taxe
'On peut donc aller chercher le groupe de taxe auquel le client fait parti
'pour utiliser les bonnes taxes pour le calcul
rstTransactionHeader!InTaxGroupCP = rstCustomerData!CuTaxGroupCP
If Not rstCustomerData.EOF Then
rstTransactionHeader!InCustomerSupplierCP = rstCustomerData!RecCardPos
Else
rstTransactionHeader!InCustomerSupplierCP = 0
End If
'Si le client existe
If rstTransactionHeader!InCustomerSupplierCP > 0 Then
'Initialisation des proprits concernant le client
'associ la facture
rstTransactionHeader!InInvoicedToCP = rstCustomerData!CuInvoicedToCP
'Numro du compte recevable du client auquel la facturation
'est associe
rstTransactionHeader!InReceivableOffset = rstCustomerData!CuReceivable
End If
'**********************************************************
'tape 2 : Assigner le nombre total de lignes incluses
' dans la facturation la proprit TANumLines
'**********************************************************
rstTransactionHeader!TANumLines = TotLignes
Lignes = 1
rstTransactionHeader.Update
'**********************************************************
'tape 3 : Initialiser les proprits de la premire
' ligne de la facturation
'**********************************************************
rstTransactionDetail.Open "SELECT * FROM TransactionDetail ", cnn, adOpenKeyset, adLockOptimistic
For cpt = 1 To TotLignes
PartNumber = rstSoumission!Part
rstProductData.Open "SELECT * FROM Product where PrNumber = '" & PartNumber & "'", cnn, adOpenKeyset, adLockOptimistic
strPriceField = "PrSellingPrice" & rstCustomerData!CuReceivable & "_" & rstCustomerData!CuPriceLevel + 1
trILSellingPrice = Format(CStr(rstProductData(strPriceField)), "# ##.#")
trILProductCP = rstProductData!RecCardPos
trILDescription = rstProductData!PrDescription1
trILProductGroupCP = rstProductData!PrProductGroupCP
trILOrderedQty = rstSoumission!Qty
cnn.Execute ("update TransactionDetail set ILProductNumber = '" & PartNumber & "', ILProductCP = " & CStr(trILProductCP) & " ,ILSellingPrice = " & trILSellingPrice & ",ILProductGroupCP = " & CStr(trILProductGroupCP) & " , ILOrderedQty = " & CStr(trILOrderedQty) & " , ILLineNumber = " & CStr(cpt) & " , ILDescription = '" & trILDescription & "' ,ILType = 4 WHERE TaNum = " & CStr(cpt))
rstSoumission.MoveNext
rstProductData.Close
Next
rstTransactionDetail.Close
'TANum = 4
cnn.Execute ("CALCULATE_TAXES")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Calcul de taxe
'On peut effectuer le calcul des taxes et y avoir accs avant la finalisation de la facture
'Voici un exemple avec lequel on calcul les taxes et on ajoute par la suite une ligne de transport
'il est possible aussi de calculer les taxes, ajouter des produits, et recalculer les taxes
'Calcul des taxes sur nos 2 produits
'Il ajoute automatiquement les lignes TANumLines, donc aprs son excution TANumLines = 4
'TANumLines = 4
Dim CardPos As Integer
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Si on veut obtenir des informations sur le dernier header cr,
' les informations se trouvent dans le LastTransactionHeader
' On veut particulirement obtenir le CardPos de la transaction une fois cre
' afin de faire des oprations sur celle-ci
' Toutes autres informations sont aussi disponibles
rstLastTransHeader.Open "select * from LastTransactionHeader", cnn, adOpenKeyset, adLockOptimistic
CardPos = rstLastTransHeader!RecCardPos ' <---------
ILInvoiceTotal = rstLastTransHeader!InInvoiceTotal
InvoiceNumberSoumission = rstLastTransHeader!InInvoiceNumber
MsgBox "Transaction terminée. No de Soumission: " & (rstLastTransHeader!InInvoiceNumber)
'SupplierCP = rstLastTransHeader!InCustomerSupplierCP
rstLastTransHeader.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Si on veut obtenir des informations sur les lignes de taxes,
' les informations se trouvent dans le LastTransactionDetail (Ainsi que d'autres informations de lignes)
'rstLastTransDetail.Open "select * from LastTransactionDetail where ILType = 8", cnn, adOpenKeyset, adLockOptimistic
'premiere ligne de taxe
'Amount = rstLastTransDetail!ILTotalAmount
'deuxieme ligne de taxe
'rstLastTransDetail.MoveNext
'Amount = rstLastTransDetail!ILTotalAmount
'rstLastTransDetail.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Fermeture des RecordSet
rstCustomerData.Close
Merci de votre aide tant apprécié.
A partir d'n formulaire de saisie, je crée une soumission qui emmagasine les valeurs dans une table ACCESS.
Lorsque l'usager click sur CREER SOUMISSION, celle-ci se crée dans ACOMBA.
Jusque là pas de problème.
Par contre les taxes ne se calculent pas dans ACOMBA a moins que je me rende dans la Soumission ACOMBA et que je click sur taxe (ligne du produit).
J'ai bien vérifier que le Client est taxable ainsi que les produits.
Code:
Private Sub btnCreer_Click()
'Dclaration des variables
Dim cnn As New ADODB.Connection
Dim rstTransactionHeader As New ADODB.Recordset
Dim rstTransactionDetail As New ADODB.Recordset
Dim rstCurrentTaxes As New ADODB.Recordset
Dim rstLastTransHeader As New ADODB.Recordset
Dim rstLastTransDetail As New ADODB.Recordset
Dim rstCustomerData As New ADODB.Recordset
Dim rstProductData As New ADODB.Recordset
Dim rstSoumission As DAO.Recordset
Dim TotLignes As Integer
Dim Lignes As Integer
Dim CustomerNumber As String
Dim PartNumber As String
Dim strPriceField As String
Dim InvoiceNumberSoumission As String
Dim ILInvoiceTotal As Double
Dim Amount As Double
Dim trILProductCP As String
Dim trILDescription As String
Dim trILSellingPrice As Double
Dim trILOrderedQty As String
Dim trILProductGroupCP As String
Dim cpt As Integer
cnn.ConnectionString = "Driver={Acomba ODBC Driver};AcombaExe=\\Acomba\Fortune\achat\Fortune;Dbq=x:\f1000.dta\Cyber;Uid=xx;Pwd=xxx"
cnn.CursorLocation = adUseClient
cnn.Open
On Error GoTo Command1_Err
Set rstSoumission = CurrentDb.OpenRecordset("SELECT * FROM tbSoumission Where tbSoumission.ClientNo = '" & Me.TxtNoClient & "' And tbSoumission.Vendeur = '" & Me.txtVendeur & "' ")
If rstSoumission.EOF Then
MsgBox ("Aucune Soumission trouvée")
cnn.Close
rstSoumission.Close
Exit Sub
End If
cnn.Execute ("BEGIN_TRANSACTION_IN")
rstSoumission.MoveFirst
rstSoumission.MoveLast
TotLignes = rstSoumission.RecordCount
rstSoumission.MoveFirst
rstTransactionHeader.Open "SELECT * FROM TransactionHeader Where RecCardPos = 0 ", cnn, adOpenKeyset, adLockOptimistic
rstTransactionHeader.AddNew
rstTransactionHeader!InInvoiceType = 4
rstTransactionHeader!InDescription = "NE PAS CONSIDERER TEST"
rstTransactionHeader!InCurrentDay = 1
rstTransactionHeader!InTransactionActive = 1
rstTransactionHeader!InSalesRepNumber = Me.txtVendeur
CustomerNumber = rstSoumission!ClientNo
PartNumber = rstSoumission!Part
'On veut aller chercher les informations du client
rstCustomerData.Open "SELECT * FROM Customer where cuNumber = '" & CustomerNumber & "'", cnn, adOpenKeyset, adLockOptimistic
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Pour le calcul des taxes avec le cnn.Execute("CALCULATE_TAXES")
'il faut initialiser un CardPos du groupe de taxe
'On peut donc aller chercher le groupe de taxe auquel le client fait parti
'pour utiliser les bonnes taxes pour le calcul
rstTransactionHeader!InTaxGroupCP = rstCustomerData!CuTaxGroupCP
If Not rstCustomerData.EOF Then
rstTransactionHeader!InCustomerSupplierCP = rstCustomerData!RecCardPos
Else
rstTransactionHeader!InCustomerSupplierCP = 0
End If
'Si le client existe
If rstTransactionHeader!InCustomerSupplierCP > 0 Then
'Initialisation des proprits concernant le client
'associ la facture
rstTransactionHeader!InInvoicedToCP = rstCustomerData!CuInvoicedToCP
'Numro du compte recevable du client auquel la facturation
'est associe
rstTransactionHeader!InReceivableOffset = rstCustomerData!CuReceivable
End If
'**********************************************************
'tape 2 : Assigner le nombre total de lignes incluses
' dans la facturation la proprit TANumLines
'**********************************************************
rstTransactionHeader!TANumLines = TotLignes
Lignes = 1
rstTransactionHeader.Update
'**********************************************************
'tape 3 : Initialiser les proprits de la premire
' ligne de la facturation
'**********************************************************
rstTransactionDetail.Open "SELECT * FROM TransactionDetail ", cnn, adOpenKeyset, adLockOptimistic
For cpt = 1 To TotLignes
PartNumber = rstSoumission!Part
rstProductData.Open "SELECT * FROM Product where PrNumber = '" & PartNumber & "'", cnn, adOpenKeyset, adLockOptimistic
strPriceField = "PrSellingPrice" & rstCustomerData!CuReceivable & "_" & rstCustomerData!CuPriceLevel + 1
trILSellingPrice = Format(CStr(rstProductData(strPriceField)), "# ##.#")
trILProductCP = rstProductData!RecCardPos
trILDescription = rstProductData!PrDescription1
trILProductGroupCP = rstProductData!PrProductGroupCP
trILOrderedQty = rstSoumission!Qty
cnn.Execute ("update TransactionDetail set ILProductNumber = '" & PartNumber & "', ILProductCP = " & CStr(trILProductCP) & " ,ILSellingPrice = " & trILSellingPrice & ",ILProductGroupCP = " & CStr(trILProductGroupCP) & " , ILOrderedQty = " & CStr(trILOrderedQty) & " , ILLineNumber = " & CStr(cpt) & " , ILDescription = '" & trILDescription & "' ,ILType = 4 WHERE TaNum = " & CStr(cpt))
rstSoumission.MoveNext
rstProductData.Close
Next
rstTransactionDetail.Close
'TANum = 4
cnn.Execute ("CALCULATE_TAXES")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Calcul de taxe
'On peut effectuer le calcul des taxes et y avoir accs avant la finalisation de la facture
'Voici un exemple avec lequel on calcul les taxes et on ajoute par la suite une ligne de transport
'il est possible aussi de calculer les taxes, ajouter des produits, et recalculer les taxes
'Calcul des taxes sur nos 2 produits
'Il ajoute automatiquement les lignes TANumLines, donc aprs son excution TANumLines = 4
'TANumLines = 4
Dim CardPos As Integer
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Si on veut obtenir des informations sur le dernier header cr,
' les informations se trouvent dans le LastTransactionHeader
' On veut particulirement obtenir le CardPos de la transaction une fois cre
' afin de faire des oprations sur celle-ci
' Toutes autres informations sont aussi disponibles
rstLastTransHeader.Open "select * from LastTransactionHeader", cnn, adOpenKeyset, adLockOptimistic
CardPos = rstLastTransHeader!RecCardPos ' <---------
ILInvoiceTotal = rstLastTransHeader!InInvoiceTotal
InvoiceNumberSoumission = rstLastTransHeader!InInvoiceNumber
MsgBox "Transaction terminée. No de Soumission: " & (rstLastTransHeader!InInvoiceNumber)
'SupplierCP = rstLastTransHeader!InCustomerSupplierCP
rstLastTransHeader.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Si on veut obtenir des informations sur les lignes de taxes,
' les informations se trouvent dans le LastTransactionDetail (Ainsi que d'autres informations de lignes)
'rstLastTransDetail.Open "select * from LastTransactionDetail where ILType = 8", cnn, adOpenKeyset, adLockOptimistic
'premiere ligne de taxe
'Amount = rstLastTransDetail!ILTotalAmount
'deuxieme ligne de taxe
'rstLastTransDetail.MoveNext
'Amount = rstLastTransDetail!ILTotalAmount
'rstLastTransDetail.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Fermeture des RecordSet
rstCustomerData.Close
Merci de votre aide tant apprécié.
- hench
- Nombre de messages : 163
Date d'inscription : 30/12/2008
Fiche d'Entreprise
Nom de l'entreprise:
Re: Probleme de Calcul des taxes
Jeu 6 Jan 2011 - 13:54
Vous devez attribuer un numéro de taux de taxe au champ ILTaxLineRate pour chacune des lignes de produits taxables.
Il est possible d'assigner 10 taux de taxe différents à une taxe. Via SDK, les valeurs vont de 0 à 9, par ODBC, je croirais qu'elles sont les mêmes, je vous laisse le loisir de vérifier dans les documents d'aide ODBC.
Bon succès,
hench
Il est possible d'assigner 10 taux de taxe différents à une taxe. Via SDK, les valeurs vont de 0 à 9, par ODBC, je croirais qu'elles sont les mêmes, je vous laisse le loisir de vérifier dans les documents d'aide ODBC.
Bon succès,
hench
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum