- bonneaupierrelouis
- Nombre de messages : 27
Age : 34
Ville : Trois-Rivières
Date d'inscription : 20/08/2013
Fiche d'Entreprise
Nom de l'entreprise:
Acomba ne prend pas les décimales lors création de facture
Jeu 12 Sep 2013 - 16:17
Bonjour à tous, j'effectue une insertion de facture dans Acomba avec l'aide du SDK. Toutefois, je ne suis pas capable de faire passer les décimales... La facture est belle et bien crée, je peux voir tous les items chargés à l'intérieur de celle-ci, mais tous les prix sont arrondis...
Est-ce que c'est une option dans Acomba que je dois changer? (J'ai la version d'essaie Supervisor/DEMO). Est-ce que quelqu'un a déjà vécu un problème semblable?
À titre de référence, je laisse le code que j'utilise ci-dessous. C'est grosso-modo le code fournis par l'exemple de l'Aide du AcoSDK.
Est-ce que c'est une option dans Acomba que je dois changer? (J'ai la version d'essaie Supervisor/DEMO). Est-ce que quelqu'un a déjà vécu un problème semblable?
À titre de référence, je laisse le code que j'utilise ci-dessous. C'est grosso-modo le code fournis par l'exemple de l'Aide du AcoSDK.
- Code:
<!DOCTYPE html>
<html>
<head>
<%
Sub ConnectionUser()
Dim AcoSDKInt
Set AcoSDKInt = Server.CreateObject("AcoSDK.AcoSDKX")
Dim Acomba
Set Acomba = Server.CreateObject("AcoSDK.AcombaX")
Dim UserInt
Set UserInt = Server.CreateObject("AcoSDK.User")
Dim Version
Dim CompanyPath
Dim AcombaPath
Dim MotDePasse
Dim Exist
Dim Error
Version = AcoSDKInt.VaVersionSDK
Error = AcoSDKInt.Start(Version)
If Error = 0 Then
CompanyPath = "C:\F1000.dta\DemoSDK_FR"
AcombaPath = "C:\Aco_SDK"
MotDePasse = "DEMO"
Exist = Acomba.CompanyExists(CompanyPath)
If Exist <> 0 Then
Error = Acomba.OpenCompany(AcombaPath, CompanyPath)
If Error = 0 Then
UserInt.PKey_UsNumber = "Supervisor"
Error = UserInt.FindKey(1, False)
If Error = 0 Then
Error = Acomba.LogCurrentUser(UserInt.Key_UsCardPos, MotDePasse)
If Error = 0 Then
response.write("Connexion de l'usager complétée avec succès.")
Else
response.write("Erreur1: " & Acomba.GetErrorMessage(Error))
End If
Else
response.write("Erreur2: " & Acomba.GetErrorMessage(Error))
End If
Else
response.write("Erreur3: " & Acomba.GetErrorMessage(Error))
End If
Else
response.write("Dossier de la société invalide")
End If
Else
response.write("Erreur4: " & Acomba.GetErrorMessage(Error))
End If
End Sub
'Section déclaration
Private TransactionInt
Set TransactionInt = Server.CreateObject("AcoSDK.Transaction")
Private Error
Dim Acomba
Set Acomba = Server.CreateObject("AcoSDK.AcombaX")
Sub AddNewInvoicing()
'Déclaration des interfaces
Dim ControlCustomerInt
Set ControlCustomerInt = Server.CreateObject("AcoSDK.ControlCustomer")
Dim ProductInt
Set ProductInt = Server.CreateObject("AcoSDK.Product")
Dim TaxInt
Set TaxInt = Server.CreateObject("AcoSDK.Tax")
'Déclaration des variables
Dim CustomerNumber
Dim ProduitTrouve
Dim TaxeFederale
Const ITp_Invoice = 1 'rajouter
Const IL_Invoice = 1 'rajouter
'Met toutes les propriétés de fiche de l'interface à vide
TransactionInt.BlankCard
'Chargement de la fiche de contrôle des comptes clients
Error = ControlCustomerInt.GetCard(1)
If Error = 0 Then
'**********************************************************
'Étape 1 : Initialiser les propriétés de l'en-tête de la
' facturation
'**********************************************************
'La facturation est de type facture
TransactionInt.InInvoiceType = ITp_Invoice
TransactionInt.InReference = "PO-3087"
TransactionInt.InDescription = "Description de la facture"
TransactionInt.InCurrentDay = 1
TransactionInt.InTransactionActive = 1
'Numéro du client associé à la facture
CustomerNumber = "2335522"
TransactionInt.InCustomerSupplierCP = GetCustomerCardPos(CustomerNumber)
'Si le client existe
If TransactionInt.InCustomerSupplierCP > 0 Then
'Initialisation des propriétés concernant le client
'associé à la facture
GetCustomerInfo (TransactionInt.InCustomerSupplierCP)
'**********************************************************
'Étape 2 : Assigner le nombre total de lignes incluses
' dans la facturation à la propriété TANumLines
'**********************************************************
TransactionInt.TANumLines = 5
'**********************************************************
'Étape 3 : Initialiser les propriétés de la première
' ligne de la facturation
'**********************************************************
'La première ligne de la facturation est une ligne de
'saisie de produits
TransactionInt.ILType(1) = 1 'avant cetait IL_Invoice
TransactionInt.ILLineNumber(1) = 1
TransactionInt.ILProductNumber(1) = "ACC-SOCLE"
TransactionInt.ILProductCP(1) = GetProductCardPos(TransactionInt.ILProductNumber(1))
'Initialisation de ProduitTrouve
ProduitTrouve = False
If TransactionInt.ILProductCP(1) > 0 Then
'Met toutes les propriétés de l'interface à vide
ProductInt.BlankCard
'Si le produit existe dans l'inventaire, consultation
'de sa fiche pour obtenir les valeurs à assigner aux
'propriétés le concernant dans la facturation
Error = ProductInt.GetCard(TransactionInt.ILProductCP(1))
If Error = 0 Then
TransactionInt.ILDescription(1) = ProductInt.PrDescription(1)
TransactionInt.ILSellingPrice(1) = 333.33
TransactionInt.ILProductGroupCP(1) = ProductInt.PrProductGroupCP
TransactionInt.ILInvoicedQty(1) = 2
'Indique que le produit a bien été consulté
ProduitTrouve = True
End If
End If
'Si le produit n'existe pas dans l'inventaire, les valeurs
'à assigner aux propriétés le concernant dans la facturation
'doivent provenir d'une autre source que l'inventaire
'd'Acomba
If Not ProduitTrouve Then
TransactionInt.ILDescription(1) = "Cartouche d'imprimante"
TransactionInt.ILSellingPrice(1) = 333.33
TransactionInt.ILProductGroupCP(1) = GetProductGroupCardPos(1)
TransactionInt.ILInvoicedQty(1) = 2
End If
'**********************************************************
'Étape 4 : Initialiser les propriétés de la deuxième
' ligne de la facturation
'**********************************************************
'La deuxième ligne de la facturation est une ligne de
'saisie de produits
TransactionInt.ILType(2) = 1 'avant cetait IL_Invoice
TransactionInt.ILLineNumber(2) = 2
Error = TransactionInt.ILType(2)
Error = TransactionInt.ILLineNumber(2)
TransactionInt.ILProductNumber(2) = "B-DOUCHE"
TransactionInt.ILProductCP(2) = GetProductCardPos(TransactionInt.ILProductNumber(2))
'Initialisation de ProduitTrouve
ProduitTrouve = False
If TransactionInt.ILProductCP(2) > 0 Then
'Met toutes les propriétés de l'interface à vide
ProductInt.BlankCard
'Si le produit existe dans l'inventaire, consultation
'de sa fiche pour obtenir les valeurs à assigner aux
'propriétés le concernant dans la facturation
Error = ProductInt.GetCard(TransactionInt.ILProductCP(2))
If Error = 0 Then
TransactionInt.ILDescription(2) = ProductInt.PrDescription(1)
TransactionInt.ILSellingPrice(2) = 12.12
TransactionInt.ILProductGroupCP(2) = ProductInt.PrProductGroupCP
TransactionInt.ILInvoicedQty(2) = 1
'Indique que le produit a bien été consulté
ProduitTrouve = True
End If
End If
'Si le produit n'existe pas dans l'inventaire, les valeurs
'à assigner aux propriétés le concernant dans la facturation
'doivent provenir d'une autre source que l'inventaire
'd'Acomba
If Not ProduitTrouve Then
TransactionInt.ILDescription(2) = "Souris optique"
TransactionInt.ILSellingPrice(2) = 12.12
TransactionInt.ILProductGroupCP(2) = GetProductGroupCardPos(1)
TransactionInt.ILInvoicedQty(2) = 1
End If
'**********************************************************
'Étape 5 : Initialiser les propriétés de la troisième
' ligne de la facturation
'**********************************************************
'La troisième ligne de la facturation est une ligne de taxe
TransactionInt.ILType(3) = 8 'avant cetait IL_Tax
'Les numéros 991 à 998 sont réservés pour les lignes de
'taxe et de transport
TransactionInt.ILLineNumber(3) = 991
'Numéro de la taxe à appliquer
TransactionInt.ILProductNumber(3) = "T.P.S. 100%"
'Met toutes les propriétés de clé à vide
TaxInt.BlankKey
'Recherche et consultation de la taxe
TaxInt.PKey_TaNumber = "T.P.S. 100%"
Error = TaxInt.FindKey(1, True)
If Error = 0 Then
TransactionInt.ILProductCP(3) = TaxInt.Key_TaCardPos
'CardPos du compte dans le plan comptable pour
'les taxes perçues
TransactionInt.ILCharterCP(3) = TaxInt.TaCollectedTaxesCharterCP
'Calcul du montant à facturer pour la T.P.S.
TaxeFederale = GetCalculTaxFed
TransactionInt.ILTotalAmount(3) = TaxeFederale
Else
response.write("Erreur5 : " & Acomba.GetErrorMessage(Error))
End If
'**********************************************************
'Étape 6 : Initialiser les propriétés de la quatrième
' ligne de la facturation
'**********************************************************
'La quatrième ligne de facturation est une ligne de taxe
TransactionInt.ILType(4) = 8 'avant cetait IL_Tax
'Les numéros 991 à 998 sont réservés pour les lignes de
'taxe et de transport
TransactionInt.ILLineNumber(4) = 992
'Numéro de la taxe à appliquer
TransactionInt.ILProductNumber(4) = "T.V.Q. 100%"
'Met toutes les propriétés de clé à vide
TaxInt.BlankKey
'Recherche et consultation de la taxe
TaxInt.PKey_TaNumber = "T.V.Q. 100%"
Error = TaxInt.FindKey(1, True)
If Error = 0 Then
TransactionInt.ILProductCP(4) = TaxInt.Key_TaCardPos
'CardPos du compte du plan comptable pour
'les taxes perçues
TransactionInt.ILCharterCP(4) = TaxInt.TaCollectedTaxesCharterCP
'Calcul du montant à facturer pour la T.V.P.
TransactionInt.ILTotalAmount(4) = GetCalculTaxProv(TaxeFederale)
Else
response.write("Erreur6 : " & Acomba.GetErrorMessage(Error))
End If
'**********************************************************
'Étape 7 : Initialiser les propriétés de la cinquième
' ligne de la facturation
'**********************************************************
'La cinquième ligne de la facturation est une ligne
'de transport
TransactionInt.ILType(5) = 9 'avant cetait IL_Shipping
'Les numéros 991 à 998 sont réservés pour les lignes de
'taxe et de transport
TransactionInt.ILLineNumber(5) = 993
'CardPos du compte dans le plan comptable pour les frais de
'transport selon la définition du compte recevable
TransactionInt.ILCharterCP(5) = ControlCustomerInt.CCARCharterCP(TransactionInt.InReceivableOffset, 13)
TransactionInt.ILTotalAmount(5) = 10.99
'**********************************************************
'Étape 8 : Ajout de la facture
'**********************************************************
'Ajout de la fiche TransactionInt
Error = TransactionInt.AddCard
If Error = 0 Then
response.write("Ajout de la facture complété avec succès.")
Else
response.write("Erreur7 : " & Acomba.GetErrorMessage(Error))
End If
Else
response.write("Erreur8 : Ce client n'existe pas la société.")
End If
Else
response.write("Erreur9 : " & Acomba.GetErrorMessage(Error))
End If
End Sub
'*****************************************************************
'La fonction GetCustomerCardPos suivante permet d'obtenir le
'CardPos de la fiche du client dont le numéro est reçu en
'paramètre.
'*****************************************************************
Function GetCustomerCardPos(Numero)
'Déclaration
Dim CustomerInt
Set CustomerInt = Server.CreateObject("AcoSDK.Customer")
'Initialiser la propriété PKey_CuNumber
CustomerInt.PKey_CuNumber = Numero
'Recherche du client dans l'index 1 pour obtenir son CardPos
Error = CustomerInt.FindKey(1, False)
If Error = 0 Then
GetCustomerCardPos = CustomerInt.Key_CuCardPos
Else
GetCustomerCardPos = 0
End If
End Function
'*****************************************************************
'La procédure GetCustomerInfo suivante permet d'initialiser les
'propriétés de l'en-tête de la facturation qui concerne le client
'associé à la facturation et dont le CardPos est reçu en
'paramètre.
'*****************************************************************
Sub GetCustomerInfo(CardPos)
'Déclaration
Dim CustomerInt
Set CustomerInt = Server.CreateObject("AcoSDK.Customer")
'Consultation de la fiche du client
Error = CustomerInt.GetCard(CardPos)
If Error = 0 Then
'CardPos du client à facturer
TransactionInt.InInvoicedToCP = CustomerInt.CuInvoicedToCP
'Numéro du compte recevable du client auquel la facturation
'est associé
TransactionInt.InReceivableOffset = CustomerInt.CuReceivable
'Groupe de taxes du client
TransactionInt.InTaxGroupCP = CustomerInt.CuTaxGroupCP
Else
response.write("Erreur10 : " & Acomba.GetErrorMessage(Error))
End If
End Sub
'*****************************************************************
'La fonction GetProductCardPos suivante permet d'obtenir le
'CardPos de la fiche du produit dont le numéro est reçu en
'paramètre.
'*****************************************************************
Function GetProductCardPos(Numero)
'Déclaration
Dim ProductInt
Set ProductInt = Server.CreateObject("AcoSDK.Product")
'Initialisation de la propriété PKey_PrNumber
ProductInt.PKey_PrNumber = Numero
'Recherche du produit dans l'index 1 pour obtenir son CardPos
Error = ProductInt.FindKey(1, False)
If Error = 0 Then
GetProductCardPos = ProductInt.Key_PrCardPos
Else
GetProductCardPos = 0
End If
End Function
'*****************************************************************
'La fonction GetProductGroupCardPos suivante permet d'obtenir le
'CardPos de la fiche du groupe de produit dont le numéro est reçu
'paramètre.
'*****************************************************************
Function GetProductGroupCardPos(Numero)
'Déclaration
Dim ProductGroupInt
Set ProductGroupInt = Server.CreateObject("AcoSDK.ProductGroup")
'Initialisation de la propriété PGNumber
ProductGroupInt.PKey_PGNumber = Numero
'Recherche du groupe de produit dans l'index 1 pour
'obtenir son CardPos
Error = ProductGroupInt.FindKey(1, False)
If Error = 0 Then
GetProductGroupCardPos = ProductGroupInt.Key_PGCardPos
Else
GetProductGroupCardPos = 0
End If
End Function
'*****************************************************************
'La fonction GetInvoiceTaxable suivante permet d'obtenir le
'montant taxable total de la facture.
'*****************************************************************
Function GetInvoiceTaxable()
Dim Total
Dim i
Dim TransactionData
Set TransactionData = Server.CreateObject("AcoSDK.Transaction")
GetInvoiceTaxable = 0
'Pour toutes les lignes de la facture
For i = 1 To TransactionData.TANumLines
'Si c'est une ligne de saisie de produits
If TransactionData.ILLineNumber(i) < 991 Then
'Augmenter le montant total taxable
Total = Total + (TransactionData.ILSellingPrice(i) * TransactionData.ILInvoicedQty(i))
End If
Next
GetInvoiceTaxable = Total
End Function
'*****************************************************************
'La fonction GetCalculTaxFed suivante permet d'obtenir le montant
'total de taxe fédérale à appliquer. Pour effectuer le calcul, le
'pourcentage de la TPS en vigueur le 1er juin 2002 est appliqué
'au sous-total de la facturation. Cette fonction ne tient pas
'compte des exceptions de taxe associées aux produits facturés,
'des exemptions de taxe du client auquel la facturation est
'associée et ne calcule pas le montant de taxe associé à chaque
'ligne de facturation.
'*****************************************************************
Function GetCalculTaxFed()
Dim Taxable
'Obtenir le montant taxable de la facture
Taxable = GetInvoiceTaxable
GetCalculTaxFed = Taxable * 0.07
End Function
'*****************************************************************
'La fonction GetCalculTaxProv suivante permet d'obtenir le montant
'total de taxe provinciale à appliquer. Pour effectuer le calcul,
'le poucentage de la TVQ en vigueur le 1er juin 2002 est appliqué
'au sous-total de la facturation incluant la TPS. Cette
'fonction ne tient pas compte des exceptions de taxe associées
'aux produits facturés, des exemptions de taxe du client auquel
'la facturation est associée et ne calcule pas le montant de taxe
'associé à chaque ligne de facturation.
'*****************************************************************
Function GetCalculTaxProv(TaxeFed)
Dim Taxable
'Obtenir le montant taxable de la facture
Taxable = GetInvoiceTaxable
GetCalculTaxProv = (Taxable + TaxeFed) * 0.075
End Function
%>
</head>
<body>
<p><% call ConnectionUser() %></p>
<p><% call AddNewInvoicing() %></p>
</body>
</html>
- bonneaupierrelouis
- Nombre de messages : 27
Age : 34
Ville : Trois-Rivières
Date d'inscription : 20/08/2013
Fiche d'Entreprise
Nom de l'entreprise:
Re: Acomba ne prend pas les décimales lors création de facture
Jeu 12 Sep 2013 - 16:21
Trouvé... merci !PlanteG a écrit:Utilisez-vous par hasard la version démo d'Acomba, téléchargée du site Accès Développeur ?
Si oui, cette version élimine les cents. Elle est faire pour les développeurs, par pour un usage standard.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum