- MuffinWhaleMan
- Nombre de messages : 1
Date d'inscription : 05/08/2014
InvoicingLine Lignes manquantes
Mar 5 Sep 2017 - 12:57
je dois importer les factures dans une base de données (2 tables , entêtes et Détails )
La fonction suivante Construit une liste de tout les entêtes de facture à partir de la date FromDate
Et pour chacune d'elles, appel la fonction GetInvLines qui retourne la liste des lignes de détail de la facture.
Pour une raison que je ne m'explique pas, la méthode IInvL.FindKey(noIndex, True) dans la fonction GetInvLines, me retourne le code d'erreur 10 pour certaines factures.
Public Function GetInvHeaders(Succ As Integer, FromDate As Date) As IEnumerable(Of InvoiceHeader)
Dim list As New List(Of InvoiceHeader)
Dim IInv As New Invoicing
Dim Err As Integer
Const noIndex As Integer = 2
IInv.BlankKey()
IInv.Key_InInvoiceType = InvoicingType.ITp_Invoice
IInv.Key_InDate = FromDate
Err = IInv.FirstKey(noIndex, True)
If Err = 0 Then
Do
If IInv.InDate >= FromDate Then
If IInv.InInvoiceType = InvoicingType.ITp_Invoice Then
Dim ih As New InvoiceHeader(Succ, IInv.InDate, IInv.InInvoiceNumber, IInv.InSalesRepNumber)
ih.Lines = GetInvLines(IInv.Key_InCardPos, IInv.InUnique, IInv.InInvoiceNumber)
list.Add(ih)
Else
If list.Count > 0 Then
Exit Do
End If
End If
End If
Err = IInv.NextKey(noIndex, True)
Loop While Err = 0
End If
Return list.AsEnumerable
End Function
Cette fonction construit une liste des lignes de détails pour une facture donnée. Elle utilise l'index #6 de l'interface InvoicingLine
Public Function GetInvLines(InvCardPos As Integer, InvUnique As Integer, Optional InvNumber As Object = Nothing) As IEnumerable(Of InvoiceLine)
Dim list As New List(Of InvoiceLine)
Dim IInvL As New InvoicingLine
Dim Err As Integer
Const noIndex As Integer = 6
IInvL.BlankKey()
IInvL.Key_ILInvoicingCP = InvCardPos
IInvL.Key_ILInvoicingUnique = InvUnique
Dim lnumber As Integer = 1
IInvL.Key_ILLineNumber = lnumber
Err = IInvL.FindKey(noIndex, True)
Do
Try
If Err = 0 Then
If IInvL.ILInvoicingCP <> InvCardPos Then
Exit Do
End If
With IInvL
Dim IL As New InvoiceLine(.ILLineNumber,
.ILDescription,
.ILProductGroupNumber,
.ILProductNumber,
.ILInvoicedQty,
.ILCost,
.ILSellingPrice)
list.Add(IL)
End With
Err = IInvL.NextKey(noIndex, True)
End If
Catch ex As Exception
LogError(ex, "Acomba.GetInvLines(InvCardPos As Integer, InvUnique As Integer)")
End Try
Loop While Err = 0
Return list.AsEnumerable
End Function
La fonction suivante Construit une liste de tout les entêtes de facture à partir de la date FromDate
Et pour chacune d'elles, appel la fonction GetInvLines qui retourne la liste des lignes de détail de la facture.
Pour une raison que je ne m'explique pas, la méthode IInvL.FindKey(noIndex, True) dans la fonction GetInvLines, me retourne le code d'erreur 10 pour certaines factures.
Public Function GetInvHeaders(Succ As Integer, FromDate As Date) As IEnumerable(Of InvoiceHeader)
Dim list As New List(Of InvoiceHeader)
Dim IInv As New Invoicing
Dim Err As Integer
Const noIndex As Integer = 2
IInv.BlankKey()
IInv.Key_InInvoiceType = InvoicingType.ITp_Invoice
IInv.Key_InDate = FromDate
Err = IInv.FirstKey(noIndex, True)
If Err = 0 Then
Do
If IInv.InDate >= FromDate Then
If IInv.InInvoiceType = InvoicingType.ITp_Invoice Then
Dim ih As New InvoiceHeader(Succ, IInv.InDate, IInv.InInvoiceNumber, IInv.InSalesRepNumber)
ih.Lines = GetInvLines(IInv.Key_InCardPos, IInv.InUnique, IInv.InInvoiceNumber)
list.Add(ih)
Else
If list.Count > 0 Then
Exit Do
End If
End If
End If
Err = IInv.NextKey(noIndex, True)
Loop While Err = 0
End If
Return list.AsEnumerable
End Function
Cette fonction construit une liste des lignes de détails pour une facture donnée. Elle utilise l'index #6 de l'interface InvoicingLine
Public Function GetInvLines(InvCardPos As Integer, InvUnique As Integer, Optional InvNumber As Object = Nothing) As IEnumerable(Of InvoiceLine)
Dim list As New List(Of InvoiceLine)
Dim IInvL As New InvoicingLine
Dim Err As Integer
Const noIndex As Integer = 6
IInvL.BlankKey()
IInvL.Key_ILInvoicingCP = InvCardPos
IInvL.Key_ILInvoicingUnique = InvUnique
Dim lnumber As Integer = 1
IInvL.Key_ILLineNumber = lnumber
Err = IInvL.FindKey(noIndex, True)
Do
Try
If Err = 0 Then
If IInvL.ILInvoicingCP <> InvCardPos Then
Exit Do
End If
With IInvL
Dim IL As New InvoiceLine(.ILLineNumber,
.ILDescription,
.ILProductGroupNumber,
.ILProductNumber,
.ILInvoicedQty,
.ILCost,
.ILSellingPrice)
list.Add(IL)
End With
Err = IInvL.NextKey(noIndex, True)
End If
Catch ex As Exception
LogError(ex, "Acomba.GetInvLines(InvCardPos As Integer, InvUnique As Integer)")
End Try
Loop While Err = 0
Return list.AsEnumerable
End Function
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum