what's the value of CUT_OFF_DATE for the case that's not working? And are CUT_OFF_DATE and SALES_DATE both date columns? Could be that you need a date conversion in there, as your fixed string will not be evaluated as a date. Try this instead:
strSql = strSql + " (CASE WHEN NVL(C.CUT_OFF_DATE,to_date('31-JAN-2020', 'dd-MMM-yyyy'))<=A.SALES_DATE THEN 'Y' ELSE 'N' END) ORPOS " & vbCrLf