use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(item_ids_to_delete) ],
- 'scalar --get_set_init' => [ qw(order valid_types type cv p multi_items_models all_price_factors) ],
+ 'scalar --get_set_init' => [ qw(order valid_types type cv p multi_items_models all_price_factors search_cvpartnumber) ],
);
->focus( '#order_' . $self->cv . '_id');
$self->js_redisplay_amounts_and_taxes;
+ $self->js_redisplay_cvpartnumbers;
$self->js->render();
}
$self->recalc();
+ $self->get_item_cvpartnumber($item);
+
my $item_id = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000);
my $row_as_html = $self->p->render('order/tabs/_row',
- ITEM => $item,
- ID => $item_id,
- TYPE => $self->type,
- ALL_PRICE_FACTORS => $self->all_price_factors
+ ITEM => $item,
+ ID => $item_id,
+ TYPE => $self->type,
+ ALL_PRICE_FACTORS => $self->all_price_factors,
+ SEARCH_CVPARTNUMBER => $self->search_cvpartnumber,
);
$self->js
$self->order->add_items( $item );
$self->recalc();
+ $self->get_item_cvpartnumber($item);
my $item_id = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000);
my $row_as_html = $self->p->render('order/tabs/_row',
- ITEM => $item,
- ID => $item_id,
- TYPE => $self->type,
- ALL_PRICE_FACTORS => $self->all_price_factors
+ ITEM => $item,
+ ID => $item_id,
+ TYPE => $self->type,
+ ALL_PRICE_FACTORS => $self->all_price_factors,
+ SEARCH_CVPARTNUMBER => $self->search_cvpartnumber,
);
$self->js
->append('#row_table_id', $row_as_html);
$self->recalc();
foreach my $item (@items) {
+ $self->get_item_cvpartnumber($item);
my $item_id = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000);
my $row_as_html = $self->p->render('order/tabs/_row',
- ITEM => $item,
- ID => $item_id,
- TYPE => $self->type,
- ALL_PRICE_FACTORS => $self->all_price_factors
+ ITEM => $item,
+ ID => $item_id,
+ TYPE => $self->type,
+ ALL_PRICE_FACTORS => $self->all_price_factors,
+ SEARCH_CVPARTNUMBER => $self->search_cvpartnumber,
);
$self->js->append('#row_table_id', $row_as_html);
my ($self) = @_;
my %sort_keys = (
- partnumber => sub { $_[0]->part->partnumber },
- description => sub { $_[0]->description },
- qty => sub { $_[0]->qty },
- sellprice => sub { $_[0]->sellprice },
- discount => sub { $_[0]->discount },
+ partnumber => sub { $_[0]->part->partnumber },
+ description => sub { $_[0]->description },
+ qty => sub { $_[0]->qty },
+ sellprice => sub { $_[0]->sellprice },
+ discount => sub { $_[0]->discount },
+ cvpartnumber => sub { $_[0]->{cvpartnumber} },
);
+ $self->get_item_cvpartnumber($_) for @{$self->order->items_sorted};
+
my $method = $sort_keys{$::form->{order_by}};
my @to_sort = map { { old_pos => $_->position, order_by => $method->($_) } } @{ $self->order->items_sorted };
if ($::form->{sort_dir}) {
->insertBefore($self->build_tax_rows, '#amount_row_id');
}
+sub js_redisplay_cvpartnumbers {
+ my ($self) = @_;
+
+ $self->get_item_cvpartnumber($_) for @{$self->order->items_sorted};
+
+ my @data = map {[$_->{cvpartnumber}]} @{ $self->order->items_sorted };
+
+ $self->js
+ ->run('kivi.Order.redisplay_cvpartnumbers', \@data);
+}
+
sub js_reset_order_and_item_ids_after_save {
my ($self) = @_;
->val ('[name="orderitem_ids[+]"][value="' . $form_item_id . '"]', $self->order->items_sorted->[$idx]->id)
->val ('#item_' . $form_item_id, $self->order->items_sorted->[$idx]->id)
->attr('#item_' . $form_item_id, "id", 'item_' . $self->order->items_sorted->[$idx]->id);
+ } continue {
$idx++;
}
$self->js->val('[name="converted_from_orderitems_ids[+]"]', '');
return $cv;
}
+sub init_search_cvpartnumber {
+ my ($self) = @_;
+
+ my $user_prefs = SL::Helper::UserPreferences::PartPickerSearch->new();
+ my $search_cvpartnumber;
+ $search_cvpartnumber = !!$user_prefs->get_sales_search_customer_partnumber() if $self->cv eq 'customer';
+ $search_cvpartnumber = !!$user_prefs->get_purchase_search_makemodel() if $self->cv eq 'vendor';
+
+ return $search_cvpartnumber;
+}
+
sub init_p {
SL::Presenter->get;
}
} } @all_objects;
}
+ $self->get_item_cvpartnumber($_) for @{$self->order->items_sorted};
+
$::request->{layout}->use_javascript("${_}.js") for qw(kivi.SalesPurchase kivi.Order kivi.File ckeditor/ckeditor ckeditor/adapters/jquery edit_periodic_invoices_config calculate_qty);
$self->setup_edit_action_bar;
}
: '';
}
+sub get_item_cvpartnumber {
+ my ($self, $item) = @_;
+
+ 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;
+ } elsif ($self->cv eq 'customer') {
+ my @cps = grep { $_->customer_id eq $self->order->customervendor->id } @{$item->part->customerprices};
+ $item->{cvpartnumber} = $cps[0]->customer_partnumber if scalar @cps;
+ }
+}
+
sub sales_order_type {
'sales_order';
}