Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision a04ea831

Von Tamino Steinert vor 1 Tag hinzugefügt

  • ID a04ea8317415a60616201d6d9311c13b5089c038
  • Vorgänger 8fdd7686

Beleg laden für Auftrag, Lieferschein und Reklamation angleichen

Setze die init-Objekte neu wenn neues Beleg-Objekt dem Controllers
zugewiesen wird. Die Funktion 'action_edit' ist nur zuständig fürs
initiale Laden eines bestehenden Belegs.

Unterschiede anzeigen:

SL/Controller/Order.pm
143 143

  
144 144
  $self->order($order);
145 145

  
146
  $self->action_edit();
146
  $self->reinit_after_new_order();
147

  
148
  $self->action_add();
147 149
}
148 150

  
149 151
sub action_add_from_email_journal {
......
166 168
# edit an existing order
167 169
sub action_edit {
168 170
  my ($self) = @_;
171
  die "No 'id' was given." unless $::form->{id};
169 172

  
170
  if ($::form->{id}) {
171
    $self->load_order;
172

  
173
    if ($self->order->is_sales && $::lx_office_conf{imap_client}->{enabled}) {
174
      my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{imap_client}});
175
      if ($imap_client) {
176
        $imap_client->update_email_files_for_record(record => $self->order);
177
      }
178
    }
179

  
180
  } else {
181
    # this is to edit an order from an unsaved order object
182

  
183
    # set item ids to new fake id, to identify them as new items
184
    foreach my $item (@{$self->order->items_sorted}) {
185
      $item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000);
186
    }
187
    # trigger rendering values for second row as hidden, because they
188
    # are loaded only on demand. So we need to keep the values from
189
    # the source.
190
    $_->{render_second_row} = 1 for @{ $self->order->items_sorted };
173
  $self->load_order;
191 174

  
192
    if (!$::form->{form_validity_token}) {
193
      $::form->{form_validity_token} = SL::DB::ValidityToken->create(scope => SL::DB::ValidityToken::SCOPE_ORDER_SAVE())->token;
175
  if ($self->order->is_sales && $::lx_office_conf{imap_client}->{enabled}) {
176
    my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{imap_client}});
177
    if ($imap_client) {
178
      $imap_client->update_email_files_for_record(record => $self->order);
194 179
    }
195 180
  }
196 181

  
197
  $self->recalc();
198 182
  $self->pre_render();
199 183
  $self->render(
200 184
    'order/form',
......
230 214
  my $target_type = SALES_ORDER_TYPE();
231 215
  my $order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate');
232 216
  $self->order($order);
217
  $self->reinit_after_new_order();
233 218

  
234
  $self->action_edit();
219
  $self->action_add();
235 220
}
236 221

  
237 222
# delete the order
......
1805 1790

  
1806 1791
  $self->order(SL::DB::Order->new(id => $::form->{id})->load);
1807 1792

  
1808
  # Add an empty custom shipto to the order, so that the dialog can render the cvar inputs.
1809
  # You need a custom shipto object to call cvars_by_config to get the cvars.
1810
  $self->order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => [])) if !$self->order->custom_shipto;
1793
  $self->reinit_after_new_order();
1811 1794

  
1812 1795
  return $self->order;
1813 1796
}
......
1998 1981
  if ($order->shipto) {
1999 1982
    $self->is_custom_shipto_to_delete(1);
2000 1983
  } else {
2001
    my $custom_shipto = $order->custom_shipto || $order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => []));
1984
    my $custom_shipto =
1985
       $order->custom_shipto
1986
    || $order->custom_shipto(
1987
         SL::DB::Shipto->new(module => 'OE', custom_variables => [])
1988
       );
2002 1989

  
2003 1990
    my $shipto_cvars  = {map { my ($key) = m{^shiptocvar_(.+)}; $key => delete $form->{$_}} grep { m{^shiptocvar_} } keys %$form};
2004 1991
    my $shipto_attrs  = {map {                                  $_   => delete $form->{$_}} grep { m{^shipto}      } keys %$form};
......
2174 2161
  $::form->{type} = $self->order->type;
2175 2162
  $self->type($self->init_type);
2176 2163
  $self->type_data($self->init_type_data);
2177
  $self->cv  ($self->init_cv);
2164
  $self->cv($self->init_cv);
2178 2165
  $self->check_auth;
2179 2166

  
2167
  $self->setup_custom_shipto_from_form($self->order, $::form);
2168

  
2180 2169
  foreach my $item (@{$self->order->items_sorted}) {
2181 2170
    # set item ids to new fake id, to identify them as new items
2182 2171
    $item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000);

Auch abrufbar als: Unified diff