X-Git-Url: http://git.hcoop.net/bpt/portal.git/blobdiff_plain/827fa7c4337cbecfb45ce23211c33459cc6a92be..4f10deb0bbf3a55737a8ff90ece58890673f6012:/balance.sml diff --git a/balance.sml b/balance.sml index 9a1f8b6..98c8657 100644 --- a/balance.sml +++ b/balance.sml @@ -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