return $self->js->render($self);
}
- flash_later('info', 'The order has been saved');
+ flash_later('info', $::locale->text('The order has been saved'));
my @redirect_params = (
action => 'edit',
type => $self->type,
$new_attr{sellprice} = $part->sellprice if ! $item->sellprice;
$new_attr{discount} = $cv_discount if ! $item->discount;
+ # add_custom_variables adds cvars to an orderitem with no cvars for saving, but
+ # they cannot be retrieved via custom_variables until the order/orderitem is
+ # saved. Adding empty custom_variables to new orderitem here solves this problem.
+ $new_attr{custom_variables} = [];
+
$item->assign_attributes(%new_attr);
- $item->id(join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000)) if !$item->id;
$self->order->add_items($item);
$self->_recalc();
- my $row_as_html = $self->p->render('order/tabs/_row', ITEM => $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);
$self->js
- ->append('#row_table_id tbody', $row_as_html)
+ ->append('#row_table_id', $row_as_html)
->val('#add_item_parts_id', '')
->val('#add_item_parts_id_name', '')
->val('#add_item_description', '')
->val('#add_item_sellprice_as_number', '')
->val('#add_item_discount_as_percent', '')
->run('row_table_scroll_down')
+ ->run('row_set_keyboard_events_by_id', $item_id)
->focus('#add_item_parts_id_name');
$self->_js_redisplay_amounts_and_taxes;
sub _save {
my ($self) = @_;
+ # autovivify all cvars that are not in the form (cvars_by_config can do it)
+ foreach my $item (@{ $self->order->items }) {
+ $item->cvars_by_config;
+ }
+
my $errors = [];
my $db = $self->order->db;