Опиасние логики файла modules/ProductSale/ajax/ajax_productNew.php который используется при Ajax запросе при добавлении товара в корзину Sugarcrm.

Ajax запросы к данному файлу могут быть по крайней мере 2-х видов: 1)запрос цен - содержащий в запросе POST параметры getProduct(Id товара) и getID(Id сделки); 2)запрос флага для атрибута readonly input поля - содержащий те же параметры(параметр getProduct в этом запросе содержит строковое значение null, может ли он тем не менее содержать Id товара не выяснено) к которым добавляется redefine=1.

Выполняется запрос по Id сделки

SELECT accounts.id as account_id, accounts.account_category, opportunities.storehouse_id, opportunities.warehouse_onec_id, opportunities.assigned_user_id, opportunities.seller_id, opportunities.sales_stage, storehouses.name as store_name, storehouses.charge FROM opportunities INNER JOIN accounts ON accounts.id = opportunities.account_id INNER JOIN storehouses on storehouses.id = opportunities.storehouse_id WHERE opportunities.id = '8306fa4e-a61a-b101-c27c-6329a9efc1bc'

В рузельтате получатеся следующий массив:

array(1) { [0]=> array(9) { ["account_id"]=> string(36) "f73d0d32-17e9-d001-0264-5cd94484a5be" ["account_category"]=> string(6) "retail" ["storehouse_id"]=> string(36) "6c5e57b7-01d2-66df-84be-59d356a9b000" ["warehouse_onec_id"]=> string(9) "000000001" ["assigned_user_id"]=> string(36) "c0cd2df0-6657-62de-5732-563c8d1b8478" ["seller_id"]=> string(36) "28f2b051-ac1d-2f8a-24de-560ba97c2952" ["sales_stage"]=> string(11) "Prospecting" ["store_name"]=> string(14) "Иваново" ["charge"]=> string(1) "0" } }

Исходя из запроса уникальных значений account_category в таблице контрагента в после содержатся следующие значения: retail(розница), wholesale(опт), NULL, retail_low, wholesale_small, wholesale_super, principal.

Если передан параметр, то выполняется то что внутри условия, пока нет необходимости в описании этих алгоритмов.

Подключается файл include/customPrices.php в котором создаются массивы $ekb_arrays, $iv_array, а так же подключается файл содержащий список городов с фиксированными ценами.

Далее переменной $store_for_price присваивается значение розничного склада(то есть если склад по сделке оптовый переменной будет присвоен соответствующий ему розничный склад того же города), а так же переменной $select присваивается значение "price_up"(без кавычек) если склад по сделке оптовый или значение "price_medium"(так же без кавычек) если склад розничный.

Далее условие по перчаткам для Екатеринбурга видимо никогда не срабатывает, так как массив $customPrices_arr['iv']['sthList'] пустой.

Запрос цен из таблицы MinPrice по Id розничного склада, который ранее был присвоен переменной $store_for_price, в результате выполнения запроса из таблицы базы данных будут возвращены поля: price_basket и price_up(для опта) или price_medium(для розницы) которые возвращаются под псевдонимом price_medium, подстановка имени поля осуществляется с использованием созданной ранее переменной ранее переменной $select в которой находится значение поля.

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: