Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 554ddc07

Von Werner Hahn vor mehr als 1 Jahr hinzugefügt

  • ID 554ddc076d76286a87d7f6116f42d9be4cdea0ac
  • Vorgänger 2709dc1f
  • Nachfolger 4ac75385

Dispositionsmanager Zusätzliche Artikel des Lieferanten anzeigen

Unterschiede anzeigen:

SL/Controller/DispositionManager.pm
8 8
use SL::DB::PurchaseBasketItem;
9 9
use SL::PriceSource;
10 10
use SL::Locale::String qw(t8);
11
use SL::Helper::Flash qw(flash);
12

  
11 13
use Data::Dumper;
12 14

  
13 15
sub action_list_parts {
......
28 30
    my $basket_part = SL::DB::PurchaseBasketItem->new(
29 31
      parts_id    => $part->id,
30 32
      qty         => $part->ordersize, # was ist wenn order_size < (rop-onhand) ist? sollte dann nicht (rop-onhand) genommen werden?
31
      orderer     => SL::DB::Manager::Employee->current;
33
      orderer     => SL::DB::Manager::Employee->current,
32 34
    )->save;
33 35
 }
34 36
 $self->action_show_basket;
......
38 40
sub action_show_basket {
39 41
  my ( $self ) = @_;
40 42

  
41
  $::request->{layout}->add_javascripts('kivi.DispositionManager.js');
43
  $::request->{layout}->add_javascripts('kivi.DispositionManager.js', 'kivi.PartDetail.js');
42 44
  my $basket_items = SL::DB::Manager::PurchaseBasketItem->get_all( query => [ cleared => 'F' ],  with_objects => [ 'part', 'part.makemodels' ]);
43 45
  $self->_setup_show_basket_action_bar;
44 46
  $self->render('disposition_manager/show_purchase_basket', BASKET_ITEMS => $basket_items, title => "Purchase basket" );
45 47
}
46 48

  
49
sub action_show_vendor_items {
50
  my ( $self ) = @_;
51

  
52
  my $makemodels_parts = SL::DB::Manager::Part->get_all( query => [ 'makemodels.make' => $::form->{v_id},  '!id' => ['5599'], ], sort_by => 'onhand', with_objects => [ 'makemodels' ]);
53
  $self->render('disposition_manager/_show_vendor_parts', { layout => 0 }, MAKEMODEL_ITEMS => $makemodels_parts);
54
}
55

  
47 56
sub action_transfer_to_purchase_order {
48 57

  
49 58
  my ( $self ) = @_;
50 59
  require SL::DB::Order;
51 60
  require SL::DB::OrderItem;
52
  require SL::DB::Part;
53 61
  require SL::DB::Vendor;
54 62
  my @error_report;
55 63

  
64
  unless (($::form->{ids} && scalar @{ $::form->{ids}}) || ( $::form->{vendor_part_ids} && scalar @{ $::form->{vendor_part_ids}})) {
65
    die 'There are no items selected';
66
  }
56 67
  my $v_id =  $::form->{vendor_ids}->[0] ;
57 68

  
58 69
  my ($vendor, $employee);
59 70
  $vendor   = SL::DB::Manager::Vendor->find_by(id => $v_id) or die "Can't find vendor";
60 71
  $employee = SL::DB::Manager::Employee->current            or die "Can't find employee";
61 72

  
62
  my $basket_items = SL::DB::Manager::PurchaseBasketItem->get_all( query => [ id => \@{ $::form->{ids} } ] );
73

  
74
  my $basket_items;
75
  $basket_items = SL::DB::Manager::PurchaseBasketItem->get_all( query => [ id => \@{ $::form->{ids} } ] ) if ($::form->{ids} && scalar @{ $::form->{ids}});
76

  
77
  my $vendor_items;
78
  $vendor_items = SL::DB::Manager::Part->get_all( query => [ id => \@{ $::form->{vendor_part_ids} } ] ) if ($::form->{vendor_part_ids} && scalar @{ $::form->{vendor_part_ids}});
63 79

  
64 80
  # create order first so we have a record for PriceSource
65 81
  my $order = SL::DB::Order->new(
......
76 92
  my $i = 0;
77 93
  my @items;
78 94

  
79
  foreach my $basket_item ( @{ $basket_items } ) {
80
    $i++;
81
    my $mm = SL::DB::Manager::MakeModel->get_first( query => [ make => $vendor->id, parts_id => $basket_item->parts_id] );
82

  
83
    my $current_order_item = SL::DB::OrderItem->new(
84
      part                => $basket_item->part,
85
      description         => $basket_item->part->description,
86
      qty                 => $basket_item->qty || 1,
87
      unit                => $basket_item->part->unit,
88
      position            => $i,
89
    );
95
  if ($::form->{ids} && scalar @{ $::form->{ids}}) {
96
    foreach my $basket_item ( @{ $basket_items } ) {
97
      $i++;
98

  
99
      my $current_order_item = SL::DB::OrderItem->new(
100
        part                => $basket_item->part,
101
        description         => $basket_item->part->description,
102
        qty                 => $basket_item->part->min_order_qty || 1,
103
        unit                => $basket_item->part->unit,
104
        position            => $i,
105
        orderer_id          => $basket_item->orderer->id,
106
      );
107

  
108
      my $price_source  = SL::PriceSource->new(record_item => $current_order_item, record => $order);
109
      $current_order_item->sellprice($price_source->best_price->price);
110
      $current_order_item->active_price_source($price_source->best_price->source);
111
      push(@items, $current_order_item);
112
    }
113
  }
90 114

  
91
    my $price_source  = SL::PriceSource->new(record_item => $current_order_item, record => $order);
92
    $current_order_item->sellprice($price_source->best_price->price);
93
    $current_order_item->active_price_source($price_source->best_price->source);
94
    push(@items, $current_order_item);
115
  if ($::form->{vendor_part_ids} && scalar @{ $::form->{vendor_part_ids}}) {
116
    foreach my $vendor_item ( @{ $vendor_items } ) {
117
      $i++;
118

  
119
      my $current_order_item = SL::DB::OrderItem->new(
120
        part                => $vendor_item,
121
        description         => $vendor_item->description,
122
        qty                 => $vendor_item->min_order_qty || 1,
123
        unit                => $vendor_item->unit,
124
        position            => $i,
125
        orderer_id          => $employee->id,
126
      );
127

  
128
      my $price_source  = SL::PriceSource->new(record_item => $current_order_item, record => $order);
129
      $current_order_item->sellprice($price_source->best_price->price);
130
      $current_order_item->active_price_source($price_source->best_price->source);
131
      push(@items, $current_order_item);
132
    }
95 133
  }
96 134

  
97 135
  $order->orderitems( [ @items ] );
136

  
98 137
  $order->db->with_transaction( sub {
99 138
    $order->calculate_prices_and_taxes;
100 139
    $order->save;
......
112 151
      $item->{custom_variables} = \@{ $item->cvars_by_config };
113 152
      $item->save;
114 153
    }
115
    SL::DB::Manager::PurchaseBasketItem->delete_all( where => [ id => \@{ $::form->{ids} }]);
154
    SL::DB::Manager::PurchaseBasketItem->delete_all( where => [ id => \@{ $::form->{ids} }]) if ($::form->{ids} && scalar @{ $::form->{ids}});
116 155
    return 1;
117 156
  }) || die "error: " . $order->db->error;
118 157
  $self->redirect_to(controller => "oe.pl", action => 'edit', type => 'purchase_order', vc => 'vendor', id => $order->id);
......
153 192
    $bar->add(
154 193
      action => [
155 194
        t8('Reload'),
156
        submit   => [ '#purchasebasket', { action => "DispositionManager/show_basket" } ],
195
        link => $self->url_for(controller => 'DispositionManager', action => 'show_basket'),
157 196
      ],
158 197
      action => [
159 198
        t8('Action'),
......
218 257

  
219 258
Shows a list with parts which are in the basket.
220 259
This list can be filtered by vendor. Then you can create a purchase order.
260
When filtered by vendor, a table with the parts from the vendor of the purchase basket and
261
a table with all parts from the vendor will be shown. From there you can mark
262
the parts and create an order
221 263

  
222 264
=item C<action_transfer_to_purchase_order>
223 265

  

Auch abrufbar als: Unified diff