SESAMSQL_SPEZ.p 67 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117
  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 fEnde AS LOG NO-UNDO.
  30. DEF VAR cTempName AS CHAR NO-UNDO.
  31. DEF VAR cTempDir AS CHAR NO-UNDO.
  32. DEF VAR cJournal AS CHAR NO-UNDO.
  33. DEF VAR WebString AS CHAR NO-UNDO.
  34. DEF VAR AllesOK AS LOG NO-UNDO.
  35. DEF VAR Sprcd AS INT NO-UNDO.
  36. DEF VAR LVAdx AS CHAR NO-UNDO EXTENT 15.
  37. DEF VAR LVAdy AS CHAR NO-UNDO EXTENT 15.
  38. DEF VAR cOrt AS CHAR NO-UNDO.
  39. DEF VAR Firma AS CHAR NO-UNDO INIT '9999'.
  40. DEF VAR GVFirma AS CHAR NO-UNDO INIT '9999'.
  41. DEF VAR ja AS LOG NO-UNDO.
  42. DEF VAR CrLf AS CHAR NO-UNDO.
  43. DEF VAR cMessage AS CHAR NO-UNDO.
  44. DEF STREAM LogStream.
  45. DEF STREAM Logfile.
  46. DEF TEMP-TABLE tMwstBetr
  47. FIELD Konto AS CHAR
  48. FIELD MwstCd AS INT
  49. FIELD MwstPfl AS DEC DECIMALS 2
  50. FIELD MwstBet AS DEC DECIMALS 2
  51. FIELD MwstAns AS DEC DECIMALS 2.
  52. DEF TEMP-TABLE tDebop FIELD DocType AS INT
  53. FIELD OpId AS CHAR
  54. FIELD KndNr AS INT
  55. FIELD Konto AS CHAR
  56. FIELD OpText AS CHAR
  57. FIELD OpDate AS DATE
  58. FIELD ZabId AS CHAR
  59. FIELD SortId AS CHAR
  60. FIELD Firma AS CHAR
  61. FIELD Zusatz1 AS CHAR
  62. FIELD Strasse AS CHAR
  63. FIELD Plz AS CHAR
  64. FIELD Ort AS CHAR
  65. FIELD Telefon1 AS CHAR
  66. FIELD Telefon4 AS CHAR
  67. FIELD EsrNr AS CHAR
  68. FIELD Sprache AS CHAR
  69. FIELD iStatus AS INT.
  70. /*
  71. DEF TEMP-TABLE TDebDet FIELD DocKey AS CHAR.
  72. */
  73. DEF TEMP-TABLE TMwst FIELD MwstTyp AS CHAR
  74. FIELD MwstId AS CHAR.
  75. DEF TEMP-TABLE TZaKo FIELD ZabId AS CHAR
  76. FIELD ZabId2 AS CHAR.
  77. DEF TEMP-TABLE TDetail FIELD DocKey AS INT
  78. FIELD DocLine AS INT
  79. FIELD Konto AS CHAR
  80. FIELD cText AS CHAR
  81. FIELD MwstTyp AS CHAR
  82. FIELD Betrag AS DEC DECIMALS 2
  83. FIELD BetragMwst AS DEC DECIMALS 2
  84. FIELD BetragFW AS DEC DECIMALS 2
  85. FIELD BuchTyp AS CHAR
  86. FIELD Kostenstelle AS CHAR
  87. FIELD cCode AS CHAR
  88. FIELD iStatus AS INT.
  89. DEF TEMP-TABLE TOpSaldo FIELD OpId AS CHAR
  90. FIELD PkNr AS INT
  91. FIELD Betrag AS DEC
  92. FIELD BetragFW AS DEC
  93. INDEX Kunde IS PRIMARY
  94. PkNr
  95. INDEX Faknr
  96. OpId.
  97. DEF TEMP-TABLE TBeleg FIELD OpID AS CHAR
  98. FIELD KndNr AS INT
  99. FIELD DocKey AS INT
  100. INDEX Faknr IS PRIMARY
  101. OpID.
  102. DEF TEMP-TABLE TBelegDetail FIELD DocKey AS INT
  103. FIELD DocLine AS INT
  104. INDEX DokNr IS PRIMARY
  105. DocKey.
  106. DEF TEMP-TABLE xDetail LIKE TDetail .
  107. DEF TEMP-TABLE xOpSaldo LIKE TOpSaldo.
  108. /* _UIB-CODE-BLOCK-END */
  109. &ANALYZE-RESUME
  110. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  111. /* ******************** Preprocessor Definitions ******************** */
  112. &Scoped-define PROCEDURE-TYPE Procedure
  113. &Scoped-define DB-AWARE no
  114. /* _UIB-PREPROCESSOR-BLOCK-END */
  115. &ANALYZE-RESUME
  116. /* ************************ Function Prototypes ********************** */
  117. &IF DEFINED(EXCLUDE-cancelSQLTransaction) = 0 &THEN
  118. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD cancelSQLTransaction Procedure
  119. FUNCTION cancelSQLTransaction RETURNS LOGICAL
  120. ( /* parameter-definitions */ ) FORWARD.
  121. /* _UIB-CODE-BLOCK-END */
  122. &ANALYZE-RESUME
  123. &ENDIF
  124. &IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
  125. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CloseConnection Procedure
  126. FUNCTION CloseConnection RETURNS LOGICAL
  127. ( /* parameter-definitions */ ) FORWARD.
  128. /* _UIB-CODE-BLOCK-END */
  129. &ANALYZE-RESUME
  130. &ENDIF
  131. &IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
  132. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD closeSQLTransaction Procedure
  133. FUNCTION closeSQLTransaction RETURNS LOGICAL
  134. ( /* parameter-definitions */ ) FORWARD.
  135. /* _UIB-CODE-BLOCK-END */
  136. &ANALYZE-RESUME
  137. &ENDIF
  138. &IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
  139. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateConnection Procedure
  140. FUNCTION CreateConnection RETURNS LOGICAL
  141. ( /* parameter-definitions */ ) FORWARD.
  142. /* _UIB-CODE-BLOCK-END */
  143. &ANALYZE-RESUME
  144. &ENDIF
  145. &IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
  146. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CreateSetDaten Procedure
  147. FUNCTION CreateSetDaten RETURNS CHARACTER
  148. ( iphBuffer AS HANDLE, ipArt AS INT ) FORWARD.
  149. /* _UIB-CODE-BLOCK-END */
  150. &ANALYZE-RESUME
  151. &ENDIF
  152. &IF DEFINED(EXCLUDE-getDocKey) = 0 &THEN
  153. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getDocKey Procedure
  154. FUNCTION getDocKey RETURNS INTEGER
  155. ( ipDocKey AS INT ) FORWARD.
  156. /* _UIB-CODE-BLOCK-END */
  157. &ANALYZE-RESUME
  158. &ENDIF
  159. &IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
  160. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogName Procedure
  161. FUNCTION getLogName RETURNS CHARACTER
  162. ( /* parameter-definitions */ ) FORWARD.
  163. /* _UIB-CODE-BLOCK-END */
  164. &ANALYZE-RESUME
  165. &ENDIF
  166. &IF DEFINED(EXCLUDE-getODBCDaten) = 0 &THEN
  167. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getODBCDaten Procedure
  168. FUNCTION getODBCDaten RETURNS LOGICAL
  169. ( iphBuffer AS HANDLE ) FORWARD.
  170. /* _UIB-CODE-BLOCK-END */
  171. &ANALYZE-RESUME
  172. &ENDIF
  173. &IF DEFINED(EXCLUDE-ifMwst) = 0 &THEN
  174. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD ifMwst Procedure
  175. FUNCTION ifMwst RETURNS LOGICAL
  176. ( ipMwstId AS CHAR ) FORWARD.
  177. /* _UIB-CODE-BLOCK-END */
  178. &ANALYZE-RESUME
  179. &ENDIF
  180. &IF DEFINED(EXCLUDE-ifZaKo) = 0 &THEN
  181. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD ifZaKo Procedure
  182. FUNCTION ifZaKo RETURNS LOGICAL
  183. ( ipZabId AS CHAR ) FORWARD.
  184. /* _UIB-CODE-BLOCK-END */
  185. &ANALYZE-RESUME
  186. &ENDIF
  187. &IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
  188. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBeleg Procedure
  189. FUNCTION lesenBeleg RETURNS INTEGER
  190. ( /* parameter-definitions */ ) FORWARD.
  191. /* _UIB-CODE-BLOCK-END */
  192. &ANALYZE-RESUME
  193. &ENDIF
  194. &IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
  195. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenBelegDetail Procedure
  196. FUNCTION lesenBelegDetail RETURNS INTEGER
  197. ( /* parameter-definitions */ ) FORWARD.
  198. /* _UIB-CODE-BLOCK-END */
  199. &ANALYZE-RESUME
  200. &ENDIF
  201. &IF DEFINED(EXCLUDE-lesenOpSaldo) = 0 &THEN
  202. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD lesenOpSaldo Procedure
  203. FUNCTION lesenOpSaldo RETURNS INTEGER
  204. ( /* parameter-definitions */ ) FORWARD.
  205. /* _UIB-CODE-BLOCK-END */
  206. &ANALYZE-RESUME
  207. &ENDIF
  208. &IF DEFINED(EXCLUDE-MAKE_DATUM) = 0 &THEN
  209. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD MAKE_DATUM Procedure
  210. FUNCTION MAKE_DATUM RETURNS DATE
  211. ( ipDatum AS CHAR ) FORWARD.
  212. /* _UIB-CODE-BLOCK-END */
  213. &ANALYZE-RESUME
  214. &ENDIF
  215. &IF DEFINED(EXCLUDE-setTimeStamp) = 0 &THEN
  216. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setTimeStamp Procedure
  217. FUNCTION setTimeStamp RETURNS CHARACTER
  218. ( ipDatum AS DATE ) FORWARD.
  219. /* _UIB-CODE-BLOCK-END */
  220. &ANALYZE-RESUME
  221. &ENDIF
  222. &IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
  223. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD startSQLTransaction Procedure
  224. FUNCTION startSQLTransaction RETURNS LOGICAL
  225. ( /* parameter-definitions */ ) FORWARD.
  226. /* _UIB-CODE-BLOCK-END */
  227. &ANALYZE-RESUME
  228. &ENDIF
  229. &IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
  230. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBeleg Procedure
  231. FUNCTION updateBeleg RETURNS LOGICAL
  232. ( ipTHandle AS HANDLE, ipArt AS INT ) FORWARD.
  233. /* _UIB-CODE-BLOCK-END */
  234. &ANALYZE-RESUME
  235. &ENDIF
  236. &IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
  237. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateBelegDetail Procedure
  238. FUNCTION updateBelegDetail RETURNS LOGICAL
  239. ( ipTHandle AS HANDLE, ipArt AS INT ) FORWARD.
  240. /* _UIB-CODE-BLOCK-END */
  241. &ANALYZE-RESUME
  242. &ENDIF
  243. &IF DEFINED(EXCLUDE-updateMwstMap) = 0 &THEN
  244. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateMwstMap Procedure
  245. FUNCTION updateMwstMap RETURNS LOGICAL
  246. ( ipTHandle AS HANDLE, ipArt AS INT ) FORWARD.
  247. /* _UIB-CODE-BLOCK-END */
  248. &ANALYZE-RESUME
  249. &ENDIF
  250. &IF DEFINED(EXCLUDE-updateZabMap) = 0 &THEN
  251. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD updateZabMap Procedure
  252. FUNCTION updateZabMap RETURNS LOGICAL
  253. ( ipTHandle AS HANDLE, ipArt AS INT ) FORWARD.
  254. /* _UIB-CODE-BLOCK-END */
  255. &ANALYZE-RESUME
  256. &ENDIF
  257. &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
  258. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile Procedure
  259. FUNCTION writeLogFile RETURNS LOGICAL
  260. ( ipMessage AS CHAR ) FORWARD.
  261. /* _UIB-CODE-BLOCK-END */
  262. &ANALYZE-RESUME
  263. &ENDIF
  264. /* *********************** Procedure Settings ************************ */
  265. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  266. /* Settings for THIS-PROCEDURE
  267. Type: Procedure
  268. Allow:
  269. Frames: 0
  270. Add Fields to: Neither
  271. Other Settings: CODE-ONLY COMPILE APPSERVER
  272. */
  273. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  274. /* ************************* Create Window ************************** */
  275. &ANALYZE-SUSPEND _CREATE-WINDOW
  276. /* DESIGN Window definition (used by the UIB)
  277. CREATE WINDOW Procedure ASSIGN
  278. HEIGHT = 10.86
  279. WIDTH = 52.6.
  280. /* END WINDOW DEFINITION */
  281. */
  282. &ANALYZE-RESUME
  283. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  284. /* *************************** Main Block *************************** */
  285. cTempName = '\\GEMHG\LogFiles$\SAGE\SageSpezial.log'.
  286. cJournal = REPLACE(cTempName, '.log', '.csv').
  287. cMessage = 'Start Datentransfer Ge_MIS <-> SAGE '.
  288. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  289. ja = DYNAMIC-FUNCTION('CreateConnection':U) NO-ERROR.
  290. IF NOT ja THEN QUIT.
  291. /*
  292. RUN FUELLEN_MWST.
  293. RUN FUELLEN_ZAKOND.
  294. */
  295. /* RUN FUELLEN_OP. */ /* Für Abgleich ende Jahr gemacht 07.01.2019 */
  296. RUN LESEN_OFFENESALDI.
  297. /*
  298. RUN REORG_DB.
  299. */
  300. DYNAMIC-FUNCTION('CloseConnection':U) NO-ERROR.
  301. cMessage = 'Ende Datentransfer Ge_MIS <-> SAGE ' + CHR(10).
  302. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  303. QUIT.
  304. /* _UIB-CODE-BLOCK-END */
  305. &ANALYZE-RESUME
  306. /* ********************** Internal Procedures *********************** */
  307. &IF DEFINED(EXCLUDE-FUELLEN_MWST) = 0 &THEN
  308. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_MWST Procedure
  309. PROCEDURE FUELLEN_MWST :
  310. /*------------------------------------------------------------------------------
  311. Purpose:
  312. Parameters: <none>
  313. Notes:
  314. ------------------------------------------------------------------------------*/
  315. DEF VAR hTMwst AS HANDLE NO-UNDO.
  316. DEF VAR xx AS INT NO-UNDO.
  317. EMPTY TEMP-TABLE TMwst.
  318. hTMwst = BUFFER TMwst:HANDLE.
  319. FOR EACH MWSTAns NO-LOCK
  320. WHERE MWSTAns.Datum <= TODAY
  321. BREAK BY MWSTAns.MWST_Cd
  322. BY MWSTAns.Datum:
  323. IF NOT LAST-OF ( MWSTAns.MWST_Cd ) THEN NEXT.
  324. FIND FIRST Wust USE-INDEX Wust-k2
  325. WHERE Wust.WuCd = MWSTAns.MWST_Cd NO-LOCK NO-ERROR.
  326. CREATE TMwst.
  327. ASSIGN TMwst.MwstTyp = STRING(MWSTAns.MWST_Cd,'99')
  328. TMwst.MwstId = ''.
  329. END.
  330. DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
  331. xx = 0.
  332. FOR EACH TMwst:
  333. ja = DYNAMIC-FUNCTION('ifMwst':U, INPUT TMwst.MwstId) NO-ERROR.
  334. IF ja = ? THEN NEXT.
  335. IF ja = TRUE THEN NEXT.
  336. /*
  337. DYNAMIC-FUNCTION('updateMwstMap':U, INPUT hTMwst, INPUT 1) NO-ERROR.
  338. */
  339. END.
  340. DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
  341. END PROCEDURE.
  342. /* _UIB-CODE-BLOCK-END */
  343. &ANALYZE-RESUME
  344. &ENDIF
  345. &IF DEFINED(EXCLUDE-FUELLEN_OP) = 0 &THEN
  346. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_OP Procedure
  347. PROCEDURE FUELLEN_OP :
  348. /*------------------------------------------------------------------------------
  349. Purpose:
  350. Parameters: <none>
  351. Notes:
  352. ------------------------------------------------------------------------------*/
  353. DEF VAR htDebop AS HANDLE NO-UNDO.
  354. DEF VAR htDetail AS HANDLE NO-UNDO.
  355. DEF VAR xx AS INT NO-UNDO.
  356. DEF VAR cOrt AS CHAR NO-UNDO.
  357. DEF VAR dFakBetr AS DEC DECIMALS 2 NO-UNDO.
  358. DEF VAR BuchBetr AS DEC DECIMALS 2 NO-UNDO.
  359. DEF VAR Ansatz AS DEC NO-UNDO.
  360. DEF VAR Inkl AS LOG NO-UNDO.
  361. DEF VAR ii AS INT NO-UNDO.
  362. DEF VAR cString AS CHAR NO-UNDO.
  363. DEF VAR iDocKey AS INT NO-UNDO.
  364. DEF VAR cAdresse AS CHAR NO-UNDO.
  365. DEF VAR dMwst AS DEC NO-UNDO.
  366. DEF VAR lErst AS LOG NO-UNDO.
  367. DEF VAR lMwstAdd AS LOG NO-UNDO.
  368. DEF VAR nDiff AS DEC DECIMALS 2 NO-UNDO.
  369. DEF VAR cExport AS CHAR NO-UNDO.
  370. EMPTY TEMP-TABLE tDebop .
  371. EMPTY TEMP-TABLE tDetail .
  372. EMPTY TEMP-TABLE xDetail .
  373. EMPTY TEMP-TABLE xOpSaldo.
  374. htDebop = BUFFER tDebop :HANDLE.
  375. htDetail = BUFFER xDetail:HANDLE.
  376. CREATE xDetail.
  377. FIND Steuer WHERE Steuer.Firma = '1000' NO-LOCK.
  378. cMessage = ' Einlesen Daten aus SESAM gestartet'.
  379. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  380. xx = DYNAMIC-FUNCTION('lesenOpSaldo':U) NO-ERROR.
  381. cMessage = SUBSTITUTE(' Anzahl eingelesene verarbeitete Rechnungen aus SESAM -> &1 ', xx).
  382. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  383. xx = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
  384. cMessage = SUBSTITUTE(' Anzahl eingelesene Belege aus SESAM -> &1 ', xx).
  385. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  386. xx = DYNAMIC-FUNCTION('lesenBelegDetail':U) NO-ERROR.
  387. cMessage = SUBSTITUTE(' Anzahl eingelesene Beleg-Details aus SESAM -> &1 ', xx).
  388. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  389. cMessage = ' Einlesen Daten aus SESAM beendet'.
  390. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  391. cMessage = ' '.
  392. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  393. cExport = SUBSTITUTE('%1Beleg.csv', cTempDir).
  394. OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
  395. FOR EACH tBeleg:
  396. EXPORT DELIMITER ';' tBeleg.
  397. END.
  398. OUTPUT CLOSE.
  399. cExport = SUBSTITUTE('%1BelegDetail.csv', cTempDir).
  400. OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
  401. FOR EACH tBelegDetail:
  402. EXPORT DELIMITER ';' tBelegDetail.
  403. END.
  404. OUTPUT CLOSE.
  405. xx = 0.
  406. FOR EACH Debop NO-LOCK
  407. WHERE Debop.Firma = '1000'
  408. AND Debop.Faknr >= 30000
  409. AND ((Debop.Fakbetr <> 0 AND
  410. Debop.Saldo <> 0.0)
  411. OR (Debop.Fakbetr = 0)) ,
  412. FIRST Adresse NO-LOCK
  413. WHERE Adresse.Firma = Debop.Firma
  414. AND Adresse.Knr = Debop.Knr :
  415. FIND FIRST tBeleg NO-LOCK
  416. WHERE tBeleg.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>')) NO-ERROR.
  417. IF AVAILABLE tBeleg THEN NEXT.
  418. IF Debop.Fakbetr = 0 THEN DO:
  419. dMwst = 0.
  420. DO ii = 1 TO 10:
  421. dMwst = dMwst + Debop.FakWpfl[ii].
  422. END.
  423. IF dMwst = 0 THEN NEXT.
  424. END.
  425. FIND Orte OF Adresse NO-LOCK NO-ERROR.
  426. IF Adresse.Ort <> '' THEN cOrt = Adresse.Ort.
  427. ELSE IF AVAILABLE Orte THEN cOrt = Orte.Ort.
  428. ELSE cOrt = '??????????'.
  429. FIND Sprache OF Adresse NO-LOCK NO-ERROR.
  430. IF Adresse.Firma1 <> '' THEN cAdresse = TRIM(Adresse.Firma1).
  431. ELSE cAdresse = TRIM(Adresse.Name + ' ' + Adresse.Vorname).
  432. cAdresse = TRIM(SUBSTRING(cAdresse,01,30)).
  433. CREATE tDebop.
  434. ASSIGN tDebop.DocTyp = 0
  435. tDebop.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
  436. tDebop.KndNr = Debop.Knr
  437. tDebop.Konto = Debop.Konto
  438. tDebop.OpDate = Debop.Fakdat
  439. tDebop.ZabId = STRING(Debop.Kond,'99')
  440. tDebop.Firma = cAdresse
  441. tDebop.SortId = TRIM(SUBSTRING(Adresse.Suchbe ,01,10))
  442. tDebop.Zusatz1 = TRIM(SUBSTRING(Adresse.Zusatz1,01,30))
  443. tDebop.Strasse = TRIM(SUBSTRING(Adresse.Strasse,01,30))
  444. tDebop.Plz = TRIM(SUBSTRING(Adresse.Plz ,01,06))
  445. tDebop.Ort = TRIM(SUBSTRING(cOrt ,01,24))
  446. tDebop.Telefon1 = TRIM(SUBSTRING(Adresse.Tel-1 ,01,20))
  447. tDebop.Telefon4 = TRIM(SUBSTRING(Adresse.Tel-3 ,01,20))
  448. tDebop.EsrNr = ''
  449. tDebop.Sprache = (IF AVAILABLE Sprache THEN SUBSTRING(Sprache.Bez,01,01) ELSE 'D')
  450. tDebop.iStatus = 9.
  451. .
  452. IF tDebop.Firma = ''
  453. THEN tDebop.Firma = TRIM(SUBSTRING((Adresse.NAME + ' ' + Adresse.Vorname),01,30)).
  454. dFakBetr = Debop.FakBetr.
  455. EMPTY TEMP-TABLE tMwstBetr.
  456. FOR EACH Interf NO-LOCK
  457. WHERE Interf.Firma = Steuer.Fwc09
  458. AND Interf.TrNr1 = Debop.TrNr1
  459. AND Interf.TrNr2 = Debop.TrNr2
  460. AND Interf.Herk >= 50
  461. AND Interf.Herk <= 59
  462. AND Interf.MWSt_Art = 0
  463. BREAK BY Interf.Firma
  464. BY Interf.TrNr1
  465. BY Interf.TrNr2
  466. BY Interf.Trnr :
  467. FIND FIRST tMwstBetr
  468. WHERE tMwstbetr.Konto = Interf.Kto2
  469. AND tMwstbetr.MwstCd = Interf.Mwst_Cd NO-ERROR.
  470. IF NOT AVAILABLE tMwstBetr THEN DO:
  471. CREATE tMwstBetr.
  472. ASSIGN tMwstBetr.Konto = Interf.Kto2
  473. tMwstBetr.MwstCd = Interf.Mwst_Cd
  474. tMwstBetr.MwstAns = Debop.Fakwpro[Interf.Mwst_Cd].
  475. END.
  476. ASSIGN tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + Interf.Betrag.
  477. IF NOT LAST-OF ( Interf.TrNr2 ) THEN NEXT.
  478. BuchBetr = 0.
  479. lMwstAdd = FALSE.
  480. FOR EACH tMwstBetr
  481. BREAK BY tMwstBetr.MwstCd:
  482. IF FIRST-OF ( tMwstBetr.MwstCd ) THEN BuchBetr = 0.
  483. BuchBetr = BuchBetr + tMwstBetr.MwstPfl.
  484. IF NOT LAST-OF ( tMwstBetr.MwstCd ) THEN NEXT.
  485. ii = tMwstBetr.MwstCd.
  486. IF ABS(Debop.FakWpfl[ii] - BuchBetr) < ABS(Debop.FakWpfl[ii] * 0.01) THEN DO.
  487. lMwstAdd = TRUE.
  488. LEAVE.
  489. END.
  490. END.
  491. /* lMwstAdd = TRUE --> Beim Betrag muss die Mwst dazugerechnet werden */
  492. /* In der Schnittstelle werden nur Inklusiv-Beträge übermittelt */
  493. IF lMwstAdd THEN DO:
  494. FOR EACH tMwstBetr :
  495. tMwstBetr.MwstPfl = tMwstBetr.MwstPfl * (100 + tMwstBetr.MwstAns) / 100.
  496. END.
  497. END.
  498. /* Different zwischen Fakbetr und einzelnen Buchungen errechnen */
  499. /* Differenz auf dem Konto mit dem grössten Betrag ausgleichen */
  500. Buchbetr = 0.
  501. FOR EACH tMwstBetr:
  502. tMwstBetr.MwstPfl = DECIMAL(STRING(tMwstBetr.MwstPfl,'999999999.99-')).
  503. BuchBetr = BuchBetr + tMwstBetr.MwstPfl.
  504. END.
  505. Buchbetr = DECIMAL(STRING(Buchbetr,'999999999.99-')).
  506. nDiff = dFakBetr - Buchbetr.
  507. FOR FIRST tMwstBetr
  508. BY tMwstBetr.MwstPfl DESCENDING:
  509. tMwstBetr.MwstPfl = tMwstBetr.MwstPfl + nDiff.
  510. END.
  511. ii = 0.
  512. FOR EACH tMwstBetr
  513. BY tMwstBetr.Konto
  514. BY tMwstBetr.MwstCd:
  515. ii = ii + 1.
  516. CREATE tDetail.
  517. ASSIGN tDetail.DocKey = Debop.Faknr
  518. tDetail.DocLine = ii
  519. tDetail.Konto = tMwstBetr.Konto
  520. tDetail.cText = ''
  521. tDetail.MwstTyp = STRING(tMwstBetr.MWStCd,'99')
  522. tDetail.Betrag = tMwstBetr.MwstPfl
  523. tDetail.BetragMwst = 0
  524. tDetail.BetragFW = 0
  525. tDetail.BuchTyp = ''
  526. tDetail.Kostenstelle = ''
  527. tDetail.cCode = ''
  528. tDetail.iStatus = 9.
  529. END.
  530. END.
  531. xx = xx + 1.
  532. END.
  533. cMessage = SUBSTITUTE(' Anzahl beruecksichtigte Rechnungen aus Ge_MIS -> &1', xx).
  534. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  535. xx = 0.
  536. DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
  537. FOR EACH tDebop:
  538. FIND FIRST tBeleg WHERE tBeleg.OpId = tDebop.OpID NO-ERROR.
  539. IF AVAILABLE tBeleg THEN NEXT.
  540. ja = DYNAMIC-FUNCTION('updateBeleg':U, INPUT htDebop, INPUT 1) NO-ERROR.
  541. tDebop.iStatus = (IF ja THEN 1 ELSE 0).
  542. xx = xx + 1.
  543. IF xx MOD 100 = 0 THEN DO:
  544. DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
  545. cMessage = SUBSTITUTE(' -> bereits eingefuegte Belege -> &1', xx).
  546. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  547. ii = ETIME(TRUE).
  548. DO WHILE ETIME < 1000:
  549. END.
  550. DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
  551. END.
  552. FIND Debop NO-LOCK
  553. WHERE Debop.Firma = '1000'
  554. AND Debop.Knr = tDebop.KndNr
  555. AND Debop.Faknr = INTEGER(tDebop.OpId) NO-ERROR.
  556. CREATE tOpSaldo.
  557. ASSIGN tOpSaldo.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
  558. tOpSaldo.PkNr = Debop.Knr
  559. tOpSaldo.Betrag = Debop.Saldo
  560. tOpSaldo.BetragFW = Debop.Saldo NO-ERROR.
  561. END.
  562. DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
  563. cMessage = SUBSTITUTE(' Anzahl eingefügte Belege -> &1', xx).
  564. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  565. ii = ETIME(TRUE).
  566. DO WHILE ETIME < 1000:
  567. END.
  568. xx = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
  569. cMessage = SUBSTITUTE(' Anzahl eingelesene Belege aus SESAM nach Belegverbuchen -> &1', xx).
  570. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  571. xx = 0.
  572. DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
  573. FOR EACH tDetail:
  574. FIND FIRST tBeleg WHERE tBeleg.OpId = TRIM(STRING(tDetail.DocKey,'>>>>>>>>')) NO-ERROR.
  575. IF NOT AVAILABLE tBeleg THEN NEXT.
  576. iDocKey = tBeleg.DocKey.
  577. FIND FIRST tBelegDetail
  578. WHERE tBelegDetail.DocKey = iDocKey
  579. AND tBelegDetail.DocLine = tDetail.DocLine NO-ERROR.
  580. IF AVAILABLE tBelegDetail THEN NEXT.
  581. FIND FIRST xDetail.
  582. BUFFER-COPY tDetail EXCEPT DocKey TO xDetail
  583. ASSIGN xDetail.DocKey = iDocKey.
  584. /*
  585. tDetail.DocKey = cDocKey.
  586. IF tDetail.DocKey = ? THEN NEXT.
  587. IF tDetail.DocKey = 0 THEN NEXT.
  588. ja = DYNAMIC-FUNCTION('ifBelegDetail':U,
  589. INPUT tDetail.DocKey,
  590. INPUT tDetail.DocLine) NO-ERROR.
  591. IF ja = ? THEN NEXT.
  592. IF ja = TRUE THEN NEXT.
  593. */
  594. DYNAMIC-FUNCTION('updateBelegDetail':U, INPUT htDetail, INPUT 1) NO-ERROR.
  595. tDetail.iStatus = (IF ja THEN 1 ELSE 0).
  596. xx = xx + 1.
  597. IF xx MOD 100 = 0 THEN DO:
  598. DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
  599. cMessage = SUBSTITUTE(' -> bereits eingefuegte BelegDetail -> &1', xx).
  600. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  601. ii = ETIME(TRUE).
  602. DO WHILE ETIME < 500:
  603. END.
  604. DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
  605. END.
  606. END.
  607. DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
  608. cMessage = SUBSTITUTE(' Anzahl eingefuegte BelegDetail -> &1', xx).
  609. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  610. /*
  611. RUN loeschenDoppelteEintraege.
  612. */
  613. OUTPUT TO VALUE(cJournal) NO-MAP NO-CONVERT.
  614. FOR EACH tDebop:
  615. PUT CONTROL tDebop.OpId
  616. ';'
  617. tDebop.KndNr
  618. ';'
  619. tDebop.Firma
  620. ';'
  621. tDebop.Zusatz
  622. ';'
  623. tDebop.Ort
  624. ';'
  625. tDebop.iStatus
  626. ';'
  627. tDebop.Konto
  628. ';'.
  629. lErst = TRUE.
  630. FIND FIRST tBeleg WHERE tBeleg.OpId = tDebop.OpId.
  631. FOR EACH tDetail WHERE tDetail.DocKey = INTEGER(tDebop.OpID):
  632. IF NOT lErst THEN PUT CONTROL ';;;;;;;'.
  633. PUT CONTROL tDetail.Konto
  634. ';'
  635. tDetail.cText
  636. ';'
  637. tDetail.MwstTyp
  638. ';'
  639. TRIM(STRING(tDetail.BetragMwst,'->>>>>>>>9.99'))
  640. ';'
  641. TRIM(STRING(tDetail.Betrag ,'->>>>>>>>9.99'))
  642. ';'
  643. tDetail.BuchTyp
  644. ';'
  645. tDetail.iStatus
  646. CHR(10).
  647. lErst = FALSE.
  648. END.
  649. END.
  650. OUTPUT CLOSE.
  651. END PROCEDURE.
  652. /* _UIB-CODE-BLOCK-END */
  653. &ANALYZE-RESUME
  654. &ENDIF
  655. &IF DEFINED(EXCLUDE-FUELLEN_ZAKOND) = 0 &THEN
  656. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_ZAKOND Procedure
  657. PROCEDURE FUELLEN_ZAKOND :
  658. /*------------------------------------------------------------------------------
  659. Purpose:
  660. Parameters: <none>
  661. Notes:
  662. ------------------------------------------------------------------------------*/
  663. DEF VAR hTZaKo AS HANDLE NO-UNDO.
  664. DEF VAR xx AS INT NO-UNDO.
  665. EMPTY TEMP-TABLE TZaKo.
  666. hTZaKo = BUFFER TZaKo:HANDLE.
  667. FOR EACH Kondi NO-LOCK:
  668. CREATE TZaKo.
  669. ASSIGN TZaKo.ZabId = STRING(Kondi.Kond,'99')
  670. TZaKo.ZabId2 = ''.
  671. END.
  672. DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
  673. xx = 0.
  674. FOR EACH TZaKo:
  675. ja = DYNAMIC-FUNCTION('ifZaKo':U, INPUT TZaKo.ZabId) NO-ERROR.
  676. IF ja = ? THEN NEXT.
  677. IF ja = TRUE THEN NEXT.
  678. DYNAMIC-FUNCTION('updateZabMap':U, INPUT hTZaKo, INPUT 1) NO-ERROR.
  679. END.
  680. DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
  681. END PROCEDURE.
  682. /* _UIB-CODE-BLOCK-END */
  683. &ANALYZE-RESUME
  684. &ENDIF
  685. &IF DEFINED(EXCLUDE-LESEN_OFFENESALDI) = 0 &THEN
  686. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LESEN_OFFENESALDI Procedure
  687. PROCEDURE LESEN_OFFENESALDI :
  688. /*------------------------------------------------------------------------------
  689. Purpose:
  690. Parameters: <none>
  691. Notes:
  692. ------------------------------------------------------------------------------*/
  693. DEF VAR Saldo AS DEC NO-UNDO.
  694. DEF VAR Diff AS DEC NO-UNDO.
  695. DEF VAR cExport AS CHAR NO-UNDO.
  696. DEF BUFFER BDebst FOR Debst.
  697. DYNAMIC-FUNCTION('lesenOpSaldo':U) NO-ERROR.
  698. cExport = SUBSTITUTE('&1tOpSaldo.csv', cTempDir).
  699. OUTPUT TO VALUE(cExport) NO-MAP NO-CONVERT.
  700. FOR EACH tOpSaldo:
  701. EXPORT DELIMITER ';' tOpSaldo.
  702. END.
  703. OUTPUT CLOSE.
  704. FIND FIRST tOpSaldo NO-LOCK NO-ERROR.
  705. IF NOT AVAILABLE tOpSaldo THEN RETURN.
  706. FOR EACH Debst NO-LOCK:
  707. Saldo = 0.
  708. FOR EACH Debop USE-INDEX Debop-k1
  709. WHERE Debop.Firma = Debst.Firma
  710. AND Debop.Knr = Debst.Knr
  711. AND Debop.Fakdat <= 12/31/2018:
  712. FIND FIRST tOpSaldo NO-LOCK USE-INDEX Faknr
  713. WHERE tOpSaldo.OpId = TRIM(STRING(Debop.Faknr,'>>>>>>>>'))
  714. AND tOpSaldo.PkNr = Debst.Knr NO-ERROR.
  715. IF AVAILABLE tOpSaldo THEN Diff = Debop.Saldo - tOpSaldo.Betrag.
  716. ELSE Diff = (IF Debop.Fakdat < (TODAY - 3) THEN Debop.Saldo ELSE 0).
  717. IF Diff <> 0 THEN DO:
  718. Debop.ZahBetr = Debop.ZahBetr + Diff.
  719. Debop.Saldo = Debop.Fakbetr - Debop.Zahbetr - Debop.Skonto.
  720. Debop.Zahdat = TODAY.
  721. END.
  722. Saldo = Saldo + Debop.Saldo.
  723. IF Debop.Saldo <> 0 THEN NEXT.
  724. IF Debop.FakDat > (TODAY - 360) THEN NEXT.
  725. /*
  726. DELETE Debop.
  727. */
  728. END.
  729. IF Saldo = Debst.Saldo THEN NEXT.
  730. FIND BDebst WHERE RECID(BDebst) = RECID(Debst)
  731. EXCLUSIVE-LOCK NO-WAIT NO-ERROR.
  732. IF NOT AVAILABLE BDebst THEN NEXT.
  733. BDebst.Saldo = Saldo.
  734. RELEASE BDebst.
  735. END.
  736. END PROCEDURE.
  737. /* _UIB-CODE-BLOCK-END */
  738. &ANALYZE-RESUME
  739. &ENDIF
  740. &IF DEFINED(EXCLUDE-loeschenDoppelteEintraege) = 0 &THEN
  741. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE loeschenDoppelteEintraege Procedure
  742. PROCEDURE loeschenDoppelteEintraege :
  743. /*------------------------------------------------------------------------------
  744. Purpose:
  745. Parameters: <none>
  746. Notes:
  747. ------------------------------------------------------------------------------*/
  748. OUTPUT TO "C:\Temp\Loeschen.log" APPEND NO-MAP NO-CONVERT.
  749. DEF VAR AnzRec AS INT NO-UNDO.
  750. DEF VAR cWhere AS CHAR NO-UNDO.
  751. DYNAMIC-FUNCTION('lesenBeleg':U).
  752. DO WHILE TRUE:
  753. FOR EACH TBeleg NO-LOCK
  754. BREAK BY TBeleg.OpID
  755. BY TBeleg.DocKey:
  756. IF FIRST-OF ( TBeleg.OpID ) THEN NEXT.
  757. DYNAMIC-FUNCTION('startSQLTransaction':U) NO-ERROR.
  758. ODBC-QUERY = "DELETE FROM [Huber].[dbo].[BelegDetail] "
  759. + "WHERE DocKey = '" + STRING(TBeleg.DocKey) + "' ".
  760. PUT CONTROL ODBC-QUERY ' --> '.
  761. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  762. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  763. ODBC-RECCOUNT = ObjRecordSet:RecordCount
  764. NO-ERROR.
  765. PUT CONTROL ODBC-NULL ' / ' ODBC-RECCOUNT CHR(10).
  766. ODBC-QUERY = "DELETE FROM [Huber].[dbo].[Beleg] "
  767. + "WHERE OpId = '" + TBeleg.OpId + "' ".
  768. PUT CONTROL ODBC-QUERY ' --> '.
  769. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  770. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  771. ODBC-RECCOUNT = ObjRecordSet:RecordCount
  772. NO-ERROR.
  773. PUT CONTROL ODBC-NULL ' / ' ODBC-RECCOUNT CHR(10) CHR(10).
  774. DYNAMIC-FUNCTION('closeSQLTransaction':U) NO-ERROR.
  775. END.
  776. LEAVE.
  777. END.
  778. OUTPUT CLOSE.
  779. END PROCEDURE.
  780. /* _UIB-CODE-BLOCK-END */
  781. &ANALYZE-RESUME
  782. &ENDIF
  783. &IF DEFINED(EXCLUDE-REORG_DB) = 0 &THEN
  784. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_DB Procedure
  785. PROCEDURE REORG_DB :
  786. /*------------------------------------------------------------------------------
  787. Purpose:
  788. Parameters: <none>
  789. Notes:
  790. ------------------------------------------------------------------------------*/
  791. DEF VAR AnzRec AS INT NO-UNDO.
  792. DEF VAR cWhere AS CHAR NO-UNDO.
  793. AnzRec = DYNAMIC-FUNCTION('lesenBeleg':U) NO-ERROR.
  794. cMessage = SUBSTITUTE('REORG OP&1Anzahl gelesene Records = &2', CHR(10), AnzRec).
  795. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  796. /*
  797. DO WHILE TRUE:
  798. IF AnzRec = ? THEN LEAVE.
  799. IF AnzRec = 0 THEN LEAVE.
  800. FOR EACH TBeleg NO-LOCK:
  801. FIND Debop NO-LOCK USE-INDEX Debop-k1
  802. WHERE Debop.Firma = '1000'
  803. AND Debop.Knr = TBeleg.KndNr
  804. AND Debop.Faknr = INTEGER(TBeleg.OpId) NO-ERROR.
  805. IF AVAILABLE Debop THEN NEXT.
  806. ODBC-QUERY = "DELETE FROM [Huber].[dbo].[BelegDetail] "
  807. + "WHERE DocKey = '" + STRING(TBeleg.DocKey) + "' ".
  808. PUT CONTROL ODBC-QUERY ' --> '.
  809. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  810. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  811. NO-ERROR.
  812. PUT CONTROL ODBC-NULL CHR(10) CHR(13).
  813. ODBC-QUERY = "DELETE FROM [Huber].[dbo].[Beleg] "
  814. + "WHERE OpId = '" + TBeleg.OpId + "' ".
  815. PUT CONTROL ODBC-QUERY ' --> '.
  816. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  817. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  818. NO-ERROR.
  819. PUT CONTROL ODBC-NULL CHR(10) CHR(13).
  820. END.
  821. LEAVE.
  822. END.
  823. AnzRec = DYNAMIC-FUNCTION('lesenBelegDetail':U) NO-ERROR.
  824. PUT CONTROL 'REORG DETAIL' CHR(10) CHR(13)
  825. 'Anzahl gelesene Records = ' STRING(AnzRec) CHR(10) CHR(13).
  826. DO WHILE TRUE:
  827. IF AnzRec = ? THEN LEAVE.
  828. IF AnzRec = 0 THEN LEAVE.
  829. FOR EACH TBelegDetail NO-LOCK:
  830. ODBC-QUERY = "SELECT [OpId] FROM [Huber].[dbo].[Beleg] "
  831. + "WHERE DocKey = '" + STRING(TBelegDetail.DocKey) + "' ".
  832. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  833. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  834. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  835. IF ODBC-RECCOUNT <> ? AND
  836. ODBC-RECCOUNT <> 0 THEN NEXT.
  837. AnzRec = AnzRec + 1.
  838. ODBC-QUERY = "DELETE FROM [Huber].[dbo].[BelegDetail] "
  839. + "WHERE DocKey = '" + STRING(TBelegDetail.DocKey) + "' "
  840. + "AND DocLine = '" + STRING(TBelegDetail.DocLine) + "' " .
  841. PUT CONTROL ODBC-QUERY ' --> '.
  842. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  843. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  844. NO-ERROR.
  845. PUT CONTROL ODBC-NULL CHR(10) CHR(13).
  846. END.
  847. LEAVE.
  848. END.
  849. */
  850. END PROCEDURE.
  851. /* _UIB-CODE-BLOCK-END */
  852. &ANALYZE-RESUME
  853. &ENDIF
  854. &IF DEFINED(EXCLUDE-RUNDEN) = 0 &THEN
  855. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUNDEN Procedure
  856. PROCEDURE RUNDEN :
  857. /*------------------------------------------------------------------------------
  858. Purpose:
  859. Parameters: <none>
  860. Notes:
  861. ------------------------------------------------------------------------------*/
  862. DEF INPUT PARAMETER Rundcode AS INT NO-UNDO.
  863. DEF INPUT-OUTPUT PARAMETER Rundbetr AS DEC DECIMALS 4 NO-UNDO.
  864. DEF VAR VBetr AS DEC DECIMALS 4 NO-UNDO.
  865. DEF VAR VOp AS DEC INIT 0.2 NO-UNDO.
  866. DEF VAR XPChar AS CHAR NO-UNDO.
  867. DO TRANSACTION:
  868. VBetr = Rundbetr.
  869. IF Rundcode = 1 THEN DO:
  870. VBetr = ROUND((VBetr / 100 * VOp), 4) / VOp * 100.
  871. END.
  872. IF Rundcode = 2 THEN DO:
  873. VBetr = ROUND((VBetr / 100), 3) * 100.
  874. END.
  875. IF Rundcode = 3 THEN DO:
  876. VBetr = VBetr + 0.0499.
  877. VBetr = ROUND((VBetr / 100), 3) * 100.
  878. END.
  879. IF Rundcode = 4 THEN DO:
  880. VBetr = VBetr - 0.0500.
  881. VBetr = ROUND((VBetr / 100), 3) * 100.
  882. END.
  883. IF Rundcode = 5 THEN DO:
  884. VBetr = ROUND((VBetr / 100), 2) * 100.
  885. END.
  886. IF Rundcode = 6 THEN DO:
  887. VBetr = VBetr + 0.4999.
  888. VBetr = ROUND((VBetr / 100), 2) * 100.
  889. END.
  890. IF Rundcode = 7 THEN DO:
  891. VBetr = VBetr - 0.5000.
  892. VBetr = ROUND((VBetr / 100), 2) * 100.
  893. END.
  894. IF Rundcode = 8 THEN DO:
  895. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  896. END.
  897. IF Rundcode = 9 THEN DO:
  898. VBetr = VBetr + 4.9999.
  899. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  900. END.
  901. IF Rundcode = 10 THEN DO:
  902. VBetr = VBetr - 5.0000.
  903. VBetr = ROUND((VBetr / 1000), 2) * 1000.
  904. END.
  905. IF Rundcode = 99 THEN DO:
  906. XPChar = STRING(VBetr,"-99999999.999").
  907. VBetr = DECIMAL(SUBSTRING(XPChar,01,12)).
  908. IF SUBSTRING(XPChar,13,01) > "4" THEN VBetr = VBetr + 0.01.
  909. END.
  910. Rundbetr = VBetr.
  911. END.
  912. END PROCEDURE.
  913. /* _UIB-CODE-BLOCK-END */
  914. &ANALYZE-RESUME
  915. &ENDIF
  916. &IF DEFINED(EXCLUDE-SEND_WEBREQUEST) = 0 &THEN
  917. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEND_WEBREQUEST Procedure
  918. PROCEDURE SEND_WEBREQUEST :
  919. /*------------------------------------------------------------------------------
  920. Purpose:
  921. Parameters: <none>
  922. Notes:
  923. ------------------------------------------------------------------------------*/
  924. DEF VAR hWebserver AS HANDLE NO-UNDO.
  925. DEF VAR cConn AS CHAR NO-UNDO.
  926. DEF VAR fio AS LOG NO-UNDO.
  927. DEF VAR cWebHost AS CHAR NO-UNDO
  928. INIT '192.168.99.10'.
  929. DEF VAR cWebPort AS CHAR NO-UNDO
  930. INIT '8080'.
  931. DEF VAR cWebHead AS CHAR NO-UNDO
  932. INIT 'webspeed/cgi'.
  933. DEF VAR cWebPath AS CHAR NO-UNDO
  934. INIT 'cgiip.exe/WService=wsEShop/'.
  935. DEF VAR vparam AS CHAR NO-UNDO.
  936. DEF VAR vURL AS CHAR NO-UNDO.
  937. DEF VAR Aufnr AS INT NO-UNDO.
  938. DEF VAR vBuff AS MEMPTR NO-UNDO.
  939. DEF VAR cc AS INT NO-UNDO.
  940. DEF VAR dd AS INT NO-UNDO.
  941. DEF VAR cURL AS CHAR NO-UNDO.
  942. DEF VAR iTime AS INT NO-UNDO.
  943. DEF VAR xTime AS INT NO-UNDO.
  944. CrLf = CHR(10)+ CHR(13).
  945. CREATE SOCKET hWebserver.
  946. hWebserver:SET-READ-RESPONSE-PROCEDURE('lesenWebantwort').
  947. cConn = '-H ' + cWebHost + ' -S ' + cWebPort.
  948. fio = hWebserver:CONNECT(cConn) NO-ERROR.
  949. IF NOT fio OR
  950. hWebserver:CONNECTED() = FALSE THEN DO:
  951. MESSAGE 'Kein Verbindung zu Webserver' view-as alert-box.
  952. hWebserver:DISCONNECT() NO-ERROR.
  953. DELETE OBJECT hWebserver NO-ERROR.
  954. RETURN.
  955. END.
  956. cWebHead = cWebHost + ':' + cWebPort + '/' + cWebHead.
  957. vParam = 'ipFrom=SESAM&ipTo=walter.riechsteiner@adprime.ch&ipCC=&ipBC=&ipSubject=SESAM-Meldung&ipBody=Anhang mit SESAM-Logfile&ipAttach='.
  958. vURL = 'http://' + cWebHead + '/' + cWebPath
  959. + '/send_mail.p'.
  960. WebString = ''.
  961. vURL = 'POST '
  962. + vURL
  963. + ' HTTP/1.0'
  964. + CrLf
  965. + 'Content-Type: application/x-www-form-urlencoded'
  966. + CrLf
  967. + 'Content-Length:'
  968. + STRING(LENGTH(vParam))
  969. + CrLf
  970. + CrLf
  971. + vParam
  972. + CrLf.
  973. SET-SIZE(vBuff) = 0.
  974. SET-SIZE(vBuff) = LENGTH(vURL) + 1.
  975. SET-BYTE-ORDER(vBuff) = BIG-ENDIAN.
  976. PUT-STRING(vBuff,1) = vURL.
  977. cURl = REPLACE(vURL, CHR(10), '->').
  978. cURl = REPLACE(cURL, CHR(13), '').
  979. iTime = ETIME(FALSE).
  980. DO WHILE (ETIME - iTime) < 30000:
  981. hWebserver:WRITE(vBuff, 1, LENGTH(vURL)) NO-ERROR.
  982. IF ERROR-STATUS:ERROR THEN NEXT.
  983. DO WHILE hWebserver:BYTES-WRITTEN < LENGTH(vURL):
  984. xTime = ETIME(FALSE).
  985. DO WHILE (ETIME - xTime) < 1000:
  986. END.
  987. END.
  988. DO WHILE hWebserver:GET-BYTES-AVAILABLE() > 0:
  989. xTime = ETIME(FALSE).
  990. DO WHILE (ETIME(FALSE) - xTime) < 1000:
  991. END.
  992. END.
  993. LEAVE.
  994. END.
  995. SET-SIZE(vBuff) = 0.
  996. MESSAGE 'io' view-as alert-box.
  997. hWebserver:DISCONNECT() NO-ERROR.
  998. DELETE OBJECT hWebserver NO-ERROR.
  999. /*
  1000. http://192.168.99.10:8080/webspeed/cgi/cgiip.exe/WService=wsEShop/
  1001. */
  1002. END PROCEDURE.
  1003. /* _UIB-CODE-BLOCK-END */
  1004. &ANALYZE-RESUME
  1005. &ENDIF
  1006. /* ************************ Function Implementations ***************** */
  1007. &IF DEFINED(EXCLUDE-cancelSQLTransaction) = 0 &THEN
  1008. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION cancelSQLTransaction Procedure
  1009. FUNCTION cancelSQLTransaction RETURNS LOGICAL
  1010. ( /* parameter-definitions */ ) :
  1011. /*------------------------------------------------------------------------------
  1012. Purpose:
  1013. Notes:
  1014. ------------------------------------------------------------------------------*/
  1015. ODBC-QUERY = 'ROLLBACK'.
  1016. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1017. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
  1018. END FUNCTION.
  1019. /* _UIB-CODE-BLOCK-END */
  1020. &ANALYZE-RESUME
  1021. &ENDIF
  1022. &IF DEFINED(EXCLUDE-CloseConnection) = 0 &THEN
  1023. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CloseConnection Procedure
  1024. FUNCTION CloseConnection RETURNS LOGICAL
  1025. ( /* parameter-definitions */ ) :
  1026. /*------------------------------------------------------------------------------
  1027. Purpose:
  1028. Notes:
  1029. ------------------------------------------------------------------------------*/
  1030. ObjConnection:Close NO-ERROR.
  1031. RELEASE OBJECT ObjConnection NO-ERROR.
  1032. RELEASE OBJECT ObjCommand NO-ERROR.
  1033. RELEASE OBJECT ObjRecordSet NO-ERROR.
  1034. RETURN TRUE.
  1035. END FUNCTION.
  1036. /* _UIB-CODE-BLOCK-END */
  1037. &ANALYZE-RESUME
  1038. &ENDIF
  1039. &IF DEFINED(EXCLUDE-closeSQLTransaction) = 0 &THEN
  1040. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION closeSQLTransaction Procedure
  1041. FUNCTION closeSQLTransaction RETURNS LOGICAL
  1042. ( /* parameter-definitions */ ) :
  1043. /*------------------------------------------------------------------------------
  1044. Purpose:
  1045. Notes:
  1046. ------------------------------------------------------------------------------*/
  1047. ODBC-QUERY = 'COMMIT'.
  1048. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1049. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
  1050. END FUNCTION.
  1051. /* _UIB-CODE-BLOCK-END */
  1052. &ANALYZE-RESUME
  1053. &ENDIF
  1054. &IF DEFINED(EXCLUDE-CreateConnection) = 0 &THEN
  1055. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateConnection Procedure
  1056. FUNCTION CreateConnection RETURNS LOGICAL
  1057. ( /* parameter-definitions */ ) :
  1058. /*------------------------------------------------------------------------------
  1059. Purpose:
  1060. Notes:
  1061. ------------------------------------------------------------------------------*/
  1062. DEF VAR cConnCommand AS CHAR NO-UNDO.
  1063. DEF VAR cDSN AS CHAR NO-UNDO.
  1064. DEF VAR cServer AS CHAR NO-UNDO.
  1065. DEF VAR ix AS INT NO-UNDO.
  1066. DEF VAR ii AS INT NO-UNDO.
  1067. DEF VAR cMessage AS CHAR NO-UNDO.
  1068. Create "ADODB.Connection" ObjConnection NO-ERROR.
  1069. Create "ADODB.RecordSet" ObjRecordSet NO-ERROR.
  1070. Create "ADODB.Command" ObjCommand NO-ERROR.
  1071. GET-KEY-VALUE SECTION 'Grundeinstellungen'
  1072. KEY 'SQLServer'
  1073. VALUE cServer.
  1074. IF cServer = ? THEN RETURN FALSE.
  1075. IF cServer = '' THEN RETURN FALSE.
  1076. GET-KEY-VALUE SECTION 'Grundeinstellungen'
  1077. KEY 'SQLDSN'
  1078. VALUE cDSN.
  1079. IF cDSN = ? THEN RETURN FALSE.
  1080. IF cDSN = '' THEN RETURN FALSE.
  1081. ASSIGN ODBC-STATUS = ''
  1082. ODBC-NULL = ''
  1083. ODBC-DSN = cDSN
  1084. ODBC-SERVER = cServer
  1085. ODBC-USERID = 'gebtools'
  1086. ODBC-PASSWD = 'gebtools'
  1087. ODBC-QUERY = ''.
  1088. cConnCommand = 'data source='
  1089. + ODBC-DSN
  1090. + ';server='
  1091. + ODBC-SERVER
  1092. .
  1093. ObjConnection:Open ( cConnCommand, ODBC-USERID, ODBC-PASSWD, 0 ) NO-ERROR.
  1094. If ( ERROR-STATUS:NUM-MESSAGES > 0 ) THEN DO:
  1095. ii = ERROR-STATUS:NUM-MESSAGES.
  1096. ODBC-STATUS = "Error: keine Verbindung zu Datenserver "
  1097. + cConnCommand.
  1098. cMessage = ODBC-STATUS.
  1099. DO ix = 1 TO ii:
  1100. cMessage = cMessage
  1101. + CHR(10)
  1102. + ERROR-STATUS:GET-MESSAGE(ix).
  1103. END.
  1104. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  1105. RETURN FALSE.
  1106. END.
  1107. ASSIGN ObjCommand:ActiveConnection = ObjConnection
  1108. ObjCommand:CommandType = 1 /* adCmdText */
  1109. ObjConnection:CursorLocation = 3 /* adUseClient */
  1110. ObjRecordSet:CursorType = 3 /* adOpenStatic */.
  1111. cMessage = 'Start SESAM SQL mit Connection ' + cConnCommand.
  1112. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  1113. RETURN TRUE.
  1114. END FUNCTION.
  1115. /* _UIB-CODE-BLOCK-END */
  1116. &ANALYZE-RESUME
  1117. &ENDIF
  1118. &IF DEFINED(EXCLUDE-CreateSetDaten) = 0 &THEN
  1119. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CreateSetDaten Procedure
  1120. FUNCTION CreateSetDaten RETURNS CHARACTER
  1121. ( iphBuffer AS HANDLE, ipArt AS INT ) :
  1122. /*------------------------------------------------------------------------------
  1123. Purpose:
  1124. Notes:
  1125. ------------------------------------------------------------------------------*/
  1126. DEF VAR cSet AS CHAR NO-UNDO.
  1127. DEF VAR ii AS INT NO-UNDO.
  1128. DEF VAR hFeld AS HANDLE NO-UNDO.
  1129. DEF VAR cFeld AS CHAR NO-UNDO.
  1130. DEF VAR cInhalt AS CHAR NO-UNDO.
  1131. DEF VAR cFelder AS CHAR NO-UNDO.
  1132. DEF VAR cInhalte AS CHAR NO-UNDO.
  1133. DEF VAR xFeld AS CHAR NO-UNDO.
  1134. DEF VAR xInhalt AS CHAR NO-UNDO.
  1135. cSet = ''.
  1136. cFelder = ''.
  1137. cInhalte = ''.
  1138. DO ii = 1 TO iphBuffer:NUM-FIELDS:
  1139. hFeld = iphBuffer:BUFFER-FIELD(ii).
  1140. IF hFeld:BUFFER-VALUE(0) = ? THEN NEXT.
  1141. cFeld = hFeld:NAME.
  1142. IF cFeld = 'cCode' THEN cFeld = 'Code'. /* ProgressSchlüsselFeld */
  1143. IF cFeld = 'cText' THEN cFeld = 'Text'. /* ProgressSchlüsselFeld */
  1144. IF cFeld = 'iStatus' THEN NEXT. /* Kein SQL-Feld */
  1145. DO WHILE TRUE:
  1146. IF hFeld:BUFFER-VALUE(0) <> ? AND
  1147. hFeld:BUFFER-VALUE(0) <> '?' THEN LEAVE.
  1148. CASE hFeld:DATA-TYPE:
  1149. WHEN 'INTEGER' THEN hFeld:BUFFER-VALUE(0) = '0'.
  1150. WHEN 'DECIMAL' THEN hFeld:BUFFER-VALUE(0) = '0.0'.
  1151. WHEN 'DATE' THEN hFeld:BUFFER-VALUE(0) = ''.
  1152. WHEN 'LOGICAL' THEN hFeld:BUFFER-VALUE(0) = STRING(FALSE).
  1153. OTHERWISE hFeld:BUFFER-VALUE(0) = ''.
  1154. END CASE.
  1155. LEAVE.
  1156. END.
  1157. xFeld = "[" + TRIM(cFeld) + "]".
  1158. xInhalt = TRIM(hFeld:BUFFER-VALUE(0)).
  1159. xInhalt = REPLACE(xInhalt, "'", '"').
  1160. xInhalt = "'" + xInhalt + "'".
  1161. cInhalte = cInhalte + "," + xInhalt.
  1162. cFelder = cFelder + "," + xFeld.
  1163. END.
  1164. cInhalte = SUBSTRING(cInhalte,02).
  1165. cFelder = SUBSTRING(cFelder ,02).
  1166. CASE ipArt:
  1167. WHEN 1 THEN DO:
  1168. cSet = '('
  1169. + cFelder
  1170. + ') VALUES ('
  1171. + cInhalte
  1172. + ')'.
  1173. END.
  1174. WHEN 0 THEN DO:
  1175. cSet = 'SET '.
  1176. DO ii = 1 TO NUM-ENTRIES(cFelder, ','):
  1177. cSet = cSet + ENTRY(ii, cFelder, ',')
  1178. + ' = '
  1179. + ENTRY(ii, cInhalte, ',').
  1180. IF ii < NUM-ENTRIES(cFelder, ',') THEN cSet = cSet + ', '.
  1181. END.
  1182. END.
  1183. END CASE.
  1184. RETURN cSet.
  1185. END FUNCTION.
  1186. /* _UIB-CODE-BLOCK-END */
  1187. &ANALYZE-RESUME
  1188. &ENDIF
  1189. &IF DEFINED(EXCLUDE-getDocKey) = 0 &THEN
  1190. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getDocKey Procedure
  1191. FUNCTION getDocKey RETURNS INTEGER
  1192. ( ipDocKey AS INT ) :
  1193. /*------------------------------------------------------------------------------
  1194. Purpose:
  1195. Notes:
  1196. ------------------------------------------------------------------------------*/
  1197. DEF VAR iDocKey AS INT NO-UNDO.
  1198. iDocKey = ipDocKey.
  1199. ODBC-QUERY = "SELECT [DocKey] FROM [Huber].[dbo].[Beleg] "
  1200. + "WHERE OpId = '" + STRING(ipDocKey,'999999') + "' ".
  1201. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1202. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  1203. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1204. DO WHILE TRUE:
  1205. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  1206. IF ODBC-RECCOUNT = ? THEN LEAVE.
  1207. ObjRecordSet:MoveFirst NO-ERROR.
  1208. iDocKey = ObjRecordSet:FIELDS("DocKey"):VALUE.
  1209. LEAVE.
  1210. END.
  1211. RETURN iDocKey.
  1212. END FUNCTION.
  1213. /* _UIB-CODE-BLOCK-END */
  1214. &ANALYZE-RESUME
  1215. &ENDIF
  1216. &IF DEFINED(EXCLUDE-getLogName) = 0 &THEN
  1217. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogName Procedure
  1218. FUNCTION getLogName RETURNS CHARACTER
  1219. ( /* parameter-definitions */ ) :
  1220. /*------------------------------------------------------------------------------
  1221. Purpose:
  1222. Notes:
  1223. ------------------------------------------------------------------------------*/
  1224. DEF VAR cPath AS CHAR NO-UNDO.
  1225. GET-KEY-VALUE SECTION 'GrundEinstellungen'
  1226. KEY 'SESAM_SQL_LOG'
  1227. VALUE cPath.
  1228. IF cPath = '' OR
  1229. cPath = ? THEN cPath = SESSION:TEMP-DIRECTORY.
  1230. IF SUBSTRING(cPath, LENGTH(cPath), 01) <> '/' AND
  1231. SUBSTRING(cPath, LENGTH(cPath), 01) <> '\' THEN cPath = cPath + '\'.
  1232. cPath = cPath
  1233. + 'SESAMSQL-'
  1234. + REPLACE(STRING(TODAY,'99.99.9999'), '.', '') + '.Log'.
  1235. RETURN cPath.
  1236. END FUNCTION.
  1237. /* _UIB-CODE-BLOCK-END */
  1238. &ANALYZE-RESUME
  1239. &ENDIF
  1240. &IF DEFINED(EXCLUDE-getODBCDaten) = 0 &THEN
  1241. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getODBCDaten Procedure
  1242. FUNCTION getODBCDaten RETURNS LOGICAL
  1243. ( iphBuffer AS HANDLE ) :
  1244. /*------------------------------------------------------------------------------
  1245. Purpose:
  1246. Notes:
  1247. ------------------------------------------------------------------------------*/
  1248. DEF VAR ii AS INT NO-UNDO.
  1249. DEF VAR hFeld AS HANDLE NO-UNDO.
  1250. DEF VAR cFeld AS CHAR NO-UNDO.
  1251. DO ii = 1 TO iphBuffer:NUM-FIELDS:
  1252. hFeld = iphBuffer:BUFFER-FIELD(ii).
  1253. cFeld = hFeld:NAME.
  1254. hFeld:BUFFER-VALUE(0) = ObjRecordSet:FIELDS(cFeld):VALUE NO-ERROR.
  1255. END.
  1256. END FUNCTION.
  1257. /* _UIB-CODE-BLOCK-END */
  1258. &ANALYZE-RESUME
  1259. &ENDIF
  1260. &IF DEFINED(EXCLUDE-ifMwst) = 0 &THEN
  1261. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION ifMwst Procedure
  1262. FUNCTION ifMwst RETURNS LOGICAL
  1263. ( ipMwstId AS CHAR ) :
  1264. /*------------------------------------------------------------------------------
  1265. Purpose:
  1266. Notes:
  1267. ------------------------------------------------------------------------------*/
  1268. ODBC-QUERY = "SELECT MwstId "
  1269. + "FROM [Huber].[dbo].[MwstMap] WHERE MwstId = '"
  1270. + ipMwstId
  1271. + "' ".
  1272. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1273. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, '', 32 )
  1274. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1275. IF ODBC-RECCOUNT = ? THEN ODBC-RECCOUNT = 0.
  1276. IF ODBC-RECCOUNT = 0 THEN RETURN FALSE.
  1277. ELSE RETURN TRUE .
  1278. END FUNCTION.
  1279. /* _UIB-CODE-BLOCK-END */
  1280. &ANALYZE-RESUME
  1281. &ENDIF
  1282. &IF DEFINED(EXCLUDE-ifZaKo) = 0 &THEN
  1283. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION ifZaKo Procedure
  1284. FUNCTION ifZaKo RETURNS LOGICAL
  1285. ( ipZabId AS CHAR ) :
  1286. /*------------------------------------------------------------------------------
  1287. Purpose:
  1288. Notes:
  1289. ------------------------------------------------------------------------------*/
  1290. ODBC-QUERY = "SELECT ZabId "
  1291. + "FROM [Huber].[dbo].[ZabMap] WHERE ZabId = '"
  1292. + ipZabId
  1293. + "' ".
  1294. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1295. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, '', 32 )
  1296. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1297. IF ODBC-RECCOUNT = ? THEN ODBC-RECCOUNT = 0.
  1298. IF ODBC-RECCOUNT = 0 THEN RETURN FALSE.
  1299. ELSE RETURN TRUE .
  1300. END FUNCTION.
  1301. /* _UIB-CODE-BLOCK-END */
  1302. &ANALYZE-RESUME
  1303. &ENDIF
  1304. &IF DEFINED(EXCLUDE-lesenBeleg) = 0 &THEN
  1305. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBeleg Procedure
  1306. FUNCTION lesenBeleg RETURNS INTEGER
  1307. ( /* parameter-definitions */ ) :
  1308. /*------------------------------------------------------------------------------
  1309. Purpose:
  1310. Notes:
  1311. ------------------------------------------------------------------------------*/
  1312. EMPTY TEMP-TABLE tBeleg.
  1313. ODBC-QUERY = 'SELECT [OpId],[KndNr],[DocKey] FROM [Huber].[dbo].[Beleg]'.
  1314. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1315. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  1316. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1317. DO WHILE TRUE:
  1318. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  1319. IF ODBC-RECCOUNT = ? THEN LEAVE.
  1320. ODBC-CURSOR = 0.
  1321. ObjRecordSet:MoveFirst NO-ERROR.
  1322. DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
  1323. CREATE tBeleg.
  1324. ASSIGN tBeleg.Opid = ObjRecordSet:FIELDS("OpId") :VALUE
  1325. tBeleg.KndNr = ObjRecordSet:FIELDS("KndNr") :VALUE.
  1326. tBeleg.DocKey = ObjRecordSet:FIELDS("DocKey"):VALUE.
  1327. ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
  1328. ObjRecordSet:MoveNext NO-ERROR.
  1329. END.
  1330. LEAVE.
  1331. END.
  1332. RETURN ODBC-RECCOUNT.
  1333. END FUNCTION.
  1334. /* _UIB-CODE-BLOCK-END */
  1335. &ANALYZE-RESUME
  1336. &ENDIF
  1337. &IF DEFINED(EXCLUDE-lesenBelegDetail) = 0 &THEN
  1338. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenBelegDetail Procedure
  1339. FUNCTION lesenBelegDetail RETURNS INTEGER
  1340. ( /* parameter-definitions */ ) :
  1341. /*------------------------------------------------------------------------------
  1342. Purpose:
  1343. Notes:
  1344. ------------------------------------------------------------------------------*/
  1345. EMPTY TEMP-TABLE TBelegDetail.
  1346. ODBC-QUERY = 'SELECT [DocKey],[DocLine] FROM [Huber].[dbo].[BelegDetail]'.
  1347. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1348. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  1349. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1350. DO WHILE TRUE:
  1351. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  1352. IF ODBC-RECCOUNT = ? THEN LEAVE.
  1353. ODBC-CURSOR = 0.
  1354. ObjRecordSet:MoveFirst NO-ERROR.
  1355. DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
  1356. CREATE TBelegDetail.
  1357. ASSIGN TBelegDetail.DocKey = ObjRecordSet:FIELDS("DocKey") :VALUE
  1358. TBelegDetail.DocLine = ObjRecordSet:FIELDS("DocLine"):VALUE.
  1359. ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
  1360. ObjRecordSet:MoveNext NO-ERROR.
  1361. END.
  1362. LEAVE.
  1363. END.
  1364. RETURN ODBC-RECCOUNT.
  1365. END FUNCTION.
  1366. /* _UIB-CODE-BLOCK-END */
  1367. &ANALYZE-RESUME
  1368. &ENDIF
  1369. &IF DEFINED(EXCLUDE-lesenOpSaldo) = 0 &THEN
  1370. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION lesenOpSaldo Procedure
  1371. FUNCTION lesenOpSaldo RETURNS INTEGER
  1372. ( /* parameter-definitions */ ) :
  1373. /*------------------------------------------------------------------------------
  1374. Purpose:
  1375. Notes:
  1376. ------------------------------------------------------------------------------*/
  1377. EMPTY TEMP-TABLE TOpSaldo.
  1378. /*
  1379. FOR EACH xOpSaldo:
  1380. CREATE tOpSaldo.
  1381. BUFFER-COPY xOpSaldo TO tOpSaldo.
  1382. END.
  1383. */
  1384. ODBC-QUERY = "SELECT * FROM [Huber].[dbo].[OpListe] WHERE OpId > '300000' ".
  1385. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1386. ObjRecordSet = ObjCommand:EXECUTE ( OUTPUT ODBC-NULL, "", 32 )
  1387. ODBC-RECCOUNT = ObjRecordSet:RecordCount NO-ERROR.
  1388. DO WHILE TRUE:
  1389. IF ODBC-RECCOUNT = 0 THEN LEAVE.
  1390. IF ODBC-RECCOUNT = ? THEN LEAVE.
  1391. ODBC-CURSOR = 0.
  1392. ObjRecordSet:MoveFirst NO-ERROR.
  1393. DO WHILE ODBC-CURSOR < ODBC-RECCOUNT:
  1394. CREATE TOpSaldo.
  1395. ASSIGN TOpSaldo.Opid = ObjRecordSet:FIELDS("OpId") :VALUE
  1396. TOpSaldo.PkNr = ObjRecordSet:FIELDS("PkNr") :VALUE
  1397. TOpSaldo.Betrag = ObjRecordSet:FIELDS("Betrag") :VALUE
  1398. TOpSaldo.BetragFW = ObjRecordSet:FIELDS("BetragFW"):VALUE.
  1399. ASSIGN ODBC-CURSOR = ODBC-CURSOR + 1.
  1400. ObjRecordSet:MoveNext NO-ERROR.
  1401. END.
  1402. LEAVE.
  1403. END.
  1404. RETURN ODBC-RECCOUNT.
  1405. END FUNCTION.
  1406. /* _UIB-CODE-BLOCK-END */
  1407. &ANALYZE-RESUME
  1408. &ENDIF
  1409. &IF DEFINED(EXCLUDE-MAKE_DATUM) = 0 &THEN
  1410. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION MAKE_DATUM Procedure
  1411. FUNCTION MAKE_DATUM RETURNS DATE
  1412. ( ipDatum AS CHAR ) :
  1413. /*------------------------------------------------------------------------------
  1414. Purpose:
  1415. Notes:
  1416. ------------------------------------------------------------------------------*/
  1417. DEF VAR cDatum AS CHAR NO-UNDO.
  1418. DEF VAR dDatum AS DATE NO-UNDO INIT ?.
  1419. cDatum = TRIM(SUBSTRING(ipDatum,01,10)).
  1420. IF cDatum = '' THEN cDatum = STRING(YEAR (TODAY),'9999')
  1421. + '-'
  1422. + STRING(MONTH(TODAY),'99')
  1423. + '-'
  1424. + STRING(DAY (TODAY),'99').
  1425. dDatum = DATE(INTEGER(SUBSTRING(cDatum,06,02)),
  1426. INTEGER(SUBSTRING(cDatum,09,02)),
  1427. INTEGER(SUBSTRING(cDatum,01,04))) NO-ERROR.
  1428. IF dDatum = ? THEN dDatum = TODAY.
  1429. RETURN dDatum.
  1430. END FUNCTION.
  1431. /* _UIB-CODE-BLOCK-END */
  1432. &ANALYZE-RESUME
  1433. &ENDIF
  1434. &IF DEFINED(EXCLUDE-setTimeStamp) = 0 &THEN
  1435. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setTimeStamp Procedure
  1436. FUNCTION setTimeStamp RETURNS CHARACTER
  1437. ( ipDatum AS DATE ) :
  1438. /*------------------------------------------------------------------------------
  1439. Purpose:
  1440. Notes:
  1441. ------------------------------------------------------------------------------*/
  1442. DEF VAR cDate AS CHAR NO-UNDO.
  1443. cDate = STRING(YEAR (TODAY),'9999')
  1444. + '-'
  1445. + STRING(MONTH(TODAY),'99')
  1446. + '-'
  1447. + STRING(DAY (TODAY),'99')
  1448. + ' '
  1449. + STRING(TIME,'HH:MM:SS').
  1450. RETURN cDate.
  1451. END FUNCTION.
  1452. /* _UIB-CODE-BLOCK-END */
  1453. &ANALYZE-RESUME
  1454. &ENDIF
  1455. &IF DEFINED(EXCLUDE-startSQLTransaction) = 0 &THEN
  1456. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION startSQLTransaction Procedure
  1457. FUNCTION startSQLTransaction RETURNS LOGICAL
  1458. ( /* parameter-definitions */ ) :
  1459. /*------------------------------------------------------------------------------
  1460. Purpose:
  1461. Notes:
  1462. ------------------------------------------------------------------------------*/
  1463. ODBC-QUERY = 'BEGIN TRANSACTION'.
  1464. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1465. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 ).
  1466. END FUNCTION.
  1467. /* _UIB-CODE-BLOCK-END */
  1468. &ANALYZE-RESUME
  1469. &ENDIF
  1470. &IF DEFINED(EXCLUDE-updateBeleg) = 0 &THEN
  1471. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBeleg Procedure
  1472. FUNCTION updateBeleg RETURNS LOGICAL
  1473. ( ipTHandle AS HANDLE, ipArt AS INT ) :
  1474. /*------------------------------------------------------------------------------
  1475. Purpose:
  1476. Notes:
  1477. ------------------------------------------------------------------------------*/
  1478. DEF VAR cSet AS CHAR NO-UNDO.
  1479. DEF VAR hFeld AS HANDLE NO-UNDO.
  1480. DEF VAR cFeld AS CHAR NO-UNDO.
  1481. cSet = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
  1482. hFeld = ipTHandle:BUFFER-FIELD('OpId').
  1483. cFeld = hFeld:BUFFER-VALUE(0).
  1484. IF ipArt = 1 THEN DO: /* INSERT */
  1485. ODBC-QUERY = "INSERT INTO [Huber].[dbo].[Beleg] "
  1486. + cSet.
  1487. END.
  1488. IF ipArt = 0 THEN DO: /* UPDATE */
  1489. ODBC-QUERY = "UPDATE [Huber].[dbo].[Beleg] "
  1490. + cSet
  1491. + " WHERE OpId = '"
  1492. + cFeld
  1493. + "' ".
  1494. END.
  1495. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1496. ObjRecordSet = ObjCommand:EXECUTE(OUTPUT ODBC-NULL, "", 32)
  1497. NO-ERROR.
  1498. IF ODBC-NULL <> '1' THEN DO:
  1499. OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
  1500. PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
  1501. OUTPUT CLOSE.
  1502. RETURN FALSE.
  1503. END.
  1504. RETURN TRUE.
  1505. END FUNCTION.
  1506. /* _UIB-CODE-BLOCK-END */
  1507. &ANALYZE-RESUME
  1508. &ENDIF
  1509. &IF DEFINED(EXCLUDE-updateBelegDetail) = 0 &THEN
  1510. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateBelegDetail Procedure
  1511. FUNCTION updateBelegDetail RETURNS LOGICAL
  1512. ( ipTHandle AS HANDLE, ipArt AS INT ) :
  1513. /*------------------------------------------------------------------------------
  1514. Purpose:
  1515. Notes:
  1516. ------------------------------------------------------------------------------*/
  1517. DEF VAR cSet AS CHAR NO-UNDO.
  1518. DEF VAR hFeld AS HANDLE NO-UNDO.
  1519. DEF VAR cFaknr AS CHAR NO-UNDO.
  1520. DEF VAR cIndex AS CHAR NO-UNDO.
  1521. cSet = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
  1522. hFeld = ipTHandle:BUFFER-FIELD('DocKey').
  1523. cFaknr = hFeld:BUFFER-VALUE(0).
  1524. hFeld = ipTHandle:BUFFER-FIELD('DocLine').
  1525. cIndex = hFeld:BUFFER-VALUE(0).
  1526. IF ipArt = 1 THEN DO: /* INSERT */
  1527. ODBC-QUERY = "INSERT INTO [Huber].[dbo].[BelegDetail] "
  1528. + cSet.
  1529. END.
  1530. IF ipArt = 0 THEN DO: /* UPDATE */
  1531. ODBC-QUERY = "UPDATE [Huber].[dbo].[BelegDetail] "
  1532. + cSet
  1533. + " WHERE DocKey = '"
  1534. + cFaknr
  1535. + "' "
  1536. + "AND DocLine = '"
  1537. + cIndex
  1538. + "'".
  1539. END.
  1540. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1541. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  1542. NO-ERROR.
  1543. IF ODBC-NULL <> '1' THEN DO:
  1544. OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
  1545. PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
  1546. OUTPUT CLOSE.
  1547. RETURN FALSE.
  1548. END.
  1549. RETURN TRUE.
  1550. END FUNCTION.
  1551. /* _UIB-CODE-BLOCK-END */
  1552. &ANALYZE-RESUME
  1553. &ENDIF
  1554. &IF DEFINED(EXCLUDE-updateMwstMap) = 0 &THEN
  1555. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateMwstMap Procedure
  1556. FUNCTION updateMwstMap RETURNS LOGICAL
  1557. ( ipTHandle AS HANDLE, ipArt AS INT ) :
  1558. /*------------------------------------------------------------------------------
  1559. Purpose:
  1560. Notes:
  1561. ------------------------------------------------------------------------------*/
  1562. DEF VAR cSet AS CHAR NO-UNDO.
  1563. DEF VAR hFeld AS HANDLE NO-UNDO.
  1564. DEF VAR cFeld AS CHAR NO-UNDO.
  1565. cSet = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
  1566. hFeld = ipTHandle:BUFFER-FIELD('MwstId').
  1567. cFeld = hFeld:BUFFER-VALUE(0).
  1568. IF ipArt = 1 THEN DO: /* INSERT */
  1569. ODBC-QUERY = "INSERT INTO [Huber].[dbo].[MwstMap] "
  1570. + cSet.
  1571. END.
  1572. IF ipArt = 0 THEN DO: /* UPDATE */
  1573. ODBC-QUERY = "UPDATE [Huber].[dbo].[MwstMap] "
  1574. + cSet
  1575. + " WHERE MwstId = '"
  1576. + cFeld
  1577. + "'".
  1578. END.
  1579. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1580. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  1581. NO-ERROR.
  1582. IF ODBC-NULL <> '1' THEN DO:
  1583. OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
  1584. PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
  1585. OUTPUT CLOSE.
  1586. RETURN FALSE.
  1587. END.
  1588. RETURN TRUE.
  1589. END FUNCTION.
  1590. /* _UIB-CODE-BLOCK-END */
  1591. &ANALYZE-RESUME
  1592. &ENDIF
  1593. &IF DEFINED(EXCLUDE-updateZabMap) = 0 &THEN
  1594. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION updateZabMap Procedure
  1595. FUNCTION updateZabMap RETURNS LOGICAL
  1596. ( ipTHandle AS HANDLE, ipArt AS INT ) :
  1597. /*------------------------------------------------------------------------------
  1598. Purpose:
  1599. Notes:
  1600. ------------------------------------------------------------------------------*/
  1601. DEF VAR cSet AS CHAR NO-UNDO.
  1602. DEF VAR hFeld AS HANDLE NO-UNDO.
  1603. DEF VAR cFeld AS CHAR NO-UNDO.
  1604. cSet = DYNAMIC-FUNCTION('CreateSetDaten':U, INPUT ipTHandle, INPUT ipArt) NO-ERROR.
  1605. hFeld = ipTHandle:BUFFER-FIELD('ZabId').
  1606. cFeld = hFeld:BUFFER-VALUE(0).
  1607. IF ipArt = 1 THEN DO: /* INSERT */
  1608. ODBC-QUERY = "INSERT INTO [Huber].[dbo].[ZabMap] "
  1609. + cSet.
  1610. END.
  1611. IF ipArt = 0 THEN DO: /* UPDATE */
  1612. ODBC-QUERY = "UPDATE [Huber].[dbo].[ZabMap] "
  1613. + cSet
  1614. + " WHERE ZabId = '"
  1615. + cFeld
  1616. + "'".
  1617. END.
  1618. ASSIGN ObjCommand:CommandText = ODBC-QUERY
  1619. ObjRecordSet = ObjCommand:EXECUTE( OUTPUT ODBC-NULL, "", 32 )
  1620. NO-ERROR.
  1621. IF ODBC-NULL <> '1' THEN DO:
  1622. OUTPUT TO VALUE(cTempName) NO-MAP NO-CONVERT APPEND.
  1623. PUT CONTROL 'Fehler ' ODBC-NULL ' bei ' ODBC-QUERY CHR(10).
  1624. OUTPUT CLOSE.
  1625. RETURN FALSE.
  1626. END.
  1627. RETURN TRUE.
  1628. END FUNCTION.
  1629. /* _UIB-CODE-BLOCK-END */
  1630. &ANALYZE-RESUME
  1631. &ENDIF
  1632. &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
  1633. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile Procedure
  1634. FUNCTION writeLogFile RETURNS LOGICAL
  1635. ( ipMessage AS CHAR ) :
  1636. /*------------------------------------------------------------------------------
  1637. Purpose:
  1638. Notes:
  1639. ------------------------------------------------------------------------------*/
  1640. DEF VAR cString AS CHAR NO-UNDO.
  1641. cString = SUBSTITUTE('&1 &2 -> &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), ipMessage).
  1642. OUTPUT STREAM LogStream TO VALUE(cTempName) APPEND.
  1643. PUT STREAM LogStream CONTROL cString CHR(10).
  1644. OUTPUT STREAM LogStream CLOSE.
  1645. RETURN TRUE.
  1646. END FUNCTION.
  1647. /* _UIB-CODE-BLOCK-END */
  1648. &ANALYZE-RESUME
  1649. &ENDIF