SESAMSQL_Diff.p 61 KB

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