|
|
@@ -280,6 +280,19 @@
|
|
|
rcv-account rcv-amount rcv-currency
|
|
|
snd-account snd-amount snd-currency)))
|
|
|
|
|
|
+(defun params-card-refund (tr pockets)
|
|
|
+ (let* ((description (agets tr "description"))
|
|
|
+ (snd-account (format-pocket-account (find-pocket (agets tr "account" "id")
|
|
|
+ pockets)))
|
|
|
+ (snd-amount (get-amount (agets tr "amount")))
|
|
|
+ (snd-currency (agets tr "currency"))
|
|
|
+ (rcv-account "income:refund")
|
|
|
+ (rcv-amount (get-amount (* -1 (agets tr "counterpart" "amount"))))
|
|
|
+ (rcv-currency (agets tr "counterpart" "currency")))
|
|
|
+ (values description nil
|
|
|
+ rcv-account rcv-amount rcv-currency
|
|
|
+ snd-account snd-amount snd-currency)))
|
|
|
+
|
|
|
(defun transaction->entry (tr pockets)
|
|
|
(let* ((date (get-date (agets tr "startedDate")))
|
|
|
(type (keyify (agets tr "type"))))
|
|
|
@@ -292,7 +305,8 @@
|
|
|
(:atm (params-atm tr pockets))
|
|
|
(:transfer (params-transfer tr pockets))
|
|
|
(:fee (params-fee tr pockets))
|
|
|
- (:card-payment (params-card-payment tr pockets)))
|
|
|
+ (:card-payment (params-card-payment tr pockets))
|
|
|
+ (:card-refund (params-card-refund tr pockets)))
|
|
|
(when snd-account
|
|
|
(pta-ledger:make-entry
|
|
|
:date date
|
|
|
@@ -343,17 +357,21 @@
|
|
|
(poller-cant-get-token () "Не смог получить данные. Попробуй перелогинься. /revolut <phone> <pin>"))
|
|
|
:parse-mode "markdown"))
|
|
|
|
|
|
+(defun handle-list (enable)
|
|
|
+ (lists-set-entry :revolut *chat-id* enable)
|
|
|
+ (bot-send-message (if enable "Рассылаю обновления" "Молчу, пока не спросишь")))
|
|
|
+
|
|
|
(def-message-cmd-handler handle-cmd-revolut (:revolut :revo)
|
|
|
(let ((a0 (car *args*)))
|
|
|
(cond
|
|
|
((= 2 (length *args*)) (apply 'handle-auth *args*))
|
|
|
+ ((equal a0 "on") (handle-list t))
|
|
|
+ ((equal a0 "off") (handle-list nil))
|
|
|
((or (null *args*) (equal a0 "bal")) (handle-balance))
|
|
|
(:otherwise (handle-recent (parse-integer a0 :junk-allowed t))))))
|
|
|
|
|
|
-
|
|
|
-(defun process-new (changes)
|
|
|
- (let ((ledger-package (find-package :chatikbot.plugins.ledger))
|
|
|
- (transactions (prepare-entries changes)))
|
|
|
+(defun process-new (transactions)
|
|
|
+ (let ((ledger-package (find-package :chatikbot.plugins.ledger)))
|
|
|
(if ledger-package
|
|
|
(let ((new-chat-entry (symbol-function
|
|
|
(intern "LEDGER/NEW-CHAT-ENTRY" ledger-package))))
|
|
|
@@ -363,6 +381,6 @@
|
|
|
|
|
|
(defcron process-revolut ()
|
|
|
(poller-poll-lists :revolut
|
|
|
- #'get-transactions-last
|
|
|
- #'process-new
|
|
|
- :key (agetter "startedDate")))
|
|
|
+ (lambda () (prepare-entries (get-transactions-last)))
|
|
|
+ #'process-new
|
|
|
+ :key #'pta-ledger:entry-date))
|