Example #1
0
 public static function PrepareConversionPermissionFlags($ID, array &$params, $userPermissions = null)
 {
     if (!$userPermissions) {
         $userPermissions = CCrmPerms::GetCurrentUserPermissions();
     }
     $canCreateDeal = CCrmDeal::CheckCreatePermission($userPermissions);
     $canCreateInvoice = IsModuleInstalled('sale') && CCrmInvoice::CheckCreatePermission($userPermissions);
     $params['CAN_CONVERT_TO_DEAL'] = $canCreateDeal;
     $params['CAN_CONVERT_TO_INVOICE'] = $canCreateInvoice;
     $params['CAN_CONVERT'] = $params['CONVERT'] = $canCreateInvoice || $canCreateDeal;
     $restriction = \Bitrix\Crm\Restriction\RestrictionManager::getConversionRestriction();
     if ($restriction->hasPermission()) {
         $params['CONVERSION_PERMITTED'] = true;
     } else {
         $params['CONVERSION_PERMITTED'] = false;
         $params['CONVERSION_LOCK_SCRIPT'] = $restriction->preparePopupScript();
     }
 }
Example #2
0
 public static function PrepareConversionPermissionFlags($ID, array &$params, $userPermissions = null)
 {
     if (!$userPermissions) {
         $userPermissions = CCrmPerms::GetCurrentUserPermissions();
     }
     $canCreateInvoice = IsModuleInstalled('sale') && CCrmInvoice::CheckCreatePermission($userPermissions);
     $canCreateQuote = CCrmQuote::CheckCreatePermission($userPermissions);
     $params['CAN_CONVERT_TO_INVOICE'] = $canCreateInvoice;
     $params['CAN_CONVERT_TO_QUOTE'] = $canCreateQuote;
     $params['CAN_CONVERT'] = $params['CONVERT'] = $canCreateInvoice || $canCreateQuote;
     $params['CONVERSION_PERMITTED'] = true;
 }
Example #3
0
 public static function GetEditUrl($typeID, $ID, $bCheckPermissions = false)
 {
     $typeID = intval($typeID);
     $ID = intval($ID);
     if ($ID <= 0) {
         $ID = 0;
     }
     switch ($typeID) {
         case self::Lead:
             if ($bCheckPermissions && !($ID > 0 ? CCrmLead::CheckUpdatePermission($ID) : CCrmLead::CheckCreatePermission())) {
                 return '';
             }
             return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_lead_edit'), array('lead_id' => $ID));
         case self::Contact:
             if ($bCheckPermissions && !($ID > 0 ? CCrmContact::CheckUpdatePermission($ID) : CCrmContact::CheckCreatePermission())) {
                 return '';
             }
             return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_contact_edit'), array('contact_id' => $ID));
         case self::Company:
             if ($bCheckPermissions && !($ID > 0 ? CCrmCompany::CheckUpdatePermission($ID) : CCrmCompany::CheckCreatePermission())) {
                 return '';
             }
             return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_company_edit'), array('company_id' => $ID));
         case self::Deal:
             if ($bCheckPermissions && !($ID > 0 ? CCrmDeal::CheckUpdatePermission($ID) : CCrmDeal::CheckCreatePermission())) {
                 return '';
             }
             return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_deal_edit'), array('deal_id' => $ID));
         case self::Invoice:
             if ($bCheckPermissions && !($ID > 0 ? CCrmInvoice::CheckUpdatePermission($ID) : CCrmInvoice::CheckCreatePermission())) {
                 return '';
             }
             return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_invoice_edit'), array('invoice_id' => $ID));
         case self::Quote:
             if ($bCheckPermissions && !($ID > 0 ? CCrmQuote::CheckUpdatePermission($ID) : CCrmQuote::CheckCreatePermission())) {
                 return '';
             }
             return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_quote_edit'), array('quote_id' => $ID));
         case self::Activity:
             return CComponentEngine::MakePathFromTemplate(COption::GetOptionString('crm', 'path_to_activity_edit'), array('activity_id' => $ID));
         default:
             return '';
     }
 }
 public static function add($params)
 {
     global $DB;
     $invoice = new CCrmInvoice();
     if (!CCrmInvoice::CheckCreatePermission()) {
         throw new RestException('Access denied.');
     }
     $fields = CCrmInvoiceRestUtil::getParamArray($params, 'fields');
     $fields = self::filterFields($fields, 'add');
     if (!is_array($fields) || count($fields) === 0) {
         throw new RestException('Invalid parameters.');
     }
     // sanitize
     $comments = isset($fields['COMMENTS']) ? trim($fields['COMMENTS']) : '';
     $userDescription = isset($fields['USER_DESCRIPTION']) ? trim($fields['USER_DESCRIPTION']) : '';
     $bSanitizeComments = $comments !== '' && strpos($comments, '<');
     $bSanitizeUserDescription = $userDescription !== '' && strpos($userDescription, '<');
     if ($bSanitizeComments || $bSanitizeUserDescription) {
         $sanitizer = new CBXSanitizer();
         $sanitizer->ApplyDoubleEncode(false);
         $sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_MIDDLE);
         //Crutch for for Chrome line break behaviour in HTML editor.
         $sanitizer->AddTags(array('div' => array()));
         if ($bSanitizeComments) {
             $fields['COMMENTS'] = $sanitizer->SanitizeHtml($fields['COMMENTS']);
         }
         if ($bSanitizeUserDescription) {
             $fields['USER_DESCRIPTION'] = $sanitizer->SanitizeHtml($fields['USER_DESCRIPTION']);
         }
         unset($sanitizer);
     }
     unset($bSanitizeComments, $bSanitizeUserDescription);
     $fields['COMMENTS'] = $comments;
     $fields['USER_DESCRIPTION'] = $userDescription;
     unset($comments, $userDescription);
     $bStatusSuccess = CCrmStatusInvoice::isStatusSuccess($fields['STATUS_ID']);
     if ($bStatusSuccess) {
         $bStatusFailed = false;
     } else {
         $bStatusFailed = CCrmStatusInvoice::isStatusFailed($fields['STATUS_ID']);
     }
     if (!$invoice->CheckFields($fields, false, $bStatusSuccess, $bStatusFailed)) {
         if (!empty($invoice->LAST_ERROR)) {
             throw new RestException($invoice->LAST_ERROR);
         } else {
             throw new RestException('Error on check fields.');
         }
     }
     $propsInfo = CCrmInvoice::GetPropertiesInfo($fields['PERSON_TYPE_ID']);
     $propsInfo = is_array($propsInfo[$fields['PERSON_TYPE_ID']]) ? $propsInfo[$fields['PERSON_TYPE_ID']] : array();
     $invoiceProperties = array();
     foreach ($fields['INVOICE_PROPERTIES'] as $code => $value) {
         if (array_key_exists($code, $propsInfo)) {
             $invoiceProperties[$propsInfo[$code]['ID']] = $value;
         } else {
             if ($code === 'COMPANY' && array_key_exists('COMPANY_NAME', $propsInfo)) {
                 $invoiceProperties[$propsInfo['COMPANY_NAME']['ID']] = $value;
             }
         }
     }
     $fields['INVOICE_PROPERTIES'] = $invoiceProperties;
     unset($propsInfo, $invoiceProperties, $code, $value);
     $DB->StartTransaction();
     $recalculate = false;
     $ID = $invoice->Add($fields, $recalculate, SITE_ID, array('UPDATE_SEARCH' => true));
     if (!is_int($ID) || $ID <= 0) {
         $DB->Rollback();
         if (!empty($invoice->LAST_ERROR)) {
             throw new RestException($invoice->LAST_ERROR);
         } else {
             throw new RestException('Error on creating invoice.');
         }
     } else {
         $DB->Commit();
     }
     return $ID;
 }