kayitlar diye bir tablonuz olduğunu varsayalım.
her ödeme ve borçlanma için firma_id, zaman ve bakiye diye bir alan açarsınız.
bakiyedeki değer negatif (borçlanma) - ya da pozitif (ödeme) şeklinde olabilir.

sonra
SELECT sum(bakiye) FROM kayitlar WHERE zaman BETWEEN $baslangic_tarihi AND $bitis_tarihi GROUP BY zaman
dersen her gün sonundaki borç ve artı ödemeleri listeler.

Günlük firma ödemeleri listelemek için :
SELECT sum(bakiye) FROM kayitlar WHERE bakiye > 0 AND zaman > $baslangic_tarihi AND zaman < $bitis_tarihi GROUP BY zaman

Günlük firma borçlanmalarını görmek için
SELECT sum(bakiye) FROM kayitlar WHERE bakiye < 0 AND zaman > $baslangic_tarihi AND zaman < $bitis_tarihi GROUP BY zaman

Vesaire...
Bu yapı ile pek sorun yaşayacağını düşünmüyorum. Elbette tam olarak başka ne işlemlere ihtiyacın olduğunu bilmeden söylüyorum. Sum ile toplam sonuç alabileceğin gibi kayıtları teker teker de listeletebilirsin toplamadan...