v-artpreis.w 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. /* Connected Databases
  4. anadat PROGRESS
  5. */
  6. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  7. {adecomm/appserv.i}
  8. /* Temp-Table and Buffer definitions */
  9. DEFINE TEMP-TABLE RowObject NO-UNDO
  10. {"d-artpreis.i"}.
  11. DEFINE TEMP-TABLE tArtStaff NO-UNDO LIKE ArtStaff.
  12. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS vTableWin
  13. /*------------------------------------------------------------------------
  14. File:
  15. Description: from viewer.w - Template for SmartDataViewer objects
  16. Input Parameters:
  17. <none>
  18. Output Parameters:
  19. <none>
  20. ------------------------------------------------------------------------*/
  21. /* This .W file was created with the Progress AppBuilder. */
  22. /*----------------------------------------------------------------------*/
  23. /* Create an unnamed pool to store all the widgets created
  24. by this procedure. This is a good default which assures
  25. that this procedure's triggers and internal procedures
  26. will execute in this procedure's storage, and that proper
  27. cleanup will occur on deletion of the procedure. */
  28. CREATE WIDGET-POOL.
  29. /* *************************** Definitions ************************** */
  30. /* Komma-Trennzeichen */
  31. /* Keyfelder werden beim Mutieren nicht "Enabled" */
  32. &Scoped-define ERSTES_FELD CB_Preisgruppe
  33. &Scoped-define LETZTES_FELD Marge
  34. &Scoped-define KEY_FELDER CB_Preisgruppe,Ab_Datum
  35. &Scoped-define NUR_LESEN MinMarge
  36. { incl/viwdefinition.i }
  37. DEF VAR APRecid AS RECID NO-UNDO.
  38. DEF VAR FwPgr AS CHAR NO-UNDO.
  39. DEF VAR AltPreisDel AS LOG NO-UNDO.
  40. {src/adm2/widgetprto.i}
  41. /* _UIB-CODE-BLOCK-END */
  42. &ANALYZE-RESUME
  43. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  44. /* ******************** Preprocessor Definitions ******************** */
  45. &Scoped-define PROCEDURE-TYPE SmartDataViewer
  46. &Scoped-define DB-AWARE no
  47. &Scoped-define ADM-CONTAINER FRAME
  48. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Update-Source,TableIO-Target,GroupAssign-Source,GroupAssign-Target
  49. /* Include file with RowObject temp-table definition */
  50. &Scoped-define DATA-FIELD-DEFS "d-artpreis.i"
  51. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  52. &Scoped-define FRAME-NAME F-Main
  53. /* Standard List Definitions */
  54. &Scoped-Define ENABLED-FIELDS RowObject.Ab_Datum RowObject.VK_Netto ~
  55. RowObject.VK_Brutto RowObject.Marge RowObject.MinMarge
  56. &Scoped-define ENABLED-TABLES RowObject
  57. &Scoped-define FIRST-ENABLED-TABLE RowObject
  58. &Scoped-Define ENABLED-OBJECTS CB_Preisgruppe RECT-1
  59. &Scoped-Define DISPLAYED-FIELDS RowObject.Ab_Datum RowObject.VK_Netto ~
  60. RowObject.Inhalt RowObject.Jahr RowObject.VK_Brutto RowObject.Preis_Grp ~
  61. RowObject.Marge RowObject.Aktion RowObject.Aktiv RowObject.ArtID ~
  62. RowObject.Artnr RowObject.Firma RowObject.MinMarge
  63. &Scoped-define DISPLAYED-TABLES RowObject
  64. &Scoped-define FIRST-DISPLAYED-TABLE RowObject
  65. &Scoped-Define DISPLAYED-OBJECTS CB_Preisgruppe
  66. /* Custom List Definitions */
  67. /* ADM-ASSIGN-FIELDS,List-2,List-3,List-4,List-5,List-6 */
  68. /* _UIB-PREPROCESSOR-BLOCK-END */
  69. &ANALYZE-RESUME
  70. /* *********************** Control Definitions ********************** */
  71. /* Definitions of the field level widgets */
  72. DEFINE VARIABLE CB_Preisgruppe AS CHARACTER FORMAT "X(256)":U
  73. LABEL "Preisgruppe"
  74. VIEW-AS COMBO-BOX INNER-LINES 5
  75. LIST-ITEM-PAIRS "Item 1","Item 1"
  76. DROP-DOWN-LIST
  77. SIZE 37.8 BY 1
  78. BGCOLOR 15 NO-UNDO.
  79. DEFINE RECTANGLE RECT-1
  80. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  81. SIZE 68.8 BY 5.91.
  82. /* ************************ Frame Definitions *********************** */
  83. DEFINE FRAME F-Main
  84. CB_Preisgruppe AT ROW 1.52 COL 23 COLON-ALIGNED WIDGET-ID 28
  85. RowObject.Ab_Datum AT ROW 2.52 COL 23 COLON-ALIGNED WIDGET-ID 2
  86. LABEL "gültig ab"
  87. VIEW-AS FILL-IN NATIVE
  88. SIZE 17 BY 1
  89. BGCOLOR 15
  90. RowObject.VK_Netto AT ROW 3.52 COL 23 COLON-ALIGNED WIDGET-ID 26
  91. LABEL "Netto (exkl MWSt)"
  92. VIEW-AS FILL-IN NATIVE
  93. SIZE 20 BY 1
  94. BGCOLOR 15
  95. RowObject.Inhalt AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 14
  96. VIEW-AS FILL-IN NATIVE
  97. SIZE 4 BY 1
  98. BGCOLOR 15 NO-TAB-STOP
  99. RowObject.Jahr AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 16
  100. VIEW-AS FILL-IN NATIVE
  101. SIZE 4 BY 1
  102. BGCOLOR 15 NO-TAB-STOP
  103. RowObject.VK_Brutto AT ROW 4.52 COL 23 COLON-ALIGNED WIDGET-ID 24
  104. LABEL "Brutto ( inkl MWSt)"
  105. VIEW-AS FILL-IN NATIVE
  106. SIZE 20 BY 1
  107. BGCOLOR 15
  108. RowObject.Preis_Grp AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 22 FORMAT "999999"
  109. VIEW-AS FILL-IN NATIVE
  110. SIZE 4 BY 1
  111. BGCOLOR 15 NO-TAB-STOP
  112. RowObject.Marge AT ROW 5.52 COL 23 COLON-ALIGNED WIDGET-ID 18
  113. LABEL "Marge/Mindestmarge" FORMAT "zzz,zz9.9999-"
  114. VIEW-AS FILL-IN NATIVE
  115. SIZE 20 BY 1
  116. BGCOLOR 15
  117. RowObject.Aktion AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 4
  118. VIEW-AS FILL-IN NATIVE
  119. SIZE 4 BY 1
  120. BGCOLOR 15 NO-TAB-STOP
  121. RowObject.Aktiv AT ROW 2 COL 60 WIDGET-ID 6
  122. LABEL "Aktiv"
  123. VIEW-AS TOGGLE-BOX
  124. SIZE 4 BY .81 NO-TAB-STOP
  125. RowObject.ArtID AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 8
  126. VIEW-AS FILL-IN NATIVE
  127. SIZE 4 BY 1
  128. BGCOLOR 15 NO-TAB-STOP
  129. RowObject.Artnr AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 10
  130. VIEW-AS FILL-IN NATIVE
  131. SIZE 4 BY 1
  132. BGCOLOR 15 NO-TAB-STOP
  133. RowObject.Firma AT ROW 2 COL 58 COLON-ALIGNED WIDGET-ID 12
  134. VIEW-AS FILL-IN NATIVE
  135. SIZE 4 BY 1
  136. BGCOLOR 15 NO-TAB-STOP
  137. RowObject.MinMarge AT ROW 5.52 COL 45 COLON-ALIGNED NO-LABEL WIDGET-ID 20 FORMAT "zzz,zz9.9999-"
  138. VIEW-AS FILL-IN NATIVE
  139. SIZE 20 BY 1
  140. BGCOLOR 14 NO-TAB-STOP
  141. RECT-1 AT ROW 1.24 COL 2 WIDGET-ID 30
  142. WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY USE-DICT-EXPS
  143. SIDE-LABELS NO-UNDERLINE THREE-D NO-AUTO-VALIDATE
  144. AT COL 1 ROW 1 SCROLLABLE WIDGET-ID 100.
  145. /* *********************** Procedure Settings ************************ */
  146. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  147. /* Settings for THIS-PROCEDURE
  148. Type: SmartDataViewer
  149. Data Source: "d-artpreis.w"
  150. Allow: Basic,DB-Fields,Smart
  151. Container Links: Data-Target,Update-Source,TableIO-Target,GroupAssign-Source,GroupAssign-Target
  152. Frames: 1
  153. Add Fields to: Neither
  154. Other Settings: PERSISTENT-ONLY COMPILE APPSERVER
  155. Temp-Tables and Buffers:
  156. TABLE: RowObject D "?" NO-UNDO
  157. ADDITIONAL-FIELDS:
  158. {d-artpreis.i}
  159. END-FIELDS.
  160. TABLE: tArtStaff T "?" NO-UNDO AnaDat ArtStaff
  161. END-TABLES.
  162. */
  163. /* This procedure should always be RUN PERSISTENT. Report the error, */
  164. /* then cleanup and return. */
  165. IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
  166. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  167. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  168. RETURN.
  169. END.
  170. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  171. /* ************************* Create Window ************************** */
  172. &ANALYZE-SUSPEND _CREATE-WINDOW
  173. /* DESIGN Window definition (used by the UIB)
  174. CREATE WINDOW vTableWin ASSIGN
  175. HEIGHT = 6.67
  176. WIDTH = 71.2.
  177. /* END WINDOW DEFINITION */
  178. */
  179. &ANALYZE-RESUME
  180. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB vTableWin
  181. /* ************************* Included-Libraries *********************** */
  182. {src/adm2/viewer.i}
  183. /* _UIB-CODE-BLOCK-END */
  184. &ANALYZE-RESUME
  185. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  186. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  187. /* SETTINGS FOR WINDOW vTableWin
  188. VISIBLE,,RUN-PERSISTENT */
  189. /* SETTINGS FOR FRAME F-Main
  190. NOT-VISIBLE FRAME-NAME Size-to-Fit Custom */
  191. ASSIGN
  192. FRAME F-Main:SCROLLABLE = FALSE
  193. FRAME F-Main:HIDDEN = TRUE.
  194. /* SETTINGS FOR FILL-IN RowObject.Ab_Datum IN FRAME F-Main
  195. EXP-LABEL */
  196. /* SETTINGS FOR FILL-IN RowObject.Aktion IN FRAME F-Main
  197. NO-ENABLE */
  198. ASSIGN
  199. RowObject.Aktion:HIDDEN IN FRAME F-Main = TRUE
  200. RowObject.Aktion:READ-ONLY IN FRAME F-Main = TRUE.
  201. /* SETTINGS FOR TOGGLE-BOX RowObject.Aktiv IN FRAME F-Main
  202. NO-ENABLE EXP-LABEL */
  203. ASSIGN
  204. RowObject.Aktiv:HIDDEN IN FRAME F-Main = TRUE.
  205. /* SETTINGS FOR FILL-IN RowObject.ArtID IN FRAME F-Main
  206. NO-ENABLE */
  207. ASSIGN
  208. RowObject.ArtID:HIDDEN IN FRAME F-Main = TRUE
  209. RowObject.ArtID:READ-ONLY IN FRAME F-Main = TRUE.
  210. /* SETTINGS FOR FILL-IN RowObject.Artnr IN FRAME F-Main
  211. NO-ENABLE */
  212. ASSIGN
  213. RowObject.Artnr:HIDDEN IN FRAME F-Main = TRUE
  214. RowObject.Artnr:READ-ONLY IN FRAME F-Main = TRUE.
  215. /* SETTINGS FOR FILL-IN RowObject.Firma IN FRAME F-Main
  216. NO-ENABLE */
  217. ASSIGN
  218. RowObject.Firma:HIDDEN IN FRAME F-Main = TRUE
  219. RowObject.Firma:READ-ONLY IN FRAME F-Main = TRUE.
  220. /* SETTINGS FOR FILL-IN RowObject.Inhalt IN FRAME F-Main
  221. NO-ENABLE */
  222. ASSIGN
  223. RowObject.Inhalt:HIDDEN IN FRAME F-Main = TRUE
  224. RowObject.Inhalt:READ-ONLY IN FRAME F-Main = TRUE.
  225. /* SETTINGS FOR FILL-IN RowObject.Jahr IN FRAME F-Main
  226. NO-ENABLE */
  227. ASSIGN
  228. RowObject.Jahr:HIDDEN IN FRAME F-Main = TRUE
  229. RowObject.Jahr:READ-ONLY IN FRAME F-Main = TRUE.
  230. /* SETTINGS FOR FILL-IN RowObject.Marge IN FRAME F-Main
  231. EXP-LABEL EXP-FORMAT */
  232. /* SETTINGS FOR FILL-IN RowObject.MinMarge IN FRAME F-Main
  233. EXP-LABEL EXP-FORMAT */
  234. ASSIGN
  235. RowObject.MinMarge:READ-ONLY IN FRAME F-Main = TRUE.
  236. /* SETTINGS FOR FILL-IN RowObject.Preis_Grp IN FRAME F-Main
  237. NO-ENABLE EXP-FORMAT */
  238. ASSIGN
  239. RowObject.Preis_Grp:HIDDEN IN FRAME F-Main = TRUE
  240. RowObject.Preis_Grp:READ-ONLY IN FRAME F-Main = TRUE.
  241. /* SETTINGS FOR FILL-IN RowObject.VK_Brutto IN FRAME F-Main
  242. EXP-LABEL */
  243. /* SETTINGS FOR FILL-IN RowObject.VK_Netto IN FRAME F-Main
  244. EXP-LABEL */
  245. /* _RUN-TIME-ATTRIBUTES-END */
  246. &ANALYZE-RESUME
  247. /* Setting information for Queries and Browse Widgets fields */
  248. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
  249. /* Query rebuild information for FRAME F-Main
  250. _Options = "NO-LOCK"
  251. _Query is NOT OPENED
  252. */ /* FRAME F-Main */
  253. &ANALYZE-RESUME
  254. /* ************************ Control Triggers ************************ */
  255. &Scoped-define SELF-NAME CB_Preisgruppe
  256. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Preisgruppe vTableWin
  257. ON VALUE-CHANGED OF CB_Preisgruppe IN FRAME F-Main /* Preisgruppe */
  258. DO:
  259. DO WITH FRAME {&FRAME-NAME}:
  260. IF NOT FNeu THEN DO:
  261. SELF:SCREEN-VALUE = rowObject.Preis_Grp:SCREEN-VALUE.
  262. END.
  263. rowObject.Preis_Grp:SCREEN-VALUE = SELF:SCREEN-VALUE.
  264. IF FMut THEN rowObject.Preis_Grp:MODIFIED = TRUE.
  265. END.
  266. END.
  267. /* _UIB-CODE-BLOCK-END */
  268. &ANALYZE-RESUME
  269. &UNDEFINE SELF-NAME
  270. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK vTableWin
  271. /* *************************** Main Block *************************** */
  272. { incl/viwmainblock.i }
  273. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  274. RUN initializeObject.
  275. &ENDIF
  276. /************************ INTERNAL PROCEDURES ********************/
  277. /* _UIB-CODE-BLOCK-END */
  278. &ANALYZE-RESUME
  279. /* ********************** Internal Procedures *********************** */
  280. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE addRecord vTableWin
  281. PROCEDURE addRecord :
  282. /*------------------------------------------------------------------------------
  283. Purpose: Super Override
  284. Parameters:
  285. Notes:
  286. ------------------------------------------------------------------------------*/
  287. FNeu = TRUE.
  288. FMut = TRUE.
  289. FDisp = TRUE.
  290. RUN SUPER.
  291. /* Code placed here will execute AFTER standard behavior. */
  292. END PROCEDURE.
  293. /* _UIB-CODE-BLOCK-END */
  294. &ANALYZE-RESUME
  295. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE cancelRecord vTableWin
  296. PROCEDURE cancelRecord :
  297. /*------------------------------------------------------------------------------
  298. Purpose: Super Override
  299. Parameters:
  300. Notes:
  301. ------------------------------------------------------------------------------*/
  302. FCancel = TRUE.
  303. RUN SUPER.
  304. /* Code placed here will execute AFTER standard behavior. */
  305. END PROCEDURE.
  306. /* _UIB-CODE-BLOCK-END */
  307. &ANALYZE-RESUME
  308. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE copyRecord vTableWin
  309. PROCEDURE copyRecord :
  310. /*------------------------------------------------------------------------------
  311. Purpose: Super Override
  312. Parameters:
  313. Notes:
  314. ------------------------------------------------------------------------------*/
  315. IF NOT rowObject.Aktion:SCREEN-VALUE IN FRAME {&FRAME-NAME} BEGINS 'n' THEN DO:
  316. DYNAMIC-FUNCTION('setFlagAbbruch':U, TRUE, Progname ) NO-ERROR.
  317. RETURN NO-APPLY.
  318. END.
  319. FNeu = TRUE.
  320. FMut = TRUE.
  321. FCopy = TRUE.
  322. FDisp = TRUE.
  323. RUN SUPER.
  324. END PROCEDURE.
  325. /* _UIB-CODE-BLOCK-END */
  326. &ANALYZE-RESUME
  327. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE deleteRecord vTableWin
  328. PROCEDURE deleteRecord :
  329. /*------------------------------------------------------------------------------
  330. Purpose: Super Override
  331. Parameters:
  332. Notes:
  333. ------------------------------------------------------------------------------*/
  334. DEF VAR Ja AS LOG NO-UNDO.
  335. DEF VAR Artnr AS INT NO-UNDO.
  336. DEF VAR Inhalt AS INT NO-UNDO.
  337. DEF VAR Jahr AS INT NO-UNDO.
  338. DEF VAR Preis_Grp AS INT NO-UNDO.
  339. DEF VAR Ab_Datum AS DATE NO-UNDO.
  340. DEF BUFFER bArtPreis FOR ArtPreis.
  341. IF NOT rowObject.Aktion:SCREEN-VALUE IN FRAME {&FRAME-NAME} BEGINS 'n' THEN DO:
  342. DYNAMIC-FUNCTION('setFlagAbbruch':U, TRUE, Progname ) NO-ERROR.
  343. RETURN NO-APPLY.
  344. END.
  345. Ja = DYNAMIC-FUNCTION( 'ANTWORT_NEIN':U, INPUT 1000 ).
  346. IF NOT Ja THEN DO:
  347. RUN TOOLBAR IN hKontainer ( INPUT 'CANCEL':U ) NO-ERROR.
  348. RETURN NO-APPLY.
  349. END.
  350. DO WITH FRAME {&FRAME-NAME}:
  351. Artnr = INTEGER(rowObject.Artnr:SCREEN-VALUE ).
  352. Inhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE ).
  353. Jahr = INTEGER(rowObject.Jahr:SCREEN-VALUE ).
  354. Preis_Grp = INTEGER(rowObject.Preis_Grp:SCREEN-VALUE).
  355. Ab_Datum = DATE (rowObject.Ab_Datum:SCREEN-VALUE ).
  356. END.
  357. REPEAT TRANSACTION:
  358. FIND LAST bArtPreis USE-INDEX ArtPreis-k1
  359. WHERE bArtPreis.Firma = Firma
  360. AND bArtPreis.Artnr = Artnr
  361. AND bArtPreis.Inhalt = Inhalt
  362. AND bArtPreis.Jahr = Jahr
  363. AND bArtPreis.Preis_Grp = Preis_Grp
  364. AND bArtPreis.Ab_Datum < Ab_Datum
  365. AND bArtPreis.Aktion = FALSE NO-ERROR.
  366. IF AVAILABLE bArtPreis THEN DO:
  367. bArtPreis.Aktiv = TRUE.
  368. APRecid = RECID(bArtPreis).
  369. END.
  370. ELSE DO:
  371. APRecid = ?.
  372. END.
  373. FOR EACH ArtStaff USE-INDEX ArtStaff-k1
  374. WHERE ArtStaff.Firma = Firma
  375. AND ArtStaff.Artnr = Artnr
  376. AND ArtStaff.Inhalt = Inhalt
  377. AND ArtStaff.Preis_Grp = Preis_Grp
  378. AND ArtStaff.Ab_Datum = Ab_Datum:
  379. DELETE ArtStaff.
  380. END.
  381. RELEASE bArtPreis.
  382. RELEASE ArtStaff.
  383. LEAVE.
  384. END.
  385. RUN SUPER.
  386. /* Code placed here will execute AFTER standard behavior. */
  387. END PROCEDURE.
  388. /* _UIB-CODE-BLOCK-END */
  389. &ANALYZE-RESUME
  390. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disableFields vTableWin
  391. PROCEDURE disableFields :
  392. /*------------------------------------------------------------------------------
  393. Purpose: Super Override
  394. Parameters:
  395. Notes:
  396. ------------------------------------------------------------------------------*/
  397. DEFINE INPUT PARAMETER pcFieldType AS CHARACTER NO-UNDO.
  398. DO WITH FRAME {&FRAME-NAME}:
  399. END.
  400. RUN SUPER( INPUT pcFieldType).
  401. IF NOT VALID-HANDLE(Fenster) THEN Fenster = FRAME {&FRAME-NAME}:CURRENT-ITERATION.
  402. RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&ENABLED-FIELDS}', INPUT TRUE ).
  403. IF NUM-ENTRIES('{&KEY_FELDER}', ',') > 0 THEN DO:
  404. RUN FARBE_FELDER ( INPUT Fenster, INPUT '{&KEY_FELDER}', INPUT 15 ).
  405. END.
  406. DO WITH FRAME {&FRAME-NAME}:
  407. END.
  408. END PROCEDURE.
  409. /* _UIB-CODE-BLOCK-END */
  410. &ANALYZE-RESUME
  411. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI vTableWin _DEFAULT-DISABLE
  412. PROCEDURE disable_UI :
  413. /*------------------------------------------------------------------------------
  414. Purpose: DISABLE the User Interface
  415. Parameters: <none>
  416. Notes: Here we clean-up the user-interface by deleting
  417. dynamic widgets we have created and/or hide
  418. frames. This procedure is usually called when
  419. we are ready to "clean-up" after running.
  420. ------------------------------------------------------------------------------*/
  421. /* Hide all frames. */
  422. HIDE FRAME F-Main.
  423. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  424. END PROCEDURE.
  425. /* _UIB-CODE-BLOCK-END */
  426. &ANALYZE-RESUME
  427. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE displayFields vTableWin
  428. PROCEDURE displayFields :
  429. /*------------------------------------------------------------------------------
  430. Purpose: Super Override
  431. Parameters:
  432. Notes:
  433. ------------------------------------------------------------------------------*/
  434. DEFINE INPUT PARAMETER pcColValues AS CHARACTER NO-UNDO.
  435. IF NOT FDisp THEN DO:
  436. FDisp = TRUE.
  437. RETURN.
  438. END.
  439. IF FCancel THEN pcColValues = OldColValues.
  440. IF NOT FNeu THEN OldColValues = pcColValues.
  441. OldColList = DYNAMIC-FUNCTION('getDisplayedFields':U).
  442. IF FNeu THEN RUN FEHLWERTE ( INPUT-OUTPUT pcColValues ).
  443. DO WITH FRAME {&FRAME-NAME}:
  444. END.
  445. RUN SUPER( INPUT pcColValues).
  446. FCancel = FALSE.
  447. DO WITH FRAME {&FRAME-NAME}:
  448. IF NOT FMut THEN FwPgr = rowObject.Preis_Grp:SCREEN-VALUE.
  449. CB_Preisgruppe:SCREEN-VALUE = rowObject.Preis_Grp:SCREEN-VALUE NO-ERROR.
  450. IF rowObject.Aktion:SCREEN-VALUE BEGINS 'n'
  451. THEN rowObject.Ab_Datum:BGCOLOR = 15.
  452. ELSE rowObject.Ab_Datum:BGCOLOR = 14.
  453. END.
  454. END PROCEDURE.
  455. /* _UIB-CODE-BLOCK-END */
  456. &ANALYZE-RESUME
  457. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableFields vTableWin
  458. PROCEDURE enableFields :
  459. /*------------------------------------------------------------------------------
  460. Purpose: Super Override
  461. Parameters:
  462. Notes:
  463. ------------------------------------------------------------------------------*/
  464. /* Code placed here will execute PRIOR to standard behavior. */
  465. /*
  466. RUN SUPER.
  467. */
  468. IF NOT VALID-HANDLE(Fenster) THEN Fenster = FRAME {&FRAME-NAME}:CURRENT-ITERATION.
  469. RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&ENABLED-FIELDS}', INPUT FALSE ).
  470. IF NUM-ENTRIES('{&NUR_LESEN}', ',') > 0 THEN DO:
  471. RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&NUR_LESEN}', INPUT TRUE ).
  472. END.
  473. DO WITH FRAME {&FRAME-NAME}:
  474. END.
  475. IF FNeu THEN RETURN.
  476. IF NUM-ENTRIES('{&KEY_FELDER}', ',') > 0 THEN DO:
  477. RUN SCHUETZE_FELDER ( INPUT Fenster, INPUT '{&KEY_FELDER}', INPUT TRUE ).
  478. END.
  479. END PROCEDURE.
  480. /* _UIB-CODE-BLOCK-END */
  481. &ANALYZE-RESUME
  482. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject vTableWin
  483. PROCEDURE enableObject :
  484. /*------------------------------------------------------------------------------
  485. Purpose: Super Override
  486. Parameters:
  487. Notes:
  488. ------------------------------------------------------------------------------*/
  489. IF SAktiv THEN DO WITH FRAME {&FRAME-NAME}:
  490. RUN COMBO_PREISGRP ( INPUT CB_Preisgruppe:HANDLE ).
  491. END.
  492. RUN SUPER.
  493. { incl/viwenableobject.i }
  494. DEF VAR cValue AS CHAR NO-UNDO.
  495. cValue = ''.
  496. GET-KEY-VALUE SECTION 'GrundEinstellungen'
  497. KEY 'AltePreiseDel'
  498. VALUE cValue.
  499. IF cValue = ? THEN cValue = ''.
  500. IF cValue = '' THEN DO:
  501. cValue = 'nein'.
  502. PUT-KEY-VALUE SECTION 'GrundEinstellungen'
  503. KEY 'AltePreiseDel'
  504. VALUE cValue.
  505. END.
  506. IF cValue BEGINS 'n' THEN AltPreisDel = FALSE.
  507. ELSE AltPreisDel = TRUE.
  508. END PROCEDURE.
  509. /* _UIB-CODE-BLOCK-END */
  510. &ANALYZE-RESUME
  511. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_FELD_TEST vTableWin
  512. PROCEDURE ENTRY_FELD_TEST :
  513. /*------------------------------------------------------------------------------
  514. Purpose:
  515. Parameters: <none>
  516. Notes:
  517. ------------------------------------------------------------------------------*/
  518. { incl/viwentryfeldtest.i }
  519. DO WITH FRAME {&FRAME-NAME}:
  520. CASE FeldName:
  521. END CASE.
  522. END.
  523. RETURN ''.
  524. END PROCEDURE.
  525. /* _UIB-CODE-BLOCK-END */
  526. &ANALYZE-RESUME
  527. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FEHLWERTE vTableWin
  528. PROCEDURE FEHLWERTE :
  529. /*------------------------------------------------------------------------------
  530. Purpose:
  531. Parameters: <none>
  532. Notes:
  533. ------------------------------------------------------------------------------*/
  534. DEF INPUT-OUTPUT PARAMETER pcColValues AS CHAR NO-UNDO.
  535. DEF VAR i1 AS INT NO-UNDO.
  536. IF FCancel THEN RETURN.
  537. IF NOT FCopy THEN DO WITH FRAME {&FRAME-NAME}:
  538. i1 = LOOKUP('Ab_Datum', oldColList, ',') + 1.
  539. ENTRY(i1, pcColValues, CHR(1)) = STRING(TODAY) NO-ERROR.
  540. i1 = LOOKUP('Aktion', oldColList, ',') + 1.
  541. ENTRY(i1, pcColValues, CHR(1)) = STRING(FALSE) NO-ERROR.
  542. i1 = LOOKUP('Aktiv', oldColList, ',') + 1.
  543. ENTRY(i1, pcColValues, CHR(1)) = STRING(TRUE) NO-ERROR.
  544. i1 = LOOKUP('Preis_Grp', oldColList, ',') + 1.
  545. ENTRY(i1, pcColValues, CHR(1)) = FwPgr NO-ERROR.
  546. END.
  547. IF FCopy THEN DO:
  548. END.
  549. END PROCEDURE.
  550. /* _UIB-CODE-BLOCK-END */
  551. &ANALYZE-RESUME
  552. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LEAVE_FELD_TEST vTableWin
  553. PROCEDURE LEAVE_FELD_TEST :
  554. /*------------------------------------------------------------------------------
  555. Purpose:
  556. Parameters: <none>
  557. Notes:
  558. ------------------------------------------------------------------------------*/
  559. DEF VAR Artnr AS INT NO-UNDO.
  560. DEF VAR Inhalt AS INT NO-UNDO.
  561. DEF VAR Jahr AS INT NO-UNDO.
  562. DEF VAR Preis_Grp AS INT NO-UNDO.
  563. { incl/viwleavefeldtest.i }
  564. DO WHILE FNeu WITH FRAME {&FRAME-NAME}:
  565. CASE FeldName:
  566. WHEN 'Ab_Datum' THEN DO:
  567. IF KEYFUNCTION(LKY) = 'BACK-TAB' THEN RETURN ''.
  568. IF VALID-HANDLE(hENTER) AND
  569. hEnter:NAME = 'CB_Preisgruppe' THEN RETURN ''.
  570. IF DATE(FeldInhalt) = ? THEN DO:
  571. FeldInhalt = STRING(TODAY).
  572. END.
  573. ipHandle:SCREEN-VALUE = STRING(DATE(FeldInhalt),'99.99.9999').
  574. Artnr = INTEGER(rowObject.Artnr:SCREEN-VALUE ).
  575. Inhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE ).
  576. Jahr = INTEGER(rowObject.Jahr:SCREEN-VALUE ).
  577. Preis_Grp = INTEGER(rowObject.Preis_Grp:SCREEN-VALUE).
  578. FIND ArtPreis USE-INDEX ArtPreis-k1
  579. WHERE ArtPreis.Firma = Firma
  580. AND ArtPreis.Artnr = Artnr
  581. AND ArtPreis.Inhalt = Inhalt
  582. AND ArtPreis.Jahr = Jahr
  583. AND ArtPreis.Preis_Grp = Preis_Grp
  584. AND ArtPreis.Ab_Datum = DATE(FeldInhalt) NO-LOCK NO-ERROR.
  585. IF AVAILABLE ArtPreis THEN DO:
  586. RUN FEHLER ( INPUT 1025 ).
  587. RETURN 'ERROR'.
  588. END.
  589. END.
  590. END CASE.
  591. LEAVE.
  592. END.
  593. RETURN-VALUE = ''.
  594. DO WHILE TRUE WITH FRAME {&FRAME-NAME}:
  595. CASE FeldName:
  596. WHEN 'VK_Netto' THEN DO:
  597. IF SELF:MODIFIED THEN DO:
  598. RUN ARTPREISRECHNEN ( INPUT 1, INPUT rowObject.VK_Netto :HANDLE,
  599. INPUT rowObject.VK_Brutto:HANDLE,
  600. INPUT rowobject.Marge :HANDLE,
  601. INPUT rowObject.Ab_Datum :HANDLE,
  602. INPUT 'CHF' ).
  603. END.
  604. END.
  605. WHEN 'VK_Brutto' THEN DO:
  606. IF SELF:MODIFIED THEN DO:
  607. RUN ARTPREISRECHNEN ( INPUT 2, INPUT rowObject.VK_Netto :HANDLE,
  608. INPUT rowObject.VK_Brutto:HANDLE,
  609. INPUT rowobject.Marge :HANDLE,
  610. INPUT rowObject.Ab_Datum :HANDLE,
  611. INPUT 'CHF' ).
  612. END.
  613. END.
  614. WHEN 'Marge' THEN DO:
  615. IF SELF:MODIFIED THEN DO:
  616. RUN ARTPREISRECHNEN ( INPUT 3, INPUT rowObject.VK_Netto :HANDLE,
  617. INPUT rowObject.VK_Brutto:HANDLE,
  618. INPUT rowobject.Marge :HANDLE,
  619. INPUT rowObject.Ab_Datum :HANDLE,
  620. INPUT 'CHF' ).
  621. END.
  622. END.
  623. END CASE.
  624. LEAVE.
  625. END.
  626. CASE RETURN-VALUE:
  627. WHEN 'MWSTCODE' THEN DO:
  628. RUN FEHLER ( INPUT 1080 ).
  629. RETURN 'ERROR'.
  630. END.
  631. WHEN 'MWSTANSATZ' THEN DO:
  632. RUN FEHLER ( INPUT 1079 ).
  633. RETURN 'ERROR'.
  634. END.
  635. END CASE.
  636. IF LOOKUP(FeldName, '{&LETZTES_FELD}', ',') > 0 THEN DO:
  637. DO WHILE TRUE:
  638. IF KEYFUNCTION(LKY) = 'TAB' THEN LEAVE.
  639. IF KEYFUNCTION(LKY) = 'RETURN' THEN LEAVE.
  640. IF KEYFUNCTION(LKY) = 'F9' THEN LEAVE.
  641. RETURN ''.
  642. END.
  643. APPLY 'ALT-S'.
  644. RETURN 'APPLY'.
  645. END.
  646. RETURN ''.
  647. END PROCEDURE.
  648. /* _UIB-CODE-BLOCK-END */
  649. &ANALYZE-RESUME
  650. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RETURN_FELD vTableWin
  651. PROCEDURE RETURN_FELD :
  652. /*------------------------------------------------------------------------------
  653. Purpose:
  654. Parameters: <none>
  655. Notes:
  656. ------------------------------------------------------------------------------*/
  657. { incl/viwreturnfeld.i }
  658. END PROCEDURE.
  659. /* _UIB-CODE-BLOCK-END */
  660. &ANALYZE-RESUME
  661. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TEST_EINGABEN vTableWin
  662. PROCEDURE TEST_EINGABEN :
  663. /*------------------------------------------------------------------------------
  664. Purpose:
  665. Parameters: <none>
  666. Notes:
  667. ------------------------------------------------------------------------------*/
  668. DEF OUTPUT PARAMETER opJa AS LOG NO-UNDO.
  669. DEF VAR eHandle AS HANDLE NO-UNDO.
  670. DEF VAR cString AS CHAR NO-UNDO.
  671. DEF VAR iNummer AS INT NO-UNDO.
  672. opJa = FALSE.
  673. eHandle = ?.
  674. IF NOT FMut THEN RETURN.
  675. AAA000:
  676. DO WHILE TRUE WITH FRAME {&FRAME-NAME}:
  677. LEAVE.
  678. END.
  679. IF VALID-HANDLE(eHandle) THEN DO:
  680. APPLY 'ENTRY' TO eHandle.
  681. RETURN NO-APPLY.
  682. END.
  683. opJa = TRUE.
  684. END PROCEDURE.
  685. /* _UIB-CODE-BLOCK-END */
  686. &ANALYZE-RESUME
  687. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE updateMode vTableWin
  688. PROCEDURE updateMode :
  689. /*------------------------------------------------------------------------------
  690. Purpose: Super Override
  691. Parameters:
  692. Notes:
  693. ------------------------------------------------------------------------------*/
  694. DEFINE INPUT PARAMETER pcMode AS CHARACTER NO-UNDO.
  695. CASE pcMode:
  696. WHEN 'updateBegin' THEN DO:
  697. IF NOT rowObject.Aktion:SCREEN-VALUE IN FRAME {&FRAME-NAME} BEGINS 'n' THEN DO:
  698. DYNAMIC-FUNCTION('setFlagAbbruch':U, TRUE, Progname ) NO-ERROR.
  699. RUN FEHLER ( 8015 ).
  700. RETURN NO-APPLY.
  701. END.
  702. END.
  703. WHEN 'updateEnd' THEN DO:
  704. END.
  705. END.
  706. RUN SUPER( INPUT pcMode).
  707. CASE pcMode:
  708. WHEN 'updateBegin' THEN DO:
  709. FMut = TRUE.
  710. END.
  711. WHEN 'updateEnd' THEN DO:
  712. FNeu = FALSE.
  713. FMut = FALSE.
  714. FCopy = FALSE.
  715. END.
  716. END.
  717. END PROCEDURE.
  718. /* _UIB-CODE-BLOCK-END */
  719. &ANALYZE-RESUME
  720. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE updateRecord vTableWin
  721. PROCEDURE updateRecord :
  722. /*------------------------------------------------------------------------------
  723. Purpose: Super Override
  724. Parameters:
  725. Notes:
  726. ------------------------------------------------------------------------------*/
  727. DEF VAR Artnr AS INT NO-UNDO.
  728. DEF VAR Inhalt AS INT NO-UNDO.
  729. DEF VAR Jahr AS INT NO-UNDO.
  730. DEF VAR Preis_Grp AS INT NO-UNDO.
  731. DEF VAR Ab_Datum AS DATE NO-UNDO.
  732. DEF VAR Alt_Dat AS DATE NO-UNDO.
  733. DEF VAR VK_Netto AS DEC DECIMALS 4 NO-UNDO.
  734. DEF VAR Rabatt AS DEC DECIMALS 4 NO-UNDO.
  735. DEF VAR hArtStaff AS HANDLE NO-UNDO.
  736. DEF VAR hNetto AS HANDLE NO-UNDO.
  737. DEF VAR hBrutto AS HANDLE NO-UNDO.
  738. DEF VAR hMarge AS HANDLE NO-UNDO.
  739. DEF VAR hDatum AS HANDLE NO-UNDO.
  740. DEF BUFFER bArtPreis FOR ArtPreis.
  741. DO WITH FRAME {&FRAME-NAME}:
  742. IF FNeu THEN DO:
  743. DYNAMIC-FUNCTION('SETMODIFIEDFLAG':U, INPUT Fenster, INPUT TRUE).
  744. rowObject.Preis_Grp:SCREEN-VALUE = CB_Preisgruppe:SCREEN-VALUE.
  745. END.
  746. Artnr = INTEGER(rowObject.Artnr:SCREEN-VALUE ).
  747. Inhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE ).
  748. Jahr = INTEGER(rowObject.Jahr:SCREEN-VALUE ).
  749. Preis_Grp = INTEGER(rowObject.Preis_Grp:SCREEN-VALUE).
  750. Ab_Datum = DATE (rowObject.Ab_Datum:SCREEN-VALUE ).
  751. rowObject.VK_Netto :MODIFIED = TRUE.
  752. rowObject.VK_Brutto:MODIFIED = TRUE.
  753. rowObject.Marge :MODIFIED = TRUE.
  754. VK_Netto = DECIMAL(rowObject.VK_Netto:SCREEN-VALUE).
  755. DYNAMIC-FUNCTION('SETMODIFIEDFLAG':U, INPUT Fenster, INPUT TRUE).
  756. END.
  757. FNeu = FALSE.
  758. FCopy = FALSE.
  759. RUN SUPER.
  760. EMPTY TEMP-TABLE tArtStaff.
  761. FIND LAST ArtStaff USE-INDEX ArtStaff-k1
  762. WHERE ArtStaff.Firma = Firma
  763. AND ArtStaff.Artnr = Artnr
  764. AND ArtStaff.Inhalt = Inhalt
  765. AND ArtStaff.Preis_Grp = Preis_Grp
  766. AND ArtStaff.Ab_Datum <= Ab_Datum NO-LOCK NO-ERROR.
  767. REPEAT TRANSACTION WITH FRAME {&FRAME-NAME}:
  768. IF Ab_Datum <= TODAY AND
  769. AltPreisDel = TRUE THEN DO:
  770. FIND LAST bArtPreis USE-INDEX ArtPreis-k1
  771. WHERE bArtPreis.Firma = Firma
  772. AND bArtPreis.Artnr = Artnr
  773. AND bArtPreis.Inhalt = Inhalt
  774. AND bArtPreis.Jahr = Jahr
  775. AND bArtPreis.Preis_Grp = Preis_Grp
  776. AND bArtPreis.Ab_Datum < Ab_Datum
  777. AND bArtPreis.Aktion = FALSE NO-ERROR.
  778. IF AVAILABLE bArtPreis THEN bArtPreis.Aktiv = FALSE.
  779. END.
  780. IF NOT AVAILABLE ArtStaff THEN LEAVE.
  781. Alt_Dat = ArtStaff.Ab_Datum.
  782. hArtStaff = TEMP-TABLE tArtStaff:DEFAULT-BUFFER-HANDLE.
  783. hNetto = hArtStaff:BUFFER-FIELD('VK_Netto') .
  784. hBrutto = hArtStaff:BUFFER-FIELD('VK_Brutto') .
  785. hMarge = hArtStaff:BUFFER-FIELD('Marge') .
  786. hDatum = hArtStaff:BUFFER-FIELD('Ab_Datum').
  787. FOR EACH ArtStaff NO-LOCK USE-INDEX ArtStaff-k1
  788. WHERE ArtStaff.Firma = Firma
  789. AND ArtStaff.Artnr = Artnr
  790. AND ArtStaff.Inhalt = Inhalt
  791. AND ArtStaff.Preis_Grp = Preis_Grp
  792. AND ArtStaff.Ab_Datum = Alt_Dat :
  793. CREATE TArtStaff.
  794. BUFFER-COPY ArtStaff TO TArtStaff.
  795. TArtStaff.VK_Netto = VK_Netto * (100 - TArtStaff.Rabatt) / 100.
  796. TArtStaff.Ab_Datum = Ab_Datum.
  797. RUN ARTPREISRECHNEN ( INPUT 1, hNetto ,
  798. hBrutto ,
  799. hMarge ,
  800. hDatum ,
  801. 'CHF' ).
  802. END.
  803. FOR EACH TArtStaff:
  804. IF Alt_Dat = Ab_Datum THEN FIND ArtStaff OF TArtStaff.
  805. ELSE CREATE ArtStaff.
  806. BUFFER-COPY TArtStaff TO ArtStaff.
  807. DELETE TArtStaff.
  808. END.
  809. LEAVE.
  810. END.
  811. RUN REPOS_TABELLE IN hDaten NO-ERROR.
  812. END PROCEDURE.
  813. /* _UIB-CODE-BLOCK-END */
  814. &ANALYZE-RESUME