Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c5725a1e

Von Tamino Steinert vor 3 Tagen hinzugefügt

  • ID c5725a1e948b0e5d02f28ffc93fa3c2c65f288c2
  • Vorgänger 5c061f43
  • Nachfolger 8a6f8520

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/DeliveryOrder.pm
172 172
# edit an existing order
173 173
sub action_edit {
174 174
  my ($self) = @_;
175
  die "No 'id' was given." unless $::form->{id};
175 176

  
176
  if ($::form->{id}) {
177
    $self->load_order;
178

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

  
182
    # set item ids to new fake id, to identify them as new items
183
    foreach my $item (@{$self->order->items_sorted}) {
184
      $item->{new_fake_id} =
185
        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 };
191

  
192
    if (!$::form->{form_validity_token}) {
193
      $::form->{form_validity_token} = SL::DB::ValidityToken->create(
194
        scope => SL::DB::ValidityToken::SCOPE_DELIVERY_ORDER_SAVE()
195
      )->token;
196
    }
197
  }
177
  $self->load_order;
198 178

  
199 179
  $self->pre_render();
200 180
  $self->render(
......
1573 1553

  
1574 1554
  $self->order(SL::DB::DeliveryOrder->new(id => $::form->{id})->load);
1575 1555

  
1576
  # Add an empty custom shipto to the order, so that the dialog can render the cvar inputs.
1577
  # You need a custom shipto object to call cvars_by_config to get the cvars.
1578
  $self->order->custom_shipto(SL::DB::Shipto->new(module => 'DO', custom_variables => [])) if !$self->order->custom_shipto;
1579

  
1580
  $self->order->prepare_stock_info($_) for $self->order->items;
1556
  $self->reinit_after_new_order();
1581 1557

  
1582 1558
  return $self->order;
1583 1559
}
......
1768 1744
  if ($order->shipto) {
1769 1745
    $self->is_custom_shipto_to_delete(1);
1770 1746
  } else {
1771
    my $custom_shipto = $order->custom_shipto ?
1772
        $order->custom_shipto
1773
      : $order->custom_shipto(
1774
          SL::DB::Shipto->new(module => 'DO', custom_variables => [])
1775
        );
1747
    my $custom_shipto =
1748
         $order->custom_shipto
1749
      || $order->custom_shipto(
1750
           SL::DB::Shipto->new(module => 'DO', custom_variables => [])
1751
         );
1776 1752

  
1777 1753
    my $shipto_cvars  = {
1778 1754
      map { my ($key) = m{^shiptocvar_(.+)}; $key => delete $form->{$_}}
......
1845 1821
  delete $::form->{form_validity_token};
1846 1822
}
1847 1823

  
1848
sub workflow_sales_or_request_for_quotation {
1849
  my ($self, $destination_type) = @_;
1850

  
1851
  # always save
1852
  $self->save();
1853

  
1854
  my $delivery_order = SL::Model::Record->new_from_workflow(
1855
    $self->order, $destination_type
1856
  );
1857
  $self->order($delivery_order);
1858
  $self->{converted_from_oe_id} = delete $::form->{id};
1859

  
1860
  $self->reinit_after_new_order();
1861

  
1862
  $self->render(
1863
    'delivery_order/form',
1864
    title => $self->get_title_for('edit'),
1865
    %{$self->{template_args}}
1866
  );
1867
}
1868

  
1869 1824
sub reinit_after_new_order {
1870 1825
  my ($self) = @_;
1871 1826

  
1872 1827
  # change form type
1873 1828
  $::form->{type} = $self->order->type;
1874 1829
  $self->type($self->init_type);
1875
  $self->cv  ($self->init_cv);
1830
  $self->type_data($self->init_type_data);
1831
  $self->cv($self->init_cv);
1876 1832
  $self->check_auth;
1877 1833

  
1834
  $self->setup_custom_shipto_from_form($self->order, $::form);
1835

  
1878 1836
  foreach my $item (@{$self->order->items_sorted}) {
1879 1837
    # set item ids to new fake id, to identify them as new items
1880 1838
    $item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000);
......
1885 1843
    $item->{render_second_row} = 1;
1886 1844
  }
1887 1845

  
1846
  $self->order->prepare_stock_info($_) for $self->order->items;
1888 1847
  $self->get_unalterable_data();
1889 1848
}
1890 1849

  

Auch abrufbar als: Unified diff