#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