Files
natalie0312/task1/_03_submit/ThisWorkbook.cls
louiscklaw ec32653f3a update,
2025-02-01 02:04:23 +08:00

1151 lines
30 KiB
OpenEdge ABL

' change log:
' 2023-09-24, update error handling
' 2023-09-23, update for "################" when zoom out
Option Explicit
Dim first_row As Integer
Dim current_row As Integer
Dim last_check_row As Integer
' Dim amount_in_func As String
Dim starting_cell As String
Dim grand_total_curr As Currency
Dim grand_total_str As String
Dim amount_in_func_curr As Currency
Dim amount_in_func_str As String
Dim pcco_str As String
Dim ISIN_CODE_ESTD_COL As String
Dim BOOK_COL As String
Dim BUY_COL As String
Dim SELL_COL As String
Dim GRANDTOTAL_COL As String
Dim PCCO_COL As String
Dim AMOUNT_IN_FUNC_COL As String
Dim BMF_ID_COL As String
Dim ACCOUNT_COL As String
Dim DEBIT_COL As String
Dim CREDIT_COL As String
Dim REMARKS_COL As String
Dim ADJUSTMENT_WORKSHEET As String
Dim ADJUSTMENT_TEST_WORKSHEET As String
Dim AC_1020 As String
Dim AC_8600 As String
Dim AC_8601 As String
Dim AC_8700 As String
Dim AC_8701 As String
Dim AC_1311 As String
Dim AC_1375 As String
Dim AC_2020 As String
Dim current_row_value_valid As Boolean
Dim check_next_row_ready As Boolean
Dim check_row_format_valid as Boolean
Sub init()
On Error GoTo eh
first_row = 7
current_row = first_row
last_check_row = getLastCheckRow(current_row)
' amount_in_func = "J"
ISIN_CODE_ESTD_COL = "C"
BOOK_COL = "D"
BUY_COL = "E"
SELL_COL = "F"
GRANDTOTAL_COL = "G"
PCCO_COL = "I"
AMOUNT_IN_FUNC_COL = "J"
BMF_ID_COL = "K"
ACCOUNT_COL = "M"
DEBIT_COL = "N"
CREDIT_COL = "O"
REMARKS_COL = "Q"
starting_cell = GRANDTOTAL_COL & first_row
AC_1020 = "AC_1020"
AC_8600 = "AC_8600"
AC_8601 = "AC_8601"
AC_8700 = "AC_8700"
AC_8701 = "AC_8701"
AC_1311 = "AC_1311"
AC_1375 = "AC_1375"
AC_2020 = "AC_2020"
'ADJUSTMENT_WORKSHEET = "Adjustment_TEST"
ADJUSTMENT_WORKSHEET = "Adjustment"
Done:
Exit Sub
eh:
Debug.print "init:Error: " & Err.Description
End Sub
Function writeRemarks(current_row As Integer, remarks As String)
On Error GoTo eh
Worksheets(ADJUSTMENT_WORKSHEET).Range(REMARKS_COL & CStr(current_row)).Value = remarks
Done:
Exit Function
eh:
Debug.print "writeRemarks:Error: " & Err.Description
End Function
Function appendRemarks(current_row As Integer, remarks As String)
On Error GoTo eh
Dim original_string as String
original_string = Worksheets(ADJUSTMENT_WORKSHEET).Range(REMARKS_COL & CStr(current_row)).Value
Worksheets(ADJUSTMENT_WORKSHEET).Range(REMARKS_COL & CStr(current_row)).Value = remarks & "," & original_string
Done:
Exit Function
eh:
Debug.print "appendRemarks:Error: " & Err.Description
End Function
Function writeCredit(current_row As Integer, credit As Variant)
On Error GoTo eh
Worksheets(ADJUSTMENT_WORKSHEET).Range(CREDIT_COL & CStr(current_row)).Value = Abs(credit)
Worksheets(ADJUSTMENT_WORKSHEET).Range(CREDIT_COL & CStr(current_row)).NumberFormat = "#,##0.00"
Done:
Exit Function
eh:
Debug.print "writeCredit:Error: " & Err.Description
End Function
Function writeDebit(current_row As Integer, debit As Variant)
On Error GoTo eh
Worksheets(ADJUSTMENT_WORKSHEET).Range(DEBIT_COL & CStr(current_row)).Value = Abs(debit)
Worksheets(ADJUSTMENT_WORKSHEET).Range(DEBIT_COL & CStr(current_row)).NumberFormat = "#,##0.00"
Done:
Exit Function
eh:
Debug.print "writeDebit:Error: " & Err.Description
End Function
Function writeAccount(current_row As Integer, account As String)
On Error GoTo eh
Worksheets(ADJUSTMENT_WORKSHEET).Range(ACCOUNT_COL & CStr(current_row)).Value = account
Done:
Exit Function
eh:
Debug.print "writeAccount:Error: " & Err.Description
End Function
Function getPCCO(current_row As Integer)
On Error GoTo eh
Dim output As String
output = Worksheets(ADJUSTMENT_WORKSHEET).Range(PCCO_COL & CStr(current_row)).Value
Done:
getPCCO = output
Exit Function
eh:
Debug.print "getPCCO:Error: " & Err.Description
End Function
Function getGrandTotal(current_row As Integer)
On Error GoTo eh
Dim output As String
output = Worksheets(ADJUSTMENT_WORKSHEET).Range(GRANDTOTAL_COL & CStr(current_row)).Text
If (InStr(output, "###") >= 0) Then
output = Worksheets(ADJUSTMENT_WORKSHEET).Range(GRANDTOTAL_COL & CStr(current_row)).Value
End If
Done:
getGrandTotal = output
Exit Function
eh:
Debug.print "getGrandTotal:Error: " & Err.Description & ":" & CStr(current_row)
End Function
Function getAccount(current_row As Integer)
On Error GoTo eh
Dim output As String
output = Worksheets(ADJUSTMENT_WORKSHEET).Range(ACCOUNT_COL & CStr(current_row)).Text
If (InStr(output, "###") >= 0) Then
output = Worksheets(ADJUSTMENT_WORKSHEET).Range(ACCOUNT_COL & CStr(current_row)).Value
End If
Done:
getAccount = output
Exit Function
eh:
Debug.print "getAccount:Error: " & Err.Description & ":" & CStr(current_row)
appendRemarks current_row, "account format error, skipping"
End Function
Function getAmountInFunc(current_row As Integer)
On Error GoTo eh
Dim output As String
output = Worksheets(ADJUSTMENT_WORKSHEET).Range(AMOUNT_IN_FUNC_COL & CStr(current_row)).Text
If (InStr(output, "###") >= 0) Then
output = Worksheets(ADJUSTMENT_WORKSHEET).Range(AMOUNT_IN_FUNC_COL & CStr(current_row)).Value
End If
Done:
getAmountInFunc = output
Exit Function
eh:
'MsgBox "getAmountInFunc:Error: " & Err.Description & ":" & CStr(current_row)
appendRemarks current_row, "amount in func format error, skipping"
Err.Raise "Error in amount_in_func_format"
End Function
Function checkOutputCellReady(current_row As Integer)
On Error GoTo eh
Dim output As Boolean
output = True
Dim account_cell As Variant
account_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(ACCOUNT_COL & CStr(current_row))
If (IsEmpty(account_cell) = False) Then
output = False
End If
Done:
checkOutputCellReady = output
Exit Function
eh:
Debug.print "checkOutputCellReady:Error: " & Err.Description
End Function
Function checkCellFormat(test_cell As Variant)
On Error GoTo eh
Dim Msg As String
Msg = "no match"
Select Case IsEmpty(test_cell)
Case True
Msg = "General."
Case Else
Select Case IsNumeric(test_cell)
Case True
Msg = "Number."
Case Else
Select Case IsDate(test_cell)
Case True
Msg = "Date."
Case Else
Msg = "Text."
End Select
End Select
End Select
' debug.print "checkCellFormat:" & test_cell.Address & ":" & Msg
Done:
checkCellFormat = Msg
Exit Function
eh:
Debug.print "checkCellFormat:Error: " & Err.Description
End Function
Function checkCurrentRowFormatValid(current_row As Integer)
On Error GoTo eh
Dim test_cell As Variant
Dim output As Boolean
output = True
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(ISIN_CODE_ESTD_COL & CStr(current_row))
If "Text." = checkCellFormat(test_cell) Then
Debug.Print "ISIN_CODE_ESTD_COL:check ok"
Else
Debug.Print "ISIN_CODE_ESTD_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(BOOK_COL & CStr(current_row))
If "Text." = checkCellFormat(test_cell) Then
Debug.Print "BOOK_COL:check ok"
Else
Debug.Print "BOOK_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(BUY_COL & CStr(current_row))
If "Number." = checkCellFormat(test_cell) Then
Debug.Print "BUY_COL:check ok"
Else
Debug.Print "BUY_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(GRANDTOTAL_COL & CStr(current_row))
If "Number." = checkCellFormat(test_cell) Then
Debug.Print "GRANDTOTAL_COL:check ok"
Else
Debug.Print "GRANDTOTAL_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(PCCO_COL & CStr(current_row))
If "Text." = checkCellFormat(test_cell) Then
Debug.Print "PCCO_COL:check ok"
Else
Debug.Print "PCCO_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(AMOUNT_IN_FUNC_COL & CStr(current_row))
If "Number." = checkCellFormat(test_cell) Then
Debug.Print "AMOUNT_IN_FUNC_COL:check ok"
Else
Debug.Print "AMOUNT_IN_FUNC_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(BMF_ID_COL & CStr(current_row))
If "Number." = checkCellFormat(test_cell) Then
Debug.Print "BMF_ID_COL:check ok"
Else
Debug.Print "BMF_ID_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(ACCOUNT_COL & CStr(current_row))
If "General." = checkCellFormat(test_cell) Then
Debug.Print "ACCOUNT_COL:check ok"
Else
Debug.Print "ACCOUNT_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(DEBIT_COL & CStr(current_row))
If "General." = checkCellFormat(test_cell) Then
Debug.Print "DEBIT_COL:check ok"
Else
Debug.Print "DEBIT_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(CREDIT_COL & CStr(current_row))
If "General." = checkCellFormat(test_cell) Then
Debug.Print "CREDIT_COL:check ok"
Else
Debug.Print "CREDIT_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(REMARKS_COL & CStr(current_row))
If "General." = checkCellFormat(test_cell) Then
Debug.Print "REMARKS_COL:check ok"
Else
Debug.Print "REMARKS_COL:check failed"
Debug.Print checkCellFormat(test_cell)
output = False
End If
Done:
checkCurrentRowFormatValid = output
Exit Function
eh:
Debug.print "checkCurrentRowFormatValid:Error: " & Err.Description
End Function
Function checkCurrentRowValueValid(current_row As Integer)
On Error GoTo eh
Dim output As Boolean
output = True
If (checkIfGrandTotalRefNotFound(current_row) = True) Then
Debug.Print "grand total ref not found"
appendRemarks current_row, "grand total reference not found, skipping"
output = False
End If
If (checkIfAmountInFuncRefNotFound(current_row) = True) Then
Debug.Print "amount in func ref not found"
appendRemarks current_row, "amount in func reference not found, skipping"
output = False
End If
If (checkIfPCCORefNotFound(current_row) = True) Then
Debug.Print "PCCO ref not found"
appendRemarks current_row, "PCCO reference not found, skipping"
output = False
End If
If output Then
Dim grand_total_str As String
Dim amount_in_func_str As String
Dim pcco_str As String
grand_total_str = getGrandTotal(current_row)
amount_in_func_str = getAmountInFunc(current_row)
pcco_str = getPCCO(current_row)
' Debug.print InStr(pcco_str, "Error") >= 0
' Debug.print InStr(amount_in_func_str, "N/A") >= 0
' Debug.print InStr(grand_total_str, "N/A") >= 0
If (Trim(pcco_str) = "" Or InStr(pcco_str, "N/A") > 0 Or InStr(pcco_str, "Error") > 0) Then
output = False
End If
If (Trim(amount_in_func_str) = "" Or InStr(amount_in_func_str, "N/A") > 0 Or InStr(amount_in_func_str, "Error") > 0) Then
output = False
End If
If (Trim(grand_total_str) = "" Or InStr(grand_total_str, "N/A") > 0 Or InStr(grand_total_str, "Error") > 0) Then
output = False
End If
Else
Debug.Print "skipping as grand total ref not found"
End If
Done:
checkCurrentRowValueValid = output
Exit Function
eh:
'MsgBox "checkCurrentRowValueValid:Error: " & Err.Description
'Stop
appendRemarks current_row, "row value not valid"
checkCurrentRowValueValid = false
End Function
Function checkFullFillCasePCCOCode_P1375000Situation_1(grand_total As Currency, amount_in_func As Currency)
On Error GoTo eh
' ### Special case (if PCCO Code = P1375000):
' ### Situation 1:
' if Grand total + amount in func > 0 (missing example)
Dim output As Boolean
output = (grand_total + amount_in_func > 0)
Done:
checkFullFillCasePCCOCode_P1375000Situation_1 = output
Exit Function
eh:
Debug.print "checkFullFillCasePCCOCode_P1375000Situation_1:Error: " & Err.Description
End Function
Function checkFullFillCasePCCOCode_P1375000Situation_2(grand_total As Currency, amount_in_func As Currency)
On Error GoTo eh
' ### Special case (if PCCO Code = P1375000):
' ### Situation 2:
' if Grand total + amount in func < 0 (row 21)
Dim output As Boolean
output = (grand_total + amount_in_func < 0)
Done:
checkFullFillCasePCCOCode_P1375000Situation_2 = output
Exit Function
eh:
Debug.print "checkFullFillCasePCCOCode_P1375000Situation_2:Error: " & Err.Description
End Function
Function checkFullFillCasePCCOCode_P1375000Situation_3(grand_total As Currency, amount_in_func As Currency)
On Error GoTo eh
' ### Special case (if PCCO Code = P1375000):
' ### Situation 3:
' if Grand total + amount in func = 0
' - do nothing
Dim output As Boolean
output = (grand_total + amount_in_func = 0)
Done:
checkFullFillCasePCCOCode_P1375000Situation_3 = output
Exit Function
eh:
Debug.print "checkFullFillCasePCCOCode_P1375000Situation_3:Error: " & Err.Description
End Function
Function checkFullFillCaseCommonSituation_1(grand_total As Currency, amount_in_func As Currency)
On Error GoTo eh
' ### Situation 1:
' if Grand total + amount in func > 0 (row 8 ?)
Dim output As Boolean
output = (grand_total + amount_in_func > 0)
Done:
checkFullFillCaseCommonSituation_1 = output
Exit Function
eh:
Debug.print "checkFullFillCaseCommonSituation_1:Error: " & Err.Description
End Function
Function checkFullFillCaseCommonSituation_2(grand_total As Currency, amount_in_func As Currency)
On Error GoTo eh
' ### Situation 2:
' if Grand total + amount in func < 0 (row 8 ?)'
Dim output As Boolean
output = (grand_total + amount_in_func < 0)
Done:
checkFullFillCaseCommonSituation_2 = output
Exit Function
eh:
Debug.print "checkFullFillCaseCommonSituation_2:Error: " & Err.Description
End Function
Function checkFullFillCaseCommonSituation_3(grand_total As Currency, amount_in_func As Currency)
On Error GoTo eh
' ### Situation 3:
' if Grand total + amount in func = 0
Dim output As Boolean
output = (grand_total + amount_in_func = 0)
Done:
checkFullFillCaseCommonSituation_3 = output
Exit Function
eh:
Debug.print "checkFullFillCaseCommonSituation_3:Error: " & Err.Description
End Function
Function checkIfReferenceNotFound(cell As Variant)
On Error GoTo eh
Dim test_text As Variant
test_text = cell.Text
Dim output As Boolean
output = (InStr(test_text, "#REF!") > 0)
Done:
checkIfReferenceNotFound = output
Exit Function
eh:
Debug.print "checkIfReferenceNotFound:Error: " & Err.Description
End Function
Function checkIfGrandTotalRefNotFound(current_row As Integer)
On Error GoTo eh
Dim test_cell As Variant
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(GRANDTOTAL_COL & CStr(current_row))
Done:
checkIfGrandTotalRefNotFound = checkIfReferenceNotFound(Worksheets(ADJUSTMENT_WORKSHEET).Range(GRANDTOTAL_COL & CStr(current_row)))
Exit Function
eh:
Debug.print "checkIfGrandTotalRefNotFound:Error: " & Err.Description & ":" & GRANDTOTAL_COL & CStr(current_row)
End Function
Function checkIfPCCORefNotFound(current_row As Integer)
On Error GoTo eh
Dim test_cell As Variant
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(PCCO_COL & CStr(current_row))
Done:
checkIfPCCORefNotFound = checkIfReferenceNotFound(Worksheets(ADJUSTMENT_WORKSHEET).Range(PCCO_COL & CStr(current_row)))
Exit Function
eh:
Debug.print "checkIfPCCORefNotFound:Error: " & Err.Description & ":" & PCCO_COL & CStr(current_row)
End Function
Function checkIfAmountInFuncRefNotFound(current_row As Integer)
On Error GoTo eh
Dim test_cell As Variant
test_cell = Worksheets(ADJUSTMENT_WORKSHEET).Range(AMOUNT_IN_FUNC_COL & CStr(current_row))
Done:
checkIfAmountInFuncRefNotFound = checkIfReferenceNotFound(Worksheets(ADJUSTMENT_WORKSHEET).Range(AMOUNT_IN_FUNC_COL & CStr(current_row)))
Exit Function
eh:
Debug.print "checkIfAmountInFuncRefNotFound:Error: " & Err.Description & ":" & AMOUNT_IN_FUNC_COL & CStr(current_row)
End Function
Function applyCommonSituation_1(current_row As Integer)
On Error GoTo eh
Dim net_var As Variant
Dim grand_total_var As Variant
Dim amount_in_func_var As Variant
grand_total_var = CDec(getGrandTotal(current_row))
amount_in_func_var = CDec(getAmountInFunc(current_row))
net_var = grand_total_var + amount_in_func_var
' current row
' - Account column: A1311, Debit column: Grand Total+amount in func
writeAccount current_row, AC_1311
writeDebit current_row, net_var
' - add row:
' - account:1020,
' - debit column: Grand Total+amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_1020
writeDebit current_row, net_var
' - add row:
' - account:NA8600,
' - debit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8600
writeDebit current_row, net_var
' - add row:
' - account NA8601,
' - credit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8601
writeCredit current_row, net_var
Done:
applyCommonSituation_1 = True
Exit Function
eh:
Debug.print "applyCommonSituation_1:Error: " & Err.Description
End Function
Function applyCommonSituation_2(current_row As Integer)
On Error GoTo eh
Dim net_var As Variant
Dim grand_total_var As Variant
Dim amount_in_func_var As Variant
grand_total_var = CDec(getGrandTotal(current_row))
amount_in_func_var = CDec(getAmountInFunc(current_row))
net_var = grand_total_var + amount_in_func_var
' if Grand total + amount in func < 0 (row 8 ?)
' - Account column: A1311,
' - Credit column: Grand Total+amount in func
writeAccount current_row, AC_1311
writeCredit current_row, net_var
' - add row:
' - account:1020,
' - credit column: Grand Total+amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_1020
writeCredit current_row, net_var
' - add row:
' - account:NA8700,
' - credit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8700
writeCredit current_row, net_var
' - add row:
' - account NA8701,
' - debit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8701
writeDebit current_row, net_var
Done:
applyCommonSituation_2 = True
Exit Function
eh:
Debug.print "applyCommonSituation_2:Error: " & Err.Description
End Function
Function applyCommonSituation_3(current_row As Integer)
On Error GoTo eh
' if Grand total + amount in func = 0
' - do nothing
applyCommonSituation_3 = True
Done:
applyCommonSituation_3 = True
Exit Function
eh:
Debug.print "applyCommonSituation_3:Error: " & Err.Description
End Function
Function applyPcco1375Situation_1(current_row As Integer)
On Error GoTo eh
Dim net_var As Variant
Dim grand_total_var As Variant
Dim amount_in_func_var As Variant
grand_total_var = CDec(getGrandTotal(current_row))
amount_in_func_var = CDec(getAmountInFunc(current_row))
net_var = grand_total_var + amount_in_func_var
' - Account
' - column: P1375,
' - Debit column: Grand Total+amount in func
writeAccount current_row, AC_1375
writeDebit current_row, net_var
' - add row:
' - account:2020,
' - debit column: Grand Total+amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_2020
writeDebit current_row, net_var
' - add row:
' - account:NA8600,
' - debit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8600
writeDebit current_row, net_var
' - add row:
' - account NA8601,
' - credit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8601
writeCredit current_row, net_var
applyPcco1375Situation_1 = True
Done:
applyPcco1375Situation_1 = True
Exit Function
eh:
Debug.print "applyPcco1375Situation_1:Error: " & Err.Description
End Function
Function applyPcco1375Situation_2(current_row As Integer)
On Error GoTo eh
Dim net_var As Variant
Dim grand_total_var As Variant
Dim amount_in_func_var As Variant
grand_total_var = CDec(getGrandTotal(current_row))
amount_in_func_var = CDec(getAmountInFunc(current_row))
net_var = grand_total_var + amount_in_func_var
' - Account
' - column: P1375,
' - Credit column: Grand Total+amount in func
writeAccount current_row, AC_1375
writeCredit current_row, net_var
' - add row:
' - account:2020,
' - credit column: Grand Total+amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_2020
writeCredit current_row, net_var
' - add row:
' - account:8700,
' - credit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8700
writeCredit current_row, net_var
' - add row:
' - account 8701,
' - debit: grand total + amount in func
insertNewRowBelow current_row
current_row = current_row + 1
writeAccount current_row, AC_8701
writeDebit current_row, net_var
applyPcco1375Situation_2 = True
Done:
applyPcco1375Situation_2 = True
Exit Function
eh:
Debug.print "applyPcco1375Situation_2:Error: " & Err.Description
End Function
Function applyPcco1375Situation_3(current_row As Integer)
On Error GoTo eh
' - do nothing
applyPcco1375Situation_3 = True
Done:
applyPcco1375Situation_3 = True
Exit Function
eh:
Debug.print "applyPcco1375Situation_3:Error: " & Err.Description
End Function
Sub test()
' Debug.Assert True = isCurrentRowNeedToProcess("7")
' Debug.Assert False = isCurrentRowNeedToProcess("180")
' debug.assert False = isAllDone ("7")
' debug.assert True = isAllDone ("180")
' debug.assert False = checkFullFillCaseCommonSituation_1(-10,1)
' debug.assert False = checkFullFillCaseCommonSituation_1(1,-10)
' debug.assert False = checkFullFillCaseCommonSituation_1(-10,-10)
' debug.assert False = checkFullFillCaseCommonSituation_1(0,0)
' debug.assert True = checkFullFillCaseCommonSituation_1(0,1)
' debug.assert True = checkFullFillCaseCommonSituation_1(1,0)
' debug.assert True = checkFullFillCaseCommonSituation_1(1,1)
' debug.assert True = checkFullFillCaseCommonSituation_2(-10,1)
' debug.assert True = checkFullFillCaseCommonSituation_2(1,-10)
' debug.assert True = checkFullFillCaseCommonSituation_2(-10,-10)
' debug.assert False = checkFullFillCaseCommonSituation_2(0,0)
' debug.assert False = checkFullFillCaseCommonSituation_2(0,1)
' debug.assert False = checkFullFillCaseCommonSituation_2(1,0)
' debug.assert False = checkFullFillCaseCommonSituation_2(1,1)
' debug.assert True = checkFullFillCaseCommonSituation_3(0,0)
' debug.assert False = checkFullFillCaseCommonSituation_3(1,1)
' debug.assert False = checkFullFillCaseCommonSituation_3(-10,-10)
' debug.assert False = checkFullFillCaseCommonSituation_3(1,0)
' debug.assert False = checkFullFillCaseCommonSituation_3(0,1)
' debug.print Worksheets("Adjustment_TEST").Range("G86")
init
current_row = 29
' amount_in_func_str = getAmountInFunc(current_row)
' pcco_str = getPCCO(current_row)
' debug.print current_row
' debug.print grand_total_str
' debug.print checkIfGrandTotalRefNotFound(current_row)
Debug.Print checkCurrentRowValueValid(current_row)
' current_row_value_valid = False
' current_row_value_valid = checkCurrentRowValueValid(pcco_str, amount_in_func_str, grand_total_str)
' check_next_row_ready = False
' check_next_row_ready = checkOutputCellReady(current_row)
End Sub
Function getLastCheckRow(first_row As Integer)
getLastCheckRow = first_row + 10
End Function
Function insertNewRowBelow(current_row As Integer)
Range("A" & current_row + 1).EntireRow.Insert
End Function
Function isAllDone(input_row As Integer)
On Error GoTo eh
Dim cell_value As Currency
Dim output As Boolean
Dim i As Integer
output = True
last_check_row = getLastCheckRow(input_row)
For i = input_row To last_check_row
If (isCurrentRowNeedToProcess(i) = True) Then
output = False
Exit For
End If
Next i
isAllDone = output
Done:
isAllDone = output
Exit Function
eh:
Debug.print "isAllDone:Error: " & Err.Description
End Function
Function isCurrentRowNeedToProcess(input_row As Integer)
On Error GoTo eh
Dim output As Boolean
Dim cell_value As Currency
Dim input_cell As String
input_cell = GRANDTOTAL_COL & input_row
Done:
isCurrentRowNeedToProcess = Not (IsEmpty(Worksheets(ADJUSTMENT_WORKSHEET).Range(input_cell).Value))
Exit Function
eh:
Debug.print "isCurrentRowNeedToProcess:Error: " & Err.Description
End Function
Sub Main()
On Error GoTo eh
Debug.Print "start a new run"
init
While isAllDone(current_row) = False
' While current_row < 9
Debug.Print "processing row: " & current_row
Debug.Print checkCurrentRowFormatValid(current_row)
current_row_value_valid = False
current_row_value_valid = checkCurrentRowValueValid(current_row)
check_next_row_ready = False
check_next_row_ready = checkOutputCellReady(current_row)
check_row_format_valid = False
check_row_format_valid = checkCurrentRowFormatValid(current_row)
If (current_row_value_valid And check_next_row_ready and check_row_format_valid) Then
' input considered valid after this line
Dim grand_total_str As String
Dim amount_in_func_str As String
Dim pcco_str As String
grand_total_str = getGrandTotal(current_row)
amount_in_func_str = getAmountInFunc(current_row)
pcco_str = getPCCO(current_row)
Debug.Print "before"
Debug.Print grand_total_str
Debug.Print "pass"
grand_total_curr = CCur(grand_total_str)
amount_in_func_curr = CCur(amount_in_func_str)
If (pcco_str = "P1375000") Then
If (checkFullFillCasePCCOCode_P1375000Situation_1(grand_total_curr, amount_in_func_curr) = True) Then
writeRemarks current_row, "P1375000 common sit 1"
applyPcco1375Situation_1 (current_row)
ElseIf (checkFullFillCasePCCOCode_P1375000Situation_2(grand_total_curr, amount_in_func_curr) = True) Then
writeRemarks current_row, "P1375000 common sit 2"
applyPcco1375Situation_2 (current_row)
ElseIf (checkFullFillCasePCCOCode_P1375000Situation_3(grand_total_curr, amount_in_func_curr) = True) Then
writeRemarks current_row, "P1375000 common sit 3"
applyPcco1375Situation_3 (current_row)
Else
Debug.print "missing pcco 1375 situation"
End If
ElseIf (pcco_str = "N/A") Then
Debug.print "pcco value is N/A"
Else
If (checkFullFillCaseCommonSituation_1(grand_total_curr, amount_in_func_curr) = True) Then
writeRemarks current_row, "common sit 1"
applyCommonSituation_1 (current_row)
ElseIf (checkFullFillCaseCommonSituation_2(grand_total_curr, amount_in_func_curr) = True) Then
writeRemarks current_row, "common sit 2"
applyCommonSituation_2 (current_row)
ElseIf (checkFullFillCaseCommonSituation_3(grand_total_curr, amount_in_func_curr) = True) Then
writeRemarks current_row, "common sit 3"
applyCommonSituation_3 (current_row)
Else
Debug.print "missing situation"
End If
End If
Else
if getAccount(current_row) = AC_1020 then
appendRemarks current_row, "output row"
elseif getAccount(current_row) = AC_8600 then
appendRemarks current_row, "output row"
elseif getAccount(current_row) = AC_8601 then
appendRemarks current_row, "output row"
elseif getAccount(current_row) = AC_8700 then
appendRemarks current_row, "output row"
elseif getAccount(current_row) = AC_8701 then
appendRemarks current_row, "output row"
elseif getAccount(current_row) = AC_1311 then
appendRemarks current_row, "output row"
elseif getAccount(current_row) = AC_1375 then
appendRemarks current_row, "output row"
elseif getAccount(current_row) = AC_2020 then
appendRemarks current_row, "output row"
else
Debug.Print "input is not valid, skipping row"
appendRemarks current_row, "input is not valid, skipping row"
If (checkOutputCellReady(current_row)) Then
If (checkCurrentRowValueValid(current_row)) Then
Else
' appendRemarks current_row, "input is not valid"
End If
End If
end if
End If
current_row = current_row + 1
Wend
Done:
Debug.Print "done"
Exit Sub
eh:
writeRemarks current_row,"error found"
'MsgBox "Main:Error: " & Err.Description
'Stop
End Sub
Sub helloworld()
' debug.print isCurrentRowNeedToProcess ("7")
' debug.print isCurrentRowNeedToProcess ("180")
' debug.print isAllDone ("7")
' debug.print isAllDone ("180")
End Sub
Sub ResetExcelTest()
Worksheets("Sheet1").Activate
Columns("B:Q").Copy
Worksheets("Adjustment").Activate
Range("B1").Select
ActiveSheet.Paste
Range("B1").Select
End Sub