This commit is contained in:
louiscklaw
2025-01-31 21:13:26 +08:00
parent f08350ff38
commit 154255d9ca
98 changed files with 12589 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,454 @@
' change log:
Option explicit
Dim first_row As Integer
Dim current_row As Integer
Dim last_check_row As Integer
Dim ADJUSTMENT_WORKSHEET as string
Dim BMF_ADJUSTMENT_WORKSHEET as string
' BALANCE_SHEET
Dim COL_BALANCE_SHEET_NA_1 as string
Dim COL_BALANCE_SHEET_PCCO_1 as string
Dim COL_BALANCE_SHEET_AMOUNT_TO_ADJ_1 as string
Dim COL_BALANCE_SHEET_NA_2 as string
Dim COL_BALANCE_SHEET_PCCO_2 as string
Dim COL_BALANCE_SHEET_AMOUNT_TO_ADJ_2 as string
' OFF_BALANCE_SHEET
Dim COL_OFF_BALANCE_SHEET_NA_1 as string
Dim COL_OFF_BALANCE_SHEET_PCCO_1 as string
Dim COL_OFF_BALANCE_SHEET_AMOUNT_TO_ADJ_1 as string
Dim COL_OFF_BALANCE_SHEET_NA_2 as string
Dim COL_OFF_BALANCE_SHEET_PCCO_2 as string
Dim COL_OFF_BALANCE_SHEET_AMOUNT_TO_ADJ_2 as string
Dim COL_FINAL_BMF_ID as string
Dim COL_BMF_ADJUSTMENT_SHEET_BMF_REFERENCE_ID as string
Dim COL_BMF_ADJUSTMENT_SHEET_LINE_TYPE as string
Dim COL_BMF_ADJUSTMENT_SHEET_ADJUSTMENT_ID as string
Dim COL_BMF_ADJUSTMENT_SHEET_ADJUSTMENT_TYPE as string
Dim COL_BMF_ADJUSTMENT_SHEET_COMMENT as string
Dim COL_BMF_ADJUSTMENT_SHEET_REPORTING_ENTITY as string
Dim COL_BMF_ADJUSTMENT_SHEET_PCCO as string
Dim COL_BMF_ADJUSTMENT_SHEET_PCEC as string
Dim COL_BMF_ADJUSTMENT_SHEET_ACCOUNTING_BALANCE_CURRENCY as string
Dim COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_ACCT_BALANCE as string
Dim COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_FUNT as string
Dim COL_BMF_ADJUSTMENT_SHEET_FAIR_VALUE as string
Dim COL_BMF_ADJUSTMENT_SHEET_ECONOMIC_AGENT as string
Dim COL_BMF_ADJUSTMENT_SHEET_OPAQUE_REPORTING_ENTITY as string
Dim COL_BMF_ADJUSTMENT_SHEET_REMAINING_MATURITY as string
Dim COL_BMF_ADJUSTMENT_SHEET_IFRS13 as string
Dim COL_BMF_ADJUSTMENT_SHEET_COUNTRY as string
Dim COL_BMF_ADJUSTMENT_SHEET_LOCAL_OPERATIONAL_ACCOUNT as string
Sub init()
On Error GoTo eh
' HEADER_ROW = 6
first_row = 6
current_row = first_row
last_check_row = 9999
' ADJUSTMENT_SHEET
ADJUSTMENT_WORKSHEET = "Adjustment"
' BALANCE_SHEET
COL_BALANCE_SHEET_NA_1 = "Q"
COL_BALANCE_SHEET_PCCO_1 = "R"
COL_BALANCE_SHEET_AMOUNT_TO_ADJ_1 = "S"
COL_BALANCE_SHEET_NA_2 = "T"
COL_BALANCE_SHEET_PCCO_2 = "U"
COL_BALANCE_SHEET_AMOUNT_TO_ADJ_2 = "V"
' OFF_BALANCE_SHEET
COL_OFF_BALANCE_SHEET_NA_1 = "X"
COL_OFF_BALANCE_SHEET_PCCO_1 = "Y"
COL_OFF_BALANCE_SHEET_AMOUNT_TO_ADJ_1 = "Z"
COL_OFF_BALANCE_SHEET_NA_2 = "AA"
COL_OFF_BALANCE_SHEET_PCCO_2 = "AB"
COL_OFF_BALANCE_SHEET_AMOUNT_TO_ADJ_2 = "AC"
COL_FINAL_BMF_ID = "AI"
' BMF_ADJUSTMENT_SHEET
BMF_ADJUSTMENT_WORKSHEET = "BMF Adjustment result"
COL_BMF_ADJUSTMENT_SHEET_BMF_REFERENCE_ID = "A"
COL_BMF_ADJUSTMENT_SHEET_LINE_TYPE = "B"
COL_BMF_ADJUSTMENT_SHEET_ADJUSTMENT_ID = "C"
COL_BMF_ADJUSTMENT_SHEET_ADJUSTMENT_TYPE = "D"
COL_BMF_ADJUSTMENT_SHEET_COMMENT = "E"
COL_BMF_ADJUSTMENT_SHEET_REPORTING_ENTITY = "F"
COL_BMF_ADJUSTMENT_SHEET_PCCO = "G"
COL_BMF_ADJUSTMENT_SHEET_PCEC = "H"
COL_BMF_ADJUSTMENT_SHEET_ACCOUNTING_BALANCE_CURRENCY = "I"
COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_ACCT_BALANCE = "J"
COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_FUNT = "K"
COL_BMF_ADJUSTMENT_SHEET_FAIR_VALUE = "BH"
COL_BMF_ADJUSTMENT_SHEET_ECONOMIC_AGENT = "BI"
COL_BMF_ADJUSTMENT_SHEET_OPAQUE_REPORTING_ENTITY = "BJ"
COL_BMF_ADJUSTMENT_SHEET_REMAINING_MATURITY = "BK"
COL_BMF_ADJUSTMENT_SHEET_IFRS13 = "BL"
COL_BMF_ADJUSTMENT_SHEET_COUNTRY = "BM"
COL_BMF_ADJUSTMENT_SHEET_LOCAL_OPERATIONAL_ACCOUNT = "BN"
Done:
Exit Sub
eh:
Debug.Print "init:Error: " & Err.Description
End Sub
Function CheckIfBalanceSheetAmountToAdjust2IsZero(current_row As Integer)
On Error GoTo eh
Dim output as boolean
output = false
Dim temp as string
temp = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_AMOUNT_TO_ADJ_2 & CStr(current_row)).Value
if (temp = "0") then
output = true
end if
CheckIfBalanceSheetAmountToAdjust2IsZero = output
Done:
Exit Function
eh:
Debug.Print "CheckIfBalanceSheetAmountToAdjust2IsZero:Error: " & Err.Description
End Function
Function CheckIfBalanceSheetNa2Exist(current_row As Integer)
On Error GoTo eh
Dim output as boolean
output = false
Dim temp as string
temp = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_NA_2 & CStr(current_row)).Value
if (temp <> "") then
output = true
end if
CheckIfBalanceSheetNa2Exist = output
Done:
Exit Function
eh:
Debug.Print "CheckIfBalanceSheetNa2Exist:Error: " & Err.Description
End Function
Function CheckIfBalanceSheetPcco2Exist(current_row As Integer)
On Error GoTo eh
Dim output as boolean
output = false
Dim temp as string
temp = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_PCCO_2 & CStr(current_row)).Value
if (temp <> "") then
output = true
end if
CheckIfBalanceSheetPcco2Exist = output
Done:
Exit Function
eh:
Debug.Print "CheckIfBalanceSheetPcco2Exist:Error: " & Err.Description
End Function
Function CheckIfBalanceSheetAmountToAdjust2Exist(current_row As Integer)
On Error GoTo eh
Dim output as boolean
output = false
Dim temp as string
temp = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_AMOUNT_TO_ADJ_2 & CStr(current_row)).Value
if (temp <> "") then
output = true
end if
CheckIfBalanceSheetAmountToAdjust2Exist = output
Done:
Exit Function
eh:
Debug.Print "CheckIfBalanceSheetAmountToAdjust2Exist: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
Function getLastCheckRow(first_row As Integer)
On Error GoTo eh
getLastCheckRow = first_row + 10
Done:
Exit Function
eh:
Debug.Print "getLastCheckRow:Error: " & Err.Description
End Function
function checkAdjustmentSheetLastRow(current_row as integer)
On Error GoTo eh
Dim output as boolean
output = True
dim j as integer
Dim temp as string
For j = current_row to getLastCheckRow(current_row)
temp = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_FINAL_BMF_ID & CStr(current_row)).Value
if (temp <> "") then
output = False
end if
next j
checkAdjustmentSheetLastRow = output
Done:
Exit Function
eh:
Debug.Print "checkAdjustmentSheetLastRow:Error: " & Err.Description
end function
function checkBmfAdjustmentSheetLastRow(current_row as integer)
On Error GoTo eh
Dim output as boolean
output = True
dim j as integer
Dim temp as string
For j = current_row to getLastCheckRow(current_row)
temp = Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_BMF_REFERENCE_ID & CStr(current_row)).Value
if (temp <> "") then
output = False
end if
next j
checkBmfAdjustmentSheetLastRow = output
Done:
Exit Function
eh:
Debug.Print "checkBmfAdjustmentSheetLastRow:Error: " & Err.Description
end function
Function checkIfAlreadyExistInBmfAdjustmentResult(adj_bmf_id as string, adj_pcco as string)
On Error GoTo eh
Dim i as integer
Dim bmf_adjustment_sheet_last_row as integer
Dim found as boolean
found = false
Dim temp_value as string
Dim bmf_adj_bmf_id as string
Dim bmf_adj_pcco as string
bmf_adjustment_sheet_last_row = getBMFAdjustmentResultListEnd(1)
For i = 1 to bmf_adjustment_sheet_last_row
bmf_adj_bmf_id = Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_BMF_REFERENCE_ID & CStr(i)).Value
bmf_adj_pcco = Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_PCCO & CStr(i)).Value
debug.print adj_bmf_id
debug.print adj_pcco
if (bmf_adj_bmf_id = adj_bmf_id and bmf_adj_pcco = adj_pcco ) then
found = true
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_BMF_REFERENCE_ID & CStr(i)).Interior.Color = rgb(214, 48, 49)
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_PCCO & CStr(i)).Interior.Color = rgb(214, 48, 49)
exit for
end if
next i
checkIfAlreadyExistInBmfAdjustmentResult = found
Done:
Exit Function
eh:
Debug.Print "checkIfAlreadyExistInBmfAdjustmentResult:Error: " & Err.Description
End Function
Function getBMFAdjustmentResultListEnd(start_row as integer)
On Error GoTo eh
Dim i as integer
Dim last_row as boolean
Dim last_row_found as boolean
last_row_found = false
last_row = True
current_row = start_row
For i = start_row To 9999
current_row = i
last_row_found = checkBmfAdjustmentSheetLastRow(current_row)
if (last_row_found = true) then
exit for
end if
Next i
getBMFAdjustmentResultListEnd = current_row -1
Done:
Exit Function
eh:
Debug.Print "getBMFAdjustmentResultListEnd:Error: " & Err.Description
End Function
Function getAdjustmentSheetListEnd(start_row as integer)
On Error GoTo eh
Dim i as integer
Dim last_row as boolean
Dim last_row_found as boolean
last_row_found = false
last_row = True
current_row = start_row
For i = start_row To 9999
current_row = i
last_row_found = checkAdjustmentSheetLastRow(current_row)
if (last_row_found = true) then
exit for
end if
Next i
getAdjustmentSheetListEnd = current_row -1
Done:
Exit Function
eh:
Debug.Print "getAdjustmentSheetListEnd:Error: " & Err.Description
End Function
Sub helloworld()
On Error GoTo eh
Dim need_to_copy as boolean
Dim adjustment_sheet_last_row as integer
Dim adjustment_sheet_current_row as integer
Dim bmf_adjustment_sheet_last_row as integer
Dim bmf_adjustment_sheet_current_row as integer
init
'MsgBox "helloworld"
adjustment_sheet_last_row= getAdjustmentSheetListEnd(first_row)
For adjustment_sheet_current_row = 6 To adjustment_sheet_last_row
need_to_copy = false
Dim bmf_id as string
Dim pcco as string
bmf_id = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_FINAL_BMF_ID & CStr(adjustment_sheet_current_row)).Value
pcco=Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_PCCO_2 & CStr(adjustment_sheet_current_row)).Value
if (CheckIfBalanceSheetAmountToAdjust2Exist(adjustment_sheet_current_row) and CheckIfBalanceSheetNa2Exist(adjustment_sheet_current_row) and CheckIfBalanceSheetPcco2Exist(adjustment_sheet_current_row)) then
if (CheckIfBalanceSheetAmountToAdjust2IsZero(adjustment_sheet_current_row)) then
debug.print Cstr(adjustment_sheet_current_row) & " no need to copy as zero"
elseif (checkIfAlreadyExistInBmfAdjustmentResult(bmf_id, pcco)) then
debug.print "already exist in bmf table, skipping"
else
need_to_copy = True
end if
end if
' helloworld
if (need_to_copy = true) then
debug.print adjustment_sheet_current_row & " need to copy"
bmf_adjustment_sheet_last_row = getBMFAdjustmentResultListEnd(1)
bmf_adjustment_sheet_current_row = bmf_adjustment_sheet_last_row + 1
Dim temp_value as string
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_REPORTING_ENTITY & CStr(bmf_adjustment_sheet_current_row)).Value = "14004"
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_OPAQUE_REPORTING_ENTITY & CStr(bmf_adjustment_sheet_current_row)).Value = "N"
temp_value = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_NA_2 & CStr(adjustment_sheet_current_row)).Value
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_LOCAL_OPERATIONAL_ACCOUNT & CStr(bmf_adjustment_sheet_current_row)).Value = temp_value & " 15130"
temp_value = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_PCCO_2 & CStr(adjustment_sheet_current_row)).Value
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_PCCO & CStr(bmf_adjustment_sheet_current_row)).Value = temp_value
temp_value = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_BALANCE_SHEET_AMOUNT_TO_ADJ_2 & CStr(adjustment_sheet_current_row)).Value
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_ACCT_BALANCE & CStr(bmf_adjustment_sheet_current_row)).Value = temp_value
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_FUNT & CStr(bmf_adjustment_sheet_current_row)).Value = temp_value
temp_value = Worksheets(ADJUSTMENT_WORKSHEET).Range(COL_FINAL_BMF_ID & CStr(adjustment_sheet_current_row)).Value
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_BMF_REFERENCE_ID & CStr(bmf_adjustment_sheet_current_row)).Value = temp_value
' update formatting
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_ACCT_BALANCE & CStr(bmf_adjustment_sheet_current_row)).NumberFormat = "#,##_);[Red](#,##)"
Worksheets(BMF_ADJUSTMENT_WORKSHEET).Range(COL_BMF_ADJUSTMENT_SHEET_AMOUNT_IN_FUNT & CStr(bmf_adjustment_sheet_current_row)).NumberFormat = "#,##_);[Red](#,##)"
else
debug.print adjustment_sheet_current_row & " no need to copy"
end if
Next adjustment_sheet_current_row
Done:
Exit Sub
eh:
Debug.Print "helloworld:Error: " & Err.Description
End Sub