Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision bc182129

Von Moritz Bunkus vor mehr als 5 Jahren hinzugefügt

  • ID bc18212984364980013862cc5515a125ccff6e6d
  • Vorgänger 4ad4574f

Berechtigung, Rechnungen persönlich zugeordneter Projekte einzusehen

Man kann nun Mitarbeiter*innen zu Projekten zuordnen, indem man sie in
den Projektstammdaten hinzufügt.

Ist eine Mitarbeiter*in zu einem Projekt zugeordnet, so darf sie alle
Rechnungen ansehen, die über die Projektnummer der Rechnung (nicht der
Positionen) dem Projekt zugeordnet sind, auch dann, wenn sie nicht das
allgemeine Recht zum Erstellen und Ansehen von Rechnungen hat.

Verändern oder Ausdrucken der Rechnungen ist nicht gestattet.

Die Verwaltung dieser Projektberechtigungen ist über ein neues
Gruppenrecht eingeschränkt.

Unterschiede anzeigen:

SL/Controller/Project.pm
12 12
use SL::CVar;
13 13
use SL::DB::Customer;
14 14
use SL::DB::DeliveryOrder;
15
use SL::DB::Employee;
15 16
use SL::DB::Invoice;
16 17
use SL::DB::Order;
17 18
use SL::DB::Project;
......
29 30
use Rose::Object::MakeMethods::Generic
30 31
(
31 32
 scalar => [ qw(project) ],
32
 'scalar --get_set_init' => [ qw(models customers project_types project_statuses projects linked_records) ],
33
 'scalar --get_set_init' => [ qw(models customers project_types project_statuses projects linked_records employees may_edit_invoice_permissions) ],
33 34
);
34 35

  
35 36
__PACKAGE__->run_before('check_auth',   except => [ qw(ajax_autocomplete) ]);
36 37
__PACKAGE__->run_before('load_project', only   => [ qw(edit update destroy) ]);
38
__PACKAGE__->run_before('use_multiselect_js', only => [ qw(new create edit update) ]);
37 39

  
38 40
#
39 41
# actions
......
166 168

  
167 169
sub init_project_statuses { SL::DB::Manager::ProjectStatus->get_all_sorted }
168 170
sub init_project_types    { SL::DB::Manager::ProjectType->get_all_sorted   }
171
sub init_employees        { SL::DB::Manager::Employee->get_all_sorted   }
172
sub init_may_edit_invoice_permissions { $::auth->assert('project_edit_view_invoices_permission', 1) }
169 173

  
170 174
sub init_linked_records {
171 175
  my ($self) = @_;
......
223 227
  return SL::DB::Manager::Customer->get_all_sorted(where => [ or => [ obsolete => 0, obsolete => undef, @customer_id ]]);
224 228
}
225 229

  
230
sub use_multiselect_js {
231
  $::request->layout->use_javascript("${_}.js") for qw(jquery.selectboxes jquery.multiselect2side);
232
}
233

  
226 234
sub display_form {
227 235
  my ($self, %params) = @_;
228 236

  
......
246 254
  my $is_new = !$self->project->id;
247 255
  my $params = delete($::form->{project}) || { };
248 256

  
257
  if (!$self->may_edit_invoice_permissions) {
258
    delete $params->{employee_invoice_permissions};
259
  } elsif (!$params->{employee_invoice_permissions}) {
260
    $params->{employee_invoice_permissions} = [];
261
  }
262

  
249 263
  delete $params->{id};
250 264
  $self->project->assign_attributes(%{ $params });
251 265

  

Auch abrufbar als: Unified diff