cvsimport
[hcoop/zz_old/portal.git] / balance.sml
index 9a1f8b6..98c8657 100644 (file)
@@ -52,6 +52,32 @@ fun listOwnedBalances () =
                                     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
+                                    ORDER BY Balance.name`)
+
+fun listUnownedBalances () =
+    C.map (getDb ()) mkBalanceRow ($`SELECT Balance.id, Balance.name, amount
+                                    FROM Balance LEFT OUTER JOIN WebUser
+                                       ON Balance.name = WebUser.name
+                                          AND WebUser.bal = Balance.id
+                                    LEFT OUTER JOIN Membership
+                                       ON Membership.grp = 1
+                                          AND Membership.usr = WebUser.id
+                                    WHERE WebUser.id IS NULL
+                                       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 =
@@ -64,9 +90,19 @@ fun balanceNameToId name =
       | _ => NONE
 
 fun listBalanceUsers bal =
-    C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares
+    C.map (getDb ()) mkUserRow ($`SELECT id, name, rname, bal, joined, app, shares, paypal, checkout
                                  FROM WebUser
                                  WHERE bal = ^(C.intToSql bal)
                                  ORDER BY name`)
 
+fun sumOwnedBalances () =
+    case C.oneRow (getDb ()) ($`SELECT SUM(amount)
+                               FROM Balance JOIN WebUser
+                                 ON Balance.name = WebUser.name
+                                   AND WebUser.bal = Balance.id`) of
+       [amt] => C.realFromSql amt
+      | _ => raise Fail "sumOwnedBalance: no rows"
+
+fun isNegative (bal : balance) = #amount bal < 0.0
+
 end