|
@@ -156,8 +156,10 @@
|
|
|
(defun %saver/format-info (payments salary)
|
|
(defun %saver/format-info (payments salary)
|
|
|
(let ((payments-info
|
|
(let ((payments-info
|
|
|
(loop for payment in payments
|
|
(loop for payment in payments
|
|
|
|
|
+ for idx from 1
|
|
|
for info = (saver/get-payment-info payment salary)
|
|
for info = (saver/get-payment-info payment salary)
|
|
|
- collect (format nil "~A on [~A]: saved ~$ of ~$, left ~$ in ~A periods"
|
|
|
|
|
|
|
+ collect (format nil "~D) ~A on [~A]: saved ~$ of ~$, left ~$ in ~A periods"
|
|
|
|
|
+ idx
|
|
|
(saver/payment-name payment)
|
|
(saver/payment-name payment)
|
|
|
(saver/payment-schedule payment)
|
|
(saver/payment-schedule payment)
|
|
|
(/ (getf info :saved-amount) 100)
|
|
(/ (getf info :saved-amount) 100)
|
|
@@ -201,12 +203,27 @@
|
|
|
#\- (elt groups 3)))
|
|
#\- (elt groups 3)))
|
|
|
(encode-universal-time 0 0 0 day month year))
|
|
(encode-universal-time 0 0 0 day month year))
|
|
|
(get-universal-time)))))
|
|
(get-universal-time)))))
|
|
|
- (saver/parse-schedule (elt groups 2))
|
|
|
|
|
- (db/saver/add-payment chat-id payment)
|
|
|
|
|
|
|
+ (saver/get-next-time (saver/parse-schedule (saver/payment-schedule payment))
|
|
|
|
|
+ (get-universal-time))
|
|
|
|
|
+ (handler-case
|
|
|
|
|
+ (db/saver/add-payment chat-id payment)
|
|
|
|
|
+ (error (e) (send-response chat-id (format nil "Payment '~A' exists!"
|
|
|
|
|
+ (saver/payment-name payment)))))
|
|
|
(saver/send-info chat-id))
|
|
(saver/send-info chat-id))
|
|
|
(send-response chat-id "Bad format. /saver add <title> <amount> <cron> [started]"))))
|
|
(send-response chat-id "Bad format. /saver add <title> <amount> <cron> [started]"))))
|
|
|
|
|
|
|
|
-(defun saver/del-payment (chat-id args))
|
|
|
|
|
|
|
+(defun saver/del-payment (chat-id args)
|
|
|
|
|
+ (handler-case
|
|
|
|
|
+ (let ((payment (elt (db/saver/get-payments chat-id) (1- (parse-integer (car args)))))
|
|
|
|
|
+ (salary (db/saver/get-salary chat-id)))
|
|
|
|
|
+ (db/saver/del-payment chat-id (saver/payment-name payment))
|
|
|
|
|
+ (send-response chat-id
|
|
|
|
|
+ (format nil "'~A' removed.~@[ Get ~$ from savings.~]"
|
|
|
|
|
+ (saver/payment-name payment)
|
|
|
|
|
+ (and salary
|
|
|
|
|
+ (/ (getf (saver/get-payment-info payment salary) :saved-amount)
|
|
|
|
|
+ 100)))))
|
|
|
|
|
+ (error (e) (send-response chat-id (format nil "/saver del <idx> [~A]" e)))))
|
|
|
|
|
|
|
|
(def-message-cmd-handler handler-cmd-save (:save :saver)
|
|
(def-message-cmd-handler handler-cmd-save (:save :saver)
|
|
|
(if (null args)
|
|
(if (null args)
|