SESAMSQL_DEV.p 68 KB

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