Imports Microsoft.VisualBasic
x = CalculatePaymentDue("PaidinAdvance","20 January 2017")
Function CalculatePaymentDue(byVal v_PaymentDue as String, _
byVal v_InvoiceDate as Date) as String
Dim strPaymentDue as String =""
Dim strPaymentDueTemp as String
Dim intWorkDays as integer
Dim intActualDays as integer
Dim intNumDaysToCount as integer
If Len(v_PaymentDue) < 3 Then
If v_PaymentDue = "20" Then
strPaymentDue = "Payment is due by " & Format(DateAdd("y", 20, v_InvoiceDate), "dd MMMM yyyy")
ElseIf v_PaymentDue = "14" Then
strPaymentDue = "Payment is due by " & Format(DateAdd("y", 14, v_InvoiceDate), "dd MMMM yyyy")
ElseIf v_PaymentDue = "30" Then
strPaymentDue = "Payment is due by " & Format(DateAdd("y", 30, v_InvoiceDate), "dd MMMM yyyy")
ElseIf v_PaymentDue = "21" Then
strPaymentDue = "Payment is due by " & Format(DateAdd("y", 21, v_InvoiceDate), "dd MMMM yyyy")
ElseIf v_PaymentDue = "7" Then
strPaymentDue = "Payment is due by " & Format(DateAdd("y", 7, v_InvoiceDate), "dd MMMM yyyy")
ElseIf v_PaymentDue = "NONE" Then
strPaymentDue="Payment Now Due"
ElseIf v_PaymentDue = "PayonReceipt" Then
strPaymentDue="Payment due on receipt of services"
ElseIf v_PaymentDue = "PaidinAdvance" Then
strPaymentDue="Paid in advance"
ElseIf (Len(v_PaymentDue) > 2) Then
If Len(v_PaymentDue) = 3 Then
intNumDaysToCount = Left(v_PaymentDue, 1) + 0
ElseIf Len(v_PaymentDue) = 4 Then
intNumDaysToCount = Left(v_PaymentDue, 2) + 0
If Right(v_PaymentDue, 2) = "wd" Then
strPaymentDueTemp = v_InvoiceDate
Do While intWorkDays < intNumDaysToCount
strPaymentDueTemp = DateAdd("y", 1, strPaymentDueTemp)
intDay = Weekday(strPaymentDueTemp)
If ((intDay > 1) And (intDay < 7)) Then
intWorkDays = intWorkDays + 1
intActualDays = intActualDays + 1
strPaymentDue = "Payment is due by " & CStr(Format(DateAdd("y", intActualDays, v_InvoiceDate), "dd MMMM yyyy"))
ElseIf ((Right(v_PaymentDue, 2) = "th") Or (Right(v_PaymentDue, 2) = "st") Or (Right(v_PaymentDue, 2) = "nd") Or (Right(v_PaymentDue, 2) = "rd")) Then
strPaymentDueTemp = DateAdd("M", 1, v_InvoiceDate)
strPaymentDue = "Payment is due by " & CStr(intNumDaysToCount) & " " & Format(DateAdd("M", 1, v_InvoiceDate), "MMMM") & " " & Format(DateAdd("M", 1, v_InvoiceDate), "yyyy")