you have to change your query to query first from a Calendar table of some sort, which contains all possible dates.
then your CTE left joins to that Calendar table.
with that in place, you'll be able to get zero totals for dates that had no data form the other tables.
...
FROM CalendarTable
LEFT OUTER JOIN cte d
ON CalendarTable.TheDate = d.Date
...
there's quite a few example of it here on ssc:
http://www.sqlservercentral.com/search/?q=calendar+table
Lowell