+
+}
+
+{
+# edge case:
+#
+# suppose an order was delivered, and someone removes one item from the delivery order.
+# make sure the order is then shown as not delivered.
+#
+ my $sales_order = create_sales_order(
+ save => 1,
+ orderitems => [ create_order_item(part => new_part()->save, qty => 5),
+ create_order_item(part => new_part()->save, qty => 6),
+ create_order_item(part => new_part()->save, qty => 7),
+ ]
+ );
+ $sales_order->load;
+
+ my $delivery_order = SL::DB::DeliveryOrder->new_from($sales_order);
+ $delivery_order->save;
+
+ $delivery_order->items(@{ $delivery_order->items_sorted }[0..1]);
+ $delivery_order->save;
+
+ SL::Helper::ShippedQty
+ ->new(fill_up => 0, require_stock_out => 0)
+ ->calculate($sales_order)
+ ->write_to_objects;
+
+ ok !$sales_order->delivered, 'after deleting a position from a delivery order, the order is undelivered again';