1822e2be3cf75f642c14a841cc8517eafa17f5b1
[kivitendo-erp.git] / SL / Controller / RequirementSpecOrder.pm
1 package SL::Controller::RequirementSpecOrder;
2
3 use strict;
4 use utf8;
5
6 use parent qw(SL::Controller::Base);
7
8 use SL::ClientJS;
9 use SL::DB::Part;
10 use SL::DB::RequirementSpec;
11 use SL::DB::RequirementSpecOrder;
12 use SL::Helper::Flash;
13 use SL::Locale::String;
14
15 use Rose::Object::MakeMethods::Generic
16 (
17   'scalar --get_set_init' => [ qw(requirement_spec js all_parts) ],
18 );
19
20 __PACKAGE__->run_before('setup');
21
22 #
23 # actions
24 #
25
26
27 sub action_list {
28   my ($self) = @_;
29
30   $self->render('requirement_spec_order/list', { layout => 0 });
31 }
32
33 sub action_edit_assignment {
34   my ($self) = @_;
35
36   my $html   = $self->render('requirement_spec_order/edit_assignment', { output => 0 }, make_part_title => sub { $_[0]->partnumber . ' ' . $_[0]->description });
37   $self->js->html('#ui-tabs-4', $html)
38            ->render($self);
39 }
40
41 sub action_save_assignment {
42   my ($self)   = @_;
43   my $sections = $::form->{sections} || [];
44   SL::DB::RequirementSpecItem->new(id => $_->{id})->load->update_attributes(order_part_id => ($_->{order_part_id} || undef)) for @{ $sections };
45
46   my $html = $self->render('requirement_spec_order/list', { output => 0 });
47   $self->js->html('#ui-tabs-4', $html)
48            ->render($self);
49 }
50
51 sub action_cancel {
52   my ($self) = @_;
53
54   my $html = $self->render('requirement_spec_order/list', { output => 0 });
55   $self->js->html('#ui-tabs-4', $html)
56            ->render($self);
57 }
58
59 #
60 # filters
61 #
62
63 sub setup {
64   my ($self) = @_;
65
66   $::auth->assert('sales_quotation_edit');
67   $::request->{layout}->use_stylesheet("${_}.css") for qw(jquery.contextMenu requirement_spec);
68   $::request->{layout}->use_javascript("${_}.js") for qw(jquery.jstree jquery/jquery.contextMenu client_js requirement_spec);
69
70   return 1;
71 }
72
73 sub init_requirement_spec {
74   my ($self) = @_;
75   $self->requirement_spec(SL::DB::RequirementSpec->new(id => $::form->{requirement_spec_id})->load) if $::form->{requirement_spec_id};
76 }
77
78 sub init_js {
79   my ($self) = @_;
80   $self->js(SL::ClientJS->new);
81 }
82
83 #
84 # helpers
85 #
86
87 sub init_all_parts { SL::DB::Manager::Part->get_all_sorted }
88
89 1;