X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FTimeRecording.pm;h=575e219fbd176a758ef45f76569f1803686d7596;hb=a3449070f9bb3621bf675b40510a324942e7117e;hp=62143b3093d0352c8dc01bed2f87a78f816660ea;hpb=22f2c3e86aeea63b9e25b6ba249ca9062ae337f8;p=kivitendo-erp.git diff --git a/SL/DB/TimeRecording.pm b/SL/DB/TimeRecording.pm index 62143b309..575e219fb 100644 --- a/SL/DB/TimeRecording.pm +++ b/SL/DB/TimeRecording.pm @@ -33,12 +33,16 @@ sub validate { my @errors; - push @errors, t8('Start time must not be empty.') if !$self->start_time; push @errors, t8('Customer must not be empty.') if !$self->customer_id; push @errors, t8('Staff member must not be empty.') if !$self->staff_member_id; push @errors, t8('Employee must not be empty.') if !$self->employee_id; push @errors, t8('Description must not be empty.') if !$self->description; push @errors, t8('Start time must be earlier than end time.') if $self->is_time_in_wrong_order; + push @errors, t8('Assigned order must be a sales order.') if $self->order_id && 'sales_order' ne $self->order->type; + push @errors, t8('Customer of assigned order must match customer.') if $self->order_id && $self->order->customer_id != $self->customer_id; + push @errors, t8('Customer of assigned project must match customer.') if $self->project_id && $self->project->customer_id && $self->project->customer_id != $self->customer_id; + push @errors, t8('Project of assigned order must match assigned project.') + if $self->project_id && $self->order_id && $self->order->globalproject_id && $self->project_id != $self->order->globalproject_id; my $conflict = $self->is_time_overlapping; push @errors, t8('Entry overlaps with "#1".', $conflict->displayable_times) if $conflict; @@ -109,14 +113,26 @@ sub is_time_in_wrong_order { return; } +sub is_duration_used { + return !$_[0]->start_time; +} + sub displayable_times { my ($self) = @_; - # placeholder - my $ph = $::locale->format_date_object(DateTime->new(year => 1111, month => 11, day => 11, hour => 11, minute => 11), precision => 'minute'); - $ph =~ s{1}{-}g; + my $text; + + if ($self->is_duration_used) { + $text = $self->date_as_date . ': ' . ($self->duration_as_duration_string || '--:--'); + + } else { + # placeholder + my $ph = $::locale->format_date_object(DateTime->new(year => 1111, month => 11, day => 11, hour => 11, minute => 11), precision => 'minute'); + $ph =~ s{1}{-}g; + $text = ($self->start_time_as_timestamp||$ph) . ' - ' . ($self->end_time_as_timestamp||$ph); + } - return ($self->start_time_as_timestamp||$ph) . ' - ' . ($self->end_time_as_timestamp||$ph); + return $text; } 1;