wag-managment-api-service-v.../service_account_records/app_accounts.py

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()