X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=t%2Fhelper%2Fshipped_qty.t;h=ae97ccb8cb2c66b3d20913a2d00ee8d4b0845510;hb=af8f0a39dd0739e1ec5acdeee46bc28cd891de69;hp=7b3bc3afcea8fdb5960c9390f0a283c9d123b46e;hpb=867a69bcc3730b4a3f0be8e2221f21e16eb89960;p=kivitendo-erp.git diff --git a/t/helper/shipped_qty.t b/t/helper/shipped_qty.t index 7b3bc3afc..ae97ccb8c 100644 --- a/t/helper/shipped_qty.t +++ b/t/helper/shipped_qty.t @@ -49,10 +49,10 @@ for my $i ( 1 .. 4 ) { new_part( %part_defaults, partnumber => $i, description => "part $i test" )->save; }; -my $part1 = SL::DB::Manager::Part->find_by( partnumber => '1' ); -my $part2 = SL::DB::Manager::Part->find_by( partnumber => '2' ); -my $part3 = SL::DB::Manager::Part->find_by( partnumber => '3' ); -my $part4 = SL::DB::Manager::Part->find_by( partnumber => '4' ); +my $part1 = SL::DB::Manager::Part->find_by( partnumber => '1' ) or die; +my $part2 = SL::DB::Manager::Part->find_by( partnumber => '2' ) or die; +my $part3 = SL::DB::Manager::Part->find_by( partnumber => '3' ) or die; +my $part4 = SL::DB::Manager::Part->find_by( partnumber => '4' ) or die; my @part_ids; # list of all part_ids to run checks against push( @part_ids, $_->id ) foreach ( $part1, $part2, $part3, $part4 ); @@ -75,6 +75,7 @@ my $purchase_order = create_purchase_order( Rose::DB::Object::Helpers::forget_related($purchase_order, 'orderitems'); $purchase_order->orderitems; +local $::instance_conf->data->{shipped_qty_require_stock_out} = 1; SL::Helper::ShippedQty ->new(require_stock_out => 1) # should make no difference while there is no delivery order ->calculate($purchase_order) @@ -88,13 +89,15 @@ my $purchase_orderitem_part1 = SL::DB::Manager::OrderItem->find_by( parts_id => is($purchase_orderitem_part1->shipped_qty, 0, "OrderItem shipped_qty method ok"); is($purchase_order->closed, 0, 'purchase order is open'); +# set delivered only if the do is also stocked in ok(!$purchase_order->delivered, 'purchase order is not delivered'); note('converting purchase order to delivery order'); # create purchase delivery order from purchase order my $purchase_delivery_order = $purchase_order->convert_to_delivery_order; is($purchase_order->closed, 0, 'purchase order is open'); -ok($purchase_order->delivered, 'purchase order is now delivered'); +note('purchase order is not general now delivered'); +ok(!$purchase_order->delivered, 'purchase order is not delivered'); SL::Helper::ShippedQty ->new(require_stock_out => 0) @@ -258,52 +261,32 @@ ok($sales_order_opt->{delivered}, "require_stock_out => clear_up(); { -# legacy unlinked scenario: +# edge case: # -# order with two positions of the same part, qtys: 5, 3. -# 3 linked delivery orders, with positions: -# 1: 3 unlinked -# 2: 1 linked to 1, 3 linked to 2 -# 3: 1 linked to 1 +# suppose an order was delivered, and someone removes one item from the delivery order. +# make sure the order is then shown as not delivered. # -# should be resolved under fill_up as 5/3, but gets resolved as 4/4 - my $part = new_part()->save; - my $order = create_sales_order( - orderitems => [ - create_order_item(part => $part, qty => 5), - create_order_item(part => $part, qty => 3), - ], - )->save; - my $do1 = create_sales_delivery_order( - orderitems => [ - create_delivery_order_item(part => $part, qty => 3), - ], + 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), + ] ); - my $do2 = create_sales_delivery_order( - orderitems => [ - create_delivery_order_item(part => $part, qty => 1), - create_delivery_order_item(part => $part, qty => 3), - ], - ); - my $do3 = create_sales_delivery_order( - orderitems => [ - create_delivery_order_item(part => $part, qty => 1), - ], - ); - $order->link_to_record($do1); - $order->link_to_record($do2); - $order->items_sorted->[0]->link_to_record($do2->items_sorted->[0]); - $order->items_sorted->[1]->link_to_record($do2->items_sorted->[1]); - $order->link_to_record($do3); - $order->items_sorted->[0]->link_to_record($do3->items->[0]); + $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 => 1, require_stock_out => 0) - ->calculate($order) + ->new(require_stock_out => 0) + ->calculate($sales_order) ->write_to_objects; - is $order->items_sorted->[0]->{shipped_qty}, 5, 'unlinked legacy position test 1'; - is $order->items_sorted->[1]->{shipped_qty}, 3, 'unlinked legacy position test 2'; + ok !$sales_order->delivered, 'after deleting a position from a delivery order, the order is undelivered again'; } clear_up();