Rational
Sometimes, there could be a problem with the shipment sent to the customer. A part of the shipment could be damaged during the shipping, or products are lost, … So we need to ship again the products (for free) without creating a new sale.
Proposal
We could extend sale complaint module to add shipment line as origin and add a new action “Reshipment’“ that will add new sale lines with product, quantities to reship, unit_price = 0 and origin= sale_complaint. Then we could reprocess the sale to create the new shipment.
On the invoice report, we should test to not display those added lines with origin sale_complaint and unit_price=0.