Changeset 1750 for trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases
- Timestamp:
- 04/14/16 11:21:30 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Sql/User.pm
r1749 r1750 1509 1509 1510 1510 $delay ||= 0; 1511 my $start; 1512 my $nstart; 1513 1514 if (my $next = $self->_get_attributes('nextEmployment')) { 1515 my $onext = $self->base->get_object('employment', $next); 1516 $nstart = DateTime->from_epoch(epoch => str2time($onext->_get_attributes('firstday'))); 1517 $nstart->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1518 $nstart->subtract(days => $delay + 1); 1519 } 1511 1520 1512 1521 my $list_empl = $self->base->db->prepare_cached(q{ … … 1516 1525 }); 1517 1526 $list_empl->execute($self->id); 1518 my $start; 1519 my $res;1520 while ($res = $list_empl->fetchrow_hashref) {1521 if ($start) {1527 1528 while (my $res = $list_empl->fetchrow_hashref) { 1529 if ($res->{current}) { 1530 } elsif ($nstart) { 1522 1531 my $prevend = DateTime->from_epoch(epoch => str2time($res->{lastday})); 1523 1532 $prevend->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1524 my $tstart = $ start->clone;1533 my $tstart = $nstart->clone; 1525 1534 $tstart->subtract(days => $delay + 1); 1526 1535 if ($tstart->ymd gt $prevend->ymd) { 1527 1536 last; 1528 1537 } 1529 } elsif (!$res->{current}) {1538 } elsif (!$res->{current}) { 1530 1539 last; 1531 1540 } 1532 $start = DateTime->from_epoch(epoch => str2time($res->{firstday})); 1533 $start->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1541 $nstart = DateTime->from_epoch(epoch => str2time($res->{firstday})); 1542 $nstart->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1543 $start = $nstart->clone; 1534 1544 } 1535 1545 $list_empl->finish; 1536 1546 1537 if ($any && !$start) { 1538 if (my $next = $self->_get_attributes('nextEmployment')) { 1539 my $onext = $self->base->get_object('employment', $next); 1540 my $tstart = DateTime->from_epoch(epoch => str2time($onext->_get_attributes('firstday'))); 1541 $tstart->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1542 $tstart->subtract(days => $delay + 1); 1543 if ($res) { 1544 my $prevend = DateTime->from_epoch(epoch => str2time($res->{lastday})); 1545 $prevend->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1546 if ($tstart->ymd gt $prevend->ymd) { 1547 } else { 1548 $start = $tstart; 1549 } 1550 } else { 1551 $start = $tstart; 1552 } 1553 } 1554 } 1547 $start ||= $nstart if ($any); 1555 1548 1556 1549 return $start ? $start->iso8601 : undef … … 1561 1554 1562 1555 $delay ||= 0; 1556 my $end; 1557 my $pend; 1558 1559 if (my $prev = $self->_get_attributes('prevEmployment')) { 1560 my $oprev = $self->base->get_object('employment', $prev); 1561 $pend = DateTime->from_epoch(epoch => str2time($oprev->_get_attributes('lastday'))); 1562 $pend->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1563 $pend->add(days => $delay + 1); 1564 } 1563 1565 1564 1566 my $list_empl = $self->base->db->prepare_cached(q{ … … 1568 1570 }); 1569 1571 $list_empl->execute($self->id); 1570 my $end;1571 1572 my $res; 1572 1573 while ($res = $list_empl->fetchrow_hashref) { … … 1576 1577 return undef; 1577 1578 } 1578 if ($end) { 1579 if ($res->{current}) { 1580 } elsif ($pend) { 1579 1581 my $nextstart = DateTime->from_epoch(epoch => str2time($res->{firstday})); 1580 1582 $nextstart->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1581 my $tend = $ end->clone;1583 my $tend = $pend->clone; 1582 1584 $tend->add(days => $delay + 1); 1583 1585 if ($tend->ymd lt $nextstart->ymd) { … … 1587 1589 last; 1588 1590 } 1589 $end = DateTime->from_epoch(epoch => str2time($res->{lastday})); 1590 $end->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1591 $end->add(hours => 23, minutes => 59, seconds => 59); 1591 $pend = DateTime->from_epoch(epoch => str2time($res->{lastday})); 1592 $pend->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1593 $pend->add(hours => 23, minutes => 59, seconds => 59); 1594 $end = $pend->clone; 1592 1595 } 1593 1596 $list_empl->finish; 1594 1597 1595 if ($any && !$end) { 1596 if (my $prev = $self->_get_attributes('prevEmployment')) { 1597 my $oprev = $self->base->get_object('employment', $prev); 1598 my $tend = DateTime->from_epoch(epoch => str2time($oprev->_get_attributes('lastday'))); 1599 $tend->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1600 $tend->add(days => $delay + 1); 1601 1602 if ($res) { 1603 my $nextstart = DateTime->from_epoch(epoch => str2time($res->{firstday})); 1604 $nextstart->set_time_zone( DateTime::TimeZone->new( name => 'local' ) ); 1605 1606 if ($tend->ymd lt $nextstart->ymd) { 1607 } else { 1608 $end = $tend; 1609 } 1610 } else { 1611 $end = $tend; 1612 } 1613 } 1614 } 1598 $end ||= $pend if($any); 1615 1599 1616 1600 return $end ? $end->iso8601 : undef
Note: See TracChangeset
for help on using the changeset viewer.