95 lines
3.4 KiB
Python
95 lines
3.4 KiB
Python
import json
|
|
|
|
from api_services.bank_actions.wag_account_record_parser import parse_comment_with_name
|
|
from databases import (
|
|
AccountRecords,
|
|
BuildIbans,
|
|
BuildDecisionBook,
|
|
|
|
)
|
|
from api_validations.validations_request import (
|
|
ListOptions
|
|
)
|
|
from api_library.date_time_actions.date_functions import (
|
|
system_arrow
|
|
)
|
|
from service_account_records.configs import AccountConfig
|
|
|
|
account_list = ListOptions(
|
|
page=1,
|
|
size=1000,
|
|
order_field="bank_date",
|
|
order_type="desc",
|
|
)
|
|
def account_records_find_decision_book():
|
|
created_ibans, iban_build_dict = [], {}
|
|
AccountRecords.filter_attr = account_list
|
|
created_ibans, iban_build_dict = [], {}
|
|
AccountRecords.filter_attr = account_list
|
|
days_before_now = system_arrow.now().shift(days=(int(AccountConfig.BEFORE_DAY) * -1))
|
|
account_records_list: list[AccountRecords] = AccountRecords.filter_all(
|
|
# AccountRecords.bank_date >= str(days_before_now),
|
|
AccountRecords.build_decision_book_id == None,
|
|
system=True
|
|
).data
|
|
for account_record in account_records_list:
|
|
if account_record.iban not in created_ibans:
|
|
found_iban: BuildIbans = BuildIbans.filter_one(
|
|
BuildIbans.iban == account_record.iban,
|
|
system=True
|
|
).data
|
|
if not found_iban:
|
|
create_build_ibans = BuildIbans.find_or_create(
|
|
iban=account_record.iban,
|
|
start_date=str(system_arrow.now().shift(days=-1)),
|
|
)
|
|
create_build_ibans.save_and_confirm()
|
|
created_ibans.append(account_record.iban)
|
|
# It is in database already
|
|
if not found_iban.build_id:
|
|
iban_build_dict["iban"] = account_record.iban
|
|
iban_build_dict["build_id"] = None
|
|
else:
|
|
found_decision_book = BuildDecisionBook.filter_one(
|
|
BuildDecisionBook.build_id == found_iban.build_id,
|
|
BuildDecisionBook.expiry_starts <= account_record.bank_date,
|
|
BuildDecisionBook.expiry_ends > account_record.bank_date,
|
|
).data
|
|
if found_decision_book:
|
|
print('found_decision_book', found_decision_book.get_dict())
|
|
account_record.update(
|
|
build_decision_book_id=found_decision_book.id,
|
|
build_decision_book_uu_id=str(found_decision_book.uu_id),
|
|
)
|
|
account_record.save()
|
|
|
|
print('iban_build_dict', iban_build_dict)
|
|
print('created_ibans', created_ibans)
|
|
return
|
|
|
|
|
|
def account_records_search():
|
|
AccountRecords.filter_attr = account_list
|
|
account_records_list: list[AccountRecords] = AccountRecords.filter_all(
|
|
AccountRecords.build_decision_book_id != None,
|
|
system=True
|
|
).data
|
|
for account_record in account_records_list:
|
|
print('account_record', account_record.get_dict())
|
|
similarity_result = parse_comment_with_name(account_record.iban, account_record.process_comment)
|
|
print('similarity_result', similarity_result)
|
|
# build_iban = BuildIbans.find_one(iban=data["iban"])
|
|
print('account_records_list', account_records_list)
|
|
|
|
return
|
|
|
|
def account_records_service() -> None:
|
|
account_records_find_decision_book()
|
|
account_records_search()
|
|
return
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
account_records_service()
|