Your IP : 216.73.216.170


Current Path : /home/bitrix/ext_www/rgc.yacl.site/summaries/
Upload File :
Current File : /home/bitrix/ext_www/rgc.yacl.site/summaries/index.php

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Ежедневные сводки");
Bitrix\Main\Page\Asset::getInstance()->addCss('/summaries/css/style.css');
//okp($typeList);
$taskId = intval($_GET['task']);
$nosummary = false;
if (!$taskId) {
    $nosummary = true;
}

$inputFields = [
    'UF_PLAN' => 'Запланировано работ',
    'UF_FACT' => 'Выполнено работ',
    'UF_EMPLOYEES_TOTAL' => 'Сотрудников всего',
    'UF_EMPLOYEES' => 'Сотрудников заболело',
    'UF_OUTAGE' => 'Наличие простоя',
    'UF_INCIDENTS' => 'Инциденты',
];

$filter = [
    '!UF_WORKS_KINDS_HLBLOCK' => false,
    '!START_DATE_PLAN' => false,
    '!END_DATE_PLAN' => false,
    '!UF_PROJECT' => false,
    '!ZOMBIE' => 'Y',
];

if (!$USER->IsAdmin()) {
    $filter['RESPONSIBLE_ID'] = $USER->GetID();
}

if ($taskId) {
    $filter['ID'] = $taskId;
}
$list = CTasks::GetList(['ID' => 'DESC'], $filter, ['ID', 'TITLE', 'UF_PROJECT', 'START_DATE_PLAN', 'END_DATE_PLAN']);
$task = $list->Fetch();
if (!$taskId && $task['ID']) {
    LocalRedirect($APPLICATION->GetCurUri('task=' . $task['ID']));
}
foreach (['START_DATE_PLAN', 'END_DATE_PLAN'] as $dateCode) {
    if (!$task[$dateCode]) {
        ShowError('Не заданы плановые значения дат для выбранной задачи!');
        return;
    }
    $task[$dateCode] = date('d.m.Y', strtotime($task[$dateCode]));
}

$project = Project::getProjectLink($task['UF_PROJECT']);
$projectId = $task['UF_PROJECT'];
$summaryHelper = new HighloadBlockHelper('TpiDaily');
$existingList = $summaryHelper->getList([
    'filter' => ['UF_TASK' => $task['ID']],
    'order' => ['UF_DATE' => 'ASC'],
]);
$existing = [];
while ($existingItem = $existingList->fetch()) {
//    okp($existingItem);
    if ($existingItem['UF_DATE'] instanceof \Bitrix\Main\Type\Date) {
        $existing[$existingItem['UF_DATE']->toString()] = $existingItem;
    }
}

if (!empty($_POST)) {
    if ($task['ID'] && $_POST['UF_DATE']) {
        $fields = ['UF_TASK' => $task['ID']];
        foreach ($_POST as $code => $value) {
            $fields[$code] = htmlspecialchars($value);
        }
    }
    $searchFields = [
        'UF_DATE' => $fields['UF_DATE'],
        'UF_TASK' => $fields['UF_TASK'],
    ];
    $existingSummary = $summaryHelper->getList(['filter' => $searchFields])->fetch();
    $fields['UF_USER'] = $USER->GetID();
    if (!$fields['UF_OUTAGE']) {
        $fields['UF_OUTAGE'] = false;
    }
    if (!$existingSummary) {
        $summaryHelper->add($fields);
    } else {
        $summaryHelper->update($existingSummary['ID'], $fields);
    }
    $summaryFact = 0;
    $summaryPlan = 0;
    $summaryList = $summaryHelper->getList(['filter' => ['UF_TASK' => $fields['UF_TASK']]])->fetchAll();
    foreach ($summaryList as $summary) {
        $summaryFact += $summary['UF_FACT'];
        $summaryPlan += $summary['UF_PLAN'];
    }

    CTaskItem::getInstance($fields['UF_TASK'], $USER->GetID())->update(['UF_VOLUME_FACT' => $summaryFact]);
    LocalRedirect($APPLICATION->GetCurUri());
}

$summaryDate = htmlspecialchars($_GET['date']);
if (!$summaryDate) {
    for ($date = $task['START_DATE_PLAN']; strtotime($date) <= strtotime($task['END_DATE_PLAN']); $date = date('d.m.Y', strtotime($date) + 86400)) {
        if ($existing[$date] !== NULL) {
            $lastValue = $existing[$date];
            continue;
        } else {
            $summaryDate = $date;
            break;
        }
//    okp($date); okp($existing[$date]);
    }
}
if (!$summaryDate) {
    LocalRedirect($APPLICATION->GetCurUri('date=' . $task['START_DATE_PLAN']));;
}
$previous = $summaryHelper->getList([
    'filter' => ['UF_TASK' => $task['ID']],
    'order' => ['ID' => 'DESC'],
])->fetch();
$editSummary = !empty($existing[$summaryDate]);

$canEditPlan = $USER->IsAdmin() || Project::isRpOrAssistant($projectId);

$listFilter = [
//    'RESPONSIBLE_ID' => $USER->GetID(),
    '!UF_WORKS_KINDS_HLBLOCK' => false,
    '!START_DATE_PLAN' => false,
    '!END_DATE_PLAN' => false,
    '!UF_PROJECT' => false,
    '!ZOMBIE' => 'Y',
];

if (!$USER->IsAdmin() && !Project::isRpOrAssistant($projectId)) {
    $listFilter['RESPONSIBLE_ID'] = $USER->GetID();
}

$projectTaskList = \Bitrix\Tasks\Internals\TaskTable::getList([
    'filter' => $listFilter,
    'select' => ['ID', 'TITLE', 'UF_PROJECT'],
    'group' => ['UF_PROJECT']
])->fetchAll();


$taskOptionList = $tasks = [];
foreach ($projectTaskList as &$taskInfo) {
    $taskOptionList[$taskInfo['UF_PROJECT']][$taskInfo['ID']] = '[' . $taskInfo['ID'] . '] ' . $taskInfo['TITLE'];
}
//okp($summaryDate);
//okp($editSummary);
?>


    <div class="wrapper">
        <?getSummariesHead($_GET['taskId']);?>
        <?if (!$nosummary) {?>

        <div class="form" id="form_1">
            <div class="content">
                <div class="calendar">
                    <div class="dates">
                        <a class="prev" href="/summaries/calendar/?task=<?=$task['ID']?>&month=<?=date('m', strtotime($summaryDate))?>&year=<?=date('Y', strtotime($summaryDate))?>"></a>
                        <a class="date" href="/summaries/calendar/?task=<?=$task['ID']?>&month=<?=date('m', strtotime($summaryDate))?>&year=<?=date('Y', strtotime($summaryDate))?>">Вернуться к календарю</a>
                    </div>
                    <a href="period/?task=<?=$task['ID'];?>" class="show_all">Весь период</a>
                </div>

                <div class="calendar-block">
                    <?if (strtotime($summaryDate) > strtotime($task['START_DATE_PLAN'])) {?>
                        <a class="prev" href="<?=$APPLICATION->GetCurPageParam('date=' . date('d.m.Y', strtotime($summaryDate) - 86400), ['date']);?>"></a>
                    <?} else {?>
                        <div style="width: 100px;">&nbsp;</div>
                    <?}?>
                    <div class="calendar_itog">
                        <?if (strtotime($summaryDate) >= strtotime(date('d.m.Y', time() + 86400))) {?>
                            <div class="error-title">Нельзя заполнить фактические данные на будущие даты!</div>
                        <?} else {?>
                            <div class="text text_title"><?=$summaryDate?></div>
                            <div class="text text_title"><?=$editSummary ? 'Изменить сводку' : "Заполнить сводку"?></div>
                            <form action="" method="post">
                                <input type="hidden" name="UF_DATE" value="<?=$summaryDate?>">
                                <?foreach ($inputFields as $code => $title) {
                                    if ($code == 'UF_PLAN') {?>
                                        <div class="text"><?=$title?>:</div>
                                        <span style="width: 100%; display: block; text-align: center; font-size: 1.4rem;"><?=$existing[$summaryDate][$code] ? $existing[$summaryDate][$code] : 'не задано' ?></span>
                                        <?
                                    } else {
                                        ?>
                                        <? if ($code == 'UF_OUTAGE') { ?>
                                            <div class="text"><?= $title ?>:
                                                <input type="checkbox" class=""
                                                       style="width: 1.1rem; height: 1.1rem; text-align: center; vertical-align: text-bottom;"
                                                    <?= ($existing[$summaryDate][$code] && $editSummary) || ($previous[$code] && !$editSummary) ? 'checked' : '' ?>
                                                       name="<?= $code ?>" value="1">
                                            </div>
                                        <? } elseif ($code == 'UF_INCIDENTS') {
                                            ?>
                                            <div class="text"><?= $title ?>:</div>
                                            <textarea class="finished_count text"
                                                      name="<?= $code ?>"><?= $editSummary ? $existing[$summaryDate][$code] : $previous[$code] ?>
                                    </textarea>
                                            <?
                                        } else { ?>
                                            <div class="text"><?= $title ?>:</div>
                                            <input type="text" class="finished_count text"
                                                   value="<?= $editSummary ? $existing[$summaryDate][$code] : $previous[$code] ?>"
                                                   name="<?= $code ?>">
                                            <?
                                        }
                                    }?>
                                    <?/*                        <div class="plan_count text"><?=$existing['plan'][$summaryDate] ? $existing['plan'][$summaryDate] : 'не указано'?></div>*/?>
                                <?}?>
                                <input type="submit" class="send text" value="<?=$editSummary ? 'Изменить' : "Заполнить"?>" style="cursor: pointer;">
                            </form>
                        <?}?>
                    </div>
                    <?if (strtotime($summaryDate) < strtotime($task['END_DATE_PLAN'])) {?>
                        <a class="next" href="<?=$APPLICATION->GetCurPageParam('date=' . date('d.m.Y', strtotime($summaryDate) + 86400), ['date']);?>"></a>
                    <?} else {?>
                        <div style="width: 100px;">&nbsp;</div>
                    <?}?>
                </div>

            </div>

        </div>
        <?}?>
    </div>

<script>
    $(function () {
        $('.select2').select2();
    });
</script>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>