So the sync doesnt actually look at the line item amount when syncing between the two systems. It uses what is stored within the QuickBooks inventory list as the amount.
For instance:
Widget 10$ ea listed as an Non-Inventory Item within QuickBooks.
If this is applied to an invoice within QuickBooks and synced over to MSCRM all that is transmitted is "Widget x10". The amount is stored within the price book of CRM. So when the line item appears within an Invoice in MSCRM it shows up as Widget x10 for 100 dollars, because it looks up the amount from the price book. CRM allows for overwritting of the price book value with a custom amount at the time of creation (or during an edit), but the software doesnt. If you were to change the line item amount to 4$ and thus the amount of the invoce to 40$ and resync the record, QuickBooks would still show as 100$ since its using the amount from the Inventory list.
So what I am assuming here is that the product you are testing with has a value of 0$ within QuickBooks and when you synced the product to CRM it came accross as 0$. Then you added this product to an invoice and then chained the line item amount to somthing greater than 0$. But when you sync back its going to still use the 0$ amount stored within the inventory list.
Does that make sense?