Not sure if i follow...
SUM()
does indeed evaluate signed numbers correctly. Eg sum(1, -1) = 0, sum(-1, -1)=-2 and sum(1,1) = 2 See:
select sum(a)
from (
select 1 as a
union all select -1
) i
select sum(a)
from (
select -1 as a
union all select -1
) i
select sum(a)
from (
select 1 as a
union all select 1
) i
However, in your query, you write IFNULL(SUM(s.summa),0.00): This means that your query first sums all s.summa, and AFTER that evaluates IFNULL.
I suppose you want to evalue whether s.summa is null before you add them together. changing the query to SUM(IFNULL(s.summa),0.00) should give you the proper result.