b-besko.w 103 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. /* Connected Databases
  4. anadat PROGRESS
  5. */
  6. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  7. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS bTableWin
  8. /*------------------------------------------------------------------------
  9. File: adm2\src\browser.w
  10. Description: SmartDataBrowser Object
  11. Input Parameters:
  12. <none>
  13. Output Parameters:
  14. <none>
  15. ------------------------------------------------------------------------*/
  16. /* This .W file was created with the Progress AppBuilder. */
  17. /*----------------------------------------------------------------------*/
  18. /* Create an unnamed pool to store all the widgets created
  19. by this procedure. This is a good default which assures
  20. that this procedure's triggers and internal procedures
  21. will execute in this procedure's storage, and that proper
  22. cleanup will occur on deletion of the procedure. */
  23. CREATE WIDGET-POOL.
  24. /* *************************** Definitions ************************** */
  25. /* Parameters Definitions --- */
  26. /* Local Variable Definitions --- */
  27. DEFINE VARIABLE iStatus AS INTEGER NO-UNDO.
  28. DEFINE VARIABLE rBesko AS RECID NO-UNDO.
  29. DEFINE VARIABLE hBestellvorschlag AS HANDLE NO-UNDO.
  30. { incl/tmpbrowser.i }
  31. DEFINE TEMP-TABLE tKopf
  32. FIELD Zeile AS INTEGER
  33. FIELD Feld AS CHARACTER EXTENT 10.
  34. DEFINE TEMP-TABLE tParam
  35. FIELD iKnr AS INTEGER
  36. FIELD iBesnr AS INTEGER
  37. FIELD dLetztBest AS DATE FORMAT "99.99.9999"
  38. FIELD dBestandesdatum AS DATE FORMAT "99.99.9999"
  39. FIELD dReserviertdatum AS DATE FORMAT "99.99.9999"
  40. FIELD iIntervall AS INTEGER
  41. FIELD iLieferfrist AS INTEGER
  42. FIELD lBewegungen AS LOGICAL
  43. FIELD lUnter AS LOGICAL
  44. FIELD lVerbrauch AS LOGICAL
  45. FIELD dVon AS DATE FORMAT "99.99.9999"
  46. FIELD dBis AS DATE
  47. FIELD nMindProz AS DECIMAL
  48. FIELD nAufrunden AS DECIMAL
  49. FIELD dAktion AS DATE
  50. FIELD lOK AS LOGICAL
  51. FIELD iLager AS INTEGER
  52. .
  53. DEFINE VARIABLE htParam AS HANDLE NO-UNDO.
  54. htParam = TEMP-TABLE tParam:DEFAULT-BUFFER-HANDLE.
  55. DEFINE TEMP-TABLE tAdresse LIKE Adresse
  56. .
  57. DEFINE TEMP-TABLE tBesko LIKE Besko
  58. FIELD lOK AS LOGICAL.
  59. .
  60. DEFINE VARIABLE htBesko AS HANDLE NO-UNDO.
  61. htBesko = TEMP-TABLE tBesko:DEFAULT-BUFFER-HANDLE.
  62. DEFINE TEMP-TABLE tBesze LIKE Besze
  63. FIELD iBestellen AS INTEGER
  64. FIELD iBestand AS INTEGER
  65. FIELD iBestellt AS INTEGER
  66. FIELD iEingang AS INTEGER
  67. FIELD iMindest AS INTEGER
  68. FIELD iStatus AS INTEGER
  69. .
  70. DEFINE VARIABLE htBesze AS HANDLE NO-UNDO.
  71. htBesze = TEMP-TABLE tBesze:DEFAULT-BUFFER-HANDLE.
  72. { incl/ttbestellvorschlag.i }
  73. {src/adm2/widgetprto.i}
  74. /* _UIB-CODE-BLOCK-END */
  75. &ANALYZE-RESUME
  76. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  77. /* ******************** Preprocessor Definitions ******************** */
  78. &Scoped-define PROCEDURE-TYPE SmartDataBrowser
  79. &Scoped-define DB-AWARE no
  80. &Scoped-define ADM-SUPPORTED-LINKS TableIO-Target,Data-Target,Update-Source
  81. /* Include file with RowObject temp-table definition */
  82. &Scoped-define DATA-FIELD-DEFS "d-besko.i"
  83. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  84. &Scoped-define FRAME-NAME F-Main
  85. &Scoped-define BROWSE-NAME br_table
  86. /* Internal Tables (found by Frame, Query & Browse Queries) */
  87. &Scoped-define INTERNAL-TABLES rowObject
  88. /* Definitions for BROWSE br_table */
  89. &Scoped-define FIELDS-IN-QUERY-br_table rowObject.Besnr rowObject.Knr ~
  90. rowObject.Lieferant rowObject.Best_Datum rowObject.Lief_Datum rowObject.FRW ~
  91. rowObject.Best_Tot
  92. &Scoped-define ENABLED-FIELDS-IN-QUERY-br_table
  93. &Scoped-define QUERY-STRING-br_table FOR EACH rowObject NO-LOCK INDEXED-REPOSITION
  94. &Scoped-define OPEN-QUERY-br_table OPEN QUERY br_table FOR EACH rowObject NO-LOCK INDEXED-REPOSITION.
  95. &Scoped-define TABLES-IN-QUERY-br_table rowObject
  96. &Scoped-define FIRST-TABLE-IN-QUERY-br_table rowObject
  97. /* Definitions for FRAME F-Main */
  98. /* Standard List Definitions */
  99. &Scoped-Define ENABLED-OBJECTS RECT-1 br_table Btn_Excel Btn_Weiter ~
  100. SLIDER-1
  101. &Scoped-Define DISPLAYED-OBJECTS SLIDER-1
  102. /* Custom List Definitions */
  103. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  104. /* _UIB-PREPROCESSOR-BLOCK-END */
  105. &ANALYZE-RESUME
  106. /* ************************ Function Prototypes ********************** */
  107. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setZeilenfarbe bTableWin
  108. FUNCTION setZeilenfarbe RETURNS LOGICAL
  109. ( ipFarbe AS INTEGER ) FORWARD.
  110. /* _UIB-CODE-BLOCK-END */
  111. &ANALYZE-RESUME
  112. /* *********************** Control Definitions ********************** */
  113. /* Menu Definitions */
  114. DEFINE MENU POPUP-MENU-br_table
  115. MENU-ITEM X_BESTELLVORSCHLAG LABEL "Bestellvorschlag"
  116. MENU-ITEM X_SOLLMINDEST LABEL "Soll und Mindestbestände".
  117. /* Definitions of the field level widgets */
  118. DEFINE BUTTON Btn_Excel
  119. LABEL "Excel"
  120. SIZE 15 BY 1.
  121. DEFINE BUTTON Btn_Weiter
  122. LABEL "Weiter"
  123. SIZE 15 BY 1.
  124. DEFINE RECTANGLE RECT-1
  125. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  126. SIZE 154 BY 7.14.
  127. DEFINE VARIABLE SLIDER-1 AS INTEGER INITIAL 0
  128. VIEW-AS SLIDER MIN-VALUE 0 MAX-VALUE 100 HORIZONTAL
  129. TIC-MARKS NONE
  130. SIZE 25 BY 1 NO-UNDO.
  131. /* Query definitions */
  132. &ANALYZE-SUSPEND
  133. DEFINE TEMP-TABLE RowObject NO-UNDO
  134. {{&DATA-FIELD-DEFS}}
  135. {src/adm2/robjflds.i}.
  136. DEFINE QUERY br_table FOR
  137. rowObject SCROLLING.
  138. &ANALYZE-RESUME
  139. /* Browse definitions */
  140. DEFINE BROWSE br_table
  141. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS br_table bTableWin _STRUCTURED
  142. QUERY br_table NO-LOCK DISPLAY
  143. rowObject.Besnr FORMAT "999999":U WIDTH 7
  144. rowObject.Knr FORMAT "999999":U WIDTH 7
  145. rowObject.Lieferant FORMAT "x(80)":U
  146. rowObject.Best_Datum COLUMN-LABEL "Best.--Datum" FORMAT "99.99.9999":U
  147. WIDTH 12
  148. rowObject.Lief_Datum COLUMN-LABEL "Lief.-Datum" FORMAT "99.99.9999":U
  149. WIDTH 12
  150. rowObject.FRW FORMAT "x(03)":U WIDTH 6
  151. rowObject.Best_Tot COLUMN-LABEL "Total" FORMAT "zzz,zzz,zz9.99-":U
  152. WIDTH 16
  153. /* _UIB-CODE-BLOCK-END */
  154. &ANALYZE-RESUME
  155. WITH NO-ASSIGN NO-AUTO-VALIDATE NO-ROW-MARKERS SEPARATORS SIZE 152 BY 6.67.
  156. /* ************************ Frame Definitions *********************** */
  157. DEFINE FRAME F-Main
  158. br_table AT ROW 1.48 COL 3 WIDGET-ID 200
  159. Btn_Excel AT ROW 1.52 COL 165 WIDGET-ID 4
  160. Btn_Weiter AT ROW 5.52 COL 165 WIDGET-ID 6
  161. SLIDER-1 AT ROW 7 COL 162 NO-LABEL WIDGET-ID 8 NO-TAB-STOP
  162. RECT-1 AT ROW 1.24 COL 2 WIDGET-ID 2
  163. WITH 1 DOWN KEEP-TAB-ORDER OVERLAY
  164. SIDE-LABELS NO-UNDERLINE THREE-D
  165. AT COL 1 ROW 1 SCROLLABLE WIDGET-ID 100.
  166. /* *********************** Procedure Settings ************************ */
  167. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  168. /* Settings for THIS-PROCEDURE
  169. Type: SmartDataBrowser
  170. Data Source: "d-besko.w"
  171. Allow: Basic,Browse
  172. Frames: 1
  173. Add Fields to: Neither
  174. Other Settings: PERSISTENT-ONLY COMPILE
  175. */
  176. /* This procedure should always be RUN PERSISTENT. Report the error, */
  177. /* then cleanup and return. */
  178. IF NOT THIS-PROCEDURE:PERSISTENT THEN
  179. DO:
  180. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  181. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  182. RETURN.
  183. END.
  184. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  185. /* ************************* Create Window ************************** */
  186. &ANALYZE-SUSPEND _CREATE-WINDOW
  187. /* DESIGN Window definition (used by the UIB)
  188. CREATE WINDOW bTableWin ASSIGN
  189. HEIGHT = 7.62
  190. WIDTH = 190.
  191. /* END WINDOW DEFINITION */
  192. */
  193. &ANALYZE-RESUME
  194. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB bTableWin
  195. /* ************************* Included-Libraries *********************** */
  196. {src/adm2/browser.i}
  197. /* _UIB-CODE-BLOCK-END */
  198. &ANALYZE-RESUME
  199. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  200. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  201. /* SETTINGS FOR WINDOW bTableWin
  202. NOT-VISIBLE,,RUN-PERSISTENT */
  203. /* SETTINGS FOR FRAME F-Main
  204. NOT-VISIBLE FRAME-NAME Size-to-Fit */
  205. /* BROWSE-TAB br_table RECT-1 F-Main */
  206. ASSIGN
  207. FRAME F-Main:SCROLLABLE = FALSE
  208. FRAME F-Main:HIDDEN = TRUE.
  209. ASSIGN
  210. br_table:POPUP-MENU IN FRAME F-Main = MENU POPUP-MENU-br_table:HANDLE.
  211. ASSIGN
  212. SLIDER-1:HIDDEN IN FRAME F-Main = TRUE.
  213. /* _RUN-TIME-ATTRIBUTES-END */
  214. &ANALYZE-RESUME
  215. /* Setting information for Queries and Browse Widgets fields */
  216. &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE br_table
  217. /* Query rebuild information for BROWSE br_table
  218. _TblList = "rowObject"
  219. _Options = "NO-LOCK INDEXED-REPOSITION"
  220. _FldNameList[1] > _<SDO>.rowObject.Besnr
  221. "rowObject.Besnr" ? ? "integer" ? ? ? ? ? ? no "?" no no "7" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  222. _FldNameList[2] > _<SDO>.rowObject.Knr
  223. "rowObject.Knr" ? ? "integer" ? ? ? ? ? ? no "?" no no "7" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  224. _FldNameList[3] > _<SDO>.rowObject.Lieferant
  225. "rowObject.Lieferant" ? ? "character" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  226. _FldNameList[4] > _<SDO>.rowObject.Best_Datum
  227. "rowObject.Best_Datum" "Best.--Datum" ? "date" ? ? ? ? ? ? no "?" no no "12" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  228. _FldNameList[5] > _<SDO>.rowObject.Lief_Datum
  229. "rowObject.Lief_Datum" "Lief.-Datum" ? "date" ? ? ? ? ? ? no "?" no no "12" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  230. _FldNameList[6] > _<SDO>.rowObject.FRW
  231. "rowObject.FRW" ? ? "character" ? ? ? ? ? ? no "?" no no "6" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  232. _FldNameList[7] > _<SDO>.rowObject.Best_Tot
  233. "rowObject.Best_Tot" "Total" ? "decimal" ? ? ? ? ? ? no ? no no "16" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  234. _Query is NOT OPENED
  235. */ /* BROWSE br_table */
  236. &ANALYZE-RESUME
  237. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
  238. /* Query rebuild information for FRAME F-Main
  239. _Options = "NO-LOCK"
  240. _Query is NOT OPENED
  241. */ /* FRAME F-Main */
  242. &ANALYZE-RESUME
  243. /* ************************ Control Triggers ************************ */
  244. &Scoped-define BROWSE-NAME br_table
  245. &Scoped-define SELF-NAME br_table
  246. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  247. ON CTRL-END OF br_table IN FRAME F-Main
  248. DO:
  249. APPLY "END":U TO BROWSE {&BROWSE-NAME}.
  250. END.
  251. /* _UIB-CODE-BLOCK-END */
  252. &ANALYZE-RESUME
  253. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  254. ON CTRL-HOME OF br_table IN FRAME F-Main
  255. DO:
  256. APPLY "HOME":U TO BROWSE {&BROWSE-NAME}.
  257. END.
  258. /* _UIB-CODE-BLOCK-END */
  259. &ANALYZE-RESUME
  260. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  261. ON DEFAULT-ACTION OF br_table IN FRAME F-Main
  262. DO:
  263. {src/adm2/brsdefault.i}
  264. END.
  265. /* _UIB-CODE-BLOCK-END */
  266. &ANALYZE-RESUME
  267. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  268. ON END OF br_table IN FRAME F-Main
  269. DO:
  270. {src/adm2/brsend.i}
  271. END.
  272. /* _UIB-CODE-BLOCK-END */
  273. &ANALYZE-RESUME
  274. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  275. ON HOME OF br_table IN FRAME F-Main
  276. DO:
  277. {src/adm2/brshome.i}
  278. END.
  279. /* _UIB-CODE-BLOCK-END */
  280. &ANALYZE-RESUME
  281. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  282. ON LEFT-MOUSE-CLICK OF br_table IN FRAME F-Main
  283. DO:
  284. APPLY 'ENTRY' TO {&BROWSE-NAME}.
  285. END.
  286. /* _UIB-CODE-BLOCK-END */
  287. &ANALYZE-RESUME
  288. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  289. ON LEFT-MOUSE-DBLCLICK OF br_table IN FRAME F-Main
  290. DO:
  291. IF NOT VALID-HANDLE( hFenster ) THEN RETURN NO-APPLY.
  292. RUN TOOLBAR IN hFenster ( INPUT 'UPDATE' ).
  293. RETURN NO-APPLY.
  294. END.
  295. /* _UIB-CODE-BLOCK-END */
  296. &ANALYZE-RESUME
  297. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  298. ON OFF-END OF br_table IN FRAME F-Main
  299. DO:
  300. {src/adm2/brsoffnd.i}
  301. END.
  302. /* _UIB-CODE-BLOCK-END */
  303. &ANALYZE-RESUME
  304. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  305. ON OFF-HOME OF br_table IN FRAME F-Main
  306. DO:
  307. {src/adm2/brsoffhm.i}
  308. END.
  309. /* _UIB-CODE-BLOCK-END */
  310. &ANALYZE-RESUME
  311. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  312. ON RETURN OF br_table IN FRAME F-Main
  313. DO:
  314. RUN TOOLBAR IN hFenster ( 'UPDATE' ) NO-ERROR.
  315. END.
  316. /* _UIB-CODE-BLOCK-END */
  317. &ANALYZE-RESUME
  318. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  319. ON ROW-ENTRY OF br_table IN FRAME F-Main
  320. DO:
  321. {src/adm2/brsentry.i}
  322. END.
  323. /* _UIB-CODE-BLOCK-END */
  324. &ANALYZE-RESUME
  325. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  326. ON ROW-LEAVE OF br_table IN FRAME F-Main
  327. DO:
  328. {src/adm2/brsleave.i}
  329. END.
  330. /* _UIB-CODE-BLOCK-END */
  331. &ANALYZE-RESUME
  332. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  333. ON SCROLL-NOTIFY OF br_table IN FRAME F-Main
  334. DO:
  335. {src/adm2/brsscrol.i}
  336. END.
  337. /* _UIB-CODE-BLOCK-END */
  338. &ANALYZE-RESUME
  339. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  340. ON START-SEARCH OF br_table IN FRAME F-Main
  341. DO:
  342. { incl/brwstartsearch.i }
  343. END.
  344. /* _UIB-CODE-BLOCK-END */
  345. &ANALYZE-RESUME
  346. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
  347. ON VALUE-CHANGED OF br_table IN FRAME F-Main
  348. DO:
  349. {src/adm2/brschnge.i}
  350. END.
  351. /* _UIB-CODE-BLOCK-END */
  352. &ANALYZE-RESUME
  353. &Scoped-define SELF-NAME Btn_Excel
  354. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Excel bTableWin
  355. ON CHOOSE OF Btn_Excel IN FRAME F-Main /* Excel */
  356. DO:
  357. RUN DRUCKEN.
  358. APPLY 'ENTRY' TO BROWSE {&BROWSE-NAME}.
  359. END.
  360. /* _UIB-CODE-BLOCK-END */
  361. &ANALYZE-RESUME
  362. &Scoped-define SELF-NAME Btn_Weiter
  363. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Weiter bTableWin
  364. ON CHOOSE OF Btn_Weiter IN FRAME F-Main /* Weiter */
  365. DO:
  366. DEFINE VARIABLE lOK AS LOGICAL NO-UNDO INIT FALSE.
  367. DEFINE VARIABLE dBuchdatum AS DATE NO-UNDO INIT TODAY.
  368. DEFINE VARIABLE nTotale AS DECIMAL NO-UNDO EXTENT 10.
  369. DEFINE VARIABLE nTotal AS DECIMAL NO-UNDO.
  370. DEFINE VARIABLE lKomplett AS LOGICAL NO-UNDO.
  371. DEFINE VARIABLE lEingelagert AS LOGICAL NO-UNDO.
  372. DEFINE VARIABLE iEingang AS INTEGER NO-UNDO.
  373. IF DYNAMIC-FUNCTION('getMutFlag':U, Progname ) THEN
  374. DO:
  375. APPLY 'U1'.
  376. RETURN NO-APPLY.
  377. END.
  378. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  379. iRecid = DYNAMIC-FUNCTION ('getCurrentRecid' IN hDaten) NO-ERROR.
  380. IF iRecid = ? OR
  381. iRecid = 0 THEN RETURN NO-APPLY.
  382. FIND Besko NO-LOCK WHERE RECID(Besko) = iRecid.
  383. EMPTY TEMP-TABLE tBesko.
  384. CREATE tBesko.
  385. BUFFER-COPY Besko TO tBesko.
  386. RELEASE Besko.
  387. IF tBesko.Best_Sta = 2 THEN
  388. DO:
  389. lKomplett = TRUE.
  390. lEingelagert = TRUE.
  391. iEingang = 0.
  392. FOR EACH BesEing NO-LOCK OF tBesko:
  393. IF BesEing.lVerfall AND
  394. BesEing.Verfall = ? THEN lKomplett = FALSE.
  395. IF BesEing.lLotnr AND
  396. BesEing.Lotnr = '' THEN lKomplett = FALSE.
  397. IF NOT BesEing.lEingelagert THEN lEingelagert = FALSE.
  398. iEingang = iEingang + BesEing.Eingang.
  399. END.
  400. IF NOT lKomplett THEN
  401. DO:
  402. DYNAMIC-FUNCTION ('fehlerMeldung':U, 1115, '' ) NO-ERROR.
  403. RETURN NO-APPLY.
  404. END.
  405. IF iEingang = 0 THEN
  406. DO:
  407. DYNAMIC-FUNCTION ('fehlerMeldung':U, 1123, '' ) NO-ERROR.
  408. RETURN NO-APPLY.
  409. END.
  410. lOK = TRUE.
  411. FOR EACH Besze NO-LOCK OF tBesko:
  412. IF Besze.Artnr = 0 THEN NEXT.
  413. IF Besze.MBest = 0 THEN NEXT.
  414. IF ABS(Besze.Eingang) < ABS(Besze.MBest) THEN
  415. DO:
  416. lOK = FALSE.
  417. LEAVE.
  418. END.
  419. END.
  420. IF NOT lOK THEN
  421. DO:
  422. lOK = DYNAMIC-FUNCTION ('antwort_nein':U, 1114 ) NO-ERROR.
  423. IF lOK = ? OR
  424. NOT lOK THEN RETURN NO-APPLY.
  425. END.
  426. lOk = TRUE.
  427. IF NOT lEingelagert THEN
  428. DO:
  429. lOk = DYNAMIC-FUNCTION ('antwort_nein':U, 1116 ) NO-ERROR.
  430. IF lOk = ? OR
  431. NOT lOk THEN RETURN NO-APPLY.
  432. END.
  433. lOK = FALSE.
  434. MESSAGE "Achtung, die Eingangsmengen werden als Lagereingang verbucht" SKIP
  435. "Unterlieferungen werden ausgeglichen "
  436. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK-CANCEL
  437. UPDATE lOk.
  438. IF lOK = ? OR
  439. NOT lOk THEN RETURN NO-APPLY.
  440. DO WHILE TRUE:
  441. dBuchDatum = tBesko.Lief_Datum.
  442. RUN g-einlesen-datum.w ( 'Eingabe Bestelleingangsdatum', 'Eingangsdatum', INPUT-OUTPUT dBuchdatum ) NO-ERROR.
  443. IF dBuchdatum = ? THEN RETURN NO-APPLY.
  444. IF dBuchdatum < (TODAY - 60) OR
  445. dBuchdatum > (TODAY + 30) THEN NEXT.
  446. LEAVE.
  447. END.
  448. tBesko.Lief_Datum = dBuchdatum.
  449. REPEAT TRANSACTION ON ERROR UNDO, RETURN:
  450. FIND Besko WHERE RECID(Besko) = iRecid.
  451. Besko.Lief_Datum = dBuchdatum.
  452. RELEASE Besko.
  453. LEAVE.
  454. END.
  455. END.
  456. IF tBesko.Best_Sta = 3 THEN
  457. DO:
  458. lOK = TRUE.
  459. FOR EACH Besze NO-LOCK OF tBesko:
  460. IF Besze.Artnr = 0 THEN NEXT.
  461. IF Besze.Preis > 0 THEN NEXT.
  462. MESSAGE 'es gibt noch Artikel ohne Preis' VIEW-AS ALERT-BOX.
  463. LEAVE.
  464. END.
  465. DO WHILE TRUE:
  466. IF tBesko.Buch_Datum = ? THEN dBuchDatum = TODAY.
  467. ELSE dBuchdatum = tBesko.Buch_Datum.
  468. RUN g-einlesen-datum.w ( 'Eingabe Bestelleingangsdatum', 'Eingangsdatum', INPUT-OUTPUT dBuchdatum ) NO-ERROR.
  469. IF dBuchdatum = ? THEN RETURN NO-APPLY.
  470. IF dBuchdatum < (TODAY - 30) OR
  471. dBuchdatum > (TODAY + 30) THEN NEXT.
  472. LEAVE.
  473. END.
  474. tBesko.Buch_Datum = dBuchdatum.
  475. REPEAT TRANSACTION ON ERROR UNDO, RETURN:
  476. FIND Besko WHERE RECID(Besko) = iRecid.
  477. Besko.Buch_Datum = dBuchdatum.
  478. RELEASE Besko.
  479. LEAVE.
  480. END.
  481. tBesko.lOK = FALSE.
  482. RUN g-bestellung-verbuchen.w ( INPUT-OUTPUT htBesko ).
  483. FIND FIRST tBesko.
  484. IF tBesko.lOK THEN
  485. DO:
  486. tBesko.Best_Sta = 4.
  487. nTotal = DYNAMIC-FUNCTION ('calculateBeskoTotal':U, D1Firma, tBesko.Besnr, OUTPUT nTotale ).
  488. REPEAT TRANSACTION ON ERROR UNDO, RETURN:
  489. FIND Besko WHERE RECID(Besko) = iRecid.
  490. FOR EACH Besze OF Besko:
  491. Besze.Best_Sta = tBesko.Best_Sta.
  492. RELEASE Besze.
  493. END.
  494. ASSIGN
  495. Besko.Best_Tot = tBesko.Best_Tot
  496. Besko.Best_Sta = tBesko.Best_Sta.
  497. RELEASE Besko.
  498. LEAVE.
  499. END.
  500. END.
  501. DYNAMIC-FUNCTION ('openQuery':U IN hDaten ) NO-ERROR.
  502. APPLY 'U1'.
  503. RETURN NO-APPLY.
  504. END.
  505. FIND FIRST tBesko.
  506. DYNAMIC-FUNCTION ('changeBestellStatus':U, INPUT-OUTPUT htBesko ) NO-ERROR.
  507. FIND FIRST tBesko.
  508. nTotal = DYNAMIC-FUNCTION ('calculateBeskoTotal':U, D1Firma, tBesko.Besnr, OUTPUT nTotale ).
  509. DYNAMIC-FUNCTION ('openQuery':U IN hDaten ) NO-ERROR.
  510. APPLY 'U1'.
  511. END.
  512. /* _UIB-CODE-BLOCK-END */
  513. &ANALYZE-RESUME
  514. &UNDEFINE SELF-NAME
  515. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK bTableWin
  516. /* *************************** Main Block *************************** */
  517. SUBSCRIBE TO 'BESTELLUNG_ERFASST' ANYWHERE.
  518. { incl/brwmainblock.i }
  519. { incl/brwinternproc.i }
  520. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  521. RUN initializeObject.
  522. &ENDIF
  523. /* _UIB-CODE-BLOCK-END */
  524. &ANALYZE-RESUME
  525. /* ********************** Internal Procedures *********************** */
  526. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLUNG_ERFASSEN bTableWin
  527. PROCEDURE BESTELLUNG_ERFASSEN :
  528. /* ------------------------------------------------------------------------------ */
  529. /* Purpose: */
  530. /* Notes: */
  531. /* ------------------------------------------------------------------------------ */
  532. DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
  533. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  534. DEFINE VARIABLE nTotale AS DECIMAL NO-UNDO EXTENT 10.
  535. DEFINE VARIABLE iBesnr AS INTEGER NO-UNDO.
  536. DEFINE VARIABLE rBesko AS INTEGER NO-UNDO.
  537. DEFINE BUFFER bBesko FOR Besko.
  538. DEFINE BUFFER bArtst FOR Artst.
  539. FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
  540. iBesnr = bBesko.Besnr.
  541. FIND FIRST tParam.
  542. FIND FIRST BesGebKo NO-LOCK
  543. WHERE BesGebKo.Firma = bBesko.Firma
  544. AND BesGebKo.Besnr = bBesko.Besnr NO-ERROR.
  545. IF NOT AVAILABLE BesGebKo THEN DYNAMIC-FUNCTION ('createBesGebKo':U, D1Firma, bBesko.Besnr).
  546. FOR EACH tVorschlag
  547. WHERE tVorschlag.Bestellung > 0,
  548. FIRST bArtst NO-LOCK USE-INDEX Artst-k1
  549. WHERE bArtst.Firma = D1Firma
  550. AND bArtst.Artnr = tVorschlag.Artnr
  551. AND bArtst.Inhalt = tVorschlag.Inhalt
  552. AND bArtst.Jahr = tVorschlag.Jahr
  553. BY tVorschlag.Knr
  554. BY bArtst.Wg_Grp
  555. BY bArtst.Prod_Grp
  556. BY bArtst.Art_Grp
  557. BY bArtst.Suchbe
  558. BY bArtst.Artnr
  559. BY bArtst.Inhalt
  560. BY bArtst.Jahr :
  561. EMPTY TEMP-TABLE tBesze.
  562. CREATE tBesze.
  563. BUFFER-COPY tVorschlag TO tBesze.
  564. ASSIGN
  565. tBesze.Firma = D1Firma
  566. tBesze.Besnr = iBesnr
  567. tBesze.Pos = 0
  568. tBesze.Frw = bBesko.Frw
  569. tBesze.Kurs = bBesko.Kurs
  570. tBesze.Faktor = bBesko.Faktor
  571. tBesze.Spesen = bBesko.Spesen
  572. tBesze.Rabatt = bBesko.Rabatt
  573. tBesze.ZusRab = bBesko.ZusRab
  574. tBesze.Best_Sta = bBesko.Best_Sta
  575. tBesze.Lager = bBesko.Lager
  576. tBesze.VGeb_Me = tVorschlag.VGeb_Me
  577. tBesze.KGeb_Me = tVorschlag.KGeb_Me
  578. tBesze.MBest = tVorschlag.Bestellung
  579. tBesze.iStatus = 0
  580. .
  581. iRetVal = DYNAMIC-FUNCTION ( 'fillBesze':U, INPUT-OUTPUT htBesze ) NO-ERROR.
  582. IF iRetVal > 0 THEN
  583. DO:
  584. DYNAMIC-FUNCTION('fehlerMeldung':U, iRetVal, '' ) NO-ERROR.
  585. NEXT.
  586. END.
  587. FIND FIRST tBesze.
  588. ASSIGN
  589. tBesze.KGeb_Me = tVorschlag.Bestellung
  590. tBesze.MBest = tVorschlag.Bestellung
  591. tBesze.MRuek = tVorschlag.Bestellung
  592. tBesze.Rueckstand = tVorschlag.Rueckstand
  593. .
  594. CREATE Besze.
  595. BUFFER-COPY tBesze TO Besze.
  596. iRecid = RECID(Besze).
  597. RELEASE Besze.
  598. DYNAMIC-FUNCTION ('calculateBeszeNetto':U, '', 0, 0, iRecid ).
  599. END.
  600. DYNAMIC-FUNCTION ('calculateBeskoTotal':U, Firma, iBesnr, OUTPUT nTotale ) NO-ERROR.
  601. /* OUTPUT TO 'C:\Entwicklung\Temp\Besze.csv' NO-MAP NO-CONVERT. */
  602. /* FOR EACH Besze WHERE Besze.Firma = D1Firma AND Besze.Besnr = iBesnr:*/
  603. /* EXPORT DELIMITER ';' Besze. */
  604. /* END. */
  605. /* OUTPUT CLOSE. */
  606. END PROCEDURE.
  607. /* _UIB-CODE-BLOCK-END */
  608. &ANALYZE-RESUME
  609. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLUNG_ERFASST bTableWin
  610. PROCEDURE BESTELLUNG_ERFASST :
  611. /* ------------------------------------------------------------------------------ */
  612. /* Purpose: */
  613. /* Notes: */
  614. /* ------------------------------------------------------------------------------ */
  615. DEFINE INPUT PARAMETER ipiBesnr AS INTEGER NO-UNDO.
  616. DEFINE VARIABLE nTotale AS DECIMAL NO-UNDO EXTENT 10.
  617. DEFINE VARIABLE cRowid AS CHARACTER NO-UNDO.
  618. DEFINE BUFFER bBesko FOR Besko.
  619. FIND bBesko NO-LOCK
  620. WHERE bBesko.Firma = D1Firma
  621. AND bBesko.Besnr = ipiBesnr NO-ERROR.
  622. IF NOT AVAILABLE bBesko THEN RETURN.
  623. cRowid = STRING(ROWID(bBesko)).
  624. DYNAMIC-FUNCTION ('calculateBeskoTotal':U, bBesko.Firma, bBesko.Besnr, OUTPUT nTotale ) NO-ERROR.
  625. DYNAMIC-FUNCTION ('openQuery':U IN hDaten) NO-ERROR.
  626. DYNAMIC-FUNCTION ('fetchRowIdent':U IN hDaten, cRowid, ?) NO-ERROR.
  627. DYNAMIC-FUNCTION ('refreshRowident':U IN hDaten, cRowid) NO-ERROR.
  628. APPLY 'U1'.
  629. RETURN NO-APPLY.
  630. END PROCEDURE.
  631. /* _UIB-CODE-BLOCK-END */
  632. &ANALYZE-RESUME
  633. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLVORSCHLAG bTableWin
  634. PROCEDURE BESTELLVORSCHLAG :
  635. /* ------------------------------------------------------------------------------ */
  636. /* Purpose: */
  637. /* Notes: */
  638. /* ------------------------------------------------------------------------------ */
  639. DEFINE VARIABLE dLetzteBestellung AS DATE NO-UNDO.
  640. DEFINE VARIABLE dBestandesdatum AS DATE NO-UNDO.
  641. DEFINE VARIABLE dReserviertdatum AS DATE NO-UNDO.
  642. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  643. DEFINE VARIABLE iDiffTage AS INTEGER NO-UNDO.
  644. DEFINE BUFFER bBesko FOR Besko.
  645. rBesko = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR.
  646. IF rBesko = ? OR
  647. rBesko = 0 THEN RETURN NO-APPLY.
  648. FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
  649. FIND Adresse NO-LOCK
  650. WHERE Adresse.Firma = AdFirma
  651. AND Adresse.Knr = bBesko.Knr.
  652. FIND Liefst NO-LOCK
  653. WHERE Liefst.Firma = D1Firma
  654. AND Liefst.Knr = bBesko.Knr.
  655. EMPTY TEMP-TABLE tParam.
  656. CREATE tParam.
  657. ASSIGN
  658. tParam.iKnr = bBesko.Knr
  659. tParam.iBesnr = bBesko.Besnr
  660. tParam.lOK = FALSE
  661. tParam.iLager = bBesko.Lager
  662. .
  663. lRetVal = DYNAMIC-FUNCTION ('getBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
  664. FIND FIRST tParam.
  665. ASSIGN
  666. tParam.iLager = bBesko.Lager
  667. iDiffTage = TODAY - tParam.dAktion
  668. .
  669. FIND LAST Besko NO-LOCK USE-INDEX Besko-k3
  670. WHERE Besko.Firma = bBesko.Firma
  671. AND Besko.Knr = bBesko.Knr
  672. AND Besko.Best_Datum < TODAY NO-ERROR.
  673. ASSIGN
  674. dLetzteBestellung = (IF AVAILABLE Besko THEN Besko.Best_Datum ELSE tParam.dLetztBest)
  675. dBestandesdatum = tParam.dBestandesdatum
  676. dReserviertdatum = tParam.dReserviertdatum.
  677. IF dLetzteBestellung = ? THEN dLetzteBestellung = TODAY - Liefst.Bestell_Intervall - Liefst.Lieferzeit.
  678. IF dBestandesdatum = ? THEN dBestandesdatum = TODAY + Liefst.Bestell_Intervall + Liefst.Lieferzeit.
  679. IF dReserviertdatum = ? THEN dReserviertdatum = dBestandesdatum + Liefst.Bestell_Intervall + Liefst.Lieferzeit.
  680. ASSIGN
  681. tParam.dLetztBest = dLetzteBestellung
  682. tParam.dVon = tParam.dVon + iDiffTage
  683. tParam.dBis = tParam.dBis + iDiffTage
  684. tParam.iIntervall = (IF tParam.iIntervall = 0 THEN Liefst.Bestell_Intervall ELSE tParam.iIntervall )
  685. tParam.iLieferfrist = (IF tParam.iLieferfrist = 0 THEN Liefst.Lieferzeit ELSE tParam.iLieferfrist)
  686. tParam.dBestandesdatum = dBestandesdatum + iDiffTage
  687. tParam.dReserviertdatum = dReserviertDatum + iDiffTage
  688. .
  689. IF dReserviertDatum = ? THEN dReserviertDatum = dBestandesdatum.
  690. RELEASE bBesko.
  691. RUN 'g-bestellvorschlag-daten.w' ( INPUT-OUTPUT htParam ).
  692. IF NOT tParam.lOK THEN RETURN.
  693. DYNAMIC-FUNCTION ('setBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
  694. RUN BESTELLVORSCHLAG_ERSTELLEN.
  695. END PROCEDURE.
  696. /* _UIB-CODE-BLOCK-END */
  697. &ANALYZE-RESUME
  698. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLVORSCHLAG_ERSTELLEN bTableWin
  699. PROCEDURE BESTELLVORSCHLAG_ERSTELLEN :
  700. /*------------------------------------------------------------------------------*/
  701. /* Purpose: */
  702. /* Parameters: <none> */
  703. /* Notes: */
  704. /*------------------------------------------------------------------------------*/
  705. DEFINE VARIABLE nEffBestand AS INTEGER NO-UNDO.
  706. DEFINE VARIABLE iTotAnz AS INTEGER NO-UNDO.
  707. DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO.
  708. DEFINE VARIABLE lVGebinde AS LOGICAL NO-UNDO.
  709. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  710. DEFINE VARIABLE iLetztAufnr AS INTEGER NO-UNDO.
  711. DEFINE VARIABLE nDatum AS DATE NO-UNDO.
  712. DEFINE VARIABLE dRueckDatum AS DATE NO-UNDO.
  713. DEFINE VARIABLE iRest AS INTEGER NO-UNDO.
  714. DEFINE VARIABLE JJ AS INTEGER NO-UNDO.
  715. DEFINE VARIABLE MM AS INTEGER NO-UNDO.
  716. DEFINE VARIABLE TT AS INTEGER NO-UNDO.
  717. DEFINE VARIABLE iGGeb_Me AS INTEGER NO-UNDO.
  718. DEFINE VARIABLE iVGeb_Me AS INTEGER NO-UNDO.
  719. DEFINE VARIABLE iKGeb_Me AS INTEGER NO-UNDO.
  720. DEFINE VARIABLE lMinMaxMenge AS LOGICAL NO-UNDO.
  721. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  722. DEFINE VARIABLE iFuellMenge AS INTEGER NO-UNDO.
  723. DEFINE VARIABLE dvonVorJahr AS DATE NO-UNDO.
  724. DEFINE VARIABLE iPerioden AS INTEGER NO-UNDO.
  725. DEFINE VARIABLE dVorAktiv AS DATE NO-UNDO. /* Vorjahreshalbjaahr AKtive Periode (Winter/Sommer) */
  726. DEFINE VARIABLE dVorVerg AS DATE NO-UNDO. /* Abgelaufene Periode (Winter/Sommer) */
  727. DEFINE VARIABLE dVorEnd AS DATE NO-UNDO.
  728. DEFINE VARIABLE dVonDatum AS DATE NO-UNDO.
  729. DEFINE BUFFER bArtLief FOR ArtLief .
  730. DEFINE BUFFER bArtst FOR Artst .
  731. DEFINE BUFFER bArtLager FOR ArtLager.
  732. DEFINE BUFFER bBesko FOR Besko .
  733. DEFINE BUFFER bBesze FOR Besze .
  734. FIND Steuer NO-LOCK
  735. WHERE Steuer.Firma = D1Firma.
  736. lVGebinde = (IF Steuer.St09 = 1 THEN TRUE ELSE FALSE).
  737. RELEASE Steuer.
  738. FIND SteuNr NO-LOCK
  739. WHERE SteuNr.Firma = D1Firma.
  740. iLetztAufnr = SteuNr.Nr1 - 1000.
  741. FIND FIRST tParam.
  742. EMPTY TEMP-TABLE tVorschlag.
  743. FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
  744. dvonVorjahr = bBesko.Best_Datum - 365.
  745. iPerioden = tParam.iIntervall + tParam.iLieferfrist.
  746. IF MONTH(bBesko.Best_Datum) >= 10 OR
  747. MONTH(bBesko.Best_Datum) <= 03 THEN
  748. DO:
  749. IF MONTH(bBesko.Best_Datum) >= 10 THEN JJ = YEAR(bBesko.Best_Datum) - 1.
  750. ELSE JJ = YEAR(bBesko.Best_Datum) - 2.
  751. dVorAktiv = DATE(10,01,JJ).
  752. dVorVerg = DATE(04,01,JJ + 1).
  753. dVorEnd = DATE(09,30,JJ + 1).
  754. END.
  755. ELSE
  756. DO:
  757. JJ = YEAR(bBesko.Best_Datum) - 1.
  758. dVorAktiv = DATE(04,01,JJ).
  759. dVorVerg = DATE(10,01,JJ).
  760. dVorEnd = DATE(03,31,JJ + 1).
  761. END.
  762. dvonDatum = (IF dvonVorjahr < dvorAktiv THEN dvonVorjahr ELSE dvorAktiv).
  763. IF tParam.lBewegungen THEN
  764. DO:
  765. IF tParam.dVon = ? THEN tParam.dVon = TODAY - 90.
  766. IF tParam.dBis = ? THEN tParam.dBis = TODAY.
  767. END.
  768. SESSION:SET-WAIT-STATE ('GENERAL').
  769. iTotAnz = 0.
  770. FOR EACH bArtLief NO-LOCK
  771. WHERE bArtLief.Firma = D1Firma
  772. AND bArtLief.Knr = tParam.iKnr:
  773. iTotAnz = iTotAnz + 1.
  774. END.
  775. SLIDER-1:HIDDEN IN FRAME {&FRAME-NAME} = FALSE.
  776. iAnzahl = 0.
  777. FOR EACH bArtLief NO-LOCK
  778. WHERE bArtLief.Firma = D1Firma
  779. AND bArtLief.Knr = tParam.iKnr
  780. AND bArtLief.Haupt = TRUE,
  781. FIRST bArtst NO-LOCK
  782. WHERE bArtst.Firma = bArtLief.Firma
  783. AND bArtst.Artnr = bArtLief.Artnr
  784. AND bArtst.Inhalt = bArtLief.Inhalt
  785. AND bArtst.Jahr = bArtLief.Jahr
  786. AND bArtst.Aktiv = TRUE
  787. AND bArtst.Ausverk < 9
  788. AND NOT bArtst.Leih_Art,
  789. FIRST bArtLager NO-LOCK
  790. WHERE bArtLager.Firma = bArtLief.Firma
  791. AND bArtLager.Artnr = bArtLief.Artnr
  792. AND bArtLager.Inhalt = bArtLief.Inhalt
  793. AND bArtLager.Jahr = bArtLief.Jahr
  794. AND bArtLager.Lager = bBesko.Lager,
  795. FIRST ArtBez NO-LOCK
  796. WHERE ArtBez.Firma = bArtLief.Firma
  797. AND ArtBez.Artnr = bArtLief.Artnr
  798. AND ArtBez.Inhalt = bArtLief.Inhalt
  799. AND ArtBez.Jahr = bArtLief.Jahr
  800. :
  801. /* ------------------------------------------------------------------ */
  802. /* Letzter Eingang des Artikels */
  803. /* ------------------------------------------------------------------ */
  804. FIND FIRST Artbw NO-LOCK USE-INDEX Artbw-k7
  805. WHERE Artbw.Firma = D1Firma
  806. AND Artbw.Artnr = bArtLief.Artnr
  807. AND Artbw.Inhalt = bArtLief.Inhalt
  808. AND Artbw.Jahr = bArtLief.Jahr
  809. AND Artbw.Tr_Art = 11 NO-ERROR.
  810. IF AVAILABLE Artbw THEN nDatum = Artbw.Datum.
  811. ELSE nDatum = TODAY - iPerioden.
  812. dRueckDatum = nDatum.
  813. RELEASE GGebinde.
  814. RELEASE VGebinde.
  815. IF bArtst.GGeb_Cd <> '' THEN
  816. DO:
  817. FIND GGebinde NO-LOCK
  818. WHERE GGebinde.Firma = bArtst.Firma
  819. AND GGebinde.Geb_Cd = bArtst.GGeb_Cd NO-ERROR.
  820. END.
  821. IF bArtst.VGeb_Cd <> '' THEN
  822. DO:
  823. FIND VGebinde NO-LOCK
  824. WHERE VGebinde.Firma = bArtst.Firma
  825. AND VGebinde.Geb_Cd = bArtst.VGeb_Cd NO-ERROR.
  826. END.
  827. IF bArtst.KGeb_Cd <> '' THEN
  828. DO:
  829. FIND KGebinde NO-LOCK
  830. WHERE KGebinde.Firma = bArtst.Firma
  831. AND KGebinde.Geb_Cd = bArtst.KGeb_Cd NO-ERROR.
  832. END.
  833. CREATE tVorschlag.
  834. ASSIGN
  835. tVorschlag.Besnr = bBesko.Besnr
  836. tVorschlag.Typ = 0
  837. tVorschlag.Lager = bBesko.Lager
  838. tVorschlag.Knr = bArtLief.Knr
  839. tVorschlag.Artnr = bArtst.Artnr
  840. tVorschlag.Inhalt = bArtst.Inhalt
  841. tVorschlag.Jahr = bArtst.Jahr
  842. tVorschlag.Artikel = TRIM(ArtBez.Bez1 + ' ' + ArtBez.Bez2)
  843. tVorschlag.lBeschaff = (IF bArtst.Ausverk = 8 THEN TRUE ELSE FALSE)
  844. tVorschlag.Bestand = bArtLager.Bestand
  845. tVorschlag.Bestellt = bArtLager.Bestellt
  846. tVorschlag.lBewegungen = FALSE
  847. tVorschlag.lMindBestMenge = (IF bArtLief.Min_KGebinde > 0 THEN TRUE ELSE FALSE)
  848. tVorschlag.Mind_Berechnet = (IF bArtLief.Min_KGebinde > 0 THEN bArtLief.Min_KGebinde ELSE 0)
  849. tVorschlag.Mind_Bestand = bArtLager.Mind_Bestand
  850. tVorschlag.Meld_Bestand = bArtLager.Meld_Bestand
  851. tVorschlag.Soll_Bestand = bArtLager.Soll_Bestand
  852. tVorschlag.Mind_Bestellung = bArtLief.Min_KGebinde
  853. tVorschlag.LagerOrt = bArtLager.Ort
  854. tVorschlag.GGeb_Inhalt = (IF AVAILABLE GGebinde THEN GGebinde.Inhalt ELSE 1)
  855. tVorschlag.VGeb_Inhalt = (IF AVAILABLE VGebinde THEN VGebinde.Inhalt ELSE 1)
  856. tVorschlag.KGeb_Inhalt = (IF AVAILABLE KGebinde THEN KGebinde.Inhalt ELSE 1)
  857. tVorschlag.cArtikel = TRIM(Artbez.Bez1 + ' ' + ArtBez.Bez2)
  858. tVorschlag.GGeb_Text = (IF AVAILABLE GGebinde THEN GGebinde.KBez ELSE '')
  859. tVorschlag.VGeb_Text = (IF AVAILABLE VGebinde THEN VGebinde.KBez ELSE '')
  860. tVorschlag.KGeb_Text = (IF AVAILABLE KGebinde THEN KGebinde.KBez ELSE '')
  861. tVorschlag.GGeb_Cd = bArtst.GGeb_Cd
  862. tVorschlag.VGeb_Cd = bArtst.VGeb_Cd
  863. tVorschlag.KGeb_Cd = bArtst.KGeb_Cd
  864. .
  865. IF lVGebinde AND
  866. AVAILABLE VGebinde AND
  867. VGebinde.Inhalt > 0 THEN
  868. DO:
  869. ASSIGN
  870. tVorschlag.Mind_Bestand = tVorschlag.Mind_Bestand * VGebinde.Inhalt
  871. tVorschlag.Soll_Bestand = tVorschlag.Soll_Bestand * VGebinde.Inhalt
  872. tVorschlag.Meld_Bestand = tVorschlag.Meld_Bestand * VGebinde.Inhalt.
  873. END.
  874. /* ------------------------------------------------------------------ */
  875. /* Rückstände aus offenen und verbuchten Aufträgen */
  876. /* ------------------------------------------------------------------ */
  877. FOR EACH Aufze NO-LOCK USE-INDEX Aufze-k2
  878. WHERE Aufze.Firma = D1Firma
  879. AND Aufze.Artnr = tVorschlag.Artnr
  880. AND Aufze.Inhalt = tVorschlag.Inhalt
  881. AND Aufze.Jahr = tVorschlag.Jahr
  882. AND Aufze.Lager = tVorschlag.Lager
  883. AND Aufze.Lag_Buch = TRUE :
  884. tVorschlag.Rueckstand = tVorschlag.Rueckstand + Aufze.MRuek.
  885. END.
  886. FOR EACH Savze NO-LOCK USE-INDEX Savze-k3
  887. WHERE Savze.Firma = bBesko.Firma
  888. AND SavZe.Artnr = tVorschlag.Artnr
  889. AND SavZe.Inhalt = tVorschlag.Inhalt
  890. AND SavZe.Jahr = tVorschlag.Jahr
  891. AND SavZe.Aufnr > iLetztAufnr
  892. AND Savze.Lager = tVorschlag.Lager
  893. AND SavZe.MRuek > 0
  894. AND SavZe.Lag_Buch = TRUE,
  895. FIRST Savko NO-LOCK
  896. WHERE Savko.Firma = Savze.Firma
  897. AND Savko.Aufnr = Savze.Aufnr
  898. AND Savko.Lief_Datum > dRueckDatum :
  899. tVorschlag.Rueckstand = tVorschlag.Rueckstand + Savze.MRuek.
  900. END.
  901. iAnzahl = iAnzahl + 1.
  902. SLIDER-1:SCREEN-VALUE = STRING(iAnzahl * 100 / iTotAnz).
  903. END.
  904. SLIDER-1:HIDDEN IN FRAME {&FRAME-NAME} = FALSE.
  905. iTotAnz = iAnzahl.
  906. iAnzahl = 0.
  907. /* ------------------------------------------------------------------ */
  908. /* Verbräuche rechnen Vorjahr bis zum Reserviert-Datum */
  909. /* ------------------------------------------------------------------ */
  910. VORSCHLAG010:
  911. FOR EACH tVorschlag WHILE tParam.lVerbrauch:
  912. FOR EACH Artbw NO-LOCK
  913. WHERE Artbw.Firma = D1Firma
  914. AND Artbw.Artnr = tVorschlag.Artnr
  915. AND Artbw.Inhalt = tVorschlag.Inhalt
  916. AND Artbw.Jahr = tVorschlag.Jahr
  917. AND Artbw.Datum > dvonDatum
  918. AND Artbw.Datum <= tParam.dReserviertdatum
  919. AND Artbw.Tr_Art < 10
  920. AND Artbw.Lager = tVorschlag.Lager
  921. AND Artbw.Lag_Buch = TRUE :
  922. /* ------------------------------------------------------------------ */
  923. /* Es hat Bewegungen gegeben im Datumsbereich */
  924. /* ------------------------------------------------------------------ */
  925. IF tParam.lBewegungen THEN
  926. DO:
  927. IF Artbw.Datum >= tParam.dVon AND
  928. Artbw.Datum <= tParam.dBis AND
  929. Artbw.Menge > 0 THEN tVorschlag.lBewegungen = TRUE.
  930. END.
  931. /* ---------------------------------------------------------------------- */
  932. /* Die letzten 12 Mt, aufgeteilt auch in die letzten 6, und die 6 davor */
  933. /* ---------------------------------------------------------------------- */
  934. IF Artbw.Datum >= dvonVorjahr AND
  935. Artbw.Datum <= bBesko.Best_Datum THEN tVorschlag.Verbrauch_12Mt = tVorschlag.Verbrauch_12Mt + Artbw.Menge.
  936. IF Artbw.Datum >= dvonVorjahr + 183 AND
  937. Artbw.Datum <= bBesko.Best_Datum THEN tVorschlag.Verbrauch_0106 = tVorschlag.Verbrauch_0106 + Artbw.Menge.
  938. IF Artbw.Datum >= dvonVorjahr AND
  939. Artbw.Datum <= dVonVorjahr + 183 THEN tVorschlag.Verbrauch_0712 = tVorschlag.Verbrauch_0712 + Artbw.Menge.
  940. /* ------------------------------------------------------------------ */
  941. /* Vorjahres-Bestellperioden */
  942. /* ------------------------------------------------------------------ */
  943. DO WHILE TRUE:
  944. IF Artbw.Datum < dvonVorjahr THEN LEAVE.
  945. IF Artbw.Datum <= (dvonVorjahr + (iPerioden * 1)) THEN
  946. DO:
  947. tVorschlag.Verbrauch_VjPer1 = tVorschlag.Verbrauch_VjPer1 + Artbw.Menge.
  948. LEAVE.
  949. END.
  950. IF Artbw.Datum <= (dvonVorjahr + (iPerioden * 2)) THEN
  951. DO:
  952. tVorschlag.Verbrauch_VjPer2 = tVorschlag.Verbrauch_VjPer2 + Artbw.Menge.
  953. LEAVE.
  954. END.
  955. IF Artbw.Datum <= (dvonVorjahr + (iPerioden * 3)) THEN
  956. DO:
  957. tVorschlag.Verbrauch_VjPer3 = tVorschlag.Verbrauch_VjPer3 + Artbw.Menge.
  958. LEAVE.
  959. END.
  960. LEAVE.
  961. END.
  962. /* ------------------------------------------------------------------ */
  963. /* Verbrauch in letzter Bestellperiode (Intervall + Lieferfrist) */
  964. /* ------------------------------------------------------------------ */
  965. IF Artbw.Datum >= (bBesko.Best_Datum - (iPerioden * 2)) AND
  966. Artbw.Datum <= bBesko.Best_Datum THEN
  967. DO:
  968. tVorschlag.Verbrauch_Letzt = tVorschlag.Verbrauch_Letzt + Artbw.Menge.
  969. END.
  970. /* ------------------------------------------------------------------ */
  971. /* Saison (Winter (Mt. 10 - 03) / Sommer (Mt. 04 - 09) */
  972. /* ------------------------------------------------------------------ */
  973. DO WHILE TRUE:
  974. IF Artbw.Datum < dVorAKtiv THEN LEAVE.
  975. IF Artbw.Datum > dVorEnd THEN LEAVE.
  976. IF Artbw.Datum <= dVorVerg THEN tVorschlag.Verbrauch_Aktiv = tVorschlag.Verbrauch_Aktiv + Artbw.Menge.
  977. ELSE tVorschlag.Verbrauch_Verg = tVorschlag.Verbrauch_Verg + Artbw.Menge.
  978. LEAVE.
  979. END.
  980. /* ------------------------------------------------------------------ */
  981. /* Vormonats-Umsatz-Zahlen 1-3 */
  982. /* ------------------------------------------------------------------ */
  983. DO WHILE TRUE:
  984. IF Artbw.Datum >= bBesko.Best_Datum - 90 AND
  985. Artbw.Datum < bBesko.Best_Datum - 60 THEN
  986. DO:
  987. tVorschlag.Verbrauch_VorMt3 = tVorschlag.Verbrauch_VorMt3 + Artbw.Menge.
  988. LEAVE.
  989. END.
  990. IF Artbw.Datum >= bBesko.Best_Datum - 60 AND
  991. Artbw.Datum < bBesko.Best_Datum - 30 THEN
  992. DO:
  993. tVorschlag.Verbrauch_VorMt2 = tVorschlag.Verbrauch_VorMt2 + Artbw.Menge.
  994. LEAVE.
  995. END.
  996. IF Artbw.Datum >= bBesko.Best_Datum - 30 AND
  997. Artbw.Datum < bBesko.Best_Datum - 00 THEN
  998. DO:
  999. tVorschlag.Verbrauch_VorMt1 = tVorschlag.Verbrauch_VorMt1 + Artbw.Menge.
  1000. LEAVE.
  1001. END.
  1002. IF Artbw.Fak_Dat = ? THEN
  1003. DO:
  1004. IF Artbw.Datum > bBesko.Best_Datum AND
  1005. Artbw.Datum > dBestandesdatum THEN
  1006. DO:
  1007. tVorschlag.Tagesbestand = tVorschlag.TagesBestand + Artbw.Menge.
  1008. END.
  1009. IF Artbw.Datum > dBestandesDatum AND
  1010. Artbw.Datum <= dReserviertdatum THEN
  1011. DO:
  1012. tVorschlag.Reserviert = tVorschlag.Reserviert + Artbw.Menge.
  1013. END.
  1014. END.
  1015. LEAVE.
  1016. END.
  1017. END.
  1018. tVorschlag.TagesBestand = tVorschlag.TagesBestand + tVorschlag.Bestand.
  1019. iAnzahl = iAnzahl + 1.
  1020. SLIDER-1:SCREEN-VALUE = STRING(iAnzahl * 100 / iTotAnz).
  1021. END.
  1022. iAnzahl = 0.
  1023. VORSCHLAG020:
  1024. FOR EACH tVorschlag WHERE tVorschlag.Typ = 0:
  1025. iAnzahl = iAnzahl + 1.
  1026. SLIDER-1:SCREEN-VALUE = STRING(iAnzahl * 100 / iTotAnz).
  1027. /* ------------------------------------------------------------------ */
  1028. /* Beschaffungsartikel anhand der Rückstandsmenge */
  1029. /* ------------------------------------------------------------------ */
  1030. IF tVorschlag.lBeschaff THEN
  1031. DO:
  1032. FIND bArtst NO-LOCK
  1033. WHERE bArtst.Firma = D1Firma
  1034. AND bArtst.Artnr = tVorschlag.Artnr
  1035. AND bArtst.Inhalt = tVorschlag.Inhalt
  1036. AND bArtst.Jahr = tVorschlag.Jahr.
  1037. /* ------------------------------------------------------------------ */
  1038. /* Beschaffungsartikel mit Lagerführung */
  1039. /* ------------------------------------------------------------------ */
  1040. IF bArtst.Lager THEN
  1041. DO:
  1042. ASSIGN
  1043. tVorschlag.Vorschlag_Me = - tVorschlag.Bestand + tVorschlag.Rueckstand
  1044. tVorschlag.Bestellung = - tVorschlag.Bestand + tVorschlag.Rueckstand.
  1045. IF tVorschlag.Vorschlag_Me < 0 THEN
  1046. ASSIGN
  1047. tVorschlag.Vorschlag_Me = 0
  1048. tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
  1049. ASSIGN
  1050. tVorschlag.lBewegungen = TRUE
  1051. tVorschlag.Typ = 1.
  1052. NEXT.
  1053. END.
  1054. /* ------------------------------------------------------------------ */
  1055. /* Beschaffungsartikel ohne Lagerführung */
  1056. /* ------------------------------------------------------------------ */
  1057. ASSIGN
  1058. tVorschlag.Vorschlag_Me = tVorschlag.Rueckstand
  1059. tVorschlag.Bestellung = tVorschlag.Rueckstand
  1060. tVorschlag.lBewegungen = TRUE
  1061. tVorschlag.Typ = 1.
  1062. NEXT.
  1063. END.
  1064. IF tParam.lBewegungen AND
  1065. NOT tVorschlag.lBewegungen AND
  1066. NOT tVorschlag.lBeschaff THEN
  1067. DO:
  1068. DELETE tVorschlag.
  1069. NEXT VORSCHLAG020.
  1070. END.
  1071. nEffbestand = tVorschlag.TagesBestand + tVorschlag.Bestellt.
  1072. IF tVorschlag.Meld_Bestand > 0 AND
  1073. tVorschlag.Meld_Bestand > nEffBestand THEN tVorschlag.Typ = 3.
  1074. IF tVorschlag.Mind_Bestand > 0 AND
  1075. tVorschlag.Mind_Bestand > nEffBestand THEN tVorschlag.Typ = 2.
  1076. DO WHILE tVorschlag.Soll_Bestand > 0:
  1077. IF nEffBestand >= tVorschlag.Soll_Bestand THEN LEAVE.
  1078. ASSIGN
  1079. tVorschlag.Vorschlag_Me = tVorschlag.Soll_Bestand - nEffBestand
  1080. tVorschlag.Bestellung = tVorschlag.Soll_Bestand - nEffBestand.
  1081. NEXT VORSCHLAG020.
  1082. END.
  1083. DO WHILE tVorschlag.Mind_Bestand > 0:
  1084. IF nEffBestand >= tVorschlag.Mind_Bestand THEN LEAVE.
  1085. ASSIGN
  1086. tVorschlag.Vorschlag_Me = tVorschlag.Mind_Bestand + tVorschlag.Verbrauch_Letzt - nEffBestand
  1087. tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
  1088. NEXT VORSCHLAG020.
  1089. END.
  1090. IF nEffBestand < tVorschlag.Rueckstand THEN
  1091. DO:
  1092. ASSIGN
  1093. tVorschlag.Vorschlag_Me = tVorschlag.Rueckstand - nEffBestand
  1094. tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
  1095. NEXT VORSCHLAG020.
  1096. END.
  1097. IF nEffBestand > tVorschlag.Verbrauch_VorMt1 AND
  1098. nEffBestand > tVorschlag.Verbrauch_VjPer1 THEN NEXT.
  1099. tVorschlag.Vorschlag_Me = tVorschlag.Verbrauch_Letzt - nEffBestand.
  1100. IF tVorschlag.Vorschlag_Me < 0 THEN tVorschlag.Vorschlag_Me = 0.
  1101. tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
  1102. END.
  1103. iTotAnz = 0.
  1104. iAnzahl = 0.
  1105. lMinMaxMenge = TRUE. /* Mindest- (TRUE) oder Max-Bestellmenge */
  1106. cString = DYNAMIC-FUNCTION ('getFehlwert':U, Firma, 'MINMAXBESTMENGE' ) NO-ERROR.
  1107. IF cString BEGINS 'n' THEN lMinMaxMenge = FALSE.
  1108. FOR EACH tVorschlag:
  1109. /* FIND bArtLief NO-LOCK */
  1110. /* WHERE bArtLief.Firma = D1Firma */
  1111. /* AND bArtLief.Artnr = tVorschlag.Artnr */
  1112. /* AND bArtLief.Inhalt = tVorschlag.Inhalt*/
  1113. /* AND bArtLief.Jahr = tVorschlag.Jahr */
  1114. /* AND bArtLief.Knr = tVorschlag.Knr. */
  1115. DO WHILE TRUE:
  1116. IF NOT tVorschlag.lMindBestMenge THEN LEAVE.
  1117. IF lMinMaxMenge THEN LEAVE.
  1118. IF tVorschlag.Vorschlag_Me = 0 THEN LEAVE.
  1119. IF nEffBestand > tVorschlag.Vorschlag_Me THEN
  1120. DO:
  1121. tVorschlag.Vorschlag_Me = 0.
  1122. tVorschlag.Bestellung = 0.
  1123. LEAVE.
  1124. END.
  1125. IF nEffBestand >= tVorschlag.Mind_Berechnet THEN
  1126. DO:
  1127. tVorschlag.Vorschlag_Me = 0.
  1128. tVorschlag.Bestellung = 0.
  1129. LEAVE.
  1130. END.
  1131. IF nEffBestand > tVorschlag.Verbrauch_Letzt THEN
  1132. DO:
  1133. tVorschlag.Vorschlag_Me = 0.
  1134. tVorschlag.Bestellung = 0.
  1135. LEAVE.
  1136. END.
  1137. iFuellMenge = tVorschlag.Mind_Berechnet - nEffBestand.
  1138. IF iFuellMenge <= 0 THEN
  1139. DO:
  1140. tVorschlag.Vorschlag_Me = 0.
  1141. tVorschlag.Bestellung = 0.
  1142. LEAVE.
  1143. END.
  1144. tVorschlag.Vorschlag_Me = iFuellMenge.
  1145. tVorschlag.Bestellung = iFuellMenge.
  1146. LEAVE.
  1147. END.
  1148. DYNAMIC-FUNCTION ('calculateGebindeAusMenge':U,
  1149. Firma, tVorschlag.Artnr, tVorschlag.Inhalt, tVorschlag.Jahr, tVorschlag.Vorschlag_Me,
  1150. OUTPUT iGGeb_Me, OUTPUT iVGeb_Me, OUTPUT iKGeb_Me) NO-ERROR.
  1151. IF iVGeb_Me <> 0 THEN iKGeb_Me = iVGeb_Me * tVorschlag.VGeb_Inhalt.
  1152. ELSE
  1153. DO:
  1154. IF iKGeb_Me > 0 THEN
  1155. ASSIGN
  1156. iVGeb_Me = 1
  1157. iKGeb_Me = iVGeb_Me * tVorschlag.VGeb_Inhalt.
  1158. END.
  1159. ASSIGN
  1160. tVorschlag.GGeb_Me = iGGeb_Me
  1161. tVorschlag.VGeb_Me = iVGeb_Me
  1162. tVorschlag.KGeb_Me = iKGeb_Me
  1163. tVorschlag.Vorschlag_Me = iKGeb_Me
  1164. tVorschlag.Bestellung = iKGeb_Me.
  1165. /* IF tVorschlag.KGeb_Me > 0 AND */
  1166. /* tVorschlag.VGeb_Me < bArtLief.Min_VGebinde THEN */
  1167. /* DO: */
  1168. /* ASSIGN */
  1169. /* tVorschlag.VGeb_Me = bArtLief.Min_VGebinde */
  1170. /* tVorschlag.KGeb_Me = tVorschlag.VGeb_Me * tVorschlag.VGeb_Inhalt*/
  1171. /* tVorschlag.Vorschlag_Me = tVorschlag.KGeb_Me */
  1172. /* tVorschlag.Bestellung = tVorschlag.KGeb_Me. */
  1173. /* END. */
  1174. IF tParam.nAufrunden > 0 THEN
  1175. DO:
  1176. ii = (iVGeb_Me * 100) / tVorschlag.GGeb_Inhalt.
  1177. IF ii >= tParam.nAufrunden THEN
  1178. DO:
  1179. iGGeb_Me = iGGeb_Me + 1.
  1180. iVGeb_Me = iGGeb_Me * tVorschlag.GGeb_Inhalt.
  1181. END.
  1182. iKGeb_Me = iVGeb_Me * tVorschlag.VGeb_Inhalt.
  1183. ASSIGN
  1184. tVorschlag.GGeb_Me = iGGeb_Me
  1185. tVorschlag.VGeb_Me = iVGeb_Me
  1186. tVorschlag.KGeb_Me = iKGeb_Me
  1187. tVorschlag.Bestellung = iKGeb_Me
  1188. tVorschlag.Vorschlag_Me = iKGeb_Me.
  1189. END.
  1190. iTotAnz = iTotAnz + 1.
  1191. EMPTY TEMP-TABLE tBesze.
  1192. CREATE tBesze.
  1193. ASSIGN
  1194. tBesze.Firma = D1Firma
  1195. tBesze.Besnr = tVorschlag.Besnr
  1196. tBesze.iStatus = 0
  1197. tBesze.Artnr = tVorschlag.Artnr
  1198. tBesze.Inhalt = tVorschlag.Inhalt
  1199. tBesze.Jahr = tVorschlag.Jahr
  1200. .
  1201. DYNAMIC-FUNCTION ('fillBesze':U, INPUT-OUTPUT htBesze) NO-ERROR.
  1202. IF ERROR-STATUS:ERROR THEN NEXT.
  1203. ASSIGN
  1204. tBesze.GGeb_Me = tVorschlag.GGeb_Me
  1205. tBesze.VGeb_Me = tVorschlag.VGeb_Me
  1206. tBesze.KGeb_Me = tVorschlag.KGeb_Me
  1207. tBesze.MBest = tVorschlag.KGeb_Me
  1208. tBesze.Verbrauch = tVorschlag.Verbrauch_Letzt
  1209. .
  1210. DYNAMIC-FUNCTION ('calculatetBeszeNetto':U, INPUT-OUTPUT htBesze ) NO-ERROR.
  1211. tVorschlag.nNetto = tBesze.Netto.
  1212. END.
  1213. FIND FIRST tVorschlag NO-ERROR.
  1214. IF NOT AVAILABLE tVorschlag THEN
  1215. DO:
  1216. DYNAMIC-FUNCTION('fehlerMeldung':U, 1111, '' ) NO-ERROR.
  1217. RETURN NO-APPLY.
  1218. END.
  1219. SLIDER-1:HIDDEN IN FRAME {&FRAME-NAME} = TRUE.
  1220. SESSION:SET-WAIT-STATE ('').
  1221. /* OUTPUT TO 'C:\Entwicklung\Temp\tVorschlag.csv' NO-MAP NO-CONVERT.*/
  1222. /* FOR EACH tVorschlag: */
  1223. /* EXPORT DELIMITER ';' tVorschlag. */
  1224. /* END. */
  1225. /* OUTPUT CLOSE. */
  1226. IF VALID-HANDLE(hBestellvorschlag) THEN RUN OPENQUERY IN hBestellvorschlag.
  1227. ELSE
  1228. DO:
  1229. RUN 'w-bestellvorschlag.w' PERSISTENT SET hBestellvorschlag ( INPUT htVorschlag ) NO-ERROR.
  1230. RUN initializeObject IN hBestellvorschlag.
  1231. RUN OPENQUERY IN hBestellvorschlag.
  1232. END.
  1233. /*
  1234. RUN EXCEL.
  1235. */
  1236. END PROCEDURE.
  1237. /* _UIB-CODE-BLOCK-END */
  1238. &ANALYZE-RESUME
  1239. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE destroyObject bTableWin
  1240. PROCEDURE destroyObject :
  1241. /*------------------------------------------------------------------------------*/
  1242. /* Purpose: */
  1243. /* Notes: */
  1244. /*------------------------------------------------------------------------------*/
  1245. DEFINE VARIABLE hBrowser AS HANDLE NO-UNDO.
  1246. hBrowser = {&BROWSE-NAME}:HANDLE IN FRAME {&FRAME-NAME}.
  1247. DYNAMIC-FUNCTION('setBrowserDaten':U, INPUT hBrowser,
  1248. INPUT Sektion ) NO-ERROR.
  1249. IF VALID-HANDLE(hBestellvorschlag) THEN RUN ENDE IN hBestellvorschlag.
  1250. RUN SUPER.
  1251. /* Code placed here will execute AFTER standard behavior. */
  1252. END PROCEDURE.
  1253. /* _UIB-CODE-BLOCK-END */
  1254. &ANALYZE-RESUME
  1255. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI bTableWin _DEFAULT-DISABLE
  1256. PROCEDURE disable_UI :
  1257. /*------------------------------------------------------------------------------
  1258. Purpose: DISABLE the User Interface
  1259. Parameters: <none>
  1260. Notes: Here we clean-up the user-interface by deleting
  1261. dynamic widgets we have created and/or hide
  1262. frames. This procedure is usually called when
  1263. we are ready to "clean-up" after running.
  1264. ------------------------------------------------------------------------------*/
  1265. /* Hide all frames. */
  1266. HIDE FRAME F-Main.
  1267. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  1268. END PROCEDURE.
  1269. /* _UIB-CODE-BLOCK-END */
  1270. &ANALYZE-RESUME
  1271. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN bTableWin
  1272. PROCEDURE DRUCKEN :
  1273. /*------------------------------------------------------------------------------*/
  1274. /* Purpose: */
  1275. /* Notes: */
  1276. /*------------------------------------------------------------------------------*/
  1277. IF cInstallation BEGINS 'Huber' THEN RUN DRUCKEN_HUBER.
  1278. ELSE RUN DRUCKEN_STANDARD.
  1279. END PROCEDURE.
  1280. /* _UIB-CODE-BLOCK-END */
  1281. &ANALYZE-RESUME
  1282. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_HUBER bTableWin
  1283. PROCEDURE DRUCKEN_HUBER :
  1284. /*------------------------------------------------------------------------------*/
  1285. /* Purpose: */
  1286. /* Notes: */
  1287. /*------------------------------------------------------------------------------*/
  1288. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE.
  1289. DEFINE VARIABLE VVorlage AS CHARACTER INIT "BestellformHuber.xlsm".
  1290. DEFINE VARIABLE VDateiName AS CHARACTER INIT "BestellformHuber.xlsm".
  1291. DEFINE VARIABLE VDatenDatei AS CHARACTER INIT "BestellformHuber.csv".
  1292. DEFINE VARIABLE MyName AS CHARACTER NO-UNDO.
  1293. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
  1294. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  1295. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  1296. DEFINE VARIABLE io AS LOG NO-UNDO.
  1297. DEFINE VARIABLE cArtnr AS CHARACTER NO-UNDO.
  1298. DEFINE VARIABLE cJahr AS CHARACTER NO-UNDO.
  1299. DEFINE VARIABLE cAlk AS CHARACTER NO-UNDO.
  1300. DEFINE VARIABLE cGGeb AS CHARACTER NO-UNDO.
  1301. DEFINE VARIABLE cVGeb AS CHARACTER NO-UNDO.
  1302. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  1303. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  1304. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  1305. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  1306. DEFINE BUFFER bBesze FOR Besze.
  1307. iRecid = DYNAMIC-FUNCTION('getCurrentRecid':U IN hDaten ) NO-ERROR.
  1308. IF iRecid = ? OR
  1309. iRecid = 0 THEN
  1310. DO:
  1311. APPLY 'U1'.
  1312. RETURN NO-APPLY.
  1313. END.
  1314. FIND Besko NO-LOCK WHERE RECID(Besko) = iRecid.
  1315. CString = VDateiName + CHR(01) + VVorlage.
  1316. RUN CREATEDATEI ( INPUT cString ).
  1317. IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY.
  1318. VDateiName = RETURN-VALUE.
  1319. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
  1320. IF NOT VALID-HANDLE(excelAppl) THEN
  1321. DO:
  1322. MESSAGE 'Die Applikation Excel konnte nicht gestartet werden ! '
  1323. VIEW-AS ALERT-BOX ERROR.
  1324. RETURN NO-APPLY.
  1325. END.
  1326. EMPTY TEMP-TABLE tKopf.
  1327. DO ix = 1 TO 19:
  1328. CREATE tKopf.
  1329. ASSIGN
  1330. tKopf.Zeile = ix.
  1331. END.
  1332. EMPTY TEMP-TABLE tAdresse.
  1333. CREATE tAdresse.
  1334. FIND Adresse NO-LOCK USE-INDEX Adresse-k1
  1335. WHERE Adresse.Firma = AdFirma
  1336. AND Adresse.Knr = Besko.Knr NO-ERROR.
  1337. IF AVAILABLE Adresse THEN
  1338. DO:
  1339. BUFFER-COPY Adresse TO tAdresse.
  1340. FIND FIRST Ansprech NO-LOCK
  1341. WHERE Ansprech.Firma = Adresse.Firma
  1342. AND Ansprech.Knr = Adresse.Knr
  1343. AND Ansprech.Bestellung = TRUE NO-ERROR.
  1344. IF AVAILABLE Ansprech THEN BUFFER-COPY Ansprech TO tAdresse.
  1345. END.
  1346. FIND Krest NO-LOCK
  1347. WHERE Krest.Firma = D1Firma
  1348. AND Krest.Knr = Besko.Knr NO-ERROR.
  1349. i1 = 0.
  1350. DO ix = 4 TO 12:
  1351. i1 = i1 + 1.
  1352. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1353. ASSIGN
  1354. tKopf.Feld[05] = tAdresse.Anschrift[ix].
  1355. END.
  1356. IF tAdresse.Tel-1 <> '' THEN
  1357. DO:
  1358. i1 = i1 + 1.
  1359. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1360. ASSIGN
  1361. tKopf.Feld[05] = 'Tel.: ' + tAdresse.Tel-1.
  1362. END.
  1363. IF tAdresse.Tel-3 <> '' THEN
  1364. DO:
  1365. i1 = i1 + 1.
  1366. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1367. ASSIGN
  1368. tKopf.Feld[05] = 'Fax.: ' + tAdresse.Tel-3.
  1369. END.
  1370. IF tAdresse.Mail <> '' THEN
  1371. DO:
  1372. i1 = i1 + 1.
  1373. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1374. ASSIGN
  1375. tKopf.Feld[05] = 'Mail: ' + tAdresse.Mail .
  1376. END.
  1377. ix = 1.
  1378. FIND Steuer USE-INDEX Steuer-k1
  1379. WHERE Steuer.Firma = D1Firma NO-LOCK.
  1380. IF Steuer.Firma1 <> '' THEN
  1381. DO:
  1382. ix = ix + 1.
  1383. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1384. tKopf.Feld[02] = Steuer.Firma1.
  1385. END.
  1386. IF Steuer.Firma2 <> '' THEN
  1387. DO:
  1388. ix = ix + 1.
  1389. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1390. tKopf.Feld[02] = Steuer.Firma2.
  1391. END.
  1392. IF Steuer.Strasse <> '' THEN
  1393. DO:
  1394. ix = ix + 1.
  1395. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1396. tKopf.Feld[02] = Steuer.Strasse.
  1397. END.
  1398. IF Steuer.Ort <> '' THEN
  1399. DO:
  1400. ix = ix + 1.
  1401. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1402. tKopf.Feld[02] = Steuer.Ort.
  1403. END.
  1404. IF Steuer.Tel-1 <> '' THEN
  1405. DO:
  1406. ix = ix + 1.
  1407. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1408. tKopf.Feld[02] = 'Tel.:'.
  1409. tKopf.Feld[03] = Steuer.Tel-1.
  1410. END.
  1411. IF Steuer.Fax-1 <> '' THEN
  1412. DO:
  1413. ix = ix + 1.
  1414. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1415. tKopf.Feld[02] = 'Fax :'.
  1416. tKopf.Feld[03] = Steuer.Fax-1.
  1417. END.
  1418. IF AVAILABLE Krest THEN
  1419. DO:
  1420. ix = ix + 1.
  1421. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1422. ASSIGN
  1423. tKopf.Feld[02] = 'Knr:'
  1424. tKopf.Feld[03] = STRING(Krest.Kred_Knr,'999999') .
  1425. END.
  1426. FIND FIRST tKopf WHERE tKopf.Zeile = 3.
  1427. tKopf.Feld[05] = (IF Besko.Abgeholt THEN 'ABHOLUNG' ELSE '').
  1428. FIND FIRST tKopf WHERE tKopf.Zeile = 14.
  1429. tKopf.Feld[01] = 'Bestellung ' + STRING(Besko.Besnr,'999999').
  1430. tKopf.Feld[05] = Steuer.Ort + ', ' + STRING(TODAY,'99.99.9999').
  1431. FIND FIRST tKopf WHERE tKopf.Zeile = 17.
  1432. ASSIGN
  1433. tKopf.Feld[02] = 'Artikel'
  1434. tKopf.Feld[03] = 'Artikel'
  1435. tKopf.Feld[04] = 'Vol%'
  1436. tKopf.Feld[05] = 'JG'
  1437. tKopf.Feld[06] = 'Gebinde'
  1438. tKopf.Feld[07] = 'Paletten'
  1439. tKopf.Feld[08] = 'Kisten'
  1440. tKopf.Feld[09] = 'Flaschen'.
  1441. FIND FIRST tKopf WHERE tKopf.Zeile = 18.
  1442. ASSIGN
  1443. tKopf.Feld[02] = 'Nummer'
  1444. tKopf.Feld[03] = ''
  1445. tKopf.Feld[04] = ''
  1446. tKopf.Feld[05] = ''
  1447. tKopf.Feld[06] = ''
  1448. tKopf.Feld[07] = ''
  1449. tKopf.Feld[08] = 'Karton'
  1450. tKopf.Feld[09] = 'Dosen'.
  1451. VDatenDatei = SESSION:TEMP-DIR + VDatenDatei.
  1452. OUTPUT TO VALUE(VDatenDatei).
  1453. FOR EACH tKopf BY Zeile:
  1454. PUT CONTROL tKopf.Feld[01] '£'
  1455. tKopf.Feld[02] '£'
  1456. tKopf.Feld[03] '£'
  1457. tKopf.Feld[04] '£'
  1458. tKopf.Feld[05] '£'
  1459. tKopf.Feld[06] '£'
  1460. tKopf.Feld[07] '£'
  1461. tKopf.Feld[08] '£'
  1462. tKopf.Feld[09] CHR(10).
  1463. END.
  1464. i2 = 0.
  1465. DO ix = 1 TO NUM-ENTRIES (Besko.Kopf, CHR(10)):
  1466. cString = ENTRY(ix, Besko.Kopf, CHR(10)).
  1467. IF LENGTH(cString) > 80 THEN
  1468. DO:
  1469. cZeile = cString.
  1470. cString = ''.
  1471. DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
  1472. IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
  1473. DO:
  1474. PUT CONTROL TRIM(cString) CHR(10).
  1475. cString = ''.
  1476. END.
  1477. cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
  1478. END.
  1479. END.
  1480. PUT CONTROL '££' TRIM(cString) CHR(10).
  1481. i2 = i2 + 1.
  1482. END.
  1483. IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
  1484. IF Besko.Abholtext <> '' THEN
  1485. DO:
  1486. cString = REPLACE(Besko.Abholtext, CHR(10), CHR(11)).
  1487. cString = REPLACE(cString, CHR(13), '').
  1488. PUT CONTROL '££' cString '£' CHR(10)
  1489. '£' CHR(10).
  1490. END.
  1491. FOR EACH bBesze USE-INDEX Besze-k1
  1492. WHERE bBesze.Firma = D1Firma
  1493. AND bBesze.Besnr = Besko.Besnr :
  1494. IF bBesze.MBest = 0 AND
  1495. bBesze.MGeli = 0 THEN
  1496. DO:
  1497. DELETE bBesze.
  1498. RELEASE bBesze.
  1499. NEXT.
  1500. END.
  1501. FIND Artst OF bBesze NO-LOCK NO-ERROR.
  1502. FIND KGebinde NO-LOCK USE-INDEX KGebinde-k1
  1503. WHERE KGebinde.Firma = D1Firma
  1504. AND KGebinde.Geb_Cd = bBesze.KGeb_Cd NO-ERROR.
  1505. FIND VGebinde NO-LOCK USE-INDEX VGebinde-k1
  1506. WHERE VGebinde.Firma = D1Firma
  1507. AND VGebinde.Geb_Cd = bBesze.VGeb_Cd NO-ERROR.
  1508. FIND GGebinde NO-LOCK USE-INDEX GGebinde-k1
  1509. WHERE GGebinde.Firma = D1Firma
  1510. AND GGebinde.Geb_Cd = bBesze.GGeb_Cd NO-ERROR.
  1511. cArtnr = ''.
  1512. cJahr = ''.
  1513. cAlk = ''.
  1514. cGGeb = ''.
  1515. cVGeb = ''.
  1516. IF bBesze.S_Artnr <> '' THEN cArtnr = bBesze.S_Artnr.
  1517. ELSE cArtnr = STRING(bBesze.Artnr,"999999").
  1518. /* + "." */
  1519. /* + STRING(bBesze.Inhalt,"9999") */
  1520. /* + "." */
  1521. /* + STRING(bBesze.Jahr ,"9999").*/
  1522. IF bBesze.Jahr > 99 THEN
  1523. DO:
  1524. cJahr = STRING(bBesze.Jahr,"9999").
  1525. END.
  1526. IF Artst.Alk_Gehalt <> 0 THEN
  1527. DO:
  1528. cAlk = STRING(Artst.Alk_Gehalt,">9.99") + '%'.
  1529. END.
  1530. IF bBesze.GGeb_Me <> 0 THEN cGGeb = TRIM(STRING(bBesze.GGeb_Me,'->>>>>9')).
  1531. IF bBesze.VGeb_Me <> 0 THEN cVGeb = TRIM(STRING(bBesze.VGeb_Me,'->>>>>9')).
  1532. PUT CONTROL '£'
  1533. cArtnr '£'
  1534. bBesze.Bez1 '£'
  1535. cAlk '£'
  1536. cJahr '£'
  1537. KGebinde.KBez '£'
  1538. cGGeb '£'
  1539. cVGeb '£'
  1540. TRIM(STRING(bBesze.KGeb_Me,'->>>>>9')) CHR(10).
  1541. IF bBesze.Bez2 <> '' THEN
  1542. DO:
  1543. PUT CONTROL '££'
  1544. bBesze.Bez2 '£££' CHR(10).
  1545. END.
  1546. PUT CONTROL '£' CHR(10).
  1547. RELEASE bBesze.
  1548. END.
  1549. IF Besko.Lief_Datum <> ? THEN
  1550. DO:
  1551. PUT CONTROL '£' CHR(10) '£' CHR(10)
  1552. 'Liefererung am:' '££'
  1553. DYNAMIC-FUNCTION('GETWOCHENTAG', INPUT Besko.Lief_Datum)
  1554. ', '
  1555. STRING(Besko.Lief_Datum,'99.99.9999')
  1556. ', '
  1557. Besko.Lieferzeit CHR(10).
  1558. END.
  1559. PUT CONTROL '£' CHR(10).
  1560. i2 = 0.
  1561. DO ix = 1 TO NUM-ENTRIES (Besko.Schluss, CHR(10)):
  1562. cString = ENTRY(ix, Besko.Schluss, CHR(10)).
  1563. IF LENGTH(cString) > 80 THEN
  1564. DO:
  1565. cZeile = cString.
  1566. cString = ''.
  1567. DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
  1568. IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
  1569. DO:
  1570. PUT CONTROL TRIM(cString) CHR(10).
  1571. cString = ''.
  1572. END.
  1573. cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
  1574. END.
  1575. END.
  1576. PUT CONTROL TRIM(cString) CHR(10).
  1577. i2 = i2 + 1.
  1578. END.
  1579. IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
  1580. OUTPUT CLOSE.
  1581. RELEASE Besko.
  1582. RELEASE bBesze.
  1583. RELEASE Artst.
  1584. RUN OPENEXCEL ( INPUT excelAppl,
  1585. INPUT VDateiName,
  1586. INPUT '',
  1587. OUTPUT io ).
  1588. IF NOT io THEN
  1589. DO:
  1590. RUN FEHLER ( INPUT 1040 ).
  1591. RETURN NO-APPLY.
  1592. END.
  1593. Zelle = 'A1'.
  1594. excelAppl:Range(Zelle):SELECT.
  1595. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + VDatenDatei.
  1596. excelAppl:Application:RUN ( 'DateiEinfügen' ).
  1597. Zelle = 'A1'.
  1598. excelAppl:Range(Zelle):SELECT.
  1599. excelAppl:Selection:ColumnWidth = 0.3.
  1600. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR.
  1601. END PROCEDURE.
  1602. /* _UIB-CODE-BLOCK-END */
  1603. &ANALYZE-RESUME
  1604. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_STANDARD bTableWin
  1605. PROCEDURE DRUCKEN_STANDARD :
  1606. /*------------------------------------------------------------------------------*/
  1607. /* Purpose: */
  1608. /* Notes: */
  1609. /*------------------------------------------------------------------------------*/
  1610. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE.
  1611. DEFINE VARIABLE VVorlage AS CHARACTER INIT "Bestellform.xls".
  1612. DEFINE VARIABLE VDateiName AS CHARACTER INIT "Bestellform.xls".
  1613. DEFINE VARIABLE VDatenDatei AS CHARACTER INIT "Bestellform.csv".
  1614. DEFINE VARIABLE MyName AS CHARACTER NO-UNDO.
  1615. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
  1616. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  1617. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  1618. DEFINE VARIABLE io AS LOG NO-UNDO.
  1619. DEFINE VARIABLE cArtnr AS CHARACTER NO-UNDO.
  1620. DEFINE VARIABLE cJahr AS CHARACTER NO-UNDO.
  1621. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  1622. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  1623. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  1624. DEFINE VARIABLE iRecid AS RECID NO-UNDO.
  1625. DEFINE BUFFER bBesze FOR Besze.
  1626. iRecid = DYNAMIC-FUNCTION('getCurrentRecid':U IN hDaten ) NO-ERROR.
  1627. IF iRecid = ? OR
  1628. iRecid = 0 THEN
  1629. DO:
  1630. APPLY 'U1'.
  1631. RETURN NO-APPLY.
  1632. END.
  1633. FIND Besko NO-LOCK WHERE RECID(Besko) = iRecid.
  1634. CString = VDateiName + CHR(01) + VVorlage.
  1635. RUN CREATEDATEI ( INPUT cString ).
  1636. IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY.
  1637. VDateiName = RETURN-VALUE.
  1638. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
  1639. IF NOT VALID-HANDLE(excelAppl) THEN
  1640. DO:
  1641. MESSAGE 'Die Applikation Excel konnte nicht gestartet werden ! '
  1642. VIEW-AS ALERT-BOX ERROR.
  1643. RETURN NO-APPLY.
  1644. END.
  1645. FOR EACH tKopf:
  1646. DELETE tKopf.
  1647. END.
  1648. DO ix = 1 TO 19:
  1649. CREATE tKopf.
  1650. ASSIGN
  1651. tKopf.Zeile = ix.
  1652. END.
  1653. FIND Adresse NO-LOCK USE-INDEX Adresse-k1
  1654. WHERE Adresse.Firma = AdFirma
  1655. AND Adresse.Knr = Besko.Knr NO-ERROR.
  1656. FIND Krest NO-LOCK
  1657. WHERE Krest.Firma = D1Firma
  1658. AND Krest.Knr = Besko.Knr NO-ERROR.
  1659. i1 = 0.
  1660. DO ix = 4 TO 12:
  1661. i1 = i1 + 1.
  1662. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1663. ASSIGN
  1664. tKopf.Feld[05] = Adresse.Anschrift[ix].
  1665. END.
  1666. IF Adresse.Tel-1 <> '' THEN
  1667. DO:
  1668. i1 = i1 + 1.
  1669. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1670. ASSIGN
  1671. tKopf.Feld[05] = 'Tel.: ' + Adresse.Tel-1.
  1672. END.
  1673. IF Adresse.Tel-3 <> '' THEN
  1674. DO:
  1675. i1 = i1 + 1.
  1676. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1677. ASSIGN
  1678. tKopf.Feld[05] = 'Fax.: ' + Adresse.Tel-3.
  1679. END.
  1680. IF Adresse.Mail <> '' THEN
  1681. DO:
  1682. i1 = i1 + 1.
  1683. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1684. ASSIGN
  1685. tKopf.Feld[05] = 'Mail: ' + Adresse.Mail .
  1686. END.
  1687. ix = 1.
  1688. FIND Steuer USE-INDEX Steuer-k1
  1689. WHERE Steuer.Firma = D1Firma NO-LOCK.
  1690. IF Steuer.Firma1 <> '' THEN
  1691. DO:
  1692. ix = ix + 1.
  1693. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1694. tKopf.Feld[02] = Steuer.Firma1.
  1695. END.
  1696. IF Steuer.Firma2 <> '' THEN
  1697. DO:
  1698. ix = ix + 1.
  1699. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1700. tKopf.Feld[02] = Steuer.Firma2.
  1701. END.
  1702. IF Steuer.Strasse <> '' THEN
  1703. DO:
  1704. ix = ix + 1.
  1705. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1706. tKopf.Feld[02] = Steuer.Strasse.
  1707. END.
  1708. IF Steuer.Ort <> '' THEN
  1709. DO:
  1710. ix = ix + 1.
  1711. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1712. tKopf.Feld[02] = Steuer.Ort.
  1713. END.
  1714. IF Steuer.Tel-1 <> '' THEN
  1715. DO:
  1716. ix = ix + 1.
  1717. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1718. tKopf.Feld[02] = 'Tel.:'.
  1719. tKopf.Feld[03] = Steuer.Tel-1.
  1720. END.
  1721. IF Steuer.Fax-1 <> '' THEN
  1722. DO:
  1723. ix = ix + 1.
  1724. FIND FIRST tKopf WHERE tKopf.Zeile = ix.
  1725. tKopf.Feld[02] = 'Fax :'.
  1726. tKopf.Feld[03] = Steuer.Fax-1.
  1727. END.
  1728. IF AVAILABLE Krest THEN
  1729. DO:
  1730. ix = ix + 1.
  1731. FIND FIRST tKopf WHERE tKopf.Zeile = i1.
  1732. ASSIGN
  1733. tKopf.Feld[02] = 'Knr:'
  1734. tKopf.Feld[03] = Krest.Kred_Knr .
  1735. END.
  1736. FIND FIRST tKopf WHERE tKopf.Zeile = 14.
  1737. tKopf.Feld[01] = 'Bestellung ' + STRING(Besko.Besnr,'999999').
  1738. tKopf.Feld[05] = Steuer.Ort + ', ' + STRING(TODAY,'99.99.9999').
  1739. FIND FIRST tKopf WHERE tKopf.Zeile = 17.
  1740. ASSIGN
  1741. tKopf.Feld[02] = 'Pos'
  1742. tKopf.Feld[03] = 'Artikelnummer'
  1743. tKopf.Feld[04] = 'Artikel'
  1744. tKopf.Feld[05] = 'Gebinde'
  1745. tKopf.Feld[06] = 'Gebinde'
  1746. tKopf.Feld[07] = 'Gebinde'.
  1747. FIND FIRST tKopf WHERE tKopf.Zeile = 18.
  1748. ASSIGN
  1749. tKopf.Feld[03] = 'Jahrg./Alk-%'
  1750. tKopf.Feld[05] = 'Menge'
  1751. tKopf.Feld[06] = 'Menge'
  1752. tKopf.Feld[07] = 'Menge'.
  1753. VDatenDatei = SESSION:TEMP-DIR + VDatenDatei.
  1754. OUTPUT TO VALUE(VDatenDatei).
  1755. FOR EACH tKopf BY Zeile:
  1756. PUT CONTROL tKopf.Feld[01] '£'
  1757. tKopf.Feld[02] '£'
  1758. tKopf.Feld[03] '£'
  1759. tKopf.Feld[04] '£'
  1760. tKopf.Feld[05] '£'
  1761. tKopf.Feld[06] '£'
  1762. tKopf.Feld[07] CHR(10).
  1763. END.
  1764. i2 = 0.
  1765. DO ix = 1 TO NUM-ENTRIES (Besko.Kopf, CHR(10)):
  1766. cString = ENTRY(ix, Besko.Kopf, CHR(10)).
  1767. IF LENGTH(cString) > 80 THEN
  1768. DO:
  1769. cZeile = cString.
  1770. cString = ''.
  1771. DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
  1772. IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
  1773. DO:
  1774. PUT CONTROL TRIM(cString) CHR(10).
  1775. cString = ''.
  1776. END.
  1777. cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
  1778. END.
  1779. END.
  1780. PUT CONTROL TRIM(cString) CHR(10).
  1781. i2 = i2 + 1.
  1782. END.
  1783. IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
  1784. FOR EACH bBesze USE-INDEX Besze-k1
  1785. WHERE bBesze.Firma = D1Firma
  1786. AND bBesze.Besnr = Besko.Besnr :
  1787. IF bBesze.MBest = 0 AND
  1788. bBesze.MGeli = 0 THEN
  1789. DO:
  1790. DELETE bBesze.
  1791. RELEASE bBesze.
  1792. NEXT.
  1793. END.
  1794. FIND Artst OF bBesze NO-LOCK NO-ERROR.
  1795. FIND KGebinde NO-LOCK USE-INDEX KGebinde-k1
  1796. WHERE KGebinde.Firma = D1Firma
  1797. AND KGebinde.Geb_Cd = bBesze.KGeb_Cd NO-ERROR.
  1798. FIND VGebinde NO-LOCK USE-INDEX VGebinde-k1
  1799. WHERE VGebinde.Firma = D1Firma
  1800. AND VGebinde.Geb_Cd = bBesze.VGeb_Cd NO-ERROR.
  1801. FIND GGebinde NO-LOCK USE-INDEX GGebinde-k1
  1802. WHERE GGebinde.Firma = D1Firma
  1803. AND GGebinde.Geb_Cd = bBesze.GGeb_Cd NO-ERROR.
  1804. cArtnr = ''.
  1805. cJahr = ''.
  1806. IF bBesze.S_Artnr <> '' THEN cArtnr = bBesze.S_Artnr.
  1807. ELSE cArtnr = STRING(bBesze.Artnr,"999999")
  1808. + "."
  1809. + STRING(bBesze.Inhalt,"9999")
  1810. + "."
  1811. + STRING(bBesze.Jahr ,"9999").
  1812. IF bBesze.Jahr > 99 THEN
  1813. DO:
  1814. cJahr = STRING(bBesze.Jahr,"9999").
  1815. END.
  1816. IF Artst.Alk_Gehalt <> 0 THEN
  1817. DO:
  1818. IF cJahr <> '' THEN cJahr = cJahr + ' / '.
  1819. cJahr = cJahr + STRING(Artst.Alk_Gehalt,">9.99") + '%'.
  1820. END.
  1821. PUT CONTROL '£'
  1822. STRING(bBesze.Pos,">>>9") '£'
  1823. cArtnr '£'
  1824. bBesze.Bez1 '£'
  1825. GGebinde.KBez '£'
  1826. VGebinde.KBez '£'
  1827. KGebinde.KBez CHR(10).
  1828. PUT CONTROL '££'
  1829. cJahr '£'
  1830. bBesze.Bez2 '£'
  1831. STRING(bBesze.GGeb_Me,"->>>,>>9") '£'
  1832. STRING(bBesze.VGeb_Me,"->>>,>>9") '£'
  1833. STRING(bBesze.KGeb_Me,"->>>,>>9") CHR(10) '£' CHR(10).
  1834. RELEASE bBesze.
  1835. END.
  1836. IF Besko.Lief_Datum <> ? THEN
  1837. DO:
  1838. PUT CONTROL '£' CHR(10) '£' CHR(10)
  1839. 'Liefererung am:' '£££'
  1840. DYNAMIC-FUNCTION('GETWOCHENTAG', INPUT Besko.Lief_Datum)
  1841. ', '
  1842. STRING(Besko.Lief_Datum,'99.99.9999')
  1843. ', '
  1844. Besko.Lieferzeit CHR(10).
  1845. END.
  1846. PUT CONTROL '£' CHR(10).
  1847. i2 = 0.
  1848. DO ix = 1 TO NUM-ENTRIES (Besko.Schluss, CHR(10)):
  1849. cString = ENTRY(ix, Besko.Schluss, CHR(10)).
  1850. IF LENGTH(cString) > 80 THEN
  1851. DO:
  1852. cZeile = cString.
  1853. cString = ''.
  1854. DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
  1855. IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
  1856. DO:
  1857. PUT CONTROL TRIM(cString) CHR(10).
  1858. cString = ''.
  1859. END.
  1860. cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
  1861. END.
  1862. END.
  1863. PUT CONTROL TRIM(cString) CHR(10).
  1864. i2 = i2 + 1.
  1865. END.
  1866. IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
  1867. OUTPUT CLOSE.
  1868. RELEASE Besko.
  1869. RELEASE bBesze.
  1870. RUN OPENEXCEL ( INPUT excelAppl,
  1871. INPUT VDateiName,
  1872. INPUT '',
  1873. OUTPUT io ).
  1874. IF NOT io THEN
  1875. DO:
  1876. RUN FEHLER ( INPUT 1040 ).
  1877. RETURN NO-APPLY.
  1878. END.
  1879. Zelle = 'A1'.
  1880. excelAppl:Range(Zelle):SELECT.
  1881. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + VDatenDatei.
  1882. excelAppl:Application:RUN ( 'DateiEinfügen' ).
  1883. Zelle = 'A1'.
  1884. excelAppl:Range(Zelle):SELECT.
  1885. excelAppl:Selection:ColumnWidth = 0.3.
  1886. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR.
  1887. END PROCEDURE.
  1888. /* _UIB-CODE-BLOCK-END */
  1889. &ANALYZE-RESUME
  1890. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_BROWSE bTableWin
  1891. PROCEDURE ENTRY_BROWSE :
  1892. /*------------------------------------------------------------------------------*/
  1893. /* Purpose: */
  1894. /* Notes: */
  1895. /*------------------------------------------------------------------------------*/
  1896. APPLY 'ENTRY' TO {&BROWSE-NAME} IN FRAME {&FRAME-NAME}.
  1897. RETURN NO-APPLY.
  1898. END PROCEDURE.
  1899. /* _UIB-CODE-BLOCK-END */
  1900. &ANALYZE-RESUME
  1901. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL bTableWin
  1902. PROCEDURE EXCEL :
  1903. /*------------------------------------------------------------------------------*/
  1904. /* Purpose: */
  1905. /* Notes: */
  1906. /*------------------------------------------------------------------------------*/
  1907. DEFINE VARIABLE OK AS LOG NO-UNDO.
  1908. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO.
  1909. DEFINE VARIABLE Vorlage AS CHARACTER NO-UNDO.
  1910. DEFINE VARIABLE Dokument AS CHARACTER NO-UNDO.
  1911. DEFINE VARIABLE Daten AS CHARACTER NO-UNDO.
  1912. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
  1913. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  1914. DEFINE VARIABLE xWgr AS CHARACTER NO-UNDO.
  1915. DEFINE VARIABLE xPgr AS CHARACTER NO-UNDO.
  1916. DEFINE VARIABLE xAgr AS CHARACTER NO-UNDO.
  1917. DEFINE VARIABLE Stern AS CHARACTER NO-UNDO.
  1918. DEFINE VARIABLE FwSprcd AS INTEGER NO-UNDO INIT 1.
  1919. DEFINE VARIABLE iVG AS DECIMAL NO-UNDO.
  1920. DEFINE VARIABLE iGG AS DECIMAL NO-UNDO.
  1921. DEFINE VARIABLE minVG AS DECIMAL NO-UNDO.
  1922. DEFINE VARIABLE minGG AS DECIMAL NO-UNDO.
  1923. DEFINE VARIABLE maxVG AS DECIMAL NO-UNDO.
  1924. DEFINE VARIABLE maxGG AS DECIMAL NO-UNDO.
  1925. DEFINE VARIABLE lWgr AS LOGICAL NO-UNDO INIT TRUE .
  1926. DEFINE VARIABLE lPgr AS LOGICAL NO-UNDO INIT FALSE.
  1927. DEFINE VARIABLE lAgr AS LOGICAL NO-UNDO INIT FALSE.
  1928. DEFINE VARIABLE lVGebinde AS LOGICAL NO-UNDO.
  1929. DEFINE VARIABLE cAlk AS CHARACTER NO-UNDO.
  1930. DEFINE BUFFER bArtst FOR Artst.
  1931. DEFINE BUFFER bArtLager FOR ArtLager.
  1932. FIND Steuer NO-LOCK
  1933. WHERE Steuer.Firma = D1Firma.
  1934. lVGebinde = (IF Steuer.St09 = 1 THEN TRUE ELSE FALSE).
  1935. RELEASE Steuer.
  1936. Vorlage = 'Bestellvorschlag.xls'.
  1937. Dokument = Vorlage + CHR(01) + Vorlage.
  1938. Daten = 'Bestellvorschlag.csv'.
  1939. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
  1940. IF NOT VALID-HANDLE(excelAppl) THEN
  1941. DO:
  1942. RUN FEHLER ( INPUT 1035 ).
  1943. RETURN NO-APPLY.
  1944. END.
  1945. DO WHILE TRUE:
  1946. RUN CREATEDATEI ( INPUT Dokument ).
  1947. IF NOT RETURN-VALUE BEGINS 'ERROR-' THEN LEAVE.
  1948. CASE RETURN-VALUE:
  1949. WHEN 'ERROR-PARAMETER' THEN
  1950. DO:
  1951. RUN FEHLER ( INPUT 1036 ).
  1952. RETURN NO-APPLY.
  1953. END.
  1954. WHEN 'ERROR-LOESCHEN' THEN
  1955. DO:
  1956. RUN FEHLER ( INPUT 1037 ).
  1957. RETURN NO-APPLY.
  1958. END.
  1959. WHEN 'ERROR-VORLAGE' THEN
  1960. DO:
  1961. RUN FEHLER ( INPUT 1038 ).
  1962. RETURN NO-APPLY.
  1963. END.
  1964. OTHERWISE
  1965. DO:
  1966. MESSAGE RETURN-VALUE VIEW-AS ALERT-BOX ERROR.
  1967. RETURN NO-APPLY.
  1968. END.
  1969. END CASE.
  1970. LEAVE.
  1971. END.
  1972. Dokument = RETURN-VALUE.
  1973. DO WHILE TRUE:
  1974. RUN CREATEDATEI ( INPUT Daten ).
  1975. IF NOT RETURN-VALUE BEGINS 'ERROR-' THEN LEAVE.
  1976. CASE RETURN-VALUE:
  1977. WHEN 'ERROR-PARAMETER' THEN
  1978. DO:
  1979. RUN FEHLER ( INPUT 1036 ).
  1980. RETURN NO-APPLY.
  1981. END.
  1982. WHEN 'ERROR-LOESCHEN' THEN
  1983. DO:
  1984. RUN FEHLER ( INPUT 1037 ).
  1985. RETURN NO-APPLY.
  1986. END.
  1987. WHEN 'ERROR-VORLAGE' THEN
  1988. DO:
  1989. RUN FEHLER ( INPUT 1038 ).
  1990. RETURN NO-APPLY.
  1991. END.
  1992. OTHERWISE
  1993. DO:
  1994. MESSAGE RETURN-VALUE VIEW-AS ALERT-BOX ERROR.
  1995. RETURN NO-APPLY.
  1996. END.
  1997. END CASE.
  1998. LEAVE.
  1999. END.
  2000. Daten = RETURN-VALUE.
  2001. OUTPUT TO VALUE(Daten).
  2002. FIND Steuer NO-LOCK USE-INDEX Steuer-k1
  2003. WHERE Steuer.Firma = D1Firma NO-ERROR.
  2004. PUT CONTROL '£' CHR(10)
  2005. '£' CHR(10)
  2006. '£' CHR(10)
  2007. '£' CHR(10)
  2008. '£Artnr£Bezeichnung£Jahr£ST£Inhalt£KGeb'
  2009. '£Bestand£Bestellt£Mindest£Mindest£Maximal£Maximal£*'
  2010. '££Verbrauch££Lager£Rück-£Bestellung' CHR(10).
  2011. PUT CONTROL '£Inhalt££'
  2012. 'Alk%'.
  2013. /* ELSE PUT CONTROL 'Kat'. */
  2014. PUT CONTROL '££in cl££££VGeb£GGeb£VGeb£GGeb£*'
  2015. '£KGeb£VGeb£GGeb£Ort£stände£' CHR(10)
  2016. '£' CHR(10).
  2017. FOR EACH tVorschlag,
  2018. FIRST bArtst USE-INDEX Artst-k1
  2019. WHERE bArtst.Firma = D1Firma
  2020. AND bArtst.Artnr = tVorschlag.Artnr
  2021. AND bArtst.Inhalt = tVorschlag.Inhalt
  2022. AND bArtst.Jahr = tVorschlag.Jahr NO-LOCK,
  2023. FIRST bArtLager NO-LOCK
  2024. WHERE bArtLager.Firma = D1Firma
  2025. AND bArtLager.Artnr = tVorschlag.Artnr
  2026. AND bArtLager.Inhalt = tVorschlag.Inhalt
  2027. AND bArtLager.Jahr = tVorschlag.Jahr
  2028. AND bArtLager.Lager = tVorschlag.Lager
  2029. BREAK BY tVorschlag.Knr
  2030. BY bArtst.Wg_Grp
  2031. BY bArtst.Prod_Grp
  2032. BY bArtst.Art_Grp
  2033. BY bArtst.Suchbe
  2034. BY bArtst.Artnr
  2035. BY bArtst.Inhalt
  2036. BY bArtst.Jahr :
  2037. IF FIRST-OF ( tVorschlag.Knr ) THEN
  2038. DO:
  2039. FIND Adresse USE-INDEX Adresse-k1
  2040. WHERE Adresse.Firma = AdFirma
  2041. AND Adresse.Knr = tVorschlag.Knr NO-LOCK NO-ERROR.
  2042. PUT CONTROL STRING(Adresse.Knr,'999999 ')
  2043. Adresse.Anzeig_Br CHR(10)
  2044. '£' CHR(10).
  2045. END.
  2046. DO WHILE TRUE:
  2047. IF FIRST-OF ( bArtst.Wg_Grp ) AND
  2048. lWgr THEN
  2049. DO:
  2050. RUN FIND_WARENGRP ( INPUT bArtst.Wg_Grp, OUTPUT cString ).
  2051. IF cString <> '?' AND
  2052. cString <> '' THEN xWgr = ENTRY(2, cString, CHR(01)).
  2053. ELSE xWgr = FILL('?', 10).
  2054. PUT CONTROL xWgr CHR(10).
  2055. END.
  2056. IF FIRST-OF ( bArtst.Prod_Grp ) AND
  2057. lPgr THEN
  2058. DO:
  2059. RUN FIND_PRODGRP ( INPUT bArtst.Wg_Grp ,
  2060. INPUT bArtst.Prod_Grp, OUTPUT cString ).
  2061. IF cString <> '?' AND
  2062. cString <> '' THEN xPgr = ENTRY(2, cString, CHR(01)).
  2063. ELSE xPgr = FILL('?', 10).
  2064. PUT CONTROL xPgr CHR(10).
  2065. END.
  2066. IF FIRST-OF ( bArtst.Art_Grp ) AND
  2067. lAgr THEN
  2068. DO:
  2069. RUN FIND_ARTIKGRP( INPUT bArtst.Wg_Grp ,
  2070. INPUT bArtst.Prod_Grp,
  2071. INPUT bArtst.Art_Grp , OUTPUT cString ).
  2072. IF cString <> '?' AND
  2073. cString <> '' THEN xAgr = ENTRY(2, cString, CHR(01)).
  2074. ELSE xAgr = FILL('?', 10).
  2075. PUT CONTROL xAgr CHR(10).
  2076. END.
  2077. LEAVE.
  2078. END.
  2079. IF (tVorschlag.Bestand + tVorschlag.Bestellt) <= tVorschlag.Mind_Bestand
  2080. THEN Stern = '*'.
  2081. ELSE Stern = ''.
  2082. IF bArtst.Alk_Gehalt <> 0 THEN cAlk = STRING(bArtst.Alk_Gehalt,">9.99") + '%'.
  2083. ELSE cAlk = ''.
  2084. FIND Artbez USE-INDEX Artbez-k1
  2085. WHERE Artbez.Firma = bArtst.Firma
  2086. AND Artbez.Artnr = bArtst.Artnr
  2087. AND Artbez.Inhalt = bArtst.Inhalt
  2088. AND Artbez.Jahr = bArtst.Jahr
  2089. AND Artbez.Sprcd = FwSprcd NO-LOCK NO-ERROR.
  2090. IF NOT AVAILABLE Artbez THEN
  2091. DO:
  2092. FIND FIRST Artbez OF bArtst NO-LOCK NO-ERROR.
  2093. END.
  2094. FIND KGebinde USE-INDEX KGebinde-k1
  2095. WHERE KGebinde.Firma = bArtst.Firma
  2096. AND KGebinde.Geb_Cd = bArtst.KGeb_Cd NO-LOCK NO-ERROR.
  2097. FIND VGebinde USE-INDEX VGebinde-k1
  2098. WHERE VGebinde.Firma = bArtst.Firma
  2099. AND VGebinde.Geb_Cd = bArtst.VGeb_Cd NO-LOCK NO-ERROR.
  2100. FIND GGebinde USE-INDEX GGebinde-k1
  2101. WHERE GGebinde.Firma = bArtst.Firma
  2102. AND GGebinde.Geb_Cd = bArtst.GGeb_Cd NO-LOCK NO-ERROR.
  2103. IF tParam.lVerbrauch THEN
  2104. DO:
  2105. iVG = tVorschlag.Verbrauch / VGebinde.Inhalt NO-ERROR.
  2106. iGG = iVG / GGebinde.Inhalt.
  2107. END.
  2108. IF NOT lVGebinde THEN
  2109. DO:
  2110. minVG = IF VGebinde.Inhalt > 0 THEN bArtLager.Mind_Bestand / VGebinde.Inhalt ELSE 1.
  2111. maxVG = IF VGebinde.Inhalt > 0 THEN bArtLager.Soll_Bestand / VGebinde.Inhalt ELSE 1.
  2112. END.
  2113. ELSE
  2114. DO:
  2115. minVG = IF bArtLager.Mind_Bestand > 0 THEN bArtLager.Mind_Bestand ELSE 0.
  2116. maxVG = IF bArtLager.Soll_Bestand > 0 THEN bArtLager.Soll_Bestand ELSE 0.
  2117. END.
  2118. minGG = IF GGebinde.Inhalt > 0 THEN minVG / GGebinde.Inhalt ELSE 0.
  2119. maxGG = IF GGebinde.Inhalt > 0 THEN maxVG / VGebinde.Inhalt ELSE 0.
  2120. PUT CONTROL '£'
  2121. STRING(bArtst.Artnr ,'999999 ')
  2122. STRING(bArtst.Inhalt ,'9999') '£'
  2123. ArtBez.Bez1 '£'.
  2124. IF bArtst.Jahr > 0 THEN PUT CONTROL STRING(bArtst.Jahr,'zzzz') '£'.
  2125. ELSE
  2126. DO:
  2127. PUT CONTROL cAlk '£'.
  2128. cAlk = ''.
  2129. END.
  2130. CASE bArtst.Ausverk:
  2131. WHEN 0 THEN
  2132. PUT CONTROL 'Vo£'.
  2133. WHEN 1 THEN
  2134. PUT CONTROL 'No£'.
  2135. WHEN 8 THEN
  2136. PUT CONTROL 'Be£'.
  2137. OTHERWISE
  2138. PUT CONTROL '?£'.
  2139. END CASE.
  2140. PUT CONTROL
  2141. STRING(KGebinde.Inhalt ,'zzzz') '£'
  2142. KGebinde.KBez '£'
  2143. STRING(tVorschlag.Bestand ,'->>>>>>>9') '£'
  2144. STRING(tVorschlag.Bestellt ,'->>>>>') '£'
  2145. /* STRING(tVorschlag.Mind_Bestand,'->>>>>>') '£' */
  2146. STRING(minVG ,'->>>>>>') '£'
  2147. STRING(minGG ,'-zzz9.9') '£'
  2148. STRING(maxVG ,'-zzzzzz') '£'
  2149. STRING(maxGG ,'-zzz9.9') '£'
  2150. Stern.
  2151. IF tParam.lVerbrauch THEN
  2152. DO:
  2153. PUT CONTROL '£'
  2154. TRIM(STRING(tVorschlag.Verbrauch,'->>>>>>>>>')) '£'.
  2155. IF VGebinde.Inhalt > 1 THEN PUT CONTROL TRIM(STRING(iVG,'->>>>>9.99')).
  2156. PUT CONTROL '£'.
  2157. IF GGebinde.Inhalt > 1 THEN PUT CONTROL TRIM(STRING(iGG,'->>>>>9.99')).
  2158. END.
  2159. ELSE
  2160. DO:
  2161. PUT CONTROL '£££'.
  2162. END.
  2163. PUT CONTROL '£'
  2164. tVorschlag.LagerOrt
  2165. '£'
  2166. TRIM(STRING(tVorschlag.Rueckstand,'->>>>>>9'))
  2167. '£'
  2168. TRIM(STRING(tVorschlag.Bestellung,'->>>>>>9'))
  2169. CHR(10).
  2170. IF ArtBez.Bez2 <> '' OR
  2171. cAlk <> '' THEN
  2172. DO:
  2173. PUT CONTROL '££'
  2174. ArtBez.Bez2
  2175. '£'
  2176. cAlk CHR(10).
  2177. END.
  2178. DO WHILE TRUE:
  2179. IF (LAST-OF ( bArtst.Art_Grp ) AND lAgr ) OR
  2180. (LAST-OF ( bArtst.Prod_Grp ) AND lPgr ) OR
  2181. (LAST-OF ( bArtst.Wg_Grp ) AND lWgr ) THEN PUT CONTROL '£' CHR(10).
  2182. LEAVE.
  2183. END.
  2184. IF LAST-OF ( tVorschlag.Knr ) THEN PUT CONTROL '£' CHR(10).
  2185. END.
  2186. OUTPUT CLOSE.
  2187. RUN OPENEXCEL ( INPUT excelAppl,
  2188. INPUT Dokument,
  2189. INPUT '',
  2190. OUTPUT ok ).
  2191. IF NOT ok THEN
  2192. DO:
  2193. RUN FEHLER ( INPUT 1040 ).
  2194. RETURN NO-APPLY.
  2195. END.
  2196. Zelle = 'A1'.
  2197. excelAppl:Range(Zelle):SELECT.
  2198. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + Daten.
  2199. excelAppl:Application:RUN ( 'DateiEinfügen' ).
  2200. RUN EXCEL_KOPF ( INPUT excelAppl ).
  2201. Zelle = 'A1'.
  2202. excelAppl:Range(Zelle):SELECT.
  2203. excelAppl:Selection:ColumnWidth = 0.3.
  2204. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR.
  2205. SESSION:SET-WAIT-STATE('').
  2206. MESSAGE 'Soll der Bestellvorschlag als Bestellung erfasst werden? '
  2207. VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO UPDATE OK.
  2208. IF NOT OK THEN RETURN.
  2209. RUN BESTELLUNG_ERFASSEN.
  2210. END PROCEDURE.
  2211. /* _UIB-CODE-BLOCK-END */
  2212. &ANALYZE-RESUME
  2213. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL_KOPF bTableWin
  2214. PROCEDURE EXCEL_KOPF :
  2215. /*------------------------------------------------------------------------------*/
  2216. /* Purpose: */
  2217. /* Parameters: <none> */
  2218. /* Notes: */
  2219. /*------------------------------------------------------------------------------*/
  2220. DEFINE INPUT PARAMETER eh AS COMPONENT-HANDLE NO-UNDO.
  2221. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
  2222. FIND Steuer USE-INDEX Steuer-k1
  2223. WHERE Steuer.Firma = D1Firma NO-LOCK NO-ERROR.
  2224. Zelle = 'B1'.
  2225. eh:Range(Zelle):SELECT.
  2226. eh:SELECTION:VALUE = Steuer.Firma1.
  2227. Zelle = 'G1'.
  2228. eh:Range(Zelle):SELECT.
  2229. eh:SELECTION:VALUE = 'Bestellvorschlag'.
  2230. Zelle = 'T1'.
  2231. eh:Range(Zelle):SELECT.
  2232. eh:SELECTION:VALUE = 'Datum : ' + STRING(TODAY,'99.99.9999').
  2233. Zelle = 'B2'.
  2234. eh:Range(Zelle):SELECT.
  2235. eh:SELECTION:VALUE = Steuer.Ort.
  2236. Zelle = 'G2'.
  2237. eh:Range(Zelle):SELECT.
  2238. eh:SELECTION:VALUE = ''.
  2239. Zelle = 'T2'.
  2240. eh:Range(Zelle):SELECT.
  2241. eh:SELECTION:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS').
  2242. IF NOT tParam.lVerbrauch THEN
  2243. DO:
  2244. Zelle = 'O:Q'.
  2245. eh:COLUMNS(Zelle):Select.
  2246. eh:Selection:EntireColumn:HIDDEN = TRUE .
  2247. END.
  2248. END PROCEDURE.
  2249. /* _UIB-CODE-BLOCK-END */
  2250. &ANALYZE-RESUME
  2251. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject bTableWin
  2252. PROCEDURE initializeObject :
  2253. { incl/brwinitialize.i }
  2254. END PROCEDURE.
  2255. /* _UIB-CODE-BLOCK-END */
  2256. &ANALYZE-RESUME
  2257. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SOLLMINDEST bTableWin
  2258. PROCEDURE SOLLMINDEST :
  2259. /*------------------------------------------------------------------------------*/
  2260. /* Purpose: */
  2261. /* Notes: */
  2262. /*------------------------------------------------------------------------------*/
  2263. DEFINE VARIABLE iDiffTage AS INTEGER NO-UNDO.
  2264. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  2265. DEFINE BUFFER bBesko FOR Besko.
  2266. rBesko = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR.
  2267. IF rBesko = ? OR
  2268. rBesko = 0 THEN RETURN NO-APPLY.
  2269. FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
  2270. EMPTY TEMP-TABLE tParam.
  2271. CREATE tParam.
  2272. ASSIGN
  2273. tParam.iKnr = bBesko.Knr
  2274. tParam.iBesnr = bBesko.Besnr
  2275. tParam.dVon = TODAY - 30
  2276. tParam.dbis = TODAY
  2277. tParam.lOK = FALSE
  2278. tParam.iLager = bBesko.Lager.
  2279. RELEASE bBesko.
  2280. lRetVal = DYNAMIC-FUNCTION ('getBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
  2281. IF tParam.dAktion <> ? THEN
  2282. DO:
  2283. iDiffTage = TODAY - tParam.dAktion.
  2284. /* ASSIGN */
  2285. /* tParam.dvon = (IF tParam.dvon <> ? THEN tParam.dvon + iDiffTage ELSE TODAY - 30)*/
  2286. /* tParam.dBis = (IF tParam.dbis <> ? THEN tParam.dbis + iDiffTage ELSE TODAY - 30)*/
  2287. /* tParam.dLieferdatum = (IF tParam.dLieferdatum <> ? THEN tParam.dbis + iDiffTage ELSE TODAY - 30)*/
  2288. .
  2289. END.
  2290. RUN 'g-sollmindest-daten.w' ( INPUT-OUTPUT htParam ).
  2291. IF NOT tParam.lOK THEN RETURN.
  2292. lRetVal = DYNAMIC-FUNCTION ('setBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
  2293. RUN SOLLMINDEST_RECHNEN.
  2294. END PROCEDURE.
  2295. /* _UIB-CODE-BLOCK-END */
  2296. &ANALYZE-RESUME
  2297. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SOLLMINDEST_RECHNEN bTableWin
  2298. PROCEDURE SOLLMINDEST_RECHNEN :
  2299. /*------------------------------------------------------------------------------*/
  2300. /* Purpose: */
  2301. /* Notes: */
  2302. /*------------------------------------------------------------------------------*/
  2303. DEFINE VARIABLE iGGeb AS INTEGER NO-UNDO.
  2304. DEFINE VARIABLE iVGeb AS INTEGER NO-UNDO.
  2305. DEFINE VARIABLE iKGeb AS INTEGER NO-UNDO.
  2306. DEFINE VARIABLE lVGebinde AS LOGICAL NO-UNDO.
  2307. DEFINE VARIABLE iPos AS INTEGER NO-UNDO INIT 0.
  2308. DEFINE VARIABLE iRest AS INTEGER NO-UNDO.
  2309. DEFINE VARIABLE nProz AS DECIMAL NO-UNDO.
  2310. DEFINE BUFFER bSteuer FOR Steuer.
  2311. FIND FIRST tParam.
  2312. FIND bSteuer NO-LOCK
  2313. WHERE bSteuer.Firma = D1Firma.
  2314. lVGebinde = (IF bSteuer.St09 = 1 THEN TRUE ELSE FALSE ).
  2315. RELEASE bSteuer.
  2316. EMPTY TEMP-TABLE tBesze.
  2317. FOR EACH ArtLief NO-LOCK
  2318. WHERE ArtLief.Firma = D1Firma
  2319. AND ArtLief.Knr = tParam.iKnr,
  2320. FIRST Artst NO-LOCK
  2321. WHERE Artst.Firma = ArtLief.Firma
  2322. AND Artst.Artnr = ArtLief.Artnr
  2323. AND Artst.Inhalt = ArtLief.Inhalt
  2324. AND Artst.Jahr = ArtLief.Jahr
  2325. AND Artst.Ausverk < 8
  2326. AND Artst.Aktiv
  2327. AND Artst.Lager
  2328. AND NOT Artst.Leih_Art :
  2329. iPos = iPos + 5.
  2330. CREATE tBesze.
  2331. ASSIGN
  2332. tBesze.Firma = D1Firma
  2333. tBesze.Besnr = tParam.iBesnr
  2334. tBesze.Pos = iPos
  2335. tBesze.Artnr = Artst.Artnr
  2336. tBesze.Inhalt = Artst.Inhalt
  2337. tBesze.Jahr = Artst.Jahr
  2338. tBesze.GGeb_Cd = Artst.GGeb_Cd
  2339. tBesze.VGeb_Cd = Artst.VGeb_Cd
  2340. tBesze.KGeb_Cd = Artst.KGeb_Cd
  2341. tBesze.iBestand = Artst.Bestand
  2342. .
  2343. END.
  2344. FOR EACH tBesze:
  2345. FOR EACH Artbw NO-LOCK
  2346. WHERE Artbw.Firma = tBesze.Firma
  2347. AND Artbw.Artnr = tBesze.Artnr
  2348. AND Artbw.Inhalt = tBesze.Inhalt
  2349. AND Artbw.Jahr = tBesze.Jahr
  2350. AND Artbw.Datum >= tParam.dvon
  2351. AND Artbw.Datum <= tParam.dbis
  2352. AND Artbw.Tr_Art < 10
  2353. AND Artbw.Lag_Buch = TRUE.
  2354. tBesze.Verbrauch = tBesze.Verbrauch + Artbw.Menge.
  2355. RELEASE Artbw.
  2356. END.
  2357. END.
  2358. FOR EACH tBesze:
  2359. IF tBesze.Verbrauch < 1 THEN
  2360. DO:
  2361. tBesze.Verbrauch = 0.
  2362. tBesze.Eingang = 0.
  2363. NEXT.
  2364. END.
  2365. FIND GGebinde NO-LOCK
  2366. WHERE GGebinde.Firma = tBesze.Firma
  2367. AND GGebinde.Geb_Cd = tBesze.GGeb_Cd NO-ERROR.
  2368. iGGeb = (IF AVAILABLE GGebinde THEN GGebinde.Inhalt ELSE 0).
  2369. FIND VGebinde NO-LOCK
  2370. WHERE VGebinde.Firma = tBesze.Firma
  2371. AND VGebinde.Geb_Cd = tBesze.VGeb_Cd NO-ERROR.
  2372. iVGeb = (IF AVAILABLE VGebinde THEN VGebinde.Inhalt ELSE 0).
  2373. FIND KGebinde NO-LOCK
  2374. WHERE KGebinde.Firma = tBesze.Firma
  2375. AND KGebinde.Geb_Cd = tBesze.KGeb_Cd NO-ERROR.
  2376. iKGeb = (IF AVAILABLE KGebinde THEN KGebinde.Inhalt ELSE 0).
  2377. tBesze.KGeb_Me = tBesze.Verbrauch.
  2378. IF iVGeb > 0 THEN tBesze.VGeb_Me = INTEGER((tBesze.Verbrauch + (tBesze.Verbrauch MOD iVGeb)) / iVGeb).
  2379. IF iGGeb > 0 THEN
  2380. DO:
  2381. iRest = tBesze.VGeb_Me MOD iGGeb.
  2382. nProz = iRest * 100 / iGGeb.
  2383. tBesze.GGeb_Me = INTEGER((tBesze.VGeb_Me - (tBesze.VGeb_Me MOD iGGeb)) / iGGeb).
  2384. IF tParam.nAufrunden > 0 AND
  2385. nProz >= tParam.nAufrunden THEN tBesze.GGeb_Me + 1.
  2386. IF tBesze.GGeb_Me > 0 THEN tBesze.VGeb_Me = tBesze.GGeb_Me * iGGeb.
  2387. END.
  2388. ASSIGN
  2389. tBesze.KGeb_Me = (IF tBesze.VGeb_Me > 0 THEN tBesze.VGeb_Me * iVGeb ELSE tBesze.Verbrauch)
  2390. tBesze.MBest = tBesze.KGeb_Me
  2391. tBesze.MGeli = INTEGER((IF tParam.nMindProz = 0 THEN 0 ELSE tBesze.VGeb_Me * tParam.nMindProz / 100 * iVGeb)).
  2392. END.
  2393. FOR EACH tBesze:
  2394. FIND ArtLager
  2395. WHERE ArtLager.Firma = tBesze.Firma
  2396. AND ArtLager.Artnr = tBesze.Artnr
  2397. AND ArtLager.Inhalt = tBesze.Inhalt
  2398. AND ArtLager.Jahr = tBesze.Jahr
  2399. AND ArtLager.Lager = tBesze.Lager.
  2400. ASSIGN
  2401. ArtLager.Mind_Bestand = (IF lVGebinde THEN tBesze.MGeli / iVGeb ELSE tBesze.MGeli)
  2402. ArtLager.Soll_Bestand = (IF lVGebinde THEN tBesze.MBest / iVGeb ELSE tBesze.MBest).
  2403. END.
  2404. RELEASE Besko.
  2405. RELEASE Besze.
  2406. RELEASE GGebinde.
  2407. RELEASE VGebinde.
  2408. RELEASE KGebinde.
  2409. MESSAGE 'Berechnung beendet'
  2410. VIEW-AS ALERT-BOX INFORMATION.
  2411. END PROCEDURE.
  2412. /* _UIB-CODE-BLOCK-END */
  2413. &ANALYZE-RESUME
  2414. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE viewObject bTableWin
  2415. PROCEDURE viewObject :
  2416. /*------------------------------------------------------------------------------*/
  2417. /* Purpose: */
  2418. /* Notes: */
  2419. /*------------------------------------------------------------------------------*/
  2420. DEFINE VARIABLE iBesnr AS INTEGER NO-UNDO.
  2421. DEFINE VARIABLE cRowid AS CHARACTER NO-UNDO.
  2422. DEFINE BUFFER bBesko FOR Besko.
  2423. iStatus = DYNAMIC-FUNCTION ('getStatus':U IN hFenster ) NO-ERROR.
  2424. PUBLISH 'GET_CURRENT_BESKO' ( OUTPUT rBesko, OUTPUT iBesnr ).
  2425. RUN SUPER.
  2426. DYNAMIC-FUNCTION ('openQuery':U IN hDaten) NO-ERROR.
  2427. IF rBesko = ? OR
  2428. rBesko = 0 THEN RETURN.
  2429. FIND bBesko WHERE RECID(bBesko) = rBesko.
  2430. cRowid = STRING (ROWID(bBesko)).
  2431. DYNAMIC-FUNCTION ('fetchRowIdent':U IN hDaten, cRowid, ?) NO-ERROR.
  2432. END PROCEDURE.
  2433. /* _UIB-CODE-BLOCK-END */
  2434. &ANALYZE-RESUME
  2435. /* ************************ Function Implementations ***************** */
  2436. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setZeilenfarbe bTableWin
  2437. FUNCTION setZeilenfarbe RETURNS LOGICAL
  2438. ( ipFarbe AS INTEGER ) :
  2439. /*------------------------------------------------------------------------------*/
  2440. /* Purpose: */
  2441. /* Notes: */
  2442. /*------------------------------------------------------------------------------*/
  2443. { incl/brwsetzeilenfarbe.i }
  2444. END FUNCTION.
  2445. /* _UIB-CODE-BLOCK-END */
  2446. &ANALYZE-RESUME