f-besr.w 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  4. {adecomm/appserv.i}
  5. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS fFrameWin
  6. /*------------------------------------------------------------------------
  7. File:
  8. Description: from cntnrfrm.w - ADM2 SmartFrame Template
  9. Input Parameters:
  10. <none>
  11. Output Parameters:
  12. <none>
  13. ------------------------------------------------------------------------*/
  14. /* This .W file was created with the Progress AppBuilder. */
  15. /*----------------------------------------------------------------------*/
  16. /* Create an unnamed pool to store all the widgets created
  17. by this procedure. This is a good default which assures
  18. that this procedure's triggers and internal procedures
  19. will execute in this procedure's storage, and that proper
  20. cleanup will occur on deletion of the procedure. */
  21. CREATE WIDGET-POOL.
  22. /* *************************** Definitions ************************** */
  23. /* Parameters Definitions --- */
  24. /* Local Variable Definitions --- */
  25. DEFINE VARIABLE SAktiv AS LOG NO-UNDO INIT FALSE.
  26. DEFINE VARIABLE FMut AS LOG NO-UNDO INIT FALSE.
  27. DEFINE VARIABLE ProgName AS CHARACTER NO-UNDO.
  28. DEFINE VARIABLE Firma AS CHARACTER NO-UNDO.
  29. DEFINE VARIABLE D1Firma AS CHARACTER NO-UNDO.
  30. DEFINE VARIABLE AdFirma AS CHARACTER NO-UNDO.
  31. DEFINE VARIABLE FBFirma AS CHARACTER NO-UNDO.
  32. DEFINE VARIABLE GlobFir AS CHARACTER NO-UNDO.
  33. DEFINE VARIABLE GlobFil AS CHARACTER INIT '0000' NO-UNDO.
  34. DEFINE VARIABLE GlobKon AS CHARACTER INIT '9999' NO-UNDO.
  35. DEFINE VARIABLE BasFrw AS CHARACTER NO-UNDO.
  36. DEFINE VARIABLE lFirst AS LOGICAL NO-UNDO.
  37. DEFINE TEMP-TABLE tDateien
  38. FIELD cxmlDatei AS CHARACTER
  39. .
  40. DEFINE TEMP-TABLE tVESRZahl NO-UNDO LIKE VESRZahl.
  41. DEFINE TEMP-TABLE zDebop NO-UNDO LIKE Debop
  42. FIELD SkMax_Frw AS DECIMAL
  43. FIELD SkMax AS DECIMAL
  44. FIELD ZaKonto AS CHARACTER.
  45. { incl/ttcamt054_esr.i }
  46. {src/adm2/widgetprto.i}
  47. /* _UIB-CODE-BLOCK-END */
  48. &ANALYZE-RESUME
  49. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  50. /* ******************** Preprocessor Definitions ******************** */
  51. &Scoped-define PROCEDURE-TYPE SmartFrame
  52. &Scoped-define DB-AWARE no
  53. &Scoped-define ADM-CONTAINER FRAME
  54. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  55. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  56. &Scoped-define FRAME-NAME fMain
  57. /* Standard List Definitions */
  58. &Scoped-Define ENABLED-OBJECTS RECT-8 F_Dateiname Btn_Suchen CB_Zahkonto ~
  59. R_Datum Btn_Start Btn_Verbuchen T_ISO20022
  60. &Scoped-Define DISPLAYED-OBJECTS F_Dateiname CB_Zahkonto R_Datum T_ISO20022
  61. /* Custom List Definitions */
  62. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  63. &Scoped-define List-6 F_Dateiname R_Datum T_ISO20022
  64. /* _UIB-PREPROCESSOR-BLOCK-END */
  65. &ANALYZE-RESUME
  66. /* *********************** Control Definitions ********************** */
  67. /* Definitions of handles for SmartObjects */
  68. DEFINE VARIABLE h_b-vesrzahl AS HANDLE NO-UNDO.
  69. DEFINE VARIABLE h_d-vesrzahl AS HANDLE NO-UNDO.
  70. /* Definitions of the field level widgets */
  71. DEFINE BUTTON Btn_Start
  72. LABEL "einlesen Datei"
  73. SIZE 20 BY 1.
  74. DEFINE BUTTON Btn_Suchen
  75. IMAGE-UP FILE "grafik/select.bmp":U
  76. IMAGE-DOWN FILE "grafik/select.bmp":U
  77. IMAGE-INSENSITIVE FILE "grafik/select.bmp":U
  78. LABEL "S"
  79. SIZE 4.2 BY 1.
  80. DEFINE BUTTON Btn_Verbuchen
  81. LABEL "verbuchen"
  82. SIZE 20 BY 1.
  83. DEFINE VARIABLE CB_Zahkonto AS CHARACTER FORMAT "X(256)":U
  84. LABEL "FIBU-Konto"
  85. VIEW-AS COMBO-BOX INNER-LINES 5
  86. LIST-ITEM-PAIRS "Item 1","Item 1"
  87. DROP-DOWN-LIST
  88. SIZE 50 BY 1
  89. BGCOLOR 15 NO-UNDO.
  90. DEFINE VARIABLE F_Dateiname AS CHARACTER FORMAT "X(256)":U
  91. LABEL "BESR-Datei"
  92. VIEW-AS FILL-IN NATIVE
  93. SIZE 50 BY 1
  94. BGCOLOR 15 NO-UNDO.
  95. DEFINE VARIABLE R_Datum AS INTEGER INITIAL 3
  96. VIEW-AS RADIO-SET VERTICAL
  97. RADIO-BUTTONS
  98. "Einzahlungsdatum", 1,
  99. "Verarbeitungsdatum", 2,
  100. "Gutschriftsdatum", 3
  101. SIZE 50 BY 2.52
  102. BGCOLOR 15 NO-UNDO.
  103. DEFINE RECTANGLE RECT-8
  104. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  105. SIZE 170 BY 18.1.
  106. DEFINE VARIABLE T_ISO20022 AS LOGICAL INITIAL YES
  107. LABEL "ISO 20022"
  108. VIEW-AS TOGGLE-BOX
  109. SIZE 20 BY 1 NO-UNDO.
  110. /* ************************ Frame Definitions *********************** */
  111. DEFINE FRAME fMain
  112. F_Dateiname AT ROW 1.52 COL 18 COLON-ALIGNED WIDGET-ID 2
  113. Btn_Suchen AT ROW 1.52 COL 72 WIDGET-ID 18
  114. CB_Zahkonto AT ROW 2.52 COL 18 COLON-ALIGNED WIDGET-ID 6
  115. R_Datum AT ROW 4 COL 20 NO-LABEL WIDGET-ID 8
  116. Btn_Start AT ROW 4 COL 85 WIDGET-ID 12
  117. Btn_Verbuchen AT ROW 5.52 COL 85 WIDGET-ID 14
  118. T_ISO20022 AT ROW 7 COL 20 WIDGET-ID 20
  119. RECT-8 AT ROW 1.24 COL 2 WIDGET-ID 16
  120. WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
  121. SIDE-LABELS NO-UNDERLINE THREE-D
  122. AT COL 1 ROW 1
  123. SIZE 172 BY 18.52
  124. DEFAULT-BUTTON Btn_Start WIDGET-ID 100.
  125. /* *********************** Procedure Settings ************************ */
  126. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  127. /* Settings for THIS-PROCEDURE
  128. Type: SmartFrame
  129. Allow: Basic,Browse,DB-Fields,Query,Smart
  130. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  131. Other Settings: PERSISTENT-ONLY COMPILE APPSERVER
  132. */
  133. /* This procedure should always be RUN PERSISTENT. Report the error, */
  134. /* then cleanup and return. */
  135. IF NOT THIS-PROCEDURE:PERSISTENT THEN
  136. DO:
  137. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  138. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  139. RETURN.
  140. END.
  141. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  142. /* ************************* Create Window ************************** */
  143. &ANALYZE-SUSPEND _CREATE-WINDOW
  144. /* DESIGN Window definition (used by the UIB)
  145. CREATE WINDOW fFrameWin ASSIGN
  146. HEIGHT = 18.52
  147. WIDTH = 173.4.
  148. /* END WINDOW DEFINITION */
  149. */
  150. &ANALYZE-RESUME
  151. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB fFrameWin
  152. /* ************************* Included-Libraries *********************** */
  153. {src/adm2/containr.i}
  154. /* _UIB-CODE-BLOCK-END */
  155. &ANALYZE-RESUME
  156. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  157. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  158. /* SETTINGS FOR WINDOW fFrameWin
  159. VISIBLE,,RUN-PERSISTENT */
  160. /* SETTINGS FOR FRAME fMain
  161. NOT-VISIBLE FRAME-NAME */
  162. ASSIGN
  163. FRAME fMain:HIDDEN = TRUE.
  164. /* SETTINGS FOR FILL-IN F_Dateiname IN FRAME fMain
  165. 6 */
  166. /* SETTINGS FOR RADIO-SET R_Datum IN FRAME fMain
  167. 6 */
  168. /* SETTINGS FOR TOGGLE-BOX T_ISO20022 IN FRAME fMain
  169. 6 */
  170. /* _RUN-TIME-ATTRIBUTES-END */
  171. &ANALYZE-RESUME
  172. /* Setting information for Queries and Browse Widgets fields */
  173. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME fMain
  174. /* Query rebuild information for FRAME fMain
  175. _Options = ""
  176. _Query is NOT OPENED
  177. */ /* FRAME fMain */
  178. &ANALYZE-RESUME
  179. /* ************************ Control Triggers ************************ */
  180. &Scoped-define SELF-NAME Btn_Start
  181. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Start fFrameWin
  182. ON CHOOSE OF Btn_Start IN FRAME fMain /* einlesen Datei */
  183. DO:
  184. RUN BESR_EINLESEN.
  185. RETURN NO-APPLY.
  186. END.
  187. /* _UIB-CODE-BLOCK-END */
  188. &ANALYZE-RESUME
  189. &Scoped-define SELF-NAME Btn_Suchen
  190. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Suchen fFrameWin
  191. ON CHOOSE OF Btn_Suchen IN FRAME fMain /* S */
  192. DO:
  193. DEFINE VARIABLE lJa AS LOG NO-UNDO.
  194. DO WITH FRAME {&FRAME-NAME}:
  195. ASSIGN {&List-6}.
  196. SYSTEM-DIALOG GET-FILE F_Dateiname
  197. TITLE "Auswahl der BESR-Datei ..."
  198. FILTERS "Alle Dateien (*.*)" "*.*"
  199. MUST-EXIST
  200. USE-FILENAME
  201. UPDATE lJa.
  202. IF NOT lJa THEN RETURN NO-APPLY.
  203. DISPLAY {&List-6}.
  204. APPLY 'ENTRY' TO F_Dateiname.
  205. RETURN NO-APPLY.
  206. END.
  207. END.
  208. /* _UIB-CODE-BLOCK-END */
  209. &ANALYZE-RESUME
  210. &Scoped-define SELF-NAME Btn_Verbuchen
  211. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Verbuchen fFrameWin
  212. ON CHOOSE OF Btn_Verbuchen IN FRAME fMain /* verbuchen */
  213. DO:
  214. RUN VERBUCHEN.
  215. APPLY 'ENTRY' TO F_Dateiname.
  216. RETURN NO-APPLY.
  217. END.
  218. /* _UIB-CODE-BLOCK-END */
  219. &ANALYZE-RESUME
  220. &UNDEFINE SELF-NAME
  221. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK fFrameWin
  222. /* *************************** Main Block *************************** */
  223. sAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR.
  224. IF sAktiv THEN
  225. DO:
  226. Firma = DYNAMIC-FUNCTION('getMandat':U ) NO-ERROR.
  227. D1Firma = DYNAMIC-FUNCTION('getMandant':U ) NO-ERROR.
  228. AdFirma = DYNAMIC-FUNCTION('getADMandant':U ) NO-ERROR.
  229. FBFirma = DYNAMIC-FUNCTION('getFBMandant':U ) NO-ERROR.
  230. GlobFir = D1Firma.
  231. END.
  232. IF FBFirma = '' THEN FBFirma = '9999'.
  233. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  234. /* Now enable the interface if in test mode - otherwise this happens when
  235. the object is explicitly initialized from its container. */
  236. RUN initializeObject.
  237. &ENDIF
  238. /* _UIB-CODE-BLOCK-END */
  239. &ANALYZE-RESUME
  240. /* ********************** Internal Procedures *********************** */
  241. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects fFrameWin _ADM-CREATE-OBJECTS
  242. PROCEDURE adm-create-objects :
  243. /*------------------------------------------------------------------------------
  244. Purpose: Create handles for all SmartObjects used in this procedure.
  245. After SmartObjects are initialized, then SmartLinks are added.
  246. Parameters: <none>
  247. ------------------------------------------------------------------------------*/
  248. DEFINE VARIABLE currentPage AS INTEGER NO-UNDO.
  249. ASSIGN
  250. currentPage = getCurrentPage().
  251. CASE currentPage:
  252. WHEN 0 THEN
  253. DO:
  254. RUN constructObject (
  255. INPUT 'd-vesrzahl.wDB-AWARE':U ,
  256. INPUT FRAME fMain:HANDLE ,
  257. INPUT 'AppServiceASInfoASUsePrompt?CacheDuration0CheckCurrentChangedyesDestroyStatelessyesDisconnectAppServernoServerOperatingModeNONEShareDatanoUpdateFromSourcenoForeignFieldsObjectNamed-vesrzahlOpenOnInityesPromptColumns(NONE)PromptOnDeletenoRowsToBatch200RebuildOnReposyesToggleDataTargetsyes':U ,
  258. OUTPUT h_d-vesrzahl ).
  259. RUN repositionObject IN h_d-vesrzahl ( 8.14 , 9.80 ) NO-ERROR.
  260. /* Size in AB: ( 3.91 , 32.80 ) */
  261. RUN constructObject (
  262. INPUT 'b-vesrzahl.w':U ,
  263. INPUT FRAME fMain:HANDLE ,
  264. INPUT 'ScrollRemotenoNumDown0CalcWidthnoMaxWidth80FetchOnReposToEndyesUseSortIndicatoryesSearchFieldDataSourceNames?UpdateTargetNames?LogicalObjectNameHideOnInitnoDisableOnInitnoObjectLayout':U ,
  265. OUTPUT h_b-vesrzahl ).
  266. RUN repositionObject IN h_b-vesrzahl ( 8.38 , 3.00 ) NO-ERROR.
  267. RUN resizeObject IN h_b-vesrzahl ( 10.71 , 167.00 ) NO-ERROR.
  268. /* Links to SmartDataBrowser h_b-vesrzahl. */
  269. RUN addLink ( h_d-vesrzahl , 'Data':U , h_b-vesrzahl ).
  270. /* Adjust the tab order of the smart objects. */
  271. RUN adjustTabOrder ( h_b-vesrzahl ,
  272. T_ISO20022:HANDLE IN FRAME fMain , 'AFTER':U ).
  273. END. /* Page 0 */
  274. END CASE.
  275. END PROCEDURE.
  276. /* _UIB-CODE-BLOCK-END */
  277. &ANALYZE-RESUME
  278. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESRDATEI_FUELLEN fFrameWin
  279. PROCEDURE BESRDATEI_FUELLEN :
  280. /*------------------------------------------------------------------------------*/
  281. /* Purpose: Super Override */
  282. /* Parameters: */
  283. /* Notes: */
  284. /*------------------------------------------------------------------------------*/
  285. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  286. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  287. DEFINE VARIABLE iTT AS INTEGER NO-UNDO.
  288. DEFINE VARIABLE iMM AS INTEGER NO-UNDO.
  289. DEFINE VARIABLE iJJ AS INTEGER NO-UNDO.
  290. DEFINE VARIABLE iTrArt AS INTEGER NO-UNDO.
  291. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  292. FOR EACH VESRZahl:
  293. DELETE VESRZahl.
  294. END.
  295. INPUT FROM 'VESR.V11' NO-MAP NO-CONVERT.
  296. B020:
  297. REPEAT TRANSACTION ON STOP UNDO, LEAVE:
  298. IMPORT cZeile.
  299. FIND LAST VESRZahl NO-LOCK NO-ERROR.
  300. IF AVAILABLE VESRZahl THEN ix = VESRZahl.Trnr + 1.
  301. ELSE ix = 1.
  302. iTrArt = INTEGER(SUBSTRING(cZeile,001,03)).
  303. IF iTrArt >= 900 THEN
  304. DO:
  305. CREATE VESRZahl.
  306. ASSIGN
  307. VESRZahl.Trnr = ix
  308. VESRZahl.Tr_Art = iTrArt
  309. VESRZahl.Tn_Nr = INTEGER(SUBSTRING(cZeile,004,09))
  310. VESRZahl.Referenz = SUBSTRING(cZeile,013,27)
  311. VESRZahl.Betrag = INTEGER(SUBSTRING(cZeile,040,12)) / 100
  312. VESRZahl.Aufg_Ref = SUBSTRING(cZeile,054,10)
  313. VESRZahl.Taxen_01 = INTEGER(SUBSTRING(cZeile,070,09)) / 100
  314. VESRZahl.Taxen_02 = INTEGER(SUBSTRING(cZeile,079,09)) / 100.
  315. iJJ = INTEGER(SUBSTRING(cZeile,064,02)).
  316. iMM = INTEGER(SUBSTRING(cZeile,066,02)).
  317. iTT = INTEGER(SUBSTRING(cZeile,068,02)).
  318. IF iJJ > 50 THEN iJJ = iJJ + 1900.
  319. ELSE iJJ = iJJ + 2000.
  320. VESRZahl.Aufg_Dat = DATE(iMM,iTT,iJJ).
  321. IF iTrArt = 995 THEN
  322. DO:
  323. VESRZahl.Betrag = VESRZahl.Betrag * -1.
  324. VESRZahl.Taxen_01 = VESRZahl.Taxen_01 * -1.
  325. END.
  326. NEXT.
  327. END.
  328. CREATE VESRZahl.
  329. ASSIGN
  330. VESRZahl.Trnr = ix
  331. VESRZahl.Tr_Art = iTrArt
  332. VESRZahl.Tn_Nr = INTEGER(SUBSTRING(cZeile,004,09))
  333. VESRZahl.Referenz = SUBSTRING(cZeile,013,27)
  334. VESRZahl.Betrag = INTEGER(SUBSTRING(cZeile,040,10)) / 100
  335. VESRZahl.Aufg_Ref = SUBSTRING(cZeile,050,10)
  336. VESRZahl.Mi_Fi_Nr = SUBSTRING(cZeile,078,09)
  337. VESRZahl.Rj_Cd = SUBSTRING(cZeile,087,01)
  338. VESRZahl.Taxen_02 = INTEGER(SUBSTRING(cZeile,097,04)) / 100.
  339. iJJ = INTEGER(SUBSTRING(cZeile,060,02)).
  340. iMM = INTEGER(SUBSTRING(cZeile,062,02)).
  341. iTT = INTEGER(SUBSTRING(cZeile,064,02)).
  342. IF iJJ > 50 THEN iJJ = iJJ + 1900.
  343. ELSE iJJ = iJJ + 2000.
  344. VESRZahl.Aufg_Dat = DATE(iMM,iTT,iJJ).
  345. iJJ = INTEGER(SUBSTRING(cZeile,066,02)).
  346. iMM = INTEGER(SUBSTRING(cZeile,068,02)).
  347. iTT = INTEGER(SUBSTRING(cZeile,070,02)).
  348. IF iJJ > 50 THEN iJJ = iJJ + 1900.
  349. ELSE iJJ = iJJ + 2000.
  350. VESRZahl.Verb_Dat = DATE(iMM,iTT,iJJ).
  351. iJJ = INTEGER(SUBSTRING(cZeile,072,02)).
  352. iMM = INTEGER(SUBSTRING(cZeile,074,02)).
  353. iTT = INTEGER(SUBSTRING(cZeile,076,02)).
  354. IF iJJ > 50 THEN iJJ = iJJ + 1900.
  355. ELSE iJJ = iJJ + 2000.
  356. VESRZahl.Guts_Dat = DATE(iMM,iTT,iJJ).
  357. IF iTrArt = 005 OR
  358. iTrArt = 015 OR
  359. iTrArt = 105 OR
  360. iTrArt = 115 THEN
  361. DO:
  362. VESRZahl.Betrag = VESRZahl.Betrag * -1.
  363. VESRZahl.Taxen_02 = VESRZahl.Taxen_02 * -1.
  364. END.
  365. iAnz = iAnz + 1.
  366. END.
  367. INPUT CLOSE.
  368. END PROCEDURE.
  369. /* _UIB-CODE-BLOCK-END */
  370. &ANALYZE-RESUME
  371. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESRDATEI_ISO20022_FUELLEN fFrameWin
  372. PROCEDURE BESRDATEI_ISO20022_FUELLEN :
  373. /*------------------------------------------------------------------------------*/
  374. /* Purpose: Super Override */
  375. /* Parameters: */
  376. /* Notes: */
  377. /*------------------------------------------------------------------------------*/
  378. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  379. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  380. DEFINE VARIABLE iTT AS INTEGER NO-UNDO.
  381. DEFINE VARIABLE iMM AS INTEGER NO-UNDO.
  382. DEFINE VARIABLE iJJ AS INTEGER NO-UNDO.
  383. DEFINE VARIABLE iTrArt AS INTEGER NO-UNDO.
  384. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  385. DEFINE VARIABLE iTotBetr AS DECIMAL NO-UNDO.
  386. DEFINE VARIABLE iTotTax AS DECIMAL NO-UNDO.
  387. DEFINE VARIABLE iTeilnrNr AS INTEGER NO-UNDO.
  388. IF lFirst THEN
  389. DO:
  390. FOR EACH VESRZahl:
  391. DELETE VESRZahl.
  392. END.
  393. lFirst = FALSE.
  394. END.
  395. FOR EACH tSubHeader:
  396. ASSIGN
  397. iAnz = 0
  398. iTotBetr = 0
  399. iTotTax = 0.
  400. FOR EACH tZahlung
  401. WHERE tZahlung.iSeq = tSubHeader.iSeq:
  402. FIND LAST VESRZahl NO-LOCK NO-ERROR.
  403. IF AVAILABLE VESRZahl THEN ix = VESRZahl.Trnr + 1.
  404. ELSE ix = 1.
  405. iTrArt = 1.
  406. IF iTrArt >= 900 THEN
  407. DO:
  408. CREATE VESRZahl.
  409. ASSIGN
  410. VESRZahl.Trnr = ix
  411. VESRZahl.Tr_Art = iTrArt
  412. VESRZahl.Tn_Nr = INTEGER(SUBSTRING(cZeile,004,09))
  413. VESRZahl.Referenz = SUBSTRING(cZeile,013,27)
  414. VESRZahl.Betrag = INTEGER(SUBSTRING(cZeile,040,12)) / 100
  415. VESRZahl.Aufg_Ref = SUBSTRING(cZeile,054,10)
  416. VESRZahl.Taxen_01 = INTEGER(SUBSTRING(cZeile,070,09)) / 100
  417. VESRZahl.Taxen_02 = INTEGER(SUBSTRING(cZeile,079,09)) / 100.
  418. iJJ = INTEGER(SUBSTRING(cZeile,064,02)).
  419. iMM = INTEGER(SUBSTRING(cZeile,066,02)).
  420. iTT = INTEGER(SUBSTRING(cZeile,068,02)).
  421. IF iJJ > 50 THEN iJJ = iJJ + 1900.
  422. ELSE iJJ = iJJ + 2000.
  423. VESRZahl.Aufg_Dat = DATE(iMM,iTT,iJJ).
  424. IF iTrArt = 995 THEN
  425. DO:
  426. VESRZahl.Betrag = VESRZahl.Betrag * -1.
  427. VESRZahl.Taxen_01 = VESRZahl.Taxen_01 * -1.
  428. END.
  429. NEXT.
  430. END.
  431. CREATE VESRZahl.
  432. ASSIGN
  433. VESRZahl.Trnr = ix
  434. VESRZahl.Tr_Art = iTrArt
  435. VESRZahl.Tn_Nr = iTeilnrNr
  436. VESRZahl.Referenz = tZahlung.Referenz
  437. VESRZahl.Betrag = tZahlung.Betrag
  438. VESRZahl.Aufg_Ref = tZahlung.AufRef
  439. VESRZahl.Mi_Fi_Nr = tZahlung.ServiceRef
  440. VESRZahl.Rj_Cd = ''
  441. VESRZahl.Taxen_02 = DECIMAL(tZahlung.Taxen).
  442. iJJ = INTEGER(SUBSTRING(tSubHeader.Buchdat,001,04)).
  443. iMM = INTEGER(SUBSTRING(tSubHeader.Buchdat,006,02)).
  444. iTT = INTEGER(SUBSTRING(tSubHeader.Buchdat,009,02)).
  445. VESRZahl.Aufg_Dat = DATE(iMM,iTT,iJJ).
  446. VESRZahl.Verb_Dat = DATE(iMM,iTT,iJJ).
  447. iJJ = INTEGER(SUBSTRING(tSubHeader.Valuta,001,04)).
  448. iMM = INTEGER(SUBSTRING(tSubHeader.Valuta,006,02)).
  449. iTT = INTEGER(SUBSTRING(tSubHeader.Valuta,009,02)).
  450. VESRZahl.Guts_Dat = DATE(iMM,iTT,iJJ).
  451. IF tZahlung.lStorno THEN
  452. DO:
  453. VESRZahl.Betrag = VESRZahl.Betrag * -1.
  454. VESRZahl.Taxen_02 = VESRZahl.Taxen_02 * -1.
  455. END.
  456. iAnz = iAnz + 1.
  457. END.
  458. END.
  459. END PROCEDURE.
  460. /* _UIB-CODE-BLOCK-END */
  461. &ANALYZE-RESUME
  462. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESR_EINLESEN fFrameWin
  463. PROCEDURE BESR_EINLESEN :
  464. /*------------------------------------------------------------------------------*/
  465. /* Purpose: Super Override */
  466. /* Parameters: */
  467. /* Notes: */
  468. /*------------------------------------------------------------------------------*/
  469. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO.
  470. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO.
  471. DEFINE VARIABLE cISO AS CHARACTER NO-UNDO.
  472. DEFINE VARIABLE cEndung AS CHARACTER NO-UNDO.
  473. DEFINE VARIABLE lMultiFile AS LOGICAL NO-UNDO.
  474. DEFINE VARIABLE cZipProgramm AS CHARACTER NO-UNDO.
  475. DEFINE VARIABLE iIndex AS INTEGER NO-UNDO.
  476. DEFINE VARIABLE cPfad AS CHARACTER NO-UNDO.
  477. DEFINE VARIABLE cPfadArchiv AS CHARACTER NO-UNDO.
  478. DEFINE VARIABLE cPfadDaten AS CHARACTER NO-UNDO.
  479. DEFINE VARIABLE cPfadDatenNeu AS CHARACTER NO-UNDO.
  480. DEFINE VARIABLE cListenName AS CHARACTER NO-UNDO.
  481. DO WITH FRAME {&FRAME-NAME}:
  482. ASSIGN {&List-6}.
  483. cKonto = CB_Zahkonto:SCREEN-VALUE NO-ERROR.
  484. cDateiName = SEARCH(F_DateiName) NO-ERROR.
  485. FILE-INFO:FILE-NAME = cDateiName.
  486. cDateiName = FILE-INFO:FULL-PATHNAME.
  487. cDateiName = REPLACE(cDateiName, '/', '\').
  488. IF cDateiName = ? OR
  489. cDateiName = '' THEN
  490. DO:
  491. MESSAGE 'BESR-Dateiname ist ungültig/nicht vorhanden'
  492. VIEW-AS ALERT-BOX.
  493. APPLY 'ENTRY' TO F_Dateiname.
  494. RETURN NO-APPLY.
  495. END.
  496. cISO = STRING(T_ISO20022).
  497. PUT-KEY-VALUE SECTION 'BESR'
  498. KEY 'Dateiname'
  499. VALUE cDateiname NO-ERROR.
  500. PUT-KEY-VALUE SECTION 'BESR'
  501. KEY 'Konto'
  502. VALUE cKonto NO-ERROR.
  503. PUT-KEY-VALUE SECTION 'BESR'
  504. KEY 'ISO'
  505. VALUE cISO NO-ERROR.
  506. END.
  507. IF T_ISO20022 THEN
  508. DO:
  509. lFirst = TRUE.
  510. EMPTY TEMP-TABLE tDateien.
  511. cEndung = SUBSTRING(cDateiName, R-INDEX(cDateiName, '.')).
  512. IF cEndung = '.zip' THEN
  513. DO:
  514. cZipProgramm = DYNAMIC-FUNCTION ('getFehlwert':U, D1Firma, 'BESRZIPCMD':U).
  515. IF cZipProgramm = ? THEN
  516. DO:
  517. MESSAGE 'Der Fehlwert "BESRZIPCMD" fehlt in der Fehlwertverwaltung '
  518. VIEW-AS ALERT-BOX.
  519. RETURN 'ERROR'.
  520. END.
  521. cZipProgramm = REPLACE(cZipProgramm, '/', '\').
  522. iIndex = R-INDEX(cZipProgramm, '\').
  523. cPfad = (IF iIndex = 0 THEN '.\' ELSE SUBSTRING(cZipProgramm, 01, iIndex)).
  524. cPfadDaten = cPfad + STRING(YEAR(TODAY),'9999') + STRING(MONTH(TODAY),'99') + STRING(DAY(TODAY),'99').
  525. cPfadArchiv = cPfad + 'Archive\'.
  526. cPfadDatenNeu = cPfadDaten.
  527. FILE-INFO:FILE-NAME = cPfadDatenNeu NO-ERROR.
  528. iIndex = 0.
  529. DO WHILE FILE-INFO:FULL-PATHNAME <> '' AND FILE-INFO:FULL-PATHNAME <> ?:
  530. iIndex = iIndex + 1.
  531. cPfadDatenNeu = cPfadDaten + '-' + STRING(iIndex,'99').
  532. FILE-INFO:FILE-NAME = cPfadDatenNeu.
  533. END.
  534. cPfadDaten = cPfadDatenNeu.
  535. cZipProgramm = cZipProgramm + ' '
  536. + cPfadDaten + ' '
  537. + cDateiName.
  538. OS-COMMAND SILENT VALUE(cZipProgramm).
  539. lMultiFile = TRUE.
  540. cListenName = cPfadDaten + '\Liste.txt'.
  541. INPUT FROM value(cListenName) NO-MAP NO-CONVERT.
  542. REPEAT TRANSACTION ON STOP UNDO, LEAVE:
  543. CREATE tDateien.
  544. IMPORT UNFORMATTED tDateien.
  545. END.
  546. INPUT CLOSE.
  547. END.
  548. ELSE
  549. DO:
  550. /* iIndex = R-INDEX(cDateiName, '\'). */
  551. /* cDateiName = (IF iIndex = 0 THEN cDateiName ELSE SUBSTRING(cDateiName, iIndex + 1)).*/
  552. CREATE tDateien.
  553. ASSIGN
  554. tDateien.cxmlDatei = cDateiName.
  555. END.
  556. FOR EACH tDateien:
  557. cDateiName = (IF cPfadDaten = '' THEN tDateien.cxmlDatei ELSE cPfadDaten + '\' + tDateien.cxmlDatei).
  558. EMPTY TEMP-TABLE tHeader .
  559. EMPTY TEMP-TABLE tSubHeader .
  560. EMPTY TEMP-TABLE tZahlung .
  561. RUN read_camt054_esr.p ( cDateiName,
  562. INPUT-OUTPUT htHeader,
  563. INPUT-OUTPUT htSubHeader,
  564. INPUT-OUTPUT htZahlung ) NO-ERROR.
  565. RUN BESRDATEI_ISO20022_FUELLEN.
  566. END.
  567. END.
  568. ELSE
  569. DO:
  570. RUN DATEI_FORMATIEREN ( cDateiname ).
  571. RUN BESRDATEI_FUELLEN.
  572. END.
  573. DYNAMIC-FUNCTION('openQuery':U IN h_d-vesrzahl ) NO-ERROR.
  574. END PROCEDURE.
  575. /* _UIB-CODE-BLOCK-END */
  576. &ANALYZE-RESUME
  577. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DATEI_FORMATIEREN fFrameWin
  578. PROCEDURE DATEI_FORMATIEREN :
  579. /*------------------------------------------------------------------------------*/
  580. /* Purpose: Super Override */
  581. /* Parameters: */
  582. /* Notes: */
  583. /*------------------------------------------------------------------------------*/
  584. DEFINE INPUT PARAMETER ipDateiname AS CHARACTER NO-UNDO.
  585. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  586. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  587. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  588. INPUT FROM VALUE(ipDateiname) NO-MAP NO-CONVERT.
  589. OUTPUT TO 'VESR.V11' NO-MAP NO-CONVERT.
  590. A010:
  591. REPEAT TRANSACTION ON STOP UNDO, LEAVE
  592. ON ERROR UNDO, LEAVE:
  593. cZeile = ''.
  594. ix = 0.
  595. DO WHILE TRUE:
  596. READKEY.
  597. IF INTEGER(LASTKEY) < 0 THEN LEAVE A010.
  598. IF INTEGER(LASTKEY) = 13 OR
  599. INTEGER(LASTKEY) = 10 THEN
  600. DO:
  601. IF ix > 0 THEN
  602. DO:
  603. PUT CONTROL CHR(34) cZeile CHR(34) CHR(10).
  604. iAnz = iAnz + 1.
  605. NEXT A010.
  606. END.
  607. NEXT.
  608. END.
  609. cZeile = cZeile + CHR(LASTKEY).
  610. ix = ix + 1.
  611. IF ix = 128 THEN
  612. DO:
  613. PUT CONTROL CHR(34) cZeile CHR(34) CHR(10).
  614. iAnz = iAnz + 1.
  615. NEXT A010.
  616. END.
  617. END.
  618. END.
  619. IF ix > 0 THEN
  620. DO:
  621. PUT CONTROL CHR(34) cZeile CHR(34) CHR(10).
  622. iAnz = iAnz + 1.
  623. END.
  624. OUTPUT CLOSE.
  625. INPUT CLOSE.
  626. MESSAGE 'Anzahl eingelesenen Datensätze = ' iAnz.
  627. END PROCEDURE.
  628. /* _UIB-CODE-BLOCK-END */
  629. &ANALYZE-RESUME
  630. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI fFrameWin _DEFAULT-DISABLE
  631. PROCEDURE disable_UI :
  632. /*------------------------------------------------------------------------------
  633. Purpose: DISABLE the User Interface
  634. Parameters: <none>
  635. Notes: Here we clean-up the user-interface by deleting
  636. dynamic widgets we have created and/or hide
  637. frames. This procedure is usually called when
  638. we are ready to "clean-up" after running.
  639. ------------------------------------------------------------------------------*/
  640. /* Hide all frames. */
  641. HIDE FRAME fMain.
  642. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  643. END PROCEDURE.
  644. /* _UIB-CODE-BLOCK-END */
  645. &ANALYZE-RESUME
  646. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI fFrameWin _DEFAULT-ENABLE
  647. PROCEDURE enable_UI :
  648. /*------------------------------------------------------------------------------
  649. Purpose: ENABLE the User Interface
  650. Parameters: <none>
  651. Notes: Here we display/view/enable the widgets in the
  652. user-interface. In addition, OPEN all queries
  653. associated with each FRAME and BROWSE.
  654. These statements here are based on the "Other
  655. Settings" section of the widget Property Sheets.
  656. ------------------------------------------------------------------------------*/
  657. DISPLAY F_Dateiname CB_Zahkonto R_Datum T_ISO20022
  658. WITH FRAME fMain.
  659. ENABLE RECT-8 F_Dateiname Btn_Suchen CB_Zahkonto R_Datum Btn_Start
  660. Btn_Verbuchen T_ISO20022
  661. WITH FRAME fMain.
  662. {&OPEN-BROWSERS-IN-QUERY-fMain}
  663. END PROCEDURE.
  664. /* _UIB-CODE-BLOCK-END */
  665. &ANALYZE-RESUME
  666. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject fFrameWin
  667. PROCEDURE initializeObject :
  668. /*------------------------------------------------------------------------------*/
  669. /* Purpose: Super Override */
  670. /* Parameters: */
  671. /* Notes: */
  672. /*------------------------------------------------------------------------------*/
  673. DEFINE VARIABLE cDateiname AS CHARACTER NO-UNDO.
  674. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO.
  675. DEFINE VARIABLE cISO AS CHARACTER NO-UNDO.
  676. GET-KEY-VALUE SECTION 'BESR'
  677. KEY 'Dateiname'
  678. VALUE cDateiname.
  679. IF cDateiName = ? THEN cDateiname = ''.
  680. GET-KEY-VALUE SECTION 'BESR'
  681. KEY 'Konto'
  682. VALUE cKonto.
  683. IF cKonto = ? THEN cKonto = ''.
  684. GET-KEY-VALUE SECTION 'BESR'
  685. KEY 'ISO'
  686. VALUE cISO.
  687. IF cISO = ? THEN cISO = ''.
  688. IF cISO = '' THEN cISO = 'no'.
  689. DO WITH FRAME {&FRAME-NAME}:
  690. IF sAktiv THEN
  691. DO:
  692. RUN COMBO_ZAHLUNGSART (INPUT CB_ZAHKONTO:HANDLE) NO-ERROR.
  693. CB_Zahkonto:SCREEN-VALUE = cKonto NO-ERROR.
  694. END.
  695. F_Dateiname = cDateiname.
  696. T_ISO20022 = (IF cISO BEGINS 'n' THEN FALSE ELSE TRUE).
  697. END.
  698. BasFrw = DYNAMIC-FUNCTION('getFwFRW':U) NO-ERROR.
  699. RUN SUPER.
  700. /* Code placed here will execute AFTER standard behavior. */
  701. END PROCEDURE.
  702. /* _UIB-CODE-BLOCK-END */
  703. &ANALYZE-RESUME
  704. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RECHNEN fFrameWin
  705. PROCEDURE RECHNEN :
  706. /*------------------------------------------------------------------------------
  707. Purpose:
  708. Parameters: <none>
  709. Notes:
  710. ------------------------------------------------------------------------------*/
  711. DEFINE INPUT-OUTPUT PARAMETER ipBuffer AS HANDLE NO-UNDO.
  712. DEFINE INPUT PARAMETER ipArt AS INTEGER NO-UNDO.
  713. DEFINE VARIABLE ZaFrw AS DECIMAL NO-UNDO.
  714. DEFINE VARIABLE Za AS DECIMAL NO-UNDO.
  715. DEFINE VARIABLE SkFrw AS DECIMAL NO-UNDO.
  716. DEFINE VARIABLE Sk AS DECIMAL NO-UNDO.
  717. DEFINE VARIABLE Saldo AS DECIMAL NO-UNDO.
  718. DEFINE VARIABLE SaldoBW AS DECIMAL NO-UNDO.
  719. DEFINE VARIABLE Skonto AS DECIMAL NO-UNDO.
  720. DEFINE VARIABLE SkontoBW AS DECIMAL NO-UNDO.
  721. DEFINE VARIABLE Kurs AS DECIMAL DECIMALS 8 NO-UNDO.
  722. DEFINE VARIABLE Faktor AS INTEGER NO-UNDO.
  723. DEFINE VARIABLE PluMin AS INTEGER NO-UNDO.
  724. IF ipBuffer::Fakbetr_FRW < 0 THEN PluMin = -1.
  725. ELSE PluMin = +1.
  726. ZaFrw = ipBuffer::Zahbetr_Frw.
  727. Za = ipBuffer::Zahbetr .
  728. SkFrw = ipBuffer::Skonto_Frw .
  729. Sk = ipBuffer::Skonto .
  730. Kurs = ipBuffer::Kurs .
  731. Faktor = IF ipBuffer::Faktor > 0 THEN ipBuffer::Faktor ELSE 1.
  732. IF Faktor = ? THEN Faktor = 1.
  733. IF ZaFrw = 0 AND
  734. SkFrw = 0 AND
  735. Za = 0 AND
  736. Sk = 0 THEN RETURN.
  737. CASE ipArt:
  738. WHEN 1 THEN
  739. Za = ZaFrw * Kurs / Faktor.
  740. WHEN 2 THEN
  741. Za = ZaFrw * Kurs / Faktor.
  742. WHEN 3 THEN
  743. ZaFrw = Za * Faktor / Kurs .
  744. WHEN 4 THEN
  745. Sk = SkFrw * Kurs / Faktor.
  746. END.
  747. Saldo = ipBuffer::Saldo_Frw - ZaFrw.
  748. Skonto = SkFrw.
  749. Saldo = Saldo - Skonto.
  750. SaldoBw = ipBuffer::Saldo - Za.
  751. SkontoBw = Sk.
  752. SaldoBw = SaldoBw - SkontoBw.
  753. IF Saldo = 0 THEN
  754. DO:
  755. IF ipBuffer::Frw = BasFrw THEN
  756. DO:
  757. IF SaldoBW <> 0 THEN Za = Za + SaldoBW.
  758. END.
  759. END.
  760. DO WHILE TRUE:
  761. IF Saldo = 0 THEN LEAVE.
  762. IF ipArt = 4 THEN LEAVE.
  763. Skonto = SkFrw + Saldo.
  764. IF (Skonto * PluMin) > (ipBuffer::SkMax_Frw * PluMin) THEN
  765. DO:
  766. IF SkFrw >= ipBuffer::SkMax_Frw THEN LEAVE.
  767. SkFrw = ipBuffer::SkMax_Frw.
  768. Sk = SkFrw * Kurs / Faktor.
  769. END.
  770. ELSE
  771. DO:
  772. SkFrw = SkFrw + Saldo.
  773. Sk = SkFrw * Kurs / Faktor.
  774. END.
  775. LEAVE.
  776. END.
  777. ipBuffer::Zahbetr_Frw = STRING(ZaFrw).
  778. ipBuffer::Kurs = STRING(Kurs).
  779. ipBuffer::Zahbetr = STRING(Za).
  780. ipBuffer::Skonto_Frw = STRING(SkFrw).
  781. ipBuffer::Skonto = STRING(Sk).
  782. END PROCEDURE.
  783. /* _UIB-CODE-BLOCK-END */
  784. &ANALYZE-RESUME
  785. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN fFrameWin
  786. PROCEDURE VERBUCHEN :
  787. /*------------------------------------------------------------------------------
  788. Purpose:
  789. Parameters: <none>
  790. Notes:
  791. ------------------------------------------------------------------------------*/
  792. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO.
  793. DEFINE VARIABLE nTotBetr AS DECIMAL NO-UNDO.
  794. DEFINE VARIABLE nTotZahl AS DECIMAL NO-UNDO.
  795. DEFINE VARIABLE nBetrag AS DECIMAL NO-UNDO.
  796. DEFINE VARIABLE nSkonto AS DECIMAL NO-UNDO.
  797. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO.
  798. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
  799. DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
  800. EMPTY TEMP-TABLE zDebop.
  801. EMPTY TEMP-TABLE tVESRZahl.
  802. DO WITH FRAME {&FRAME-NAME}:
  803. ASSIGN {&List-6}.
  804. cKonto = CB_Zahkonto:SCREEN-VALUE NO-ERROR.
  805. IF cKonto = ? OR
  806. cKonto = '' THEN
  807. DO:
  808. MESSAGE 'Konto wählen'
  809. VIEW-AS ALERT-BOX.
  810. APPLY 'ENTRY' TO CB_Zahkonto.
  811. RETURN NO-APPLY.
  812. END.
  813. END.
  814. nTotBetr = 0.
  815. nTotZahl = 0.
  816. FOR EACH VESRZahl:
  817. IF VESRZahl.Tr_Art >= 900 THEN
  818. DO:
  819. nTotBetr = nTotBetr + VESRZahl.Betrag.
  820. NEXT.
  821. END.
  822. CREATE tVESRZahl.
  823. BUFFER-COPY VESRZahl TO tVESRZahl.
  824. END.
  825. CREATE zDebop.
  826. hBuffer = TEMP-TABLE zDebop:DEFAULT-BUFFER-HANDLE.
  827. FOR EACH tVESRZahl:
  828. iFaknr = INTEGER(SUBSTRING(tVESRZahl.Referenz,15,06)).
  829. iKnr = INTEGER(SUBSTRING(tVESRZahl.Referenz,21,06)).
  830. nBetrag = tVESRZahl.Betrag.
  831. nSkonto = 0.
  832. FIND Debop NO-LOCK
  833. WHERE Debop.Firma = D1Firma
  834. AND Debop.Knr = iKnr
  835. AND Debop.Faknr = iFaknr NO-ERROR.
  836. IF NOT AVAILABLE Debop THEN NEXT.
  837. IF nBetrag > Debop.Saldo_Frw THEN NEXT.
  838. FIND FIRST zDebop.
  839. BUFFER-COPY Debop TO zDebop.
  840. CASE R_Datum:
  841. WHEN 1 THEN
  842. zDebop.Zahdat = tVESRZahl.Aufg_Dat.
  843. WHEN 2 THEN
  844. zDebop.Zahdat = tVESRZahl.Verb_Dat.
  845. WHEN 3 THEN
  846. zDebop.Zahdat = tVESRZahl.Guts_Dat.
  847. END CASE.
  848. RUN ZAHLBERECHNUNG ( INPUT-OUTPUT hBuffer ).
  849. IF nBetrag > zDebop.ZahBetr_Frw THEN NEXT.
  850. IF nBetrag > zDebop.Saldo_Frw THEN NEXT.
  851. ASSIGN
  852. zDebop.ZahBetr_Frw = nBetrag
  853. zDebop.ZaKonto = cKonto.
  854. RUN RECHNEN ( INPUT-OUTPUT hBuffer, 1 ).
  855. RUN ZAHLUNG_BUCHEN ( INPUT hBuffer, 63 ).
  856. nTotZahl = nTotZahl + zDebop.Zahbetr_Frw.
  857. DELETE tVESRZahl.
  858. END.
  859. MESSAGE
  860. 'Totalbetrag aus BESR = ' nTotBetr SKIP
  861. 'Totalbetrag aus Verbuchung = ' nTotZahl
  862. VIEW-AS ALERT-BOX.
  863. FOR EACH VESRZahl:
  864. FIND tVESRZahl OF VESRZahl NO-ERROR.
  865. IF AVAILABLE tVESRZahl THEN NEXT.
  866. DELETE VESRZahl.
  867. END.
  868. DYNAMIC-FUNCTION('openQuery':U IN h_d-vesrzahl) NO-ERROR.
  869. END PROCEDURE.
  870. /* _UIB-CODE-BLOCK-END */
  871. &ANALYZE-RESUME