I’m not sure there’s a bug. It’s a business process issue.
Sequence of events is important. Typically, the sequence is:
Sales Order > Delivery > Sales Invoice
In this case, if your delivery occurs in the current period and then your invoice is expected in the next month, you’d accrue for the revenue that should be linked with the delivery in the current period and reverse it in the next period waiting for the Sales Invoice to be submitted. You’d continue this accrual each following month until the Sales Invoice is actually submitted. ERPNext doesn’t currently have tools to automate this so your accountant would need to book these accruals manually.
Another case could be:
Sales Order > Sales Invoice > Delivery
In this case, you’re technically asking for a payment before the delivery is done. Meaning that you haven’t really earned the income. This could be taken as a request for an advance. If you have a reasonable expectation that the delivery will not take place in the same month as the booking of the invoice then the accurate way to book this would be
Sales Invoice - Month 1
Dr Customer
Cr Income recognised in advance
Delivery - Month 2
Dr Cost of sales
Cr Stock
Revenue Recognition by Accountant/System - Month 2
Dr Income recognised in advance
Cr Income
This way, income and expenses related to that income are recognised in the same period.
ERPNext could probably benefit from an Accrual Engine to automate these postings for both Sales and Purchase Goods-in-transit scenarios.