26.05.2021 12:20
vonaviex
 
Добрый день.

Подскажите, как корректно с ТЗ загрузки перенести ШК с одного товара на другой?
Проблема в следующем (она есть на разных релизах, в т.ч. и актуальном).

1) Допустим есть некий товар 444 с ШК 2400000001263.

Передаем:
Цитата:
<good marking-of-the-good="444">
...
<bar-code code="2400000001263" deleted="true" marked="true">
<count>1</count>
</bar-code>
...
</good>
Т.е. передаем признак удаления ШК (deleted = true).

Отлично, у товара 444 нет ШК.

2) Выгружаем товар с кодом 555 и переназначеным на него ШК 2400000001263.
Отлично, у товара 444 нет ШК, а у товара 555 переназначился нужный нам ШК.

3) Повторно выгружаем товар 444 (признак удаления сохранен, выгрузка аналогична той что в п.1).

В результате получим следующее - ни у товара 444, ни у товара 555 ШК 2400000001263 не будет.
27.05.2021 06:16
Xapac
 
Ничего удивительного, что получаете такой результат, зачем передавать в третий раз 2400000001263" deleted="true" для товара 444 ? Вы же этим снова присваиваете товару 444 этот ШК с признаком удаления.
Последняя информация о товаре, неважно что вы там передавали до этого, является решающей. Иначе как ещё корректно содержать товарный справочник в актуальном состоянии?
27.05.2021 07:09
student
 
Цитата:
Xapac Последняя информация о товаре, неважно что вы там передавали до этого, является решающе
ну так это для 444 передается , этого шк у него нет, признак удаления в загрузке стоит т.е. присваивать шк ему не надо, как и удалять поскольку удалять у 444 уже нечего и по логике ничего не должно происходить для 444, однако у 555 шк слетает :( и тут действительно вопрос
Цитата:
Xapac как ещё корректно содержать товарный справочник в актуальном состоянии?
27.05.2021 10:58
vonaviex
 
Цитата:
Xapac Ничего удивительного, что получаете такой результат, зачем передавать в третий раз 2400000001263" deleted="true" для товара 444 ? Вы же этим снова присваиваете товару 444 этот ШК с признаком удаления.
Последняя информация о товаре, неважно что вы там передавали до этого, является решающей. Иначе как ещё корректно содержать товарный справочник в актуальном состоянии?
Серьезно???


Цитата:
ну так это для 444 передается , этого шк у него нет
Бинго, связь между товаром и ШК есть в таблице БД, зачем трогать записи по ШК товаров у которых иной код? Может стоит наложить отбор в запросе при обновлении, код товара то известен.
28.05.2021 06:43
TANGOR
 
Удалять шк необходимо только если вы его полностью удаляете из системы и он больше не будет использоваться вообще!
Для переноса шк на другой товар достаточно просто прислать его с привязкой к новому товару. Тогда в set он просто перепривяжется.
31.05.2021 03:09
Xapac
 
Цитата:
TANGOR Удалять шк необходимо только если вы его полностью удаляете из системы и он больше не будет использоваться вообще!
Для переноса шк на другой товар достаточно просто прислать его с привязкой к новому товару. Тогда в set он просто перепривяжется.
Собственно другими словами, то что я сказал. И это нормальное поведение софта.
31.05.2021 03:12
Xapac
 
Цитата:
student ну так это для 444 передается , этого шк у него нет, признак удаления в загрузке стоит т.е. присваивать шк ему не надо, как и удалять поскольку удалять у 444 уже нечего и по логике ничего не должно происходить для 444, однако у 555 шк слетает :( и тут действительно вопрос
Логика очень странная, так как если вы выгружаете ШК с товаром, значит ШК принадлежит ему. Мало ли вы хотите обратно этот ШК вернуть этому товару, а признак удаления как уже писалось выше это не убрать от товара ШК, а пометить его на удаление в базе. По каким то известным вам причинам.
31.05.2021 07:33
student
 
Действительно странная логика привязывать помеченные на удаление шк которые уже удалены у первого артикула первой операцией :) и при этом сносить этот шк у актуального артикула
31.05.2021 11:22
Xapac
 
Цитата:
student Действительно странная логика привязывать помеченные на удаление шк которые уже удалены у первого артикула первой операцией :) и при этом сносить этот шк у актуального артикула
А с чего это вдруг решили, что если у ШК стоит флаг delete, то он должен отвязаться от товара? При выгрузке ШК с признаком удаления он просто помечается в базе как удалённый, а все взаимосвязи с товаром остаются как и были. И если выгружаете ШК с определённым товаром, то и ШК будет принадлежать товару с которым он был выгружен ибо если всё таки почитать интеграционную документацию то там указано: Загрузка товара целиком предполагает отправку из ERP обязательной и дополнительной информации о товаре в одном элементе. При этом, если товар уже присутствует в SetRetail10, то при загрузке новых данных они будут объединены с уже имеющимися данными о товаре.
31.05.2021 11:33
Xapac
 
Ну и если просто ответить на вопрос в первом посте, то не надо этого делать в таком виде:
Цитата:
vonaviex 3) Повторно выгружаем товар 444 (признак удаления сохранен, выгрузка аналогична той что в п.1).
Так то можно вообще начать с шага
Цитата:
vonaviex 2) Выгружаем товар с кодом 555 и переназначеным на него ШК 2400000001263.
Отлично, у товара 444 нет ШК, а у товара 555 переназначился нужный нам ШК.
И у вас сразу будет хорошо без всяких лишних телодвижений у 444 не будет лишнего ШК, а у 555 будет искомый ШК.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.