"""Update $0 amounts for checkspaid.""" from accounting import config from accounting.adapters.log import getlogger from accounting.data import get_db_adapter from accounting.data import load_exchange_rates SELECT_SQL = ( 'SELECT ' 'cp.`id`, ' 'cp.`amount_in_original_currency`, ' 'cp.`currency_id` ' 'FROM `checkspaid` cp ' 'WHERE cp.`check_amt` = 0 ' 'AND cp.`currency_id` <> 1 ' 'AND cp.`amount_in_original_currency` <> 0 ' 'AND cp.`paidfor_period_id` = {:d} ') UPDATE_SQL = ( 'UPDATE `checkspaid` ' 'SET `amount` = {:f} ' 'WHERE `id` = {:d} ') def update_checkspaid(): """Update $0 checks with newly available exchange rates.""" db_adapter = get_db_adapter() exchange_rates = load_exchange_rates(config.PERIOD_ID) logger = getlogger() logger.info('Updating checkspaid $0 amounts.') for row in db_adapter.fetch_rows(SELECT_SQL.format(config.PERIOD_ID)): key = '{from_id}_1'.format(from_id=row[2]) exchange_rate = exchange_rates.get(key) amount = row[1] * exchange_rate update_sql = UPDATE_SQL.format(round(amount, 6), row[0]) logger.info('Update check {} to {}'.format(row[0], amount)) db_adapter.execute(update_sql)