X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/7d32475eb64f96dd96b5212789c22aa1ff5a7339..7a9df994dcf984598e3602591d93e7d3cc09c378:/SL/Controller/DeliveryOrder.pm diff --git a/SL/Controller/DeliveryOrder.pm b/SL/Controller/DeliveryOrder.pm index 6a653f8d5..653342549 100644 --- a/SL/Controller/DeliveryOrder.pm +++ b/SL/Controller/DeliveryOrder.pm @@ -4,6 +4,7 @@ use strict; use parent qw(SL::Controller::Base); use SL::Helper::Flash qw(flash_later); +use SL::Helper::Number qw(_format_number_units); use SL::Presenter::Tag qw(select_tag hidden_tag div_tag); use SL::Locale::String qw(t8); use SL::SessionFile::Random; @@ -205,7 +206,7 @@ sub action_save_as_new { : $order->transdate; # Set new reqdate unless changed if it is enabled in client config - $new_attrs{reqdate} = $self->get_reqdate_by_type($order->reqdate, $saved_order->reqdate); + $new_attrs{reqdate} = $self->type_data->get_reqdate_by_type($order->reqdate, $saved_order->reqdate); # Update employee $new_attrs{employee} = SL::DB::Manager::Employee->current; @@ -1161,7 +1162,7 @@ sub make_order { # order here solves this problem. my $order; $order = SL::DB::DeliveryOrder->new(id => $::form->{id})->load(with => [ 'orderitems', 'orderitems.part' ]) if $::form->{id}; - $order ||= SL::DB::DeliveryOrder->new(orderitems => [], currency_id => $::instance_conf->get_currency_id(),); + $order ||= SL::DB::DeliveryOrder->new(orderitems => [], currency_id => $::instance_conf->get_currency_id(), order_type => $self->type_data->validate($::form->{type})); my $cv_id_method = $self->cv . '_id'; if (!$::form->{id} && $::form->{$cv_id_method}) { @@ -1582,6 +1583,8 @@ sub pre_render { } } @all_objects; } + $self->{template_args}{inout} = $self->type_data->properties('transfer'); + $self->get_item_cvpartnumber($_) for @{$self->order->items_sorted}; $::request->{layout}->use_javascript("${_}.js") for qw(kivi.SalesPurchase kivi.DeliveryOrder kivi.File ckeditor/ckeditor ckeditor/adapters/jquery @@ -1644,6 +1647,7 @@ sub setup_edit_action_bar { action => [ t8('Save and Invoice'), call => [ 'kivi.DeliveryOrder.save', 'save_and_invoice', $::instance_conf->get_order_warn_duplicate_parts ], + only_if => $self->type_data->show_menu("save_and_invoice"), ], action => [ t8('Save and AP Transaction'), @@ -1927,6 +1931,22 @@ sub store_pdf_to_webdav_and_filemanagement { return @errors; } +sub calculate_stock_in_out { + my ($self, $item) = @_; + + return "" if !$item->part || !$item->part->unit; + + my $in_out = $self->type_data->properties("transfer"); + + my $do_qty = $item->qty; + my $sum = sum0 map { $_->unit_obj->convert_to($_->qty, $item->unit_obj) } @{ $item->delivery_order_stock_entries }; + + my $matches = $do_qty == $sum; + my $content = _format_number_units($sum, 2, $item->unit_obj, $item->part->unit_obj); + + return $content; +} + sub init_type_data { SL::Controller::DeliveryOrder::TypeData->new($_[0]); }