From 16fcea5cbb46af1697f366075e1c4bee74f87531 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Sat, 7 Jan 2017 15:56:28 +0100
Subject: [PATCH] Fix dividends parsing

---
 src/sakia/data/processors/dividends.py |  6 +++---
 src/sakia/services/transactions.py     | 14 ++++++++++++--
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/sakia/data/processors/dividends.py b/src/sakia/data/processors/dividends.py
index 578dc6d8..3a820666 100644
--- a/src/sakia/data/processors/dividends.py
+++ b/src/sakia/data/processors/dividends.py
@@ -61,7 +61,7 @@ class DividendsProcessor:
         for tx in transactions:
             txdoc = Transaction.from_signed_raw(tx.raw)
             for input in txdoc.inputs:
-                if input.source == "D" and input.index not in block_numbers:
+                if input.source == "D" and input.origin_id == identity.pubkey and input.index not in block_numbers:
                     block = await self._bma_connector.get(identity.currency,
                                                           bma.blockchain.block, req_args={'number': input.index})
 
@@ -69,8 +69,8 @@ class DividendsProcessor:
                                         pubkey=identity.pubkey,
                                         block_number=input.index,
                                         timestamp=block["medianTime"],
-                                        amount=input.amount,
-                                        base=input.base)
+                                        amount=block["dividend"],
+                                        base=block["unitbase"])
                     log_stream("Dividend of block {0}".format(dividend.block_number))
                     try:
                         self._repo.insert(dividend)
diff --git a/src/sakia/services/transactions.py b/src/sakia/services/transactions.py
index 7ba6b639..768d10c5 100644
--- a/src/sakia/services/transactions.py
+++ b/src/sakia/services/transactions.py
@@ -1,6 +1,7 @@
 from PyQt5.QtCore import QObject
 from sakia.data.entities.transaction import parse_transaction_doc
 from duniterpy.documents import SimpleTransaction
+from sakia.data.entities import Dividend
 import logging
 
 
@@ -47,8 +48,17 @@ class TransactionsService(QObject):
                             if not self._transactions_processor.find_by_hash(t.sha_hash)
                             and SimpleTransaction.is_simple(t)]
         connections_pubkeys = [c.pubkey for c in self._connections_processor.connections_to(self.currency)]
-        for (i, tx_doc) in enumerate(new_transactions):
-            for pubkey in connections_pubkeys:
+        for pubkey in connections_pubkeys:
+            if block_doc.ud:
+                dividend = Dividend(currency=self.currency,
+                                    pubkey=pubkey,
+                                    block_number=block_doc.number,
+                                    timestamp=block_doc.mediantime,
+                                    amount=block_doc.ud,
+                                    base=block_doc.unit_base)
+                self._dividends_processor.commit(dividend)
+
+            for (i, tx_doc) in enumerate(new_transactions):
                 tx = parse_transaction_doc(tx_doc, pubkey, block_doc.blockUID.number,  block_doc.mediantime, txid+i)
                 if tx:
                     new_transfers.append(tx)
-- 
GitLab