From 787929534bbd13eda2aa1d922481e59d64bdfbd2 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 18 May 2009 01:53:03 +0100 Subject: [PATCH] can compute profit/loss --- ypp-restock-rum | 64 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/ypp-restock-rum b/ypp-restock-rum index 0fe47f9..b76d1c4 100755 --- a/ypp-restock-rum +++ b/ypp-restock-rum @@ -121,7 +121,10 @@ sub pr1 ($$) { my ($k,$v) = @_; printf "%-20s %s\n", "$k:", $v; } - +sub fmt_stock_index ($) { + my ($si) = @_; + @have==1 ? '' : ' #'.$si; +} our @norm_price; our ($best, $best_norm_price); @@ -132,8 +135,8 @@ sub print_inputs () { print "\n\n"; pr('prices', @price, 'poe ea.') if valid(@price); pr('target stocks', @want, 'units') if valid(@want); - my $i=0; for my $stocks (@have) { - pr('actual stocks'.(@have==1 ? '' : ' #'.++$i), + my $si=0; for my $stocks (@have) { + pr('actual stocks'.fmt_stock_index(++$si), @$stocks, 'units'); } print "\n"; @@ -146,7 +149,7 @@ sub compute_cheapest_rum() { prf('equiv. ordering price', @perorder, 'poe/order'); $best= undef; - my $best_norm_price= 1e5; + $best_norm_price= 1e5; for my $i (qw(0 1 2)) { next unless $price[$i]; $norm_price[$i] = $price[$i] * 100 / $proofs[$i]; @@ -170,9 +173,61 @@ sub compute_cheapest_rum() { print "\n"; } +sub pr1s ($) { + my ($x) = @_; + if (defined $x and $x) { + printf ' %9.1f', $x; + } else { + printf " "; + } +} + +sub compute_stock_values() { + return unless @have; + print <[$i] * $proofs[$i] / 100; + } + my $rum_value= defined($best) ? $stock_rum * $best_norm_price : 0; + my $shot_value= valid($price[3]) ? $stocks->[3] * $price[3] : 0; + my $total_value= $rum_value + $shot_value; + + printf "%-10s ", 'stocks'.fmt_stock_index(++$si).':'; + pr1s($stock_rum); + pr1s($rum_value); + printf "%6d", $stocks->[3]; + pr1s($shot_value); + pr1s($total_value); + + if (defined $last_value) { + printf(" %10.1f %10.1f", + $total_value - $last_value, + $total_value - $initial_value); + } + $initial_value= $total_value unless defined $initial_value; + $last_value= $total_value; + print "\n"; + } + print <