X-Git-Url: http://git.hcoop.net/hcoop/portal.git/blobdiff_plain/9095d20e1eed887a52e217a884c88d3b409da777..13f4f111d192012443342f75f2608a59dad413a2:/balance.sml diff --git a/balance.sml b/balance.sml index 1b715fa..59622de 100644 --- a/balance.sml +++ b/balance.sml @@ -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 @@ -79,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