Ignore:
Timestamp:
01/15/16 17:10:56 (8 years ago)
Author:
nanardon
Message:

Compute start/end date on employment deletion too

Location:
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/Employment.pm

    r1624 r1636  
    312312} 
    313313 
     314sub _delete { 
     315    my ($class, $base, $id) = @_; 
     316 
     317    my $obj = $base->get_object($class->type, $id) 
     318        or return; 
     319 
     320    my $user = $obj->_get_attributes('user'); 
     321 
     322    my $res = $class->SUPER::_delete($base, $id); 
     323    if ($res) { 
     324        my $ouser = $base->get_object('user', $user); 
     325        $ouser->computeEmploymentDate; 
     326    } 
     327 
     328    $res 
     329} 
     330 
    314331=head2 applyToUser() 
    315332 
     
    328345    $user->base->log(LA_DEBUG, "Applying Employement %s to user %s", $self->id, $user->id); 
    329346 
     347    $user->computeEmploymentDate; 
     348 
    330349    my $currentemployment = $user->get_attributes('currentEmployment') || ''; 
    331  
    332     my $expire = str2time($user->get_attributes('expire') || '1970-01-01T00:00:00'); 
    333  
    334     my %changes; 
    335     my @employmentDate = qw( 
    336         endEmployment   endStrictEmployment   endCurrentEmployment   endLastEmployment 
    337         startEmployment startStrictEmployment startCurrentEmployment startFirstEmployment 
    338     ); 
    339     foreach (@employmentDate) { 
    340         my $old = $user->_get_attributes($_) || ''; 
    341         my $new = $user->_get_attributes("_$_") || ''; 
    342         if ($old ne $new) { 
    343             $changes{$_} = $new || undef; 
    344         } 
    345     } 
    346  
    347     # If there is no current employment we try to find any to not let expire 
    348     # unset 
    349  
    350     my $expireOn = $self->base->config('expireOn') || ''; 
    351     if (!grep { $_ eq $expireOn } (@employmentDate, '', 'never')) { 
    352         $self->base->log(LA_ERR, "expireOn set to invalid parameter %s, using endEmployment instead", $expireOn);  
    353         $expireOn = undef; 
    354     } 
    355     $expireOn ||= 'endEmployment'; 
    356  
    357     if ($expireOn ne 'never') { 
    358         my $endemploy = $currentemployment 
    359             ? $user->_get_attributes("_$expireOn") 
    360             : (($self->base->config('unemployed_expire') ||'') eq 'no' 
    361                 ? undef 
    362                 : $user->_get_attributes('create')); 
    363  
    364         my $nextexpire = str2time( $endemploy || '1970-01-01T00:00:00' ); 
    365  
    366         if ($expire != $nextexpire) { 
    367             $changes{expire} = $endemploy; 
    368         } 
    369     } 
    370  
    371     if (keys %changes) { 
    372         $user->ReportChange('Update', 'Update %s to match employment', join(', ', sort keys %changes)); 
    373         $user->ReportChange('Update', 'Expire update to %s to match employment', ($changes{expire} || '(none)')) 
    374             if (exists($changes{expire})); 
    375         $user->set_fields(%changes); 
    376     } 
    377350 
    378351    if (!$currentemployment) { 
     
    475448    } 
    476449 
    477  
    478450    return 1; 
    479451} 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm

    r1628 r1636  
    13621362} 
    13631363 
     1364=head2 computeEmploymentDate 
     1365 
     1366Compute and copy to user start and end employment date 
     1367 
     1368=cut 
     1369 
     1370sub computeEmploymentDate { 
     1371    my ($self) = @_; 
     1372 
     1373    my $currentemployment = $self->get_attributes('currentEmployment') || ''; 
     1374 
     1375    my $expire = str2time($self->get_attributes('expire') || '1970-01-01T00:00:00'); 
     1376 
     1377    my %changes; 
     1378    my @employmentDate = qw( 
     1379        endEmployment   endStrictEmployment   endCurrentEmployment   endLastEmployment 
     1380        startEmployment startStrictEmployment startCurrentEmployment startFirstEmployment 
     1381    ); 
     1382    foreach (@employmentDate) { 
     1383        my $old = $self->_get_attributes($_) || ''; 
     1384        my $new = $self->_get_attributes("_$_") || ''; 
     1385        if ($old ne $new) { 
     1386            $changes{$_} = $new || undef; 
     1387        } 
     1388    } 
     1389 
     1390    # If there is no current employment we try to find any to not let expire 
     1391    # unset 
     1392 
     1393    my $expireOn = $self->base->config('expireOn') || ''; 
     1394    if (!grep { $_ eq $expireOn } (@employmentDate, '', 'never')) { 
     1395        $self->base->log(LA_ERR, "expireOn set to invalid parameter %s, using endEmployment instead", $expireOn); 
     1396        $expireOn = undef; 
     1397    } 
     1398    $expireOn ||= 'endEmployment'; 
     1399 
     1400    if ($expireOn ne 'never') { 
     1401        my $endemploy = $currentemployment 
     1402            ? $self->_get_attributes("_$expireOn") 
     1403            : (($self->base->config('unemployed_expire') ||'') eq 'no' 
     1404                ? undef 
     1405                : $self->_get_attributes('create')); 
     1406 
     1407        my $nextexpire = str2time( $endemploy || '1970-01-01T00:00:00' ); 
     1408 
     1409        if ($expire != $nextexpire) { 
     1410            $changes{expire} = $endemploy; 
     1411        } 
     1412    } 
     1413 
     1414    if (keys %changes) { 
     1415        $self->ReportChange('Update', 'Update %s to match employment', join(', ', sort keys %changes)); 
     1416        $self->ReportChange('Update', 'Expire update to %s to match employment', ($changes{expire} || '(none)')) 
     1417            if (exists($changes{expire})); 
     1418        $self->set_fields(%changes); 
     1419    } 
     1420 
     1421    return 1; 
     1422} 
     1423 
    13641424sub _computeStartEmployment { 
    13651425    my ($self, $delay) = @_; 
Note: See TracChangeset for help on using the changeset viewer.