OM Créer une pièce comptable

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

OM Créer une pièce comptable

de romulus001 » Ven 31 Mar 2017 17:29

Bonjour,

Avec la version 6.0 des objets métiers, j'aimerais pouvoir créer une pièce comptable dans la base bijou, n'ayant pas un bon niveau en matière de comptabilité, je rencontre des soucis pour y arriver.

Depuis l'ERP Comptabilité, j'ai saisi la pièce comptable dont vous voyez en pièce jointe.

Sur la ligne du compte fournisseur, j'ai saisi le jour, le numéro de pièce, le numéro de facture, la référence, le compte tiers, le libellé de l'écriture, la date d'échéance et le montant.

Su la ligne du compte 601020, j'ai saisi le montant et en validant la ligne, la ligne du compte 4456620 a été crée, de plus, j'ai saisi l'écriture analytique sur le compte 921SI1 avec le montant.

De manière analogue, j'ai mis ce code (en vb.net) :

Code: Tout sélectionner
Dim OM_BaseCpta As New BSCPTAApplication3

OM_BaseCpta.Name = "C:\Users\Public\Documents\Sage\iSage Entreprise\Bijou.mae"
OM_BaseCpta.Loggable.UserName = "<Administrateur>"
OM_BaseCpta.Loggable.UserPwd = String.Empty
OM_BaseCpta.Open()

Dim OM_PieceComptable As IPMEncoder = CreePieceComptable(OM_BaseCpta, "ACH", New Date(2015, 12, 1), String.Empty, "FA1050", "Ref", "Facture électricité")
Dim OM_EcritureGeneraleTiers As IBOEcriture3 = OM_PieceComptable.FactoryEcritureIn.Create

With OM_EcritureGeneraleTiers
   .Tiers = OM_BaseCpta.FactoryFournisseur.ReadNumero("EDF")
   .EC_Echeance = New Date(2015, 12, 1)
   .EC_Montant = 96
   .EC_Reference = OM_PieceComptable.EC_Reference
   .EC_Piece = OM_PieceComptable.EC_Piece
   .EC_Intitule = OM_PieceComptable.EC_Intitule
   .EC_Sens = EcritureSensType.EcritureSensTypeCredit
   .Journal = OM_PieceComptable.Journal
   .WriteDefault()
End With

Dim OM_EcritureCA As IBOEcriture3 = OM_PieceComptable.FactoryEcritureIn.Create
With OM_EcritureCA
   .Tiers = Nothing
   .EC_Reference = OM_PieceComptable.EC_Reference
   .EC_Piece = OM_PieceComptable.EC_Piece
   .EC_Intitule = OM_PieceComptable.EC_Intitule
   .EC_Montant = 80
   .EC_Sens = EcritureSensType.EcritureSensTypeDebit
   .Journal = OM_PieceComptable.Journal
   .CompteG = OM_BaseCpta.FactoryCompteG.ReadNumero("601020")
   .WriteDefault()
End With
AjouteLigneEcritureAnalytique(OM_EcritureCA, "Activité", "921SI1", 80, 0)

ValidePieceComptable(OM_PieceComptable)


Avec ces fonctions :
Code: Tout sélectionner
Function CreePieceComptable(ByRef OM_BaseCpta As BSCPTAApplication3, _
                                ByVal codeJournal As String, _
                                ByVal dateEcriture As Date, _
                                Optional ByVal numPiece As String = "", _
                                Optional ByVal numFacture As String = "", _
                                Optional ByVal refPiece As String = "", _
                                Optional ByVal intitule As String = "") As IPMEncoder

        Try

            Dim OM_PieceComptable As IPMEncoder = OM_BaseCpta.CreateProcess_Encoder

            OM_PieceComptable.bAnalytiqueAuto = False
            OM_PieceComptable.Date = dateEcriture
            OM_PieceComptable.Journal = OM_BaseCpta.FactoryJournal.ReadNumero(codeJournal)

            If numPiece = String.Empty Then
                OM_PieceComptable.EC_Piece = OM_PieceComptable.Journal.NextEC_Piece(dateEcriture)
            Else
                OM_PieceComptable.EC_Piece = numPiece
            End If

            OM_PieceComptable.EC_Reference = numFacture
            OM_PieceComptable.EC_RefPiece = refPiece
            OM_PieceComptable.EC_Intitule = intitule

            Return OM_PieceComptable

        Catch ex As Exception
            Throw New Exception("Erreur en création d'une pièce comptable sur le journal " & codeJournal & " à la date du " & dateEcriture.ToString("dd/MM/yy") & " : " & ex.Message)
        End Try

    End Function


Code: Tout sélectionner
Sub AjouteLigneEcritureAnalytique(ByRef OM_EcritureGenerale As IBOEcriture3, _
                                      ByVal intitPlanAnalytique As String, _
                                      ByVal sectionAna As String, _
                                      ByVal montant As Double, _
                                      ByVal qte As Double)

        Try

            Dim OM_EcritureAnalytique As IBOEcritureA3 = OM_EcritureGenerale.FactoryEcritureA.Create
            Dim OM_BaseCpta As BSCPTAApplication3 = OM_EcritureAnalytique.Stream

            Dim OM_PlanAnalytique As IBPAnalytique3 = OM_BaseCpta.FactoryAnalytique.ReadIntitule(intitPlanAnalytique)
            OM_EcritureAnalytique.CompteA = OM_BaseCpta.FactoryCompteA.ReadNumero(OM_PlanAnalytique, sectionAna)
            OM_EcritureAnalytique.EA_Montant = montant
            OM_EcritureAnalytique.EA_Quantite = qte
            OM_EcritureAnalytique.Write()

        Catch ex As Exception
            Throw New Exception("Erreur en ajout d'une écriture analytique à la ligne d'écriture N°" & OM_EcritureGenerale.EC_No.ToString() & " : " & ex.Message)
        End Try

    End Sub


Code: Tout sélectionner
Sub ValidePieceComptable(ByRef pieceComptable As IPMEncoder)

        Try
            If pieceComptable.CanProcess Then
                pieceComptable.Process()

            Else
                Throw New Exception("Validation de la pièce comptable impossible : ")

            End If

        Catch ex As Exception

            Dim erreurs As New StringBuilder(ex.Message)

            For Each erreur As IFailInfo In pieceComptable.Errors
                erreurs.AppendLine(erreur.Text)
            Next

            Throw New Exception(erreurs.ToString)

        End Try

    End Sub


J'ai une erreur en voulant valider mon processus, disant que le compte général est obligatoire.
Je me suis inspiré de l'exemple CreationPieceComptable fournit lors de la formation mais impossible de le faire tourner correctement, les comptes généraux renseignés sont inexistants.

Auriez-vous une idée de comment faire?
Merci
Dernière édition par romulus001 le Jeu 11 Mai 2017 09:56, édité 1 fois.
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48

Re: OM Créer une pièce comptable

de Colive » Mar 9 Mai 2017 19:12

Bonjour,

je commencerais par contrôler dans la base les compte généraux "existants". En effet, ils doivent exister pour être utilisés :

Code: Tout sélectionner
.CompteG = OM_BaseCpta.FactoryCompteG.ReadNumero("601020")


Explication: ReadNumero va renvoyer l'objet du compte général ayant le numéro cité "601020".

Hors, l'erreur qui semble remonter c'est qu'il ne trouve pas le compte.

Cordialement.
Oliver.

Dev VB.NET
Si tout était simple, rien ne serait compliqué.
Avatar de l’utilisateur
Posteur néophyte
Posteur néophyte
 
Messages: 5
Inscription: Dim 5 Oct 2014 15:04
Localisation: France

Re: OM Créer une pièce comptable

de romulus001 » Jeu 11 Mai 2017 09:55

Bonjour,

J'ai fait mes tests directement sur la base de production, j'ai pu créer la pièce comptable sans soucis, je pense que j'ai été plus inspiré de travailler en production plutôt que sur la base bijou :p
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité