SESAMSQL_Korr_1.p 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 - ADM2
  2. &ANALYZE-RESUME
  3. {adecomm/appserv.i}
  4. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
  5. /*------------------------------------------------------------------------
  6. File :
  7. Purpose :
  8. Syntax :
  9. Description :
  10. Author(s) :
  11. Created :
  12. Notes :
  13. ----------------------------------------------------------------------*/
  14. /* This .W file was created with the Progress AppBuilder. */
  15. /*----------------------------------------------------------------------*/
  16. /* *************************** Definitions ************************** */
  17. DEF VAR ObjRecordSet AS COM-HANDLE NO-UNDO.
  18. DEF VAR ObjConnection AS COM-HANDLE NO-UNDO.
  19. DEF VAR ObjCommand AS COM-HANDLE NO-UNDO.
  20. DEF VAR ODBC-DSN AS CHAR NO-UNDO.
  21. DEF VAR ODBC-SERVER AS CHAR NO-UNDO.
  22. DEF VAR ODBC-USERID AS CHAR NO-UNDO.
  23. DEF VAR ODBC-PASSWD AS CHAR NO-UNDO.
  24. DEF VAR ODBC-QUERY AS CHAR NO-UNDO.
  25. DEF VAR ODBC-STATUS AS CHAR NO-UNDO.
  26. DEF VAR ODBC-RECCOUNT AS INT NO-UNDO.
  27. DEF VAR ODBC-NULL AS CHAR NO-UNDO.
  28. DEF VAR ODBC-CURSOR AS INT NO-UNDO.
  29. DEF VAR hBeleg AS HANDLE NO-UNDO.
  30. DEF VAR hBelegDetail AS HANDLE NO-UNDO.
  31. DEF VAR hOpListe AS HANDLE NO-UNDO.
  32. DEF VAR fEnde AS LOG NO-UNDO.
  33. DEF VAR TempName AS CHAR NO-UNDO.
  34. DEF VAR cJournal AS CHAR NO-UNDO.
  35. DEF VAR WebString AS CHAR NO-UNDO.
  36. DEF VAR AllesOK AS LOG NO-UNDO.
  37. DEF VAR Sprcd AS INT NO-UNDO.
  38. DEF VAR LVAdx AS CHAR NO-UNDO EXTENT 15.
  39. DEF VAR LVAdy AS CHAR NO-UNDO EXTENT 15.
  40. DEF VAR cOrt AS CHAR NO-UNDO.
  41. DEF VAR Firma AS CHAR NO-UNDO INIT '9999'.
  42. DEF VAR GVFirma AS CHAR NO-UNDO INIT '9999'.
  43. DEF VAR ja AS LOG NO-UNDO.
  44. DEF VAR CrLf AS CHAR NO-UNDO.
  45. DEF STREAM Logfile.
  46. DEF TEMP-TABLE tBeleg
  47. FIELD DocKey AS INT
  48. FIELD DocType AS INT
  49. FIELD OpID AS CHAR
  50. FIELD KndNr AS INT
  51. FIELD Konto AS INT
  52. FIELD opText AS CHAR
  53. FIELD opDate AS DATETIME
  54. FIELD ZabInd AS INT
  55. FIELD SortId AS CHAR
  56. FIELD Firma AS CHAR
  57. FIELD Zusatz1 AS CHAR
  58. FIELD Strasse AS CHAR
  59. FIELD Plz AS CHAR
  60. FIELD Ort AS CHAR
  61. FIELD Telefon1 AS CHAR
  62. FIELD Telefon4 AS CHAR
  63. FIELD EsrNr AS CHAR
  64. FIELD Sprache AS CHAR
  65. FIELD Transfer AS DATETIME
  66. FIELD FibuDatum AS DATETIME
  67. FIELD OPfaellig AS DATETIME
  68. FIELD OpCode AS CHAR
  69. FIELD BelegNr AS INT
  70. FIELD Zusatz2 AS CHAR
  71. FIELD Sammelkonto AS CHAR
  72. FIELD Land AS CHAR
  73. INDEX Faknr IS PRIMARY
  74. OpID
  75. INDEX DocKey
  76. DocKey.
  77. DEF TEMP-TABLE tBelegDetail
  78. FIELD DocLKey AS CHAR
  79. FIELD DocKey AS INT
  80. FIELD DocLine AS INT
  81. FIELD Konto AS CHAR
  82. FIELD cText AS CHAR
  83. FIELD MwstTyp AS CHAR
  84. FIELD Betrag AS DEC
  85. FIELD BetragMwst AS DEC
  86. FIELD BetragFW AS DEC
  87. FIELD BuchTyp AS CHAR
  88. FIELD Kostenstelle AS CHAR
  89. FIELD cCode AS CHAR
  90. INDEX DocKey IS PRIMARY
  91. DocKey
  92. Konto.
  93. DEF TEMP-TABLE tOpListe
  94. FIELD OpId AS CHAR
  95. FIELD PkNr AS INT
  96. FIELD Betrag AS DEC
  97. FIELD RechBetrag AS DEC
  98. FIELD Datum AS DATETIME
  99. INDEX OpID IS PRIMARY
  100. OpID.
  101. DEF TEMP-TABLE tDebop LIKE Debop
  102. FIELD Ansatz_8 AS DEC
  103. FIELD Ansatz_25 AS DEC
  104. FIELD Ansatz_0 AS DEC
  105. FIELD SageAns_8 AS DEC
  106. FIELD SageAns_25 AS DEC
  107. FIELD SageAns_0 AS DEC
  108. FIELD DetailBetr AS DEC
  109. FIELD SageSaldo AS DEC
  110. FIELD cTransfer AS CHAR
  111. FIELD lOpListe AS LOG
  112. .
  113. DEF TEMP-TABLE txBelegDetail LIKE tBelegDetail
  114. .
  115. DEF TEMP-TABLE tMwstBetr
  116. FIELD Konto AS CHAR
  117. FIELD MwstCd AS INT
  118. FIELD MwstPfl AS DEC DECIMALS 2
  119. FIELD MwstBet AS DEC DECIMALS 2
  120. FIELD MwstAns AS DEC DECIMALS 2
  121. .
  122. DEF TEMP-TABLE tSollIst
  123. FIELD Knr AS INT
  124. FIELD Faknr AS INT
  125. FIELD Fakdat AS DATE
  126. FIELD Fakbetr AS Dec
  127. FIELD Konto AS CHAR
  128. FIELD MwstAns AS CHAR
  129. FIELD Soll AS DEC
  130. FIELD Ist AS DEC
  131. .
  132. /* _UIB-CODE-BLOCK-END */
  133. &ANALYZE-RESUME
  134. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  135. /* ******************** Preprocessor Definitions ******************** */
  136. &Scoped-define PROCEDURE-TYPE Procedure
  137. &Scoped-define DB-AWARE no
  138. /* _UIB-PREPROCESSOR-BLOCK-END */
  139. &ANALYZE-RESUME
  140. /* ************************ Function Prototypes ********************** */
  141. &IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
  142. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CloseConnection Procedure
  143. FUNCTION CloseConnection RETURNS LOGICAL
  144. ( /* parameter-definitions */ ) FORWARD.
  145. /* _UIB-CODE-BLOCK-END */
  146. &ANALYZE-RESUME
  147. &ENDIF
  148. &IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
  149. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD closeSQLTransaction Procedure
  150. FUNCTION closeSQLTransaction RETURNS LOGICAL
  151. ( /* parameter-definitions */ ) FORWARD.
  152. /* _UIB-CODE-BLOCK-END */
  153. &ANALYZE-RESUME
  154. &ENDIF
  155. &IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
  156. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateConnection Procedure
  157. FUNCTION CreateConnection RETURNS LOGICAL
  158. ( /* parameter-definitions */ ) FORWARD.
  159. /* _UIB-CODE-BLOCK-END */
  160. &ANALYZE-RESUME
  161. &ENDIF
  162. &IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
  163. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateSetDaten Procedure
  164. FUNCTION CreateSetDaten RETURNS CHARACTER
  165. ( iphBuffer AS HANDLE, ipArt AS INT ) FORWARD.
  166. /* _UIB-CODE-BLOCK-END */
  167. &ANALYZE-RESUME
  168. &ENDIF
  169. &IF DEFINED(EXCLUDE-deleteBelege) = 0 &THEN
  170. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD deleteBelege Procedure
  171. FUNCTION deleteBelege RETURNS INTEGER
  172. ( /* parameter-definitions */ ) FORWARD.
  173. /* _UIB-CODE-BLOCK-END */
  174. &ANALYZE-RESUME
  175. &ENDIF
  176. &IF DEFINED(EXCLUDE-getDocKey) = 0 &THEN
  177. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getDocKey Procedure
  178. FUNCTION getDocKey RETURNS INTEGER
  179. ( ipDocKey AS INT ) FORWARD.
  180. /* _UIB-CODE-BLOCK-END */
  181. &ANALYZE-RESUME
  182. &ENDIF
  183. &IF DEFINED(EXCLUDE-getODBCDaten) = 0 &THEN
  184. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getODBCDaten Procedure
  185. FUNCTION getODBCDaten RETURNS LOGICAL
  186. ( iphBuffer AS HANDLE ) FORWARD.
  187. /* _UIB-CODE-BLOCK-END */
  188. &ANALYZE-RESUME
  189. &ENDIF
  190. &IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
  191. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBeleg Procedure
  192. FUNCTION lesenBeleg RETURNS INTEGER
  193. ( /* parameter-definitions */ ) FORWARD.
  194. /* _UIB-CODE-BLOCK-END */
  195. &ANALYZE-RESUME
  196. &ENDIF
  197. &IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
  198. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBelegDetail Procedure
  199. FUNCTION lesenBelegDetail RETURNS INTEGER
  200. ( /* parameter-definitions */ ) FORWARD.
  201. /* _UIB-CODE-BLOCK-END */
  202. &ANALYZE-RESUME
  203. &ENDIF
  204. &IF DEFINED(EXCLUDE-lesenOpListe) = 0 &THEN
  205. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenOpListe Procedure
  206. FUNCTION lesenOpListe RETURNS INTEGER
  207. ( /* parameter-definitions */ ) FORWARD.
  208. /* _UIB-CODE-BLOCK-END */
  209. &ANALYZE-RESUME
  210. &ENDIF
  211. &IF DEFINED(EXCLUDE-readDebop) = 0 &THEN
  212. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD readDebop Procedure
  213. FUNCTION readDebop RETURNS INTEGER
  214. ( /* parameter-definitions */ ) FORWARD.
  215. /* _UIB-CODE-BLOCK-END */
  216. &ANALYZE-RESUME
  217. &ENDIF
  218. &IF DEFINED(EXCLUDE-reorgBelege) = 0 &THEN
  219. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD reorgBelege Procedure
  220. FUNCTION reorgBelege RETURNS LOGICAL
  221. ( /* parameter-definitions */ ) FORWARD.
  222. /* _UIB-CODE-BLOCK-END */
  223. &ANALYZE-RESUME
  224. &ENDIF
  225. &IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
  226. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startSQLTransaction Procedure
  227. FUNCTION startSQLTransaction RETURNS LOGICAL
  228. ( /* parameter-definitions */ ) FORWARD.
  229. /* _UIB-CODE-BLOCK-END */
  230. &ANALYZE-RESUME
  231. &ENDIF
  232. &IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
  233. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBeleg Procedure
  234. FUNCTION updateBeleg RETURNS LOGICAL
  235. ( ipTHandle AS HANDLE, ipArt AS INT ) FORWARD.
  236. /* _UIB-CODE-BLOCK-END */
  237. &ANALYZE-RESUME
  238. &ENDIF
  239. &IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
  240. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBelegDetail Procedure
  241. FUNCTION updateBelegDetail RETURNS LOGICAL
  242. ( ipTHandle AS HANDLE, ipArt AS INT ) FORWARD.
  243. /* _UIB-CODE-BLOCK-END */
  244. &ANALYZE-RESUME
  245. &ENDIF
  246. &IF DEFINED(EXCLUDE-writeLogFiles) = 0 &THEN
  247. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFiles Procedure
  248. FUNCTION writeLogFiles RETURNS LOGICAL
  249. ( ipMessage AS CHAR ) FORWARD.
  250. /* _UIB-CODE-BLOCK-END */
  251. &ANALYZE-RESUME
  252. &ENDIF
  253. /* *********************** Procedure Settings ************************ */
  254. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  255. /* Settings for THIS-PROCEDURE
  256. Type: Procedure
  257. Allow:
  258. Frames: 0
  259. Add Fields to: Neither
  260. Other Settings: CODE-ONLY COMPILE APPSERVER
  261. */
  262. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  263. /* ************************* Create Window ************************** */
  264. &ANALYZE-SUSPEND _CREATE-WINDOW
  265. /* DESIGN Window definition (used by the UIB)
  266. CREATE WINDOW Procedure ASSIGN
  267. HEIGHT = 27.48
  268. WIDTH = 77.8.
  269. /* END WINDOW DEFINITION */
  270. */
  271. &ANALYZE-RESUME
  272. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  273. /* *************************** Main Block *************************** */
  274. TempName = SUBSTITUTE('C:\Temp\SESAMSQL_&1_&2.log', STRING(TODAY,'99-99-9999'), REPLACE(STRING(TIME,'HH:MM:SS'), ':', '-')).
  275. cJournal = SUBSTITUTE('C:\Temp\SESAMSQL_&1_&2.csv', STRING(TODAY,'99-99-9999'), REPLACE(STRING(TIME,'HH:MM:SS'), ':', '-')).
  276. ja = DYNAMIC-FUNCTION('CreateConnection':U) NO-ERROR.
  277. IF NOT ja THEN QUIT.
  278. DYNAMIC-FUNCTION('writeLogFiles':U, 'Connected').
  279. DYNAMIC-FUNCTION('deleteBelege':U).
  280. /*
  281. DYNAMIC-FUNCTION('readDebop':U).
  282. DYNAMIC-FUNCTION('lesenBeleg':U).
  283. DYNAMIC-FUNCTION('lesenBelegDetail':U).
  284. DYNAMIC-FUNCTION('lesenOpListe':U).
  285. OUTPUT TO 'C:\Temp\OffenePosten_Ge_MIS.csv' NO-MAP NO-CONVERT.
  286. FOR EACH tDebop:
  287. EXPORT DELIMITER ';'
  288. tDebop.Knr
  289. tDebop.Faknr
  290. tDebop.FakDat FORMAT "99.99.9999"
  291. tDebop.Fakbetr
  292. tDebop.Saldo
  293. tDebop.DetailBetr
  294. tDebop.SageSaldo
  295. tDebop.cTransfer
  296. tDebop.lOpListe
  297. tDebop.Ansatz_8
  298. tDebop.Ansatz_25
  299. tDebop.Ansatz_0
  300. tDebop.SageAns_8
  301. tDebop.SageAns_25
  302. tDebop.SageAns_0
  303. .
  304. END.
  305. OUTPUT CLOSE.
  306. DEF VAR dDatum AS DATE NO-UNDO.
  307. DEF VAR nSoll AS DEC NO-UNDO.
  308. DEF VAR nIst AS DEC NO-UNDO.
  309. DEF VAR nSaldo AS DEC NO-UNDO.
  310. EMPTY TEMP-TABLE tSollIst.
  311. FOR EACH tDebop:
  312. FIND FIRST tBeleg NO-LOCK
  313. WHERE tBeleg.OpId = TRIM(STRING(tDebop.Faknr,'>>>>>>>')).
  314. dDatum = DATE(tBeleg.Transfer) NO-ERROR.
  315. IF dDatum < 09/28/2017 THEN NEXT.
  316. FOR EACH tBelegDetail NO-LOCK
  317. WHERE tBelegDetail.DocKey = tBeleg.DocKey:
  318. CREATE tSollIst.
  319. ASSIGN tSollIst.Knr = tDebop.Knr
  320. tSollIst.Faknr = tDebop.Faknr
  321. tSollIst.Fakdat = tDebop.Fakdat
  322. tSollIst.Fakbetr = tDebop.Fakbetr
  323. tSollIst.Konto = tBelegDetail.Konto
  324. tSollIst.MwstAns = tBelegDetail.MwstTyp
  325. tSollIst.Ist = tBelegDetail.Betrag.
  326. END.
  327. FOR EACH txBelegDetail NO-LOCK
  328. WHERE txBelegDetail.DocKey = tBeleg.DocKey:
  329. FIND FIRST tSollIst
  330. WHERE tSollIst.Faknr = tDebop.Faknr
  331. AND tSollIst.Konto = txBelegDetail.Konto
  332. AND tSollIst.MwstAns = txBelegDetail.MwstTyp NO-ERROR.
  333. IF NOT AVAILABLE tSollIst THEN DO:
  334. CREATE tSollIst.
  335. ASSIGN tSollIst.Knr = tDebop.Knr
  336. tSollIst.Faknr = tDebop.Faknr
  337. tSollIst.Fakdat = tDebop.Fakdat
  338. tSollIst.Fakbetr = tDebop.Fakbetr
  339. tSollIst.Konto = txBelegDetail.Konto
  340. tSollIst.MwstAns = txBelegDetail.MwstTyp.
  341. END.
  342. tSollIst.Soll = txBelegDetail.Betrag.
  343. END.
  344. END.
  345. OUTPUT TO 'C:\Temp\Schnittstellen_Detail.csv'.
  346. FOR EACH tSollIst
  347. BREAK BY tSollIst.Knr
  348. BY tSollIst.Faknr
  349. BY tSollIst.Konto
  350. BY tSollIst.MwstAns:
  351. IF FIRST-OF ( tSollIst.Faknr ) THEN DO:
  352. FIND FIRST tDebop NO-LOCK
  353. WHERE tDebop.Firma = '1000'
  354. AND tDebop.Knr = tSollIst.Knr
  355. AND tDebop.Faknr = tSollIst.Faknr.
  356. ASSIGN nSoll = 0
  357. nIst = 0
  358. nSaldo = tDebop.Saldo.
  359. END.
  360. ASSIGN nSoll = nSoll + tSollIst.Soll
  361. nIst = nIst + tSollIst.Ist.
  362. IF FIRST-OF (tSollIst.Faknr) THEN EXPORT DELIMITER ';' tSollIst.Knr
  363. tSollIst.Faknr
  364. tSollIst.Fakdat
  365. tSollIst.Fakbetr
  366. tSollIst.Konto
  367. tSollIst.MwstAns
  368. tSollIst.Soll
  369. tSollIst.Ist
  370. (tSollIst.Soll - tSollIst.Ist).
  371. ELSE EXPORT DELIMITER ';' ''
  372. ''
  373. ''
  374. ''
  375. tSollIst.Konto
  376. tSollIst.MwstAns
  377. tSollIst.Soll
  378. tSollIst.Ist
  379. (tSollIst.Soll - tSollIst.Ist).
  380. IF NOT LAST-OF ( tSollIst.Faknr ) THEN NEXT.
  381. EXPORT DELIMITER ';' ''
  382. ''
  383. ''
  384. ''
  385. ''
  386. ''
  387. nSoll
  388. nIst
  389. ''
  390. (nSoll - nIst)
  391. (tDebop.Fakbetr - nSaldo).
  392. PUT CONTROL CHR(10).
  393. END.
  394. OUTPUT CLOSE.
  395. /*
  396. RUN FUELLEN_TBELEG.
  397. RUN LESEN_OFFENESALDI.
  398. */
  399. */
  400. DYNAMIC-FUNCTION('CloseConnection':U) NO-ERROR.
  401. /* QUIT. */
  402. /* _UIB-CODE-BLOCK-END */
  403. &ANALYZE-RESUME
  404. /* ********************** Internal Procedures *********************** */
  405. &IF DEFINED(EXCLUDE-FUELLEN_TBELEG) = 0 &THEN
  406. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_TBELEG Procedure
  407. PROCEDURE FUELLEN_TBELEG :
  408. /*------------------------------------------------------------------------------
  409. Purpose:
  410. Parameters: <none>
  411. Notes:
  412. ------------------------------------------------------------------------------*/
  413. DEF VAR xx AS INT NO-UNDO.
  414. DEF VAR dDatum AS DATE NO-UNDO.
  415. xx = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
  416. message xx ' Records gelesen ' VIEW-AS ALERT-BOX.
  417. OUTPUT TO 'C:\TEMP\Dump_Beleg.csv' NO-MAP NO-CONVERT.
  418. FOR EACH tBeleg NO-LOCK:
  419. EXPORT DELIMITER ';' tBeleg.
  420. END.
  421. OUTPUT CLOSE.
  422. /* FOR EACH tBeleg: */
  423. /* dDatum = DATE(tBeleg.Transfer) NO-ERROR. */
  424. /* IF ERROR-STATUS:ERROR OR */
  425. /* dDatum = ? THEN DELETE tBeleg. */
  426. /* END. */
  427. /* FOR EACH tBeleg */
  428. /* BREAK BY tBeleg.OpID: */
  429. /* IF FIRST-OF ( tBeleg.OpID ) THEN NEXT. */
  430. /* END. */
  431. /* */
  432. /* FOR EACH tBeleg: */
  433. /* dDatum = DATE(tBeleg.Transfer). */
  434. /* IF dDatum >= 09/29/2017 THEN NEXT. */
  435. /* DELETE tBeleg. */
  436. /* END. */
  437. OUTPUT TO VALUE(cJournal) NO-MAP NO-CONVERT APPEND.
  438. PUT CONTROL STRING(TODAY,'99.99.9999') ' ' STRING(TIME,'HH:MM:SS') ' Anzahl eingelesene Beleg-Details aus SESAM -> ' xx CHR(10).
  439. OUTPUT CLOSE.
  440. END PROCEDURE.
  441. /* _UIB-CODE-BLOCK-END */
  442. &ANALYZE-RESUME
  443. &ENDIF
  444. &IF DEFINED(EXCLUDE-LESEN_OFFENESALDI) = 0 &THEN
  445. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LESEN_OFFENESALDI Procedure
  446. PROCEDURE LESEN_OFFENESALDI :
  447. /*------------------------------------------------------------------------------
  448. Purpose:
  449. Parameters: <none>
  450. Notes:
  451. ------------------------------------------------------------------------------*/
  452. DEF VAR Saldo AS DEC NO-UNDO.
  453. DEF VAR Diff AS DEC NO-UNDO.
  454. DEF VAR dDatum AS DATE NO-UNDO.
  455. EMPTY TEMP-TABLE tDebop.
  456. FOR EACH Debop NO-LOCK
  457. WHERE Debop.Firma = '1000':
  458. FIND FIRST tBeleg NO-LOCK
  459. WHERE tBeleg.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>')) NO-ERROR.
  460. IF NOT AVAILABLE tBeleg THEN NEXT.
  461. CREATE tDebop.
  462. BUFFER-COPY Debop TO tDebop.
  463. END.
  464. DYNAMIC-FUNCTION('lesenOpSaldo':U) NO-ERROR.
  465. FOR EACH Debst NO-LOCK:
  466. FOR EACH tDebop USE-INDEX Debop-k1
  467. WHERE tDebop.Firma = Debst.Firma
  468. AND tDebop.Knr = Debst.Knr:
  469. FIND FIRST tOpListe NO-LOCK USE-INDEX OpId
  470. WHERE tOpListe.OpId = TRIM(STRING(tDebop.Faknr,'>>>>>>>>'))
  471. AND tOpListe.PkNr = Debst.Knr NO-ERROR.
  472. IF AVAILABLE tOpListe THEN Diff = tDebop.Saldo - tOpListe.Betrag.
  473. ELSE Diff = (IF tDebop.Fakdat < (TODAY - 5) THEN tDebop.Saldo ELSE 0).
  474. IF Diff <> 0 THEN DO:
  475. tDebop.ZahBetr = tDebop.ZahBetr + Diff.
  476. tDebop.Saldo = tDebop.Fakbetr - tDebop.Zahbetr - tDebop.Skonto.
  477. tDebop.Zahdat = TODAY.
  478. END.
  479. END.
  480. END.
  481. OUTPUT TO 'C:\TEMP\tDebop_OPSaldo.csv' NO-MAP NO-CONVERT.
  482. FOR EACH tDebop NO-LOCK:
  483. FIND Adresse NO-LOCK
  484. WHERE Adresse.Firma = tDebop.Firma
  485. AND Adresse.Knr = tDebop.Knr.
  486. EXPORT DELIMITER ';'
  487. tDebop.Knr
  488. Adresse.Anzeig_Br
  489. tDebop.Faknr
  490. tDebop.FakDat
  491. tDebop.Fakbetr
  492. tDebop.ZahBetr
  493. tDebop.SageSaldo.
  494. END.
  495. OUTPUT CLOSE.
  496. FOR EACH tDebop:
  497. FIND FIRST tBeleg NO-LOCK
  498. WHERE tBeleg.OpID = TRIM(STRING(tDebop.Faknr,'>>>>>>>')) NO-ERROR.
  499. IF AVAILABLE tBeleg THEN NEXT.
  500. DELETE tDebop.
  501. END.
  502. OUTPUT TO 'C:\TEMP\tDebop_Schnittstelle.csv' NO-MAP NO-CONVERT.
  503. FOR EACH tDebop NO-LOCK:
  504. FIND Adresse NO-LOCK
  505. WHERE Adresse.Firma = tDebop.Firma
  506. AND Adresse.Knr = tDebop.Knr.
  507. EXPORT DELIMITER ';'
  508. tDebop.Knr
  509. Adresse.Anzeig_Br
  510. tDebop.Faknr
  511. tDebop.FakDat
  512. tDebop.Fakbetr
  513. tDebop.ZahBetr
  514. tDebop.Saldo.
  515. END.
  516. OUTPUT CLOSE.
  517. END PROCEDURE.
  518. /* _UIB-CODE-BLOCK-END */
  519. &ANALYZE-RESUME
  520. &ENDIF
  521. &IF DEFINED(EXCLUDE-RUNDEN) = 0 &THEN
  522. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUNDEN Procedure
  523. PROCEDURE RUNDEN :
  524. /*------------------------------------------------------------------------------
  525. Purpose:
  526. Parameters: <none>
  527. Notes:
  528. ------------------------------------------------------------------------------*/
  529. DEF INPUT PARAMETER Rundcode AS INT NO-UNDO.
  530. DEF INPUT-OUTPUT PARAMETER Rundbetr AS DEC DECIMALS 4 NO-UNDO.
  531. DEF VAR VBetr AS DEC DECIMALS 4 NO-UNDO.
  532. DEF VAR VOp AS DEC INIT 0.2 NO-UNDO.
  533. DEF VAR XPChar AS CHAR NO-UNDO.
  534. DO TRANSACTION:
  535. VBetr = Rundbetr.
  536. IF Rundcode = 1 THEN DO:
  537. VBetr = ROUND((VBetr / 100 * VOp), 4) / VOp * 100.
  538. END.
  539. IF Rundcode = 2 THEN DO:
  540. VBetr = ROUND((VBetr / 100), 3) * 100.
  541. END.
  542. IF Rundcode = 3 THEN DO:
  543. VBetr = VBetr + 0.0499.
  544. VBetr = ROUND((VBetr / 100), 3) * 100.
  545. END.
  546. IF Rundcode = 4 THEN DO:
  547. VBetr = VBetr - 0.0500.
  548. VBetr = ROUND((VBetr / 100), 3) * 100.
  549. END.
  550. IF Rundcode = 5 THEN DO:
  551. VBetr = ROUND((VBetr / 100), 2) * 100.
  552. END.
  553. IF Rundcode = 6 THEN DO:
  554. VBetr = VBetr + 0.4999.
  555. VBetr = ROUND((VBetr / 100), 2) * 100.
  556. END.
  557. IF Rundcode = 7 THEN DO:
  558. VBetr = VBetr - 0.5000.
  559. VBetr = ROUND((VBetr / 100), 2) * 100.
  560. END.
  561. IF Rundcode = 8 THEN DO:
  562. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  563. END.
  564. IF Rundcode = 9 THEN DO:
  565. VBetr = VBetr + 4.9999.
  566. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  567. END.
  568. IF Rundcode = 10 THEN DO:
  569. VBetr = VBetr - 5.0000.
  570. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  571. END.
  572. IF Rundcode = 99 THEN DO:
  573. XPChar = STRING(VBetr,"-99999999.999").
  574. VBetr = DECIMAL(SUBSTRING(XPChar,01,12)).
  575. IF SUBSTRING(XPChar,13,01) > "4" THEN VBetr = VBetr + 0.01.
  576. END.
  577. Rundbetr = VBetr.
  578. END.
  579. END PROCEDURE.
  580. /* _UIB-CODE-BLOCK-END */
  581. &ANALYZE-RESUME
  582. &ENDIF
  583. /* ************************ Function Implementations ***************** */
  584. &IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
  585. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CloseConnection Procedure
  586. FUNCTION CloseConnection RETURNS LOGICAL
  587. ( /* parameter-definitions */ ) :
  588. /*------------------------------------------------------------------------------
  589. Purpose:
  590. Notes:
  591. ------------------------------------------------------------------------------*/
  592. ObjConnection:Close NO-ERROR.
  593. RELEASE OBJECT ObjConnection NO-ERROR.
  594. RELEASE OBJECT ObjCommand NO-ERROR.
  595. RELEASE OBJECT ObjRecordSet NO-ERROR.
  596. RETURN TRUE.
  597. END FUNCTION.
  598. /* _UIB-CODE-BLOCK-END */
  599. &ANALYZE-RESUME
  600. &ENDIF
  601. &IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
  602. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION closeSQLTransaction Procedure
  603. FUNCTION closeSQLTransaction RETURNS LOGICAL
  604. ( /* parameter-definitions */ ) :
  605. /*------------------------------------------------------------------------------
  606. Purpose:
  607. Notes:
  608. ------------------------------------------------------------------------------*/
  609. ODBC-QUERY = 'COMMIT'.
  610. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  611. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
  612. END FUNCTION.
  613. /* _UIB-CODE-BLOCK-END */
  614. &ANALYZE-RESUME
  615. &ENDIF
  616. &IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
  617. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateConnection Procedure
  618. FUNCTION CreateConnection RETURNS LOGICAL
  619. ( /* parameter-definitions */ ) :
  620. /*------------------------------------------------------------------------------
  621. Purpose:
  622. Notes:
  623. ------------------------------------------------------------------------------*/
  624. DEF VAR cConnCommand AS CHAR NO-UNDO.
  625. DEF VAR cDSN AS CHAR NO-UNDO.
  626. DEF VAR cServer AS CHAR NO-UNDO.
  627. DEF VAR ix AS INT NO-UNDO.
  628. DEF VAR ii AS INT NO-UNDO.
  629. DEF VAR cMessage AS CHAR NO-UNDO.
  630. Create "ADODB.Connection" ObjConnection NO-ERROR.
  631. Create "ADODB.RecordSet" ObjRecordSet NO-ERROR.
  632. Create "ADODB.Command" ObjCommand NO-ERROR.
  633. GET-KEY-VALUE SECTION 'Grundeinstellungen'
  634. KEY 'SQLServer'
  635. VALUE cServer.
  636. IF cServer = ? THEN RETURN FALSE.
  637. IF cServer = '' THEN RETURN FALSE.
  638. GET-KEY-VALUE SECTION 'Grundeinstellungen'
  639. KEY 'SQLDSN'
  640. VALUE cDSN.
  641. IF cDSN = ? THEN RETURN FALSE.
  642. IF cDSN = '' THEN RETURN FALSE.
  643. ASSIGN ODBC-STATUS = ''
  644. ODBC-NULL = ''
  645. ODBC-DSN = cDSN
  646. ODBC-SERVER = cServer
  647. ODBC-USERID = 'gebtools'
  648. ODBC-PASSWD = 'gebtools'
  649. ODBC-QUERY = ''.
  650. cConnCommand = 'data source='
  651. + ODBC-DSN
  652. + ';server='
  653. + ODBC-SERVER
  654. .
  655. ObjConnection:Open ( cConnCommand, ODBC-USERID, ODBC-PASSWD, 0 ) NO-ERROR.
  656. If ( ERROR-STATUS:NUM-MESSAGES > 0 ) THEN DO:
  657. ii = ERROR-STATUS:NUM-MESSAGES.
  658. ODBC-STATUS = "Error: keine Verbindung zu Datenserver "
  659. + cConnCommand.
  660. cMessage = ODBC-STATUS.
  661. DO ix = 1 TO ii:
  662. cMessage = cMessage
  663. + CHR(10)
  664. + ERROR-STATUS:GET-MESSAGE(ix).
  665. END.
  666. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  667. RETURN FALSE.
  668. END.
  669. ASSIGN ObjCommand:ActiveConnection = ObjConnection
  670. ObjCommand:CommandType = 1 /* adCmdText */
  671. ObjConnection:CursorLocation = 3 /* adUseClient */
  672. ObjRecordSet:CursorType = 3 /* adOpenStatic */.
  673. cMessage = 'Start SESAM SQL mit Connection ' + cConnCommand.
  674. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  675. RETURN TRUE.
  676. END FUNCTION.
  677. /* _UIB-CODE-BLOCK-END */
  678. &ANALYZE-RESUME
  679. &ENDIF
  680. &IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
  681. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateSetDaten Procedure
  682. FUNCTION CreateSetDaten RETURNS CHARACTER
  683. ( iphBuffer AS HANDLE, ipArt AS INT ) :
  684. /*------------------------------------------------------------------------------
  685. Purpose:
  686. Notes:
  687. ------------------------------------------------------------------------------*/
  688. DEF VAR cSet AS CHAR NO-UNDO.
  689. DEF VAR ii AS INT NO-UNDO.
  690. DEF VAR hFeld AS HANDLE NO-UNDO.
  691. DEF VAR cFeld AS CHAR NO-UNDO.
  692. DEF VAR cInhalt AS CHAR NO-UNDO.
  693. DEF VAR cFelder AS CHAR NO-UNDO.
  694. DEF VAR cInhalte AS CHAR NO-UNDO.
  695. DEF VAR xFeld AS CHAR NO-UNDO.
  696. DEF VAR xInhalt AS CHAR NO-UNDO.
  697. cSet = ''.
  698. cFelder = ''.
  699. cInhalte = ''.
  700. DO ii = 1 TO iphBuffer:NUM-FIELDS:
  701. hFeld = iphBuffer:BUFFER-FIELD(ii).
  702. IF hFeld:BUFFER-VALUE(0) = ? THEN NEXT.
  703. cFeld = hFeld:NAME.
  704. IF cFeld = 'cCode' THEN cFeld = 'Code'. /* ProgressSchlüsselFeld */
  705. IF cFeld = 'cText' THEN cFeld = 'Text'. /* ProgressSchlüsselFeld */
  706. IF cFeld = 'iStatus' THEN NEXT. /* Kein SQL-Feld */
  707. DO WHILE TRUE:
  708. IF hFeld:BUFFER-VALUE(0) <> ? AND
  709. hFeld:BUFFER-VALUE(0) <> '?' THEN LEAVE.
  710. CASE hFeld:DATA-TYPE:
  711. WHEN 'INTEGER' THEN hFeld:BUFFER-VALUE(0) = '0'.
  712. WHEN 'DECIMAL' THEN hFeld:BUFFER-VALUE(0) = '0.0'.
  713. WHEN 'DATE' THEN hFeld:BUFFER-VALUE(0) = ''.
  714. WHEN 'LOGICAL' THEN hFeld:BUFFER-VALUE(0) = STRING(FALSE).
  715. OTHERWISE hFeld:BUFFER-VALUE(0) = ''.
  716. END CASE.
  717. LEAVE.
  718. END.
  719. xFeld = "[" + TRIM(cFeld) + "]".
  720. xInhalt = TRIM(hFeld:BUFFER-VALUE(0)).
  721. xInhalt = REPLACE(xInhalt, "'", '"').
  722. xInhalt = "'" + xInhalt + "'".
  723. cInhalte = cInhalte + "," + xInhalt.
  724. cFelder = cFelder + "," + xFeld.
  725. END.
  726. cInhalte = SUBSTRING(cInhalte,02).
  727. cFelder = SUBSTRING(cFelder ,02).
  728. CASE ipArt:
  729. WHEN 1 THEN DO:
  730. cSet = '('
  731. + cFelder
  732. + ') VALUES ('
  733. + cInhalte
  734. + ')'.
  735. END.
  736. WHEN 0 THEN DO:
  737. cSet = 'SET '.
  738. DO ii = 1 TO NUM-ENTRIES(cFelder, ','):
  739. cSet = cSet + ENTRY(ii, cFelder, ',')
  740. + ' = '
  741. + ENTRY(ii, cInhalte, ',').
  742. IF ii < NUM-ENTRIES(cFelder, ',') THEN cSet = cSet + ', '.
  743. END.
  744. END.
  745. END CASE.
  746. RETURN cSet.
  747. END FUNCTION.
  748. /* _UIB-CODE-BLOCK-END */
  749. &ANALYZE-RESUME
  750. &ENDIF
  751. &IF DEFINED(EXCLUDE-deleteBelege) = 0 &THEN
  752. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION deleteBelege Procedure
  753. FUNCTION deleteBelege RETURNS INTEGER
  754. ( /* parameter-definitions */ ) :
  755. /*------------------------------------------------------------------------------
  756. Purpose:
  757. Notes:
  758. ------------------------------------------------------------------------------*/
  759. DEF VAR dDatum AS DATE NO-UNDO.
  760. DEF VAR ii AS INT NO-UNDO.
  761. DEF VAR iDocKey AS INT NO-UNDO.
  762. EMPTY TEMP-TABLE tBeleg.
  763. hBeleg = TEMP-TABLE tBeleg:DEFAULT-BUFFER-HANDLE.
  764. ODBC-QUERY = "SELECT * FROM Huber.dbo.Beleg WHERE OpID = '557768'".
  765. DYNAMIC-FUNCTION('writeLogFiles':U, ODBC-QUERY).
  766. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  767. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  768. ODBC-RECCOUNT = ObjRecordSet:RecordCount .
  769. MESSAGE ODBC-RECCOUNT
  770. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  771. DO WHILE TRUE:
  772. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  773. IF ODBC-RECCOUNT = ? THEN LEAVE.
  774. ODBC-CURSOR = 0.
  775. ObjRecordSet:MoveFirst NO-ERROR.
  776. DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
  777. CREATE tBeleg.
  778. DYNAMIC-FUNCTION('getODBCDaten':U, hBeleg ).
  779. ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
  780. ObjRecordSet:MoveNext NO-ERROR.
  781. END.
  782. LEAVE.
  783. END.
  784. FOR EACH tBeleg:
  785. DISPLAY tbeleg.
  786. ii = ii + 1.
  787. END.
  788. /* ii = 0. */
  789. /* FOR EACH tBeleg NO-LOCK: */
  790. /* ODBC-QUERY = 'DELETE FROM [Huber].[dbo].[BelegDetail] ' */
  791. /* + 'WHERE DocKey = ' + STRING(tBeleg.DocKey) + ' '. */
  792. /* /* MESSAGE ODBC-QUERY VIEW-AS ALERT-BOX. */ */
  793. /* /* */
  794. /* ASSIGN ObjCommand:CommandText = ODBC-QUERY */
  795. /* ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 ) */
  796. /* ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR. */
  797. /* */
  798. /* MESSAGE 'Anzahl gelöschte BelegDetail = ' ODBC-RECCOUNT VIEW-AS ALERT-BOX. */
  799. /* */ */
  800. /* ODBC-QUERY = 'DELETE FROM [Huber].[dbo].[Beleg] ' */
  801. /* + 'WHERE OpId = "' + tBeleg.OpId + '" AND DocKey = ' + STRING(tBeleg.DocKey) + ' '. */
  802. /* MESSAGE ODBC-QUERY VIEW-AS ALERT-BOX. */
  803. /* /* */
  804. /* ASSIGN ObjCommand:CommandText = ODBC-QUERY */
  805. /* ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 ) */
  806. /* ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR. */
  807. /* */
  808. /* /* MESSAGE 'Anzahl gelöschte Belege = ' ODBC-RECCOUNT VIEW-AS ALERT-BOX. */ */
  809. /* */ */
  810. /* ii = ii + 1. */
  811. /* END. */
  812. /* message 'Anzahl gelöschte Belege = ' ii view-as alert-box. */
  813. RETURN ii.
  814. END FUNCTION.
  815. /* _UIB-CODE-BLOCK-END */
  816. &ANALYZE-RESUME
  817. &ENDIF
  818. &IF DEFINED(EXCLUDE-getDocKey) = 0 &THEN
  819. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getDocKey Procedure
  820. FUNCTION getDocKey RETURNS INTEGER
  821. ( ipDocKey AS INT ) :
  822. /*------------------------------------------------------------------------------
  823. Purpose:
  824. Notes:
  825. ------------------------------------------------------------------------------*/
  826. DEF VAR iDocKey AS INT NO-UNDO.
  827. iDocKey = ipDocKey.
  828. ODBC-QUERY = "SELECT [DocKey] FROM [Huber].[dbo].[Beleg] "
  829. + "WHERE OpId = '" + STRING(ipDocKey,'999999') + "' ".
  830. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  831. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  832. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  833. DO WHILE TRUE:
  834. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  835. IF ODBC-RECCOUNT = ? THEN LEAVE.
  836. ObjRecordSet:MoveFirst NO-ERROR.
  837. iDocKey = ObjRecordSet:FIELDS("DocKey"):VALUE.
  838. LEAVE.
  839. END.
  840. RETURN iDocKey.
  841. END FUNCTION.
  842. /* _UIB-CODE-BLOCK-END */
  843. &ANALYZE-RESUME
  844. &ENDIF
  845. &IF DEFINED(EXCLUDE-getODBCDaten) = 0 &THEN
  846. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getODBCDaten Procedure
  847. FUNCTION getODBCDaten RETURNS LOGICAL
  848. ( iphBuffer AS HANDLE ) :
  849. /*------------------------------------------------------------------------------
  850. Purpose:
  851. Notes:
  852. ------------------------------------------------------------------------------*/
  853. DEF VAR ii AS INT NO-UNDO.
  854. DEF VAR hFeld AS HANDLE NO-UNDO.
  855. DEF VAR cFeld AS CHAR NO-UNDO.
  856. DO ii = 1 TO iphBuffer:NUM-FIELDS:
  857. hFeld = iphBuffer:BUFFER-FIELD(ii).
  858. cFeld = hFeld:NAME.
  859. IF cFeld = 'cText' THEN cFeld = 'Text'.
  860. IF cFeld = 'cCode' THEN cFeld = 'Code'.
  861. hFeld:BUFFER-VALUE(0) = ObjRecordSet:FIELDS(cFeld):VALUE NO-ERROR.
  862. END.
  863. END FUNCTION.
  864. /* _UIB-CODE-BLOCK-END */
  865. &ANALYZE-RESUME
  866. &ENDIF
  867. &IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
  868. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBeleg Procedure
  869. FUNCTION lesenBeleg RETURNS INTEGER
  870. ( /* parameter-definitions */ ) :
  871. /*------------------------------------------------------------------------------
  872. Purpose:
  873. Notes:
  874. ------------------------------------------------------------------------------*/
  875. DEF VAR dDatum AS DATE NO-UNDO.
  876. DEF VAR dFakBetr AS DEC DECIMALS 2 NO-UNDO.
  877. DEF VAR BuchBetr AS DEC DECIMALS 2 NO-UNDO.
  878. DEF VAR Ansatz AS DEC NO-UNDO.
  879. DEF VAR Inkl AS LOG NO-UNDO.
  880. DEF VAR ii AS INT NO-UNDO.
  881. DEF VAR cString AS CHAR NO-UNDO.
  882. DEF VAR iDocKey AS INT NO-UNDO.
  883. DEF VAR dMwst AS DEC NO-UNDO.
  884. DEF VAR lMwstAdd AS LOG NO-UNDO.
  885. DEF VAR nDiff AS DEC DECIMALS 2 NO-UNDO.
  886. EMPTY TEMP-TABLE txBelegDetail.
  887. EMPTY TEMP-TABLE tBeleg.
  888. hBeleg = TEMP-TABLE tBeleg:DEFAULT-BUFFER-HANDLE.
  889. ODBC-QUERY = 'SELECT * FROM [Huber].[dbo].[Beleg]'.
  890. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  891. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  892. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  893. DO WHILE TRUE:
  894. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  895. IF ODBC-RECCOUNT = ? THEN LEAVE.
  896. ODBC-CURSOR = 0.
  897. ObjRecordSet:MoveFirst NO-ERROR.
  898. DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
  899. CREATE tBeleg.
  900. DYNAMIC-FUNCTION('getODBCDaten':U, hBeleg ).
  901. ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
  902. ObjRecordSet:MoveNext NO-ERROR.
  903. END.
  904. LEAVE.
  905. END.
  906. FOR EACH tDebop:
  907. FIND FIRST tBeleg
  908. WHERE tBeleg.OpId = TRIM(STRING(tDebop.Faknr,'>>>>>>>')) NO-ERROR.
  909. IF NOT AVAILABLE tBeleg THEN DO:
  910. DELETE tDebop.
  911. NEXT.
  912. END.
  913. dDatum = DATE(tBeleg.Transfer) NO-ERROR.
  914. IF ERROR-STATUS:ERROR OR
  915. dDatum = ? THEN DO:
  916. DELETE tBeleg.
  917. DELETE tDebop.
  918. END.
  919. END.
  920. FIND Steuer NO-LOCK
  921. WHERE Steuer.Firma = '1000' NO-ERROR.
  922. FOR EACH tDebop NO-LOCK:
  923. FIND FIRST tBeleg
  924. WHERE tBeleg.OpId = TRIM(STRING(tDebop.Faknr,'>>>>>>>')) NO-ERROR.
  925. dDatum = DATE(tBeleg.Transfer) NO-ERROR.
  926. IF dDatum <= 09/28/2017 THEN NEXT.
  927. dFakBetr = tDebop.FakBetr.
  928. EMPTY TEMP-TABLE tMwstBetr.
  929. FOR EACH Interf NO-LOCK
  930. WHERE Interf.Firma = Steuer.Fwc09
  931. AND Interf.TrNr1 = tDebop.TrNr1
  932. AND Interf.TrNr2 = tDebop.TrNr2
  933. AND Interf.Herk >= 50
  934. AND Interf.Herk <= 59
  935. AND Interf.MWSt_Art = 0
  936. BREAK BY Interf.Firma
  937. BY Interf.TrNr1
  938. BY Interf.TrNr2
  939. BY Interf.Trnr :
  940. FIND FIRST tMwstBetr
  941. WHERE tMwstbetr.Konto = Interf.Kto2
  942. AND tMwstbetr.MwstCd = Interf.Mwst_Cd NO-ERROR.
  943. IF NOT AVAILABLE tMwstBetr THEN DO:
  944. CREATE tMwstBetr.
  945. ASSIGN tMwstBetr.Konto = Interf.Kto2
  946. tMwstBetr.MwstCd = Interf.Mwst_Cd
  947. tMwstBetr.MwstAns = tDebop.Fakwpro[Interf.Mwst_Cd].
  948. END.
  949. ASSIGN tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + Interf.Betrag.
  950. IF NOT LAST-OF ( Interf.TrNr2 ) THEN NEXT.
  951. BuchBetr = 0.
  952. lMwstAdd = FALSE.
  953. FOR EACH tMwstBetr
  954. BREAK BY tMwstBetr.MwstCd:
  955. IF FIRST-OF ( tMwstBetr.MwstCd ) THEN BuchBetr = 0.
  956. BuchBetr = BuchBetr + tMwstBetr.MwstPfl.
  957. IF NOT LAST-OF ( tMwstBetr.MwstCd ) THEN NEXT.
  958. ii = tMwstBetr.MwstCd.
  959. IF ABS(tDebop.FakWpfl[ii] - BuchBetr) < ABS(tDebop.FakWpfl[ii] * 0.01) THEN DO.
  960. lMwstAdd = TRUE.
  961. LEAVE.
  962. END.
  963. END.
  964. /* lMwstAdd = TRUE --> Beim Betrag muss die Mwst dazugerechnet werden */
  965. /* In der Schnittstelle werden nur Inklusiv-Beträge übermittelt */
  966. IF lMwstAdd THEN DO:
  967. FOR EACH tMwstBetr :
  968. tMwstBetr.MwstPfl = tMwstBetr.MwstPfl * (100 + tMwstBetr.MwstAns) / 100.
  969. END.
  970. END.
  971. /* Different zwischen Fakbetr und einzelnen Buchungen errechnen */
  972. /* Differenz auf dem Konto mit dem grössten Betrag ausgleichen */
  973. Buchbetr = 0.
  974. FOR EACH tMwstBetr:
  975. tMwstBetr.MwstPfl = DECIMAL(STRING(tMwstBetr.MwstPfl,'999999999.99-')).
  976. BuchBetr = BuchBetr + tMwstBetr.MwstPfl.
  977. END.
  978. Buchbetr = DECIMAL(STRING(Buchbetr,'999999999.99-')).
  979. nDiff = dFakBetr - Buchbetr.
  980. FOR FIRST tMwstBetr
  981. BY tMwstBetr.MwstPfl DESCENDING:
  982. tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + nDiff.
  983. END.
  984. ii = 0.
  985. FOR EACH tMwstBetr
  986. BY tMwstBetr.Konto
  987. BY tMwstBetr.MwstCd:
  988. ii = ii + 1.
  989. CREATE txBelegDetail.
  990. ASSIGN txBelegDetail.DocKey = tBeleg.DocKey
  991. txBelegDetail.DocLine = ii
  992. txBelegDetail.Konto = tMwstBetr.Konto
  993. txBelegDetail.MwstTyp = STRING(tMwstBetr.MwstCd,'99')
  994. txBelegDetail.Betrag = tMwstBetr.MwstPfl
  995. txBelegDetail.BetragMwst = 0
  996. txBelegDetail.BetragFW = 0
  997. txBelegDetail.BuchTyp = ''
  998. txBelegDetail.Kostenstelle = ''
  999. txBelegDetail.cCode = ''.
  1000. END.
  1001. END.
  1002. END.
  1003. RETURN ODBC-RECCOUNT.
  1004. END FUNCTION.
  1005. /* _UIB-CODE-BLOCK-END */
  1006. &ANALYZE-RESUME
  1007. &ENDIF
  1008. &IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
  1009. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBelegDetail Procedure
  1010. FUNCTION lesenBelegDetail RETURNS INTEGER
  1011. ( /* parameter-definitions */ ) :
  1012. /*------------------------------------------------------------------------------
  1013. Purpose:
  1014. Notes:
  1015. ------------------------------------------------------------------------------*/
  1016. EMPTY TEMP-TABLE tBelegDetail.
  1017. hBelegDetail = TEMP-TABLE tBelegDetail:DEFAULT-BUFFER-HANDLE.
  1018. ODBC-QUERY = 'SELECT * FROM [Huber].[dbo].[BelegDetail]'.
  1019. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1020. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  1021. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1022. DO WHILE TRUE:
  1023. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  1024. IF ODBC-RECCOUNT = ? THEN LEAVE.
  1025. ODBC-CURSOR = 0.
  1026. ObjRecordSet:MoveFirst NO-ERROR.
  1027. DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
  1028. CREATE tBelegDetail.
  1029. DYNAMIC-FUNCTION('getODBCDaten':U, hBelegDetail ).
  1030. ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
  1031. ObjRecordSet:MoveNext NO-ERROR.
  1032. END.
  1033. LEAVE.
  1034. END.
  1035. FOR EACH tBelegDetail:
  1036. FIND FIRST tBeleg NO-LOCK USE-INDEX docKey
  1037. WHERE tBeleg.DocKey = tBelegDetail.DocKey NO-ERROR.
  1038. IF AVAILABLE tBeleg THEN NEXT.
  1039. DELETE tBelegDetail.
  1040. END.
  1041. RETURN ODBC-RECCOUNT.
  1042. END.
  1043. /* _UIB-CODE-BLOCK-END */
  1044. &ANALYZE-RESUME
  1045. &ENDIF
  1046. &IF DEFINED(EXCLUDE-lesenOpListe) = 0 &THEN
  1047. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenOpListe Procedure
  1048. FUNCTION lesenOpListe RETURNS INTEGER
  1049. ( /* parameter-definitions */ ) :
  1050. /*------------------------------------------------------------------------------
  1051. Purpose:
  1052. Notes:
  1053. ------------------------------------------------------------------------------*/
  1054. DEF VAR dDatum AS DATE NO-UNDO.
  1055. EMPTY TEMP-TABLE tOpListe.
  1056. hOpListe = TEMP-TABLE tOpListe:DEFAULT-BUFFER-HANDLE.
  1057. ODBC-QUERY = "SELECT * FROM [Huber].[dbo].[OpListe] WHERE OpId > '300000' ".
  1058. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1059. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  1060. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1061. DO WHILE TRUE:
  1062. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  1063. IF ODBC-RECCOUNT = ? THEN LEAVE.
  1064. ODBC-CURSOR = 0.
  1065. ObjRecordSet:MoveFirst NO-ERROR.
  1066. DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
  1067. CREATE tOpListe.
  1068. DYNAMIC-FUNCTION('getODBCDaten':U, hOpListe ).
  1069. ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
  1070. ObjRecordSet:MoveNext NO-ERROR.
  1071. END.
  1072. LEAVE.
  1073. END.
  1074. FOR EACH tDebop:
  1075. FIND FIRST tOpListe NO-LOCK
  1076. WHERE tOpListe.OpID = TRIM(STRING(tDebop.Faknr,'>>>>>>>')) NO-ERROR.
  1077. IF AVAILABLE tOpListe THEN DO:
  1078. tDebop.SageSaldo = tOpListe.Betrag.
  1079. tDebop.lOpListe = TRUE.
  1080. END.
  1081. FIND FIRST tBeleg NO-LOCK
  1082. WHERE tBeleg.OpID = TRIM(STRING(tDebop.Faknr,'>>>>>>>')) NO-ERROR.
  1083. IF AVAILABLE tBeleg THEN DO:
  1084. dDatum = DATE(tBeleg.Transfer) NO-ERROR.
  1085. IF ERROR-STATUS:ERROR OR
  1086. dDatum = ? THEN tDebop.cTransfer = ''.
  1087. ELSE tDebop.cTransfer = STRING(DATE(tBeleg.Transfer),'99.99.9999').
  1088. FOR EACH tBelegDetail NO-LOCK
  1089. WHERE tBelegDetail.DocKey = tBeleg.DocKey:
  1090. tDebop.DetailBetr = tDebop.DetailBetr + tBelegDetail.Betrag.
  1091. CASE tBelegDetail.MwstTyp:
  1092. WHEN '01' OR
  1093. WHEN '02' THEN DO:
  1094. tDebop.SageAns_8 = tDebop.SageAns_8 + tBelegDetail.Betrag.
  1095. END.
  1096. WHEN '03' OR
  1097. WHEN '04' THEN DO:
  1098. tDebop.SageAns_25 = tDebop.SageAns_25 + tBelegDetail.Betrag.
  1099. END.
  1100. WHEN '11' THEN DO:
  1101. tDebop.SageAns_0 = tDebop.SageAns_0 + tBelegDetail.Betrag.
  1102. END.
  1103. END.
  1104. END.
  1105. END.
  1106. IF NOT tDebop.lOpListe AND
  1107. tDebop.cTransfer <> '' THEN tDebop.SageSaldo = tDebop.DetailBetr.
  1108. END.
  1109. RETURN ODBC-RECCOUNT.
  1110. END FUNCTION.
  1111. /* _UIB-CODE-BLOCK-END */
  1112. &ANALYZE-RESUME
  1113. &ENDIF
  1114. &IF DEFINED(EXCLUDE-readDebop) = 0 &THEN
  1115. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION readDebop Procedure
  1116. FUNCTION readDebop RETURNS INTEGER
  1117. ( /* parameter-definitions */ ) :
  1118. /*------------------------------------------------------------------------------
  1119. Purpose:
  1120. Notes:
  1121. ------------------------------------------------------------------------------*/
  1122. DEF VAR ii AS INT NO-UNDO.
  1123. EMPTY TEMP-TABLE tDebop.
  1124. FOR EACH Debop NO-LOCK
  1125. WHERE Debop.Firma = '1000'
  1126. /*
  1127. AND Debop.Saldo <> 0
  1128. */
  1129. :
  1130. CREATE tDebop.
  1131. BUFFER-COPY Debop TO tDebop
  1132. ASSIGN tDebop.lOpListe = FALSE
  1133. tDebop.Ansatz_8 = tDebop.FakWpfl[01] + tDebop.FakWust[01]
  1134. + tDebop.FakWpfl[02] + tDebop.FakWust[02]
  1135. tDebop.Ansatz_25 = tDebop.FakWpfl[03] + tDebop.FakWust[03]
  1136. + tDebop.FakWpfl[04] + tDebop.FakWust[04]
  1137. tDebop.Ansatz_0 = tDebop.FakWpfl[11].
  1138. .
  1139. ii = ii + 1.
  1140. END.
  1141. RETURN ii.
  1142. END FUNCTION.
  1143. /* _UIB-CODE-BLOCK-END */
  1144. &ANALYZE-RESUME
  1145. &ENDIF
  1146. &IF DEFINED(EXCLUDE-reorgBelege) = 0 &THEN
  1147. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION reorgBelege Procedure
  1148. FUNCTION reorgBelege RETURNS LOGICAL
  1149. ( /* parameter-definitions */ ) :
  1150. /*------------------------------------------------------------------------------
  1151. Purpose:
  1152. Notes:
  1153. ------------------------------------------------------------------------------*/
  1154. DEF VAR dDatum AS DATE NO-UNDO.
  1155. FOR EACH tBeleg:
  1156. dDatum = DATE(tBeleg.Transfer) NO-ERROR.
  1157. IF NOT ERROR-STATUS:ERROR AND
  1158. dDatum <> ? THEN NEXT.
  1159. ODBC-QUERY = "DELETE FROM [Huber].[dbo].[BelegDetail] "
  1160. + "WHERE DocKey = &1 ".
  1161. ODBC-QUERY = SUBSTITUTE(ODBC-QUERY, tBeleg.DocKey).
  1162. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1163. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ) NO-ERROR.
  1164. END.
  1165. RETURN FALSE. /* Function return value. */
  1166. END FUNCTION.
  1167. /* _UIB-CODE-BLOCK-END */
  1168. &ANALYZE-RESUME
  1169. &ENDIF
  1170. &IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
  1171. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startSQLTransaction Procedure
  1172. FUNCTION startSQLTransaction RETURNS LOGICAL
  1173. ( /* parameter-definitions */ ) :
  1174. /*------------------------------------------------------------------------------
  1175. Purpose:
  1176. Notes:
  1177. ------------------------------------------------------------------------------*/
  1178. ODBC-QUERY = 'BEGIN TRANSACTION'.
  1179. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1180. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
  1181. END FUNCTION.
  1182. /* _UIB-CODE-BLOCK-END */
  1183. &ANALYZE-RESUME
  1184. &ENDIF
  1185. &IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
  1186. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBeleg Procedure
  1187. FUNCTION updateBeleg RETURNS LOGICAL
  1188. ( ipTHandle AS HANDLE, ipArt AS INT ) :
  1189. /*------------------------------------------------------------------------------
  1190. Purpose:
  1191. Notes:
  1192. ------------------------------------------------------------------------------*/
  1193. DEF VAR cSet AS CHAR NO-UNDO.
  1194. DEF VAR hFeld AS HANDLE NO-UNDO.
  1195. DEF VAR cFeld AS CHAR NO-UNDO.
  1196. cSet = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
  1197. hFeld = ipTHandle:BUFFER-FIELD('OpId').
  1198. cFeld = hFeld:BUFFER-VALUE(0).
  1199. IF ipArt = 1 THEN DO: /* INSERT */
  1200. ODBC-QUERY = "INSERT INTO [Huber].[dbo].[Beleg] "
  1201. + cSet.
  1202. END.
  1203. IF ipArt = 0 THEN DO: /* UPDATE */
  1204. ODBC-QUERY = "UPDATE [Huber].[dbo].[Beleg] "
  1205. + cSet
  1206. + " WHERE OpId = '"
  1207. + cFeld
  1208. + "' ".
  1209. END.
  1210. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1211. ObjRecordSet = ObjCommand:EXECUTE(OUTPUT ODBC-NULL, "", 32)
  1212. NO-ERROR.
  1213. IF ODBC-NULL <> '1' THEN DO:
  1214. OUTPUT TO VALUE(TempName) NO-MAP NO-CONVERT APPEND.
  1215. PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
  1216. OUTPUT CLOSE.
  1217. RETURN FALSE.
  1218. END.
  1219. RETURN TRUE.
  1220. END FUNCTION.
  1221. /* _UIB-CODE-BLOCK-END */
  1222. &ANALYZE-RESUME
  1223. &ENDIF
  1224. &IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
  1225. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBelegDetail Procedure
  1226. FUNCTION updateBelegDetail RETURNS LOGICAL
  1227. ( ipTHandle AS HANDLE, ipArt AS INT ) :
  1228. /*------------------------------------------------------------------------------
  1229. Purpose:
  1230. Notes:
  1231. ------------------------------------------------------------------------------*/
  1232. DEF VAR cSet AS CHAR NO-UNDO.
  1233. DEF VAR hFeld AS HANDLE NO-UNDO.
  1234. DEF VAR cFaknr AS CHAR NO-UNDO.
  1235. DEF VAR cIndex AS CHAR NO-UNDO.
  1236. cSet = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
  1237. hFeld = ipTHandle:BUFFER-FIELD('DocKey').
  1238. cFaknr = hFeld:BUFFER-VALUE(0).
  1239. hFeld = ipTHandle:BUFFER-FIELD('DocLine').
  1240. cIndex = hFeld:BUFFER-VALUE(0).
  1241. IF ipArt = 1 THEN DO: /* INSERT */
  1242. ODBC-QUERY = "INSERT INTO [Huber].[dbo].[BelegDetail] "
  1243. + cSet.
  1244. END.
  1245. IF ipArt = 0 THEN DO: /* UPDATE */
  1246. ODBC-QUERY = "UPDATE [Huber].[dbo].[BelegDetail] "
  1247. + cSet
  1248. + " WHERE DocKey = '"
  1249. + cFaknr
  1250. + "' "
  1251. + "AND DocLine = '"
  1252. + cIndex
  1253. + "'".
  1254. END.
  1255. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1256. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  1257. NO-ERROR.
  1258. IF ODBC-NULL <> '1' THEN DO:
  1259. OUTPUT TO VALUE(TempName) NO-MAP NO-CONVERT APPEND.
  1260. PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
  1261. OUTPUT CLOSE.
  1262. RETURN FALSE.
  1263. END.
  1264. RETURN TRUE.
  1265. END FUNCTION.
  1266. /* _UIB-CODE-BLOCK-END */
  1267. &ANALYZE-RESUME
  1268. &ENDIF
  1269. &IF DEFINED(EXCLUDE-writeLogFiles) = 0 &THEN
  1270. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFiles Procedure
  1271. FUNCTION writeLogFiles RETURNS LOGICAL
  1272. ( ipMessage AS CHAR ) :
  1273. /*------------------------------------------------------------------------------
  1274. Purpose:
  1275. Notes:
  1276. ------------------------------------------------------------------------------*/
  1277. DEF VAR cString AS CHAR NO-UNDO.
  1278. cString = SUBSTITUTE('&1 &2 -> &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), ipMessage).
  1279. OUTPUT STREAM LogFile TO VALUE(TempName) APPEND.
  1280. PUT STREAM LogFile CONTROL cString CHR(10).
  1281. OUTPUT STREAM LogFile CLOSE.
  1282. RETURN TRUE.
  1283. END FUNCTION.
  1284. /* _UIB-CODE-BLOCK-END */
  1285. &ANALYZE-RESUME
  1286. &ENDIF