public function Delete($ID) { /** @global CUserTypeManager $USER_FIELD_MANAGER */ global $USER_FIELD_MANAGER; if (!CModule::IncludeModule('sale')) { return false; } $dealID = 0; $dbResult = CCrmInvoice::GetList(array(), array('ID' => $ID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('ID', 'UF_DEAL_ID')); $fields = is_object($dbResult) ? $dbResult->Fetch() : null; if (is_array($fields)) { $dealID = isset($fields['UF_DEAL_ID']) ? $fields['UF_DEAL_ID'] : 0; } $CSaleOrder = new CSaleOrder(); $result = $CSaleOrder->Delete($ID); if ($result) { $USER_FIELD_MANAGER->Delete(self::$sUFEntityID, $ID); CCrmProductRow::DeleteSettings('I', $ID); self::UnregisterLiveFeedEvent($ID); CCrmSonetSubscription::UnRegisterSubscriptionByEntity(CCrmOwnerType::Invoice, $ID); if ($dealID > 0) { Bitrix\Crm\Statistics\DealInvoiceStatisticEntry::register($dealID); } CCrmSearch::DeleteSearch('INVOICE', $ID); } return $result; }
public static function RebuildStatistics(array $IDs) { $dbResult = self::GetListEx(array(), array('@ID' => $IDs, 'CHECK_PERMISSIONS' => 'N'), false, false, array('ID', 'DATE_CREATE', 'DATE_MODIFY', 'STAGE_ID', 'ASSIGNED_BY_ID', 'BEGINDATE', 'CLOSEDATE', 'CURRENCY_ID', 'OPPORTUNITY', 'UF_*')); if (!is_object($dbResult)) { return; } while ($fields = $dbResult->Fetch()) { $ID = (int) $fields['ID']; //--> History if (!Bitrix\Crm\History\DealStageHistoryEntry::isRegistered($ID)) { $created = isset($fields['DATE_CREATE']) ? $fields['DATE_CREATE'] : ''; $createdTime = null; try { $createdTime = new Bitrix\Main\Type\DateTime($created, Bitrix\Main\Type\DateTime::convertFormatToPhp(FORMAT_DATETIME)); } catch (Bitrix\Main\ObjectException $e) { } $modified = isset($fields['DATE_MODIFY']) ? $fields['DATE_MODIFY'] : ''; $modifiedTime = null; if ($modified !== '') { try { $modifiedTime = new Bitrix\Main\Type\DateTime($modified, Bitrix\Main\Type\DateTime::convertFormatToPhp(FORMAT_DATETIME)); } catch (Bitrix\Main\ObjectException $e) { } } if ($createdTime && $modifiedTime && $createdTime->getTimestamp() !== $modifiedTime->getTimestamp()) { Bitrix\Crm\History\DealStageHistoryEntry::register($ID, $fields, array('IS_NEW' => false, 'TIME' => $modifiedTime)); } elseif ($createdTime) { Bitrix\Crm\History\DealStageHistoryEntry::register($ID, $fields, array('IS_NEW' => true, 'TIME' => $createdTime)); } } //<-- History //--> Statistics if (!Bitrix\Crm\Statistics\DealSumStatisticEntry::isRegistered($ID)) { Bitrix\Crm\Statistics\DealSumStatisticEntry::register($ID, $fields); } if (!Bitrix\Crm\Statistics\DealInvoiceStatisticEntry::isRegistered($ID)) { Bitrix\Crm\Statistics\DealInvoiceStatisticEntry::register($ID, $fields); } $timeline = Bitrix\Crm\Statistics\DealActivityStatisticEntry::prepareTimeline($ID); foreach ($timeline as $date) { Bitrix\Crm\Statistics\DealActivityStatisticEntry::register($ID, $fields, array('DATE' => $date)); } //<-- Statistics } }
public function Delete($ID) { /** @global CUserTypeManager $USER_FIELD_MANAGER */ /** @global CMain $APPLICATION */ /** @var CApplicationException $ex */ global $USER_FIELD_MANAGER, $APPLICATION; $APPLICATION->ResetException(); foreach (GetModuleEvents('crm', 'OnBeforeCrmInvoiceDelete', true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID)) === false) { $err = GetMessage('CRM_INVOICE_DELETE_CANCELED') . ' ' . $arEvent['TO_NAME']; if ($ex = $APPLICATION->GetException()) { $err .= ': ' . $ex->GetString(); } $APPLICATION->throwException($err); return false; } } if (!CModule::IncludeModule('sale')) { return false; } $dealID = 0; $dbResult = CCrmInvoice::GetList(array(), array('ID' => $ID, 'CHECK_PERMISSIONS' => 'N'), false, false, array('ID', 'UF_DEAL_ID')); $fields = is_object($dbResult) ? $dbResult->Fetch() : null; if (is_array($fields)) { $dealID = isset($fields['UF_DEAL_ID']) ? $fields['UF_DEAL_ID'] : 0; } $CSaleOrder = new CSaleOrder(); $result = $CSaleOrder->Delete($ID); if ($result) { $USER_FIELD_MANAGER->Delete(self::$sUFEntityID, $ID); CCrmProductRow::DeleteSettings('I', $ID); self::UnregisterLiveFeedEvent($ID); CCrmSonetSubscription::UnRegisterSubscriptionByEntity(CCrmOwnerType::Invoice, $ID); if ($dealID > 0) { Bitrix\Crm\Statistics\DealInvoiceStatisticEntry::register($dealID); } CCrmSearch::DeleteSearch('INVOICE', $ID); foreach (GetModuleEvents('crm', 'OnAfterCrmInvoiceDelete', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID)); } } return $result; }