| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- #block
- /*
- {
- "result": true,
- "message": "",
- "task": {
- "id": "task_id",
- "title": "Подтоварка м001",
- "dep": "001",
- "comment": "коммент",
- "items": [
- {
- "id": "xar.Ссылка", (нужно тк фреймворк берет это поле и отдает для update_item)
- "product_id": "xar.Ссылка",
- "article": "123-091",
- "color": "цвет",
- "size": "размер",
- "sector": "сектор",
- "group": "группа",
- "image": "https://.../112209-0.jpg",
- "title": "ТАПОЧКИ",
- "base_price": 1000,
- "price": 800,
- "disc": "20%",
- "label_color": "Белый | Красный",
- "rest": 4,
- "qty": 3,
- "done": false
- "done_updated":"2026-01-01 yyyy-mm-dd"
- }
- ]
- }
- }
- */
- #endblock
-
- #proc mshop_refill.sql_query
-
- #se form_date=[$f::now()]
- #se DateTo=@{SELECT Date_format('[form_date]', '%Y.%m.%d 23:59:59')}@
- #se min_date=@{select DATE_SUB('[DateTo]', interval 7 day )}@
- #se DateFrom=@{SELECT Date_format(DATE_SUB('[DateTo]', INTERVAL 1 DAY), '%Y.%m.%d 00:00:00')}@
- #if !$report_ref
- #se report_ref=@{SELECT UUID_SHORT();}@
- #endif
-
- #globalobjs_get Dep.Код
- #se Подразделение.код=[dep.код]
-
- #se PriceType=@{select tp.ссылка from spravochniki_tipicen as tp inner join spravochniki_podrazdeleniya as dep on dep.ТипЦен=tp.ссылка where dep.Код='[Подразделение.Код]'}@
- #se BasePriceType=@{select IFNULL(БазовыйТипЦен,0) from spravochniki_tipicen as tp inner join spravochniki_podrazdeleniya as dep on dep.ТипЦен=tp.ссылка where dep.Код='[Подразделение.Код]'}@
- #se PlanPriceType=@{select Ссылка from spravochniki_tipicen as tp where Наименование='РозницаПлан'}@
-
- #se OPT_SELECT_FIELDS=@!!@
-
- #se EXTRA_WHERE=AND ((rozdv.ДАТА >= pod.ДатаПодтоварки OR pod.ДатаПодтоварки IS NULL) OR (pod.ДатаПодтоварки >= DATE_SUB(NOW(), INTERVAL 24 HOUR)))
- #se HAVING_FILTER=
- #if $filter_sql
- #if [filter_sql]=by_sales
- #se HAVING_FILTER=HAVING ДатаПродажи IS NOT NULL
- #endif
- #if [filter_sql]=by_incoming
- #se HAVING_FILTER=HAVING ДатаПоступления IS NOT NULL
- #endif
- #endif
-
- #include_module refill_sql
- [#refill_sql.build_query]
-
- #endproc
-
- #proc mshop_refill.get.list
- /*не актуально*/
-
- #src stats
- #r
-
- select count(distinct IF(IFNULL(LENGTH(`Подтоварить`),0)>0 AND `Дата подтоварки`>date(date_sub(now(),interval 6 hour)),Характеристика,NULL)) as items_done,
- count(distinct IF(IFNULL(LENGTH(`Подтоварить`),0)=0 OR `Дата подтоварки`>date(date_sub(now(),interval 6 hour)),Характеристика,NULL)) as items
- from ([#mshop_refill.sql_query]) as qq
-
- #query
- #endsrc
-
- #se j:result={{"result":true,"message":""}}
-
- #v j:task={{}}
- #v j:task.id="torg_zal"
- #v j:task.title="ПОДТОВАРКА ТЗ"
- #v j:task.created="[$f::now]"
- #v j:task.comment="Подтоварка торгового зала"
-
- #if {stats}
- #v j:task.items_count={stats.items}
- #v j:task.items_done={stats.items_done}
- #else
- #v j:task.items_count=0
- #v j:task.items_done=0
- #endif
-
- #se j:result.tasks=[[ [j:task] ]]
-
- #endproc
-
- #block
- /*
-
- {
- result: true,
- message: '',
- task: {
- id: 'task_id',
- title: 'ПРЕОЦЕНКА м001',
- created: '01.01.2020',
- number: '012-022',
- dep: '001',
- price_type: 'тип цены',
- label_color: '#',
- comment: 'коммент',
- items: [
- {
- id: 1,
- article: '123-091',
- color: 'цвет',
- size: 'размер',
- group: 'группа1',
- image: 'https://.../112209-0.jpg',
- title: 'ТАПОЧКИ',
- price: 1290,
- qty: 3,
- done: false
- },
- ]
- }
- }
-
- */
- #endblock
-
- #proc mshop_refill.get.task(task_id)
-
- #se filter_sql=[?j:query.filter_mod]
-
- #src items_sql
- #r
-
- [#mshop_refill.sql_query]
-
- #query
- #endsrc
-
- #globalobjs_get Dep.Код
-
- #se j:result={{"result":true,"message":""}}
-
- #v DF=@{select Date_format('[DateFrom]', '%d.%m.%Y')}@
- #v DT=@{select Date_format('[DateTo]', '%d.%m.%Y')}@
-
- #v j:task={{}}
- #v j:task.id="torg_zal"
- #v j:task.title="ПОДТОВАРКА [dep.код]"
- #v j:task.dep="[dep.код]"
- #v j:task.comment="За период с [DF] по [DT]"
-
- #v j:items=[[ ]]
- #foreach items_sql
-
- #v j:item={{}}
-
- #v j:item.id="{items_sql.tov_id}"
- #v j:item.product_id="{items_sql.product_id}"
- #v j:item.article="{items_sql.Артикул}"
- #v j:item.color="{items_sql.Цвет}"
- #v j:item.size="{items_sql.Размер}"
- #v j:item.sector="{items_sql.Сектор}"
- #v j:item.group="{items_sql.Группа}"
- #v j:item.image="{items_sql.Фото}"
- #v j:item.title="{items_sql.Наименование}"
- #v j:item.base_price="{items_sql.Цена план}"
- #v j:item.price="{items_sql.Цена (текущая)}"
- #v j:item.disc="{items_sql.Скидка}"
- #v j:item.label_color="{items_sql.Ценник}"
- #v j:item.rest={items_sql.Остаток}
- #v j:item.qty={items_sql.Нужно подтоварить}
- #v j:item.done=[$f::if({items_sql.Выполнено},true,false)]
- #v j:item.done_updated="{items_sql.Дата подтоварки}"
- #v j:items[[]]=$j:item
- #endfor
-
- #v j:task.items=$j:items
- #se j:result.task=$j:task
-
- #endproc
- #proc mshop_refill.get.update_item(task_id)
- ;#v user_ref=@{select ссылка from spravochniki_sotrudniki where ref=@'[j:body.access_payload.sp_ref]'@ }@
-
- #endproc
-
- #proc mshop_refill.set_done(Характеристика,done,user_ref)
-
- #v DateTo=@{SELECT Date_format(NOW(), '%Y.%m.%d 23:59:59')}@
- #v DateFrom=@{SELECT Date_format(DATE_SUB('[DateTo]', INTERVAL 1 DAY), '%Y.%m.%d 00:00:00')}@
-
- #src nom_data
- #r
- SELECT
- nom.Ссылка AS Номенклатура,
- sznsv.Наименование AS цвет
- FROM @<Справочники.ХарактеристикиНоменклатуры>@ AS xar
- INNER JOIN @<Справочники.Номенклатура>@ AS nom ON nom.Ссылка=xar.Владелец
- left join @<Таблицы.ЗначенияСвойств>@ znsv on znsv.Объект=xar.Ссылка and znsv.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование = 'цвет')
- left join @<Справочники.ЗначенияСвойств>@ sznsv on sznsv.Ссылка=znsv.Значение
- WHERE xar.Ссылка=[Характеристика]
- #query
- #endsrc
-
- #se set_result=не изменен
- #if @{select count(*) from const_podtovarka where Номенклатура={nom_data.Номенклатура} and Датаврем >= DATE_SUB(NOW(), INTERVAL 24 HOUR) and Цвет='{nom_data.цвет}'}@
- #if [done]=true
- @{
- update const_podtovarka set Дата=date(Now()), Датаврем=Now(),Ответственный='[user_ref]' where Номенклатура={nom_data.Номенклатура} and Дата BETWEEN '[DateFrom]' AND '[DateTo]' AND Цвет='{nom_data.цвет}'
- }@
- #se set_result=обновили
- #else
- /*отменить подтоварку*/
- @{
- delete from const_podtovarka where Номенклатура={nom_data.Номенклатура} and Дата BETWEEN '[DateFrom]' AND '[DateTo]' AND Цвет='{nom_data.цвет}'
- }@
- #se set_result=удалили
- #endif
- #else
- #if [done]=true
- @{
- insert into const_podtovarka (`Дата`, `Датаврем`,`Номенклатура`,`Характеристика`,Ответственный,Цвет)
- values (date(NOW()), NOW(), {nom_data.Номенклатура}, [Характеристика], '[user_ref]', '{nom_data.цвет}')
- }@
- #se set_result=создали
- #endif
- #endif
- #endproc
-
- #proc mshop_refill.post.update_item
-
- #v Характеристика=@'[j:query.item_id]'@
- #v done=[j:body.done]
- #v user_ref=@{select ссылка from spravochniki_sotrudniki where ref=@'[j:body.access_payload.sp_ref]'@ }@
- #v j:result={{}}
-
- #if !$Характеристика
- #v j:result.result=false
- #v j:result.message="Не указан item_id"
- #se j:result=$j:result
- #exit
- #endif
-
- #call mshop_refill.set_done($Характеристика,$done,$user_ref)
-
- #if [set_result]=не изменен
- #v j:result.result=false
- #v j:result.message="товар недоступен для редактирования"
- #se j:result=$j:result
- #else
-
- #v lst_upd=@{select max(podtv.ДатаВрем) from const_podtovarka as podtv where podtv.Характеристика=[Характеристика]}@
- #if !$lst_upd
- #v lst_upd=[$f::now()]
- #endif
-
- #v j:update_item={{}}
- #v j:update_item.id=[Характеристика]
- #v j:update_item.done=[done]
- #v j:update_item.done_updated="[lst_upd]"
-
- #v j:items_update=[[ ]]
- #v j:items_update[[]]=$j:update_item
-
- #v j:update={{}}
- #v j:update.items=$j:items_update
-
- #v j:result.result=true
- #v j:result.message=""
- #v j:result.update=$j:update
-
- #se j:result=$j:result
- #endif
- #endproc
-
- #proc mshop_refill.post.close_task
- #v user_ref=@{select ссылка from spravochniki_sotrudniki where ref=@'[j:body.access_payload.sp_ref]'@ }@
-
- #src items
- #r
-
- [#mshop_refill.sql_query]
-
- #query
- #endsrc
-
- #foreach items
-
- #if [$f::if({items.done},true,false)]=false
- #call mshop_refill.set_done('{items.Характеристика}',true,$user_ref)
- ;TODO заполнять j:result.update как в mshop_refill.post.update_item
- #endif
-
- #endfor
-
- #se j:result={{"result":true,"message":"Все позиции подтоварены"}}
- #endproc
- #proc mshop_refill.get.find_item
- #se code=[j:query.code]
-
- #src find_and_validate
- #r
- SELECT
- xar.Ссылка as item_id
- FROM spravochniki_xarakteristikinomenklaturi xar
- INNER JOIN spravochniki_nomenklatura nom ON nom.ссылка = xar.Владелец
- LEFT JOIN spravochniki_shtrixkodatovarov sht ON sht.Характеристика = xar.Ссылка
- LEFT JOIN spravochniki_shtrixkoda shk ON shk.Ссылка = sht.Ссылка
- INNER JOIN @<Таблицы.ОстаткиТовараВТаре>@ ost ON ost.Характеристика = xar.Ссылка
- LEFT JOIN @<Справочники.Номенклатура>@ nnom ON nnom.Ссылка = nom.Родитель
- LEFT JOIN @<Справочники.Номенклатура>@ nnnom ON nnnom.Ссылка = nnom.Родитель
- LEFT JOIN @<Справочники.Номенклатура>@ nnnnom ON nnnnom.Ссылка = nnnom.Родитель
- LEFT JOIN const_marking_values as mark on mark.Характеристика=xar.Ссылка
-
- WHERE (
- IFNULL(ШтрихКод,'null123')='[code]'
- OR nom.Артикул ='[code]'
- OR xar.Код='[code]'
- or nom.Артикул='[code]'
- OR nom.наименование like '%[code]%'
- or xar.Ссылка='[code]'
- OR mark.Серийныйномер='[code]'
- OR mark.Кодмаркировки='[code]'
- )
- AND ost.Количество >= 1
- AND ost.Тара = @{select ссылка from @<Справочники.Тара>@ where Наименование like 'Торговый%' limit 1}@
- AND EXISTS (
- SELECT 1 FROM @<Таблицы.ДвижениеТовара>@ dv
- INNER JOIN @<Справочники.Тара>@ tt ON tt.Ссылка = dv.Тара
- WHERE dv.Характеристика = xar.Ссылка
- AND dv.Количество < 0
- AND dv.Дата BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()
- AND tt.Наименование = 'ТорговыйЗал'
- LIMIT 1
- )
- AND nom.МинимальныйОстаток > 0
- AND nnnnom.Наименование NOT IN ('СЕРТИФИКАТЫ','БИЖУТЕРИЯ','УПАКОВОЧНЫЕ ПАКЕТЫ')
- LIMIT 1
- #query
- #endsrc
-
- #if !{find_and_validate}
- #se j:result={{"result":false,"message":"код не опознан","item_id":""}}
- #exitproc
- #endif
- #foreach find_and_validate
- #v item_id={find_and_validate.item_id}
- #endfor
- #se j:result={{"result":true,"message":"","item_id":"[item_id]"}}
- #endproc
|