| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- #proc get_printer_name
-
- #env_params_get ПРИНТЕРЭТИКЕТОК.WSPOOLER.PRINTERNAME
- /*ZDesigner ZD410-203dpi ZPL стандартное название принтера зебра*/
- #v name=[ПРИНТЕРЭТИКЕТОК.WSPOOLER.PRINTERNAME]
-
- #win_enumprinters printer_list
- #v printer
- #for v=([printer_list])\;
- #continue ? ![v#?ZDesigner] && ![v#?TSC]
- #v printer=[v]
- #break ? !$name
- #break ? $v=$name
- #endfor
- [printer]
- #endproc
-
- #proc mshop_service.execute_print_engine(Характеристика, Количество, Шаблон)
- #r
- #v template_text=@{select Шаблон from @<Справочники.ШаблоныПечатиЭтикеток>@ where Наименование='[Шаблон]' }@
- #case !$template_text #then #exception Шаблон '[Шаблон]' не найден!
- #globalobjs_get Dep.ссылка
- #out_save proc_out
-
- #try
- #o sticker
- #se Характеристика.ссылка=[Характеристика]
- #se Подразделение.ссылка=[Dep.ссылка]
- #se КОЛ-ВО КОПИЙ=[Количество]
- #se КОЛИЧЕСТВО=[Количество]
-
- #macro_load_from_var macro_stemplate=template_text
- #macro_exec macro_stemplate
-
- #v printer=[#get_printer_name]
-
- #if !$printer
- #exception В системе не настроен принтер этикеток, обратитесь в тех поддержку;
- #endif
-
- #win_rawprint [printer],sticker,test_sticker
-
- #catch
- #win_enumprinters printer_list
- ;#se error=[?%exception.short_msg];[?%exception.msg];ENV [$env];Выбран: [?name] Список: [?printer_list]
- #se error=[?%exception.msg] [$endl]Список доступных принтеров: [?printer_list];[$endl]Выбранный принтер: [?printer].
- #se j:result={{"result":false,"message":"[error]"}}
- #exitproc
- #endtry
- #r
- #out_restore proc_out
- #env_get_env
- #se j:result={{"result":true,"message":"Ценник отправлен на принтер:'[?printer]', среда:'[env_get_env]'"}}
- #endproc
- #proc mshop_service.execute_print_engine_2(Характеристика, Количество, Шаблон)
-
- #v template_text=@{select Шаблон from @<Справочники.ШаблоныПечатиЭтикеток>@ where Наименование='[Шаблон]' }@
- #case !$template_text #then #exception Шаблон '[Шаблон]' не найден!
- #globalobjs_get Dep.ссылка
- #out_save proc_out
-
- #try
- #o sticker
- #r
- #se Характеристика.ссылка=[Характеристика]
- #se Подразделение.ссылка=[Dep.ссылка]
- #se КОЛ-ВО КОПИЙ=[Количество]
- #se КОЛИЧЕСТВО=[Количество]
-
- #macro_load_from_var macro_stemplate=template_text
- #macro_exec macro_stemplate
-
- #splp_connect
- #splp_send_out
-
- #catch
- #se error=[?%exception.short_msg];[?%exception.msg];ENV [$env];
- #se j:result={{"result":false,"message":"[error]"}}
- #exitproc
- #endtry
-
- #r
- #out_restore proc_out
- #env_get_env
- #se j:result={{"result":true,"message":"Запрос на печать успешно обработан. среда:'[env_get_env]'"}}
- #endproc
-
- #proc mshop_service.post.print_label
- #v Количество=[j:query.count]
- #v Шаблон=ЦенникНаТоварНовый/*поддержать выбор размера ценника результат выполнения get label_templates*/
- ;#v Шаблон=@'[j:query.template]'@
- #se j:result={{"result":true,"message":""}}
-
- #if ![j:query.product_id]
- #se j:result={{"result":false,"message":"не переданы коды товаров для печати"}}
- #exit
- #endif
-
- #for tov=([j:query.product_id])
- #v xar=@{SELECT xar.Ссылка as tov_id FROM @<Справочники.ХарактеристикиНоменклатуры>@ as xar WHERE xar.Код='[tov]'}@
- #if !$xar
- #se j:result={{"result":false,"message":"Товар [tov] не найден"}}
- #exitproc
- #endif
- #call mshop_service.execute_print_engine([xar],[Количество],[Шаблон])
- #endfor
- #endproc
- #proc mshop_service.get.print_label
- #v Количество=[j:query.count]
- #v Шаблон=ЦенникНаТоварНовый/*поддержать выбор размера ценника результат выполнения get label_templates*/
- ;#v Шаблон=@'[j:query.template]'@
- #se j:result={{"result":true,"message":""}}
-
- #if ![j:query.product_id]
- #se j:result={{"result":false,"message":"не переданы коды товаров для печати"}}
- #exitproc
- #endif
-
- #for tov=([j:query.product_id])
- #v xar=@{SELECT xar.Ссылка as tov_id FROM @<Справочники.ХарактеристикиНоменклатуры>@ as xar WHERE xar.Код='[tov]'}@
- #if !$xar
- #se j:result={{"result":false,"message":"Товар [tov] не найден"}}
- #exitproc
- #endif
- #call mshop_service.execute_print_engine([xar],[Количество],[Шаблон])
- #endfor
- #endproc
- #proc mshop_service.get.label_templates
- #se j:result={{"result":true,"message":"","templates":[[]]}}
- #endproc
- #proc mshop_service.get.product_info
- #include_module price_module
- #se form_date=[$f::now()]
- #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 Наименование='РозницаПлан'}@
-
- #v product_code=[j:query.product_id] /*Код/Серия/Штрихкод/Маркировка*/
-
- #se j:result={{"result":true,"message":""}}
- #src tov_data
- #r
- SELECT
- xar.Код AS Код,
- nom.Артикул AS Артикул,
- nom.Наименование AS наименование,
- sznsv_color.Наименование AS цвет,
- sznsv_size.Наименование AS Размер,
- coalesce(ROUND(pr_xxar.Цена), ROUND(pr_nom.Цена), ROUND(pr_base_xxar.Цена), ROUND(pr_base_nom.Цена), 0) as Цена,
- coalesce(ROUND(pr_plan_xxar.Цена), ROUND(pr_plan_nom.Цена), 0) as Цена_план,
- concat(if(coalesce(pr_plan_xxar.Цена, pr_plan_nom.Цена) > coalesce(pr_xxar.Цена, pr_nom.Цена, pr_base_xxar.Цена, pr_base_nom.Цена), -1, 1) * ROUND((( coalesce(pr_plan_xxar.Цена, pr_plan_nom.Цена) - coalesce(pr_xxar.Цена, pr_nom.Цена, pr_base_xxar.Цена, pr_base_nom.Цена) ) / coalesce(pr_plan_xxar.Цена, pr_plan_nom.Цена) ) * 100), '%') as Скидка,
- [#price.doc_label_type_sql(uc)] as Цвет_ценника
- FROM @<Справочники.ХарактеристикиНоменклатуры>@ AS xar
- INNER JOIN @<Справочники.Номенклатура>@ AS nom ON nom.Ссылка=xar.Владелец
- left join @<Таблицы.ЗначенияСвойств>@ znsv_color on znsv_color.Объект=xar.Ссылка and znsv_color.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование = 'цвет')
- left join @<Справочники.ЗначенияСвойств>@ sznsv_color on sznsv_color.Ссылка=znsv_color.Значение
- left join @<Таблицы.ЗначенияСвойств>@ znsv_size on znsv_size.Объект=xar.Ссылка and znsv_size.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование = 'размер')
- left join @<Справочники.ЗначенияСвойств>@ sznsv_size on sznsv_size.Ссылка=znsv_size.Значение
-
- left join tablici_prajsi as pr_base_nom on pr_base_nom.Номенклатура=nom.ссылка and pr_base_nom.ТипЦены='[BasePriceType]' and pr_base_nom.Характеристика=0 AND pr_base_nom.Дата <= '[form_date]'
- left join tablici_prajsi as pr_base_xxar on pr_base_xxar.Номенклатура=nom.ссылка and pr_base_xxar.ТипЦены='[BasePriceType]' and pr_base_xxar.Характеристика=xar.ссылка AND pr_base_xxar.Дата <= '[form_date]' and pr_base_xxar.Дата>=IFNULL(pr_base_nom.Дата,pr_base_xxar.Дата)
-
- left join tablici_prajsi as pr_nom on pr_nom.Номенклатура=nom.ссылка and pr_nom.ТипЦены='[PriceType]' and pr_nom.Характеристика=0 AND pr_nom.Дата <= '[form_date]' and pr_nom.Дата>=GREATEST(IFNULL(pr_base_nom.Дата, pr_nom.Дата),IFNULL(pr_base_xxar.Дата, pr_nom.Дата) )
- left join tablici_prajsi as pr_xxar on pr_xxar.Номенклатура=nom.ссылка and pr_xxar.ТипЦены='[PriceType]' and pr_xxar.Характеристика=xar.ссылка AND pr_xxar.Дата <= '[form_date]' and pr_xxar.Дата>=GREATEST(IFNULL(pr_base_nom.Дата, pr_xxar.Дата),IFNULL(pr_base_xxar.Дата, pr_xxar.Дата),IFNULL(pr_nom.Дата, pr_xxar.Дата) )
-
- left join tablici_prajsi as pr_plan_nom on pr_plan_nom.Номенклатура=nom.ссылка and pr_plan_nom.ТипЦены='[PlanPriceType]' and pr_plan_nom.Характеристика=0 AND pr_plan_nom.Дата <= '[form_date]'
- left join tablici_prajsi as pr_plan_xxar on pr_plan_xxar.Номенклатура=nom.ссылка and pr_plan_xxar.ТипЦены='[PlanPriceType]' and pr_plan_xxar.Характеристика=xar.ссылка AND pr_plan_xxar.Дата <= '[form_date]' and pr_plan_xxar.Дата>=IFNULL(pr_plan_nom.Дата,pr_plan_xxar.Дата)
-
- left join @<Документы.УстановкаЦенНоменклатуры>@ as uc on uc.ССЫЛКА = coalesce(pr_xxar.Документ, pr_nom.Документ, pr_base_xxar.Документ, pr_base_nom.Документ)
- WHERE xar.Код='[product_code]'
- #query
- #endsrc
-
- #if !{tov_data}
- #se j:result={{"result":false,"message":"Товар с кодом '[product_code]' не найден"}}
- #exitproc
- #endif
- #v j:product_info={{}}
- #v j:product_info.code='{tov_data.Код}'
- #v j:product_info.article='{tov_data.Артикул}'
- #v j:product_info.title='{tov_data.наименование}'
- #v j:product_info.color='{tov_data.цвет}'
- #v j:product_info.size='{tov_data.Размер}'
- #v j:product_info.price={tov_data.Цена}
- #v j:product_info.price_full={tov_data.Цена_план}
- #v j:product_info.discount_title='{tov_data.Скидка}'
- #v j:product_info.label_color="{tov_data.Цвет_ценника}"
-
- #src tov_sizes
- #r
- SELECT
- t.size,
- MAX(t.code) as code,
- GROUP_CONCAT(DISTINCT CONCAT(t.code, ':', t.qty) ORDER BY t.code SEPARATOR ',') all_codes,
- SUM(t.qty) as quantity
- FROM (
- SELECT
- sznsv.Наименование as size,
- xar.Код as code,
- SUM(ost.КОЛИЧЕСТВО) as qty
- FROM @<Справочники.Номенклатура>@ AS nom
- INNER JOIN @<Справочники.ХарактеристикиНоменклатуры>@ as xar ON xar.Владелец=nom.Ссылка
-
- INNER JOIN @<Таблицы.ЗначенияСвойств>@ znsv2 on znsv2.Объект=xar.Ссылка and znsv2.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='Цвет')
- INNER join @<Справочники.ЗначенияСвойств>@ sznsv2 on sznsv2.Ссылка=znsv2.Значение
-
- INNER JOIN @<Таблицы.ЗначенияСвойств>@ znsv on znsv.Объект=xar.Ссылка and znsv.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='размер')
- INNER join @<Справочники.ЗначенияСвойств>@ sznsv on sznsv.Ссылка=znsv.Значение
-
- INNER JOIN @<Таблицы.ОстаткиТовараВТаре>@ ost
- ON ost.ХАРАКТЕРИСТИКА = xar.Ссылка
- AND ost.ТАРА = @{SELECT ССЫЛКА FROM @<Справочники.Тара>@ WHERE Наименование='ТорговыйЗал'}@
-
- WHERE
- nom.Артикул='{tov_data.Артикул}'
- AND sznsv2.Наименование='{tov_data.цвет}'
- GROUP BY xar.Ссылка, sznsv.Наименование, xar.Код
- HAVING SUM(ost.КОЛИЧЕСТВО) > 0
- ) t
- GROUP BY t.size
- ORDER BY t.size
- #query
- #endsrc
-
- #v j:all_sizes=[[]]
- #foreach tov_sizes
- #v j:all_size={{}}
- #v j:all_size.size='{tov_sizes.size}'
- #v j:all_size.code='{tov_sizes.code}'
- #v j:all_size.all_codes='{tov_sizes.all_codes}'
- #v j:all_sizes[[]]=$j:all_size
- #endfor
-
- #v j:product_info.all_sizes=$j:all_sizes
- #se j:result.product_info=$j:product_info
-
- #endproc
- #proc mshop_service.get.product_stock
- #se j:result={{"result":true,"message":""}}
-
- #v j:items=[[]]
- #for tov=([j:query.product_id])
- #src xar_data
- #r
- SELECT
- xar.КОД AS code,
- sznsv.Наименование AS size,
- sznsv2.Наименование AS color,
- SUM(ost.КОЛИЧЕСТВО) AS qty
- FROM @<Справочники.ХарактеристикиНоменклатуры>@ AS xar
- LEFT JOIN @<Таблицы.ЗначенияСвойств>@ znsv2
- on znsv2.Объект=xar.Ссылка
- and znsv2.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='Цвет')
- LEFT join @<Справочники.ЗначенияСвойств>@ sznsv2 on sznsv2.Ссылка=znsv2.Значение
-
- LEFT JOIN @<Таблицы.ЗначенияСвойств>@ znsv
- on znsv.Объект=xar.Ссылка
- and znsv.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='размер')
- LEFT join @<Справочники.ЗначенияСвойств>@ sznsv on sznsv.Ссылка=znsv.Значение
-
- INNER JOIN @<Таблицы.ОстаткиТовараВТаре>@ ost
- ON ost.ХАРАКТЕРИСТИКА = xar.Ссылка
- AND ost.ТАРА = @{SELECT ССЫЛКА FROM @<Справочники.Тара>@ WHERE Наименование='ТорговыйЗал'}@
- WHERE xar.Код='[tov]'
- HAVING SUM(ost.КОЛИЧЕСТВО) > 0
- #query
- #endsrc
- #if !{xar_data}
- #continue
- #endif
- #v j:item={{}}
-
- #v j:item.code='{xar_data.code}'
- #v j:item.size='{xar_data.size}'
- #v j:item.color='{xar_data.color}'
- #v j:item.qty={xar_data.qty}
-
- #v j:items[[]]=$j:item
- #endfor
- #se j:result.items=$j:items
- #endproc
|