Duplicate Invoices via WebService
Private Sub QA_InvoiceDuplicationWS(ByVal pXDoc As CASCADELib.CscXDocument, sLocalisation As String, dInvoiceDate As Date, sKTMDocumentID As String, sInvoiceNumber As String, sDocumentType As String, sSupplierID As String, vTotalAmount As Variant)
On Error GoTo ErrorHandler
OutputDebugString "KfxKTM_QA_InvoiceDuplicationWS: Fired"
Dim bDocIdDuplicate As Boolean
Dim bInvoiceDuplicate As Boolean
Dim bPayloadDuplicate As Boolean
Dim Tools As New IMInvoiceDuplication.Tools
Tools.Url = Project.ScriptVariables.ItemByName("QA_RejectionControl_InvoiceDuplication_URL").Value
Dim invoice As New IMInvoiceDuplication.ComInvoice
Dim invoice2 As New IMInvoiceDuplication.ComInvoice
Dim payload As New IMInvoiceDuplication.ComInvoicePayload
' The web service and associated SQLDB stores dates as strings
Dim sDate As String
sDate = DatePart("d", dInvoiceDate) & "/" & DatePart("m", dInvoiceDate) & "/" & DatePart("yyyy", dInvoiceDate)
payload.InvoiceDate = sDate
payload.InvoiceNumber = sInvoiceNumber
payload.InvoiceType = sDocumentType
payload.SupplierId = sSupplierID
payload.TotalAmount = vTotalAmount
invoice.DocumentId = sKTMDocumentID
Set invoice.Payload = payload
bDocIdDuplicate = Tools.IsInvoiceDocumentIdDuplicate(invoice.DocumentId)
Debug.Print "IsInvoiceDocumentIdDuplicate: " & bDocIdDuplicate
If bDocIdDuplicate Then
bInvoiceDuplicate = Tools.IsInvoiceDuplicate(invoice)
Debug.Print "IsInvoiceDuplicate: " & bInvoiceDuplicate
If Not bInvoiceDuplicate Then
' Set the second invoice object (invoice2) WITHOUT setting a payload, this will trigger delete by DocID only
Set invoice2 = New IMInvoiceDuplication.ComInvoice
invoice2.DocumentId = sKTMDocumentID
Tools.DeleteInvoice invoice2
Debug.Print "Executed DeleteInvoice()."
Tools.AddNewInvoice invoice
Debug.Print "Executed AddNewInvoice()."
End If
Else
bPayloadDuplicate = Tools.IsInvoicePayloadDuplicate(invoice.Payload)
Debug.Print "IsInvoicePayloadDuplicate: " & bPayloadDuplicate
If Not bPayloadDuplicate Then
Tools.AddNewInvoice invoice
Debug.Print "Executed AddNewInvoice()."
Else
' There are results / a duplicate invoice has already been processed
asREJECTIONS(UBound(asREJECTIONS)) = Project.ScriptVariables.ItemByName("QA_RejectionCode05").Value
ReDim Preserve asREJECTIONS(0 To UBound(asREJECTIONS) + 1) As String
End If
End If
Exit Sub
ErrorHandler:
General_Error_Handler("QA_InvoiceDuplicationWS", LOG_ERROR, DISPLAY_TO_USER)
End Sub