def _process_transaction(stock_report_helper, stock_trans, ledger_db): def _lazy_original_balance(): # needs to be in closures because it's zero-argument. # see compute_ledger_values for more information reference = stock_trans.ledger_reference return ledger_db.get_current_ledger_value(reference) new_ledger_values = compute_ledger_values( _lazy_original_balance, stock_report_helper.report_type, stock_trans.relative_quantity) ledger_value = ledger_db.get_ledger(stock_trans.ledger_reference) if not ledger_value: ledger_value = LedgerValue( **stock_trans.ledger_reference._asdict()) ledger_value.domain = stock_report_helper.domain ledger_db.set_ledger(ledger_value) transaction = _get_ledger_transaction(_lazy_original_balance, stock_report_helper, stock_trans, new_ledger_values.balance) ledger_value.track_create(transaction) # only do this after we've created the transaction otherwise we'll get the wrong delta ledger_value.balance = new_ledger_values.balance ledger_value.last_modified = stock_report_helper.server_date # form.received_on ledger_value.last_modified_form_id = stock_report_helper.form_id return ledger_value
def _process_transaction(stock_report_helper, stock_trans, ledger_db): def _lazy_original_balance(): # needs to be in closures because it's zero-argument. # see compute_ledger_values for more information reference = stock_trans.ledger_reference return ledger_db.get_current_ledger_value(reference) new_ledger_values = compute_ledger_values( _lazy_original_balance, stock_report_helper.report_type, stock_trans.relative_quantity ) ledger_value = ledger_db.get_ledger(stock_trans.ledger_reference) if not ledger_value: ledger_value = LedgerValue(**stock_trans.ledger_reference._asdict()) ledger_value.domain = stock_report_helper.domain ledger_db.set_ledger(ledger_value) transaction = _get_ledger_transaction( _lazy_original_balance, stock_report_helper, stock_trans, new_ledger_values.balance ) ledger_value.track_create(transaction) # only do this after we've created the transaction otherwise we'll get the wrong delta ledger_value.balance = new_ledger_values.balance ledger_value.last_modified = stock_report_helper.server_date # form.received_on ledger_value.last_modified_form_id = stock_report_helper.form_id return ledger_value