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
-50%
Le deal à ne pas rater :
-50% Baskets Nike Air Huarache Runner
69.99 € 139.99 €
Voir le deal

Aller en bas
avatar
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 Empty 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.

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>
avatar
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 Empty Re: Acomba ne prend pas les décimales lors création de facture

Jeu 12 Sep 2013 - 16:21
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.
Trouvé... merci !
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum