f-aktionen-spez.w 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  4. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS fFrameWin
  5. /*------------------------------------------------------------------------
  6. File:
  7. Description: from cntnrfrm.w - ADM2 SmartFrame Template
  8. Input Parameters:
  9. <none>
  10. Output Parameters:
  11. <none>
  12. ------------------------------------------------------------------------*/
  13. /* This .W file was created with the Progress AppBuilder. */
  14. /*----------------------------------------------------------------------*/
  15. /* Create an unnamed pool to store all the widgets created
  16. by this procedure. This is a good default which assures
  17. that this procedure's triggers and internal procedures
  18. will execute in this procedure's storage, and that proper
  19. cleanup will occur on deletion of the procedure. */
  20. CREATE WIDGET-POOL.
  21. /* *************************** Definitions ************************** */
  22. /* Parameters Definitions --- */
  23. /* Local Variable Definitions --- */
  24. DEF VAR Firma AS CHAR NO-UNDO.
  25. DEF VAR Aktion AS CHAR NO-UNDO.
  26. DEF VAR Bemerk AS CHAR NO-UNDO.
  27. DEF VAR AktGrp AS INT NO-UNDO.
  28. DEF VAR aAktion AS CHAR NO-UNDO.
  29. DEF WORKFILE WArtPreis LIKE ArtPreis.
  30. DEF TEMP-TABLE TGruppen FIELD Grp AS INT
  31. FIELD Bez AS CHAR.
  32. /* _UIB-CODE-BLOCK-END */
  33. &ANALYZE-RESUME
  34. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  35. /* ******************** Preprocessor Definitions ******************** */
  36. &Scoped-define PROCEDURE-TYPE SmartFrame
  37. &Scoped-define DB-AWARE no
  38. &Scoped-define ADM-CONTAINER FRAME
  39. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  40. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  41. &Scoped-define FRAME-NAME fMain
  42. /* Standard List Definitions */
  43. &Scoped-Define ENABLED-OBJECTS F_AbDatum F_BisDatum CB_Art F_Betrag ~
  44. Btn_Zuteilen S_Gruppen RECT-8
  45. &Scoped-Define DISPLAYED-OBJECTS F_AbDatum F_BisDatum CB_Art F_Betrag ~
  46. S_Gruppen
  47. /* Custom List Definitions */
  48. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  49. &Scoped-define List-5 vBrutto vNetto vMarge vDatum
  50. &Scoped-define List-6 F_AbDatum F_BisDatum F_Betrag
  51. /* _UIB-PREPROCESSOR-BLOCK-END */
  52. &ANALYZE-RESUME
  53. /* *********************** Control Definitions ********************** */
  54. /* Definitions of the field level widgets */
  55. DEFINE BUTTON Btn_Zuteilen
  56. IMAGE-UP FILE "grafik/add.bmp":U
  57. LABEL "&Zuteilen"
  58. SIZE 5.2 BY 1.24.
  59. DEFINE VARIABLE CB_Art AS CHARACTER FORMAT "X(256)":U
  60. LABEL "Abschlagsart"
  61. VIEW-AS COMBO-BOX INNER-LINES 5
  62. LIST-ITEM-PAIRS "Betrag","0",
  63. "Prozent","1"
  64. DROP-DOWN-LIST
  65. SIZE 16 BY 1
  66. BGCOLOR 15 NO-UNDO.
  67. DEFINE VARIABLE F_AbDatum AS DATE FORMAT "99.99.9999":U
  68. LABEL "Ab Datum"
  69. VIEW-AS FILL-IN NATIVE
  70. SIZE 16 BY 1
  71. BGCOLOR 15 NO-UNDO.
  72. DEFINE VARIABLE F_Betrag AS DECIMAL FORMAT "zzz9.9999-":U INITIAL 0
  73. LABEL "Abschlag"
  74. VIEW-AS FILL-IN NATIVE
  75. SIZE 16 BY 1
  76. BGCOLOR 15 NO-UNDO.
  77. DEFINE VARIABLE F_BisDatum AS DATE FORMAT "99.99.9999":U
  78. LABEL "Bis Datum"
  79. VIEW-AS FILL-IN NATIVE
  80. SIZE 16 BY 1
  81. BGCOLOR 15 NO-UNDO.
  82. DEFINE VARIABLE vBrutto AS DECIMAL FORMAT "->>>>>>9.9999":U INITIAL 0
  83. LABEL "Brutto"
  84. VIEW-AS FILL-IN
  85. SIZE 4 BY 1.
  86. DEFINE VARIABLE vDatum AS DATE FORMAT "99.99.9999":U
  87. LABEL "Ab Datum"
  88. VIEW-AS FILL-IN
  89. SIZE 4 BY 1.
  90. DEFINE VARIABLE vMarge AS DECIMAL FORMAT "->>>>>>9.9999":U INITIAL 0
  91. LABEL "Marge"
  92. VIEW-AS FILL-IN
  93. SIZE 4 BY 1.
  94. DEFINE VARIABLE vNetto AS DECIMAL FORMAT "->>>>>>9.9999":U INITIAL 0
  95. LABEL "Netto"
  96. VIEW-AS FILL-IN
  97. SIZE 4 BY 1.
  98. DEFINE RECTANGLE RECT-8
  99. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  100. SIZE 65.2 BY 7.
  101. DEFINE VARIABLE S_Gruppen AS CHARACTER
  102. VIEW-AS SELECTION-LIST MULTIPLE SCROLLBAR-VERTICAL
  103. SIZE 30 BY 6.29
  104. BGCOLOR 15 NO-UNDO.
  105. /* ************************ Frame Definitions *********************** */
  106. DEFINE FRAME fMain
  107. F_AbDatum AT ROW 1.48 COL 46 COLON-ALIGNED
  108. F_BisDatum AT ROW 2.48 COL 46 COLON-ALIGNED
  109. CB_Art AT ROW 3.48 COL 46 COLON-ALIGNED
  110. F_Betrag AT ROW 4.48 COL 46 COLON-ALIGNED
  111. Btn_Zuteilen AT ROW 5.76 COL 58.2
  112. S_Gruppen AT ROW 1.48 COL 3 NO-LABEL
  113. vBrutto AT ROW 6.43 COL 48.2 COLON-ALIGNED NO-TAB-STOP
  114. vNetto AT ROW 6.43 COL 48.2 COLON-ALIGNED NO-TAB-STOP
  115. vMarge AT ROW 6.43 COL 48.2 COLON-ALIGNED NO-TAB-STOP
  116. vDatum AT ROW 6.43 COL 48.2 COLON-ALIGNED NO-TAB-STOP
  117. RECT-8 AT ROW 1.24 COL 2
  118. WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
  119. SIDE-LABELS NO-UNDERLINE THREE-D
  120. AT COL 1 ROW 1
  121. SIZE 67.6 BY 7.62.
  122. /* *********************** Procedure Settings ************************ */
  123. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  124. /* Settings for THIS-PROCEDURE
  125. Type: SmartFrame
  126. Allow: Basic,Browse,DB-Fields,Query,Smart
  127. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  128. Other Settings: PERSISTENT-ONLY COMPILE
  129. */
  130. /* This procedure should always be RUN PERSISTENT. Report the error, */
  131. /* then cleanup and return. */
  132. IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
  133. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  134. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  135. RETURN.
  136. END.
  137. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  138. /* ************************* Create Window ************************** */
  139. &ANALYZE-SUSPEND _CREATE-WINDOW
  140. /* DESIGN Window definition (used by the UIB)
  141. CREATE WINDOW fFrameWin ASSIGN
  142. HEIGHT = 7.62
  143. WIDTH = 67.6.
  144. /* END WINDOW DEFINITION */
  145. */
  146. &ANALYZE-RESUME
  147. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB fFrameWin
  148. /* ************************* Included-Libraries *********************** */
  149. {src/adm2/containr.i}
  150. /* _UIB-CODE-BLOCK-END */
  151. &ANALYZE-RESUME
  152. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  153. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  154. /* SETTINGS FOR WINDOW fFrameWin
  155. VISIBLE,,RUN-PERSISTENT */
  156. /* SETTINGS FOR FRAME fMain
  157. NOT-VISIBLE FRAME-NAME Custom */
  158. ASSIGN
  159. FRAME fMain:HIDDEN = TRUE.
  160. /* SETTINGS FOR FILL-IN F_AbDatum IN FRAME fMain
  161. 6 */
  162. /* SETTINGS FOR FILL-IN F_Betrag IN FRAME fMain
  163. 6 */
  164. /* SETTINGS FOR FILL-IN F_BisDatum IN FRAME fMain
  165. 6 */
  166. /* SETTINGS FOR FILL-IN vBrutto IN FRAME fMain
  167. NO-DISPLAY NO-ENABLE 5 */
  168. ASSIGN
  169. vBrutto:HIDDEN IN FRAME fMain = TRUE
  170. vBrutto:READ-ONLY IN FRAME fMain = TRUE.
  171. /* SETTINGS FOR FILL-IN vDatum IN FRAME fMain
  172. NO-DISPLAY NO-ENABLE 5 */
  173. ASSIGN
  174. vDatum:HIDDEN IN FRAME fMain = TRUE
  175. vDatum:READ-ONLY IN FRAME fMain = TRUE.
  176. /* SETTINGS FOR FILL-IN vMarge IN FRAME fMain
  177. NO-DISPLAY NO-ENABLE 5 */
  178. ASSIGN
  179. vMarge:HIDDEN IN FRAME fMain = TRUE
  180. vMarge:READ-ONLY IN FRAME fMain = TRUE.
  181. /* SETTINGS FOR FILL-IN vNetto IN FRAME fMain
  182. NO-DISPLAY NO-ENABLE 5 */
  183. ASSIGN
  184. vNetto:HIDDEN IN FRAME fMain = TRUE
  185. vNetto:READ-ONLY IN FRAME fMain = TRUE.
  186. /* _RUN-TIME-ATTRIBUTES-END */
  187. &ANALYZE-RESUME
  188. /* Setting information for Queries and Browse Widgets fields */
  189. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME fMain
  190. /* Query rebuild information for FRAME fMain
  191. _Options = ""
  192. _Query is NOT OPENED
  193. */ /* FRAME fMain */
  194. &ANALYZE-RESUME
  195. /* ************************ Control Triggers ************************ */
  196. &Scoped-define SELF-NAME Btn_Zuteilen
  197. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Zuteilen fFrameWin
  198. ON CHOOSE OF Btn_Zuteilen IN FRAME fMain /* Zuteilen */
  199. DO:
  200. RUN ZUFUEGEN_AKTION.
  201. IF RETURN-VALUE = 'ERROR' THEN RETURN NO-APPLY.
  202. APPLY 'U1'.
  203. RETURN NO-APPLY.
  204. END.
  205. /* _UIB-CODE-BLOCK-END */
  206. &ANALYZE-RESUME
  207. &Scoped-define SELF-NAME CB_Art
  208. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Art fFrameWin
  209. ON RETURN OF CB_Art IN FRAME fMain /* Abschlagsart */
  210. DO:
  211. APPLY 'TAB' TO SELF.
  212. RETURN NO-APPLY.
  213. END.
  214. /* _UIB-CODE-BLOCK-END */
  215. &ANALYZE-RESUME
  216. &Scoped-define SELF-NAME F_AbDatum
  217. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_AbDatum fFrameWin
  218. ON LEAVE OF F_AbDatum IN FRAME fMain /* Ab Datum */
  219. DO:
  220. IF DATE(SELF:SCREEN-VALUE) = ? THEN DO:
  221. APPLY 'ENTRY' TO SELF.
  222. RETURN NO-APPLY.
  223. END.
  224. END.
  225. /* _UIB-CODE-BLOCK-END */
  226. &ANALYZE-RESUME
  227. &Scoped-define SELF-NAME F_BisDatum
  228. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_BisDatum fFrameWin
  229. ON LEAVE OF F_BisDatum IN FRAME fMain /* Bis Datum */
  230. DO:
  231. IF DATE(SELF:SCREEN-VALUE) = ? THEN DO:
  232. APPLY 'ENTRY' TO SELF.
  233. RETURN NO-APPLY.
  234. END.
  235. END.
  236. /* _UIB-CODE-BLOCK-END */
  237. &ANALYZE-RESUME
  238. &Scoped-define SELF-NAME S_Gruppen
  239. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL S_Gruppen fFrameWin
  240. ON RETURN OF S_Gruppen IN FRAME fMain
  241. DO:
  242. APPLY 'ENTRY' TO F_AbDatum IN FRAME {&FRAME-NAME}.
  243. RETURN NO-APPLY.
  244. END.
  245. /* _UIB-CODE-BLOCK-END */
  246. &ANALYZE-RESUME
  247. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL S_Gruppen fFrameWin
  248. ON TAB OF S_Gruppen IN FRAME fMain
  249. DO:
  250. APPLY 'ENTRY' TO F_AbDatum IN FRAME {&FRAME-NAME}.
  251. RETURN NO-APPLY.
  252. END.
  253. /* _UIB-CODE-BLOCK-END */
  254. &ANALYZE-RESUME
  255. &UNDEFINE SELF-NAME
  256. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK fFrameWin
  257. /* *************************** Main Block *************************** */
  258. Firma = DYNAMIC-FUNCTION('GETMANDANT':U) NO-ERROR.
  259. SUBSCRIBE TO 'AKTIONSANZEIGE' ANYWHERE.
  260. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  261. /* Now enable the interface if in test mode - otherwise this happens when
  262. the object is explicitly initialized from its container. */
  263. RUN initializeObject.
  264. &ENDIF
  265. /* _UIB-CODE-BLOCK-END */
  266. &ANALYZE-RESUME
  267. /* ********************** Internal Procedures *********************** */
  268. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects fFrameWin _ADM-CREATE-OBJECTS
  269. PROCEDURE adm-create-objects :
  270. /*------------------------------------------------------------------------------
  271. Purpose: Create handles for all SmartObjects used in this procedure.
  272. After SmartObjects are initialized, then SmartLinks are added.
  273. Parameters: <none>
  274. ------------------------------------------------------------------------------*/
  275. END PROCEDURE.
  276. /* _UIB-CODE-BLOCK-END */
  277. &ANALYZE-RESUME
  278. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AKTIONSANZEIGE fFrameWin
  279. PROCEDURE AKTIONSANZEIGE :
  280. /*------------------------------------------------------------------------------
  281. Purpose:
  282. Parameters: <none>
  283. Notes:
  284. ------------------------------------------------------------------------------*/
  285. DEF INPUT PARAMETER ipAktion AS CHAR NO-UNDO.
  286. DEF VAR ix AS INT NO-UNDO.
  287. DEF VAR cString AS CHAR NO-UNDO.
  288. DEF VAR cGruppe AS CHAR NO-UNDO.
  289. aAktion = ipAktion.
  290. IF FRAME {&FRAME-NAME}:VISIBLE = FALSE THEN RETURN.
  291. FIND Aktionen USE-INDEX Aktionen-k1
  292. WHERE Aktionen.Firma = Firma
  293. AND Aktionen.Aktion = aAktion NO-LOCK NO-ERROR.
  294. IF NOT AVAILABLE Aktionen THEN RETURN.
  295. DO WITH FRAME {&FRAME-NAME}:
  296. cString = ''.
  297. cGruppe = ''.
  298. S_Gruppen:DELIMITER = CHR(01).
  299. IF Aktionen.Gruppen[01] <> 0 OR
  300. Aktionen.Gruppen[02] <> 0 THEN DO:
  301. DO ix = 1 TO 50:
  302. IF ix > 1 AND Aktionen.Gruppen[ix] = 0 THEN LEAVE.
  303. IF ix > 1 THEN cGruppe = cGruppe + CHR(01).
  304. cGruppe = cGruppe + STRING(Aktionen.Gruppen[ix],'999').
  305. FIND FIRST TGruppen WHERE TGruppen.Grp = Aktionen.Gruppen[ix]
  306. NO-LOCK NO-ERROR.
  307. IF NOT AVAILABLE TGruppen THEN NEXT.
  308. IF cString <> '' THEN cString = cString + CHR(01).
  309. cString = cString + TGruppen.Bez + CHR(01) + STRING(TGruppen.Grp,'999').
  310. END.
  311. END.
  312. IF cString = '' THEN cString = CHR(01).
  313. S_Gruppen:LIST-ITEM-PAIRS = cString.
  314. DO ix = 1 TO NUM-ENTRIES(cGruppe, CHR(01)):
  315. S_Gruppen:SCREEN-VALUE = ENTRY(ix, cGruppe, CHR(01)) NO-ERROR.
  316. END.
  317. Aktion = Aktionen.Aktion.
  318. Bemerk = Aktionen.Bemerkung.
  319. F_AbDatum = Aktionen.Ab_Datum.
  320. F_BisDatum = Aktionen.Bis_Datum.
  321. F_Betrag = Aktionen.Wert.
  322. CB_Art:SCREEN-VALUE = STRING(Aktionen.Art,'9').
  323. DISPLAY {&List-6}.
  324. END.
  325. END PROCEDURE.
  326. /* _UIB-CODE-BLOCK-END */
  327. &ANALYZE-RESUME
  328. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI fFrameWin _DEFAULT-DISABLE
  329. PROCEDURE disable_UI :
  330. /*------------------------------------------------------------------------------
  331. Purpose: DISABLE the User Interface
  332. Parameters: <none>
  333. Notes: Here we clean-up the user-interface by deleting
  334. dynamic widgets we have created and/or hide
  335. frames. This procedure is usually called when
  336. we are ready to "clean-up" after running.
  337. ------------------------------------------------------------------------------*/
  338. /* Hide all frames. */
  339. HIDE FRAME fMain.
  340. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  341. END PROCEDURE.
  342. /* _UIB-CODE-BLOCK-END */
  343. &ANALYZE-RESUME
  344. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI fFrameWin _DEFAULT-ENABLE
  345. PROCEDURE enable_UI :
  346. /*------------------------------------------------------------------------------
  347. Purpose: ENABLE the User Interface
  348. Parameters: <none>
  349. Notes: Here we display/view/enable the widgets in the
  350. user-interface. In addition, OPEN all queries
  351. associated with each FRAME and BROWSE.
  352. These statements here are based on the "Other
  353. Settings" section of the widget Property Sheets.
  354. ------------------------------------------------------------------------------*/
  355. DISPLAY F_AbDatum F_BisDatum CB_Art F_Betrag S_Gruppen
  356. WITH FRAME fMain.
  357. ENABLE F_AbDatum F_BisDatum CB_Art F_Betrag Btn_Zuteilen S_Gruppen RECT-8
  358. WITH FRAME fMain.
  359. {&OPEN-BROWSERS-IN-QUERY-fMain}
  360. END PROCEDURE.
  361. /* _UIB-CODE-BLOCK-END */
  362. &ANALYZE-RESUME
  363. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject fFrameWin
  364. PROCEDURE initializeObject :
  365. /*------------------------------------------------------------------------------
  366. Purpose: Super Override
  367. Parameters:
  368. Notes:
  369. ------------------------------------------------------------------------------*/
  370. DEF VAR RecArt AS CHAR NO-UNDO.
  371. DEF VAR cString AS CHAR NO-UNDO.
  372. EMPTY TEMP-TABLE TGruppen.
  373. AktGrp = DYNAMIC-FUNCTION('GETFWAKTIONSPREISE':U) NO-ERROR.
  374. IF AktGrp = 0 THEN RecArt = 'PREGRP'.
  375. IF AktGrp = 1 THEN RecArt = 'KUNDGRP'.
  376. FOR EACH Tabel USE-INDEX Tabel-k1
  377. WHERE Tabel.Firma = Firma
  378. AND Tabel.RecArt = RecArt NO-LOCK:
  379. CREATE TGruppen.
  380. ASSIGN TGruppen.Grp = Tabel.CodeI
  381. TGruppen.Bez = Tabel.Bez1.
  382. END.
  383. RUN SUPER.
  384. END PROCEDURE.
  385. /* _UIB-CODE-BLOCK-END */
  386. &ANALYZE-RESUME
  387. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE viewObject fFrameWin
  388. PROCEDURE viewObject :
  389. /*------------------------------------------------------------------------------
  390. Purpose: Super Override
  391. Parameters:
  392. Notes:
  393. ------------------------------------------------------------------------------*/
  394. RUN SUPER.
  395. RUN AKTIONSANZEIGE ( INPUT aAktion ).
  396. END PROCEDURE.
  397. /* _UIB-CODE-BLOCK-END */
  398. &ANALYZE-RESUME
  399. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ZUFUEGEN_AKTION fFrameWin
  400. PROCEDURE ZUFUEGEN_AKTION :
  401. /*------------------------------------------------------------------------------
  402. Purpose:
  403. Parameters: <none>
  404. Notes:
  405. ------------------------------------------------------------------------------*/
  406. DEF VAR cArtikel AS CHAR NO-UNDO.
  407. DEF VAR Artnr AS INT NO-UNDO.
  408. DEF VAR Inhalt AS INT NO-UNDO.
  409. DEF VAR Jahr AS INT NO-UNDO.
  410. DEF VAR ix AS INT NO-UNDO.
  411. DEF VAR i1 AS INT NO-UNDO.
  412. DEF VAR cPreisGrp AS CHAR NO-UNDO.
  413. DEF VAR cString AS CHAR NO-UNDO.
  414. DEF VAR Bru_Netto AS LOG NO-UNDO.
  415. DEF VAR Betrag AS DEC DECIMALS 4 NO-UNDO.
  416. DEF VAR vArt AS INT NO-UNDO.
  417. DEF VAR vBruNet AS INT NO-UNDO.
  418. DEF VAR Grp AS INT NO-UNDO.
  419. DEF VAR hDaten AS HANDLE NO-UNDO.
  420. IF FRAME {&FRAME-NAME}:VISIBLE = FALSE THEN RETURN.
  421. hDaten = DYNAMIC-FUNCTION('getDataSource':U) NO-ERROR.
  422. DO WITH FRAME {&FRAME-NAME}:
  423. IF DATE(F_AbDatum:SCREEN-VALUE) = ? THEN DO:
  424. APPLY 'ENTRY' TO F_AbDatum.
  425. RETURN 'ERROR'.
  426. END.
  427. IF DATE(F_BisDatum:SCREEN-VALUE) = ? THEN DO:
  428. APPLY 'ENTRY' TO F_BisDatum.
  429. RETURN 'ERROR'.
  430. END.
  431. ASSIGN {&List-6}.
  432. vArt = INTEGER(CB_Art:SCREEN-VALUE).
  433. cArtikel = DYNAMIC-FUNCTION('getArtikel':U) NO-ERROR.
  434. IF cArtikel = '' THEN RETURN NO-APPLY.
  435. IF cArtikel = ? THEN RETURN NO-APPLY.
  436. Artnr = INTEGER(ENTRY(2, cArtikel, CHR(01))).
  437. Inhalt = INTEGER(ENTRY(3, cArtikel, CHR(01))).
  438. Jahr = INTEGER(ENTRY(4, cArtikel, CHR(01))).
  439. FIND Artst WHERE RECID(Artst) = INTEGER(ENTRY(1, cArtikel, CHR(01)))
  440. NO-LOCK NO-ERROR.
  441. IF NOT AVAILABLE Artst THEN RETURN NO-APPLY.
  442. IF NOT Artst.Aktiv THEN RETURN NO-APPLY.
  443. i1 = S_Gruppen:NUM-ITEMS.
  444. cPreisGrp = ''.
  445. DO ix = 1 TO i1:
  446. IF S_Gruppen:IS-SELECTED(ix) = FALSE THEN NEXT.
  447. Grp = INTEGER(ENTRY((ix * 2), S_Gruppen:LIST-ITEM-PAIRS, CHR(01))).
  448. IF AktGrp = 0 THEN DO:
  449. FIND LAST ArtPreis USE-INDEX ArtPreis-k1
  450. WHERE ArtPreis.Firma = Firma
  451. AND ArtPreis.Artnr = Artnr
  452. AND ArtPreis.Inhalt = Inhalt
  453. AND ArtPreis.Jahr = Jahr
  454. AND ArtPreis.Preis_Grp = Grp
  455. AND ArtPreis.Aktion = FALSE
  456. AND ArtPreis.Aktiv = TRUE NO-LOCK NO-ERROR.
  457. IF NOT AVAILABLE ArtPreis THEN NEXT.
  458. END.
  459. IF cPreisGrp <> '' THEN cPreisGrp = cPreisGrp + CHR(01).
  460. cPreisGrp = cPreisGrp + STRING(Grp,'999').
  461. END.
  462. DO i1 = 1 TO NUM-ENTRIES(cPreisGrp, CHR(01)):
  463. ix = INTEGER(ENTRY(i1, cPreisGrp, CHR(01))).
  464. FIND AktPreis USE-INDEX AktPreis-k1
  465. WHERE AktPreis.Firma = Firma
  466. AND AktPreis.Artnr = Artnr
  467. AND AktPreis.Inhalt = Inhalt
  468. AND AktPreis.Jahr = Jahr
  469. AND AktPreis.Grp = ix
  470. AND AktPreis.Ab_Datum = F_AbDatum NO-LOCK NO-ERROR.
  471. IF AVAILABLE AktPreis THEN NEXT.
  472. CREATE AktPreis.
  473. ASSIGN AktPreis.Firma = Firma
  474. AktPreis.Artnr = Artnr
  475. AktPreis.Inhalt = Inhalt
  476. AktPreis.Jahr = Jahr
  477. AktPreis.Grp = ix
  478. AktPreis.Ab_Datum = F_AbDatum
  479. AktPreis.Bis_Datum = F_BisDatum
  480. AktPreis.Art = vArt
  481. AktPreis.Wert = F_Betrag
  482. AktPreis.Bemerkung = Bemerk
  483. AktPreis.Aktion = Aktion.
  484. END.
  485. IF AktGrp = 0 THEN DO: /* Aktionen auf Preisgruppen */
  486. FOR EACH WArtPreis:
  487. DELETE WArtPreis.
  488. END.
  489. CREATE WArtPreis.
  490. DO i1 = 1 TO NUM-ENTRIES(cPreisGrp, CHR(01)):
  491. ix = INTEGER(ENTRY(i1, cPreisGrp, CHR(01))).
  492. FIND ArtPreis USE-INDEX ArtPreis-k1
  493. WHERE ArtPreis.Firma = Firma
  494. AND ArtPreis.Artnr = Artnr
  495. AND ArtPreis.Inhalt = Inhalt
  496. AND ArtPreis.Jahr = Jahr
  497. AND ArtPreis.Preis_Grp = ix
  498. AND ArtPreis.Ab_Datum = F_AbDatum NO-LOCK NO-ERROR.
  499. IF AVAILABLE ArtPreis THEN NEXT.
  500. FIND LAST ArtPreis USE-INDEX ArtPreis-k1
  501. WHERE ArtPreis.Firma = Firma
  502. AND ArtPreis.Artnr = Artnr
  503. AND ArtPreis.Inhalt = Inhalt
  504. AND ArtPreis.Jahr = Jahr
  505. AND ArtPreis.Preis_Grp = ix
  506. AND ArtPreis.Ab_Datum < F_AbDatum
  507. AND ArtPreis.Aktion = FALSE
  508. AND ArtPreis.Aktiv = TRUE
  509. NO-LOCK NO-ERROR.
  510. IF NOT AVAILABLE ArtPreis THEN NEXT.
  511. FIND FIRST WArtPreis.
  512. BUFFER-COPY ArtPreis TO WArtPreis.
  513. RUN FIND_PREISGRUPPE ( INPUT WArtPreis.Preis_Grp,
  514. OUTPUT cString ) NO-ERROR.
  515. IF cString = '' THEN NEXT.
  516. IF INTEGER(ENTRY(3, cString, CHR(01))) = 1 THEN Bru_Netto = TRUE.
  517. ELSE Bru_Netto = FALSE.
  518. vNetto = 0.
  519. vBrutto = 0.
  520. vMarge = 0.
  521. vDatum = F_AbDatum.
  522. IF Bru_Netto THEN DO:
  523. IF vArt = 0 THEN Betrag = ArtPreis.VK_Brutto
  524. - F_Betrag.
  525. IF vArt = 1 THEN Betrag = ArtPreis.VK_Brutto
  526. * (100 - F_Betrag) / 100.
  527. RUN RUNDEN ( INPUT 1, INPUT-OUTPUT Betrag ).
  528. vBrutto = Betrag.
  529. vBruNet = 2.
  530. END.
  531. ELSE DO:
  532. IF vArt = 0 THEN Betrag = ArtPreis.VK_Netto
  533. - F_Betrag.
  534. IF vArt = 1 THEN Betrag = ArtPreis.VK_Netto
  535. * (100 - F_Betrag) / 100.
  536. vNetto = Betrag.
  537. vBruNet = 1.
  538. END.
  539. vNetto :SCREEN-VALUE = STRING(vNetto ).
  540. vBrutto :SCREEN-VALUE = STRING(vBrutto).
  541. vMarge :SCREEN-VALUE = STRING(vMarge ).
  542. vDatum :SCREEN-VALUE = STRING(vDatum ).
  543. RUN ARTPREISRECHNEN ( INPUT vBruNet, INPUT vNetto :HANDLE,
  544. INPUT vBrutto:HANDLE,
  545. INPUT vMarge :HANDLE,
  546. INPUT vDatum :HANDLE,
  547. INPUT 'CHF' ).
  548. ASSIGN {&List-5}.
  549. ASSIGN WArtPreis.Ab_Datum = vDatum
  550. WArtPreis.VK_Netto = vNetto
  551. WArtPreis.VK_Brutto = vBrutto
  552. WArtPreis.Marge = vMarge
  553. WArtPreis.Aktion = TRUE
  554. WArtPreis.Aktiv = TRUE
  555. WArtPreis.AktName = Aktion.
  556. CREATE ArtPreis.
  557. BUFFER-COPY WArtPreis TO ArtPreis.
  558. END.
  559. IF VALID-HANDLE(hDaten) THEN RUN SET_OPENFLAG IN hDaten ( TRUE ).
  560. END.
  561. END.
  562. RETURN ''.
  563. END PROCEDURE.
  564. /* _UIB-CODE-BLOCK-END */
  565. &ANALYZE-RESUME