OBS/Makros und Scripting/Anwendungsbereiche/ListenStable

Aus OBS Wiki
Zur Navigation springen Zur Suche springen


Listen Stable

Konfigurationen für den zusätzlichen Reiter im Listen-Stable

Personenstamm

Reiter 6 Intern vorhanden wenn in der Scribt_Lib ein Eintrag STABLE_PERSONEN vorhanden ist.
Das Makro muss folgende Funktion beinhalten, bei der die Personennummer als Parameter übergeben wird:

 function Stable_Intern(oMyDB:TxDB; cPsNr:String):String;

Beispiel: Preisliste des Kunden anzeigen

//----------------------------------------------------------------------
// Unit Name: Stable_Intern
// Author:    Jr
// Date:      14.04.2021
// Purpose:   Diese Funktion wird im Stable der Personen ausgeführt
//            Achtung nur oMyDB Benutzen, da Nebenläufig
// History:   
//----------------------------------------------------------------------

function Stable_Intern(oMyDB:TxDB; cPsNr:String):String;
var cSQL : String;
    qTmp : TxFQuery;
begin
    cSQL := 'SELECT * FROM ARTI_PL_NAME' + 
            'WHERE pl_aktiv = "1"'  +
            'AND   pl_personenpreis = "1"' +
            'AND    pl_nr = ' + DB_SqlVal(cPsNr);
         
    Result := 'Preisliste der Person'+CRLF+CRLF;
    
    if (DB_SOpen(oDB, cSQL, qTmp)) then begin
    
       While (not qTmp.Eof()) do begin
           AddToken(Result, PadR(qTmp.A2C('pl_nr'), 10, ' ') + ' ' + 
                            PadR(qTmp.A2C('pl_name'), 40, ' ') +
                            CRLF);    
           qTmp.Next;
       End;
       
    End;
    DB_Close(qTmp);
    
end;

Beispiel: Anzeige von Benutzerfeldern

//-----------------------------------------------------------------------------
// Unit Name: Stable_Intern
// Author:    Jr
// Date:      14.04.2021
// Purpose:   Diese Funktion wird im Stable der Personen ausgeführt
// History:   
//-----------------------------------------------------------------------------

function Stable_Intern(oMyDB:TxDB; cPsNr:String):String;
var cSQL      : String;
    qTmp      : TxFQuery;
    cFeldBez  : String;
    cFeldName : String;
    cUID      : String;
    cData     : String;
    cWhere    : String;
begin
    cSQL := 'SELECT tb_feldname, tb_feldbez FROM TB_DEF'+
            ' WHERE tb_tabname = "PERSSTA"'+
            ' AND tb_infonr = ""'+
            ' AND tb_feldlevel <= '+DB_SqlVal(oSystem.Userlevel)+
            ' ORDER BY tb_feldsort';
         
    //Result := 'Benutzer Felder'+CRLF;
    
    if (DB_SOpen(oMyDB, cSQL, qTmp)) then begin
    
        cUID := DB_ReadUID(oMyDB, 'PERSSTA', 'ps_nr='+DB_SqlVal(cPsNr));
    
        While (not qTmp.Eof) do begin
        
           cFeldBez  := qTmp.A2C('tb_feldbez');
           cFeldName := qTmp.A2C('tb_feldname');
           cData     := DB_ReadSQLSysUID(oMyDB, 'USER_PERSSTA', cFeldName, cUID);
       
           AddToken(Result, PadR(cFeldBez, 30, ' ') + ' ' + 
                            PadL(cData   , 40, ' '),
                            CRLF); 
              
           qTmp.Next;
        End;
       
    End;
    DB_Close(qTmp);
end;

Material / Lieferanten

Reiter 2 Intern vorhanden wenn in der Scribt_Lib ein Eintrag STABLE_LIEFERMATER vorhanden ist.
Das Makro muss folgende Funktion beinhalten, in der die UID des Materials als Parameter übergeben wird:

 function Stable_Intern(oMyDB:TxDB; cMater_SysUID:String):String;

Beispiel

//---------------------------------------------------------------------
//  Procedure: Stable_Intern
//  Author:    Hoheneder
//  Date:      23-11-2021
//---------------------------------------------------------------------

function Stable_Intern(oDB:TxDB; cMater_SysUID:String):String;
var cLiefNr  : String;
    cData    : String;
begin
    //Rückgabetext zurücksetzen
    Result := '';
    //Personennummer des Lieferanten aus dem Materialeintrag auslesen
    cLiefNr := DB_ReadSQLValue(oDB,'MATER','ma_liefnr','sys_uid='+DB_SqlVal(cMater_SysUID));
    //Bemerkung aus dem Personenstamm auslesen anhand der Personennummer
    cData   := DB_ReadSQLValue(oDB,'PERSSTA','ps_bemerk','ps_nr='+DB_SQLVal(cLiefNr));
    //Bemerkungstext dem Rückgabetext hinzufügen
    Addtoken(Result, PadR('Bemerkung:', 20, ' ')+' '+PadR(cData, 40, ' '), CRLF);
end;


Geräte

Reiter 2 Intern vorhanden wenn in der Scribt_Lib ein Eintrag STABLE_GERAETE vorhanden ist.
Das Makro muss folgende Funktion beinhalten, in der die UID des Gerätes als Parameter übergeben wird:

 function Stable_Intern(oMyDB:TxDB; cUID:String):String;

Beispiel

//-----------------------------------------------------------------------------
// Unit Name: Stable_Intern
// Author:    Jr
// Date:      04.01.2022
// Purpose:   Diese Funktion wird im Stable der Geräteliste ausgeführt
//            Achtung nur oMyDB Benutzen, da Nebenläufig
// History:   
//-----------------------------------------------------------------------------

function Stable_Intern(oMyDB:TxDB; cUID:String):String;
var cSQL  : String;
    qTmp  : TxFQuery;
begin
    cSQL := 'SELECT g_artnr FROM GERAET'+
            ' WHERE sys_uid = '+DB_SqlVal(cUID);
         
    Result := '';
    
    if (DB_SOpen(oMyDB, cSQL, qTmp)) then begin
        result  := 'Artikel-Nr : '+qTmp.A2C('g_artnr');
    End;
    DB_Close(qTmp);
    
end;