g-verbuchen.w 96 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  4. &Scoped-define FRAME-NAME gVerbuchen
  5. {adecomm/appserv.i}
  6. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gVerbuchen
  7. /*------------------------------------------------------------------------
  8. File:
  9. Description: from cntnrdlg.w - ADM2 SmartDialog Template
  10. Input Parameters:
  11. <none>
  12. Output Parameters:
  13. <none>
  14. Author:
  15. Created:
  16. ------------------------------------------------------------------------*/
  17. /* This .W file was created with the Progress AppBuilder. */
  18. /*----------------------------------------------------------------------*/
  19. /* Create an unnamed pool to store all the widgets created
  20. by this procedure. This is a good default which assures
  21. that this procedure's triggers and internal procedures
  22. will execute in this procedure's storage, and that proper
  23. cleanup will occur on deletion of the procedure. */
  24. CREATE WIDGET-POOL.
  25. /* *************************** Definitions ************************** */
  26. /* Parameters Definitions --- */
  27. DEFINE INPUT PARAMETER ipParam AS CHARACTER NO-UNDO.
  28. DEFINE INPUT PARAMETER ipKontainer AS HANDLE NO-UNDO.
  29. DEFINE OUTPUT PARAMETER oplRetVal AS LOG NO-UNDO.
  30. /* Local Variable Definitions --- */
  31. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  32. DEFINE VARIABLE iRecid AS INTEGER NO-UNDO.
  33. DEFINE VARIABLE cHerk AS CHARACTER NO-UNDO.
  34. DEFINE VARIABLE lBatch AS LOG NO-UNDO.
  35. DEFINE VARIABLE lGebinde AS LOG NO-UNDO.
  36. DEFINE VARIABLE lSammFak AS LOG NO-UNDO.
  37. DEFINE VARIABLE iVonKnr AS INTEGER NO-UNDO.
  38. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
  39. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO.
  40. DEFINE VARIABLE lSendMail AS LOG NO-UNDO.
  41. DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE dSperrDat AS DATE NO-UNDO.
  43. DEFINE VARIABLE dBuchDat AS DATE NO-UNDO.
  44. DEFINE VARIABLE iFakArt AS INTEGER NO-UNDO.
  45. DEFINE VARIABLE iAufSta AS INTEGER NO-UNDO.
  46. DEFINE VARIABLE iTrNr1 AS INTEGER NO-UNDO.
  47. DEFINE VARIABLE iTrNr2 AS INTEGER NO-UNDO.
  48. DEFINE VARIABLE iTrans AS INTEGER NO-UNDO.
  49. DEFINE VARIABLE nFakTotal AS DECIMAL NO-UNDO.
  50. DEFINE VARIABLE nFakTotalFrw AS DECIMAL NO-UNDO.
  51. DEFINE VARIABLE nWW AS DECIMAL NO-UNDO.
  52. DEFINE VARIABLE nSkBer AS DECIMAL NO-UNDO.
  53. DEFINE VARIABLE dMwstDatum AS DATE NO-UNDO.
  54. DEFINE TEMP-TABLE tAuftraege
  55. FIELD cFirma AS CHARACTER
  56. FIELD iAufnr AS INTEGER
  57. FIELD nKurs AS DECIMAL DECIMALS 4
  58. FIELD iFaktor AS INTEGER
  59. .
  60. DEFINE TEMP-TABLE tAufko LIKE Aufko
  61. FIELD cKtoDebitor AS CHARACTER
  62. FIELD cKtoGebinde AS CHARACTER
  63. .
  64. DEFINE TEMP-TABLE tAufze LIKE Aufze.
  65. DEFINE TEMP-TABLE tVerbucht
  66. FIELD Datum AS DATE
  67. FIELD Konto AS CHARACTER
  68. FIELD FakBetr AS DECIMAL
  69. FIELD ZahBetr AS DECIMAL
  70. FIELD Skonto AS DECIMAL
  71. FIELD Frw AS CHARACTER
  72. FIELD nKurs AS DECIMAL DECIMALS 4
  73. FIELD iFaktor AS INTEGER
  74. FIELD FakBetr_Frw AS DECIMAL
  75. FIELD ZahBetr_Frw AS DECIMAL
  76. FIELD Skonto_Frw AS DECIMAL
  77. .
  78. DEFINE TEMP-TABLE tMwst
  79. FIELD iFaknr AS INTEGER
  80. FIELD iCd AS INTEGER
  81. FIELD lInkl AS LOG
  82. FIELD nBetrag AS DECIMAL
  83. FIELD nMwst AS DECIMAL
  84. FIELD nTotal AS DECIMAL
  85. FIELD nBetrag_FRW AS DECIMAL
  86. FIELD nMwst_FRW AS DECIMAL
  87. FIELD nTotal_FRW AS DECIMAL
  88. FIELD Frw AS CHARACTER
  89. FIELD nKurs AS DECIMAL DECIMALS 4
  90. FIELD iFaktor AS INTEGER
  91. FIELD cKonto AS CHARACTER
  92. FIELD nAnsatz AS DECIMAL
  93. .
  94. DEFINE TEMP-TABLE tUmsatz
  95. FIELD cArt AS CHARACTER
  96. FIELD iKnr AS INTEGER
  97. FIELD iArtnr AS INTEGER
  98. FIELD iInhalt AS INTEGER
  99. FIELD iJG AS INTEGER
  100. FIELD iPeriode AS INTEGER
  101. FIELD iJahr AS INTEGER
  102. FIELD nMenge AS DECIMAL
  103. FIELD nLiter AS DECIMAL
  104. FIELD nEp AS DECIMAL
  105. FIELD nVp AS DECIMAL
  106. FIELD nZuschlag AS DECIMAL
  107. FIELD nPorto AS DECIMAL
  108. FIELD nTransp AS DECIMAL
  109. FIELD nVerpack AS DECIMAL
  110. FIELD nAufTot AS DECIMAL
  111. FIELD Frw AS CHARACTER
  112. FIELD nKurs AS DECIMAL DECIMALS 4
  113. FIELD iFaktor AS INTEGER
  114. FIELD cKonto AS CHARACTER
  115. FIELD nZahBetr AS DECIMAL
  116. FIELD nSkonto AS DECIMAL
  117. FIELD nAufTot_Frw AS DECIMAL
  118. FIELD nZahBetr_Frw AS DECIMAL
  119. FIELD nSkonto_Frw AS DECIMAL
  120. .
  121. DEFINE TEMP-TABLE tKonto
  122. FIELD cKto1 AS CHARACTER FORMAT "x(12)"
  123. FIELD cKto2 AS CHARACTER FORMAT "x(12)"
  124. FIELD nBetrag AS DECIMAL
  125. FIELD Frw AS CHARACTER
  126. FIELD nKurs AS DECIMAL
  127. FIELD iFaktor AS INTEGER
  128. FIELD iMWST_Cd AS INTEGER
  129. FIELD lMWSt AS LOG INIT FALSE
  130. FIELD cArt AS CHARACTER
  131. FIELD nBetrag_Frw AS DECIMAL
  132. .
  133. DEFINE TEMP-TABLE tSendMail
  134. FIELD iKnr AS INTEGER
  135. FIELD cKunde AS CHARACTER
  136. FIELD cMail AS CHARACTER
  137. FIELD iFaknr AS INTEGER
  138. .
  139. { properties.i }
  140. { ttsendmail.i }
  141. { incl/dlgdefinition.i }
  142. { src/adm2/widgetprto.i }
  143. /* _UIB-CODE-BLOCK-END */
  144. &ANALYZE-RESUME
  145. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  146. /* ******************** Preprocessor Definitions ******************** */
  147. &Scoped-define PROCEDURE-TYPE SmartDialog
  148. &Scoped-define DB-AWARE no
  149. &Scoped-define ADM-CONTAINER DIALOG-BOX
  150. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  151. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  152. &Scoped-define FRAME-NAME gVerbuchen
  153. /* Standard List Definitions */
  154. &Scoped-Define ENABLED-OBJECTS RECT-2 F_vonFaknr F_bisFaknr F_vonFakKnr ~
  155. F_bisFakKNr F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta Btn_Start ~
  156. Btn_Cancel F_Adresse
  157. &Scoped-Define DISPLAYED-OBJECTS F_vonFaknr F_bisFaknr F_vonFakKnr ~
  158. F_bisFakKNr F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta
  159. /* Custom List Definitions */
  160. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  161. &Scoped-define List-5 F_Adresse
  162. &Scoped-define List-6 F_vonFaknr F_bisFaknr F_vonFakKnr F_bisFakKNr ~
  163. F_vonDatum F_bisDatum F_BuchDat CB_Fakart CB_Aufsta
  164. /* _UIB-PREPROCESSOR-BLOCK-END */
  165. &ANALYZE-RESUME
  166. /* ************************ Function Prototypes ********************** */
  167. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD checkAlleGedruckt gVerbuchen
  168. FUNCTION checkAlleGedruckt RETURNS LOGICAL
  169. ( ipRecid AS RECID ) FORWARD.
  170. /* _UIB-CODE-BLOCK-END */
  171. &ANALYZE-RESUME
  172. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD makeUmsatz gVerbuchen
  173. FUNCTION makeUmsatz RETURNS LOGICAL
  174. ( /* parameter-definitions */ ) FORWARD.
  175. /* _UIB-CODE-BLOCK-END */
  176. &ANALYZE-RESUME
  177. /* *********************** Control Definitions ********************** */
  178. /* Define a dialog box */
  179. /* Definitions of the field level widgets */
  180. DEFINE BUTTON Btn_Cancel AUTO-END-KEY
  181. LABEL "abbrechen"
  182. SIZE 15 BY 1.
  183. DEFINE BUTTON Btn_Start
  184. LABEL "Starten"
  185. SIZE 21 BY 1.
  186. DEFINE VARIABLE CB_Aufsta AS CHARACTER FORMAT "X(256)":U
  187. LABEL "Auftragstatus"
  188. VIEW-AS COMBO-BOX INNER-LINES 5
  189. DROP-DOWN-LIST
  190. SIZE 43.2 BY 1
  191. BGCOLOR 15 NO-UNDO.
  192. DEFINE VARIABLE CB_Fakart AS CHARACTER FORMAT "X(256)":U
  193. LABEL "Faktura-Art"
  194. VIEW-AS COMBO-BOX INNER-LINES 5
  195. DROP-DOWN-LIST
  196. SIZE 43.2 BY 1
  197. BGCOLOR 15 NO-UNDO.
  198. DEFINE VARIABLE F_Adresse AS CHARACTER FORMAT "X(256)":U INITIAL "Hallo"
  199. VIEW-AS FILL-IN NATIVE
  200. SIZE 80 BY 1.05
  201. BGCOLOR 14 NO-UNDO.
  202. DEFINE VARIABLE F_bisDatum AS DATE FORMAT "99.99.9999":U
  203. VIEW-AS FILL-IN NATIVE
  204. SIZE 18.2 BY 1
  205. BGCOLOR 15 NO-UNDO.
  206. DEFINE VARIABLE F_bisFakKNr AS INTEGER FORMAT "999999":U INITIAL 999999
  207. VIEW-AS FILL-IN NATIVE
  208. SIZE 12 BY 1
  209. BGCOLOR 15 NO-UNDO.
  210. DEFINE VARIABLE F_bisFaknr AS INTEGER FORMAT "9999999":U INITIAL 9999999
  211. VIEW-AS FILL-IN NATIVE
  212. SIZE 12 BY 1
  213. BGCOLOR 15 NO-UNDO.
  214. DEFINE VARIABLE F_BuchDat AS DATE FORMAT "99.99.9999":U
  215. LABEL "Verbuchungsdatum"
  216. VIEW-AS FILL-IN NATIVE
  217. SIZE 16 BY 1 TOOLTIP "Wenn kein Datum eingegeben wird, wird das Rechnungsdatum übernommen"
  218. BGCOLOR 15 NO-UNDO.
  219. DEFINE VARIABLE F_vonDatum AS DATE FORMAT "99.99.9999":U INITIAL 01/01/1901
  220. LABEL "von - bis Fakturadatum"
  221. VIEW-AS FILL-IN NATIVE
  222. SIZE 16 BY 1
  223. BGCOLOR 15 NO-UNDO.
  224. DEFINE VARIABLE F_vonFakKnr AS INTEGER FORMAT "999999":U INITIAL 0
  225. LABEL "von - bis Faktura-Kundennummer"
  226. VIEW-AS FILL-IN NATIVE
  227. SIZE 12 BY 1
  228. BGCOLOR 15 NO-UNDO.
  229. DEFINE VARIABLE F_vonFaknr AS INTEGER FORMAT "9999999":U INITIAL 0
  230. LABEL "von - bis Fakturanummer"
  231. VIEW-AS FILL-IN NATIVE
  232. SIZE 12 BY 1
  233. BGCOLOR 15 NO-UNDO.
  234. DEFINE RECTANGLE RECT-2
  235. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  236. SIZE 88 BY 11.91.
  237. /* ************************ Frame Definitions *********************** */
  238. DEFINE FRAME gVerbuchen
  239. F_vonFaknr AT ROW 2 COL 35 COLON-ALIGNED WIDGET-ID 20
  240. F_bisFaknr AT ROW 2 COL 58 COLON-ALIGNED NO-LABEL WIDGET-ID 12
  241. F_vonFakKnr AT ROW 3 COL 35 COLON-ALIGNED WIDGET-ID 24
  242. F_bisFakKNr AT ROW 3 COL 58 COLON-ALIGNED NO-LABEL WIDGET-ID 16
  243. F_vonDatum AT ROW 4 COL 35 COLON-ALIGNED WIDGET-ID 22
  244. F_bisDatum AT ROW 4 COL 58 COLON-ALIGNED NO-LABEL WIDGET-ID 14
  245. F_BuchDat AT ROW 5 COL 35 COLON-ALIGNED WIDGET-ID 18
  246. CB_Fakart AT ROW 7 COL 35 COLON-ALIGNED WIDGET-ID 8
  247. CB_Aufsta AT ROW 8 COL 35 COLON-ALIGNED WIDGET-ID 6
  248. Btn_Start AT ROW 9.52 COL 37 WIDGET-ID 4
  249. Btn_Cancel AT ROW 9.52 COL 64
  250. F_Adresse AT ROW 11.38 COL 3.4 COLON-ALIGNED NO-LABEL WIDGET-ID 10
  251. RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2
  252. SPACE(1.99) SKIP(0.51)
  253. WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER
  254. SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE
  255. TITLE "Verbuchen von Rechnungen"
  256. CANCEL-BUTTON Btn_Cancel WIDGET-ID 100.
  257. /* *********************** Procedure Settings ************************ */
  258. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  259. /* Settings for THIS-PROCEDURE
  260. Type: SmartDialog
  261. Allow: Basic,Browse,DB-Fields,Query,Smart
  262. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  263. Design Page: 1
  264. Other Settings: COMPILE APPSERVER
  265. */
  266. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  267. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gVerbuchen
  268. /* ************************* Included-Libraries *********************** */
  269. {src/adm2/containr.i}
  270. /* _UIB-CODE-BLOCK-END */
  271. &ANALYZE-RESUME
  272. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  273. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  274. /* SETTINGS FOR DIALOG-BOX gVerbuchen
  275. FRAME-NAME */
  276. ASSIGN
  277. FRAME gVerbuchen:SCROLLABLE = FALSE
  278. FRAME gVerbuchen:HIDDEN = TRUE.
  279. /* SETTINGS FOR COMBO-BOX CB_Aufsta IN FRAME gVerbuchen
  280. 6 */
  281. /* SETTINGS FOR COMBO-BOX CB_Fakart IN FRAME gVerbuchen
  282. 6 */
  283. /* SETTINGS FOR FILL-IN F_Adresse IN FRAME gVerbuchen
  284. NO-DISPLAY 5 */
  285. ASSIGN
  286. F_Adresse:HIDDEN IN FRAME gVerbuchen = TRUE.
  287. /* SETTINGS FOR FILL-IN F_bisDatum IN FRAME gVerbuchen
  288. 6 */
  289. /* SETTINGS FOR FILL-IN F_bisFakKNr IN FRAME gVerbuchen
  290. 6 */
  291. /* SETTINGS FOR FILL-IN F_bisFaknr IN FRAME gVerbuchen
  292. 6 */
  293. /* SETTINGS FOR FILL-IN F_BuchDat IN FRAME gVerbuchen
  294. 6 */
  295. /* SETTINGS FOR FILL-IN F_vonDatum IN FRAME gVerbuchen
  296. 6 */
  297. /* SETTINGS FOR FILL-IN F_vonFakKnr IN FRAME gVerbuchen
  298. 6 */
  299. /* SETTINGS FOR FILL-IN F_vonFaknr IN FRAME gVerbuchen
  300. 6 */
  301. /* _RUN-TIME-ATTRIBUTES-END */
  302. &ANALYZE-RESUME
  303. /* Setting information for Queries and Browse Widgets fields */
  304. &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gVerbuchen
  305. /* Query rebuild information for DIALOG-BOX gVerbuchen
  306. _Options = "SHARE-LOCK"
  307. _Query is NOT OPENED
  308. */ /* DIALOG-BOX gVerbuchen */
  309. &ANALYZE-RESUME
  310. /* ************************ Control Triggers ************************ */
  311. &Scoped-define SELF-NAME gVerbuchen
  312. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gVerbuchen gVerbuchen
  313. ON END-ERROR OF FRAME gVerbuchen /* Verbuchen von Rechnungen */
  314. DO:
  315. RUN ENDE.
  316. RETURN NO-APPLY.
  317. END.
  318. /* _UIB-CODE-BLOCK-END */
  319. &ANALYZE-RESUME
  320. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gVerbuchen gVerbuchen
  321. ON WINDOW-CLOSE OF FRAME gVerbuchen /* Verbuchen von Rechnungen */
  322. DO:
  323. RUN ENDE.
  324. RETURN NO-APPLY.
  325. END.
  326. /* _UIB-CODE-BLOCK-END */
  327. &ANALYZE-RESUME
  328. &Scoped-define SELF-NAME Btn_Cancel
  329. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel gVerbuchen
  330. ON CHOOSE OF Btn_Cancel IN FRAME gVerbuchen /* abbrechen */
  331. DO:
  332. RUN ENDE.
  333. RETURN NO-APPLY.
  334. END.
  335. /* _UIB-CODE-BLOCK-END */
  336. &ANALYZE-RESUME
  337. &Scoped-define SELF-NAME Btn_Start
  338. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Start gVerbuchen
  339. ON CHOOSE OF Btn_Start IN FRAME gVerbuchen /* Starten */
  340. DO:
  341. SESSION:SET-WAIT-STATE ('NORMAL').
  342. RUN VERBUCHEN.
  343. SESSION:SET-WAIT-STATE ('').
  344. IF RETURN-VALUE = 'APPLY' THEN RETURN NO-APPLY.
  345. btnOK = TRUE.
  346. RUN ENDE.
  347. RETURN NO-APPLY.
  348. END.
  349. /* _UIB-CODE-BLOCK-END */
  350. &ANALYZE-RESUME
  351. &Scoped-define SELF-NAME CB_Aufsta
  352. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Aufsta gVerbuchen
  353. ON RETURN OF CB_Aufsta IN FRAME gVerbuchen /* Auftragstatus */
  354. DO:
  355. APPLY 'TAB' TO SELF.
  356. END.
  357. /* _UIB-CODE-BLOCK-END */
  358. &ANALYZE-RESUME
  359. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Aufsta gVerbuchen
  360. ON VALUE-CHANGED OF CB_Aufsta IN FRAME gVerbuchen /* Auftragstatus */
  361. DO:
  362. iAufSta = INTEGER(SELF:SCREEN-VALUE).
  363. END.
  364. /* _UIB-CODE-BLOCK-END */
  365. &ANALYZE-RESUME
  366. &Scoped-define SELF-NAME CB_Fakart
  367. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Fakart gVerbuchen
  368. ON RETURN OF CB_Fakart IN FRAME gVerbuchen /* Faktura-Art */
  369. DO:
  370. APPLY 'TAB' TO SELF.
  371. END.
  372. /* _UIB-CODE-BLOCK-END */
  373. &ANALYZE-RESUME
  374. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Fakart gVerbuchen
  375. ON VALUE-CHANGED OF CB_Fakart IN FRAME gVerbuchen /* Faktura-Art */
  376. DO:
  377. iFakArt = INTEGER(SELF:SCREEN-VALUE).
  378. END.
  379. /* _UIB-CODE-BLOCK-END */
  380. &ANALYZE-RESUME
  381. &UNDEFINE SELF-NAME
  382. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gVerbuchen
  383. /* *************************** Main Block *************************** */
  384. { incl/dlgmainblock.i }
  385. iAufnr = INTEGER(ENTRY(1, ipParam, ';')).
  386. iRecid = INTEGER(ENTRY(2, ipParam, ';')).
  387. cHerk = ENTRY(3, ipParam, ';') .
  388. dSperrDat = DYNAMIC-FUNCTION('getSperrDatum':U) NO-ERROR.
  389. oplRetVal = FALSE.
  390. hKontainer = ipKontainer.
  391. lSendMail = FALSE.
  392. CASE cHerk:
  393. WHEN 'A' THEN
  394. lBatch = FALSE.
  395. OTHERWISE
  396. lBatch = TRUE.
  397. END CASE.
  398. {src/adm2/dialogmn.i}
  399. /* _UIB-CODE-BLOCK-END */
  400. &ANALYZE-RESUME
  401. /* ********************** Internal Procedures *********************** */
  402. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gVerbuchen _ADM-CREATE-OBJECTS
  403. PROCEDURE adm-create-objects :
  404. /*------------------------------------------------------------------------------
  405. Purpose: Create handles for all SmartObjects used in this procedure.
  406. After SmartObjects are initialized, then SmartLinks are added.
  407. Parameters: <none>
  408. ------------------------------------------------------------------------------*/
  409. END PROCEDURE.
  410. /* _UIB-CODE-BLOCK-END */
  411. &ANALYZE-RESUME
  412. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE createMailBodyProtokoll gVerbuchen
  413. PROCEDURE createMailBodyProtokoll :
  414. /*------------------------------------------------------------------------------*/
  415. /* Purpose: Super Override */
  416. /* Parameters: */
  417. /* Notes: */
  418. /*------------------------------------------------------------------------------*/
  419. DEFINE OUTPUT PARAMETER opcBody AS CHARACTER NO-UNDO.
  420. DEFINE VARIABLE cBodyDatei AS CHARACTER INIT ? NO-UNDO.
  421. DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO.
  422. DEFINE VARIABLE cBodyProtokoll AS CHARACTER INIT '' NO-UNDO.
  423. DEFINE VARIABLE cString AS CHARACTER INIT '' NO-UNDO.
  424. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO.
  425. DO WHILE cBodyDatei = ?:
  426. cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Protokoll.html', cInstallation).
  427. cBodyDatei = SEARCH(cBodyDatei).
  428. IF cBodyDatei <> ? THEN LEAVE.
  429. END.
  430. IF cBodydatei = ? THEN cBody = ''.
  431. ELSE
  432. DO:
  433. FILE-INFO:FILE-NAME = cBodyDatei.
  434. cBodyDatei = FILE-INFO:FULL-PATHNAME.
  435. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
  436. cBody = lBody.
  437. END.
  438. cBodyDatei = ?.
  439. DO WHILE cBodyDatei = ?:
  440. cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Protokoll-Tabelle.html', cInstallation).
  441. cBodyDatei = SEARCH(cBodyDatei).
  442. LEAVE.
  443. END.
  444. IF cBodydatei = ? THEN cBody = ''.
  445. ELSE
  446. DO:
  447. /* FILE-INFO:FILE-NAME = cBodyDatei. */
  448. /* cBodyDatei = FILE-INFO:FULL-PATHNAME.*/
  449. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
  450. cBodyProtokoll = lBody.
  451. END.
  452. FOR EACH tSendMail:
  453. cString = cString
  454. /* + (IF cString = '' THEN '' ELSE CHR(10)) */
  455. + SUBSTITUTE(cBodyProtokoll, tSendMail.iKnr, tSendMail.cKunde, tSendMail.cMail, tSendMail.iFaknr).
  456. END.
  457. cBody = SUBSTITUTE(cBody, cString).
  458. opcBody = cBody.
  459. END PROCEDURE.
  460. /* _UIB-CODE-BLOCK-END */
  461. &ANALYZE-RESUME
  462. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_ZAHLUNG gVerbuchen
  463. PROCEDURE CREATE_ZAHLUNG :
  464. /*------------------------------------------------------------------------------*/
  465. /* Purpose: Super Override */
  466. /* Parameters: */
  467. /* Notes: */
  468. /*------------------------------------------------------------------------------*/
  469. FIND FIRST tAufko.
  470. FOR EACH tUmsatz
  471. WHERE tUmsatz.cArt = 'Debza'
  472. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  473. IF tUmsatz.nZahBetr = 0 AND
  474. tUmsatz.nSkonto = 0 THEN NEXT.
  475. FIND LAST Zahlung NO-LOCK
  476. WHERE Zahlung.Firma = tAufko.Firma NO-ERROR.
  477. IF AVAILABLE Zahlung THEN iTrans = Zahlung.Trnr + 1.
  478. ELSE iTrans = 1.
  479. CREATE Zahlung.
  480. ASSIGN
  481. Zahlung.Firma = tAufko.Firma
  482. Zahlung.Trnr = iTrans
  483. Zahlung.Knr = tAufko.Fak_Knr
  484. Zahlung.Faknr = STRING(tAufko.Faknr,"9999999")
  485. Zahlung.Datum_1 = dBuchDat
  486. Zahlung.Konto_S = tUmsatz.cKonto
  487. Zahlung.Konto_H = tAufko.cKtoDebitor
  488. Zahlung.Betrag = tUmsatz.nZahBetr_Frw
  489. Zahlung.Skonto = tUmsatz.nSkonto_Frw
  490. Zahlung.Zahl_Art = 90
  491. Zahlung.Herk = 62
  492. Zahlung.Frw = tAufko.Frw
  493. Zahlung.Kurs = tAufko.Kurs
  494. Zahlung.Faktor = tAufko.Faktor
  495. Zahlung.Verbucht = FALSE
  496. .
  497. FIND FIRST tVerbucht
  498. WHERE tVerbucht.Datum = Zahlung.Datum_1
  499. AND tVerbucht.Konto = Zahlung.Konto_S NO-ERROR.
  500. IF NOT AVAILABLE tVerbucht THEN
  501. DO:
  502. CREATE tVerbucht.
  503. ASSIGN
  504. tVerbucht.Datum = Zahlung.Datum_1
  505. tVerbucht.Konto = Zahlung.Konto_S.
  506. END.
  507. ASSIGN
  508. tVerbucht.ZahBetr_Frw = tVerbucht.ZahBetr_Frw + tUmsatz.nZahBetr_Frw
  509. tVerbucht.Skonto_Frw = tVerbucht.Skonto_Frw + tUmsatz.nSkonto_Frw
  510. tVerbucht.ZahBetr = tVerbucht.ZahBetr + tUmsatz.nZahBetr
  511. tVerbucht.Skonto = tVerbucht.Skonto + tUmsatz.nSkonto
  512. .
  513. RELEASE Zahlung.
  514. END.
  515. END PROCEDURE.
  516. /* _UIB-CODE-BLOCK-END */
  517. &ANALYZE-RESUME
  518. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gVerbuchen _DEFAULT-DISABLE
  519. PROCEDURE disable_UI :
  520. /*------------------------------------------------------------------------------
  521. Purpose: DISABLE the User Interface
  522. Parameters: <none>
  523. Notes: Here we clean-up the user-interface by deleting
  524. dynamic widgets we have created and/or hide
  525. frames. This procedure is usually called when
  526. we are ready to "clean-up" after running.
  527. ------------------------------------------------------------------------------*/
  528. /* Hide all frames. */
  529. HIDE FRAME gVerbuchen.
  530. END PROCEDURE.
  531. /* _UIB-CODE-BLOCK-END */
  532. &ANALYZE-RESUME
  533. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gVerbuchen
  534. PROCEDURE enableObject :
  535. /*------------------------------------------------------------------------------*/
  536. /* Purpose: Super Override */
  537. /* Parameters: */
  538. /* Notes: */
  539. /*------------------------------------------------------------------------------*/
  540. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  541. DEFINE BUFFER bAufko FOR Aufko.
  542. DEFINE BUFFER bTabel FOR Tabel.
  543. cInstallation = DYNAMIC-FUNCTION('getInstallation':U) NO-ERROR.
  544. DO WITH FRAME {&FRAME-NAME}:
  545. F_Adresse = ''.
  546. F_Buchdat = ?.
  547. IF cHerk = 'A' THEN
  548. DO:
  549. FIND bAufko NO-LOCK WHERE RECID(bAufko) = iRecid.
  550. F_vonFaknr = bAufko.Faknr .
  551. F_bisFaknr = bAufko.Faknr .
  552. F_vonFakKnr = bAufko.Fak_Knr .
  553. F_bisFakKnr = bAufko.Fak_Knr .
  554. F_vonDatum = bAufko.Fak_Datum.
  555. F_bisDatum = bAufko.Fak_Datum.
  556. F_Buchdat = bAufko.Fak_Datum. .
  557. FIND bTabel NO-LOCK
  558. WHERE bTabel.Firma = bAufko.Firma
  559. AND bTabel.RecArt = 'FAKART'
  560. AND bTabel.CodeC = ''
  561. AND bTabel.CodeI = bAufko.Fak_Art
  562. AND bTabel.Sprcd = 1 NO-ERROR.
  563. IF bTabel.Int_3 = 4 THEN
  564. DO:
  565. /* F_Buchdat = ?.*/
  566. F_vonDatum = DATE(MONTH(bAufko.Fak_Datum),01,YEAR(bAufko.Fak_Datum)).
  567. F_bisDatum = TODAY.
  568. IF F_bisDatum > F_BuchDat THEN F_bisDatum = F_BuchDat.
  569. IF F_bisDatum < F_VonDatum THEN F_bisDatum = F_vonDatum.
  570. DO WHILE TRUE:
  571. IF MONTH(F_vonDatum) = MONTH(F_bisDatum) AND
  572. YEAR (F_vonDatum) = YEAR (F_bisDatum) THEN LEAVE.
  573. F_bisDatum = F_bisDatum - 1.
  574. END.
  575. END.
  576. IF F_Buchdat <> ? AND
  577. F_Buchdat <= dSperrDat THEN F_Buchdat:BGCOLOR = 12.
  578. END.
  579. ELSE
  580. DO:
  581. F_vonFaknr = 1.
  582. F_bisFaknr = 9999999.
  583. F_vonFakKnr = 1.
  584. F_bisFakKnr = 999999.
  585. F_vonDatum = DATE(MONTH(TODAY),01,YEAR(TODAY)).
  586. F_bisDatum = DATE(MONTH(TODAY),28,YEAR(TODAY)).
  587. CASE MONTH(TODAY):
  588. WHEN 01 OR
  589. WHEN 03 OR
  590. WHEN 05 OR
  591. WHEN 07 OR
  592. WHEN 08 OR
  593. WHEN 10 OR
  594. WHEN 12 THEN
  595. F_bisDatum = F_bisDatum + 3.
  596. WHEN 04 OR
  597. WHEN 06 OR
  598. WHEN 09 OR
  599. WHEN 11 THEN
  600. F_bisDatum = F_bisDatum + 2.
  601. WHEN 02 THEN
  602. DO:
  603. IF YEAR(TODAY) MOD 4 = 0 THEN F_bisDatum = F_BisDatum + 1.
  604. IF YEAR(TODAY) MOD 1000 = 0 THEN F_bisDatum = F_BisDatum - 1.
  605. END.
  606. END CASE.
  607. END.
  608. RUN COMBO_FAKART ( CB_Fakart:HANDLE ) NO-ERROR.
  609. RUN COMBO_AUFSTATUS ( CB_Aufsta:HANDLE ) NO-ERROR.
  610. IF AVAILABLE bAufko THEN
  611. DO:
  612. CB_Fakart:SCREEN-VALUE = STRING(bAufko.Fak_Art,'999999').
  613. CB_Aufsta:SCREEN-VALUE = STRING(bAufko.Auf_Sta,'999999').
  614. F_Adresse:SCREEN-VALUE = DYNAMIC-FUNCTION('getAdressAnzeige':U, bAufko.Fak_Knr ).
  615. END.
  616. END.
  617. { incl/dlgenableobject.i }
  618. END PROCEDURE.
  619. /* _UIB-CODE-BLOCK-END */
  620. &ANALYZE-RESUME
  621. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gVerbuchen _DEFAULT-ENABLE
  622. PROCEDURE enable_UI :
  623. /*------------------------------------------------------------------------------
  624. Purpose: ENABLE the User Interface
  625. Parameters: <none>
  626. Notes: Here we display/view/enable the widgets in the
  627. user-interface. In addition, OPEN all queries
  628. associated with each FRAME and BROWSE.
  629. These statements here are based on the "Other
  630. Settings" section of the widget Property Sheets.
  631. ------------------------------------------------------------------------------*/
  632. DISPLAY F_vonFaknr F_bisFaknr F_vonFakKnr F_bisFakKNr F_vonDatum F_bisDatum
  633. F_BuchDat CB_Fakart CB_Aufsta
  634. WITH FRAME gVerbuchen.
  635. ENABLE RECT-2 F_vonFaknr F_bisFaknr F_vonFakKnr F_bisFakKNr F_vonDatum
  636. F_bisDatum F_BuchDat CB_Fakart CB_Aufsta Btn_Start Btn_Cancel
  637. F_Adresse
  638. WITH FRAME gVerbuchen.
  639. VIEW FRAME gVerbuchen.
  640. {&OPEN-BROWSERS-IN-QUERY-gVerbuchen}
  641. END PROCEDURE.
  642. /* _UIB-CODE-BLOCK-END */
  643. &ANALYZE-RESUME
  644. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gVerbuchen
  645. PROCEDURE ENDE :
  646. /*------------------------------------------------------------------------------*/
  647. /* Purpose: Super Override */
  648. /* Parameters: */
  649. /* Notes: */
  650. /*------------------------------------------------------------------------------*/
  651. IF btnOK THEN
  652. DO:
  653. oplRetVal = TRUE.
  654. END.
  655. { incl/dlgende.i }
  656. END PROCEDURE.
  657. /* _UIB-CODE-BLOCK-END */
  658. &ANALYZE-RESUME
  659. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDE_IN_KONTO gVerbuchen
  660. PROCEDURE GEBINDE_IN_KONTO :
  661. /*------------------------------------------------------------------------------*/
  662. /* Purpose: Super Override */
  663. /* Parameters: */
  664. /* Notes: */
  665. /*------------------------------------------------------------------------------*/
  666. DEFINE VARIABLE nAnsatz AS DECIMAL INIT 0.00 NO-UNDO.
  667. DEFINE VARIABLE lIncl AS LOG INIT FALSE NO-UNDO.
  668. DEFINE BUFFER bAufGKon FOR AufGKon.
  669. FIND FIRST tAufko.
  670. FOR EACH bAufGKon NO-LOCK
  671. WHERE bAufGKon.Firma = tAufko.Firma
  672. AND bAufGKon.Aufnr = tAufko.Aufnr :
  673. IF NOT lGebinde THEN
  674. DO: /* Keine Gebindeverrechnung beim Kunden */
  675. IF bAufGKon.Depot <> 0 THEN NEXT.
  676. END.
  677. nAnsatz = 0.
  678. FIND FIRST Wust NO-LOCK
  679. WHERE Wust.WuCd = bAufGKon.Mwst_Cd NO-ERROR.
  680. IF AVAILABLE Wust THEN lIncl = Wust.Incl.
  681. IF lIncl THEN
  682. DO: /* Ansatz wird nur für Inkl Mwst gesetzt wegen Reduktion Gebindewert */
  683. FIND LAST MwstAns NO-LOCK
  684. WHERE MwstAns.Mwst_Cd = bAufGKon.Mwst_Cd
  685. AND MwstAns.Datum <= tAufko.Fak_Datum NO-ERROR.
  686. IF AVAILABLE MwstAns THEN nAnsatz = MwstAns.Ansatz.
  687. END.
  688. FIND FIRST tKonto
  689. WHERE tKonto.cKto1 = tAufko.cKtoDebitor
  690. AND tKonto.cKto2 = tAufko.cKtoGebinde
  691. AND tKonto.iMWSt_Cd = bAufGKon.MWSt_Cd NO-ERROR.
  692. IF NOT AVAILABLE tKonto THEN
  693. DO:
  694. CREATE tKonto.
  695. ASSIGN
  696. tKonto.cKto1 = tAufko.cKtoDebitor
  697. tKonto.cKto2 = tAufko.cKtoGebinde
  698. tKonto.iMWSt_Cd = bAufGKon.MWSt_Cd
  699. tKonto.Frw = tAufko.Frw
  700. tKonto.nKurs = tAufko.Kurs
  701. tKonto.iFaktor = tAufko.Faktor
  702. tKonto.lMwst = FALSE
  703. tKonto.cArt = 'GEBINDE'.
  704. END.
  705. ASSIGN
  706. tKonto.nBetrag = tKonto.nBetrag + (bAufGKon.Betrag * 100 / (100 + nAnsatz) * tAufko.Kurs / tAufko.Faktor).
  707. RELEASE bAufGKon.
  708. END.
  709. END PROCEDURE.
  710. /* _UIB-CODE-BLOCK-END */
  711. &ANALYZE-RESUME
  712. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE getMailBody gVerbuchen
  713. PROCEDURE getMailBody :
  714. /*------------------------------------------------------------------------------*/
  715. /* Purpose: Super Override */
  716. /* Parameters: */
  717. /* Notes: */
  718. /*------------------------------------------------------------------------------*/
  719. DEFINE INPUT PARAMETER ipcSprcd AS CHARACTER NO-UNDO.
  720. DEFINE OUTPUT PARAMETER opcBody AS CHARACTER NO-UNDO.
  721. DEFINE VARIABLE cBodyDatei AS CHARACTER INIT ? NO-UNDO.
  722. DEFINE VARIABLE cBody AS CHARACTER INIT '' NO-UNDO.
  723. DEFINE VARIABLE lBody AS LONGCHAR NO-UNDO.
  724. DO WHILE cBodyDatei = ?:
  725. cBodyDatei = SUBSTITUTE('druckprogramme/&1/Mail-Rechnung-&2.html', cInstallation, ipcSprcd).
  726. cBodyDatei = SEARCH(cBodyDatei).
  727. LEAVE.
  728. END.
  729. IF cBodydatei = ? THEN cBody = ''.
  730. ELSE
  731. DO:
  732. FILE-INFO:FILE-NAME = cBodyDatei.
  733. cBodyDatei = FILE-INFO:FULL-PATHNAME.
  734. COPY-LOB FILE cBodydatei TO lBody NO-CONVERT.
  735. cBody = lBody.
  736. END.
  737. opcBody = cBody.
  738. END PROCEDURE.
  739. /* _UIB-CODE-BLOCK-END */
  740. &ANALYZE-RESUME
  741. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject gVerbuchen
  742. PROCEDURE initializeObject :
  743. /*------------------------------------------------------------------------------*/
  744. /* Purpose: Super Override */
  745. /* Parameters: */
  746. /* Notes: */
  747. /*------------------------------------------------------------------------------*/
  748. /* Code placed here will execute PRIOR to standard behavior. */
  749. RUN SUPER.
  750. END PROCEDURE.
  751. /* _UIB-CODE-BLOCK-END */
  752. &ANALYZE-RESUME
  753. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LOESCHEN_VERBUCHTE_AUFTRAEGE gVerbuchen
  754. PROCEDURE LOESCHEN_VERBUCHTE_AUFTRAEGE :
  755. /*------------------------------------------------------------------------------*/
  756. /* Purpose: Super Override */
  757. /* Parameters: */
  758. /* Notes: */
  759. /*------------------------------------------------------------------------------*/
  760. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  761. F_Adresse = 'Löschen der verbuchten Aufträge ...'.
  762. DISPLAY F_Adresse WITH FRAME {&FRAME-NAME}.
  763. DISABLE TRIGGERS FOR LOAD OF Aufko .
  764. DISABLE TRIGGERS FOR LOAD OF Aufze .
  765. DISABLE TRIGGERS FOR LOAD OF AufLot .
  766. DISABLE TRIGGERS FOR LOAD OF RuestAuf.
  767. FOR EACH Aufko USE-INDEX Aufko-k1
  768. WHERE Aufko.Firma = Firma
  769. AND Aufko.Verbucht = TRUE TRANSACTION:
  770. FIND Debst NO-LOCK
  771. WHERE Debst.Firma = Aufko.Firma
  772. AND Debst.Knr = Aufko.Fak_Knr NO-ERROR.
  773. IF NOT AVAILABLE Debst THEN
  774. DO:
  775. FIND Debst NO-LOCK
  776. WHERE Debst.Firma = Aufko.Firma
  777. AND Debst.Knr = Aufko.Knr.
  778. END.
  779. FOR EACH Aufze OF Aufko:
  780. CREATE Savze.
  781. BUFFER-COPY Aufze TO Savze.
  782. DELETE Aufze.
  783. IF Savze.Artnr = 0 THEN NEXT.
  784. FIND Artst OF Savze NO-ERROR.
  785. IF AVAILABLE Artst THEN Artst.Letzt_Ausg = Aufko.Fak_Datum.
  786. END.
  787. FOR EACH AufGKon OF Aufko:
  788. DO WHILE TRUE:
  789. IF AufGKon.Depot = 0 THEN LEAVE.
  790. FIND LAST GebKontr NO-LOCK
  791. WHERE GebKontr.Firma = Aufko.Firma
  792. AND GebKontr.Knr = Aufko.Knr NO-ERROR.
  793. IF AVAILABLE GebKontr THEN ii = GebKontr.Trnr + 1.
  794. ELSE ii = 1.
  795. FIND FIRST Wust NO-LOCK USE-INDEX Wust-k2
  796. WHERE Wust.Wucd = AufGKon.MWST_Cd
  797. AND Wust.CodeA < 13
  798. AND Wust.CodeK < 13 NO-ERROR.
  799. FIND LAST MWSTAns NO-LOCK USE-INDEX MWSTAns-k1
  800. WHERE MWSTAns.MWST_Cd = AufGKon.MWST_Cd
  801. AND MWSTAns.Datum <= Aufko.Kond_Datum NO-ERROR.
  802. CREATE GebKontr.
  803. ASSIGN
  804. GebKontr.Firma = Aufko.Firma
  805. GebKontr.Knr = Aufko.Knr
  806. GebKontr.Trnr = ii
  807. GebKontr.Geb_Cd = AufGKon.Geb_Cd
  808. GebKontr.Datum = dBuchdat
  809. GebKontr.Doknr = Aufko.Faknr
  810. GebKontr.Preis = AufGKon.Depot
  811. GebKontr.Eingang = AufGKon.Eingang
  812. GebKontr.Ausgang = AufGKon.Ausgang
  813. GebKontr.MWST_Cd = AufGKon.MWST_Cd
  814. GebKontr.lAbgerechnet = Debst.Geb_Rg.
  815. IF AVAILABLE MWSTAns THEN GebKontr.MWST_% = MWSTAns.Ansatz.
  816. IF AVAILABLE Wust THEN GebKontr.MWST_Inkl = Wust.Incl.
  817. LEAVE.
  818. END.
  819. CREATE SavGKon.
  820. BUFFER-COPY AufGKon TO SavGKon.
  821. DELETE AufGKon.
  822. END.
  823. FOR EACH AufRabSu OF Aufko:
  824. CREATE SavRabSu.
  825. BUFFER-COPY AufRabSu TO SavRabSu.
  826. DELETE AufRabSu.
  827. END.
  828. FOR EACH AufGebKo OF Aufko:
  829. IF AufGebKo.Menge <> 0 THEN
  830. DO:
  831. CREATE SavGebKo.
  832. BUFFER-COPY AufGebKo TO SavGebKo.
  833. END.
  834. DELETE AufGebKo.
  835. END.
  836. FOR EACH AufLot OF Aufko:
  837. CREATE SavLot.
  838. BUFFER-COPY AufLot TO SavLot.
  839. DELETE AufLot.
  840. END.
  841. FOR EACH RuestAuf OF Aufko:
  842. CREATE RuestSav.
  843. BUFFER-COPY RuestAuf TO RuestSav.
  844. DELETE RuestAuf.
  845. END.
  846. FOR EACH AufSpRab USE-INDEX AufSpRab-k1
  847. WHERE AufSpRab.Firma = Aufko.Firma
  848. AND AufSpRab.Aufnr = Aufko.Aufnr:
  849. CREATE SavSpRab.
  850. BUFFER-COPY AufSpRab TO SavSpRab.
  851. DELETE AufSpRab.
  852. END.
  853. CREATE Savko.
  854. BUFFER-COPY Aufko TO Savko.
  855. DELETE Aufko.
  856. END.
  857. RELEASE Aufko .
  858. RELEASE Aufze .
  859. RELEASE AufGKon .
  860. RELEASE AufRabSu.
  861. RELEASE AufGebKo.
  862. RELEASE AufSpRab.
  863. RELEASE Savko .
  864. RELEASE Savze .
  865. RELEASE SavGKon .
  866. RELEASE SavRabSu.
  867. RELEASE SavGebKo.
  868. RELEASE SavSpRab.
  869. END PROCEDURE.
  870. /* _UIB-CODE-BLOCK-END */
  871. &ANALYZE-RESUME
  872. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE MEHRWERTSTEUER_IN_KONTO gVerbuchen
  873. PROCEDURE MEHRWERTSTEUER_IN_KONTO :
  874. /*------------------------------------------------------------------------------*/
  875. /* Purpose: Super Override */
  876. /* Parameters: */
  877. /* Notes: */
  878. /*------------------------------------------------------------------------------*/
  879. DEFINE OUTPUT PARAMETER lRetVal AS LOGICAL NO-UNDO.
  880. lRetVal = TRUE.
  881. DEFINE VARIABLE nTotMwst AS DECIMAL DECIMALS 2 NO-UNDO.
  882. DEFINE VARIABLE nTotAbsolut AS DECIMAL DECIMALS 2 NO-UNDO.
  883. DEFINE VARIABLE nDiff AS DECIMAL NO-UNDO.
  884. DEFINE VARIABLE nRest AS DECIMAL NO-UNDO.
  885. DEFINE VARIABLE nProz AS DECIMAL DECIMALS 4 NO-UNDO.
  886. DEFINE VARIABLE nWert AS DECIMAL NO-UNDO.
  887. FIND FIRST tAufko.
  888. FIND FIRST tUmsatz
  889. WHERE tUmsatz.cArt = 'Debst'
  890. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  891. FOR EACH tMwst
  892. WHERE tMwst.iFaknr = tAufko.Faknr
  893. AND tMwst.iCd < 12:
  894. IF tMwst.lInkl THEN
  895. DO:
  896. tMwst.nMwst = tMwst.nTotal * tMwst.nAnsatz / (100 + tMwst.nAnsatz).
  897. tMwst.nBetrag = tMwst.nTotal - tMwst.nMwst.
  898. END.
  899. tMwst.nTotal = tMwst.nBetrag + tMwst.nMwst.
  900. nTotMwst = nTotMwst + tMwst.nTotal.
  901. nTotAbsolut = nTotAbsolut + ABS(tMwst.nTotal).
  902. END.
  903. nDiff = nFakTotal - nTotMwst.
  904. nRest = nDiff.
  905. DO WHILE TRUE:
  906. IF nDiff = 0 THEN LEAVE.
  907. /* Die Rundungsdifferenzen werden auf den Warenertrag */
  908. /* mit dem grössten Betrag gelegt */
  909. FOR EACH tKonto
  910. WHERE tKonto.cArt = 'WARE'
  911. BY tKonto.nBetrag DESCENDING:
  912. tKonto.nBetrag = tKonto.nBetrag + nDiff.
  913. LEAVE.
  914. END.
  915. LEAVE.
  916. END.
  917. FOR EACH tMwst
  918. WHERE tMwst.iFaknr = tAufko.Faknr
  919. AND tMwst.iCd < 12
  920. AND tMwst.nMwst <> 0:
  921. FIND FIRST tKonto
  922. WHERE tKonto.cKto1 = tAufko.cKtoDebitor
  923. AND tKonto.cKto2 = tMwst.cKonto
  924. AND tKonto.iMwst_Cd = tMwst.iCd NO-ERROR.
  925. IF NOT AVAILABLE tKonto THEN
  926. DO:
  927. CREATE tKonto.
  928. ASSIGN
  929. tKonto.cKto1 = tAufko.cKtoDebitor
  930. tKonto.cKto2 = tMwst.cKonto
  931. tKonto.iMwst_Cd = tMwst.iCd
  932. tKonto.Frw = tMwst.Frw
  933. tKonto.nKurs = tMwst.nKurs
  934. tKonto.iFaktor = tMwst.iFaktor
  935. tKonto.cArt = 'MWST'
  936. tKonto.lMwst = TRUE.
  937. END.
  938. tKonto.nBetrag = tKonto.nBetrag + tMwst.nMwst.
  939. END.
  940. lRetVal = FALSE.
  941. END PROCEDURE.
  942. /* _UIB-CODE-BLOCK-END */
  943. &ANALYZE-RESUME
  944. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEBENKOSTEN_IN_KONTO gVerbuchen
  945. PROCEDURE NEBENKOSTEN_IN_KONTO :
  946. /*------------------------------------------------------------------------------*/
  947. /* Purpose: Super Override */
  948. /* Parameters: */
  949. /* Notes: */
  950. /*------------------------------------------------------------------------------*/
  951. DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO.
  952. lRetVal = TRUE.
  953. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  954. DEFINE VARIABLE nBetrag AS DECIMAL NO-UNDO.
  955. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO.
  956. FIND FIRST tAufko.
  957. FIND FIRST tUmsatz
  958. WHERE tUmsatz.cArt = 'Debst'
  959. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  960. FIND SteuNr NO-LOCK
  961. WHERE SteuNr.Firma = tAufko.Firma.
  962. DO ii = 1 TO 3:
  963. CASE ii:
  964. WHEN 1 THEN
  965. nBetrag = tUmsatz.nTransp .
  966. WHEN 2 THEN
  967. nBetrag = tUmsatz.nPorto .
  968. WHEN 3 THEN
  969. nBetrag = tUmsatz.nVerpack.
  970. END CASE.
  971. IF nBetrag = 0 THEN NEXT.
  972. CASE ii:
  973. WHEN 1 THEN
  974. cKonto = SteuNr.Konto_Transp.
  975. WHEN 2 THEN
  976. cKonto = SteuNr.Konto_Porto.
  977. WHEN 3 THEN
  978. cKonto = SteuNr.Konto_Verpack.
  979. END.
  980. FIND FIRST tKonto
  981. WHERE tKonto.cKto1 = tAufko.cKtoDebitor
  982. AND tKonto.cKto2 = cKonto
  983. AND tKonto.iMWSt_Cd = 12 NO-ERROR.
  984. IF NOT AVAILABLE tKonto THEN
  985. DO:
  986. CREATE tKonto.
  987. ASSIGN
  988. tKonto.cKto1 = tAufko.cKtoDebitor
  989. tKonto.cKto2 = cKonto
  990. tKonto.iMWSt_Cd = 12
  991. tKonto.Frw = tAufko.Frw
  992. tKonto.nKurs = tAufko.Kurs
  993. tKonto.iFaktor = Taufko.Faktor
  994. tKonto.lMwst = FALSE
  995. tKonto.cArt = 'NK'.
  996. END.
  997. ASSIGN
  998. tKonto.nBetrag = tKonto.nBetrag + (nBetrag * tAufko.Kurs / tAufko.Faktor).
  999. END.
  1000. lRetVal = FALSE.
  1001. RELEASE SteuNr.
  1002. END PROCEDURE.
  1003. /* _UIB-CODE-BLOCK-END */
  1004. &ANALYZE-RESUME
  1005. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PASSANT gVerbuchen
  1006. PROCEDURE PASSANT :
  1007. /*------------------------------------------------------------------------------*/
  1008. /* Purpose: Super Override */
  1009. /* Parameters: */
  1010. /* Notes: */
  1011. /*------------------------------------------------------------------------------*/
  1012. FIND FIRST tAufko.
  1013. CREATE Passant.
  1014. ASSIGN
  1015. Passant.Firma = tAufko.Firma
  1016. Passant.Knr = tAufko.Knr
  1017. Passant.Faknr = tAufko.Faknr
  1018. Passant.Adr[01] = tAufko.Adresse[01]
  1019. Passant.Adr[02] = tAufko.Adresse[02]
  1020. Passant.Adr[03] = tAufko.Adresse[03]
  1021. Passant.Adr[04] = tAufko.Adresse[04]
  1022. Passant.Adr[05] = tAufko.Adresse[05].
  1023. RELEASE Passant.
  1024. END PROCEDURE.
  1025. /* _UIB-CODE-BLOCK-END */
  1026. &ANALYZE-RESUME
  1027. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN gVerbuchen
  1028. PROCEDURE VERBUCHEN :
  1029. /*------------------------------------------------------------------------------*/
  1030. /* Purpose: Super Override */
  1031. /* Parameters: */
  1032. /* Notes: */
  1033. /*------------------------------------------------------------------------------*/
  1034. DEFINE VARIABLE AnzFak AS INTEGER NO-UNDO.
  1035. DEFINE VARIABLE aRecid AS RECID NO-UNDO.
  1036. DEFINE VARIABLE kRecid AS RECID NO-UNDO.
  1037. DEFINE VARIABLE dRecid AS RECID NO-UNDO.
  1038. DEFINE VARIABLE nKurs AS DECIMAL DECIMALS 4 NO-UNDO.
  1039. DEFINE VARIABLE iFaktor AS INTEGER NO-UNDO.
  1040. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  1041. DEFINE VARIABLE cKtoGebinde AS CHARACTER NO-UNDO.
  1042. DEFINE VARIABLE cKtoDebitor AS CHARACTER NO-UNDO.
  1043. DEFINE VARIABLE cKtoVereinnahmt AS CHARACTER NO-UNDO.
  1044. DEFINE VARIABLE lGedruckt AS LOG NO-UNDO.
  1045. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO.
  1046. DEFINE VARIABLE lFehler AS LOG NO-UNDO.
  1047. DEFINE VARIABLE cBody AS CHARACTER NO-UNDO.
  1048. DEFINE VARIABLE cMailBody AS CHARACTER NO-UNDO.
  1049. DEFINE VARIABLE cAnrede AS CHARACTER NO-UNDO.
  1050. DEFINE VARIABLE cMailTo AS CHARACTER NO-UNDO.
  1051. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO.
  1052. DEFINE VARIABLE iAnzMail AS INTEGER NO-UNDO.
  1053. DEFINE VARIABLE nTotBetrFrw AS DECIMAL NO-UNDO DECIMALS 2.
  1054. DEFINE VARIABLE nTotBetr AS DECIMAL NO-UNDO DECIMALS 2.
  1055. DEFINE VARIABLE nDiffFrw AS DECIMAL NO-UNDO DECIMALS 2.
  1056. DEFINE VARIABLE nDiff AS DECIMAL NO-UNDO DECIMALS 2.
  1057. DEFINE BUFFER bSteuer FOR Steuer.
  1058. DEFINE BUFFER bSteuNr FOR SteuNr.
  1059. DEFINE BUFFER bAufko FOR Aufko.
  1060. DEFINE BUFFER bAufze FOR Aufze.
  1061. DEFINE BUFFER bDebst FOR Debst.
  1062. DEFINE BUFFER bArtst FOR Artst.
  1063. DEFINE BUFFER bArtbw FOR Artbw.
  1064. DEFINE BUFFER bAdresse FOR Adresse.
  1065. DEFINE BUFFER bDebop FOR Debop.
  1066. RUN WERTE_EINLESEN.
  1067. IF RETURN-VALUE <> '' THEN
  1068. DO:
  1069. IF RETURN-VALUE = 'ERROR' THEN RETURN NO-APPLY.
  1070. CASE RETURN-VALUE:
  1071. WHEN 'F_Buchdat' THEN
  1072. APPLY 'ENTRY' TO F_Buchdat IN FRAME {&FRAME-NAME}.
  1073. WHEN 'Keine Selektion' THEN
  1074. MESSAGE 'Keine Rechnungen in der Auswahl'
  1075. VIEW-AS ALERT-BOX.
  1076. END CASE.
  1077. RETURN 'APPLY'.
  1078. END.
  1079. DO WITH FRAME {&FRAME-NAME}:
  1080. ASSIGN {&List-6}.
  1081. iFakArt = INTEGER(CB_Fakart:SCREEN-VALUE).
  1082. iAufSta = INTEGER(CB_Aufsta:SCREEN-VALUE).
  1083. F_Adresse:HIDDEN = FALSE.
  1084. F_Adresse:SCREEN-VALUE = 'Aufträge werden verbucht ...'.
  1085. END.
  1086. /* ------------------------------------------------------------------------ */
  1087. /* Verbuchen der Aufträge */
  1088. /* ------------------------------------------------------------------------ */
  1089. FIND bSteuer WHERE bSteuer.Firma = Firma NO-LOCK.
  1090. FIND bSteuNr WHERE bSteuNr.Firma = Firma NO-LOCK.
  1091. cKtoGebinde = bSteuNr.Konto_Gebinde.
  1092. cKtoVereinnahmt = bSteuNr.Konto_Wust_H.
  1093. EMPTY TEMP-TABLE tVerbucht .
  1094. EMPTY TEMP-TABLE tAufko .
  1095. EMPTY TEMP-TABLE tAufze .
  1096. EMPTY TEMP-TABLE tSendMail .
  1097. EMPTY TEMP-TABLE ttSendMail .
  1098. CREATE tAufko.
  1099. CREATE tAufze.
  1100. AnzFak = 0.
  1101. FOR EACH bAufko NO-LOCK USE-INDEX Aufko-k7
  1102. WHERE bAufko.Firma = Firma
  1103. AND bAufko.Fak_Art = iFakArt
  1104. AND bAufko.Auf_Sta = iAufSta
  1105. AND bAufko.Faknr >= F_vonFaknr
  1106. AND bAufko.Faknr <= F_bisFaknr
  1107. AND bAufko.Fak_Knr >= F_vonFakKnr
  1108. AND bAufko.Fak_Knr <= F_bisFakKnr
  1109. AND bAufko.Fak_Dat >= F_vonDatum
  1110. AND bAufko.Fak_Dat <= F_bisDatum
  1111. AND bAufko.Faknr <> 0
  1112. AND bAufko.Gedruckt = TRUE
  1113. AND bAufko.Verbucht = FALSE
  1114. AND ((bAufko.Samm_Nr = 0)
  1115. OR (bAufko.Samm_Nr > 0 AND bAufko.Auf_Sta > 3))
  1116. BREAK
  1117. BY bAufko.Fak_Knr
  1118. BY bAufko.Faknr
  1119. BY bAufko.Aufnr :
  1120. IF FIRST-OF ( bAufko.Faknr ) THEN
  1121. DO:
  1122. lFehler = FALSE.
  1123. nFakTotalFrw = 0.00.
  1124. nFakTotal = 0.00.
  1125. FIND FIRST bDebop NO-LOCK
  1126. WHERE bDebop.Firma = bAufko.Firma
  1127. AND bDebop.Knr = bAufko.Fak_Knr
  1128. AND bDebop.Faknr = bAufko.Faknr NO-ERROR.
  1129. IF AVAILABLE bDebop THEN
  1130. DO:
  1131. MESSAGE 'Rechnungsnummer ' bAufko.Faknr ' ist ungültig. Eine solche Nummer besteht bereits'
  1132. VIEW-AS ALERT-BOX ERROR.
  1133. RELEASE bDebop.
  1134. lFehler = TRUE.
  1135. NEXT.
  1136. END.
  1137. IF bAufko.Samm_Nr > 0 THEN
  1138. DO:
  1139. lGedruckt = DYNAMIC-FUNCTION('checkAlleGedruckt':U, RECID(bAufko) ) NO-ERROR.
  1140. IF NOT lGedruckt THEN
  1141. DO:
  1142. MESSAGE
  1143. 'Fehler beim Verbuchen der Rechnung ' SKIP
  1144. 'Kundennummer ' bAufko.Knr SKIP
  1145. 'Fakturanummer ' bAufko.Faknr SKIP
  1146. 'Nicht alle LS gedruckt! '
  1147. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  1148. lFehler = TRUE.
  1149. NEXT.
  1150. END.
  1151. END.
  1152. FIND bAdresse NO-LOCK
  1153. WHERE bAdresse.Firma = AdFirma
  1154. AND bAdresse.Knr = bAufko.Fak_Knr NO-ERROR.
  1155. IF NOT AVAILABLE bAdresse THEN
  1156. DO:
  1157. FIND bAdresse NO-LOCK
  1158. WHERE bAdresse.Firma = AdFirma
  1159. AND bAdresse.Knr = bAufko.Knr NO-ERROR.
  1160. END.
  1161. IF NOT AVAILABLE bAdresse THEN
  1162. DO:
  1163. MESSAGE
  1164. 'Fehler beim Verbbuchen der Rechnung ' SKIP
  1165. 'Kundennummer ' bAufko.Fak_Knr SKIP
  1166. 'ist nicht als Adresse erfasst'
  1167. VIEW-AS ALERT-BOX.
  1168. lFehler = TRUE.
  1169. NEXT.
  1170. END.
  1171. aRecid = RECID(bAdresse).
  1172. DO WITH FRAME {&FRAME-NAME}:
  1173. F_Adresse = bAdresse.Anzeig_Br.
  1174. DISPLAY {&List-5}.
  1175. END.
  1176. FIND bDebst NO-LOCK
  1177. WHERE bDebst.Firma = bAufko.Firma
  1178. AND bDebst.Knr = bAufko.Fak_Knr NO-ERROR.
  1179. IF NOT AVAILABLE bDebst THEN
  1180. DO:
  1181. FIND bDebst NO-LOCK
  1182. WHERE bDebst.Firma = bAufko.Firma
  1183. AND bDebst.Knr = bAufko.Knr NO-ERROR.
  1184. END.
  1185. IF NOT AVAILABLE bDebst THEN
  1186. DO:
  1187. MESSAGE
  1188. 'Fehler beim Verbbuchen der Rechnung ' SKIP
  1189. 'Kundennummer ' bAufko.Fak_Knr SKIP
  1190. 'ist nicht als Debitor erfasst'
  1191. VIEW-AS ALERT-BOX.
  1192. lFehler = TRUE.
  1193. NEXT.
  1194. END.
  1195. dRecid = RECID(bDebst).
  1196. lGebinde = bDebst.Geb_Rg.
  1197. lSendMail = (IF bDebst.DokumentStatus > 0 THEN TRUE ELSE FALSE).
  1198. EMPTY TEMP-TABLE tMwst .
  1199. EMPTY TEMP-TABLE tUmsatz .
  1200. EMPTY TEMP-TABLE tAuftraege .
  1201. EMPTY TEMP-TABLE tKonto .
  1202. dBuchDat = F_BuchDat.
  1203. IF dBuchDat = ? THEN dBuchDat = bAufko.Fak_Datum.
  1204. IF dBuchDat < dSperrDat THEN dBuchDat = dSperrDat + 1.
  1205. FIND Waehrung NO-LOCK
  1206. WHERE Waehrung.Firma = bAufko.Firma
  1207. AND Waehrung.Frw = bAufko.Frw.
  1208. nKurs = Waehrung.Kurs.
  1209. iFaktor = Waehrung.Faktor.
  1210. CREATE tUmsatz.
  1211. ASSIGN
  1212. tUmsatz.cArt = 'Debst'
  1213. tUmsatz.iKnr = bAufko.Fak_Knr
  1214. tUmsatz.iJahr = YEAR(dBuchDat)
  1215. tUmsatz.iPeriode = MONTH(dBuchdat)
  1216. tUmsatz.Frw = bAufko.Frw
  1217. tUmsatz.nKurs = nKurs
  1218. tUmsatz.iFaktor = iFaktor
  1219. tUmsatz.cKonto = (IF bDebst.Konto <> '' THEN bDebst.Konto ELSE bSteuNr.Konto_Debit).
  1220. ASSIGN
  1221. AnzFak = AnzFak + 1
  1222. iKnr = bAufko.Fak_Knr
  1223. iFaknr = bAufko.Faknr
  1224. cKtoDebitor = tUmsatz.cKonto.
  1225. END.
  1226. IF lFehler THEN NEXT.
  1227. IF FIRST-OF ( bAufko.Aufnr ) THEN
  1228. DO:
  1229. FIND FIRST tAufko.
  1230. BUFFER-COPY bAufko TO tAufko
  1231. ASSIGN
  1232. tAufko.Kurs = nKurs
  1233. tAufko.Faktor = iFaktor
  1234. tAufko.cKtoDebitor = cKtoDebitor
  1235. tAufko.cKtoGebinde = cKtoGebinde.
  1236. kRecid = RECID(bAufko).
  1237. CREATE tAuftraege.
  1238. ASSIGN
  1239. tAuftraege.cFirma = bAufko.Firma
  1240. tAuftraege.iAufnr = bAufko.Aufnr
  1241. tAuftraege.nKurs = nKurs
  1242. tAuftraege.iFaktor = iFaktor.
  1243. FIND FIRST tUmsatz
  1244. WHERE tUmsatz.cArt = 'Debst'
  1245. AND tUmsatz.iKnr = bAufko.Fak_Knr.
  1246. ASSIGN
  1247. tUmsatz.nPorto = tUmsatz.nPorto + (bAufko.Porto * nKurs / iFaktor)
  1248. tUmsatz.nVerpack = tUmsatz.nVerpack + (bAufko.Verpack * nKurs / iFaktor)
  1249. tUmsatz.nTransp = tUmsatz.nTransp + (bAufko.Transp * nKurs / iFaktor)
  1250. tUmsatz.nAufTot = tUmsatz.nAufTot + (bAufko.Auf_Tot * nKurs / iFaktor)
  1251. tUmsatz.nAufTot_Frw = tUmsatz.nAufTot_Frw + bAufko.Auf_Tot
  1252. .
  1253. CREATE tUmsatz.
  1254. ASSIGN
  1255. tUmsatz.cArt = 'Debza'
  1256. tUmsatz.iKnr = bAufko.Fak_Knr
  1257. tUmsatz.iJahr = YEAR(dBuchDat)
  1258. tUmsatz.iPeriode = MONTH(dBuchdat)
  1259. tUmsatz.Frw = bAufko.Frw
  1260. tUmsatz.iFaktor = iFaktor
  1261. tUmsatz.nKurs = nKurs
  1262. tUmsatz.cKonto = bAufko.Bar_Konto
  1263. tUmsatz.nZahBetr = tUmsatz.nZahBetr + (bAufko.Bar_Betr * nKurs / iFaktor)
  1264. tUmsatz.nSkonto = tUmsatz.nSkonto + (bAufko.Bar_Skonto * nKurs / iFaktor)
  1265. tUmsatz.nZahBetr_Frw = tUmsatz.nZahBetr_Frw + bAufko.Bar_Betr
  1266. tUmsatz.nSkonto_Frw = tUmsatz.nSkonto_Frw + bAufko.Bar_Skonto
  1267. .
  1268. DO ii = 1 TO 12:
  1269. IF bAufko.Wpfl[ii] = 0 THEN NEXT.
  1270. FIND FIRST tMwst
  1271. WHERE tMwst.iFaknr = bAufko.Faknr
  1272. AND tMwst.iCd = ii NO-ERROR.
  1273. IF NOT AVAILABLE tMwst THEN
  1274. DO:
  1275. FIND LAST MWSTAns NO-LOCK
  1276. WHERE MWSTAns.Mwst_Cd = ii
  1277. AND MWSTAns.Datum <= bAufko.Fak_Datum NO-ERROR.
  1278. CREATE tMwst.
  1279. ASSIGN
  1280. tMwst.iFaknr = bAufko.Faknr
  1281. tMwst.iCd = ii
  1282. tMwst.lInkl = MWSTAns.Incl
  1283. tMwst.Frw = bAufko.Frw
  1284. tMwst.nKurs = nKurs
  1285. tMwst.iFaktor = iFaktor
  1286. tMwst.cKonto = (IF cKtoVereinnahmt <> '' THEN cKtoVereinnahmt ELSE MWSTAns.Konto)
  1287. tMwst.nAnsatz = MWSTAns.Ansatz.
  1288. IF tMwst.cKonto = '' THEN tMwst.cKonto = bSteuNr.Konto_Wust_H.
  1289. RELEASE MWSTAns.
  1290. END.
  1291. ASSIGN
  1292. tMwst.nBetrag_FRW = tMwst.nBetrag_FRW + bAufko.Wpfl[ii]
  1293. tMwst.nMwst_FRW = tMwst.nMwst_FRW + bAufko.Wust[ii]
  1294. tMwst.nTotal_FRW = tMwst.nTotal_FRW + bAufko.Wpfl[ii] + bAufko.Wust[ii]
  1295. tMwst.nBetrag = tMwst.nBetrag_FRW * nKurs / iFaktor
  1296. tMwst.nMwst = tMwst.nMwst_FRW * nKurs / iFaktor
  1297. tMwst.nTotal = tMwst.nTotal_FRW * nKurs / iFaktor
  1298. .
  1299. END.
  1300. nFakTotalFrw = nFakTotalFrw + bAufko.Auf_Tot.
  1301. nFakTotal = nFakTotal + (bAufko.Auf_Tot * nKurs / iFaktor).
  1302. RELEASE Wust .
  1303. RELEASE MwstAns .
  1304. RUN GEBINDE_IN_KONTO.
  1305. END.
  1306. FIND FIRST tAufko.
  1307. FOR EACH bAufze NO-LOCK
  1308. WHERE bAufze.Firma = bAufko.Firma
  1309. AND bAufze.Aufnr = bAufko.Aufnr
  1310. AND bAufze.Artnr > 0
  1311. BREAK
  1312. BY bAufze.Artnr
  1313. BY bAufze.Inhalt
  1314. BY bAufze.Jahr:
  1315. IF FIRST-OF ( bAufze.Jahr ) THEN
  1316. DO:
  1317. FIND bArtst NO-LOCK
  1318. WHERE bArtst.Firma = bAufze.Firma
  1319. AND bArtst.Artnr = bAufze.Artnr
  1320. AND bArtst.Inhalt = bAufze.Inhalt
  1321. AND bArtst.Jahr = bAufze.Jahr.
  1322. CREATE tUmsatz.
  1323. ASSIGN
  1324. tUmsatz.cArt = 'Artst'
  1325. tUmsatz.iArtnr = bAufze.Artnr
  1326. tUmsatz.iInhalt = bAufze.Inhalt
  1327. tUmsatz.iJG = bAufze.Jahr
  1328. tUmsatz.iJahr = YEAR(dBuchDat)
  1329. tUmsatz.iPeriode = MONTH(dBuchdat)
  1330. tUmsatz.cKonto = (IF bArtst.Konto <> '' THEN bArtst.Konto ELSE bSteunr.Konto_Ertrag)
  1331. tUmsatz.Frw = bAufko.Frw
  1332. tUmsatz.nKurs = tAufko.Kurs
  1333. tUmsatz.iFaktor = tAufko.Faktor
  1334. .
  1335. CREATE tUmsatz.
  1336. ASSIGN
  1337. tUmsatz.cArt = 'DebArt'
  1338. tUmsatz.iKnr = bAufko.Fak_Knr
  1339. tUmsatz.iArtnr = bAufze.Artnr
  1340. tUmsatz.iInhalt = bAufze.Inhalt
  1341. tUmsatz.iJG = bAufze.Jahr
  1342. tUmsatz.iJahr = YEAR(dBuchDat)
  1343. tUmsatz.iPeriode = MONTH(dBuchdat)
  1344. tUmsatz.cKonto = ''
  1345. tUmsatz.Frw = bAufko.Frw
  1346. tUmsatz.nKurs = nKurs
  1347. tUmsatz.iFaktor = iFaktor
  1348. .
  1349. END.
  1350. FIND FIRST tAufze.
  1351. BUFFER-COPY bAufze TO tAufze
  1352. ASSIGN
  1353. tAufze.Kurs = tAufko.Kurs
  1354. tAufze.Faktor = tAufze.Faktor
  1355. .
  1356. DYNAMIC-FUNCTION('makeUmsatz':U) NO-ERROR.
  1357. END.
  1358. IF NOT LAST-OF ( bAufko.Faknr ) THEN NEXT.
  1359. IF lFehler THEN NEXT.
  1360. nTotBetrFrw = 0.
  1361. nTotBetr = 0.
  1362. FOR EACH tMwst
  1363. WHERE tMwst.iFaknr = bAufko.Faknr:
  1364. nTotBetrFrw = nTotBetrFrw + tMwst.nTotal_FRW.
  1365. nTotBetr = nTotBetr + tMwst.nTotal .
  1366. END.
  1367. IF nTotBetrFrw <> nFakTotalFrw OR
  1368. nTotBetr <> nFakTotal THEN
  1369. DO:
  1370. nDiffFrw = nFakTotalFrw - nTotBetrFrw.
  1371. nDiff = nFakTotal - nTotBetr .
  1372. FIND FIRST tUmsatz
  1373. WHERE tUmsatz.cArt = 'Debst'
  1374. AND tUmsatz.iKnr = bAufko.Fak_Knr.
  1375. tUmsatz.nAufTot = tUmsatz.nAufTot + nDiff.
  1376. tUmsatz.nAufTot_Frw = tUmsatz.nAufTot_Frw + nDiffFrw.
  1377. /* OUTPUT TO 'C:\TEMP\tMwst.csv'. */
  1378. /* FOR EACH tMwst: */
  1379. /* EXPORT DELIMITER ';' tMwst.*/
  1380. /* END. */
  1381. /* OUTPUT CLOSE. */
  1382. FOR EACH tMwst
  1383. WHERE tMwst.iFaknr = bAufko.Faknr
  1384. BY tMwst.nTotal_FRW:
  1385. IF nDiffFrw <> 0 THEN
  1386. ASSIGN
  1387. tMwst.nTotal_Frw = tMwst.nTotal_Frw + nDiffFrw
  1388. tMwst.nBetrag_FRW = tMwst.nTotal_FRW - tMwst.nMwst_FRW.
  1389. IF nDiff <> 0 THEN
  1390. ASSIGN
  1391. tMwst.nTotal = tMwst.nTotal + nDiff
  1392. tMwst.nBetrag = tMwst.nTotal - tMwst.nMwst.
  1393. LEAVE.
  1394. END.
  1395. /* OUTPUT TO 'C:\TEMP\tMwst.csv' APPEND.*/
  1396. /* FOR EACH tMwst: */
  1397. /* EXPORT DELIMITER ';' tMwst. */
  1398. /* END. */
  1399. /* OUTPUT CLOSE. */
  1400. END.
  1401. lFehler = FALSE.
  1402. BUCHEN:
  1403. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  1404. FIND FIRST tAufko.
  1405. RUN VERBUCHEN_UMSAETZE ( OUTPUT lFehler ).
  1406. IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN.
  1407. IF tAufko.Fak_Art <> 99 THEN
  1408. DO:
  1409. RUN VERBUCHEN_DEBITOR ( OUTPUT lFehler ).
  1410. IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN.
  1411. RUN MEHRWERTSTEUER_IN_KONTO ( OUTPUT lFehler ).
  1412. IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN.
  1413. RUN NEBENKOSTEN_IN_KONTO ( OUTPUT lFehler ).
  1414. IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN.
  1415. RUN VERBUCHEN_INTERFACE ( OUTPUT lFehler ).
  1416. IF lFehler THEN UNDO BUCHEN, LEAVE BUCHEN.
  1417. FIND FIRST tUmsatz
  1418. WHERE tUmsatz.cArt = 'Debst'
  1419. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  1420. FIND Debst WHERE RECID(Debst) = dRecid.
  1421. Debst.Saldo = Debst.Saldo + nFakTotal.
  1422. Debst.Saldo_Frw = Debst.Saldo_Frw + nFakTotalFrw.
  1423. Debst.Zuschl_Verr = Debst.Zuschl_Verr + tUmsatz.nZuschlag.
  1424. Debst.LetztVK = dBuchDat.
  1425. END.
  1426. DISABLE TRIGGERS FOR LOAD OF Aufze.
  1427. FOR EACH tAuftraege:
  1428. FIND Aufko
  1429. WHERE Aufko.Firma = tAuftraege.cFirma
  1430. AND Aufko.Aufnr = tAuftraege.iAufnr.
  1431. ASSIGN
  1432. Aufko.Verbucht = TRUE
  1433. Aufko.Kurs = tAuftraege.nKurs
  1434. Aufko.Faktor = tAuftraege.iFaktor
  1435. .
  1436. FOR EACH Aufze OF Aufko:
  1437. ASSIGN
  1438. Aufze.Verbucht = TRUE
  1439. Aufze.Kurs = Aufko.Kurs
  1440. Aufze.Faktor = Aufko.Faktor
  1441. .
  1442. END.
  1443. RELEASE Aufko.
  1444. RELEASE Aufze.
  1445. END.
  1446. IF tAufko.Fak_Art = 99 THEN LEAVE.
  1447. FIND FIRST tVerbucht
  1448. WHERE tVerbucht.Datum = dBuchDat
  1449. AND tVerbucht.Konto = tAufko.cKtoDebitor NO-ERROR.
  1450. IF NOT AVAILABLE tVerbucht THEN
  1451. DO:
  1452. CREATE tVerbucht.
  1453. ASSIGN
  1454. tVerbucht.Datum = dBuchDat
  1455. tVerbucht.Konto = tAufko.cKtoDebitor
  1456. tVerbucht.nKurs = tAufko.Kurs
  1457. tVerbucht.iFaktor = tAufko.Faktor
  1458. tVerbucht.Frw = tAufko.Frw.
  1459. END.
  1460. ASSIGN
  1461. tVerbucht.FakBetr = tVerbucht.FakBetr + nFakTotal.
  1462. IF Debst.Passant THEN RUN PASSANT.
  1463. FIND FIRST tUmsatz
  1464. WHERE tUmsatz.cArt = 'Debza'
  1465. AND tUmsatz.iKnr = tAufko.Fak_Knr NO-ERROR.
  1466. IF AVAILABLE tUmsatz THEN RUN CREATE_ZAHLUNG.
  1467. RELEASE bAufko.
  1468. RELEASE Debst.
  1469. LEAVE.
  1470. END.
  1471. IF lFehler THEN
  1472. DO:
  1473. FIND FIRST tAufko.
  1474. MESSAGE
  1475. 'Fehler beim Verbuchen der Rechnung ' SKIP
  1476. 'Kundennummer ' tAufko.Knr SKIP
  1477. 'Auftragsnummer ' tAufko.Aufnr SKIP
  1478. 'Fakturanummer ' tAufko.Faknr SKIP
  1479. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  1480. END.
  1481. REPEAT TRANSACTION WHILE NOT lFehler:
  1482. FIND FIRST tAufko.
  1483. IF tAufko.Fak_Art = 99 THEN LEAVE.
  1484. IF lSendMail THEN
  1485. DO:
  1486. ASSIGN
  1487. cMailTo = ''
  1488. cAnrede = ''.
  1489. FIND bAdresse NO-LOCK WHERE RECID(bAdresse) = aRecid.
  1490. FIND bDebst NO-LOCK WHERE RECID(bDebst) = dRecid.
  1491. FOR EACH Ansprech NO-LOCK
  1492. WHERE Ansprech.Firma = Firma
  1493. AND Ansprech.Knr = bDebst.Knr
  1494. AND Ansprech.Debitoren = TRUE
  1495. AND Ansprech.Mail <> '':
  1496. cMailTo = cMailTo
  1497. + (IF cMailTo = '' THEN '' ELSE ';')
  1498. + Ansprech.Mail.
  1499. cAnrede = cAnrede
  1500. + (IF cAnrede = '' THEN '' ELSE ', ')
  1501. + Ansprech.BriefAnr.
  1502. END.
  1503. IF cMailTo = '' THEN
  1504. DO:
  1505. cMailTo = bAdresse.Mail.
  1506. cAnrede = bAdresse.BriefAnr.
  1507. END.
  1508. RUN getMailBody ( TRIM(STRING(bAdresse.Sprcd,'>9')), OUTPUT cMailBody ).
  1509. cMailBody = SUBSTITUTE(cMailBody, bAdresse.BriefAnr, tAufko.Faknr).
  1510. CREATE tSendMail.
  1511. ASSIGN
  1512. tSendMail.iKnr = bDebst.Knr
  1513. tSendMail.cKunde = bAdresse.Anzeig_Br
  1514. tSendMail.cMail = (IF cMailTo = '' THEN 'Keine Mailadresse' ELSE cMailTo)
  1515. tSendmail.iFaknr = iFaknr.
  1516. IF cMailTo = '' THEN
  1517. DO:
  1518. lSendMail = FALSE.
  1519. LEAVE.
  1520. END.
  1521. cDateiName = SUBSTITUTE(cMailVersandPath,
  1522. STRING(tAufko.Fak_Knr,'999999'),
  1523. STRING(tAufko.Faknr ,'9999999'),
  1524. DYNAMIC-FUNCTION('getDokumentArt':U, tAufko.Fak_Art) ).
  1525. CREATE ASMutation.
  1526. ASSIGN
  1527. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  1528. ASMutation.MutArt = 'MAIL'
  1529. ASMutation.Aktiv = TRUE
  1530. ASMutation.cStatus = ''
  1531. ASMutation.Datum = TODAY
  1532. ASMutation.Firma = Firma
  1533. ASMutation.cFeld_1 = SUBSTITUTE('TO:&1;CC:&2', cMailTo, cKopieRechnung)
  1534. ASMutation.cFeld_2 = SUBSTITUTE('Rechnung Nr &1', tAufko.Faknr )
  1535. ASMutation.cFeld_3 = cMailBody
  1536. ASMutation.cKey_1 = STRING(tAufko.Fak_Art,'99')
  1537. ASMutation.cKey_2 = cDateiName.
  1538. RELEASE ASMutation.
  1539. lSendMail = FALSE.
  1540. iAnzMail = iAnzMail + 1.
  1541. END.
  1542. IF tAufko.Samm_Nr = 0 THEN LEAVE.
  1543. FOR EACH Aufko USE-INDEX Aufko-k2
  1544. WHERE Aufko.Firma = tAufko.Firma
  1545. AND Aufko.Fak_Knr = tAufko.Fak_Knr
  1546. AND Aufko.Samm_Nr <> 0
  1547. AND Aufko.Auf_Sta < 4:
  1548. Aufko.Faknr = 0.
  1549. Aufko.Gedruckt = FALSE.
  1550. RELEASE Aufko.
  1551. END.
  1552. RELEASE Aufko.
  1553. LEAVE.
  1554. END.
  1555. END.
  1556. RUN LOESCHEN_VERBUCHTE_AUFTRAEGE.
  1557. F_Adresse = 'Barzahlungen werden verbucht ...'.
  1558. DISPLAY F_Adresse WITH FRAME {&FRAME-NAME}.
  1559. RUN ZAHLUNGEN_BUCHEN ( Firma, 90 ).
  1560. IF AnzFak > 1 THEN
  1561. DO:
  1562. DEFINE VARIABLE hVerbucht AS HANDLE NO-UNDO.
  1563. hVerbucht = TEMP-TABLE tVerbucht:DEFAULT-BUFFER-HANDLE.
  1564. RUN 'g-verbuchjour.w':U ( hVerbucht ).
  1565. END.
  1566. IF iAnzMail > 0 THEN
  1567. DO:
  1568. RUN createMailBodyProtokoll ( OUTPUT cMailBody ).
  1569. REPEAT TRANSACTION:
  1570. CREATE ASMutation.
  1571. ASSIGN
  1572. ASMutation.asmutation_id = NEXT-VALUE(asmutation_id)
  1573. ASMutation.MutArt = 'MAIL'
  1574. ASMutation.Aktiv = TRUE
  1575. ASMutation.cStatus = ''
  1576. ASMutation.Datum = TODAY
  1577. ASMutation.Firma = Firma
  1578. ASMutation.cFeld_1 = SUBSTITUTE('TO:&1', cProtokollRechnungen)
  1579. ASMutation.cFeld_2 = SUBSTITUTE('Protokoll Mailversand Rechnung &1 &2', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS') )
  1580. ASMutation.cFeld_3 = cMailBody
  1581. ASMutation.cKey_1 = 'Protokoll'
  1582. ASMutation.cKey_2 = ''.
  1583. RELEASE ASMutation.
  1584. LEAVE.
  1585. END.
  1586. F_Adresse = 'Versenden der Mail-Rechnungen ...'.
  1587. DISPLAY F_Adresse WITH FRAME {&FRAME-NAME}.
  1588. RUN 'SendMailStart.p'.
  1589. END.
  1590. ENABLE Btn_Start WITH FRAME {&FRAME-NAME}.
  1591. IF lBatch THEN
  1592. DO:
  1593. APPLY 'GO' TO FRAME {&FRAME-NAME}.
  1594. RETURN NO-APPLY.
  1595. END.
  1596. RETURN NO-APPLY.
  1597. END PROCEDURE.
  1598. /* _UIB-CODE-BLOCK-END */
  1599. &ANALYZE-RESUME
  1600. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN_DEBITOR gVerbuchen
  1601. PROCEDURE VERBUCHEN_DEBITOR :
  1602. /*------------------------------------------------------------------------------*/
  1603. /* Purpose: Super Override */
  1604. /* Parameters: */
  1605. /* Notes: */
  1606. /*------------------------------------------------------------------------------*/
  1607. DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO.
  1608. lRetVal = TRUE.
  1609. DEFINE VARIABLE iTage AS INTEGER NO-UNDO.
  1610. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  1611. DEFINE VARIABLE nToleranz AS DECIMAL INIT 1.00 NO-UNDO.
  1612. DEFINE VARIABLE nDifferenz AS DECIMAL NO-UNDO.
  1613. FIND FIRST tAufko.
  1614. FIND FIRST tUmsatz
  1615. WHERE tUmsatz.cArt = 'Debst'
  1616. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  1617. FIND Adresse NO-LOCK
  1618. WHERE Adresse.Firma = AdFirma
  1619. AND Adresse.Knr = tAufko.Fak_Knr NO-ERROR.
  1620. IF NOT AVAILABLE Adresse THEN
  1621. DO:
  1622. FIND Adresse NO-LOCK
  1623. WHERE Adresse.Firma = AdFirma
  1624. AND Adresse.Knr = tAufko.Knr.
  1625. END.
  1626. FIND Debst
  1627. WHERE Debst.Firma = tAufko.Firma
  1628. AND Debst.Knr = tAufko.Fak_Knr NO-ERROR.
  1629. IF NOT AVAILABLE Debst THEN
  1630. DO:
  1631. FIND Debst
  1632. WHERE Debst.Firma = tAufko.Firma
  1633. AND Debst.Knr = tAufko.Knr NO-ERROR.
  1634. END.
  1635. FIND Kondi NO-LOCK
  1636. WHERE Kondi.Sprcd = Adresse.Sprcd
  1637. AND Kondi.Kond = tAufko.Kond NO-ERROR.
  1638. IF NOT AVAILABLE Kondi THEN
  1639. DO:
  1640. FIND FIRST Kondi NO-LOCK
  1641. WHERE Kondi.Kond = tAufko.Kond NO-ERROR.
  1642. END.
  1643. IF AVAILABLE Kondi THEN iTage = Kondi.Faellig.
  1644. ELSE iTage = 30.
  1645. FIND Steuer NO-LOCK
  1646. WHERE Steuer.Firma = tAufko.Firma.
  1647. FIND SteuNr NO-LOCK
  1648. WHERE SteuNr.Firma = tAufko.Firma.
  1649. nFakTotal = 0.
  1650. FOR EACH tMwst WHERE tMwst.iCd < 12:
  1651. FIND LAST MwstAns NO-LOCK
  1652. WHERE MwstAns.Mwst_Cd = tMwst.iCd
  1653. AND MwstAns.Datum <= dBuchDat NO-ERROR.
  1654. tMwst.nAnsatz = MwstAns.Ansatz.
  1655. nFakTotal = nFakTotal + tMwst.nTotal.
  1656. END.
  1657. /* RUN RUNDEN ( 1, INPUT-OUTPUT nFakTotal ).*/
  1658. nDifferenz = tUmsatz.nAufTot - nFakTotal.
  1659. IF ABS(nDifferenz) > nToleranz THEN RETURN.
  1660. FIND LAST TransNr NO-LOCK
  1661. WHERE TransNr.Firma = '9999' NO-ERROR.
  1662. iTrNr1 = (IF AVAILABLE TransNr THEN TransNr.TrNr1 + 1 ELSE 1).
  1663. iTrNr2 = 1.
  1664. iTrans = 0.
  1665. CREATE TransNr.
  1666. ASSIGN
  1667. TransNr.Firma = '9999'
  1668. TransNr.TrNr1 = iTrnr1
  1669. TransNr.TrNr2 = iTrnr2
  1670. TransNr.Herk = 51
  1671. TransNr.Erf_Datum = TODAY
  1672. TransNr.Erf_Zeit = TIME
  1673. TransNr.SaBe = DYNAMIC-FUNCTION('getSysUser':U)
  1674. TransNr.Betrag = nFakTotalFrw.
  1675. RELEASE TransNr.
  1676. CREATE Debop.
  1677. ASSIGN
  1678. Debop.Firma = tAufko.Firma
  1679. Debop.Knr = tAufko.Fak_Knr
  1680. Debop.Faknr = tAufko.Faknr
  1681. Debop.Fakdat = dBuchDat
  1682. Debop.Faellig = dBuchDat + iTage
  1683. Debop.Skber = nSkBer
  1684. Debop.WW = nWW
  1685. Debop.Fakbetr = nFakTotal
  1686. Debop.Saldo = nFakTotal
  1687. Debop.Kond = tAufko.Kond
  1688. Debop.Transp = tUmsatz.nTransp
  1689. Debop.Porto = tUmsatz.nPorto
  1690. Debop.Verpack = tUmsatz.nVerpack
  1691. Debop.Konto = tUmsatz.cKonto
  1692. Debop.Vertr = Debst.Vertr
  1693. Debop.Kte = 'DEF':U
  1694. Debop.TrNr1 = iTrNr1
  1695. Debop.TrNr2 = iTrNr2
  1696. Debop.FRW = tUmsatz.Frw
  1697. Debop.Kurs = tUmsatz.nKurs
  1698. Debop.Faktor = tUmsatz.iFaktor
  1699. Debop.Fakbetr_FRW = nFakTotalFrw
  1700. Debop.Saldo_FRW = nFakTotalFrw
  1701. Debop.WW_FRW = nWW / tUmsatz.nKurs * tUmsatz.iFaktor
  1702. Debop.Skber_FRW = nSkber / tUmsatz.nKurs * tUmsatz.iFaktor
  1703. .
  1704. IF Steuer.MWST = 0 THEN Debop.WustAbr = TRUE. /* vereinbart */
  1705. ELSE Debop.WustAbr = FALSE. /* vereinnahmt */
  1706. IF Debop.Fakbetr_FRW = 0 THEN Debop.WustAbr = TRUE. /* vereinbart */
  1707. FOR EACH tMwst
  1708. WHERE tMwst.iFaknr = tAufko.Faknr
  1709. AND tMwst.nTotal <> 0:
  1710. ASSIGN
  1711. Debop.FakWpfl[tMwst.iCd] = tMwst.nBetrag
  1712. Debop.FakWust[tMwst.iCd] = tMwst.nMwst
  1713. Debop.FakIncl[tMwst.iCd] = tMwst.lInkl
  1714. Debop.FakWPro[tMwst.iCd] = tMwst.nAnsatz.
  1715. END.
  1716. CREATE Debfa.
  1717. ASSIGN
  1718. Debfa.Firma = Debop.Firma
  1719. Debfa.Knr = Debop.Knr
  1720. Debfa.Faknr = Debop.Faknr
  1721. Debfa.Fakdat = Debop.Fakdat
  1722. Debfa.Faellig = Debop.Faellig
  1723. Debfa.Fakbetr = Debop.Fakbetr
  1724. Debfa.Skber = Debop.Skber
  1725. Debfa.WW = Debop.WW
  1726. Debfa.Transp = Debop.Transp
  1727. Debfa.Porto = Debop.Porto
  1728. Debfa.Verpack = Debop.Verpack
  1729. Debfa.Konto = Debop.Konto
  1730. Debfa.Vertr = Debop.Vertr
  1731. Debfa.Kte = Debop.Kte
  1732. Debfa.TrNr1 = Debop.TrNr1
  1733. Debfa.TrNr2 = Debop.TrNr2
  1734. Debfa.FRW = Debop.FRW
  1735. Debfa.Kurs = Debop.Kurs
  1736. Debfa.Faktor = Debop.Faktor
  1737. Debfa.Fakbetr_FRW = Debop.Fakbetr_FRW
  1738. Debfa.WW_FRW = Debop.WW_FRW
  1739. Debfa.Skber_FRW = Debop.Skber_FRW
  1740. Debfa.Fakwpfl = Debop.Fakwpfl
  1741. Debfa.Fakwust = Debop.Fakwust
  1742. .
  1743. /* DO ii = 1 TO 12: */
  1744. /* ASSIGN */
  1745. /* Debfa.FakWpfl[ii] = Debop.FakWpfl[ii] */
  1746. /* Debfa.FakWust[ii] = Debop.FakWust[ii].*/
  1747. /* END. */
  1748. FIND LAST Debhi NO-LOCK USE-INDEX Debhi-k1
  1749. WHERE Debhi.Firma = Debop.Firma
  1750. AND Debhi.Knr = Debop.Knr NO-ERROR.
  1751. IF AVAILABLE Debhi THEN iTrans = Debhi.Trnr + 1.
  1752. ELSE iTrans = 1.
  1753. CREATE Debhi.
  1754. ASSIGN
  1755. Debhi.Firma = Debop.Firma
  1756. Debhi.Knr = Debop.Knr
  1757. Debhi.Trnr = iTrans
  1758. Debhi.Datum = Debop.Fakdat
  1759. Debhi.Faknr = Debop.Faknr
  1760. Debhi.Kte = Debop.Kte
  1761. Debhi.Soll = Debop.Fakbetr
  1762. Debhi.Transp = Debop.Transp
  1763. Debhi.Porto = Debop.Porto
  1764. Debhi.Verpack = Debop.Verpack
  1765. Debhi.Konto = Debop.Konto
  1766. Debhi.TrNr1 = Debop.TrNr1
  1767. Debhi.TrNr2 = Debop.TrNr2
  1768. Debhi.FRW = Debop.FRW
  1769. Debhi.Kurs = Debop.Kurs
  1770. Debhi.Faktor = Debop.Faktor
  1771. Debhi.Saldo = Debst.Saldo_FRW + Debop.Fakbetr_Frw
  1772. Debhi.Soll_FRW = Debop.Fakbetr_FRW
  1773. .
  1774. IF Debop.WustAbr THEN
  1775. DO: /* Mehrwertsteuer vereinbart */
  1776. CREATE Debwu.
  1777. ASSIGN
  1778. Debwu.Firma = Debop.Firma
  1779. Debwu.Knr = Debop.Knr
  1780. Debwu.Faknr = Debop.Faknr
  1781. Debwu.Trnr = 1
  1782. Debwu.Datum = Debop.Fakdat
  1783. Debwu.Betrag = Debop.Fakbetr
  1784. Debwu.Konto = Debop.Konto
  1785. Debwu.Kte = Debop.Kte
  1786. Debwu.TrNr1 = Debop.TrNr1
  1787. Debwu.TrNr2 = Debop.TrNr2
  1788. Debwu.FRW = Debop.FRW
  1789. Debwu.Kurs = Debop.Kurs
  1790. Debwu.Faktor = Debop.Faktor
  1791. Debwu.Betrag_FRW = Debop.Fakbetr_FRW
  1792. Debwu.Wustpfl = Debop.FakWpfl
  1793. Debwu.Wust = Debop.FakWust
  1794. .
  1795. /* DO ii = 1 TO 12: */
  1796. /* IF Debop.FakWpfl[ii] = 0 THEN NEXT. */
  1797. /* ASSIGN */
  1798. /* Debwu.Wustpfl[ii] = Debop.FakWpfl[ii] */
  1799. /* Debwu.Wust [ii] = Debop.FakWust[ii].*/
  1800. /* END. */
  1801. END.
  1802. lRetVal = FALSE.
  1803. RELEASE Adresse .
  1804. RELEASE Debst .
  1805. RELEASE Steuer .
  1806. RELEASE Debop .
  1807. RELEASE Debhi .
  1808. RELEASE Debfa .
  1809. RELEASE Debwu .
  1810. RELEASE Kondi .
  1811. END PROCEDURE.
  1812. /* _UIB-CODE-BLOCK-END */
  1813. &ANALYZE-RESUME
  1814. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN_INTERFACE gVerbuchen
  1815. PROCEDURE VERBUCHEN_INTERFACE :
  1816. /*------------------------------------------------------------------------------*/
  1817. /* Purpose: */
  1818. /* Parameters: <none> */
  1819. /* Notes: */
  1820. /*------------------------------------------------------------------------------*/
  1821. DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO.
  1822. lRetVal = TRUE.
  1823. DEFINE VARIABLE cBuchText1 AS CHARACTER NO-UNDO.
  1824. DEFINE VARIABLE cBuchText2 AS CHARACTER NO-UNDO.
  1825. DEFINE VARIABLE nDiff AS DECIMAL NO-UNDO.
  1826. DEFINE VARIABLE cFBFirma AS CHARACTER NO-UNDO.
  1827. DEFINE VARIABLE nBetrag AS DECIMAL NO-UNDO.
  1828. FIND FIRST tAufko.
  1829. FIND FIRST tUmsatz
  1830. WHERE tUmsatz.cArt = 'Debst'
  1831. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  1832. FIND Adresse NO-LOCK
  1833. WHERE Adresse.Firma = AdFirma
  1834. AND Adresse.Knr = tAufko.Fak_Knr NO-ERROR.
  1835. IF NOT AVAILABLE Adresse THEN
  1836. DO:
  1837. FIND Adresse NO-LOCK
  1838. WHERE Adresse.Firma = AdFirma
  1839. AND Adresse.Knr = tAufko.Knr NO-ERROR.
  1840. END.
  1841. FIND Steuer NO-LOCK
  1842. WHERE Steuer.Firma = tAufko.Firma.
  1843. cBuchText1 = SUBSTITUTE('Debitorrechnung Nr. &1', STRING(tAufko.Faknr,'9999999')).
  1844. cBuchText2 = Adresse.Anzeig_Br.
  1845. /* OUTPUT TO 'C:\LogFiles\SAGEKonto.csv' NO-MAP NO-CONVERT.*/
  1846. /* FOR EACH tKonto */
  1847. /* BY tKonto.cKto1 */
  1848. /* BY tKonto.cKto2 */
  1849. /* BY tKonto.iMWSt_Cd: */
  1850. /* EXPORT DELIMITER ';' tKonto. */
  1851. /* END. */
  1852. /* OUTPUT CLOSE. */
  1853. /* */
  1854. nDiff = nFakTotal.
  1855. FOR EACH tKonto
  1856. BY tKonto.cKto1
  1857. BY tKonto.cKto2
  1858. BY tKonto.iMWSt_Cd:
  1859. IF tKonto.nBetrag = 0 THEN
  1860. DO:
  1861. DELETE tKonto.
  1862. NEXT.
  1863. END.
  1864. tKonto.nBetrag = DECIMAL(STRING(tKonto.nBetrag,'99999999.99-')).
  1865. IF tKonto.cKto1 = tAufko.cKtoDebitor THEN nDiff = nDiff - tKonto.nBetrag.
  1866. IF Steuer.Fwc09 = '' THEN
  1867. DO:
  1868. ASSIGN
  1869. tKonto.iMWSt_Cd = 0
  1870. tKonto.lMWSt = FALSE.
  1871. END.
  1872. END.
  1873. IF nDiff <> 0 THEN
  1874. DO:
  1875. /* Rundungsdifferenz vom Faktura-Total zu den einzelnen Ertragsbuchungen */
  1876. /* werden auf das Ertragskonto mit dem grössten Betrag gebucht */
  1877. FOR EACH tKonto
  1878. WHERE tKonto.cArt = 'WARE'
  1879. BY tKonto.nBetrag DESCENDING:
  1880. tKonto.nBetrag = tKonto.nBetrag + nDiff.
  1881. LEAVE.
  1882. END.
  1883. END.
  1884. IF Steuer.Fwc09 = '' THEN cFBFirma = Steuer.FBFirma.
  1885. ELSE cFBFirma = Steuer.Fwc09.
  1886. FIND FIRST TransNr NO-LOCK
  1887. WHERE TransNr.Firma = '9999'
  1888. AND TransNr.TrNr1 = iTrNr1
  1889. AND TransNr.TrNr2 = iTrNr2.
  1890. FOR EACH tKonto
  1891. BREAK
  1892. BY tKonto.cKto1
  1893. BY tKonto.cKto2
  1894. BY tKonto.iMWSt_Cd:
  1895. IF FIRST-OF ( tKonto.iMWSt_Cd ) THEN nBetrag = 0.
  1896. nBetrag = nBetrag + tKonto.nBetrag.
  1897. IF NOT LAST-OF ( tKonto.iMWSt_Cd ) THEN NEXT.
  1898. FIND LAST Interf USE-INDEX Interf-k1
  1899. WHERE Interf.Firma = cFBFirma
  1900. AND Interf.TrNr1 = iTrNr1
  1901. AND Interf.TrNr2 = iTrNr2 NO-LOCK NO-ERROR.
  1902. IF AVAILABLE Interf THEN iTrans = Interf.Trnr + 1.
  1903. ELSE iTrans = 1.
  1904. CREATE Interf.
  1905. ASSIGN
  1906. Interf.Firma = cFBFirma
  1907. Interf.TrNr1 = iTrNr1
  1908. Interf.TrNr2 = iTrNr2
  1909. Interf.TrNr = iTrans
  1910. Interf.Kto1 = tKonto.cKto1
  1911. Interf.Kto2 = tKonto.cKto2
  1912. Interf.Herk = TransNr.Herk
  1913. Interf.Datum = dBuchDat
  1914. Interf.Buchtxt1 = cBuchText1
  1915. Interf.Buchtxt2 = cBuchText2
  1916. Interf.Betrag = nBetrag
  1917. Interf.Betrag_Frw = nBetrag / tKonto.nKurs * tKonto.iFaktor
  1918. Interf.FRW = tAufko.Frw
  1919. Interf.Faktor = tAufko.Faktor
  1920. Interf.Kurs = tAufko.Kurs
  1921. Interf.Verbucht = FALSE
  1922. Interf.Faknr = STRING(tAufko.Faknr,"9999999")
  1923. Interf.Knr = tAufko.Fak_Knr
  1924. Interf.MWST_Nr = ""
  1925. Interf.MWST_Cd = tKonto.iMWST_Cd
  1926. Interf.HKFirma = tAufko.Firma
  1927. Interf.MWST_Art = (IF tKonto.lMWSt THEN 1 ELSE 0).
  1928. END.
  1929. lRetVal = FALSE.
  1930. END PROCEDURE.
  1931. /* _UIB-CODE-BLOCK-END */
  1932. &ANALYZE-RESUME
  1933. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN_UMSAETZE gVerbuchen
  1934. PROCEDURE VERBUCHEN_UMSAETZE :
  1935. /*------------------------------------------------------------------------------*/
  1936. /* Purpose: Super Override */
  1937. /* Parameters: */
  1938. /* Notes: */
  1939. /*------------------------------------------------------------------------------*/
  1940. DEFINE OUTPUT PARAMETER lRetVal AS LOG NO-UNDO.
  1941. lRetVal = TRUE.
  1942. FIND FIRST tAufko.
  1943. FIND FIRST tUmsatz
  1944. WHERE tUmsatz.cArt = 'Debst'
  1945. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  1946. FIND DebUms USE-INDEX DebUms-k1
  1947. WHERE DebUms.Firma = tAufko.Firma
  1948. AND DebUms.Jahr = tUmsatz.iJahr
  1949. AND DebUms.Knr = tUmsatz.iKnr
  1950. AND DebUms.Ums_Grp = 999 NO-ERROR.
  1951. IF NOT AVAILABLE DebUms THEN
  1952. DO:
  1953. CREATE DebUms.
  1954. ASSIGN
  1955. DebUms.Firma = tAufko.Firma
  1956. DebUms.Jahr = tUmsatz.iJahr
  1957. DebUms.Knr = tUmsatz.iKnr
  1958. DebUms.Ums_Grp = 999.
  1959. END.
  1960. ASSIGN
  1961. DebUms.Me_Mon[tUmsatz.iPeriode] = DebUms.Me_Mon[tUmsatz.iPeriode] + tUmsatz.nMenge
  1962. DebUms.Me_Kum = DebUms.Me_Kum + tUmsatz.nMenge
  1963. DebUms.Ep_Mon[tUmsatz.iPeriode] = DebUms.Ep_Mon[tUmsatz.iPeriode] + tUmsatz.nEp
  1964. DebUms.Ep_Kum = DebUms.Ep_Kum + tUmsatz.nEp
  1965. DebUms.Vp_Mon[tUmsatz.iPeriode] = DebUms.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp
  1966. DebUms.Vp_Kum = DebUms.Vp_Kum + tUmsatz.nVp.
  1967. RELEASE DebUms.
  1968. ASSIGN
  1969. nWW = 0
  1970. nSkBer = 0
  1971. nFakTotal = 0
  1972. .
  1973. FOR EACH tUmsatz
  1974. WHERE tUmsatz.cArt = 'Artst':
  1975. FIND Artst NO-LOCK
  1976. WHERE Artst.Firma = tAufko.Firma
  1977. AND Artst.Artnr = tUmsatz.iArtnr
  1978. AND Artst.Inhalt = tUmsatz.iInhalt
  1979. AND Artst.Jahr = tUmsatz.iJG.
  1980. IF Artst.Sk_Ber THEN nSkBer = nSkber + tUmsatz.nVp.
  1981. nWW = nWW + tUmsatz.nVp.
  1982. FIND ArtUms
  1983. WHERE ArtUms.Firma = tAufko.Firma
  1984. AND ArtUms.Jahr = tUmsatz.iJahr
  1985. AND ArtUms.Artnr = tUmsatz.iArtnr
  1986. AND ArtUms.Inhalt = tUmsatz.iInhalt
  1987. AND ArtUms.Jahrg = tUmsatz.iJG NO-ERROR.
  1988. IF NOT AVAILABLE ArtUms THEN
  1989. DO:
  1990. CREATE ArtUms.
  1991. ASSIGN
  1992. ArtUms.Firma = tAufko.Firma
  1993. ArtUms.Jahr = tUmsatz.iJahr
  1994. ArtUms.Artnr = tUmsatz.iArtnr
  1995. ArtUms.Inhalt = tUmsatz.iInhalt
  1996. ArtUms.Jahrg = tUmsatz.iJG.
  1997. END.
  1998. ASSIGN
  1999. ArtUms.Me_Mon[tUmsatz.iPeriode] = ArtUms.Me_Mon[tUmsatz.iPeriode] + tUmsatz.nMenge
  2000. ArtUms.Me_Kum = ArtUms.Me_Kum + tUmsatz.nMenge
  2001. ArtUms.Ep_Mon[tUmsatz.iPeriode] = ArtUms.Ep_Mon[tUmsatz.iPeriode] + tUmsatz.nEp
  2002. ArtUms.Ep_Kum = ArtUms.Ep_Kum + tUmsatz.nEp
  2003. ArtUms.Li_Mon[tUmsatz.iPeriode] = ArtUms.Li_Mon[tUmsatz.iPeriode] + tUmsatz.nLiter
  2004. ArtUms.Li_Kum = ArtUms.Li_Kum + tUmsatz.nLiter
  2005. ArtUms.Vp_Mon[tUmsatz.iPeriode] = ArtUms.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp
  2006. ArtUms.Vp_Kum = ArtUms.Vp_Kum + tUmsatz.nVp.
  2007. RELEASE ArtUms.
  2008. FIND Umsatz
  2009. WHERE Umsatz.Firma = tAufko.Firma
  2010. AND Umsatz.Ums_Art = 'TOTAL'
  2011. AND Umsatz.Jahr = tUmsatz.iJahr
  2012. AND Umsatz.Grp_01 = 0 NO-ERROR.
  2013. IF NOT AVAILABLE Umsatz THEN
  2014. DO:
  2015. CREATE Umsatz.
  2016. ASSIGN
  2017. Umsatz.Firma = tAufko.Firma
  2018. Umsatz.Ums_Art = 'TOTAL'
  2019. Umsatz.Jahr = tUmsatz.iJahr
  2020. Umsatz.Grp_01 = 0.
  2021. END.
  2022. ASSIGN
  2023. Umsatz.VP_Mon[tUmsatz.iPeriode] = Umsatz.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp
  2024. Umsatz.VP_Kum = Umsatz.Vp_Kum + tUmsatz.nVp
  2025. Umsatz.EP_Mon[tUmsatz.iPeriode] = Umsatz.EP_Mon[tUmsatz.iPeriode] + tUmsatz.nEP
  2026. Umsatz.EP_Kum = Umsatz.EP_Kum + tUmsatz.nEP.
  2027. RELEASE Umsatz.
  2028. END.
  2029. FOR EACH tUmsatz
  2030. WHERE tUmsatz.cArt = 'DebArt':
  2031. FIND DeArUms
  2032. WHERE DeArUms.Firma = tAufko.Firma
  2033. AND DeArUms.Jahr = tUmsatz.iJahr
  2034. AND DeArUms.Knr = tUmsatz.iKnr
  2035. AND DeArUms.Artnr = tUmsatz.iArtnr
  2036. AND DeArUms.Inhalt = tUmsatz.iInhalt
  2037. AND DeArUms.Jahrg = tUmsatz.iJG NO-ERROR.
  2038. IF NOT AVAILABLE DeArUms THEN
  2039. DO:
  2040. CREATE DeArUms.
  2041. ASSIGN
  2042. DeArUms.Firma = tAufko.Firma
  2043. DeArUms.Jahr = tUmsatz.iJahr
  2044. DeArUms.Knr = tUmsatz.iKnr
  2045. DeArUms.Artnr = tUmsatz.iArtnr
  2046. DeArUms.Inhalt = tUmsatz.iInhalt
  2047. DeArUms.Jahrg = tUmsatz.iJG.
  2048. END.
  2049. ASSIGN
  2050. DeArUms.Me_Mon[tUmsatz.iPeriode] = DeArUms.Me_Mon[tUmsatz.iPeriode] + tUmsatz.nMenge
  2051. DeArUms.Me_Kum = DeArUms.Me_Kum + tUmsatz.nMenge
  2052. DeArUms.Ep_Mon[tUmsatz.iPeriode] = DeArUms.Ep_Mon[tUmsatz.iPeriode] + tUmsatz.nEp
  2053. DeArUms.Ep_Kum = DeArUms.Ep_Kum + tUmsatz.nEp
  2054. DeArUms.Li_Mon[tUmsatz.iPeriode] = DeArUms.Li_Mon[tUmsatz.iPeriode] + tUmsatz.nLiter
  2055. DeArUms.Li_Kum = DeArUms.Li_Kum + tUmsatz.nLiter
  2056. DeArUms.Vp_Mon[tUmsatz.iPeriode] = DeArUms.Vp_Mon[tUmsatz.iPeriode] + tUmsatz.nVp
  2057. DeArUms.Vp_Kum = DeArUms.Vp_Kum + tUmsatz.nVp.
  2058. RELEASE DeArUms.
  2059. END.
  2060. lRetVal = FALSE.
  2061. END PROCEDURE.
  2062. /* _UIB-CODE-BLOCK-END */
  2063. &ANALYZE-RESUME
  2064. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE WERTE_EINLESEN gVerbuchen
  2065. PROCEDURE WERTE_EINLESEN :
  2066. /*------------------------------------------------------------------------------*/
  2067. /* Purpose: Super Override */
  2068. /* Parameters: */
  2069. /* Notes: */
  2070. /*------------------------------------------------------------------------------*/
  2071. DEFINE VARIABLE lRetVal AS LOG NO-UNDO.
  2072. DEFINE VARIABLE iFakArt AS INTEGER NO-UNDO.
  2073. DEFINE VARIABLE iAufSta AS INTEGER NO-UNDO.
  2074. DEFINE VARIABLE lBuchdat AS LOGICAL NO-UNDO.
  2075. DEFINE BUFFER bTabel FOR Tabel.
  2076. DO WITH FRAME {&FRAME-NAME}:
  2077. ASSIGN {&List-6}.
  2078. IF F_vonFaknr = 0 AND F_bisFaknr = 0 THEN F_bisFaknr = 9999999 .
  2079. IF F_vonFaknr > F_bisFaknr THEN F_bisFaknr = F_vonFaknr .
  2080. IF F_vonFakKnr = 0 AND F_bisFakKnr = 0 THEN F_bisFakKnr = 999999 .
  2081. IF F_vonFakKnr > F_bisFakKnr THEN F_bisFakKnr = F_vonFakKnr .
  2082. IF F_vonFaknr = 0 THEN F_vonFaknr = 1.
  2083. IF F_vonDatum = ? AND
  2084. F_bisDatum = ? THEN
  2085. DO:
  2086. F_vonDatum = 01/01/1901.
  2087. F_bisDatum = TODAY.
  2088. END.
  2089. IF F_vonDatum > F_bisDatum THEN F_bisDatum = F_vonDatum.
  2090. iFakart = INTEGER(CB_Fakart:SCREEN-VALUE).
  2091. iAufSta = INTEGER(CB_AufSta:SCREEN-VALUE).
  2092. FIND FIRST Aufko NO-LOCK
  2093. WHERE Aufko.Firma = Firma
  2094. AND Aufko.Fak_Art = iFakArt
  2095. AND Aufko.Faknr >= F_vonFaknr
  2096. AND Aufko.Faknr <= F_bisFaknr
  2097. AND Aufko.Fak_Datum >= F_vonDatum
  2098. AND Aufko.Fak_Datum <= F_bisDatum
  2099. AND Aufko.Fak_Knr >= F_vonFakKnr
  2100. AND Aufko.Fak_Knr <= F_bisFakKnr
  2101. AND Aufko.Auf_Sta >= iAufSta
  2102. AND Aufko.Auf_Sta <= iAufSta NO-ERROR.
  2103. IF NOT AVAILABLE Aufko THEN RETURN 'Keine Selektion'.
  2104. IF F_vonFaknr = F_bisFaknr AND
  2105. Aufko.Samm_Nr = 0 AND
  2106. F_Buchdat = ? THEN F_Buchdat = Aufko.Fak_Datum.
  2107. /* lBuchdat = (IF Aufko.Samm_Nr > 0 THEN TRUE ELSE FALSE ).*/
  2108. /* IF NOT lBuchdat AND */
  2109. /* THEN F_Buchdat = ?. */
  2110. DO WHILE TRUE:
  2111. IF F_Buchdat = ? AND
  2112. lBuchdat THEN
  2113. DO:
  2114. MESSAGE 'Buchungsdatum fehlt!'
  2115. VIEW-AS ALERT-BOX.
  2116. RETURN 'F_Buchdat'.
  2117. END.
  2118. IF F_Buchdat = ? THEN LEAVE.
  2119. IF F_Buchdat <= dSperrDat THEN
  2120. DO:
  2121. MESSAGE 'Das Buchungsdatum ist älter als das SperrDatum '
  2122. dSperrDat
  2123. VIEW-AS ALERT-BOX.
  2124. RETURN 'F_Buchdat'.
  2125. END.
  2126. IF F_Buchdat >= (TODAY - 60) AND
  2127. F_Buchdat <= (TODAY + 30) THEN LEAVE.
  2128. F_Buchdat:BGCOLOR = 12.
  2129. lRetVal = FALSE.
  2130. MESSAGE 'das Buchungsdatum sollte überprüft werden!' SKIP
  2131. 'wenn es richtig ist, dann OK'
  2132. VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO
  2133. UPDATE lRetVal.
  2134. IF lRetVal THEN LEAVE.
  2135. RETURN 'F_Buchdat'.
  2136. END.
  2137. DISPLAY {&List-6}.
  2138. F_Adresse:VISIBLE = TRUE.
  2139. F_Adresse:SCREEN-VALUE = ''.
  2140. iFakArt = INTEGER(CB_Fakart:SCREEN-VALUE).
  2141. iAufSta = INTEGER(CB_AufSta:SCREEN-VALUE).
  2142. FIND bTabel NO-LOCK
  2143. WHERE bTabel.Firma = Firma
  2144. AND bTabel.RecArt = 'FAKART'
  2145. AND bTabel.CodeC = ''
  2146. AND bTabel.CodeI = iFakArt
  2147. AND bTabel.Sprcd = 1 NO-ERROR.
  2148. IF bTabel.Int_3 = 4 THEN lSammFak = TRUE.
  2149. ELSE lSammFak = FALSE.
  2150. DISPLAY {&List-6}.
  2151. END.
  2152. RETURN ''.
  2153. END PROCEDURE.
  2154. /* _UIB-CODE-BLOCK-END */
  2155. &ANALYZE-RESUME
  2156. /* ************************ Function Implementations ***************** */
  2157. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION checkAlleGedruckt gVerbuchen
  2158. FUNCTION checkAlleGedruckt RETURNS LOGICAL
  2159. ( ipRecid AS RECID ) :
  2160. /*------------------------------------------------------------------------------*/
  2161. /* Purpose: Super Override */
  2162. /* Parameters: */
  2163. /* Notes: */
  2164. /*------------------------------------------------------------------------------*/
  2165. DEFINE VARIABLE lRetVal AS LOG NO-UNDO.
  2166. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
  2167. DEFINE VARIABLE iSammNr AS INTEGER NO-UNDO.
  2168. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO.
  2169. DEFINE BUFFER dAufko FOR Aufko.
  2170. FIND dAufko NO-LOCK WHERE RECID(dAufko) = ipRecid.
  2171. ASSIGN
  2172. iFaknr = dAufko.Faknr
  2173. iSammNr = dAufko.Samm_Nr
  2174. iKnr = dAufko.Fak_Knr.
  2175. RELEASE dAufko.
  2176. lRetVal = TRUE.
  2177. FOR EACH dAufko NO-LOCK USE-INDEX Aufko-k6
  2178. WHERE dAufko.Firma = Firma
  2179. AND dAufko.Fak_Knr = iKnr
  2180. AND dAufko.Samm_Nr = iSammNr
  2181. AND dAufko.Faknr = iFaknr :
  2182. IF NOT dAufko.Gedruckt THEN
  2183. DO:
  2184. lRetVal = FALSE.
  2185. RELEASE dAufko.
  2186. LEAVE.
  2187. END.
  2188. END.
  2189. RELEASE dAufko.
  2190. RETURN lRetVal.
  2191. END FUNCTION.
  2192. /* _UIB-CODE-BLOCK-END */
  2193. &ANALYZE-RESUME
  2194. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION makeUmsatz gVerbuchen
  2195. FUNCTION makeUmsatz RETURNS LOGICAL
  2196. ( /* parameter-definitions */ ) :
  2197. /*------------------------------------------------------------------------------*/
  2198. /* Purpose: Super Override */
  2199. /* Parameters: */
  2200. /* Notes: */
  2201. /*------------------------------------------------------------------------------*/
  2202. DEFINE VARIABLE nNetto AS DECIMAL NO-UNDO.
  2203. DEFINE VARIABLE nMwst AS DECIMAL NO-UNDO.
  2204. DEFINE VARIABLE iTrnr AS INTEGER NO-UNDO.
  2205. DEFINE VARIABLE htAufze AS HANDLE NO-UNDO.
  2206. DEFINE VARIABLE cKtoSoll AS CHARACTER NO-UNDO.
  2207. DEFINE VARIABLE cKtoHaben AS CHARACTER NO-UNDO.
  2208. DEFINE BUFFER bArtbw FOR Artbw.
  2209. DEFINE BUFFER bAufze FOR Aufze.
  2210. FIND FIRST tAufko.
  2211. FIND FIRST tAufze.
  2212. IF tAufko.Fak_Art = 99 THEN RETURN TRUE.
  2213. nNetto = tAufze.Net_Betr - tAufze.Auf_Rab - tAufze.Abh_Rab - tAufze.Auf_Sp_Rab.
  2214. IF tAufze.Mwst_Inkl THEN nMwst = nNetto * tAufze.Mwst% / (100 + tAufze.Mwst%).
  2215. ELSE nMwst = 0.
  2216. nNetto = nNetto - nMwst.
  2217. nNetto = nNetto * tAufko.Kurs / tAufko.Faktor.
  2218. FIND FIRST tUmsatz
  2219. WHERE tUmsatz.cArt = 'Debst'
  2220. AND tUmsatz.iKnr = tAufko.Fak_Knr.
  2221. ASSIGN
  2222. tUmsatz.nMenge = tUmsatz.nMenge + tAufze.MGel
  2223. tUmsatz.nEp = tUmsatz.nEp + (tAufze.MGel * tAufze.Ep)
  2224. tUmsatz.nVp = tUmsatz.nVp + nNetto
  2225. tUmsatz.nZuschlag = tUmsatz.nZuschlag + tAufze.Zus_Betr
  2226. tUmsatz.nLiter = tUmsatz.nLiter + tAufze.Liter.
  2227. cKtoSoll = tUmsatz.cKonto.
  2228. FIND FIRST tUmsatz
  2229. WHERE tUmsatz.cArt = 'Artst'
  2230. AND tUmsatz.iArtnr = tAufze.Artnr
  2231. AND tUmsatz.iInhalt = tAufze.Inhalt
  2232. AND tUmsatz.iJG = tAufze.Jahr.
  2233. ASSIGN
  2234. tUmsatz.nMenge = tUmsatz.nMenge + tAufze.MGel
  2235. tUmsatz.nEp = tUmsatz.nEp + (tAufze.MGel * tAufze.Ep)
  2236. tUmsatz.nVp = tUmsatz.nVp + nNetto
  2237. tUmsatz.nZuschlag = tUmsatz.nZuschlag + tAufze.Zus_Betr
  2238. tUmsatz.nLiter = tUmsatz.nLiter + tAufze.Liter.
  2239. cKtoHaben = tUmsatz.cKonto.
  2240. FIND FIRST tUmsatz
  2241. WHERE tUmsatz.cArt = 'DebArt'
  2242. AND tUmsatz.iKnr = tAufko.Fak_Knr
  2243. AND tUmsatz.iArtnr = tAufze.Artnr
  2244. AND tUmsatz.iInhalt = tAufze.Inhalt
  2245. AND tUmsatz.iJG = tAufze.Jahr.
  2246. ASSIGN
  2247. tUmsatz.nMenge = tUmsatz.nMenge + tAufze.MGel
  2248. tUmsatz.nEp = tUmsatz.nEp + (tAufze.MGel * tAufze.Ep)
  2249. tUmsatz.nVp = tUmsatz.nVp + nNetto
  2250. tUmsatz.nZuschlag = tUmsatz.nZuschlag + tAufze.Zus_Betr
  2251. tUmsatz.nLiter = tUmsatz.nLiter + tAufze.Liter.
  2252. FIND FIRST tKonto
  2253. WHERE tKonto.cKto1 = cKtoSoll
  2254. AND tKonto.cKto2 = cKtoHaben
  2255. AND tKonto.iMwst_Cd = tAufze.WuCd NO-ERROR.
  2256. IF NOT AVAILABLE tKonto THEN
  2257. DO:
  2258. CREATE tKonto.
  2259. ASSIGN
  2260. tKonto.cKto1 = cKtoSoll
  2261. tKonto.cKto2 = cKtoHaben
  2262. tKonto.iMwst_Cd = tAufze.WuCd
  2263. tKonto.Frw = tAufko.Frw
  2264. tKonto.nKurs = tAufko.Kurs
  2265. tKonto.iFaktor = tAufko.Faktor
  2266. tKonto.cArt = 'WARE'.
  2267. END.
  2268. tKonto.nBetrag = tKonto.nBetrag + nNetto.
  2269. iTrnr = tAufze.Trnr.
  2270. htAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE.
  2271. DYNAMIC-FUNCTION('fillArtbwFromAufze':U, INPUT-OUTPUT htAufze ).
  2272. REPEAT TRANSACTION:
  2273. FIND bAufze OF tAufze.
  2274. ASSIGN
  2275. bAufze.Trnr = tAufze.Trnr
  2276. bAufze.Kurs = tAufze.Kurs
  2277. bAufze.Faktor = tAufze.Faktor.
  2278. RELEASE bAufze.
  2279. LEAVE.
  2280. END.
  2281. RETURN TRUE.
  2282. END FUNCTION.
  2283. /* _UIB-CODE-BLOCK-END */
  2284. &ANALYZE-RESUME