from datetime import datetime from logging_config import get_logger logger = get_logger(__name__) class Processor: def __init__(self, config, repo, api): self.config = config self.repo = repo self.api = api def process(self): rows = self.repo.get_pending_rrns_today() logger.info("Pending transactions count: %s", len(rows)) insert_count = 0 for r in rows: bank_code = self.config.BANK_CODE_MAPPING.get(r["DCCB_CODE"]) if not bank_code: continue payload = { "bankCode": bank_code, "rrn": r["RRN_TWO"], "branchCode": r["BR_CODE"], "itemType": 0, "queueType": "02", "reterieveTop": "20" } response = self.api.fetch(payload) items = response.get("response", {}).get("VwQueueItems", []) if not items or items[0].get("status") != "PROCESSED": continue tran_date_str = r["TXN_DATE"].strftime("%d%m%Y") item = items[0] log_data = { "bankcode": bank_code, "jrnl_id": item["journalId"], "ref_no": item.get("remarks"), "tran_date": tran_date_str, "txn_amt": r["TXN_AMT"], "recv_ac": r["DEST_AC_NO"], "send_ac": r["SRC_AC_NO"], "ifsc": r["IFSC_CODE"], "sender_ifsc": item.get("sender_ifsc"), "sender_name": r["REMITTER_NAME"], "receiver_name": r["BENEFICIARY_NAME"], "beneficiary_address": r["BENEFICIARY_ADD"], "sender_info": item["sendeReceiverInfo"] } self.repo.insert_outward_log(log_data) self.repo.mark_processed(r["TXN_NO"]) insert_count += 1 return insert_count