Pflichtenhefte: Maske fürs Erstellen von Angeboten/Aufträgen
[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::Customer;
10 use SL::DB::Part;
11 use SL::DB::RequirementSpec;
12 use SL::DB::RequirementSpecOrder;
13 use SL::Helper::Flash;
14 use SL::Locale::String;
15
16 use Rose::Object::MakeMethods::Generic
17 (
18   'scalar --get_set_init' => [ qw(requirement_spec js all_customers all_parts) ],
19 );
20
21 __PACKAGE__->run_before('setup');
22
23 #
24 # actions
25 #
26
27
28 sub action_list {
29   my ($self) = @_;
30
31   $self->render('requirement_spec_order/list', { layout => 0 });
32 }
33
34 sub action_new {
35   my ($self) = @_;
36
37   my $html   = $self->render('requirement_spec_order/new', { output => 0 }, make_part_title => sub { $_[0]->partnumber . ' ' . $_[0]->description });
38   $self->js->html('#ui-tabs-4', $html)
39            ->render($self);
40 }
41
42 sub action_edit_assignment {
43   my ($self) = @_;
44
45   my $html   = $self->render('requirement_spec_order/edit_assignment', { output => 0 }, make_part_title => sub { $_[0]->partnumber . ' ' . $_[0]->description });
46   $self->js->html('#ui-tabs-4', $html)
47            ->render($self);
48 }
49
50 sub action_save_assignment {
51   my ($self)   = @_;
52   my $sections = $::form->{sections} || [];
53   SL::DB::RequirementSpecItem->new(id => $_->{id})->load->update_attributes(order_part_id => ($_->{order_part_id} || undef)) for @{ $sections };
54
55   my $html = $self->render('requirement_spec_order/list', { output => 0 });
56   $self->js->html('#ui-tabs-4', $html)
57            ->render($self);
58 }
59
60 sub action_cancel {
61   my ($self) = @_;
62
63   my $html = $self->render('requirement_spec_order/list', { output => 0 });
64   $self->js->html('#ui-tabs-4', $html)
65            ->render($self);
66 }
67
68 #
69 # filters
70 #
71
72 sub setup {
73   my ($self) = @_;
74
75   $::auth->assert('sales_quotation_edit');
76   $::request->{layout}->use_stylesheet("${_}.css") for qw(jquery.contextMenu requirement_spec);
77   $::request->{layout}->use_javascript("${_}.js") for qw(jquery.jstree jquery/jquery.contextMenu client_js requirement_spec);
78
79   return 1;
80 }
81
82 sub init_requirement_spec {
83   my ($self) = @_;
84   $self->requirement_spec(SL::DB::RequirementSpec->new(id => $::form->{requirement_spec_id})->load) if $::form->{requirement_spec_id};
85 }
86
87 sub init_js {
88   my ($self) = @_;
89   $self->js(SL::ClientJS->new);
90 }
91
92 #
93 # helpers
94 #
95
96 sub init_all_customers { SL::DB::Manager::Customer->get_all_sorted }
97 sub init_all_parts     { SL::DB::Manager::Part->get_all_sorted     }
98
99 1;