C_Order isInvoiced is not Updated when Invoice Completed
Description
Environment
Activity

Martin Schönbeck February 1, 2021 at 11:04 AMEdited
an order was set to invoice on 'After delivery'. Due to a request of the customer a partly shipment was invoiced by creating an invoice manually and adding that shipment 'create lines from' . Later on the remaining shipments were done and an invoice generated by 'generate invoice (manual)'. This invoice contained the lines of the previously invoiced shipment and it contained it with the full amount. Thus it was invoiced double. So either in InvoiceGenerate.java even on complete order the amount to be invoiced must be calculated or on completing invoice (at the latest point) IsInvoiced must be set true.
I wonder, whether IsInvoiced shouldn't be removed as it is redundant and obviously errorprone.
Addition: I was talking about this flag on m_InOutLine, but because it was discussed here I think it’s worth to take both flags the same way.
Carlos Ruiz June 25, 2020 at 3:22 PM
Closing as Potential Idea - 3 years without attention from community

Nicolas Micoud June 25, 2020 at 4:25 AM
Hi,
As it is a column from Compiere times, I would :
deprecate it (as it was never used in code, but maybe used by implementors who can manage it with their own code)
add another column (list) (something like 'InvoiceStatus').
Then the question is when does an invoiced is considered as 'totally invoiced' ? Should we use qty ? price ? both ?
I think there is same kind of column on M_InOut (IsDelivered).
Nicolas

Matheus Marcelino June 25, 2020 at 3:40 AM
Triaged by Matheus Marcelino.
Reading the source code, there isnt implementation of this flag.
I agree with Norbert, but i want to improve the expected behavior:
1-) Change de reference to List , with the following values:
I - Invoiced
N - Not Invoiced
P - Partial Invoiced
O - Over Invoiced
With this scenario, we can use more indicatives css styles.
WDYT ?
tested: both sales and purchase side.
awaited behaviour: , when shipment fully invoiced/over-invoiced then isInvoiced set to 'Y'