chiark / gitweb /
Permit entry of loss per league
[ypp-sc-tools.main.git] / yarrg / web / routetrade
index 7d112b730ae480e938db46648d28038d4b1cf443..9a6824e97ced58bb08b3e84b11e43f975fe8505f 100644 (file)
@@ -38,11 +38,24 @@ $dbh
 @islandids
 @archipelagoes
 $qa
+$max_mass
+$max_volume
+$lossperleaguepct
 </%args>
 <&| script &>
   da_pageload= Date.now();
 </&script>
 
+% if (defined $max_mass || defined $max_volume) {
+<strong>WARNING - VESSEL CAPACITY LIMIT NOT YET IMPLEMENTED</strong>
+<p>
+% }
+% if (defined $lossperleaguepct) {
+<strong>WARNING - DEFINED LOSS PER LEAGUE NOT YET IMPLEMENTED</strong>
+<% $lossperleaguepct |h %>
+<p>
+% }
+
 <%perl>
 
 my $now= time;
@@ -205,9 +218,12 @@ $addcols->({ DoReverse => 1, SortColKey => 'MarginSortKey' },
        qw(     Margin
        ));
 $addcols->({ DoReverse => 1 },
-       qw(     unitprofit dist MaxQty
-               MaxCapital MaxProfit
+       qw(     unitprofit MaxQty MaxCapital MaxProfit dist
        ));
+foreach my $v (qw(MaxMass MaxVolume)) {
+   $addcols->({
+       DoReverse => 1, Total => 0, SortColKey => "${v}SortKey" }, $v);
+}
 
 </%perl>
 
@@ -269,6 +285,12 @@ foreach my $f (@flows) {
        $f->{MaxProfit}= $f->{MaxQty} * $f->{'unitprofit'};
        $f->{MaxCapital}= $f->{MaxQty} * $f->{'org_price'};
 
+       $f->{MaxMassSortKey}= $f->{MaxQty} * $f->{'unitmass'};
+       $f->{MaxVolumeSortKey}= $f->{MaxQty} * $f->{'unitvolume'};
+       foreach my $v (qw(Mass Volume)) {
+               $f->{"Max$v"}= sprintf "%.1f", $f->{"Max${v}SortKey"} * 1e-6;
+       }
+
        $f->{MarginSortKey}= sprintf "%d",
                $f->{'dst_price'} * 10000 / $f->{'org_price'};
        $f->{Margin}= sprintf "%3.1f%%",
@@ -486,7 +508,7 @@ $addcols->({ Total => 0, DoReverse => 1 }, qw(
 <colgroup span=2>
 <colgroup span=2>
 <colgroup span=2>
-<colgroup span=1>
+<colgroup span=3>
 <colgroup span=3>
 %      if ($optimise) {
 <colgroup span=3>
@@ -499,8 +521,9 @@ $addcols->({ Total => 0, DoReverse => 1 }, qw(
 <th colspan=2>Collect
 <th colspan=2>Deliver
 <th colspan=2>Profit
-<th colspan=1>
 <th colspan=3>Max
+<th colspan=1>
+<th colspan=2>Max
 %      if ($optimise) {
 <th colspan=3>Planned
 %      }
@@ -516,10 +539,12 @@ $addcols->({ Total => 0, DoReverse => 1 }, qw(
 <th>Qty
 <th>Margin
 <th>Unit
-<th>Dist
 <th>Qty
 <th>Capital
 <th>Profit
+<th>Dist
+<th>Mass
+<th>Vol
 %      if ($optimise) {
 <th>Qty
 <th>Capital
@@ -542,7 +567,8 @@ $addcols->({ Total => 0, DoReverse => 1 }, qw(
 %      foreach my $ci (1..$#cols) {
 %              my $col= $cols[$ci];
 %              my $v= $flow->{$col->{Name}};
-%              $col->{Total} += $v if defined $col->{Total};
+%              $col->{Total} += $v
+%                      if defined $col->{Total} and not $flow->{Suppress};
 %              $v='' if !$col->{Text} && !$v;
 %              my $sortkey= $col->{SortColKey} ?
 %                      $flow->{$col->{SortColKey}} : $v;
@@ -575,6 +601,7 @@ $addcols->({ Total => 0, DoReverse => 1 }, qw(
 %                              WHERE islandid = ?');
 % my %da_ages;
 % my $total_total= 0;
+% my $total_dist= 0;
 %
 <h1>Voyage trading plan</h1>
 <table rules=groups>
@@ -586,8 +613,10 @@ $addcols->({ Total => 0, DoReverse => 1 }, qw(
 %      if (!$i) {
 <strong>Start at <% $islandname |h %></strong>
 %      } else {
+%              my $this_dist= $distance->($islandids[$i-1],$islandids[$i]);
+%              $total_dist += $this_dist;
 <strong>Sail to <% $islandname |h %></strong>
-- <% $distance->($islandids[$i-1],$islandids[$i]) |h %>leagues </td>
+- <% $this_dist |h %> leagues </td>
 %      }
 <%perl>
      my $age_reported= 0;
@@ -695,7 +724,7 @@ $addcols->({ Total => 0, DoReverse => 1 }, qw(
 }
 </%perl>
 <tbody><tr>
-<td colspan=2>
+<td colspan=2>Total distance: <% $total_dist %> leagues.
 <td colspan=3 align=right>Overall net cash flow
 <td align=right><strong><%
   $total_total < 0 ? -$total_total." loss" : $total_total." gain"