]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Controller/DeliveryOrder.pm
DeliveryOrder: Lagermengen Spalte
[mfinanz.git] / SL / Controller / DeliveryOrder.pm
index 6a653f8d523d33e014a34ed96b2f0b472e228d21..65334254906c6f5c96f797fd365762fd129b9286 100644 (file)
@@ -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]);
 }