use SL::CVar;
use SL::DB::Customer;
use SL::DB::DeliveryOrder;
+use SL::DB::Employee;
use SL::DB::Invoice;
use SL::DB::Order;
use SL::DB::Project;
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(project) ],
- 'scalar --get_set_init' => [ qw(models customers project_types project_statuses projects linked_records) ],
+ 'scalar --get_set_init' => [ qw(models customers project_types project_statuses projects linked_records employees may_edit_invoice_permissions) ],
);
__PACKAGE__->run_before('check_auth', except => [ qw(ajax_autocomplete) ]);
__PACKAGE__->run_before('load_project', only => [ qw(edit update destroy) ]);
+__PACKAGE__->run_before('use_multiselect_js', only => [ qw(new create edit update) ]);
#
# actions
$self->prepare_report;
- $self->report_generator_list_objects(report => $self->{report}, objects => $self->models->get, action_bar => 1);
+ $self->report_generator_list_objects(report => $self->{report}, objects => $self->models->get);
}
sub action_new {
sub init_project_statuses { SL::DB::Manager::ProjectStatus->get_all_sorted }
sub init_project_types { SL::DB::Manager::ProjectType->get_all_sorted }
+sub init_employees { SL::DB::Manager::Employee->get_all_sorted }
+sub init_may_edit_invoice_permissions { $::auth->assert('project_edit_view_invoices_permission', 1) }
sub init_linked_records {
my ($self) = @_;
return SL::DB::Manager::Customer->get_all_sorted(where => [ or => [ obsolete => 0, obsolete => undef, @customer_id ]]);
}
+sub use_multiselect_js {
+ $::request->layout->use_javascript("${_}.js") for qw(jquery.selectboxes jquery.multiselect2side);
+}
+
sub display_form {
my ($self, %params) = @_;
my $is_new = !$self->project->id;
my $params = delete($::form->{project}) || { };
+ if (!$self->may_edit_invoice_permissions) {
+ delete $params->{employee_invoice_permissions};
+ } elsif (!$params->{employee_invoice_permissions}) {
+ $params->{employee_invoice_permissions} = [];
+ }
+
delete $params->{id};
$self->project->assign_attributes(%{ $params });
project_type => { sub => sub { $_[0]->project_type->description } },
project_status => { sub => sub { $_[0]->project_status->description }, text => t8('Status') },
customer => { sub => sub { !$_[0]->customer_id ? '' : $_[0]->customer->name },
- raw_data => sub { !$_[0]->customer_id ? '' : $self->presenter->customer($_[0]->customer, display => 'table-cell', callback => $callback) } },
+ raw_data => sub { !$_[0]->customer_id ? '' : $_[0]->customer->presenter->customer(display => 'table-cell', callback => $callback) } },
active => { sub => sub { $_[0]->active ? $::locale->text('Active') : $::locale->text('Inactive') },
text => $::locale->text('Active') },
valid => { sub => sub { $_[0]->valid ? $::locale->text('Valid') : $::locale->text('Invalid') },
for my $bar ($::request->layout->get('actionbar')) {
$bar->add(
action => [
- t8('Search'),
+ t8('Update'),
submit => [ '#search_form', { action => 'Project/list' } ],
accesskey => 'enter',
],
link => [
- t8('Add Project'),
+ t8('Add'),
link => $self->url_for(action => 'new'),
],
);