use SL::Controller::Helper::GetModels;
-use List::Util qw(first);
+use List::Util qw(first sum0);
use List::UtilsBy qw(sort_by uniq_by);
use List::MoreUtils qw(any none pairwise first_index);
use English qw(-no_match_vars);
SELF => $self,
);
- $self->js
- ->append('#row_table_id', $row_as_html);
+ if ($::form->{insert_before_item_id}) {
+ $self->js
+ ->before ('.row_entry:has(#item_' . $::form->{insert_before_item_id} . ')', $row_as_html);
+ } else {
+ $self->js
+ ->append('#row_table_id', $row_as_html);
+ }
if ( $item->part->is_assortment ) {
$form_attr->{qty_as_number} = 1 unless $form_attr->{qty_as_number};
ID => $item_id,
SELF => $self,
);
- $self->js
- ->append('#row_table_id', $row_as_html);
+ if ($::form->{insert_before_item_id}) {
+ $self->js
+ ->before ('.row_entry:has(#item_' . $::form->{insert_before_item_id} . ')', $row_as_html);
+ } else {
+ $self->js
+ ->append('#row_table_id', $row_as_html);
+ }
};
};
$self->js
->val('.add_item_input', '')
->run('kivi.Order.init_row_handlers')
- ->run('kivi.Order.row_table_scroll_down')
->run('kivi.Order.renumber_positions')
->focus('#add_item_parts_id_name');
+ $self->js->run('kivi.Order.row_table_scroll_down') if !$::form->{insert_before_item_id};
+
$self->js_redisplay_amounts_and_taxes;
$self->js->render();
}
SELF => $self,
);
- $self->js->append('#row_table_id', $row_as_html);
+ if ($::form->{insert_before_item_id}) {
+ $self->js
+ ->before ('.row_entry:has(#item_' . $::form->{insert_before_item_id} . ')', $row_as_html);
+ } else {
+ $self->js
+ ->append('#row_table_id', $row_as_html);
+ }
}
$self->js
->run('kivi.Order.close_multi_items_dialog')
->run('kivi.Order.init_row_handlers')
- ->run('kivi.Order.row_table_scroll_down')
->run('kivi.Order.renumber_positions')
->focus('#add_item_parts_id_name');
+ $self->js->run('kivi.Order.row_table_scroll_down') if !$::form->{insert_before_item_id};
+
$self->js_redisplay_amounts_and_taxes;
$self->js->render();
}
$self->js
->run('kivi.Order.update_sellprice', $item_id, $item->sellprice_as_number)
- ->val('.row_entry:has(#item_' . $item_id . ') [name = "order.orderitems[].description"]', $item->description)
- ->val('.row_entry:has(#item_' . $item_id . ') [name = "order.orderitems[].longdescription"]', $item->longdescription);
+ ->html('.row_entry:has(#item_' . $item_id . ') [name = "partnumber"] a', $item->part->partnumber)
+ ->val ('.row_entry:has(#item_' . $item_id . ') [name = "order.orderitems[].description"]', $item->description)
+ ->val ('.row_entry:has(#item_' . $item_id . ') [name = "order.orderitems[].longdescription"]', $item->longdescription);
+
+ if ($self->search_cvpartnumber) {
+ $self->get_item_cvpartnumber($item);
+ $self->js->html('.row_entry:has(#item_' . $item_id . ') [name = "cvpartnumber"]', $item->{cvpartnumber});
+ }
}
$self->recalc();
$self->order->currency_id($::instance_conf->get_currency_id());
my %pat = $self->order->calculate_prices_and_taxes();
+
$self->{taxes} = [];
- foreach my $tax_chart_id (keys %{ $pat{taxes} }) {
- my $tax = SL::DB::Manager::Tax->find_by(chart_id => $tax_chart_id);
+ foreach my $tax_id (keys %{ $pat{taxes_by_tax_id} }) {
+ my $netamount = sum0 map { $pat{amounts}->{$_}->{amount} } grep { $pat{amounts}->{$_}->{tax_id} == $tax_id } keys %{ $pat{amounts} };
- my @amount_keys = grep { $pat{amounts}->{$_}->{tax_id} == $tax->id } keys %{ $pat{amounts} };
- push(@{ $self->{taxes} }, { amount => $pat{taxes}->{$tax_chart_id},
- netamount => $pat{amounts}->{$amount_keys[0]}->{amount},
- tax => $tax });
+ push(@{ $self->{taxes} }, { amount => $pat{taxes_by_tax_id}->{$tax_id},
+ netamount => $netamount,
+ tax => SL::DB::Tax->new(id => $tax_id)->load });
}
-
pairwise { $a->{linetotal} = $b->{linetotal} } @{$self->order->items_sorted}, @{$pat{items}};
}
sub get_item_cvpartnumber {
my ($self, $item) = @_;
+ return if !$self->search_cvpartnumber;
+ return if !$self->order->customervendor;
+
if ($self->cv eq 'vendor') {
my @mms = grep { $_->make eq $self->order->customervendor->id } @{$item->part->makemodels};
$item->{cvpartnumber} = $mms[0]->model if scalar @mms;