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;
: $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;
# 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}) {
} } @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
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'),
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]);
}