多仓库中仓库的不同价格。 精炼1C-Bitrix

在1s-Bitrix系统上有一家公司的在线商店和b2b平台。 公司发展壮大,仓库出现了,并增加了需要展示的合作伙伴仓库。 需要在几个仓库中显示余额。

Bitrix告诉我们的是:请转到业务编辑部,一切都会变得美好而立即。 他们去了编辑部,结果发现1C-Bitrix中的多价值和多仓库生活是分开的。 第一个需要显示不同用户组的不同价格,第二个需要显示不同仓库中的余额。

我们需要提取每个仓库的余额和价格,因为合作伙伴和我们的价格可能相差一个相同的位置。 事实证明,没有这样的常规功能。

然后,他们想到了重新制作标准模板的想法,并在现场方面制定了一些仓库价格。

我要做的第一件事是重做catalog.section和catalog.element模板。 catalog.store.amount组件已插入其中:

1.显示产品卡的价格清单仓库

程式码片段
if ($arResult['CATALOG_QUANTITY']!=0){ //         $APPLICATION->IncludeComponent("bitrix:catalog.store.amount","finnit_buy", array("ELEMENT_ID" => $arResult["ID"] //  ID  


2.对于通过组件的商品清单,仅选择一个价格(最低价格或最短交货时间)。

程式码片段
 $APPLICATION->IncludeComponent( "bitrix:catalog.store.amount", "finnit_1sk", array( "ELEMENT_ID" => $arElement["ID"]//  ID  


因此,为每个物种创建了一个模板,并随之创建了更多的模板。 例如,用于快速购买的模板显示了具有进行购买价格的最佳仓库。

组件catalog.store.amount的工作分三个阶段进行。

1.手动匹配仓库中的代码-价格(方便少量仓库)。 在这种情况下,该代码指示特定仓库的价格类型。

程式码片段
 if ($arProperty['ID'] == 29){//   $db_res = CPrice::GetList( array(), array("PRODUCT_ID" => $arParams['ELEMENT_ID'],"CATALOG_GROUP_ID" => '28')); // 28 -      if ($ar_res = $db_res->Fetch()){ if($min_price > (ceil(($ar_res["PRICE"] + ($ar_res["PRICE"]/100))/10)* 10)) $min_price = ceil(($ar_res["PRICE"] + ($ar_res["PRICE"]/100))/10)* 10; //            $amount = $arProperty["AMOUNT"]; //     $title = $arProperty["ID"]; //     ,      1        -      ID,     . } 


2.在开始连接仓库之后,第一个选择被证明不合适,因此决定将仓库价格捆绑包放在单独的信息块中。

屏幕截图


程式码片段
 <?//      $arSelectEquals = Array("ID", "IBLOCK_ID"); $arFilterEquals = Array("IBLOCK_ID"=>18); //ID   $equals = CIBlockElement::GetList(Array(), $arFilterEquals, false, Array(), $arSelectEquals); while($equal = $equals->GetNextElement()){ $arPropsEquals = $equal->GetProperties(); if ($arProperty["ID"] == $arPropsEquals["SKLAD_ID"]["VALUE"]){//    $db_res = CPrice::GetList( array(), array("PRODUCT_ID" => $arParams['ELEMENT_ID'],"CATALOG_GROUP_ID" => $arPropsEquals["PRICE_ID"]["VALUE"])); if ($ar_res = $db_res->Fetch()){ if (!isset($ar_res["PRICE"])){ echo GetMessage('FINN_PRICE_MANAGER');//     }else{ //       $pricen = ceil( $ar_res["PRICE"] );//      $price_id = $ar_res["CATALOG_GROUP_ID"];//      $price_name = $ar_res["CATALOG_GROUP_NAME"];//      } //echo number_format( $pricen, 0, ',', ' ' ); $torgId = $ar_res["ID"]; //      $torgGId = $ar_res["CATALOG_GROUP_ID"];//      } } else{}} } ?> 


因此,已经有可能维持足够大的仓库数量。

3.直接在仓库中使用自定义字段与价格类型进行比较。

最初未考虑此选项。 而且只有在商店开业之后,经过车里雅宾斯克,才有必要根据圣彼得堡的仓库来指示货物的交货时间,为此,他们使用了仓库中的自定义字段。

屏幕截图


我认为此选项是最佳选择。 目前,已将多个模板转移到同一选项,以比较仓库和价格。

附言:如果您知道更合适的选择-在评论中写下,我将不胜感激。

PPS如果您有任何意见或疑问,请写-我会回答。

Source: https://habr.com/ru/post/zh-CN420071/


All Articles