Тема, которая является продолжением этой темы: Менять статусы открытых заказов по крону
Используется синхронизация остатков товаров из 1С в режиме “только изменения”, т.к. в каталоге 200 тыс. товаров и в режиме “все товары независимо от изменений” обмен проходит несколько суток.
Вкратце суть проблемы:
- Есть товар, которого в данный момент на складе по 1С 10 шт.
- Покупатель размещает заказ на выставление счёта на оплату для юр.лиц на 7 шт. товара. В cs-cart списывается со склада 7 шт. этого товара, теперь в свободном остатки на витрине показывается 3 шт. Статус заказа в cs-cart “Отправлен счёт”.
- В 1С этот заказ пока не попадает, т.к. настроена синхронизация заказов только в статусе “Оплачен”. Т.е. в 1С по-прежнему 10 шт. на складе, никаких изменений не произошло.
- После этого, пока покупатель решается, оплачивать ему в итоге заказ или нет, у нас произошло пополнение склада, этого товара приехало ещё 10 шт. на склад, итого по 1С и в реальности у нас 20 шт. этого товара. Произошла синхронизация изменений, в cs-cart подгрузилось новое количество остатков товара, теперь на витрине 20 шт., как и в 1С.
- Проходит время, покупатель так и не решился оплачивать заказ. Меняем статус заказа на “Аннулирован”, и кол-во из этого заказа возвращается по логике cs-cart на склад и прибавляется к тому количеству, которое есть в данный момент, т.е. становится 20+7=27 шт.
И всё. Как результат, в реальности у нас 20 шт. товара, а в cs-cart значится 27 шт.
Как победить эту проблему?
Допустим, не менять статусы отменённых заказов, пусть так и висят открытые. Во-первых, с точки зрения аналитики это неправильно. Но тут тогда другая ситуация может возникнуть, начиная с п.4:
4. На склад нет никаких новых пополнений, как было 10 шт., так и лежит по 1С и в реальности.
5. Клиент так и не оплатил заказ, но мы статус не поменяли, и на витрине так и значится теперь 3 шт.
И тут опять несоответствие: в реальности 10 шт., а на витрине 3 шт.
Единственное, это регулярно заливать из 1С все остатки всех товаров, чтобы переписывать эту ересь в cs-cart, но у меня используется многоскладовость и обмен 200 тыс. товаров может идти несколько дней, уже тестил.
Кто как решает эту проблему вообще?
Мне кажется, было бы оптимальным добавить просто в настройку статуса здесь вариант “Не менять”, для того, чтобы расчёт остатков не вёлся в cs-cart, а вёлся в какой-то внешней учётной системе (в 1С, например). Было бы логично. Почему обязательно надо либо уменьшать, либо увеличивать, а третьего не дано? Это что, какая-то жёсткая необходимость ядра?