RNJarvis
8/31/2016 - 7:23 PM

Duplicate Invoices via WebService

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