My understanding of ASC 606/IFRS 15/ASU 2014-09 is that it relates to recognition of revenue and expenses related to contracts.
With xTuple you can control revenue and cost recognition through the invoicing and shipping processes.
You would use the invoicing process to recognize revenue and the shipping process to recognize costs.
Procedurally you could ship the cost component of the contract to recognize cost and then invoice the shipment to recognize revenue.
Any funds received in advance of performance can be recorded as a liability upon receipt. As revenue is recognized the liability would be reduced.
This is standard functionality in the xTuple application. With the available scripting tools, it is possible to add business rules rules to any implementation of xTuple.