I think I found your problem (at least I hope so)...
you are calling:
=Code.ReturnXML(Parameters!C.Value,"C","CUSTOMER","CUSTOMER_NUMBER")
and in the procedure you are going:
INNER JOIN
@C.nodes('/C/Customer') as m(item) on (CS.CUSTOMER_NUMBER) = m.item.value('Customer_Number[1]','integer')
I just ran a test, and found out that this is CaSe SeNsItIvE.
Change your select to:
INNER JOIN
@C.nodes('/C/CUSTOMER') as m(item) on (CS.CUSTOMER_NUMBER) = m.item.value('CUSTOMER_NUMBER[1]','integer')
If you're getting no result set, then the improper case is in the nodes(). If you only get a NULL result, then it's in the value().
Most likely, it's in both.
Wayne
Microsoft Certified Master: SQL Server 2008
Author - SQL Server T-SQL Recipes