**BRegieAL.prg - Regie-Zentrum fr Bestattungsverwaltung // Verwaltung der Artikel und Leistungen #include "Gra.ch" #include "Xbp.ch" #include "Appevent.ch" #include "Appedit.ch" #include "Appbrow.ch" #include "Font.ch" FUNCTION ArtikelEingabe( oDlg1 ) LOCAL oDlg, nEvent, mp1, mp2, oSle, oPbSuch, oXbp LOCAL aSizeDesktop := AppDesktop():currentSize() LOCAL nBSb := aSizeDesktop[1] LOCAL nBSh := aSizeDesktop[2] // folgende Zahlen-Werte basieren auf 800x600: LOCAL nH := nBSb/800 // Korrekturfaktor fr tats„chliche Aufl”sung LOCAL nV := nBSh/600, nHV := nH/nV //+07.06.2011 17:28 LOCAL nOldArea := Select() // folgende Variablen mssen individuell gesetzt werden ( in R3 und R5 ): PRIVATE nBezZeil := 1 , nF := 0 PRIVATE bezZ1 := "bez" , bezZ2 := "bez2" // Artikel in Art-> PRIVATE bezeichZ1 := "bezeich" , bezeichZ2 := "bezeich2" // Artikel in AUftr PRIVATE nBezWb1 := 30 , nBezWe1 := 30 , nBezWb2 := 10 , nBezWe2 := 30 SELECT 6 cArtLei := 6->art_lei // cBFont := IIf( nBSb < 700, "8.Arial", "10.Arial" ) oDlg := AKDialog():new( AppDesktop(), oDlg1 ) oDlg:tasklist := .T. oDlg:title := "Eingabe/Žnderung von Artikeln und Leistungen" oDlg:maxButton := .F. oDlg:border := XBPDLG_RAISEDBORDERTHIN_FIXED oDlg:create(,, {10,int(30*nV)}, {int(770*nH),int(500*nV)} ) // oDlg:drawingArea:setFontCompoundName( cBFont ) oDlg:drawingArea:setColorBG( GRA_CLR_BLUE ) oCB := oDlg:drawingArea oSle := XbpStatic():new( oDlg:drawingArea, , {int(400*nH),int(220*nV)}, {int(90*nH),int(25*nV)}) oSle:caption := "~Artikel-Nr.:" oSle:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT oSle:create() oSle := XbpSLE():new( oDlg:drawingArea, , {int(500*nH),int(220*nV)}, {int(80*nH),int(25*nV)}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) oSle:bufferLength := 6 oSle:group := XBP_WITHIN_GROUP oSle:dataLink := {|x| IIf( PCOUNT()==0, Trim(cArtLei), cArtLei := x ) } oSle:create():setData( cArtLei ) oPbSuch := XbpPushButton():new( oDlg:drawingArea, , {int(600*nH),int(220*nV)}, {int(40*nH),int(25*nV)} ) oPbSuch:caption := "~Such" oPbSuch:group := XBP_WITHIN_GROUP oPbSuch:create() oPbSuch:activate := {|| DbSeek( Trim(oSle:editBuffer()),.T. ), ; // 05.05.2008 13:26 Softseek SetAppFocus( oSle ) } APPBROWSE ; PARENT oDlg:drawingArea ; POSITION TOP ; FONT &cBFont ; SIZE 45,100 PERCENT APPFIELD art_lei CAPTION "Art-Nr" WIDTH 5 APPFIELD kennz CAPTION "Gr." WIDTH 2 APPFIELD ausg CAPTION "E/F" WIDTH 2 APPFIELD bez CAPTION "Rg-Leistung (Zeile1)" WIDTH 20 APPFIELD bezf1 CAPTION "Auf-Leistung (Zeile1)" WIDTH 20 APPFIELD bezf2 CAPTION "Auf-Leistung (Zeile2)" WIDTH 10 // APPFIELD &bezZ1 CAPTION "Leistung (Zeile1)" WIDTH nbezWb1 // IF nBezZeil == 2 // APPFIELD &bezZ2 CAPTION "Leistung (Zeile2)" WIDTH nBezWb2 // ENDIF APPFIELD &v_p_s CAPTION "VK-Preis" WIDTH 8 APPFIELD mwst_schl CAPTION "MwSt" WIDTH 2 // APPFIELD Konto CAPTION "Konto" WIDTH 4 APPFIELD &e_p_s CAPTION "EK-Preis" WIDTH 8 APPFIELD &u_z CAPTION "Umsatz" WIDTH 8 APPDISPLAY MODELESS APPEDIT into oEdit ; PARENT oDlg:drawingArea ; POSITION BOTTOM ; FONT &cBFont ; SEEK ArtSuch( Trim(oSle:editBuffer()), oDlg ) ; TRIGGER "ArtEinfg" ON INSERT ; TRIGGER "ArtAend" ON UPDATE ; TRIGGER "ArtEntf" ON DELETE ; SIZE 45,100 PERCENT APPFIELD art_lei INTO oEdit CAPTION "Art-Nr" WIDTH 5 APPFIELD kennz INTO oEdit CAPTION "Gruppe" WIDTH 2 COMMENT "1 Kennbuchstaben angeben" APPFIELD ausg INTO oEdit CAPTION "E/F" WIDTH 2 COMMENT "1 fr Eigenleistung / 2 fr Fremdleistung" APPFIELD bez INTO oEdit CAPTION "Rg-Leistung (Zeile1)" WIDTH 30 APPFIELD bezf1 INTO oEdit CAPTION "Auf-Leistung (Zeile1)(bzw. Rg-Leist. Zeile2)" WIDTH 30 APPFIELD bezf2 INTO oEdit CAPTION "Auf-Leistung (Zeile2)" WIDTH 10 // APPFIELD &bezZ1 INTO oEdit CAPTION "Leistung (Zeile1)" WIDTH nbezWe1 // IF nBezZeil == 2 // APPFIELD &bezZ2 INTO oEdit CAPTION "Leistung (Zeile2)" WIDTH nBezWe2 // ENDIF APPFIELD &v_p_s INTO oEdit CAPTION "VK-Preis" WIDTH 6 APPFIELD &v_p_sh INTO oEdit CAPTION "VK-Pr.-H" WIDTH 6 APPFIELD mwst_schl INTO oEdit CAPTION "MwSt" WIDTH 2 COMMENT "2 fr 7% / 3 fr 16%" APPFIELD &e_p_s INTO oEdit CAPTION "EK-Preis" WIDTH 6 // APPFIELD Konto INTO oEdit CAPTION "Konto" WIDTH 4 APPFIELD &u_z INTO oEdit CAPTION "Umsatz" WIDTH 8 APPFIELD mgjahr INTO oEdit CAPTION "Jahresmenge" WIDTH 4 APPFIELD bestand INTO oEdit CAPTION "Bestand" WIDTH 4 APPFIELD mind_best INTO oEdit CAPTION "Mind.-Best." WIDTH 4 APPFIELD lief INTO oEdit CAPTION "Lieferant" WIDTH 5 APPFIELD liefbez INTO oEdit CAPTION "Bezeichnung" WIDTH 15 APPFIELD leing INTO oEdit CAPTION "Eing.-Datum" WIDTH 8 APPDISPLAY oEdit MODELESS oDlg:setModalState( XBP_DISP_APPMODAL ) oDlg:show() oFocus := SetAppFocus( oSle ) DO WHILE nEvent <> xbeP_Close nEvent := AppEvent( @mp1, @mp2, @oXbp ) IF nEvent == xbeP_User nRec := Recno() 6->(DbGoBottom()) 6->(DbGoTop()) 6->(DbGoto(nRec)) ENDIF IF nEvent == xbeM_LbClick DO CASE CASE oXbp == oSle SetAppFocus( oSle ) CASE oXbp:isDerivedFrom( "XbpPushButton" ) .AND. ValType(oXbp:caption) == "N" IF oXbp:caption == 27 oEdit:SAVE() ENDIF ENDCASE ENDIF IF nEvent == xbeP_Keyboard DO CASE CASE mp1 == xbeK_RETURN PostAppEvent( xbeP_Activate,,, oXbp) CASE mp1 == xbeK_ALT_K SetAppFocus( oSle ) CASE mp1 == xbeK_ALT_S PostAppEvent( xbeP_Activate,,, oPbSuch) CASE mp1 == xbeK_ESC PostAppEvent( xbeP_Close) CASE mp1 == xbeK_F10 IF oXbp:isDerivedFrom( "XbpSle" ) .and. oXbp != oSle oEdit:save() SetAppFocus( oDlg ) ENDIF PostAppEvent( xbeP_Close) CASE mp1 == xbeK_F1 ModalDialog( (cDatver+"f1_AL.dbf"), "Bedienungshinweise", oDlg, 680*nH, 460*nV ) CASE mp1 == xbeK_F2 oEdit:goTop() CASE mp1 == xbeK_F3 oEdit:goPrevious() CASE mp1 == xbeK_F4 oEdit:goNext() CASE mp1 == xbeK_F5 oEdit:goBottom() CASE mp1 == xbeK_F6 oEdit:SEEK() CASE mp1 == xbeK_F7 .and. oXbp:isDerivedFrom( "XbpSle" ) oEdit:save() SetAppFocus( oEdit ) CASE mp1 == xbeK_F7 oEdit:edit() CASE mp1 == xbeK_F8 oEdit:insert() CASE mp1 == xbeK_F9 oEdit:DELETE() PostAppEvent( xbeP_User ) ENDCASE ENDIF oXbp:handleEvent( nEvent, mp1, mp2 ) ENDDO oDlg:setModalState( XBP_DISP_MODELESS ) oDlg:destroy() SetAppFocus( oFocus ) GO TOP DbCommit() Select &nOldArea RETURN .T. // ArtSuch wird gebraucht, wegen des Rckgabewertes APPOP_PROCEED !! FUNCTION ArtSuch( cArtLei, oDlg1 ) DbSeek( cArtLEi ) RETURN APPOP_PROCEED FUNCTION ArtEinfg(aRechPos) RETURN APPOP_PROCEED FUNCTION ArtAend(aRechPos) RETURN APPOP_PROCEED FUNCTION ArtEntf(aRechPos) IF AScan( aRechPos, {|x| ! Empty(x) } ) == 0 RETURN APPOP_PROCEED ENDIF IF ConfirmBox( oCB, "Soll der Datensatz gel”scht werden?", ; "Datensatz l”schen", ; XBPMB_YESNO, ; XBPMB_QUESTION ) == XBPMB_RET_NO RETURN APPOP_IGNORE ENDIF RETURN APPOP_PROCEED