->replaceWith('#business_info_row', $self->build_business_info_row)
->val( '#order_taxzone_id', $self->order->taxzone_id)
->val( '#order_taxincluded', $self->order->taxincluded)
+ ->val( '#order_currency_id', $self->order->currency_id)
->val( '#order_payment_id', $self->order->payment_id)
->val( '#order_delivery_term_id', $self->order->delivery_term_id)
->val( '#order_intnotes', $self->order->intnotes)
->val( '#language_id', $self->order->$cv_method->language_id)
- ->focus( '#order_' . $self->cv . '_id');
+ ->focus( '#order_' . $self->cv . '_id')
+ ->run('kivi.Order.update_exchangerate');
$self->js_redisplay_amounts_and_taxes;
$self->js_redisplay_cvpartnumbers;
$self->js->render();
}
+sub action_update_exchangerate {
+ my ($self) = @_;
+ my $data = {};
+
+ $data = {
+ is_standard => $self->order->currency_id == $::instance_conf->get_currency_id,
+ currency_name => $self->order->currency->name,
+ exchangerate => $self->order->exchangerate_as_null_number,
+ };
+
+ $self->render(\SL::JSON::to_json($data), { type => 'json', process => 0 });
+}
+
# redisplay item rows if they are sorted by an attribute
sub action_reorder_items {
my ($self) = @_;
my $form_orderitems = delete $::form->{order}->{orderitems};
my $form_periodic_invoices_config = delete $::form->{order}->{periodic_invoices_config};
+ my $exchangerate_as_null_number = delete $::form->{order}->{exchangerate_as_null_number};
$order->assign_attributes(%{$::form->{order}});
$periodic_invoices_config->assign_attributes(%$periodic_invoices_config_attrs);
}
+ # set exchangerate after transdate and currency_id
+ $order->assign_attributes(exchangerate_as_null_number => $exchangerate_as_null_number) if $order->currency_id;
+
# remove deleted items
$self->item_ids_to_delete([]);
foreach my $idx (reverse 0..$#{$order->orderitems}) {
sub setup_order_from_cv {
my ($order) = @_;
- $order->$_($order->customervendor->$_) for (qw(taxzone_id payment_id delivery_term_id));
+ $order->$_($order->customervendor->$_) for (qw(taxzone_id payment_id delivery_term_id currency_id));
$order->intnotes($order->customervendor->notes);
sub recalc {
my ($self) = @_;
- # bb: todo: currency later
- $self->order->currency_id($::instance_conf->get_currency_id());
+ $self->order->currency_id($::instance_conf->get_currency_id()) unless $self->order->currency_id;
my %pat = $self->order->calculate_prices_and_taxes();
my ($self) = @_;
$self->{all_taxzones} = SL::DB::Manager::TaxZone->get_all_sorted();
+ $self->{all_currencies} = SL::DB::Manager::Currency->get_all_sorted();
$self->{all_departments} = SL::DB::Manager::Department->get_all_sorted();
$self->{all_employees} = SL::DB::Manager::Employee->get_all(where => [ or => [ id => $self->order->employee_id,
deleted => 0 ] ],