-- Log of internal transfers
DROP VIEW IF EXISTS History;
CREATE VIEW History AS
  -- internal transfers with account as source
  SELECT DATE(timestamp) AS date,
         d.purpose       AS purpose,
         d.category      AS category,
         d.debtor        AS account,
         t.credId        AS credId,
         t.amount        AS debit,
         NULL            AS credit,
         d.targetCredit  AS contra,
         d.billId        AS billId,
         t.note          AS note
  FROM Transfer t
    LEFT JOIN Debit  AS d ON d.billId = t.billId
  -- internal transfers with account as target
  UNION
  SELECT DATE(timestamp) AS date,
         d.purpose       AS purpose,
         d.category      AS category,
         c.account       AS account,
         d.targetCredit  AS credId,
         NULL            AS debit,
         t.amount        AS credit,
         t.credId        AS contra,
         d.billId        AS billId,
         t.note          AS note
  FROM Transfer t
    LEFT JOIN Debit  AS d ON d.billId = t.billId
    LEFT JOIN Credit AS c ON c.credId = d.targetCredit
  ORDER BY date ASC
;
