chiark / gitweb /
Trade plan; wip data age
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Mon, 24 Aug 2009 02:15:05 +0000 (03:15 +0100)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Mon, 24 Aug 2009 02:15:05 +0000 (03:15 +0100)
yarrg/web/routetrade

index c135e67..0adf992 100644 (file)
@@ -115,9 +115,11 @@ my $stmt= "
        SELECT  sell_islands.islandname                         org_name,
                sell_islands.islandid                           org_id,
                sell.price                                      org_price,
        SELECT  sell_islands.islandname                         org_name,
                sell_islands.islandid                           org_id,
                sell.price                                      org_price,
+               sell_uploads.timestamp                          org_timestamp,
                buy_islands.islandname                          dst_name,
                buy_islands.islandid                            dst_id,
                buy.price                                       dst_price,
                buy_islands.islandname                          dst_name,
                buy_islands.islandid                            dst_id,
                buy.price                                       dst_price,
+               buy_uploads.timestamp                           dst_timestamp,
 ".($qa->{ShowStalls} ? "
                sell.stallid                                    org_stallid,
                sell_stalls.stallname                           org_stallname,
 ".($qa->{ShowStalls} ? "
                sell.stallid                                    org_stallid,
                sell_stalls.stallname                           org_stallname,
@@ -140,6 +142,8 @@ my $stmt= "
        JOIN sell ON commods.commodid = sell.commodid
        JOIN islands AS sell_islands ON sell.islandid = sell_islands.islandid
        JOIN islands AS buy_islands  ON buy.islandid  = buy_islands.islandid
        JOIN sell ON commods.commodid = sell.commodid
        JOIN islands AS sell_islands ON sell.islandid = sell_islands.islandid
        JOIN islands AS buy_islands  ON buy.islandid  = buy_islands.islandid
+       JOIN uploads AS sell_uploads ON sell.islandid = sell_uploads.islandid
+       JOIN uploads AS buy_uploads  ON buy.islandid  = buy_uploads.islandid
 ".($qa->{ShowStalls} ? "
        JOIN stalls  AS sell_stalls  ON sell.stallid  = sell_stalls.stallid
        JOIN stalls  AS buy_stalls   ON buy.stallid   = buy_stalls.stallid
 ".($qa->{ShowStalls} ? "
        JOIN stalls  AS sell_stalls  ON sell.stallid  = sell_stalls.stallid
        JOIN stalls  AS buy_stalls   ON buy.stallid   = buy_stalls.stallid
@@ -532,15 +536,55 @@ Sail to <% $islandname |h %>
 </strong>
 %    foreach my $od (qw(dst org)) {
 %      my $sign= $od eq 'dst' ? -1 : +1;
 </strong>
 %    foreach my $od (qw(dst org)) {
 %      my $sign= $od eq 'dst' ? -1 : +1;
-%      foreach my $f (sort {
-%                      $a->{'commodname'} cmp $b->{'commodname'}
-%              or $sign * ($a->{"${od}_price"} <=> $b->{"${od}_price"})
-%              or      $a->{"${od}_stallname"} cmp $b->{"${od}_stallname"}
-%              } @flows) {
+%      my %todo;
+%      foreach my $f (@flows) {
 %              next if $f->{Suppress};
 %              next unless $f->{"${od}_id"} == $islandids[$i];
 %              next unless $f->{OptQty};
 %              next if $f->{Suppress};
 %              next unless $f->{"${od}_id"} == $islandids[$i];
 %              next unless $f->{OptQty};
-<tr><td>Buy or sell flow 
+%              my $price= $f->{"${od}_price"};
+%              my $stallname= $f->{"${od}_stallname"};
+%              my $todo= \$todo{ $f->{'commodname'},
+%                                (sprintf "%07d", $price),
+%                                $stallname };
+%              $$todo= { } unless $$todo;
+%              $$todo->{'commodname'}= $f->{'commodname'};
+%              $$todo->{'stallname'}= $stallname;
+%              $$todo->{Price} += $price;
+%              $$todo->{Qty} += $f->{OptQty};
+%              $$todo->{Total} = $$todo->{Price} * $$todo->{Qty};
+%              $$todo->{Timestamp} = $f->{"${od}_timestamp"};
+%      }
+%      my $total= 0;
+%      my $dline= 0;
+%      foreach my $tkey (sort keys %todo) {
+%              my $t= $todo{$tkey};
+%              $total += $t->{Total};
+<tr class="datarow<% $dline %>"><td>
+%              if ($od eq 'org') {
+Collect
+%              } else {
+Deliver
+%              }
+<td><% $t->{'commodname'} |h %>
+<td align=right><% $t->{Price} |h %> each
+%              if ($qa->{ShowStalls}) {
+<td><% $t->{'stallname'} |h %>
+%              }
+<td align=right><% $t->{Qty} |h %> unit(s)
+<td align=right><% $t->{Total} |h %> total
+%              $dline ^= 1;
+%      }
+%      if (%todo) {
+<tr><td>
+<td colspan=<% 2+!!$qa->{ShowStalls} %>>
+<% (values %todo)[0]->{Timestamp} %>
+<td align=right>
+%              if ($od eq 'org') {
+Outlay
+%              } else {
+Proceeds
+%              }
+<td align=right><% $total |h %> total
 %      }
 %    }
 % }
 %      }
 %    }
 % }