Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

mshop_service_module.spm 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. #proc get_printer_name
  2. #env_params_get ПРИНТЕРЭТИКЕТОК.WSPOOLER.PRINTERNAME
  3. /*ZDesigner ZD410-203dpi ZPL стандартное название принтера зебра*/
  4. #v name=[ПРИНТЕРЭТИКЕТОК.WSPOOLER.PRINTERNAME]
  5. #win_enumprinters printer_list
  6. #v printer
  7. #for v=([printer_list])\;
  8. #continue ? ![v#?ZDesigner] && ![v#?TSC]
  9. #v printer=[v]
  10. #break ? !$name
  11. #break ? $v=$name
  12. #endfor
  13. [printer]
  14. #endproc
  15. #proc mshop_service.execute_print_engine(Характеристика, Количество, Шаблон)
  16. #r
  17. #v template_text=@{select Шаблон from @<Справочники.ШаблоныПечатиЭтикеток>@ where Наименование='[Шаблон]' }@
  18. #case !$template_text #then #exception Шаблон '[Шаблон]' не найден!
  19. #globalobjs_get Dep.ссылка
  20. #out_save proc_out
  21. #try
  22. #o sticker
  23. #se Характеристика.ссылка=[Характеристика]
  24. #se Подразделение.ссылка=[Dep.ссылка]
  25. #se КОЛ-ВО КОПИЙ=[Количество]
  26. #se КОЛИЧЕСТВО=[Количество]
  27. #macro_load_from_var macro_stemplate=template_text
  28. #macro_exec macro_stemplate
  29. #v printer=[#get_printer_name]
  30. #if !$printer
  31. #exception В системе не настроен принтер этикеток, обратитесь в тех поддержку;
  32. #endif
  33. #win_rawprint [printer],sticker,test_sticker
  34. #catch
  35. #win_enumprinters printer_list
  36. ;#se error=[?%exception.short_msg];[?%exception.msg];ENV [$env];Выбран: [?name] Список: [?printer_list]
  37. #se error=[?%exception.msg] [$endl]Список доступных принтеров: [?printer_list];[$endl]Выбранный принтер: [?printer].
  38. #se j:result={{"result":false,"message":"[error]"}}
  39. #exitproc
  40. #endtry
  41. #r
  42. #out_restore proc_out
  43. #env_get_env
  44. #se j:result={{"result":true,"message":"Ценник отправлен на принтер:'[?printer]', среда:'[env_get_env]'"}}
  45. #endproc
  46. #proc mshop_service.execute_print_engine_2(Характеристика, Количество, Шаблон)
  47. #v template_text=@{select Шаблон from @<Справочники.ШаблоныПечатиЭтикеток>@ where Наименование='[Шаблон]' }@
  48. #case !$template_text #then #exception Шаблон '[Шаблон]' не найден!
  49. #globalobjs_get Dep.ссылка
  50. #out_save proc_out
  51. #try
  52. #o sticker
  53. #r
  54. #se Характеристика.ссылка=[Характеристика]
  55. #se Подразделение.ссылка=[Dep.ссылка]
  56. #se КОЛ-ВО КОПИЙ=[Количество]
  57. #se КОЛИЧЕСТВО=[Количество]
  58. #macro_load_from_var macro_stemplate=template_text
  59. #macro_exec macro_stemplate
  60. #splp_connect
  61. #splp_send_out
  62. #catch
  63. #se error=[?%exception.short_msg];[?%exception.msg];ENV [$env];
  64. #se j:result={{"result":false,"message":"[error]"}}
  65. #exitproc
  66. #endtry
  67. #r
  68. #out_restore proc_out
  69. #env_get_env
  70. #se j:result={{"result":true,"message":"Запрос на печать успешно обработан. среда:'[env_get_env]'"}}
  71. #endproc
  72. #proc mshop_service.post.print_label
  73. #v Количество=[j:query.count]
  74. #v Шаблон=ЦенникНаТоварНовый/*поддержать выбор размера ценника результат выполнения get label_templates*/
  75. ;#v Шаблон=@'[j:query.template]'@
  76. #se j:result={{"result":true,"message":""}}
  77. #if ![j:query.product_id]
  78. #se j:result={{"result":false,"message":"не переданы коды товаров для печати"}}
  79. #exit
  80. #endif
  81. #for tov=([j:query.product_id])
  82. #v xar=@{SELECT xar.Ссылка as tov_id FROM @<Справочники.ХарактеристикиНоменклатуры>@ as xar WHERE xar.Код='[tov]'}@
  83. #if !$xar
  84. #se j:result={{"result":false,"message":"Товар [tov] не найден"}}
  85. #exitproc
  86. #endif
  87. #call mshop_service.execute_print_engine([xar],[Количество],[Шаблон])
  88. #endfor
  89. #endproc
  90. #proc mshop_service.get.print_label
  91. #v Количество=[j:query.count]
  92. #v Шаблон=ЦенникНаТоварНовый/*поддержать выбор размера ценника результат выполнения get label_templates*/
  93. ;#v Шаблон=@'[j:query.template]'@
  94. #se j:result={{"result":true,"message":""}}
  95. #if ![j:query.product_id]
  96. #se j:result={{"result":false,"message":"не переданы коды товаров для печати"}}
  97. #exitproc
  98. #endif
  99. #for tov=([j:query.product_id])
  100. #v xar=@{SELECT xar.Ссылка as tov_id FROM @<Справочники.ХарактеристикиНоменклатуры>@ as xar WHERE xar.Код='[tov]'}@
  101. #if !$xar
  102. #se j:result={{"result":false,"message":"Товар [tov] не найден"}}
  103. #exitproc
  104. #endif
  105. #call mshop_service.execute_print_engine([xar],[Количество],[Шаблон])
  106. #endfor
  107. #endproc
  108. #proc mshop_service.get.label_templates
  109. #se j:result={{"result":true,"message":"","templates":[[]]}}
  110. #endproc
  111. #proc mshop_service.get.product_info
  112. #include_module price_module
  113. #se form_date=[$f::now()]
  114. #globalobjs_get Dep.Код
  115. #se Подразделение.код=[dep.код]
  116. #se PriceType=@{select tp.ссылка from spravochniki_tipicen as tp inner join spravochniki_podrazdeleniya as dep on dep.ТипЦен=tp.ссылка where dep.Код='[Подразделение.Код]'}@
  117. #se BasePriceType=@{select IFNULL(БазовыйТипЦен,0) from spravochniki_tipicen as tp inner join spravochniki_podrazdeleniya as dep on dep.ТипЦен=tp.ссылка where dep.Код='[Подразделение.Код]'}@
  118. #se PlanPriceType=@{select Ссылка from spravochniki_tipicen as tp where Наименование='РозницаПлан'}@
  119. #v product_code=[j:query.product_id] /*Код/Серия/Штрихкод/Маркировка*/
  120. #se j:result={{"result":true,"message":""}}
  121. #src tov_data
  122. #r
  123. SELECT
  124. xar.Код AS Код,
  125. nom.Артикул AS Артикул,
  126. nom.Наименование AS наименование,
  127. sznsv_color.Наименование AS цвет,
  128. sznsv_size.Наименование AS Размер,
  129. coalesce(ROUND(pr_xxar.Цена), ROUND(pr_nom.Цена), ROUND(pr_base_xxar.Цена), ROUND(pr_base_nom.Цена), 0) as Цена,
  130. coalesce(ROUND(pr_plan_xxar.Цена), ROUND(pr_plan_nom.Цена), 0) as Цена_план,
  131. 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 Скидка,
  132. [#price.doc_label_type_sql(uc)] as Цвет_ценника
  133. FROM @<Справочники.ХарактеристикиНоменклатуры>@ AS xar
  134. INNER JOIN @<Справочники.Номенклатура>@ AS nom ON nom.Ссылка=xar.Владелец
  135. left join @<Таблицы.ЗначенияСвойств>@ znsv_color on znsv_color.Объект=xar.Ссылка and znsv_color.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование = 'цвет')
  136. left join @<Справочники.ЗначенияСвойств>@ sznsv_color on sznsv_color.Ссылка=znsv_color.Значение
  137. left join @<Таблицы.ЗначенияСвойств>@ znsv_size on znsv_size.Объект=xar.Ссылка and znsv_size.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование = 'размер')
  138. left join @<Справочники.ЗначенияСвойств>@ sznsv_size on sznsv_size.Ссылка=znsv_size.Значение
  139. 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]'
  140. 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.Дата)
  141. 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.Дата) )
  142. 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.Дата) )
  143. 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]'
  144. 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.Дата)
  145. left join @<Документы.УстановкаЦенНоменклатуры>@ as uc on uc.ССЫЛКА = coalesce(pr_xxar.Документ, pr_nom.Документ, pr_base_xxar.Документ, pr_base_nom.Документ)
  146. WHERE xar.Код='[product_code]'
  147. #query
  148. #endsrc
  149. #if !{tov_data}
  150. #se j:result={{"result":false,"message":"Товар с кодом '[product_code]' не найден"}}
  151. #exitproc
  152. #endif
  153. #v j:product_info={{}}
  154. #v j:product_info.code='{tov_data.Код}'
  155. #v j:product_info.article='{tov_data.Артикул}'
  156. #v j:product_info.title='{tov_data.наименование}'
  157. #v j:product_info.color='{tov_data.цвет}'
  158. #v j:product_info.size='{tov_data.Размер}'
  159. #v j:product_info.price={tov_data.Цена}
  160. #v j:product_info.price_full={tov_data.Цена_план}
  161. #v j:product_info.discount_title='{tov_data.Скидка}'
  162. #v j:product_info.label_color="{tov_data.Цвет_ценника}"
  163. #src tov_sizes
  164. #r
  165. SELECT
  166. t.size,
  167. MAX(t.code) as code,
  168. GROUP_CONCAT(DISTINCT CONCAT(t.code, ':', t.qty) ORDER BY t.code SEPARATOR ',') all_codes,
  169. SUM(t.qty) as quantity
  170. FROM (
  171. SELECT
  172. sznsv.Наименование as size,
  173. xar.Код as code,
  174. SUM(ost.КОЛИЧЕСТВО) as qty
  175. FROM @<Справочники.Номенклатура>@ AS nom
  176. INNER JOIN @<Справочники.ХарактеристикиНоменклатуры>@ as xar ON xar.Владелец=nom.Ссылка
  177. INNER JOIN @<Таблицы.ЗначенияСвойств>@ znsv2 on znsv2.Объект=xar.Ссылка and znsv2.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='Цвет')
  178. INNER join @<Справочники.ЗначенияСвойств>@ sznsv2 on sznsv2.Ссылка=znsv2.Значение
  179. INNER JOIN @<Таблицы.ЗначенияСвойств>@ znsv on znsv.Объект=xar.Ссылка and znsv.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='размер')
  180. INNER join @<Справочники.ЗначенияСвойств>@ sznsv on sznsv.Ссылка=znsv.Значение
  181. INNER JOIN @<Таблицы.ОстаткиТовараВТаре>@ ost
  182. ON ost.ХАРАКТЕРИСТИКА = xar.Ссылка
  183. AND ost.ТАРА = @{SELECT ССЫЛКА FROM @<Справочники.Тара>@ WHERE Наименование='ТорговыйЗал'}@
  184. WHERE
  185. nom.Артикул='{tov_data.Артикул}'
  186. AND sznsv2.Наименование='{tov_data.цвет}'
  187. GROUP BY xar.Ссылка, sznsv.Наименование, xar.Код
  188. HAVING SUM(ost.КОЛИЧЕСТВО) > 0
  189. ) t
  190. GROUP BY t.size
  191. ORDER BY t.size
  192. #query
  193. #endsrc
  194. #v j:all_sizes=[[]]
  195. #foreach tov_sizes
  196. #v j:all_size={{}}
  197. #v j:all_size.size='{tov_sizes.size}'
  198. #v j:all_size.code='{tov_sizes.code}'
  199. #v j:all_size.all_codes='{tov_sizes.all_codes}'
  200. #v j:all_sizes[[]]=$j:all_size
  201. #endfor
  202. #v j:product_info.all_sizes=$j:all_sizes
  203. #se j:result.product_info=$j:product_info
  204. #endproc
  205. #proc mshop_service.get.product_stock
  206. #se j:result={{"result":true,"message":""}}
  207. #v j:items=[[]]
  208. #for tov=([j:query.product_id])
  209. #src xar_data
  210. #r
  211. SELECT
  212. xar.КОД AS code,
  213. sznsv.Наименование AS size,
  214. sznsv2.Наименование AS color,
  215. SUM(ost.КОЛИЧЕСТВО) AS qty
  216. FROM @<Справочники.ХарактеристикиНоменклатуры>@ AS xar
  217. LEFT JOIN @<Таблицы.ЗначенияСвойств>@ znsv2
  218. on znsv2.Объект=xar.Ссылка
  219. and znsv2.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='Цвет')
  220. LEFT join @<Справочники.ЗначенияСвойств>@ sznsv2 on sznsv2.Ссылка=znsv2.Значение
  221. LEFT JOIN @<Таблицы.ЗначенияСвойств>@ znsv
  222. on znsv.Объект=xar.Ссылка
  223. and znsv.Свойство=(select ссылка from @<Справочники.НаименованияСвойств>@ where Наименование='размер')
  224. LEFT join @<Справочники.ЗначенияСвойств>@ sznsv on sznsv.Ссылка=znsv.Значение
  225. INNER JOIN @<Таблицы.ОстаткиТовараВТаре>@ ost
  226. ON ost.ХАРАКТЕРИСТИКА = xar.Ссылка
  227. AND ost.ТАРА = @{SELECT ССЫЛКА FROM @<Справочники.Тара>@ WHERE Наименование='ТорговыйЗал'}@
  228. WHERE xar.Код='[tov]'
  229. HAVING SUM(ost.КОЛИЧЕСТВО) > 0
  230. #query
  231. #endsrc
  232. #if !{xar_data}
  233. #continue
  234. #endif
  235. #v j:item={{}}
  236. #v j:item.code='{xar_data.code}'
  237. #v j:item.size='{xar_data.size}'
  238. #v j:item.color='{xar_data.color}'
  239. #v j:item.qty={xar_data.qty}
  240. #v j:items[[]]=$j:item
  241. #endfor
  242. #se j:result.items=$j:items
  243. #endproc