Changeset 1636 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts
- Timestamp:
- 01/15/16 17:10:56 (8 years ago)
- 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 312 312 } 313 313 314 sub _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 314 331 =head2 applyToUser() 315 332 … … 328 345 $user->base->log(LA_DEBUG, "Applying Employement %s to user %s", $self->id, $user->id); 329 346 347 $user->computeEmploymentDate; 348 330 349 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 endLastEmployment337 startEmployment startStrictEmployment startCurrentEmployment startFirstEmployment338 );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 expire348 # unset349 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 = $currentemployment359 ? $user->_get_attributes("_$expireOn")360 : (($self->base->config('unemployed_expire') ||'') eq 'no'361 ? undef362 : $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 }377 350 378 351 if (!$currentemployment) { … … 475 448 } 476 449 477 478 450 return 1; 479 451 } -
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm
r1628 r1636 1362 1362 } 1363 1363 1364 =head2 computeEmploymentDate 1365 1366 Compute and copy to user start and end employment date 1367 1368 =cut 1369 1370 sub 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 1364 1424 sub _computeStartEmployment { 1365 1425 my ($self, $delay) = @_;
Note: See TracChangeset
for help on using the changeset viewer.