Позиции позиций товаров в сущностей CRM (сделки, лиды, пр) хранятся в таблице
b_crm_product_row а сами товары хранятся в инфоблоке товаров (со свойствами, базовыми ценами и тд)
получить товары в сделке, лиде и тд...
$arFilter = [
"OWNER_TYPE" => "D", // "L" - тип
"OWNER_ID"=> $id, //ID сделки, лида, предложения
"CHECK_PERMISSIONS"=>"N" //не проверять права доступа текущего пользователя
];
$arSelect = [
"*"
];
$res = CCrmProductRow::GetList(['ID'=>'DESC'], $arFilter,false,false,$arSelect);
while($arProduct = $res->Fetch()){
//
} |
удалить товары сделки, лида, предложения
CCrmProductRow::DeleteByOwner($entityType,$id); //$entityType - 'D' -сделка, 'L' - лид, 'Q' - предложение
|
добавить товар в сделку, лид, предложение
CCrmProductRow::Add($arProduct); |
Функции, которые переносят товары из Предложения в сделку или лид.
Запускаю из БП. Запрашивается удалять товары в сделке / лиде
function MoveProductsFromCPtoLead($id,$deleteFromLead=false){
if(!empty($id) && CModule::IncludeModule('crm')){
$arFilter = array(
"ID"=>$id, //выбираем определенную сделку по ID
"CHECK_PERMISSIONS"=>"N", //не проверять права доступа текущего пользователя
"!LEAD_ID"=>false
);
$arSelect = ["LEAD_ID"];
$res = CCrmQuote::GetList(Array(), $arFilter,false,false, $arSelect);
if($arQuote = $res->Fetch()){
if($deleteFromLead){
CCrmProductRow::DeleteByOwner('L',$arQuote["LEAD_ID"]);
}
$arFilter = array(
"OWNER_ID"=>$id,
"CHECK_PERMISSIONS"=>"N" //не проверять права доступа текущего пользователя
);
$arSelect = array(
"*"
);
$res = CCrmProductRow::GetList(['ID'=>'DESC'], $arFilter,false,false,$arSelect);
while($arProduct = $res->Fetch()){
unset($arProduct["ID"]);
$arProduct["OWNER_ID"] = $arQuote["LEAD_ID"];
$arProduct["OWNER_TYPE"] = 'L';
CCrmProductRow::Add($arProduct);
}
}
}
}
function MoveProductsFromCPtoDeal($id,$deleteFromDeal=false){
if(!empty($id) && CModule::IncludeModule('crm')){
$arFilter = [
"ID"=>$id,
"CHECK_PERMISSIONS"=>"N", //не проверять права доступа текущего пользователя
"!DEAL_ID"=>false
];
$arSelect = ["DEAL_ID"];
$res = CCrmQuote::GetList([], $arFilter,false,false, $arSelect);
if($arQuote = $res->Fetch()){
if($deleteFromDeal){
CCrmProductRow::DeleteByOwner('D',$arQuote["DEAL_ID"]);
}
$arFilter = [
"OWNER_TYPE" => "D",
"OWNER_ID"=>$id,
"CHECK_PERMISSIONS"=>"N" //не проверять права доступа текущего пользователя
];
$arSelect = array(
"*"
);
$res = CCrmProductRow::GetList(['ID'=>'DESC'], $arFilter,false,false,$arSelect);
while($arProduct = $res->Fetch()){
unset($arProduct["ID"]);
$arProduct["OWNER_ID"] = $arQuote["DEAL_ID"];
$arProduct["OWNER_TYPE"] = 'D';
CCrmProductRow::Add($arProduct);
}
}
}
} |