join: update library paths, install to new location
[hcoop/portal.git] / money.sml
index d0668a4..8fa5ed7 100644 (file)
--- a/money.sml
+++ b/money.sml
@@ -276,7 +276,7 @@ fun costBase amt =
 val monthlyCost = 900.0
 val graceMonths = 1
 
-val baseDues = 5.0
+val baseDues = 7.0
 
 fun delinquentPledgers () =
     let
@@ -292,17 +292,15 @@ fun delinquentPledgers () =
     end
 
 fun resetPledges ids =
-    raise Fail ($`UPDATE WebUser SET shares = 1 WHERE id IN (^(String.concatWith ", " (List.map C.intToSql ids)))`)
+    ignore (C.dml (getDb ()) ($`UPDATE WebUser SET shares = 1 WHERE id IN (^(String.concatWith ", " (List.map C.intToSql ids)))`))
 
 fun freezeworthyPledgers () =
     let
-       val baseDues = 5.0
-
-       fun makeRow [id, name, amount] = {id = C.intFromSql id, name = C.stringFromSql name,
-                                         balance = C.realFromSql amount}
+       fun makeRow [id, name, amount, j] = {id = C.intFromSql id, name = C.stringFromSql name,
+                                            balance = C.realFromSql amount, joinedThisMonth = C.boolFromSql j}
          | makeRow row = Init.rowError ("Bad freezeworthyPledgers", row)
     in
-       C.map (getDb ()) makeRow ($`SELECT WebUserPaying.id, WebUserPaying.name, amount
+       C.map (getDb ()) makeRow ($`SELECT WebUserPaying.id, WebUserPaying.name, amount, CURRENT_TIMESTAMP - joined < INTERVAL '1 month'
                                    FROM WebUserPaying JOIN Balance ON Balance.id = bal
                                    WHERE amount >= ^(C.realToSql baseDues) * ^(C.intToSql graceMonths)
                                      AND amount < ^(C.realToSql baseDues) * ^(C.intToSql (graceMonths + 1))
@@ -311,13 +309,11 @@ fun freezeworthyPledgers () =
 
 fun bootworthyPledgers () =
     let
-       val baseDues = 5.0
-
-       fun makeRow [id, name, amount] = {id = C.intFromSql id, name = C.stringFromSql name,
-                                         balance = C.realFromSql amount}
+       fun makeRow [id, name, amount, j] = {id = C.intFromSql id, name = C.stringFromSql name,
+                                            balance = C.realFromSql amount, joinedThisMonth = C.boolFromSql j}
          | makeRow row = Init.rowError ("Bad bootworthyPledgers", row)
     in
-       C.map (getDb ()) makeRow ($`SELECT WebUserPaying.id, WebUserPaying.name, amount
+       C.map (getDb ()) makeRow ($`SELECT WebUserPaying.id, WebUserPaying.name, amount, CURRENT_TIMESTAMP - joined < INTERVAL '1 month'
                                    FROM WebUserPaying JOIN Balance ON Balance.id = bal
                                    WHERE amount < ^(C.realToSql baseDues) * ^(C.intToSql graceMonths)
                                    ORDER BY name`)