Advertisement
Guest User

kupon

a guest
Nov 24th, 2017
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.98 KB | None | 0 0
  1. /// Proxy trieda pre BabyBox kupón
  2. Class Organization.Proxy.BabyBox.Coupon Extends (%RegisteredObject, %XML.Adaptor, FW.Base.Proxy) [ Inheritance = right ]
  3. {
  4.  
  5. /// name of persistent class that contains real data
  6. Parameter PERSISTENCYCONTAINER = "Organization.BabyBox.Coupon";
  7.  
  8. /// Metóda overí, či je kupón v nejakej "otvorenej" zásielke, alebo neboli prevzaté
  9. /// Ak áno tak vráti ID zásielky
  10. ClassMethod CheckInPackage(couponId As %String = "") As %String
  11. {
  12. #dim retVal As %String=""
  13. q:couponId="" retVal
  14.  
  15. &sql(SELECT ObjPackage INTO :retVal
  16. FROM Organization_BabyBox.CouponInPackage
  17. WHERE ObjCoupon=:couponId AND (ObjPackage->ObjStatus->IsFinal=0 OR ObjStatus->IsFinal=0))
  18. i SQLCODE<0
  19. {
  20. $$$FWThrowSQLCODE(SQLCODE)
  21. }
  22. elseif SQLCODE=100
  23. {
  24. s retVal=""
  25. }
  26. q retVal
  27. }
  28.  
  29. /// Metóda overí čo má/mal POI (Relationship) nejaký kupón v stave Vydaný (I) alebo Uplatnený (U)
  30. /// Ak áno tak vráti Identifikátor kupónu
  31. ClassMethod CheckByRelationship(relId As %String = "") As %String
  32. {
  33. #dim retVal As %String=""
  34. &sql(SELECT Ident INTO :retVal
  35. FROM Organization_BabyBox.Coupon
  36. WHERE ObjRelationship=:relId AND ObjStatus IN ('I','U'))
  37. i SQLCODE<0
  38. {
  39. $$$FWThrowSQLCODE(SQLCODE)
  40. }
  41. elseif SQLCODE=100
  42. {
  43. s retVal=""
  44. }
  45. q retVal
  46. }
  47.  
  48. /// Metóda overí či neexistuje platný kupón s identifikátorom v nie finálnom stave
  49. /// Ak takýto kupón existuje tak vráti jeho ID
  50. ClassMethod CheckByIdent(ident As %String = "") As %String
  51. {
  52. #dim retVal As %String=""
  53. &sql(SELECT %NOLOCK ID INTO :retVal
  54. FROM Organization_BabyBox.Coupon
  55. WHERE Ident=:ident AND (SYSDATE BETWEEN ValidFrom AND ISNULL(ValidTo,SYSDATE)) AND ObjStatus->IsFinal=0)
  56. i SQLCODE<0
  57. {
  58. $$$FWThrowSQLCODE(SQLCODE)
  59. }
  60. elseif SQLCODE=100
  61. {
  62. s retVal=""
  63. }
  64. q retVal
  65. }
  66.  
  67. ClassMethod GetSVCButton(relId As %String = "", ByRef objButton As FW.WEB.Components.Button.Settings) As %String
  68. {
  69. #dim retVal,pastCoupon As %String=""
  70. #dim sc As %Status=$$$OK
  71. #dim ex As %Exception.StatusException
  72. q:relId="" retVal
  73. try
  74. {
  75. //Overíme predchádzajúce kupóny
  76. s pastCoupon=..CheckByRelationship(relId)
  77.  
  78. s objitem=##class(FW.WEB.Components.Button.Item).%New()
  79. s objitem.IsVisible=1
  80. s objitem.Title=$$$FWAppText("Vydať BBox kupón")
  81. i pastCoupon=""
  82. {
  83. s objitem.OnClickUrl="FW.WEB.UI.CSP.Wizard.cls?mdx_wizard=AssignBBCoupon&relId="_$$$FWEscapeURL(relId)
  84. s objitem.OnClickUrlTarget="_dialog"
  85. }
  86. else
  87. {
  88. s objitem.OnClickJS="$.jAlert("_$$$FWEscapeJS($$$FWAppText("Pre POI už bol pridelený kupón BBox: ")_pastCoupon)_",'info');"
  89. }
  90. s objitem.ResourceName="AssignBBCoupon"
  91. s objitem.ResourceRights="R"
  92. s objitem.ObjButton=objButton
  93.  
  94. }
  95. catch(ex)
  96. {
  97. s sc=ex.AsStatus()
  98. }
  99. q sc
  100. }
  101.  
  102. /// OnFormSave metóda pre wizard AssignBBCoupon v SVC POI
  103. /// Priradí kupón k POI
  104. ClassMethod OnFormSaveAssignMethodClass(ByRef formProxy As FW.WEB.Proxy.Form.Settings, ByRef objProxy As FW.Base.Proxy, ByRef itemData, ByRef saveData, ByRef childData, ByRef customData, ByRef additionalSaveData, ByRef contextData) As %Status
  105. {
  106. #Dim ex As %Exception.StatusException=""
  107. #Dim sc As %Status=$$$OK
  108. #Dim couponId,relId,couponIdent,couponRelationship,couponStatus,couponPackage,pastCoupon As %String=""
  109. #Dim coupon As Organization.BabyBox.Coupon
  110. try
  111. {
  112. s couponIdent=$g(itemData("frmItObjCoupon"))
  113. s relId=$g(itemData("frmItObjRelationship"))
  114.  
  115. //Overíme, či taký kupón existuje a vyhovuje pravidlám
  116. &sql(SELECT ID,ObjStatus,ObjRelationship->Name,ObjPackage->Ident INTO :couponId,:couponStatus,:couponRelationship,:couponPackage
  117. FROM Organization_BabyBox.Coupon
  118. WHERE Ident=:couponIdent AND SYSDATE BETWEEN ValidFrom AND isnull(ValidTo,SYSDATE))
  119. i SQLCODE'=0
  120. {
  121. $$$FWThrowMessage($$$FormatText($$$FWText("Kupón s čiarovým kódom: '%1' v systéme neexistuje alebo je neplatný!",$$$FWDomain),couponIdent))
  122. }
  123.  
  124. //Overíme, či pre POI už nie je pridelený nejaký kupón
  125. s pastCoupon=..CheckByRelationship(relId)
  126. i pastCoupon'=""
  127. {
  128. $$$FWThrowMessage($$$FormatText($$$FWText("Pre POI už bol pridelený kupón BBox: '%1'!",$$$FWDomain),pastCoupon))
  129. }
  130.  
  131. //Overíme, či kupón už nie je v zásielke
  132. i couponPackage'=""
  133. {
  134. $$$FWThrowMessage($$$FormatText($$$FWText("Kupón s čiarovým kódom: '%1' je v zásielke '%2'!",$$$FWDomain),couponIdent,couponPackage))
  135. }
  136.  
  137. //Overíme, či kupón už nie je priradený k inému POI
  138. i couponRelationship'=""
  139. {
  140. $$$FWThrowMessage($$$FormatText($$$FWText("Kupón s čiarovým kódom: '%1' je už priradený POI '%2'!",$$$FWDomain),couponIdent,couponRelationship))
  141. }
  142.  
  143. //Overíme, či je kupón v stave Pripravený na použitie "P"
  144.  
  145. i couponStatus'="P"
  146. {
  147. $$$FWThrowMessage($$$FormatText($$$FWText("Kupón s čiarovým kódom: '%1' nie je v stave pripravený na použitie!",$$$FWDomain),couponIdent))
  148. }
  149.  
  150. //Do kupónu zapíšeme POI, nastavíme čas vydania, kto vydal a zmeníme stav na Vydaný (I)
  151. s pxy=..%New()
  152. $$$THROWONERROR(sc,pxy.OpenInstance(couponId))
  153. s coupon=pxy.%Instance
  154. s couponIdent=coupon.Ident
  155. s coupon.Assigned=$$$FWNowDate
  156. $$$THROWONERROR(sc,coupon.ObjRelationshipSetObjectId(relId))
  157. $$$THROWONERROR(sc,coupon.ObjStatusSetObjectId("I"))
  158. $$$THROWONERROR(sc,coupon.AssignedBySetObjectId($$$FWUserId))
  159. $$$THROWONERROR(sc,pxy.SaveInstance())
  160.  
  161. //Vytvoríme požiadavku (Ticket) Poistenec/Žiadosť/Výhody/Kupón BBox-vydanie a hneď aj uzavrieme
  162. $$$THROWONERROR(sc,##class(CRM.Ticket.Proxy.Data.Ticket).CreateAndCloseTicket("Kupón BBox-vydanie",couponIdent,"poi","request","10068",,"branch",$$$FWUserLogin,relId,,,,,$$$FWAppText("Požiadavka poistenca"),,,"395"))
  163.  
  164. //Nastavime priznak, ze sa nema automaticky zavolat save instance.
  165. s formProxy.OnFormSaveCallSaveInstance=0
  166.  
  167. }
  168. catch (ex)
  169. {
  170. s sc=$$$FWDecomposeExc(ex)
  171. }
  172. q sc
  173. }
  174.  
  175. /// Metóda, ktorá sa volá pred uložením inštancie
  176. Method PreSaveInstance() As %Status
  177. {
  178. #Dim checkIdent As %String=""
  179. #Dim ex As %Exception.StatusException=""
  180. #Dim sc As %Status=$$$OK
  181. try
  182. {
  183. i ..%IsNewInstance
  184. {
  185. s checkIdent=##class(Organization.Proxy.BabyBox.Coupon).CheckByIdent(..%Instance.Ident)
  186. i (checkIdent'="")
  187. {
  188. $$$FWThrowMessage($$$FormatText($$$FWText("Kupón s čiarovým kódom: '%1' už v systéme existuje! (ID: '%2')",$$$FWDomain),..%Instance.Ident,checkIdent))
  189. }
  190.  
  191. //Pretože iba importujeme tak rovno meníme stav kupónu na Pripravený na použitie "P"
  192. $$$THROWONERROR(sc,..%Instance.ObjStatusSetObjectId("P"))
  193.  
  194. //Kupóny sa vytvárajú len na centrálnom sklade
  195. $$$THROWONERROR(sc,..%Instance.ObjStockSetObjectId(##class(Organization.Proxy.BabyBox.CouponImport).#COUPONCENTRALSTOCKID))
  196. }
  197. }
  198. catch (ex)
  199. {
  200. s sc=$$$FWDecomposeExc(ex)
  201. }
  202. q sc
  203. }
  204.  
  205. /// WO154648 30.05.2017 KLUD
  206. /// ClassMetóda, ktorá nastaví POI na BBox kupóne
  207. /// Required: ČK BabyBox kupónu, RČ POI
  208. /// Optional: Dátum priradenia kupónu - ak nie je zadaný berie sa aktuálny (1.1.2017)
  209. /// Príznak či vytvoriť aj požiadavku - štandardne sa nevytvára
  210. /// Login používateľa, ktorý vykonáva zmenu - štandardne sa berie aktuálne prihlásený
  211. ClassMethod AssignPOI(couponBarCode As %String = "", identifierPOI As %String = "", assigned As %Date = "", createTicket As %Boolean = 0, userLogin As %String = "") As %Status
  212. {
  213. #Dim idRel As %String=""
  214. #Dim pxyCoupon As Organization.Proxy.BabyBox.Coupon
  215. #Dim coupon As Organization.BabyBox.Coupon
  216. #Dim ex As %Exception.StatusException=""
  217. #Dim sc As %Status=$$$OK
  218. #Dim inTran=0
  219. $$$FWTSTART(inTran)
  220. try
  221. {
  222. i couponBarCode=""
  223. {
  224. $$$FWThrowMessage($$$FWAppText("Nebol zadaný ČK kupónu!"))
  225. }
  226. i identifierPOI=""
  227. {
  228. $$$FWThrowMessage($$$FWAppText("Nebolo zadané RČ poistenca!"))
  229. }
  230. s:userLogin="" userLogin=$$$FWUserLogin
  231. i assigned=""
  232. {
  233. s assigned=$$$FWNowDate
  234. }
  235. else
  236. {
  237. s assigned=##class(Datatypes.Date).DisplayToLogical(assigned)
  238. }
  239.  
  240. //Získame ID Relationshipu POI (napríklad z RČ):
  241. &sql(SELECT %NOLOCK r.ID INTO :idRel
  242. FROM CRM_Entity_Data.Relationship r
  243. JOIN CRM_Entity_Data.Individual e ON (e.ID=r.ObjEntity)
  244. WHERE e.RC=:identifierPOI)
  245. i SQLCODE'=0
  246. {
  247. $$$FWThrowMessage($$$FormatText($$$FWText("POI s rodným číslom: '%1' v systéme neexistuje!",$$$FWDomain),identifierPOI))
  248. }
  249.  
  250. //Získame ID kupónu podľa jeho ČK
  251. &sql(SELECT %NOLOCK ID,ObjStatus,ObjPackage INTO :idCoupon,:couponStatus,:couponPackage
  252. FROM Organization_BabyBox.Coupon
  253. WHERE Ident=:couponBarCode)
  254. i SQLCODE'=0
  255. {
  256. $$$FWThrowMessage($$$FormatText($$$FWText("Kupón BBox s čiarovým kódom: '%1' v systéme neexistuje!",$$$FWDomain),couponBarCode))
  257. }
  258. i couponPackage'=""
  259. {
  260. $$$FWThrowMessage($$$FormatText($$$FWText("Kupón BBox s čiarovým kódom: '%1' sa nachádza v zásielke!",$$$FWDomain),couponBarCode))
  261. }
  262.  
  263.  
  264. //Získame ID security usera podľa loginu
  265. &sql(SELECT %NOLOCK ID INTO :idUser
  266. FROM Security_Data."User"
  267. WHERE LoginName=:userLogin)
  268. i SQLCODE'=0
  269. {
  270. $$$FWThrowMessage($$$FormatText($$$FWText("Používateľ s loginom: '%1' v systéme neexistuje!",$$$FWDomain),userLogin))
  271. }
  272.  
  273. //Nastaviť zmenu na kupóne
  274. s pxyCoupon=##class(Organization.Proxy.BabyBox.Coupon).%New()
  275. $$$THROWONERROR(sc,pxyCoupon.OpenInstance(idCoupon))
  276. s coupon=pxyCoupon.%Instance
  277. s coupon.Assigned=assigned
  278. $$$THROWONERROR(sc,coupon.ObjRelationshipSetObjectId(idRel))
  279. $$$THROWONERROR(sc,coupon.ObjStatusSetObjectId("I"))
  280. $$$THROWONERROR(sc,coupon.AssignedBySetObjectId(userLogin))
  281. $$$THROWONERROR(sc,pxyCoupon.SaveInstance())
  282.  
  283. //Ak je záujem vytvárame aj ticket
  284. i createTicket
  285. {
  286. $$$THROWONERROR(sc,##class(CRM.Ticket.Proxy.Data.Ticket).CreateAndCloseTicket("Kupón BBox-vydanie",couponBarCode,"poi","request","10068",,"branch",userLogin,idRel,,,,,"Požiadavka poistenca",,,"395"))
  287. }
  288. $$$FWTCOMMIT(inTran)
  289. }
  290. catch (ex)
  291. {
  292. s sc=$$$FWDecomposeExc(ex)
  293. }
  294. $$$FWTROLLBACK(inTran)
  295. q sc
  296. }
  297.  
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement