X-Git-Url: http://git.hcoop.net/hcoop/portal.git/blobdiff_plain/8ffa2c9e02d6876b95564d4d515a4661cc65e94e..ff21b0b604e36522aa9d91d90d6e93d792c438cf:/balance.sml diff --git a/balance.sml b/balance.sml index 9943944..59622de 100644 --- a/balance.sml +++ b/balance.sml @@ -52,6 +52,9 @@ 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 () = @@ -59,7 +62,22 @@ fun listUnownedBalances () = 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 = @@ -72,17 +90,34 @@ 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 + FROM Balance JOIN WebUser + ON Balance.name = WebUser.name + AND WebUser.bal = Balance.id + JOIN Membership + ON Membership.usr = WebUser.id + AND Membership.grp = 1`) of [amt] => C.realFromSql amt | _ => raise Fail "sumOwnedBalance: no rows" +fun isNegative (bal : balance) = #amount bal < 0.0 + +fun depositAmount _ = 7.0 * 3.0 +(*fun depositAmount bal = + let + val db = getDb () + + val totalShares = case C.oneRow db "SELECT SUM(shares) FROM WebUserPaying" of + [n] => C.intFromSql n + | row => Init.rowError ("Bad depositAmount share count result", row) + in + 3.0 * 900.0 / real totalShares + end*) + end