g-bestell-mengen.w 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  4. &Scoped-define FRAME-NAME gBestMengen
  5. {adecomm/appserv.i}
  6. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gBestMengen
  7. /*------------------------------------------------------------------------
  8. File:
  9. Description: from cntnrdlg.w - ADM2 SmartDialog Template
  10. Input Parameters:
  11. <none>
  12. Output Parameters:
  13. <none>
  14. Author:
  15. Created:
  16. ------------------------------------------------------------------------*/
  17. /* This .W file was created with the Progress AppBuilder. */
  18. /*----------------------------------------------------------------------*/
  19. /* Create an unnamed pool to store all the widgets created
  20. by this procedure. This is a good default which assures
  21. that this procedure's triggers and internal procedures
  22. will execute in this procedure's storage, and that proper
  23. cleanup will occur on deletion of the procedure. */
  24. CREATE WIDGET-POOL.
  25. /* *************************** Definitions ************************** */
  26. /* Parameters Definitions --- */
  27. DEF INPUT-OUTPUT PARAMETER iphtVorschlag AS HANDLE NO-UNDO.
  28. /* Local Variable Definitions --- */
  29. DEFINE VARIABLE lMinMaxMenge AS LOGICAL NO-UNDO.
  30. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  31. { incl/dlgdefinition.i }
  32. { src/adm2/widgetprto.i }
  33. /* _UIB-CODE-BLOCK-END */
  34. &ANALYZE-RESUME
  35. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  36. /* ******************** Preprocessor Definitions ******************** */
  37. &Scoped-define PROCEDURE-TYPE SmartDialog
  38. &Scoped-define DB-AWARE no
  39. &Scoped-define ADM-CONTAINER DIALOG-BOX
  40. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  41. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  42. &Scoped-define FRAME-NAME gBestMengen
  43. /* Standard List Definitions */
  44. &Scoped-Define ENABLED-OBJECTS RECT-2 F_GGeb_Me F_VGeb_Me F_KGeb_Me Btn_OK ~
  45. Btn_Cancel
  46. &Scoped-Define DISPLAYED-OBJECTS F_GGeb_Me F_VGeb_Me F_KGeb_Me
  47. /* Custom List Definitions */
  48. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  49. &Scoped-define List-6 F_GGeb_Me F_VGeb_Me F_KGeb_Me
  50. /* _UIB-PREPROCESSOR-BLOCK-END */
  51. &ANALYZE-RESUME
  52. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "SmartDialogCues" gBestMengen _INLINE
  53. /* Actions: adecomm/_so-cue.w ? adecomm/_so-cued.p ? adecomm/_so-cuew.p */
  54. /* SmartDialog,ab,49267
  55. Destroy on next read */
  56. /* _UIB-CODE-BLOCK-END */
  57. &ANALYZE-RESUME
  58. /* *********************** Control Definitions ********************** */
  59. /* Define a dialog box */
  60. /* Definitions of the field level widgets */
  61. DEFINE BUTTON Btn_Cancel AUTO-END-KEY
  62. LABEL "abbrechen"
  63. SIZE 15 BY 1.
  64. DEFINE BUTTON Btn_OK AUTO-GO
  65. LABEL "OK"
  66. SIZE 15 BY 1.
  67. DEFINE VARIABLE F_GGeb_Me AS INTEGER FORMAT "zzz,zz9-":U INITIAL 0
  68. LABEL "GGebinde"
  69. VIEW-AS FILL-IN NATIVE
  70. SIZE 12 BY 1
  71. BGCOLOR 15 NO-UNDO.
  72. DEFINE VARIABLE F_KGeb_Me AS INTEGER FORMAT "zzz,zz9-":U INITIAL 0
  73. LABEL "KGebinde"
  74. VIEW-AS FILL-IN NATIVE
  75. SIZE 12 BY 1
  76. BGCOLOR 15 NO-UNDO.
  77. DEFINE VARIABLE F_VGeb_Me AS INTEGER FORMAT "zzz,zz9-":U INITIAL 0
  78. LABEL "VGebinde"
  79. VIEW-AS FILL-IN NATIVE
  80. SIZE 12 BY 1
  81. BGCOLOR 15 NO-UNDO.
  82. DEFINE RECTANGLE RECT-2
  83. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  84. SIZE 60 BY 4.29.
  85. /* ************************ Frame Definitions *********************** */
  86. DEFINE FRAME gBestMengen
  87. F_GGeb_Me AT ROW 2 COL 28 COLON-ALIGNED WIDGET-ID 4
  88. F_VGeb_Me AT ROW 3 COL 28 COLON-ALIGNED WIDGET-ID 6
  89. F_KGeb_Me AT ROW 4 COL 28 COLON-ALIGNED WIDGET-ID 8
  90. Btn_OK AT ROW 6 COL 12.2
  91. Btn_Cancel AT ROW 6 COL 33.4
  92. RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2
  93. SPACE(1.99) SKIP(1.93)
  94. WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER
  95. SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE
  96. TITLE "Bestellmengen"
  97. CANCEL-BUTTON Btn_Cancel WIDGET-ID 100.
  98. /* *********************** Procedure Settings ************************ */
  99. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  100. /* Settings for THIS-PROCEDURE
  101. Type: SmartDialog
  102. Allow: Basic,Browse,DB-Fields,Query,Smart
  103. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  104. Design Page: 1
  105. Other Settings: COMPILE APPSERVER
  106. */
  107. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  108. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gBestMengen
  109. /* ************************* Included-Libraries *********************** */
  110. {src/adm2/containr.i}
  111. /* _UIB-CODE-BLOCK-END */
  112. &ANALYZE-RESUME
  113. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  114. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  115. /* SETTINGS FOR DIALOG-BOX gBestMengen
  116. FRAME-NAME */
  117. ASSIGN
  118. FRAME gBestMengen:SCROLLABLE = FALSE
  119. FRAME gBestMengen:HIDDEN = TRUE.
  120. /* SETTINGS FOR FILL-IN F_GGeb_Me IN FRAME gBestMengen
  121. 6 */
  122. /* SETTINGS FOR FILL-IN F_KGeb_Me IN FRAME gBestMengen
  123. 6 */
  124. /* SETTINGS FOR FILL-IN F_VGeb_Me IN FRAME gBestMengen
  125. 6 */
  126. /* _RUN-TIME-ATTRIBUTES-END */
  127. &ANALYZE-RESUME
  128. /* Setting information for Queries and Browse Widgets fields */
  129. &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gBestMengen
  130. /* Query rebuild information for DIALOG-BOX gBestMengen
  131. _Options = "SHARE-LOCK"
  132. _Query is NOT OPENED
  133. */ /* DIALOG-BOX gBestMengen */
  134. &ANALYZE-RESUME
  135. /* ************************ Control Triggers ************************ */
  136. &Scoped-define SELF-NAME gBestMengen
  137. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gBestMengen gBestMengen
  138. ON END-ERROR OF FRAME gBestMengen /* Bestellmengen */
  139. DO:
  140. RUN ENDE.
  141. RETURN NO-APPLY.
  142. END.
  143. /* _UIB-CODE-BLOCK-END */
  144. &ANALYZE-RESUME
  145. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gBestMengen gBestMengen
  146. ON WINDOW-CLOSE OF FRAME gBestMengen /* Bestellmengen */
  147. DO:
  148. RUN ENDE.
  149. RETURN NO-APPLY.
  150. END.
  151. /* _UIB-CODE-BLOCK-END */
  152. &ANALYZE-RESUME
  153. &Scoped-define SELF-NAME Btn_Cancel
  154. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel gBestMengen
  155. ON CHOOSE OF Btn_Cancel IN FRAME gBestMengen /* abbrechen */
  156. DO:
  157. RUN ENDE.
  158. RETURN NO-APPLY.
  159. END.
  160. /* _UIB-CODE-BLOCK-END */
  161. &ANALYZE-RESUME
  162. &Scoped-define SELF-NAME Btn_OK
  163. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK gBestMengen
  164. ON CHOOSE OF Btn_OK IN FRAME gBestMengen /* OK */
  165. DO:
  166. btnOK = TRUE.
  167. RUN ENDE.
  168. RETURN NO-APPLY.
  169. END.
  170. /* _UIB-CODE-BLOCK-END */
  171. &ANALYZE-RESUME
  172. &Scoped-define SELF-NAME F_GGeb_Me
  173. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_GGeb_Me gBestMengen
  174. ON LEAVE OF F_GGeb_Me IN FRAME gBestMengen /* GGebinde */
  175. DO:
  176. IF SELF:MODIFIED THEN
  177. DO WITH FRAME {&FRAME-NAME}:
  178. ASSIGN {&List-6}.
  179. IF F_GGeb_Me > 0 THEN F_VGeb_Me = F_GGeb_Me * iphtVorschlag::GGeb_Inhalt.
  180. F_KGeb_Me = F_VGeb_Me * iphtVorschlag::VGeb_Inhalt.
  181. DISPLAY {&List-6}.
  182. END.
  183. END.
  184. /* _UIB-CODE-BLOCK-END */
  185. &ANALYZE-RESUME
  186. &Scoped-define SELF-NAME F_VGeb_Me
  187. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_VGeb_Me gBestMengen
  188. ON LEAVE OF F_VGeb_Me IN FRAME gBestMengen /* VGebinde */
  189. DO:
  190. IF SELF:MODIFIED THEN
  191. DO WITH FRAME {&FRAME-NAME}:
  192. ASSIGN {&List-6}.
  193. F_KGeb_Me = F_VGeb_Me * iphtVorschlag::VGeb_Inhalt.
  194. DISPLAY {&List-6}.
  195. END.
  196. END.
  197. /* _UIB-CODE-BLOCK-END */
  198. &ANALYZE-RESUME
  199. &UNDEFINE SELF-NAME
  200. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gBestMengen
  201. /* *************************** Main Block *************************** */
  202. { incl/dlgmainblock.i }
  203. cString = DYNAMIC-FUNCTION ('getFehlwert':U, Firma, 'MINMAXBESTMENGE') NO-ERROR.
  204. lMinMaxMenge = (IF cString BEGINS 'n' THEN FALSE ELSE TRUE).
  205. {src/adm2/dialogmn.i}
  206. /* _UIB-CODE-BLOCK-END */
  207. &ANALYZE-RESUME
  208. /* ********************** Internal Procedures *********************** */
  209. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gBestMengen _ADM-CREATE-OBJECTS
  210. PROCEDURE adm-create-objects :
  211. /*------------------------------------------------------------------------------
  212. Purpose: Create handles for all SmartObjects used in this procedure.
  213. After SmartObjects are initialized, then SmartLinks are added.
  214. Parameters: <none>
  215. ------------------------------------------------------------------------------*/
  216. END PROCEDURE.
  217. /* _UIB-CODE-BLOCK-END */
  218. &ANALYZE-RESUME
  219. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gBestMengen _DEFAULT-DISABLE
  220. PROCEDURE disable_UI :
  221. /*------------------------------------------------------------------------------
  222. Purpose: DISABLE the User Interface
  223. Parameters: <none>
  224. Notes: Here we clean-up the user-interface by deleting
  225. dynamic widgets we have created and/or hide
  226. frames. This procedure is usually called when
  227. we are ready to "clean-up" after running.
  228. ------------------------------------------------------------------------------*/
  229. /* Hide all frames. */
  230. HIDE FRAME gBestMengen.
  231. END PROCEDURE.
  232. /* _UIB-CODE-BLOCK-END */
  233. &ANALYZE-RESUME
  234. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gBestMengen
  235. PROCEDURE enableObject :
  236. /*------------------------------------------------------------------------------*/
  237. /* Purpose: Super Override */
  238. /* Parameters: */
  239. /* Notes: */
  240. /*------------------------------------------------------------------------------*/
  241. DO WITH FRAME {&FRAME-NAME}:
  242. F_GGeb_Me:LABEL = iphtVorschlag::GGeb_Text + SUBSTITUTE(' (&1)', iphtVorschlag::GGeb_Inhalt).
  243. F_GGeb_Me = iphtVorschlag::GGeb_Me.
  244. F_VGeb_Me:LABEL = iphtVorschlag::VGeb_Text + SUBSTITUTE(' (&1)', iphtVorschlag::VGeb_Inhalt).
  245. F_VGeb_Me = iphtVorschlag::VGeb_Me.
  246. F_KGeb_Me:LABEL = iphtVorschlag::KGeb_Text + SUBSTITUTE(' (&1)', iphtVorschlag::KGeb_Inhalt).
  247. F_KGeb_Me = iphtVorschlag::KGeb_Me.
  248. ASSIGN
  249. F_GGeb_Me:MODIFIED = FALSE
  250. F_VGeb_Me:MODIFIED = FALSE
  251. F_KGeb_Me:MODIFIED = FALSE.
  252. END.
  253. { incl/dlgenableobject.i }
  254. DO WITH FRAME {&FRAME-NAME}:
  255. IF iphtVorschlag::GGeb_Inhalt > 0 THEN APPLY 'ENTRY' TO F_GGeb_Me.
  256. ELSE APPLY 'ENTRY' TO F_VGeb_Me.
  257. ASSIGN
  258. F_GGeb_Me:MODIFIED = FALSE
  259. F_VGeb_Me:MODIFIED = FALSE
  260. F_KGeb_Me:MODIFIED = FALSE.
  261. END.
  262. END PROCEDURE.
  263. /* _UIB-CODE-BLOCK-END */
  264. &ANALYZE-RESUME
  265. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gBestMengen _DEFAULT-ENABLE
  266. PROCEDURE enable_UI :
  267. /*------------------------------------------------------------------------------
  268. Purpose: ENABLE the User Interface
  269. Parameters: <none>
  270. Notes: Here we display/view/enable the widgets in the
  271. user-interface. In addition, OPEN all queries
  272. associated with each FRAME and BROWSE.
  273. These statements here are based on the "Other
  274. Settings" section of the widget Property Sheets.
  275. ------------------------------------------------------------------------------*/
  276. DISPLAY F_GGeb_Me F_VGeb_Me F_KGeb_Me
  277. WITH FRAME gBestMengen.
  278. ENABLE RECT-2 F_GGeb_Me F_VGeb_Me F_KGeb_Me Btn_OK Btn_Cancel
  279. WITH FRAME gBestMengen.
  280. VIEW FRAME gBestMengen.
  281. {&OPEN-BROWSERS-IN-QUERY-gBestMengen}
  282. END PROCEDURE.
  283. /* _UIB-CODE-BLOCK-END */
  284. &ANALYZE-RESUME
  285. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gBestMengen
  286. PROCEDURE ENDE :
  287. /*------------------------------------------------------------------------------*/
  288. /* Purpose: Super Override */
  289. /* Parameters: */
  290. /* Notes: */
  291. /*------------------------------------------------------------------------------*/
  292. DEFINE VARIABLE lJa AS LOGICAL NO-UNDO INIT FALSE.
  293. IF btnOK THEN
  294. DO WITH FRAME {&FRAME-NAME}:
  295. ASSIGN {&List-6}.
  296. FIND ArtLief NO-LOCK
  297. WHERE ArtLief.Firma = Firma
  298. AND ArtLief.Knr = iphtVorschlag::Knr
  299. AND ArtLief.Artnr = iphtVorschlag::Artnr
  300. AND ArtLief.Inhalt = iphtVorschlag::Inhalt
  301. AND ArtLief.Jahr = iphtVorschlag::Jahr NO-ERROR.
  302. IF ArtLief.Min_KGebinde <> 0 THEN
  303. DO:
  304. IF F_KGeb_Me > 0 AND
  305. F_KGeb_Me < ArtLief.Min_KGebinde THEN F_KGeb_Me = ArtLief.Min_KGebinde.
  306. IF NOT lMinMaxMenge THEN
  307. DO:
  308. IF F_KGeb_Me MOD ArtLief.Min_KGebinde <> 0 OR
  309. F_KGeb_Me > ArtLief.Min_KGebinde THEN
  310. DO:
  311. MESSAGE 'Bestellmenge muss ein Mehrfaches von ' ArtLief.Min_KGebinde ' sein ' SKIP
  312. 'Andere Menge muss explizit mit "OK" bestätigt werden'
  313. VIEW-AS ALERT-BOX INFORMATION BUTTONS YES-NO
  314. UPDATE lJa.
  315. IF lJa = ? OR
  316. NOT lJa THEN
  317. DO:
  318. btnOK = FALSE.
  319. APPLY 'ENTRY' TO F_VGeb_Me IN FRAME {&FRAME-NAME}.
  320. RETURN NO-APPLY.
  321. END.
  322. END.
  323. END.
  324. DYNAMIC-FUNCTION ('calculateGebindeAusMenge':U,
  325. Firma, ArtLief.Artnr, ArtLief.Inhalt, ArtLief.Jahr, F_KGeb_Me,
  326. OUTPUT F_GGeb_Me, OUTPUT F_VGeb_Me, OUTPUT F_KGeb_Me) NO-ERROR.
  327. END.
  328. ASSIGN
  329. iphtVorschlag::GGeb_Me = F_GGeb_Me
  330. iphtVorschlag::VGeb_Me = F_VGeb_Me
  331. iphtVorschlag::KGeb_Me = F_KGeb_Me
  332. iphtVorschlag::Bestellung = F_KGeb_Me.
  333. END.
  334. { incl/dlgende.i }
  335. END PROCEDURE.
  336. /* _UIB-CODE-BLOCK-END */
  337. &ANALYZE-RESUME