g-ean-etiketten.w 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  4. &Scoped-define FRAME-NAME gProduktetiketten
  5. {adecomm/appserv.i}
  6. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gProduktetiketten
  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 PARAMETER ipParam AS CHAR NO-UNDO.
  28. /* Local Variable Definitions --- */
  29. DEF VAR iArtnr AS INT NO-UNDO.
  30. DEF VAR iInhalt AS INT NO-UNDO.
  31. DEF VAR iJahr AS INT NO-UNDO.
  32. DEF VAR cEANCode AS CHAR NO-UNDO.
  33. DEF VAR dDatum AS CHAR NO-UNDO.
  34. DEF VAR cLot AS CHAR NO-UNDO.
  35. DEF VAR cText AS CHAR NO-UNDO.
  36. DEF VAR cFirma AS CHAR NO-UNDO.
  37. DEF VAR cEtiketten AS CHAR NO-UNDO.
  38. DEF VAR cPfad AS CHAR NO-UNDO.
  39. DEF VAR cTemplate AS CHAR NO-UNDO
  40. INIT 'EAN\EAN_20x30.eti'.
  41. { incl/dlgdefinition.i }
  42. { src/adm2/widgetprto.i }
  43. /* _UIB-CODE-BLOCK-END */
  44. &ANALYZE-RESUME
  45. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  46. /* ******************** Preprocessor Definitions ******************** */
  47. &Scoped-define PROCEDURE-TYPE SmartDialog
  48. &Scoped-define DB-AWARE no
  49. &Scoped-define ADM-CONTAINER DIALOG-BOX
  50. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  51. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  52. &Scoped-define FRAME-NAME gProduktetiketten
  53. /* Standard List Definitions */
  54. &Scoped-Define ENABLED-OBJECTS RECT-2 F_Artnr F_Inhalt F_Jahr F_Anzahl ~
  55. F_EANCode F_Druckpfad Btn_OK Btn_Cancel
  56. &Scoped-Define DISPLAYED-OBJECTS F_Artnr F_Inhalt F_Jahr F_Anzahl F_EANCode ~
  57. F_Druckpfad
  58. /* Custom List Definitions */
  59. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  60. &Scoped-define List-6 F_Artnr F_Inhalt F_Jahr F_Anzahl F_EANCode ~
  61. F_Druckpfad
  62. /* _UIB-PREPROCESSOR-BLOCK-END */
  63. &ANALYZE-RESUME
  64. /* *********************** Control Definitions ********************** */
  65. /* Define a dialog box */
  66. /* Definitions of the field level widgets */
  67. DEFINE BUTTON Btn_Cancel AUTO-END-KEY
  68. LABEL "abbrechen"
  69. SIZE 15 BY 1.
  70. DEFINE BUTTON Btn_OK AUTO-GO
  71. LABEL "OK"
  72. SIZE 15 BY 1.
  73. DEFINE VARIABLE F_Anzahl AS INTEGER FORMAT "99":U INITIAL 1
  74. LABEL "Anzahl"
  75. VIEW-AS FILL-IN NATIVE
  76. SIZE 5 BY 1
  77. BGCOLOR 15 NO-UNDO.
  78. DEFINE VARIABLE F_Artnr AS INTEGER FORMAT "999999":U INITIAL 0
  79. LABEL "Artnr"
  80. VIEW-AS FILL-IN NATIVE
  81. SIZE 11 BY 1
  82. BGCOLOR 15 NO-UNDO.
  83. DEFINE VARIABLE F_Druckpfad AS CHARACTER FORMAT "X(256)":U
  84. VIEW-AS FILL-IN NATIVE
  85. SIZE 72 BY 1 TOOLTIP "<ALT-F1> = es kann der Inhalt geändert werden / <CTRL-F1> = der Inhalt wird für"
  86. BGCOLOR 15 NO-UNDO.
  87. DEFINE VARIABLE F_EANCode AS CHARACTER FORMAT "x(15)":U
  88. LABEL "EAN-Code"
  89. VIEW-AS FILL-IN NATIVE
  90. SIZE 20 BY 1
  91. BGCOLOR 15 NO-UNDO.
  92. DEFINE VARIABLE F_Inhalt AS INTEGER FORMAT "9999":U INITIAL 0
  93. LABEL "/"
  94. VIEW-AS FILL-IN NATIVE
  95. SIZE 8 BY 1
  96. BGCOLOR 15 NO-UNDO.
  97. DEFINE VARIABLE F_Jahr AS INTEGER FORMAT "9999":U INITIAL 0
  98. LABEL "JG"
  99. VIEW-AS FILL-IN NATIVE
  100. SIZE 8 BY 1
  101. BGCOLOR 15 NO-UNDO.
  102. DEFINE RECTANGLE RECT-2
  103. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  104. SIZE 92 BY 6.19.
  105. /* ************************ Frame Definitions *********************** */
  106. DEFINE FRAME gProduktetiketten
  107. F_Artnr AT ROW 2 COL 18 COLON-ALIGNED WIDGET-ID 4 NO-TAB-STOP
  108. F_Inhalt AT ROW 2 COL 32 COLON-ALIGNED WIDGET-ID 12 NO-TAB-STOP
  109. F_Jahr AT ROW 3 COL 18 COLON-ALIGNED WIDGET-ID 14 NO-TAB-STOP
  110. F_Anzahl AT ROW 4 COL 18 COLON-ALIGNED WIDGET-ID 10
  111. F_EANCode AT ROW 5 COL 18 COLON-ALIGNED WIDGET-ID 16 NO-TAB-STOP
  112. F_Druckpfad AT ROW 6 COL 18 COLON-ALIGNED NO-LABEL WIDGET-ID 8 NO-TAB-STOP
  113. Btn_OK AT ROW 8 COL 25
  114. Btn_Cancel AT ROW 8 COL 46
  115. RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2
  116. SPACE(1.99) SKIP(1.99)
  117. WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER
  118. SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE
  119. TITLE "Produktetiketten"
  120. CANCEL-BUTTON Btn_Cancel WIDGET-ID 100.
  121. /* *********************** Procedure Settings ************************ */
  122. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  123. /* Settings for THIS-PROCEDURE
  124. Type: SmartDialog
  125. Allow: Basic,Browse,DB-Fields,Query,Smart
  126. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  127. Design Page: 1
  128. Other Settings: COMPILE APPSERVER
  129. */
  130. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  131. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gProduktetiketten
  132. /* ************************* Included-Libraries *********************** */
  133. {src/adm2/containr.i}
  134. /* _UIB-CODE-BLOCK-END */
  135. &ANALYZE-RESUME
  136. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  137. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  138. /* SETTINGS FOR DIALOG-BOX gProduktetiketten
  139. FRAME-NAME */
  140. ASSIGN
  141. FRAME gProduktetiketten:SCROLLABLE = FALSE
  142. FRAME gProduktetiketten:HIDDEN = TRUE.
  143. /* SETTINGS FOR FILL-IN F_Anzahl IN FRAME gProduktetiketten
  144. 6 */
  145. /* SETTINGS FOR FILL-IN F_Artnr IN FRAME gProduktetiketten
  146. 6 */
  147. ASSIGN
  148. F_Artnr:READ-ONLY IN FRAME gProduktetiketten = TRUE.
  149. /* SETTINGS FOR FILL-IN F_Druckpfad IN FRAME gProduktetiketten
  150. 6 */
  151. ASSIGN
  152. F_Druckpfad:READ-ONLY IN FRAME gProduktetiketten = TRUE.
  153. /* SETTINGS FOR FILL-IN F_EANCode IN FRAME gProduktetiketten
  154. 6 */
  155. ASSIGN
  156. F_EANCode:READ-ONLY IN FRAME gProduktetiketten = TRUE.
  157. /* SETTINGS FOR FILL-IN F_Inhalt IN FRAME gProduktetiketten
  158. 6 */
  159. ASSIGN
  160. F_Inhalt:READ-ONLY IN FRAME gProduktetiketten = TRUE.
  161. /* SETTINGS FOR FILL-IN F_Jahr IN FRAME gProduktetiketten
  162. 6 */
  163. ASSIGN
  164. F_Jahr:READ-ONLY IN FRAME gProduktetiketten = TRUE.
  165. /* _RUN-TIME-ATTRIBUTES-END */
  166. &ANALYZE-RESUME
  167. /* Setting information for Queries and Browse Widgets fields */
  168. &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gProduktetiketten
  169. /* Query rebuild information for DIALOG-BOX gProduktetiketten
  170. _Options = "SHARE-LOCK"
  171. _Query is NOT OPENED
  172. */ /* DIALOG-BOX gProduktetiketten */
  173. &ANALYZE-RESUME
  174. /* ************************ Control Triggers ************************ */
  175. &Scoped-define SELF-NAME gProduktetiketten
  176. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gProduktetiketten gProduktetiketten
  177. ON END-ERROR OF FRAME gProduktetiketten /* Produktetiketten */
  178. DO:
  179. RUN ENDE.
  180. RETURN NO-APPLY.
  181. END.
  182. /* _UIB-CODE-BLOCK-END */
  183. &ANALYZE-RESUME
  184. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gProduktetiketten gProduktetiketten
  185. ON WINDOW-CLOSE OF FRAME gProduktetiketten /* Produktetiketten */
  186. DO:
  187. RUN ENDE.
  188. RETURN NO-APPLY.
  189. END.
  190. /* _UIB-CODE-BLOCK-END */
  191. &ANALYZE-RESUME
  192. &Scoped-define SELF-NAME Btn_Cancel
  193. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel gProduktetiketten
  194. ON CHOOSE OF Btn_Cancel IN FRAME gProduktetiketten /* abbrechen */
  195. DO:
  196. RUN ENDE.
  197. RETURN NO-APPLY.
  198. END.
  199. /* _UIB-CODE-BLOCK-END */
  200. &ANALYZE-RESUME
  201. &Scoped-define SELF-NAME Btn_OK
  202. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK gProduktetiketten
  203. ON CHOOSE OF Btn_OK IN FRAME gProduktetiketten /* OK */
  204. DO:
  205. DEF VAR ix AS INT NO-UNDO.
  206. btnOK = TRUE.
  207. ASSIGN {&List-6}.
  208. IF F_Druckpfad = '' THEN RETURN NO-APPLY.
  209. DO WHILE TRUE:
  210. F_DruckPfad = REPLACE(F_DruckPfad, '/', '\').
  211. ix = R-INDEX(F_DruckPfad, '\').
  212. IF ix > 0 THEN LEAVE.
  213. cPfad = cEtiketten + cTemplate.
  214. END.
  215. cPfad = SUBSTRING(F_DruckPfad,01, ix - 1).
  216. FILE-INFO:FILE-NAME = cPfad NO-ERROR.
  217. IF FILE-INFO:FULL-PATHNAME = ? OR
  218. FILE-INFO:FULL-PATHNAME = '' THEN
  219. DO:
  220. MESSAGE 'ungültiger Dateiname für die Datendatei angegeben' VIEW-AS ALERT-BOX.
  221. APPLY 'ENTRY' TO F_Druckpfad.
  222. RETURN NO-APPLY.
  223. END.
  224. PUT-KEY-VALUE SECTION 'EANEtikette'
  225. KEY 'Pfad'
  226. VALUE F_Druckpfad NO-ERROR.
  227. OUTPUT TO VALUE(F_Druckpfad) NO-MAP NO-CONVERT.
  228. PUT CONTROL 'EANCode' CHR(10).
  229. DO ix = 1 TO F_Anzahl:
  230. PUT CONTROL cEANCode CHR(10).
  231. END.
  232. OUTPUT CLOSE.
  233. RUN ENDE.
  234. RETURN NO-APPLY.
  235. END.
  236. /* _UIB-CODE-BLOCK-END */
  237. &ANALYZE-RESUME
  238. &Scoped-define SELF-NAME F_Druckpfad
  239. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Druckpfad gProduktetiketten
  240. ON ALT-F1 OF F_Druckpfad IN FRAME gProduktetiketten
  241. DO:
  242. SELF:READ-ONLY = FALSE.
  243. END.
  244. /* _UIB-CODE-BLOCK-END */
  245. &ANALYZE-RESUME
  246. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Druckpfad gProduktetiketten
  247. ON CTRL-F1 OF F_Druckpfad IN FRAME gProduktetiketten
  248. DO:
  249. IF SELF:READ-ONLY = TRUE THEN RETURN.
  250. DO WITH FRAME {&FRAME-NAME}:
  251. ASSIGN {&List-6}.
  252. END.
  253. SELF:READ-ONLY = TRUE.
  254. APPLY 'ENTRY' TO F_Anzahl.
  255. END.
  256. /* _UIB-CODE-BLOCK-END */
  257. &ANALYZE-RESUME
  258. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Druckpfad gProduktetiketten
  259. ON LEFT-MOUSE-DBLCLICK OF F_Druckpfad IN FRAME gProduktetiketten
  260. DO:
  261. DEF VAR cPfad AS CHAR NO-UNDO.
  262. IF SELF:SCREEN-VALUE <> ? AND
  263. SELF:SCREEN-VALUE <> '' THEN
  264. DO:
  265. cPfad = SELF:SCREEN-VALUE.
  266. cPfad = REPLACE(cPfad, '\', '/').
  267. IF R-INDEX(cPfad, '/') <> 0 THEN
  268. DO:
  269. cPfad = SUBSTRING(cPfad,01,(R-INDEX(cPfad, '/') - 1)).
  270. END.
  271. END.
  272. SYSTEM-DIALOG GET-DIR cPfad
  273. INITIAL-DIR cPfad
  274. TITLE 'Auswahl Verzeichnis für EAN-Etiketten'.
  275. IF cPfad = '' THEN RETURN NO-APPLY.
  276. cPfad = cPfad + '/' + 'cTemplate'.
  277. END.
  278. /* _UIB-CODE-BLOCK-END */
  279. &ANALYZE-RESUME
  280. &UNDEFINE SELF-NAME
  281. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gProduktetiketten
  282. /* *************************** Main Block *************************** */
  283. { incl/dlgmainblock.i }
  284. {src/adm2/dialogmn.i}
  285. /* _UIB-CODE-BLOCK-END */
  286. &ANALYZE-RESUME
  287. /* ********************** Internal Procedures *********************** */
  288. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gProduktetiketten _ADM-CREATE-OBJECTS
  289. PROCEDURE adm-create-objects :
  290. /*------------------------------------------------------------------------------
  291. Purpose: Create handles for all SmartObjects used in this procedure.
  292. After SmartObjects are initialized, then SmartLinks are added.
  293. Parameters: <none>
  294. ------------------------------------------------------------------------------*/
  295. END PROCEDURE.
  296. /* _UIB-CODE-BLOCK-END */
  297. &ANALYZE-RESUME
  298. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gProduktetiketten _DEFAULT-DISABLE
  299. PROCEDURE disable_UI :
  300. /*------------------------------------------------------------------------------
  301. Purpose: DISABLE the User Interface
  302. Parameters: <none>
  303. Notes: Here we clean-up the user-interface by deleting
  304. dynamic widgets we have created and/or hide
  305. frames. This procedure is usually called when
  306. we are ready to "clean-up" after running.
  307. ------------------------------------------------------------------------------*/
  308. /* Hide all frames. */
  309. HIDE FRAME gProduktetiketten.
  310. END PROCEDURE.
  311. /* _UIB-CODE-BLOCK-END */
  312. &ANALYZE-RESUME
  313. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gProduktetiketten
  314. PROCEDURE enableObject :
  315. /*------------------------------------------------------------------------------
  316. Purpose: Super Override
  317. Parameters:
  318. Notes:
  319. ------------------------------------------------------------------------------*/
  320. { incl/dlgenableobject.i }
  321. END PROCEDURE.
  322. /* _UIB-CODE-BLOCK-END */
  323. &ANALYZE-RESUME
  324. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gProduktetiketten _DEFAULT-ENABLE
  325. PROCEDURE enable_UI :
  326. /*------------------------------------------------------------------------------
  327. Purpose: ENABLE the User Interface
  328. Parameters: <none>
  329. Notes: Here we display/view/enable the widgets in the
  330. user-interface. In addition, OPEN all queries
  331. associated with each FRAME and BROWSE.
  332. These statements here are based on the "Other
  333. Settings" section of the widget Property Sheets.
  334. ------------------------------------------------------------------------------*/
  335. DISPLAY F_Artnr F_Inhalt F_Jahr F_Anzahl F_EANCode F_Druckpfad
  336. WITH FRAME gProduktetiketten.
  337. ENABLE RECT-2 F_Artnr F_Inhalt F_Jahr F_Anzahl F_EANCode F_Druckpfad Btn_OK
  338. Btn_Cancel
  339. WITH FRAME gProduktetiketten.
  340. VIEW FRAME gProduktetiketten.
  341. {&OPEN-BROWSERS-IN-QUERY-gProduktetiketten}
  342. END PROCEDURE.
  343. /* _UIB-CODE-BLOCK-END */
  344. &ANALYZE-RESUME
  345. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gProduktetiketten
  346. PROCEDURE ENDE :
  347. /*------------------------------------------------------------------------------
  348. Purpose:
  349. Parameters: <none>
  350. Notes:
  351. ------------------------------------------------------------------------------*/
  352. IF btnOK THEN
  353. DO:
  354. END.
  355. { incl/dlgende.i }
  356. END PROCEDURE.
  357. /* _UIB-CODE-BLOCK-END */
  358. &ANALYZE-RESUME
  359. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject gProduktetiketten
  360. PROCEDURE initializeObject :
  361. /*------------------------------------------------------------------------------
  362. Purpose: Super Override
  363. Parameters:
  364. Notes:
  365. ------------------------------------------------------------------------------*/
  366. DEF VAR ix AS INT NO-UNDO.
  367. DEF VAR cDatum AS CHAR NO-UNDO.
  368. DO ix = 1 TO NUM-ENTRIES(ipParam, ';'):
  369. CASE ix:
  370. WHEN 1 THEN
  371. cFirma = ENTRY(ix, ipParam, ';').
  372. WHEN 2 THEN
  373. iArtnr = INTEGER(ENTRY(ix, ipParam, ';')).
  374. WHEN 3 THEN
  375. iInhalt = INTEGER(ENTRY(ix, ipParam, ';')).
  376. WHEN 4 THEN
  377. iJahr = INTEGER(ENTRY(ix, ipParam, ';')).
  378. WHEN 5 THEN
  379. cEANCode = ENTRY(ix, ipParam, ';').
  380. END CASE.
  381. END.
  382. IF iArtnr = 0 THEN
  383. DO:
  384. RUN ENDE.
  385. RETURN NO-APPLY.
  386. END.
  387. GET-KEY-VALUE SECTION 'EANEtikette'
  388. KEY 'Pfad'
  389. VALUE cPfad.
  390. IF cPfad = ? OR
  391. cPfad = '' THEN
  392. DO:
  393. cPfad = DYNAMIC-FUNCTION ('getEtikettenPfad':U) NO-ERROR.
  394. cPfad = cPfad + cTemplate.
  395. END.
  396. F_DruckPfad = cPfad.
  397. FIND Artst NO-LOCK
  398. WHERE Artst.Firma = cFirma
  399. AND Artst.Artnr = iArtnr
  400. AND Artst.Inhalt = iInhalt
  401. AND Artst.Jahr = iJahr NO-ERROR.
  402. FIND FIRST Artbez NO-LOCK OF Artst.
  403. IF Artst.Strichcode = '' THEN
  404. DO:
  405. MESSAGE 'Artikel ohne Strichcode'
  406. VIEW-AS ALERT-BOX.
  407. RETURN.
  408. END.
  409. ASSIGN
  410. F_Artnr = iArtnr
  411. F_Inhalt = iInhalt
  412. F_Jahr = iJahr
  413. F_EANCode = cEANCode
  414. F_Anzahl = 1.
  415. DISPLAY {&List-6}.
  416. RUN SUPER.
  417. END PROCEDURE.
  418. /* _UIB-CODE-BLOCK-END */
  419. &ANALYZE-RESUME