в каждой сделке есть 2 доп поля: "договор" типа файл (если несколько доков, то архив кладут) "акт" типа файл (если несколько доков, то архив кладут) Задача: Вывести список доков клиента, которые клиент может скачать: договор, акт, счета (счета битриксовские используют) |
component.php
UF_CRM_CONTRACT и UF_CRM_ACT - это константы, в которых прописаны идентификаторы битриксовские доп полей, заданы в init.php |
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true)die(); /** * @global \CMain $APPLICATION * @global \CUser $USER * @global \CDatabase $DB * @var \CUserTypeManager $USER_FIELD_MANAGER * @var \CBitrixComponent $this * @var array $arParams * @var array $arResult */ global $USER_FIELD_MANAGER, $USER, $APPLICATION, $DB; $isErrorOccured = false; $errorMessage = ''; if (!CModule::IncludeModule('crm')) { $errorMessage = GetMessage('CRM_MODULE_NOT_INSTALLED'); $isErrorOccured = true; } if(!$isErrorOccured){ $arResult["CONTRACT"] = array(); $arResult["DOCS"] = array(); if(is_object($USER)){ $rsUser = CUser::GetList($by, $order, array("ID" => $USER->GetID()), array( "SELECT" => array("ID","NAME","UF_CONTACT"), ) ); if($arUser = $rsUser->Fetch()){ $companyId = $arUser["UF_CONTACT"]; if(intval($companyId)>0){ $arFilter = array("ID"=>intval($companyId),"CHECK_PERMISSIONS"=>"N"); $arSelect = array("ID","TITLE", UF_COMPANY_CONTRACT); $rsCompany = CCrmCompany::GetList(Array(),$arFilter,$arSelect); if($arComp = $rsCompany->Fetch()){ if(isset($arComp[UF_COMPANY_CONTRACT]) && (intval($arComp[UF_COMPANY_CONTRACT])>0)){ $arResult["CONTRACT"] = array( "FILE"=> CFile::GetFileArray($arComp[UF_COMPANY_CONTRACT]) ); } } $arFilter = array( "CHECK_PERMISSIONS"=>"N", "COMPANY_ID" => $companyId, ); $arSelect = array("ID",UF_CRM_CONTRACT,UF_CRM_ACT); $res = CCrmDeal::GetList(Array("ID"=>"ASC"), $arFilter, $arSelect); while($row = $res->Fetch()){ if(isset($row[UF_CRM_CONTRACT]) && (intval($row[UF_CRM_CONTRACT])>0)){ $arResult["DOCS"][] = array( "TYPE"=> "CONTRACT", "DEAL_ID"=> $row["ID"], "FILE"=> CFile::GetFileArray($row[UF_CRM_CONTRACT]) ); } if(isset($row[UF_CRM_ACT]) && intval($row[UF_CRM_ACT])>0){ $arResult["DOCS"][] = array( "TYPE"=> "ACT", "DEAL_ID"=> $row["ID"], "FILE"=> CFile::GetFileArray($row[UF_CRM_ACT]) ); } } $arFilter = array( "CHECK_PERMISSIONS"=>"N", "UF_COMPANY_ID" => $companyId, ); $arSelect = array("ID","ORDER_TOPIC","PRICE","STATUS_ID","CANCELED","DATE_BILL","UF_DEAL_ID"); $res2 = CCrmInvoice::GetList($arOrder = Array("ID"=>"DESC"), $arFilter ,false, false, $arSelect); while($row2 = $res2->Fetch()){ $row2["LINK"] = CCrmInvoice::getPublicLink($row2["ID"]); $arResult["INVOICES"][] = $row2; } } } } $this->IncludeComponentTemplate(); } else{ ShowError($errorMessage); } |
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true)die();?> <div class="documents-list"> <div class="header-content "> <h1>Счета и договоры</h1> </div> <?if(isset($arResult["CONTRACT"])):?> <div class="row"> <div class="col"> <h2>Основной договор</h2> <a href="<?=$arResult["CONTRACT"]["FILE"]["SRC"]?>" target="_blank"><?=$arResult["CONTRACT"]["FILE"]["FILE_NAME"]?></a> </div> </div> <?endif;?> <?if(count($arResult["DOCS"])>0):?> <div class="row "> <div class="col"> <h2>Договоры, приложения, акты, товарные накладные</h2> <?foreach($arResult["DOCS"] as $arDoc):?> <div> <a href="<?=$arDoc["FILE"]["SRC"]?>" target="_blank" class="mr-3"><?=$arDoc["FILE"]["FILE_NAME"]?></a> <?if($arDoc["DEAL_ID"]>0):?> <a href="/client/orders/detail/?id=<?=$arDoc["DEAL_ID"]?>">сделка <?=$arDoc["DEAL_ID"]?></a> <?endif;?> </div> <?endforeach;?> </div> </div> <?endif;?> <?if(count($arResult["INVOICES"])>0):?> <div class="row"> <div class="col"> <h2>Счета</h2> <?foreach($arResult["INVOICES"] as $arInvoice):?> <div> <a href="<?=$arInvoice["LINK"]?>" target="_blank" class=""> Счет №<?=$arInvoice["ID"]?> от <?=$arInvoice["DATE_BILL"]?> на сумму <?=intval($arInvoice["PRICE"])?>руб. <?if($arInvoice["UF_DEAL_ID"]>0):?> ,</a> <a href="/client/orders/detail/?id=<?=$arInvoice["UF_DEAL_ID"]?>">сделка <?=$arInvoice["UF_DEAL_ID"]?></a> <a href="<?=$arInvoice["LINK"]?>" target="_blank" class=""> <?endif;?> <?=str_replace(array("N","S", "P","D"), array("не оплачен","не оплачен","оплачен","отменен"), $arInvoice["STATUS_ID"])?></a> </div> <?endforeach;?> </div> </div> <?endif;?> <div class="row"> <div class="col"> <h2>Типовые договоры</h2> <div> <a href="/client/docs/Dogovor_na_pochasovoe_obsluzhivanie.docx" target="_blank" class="">Бланк договора на почасовое обслуживание</a> </div> <div> <a href="/client/docs/Dogovor_abonentskogo_obsluzhivania_Minimum.docx" target="_blank" class="">Бланк договора МИНИМУМ</a> </div> <div> <a href="/client/docs/Dogovor_Abonentskogo_obsluzhivania_Standart.docx" target="_blank" class="">Бланк договора СТАНДАРТ</a> </div> <div> <a href="/client/docs/Dogovor_Abonentskogo_obsluzhivania_Maximum.docx" target="_blank" class="">Бланк договора МАКСИМУМ</a> </div> </div> </div> </div> |