Listing negative balances
authoradamch <adamch>
Sun, 21 Oct 2007 18:39:36 +0000 (18:39 +0000)
committeradamch <adamch>
Sun, 21 Oct 2007 18:39:36 +0000 (18:39 +0000)
balance.sig
balance.sml
money.mlt

index 06726a5..e7f9bf5 100644 (file)
@@ -10,6 +10,7 @@ sig
     val listOwnedBalances : unit -> balance list
     val listUnownedBalances : unit -> balance list
     val listBalanceUsers : int -> Init.user list
+    val listNegativeOwnedBalances : unit -> balance list
 
     val validBalanceName : string -> bool
     val balanceNameToId : string -> int option
index 1b715fa..5b0c684 100644 (file)
@@ -69,6 +69,17 @@ fun listUnownedBalances () =
                                        OR Membership.grp IS NULL
                                     ORDER BY Balance.name`)
 
+fun listNegativeOwnedBalances () =
+    C.map (getDb ()) mkBalanceRow ($`SELECT Balance.id, Balance.name, amount
+                                    FROM Balance JOIN WebUser
+                                       ON Balance.name = WebUser.name
+                                          AND WebUser.bal = Balance.id
+                                    JOIN Membership
+                                       ON Membership.grp = 1
+                                          AND Membership.usr = WebUser.id
+                                    WHERE amount < 0
+                                    ORDER BY Balance.name`)
+
 fun validBalanceName name =
     size name <= 20
     andalso CharVector.all (fn ch => Char.isAlpha ch orelse ch = #"+") name
index 737d4b3..74bc1f6 100644 (file)
--- a/money.mlt
+++ b/money.mlt
@@ -64,9 +64,29 @@ end %></td> </tr>
 <% switch Balance.listBalanceUsers (#id bal) of
          [] =>
        | (user :: users) =>
-               %><a href="money?hist=<% #id user %>"><% Web.html (#name user) %></a><%
+               %><a href="user?id=<% #id user %>"><% Web.html (#name user) %></a> <a href="money?hist=<% #id user %>">[History]</a><%
                foreach user in users do
-                       %>, <a href="money?hist=<% # id user %>"><% Web.html (#name user) %></a><%
+                       %>, <a href="user?id=<% #id user %>"><% Web.html (#name user) %></a> <a href="money?hist=<% #id user %>">[History]</a><%
+               end
+end %></td> </tr>
+<% end %>
+</table>
+
+<% elseif $"cmd" = "nbals" then
+       showNormal := false;
+       val bals =  Balance.listNegativeOwnedBalances () %>
+
+<h3>Negative Active Balances (<% length bals %>)</h3>
+
+<table>
+<% foreach bal in bals do %>
+<tr><td><% #name bal %></td> <td><% #amount bal %></td> <td>
+<% switch Balance.listBalanceUsers (#id bal) of
+         [] =>
+       | (user :: users) =>
+               %><a href="user?id=<% #id user %>"><% Web.html (#name user) %></a> <a href="money?hist=<% #id user %>">[History]</a><%
+               foreach user in users do
+                       %>, <a href="user?id=<% #id user %>"><% Web.html (#name user) %></a> <a href="money?hist=<% #id user %>">[History]</a><%
                end
 end %></td> </tr>
 <% end %>
@@ -331,6 +351,7 @@ end %>
 
 <a href="money?cmd=list">List all transactions</a><br>
 <a href="money?cmd=bals">List active balances</a><br>
+<a href="money?cmd=nbals">List negative active balances</a><br>
 <a href="money?cmd=deadbals">List retired balances</a><br>
 
 <% if (Group.inGroupName "money" and $"lookback" = "") or $"audit" <> "" then %>