Partitioning not working need primary key?
The problem is that the function (MONTH()) and the LESS THAN values are incompatible. 

Apart from the fact that I don't see the value of using TO_DAYS() (what is the advantage there compared to a simple date?), you should use (TO_DAYS(receiptDate)) instead of (MONTH(receiptDate)). 

Or, more simply (if you want a day-by-day partitioning), I'd write just 

RANGE COLUMNS (receiptDate) 
... 
LESS THAN ('2012-10-20')


See a very simple working example at SQLFiddle.