def format_transaction_table_output(self, audit_code, transaction, orderitem, transaction_amount_per_item=None, transaction_fee_per_item=None): """Generate an output row from an orderitem and transaction.""" # Handle cases where per-item values are defaulted. if transaction: if transaction_amount_per_item is None: transaction_amount_per_item = transaction.amount if transaction_fee_per_item is None: transaction_fee_per_item = transaction.transaction_fee org_id = None if orderitem: org_id = get_org_id_for_course(orderitem.course_id) result = [ audit_code[0], audit_code[1], audit_code[2], orderitem.payment_ref_id if orderitem else transaction.payment_ref_id, orderitem.order_id if orderitem else None, encode_id(orderitem.order_processor, "order_id", orderitem.order_id) if orderitem else None, orderitem.date_placed if orderitem else None, # transaction information transaction.date if transaction else None, transaction.transaction_id if transaction else None, encode_id(transaction.payment_gateway_id, "transaction_id", transaction.transaction_id) if transaction else None, transaction.payment_gateway_id if transaction else None, transaction.payment_gateway_account_id if transaction else None, transaction.transaction_type if transaction else None, transaction.payment_method if transaction else None, transaction.amount if transaction else None, transaction.iso_currency_code if transaction else None, transaction.transaction_fee if transaction else None, # mapping information: part of transaction that applies to this orderitem str(transaction_amount_per_item) if transaction_amount_per_item is not None else None, str(transaction_fee_per_item) if transaction_fee_per_item is not None else None, # orderitem information orderitem.line_item_id if orderitem else None, encode_id(orderitem.order_processor, "line_item_id", orderitem.line_item_id) if orderitem else None, orderitem.line_item_product_id if orderitem else None, orderitem.line_item_price if orderitem else None, orderitem.line_item_unit_price if orderitem else None, orderitem.line_item_quantity if orderitem else None, orderitem.refunded_amount if orderitem else None, orderitem.refunded_quantity if orderitem else None, orderitem.user_id if orderitem else None, orderitem.username if orderitem else None, orderitem.user_email if orderitem else None, orderitem.product_class if orderitem else None, orderitem.product_detail if orderitem else None, orderitem.course_id if orderitem else None, org_id if org_id is not None else None, orderitem.order_processor if orderitem else None, ] return (OrderTransactionRecord(*result).to_tsv(),)
def test_round_trip(self, suffix): encoded_id = id_codec.encode_id(SCOPE + suffix, TYPE + suffix, VALUE + suffix) decoded = id_codec.decode_id(encoded_id) self.assertEquals((SCOPE + suffix, TYPE + suffix, VALUE + suffix), decoded)
def format_transaction_table_output(self, audit_code, transaction, orderitem, transaction_amount_per_item=None, transaction_fee_per_item=None): """Generate an output row from an orderitem and transaction.""" # Handle cases where per-item values are defaulted. if transaction: if transaction_amount_per_item is None: transaction_amount_per_item = transaction.amount if transaction_fee_per_item is None: transaction_fee_per_item = transaction.transaction_fee org_id = None if orderitem: org_id = get_org_id_for_course(orderitem.course_id) result = [ audit_code[0], audit_code[1], audit_code[2], orderitem.partner_short_code if orderitem else self.default_partner_short_code, orderitem.payment_ref_id if orderitem else transaction.payment_ref_id, orderitem.order_id if orderitem else None, encode_id(orderitem.order_processor, "order_id", orderitem.order_id) if orderitem else None, orderitem.date_placed if orderitem else None, # transaction information transaction.date if transaction else None, transaction.transaction_id if transaction else None, encode_id(transaction.payment_gateway_id, "transaction_id", transaction.transaction_id) if transaction else None, transaction.payment_gateway_id if transaction else None, transaction.payment_gateway_account_id if transaction else None, transaction.transaction_type if transaction else None, transaction.payment_method if transaction else None, transaction.amount if transaction else None, transaction.iso_currency_code if transaction else None, transaction.transaction_fee if transaction else None, # mapping information: part of transaction that applies to this orderitem str(transaction_amount_per_item) if transaction_amount_per_item is not None else None, str(transaction_fee_per_item) if transaction_fee_per_item is not None else None, # orderitem information orderitem.line_item_id if orderitem else None, encode_id(orderitem.order_processor, "line_item_id", orderitem.line_item_id) if orderitem else None, orderitem.line_item_product_id if orderitem else None, orderitem.line_item_price if orderitem else None, orderitem.line_item_unit_price if orderitem else None, orderitem.line_item_quantity if orderitem else None, orderitem.coupon_id if orderitem else None, orderitem.discount_amount if orderitem else None, orderitem.voucher_id if orderitem else None, orderitem.voucher_code if orderitem else None, orderitem.refunded_amount if orderitem else None, orderitem.refunded_quantity if orderitem else None, orderitem.user_id if orderitem else None, orderitem.username if orderitem else None, orderitem.user_email if orderitem else None, orderitem.product_class if orderitem else None, orderitem.product_detail if orderitem else None, orderitem.course_id if orderitem else None, org_id if org_id is not None else None, orderitem.order_processor if orderitem else None, ] return (OrderTransactionRecord(*result).to_tsv(),)