|
470 | 470 | $imfNameIntern = $itemField->getValue('imf_name_intern'); |
471 | 471 | $columnHeader = convlanguagePIM($items->getProperty($imfNameIntern, 'imf_name')); |
472 | 472 |
|
473 | | - if ($disableBorrowing == 1 && ($imfNameIntern === 'LAST_RECEIVER' || $imfNameIntern === 'RECEIVED_ON' || $imfNameIntern === 'RECEIVED_BACK_ON')) { |
| 473 | + if($items->getProperty($imfNameIntern, 'imf_type') === 'DATE_INTERVAL'){ |
| 474 | + // modify column Header for DATE_INTERVAL fields |
| 475 | + $columnHeader .= ' ' . $gL10n->get('PLG_INVENTORY_MANAGER_DATE_INTERVAL_DAYS_REMAINING'); |
| 476 | + } |
| 477 | + |
| 478 | + if ($disableBorrowing == 1 && ($imfNameIntern === 'LAST_RECEIVER' || $imfNameIntern === 'RECEIVED_ON' || $imfNameIntern === 'RECEIVED_BACK_ON')) { |
474 | 479 | break; |
475 | 480 | } |
476 | 481 |
|
|
629 | 634 | elseif (in_array($items->getProperty($imfNameIntern, 'imf_type'), array('DROPDOWN', 'RADIO_BUTTON'))) { |
630 | 635 | $content = $items->getHtmlValue($imfNameIntern, $content); |
631 | 636 | } |
| 637 | + elseif ($items->getProperty($imfNameIntern, 'imf_type') == 'DATE_INTERVAL') { |
| 638 | + $selectedInterval = $content; |
| 639 | + $content = ''; |
| 640 | + |
| 641 | + $intervalValues = $items->getProperty($imfNameIntern, 'imf_value_list'); |
| 642 | + $dateIntervalFieldId = $items->getProperty($imfNameIntern, 'imf_date_interval_field', 'database'); |
| 643 | + if (isset($items->mItemData[$dateIntervalFieldId])) { |
| 644 | + $dateInternalFieldName = $items->mItemData[$dateIntervalFieldId]->getValue('imf_name_intern'); |
| 645 | + $filteredSelectionItems = array(); |
| 646 | + |
| 647 | + foreach ($intervalValues as $value) { |
| 648 | + $filteredSelectionItems[] = trim(explode('|', $value)[1]); |
| 649 | + } |
| 650 | + //use part after # as internal_name for last test date |
| 651 | + $compDate1 = date_create($items->getValue($dateInternalFieldName, 'database')); |
| 652 | + $compDate2 = date_create(); |
| 653 | + |
| 654 | + //Calculate future test date |
| 655 | + $dateAdditionSplit = array(); |
| 656 | + if (isset($filteredSelectionItems[$selectedInterval-1])) { |
| 657 | + preg_match("/^\s*(\d*)([wymd])\s*$/", $filteredSelectionItems[$selectedInterval-1], $dateAdditionSplit); |
| 658 | + } |
| 659 | + |
| 660 | + if(isset($dateAdditionSplit[1]) && isset($dateAdditionSplit[2]) && is_numeric($dateAdditionSplit[1])){ |
| 661 | + switch ($dateAdditionSplit[2]) { |
| 662 | + case 'w': |
| 663 | + date_add($compDate1, new DateInterval('P' . $dateAdditionSplit[1] . 'W')); |
| 664 | + break; |
| 665 | + case 'm': |
| 666 | + date_add($compDate1, new DateInterval('P' . $dateAdditionSplit[1] . 'M')); |
| 667 | + break; |
| 668 | + case 'y': |
| 669 | + date_add($compDate1, new DateInterval('P' . $dateAdditionSplit[1] . 'Y')); |
| 670 | + break; |
| 671 | + case 'd': |
| 672 | + default: |
| 673 | + date_add($compDate1, new DateInterval('P' . $dateAdditionSplit[1] . 'D')); |
| 674 | + break; |
| 675 | + } |
| 676 | + |
| 677 | + //Compare last test date with future date and output days |
| 678 | + $dateDiff = date_diff($compDate2, $compDate1); |
| 679 | + $content = $dateDiff->format('%R%a'); |
| 680 | + } |
| 681 | + } |
| 682 | + } |
632 | 683 |
|
633 | 684 | $columnValues[] = ($strikethrough && $getMode != 'csv' && $getMode != 'ods' && $getMode != 'xlsx') ? '<s>' . $content . '</s>' : $content; |
634 | 685 | $columnNumber++; |
|
0 commit comments