@ -1998,24 +1998,29 @@ bool simple_wallet::show_transfers(const std::vector<std::string> &args_)
std : : vector < std : : string > local_args = args_ ;
bool in = true ;
bool out = true ;
bool pending = true ;
uint64_t min_height = 0 ;
uint64_t max_height = ( uint64_t ) - 1 ;
if ( local_args . size ( ) > 3 ) {
fail_msg_writer ( ) < < tr ( " Usage: show_transfers [in|out ] [<min_height> [<max_height>]]" ) ;
fail_msg_writer ( ) < < tr ( " Usage: show_transfers [in|out |all|pending ] [<min_height> [<max_height>]]" ) ;
return true ;
}
// optional in/out selector
if ( local_args . size ( ) > 0 ) {
if ( local_args [ 0 ] = = " in " | | local_args [ 0 ] = = " incoming " ) {
out = false ;
out = pending = false ;
local_args . erase ( local_args . begin ( ) ) ;
}
else if ( local_args [ 0 ] = = " out " | | local_args [ 0 ] = = " outgoing " ) {
in = false ;
local_args . erase ( local_args . begin ( ) ) ;
}
else if ( local_args [ 0 ] = = " pending " ) {
in = out = false ;
local_args . erase ( local_args . begin ( ) ) ;
}
else if ( local_args [ 0 ] = = " all " | | local_args [ 0 ] = = " both " ) {
local_args . erase ( local_args . begin ( ) ) ;
}
@ -2055,7 +2060,7 @@ bool simple_wallet::show_transfers(const std::vector<std::string> &args_)
std : : string payment_id = string_tools : : pod_to_hex ( i - > first ) ;
if ( payment_id . substr ( 16 ) . find_first_not_of ( ' 0 ' ) = = std : : string : : npos )
payment_id = payment_id . substr ( 0 , 16 ) ;
output . insert ( std : : make_pair ( pd . m_block_height , std : : make_pair ( true , ( boost : : format ( " %20.20s %s %s " ) % print_money ( pd . m_amount ) % string_tools : : pod_to_hex ( pd . m_tx_hash ) % payment_id ) . str ( ) ) ) ) ;
output . insert ( std : : make_pair ( pd . m_block_height , std : : make_pair ( true , ( boost : : format ( " %20.20s %s %s %s " ) % print_money ( pd . m_amount ) % string_tools : : pod_to_hex ( pd . m_tx_hash ) % payment_id % " - " ) . str ( ) ) ) ) ;
}
}
@ -2066,27 +2071,39 @@ bool simple_wallet::show_transfers(const std::vector<std::string> &args_)
const tools : : wallet2 : : confirmed_transfer_details & pd = i - > second ;
uint64_t fee = pd . m_amount_in - pd . m_amount_out ;
uint64_t change = pd . m_change = = ( uint64_t ) - 1 ? 0 : pd . m_change ; // change may not be known
LOG_PRINT_L2 ( " out: in " < < print_money ( pd . m_amount_in ) < < " , out " < < print_money ( pd . m_amount_out ) < < " , change " < < print_money ( change ) < < " , fee " < < print_money ( fee ) ) ;
output . insert ( std : : make_pair ( pd . m_block_height , std : : make_pair ( false , ( boost : : format ( " %20.20s %s " ) % print_money ( pd . m_amount_in - change - fee ) % " - " ) . str ( ) ) ) ) ;
std : : string dests ;
for ( const auto & d : pd . m_dests ) {
if ( ! dests . empty ( ) )
dests + = " , " ;
dests + = get_account_address_as_str ( m_wallet - > testnet ( ) , d . addr ) + " : " + print_money ( d . amount ) ;
}
std : : string payment_id = string_tools : : pod_to_hex ( i - > second . m_payment_id ) ;
if ( payment_id . substr ( 16 ) . find_first_not_of ( ' 0 ' ) = = std : : string : : npos )
payment_id = payment_id . substr ( 0 , 16 ) ;
output . insert ( std : : make_pair ( pd . m_block_height , std : : make_pair ( false , ( boost : : format ( " %20.20s %s %s %14.14s %s " ) % print_money ( pd . m_amount_in - change - fee ) % string_tools : : pod_to_hex ( i - > first ) % payment_id % print_money ( fee ) % dests ) . str ( ) ) ) ) ;
}
}
// print in and out sorted by height
for ( std : : map < uint64_t , std : : pair < bool , std : : string > > : : const_iterator i = output . begin ( ) ; i ! = output . end ( ) ; + + i ) {
message_writer ( i - > second . first ? epee : : log_space : : console_color_magenta : epee : : log_space : : console_color_green , false ) < <
boost : : format ( " %8.8llu %6.6s %s " ) %
boost : : format ( " %8.8llu %6.6s %s" ) %
( ( unsigned long long ) i - > first ) % ( i - > second . first ? tr ( " in " ) : tr ( " out " ) ) % i - > second . second ;
}
// print unconfirmed last
if ( out ) {
if ( pending ) {
std : : list < std : : pair < crypto : : hash , tools : : wallet2 : : unconfirmed_transfer_details > > upayments ;
m_wallet - > get_unconfirmed_payments_out ( upayments ) ;
for ( std : : list < std : : pair < crypto : : hash , tools : : wallet2 : : unconfirmed_transfer_details > > : : const_iterator i = upayments . begin ( ) ; i ! = upayments . end ( ) ; + + i ) {
const tools : : wallet2 : : unconfirmed_transfer_details & pd = i - > second ;
uint64_t amount = 0 ;
cryptonote : : get_inputs_money_amount ( pd . m_tx , amount ) ;
message_writer ( ) < < ( boost : : format ( " %8.8s %6.6s %20.20s " ) % tr ( " pending " ) % tr ( " out " ) % print_money ( amount - pd . m_change ) ) . str ( ) ;
uint64_t fee = amount - get_outs_money_amount ( pd . m_tx ) ;
std : : string payment_id = string_tools : : pod_to_hex ( i - > second . m_payment_id ) ;
if ( payment_id . substr ( 16 ) . find_first_not_of ( ' 0 ' ) = = std : : string : : npos )
payment_id = payment_id . substr ( 0 , 16 ) ;
message_writer ( ) < < ( boost : : format ( " %8.8s %6.6s %20.20s %s %s %14.14s " ) % tr ( " pending " ) % tr ( " out " ) % print_money ( amount - pd . m_change ) % string_tools : : pod_to_hex ( i - > first ) % payment_id % print_money ( fee ) ) . str ( ) ;
}
}