loeschen_rechnung.p 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v9r12
  2. &ANALYZE-RESUME
  3. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
  4. /*------------------------------------------------------------------------
  5. File :
  6. Purpose :
  7. Syntax :
  8. Description :
  9. Author(s) :
  10. Created :
  11. Notes :
  12. ----------------------------------------------------------------------*/
  13. /* This .W file was created with the Progress AppBuilder. */
  14. /*----------------------------------------------------------------------*/
  15. /* *************************** Definitions ************************** */
  16. DEFINE INPUT PARAMETER ipFirma AS CHARACTER NO-UNDO.
  17. DEFINE INPUT PARAMETER ipKnr AS INTEGER NO-UNDO.
  18. DEFINE INPUT PARAMETER ipFaknr AS INTEGER NO-UNDO.
  19. DEFINE INPUT PARAMETER ipVerbuch AS LOG NO-UNDO.
  20. DEFINE INPUT PARAMETER ipNeuFnr AS LOG NO-UNDO.
  21. DEFINE INPUT PARAMETER ipSpez AS LOG NO-UNDO.
  22. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO.
  23. DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO.
  24. DEFINE TEMP-TABLE tSavko LIKE Savko .
  25. DEFINE TEMP-TABLE tSavze LIKE Savze .
  26. DEFINE TEMP-TABLE tSavGebKo LIKE SavGebKo.
  27. DEFINE TEMP-TABLE tSavGKon LIKE SavGKon .
  28. DEFINE TEMP-TABLE tSavRabSu LIKE SavRabSu.
  29. DEFINE TEMP-TABLE tSavSpRab LIKE SavSpRab.
  30. DEFINE TEMP-TABLE tPassant LIKE Passant .
  31. /* _UIB-CODE-BLOCK-END */
  32. &ANALYZE-RESUME
  33. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  34. /* ******************** Preprocessor Definitions ******************** */
  35. &Scoped-define PROCEDURE-TYPE Procedure
  36. &Scoped-define DB-AWARE no
  37. /* _UIB-PREPROCESSOR-BLOCK-END */
  38. &ANALYZE-RESUME
  39. /* *********************** Procedure Settings ************************ */
  40. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  41. /* Settings for THIS-PROCEDURE
  42. Type: Procedure
  43. Allow:
  44. Frames: 0
  45. Add Fields to: Neither
  46. Other Settings: CODE-ONLY COMPILE
  47. */
  48. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  49. /* ************************* Create Window ************************** */
  50. &ANALYZE-SUSPEND _CREATE-WINDOW
  51. /* DESIGN Window definition (used by the UIB)
  52. CREATE WINDOW Procedure ASSIGN
  53. HEIGHT = 15
  54. WIDTH = 60.
  55. /* END WINDOW DEFINITION */
  56. */
  57. &ANALYZE-RESUME
  58. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  59. /* *************************** Main Block *************************** */
  60. FOR EACH Savko NO-LOCK USE-INDEX Savko-k6
  61. WHERE Savko.Firma = ipFirma
  62. AND Savko.Faknr = ipFaknr
  63. AND Savko.Knr = ipKnr:
  64. CREATE tSavko.
  65. BUFFER-COPY Savko TO tSavko.
  66. END.
  67. FIND FIRST tSavko NO-LOCK NO-ERROR.
  68. IF NOT AVAILABLE tSavko THEN RETURN.
  69. FOR EACH tSavko:
  70. FOR EACH Savze NO-LOCK
  71. WHERE Savze.Firma = tSavko.Firma
  72. AND Savze.Aufnr = tSavko.Aufnr :
  73. CREATE tSavze.
  74. BUFFER-COPY Savze TO tSavze.
  75. END.
  76. FOR EACH SavGebKo NO-LOCK
  77. WHERE SavGebKo.Firma = tSavko.Firma
  78. AND SavGebKo.Aufnr = tSavko.Aufnr :
  79. CREATE tSavGebKo.
  80. BUFFER-COPY SavGebKo TO tSavGebKo.
  81. END.
  82. FOR EACH SavGKon NO-LOCK
  83. WHERE SavGKon.Firma = tSavko.Firma
  84. AND SavGKon.Aufnr = tSavko.Aufnr :
  85. CREATE TSavGKon.
  86. BUFFER-COPY SavGKon TO TSavGKon.
  87. END.
  88. FOR EACH SavRabSu NO-LOCK
  89. WHERE SavRabSu.Firma = tSavko.Firma
  90. AND SavRabSu.Aufnr = tSavko.Aufnr :
  91. CREATE tSavRabSu.
  92. BUFFER-COPY SavRabSu TO tSavRabSu.
  93. END.
  94. FOR EACH SavSpRab NO-LOCK USE-INDEX SavSpRab-k1
  95. WHERE SavSpRab.Firma = tSavko.Firma
  96. AND SavSpRab.Aufnr = tSavko.Aufnr:
  97. CREATE tSavSpRab.
  98. BUFFER-COPY SavSpRab TO tSavSpRab.
  99. END.
  100. FOR EACH Passant NO-LOCK
  101. WHERE Passant.Firma = tSavko.Firma
  102. AND Passant.Knr = tSavko.Knr
  103. AND Passant.Faknr = tSavko.Faknr:
  104. CREATE tPassant.
  105. BUFFER-COPY Passant TO tPassant.
  106. END.
  107. END.
  108. cDateiName = 'geloeschte_auftraege.log'.
  109. cBenutzer = DYNAMIC-FUNCTION('getDBUser':U) NO-ERROR.
  110. OUTPUT TO VALUE(cDateiName) APPEND NO-MAP NO-CONVERT.
  111. RUN STORNO.
  112. OUTPUT CLOSE.
  113. RETURN RETURN-VALUE.
  114. /* _UIB-CODE-BLOCK-END */
  115. &ANALYZE-RESUME
  116. /* ********************** Internal Procedures *********************** */
  117. &IF DEFINED(EXCLUDE-STORNO) = 0 &THEN
  118. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE STORNO Procedure
  119. PROCEDURE STORNO :
  120. /*------------------------------------------------------------------------------
  121. Purpose:
  122. Parameters: <none>
  123. Notes:
  124. ------------------------------------------------------------------------------*/
  125. DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
  126. DEFINE VARIABLE cRet AS CHARACTER NO-UNDO.
  127. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  128. DEFINE VARIABLE ja AS LOG NO-UNDO.
  129. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
  130. DEFINE VARIABLE cTotal AS CHARACTER NO-UNDO.
  131. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO.
  132. DEFINE VARIABLE iTrnr1 AS INTEGER INIT 0 NO-UNDO.
  133. DEFINE VARIABLE FBFirma AS CHARACTER NO-UNDO.
  134. DEFINE VARIABLE nTotale AS DECIMAL EXTENT 15 NO-UNDO.
  135. cRet = ''.
  136. FIND FIRST tSavko.
  137. FIND Steuer NO-LOCK
  138. WHERE Steuer.Firma = tSavko.Firma.
  139. FBFirma = Steuer.FBFirma.
  140. IF Steuer.Fwc09 <> '' THEN FBFirma = Steuer.Fwc09.
  141. STORNO:
  142. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  143. FOR EACH tSavko:
  144. ASSIGN
  145. iFaknr = tSavko.Faknr
  146. iKnr = tSavko.Fak_Knr.
  147. PUT CONTROL STRING(NOW,'99.99.9999 HH:MM:SS.SSS')
  148. ' / '
  149. cBenutzer
  150. ' / '
  151. 'Knr = ' STRING(tSavko.Knr,'999999')
  152. ' / '
  153. 'Faknr = ' STRING(tSavko.Faknr,'999999')
  154. ' / '
  155. 'Auftragstotal = ' STRING(tSavko.Auf_Tot,'zzz,zz9.99-')
  156. ' / '
  157. 'Neue Rechnungsnummer = ' STRING(ipNeuFnr,'ja/nein')
  158. ' / '
  159. 'Nochmals verbuchen = ' STRING(ipVerbuch,'ja/nein')
  160. ' / '
  161. 'Spezial löschen = ' STRING(ipSpez,'ja/nein') CHR(10).
  162. FOR EACH tSavze
  163. WHERE tSavze.Firma = tSavko.Firma
  164. AND tSavze.Aufnr = tSavko.Aufnr :
  165. IF tSavze.Artnr = 0 THEN NEXT.
  166. IF NOT tSavze.Verbucht THEN NEXT.
  167. ASSIGN
  168. tSavze.MGeli = tSavze.MGeli * -1
  169. tSavze.Net_Betr = tSavze.Net_Betr * -1
  170. tSavze.Auf_Rab = tSavze.Auf_Rab * -1
  171. tSavze.Abh_Rab = tSavze.Abh_Rab * -1
  172. tSavze.Auf_Sp_Rab = tSavze.Auf_Sp_Rab * -1.
  173. hBuffer = BUFFER tSavze:HANDLE.
  174. ja = DYNAMIC-FUNCTION('buchenArtikel':U,
  175. tSavko.Fak_Knr, hBuffer) NO-ERROR. /* Umsätze zurückbuchen */
  176. IF ipVerbuch OR
  177. ipSpez THEN NEXT.
  178. FIND Artbw OF tSavze NO-ERROR.
  179. IF NOT AVAILABLE Artbw THEN NEXT.
  180. IF NOT Artbw.Lag_Buch THEN
  181. DO:
  182. DELETE Artbw.
  183. NEXT.
  184. END.
  185. FIND ArtLager OF Artbw NO-ERROR.
  186. ASSIGN
  187. ArtLager.Bestand = ArtLager.Bestand - tSavze.MGeli
  188. ArtLager.Ausgang = ArtLager.Ausgang + tSavze.MGeli.
  189. DELETE Artbw.
  190. END.
  191. END.
  192. FIND FIRST tSavko.
  193. DO WHILE TRUE:
  194. FIND Debst USE-INDEX Debst-k1
  195. WHERE Debst.Firma = tSavko.Firma
  196. AND Debst.Knr = tSavko.Fak_Knr NO-ERROR.
  197. FOR EACH Debop USE-INDEX Debop-k1
  198. WHERE Debop.Firma = tSavko.Firma
  199. AND Debop.Knr = iKnr
  200. AND Debop.Faknr = iFaknr :
  201. IF iTrnr1 = 0 THEN iTrnr1 = Debop.Trnr1.
  202. Debst.Saldo = Debst.Saldo - Debop.Saldo.
  203. Debst.Saldo_Frw = Debst.Saldo_Frw - Debop.Saldo_Frw.
  204. DELETE Debop.
  205. END.
  206. FOR EACH Debfa
  207. WHERE Debfa.Firma = tSavko.Firma
  208. AND Debfa.Knr = iKnr
  209. AND Debfa.Faknr = iFaknr:
  210. IF iTrnr1 = 0 THEN iTrnr1 = Debfa.Trnr1.
  211. DELETE Debfa.
  212. END.
  213. FOR EACH Debwu
  214. WHERE Debwu.Firma = tSavko.Firma
  215. AND Debwu.Knr = iKnr
  216. AND Debwu.Faknr = iFaknr:
  217. IF iTrnr1 = 0 THEN iTrnr1 = Debwu.Trnr1.
  218. DELETE Debwu.
  219. END.
  220. FOR EACH Debhi
  221. WHERE Debhi.Firma = tSavko.Firma
  222. AND Debhi.Knr = iKnr
  223. AND Debhi.Faknr = iFaknr:
  224. IF iTrnr1 = 0 THEN iTrnr1 = Debhi.Trnr1.
  225. DELETE Debhi.
  226. END.
  227. FOR EACH Debza
  228. WHERE Debza.Firma = tSavko.Firma
  229. AND Debza.Knr = iKnr
  230. AND Debza.Faknr = iFaknr:
  231. IF iTrnr1 = 0 THEN iTrnr1 = Debza.Trnr1.
  232. DELETE Debza.
  233. END.
  234. FOR EACH Interf
  235. WHERE Interf.Firma = FBFirma
  236. AND Interf.Trnr1 = iTrnr1:
  237. DELETE Interf.
  238. END.
  239. LEAVE.
  240. END.
  241. FOR EACH tSavSpRab:
  242. FIND SavSpRab OF tSavSpRab.
  243. DELETE SavSpRab.
  244. END.
  245. FOR EACH tSavRabSu:
  246. FIND SavRabSu OF tSavRabSu.
  247. DELETE SavRabSu.
  248. END.
  249. FOR EACH TSavGKon:
  250. FIND SavGKon OF TSavGKon.
  251. DO WHILE TRUE:
  252. IF SavGKon.Depot = 0 THEN LEAVE.
  253. FIND LAST GebKontr USE-INDEX GebKontr-k1
  254. WHERE GebKontr.Firma = tSavko.Firma
  255. AND GebKontr.Knr = tSavko.Knr NO-LOCK NO-ERROR.
  256. IF AVAILABLE GebKontr THEN ix = GebKontr.Trnr + 1.
  257. ELSE ix = 1.
  258. CREATE GebKontr.
  259. ASSIGN
  260. GebKontr.Firma = tSavko.Firma
  261. GebKontr.Knr = tSavko.Knr
  262. GebKontr.Trnr = ix
  263. GebKontr.Geb_Cd = SavGKon.Geb_Cd
  264. GebKontr.Datum = tSavko.Fak_Datum
  265. GebKontr.Doknr = tSavko.Faknr
  266. GebKontr.Preis = SavGKon.Depot
  267. GebKontr.Eingang = SavGKon.Eingang * -1
  268. GebKontr.Ausgang = SavGKon.Ausgang * -1
  269. GebKontr.MWST_Cd = SavGKon.MWST_Cd
  270. .
  271. LEAVE.
  272. END.
  273. DELETE SavGKon.
  274. END.
  275. FOR EACH tSavGebKo:
  276. FIND SavGebKo OF tSavGebKo.
  277. DELETE SavGebKo.
  278. END.
  279. FOR EACH tSavze:
  280. FIND Savze OF tSavze.
  281. DELETE Savze.
  282. END.
  283. FOR EACH tSavko:
  284. FIND Savko OF tSavko.
  285. DELETE Savko.
  286. END.
  287. FOR EACH tPassant:
  288. FIND Passant OF tPassant.
  289. DELETE Passant.
  290. END.
  291. IF NOT ipVerbuch AND
  292. NOT ipSpez THEN LEAVE.
  293. FOR EACH tSavze:
  294. ASSIGN
  295. tSavze.MGeli = tSavze.MGeli * -1
  296. tSavze.Net_Betr = tSavze.Net_Betr * -1
  297. tSavze.Auf_Rab = tSavze.Auf_Rab * -1
  298. tSavze.Abh_Rab = tSavze.Abh_Rab * -1
  299. tSavze.Auf_Sp_Rab = tSavze.Auf_Sp_Rab * -1
  300. tSavze.Verbucht = FALSE.
  301. END.
  302. IF ipNeuFnr THEN
  303. DO:
  304. iFaknr = 0.
  305. RUN "v8/steunr.p" ( INPUT 2, OUTPUT iFaknr ).
  306. IF RETURN-VALUE <> '' THEN iFaknr = 0.
  307. END.
  308. FOR EACH tSavko:
  309. CREATE Aufko.
  310. BUFFER-COPY tSavko EXCEPT Faknr Gedruckt TO Aufko
  311. ASSIGN
  312. Aufko.Faknr = iFaknr
  313. Aufko.Gedruckt = FALSE
  314. Aufko.Verbucht = FALSE.
  315. END.
  316. FOR EACH tSavze:
  317. CREATE Aufze.
  318. BUFFER-COPY tSavze TO Aufze.
  319. END.
  320. FOR EACH tSavGebKo:
  321. CREATE AufGebKo.
  322. BUFFER-COPY tSavGebKo TO AufGebKo.
  323. END.
  324. FOR EACH tSavGKon:
  325. CREATE AufGKon.
  326. BUFFER-COPY tSavGKon TO AufGKon.
  327. END.
  328. FOR EACH tSavRabSu:
  329. CREATE AufRabSu.
  330. BUFFER-COPY tSavRabSu TO AufRabSu.
  331. END.
  332. FOR EACH tSavSpRab:
  333. CREATE AufSpRab.
  334. BUFFER-COPY tSavSpRab TO AufSpRab.
  335. END.
  336. DYNAMIC-FUNCTION('createAufGebKo':U, tSavko.Aufnr ) NO-ERROR.
  337. LEAVE.
  338. END.
  339. FOR EACH tSavko:
  340. DYNAMIC-FUNCTION('calculateAuftragsTotal':U, tSavko.Firma,
  341. tSavko.Aufnr,
  342. OUTPUT nTotale ) NO-ERROR.
  343. END.
  344. RETURN cRet.
  345. END PROCEDURE.
  346. /* _UIB-CODE-BLOCK-END */
  347. &ANALYZE-RESUME
  348. &ENDIF