| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909 |
- &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
- &ANALYZE-RESUME
- /* Connected Databases
- anadat PROGRESS
- */
- &Scoped-define WINDOW-NAME CURRENT-WINDOW
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS bTableWin
- /*------------------------------------------------------------------------
- File: adm2\src\browser.w
- Description: SmartDataBrowser Object
- Input Parameters:
- <none>
- Output Parameters:
- <none>
- ------------------------------------------------------------------------*/
- /* This .W file was created with the Progress AppBuilder. */
- /*----------------------------------------------------------------------*/
- /* Create an unnamed pool to store all the widgets created
- by this procedure. This is a good default which assures
- that this procedure's triggers and internal procedures
- will execute in this procedure's storage, and that proper
- cleanup will occur on deletion of the procedure. */
- CREATE WIDGET-POOL.
- /* *************************** Definitions ************************** */
- /* Parameters Definitions --- */
- /* Local Variable Definitions --- */
- DEFINE VARIABLE iStatus AS INTEGER NO-UNDO.
- DEFINE VARIABLE rBesko AS RECID NO-UNDO.
- DEFINE VARIABLE hBestellvorschlag AS HANDLE NO-UNDO.
- { incl/tmpbrowser.i }
- DEFINE TEMP-TABLE tKopf
- FIELD Zeile AS INTEGER
- FIELD Feld AS CHARACTER EXTENT 10.
-
- DEFINE TEMP-TABLE tParam
- FIELD iKnr AS INTEGER
- FIELD iBesnr AS INTEGER
- FIELD dLetztBest AS DATE FORMAT "99.99.9999"
- FIELD dBestandesdatum AS DATE FORMAT "99.99.9999"
- FIELD dReserviertdatum AS DATE FORMAT "99.99.9999"
- FIELD iIntervall AS INTEGER
- FIELD iLieferfrist AS INTEGER
- FIELD lBewegungen AS LOGICAL
- FIELD lUnter AS LOGICAL
- FIELD lVerbrauch AS LOGICAL
- FIELD dVon AS DATE FORMAT "99.99.9999"
- FIELD dBis AS DATE
- FIELD nMindProz AS DECIMAL
- FIELD nAufrunden AS DECIMAL
- FIELD dAktion AS DATE
- FIELD lOK AS LOGICAL
- FIELD iLager AS INTEGER
- .
- DEFINE VARIABLE htParam AS HANDLE NO-UNDO.
- htParam = TEMP-TABLE tParam:DEFAULT-BUFFER-HANDLE.
- DEFINE TEMP-TABLE tAdresse LIKE Adresse
- .
- DEFINE TEMP-TABLE tBesko LIKE Besko
- FIELD lOK AS LOGICAL.
- .
- DEFINE VARIABLE htBesko AS HANDLE NO-UNDO.
- htBesko = TEMP-TABLE tBesko:DEFAULT-BUFFER-HANDLE.
- DEFINE TEMP-TABLE tBesze LIKE Besze
- FIELD iBestellen AS INTEGER
- FIELD iBestand AS INTEGER
- FIELD iBestellt AS INTEGER
- FIELD iEingang AS INTEGER
- FIELD iMindest AS INTEGER
- FIELD iStatus AS INTEGER
- .
- DEFINE VARIABLE htBesze AS HANDLE NO-UNDO.
- htBesze = TEMP-TABLE tBesze:DEFAULT-BUFFER-HANDLE.
- { incl/ttbestellvorschlag.i }
- {src/adm2/widgetprto.i}
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
- /* ******************** Preprocessor Definitions ******************** */
- &Scoped-define PROCEDURE-TYPE SmartDataBrowser
- &Scoped-define DB-AWARE no
- &Scoped-define ADM-SUPPORTED-LINKS TableIO-Target,Data-Target,Update-Source
- /* Include file with RowObject temp-table definition */
- &Scoped-define DATA-FIELD-DEFS "d-besko.i"
- /* Name of designated FRAME-NAME and/or first browse and/or first query */
- &Scoped-define FRAME-NAME F-Main
- &Scoped-define BROWSE-NAME br_table
- /* Internal Tables (found by Frame, Query & Browse Queries) */
- &Scoped-define INTERNAL-TABLES rowObject
- /* Definitions for BROWSE br_table */
- &Scoped-define FIELDS-IN-QUERY-br_table rowObject.Besnr rowObject.Knr ~
- rowObject.Lieferant rowObject.Best_Datum rowObject.Lief_Datum rowObject.FRW ~
- rowObject.Best_Tot
- &Scoped-define ENABLED-FIELDS-IN-QUERY-br_table
- &Scoped-define QUERY-STRING-br_table FOR EACH rowObject NO-LOCK INDEXED-REPOSITION
- &Scoped-define OPEN-QUERY-br_table OPEN QUERY br_table FOR EACH rowObject NO-LOCK INDEXED-REPOSITION.
- &Scoped-define TABLES-IN-QUERY-br_table rowObject
- &Scoped-define FIRST-TABLE-IN-QUERY-br_table rowObject
- /* Definitions for FRAME F-Main */
- /* Standard List Definitions */
- &Scoped-Define ENABLED-OBJECTS RECT-1 br_table Btn_Excel Btn_Weiter ~
- SLIDER-1
- &Scoped-Define DISPLAYED-OBJECTS SLIDER-1
- /* Custom List Definitions */
- /* List-1,List-2,List-3,List-4,List-5,List-6 */
- /* _UIB-PREPROCESSOR-BLOCK-END */
- &ANALYZE-RESUME
- /* ************************ Function Prototypes ********************** */
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setZeilenfarbe bTableWin
- FUNCTION setZeilenfarbe RETURNS LOGICAL
- ( ipFarbe AS INTEGER ) FORWARD.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- /* *********************** Control Definitions ********************** */
- /* Menu Definitions */
- DEFINE MENU POPUP-MENU-br_table
- MENU-ITEM X_BESTELLVORSCHLAG LABEL "Bestellvorschlag"
- MENU-ITEM X_SOLLMINDEST LABEL "Soll und Mindestbestände".
- /* Definitions of the field level widgets */
- DEFINE BUTTON Btn_Excel
- LABEL "Excel"
- SIZE 15 BY 1.
- DEFINE BUTTON Btn_Weiter
- LABEL "Weiter"
- SIZE 15 BY 1.
- DEFINE RECTANGLE RECT-1
- EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
- SIZE 154 BY 7.14.
- DEFINE VARIABLE SLIDER-1 AS INTEGER INITIAL 0
- VIEW-AS SLIDER MIN-VALUE 0 MAX-VALUE 100 HORIZONTAL
- TIC-MARKS NONE
- SIZE 25 BY 1 NO-UNDO.
- /* Query definitions */
- &ANALYZE-SUSPEND
- DEFINE TEMP-TABLE RowObject NO-UNDO
- {{&DATA-FIELD-DEFS}}
- {src/adm2/robjflds.i}.
- DEFINE QUERY br_table FOR
- rowObject SCROLLING.
- &ANALYZE-RESUME
- /* Browse definitions */
- DEFINE BROWSE br_table
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS br_table bTableWin _STRUCTURED
- QUERY br_table NO-LOCK DISPLAY
- rowObject.Besnr FORMAT "999999":U WIDTH 7
- rowObject.Knr FORMAT "999999":U WIDTH 7
- rowObject.Lieferant FORMAT "x(80)":U
- rowObject.Best_Datum COLUMN-LABEL "Best.--Datum" FORMAT "99.99.9999":U
- WIDTH 12
- rowObject.Lief_Datum COLUMN-LABEL "Lief.-Datum" FORMAT "99.99.9999":U
- WIDTH 12
- rowObject.FRW FORMAT "x(03)":U WIDTH 6
- rowObject.Best_Tot COLUMN-LABEL "Total" FORMAT "zzz,zzz,zz9.99-":U
- WIDTH 16
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- WITH NO-ASSIGN NO-AUTO-VALIDATE NO-ROW-MARKERS SEPARATORS SIZE 152 BY 6.67.
- /* ************************ Frame Definitions *********************** */
- DEFINE FRAME F-Main
- br_table AT ROW 1.48 COL 3 WIDGET-ID 200
- Btn_Excel AT ROW 1.52 COL 165 WIDGET-ID 4
- Btn_Weiter AT ROW 5.52 COL 165 WIDGET-ID 6
- SLIDER-1 AT ROW 7 COL 162 NO-LABEL WIDGET-ID 8 NO-TAB-STOP
- RECT-1 AT ROW 1.24 COL 2 WIDGET-ID 2
- WITH 1 DOWN KEEP-TAB-ORDER OVERLAY
- SIDE-LABELS NO-UNDERLINE THREE-D
- AT COL 1 ROW 1 SCROLLABLE WIDGET-ID 100.
- /* *********************** Procedure Settings ************************ */
- &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
- /* Settings for THIS-PROCEDURE
- Type: SmartDataBrowser
- Data Source: "d-besko.w"
- Allow: Basic,Browse
- Frames: 1
- Add Fields to: Neither
- Other Settings: PERSISTENT-ONLY COMPILE
- */
- /* This procedure should always be RUN PERSISTENT. Report the error, */
- /* then cleanup and return. */
- IF NOT THIS-PROCEDURE:PERSISTENT THEN
- DO:
- MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
- VIEW-AS ALERT-BOX ERROR BUTTONS OK.
- RETURN.
- END.
- &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
- /* ************************* Create Window ************************** */
- &ANALYZE-SUSPEND _CREATE-WINDOW
- /* DESIGN Window definition (used by the UIB)
- CREATE WINDOW bTableWin ASSIGN
- HEIGHT = 7.62
- WIDTH = 190.
- /* END WINDOW DEFINITION */
- */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB bTableWin
- /* ************************* Included-Libraries *********************** */
- {src/adm2/browser.i}
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- /* *********** Runtime Attributes and AppBuilder Settings *********** */
- &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
- /* SETTINGS FOR WINDOW bTableWin
- NOT-VISIBLE,,RUN-PERSISTENT */
- /* SETTINGS FOR FRAME F-Main
- NOT-VISIBLE FRAME-NAME Size-to-Fit */
- /* BROWSE-TAB br_table RECT-1 F-Main */
- ASSIGN
- FRAME F-Main:SCROLLABLE = FALSE
- FRAME F-Main:HIDDEN = TRUE.
- ASSIGN
- br_table:POPUP-MENU IN FRAME F-Main = MENU POPUP-MENU-br_table:HANDLE.
- ASSIGN
- SLIDER-1:HIDDEN IN FRAME F-Main = TRUE.
- /* _RUN-TIME-ATTRIBUTES-END */
- &ANALYZE-RESUME
- /* Setting information for Queries and Browse Widgets fields */
- &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE br_table
- /* Query rebuild information for BROWSE br_table
- _TblList = "rowObject"
- _Options = "NO-LOCK INDEXED-REPOSITION"
- _FldNameList[1] > _<SDO>.rowObject.Besnr
- "rowObject.Besnr" ? ? "integer" ? ? ? ? ? ? no "?" no no "7" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
- _FldNameList[2] > _<SDO>.rowObject.Knr
- "rowObject.Knr" ? ? "integer" ? ? ? ? ? ? no "?" no no "7" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
- _FldNameList[3] > _<SDO>.rowObject.Lieferant
- "rowObject.Lieferant" ? ? "character" ? ? ? ? ? ? no "?" no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
- _FldNameList[4] > _<SDO>.rowObject.Best_Datum
- "rowObject.Best_Datum" "Best.--Datum" ? "date" ? ? ? ? ? ? no "?" no no "12" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
- _FldNameList[5] > _<SDO>.rowObject.Lief_Datum
- "rowObject.Lief_Datum" "Lief.-Datum" ? "date" ? ? ? ? ? ? no "?" no no "12" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
- _FldNameList[6] > _<SDO>.rowObject.FRW
- "rowObject.FRW" ? ? "character" ? ? ? ? ? ? no "?" no no "6" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
- _FldNameList[7] > _<SDO>.rowObject.Best_Tot
- "rowObject.Best_Tot" "Total" ? "decimal" ? ? ? ? ? ? no ? no no "16" yes no no "U" "" "" "" "" "" "" 0 no 0 no no
- _Query is NOT OPENED
- */ /* BROWSE br_table */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
- /* Query rebuild information for FRAME F-Main
- _Options = "NO-LOCK"
- _Query is NOT OPENED
- */ /* FRAME F-Main */
- &ANALYZE-RESUME
-
- /* ************************ Control Triggers ************************ */
- &Scoped-define BROWSE-NAME br_table
- &Scoped-define SELF-NAME br_table
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON CTRL-END OF br_table IN FRAME F-Main
- DO:
- APPLY "END":U TO BROWSE {&BROWSE-NAME}.
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON CTRL-HOME OF br_table IN FRAME F-Main
- DO:
- APPLY "HOME":U TO BROWSE {&BROWSE-NAME}.
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON DEFAULT-ACTION OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brsdefault.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON END OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brsend.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON HOME OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brshome.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON LEFT-MOUSE-CLICK OF br_table IN FRAME F-Main
- DO:
- APPLY 'ENTRY' TO {&BROWSE-NAME}.
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON LEFT-MOUSE-DBLCLICK OF br_table IN FRAME F-Main
- DO:
- IF NOT VALID-HANDLE( hFenster ) THEN RETURN NO-APPLY.
- RUN TOOLBAR IN hFenster ( INPUT 'UPDATE' ).
- RETURN NO-APPLY.
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON OFF-END OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brsoffnd.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON OFF-HOME OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brsoffhm.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON RETURN OF br_table IN FRAME F-Main
- DO:
- RUN TOOLBAR IN hFenster ( 'UPDATE' ) NO-ERROR.
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON ROW-ENTRY OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brsentry.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON ROW-LEAVE OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brsleave.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON SCROLL-NOTIFY OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brsscrol.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON START-SEARCH OF br_table IN FRAME F-Main
- DO:
- { incl/brwstartsearch.i }
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL br_table bTableWin
- ON VALUE-CHANGED OF br_table IN FRAME F-Main
- DO:
- {src/adm2/brschnge.i}
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &Scoped-define SELF-NAME Btn_Excel
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Excel bTableWin
- ON CHOOSE OF Btn_Excel IN FRAME F-Main /* Excel */
- DO:
- RUN DRUCKEN.
- APPLY 'ENTRY' TO BROWSE {&BROWSE-NAME}.
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &Scoped-define SELF-NAME Btn_Weiter
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Weiter bTableWin
- ON CHOOSE OF Btn_Weiter IN FRAME F-Main /* Weiter */
- DO:
- DEFINE VARIABLE lOK AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE dBuchdatum AS DATE NO-UNDO INIT TODAY.
- DEFINE VARIABLE nTotale AS DECIMAL NO-UNDO EXTENT 10.
- DEFINE VARIABLE nTotal AS DECIMAL NO-UNDO.
- DEFINE VARIABLE lKomplett AS LOGICAL NO-UNDO.
- DEFINE VARIABLE lEingelagert AS LOGICAL NO-UNDO.
- DEFINE VARIABLE iEingang AS INTEGER NO-UNDO.
- IF DYNAMIC-FUNCTION('getMutFlag':U, Progname ) THEN
- DO:
- APPLY 'U1'.
- RETURN NO-APPLY.
- END.
- DEFINE VARIABLE iRecid AS RECID NO-UNDO.
-
- iRecid = DYNAMIC-FUNCTION ('getCurrentRecid' IN hDaten) NO-ERROR.
- IF iRecid = ? OR
- iRecid = 0 THEN RETURN NO-APPLY.
- FIND Besko NO-LOCK WHERE RECID(Besko) = iRecid.
- EMPTY TEMP-TABLE tBesko.
- CREATE tBesko.
- BUFFER-COPY Besko TO tBesko.
- RELEASE Besko.
-
- IF tBesko.Best_Sta = 2 THEN
- DO:
- lKomplett = TRUE.
- lEingelagert = TRUE.
- iEingang = 0.
- FOR EACH BesEing NO-LOCK OF tBesko:
- IF BesEing.lVerfall AND
- BesEing.Verfall = ? THEN lKomplett = FALSE.
- IF BesEing.lLotnr AND
- BesEing.Lotnr = '' THEN lKomplett = FALSE.
- IF NOT BesEing.lEingelagert THEN lEingelagert = FALSE.
- iEingang = iEingang + BesEing.Eingang.
- END.
- IF NOT lKomplett THEN
- DO:
- DYNAMIC-FUNCTION ('fehlerMeldung':U, 1115, '' ) NO-ERROR.
- RETURN NO-APPLY.
- END.
- IF iEingang = 0 THEN
- DO:
- DYNAMIC-FUNCTION ('fehlerMeldung':U, 1123, '' ) NO-ERROR.
- RETURN NO-APPLY.
- END.
-
- lOK = TRUE.
- FOR EACH Besze NO-LOCK OF tBesko:
- IF Besze.Artnr = 0 THEN NEXT.
- IF Besze.MBest = 0 THEN NEXT.
- IF ABS(Besze.Eingang) < ABS(Besze.MBest) THEN
- DO:
- lOK = FALSE.
- LEAVE.
- END.
- END.
- IF NOT lOK THEN
- DO:
- lOK = DYNAMIC-FUNCTION ('antwort_nein':U, 1114 ) NO-ERROR.
- IF lOK = ? OR
- NOT lOK THEN RETURN NO-APPLY.
- END.
-
- lOk = TRUE.
- IF NOT lEingelagert THEN
- DO:
- lOk = DYNAMIC-FUNCTION ('antwort_nein':U, 1116 ) NO-ERROR.
- IF lOk = ? OR
- NOT lOk THEN RETURN NO-APPLY.
- END.
-
- lOK = FALSE.
- MESSAGE "Achtung, die Eingangsmengen werden als Lagereingang verbucht" SKIP
- "Unterlieferungen werden ausgeglichen "
- VIEW-AS ALERT-BOX INFORMATION BUTTONS OK-CANCEL
- UPDATE lOk.
- IF lOK = ? OR
- NOT lOk THEN RETURN NO-APPLY.
- DO WHILE TRUE:
- dBuchDatum = tBesko.Lief_Datum.
- RUN g-einlesen-datum.w ( 'Eingabe Bestelleingangsdatum', 'Eingangsdatum', INPUT-OUTPUT dBuchdatum ) NO-ERROR.
- IF dBuchdatum = ? THEN RETURN NO-APPLY.
- IF dBuchdatum < (TODAY - 60) OR
- dBuchdatum > (TODAY + 30) THEN NEXT.
- LEAVE.
- END.
-
- tBesko.Lief_Datum = dBuchdatum.
- REPEAT TRANSACTION ON ERROR UNDO, RETURN:
- FIND Besko WHERE RECID(Besko) = iRecid.
- Besko.Lief_Datum = dBuchdatum.
- RELEASE Besko.
- LEAVE.
- END.
- END.
- IF tBesko.Best_Sta = 3 THEN
- DO:
- lOK = TRUE.
- FOR EACH Besze NO-LOCK OF tBesko:
- IF Besze.Artnr = 0 THEN NEXT.
- IF Besze.Preis > 0 THEN NEXT.
- MESSAGE 'es gibt noch Artikel ohne Preis' VIEW-AS ALERT-BOX.
- LEAVE.
- END.
- DO WHILE TRUE:
- IF tBesko.Buch_Datum = ? THEN dBuchDatum = TODAY.
- ELSE dBuchdatum = tBesko.Buch_Datum.
- RUN g-einlesen-datum.w ( 'Eingabe Bestelleingangsdatum', 'Eingangsdatum', INPUT-OUTPUT dBuchdatum ) NO-ERROR.
- IF dBuchdatum = ? THEN RETURN NO-APPLY.
- IF dBuchdatum < (TODAY - 30) OR
- dBuchdatum > (TODAY + 30) THEN NEXT.
- LEAVE.
- END.
-
- tBesko.Buch_Datum = dBuchdatum.
- REPEAT TRANSACTION ON ERROR UNDO, RETURN:
- FIND Besko WHERE RECID(Besko) = iRecid.
- Besko.Buch_Datum = dBuchdatum.
- RELEASE Besko.
- LEAVE.
- END.
-
- tBesko.lOK = FALSE.
- RUN g-bestellung-verbuchen.w ( INPUT-OUTPUT htBesko ).
- FIND FIRST tBesko.
-
- IF tBesko.lOK THEN
- DO:
- tBesko.Best_Sta = 4.
- nTotal = DYNAMIC-FUNCTION ('calculateBeskoTotal':U, D1Firma, tBesko.Besnr, OUTPUT nTotale ).
- REPEAT TRANSACTION ON ERROR UNDO, RETURN:
- FIND Besko WHERE RECID(Besko) = iRecid.
- FOR EACH Besze OF Besko:
- Besze.Best_Sta = tBesko.Best_Sta.
- RELEASE Besze.
- END.
- ASSIGN
- Besko.Best_Tot = tBesko.Best_Tot
- Besko.Best_Sta = tBesko.Best_Sta.
- RELEASE Besko.
- LEAVE.
- END.
- END.
-
- DYNAMIC-FUNCTION ('openQuery':U IN hDaten ) NO-ERROR.
- APPLY 'U1'.
- RETURN NO-APPLY.
- END.
- FIND FIRST tBesko.
- DYNAMIC-FUNCTION ('changeBestellStatus':U, INPUT-OUTPUT htBesko ) NO-ERROR.
- FIND FIRST tBesko.
- nTotal = DYNAMIC-FUNCTION ('calculateBeskoTotal':U, D1Firma, tBesko.Besnr, OUTPUT nTotale ).
-
- DYNAMIC-FUNCTION ('openQuery':U IN hDaten ) NO-ERROR.
- APPLY 'U1'.
- END.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &UNDEFINE SELF-NAME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK bTableWin
- /* *************************** Main Block *************************** */
- SUBSCRIBE TO 'BESTELLUNG_ERFASST' ANYWHERE.
- { incl/brwmainblock.i }
- { incl/brwinternproc.i }
- &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
- RUN initializeObject.
- &ENDIF
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- /* ********************** Internal Procedures *********************** */
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLUNG_ERFASSEN bTableWin
- PROCEDURE BESTELLUNG_ERFASSEN :
- /* ------------------------------------------------------------------------------ */
- /* Purpose: */
- /* Notes: */
- /* ------------------------------------------------------------------------------ */
-
- DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
- DEFINE VARIABLE iRecid AS RECID NO-UNDO.
- DEFINE VARIABLE nTotale AS DECIMAL NO-UNDO EXTENT 10.
- DEFINE VARIABLE iBesnr AS INTEGER NO-UNDO.
- DEFINE VARIABLE rBesko AS INTEGER NO-UNDO.
-
- DEFINE BUFFER bBesko FOR Besko.
- DEFINE BUFFER bArtst FOR Artst.
-
- FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
- iBesnr = bBesko.Besnr.
- FIND FIRST tParam.
-
- FIND FIRST BesGebKo NO-LOCK
- WHERE BesGebKo.Firma = bBesko.Firma
- AND BesGebKo.Besnr = bBesko.Besnr NO-ERROR.
- IF NOT AVAILABLE BesGebKo THEN DYNAMIC-FUNCTION ('createBesGebKo':U, D1Firma, bBesko.Besnr).
- FOR EACH tVorschlag
- WHERE tVorschlag.Bestellung > 0,
-
- FIRST bArtst NO-LOCK USE-INDEX Artst-k1
- WHERE bArtst.Firma = D1Firma
- AND bArtst.Artnr = tVorschlag.Artnr
- AND bArtst.Inhalt = tVorschlag.Inhalt
- AND bArtst.Jahr = tVorschlag.Jahr
- BY tVorschlag.Knr
- BY bArtst.Wg_Grp
- BY bArtst.Prod_Grp
- BY bArtst.Art_Grp
- BY bArtst.Suchbe
- BY bArtst.Artnr
- BY bArtst.Inhalt
- BY bArtst.Jahr :
-
- EMPTY TEMP-TABLE tBesze.
- CREATE tBesze.
- BUFFER-COPY tVorschlag TO tBesze.
- ASSIGN
- tBesze.Firma = D1Firma
- tBesze.Besnr = iBesnr
- tBesze.Pos = 0
- tBesze.Frw = bBesko.Frw
- tBesze.Kurs = bBesko.Kurs
- tBesze.Faktor = bBesko.Faktor
- tBesze.Spesen = bBesko.Spesen
- tBesze.Rabatt = bBesko.Rabatt
- tBesze.ZusRab = bBesko.ZusRab
- tBesze.Best_Sta = bBesko.Best_Sta
- tBesze.Lager = bBesko.Lager
- tBesze.VGeb_Me = tVorschlag.VGeb_Me
- tBesze.KGeb_Me = tVorschlag.KGeb_Me
- tBesze.MBest = tVorschlag.Bestellung
- tBesze.iStatus = 0
- .
- iRetVal = DYNAMIC-FUNCTION ( 'fillBesze':U, INPUT-OUTPUT htBesze ) NO-ERROR.
- IF iRetVal > 0 THEN
- DO:
- DYNAMIC-FUNCTION('fehlerMeldung':U, iRetVal, '' ) NO-ERROR.
- NEXT.
- END.
-
- FIND FIRST tBesze.
- ASSIGN
- tBesze.KGeb_Me = tVorschlag.Bestellung
- tBesze.MBest = tVorschlag.Bestellung
- tBesze.MRuek = tVorschlag.Bestellung
- tBesze.Rueckstand = tVorschlag.Rueckstand
- .
-
- CREATE Besze.
- BUFFER-COPY tBesze TO Besze.
-
- iRecid = RECID(Besze).
- RELEASE Besze.
-
- DYNAMIC-FUNCTION ('calculateBeszeNetto':U, '', 0, 0, iRecid ).
- END.
- DYNAMIC-FUNCTION ('calculateBeskoTotal':U, Firma, iBesnr, OUTPUT nTotale ) NO-ERROR.
- /* OUTPUT TO 'C:\Entwicklung\Temp\Besze.csv' NO-MAP NO-CONVERT. */
- /* FOR EACH Besze WHERE Besze.Firma = D1Firma AND Besze.Besnr = iBesnr:*/
- /* EXPORT DELIMITER ';' Besze. */
- /* END. */
- /* OUTPUT CLOSE. */
-
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLUNG_ERFASST bTableWin
- PROCEDURE BESTELLUNG_ERFASST :
- /* ------------------------------------------------------------------------------ */
- /* Purpose: */
- /* Notes: */
- /* ------------------------------------------------------------------------------ */
-
- DEFINE INPUT PARAMETER ipiBesnr AS INTEGER NO-UNDO.
- DEFINE VARIABLE nTotale AS DECIMAL NO-UNDO EXTENT 10.
- DEFINE VARIABLE cRowid AS CHARACTER NO-UNDO.
-
- DEFINE BUFFER bBesko FOR Besko.
-
- FIND bBesko NO-LOCK
- WHERE bBesko.Firma = D1Firma
- AND bBesko.Besnr = ipiBesnr NO-ERROR.
- IF NOT AVAILABLE bBesko THEN RETURN.
- cRowid = STRING(ROWID(bBesko)).
- DYNAMIC-FUNCTION ('calculateBeskoTotal':U, bBesko.Firma, bBesko.Besnr, OUTPUT nTotale ) NO-ERROR.
-
- DYNAMIC-FUNCTION ('openQuery':U IN hDaten) NO-ERROR.
- DYNAMIC-FUNCTION ('fetchRowIdent':U IN hDaten, cRowid, ?) NO-ERROR.
- DYNAMIC-FUNCTION ('refreshRowident':U IN hDaten, cRowid) NO-ERROR.
- APPLY 'U1'.
- RETURN NO-APPLY.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLVORSCHLAG bTableWin
- PROCEDURE BESTELLVORSCHLAG :
- /* ------------------------------------------------------------------------------ */
- /* Purpose: */
- /* Notes: */
- /* ------------------------------------------------------------------------------ */
- DEFINE VARIABLE dLetzteBestellung AS DATE NO-UNDO.
- DEFINE VARIABLE dBestandesdatum AS DATE NO-UNDO.
- DEFINE VARIABLE dReserviertdatum AS DATE NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE iDiffTage AS INTEGER NO-UNDO.
- DEFINE BUFFER bBesko FOR Besko.
- rBesko = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR.
- IF rBesko = ? OR
- rBesko = 0 THEN RETURN NO-APPLY.
-
- FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
-
- FIND Adresse NO-LOCK
- WHERE Adresse.Firma = AdFirma
- AND Adresse.Knr = bBesko.Knr.
- FIND Liefst NO-LOCK
- WHERE Liefst.Firma = D1Firma
- AND Liefst.Knr = bBesko.Knr.
-
- EMPTY TEMP-TABLE tParam.
-
- CREATE tParam.
- ASSIGN
- tParam.iKnr = bBesko.Knr
- tParam.iBesnr = bBesko.Besnr
- tParam.lOK = FALSE
- tParam.iLager = bBesko.Lager
- .
-
- lRetVal = DYNAMIC-FUNCTION ('getBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
-
- FIND FIRST tParam.
- ASSIGN
- tParam.iLager = bBesko.Lager
- iDiffTage = TODAY - tParam.dAktion
- .
- FIND LAST Besko NO-LOCK USE-INDEX Besko-k3
- WHERE Besko.Firma = bBesko.Firma
- AND Besko.Knr = bBesko.Knr
- AND Besko.Best_Datum < TODAY NO-ERROR.
- ASSIGN
- dLetzteBestellung = (IF AVAILABLE Besko THEN Besko.Best_Datum ELSE tParam.dLetztBest)
- dBestandesdatum = tParam.dBestandesdatum
- dReserviertdatum = tParam.dReserviertdatum.
- IF dLetzteBestellung = ? THEN dLetzteBestellung = TODAY - Liefst.Bestell_Intervall - Liefst.Lieferzeit.
- IF dBestandesdatum = ? THEN dBestandesdatum = TODAY + Liefst.Bestell_Intervall + Liefst.Lieferzeit.
- IF dReserviertdatum = ? THEN dReserviertdatum = dBestandesdatum + Liefst.Bestell_Intervall + Liefst.Lieferzeit.
- ASSIGN
- tParam.dLetztBest = dLetzteBestellung
- tParam.dVon = tParam.dVon + iDiffTage
- tParam.dBis = tParam.dBis + iDiffTage
- tParam.iIntervall = (IF tParam.iIntervall = 0 THEN Liefst.Bestell_Intervall ELSE tParam.iIntervall )
- tParam.iLieferfrist = (IF tParam.iLieferfrist = 0 THEN Liefst.Lieferzeit ELSE tParam.iLieferfrist)
- tParam.dBestandesdatum = dBestandesdatum + iDiffTage
- tParam.dReserviertdatum = dReserviertDatum + iDiffTage
- .
- IF dReserviertDatum = ? THEN dReserviertDatum = dBestandesdatum.
- RELEASE bBesko.
- RUN 'g-bestellvorschlag-daten.w' ( INPUT-OUTPUT htParam ).
- IF NOT tParam.lOK THEN RETURN.
- DYNAMIC-FUNCTION ('setBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
-
- RUN BESTELLVORSCHLAG_ERSTELLEN.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BESTELLVORSCHLAG_ERSTELLEN bTableWin
- PROCEDURE BESTELLVORSCHLAG_ERSTELLEN :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Parameters: <none> */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE VARIABLE nEffBestand AS INTEGER NO-UNDO.
- DEFINE VARIABLE iTotAnz AS INTEGER NO-UNDO.
- DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO.
- DEFINE VARIABLE lVGebinde AS LOGICAL NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
- DEFINE VARIABLE iLetztAufnr AS INTEGER NO-UNDO.
- DEFINE VARIABLE nDatum AS DATE NO-UNDO.
- DEFINE VARIABLE dRueckDatum AS DATE NO-UNDO.
- DEFINE VARIABLE iRest AS INTEGER NO-UNDO.
- DEFINE VARIABLE JJ AS INTEGER NO-UNDO.
- DEFINE VARIABLE MM AS INTEGER NO-UNDO.
- DEFINE VARIABLE TT AS INTEGER NO-UNDO.
- DEFINE VARIABLE iGGeb_Me AS INTEGER NO-UNDO.
- DEFINE VARIABLE iVGeb_Me AS INTEGER NO-UNDO.
- DEFINE VARIABLE iKGeb_Me AS INTEGER NO-UNDO.
- DEFINE VARIABLE lMinMaxMenge AS LOGICAL NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE iFuellMenge AS INTEGER NO-UNDO.
-
- DEFINE VARIABLE dvonVorJahr AS DATE NO-UNDO.
- DEFINE VARIABLE iPerioden AS INTEGER NO-UNDO.
- DEFINE VARIABLE dVorAktiv AS DATE NO-UNDO. /* Vorjahreshalbjaahr AKtive Periode (Winter/Sommer) */
- DEFINE VARIABLE dVorVerg AS DATE NO-UNDO. /* Abgelaufene Periode (Winter/Sommer) */
- DEFINE VARIABLE dVorEnd AS DATE NO-UNDO.
- DEFINE VARIABLE dVonDatum AS DATE NO-UNDO.
- DEFINE BUFFER bArtLief FOR ArtLief .
- DEFINE BUFFER bArtst FOR Artst .
- DEFINE BUFFER bArtLager FOR ArtLager.
- DEFINE BUFFER bBesko FOR Besko .
- DEFINE BUFFER bBesze FOR Besze .
-
- FIND Steuer NO-LOCK
- WHERE Steuer.Firma = D1Firma.
- lVGebinde = (IF Steuer.St09 = 1 THEN TRUE ELSE FALSE).
- RELEASE Steuer.
-
- FIND SteuNr NO-LOCK
- WHERE SteuNr.Firma = D1Firma.
- iLetztAufnr = SteuNr.Nr1 - 1000.
- FIND FIRST tParam.
- EMPTY TEMP-TABLE tVorschlag.
-
- FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
- dvonVorjahr = bBesko.Best_Datum - 365.
- iPerioden = tParam.iIntervall + tParam.iLieferfrist.
-
- IF MONTH(bBesko.Best_Datum) >= 10 OR
- MONTH(bBesko.Best_Datum) <= 03 THEN
- DO:
- IF MONTH(bBesko.Best_Datum) >= 10 THEN JJ = YEAR(bBesko.Best_Datum) - 1.
- ELSE JJ = YEAR(bBesko.Best_Datum) - 2.
- dVorAktiv = DATE(10,01,JJ).
- dVorVerg = DATE(04,01,JJ + 1).
- dVorEnd = DATE(09,30,JJ + 1).
- END.
- ELSE
- DO:
- JJ = YEAR(bBesko.Best_Datum) - 1.
- dVorAktiv = DATE(04,01,JJ).
- dVorVerg = DATE(10,01,JJ).
- dVorEnd = DATE(03,31,JJ + 1).
- END.
-
- dvonDatum = (IF dvonVorjahr < dvorAktiv THEN dvonVorjahr ELSE dvorAktiv).
-
- IF tParam.lBewegungen THEN
- DO:
- IF tParam.dVon = ? THEN tParam.dVon = TODAY - 90.
- IF tParam.dBis = ? THEN tParam.dBis = TODAY.
- END.
-
- SESSION:SET-WAIT-STATE ('GENERAL').
- iTotAnz = 0.
- FOR EACH bArtLief NO-LOCK
- WHERE bArtLief.Firma = D1Firma
- AND bArtLief.Knr = tParam.iKnr:
- iTotAnz = iTotAnz + 1.
- END.
-
- SLIDER-1:HIDDEN IN FRAME {&FRAME-NAME} = FALSE.
- iAnzahl = 0.
- FOR EACH bArtLief NO-LOCK
- WHERE bArtLief.Firma = D1Firma
- AND bArtLief.Knr = tParam.iKnr
- AND bArtLief.Haupt = TRUE,
-
- FIRST bArtst NO-LOCK
- WHERE bArtst.Firma = bArtLief.Firma
- AND bArtst.Artnr = bArtLief.Artnr
- AND bArtst.Inhalt = bArtLief.Inhalt
- AND bArtst.Jahr = bArtLief.Jahr
- AND bArtst.Aktiv = TRUE
- AND bArtst.Ausverk < 9
- AND NOT bArtst.Leih_Art,
-
- FIRST bArtLager NO-LOCK
- WHERE bArtLager.Firma = bArtLief.Firma
- AND bArtLager.Artnr = bArtLief.Artnr
- AND bArtLager.Inhalt = bArtLief.Inhalt
- AND bArtLager.Jahr = bArtLief.Jahr
- AND bArtLager.Lager = bBesko.Lager,
-
- FIRST ArtBez NO-LOCK
- WHERE ArtBez.Firma = bArtLief.Firma
- AND ArtBez.Artnr = bArtLief.Artnr
- AND ArtBez.Inhalt = bArtLief.Inhalt
- AND ArtBez.Jahr = bArtLief.Jahr
- :
- /* ------------------------------------------------------------------ */
- /* Letzter Eingang des Artikels */
- /* ------------------------------------------------------------------ */
- FIND FIRST Artbw NO-LOCK USE-INDEX Artbw-k7
- WHERE Artbw.Firma = D1Firma
- AND Artbw.Artnr = bArtLief.Artnr
- AND Artbw.Inhalt = bArtLief.Inhalt
- AND Artbw.Jahr = bArtLief.Jahr
- AND Artbw.Tr_Art = 11 NO-ERROR.
- IF AVAILABLE Artbw THEN nDatum = Artbw.Datum.
- ELSE nDatum = TODAY - iPerioden.
- dRueckDatum = nDatum.
-
- RELEASE GGebinde.
- RELEASE VGebinde.
-
- IF bArtst.GGeb_Cd <> '' THEN
- DO:
- FIND GGebinde NO-LOCK
- WHERE GGebinde.Firma = bArtst.Firma
- AND GGebinde.Geb_Cd = bArtst.GGeb_Cd NO-ERROR.
- END.
- IF bArtst.VGeb_Cd <> '' THEN
- DO:
- FIND VGebinde NO-LOCK
- WHERE VGebinde.Firma = bArtst.Firma
- AND VGebinde.Geb_Cd = bArtst.VGeb_Cd NO-ERROR.
- END.
- IF bArtst.KGeb_Cd <> '' THEN
- DO:
- FIND KGebinde NO-LOCK
- WHERE KGebinde.Firma = bArtst.Firma
- AND KGebinde.Geb_Cd = bArtst.KGeb_Cd NO-ERROR.
- END.
- CREATE tVorschlag.
- ASSIGN
- tVorschlag.Besnr = bBesko.Besnr
- tVorschlag.Typ = 0
- tVorschlag.Lager = bBesko.Lager
- tVorschlag.Knr = bArtLief.Knr
- tVorschlag.Artnr = bArtst.Artnr
- tVorschlag.Inhalt = bArtst.Inhalt
- tVorschlag.Jahr = bArtst.Jahr
- tVorschlag.Artikel = TRIM(ArtBez.Bez1 + ' ' + ArtBez.Bez2)
- tVorschlag.lBeschaff = (IF bArtst.Ausverk = 8 THEN TRUE ELSE FALSE)
- tVorschlag.Bestand = bArtLager.Bestand
- tVorschlag.Bestellt = bArtLager.Bestellt
- tVorschlag.lBewegungen = FALSE
- tVorschlag.lMindBestMenge = (IF bArtLief.Min_KGebinde > 0 THEN TRUE ELSE FALSE)
- tVorschlag.Mind_Berechnet = (IF bArtLief.Min_KGebinde > 0 THEN bArtLief.Min_KGebinde ELSE 0)
-
- tVorschlag.Mind_Bestand = bArtLager.Mind_Bestand
- tVorschlag.Meld_Bestand = bArtLager.Meld_Bestand
- tVorschlag.Soll_Bestand = bArtLager.Soll_Bestand
- tVorschlag.Mind_Bestellung = bArtLief.Min_KGebinde
-
- tVorschlag.LagerOrt = bArtLager.Ort
- tVorschlag.GGeb_Inhalt = (IF AVAILABLE GGebinde THEN GGebinde.Inhalt ELSE 1)
- tVorschlag.VGeb_Inhalt = (IF AVAILABLE VGebinde THEN VGebinde.Inhalt ELSE 1)
- tVorschlag.KGeb_Inhalt = (IF AVAILABLE KGebinde THEN KGebinde.Inhalt ELSE 1)
-
- tVorschlag.cArtikel = TRIM(Artbez.Bez1 + ' ' + ArtBez.Bez2)
- tVorschlag.GGeb_Text = (IF AVAILABLE GGebinde THEN GGebinde.KBez ELSE '')
- tVorschlag.VGeb_Text = (IF AVAILABLE VGebinde THEN VGebinde.KBez ELSE '')
- tVorschlag.KGeb_Text = (IF AVAILABLE KGebinde THEN KGebinde.KBez ELSE '')
- tVorschlag.GGeb_Cd = bArtst.GGeb_Cd
- tVorschlag.VGeb_Cd = bArtst.VGeb_Cd
- tVorschlag.KGeb_Cd = bArtst.KGeb_Cd
- .
- IF lVGebinde AND
- AVAILABLE VGebinde AND
- VGebinde.Inhalt > 0 THEN
- DO:
- ASSIGN
- tVorschlag.Mind_Bestand = tVorschlag.Mind_Bestand * VGebinde.Inhalt
- tVorschlag.Soll_Bestand = tVorschlag.Soll_Bestand * VGebinde.Inhalt
- tVorschlag.Meld_Bestand = tVorschlag.Meld_Bestand * VGebinde.Inhalt.
- END.
- /* ------------------------------------------------------------------ */
- /* Rückstände aus offenen und verbuchten Aufträgen */
- /* ------------------------------------------------------------------ */
- FOR EACH Aufze NO-LOCK USE-INDEX Aufze-k2
- WHERE Aufze.Firma = D1Firma
- AND Aufze.Artnr = tVorschlag.Artnr
- AND Aufze.Inhalt = tVorschlag.Inhalt
- AND Aufze.Jahr = tVorschlag.Jahr
- AND Aufze.Lager = tVorschlag.Lager
- AND Aufze.Lag_Buch = TRUE :
- tVorschlag.Rueckstand = tVorschlag.Rueckstand + Aufze.MRuek.
- END.
- FOR EACH Savze NO-LOCK USE-INDEX Savze-k3
- WHERE Savze.Firma = bBesko.Firma
- AND SavZe.Artnr = tVorschlag.Artnr
- AND SavZe.Inhalt = tVorschlag.Inhalt
- AND SavZe.Jahr = tVorschlag.Jahr
- AND SavZe.Aufnr > iLetztAufnr
- AND Savze.Lager = tVorschlag.Lager
- AND SavZe.MRuek > 0
- AND SavZe.Lag_Buch = TRUE,
-
- FIRST Savko NO-LOCK
- WHERE Savko.Firma = Savze.Firma
- AND Savko.Aufnr = Savze.Aufnr
- AND Savko.Lief_Datum > dRueckDatum :
-
- tVorschlag.Rueckstand = tVorschlag.Rueckstand + Savze.MRuek.
- END.
- iAnzahl = iAnzahl + 1.
- SLIDER-1:SCREEN-VALUE = STRING(iAnzahl * 100 / iTotAnz).
- END.
- SLIDER-1:HIDDEN IN FRAME {&FRAME-NAME} = FALSE.
- iTotAnz = iAnzahl.
- iAnzahl = 0.
- /* ------------------------------------------------------------------ */
- /* Verbräuche rechnen Vorjahr bis zum Reserviert-Datum */
- /* ------------------------------------------------------------------ */
- VORSCHLAG010:
- FOR EACH tVorschlag WHILE tParam.lVerbrauch:
- FOR EACH Artbw NO-LOCK
- WHERE Artbw.Firma = D1Firma
- AND Artbw.Artnr = tVorschlag.Artnr
- AND Artbw.Inhalt = tVorschlag.Inhalt
- AND Artbw.Jahr = tVorschlag.Jahr
- AND Artbw.Datum > dvonDatum
- AND Artbw.Datum <= tParam.dReserviertdatum
- AND Artbw.Tr_Art < 10
- AND Artbw.Lager = tVorschlag.Lager
- AND Artbw.Lag_Buch = TRUE :
- /* ------------------------------------------------------------------ */
- /* Es hat Bewegungen gegeben im Datumsbereich */
- /* ------------------------------------------------------------------ */
- IF tParam.lBewegungen THEN
- DO:
- IF Artbw.Datum >= tParam.dVon AND
- Artbw.Datum <= tParam.dBis AND
- Artbw.Menge > 0 THEN tVorschlag.lBewegungen = TRUE.
- END.
- /* ---------------------------------------------------------------------- */
- /* Die letzten 12 Mt, aufgeteilt auch in die letzten 6, und die 6 davor */
- /* ---------------------------------------------------------------------- */
- IF Artbw.Datum >= dvonVorjahr AND
- Artbw.Datum <= bBesko.Best_Datum THEN tVorschlag.Verbrauch_12Mt = tVorschlag.Verbrauch_12Mt + Artbw.Menge.
-
- IF Artbw.Datum >= dvonVorjahr + 183 AND
- Artbw.Datum <= bBesko.Best_Datum THEN tVorschlag.Verbrauch_0106 = tVorschlag.Verbrauch_0106 + Artbw.Menge.
- IF Artbw.Datum >= dvonVorjahr AND
- Artbw.Datum <= dVonVorjahr + 183 THEN tVorschlag.Verbrauch_0712 = tVorschlag.Verbrauch_0712 + Artbw.Menge.
- /* ------------------------------------------------------------------ */
- /* Vorjahres-Bestellperioden */
- /* ------------------------------------------------------------------ */
- DO WHILE TRUE:
- IF Artbw.Datum < dvonVorjahr THEN LEAVE.
-
- IF Artbw.Datum <= (dvonVorjahr + (iPerioden * 1)) THEN
- DO:
- tVorschlag.Verbrauch_VjPer1 = tVorschlag.Verbrauch_VjPer1 + Artbw.Menge.
- LEAVE.
- END.
- IF Artbw.Datum <= (dvonVorjahr + (iPerioden * 2)) THEN
- DO:
- tVorschlag.Verbrauch_VjPer2 = tVorschlag.Verbrauch_VjPer2 + Artbw.Menge.
- LEAVE.
- END.
- IF Artbw.Datum <= (dvonVorjahr + (iPerioden * 3)) THEN
- DO:
- tVorschlag.Verbrauch_VjPer3 = tVorschlag.Verbrauch_VjPer3 + Artbw.Menge.
- LEAVE.
- END.
- LEAVE.
- END.
-
- /* ------------------------------------------------------------------ */
- /* Verbrauch in letzter Bestellperiode (Intervall + Lieferfrist) */
- /* ------------------------------------------------------------------ */
- IF Artbw.Datum >= (bBesko.Best_Datum - (iPerioden * 2)) AND
- Artbw.Datum <= bBesko.Best_Datum THEN
- DO:
- tVorschlag.Verbrauch_Letzt = tVorschlag.Verbrauch_Letzt + Artbw.Menge.
- END.
-
- /* ------------------------------------------------------------------ */
- /* Saison (Winter (Mt. 10 - 03) / Sommer (Mt. 04 - 09) */
- /* ------------------------------------------------------------------ */
- DO WHILE TRUE:
- IF Artbw.Datum < dVorAKtiv THEN LEAVE.
- IF Artbw.Datum > dVorEnd THEN LEAVE.
-
- IF Artbw.Datum <= dVorVerg THEN tVorschlag.Verbrauch_Aktiv = tVorschlag.Verbrauch_Aktiv + Artbw.Menge.
- ELSE tVorschlag.Verbrauch_Verg = tVorschlag.Verbrauch_Verg + Artbw.Menge.
- LEAVE.
- END.
-
- /* ------------------------------------------------------------------ */
- /* Vormonats-Umsatz-Zahlen 1-3 */
- /* ------------------------------------------------------------------ */
- DO WHILE TRUE:
- IF Artbw.Datum >= bBesko.Best_Datum - 90 AND
- Artbw.Datum < bBesko.Best_Datum - 60 THEN
- DO:
- tVorschlag.Verbrauch_VorMt3 = tVorschlag.Verbrauch_VorMt3 + Artbw.Menge.
- LEAVE.
- END.
- IF Artbw.Datum >= bBesko.Best_Datum - 60 AND
- Artbw.Datum < bBesko.Best_Datum - 30 THEN
- DO:
- tVorschlag.Verbrauch_VorMt2 = tVorschlag.Verbrauch_VorMt2 + Artbw.Menge.
- LEAVE.
- END.
- IF Artbw.Datum >= bBesko.Best_Datum - 30 AND
- Artbw.Datum < bBesko.Best_Datum - 00 THEN
- DO:
- tVorschlag.Verbrauch_VorMt1 = tVorschlag.Verbrauch_VorMt1 + Artbw.Menge.
- LEAVE.
- END.
- IF Artbw.Fak_Dat = ? THEN
- DO:
- IF Artbw.Datum > bBesko.Best_Datum AND
- Artbw.Datum > dBestandesdatum THEN
- DO:
- tVorschlag.Tagesbestand = tVorschlag.TagesBestand + Artbw.Menge.
- END.
- IF Artbw.Datum > dBestandesDatum AND
- Artbw.Datum <= dReserviertdatum THEN
- DO:
- tVorschlag.Reserviert = tVorschlag.Reserviert + Artbw.Menge.
- END.
- END.
- LEAVE.
- END.
- END.
- tVorschlag.TagesBestand = tVorschlag.TagesBestand + tVorschlag.Bestand.
-
- iAnzahl = iAnzahl + 1.
- SLIDER-1:SCREEN-VALUE = STRING(iAnzahl * 100 / iTotAnz).
- END.
- iAnzahl = 0.
- VORSCHLAG020:
- FOR EACH tVorschlag WHERE tVorschlag.Typ = 0:
- iAnzahl = iAnzahl + 1.
- SLIDER-1:SCREEN-VALUE = STRING(iAnzahl * 100 / iTotAnz).
-
- /* ------------------------------------------------------------------ */
- /* Beschaffungsartikel anhand der Rückstandsmenge */
- /* ------------------------------------------------------------------ */
- IF tVorschlag.lBeschaff THEN
- DO:
- FIND bArtst NO-LOCK
- WHERE bArtst.Firma = D1Firma
- AND bArtst.Artnr = tVorschlag.Artnr
- AND bArtst.Inhalt = tVorschlag.Inhalt
- AND bArtst.Jahr = tVorschlag.Jahr.
-
- /* ------------------------------------------------------------------ */
- /* Beschaffungsartikel mit Lagerführung */
- /* ------------------------------------------------------------------ */
- IF bArtst.Lager THEN
- DO:
- ASSIGN
- tVorschlag.Vorschlag_Me = - tVorschlag.Bestand + tVorschlag.Rueckstand
- tVorschlag.Bestellung = - tVorschlag.Bestand + tVorschlag.Rueckstand.
-
- IF tVorschlag.Vorschlag_Me < 0 THEN
- ASSIGN
- tVorschlag.Vorschlag_Me = 0
- tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
- ASSIGN
- tVorschlag.lBewegungen = TRUE
- tVorschlag.Typ = 1.
- NEXT.
- END.
-
- /* ------------------------------------------------------------------ */
- /* Beschaffungsartikel ohne Lagerführung */
- /* ------------------------------------------------------------------ */
-
- ASSIGN
- tVorschlag.Vorschlag_Me = tVorschlag.Rueckstand
- tVorschlag.Bestellung = tVorschlag.Rueckstand
- tVorschlag.lBewegungen = TRUE
- tVorschlag.Typ = 1.
- NEXT.
- END.
- IF tParam.lBewegungen AND
- NOT tVorschlag.lBewegungen AND
- NOT tVorschlag.lBeschaff THEN
- DO:
- DELETE tVorschlag.
- NEXT VORSCHLAG020.
- END.
-
- nEffbestand = tVorschlag.TagesBestand + tVorschlag.Bestellt.
- IF tVorschlag.Meld_Bestand > 0 AND
- tVorschlag.Meld_Bestand > nEffBestand THEN tVorschlag.Typ = 3.
-
- IF tVorschlag.Mind_Bestand > 0 AND
- tVorschlag.Mind_Bestand > nEffBestand THEN tVorschlag.Typ = 2.
-
- DO WHILE tVorschlag.Soll_Bestand > 0:
- IF nEffBestand >= tVorschlag.Soll_Bestand THEN LEAVE.
- ASSIGN
- tVorschlag.Vorschlag_Me = tVorschlag.Soll_Bestand - nEffBestand
- tVorschlag.Bestellung = tVorschlag.Soll_Bestand - nEffBestand.
- NEXT VORSCHLAG020.
- END.
-
- DO WHILE tVorschlag.Mind_Bestand > 0:
- IF nEffBestand >= tVorschlag.Mind_Bestand THEN LEAVE.
- ASSIGN
- tVorschlag.Vorschlag_Me = tVorschlag.Mind_Bestand + tVorschlag.Verbrauch_Letzt - nEffBestand
- tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
- NEXT VORSCHLAG020.
- END.
-
- IF nEffBestand < tVorschlag.Rueckstand THEN
- DO:
- ASSIGN
- tVorschlag.Vorschlag_Me = tVorschlag.Rueckstand - nEffBestand
- tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
- NEXT VORSCHLAG020.
- END.
-
- IF nEffBestand > tVorschlag.Verbrauch_VorMt1 AND
- nEffBestand > tVorschlag.Verbrauch_VjPer1 THEN NEXT.
-
- tVorschlag.Vorschlag_Me = tVorschlag.Verbrauch_Letzt - nEffBestand.
- IF tVorschlag.Vorschlag_Me < 0 THEN tVorschlag.Vorschlag_Me = 0.
- tVorschlag.Bestellung = tVorschlag.Vorschlag_Me.
- END.
- iTotAnz = 0.
- iAnzahl = 0.
- lMinMaxMenge = TRUE. /* Mindest- (TRUE) oder Max-Bestellmenge */
- cString = DYNAMIC-FUNCTION ('getFehlwert':U, Firma, 'MINMAXBESTMENGE' ) NO-ERROR.
- IF cString BEGINS 'n' THEN lMinMaxMenge = FALSE.
-
- FOR EACH tVorschlag:
- /* FIND bArtLief NO-LOCK */
- /* WHERE bArtLief.Firma = D1Firma */
- /* AND bArtLief.Artnr = tVorschlag.Artnr */
- /* AND bArtLief.Inhalt = tVorschlag.Inhalt*/
- /* AND bArtLief.Jahr = tVorschlag.Jahr */
- /* AND bArtLief.Knr = tVorschlag.Knr. */
- DO WHILE TRUE:
- IF NOT tVorschlag.lMindBestMenge THEN LEAVE.
- IF lMinMaxMenge THEN LEAVE.
- IF tVorschlag.Vorschlag_Me = 0 THEN LEAVE.
- IF nEffBestand > tVorschlag.Vorschlag_Me THEN
- DO:
- tVorschlag.Vorschlag_Me = 0.
- tVorschlag.Bestellung = 0.
- LEAVE.
- END.
- IF nEffBestand >= tVorschlag.Mind_Berechnet THEN
- DO:
- tVorschlag.Vorschlag_Me = 0.
- tVorschlag.Bestellung = 0.
- LEAVE.
- END.
- IF nEffBestand > tVorschlag.Verbrauch_Letzt THEN
- DO:
- tVorschlag.Vorschlag_Me = 0.
- tVorschlag.Bestellung = 0.
- LEAVE.
- END.
- iFuellMenge = tVorschlag.Mind_Berechnet - nEffBestand.
- IF iFuellMenge <= 0 THEN
- DO:
- tVorschlag.Vorschlag_Me = 0.
- tVorschlag.Bestellung = 0.
- LEAVE.
- END.
- tVorschlag.Vorschlag_Me = iFuellMenge.
- tVorschlag.Bestellung = iFuellMenge.
- LEAVE.
- END.
- DYNAMIC-FUNCTION ('calculateGebindeAusMenge':U,
- Firma, tVorschlag.Artnr, tVorschlag.Inhalt, tVorschlag.Jahr, tVorschlag.Vorschlag_Me,
- OUTPUT iGGeb_Me, OUTPUT iVGeb_Me, OUTPUT iKGeb_Me) NO-ERROR.
- IF iVGeb_Me <> 0 THEN iKGeb_Me = iVGeb_Me * tVorschlag.VGeb_Inhalt.
- ELSE
- DO:
- IF iKGeb_Me > 0 THEN
- ASSIGN
- iVGeb_Me = 1
- iKGeb_Me = iVGeb_Me * tVorschlag.VGeb_Inhalt.
- END.
- ASSIGN
- tVorschlag.GGeb_Me = iGGeb_Me
- tVorschlag.VGeb_Me = iVGeb_Me
- tVorschlag.KGeb_Me = iKGeb_Me
- tVorschlag.Vorschlag_Me = iKGeb_Me
- tVorschlag.Bestellung = iKGeb_Me.
-
- /* IF tVorschlag.KGeb_Me > 0 AND */
- /* tVorschlag.VGeb_Me < bArtLief.Min_VGebinde THEN */
- /* DO: */
- /* ASSIGN */
- /* tVorschlag.VGeb_Me = bArtLief.Min_VGebinde */
- /* tVorschlag.KGeb_Me = tVorschlag.VGeb_Me * tVorschlag.VGeb_Inhalt*/
- /* tVorschlag.Vorschlag_Me = tVorschlag.KGeb_Me */
- /* tVorschlag.Bestellung = tVorschlag.KGeb_Me. */
- /* END. */
-
- IF tParam.nAufrunden > 0 THEN
- DO:
- ii = (iVGeb_Me * 100) / tVorschlag.GGeb_Inhalt.
- IF ii >= tParam.nAufrunden THEN
- DO:
- iGGeb_Me = iGGeb_Me + 1.
- iVGeb_Me = iGGeb_Me * tVorschlag.GGeb_Inhalt.
- END.
- iKGeb_Me = iVGeb_Me * tVorschlag.VGeb_Inhalt.
- ASSIGN
- tVorschlag.GGeb_Me = iGGeb_Me
- tVorschlag.VGeb_Me = iVGeb_Me
- tVorschlag.KGeb_Me = iKGeb_Me
- tVorschlag.Bestellung = iKGeb_Me
- tVorschlag.Vorschlag_Me = iKGeb_Me.
- END.
- iTotAnz = iTotAnz + 1.
-
- EMPTY TEMP-TABLE tBesze.
- CREATE tBesze.
- ASSIGN
- tBesze.Firma = D1Firma
- tBesze.Besnr = tVorschlag.Besnr
- tBesze.iStatus = 0
- tBesze.Artnr = tVorschlag.Artnr
- tBesze.Inhalt = tVorschlag.Inhalt
- tBesze.Jahr = tVorschlag.Jahr
- .
- DYNAMIC-FUNCTION ('fillBesze':U, INPUT-OUTPUT htBesze) NO-ERROR.
- IF ERROR-STATUS:ERROR THEN NEXT.
-
- ASSIGN
- tBesze.GGeb_Me = tVorschlag.GGeb_Me
- tBesze.VGeb_Me = tVorschlag.VGeb_Me
- tBesze.KGeb_Me = tVorschlag.KGeb_Me
- tBesze.MBest = tVorschlag.KGeb_Me
- tBesze.Verbrauch = tVorschlag.Verbrauch_Letzt
- .
- DYNAMIC-FUNCTION ('calculatetBeszeNetto':U, INPUT-OUTPUT htBesze ) NO-ERROR.
- tVorschlag.nNetto = tBesze.Netto.
- END.
-
- FIND FIRST tVorschlag NO-ERROR.
- IF NOT AVAILABLE tVorschlag THEN
- DO:
- DYNAMIC-FUNCTION('fehlerMeldung':U, 1111, '' ) NO-ERROR.
- RETURN NO-APPLY.
- END.
-
- SLIDER-1:HIDDEN IN FRAME {&FRAME-NAME} = TRUE.
- SESSION:SET-WAIT-STATE ('').
-
- /* OUTPUT TO 'C:\Entwicklung\Temp\tVorschlag.csv' NO-MAP NO-CONVERT.*/
- /* FOR EACH tVorschlag: */
- /* EXPORT DELIMITER ';' tVorschlag. */
- /* END. */
- /* OUTPUT CLOSE. */
- IF VALID-HANDLE(hBestellvorschlag) THEN RUN OPENQUERY IN hBestellvorschlag.
- ELSE
- DO:
- RUN 'w-bestellvorschlag.w' PERSISTENT SET hBestellvorschlag ( INPUT htVorschlag ) NO-ERROR.
- RUN initializeObject IN hBestellvorschlag.
- RUN OPENQUERY IN hBestellvorschlag.
- END.
-
- /*
- RUN EXCEL.
- */
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE destroyObject bTableWin
- PROCEDURE destroyObject :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE VARIABLE hBrowser AS HANDLE NO-UNDO.
- hBrowser = {&BROWSE-NAME}:HANDLE IN FRAME {&FRAME-NAME}.
- DYNAMIC-FUNCTION('setBrowserDaten':U, INPUT hBrowser,
- INPUT Sektion ) NO-ERROR.
-
- IF VALID-HANDLE(hBestellvorschlag) THEN RUN ENDE IN hBestellvorschlag.
- RUN SUPER.
- /* Code placed here will execute AFTER standard behavior. */
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI bTableWin _DEFAULT-DISABLE
- PROCEDURE disable_UI :
- /*------------------------------------------------------------------------------
- Purpose: DISABLE the User Interface
- Parameters: <none>
- Notes: Here we clean-up the user-interface by deleting
- dynamic widgets we have created and/or hide
- frames. This procedure is usually called when
- we are ready to "clean-up" after running.
- ------------------------------------------------------------------------------*/
- /* Hide all frames. */
- HIDE FRAME F-Main.
- IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN bTableWin
- PROCEDURE DRUCKEN :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- IF cInstallation BEGINS 'Huber' THEN RUN DRUCKEN_HUBER.
- ELSE RUN DRUCKEN_STANDARD.
-
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_HUBER bTableWin
- PROCEDURE DRUCKEN_HUBER :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE.
- DEFINE VARIABLE VVorlage AS CHARACTER INIT "BestellformHuber.xlsm".
- DEFINE VARIABLE VDateiName AS CHARACTER INIT "BestellformHuber.xlsm".
- DEFINE VARIABLE VDatenDatei AS CHARACTER INIT "BestellformHuber.csv".
- DEFINE VARIABLE MyName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
- DEFINE VARIABLE io AS LOG NO-UNDO.
- DEFINE VARIABLE cArtnr AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cJahr AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cAlk AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cGGeb AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cVGeb AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ix AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
- DEFINE VARIABLE iRecid AS RECID NO-UNDO.
-
- DEFINE BUFFER bBesze FOR Besze.
- iRecid = DYNAMIC-FUNCTION('getCurrentRecid':U IN hDaten ) NO-ERROR.
- IF iRecid = ? OR
- iRecid = 0 THEN
- DO:
- APPLY 'U1'.
- RETURN NO-APPLY.
- END.
-
- FIND Besko NO-LOCK WHERE RECID(Besko) = iRecid.
- CString = VDateiName + CHR(01) + VVorlage.
- RUN CREATEDATEI ( INPUT cString ).
- IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY.
- VDateiName = RETURN-VALUE.
- excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
- IF NOT VALID-HANDLE(excelAppl) THEN
- DO:
- MESSAGE 'Die Applikation Excel konnte nicht gestartet werden ! '
- VIEW-AS ALERT-BOX ERROR.
- RETURN NO-APPLY.
- END.
- EMPTY TEMP-TABLE tKopf.
- DO ix = 1 TO 19:
- CREATE tKopf.
- ASSIGN
- tKopf.Zeile = ix.
- END.
- EMPTY TEMP-TABLE tAdresse.
- CREATE tAdresse.
- FIND Adresse NO-LOCK USE-INDEX Adresse-k1
- WHERE Adresse.Firma = AdFirma
- AND Adresse.Knr = Besko.Knr NO-ERROR.
- IF AVAILABLE Adresse THEN
- DO:
- BUFFER-COPY Adresse TO tAdresse.
- FIND FIRST Ansprech NO-LOCK
- WHERE Ansprech.Firma = Adresse.Firma
- AND Ansprech.Knr = Adresse.Knr
- AND Ansprech.Bestellung = TRUE NO-ERROR.
- IF AVAILABLE Ansprech THEN BUFFER-COPY Ansprech TO tAdresse.
- END.
-
- FIND Krest NO-LOCK
- WHERE Krest.Firma = D1Firma
- AND Krest.Knr = Besko.Knr NO-ERROR.
-
- i1 = 0.
- DO ix = 4 TO 12:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = tAdresse.Anschrift[ix].
- END.
- IF tAdresse.Tel-1 <> '' THEN
- DO:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = 'Tel.: ' + tAdresse.Tel-1.
- END.
- IF tAdresse.Tel-3 <> '' THEN
- DO:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = 'Fax.: ' + tAdresse.Tel-3.
- END.
- IF tAdresse.Mail <> '' THEN
- DO:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = 'Mail: ' + tAdresse.Mail .
- END.
- ix = 1.
- FIND Steuer USE-INDEX Steuer-k1
- WHERE Steuer.Firma = D1Firma NO-LOCK.
- IF Steuer.Firma1 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Firma1.
- END.
- IF Steuer.Firma2 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Firma2.
- END.
- IF Steuer.Strasse <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Strasse.
- END.
- IF Steuer.Ort <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Ort.
- END.
- IF Steuer.Tel-1 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = 'Tel.:'.
- tKopf.Feld[03] = Steuer.Tel-1.
- END.
- IF Steuer.Fax-1 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = 'Fax :'.
- tKopf.Feld[03] = Steuer.Fax-1.
- END.
- IF AVAILABLE Krest THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- ASSIGN
- tKopf.Feld[02] = 'Knr:'
- tKopf.Feld[03] = STRING(Krest.Kred_Knr,'999999') .
- END.
- FIND FIRST tKopf WHERE tKopf.Zeile = 3.
- tKopf.Feld[05] = (IF Besko.Abgeholt THEN 'ABHOLUNG' ELSE '').
-
- FIND FIRST tKopf WHERE tKopf.Zeile = 14.
- tKopf.Feld[01] = 'Bestellung ' + STRING(Besko.Besnr,'999999').
- tKopf.Feld[05] = Steuer.Ort + ', ' + STRING(TODAY,'99.99.9999').
-
- FIND FIRST tKopf WHERE tKopf.Zeile = 17.
- ASSIGN
- tKopf.Feld[02] = 'Artikel'
- tKopf.Feld[03] = 'Artikel'
- tKopf.Feld[04] = 'Vol%'
- tKopf.Feld[05] = 'JG'
- tKopf.Feld[06] = 'Gebinde'
- tKopf.Feld[07] = 'Paletten'
- tKopf.Feld[08] = 'Kisten'
- tKopf.Feld[09] = 'Flaschen'.
- FIND FIRST tKopf WHERE tKopf.Zeile = 18.
- ASSIGN
- tKopf.Feld[02] = 'Nummer'
- tKopf.Feld[03] = ''
- tKopf.Feld[04] = ''
- tKopf.Feld[05] = ''
- tKopf.Feld[06] = ''
- tKopf.Feld[07] = ''
- tKopf.Feld[08] = 'Karton'
- tKopf.Feld[09] = 'Dosen'.
-
- VDatenDatei = SESSION:TEMP-DIR + VDatenDatei.
- OUTPUT TO VALUE(VDatenDatei).
- FOR EACH tKopf BY Zeile:
- PUT CONTROL tKopf.Feld[01] '£'
- tKopf.Feld[02] '£'
- tKopf.Feld[03] '£'
- tKopf.Feld[04] '£'
- tKopf.Feld[05] '£'
- tKopf.Feld[06] '£'
- tKopf.Feld[07] '£'
- tKopf.Feld[08] '£'
- tKopf.Feld[09] CHR(10).
- END.
- i2 = 0.
- DO ix = 1 TO NUM-ENTRIES (Besko.Kopf, CHR(10)):
- cString = ENTRY(ix, Besko.Kopf, CHR(10)).
- IF LENGTH(cString) > 80 THEN
- DO:
- cZeile = cString.
- cString = ''.
- DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
- IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
- DO:
- PUT CONTROL TRIM(cString) CHR(10).
- cString = ''.
- END.
- cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
- END.
- END.
- PUT CONTROL '££' TRIM(cString) CHR(10).
- i2 = i2 + 1.
- END.
- IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
- IF Besko.Abholtext <> '' THEN
- DO:
- cString = REPLACE(Besko.Abholtext, CHR(10), CHR(11)).
- cString = REPLACE(cString, CHR(13), '').
- PUT CONTROL '££' cString '£' CHR(10)
- '£' CHR(10).
- END.
- FOR EACH bBesze USE-INDEX Besze-k1
- WHERE bBesze.Firma = D1Firma
- AND bBesze.Besnr = Besko.Besnr :
-
- IF bBesze.MBest = 0 AND
- bBesze.MGeli = 0 THEN
- DO:
- DELETE bBesze.
- RELEASE bBesze.
- NEXT.
- END.
-
- FIND Artst OF bBesze NO-LOCK NO-ERROR.
-
- FIND KGebinde NO-LOCK USE-INDEX KGebinde-k1
- WHERE KGebinde.Firma = D1Firma
- AND KGebinde.Geb_Cd = bBesze.KGeb_Cd NO-ERROR.
- FIND VGebinde NO-LOCK USE-INDEX VGebinde-k1
- WHERE VGebinde.Firma = D1Firma
- AND VGebinde.Geb_Cd = bBesze.VGeb_Cd NO-ERROR.
- FIND GGebinde NO-LOCK USE-INDEX GGebinde-k1
- WHERE GGebinde.Firma = D1Firma
- AND GGebinde.Geb_Cd = bBesze.GGeb_Cd NO-ERROR.
- cArtnr = ''.
- cJahr = ''.
- cAlk = ''.
- cGGeb = ''.
- cVGeb = ''.
- IF bBesze.S_Artnr <> '' THEN cArtnr = bBesze.S_Artnr.
- ELSE cArtnr = STRING(bBesze.Artnr,"999999").
- /* + "." */
- /* + STRING(bBesze.Inhalt,"9999") */
- /* + "." */
- /* + STRING(bBesze.Jahr ,"9999").*/
- IF bBesze.Jahr > 99 THEN
- DO:
- cJahr = STRING(bBesze.Jahr,"9999").
- END.
- IF Artst.Alk_Gehalt <> 0 THEN
- DO:
- cAlk = STRING(Artst.Alk_Gehalt,">9.99") + '%'.
- END.
- IF bBesze.GGeb_Me <> 0 THEN cGGeb = TRIM(STRING(bBesze.GGeb_Me,'->>>>>9')).
- IF bBesze.VGeb_Me <> 0 THEN cVGeb = TRIM(STRING(bBesze.VGeb_Me,'->>>>>9')).
- PUT CONTROL '£'
- cArtnr '£'
- bBesze.Bez1 '£'
- cAlk '£'
- cJahr '£'
- KGebinde.KBez '£'
- cGGeb '£'
- cVGeb '£'
- TRIM(STRING(bBesze.KGeb_Me,'->>>>>9')) CHR(10).
- IF bBesze.Bez2 <> '' THEN
- DO:
- PUT CONTROL '££'
- bBesze.Bez2 '£££' CHR(10).
- END.
- PUT CONTROL '£' CHR(10).
- RELEASE bBesze.
- END.
- IF Besko.Lief_Datum <> ? THEN
- DO:
- PUT CONTROL '£' CHR(10) '£' CHR(10)
- 'Liefererung am:' '££'
- DYNAMIC-FUNCTION('GETWOCHENTAG', INPUT Besko.Lief_Datum)
- ', '
- STRING(Besko.Lief_Datum,'99.99.9999')
- ', '
- Besko.Lieferzeit CHR(10).
- END.
- PUT CONTROL '£' CHR(10).
- i2 = 0.
- DO ix = 1 TO NUM-ENTRIES (Besko.Schluss, CHR(10)):
- cString = ENTRY(ix, Besko.Schluss, CHR(10)).
- IF LENGTH(cString) > 80 THEN
- DO:
- cZeile = cString.
- cString = ''.
- DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
- IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
- DO:
- PUT CONTROL TRIM(cString) CHR(10).
- cString = ''.
- END.
- cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
- END.
- END.
- PUT CONTROL TRIM(cString) CHR(10).
- i2 = i2 + 1.
- END.
- IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
- OUTPUT CLOSE.
- RELEASE Besko.
- RELEASE bBesze.
- RELEASE Artst.
-
- RUN OPENEXCEL ( INPUT excelAppl,
- INPUT VDateiName,
- INPUT '',
- OUTPUT io ).
- IF NOT io THEN
- DO:
- RUN FEHLER ( INPUT 1040 ).
- RETURN NO-APPLY.
- END.
- Zelle = 'A1'.
- excelAppl:Range(Zelle):SELECT.
- excelAppl:Selection:FormulaR1C1 = 'TEXT;' + VDatenDatei.
- excelAppl:Application:RUN ( 'DateiEinfügen' ).
- Zelle = 'A1'.
- excelAppl:Range(Zelle):SELECT.
- excelAppl:Selection:ColumnWidth = 0.3.
-
- DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR.
-
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_STANDARD bTableWin
- PROCEDURE DRUCKEN_STANDARD :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE.
- DEFINE VARIABLE VVorlage AS CHARACTER INIT "Bestellform.xls".
- DEFINE VARIABLE VDateiName AS CHARACTER INIT "Bestellform.xls".
- DEFINE VARIABLE VDatenDatei AS CHARACTER INIT "Bestellform.csv".
- DEFINE VARIABLE MyName AS CHARACTER NO-UNDO.
- DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
- DEFINE VARIABLE io AS LOG NO-UNDO.
- DEFINE VARIABLE cArtnr AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cJahr AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ix AS INTEGER NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
- DEFINE VARIABLE iRecid AS RECID NO-UNDO.
-
- DEFINE BUFFER bBesze FOR Besze.
- iRecid = DYNAMIC-FUNCTION('getCurrentRecid':U IN hDaten ) NO-ERROR.
- IF iRecid = ? OR
- iRecid = 0 THEN
- DO:
- APPLY 'U1'.
- RETURN NO-APPLY.
- END.
-
- FIND Besko NO-LOCK WHERE RECID(Besko) = iRecid.
- CString = VDateiName + CHR(01) + VVorlage.
- RUN CREATEDATEI ( INPUT cString ).
- IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY.
- VDateiName = RETURN-VALUE.
- excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
- IF NOT VALID-HANDLE(excelAppl) THEN
- DO:
- MESSAGE 'Die Applikation Excel konnte nicht gestartet werden ! '
- VIEW-AS ALERT-BOX ERROR.
- RETURN NO-APPLY.
- END.
- FOR EACH tKopf:
- DELETE tKopf.
- END.
- DO ix = 1 TO 19:
- CREATE tKopf.
- ASSIGN
- tKopf.Zeile = ix.
- END.
- FIND Adresse NO-LOCK USE-INDEX Adresse-k1
- WHERE Adresse.Firma = AdFirma
- AND Adresse.Knr = Besko.Knr NO-ERROR.
- FIND Krest NO-LOCK
- WHERE Krest.Firma = D1Firma
- AND Krest.Knr = Besko.Knr NO-ERROR.
-
- i1 = 0.
- DO ix = 4 TO 12:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = Adresse.Anschrift[ix].
- END.
- IF Adresse.Tel-1 <> '' THEN
- DO:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = 'Tel.: ' + Adresse.Tel-1.
- END.
- IF Adresse.Tel-3 <> '' THEN
- DO:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = 'Fax.: ' + Adresse.Tel-3.
- END.
- IF Adresse.Mail <> '' THEN
- DO:
- i1 = i1 + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[05] = 'Mail: ' + Adresse.Mail .
- END.
- ix = 1.
- FIND Steuer USE-INDEX Steuer-k1
- WHERE Steuer.Firma = D1Firma NO-LOCK.
- IF Steuer.Firma1 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Firma1.
- END.
- IF Steuer.Firma2 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Firma2.
- END.
- IF Steuer.Strasse <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Strasse.
- END.
- IF Steuer.Ort <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = Steuer.Ort.
- END.
- IF Steuer.Tel-1 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = 'Tel.:'.
- tKopf.Feld[03] = Steuer.Tel-1.
- END.
- IF Steuer.Fax-1 <> '' THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = ix.
- tKopf.Feld[02] = 'Fax :'.
- tKopf.Feld[03] = Steuer.Fax-1.
- END.
- IF AVAILABLE Krest THEN
- DO:
- ix = ix + 1.
- FIND FIRST tKopf WHERE tKopf.Zeile = i1.
- ASSIGN
- tKopf.Feld[02] = 'Knr:'
- tKopf.Feld[03] = Krest.Kred_Knr .
- END.
- FIND FIRST tKopf WHERE tKopf.Zeile = 14.
- tKopf.Feld[01] = 'Bestellung ' + STRING(Besko.Besnr,'999999').
- tKopf.Feld[05] = Steuer.Ort + ', ' + STRING(TODAY,'99.99.9999').
-
- FIND FIRST tKopf WHERE tKopf.Zeile = 17.
- ASSIGN
- tKopf.Feld[02] = 'Pos'
- tKopf.Feld[03] = 'Artikelnummer'
- tKopf.Feld[04] = 'Artikel'
- tKopf.Feld[05] = 'Gebinde'
- tKopf.Feld[06] = 'Gebinde'
- tKopf.Feld[07] = 'Gebinde'.
- FIND FIRST tKopf WHERE tKopf.Zeile = 18.
- ASSIGN
- tKopf.Feld[03] = 'Jahrg./Alk-%'
- tKopf.Feld[05] = 'Menge'
- tKopf.Feld[06] = 'Menge'
- tKopf.Feld[07] = 'Menge'.
-
- VDatenDatei = SESSION:TEMP-DIR + VDatenDatei.
- OUTPUT TO VALUE(VDatenDatei).
- FOR EACH tKopf BY Zeile:
- PUT CONTROL tKopf.Feld[01] '£'
- tKopf.Feld[02] '£'
- tKopf.Feld[03] '£'
- tKopf.Feld[04] '£'
- tKopf.Feld[05] '£'
- tKopf.Feld[06] '£'
- tKopf.Feld[07] CHR(10).
- END.
- i2 = 0.
- DO ix = 1 TO NUM-ENTRIES (Besko.Kopf, CHR(10)):
- cString = ENTRY(ix, Besko.Kopf, CHR(10)).
- IF LENGTH(cString) > 80 THEN
- DO:
- cZeile = cString.
- cString = ''.
- DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
- IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
- DO:
- PUT CONTROL TRIM(cString) CHR(10).
- cString = ''.
- END.
- cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
- END.
- END.
- PUT CONTROL TRIM(cString) CHR(10).
- i2 = i2 + 1.
- END.
- IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
- FOR EACH bBesze USE-INDEX Besze-k1
- WHERE bBesze.Firma = D1Firma
- AND bBesze.Besnr = Besko.Besnr :
-
- IF bBesze.MBest = 0 AND
- bBesze.MGeli = 0 THEN
- DO:
- DELETE bBesze.
- RELEASE bBesze.
- NEXT.
- END.
-
- FIND Artst OF bBesze NO-LOCK NO-ERROR.
-
- FIND KGebinde NO-LOCK USE-INDEX KGebinde-k1
- WHERE KGebinde.Firma = D1Firma
- AND KGebinde.Geb_Cd = bBesze.KGeb_Cd NO-ERROR.
- FIND VGebinde NO-LOCK USE-INDEX VGebinde-k1
- WHERE VGebinde.Firma = D1Firma
- AND VGebinde.Geb_Cd = bBesze.VGeb_Cd NO-ERROR.
- FIND GGebinde NO-LOCK USE-INDEX GGebinde-k1
- WHERE GGebinde.Firma = D1Firma
- AND GGebinde.Geb_Cd = bBesze.GGeb_Cd NO-ERROR.
- cArtnr = ''.
- cJahr = ''.
- IF bBesze.S_Artnr <> '' THEN cArtnr = bBesze.S_Artnr.
- ELSE cArtnr = STRING(bBesze.Artnr,"999999")
- + "."
- + STRING(bBesze.Inhalt,"9999")
- + "."
- + STRING(bBesze.Jahr ,"9999").
- IF bBesze.Jahr > 99 THEN
- DO:
- cJahr = STRING(bBesze.Jahr,"9999").
- END.
- IF Artst.Alk_Gehalt <> 0 THEN
- DO:
- IF cJahr <> '' THEN cJahr = cJahr + ' / '.
- cJahr = cJahr + STRING(Artst.Alk_Gehalt,">9.99") + '%'.
- END.
- PUT CONTROL '£'
- STRING(bBesze.Pos,">>>9") '£'
- cArtnr '£'
- bBesze.Bez1 '£'
- GGebinde.KBez '£'
- VGebinde.KBez '£'
- KGebinde.KBez CHR(10).
- PUT CONTROL '££'
- cJahr '£'
- bBesze.Bez2 '£'
- STRING(bBesze.GGeb_Me,"->>>,>>9") '£'
- STRING(bBesze.VGeb_Me,"->>>,>>9") '£'
- STRING(bBesze.KGeb_Me,"->>>,>>9") CHR(10) '£' CHR(10).
- RELEASE bBesze.
- END.
- IF Besko.Lief_Datum <> ? THEN
- DO:
- PUT CONTROL '£' CHR(10) '£' CHR(10)
- 'Liefererung am:' '£££'
- DYNAMIC-FUNCTION('GETWOCHENTAG', INPUT Besko.Lief_Datum)
- ', '
- STRING(Besko.Lief_Datum,'99.99.9999')
- ', '
- Besko.Lieferzeit CHR(10).
- END.
- PUT CONTROL '£' CHR(10).
- i2 = 0.
- DO ix = 1 TO NUM-ENTRIES (Besko.Schluss, CHR(10)):
- cString = ENTRY(ix, Besko.Schluss, CHR(10)).
- IF LENGTH(cString) > 80 THEN
- DO:
- cZeile = cString.
- cString = ''.
- DO i1 = 1 TO NUM-ENTRIES(cZeile, ' '):
- IF LENGTH(cString) + LENGTH(ENTRY(i1, cZeile, ' ')) > 80 THEN
- DO:
- PUT CONTROL TRIM(cString) CHR(10).
- cString = ''.
- END.
- cString = cString + ' ' + ENTRY(i1, cZeile, ' ').
- END.
- END.
- PUT CONTROL TRIM(cString) CHR(10).
- i2 = i2 + 1.
- END.
- IF i2 > 0 THEN PUT CONTROL '£' CHR(10).
- OUTPUT CLOSE.
-
- RELEASE Besko.
- RELEASE bBesze.
- RUN OPENEXCEL ( INPUT excelAppl,
- INPUT VDateiName,
- INPUT '',
- OUTPUT io ).
- IF NOT io THEN
- DO:
- RUN FEHLER ( INPUT 1040 ).
- RETURN NO-APPLY.
- END.
- Zelle = 'A1'.
- excelAppl:Range(Zelle):SELECT.
- excelAppl:Selection:FormulaR1C1 = 'TEXT;' + VDatenDatei.
- excelAppl:Application:RUN ( 'DateiEinfügen' ).
- Zelle = 'A1'.
- excelAppl:Range(Zelle):SELECT.
- excelAppl:Selection:ColumnWidth = 0.3.
-
- DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR.
-
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_BROWSE bTableWin
- PROCEDURE ENTRY_BROWSE :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- APPLY 'ENTRY' TO {&BROWSE-NAME} IN FRAME {&FRAME-NAME}.
- RETURN NO-APPLY.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL bTableWin
- PROCEDURE EXCEL :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE VARIABLE OK AS LOG NO-UNDO.
- DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO.
- DEFINE VARIABLE Vorlage AS CHARACTER NO-UNDO.
- DEFINE VARIABLE Dokument AS CHARACTER NO-UNDO.
- DEFINE VARIABLE Daten AS CHARACTER NO-UNDO.
- DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE xWgr AS CHARACTER NO-UNDO.
- DEFINE VARIABLE xPgr AS CHARACTER NO-UNDO.
- DEFINE VARIABLE xAgr AS CHARACTER NO-UNDO.
- DEFINE VARIABLE Stern AS CHARACTER NO-UNDO.
- DEFINE VARIABLE FwSprcd AS INTEGER NO-UNDO INIT 1.
- DEFINE VARIABLE iVG AS DECIMAL NO-UNDO.
- DEFINE VARIABLE iGG AS DECIMAL NO-UNDO.
- DEFINE VARIABLE minVG AS DECIMAL NO-UNDO.
- DEFINE VARIABLE minGG AS DECIMAL NO-UNDO.
- DEFINE VARIABLE maxVG AS DECIMAL NO-UNDO.
- DEFINE VARIABLE maxGG AS DECIMAL NO-UNDO.
- DEFINE VARIABLE lWgr AS LOGICAL NO-UNDO INIT TRUE .
- DEFINE VARIABLE lPgr AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE lAgr AS LOGICAL NO-UNDO INIT FALSE.
- DEFINE VARIABLE lVGebinde AS LOGICAL NO-UNDO.
- DEFINE VARIABLE cAlk AS CHARACTER NO-UNDO.
-
- DEFINE BUFFER bArtst FOR Artst.
- DEFINE BUFFER bArtLager FOR ArtLager.
-
- FIND Steuer NO-LOCK
- WHERE Steuer.Firma = D1Firma.
- lVGebinde = (IF Steuer.St09 = 1 THEN TRUE ELSE FALSE).
- RELEASE Steuer.
- Vorlage = 'Bestellvorschlag.xls'.
- Dokument = Vorlage + CHR(01) + Vorlage.
- Daten = 'Bestellvorschlag.csv'.
- excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
- IF NOT VALID-HANDLE(excelAppl) THEN
- DO:
- RUN FEHLER ( INPUT 1035 ).
- RETURN NO-APPLY.
- END.
- DO WHILE TRUE:
- RUN CREATEDATEI ( INPUT Dokument ).
- IF NOT RETURN-VALUE BEGINS 'ERROR-' THEN LEAVE.
- CASE RETURN-VALUE:
- WHEN 'ERROR-PARAMETER' THEN
- DO:
- RUN FEHLER ( INPUT 1036 ).
- RETURN NO-APPLY.
- END.
- WHEN 'ERROR-LOESCHEN' THEN
- DO:
- RUN FEHLER ( INPUT 1037 ).
- RETURN NO-APPLY.
- END.
- WHEN 'ERROR-VORLAGE' THEN
- DO:
- RUN FEHLER ( INPUT 1038 ).
- RETURN NO-APPLY.
- END.
- OTHERWISE
- DO:
- MESSAGE RETURN-VALUE VIEW-AS ALERT-BOX ERROR.
- RETURN NO-APPLY.
- END.
- END CASE.
- LEAVE.
- END.
- Dokument = RETURN-VALUE.
- DO WHILE TRUE:
- RUN CREATEDATEI ( INPUT Daten ).
- IF NOT RETURN-VALUE BEGINS 'ERROR-' THEN LEAVE.
- CASE RETURN-VALUE:
- WHEN 'ERROR-PARAMETER' THEN
- DO:
- RUN FEHLER ( INPUT 1036 ).
- RETURN NO-APPLY.
- END.
- WHEN 'ERROR-LOESCHEN' THEN
- DO:
- RUN FEHLER ( INPUT 1037 ).
- RETURN NO-APPLY.
- END.
- WHEN 'ERROR-VORLAGE' THEN
- DO:
- RUN FEHLER ( INPUT 1038 ).
- RETURN NO-APPLY.
- END.
- OTHERWISE
- DO:
- MESSAGE RETURN-VALUE VIEW-AS ALERT-BOX ERROR.
- RETURN NO-APPLY.
- END.
- END CASE.
- LEAVE.
- END.
- Daten = RETURN-VALUE.
- OUTPUT TO VALUE(Daten).
- FIND Steuer NO-LOCK USE-INDEX Steuer-k1
- WHERE Steuer.Firma = D1Firma NO-ERROR.
- PUT CONTROL '£' CHR(10)
- '£' CHR(10)
- '£' CHR(10)
- '£' CHR(10)
- '£Artnr£Bezeichnung£Jahr£ST£Inhalt£KGeb'
- '£Bestand£Bestellt£Mindest£Mindest£Maximal£Maximal£*'
- '££Verbrauch££Lager£Rück-£Bestellung' CHR(10).
- PUT CONTROL '£Inhalt££'
- 'Alk%'.
- /* ELSE PUT CONTROL 'Kat'. */
- PUT CONTROL '££in cl££££VGeb£GGeb£VGeb£GGeb£*'
- '£KGeb£VGeb£GGeb£Ort£stände£' CHR(10)
- '£' CHR(10).
- FOR EACH tVorschlag,
- FIRST bArtst USE-INDEX Artst-k1
- WHERE bArtst.Firma = D1Firma
- AND bArtst.Artnr = tVorschlag.Artnr
- AND bArtst.Inhalt = tVorschlag.Inhalt
- AND bArtst.Jahr = tVorschlag.Jahr NO-LOCK,
-
- FIRST bArtLager NO-LOCK
- WHERE bArtLager.Firma = D1Firma
- AND bArtLager.Artnr = tVorschlag.Artnr
- AND bArtLager.Inhalt = tVorschlag.Inhalt
- AND bArtLager.Jahr = tVorschlag.Jahr
- AND bArtLager.Lager = tVorschlag.Lager
- BREAK BY tVorschlag.Knr
- BY bArtst.Wg_Grp
- BY bArtst.Prod_Grp
- BY bArtst.Art_Grp
- BY bArtst.Suchbe
- BY bArtst.Artnr
- BY bArtst.Inhalt
- BY bArtst.Jahr :
- IF FIRST-OF ( tVorschlag.Knr ) THEN
- DO:
- FIND Adresse USE-INDEX Adresse-k1
- WHERE Adresse.Firma = AdFirma
- AND Adresse.Knr = tVorschlag.Knr NO-LOCK NO-ERROR.
- PUT CONTROL STRING(Adresse.Knr,'999999 ')
- Adresse.Anzeig_Br CHR(10)
- '£' CHR(10).
- END.
- DO WHILE TRUE:
- IF FIRST-OF ( bArtst.Wg_Grp ) AND
- lWgr THEN
- DO:
- RUN FIND_WARENGRP ( INPUT bArtst.Wg_Grp, OUTPUT cString ).
- IF cString <> '?' AND
- cString <> '' THEN xWgr = ENTRY(2, cString, CHR(01)).
- ELSE xWgr = FILL('?', 10).
- PUT CONTROL xWgr CHR(10).
- END.
-
- IF FIRST-OF ( bArtst.Prod_Grp ) AND
- lPgr THEN
- DO:
- RUN FIND_PRODGRP ( INPUT bArtst.Wg_Grp ,
- INPUT bArtst.Prod_Grp, OUTPUT cString ).
- IF cString <> '?' AND
- cString <> '' THEN xPgr = ENTRY(2, cString, CHR(01)).
- ELSE xPgr = FILL('?', 10).
- PUT CONTROL xPgr CHR(10).
- END.
- IF FIRST-OF ( bArtst.Art_Grp ) AND
- lAgr THEN
- DO:
- RUN FIND_ARTIKGRP( INPUT bArtst.Wg_Grp ,
- INPUT bArtst.Prod_Grp,
- INPUT bArtst.Art_Grp , OUTPUT cString ).
- IF cString <> '?' AND
- cString <> '' THEN xAgr = ENTRY(2, cString, CHR(01)).
- ELSE xAgr = FILL('?', 10).
- PUT CONTROL xAgr CHR(10).
- END.
- LEAVE.
- END.
-
- IF (tVorschlag.Bestand + tVorschlag.Bestellt) <= tVorschlag.Mind_Bestand
- THEN Stern = '*'.
- ELSE Stern = ''.
- IF bArtst.Alk_Gehalt <> 0 THEN cAlk = STRING(bArtst.Alk_Gehalt,">9.99") + '%'.
- ELSE cAlk = ''.
-
- FIND Artbez USE-INDEX Artbez-k1
- WHERE Artbez.Firma = bArtst.Firma
- AND Artbez.Artnr = bArtst.Artnr
- AND Artbez.Inhalt = bArtst.Inhalt
- AND Artbez.Jahr = bArtst.Jahr
- AND Artbez.Sprcd = FwSprcd NO-LOCK NO-ERROR.
- IF NOT AVAILABLE Artbez THEN
- DO:
- FIND FIRST Artbez OF bArtst NO-LOCK NO-ERROR.
- END.
- FIND KGebinde USE-INDEX KGebinde-k1
- WHERE KGebinde.Firma = bArtst.Firma
- AND KGebinde.Geb_Cd = bArtst.KGeb_Cd NO-LOCK NO-ERROR.
- FIND VGebinde USE-INDEX VGebinde-k1
- WHERE VGebinde.Firma = bArtst.Firma
- AND VGebinde.Geb_Cd = bArtst.VGeb_Cd NO-LOCK NO-ERROR.
- FIND GGebinde USE-INDEX GGebinde-k1
- WHERE GGebinde.Firma = bArtst.Firma
- AND GGebinde.Geb_Cd = bArtst.GGeb_Cd NO-LOCK NO-ERROR.
- IF tParam.lVerbrauch THEN
- DO:
- iVG = tVorschlag.Verbrauch / VGebinde.Inhalt NO-ERROR.
- iGG = iVG / GGebinde.Inhalt.
- END.
- IF NOT lVGebinde THEN
- DO:
- minVG = IF VGebinde.Inhalt > 0 THEN bArtLager.Mind_Bestand / VGebinde.Inhalt ELSE 1.
- maxVG = IF VGebinde.Inhalt > 0 THEN bArtLager.Soll_Bestand / VGebinde.Inhalt ELSE 1.
- END.
- ELSE
- DO:
- minVG = IF bArtLager.Mind_Bestand > 0 THEN bArtLager.Mind_Bestand ELSE 0.
- maxVG = IF bArtLager.Soll_Bestand > 0 THEN bArtLager.Soll_Bestand ELSE 0.
- END.
- minGG = IF GGebinde.Inhalt > 0 THEN minVG / GGebinde.Inhalt ELSE 0.
- maxGG = IF GGebinde.Inhalt > 0 THEN maxVG / VGebinde.Inhalt ELSE 0.
-
- PUT CONTROL '£'
- STRING(bArtst.Artnr ,'999999 ')
- STRING(bArtst.Inhalt ,'9999') '£'
- ArtBez.Bez1 '£'.
-
- IF bArtst.Jahr > 0 THEN PUT CONTROL STRING(bArtst.Jahr,'zzzz') '£'.
- ELSE
- DO:
- PUT CONTROL cAlk '£'.
- cAlk = ''.
- END.
-
- CASE bArtst.Ausverk:
- WHEN 0 THEN
- PUT CONTROL 'Vo£'.
- WHEN 1 THEN
- PUT CONTROL 'No£'.
- WHEN 8 THEN
- PUT CONTROL 'Be£'.
- OTHERWISE
- PUT CONTROL '?£'.
- END CASE.
- PUT CONTROL
- STRING(KGebinde.Inhalt ,'zzzz') '£'
- KGebinde.KBez '£'
- STRING(tVorschlag.Bestand ,'->>>>>>>9') '£'
- STRING(tVorschlag.Bestellt ,'->>>>>') '£'
- /* STRING(tVorschlag.Mind_Bestand,'->>>>>>') '£' */
- STRING(minVG ,'->>>>>>') '£'
- STRING(minGG ,'-zzz9.9') '£'
- STRING(maxVG ,'-zzzzzz') '£'
- STRING(maxGG ,'-zzz9.9') '£'
- Stern.
- IF tParam.lVerbrauch THEN
- DO:
- PUT CONTROL '£'
- TRIM(STRING(tVorschlag.Verbrauch,'->>>>>>>>>')) '£'.
- IF VGebinde.Inhalt > 1 THEN PUT CONTROL TRIM(STRING(iVG,'->>>>>9.99')).
- PUT CONTROL '£'.
- IF GGebinde.Inhalt > 1 THEN PUT CONTROL TRIM(STRING(iGG,'->>>>>9.99')).
- END.
- ELSE
- DO:
- PUT CONTROL '£££'.
- END.
- PUT CONTROL '£'
- tVorschlag.LagerOrt
- '£'
- TRIM(STRING(tVorschlag.Rueckstand,'->>>>>>9'))
- '£'
- TRIM(STRING(tVorschlag.Bestellung,'->>>>>>9'))
- CHR(10).
- IF ArtBez.Bez2 <> '' OR
- cAlk <> '' THEN
- DO:
- PUT CONTROL '££'
- ArtBez.Bez2
- '£'
- cAlk CHR(10).
- END.
- DO WHILE TRUE:
- IF (LAST-OF ( bArtst.Art_Grp ) AND lAgr ) OR
- (LAST-OF ( bArtst.Prod_Grp ) AND lPgr ) OR
- (LAST-OF ( bArtst.Wg_Grp ) AND lWgr ) THEN PUT CONTROL '£' CHR(10).
- LEAVE.
- END.
- IF LAST-OF ( tVorschlag.Knr ) THEN PUT CONTROL '£' CHR(10).
-
- END.
-
- OUTPUT CLOSE.
- RUN OPENEXCEL ( INPUT excelAppl,
- INPUT Dokument,
- INPUT '',
- OUTPUT ok ).
- IF NOT ok THEN
- DO:
- RUN FEHLER ( INPUT 1040 ).
- RETURN NO-APPLY.
- END.
- Zelle = 'A1'.
- excelAppl:Range(Zelle):SELECT.
- excelAppl:Selection:FormulaR1C1 = 'TEXT;' + Daten.
- excelAppl:Application:RUN ( 'DateiEinfügen' ).
- RUN EXCEL_KOPF ( INPUT excelAppl ).
- Zelle = 'A1'.
- excelAppl:Range(Zelle):SELECT.
- excelAppl:Selection:ColumnWidth = 0.3.
-
- DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR.
-
- SESSION:SET-WAIT-STATE('').
- MESSAGE 'Soll der Bestellvorschlag als Bestellung erfasst werden? '
- VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO UPDATE OK.
-
- IF NOT OK THEN RETURN.
-
- RUN BESTELLUNG_ERFASSEN.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL_KOPF bTableWin
- PROCEDURE EXCEL_KOPF :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Parameters: <none> */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE INPUT PARAMETER eh AS COMPONENT-HANDLE NO-UNDO.
- DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO.
- FIND Steuer USE-INDEX Steuer-k1
- WHERE Steuer.Firma = D1Firma NO-LOCK NO-ERROR.
- Zelle = 'B1'.
- eh:Range(Zelle):SELECT.
- eh:SELECTION:VALUE = Steuer.Firma1.
- Zelle = 'G1'.
- eh:Range(Zelle):SELECT.
- eh:SELECTION:VALUE = 'Bestellvorschlag'.
- Zelle = 'T1'.
- eh:Range(Zelle):SELECT.
- eh:SELECTION:VALUE = 'Datum : ' + STRING(TODAY,'99.99.9999').
- Zelle = 'B2'.
- eh:Range(Zelle):SELECT.
- eh:SELECTION:VALUE = Steuer.Ort.
- Zelle = 'G2'.
- eh:Range(Zelle):SELECT.
- eh:SELECTION:VALUE = ''.
- Zelle = 'T2'.
- eh:Range(Zelle):SELECT.
- eh:SELECTION:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS').
- IF NOT tParam.lVerbrauch THEN
- DO:
- Zelle = 'O:Q'.
- eh:COLUMNS(Zelle):Select.
- eh:Selection:EntireColumn:HIDDEN = TRUE .
- END.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject bTableWin
- PROCEDURE initializeObject :
-
- { incl/brwinitialize.i }
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SOLLMINDEST bTableWin
- PROCEDURE SOLLMINDEST :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE VARIABLE iDiffTage AS INTEGER NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE BUFFER bBesko FOR Besko.
- rBesko = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR.
- IF rBesko = ? OR
- rBesko = 0 THEN RETURN NO-APPLY.
-
- FIND bBesko NO-LOCK WHERE RECID(bBesko) = rBesko.
-
- EMPTY TEMP-TABLE tParam.
- CREATE tParam.
- ASSIGN
- tParam.iKnr = bBesko.Knr
- tParam.iBesnr = bBesko.Besnr
- tParam.dVon = TODAY - 30
- tParam.dbis = TODAY
- tParam.lOK = FALSE
- tParam.iLager = bBesko.Lager.
- RELEASE bBesko.
-
- lRetVal = DYNAMIC-FUNCTION ('getBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
- IF tParam.dAktion <> ? THEN
- DO:
- iDiffTage = TODAY - tParam.dAktion.
-
- /* ASSIGN */
- /* tParam.dvon = (IF tParam.dvon <> ? THEN tParam.dvon + iDiffTage ELSE TODAY - 30)*/
- /* tParam.dBis = (IF tParam.dbis <> ? THEN tParam.dbis + iDiffTage ELSE TODAY - 30)*/
- /* tParam.dLieferdatum = (IF tParam.dLieferdatum <> ? THEN tParam.dbis + iDiffTage ELSE TODAY - 30)*/
- .
- END.
- RUN 'g-sollmindest-daten.w' ( INPUT-OUTPUT htParam ).
- IF NOT tParam.lOK THEN RETURN.
-
- lRetVal = DYNAMIC-FUNCTION ('setBeskoParameter':U, Progname, INPUT-OUTPUT htParam ) NO-ERROR.
-
- RUN SOLLMINDEST_RECHNEN.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SOLLMINDEST_RECHNEN bTableWin
- PROCEDURE SOLLMINDEST_RECHNEN :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- DEFINE VARIABLE iGGeb AS INTEGER NO-UNDO.
- DEFINE VARIABLE iVGeb AS INTEGER NO-UNDO.
- DEFINE VARIABLE iKGeb AS INTEGER NO-UNDO.
- DEFINE VARIABLE lVGebinde AS LOGICAL NO-UNDO.
-
- DEFINE VARIABLE iPos AS INTEGER NO-UNDO INIT 0.
-
- DEFINE VARIABLE iRest AS INTEGER NO-UNDO.
- DEFINE VARIABLE nProz AS DECIMAL NO-UNDO.
-
- DEFINE BUFFER bSteuer FOR Steuer.
- FIND FIRST tParam.
- FIND bSteuer NO-LOCK
- WHERE bSteuer.Firma = D1Firma.
- lVGebinde = (IF bSteuer.St09 = 1 THEN TRUE ELSE FALSE ).
- RELEASE bSteuer.
-
- EMPTY TEMP-TABLE tBesze.
- FOR EACH ArtLief NO-LOCK
- WHERE ArtLief.Firma = D1Firma
- AND ArtLief.Knr = tParam.iKnr,
-
- FIRST Artst NO-LOCK
- WHERE Artst.Firma = ArtLief.Firma
- AND Artst.Artnr = ArtLief.Artnr
- AND Artst.Inhalt = ArtLief.Inhalt
- AND Artst.Jahr = ArtLief.Jahr
- AND Artst.Ausverk < 8
- AND Artst.Aktiv
- AND Artst.Lager
- AND NOT Artst.Leih_Art :
- iPos = iPos + 5.
- CREATE tBesze.
- ASSIGN
- tBesze.Firma = D1Firma
- tBesze.Besnr = tParam.iBesnr
- tBesze.Pos = iPos
- tBesze.Artnr = Artst.Artnr
- tBesze.Inhalt = Artst.Inhalt
- tBesze.Jahr = Artst.Jahr
- tBesze.GGeb_Cd = Artst.GGeb_Cd
- tBesze.VGeb_Cd = Artst.VGeb_Cd
- tBesze.KGeb_Cd = Artst.KGeb_Cd
- tBesze.iBestand = Artst.Bestand
- .
- END.
-
- FOR EACH tBesze:
-
- FOR EACH Artbw NO-LOCK
- WHERE Artbw.Firma = tBesze.Firma
- AND Artbw.Artnr = tBesze.Artnr
- AND Artbw.Inhalt = tBesze.Inhalt
- AND Artbw.Jahr = tBesze.Jahr
- AND Artbw.Datum >= tParam.dvon
- AND Artbw.Datum <= tParam.dbis
- AND Artbw.Tr_Art < 10
- AND Artbw.Lag_Buch = TRUE.
-
- tBesze.Verbrauch = tBesze.Verbrauch + Artbw.Menge.
- RELEASE Artbw.
- END.
- END.
-
- FOR EACH tBesze:
-
- IF tBesze.Verbrauch < 1 THEN
- DO:
- tBesze.Verbrauch = 0.
- tBesze.Eingang = 0.
- NEXT.
- END.
-
- FIND GGebinde NO-LOCK
- WHERE GGebinde.Firma = tBesze.Firma
- AND GGebinde.Geb_Cd = tBesze.GGeb_Cd NO-ERROR.
- iGGeb = (IF AVAILABLE GGebinde THEN GGebinde.Inhalt ELSE 0).
-
- FIND VGebinde NO-LOCK
- WHERE VGebinde.Firma = tBesze.Firma
- AND VGebinde.Geb_Cd = tBesze.VGeb_Cd NO-ERROR.
- iVGeb = (IF AVAILABLE VGebinde THEN VGebinde.Inhalt ELSE 0).
-
- FIND KGebinde NO-LOCK
- WHERE KGebinde.Firma = tBesze.Firma
- AND KGebinde.Geb_Cd = tBesze.KGeb_Cd NO-ERROR.
- iKGeb = (IF AVAILABLE KGebinde THEN KGebinde.Inhalt ELSE 0).
-
- tBesze.KGeb_Me = tBesze.Verbrauch.
-
- IF iVGeb > 0 THEN tBesze.VGeb_Me = INTEGER((tBesze.Verbrauch + (tBesze.Verbrauch MOD iVGeb)) / iVGeb).
- IF iGGeb > 0 THEN
- DO:
- iRest = tBesze.VGeb_Me MOD iGGeb.
- nProz = iRest * 100 / iGGeb.
- tBesze.GGeb_Me = INTEGER((tBesze.VGeb_Me - (tBesze.VGeb_Me MOD iGGeb)) / iGGeb).
- IF tParam.nAufrunden > 0 AND
- nProz >= tParam.nAufrunden THEN tBesze.GGeb_Me + 1.
- IF tBesze.GGeb_Me > 0 THEN tBesze.VGeb_Me = tBesze.GGeb_Me * iGGeb.
- END.
- ASSIGN
- tBesze.KGeb_Me = (IF tBesze.VGeb_Me > 0 THEN tBesze.VGeb_Me * iVGeb ELSE tBesze.Verbrauch)
- tBesze.MBest = tBesze.KGeb_Me
- tBesze.MGeli = INTEGER((IF tParam.nMindProz = 0 THEN 0 ELSE tBesze.VGeb_Me * tParam.nMindProz / 100 * iVGeb)).
- END.
-
- FOR EACH tBesze:
- FIND ArtLager
- WHERE ArtLager.Firma = tBesze.Firma
- AND ArtLager.Artnr = tBesze.Artnr
- AND ArtLager.Inhalt = tBesze.Inhalt
- AND ArtLager.Jahr = tBesze.Jahr
- AND ArtLager.Lager = tBesze.Lager.
- ASSIGN
- ArtLager.Mind_Bestand = (IF lVGebinde THEN tBesze.MGeli / iVGeb ELSE tBesze.MGeli)
- ArtLager.Soll_Bestand = (IF lVGebinde THEN tBesze.MBest / iVGeb ELSE tBesze.MBest).
- END.
-
- RELEASE Besko.
- RELEASE Besze.
- RELEASE GGebinde.
- RELEASE VGebinde.
- RELEASE KGebinde.
-
- MESSAGE 'Berechnung beendet'
- VIEW-AS ALERT-BOX INFORMATION.
-
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE viewObject bTableWin
- PROCEDURE viewObject :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
-
- DEFINE VARIABLE iBesnr AS INTEGER NO-UNDO.
- DEFINE VARIABLE cRowid AS CHARACTER NO-UNDO.
-
- DEFINE BUFFER bBesko FOR Besko.
- iStatus = DYNAMIC-FUNCTION ('getStatus':U IN hFenster ) NO-ERROR.
- PUBLISH 'GET_CURRENT_BESKO' ( OUTPUT rBesko, OUTPUT iBesnr ).
- RUN SUPER.
-
- DYNAMIC-FUNCTION ('openQuery':U IN hDaten) NO-ERROR.
- IF rBesko = ? OR
- rBesko = 0 THEN RETURN.
-
- FIND bBesko WHERE RECID(bBesko) = rBesko.
- cRowid = STRING (ROWID(bBesko)).
-
- DYNAMIC-FUNCTION ('fetchRowIdent':U IN hDaten, cRowid, ?) NO-ERROR.
-
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- /* ************************ Function Implementations ***************** */
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setZeilenfarbe bTableWin
- FUNCTION setZeilenfarbe RETURNS LOGICAL
- ( ipFarbe AS INTEGER ) :
- /*------------------------------------------------------------------------------*/
- /* Purpose: */
- /* Notes: */
- /*------------------------------------------------------------------------------*/
- { incl/brwsetzeilenfarbe.i }
- END FUNCTION.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
|