WSSP: Feld im CaseDetails-Fenster per jScript befüllen

Welcome to the POB User Group Online Community! Forums PUG DACH WSSP: Feld im CaseDetails-Fenster per jScript befüllen

Tagged: , ,

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #3362
    Stefan Reichelt
    Participant

    Hallo allerseits,

    ich habe gerade eine kleine Knobelei vor mir, bei der mir bestimmt jemand mit Scriptingkenntnissen weiterhelfen kann:

    Per custom.js erzeuge ich momentan in einer WSSP-Instanz einen alternativen Lösungsbutton im Fall-Detailfenster, der den Nutzer fragt, ob er den Fall wirklich lösen möchte. Nun habe ich aber manchmal Falltypen dahinter, die einen Lösungscode erfordern, und den würde ich noch vor dem Absenden gern gleich mitgeben. Bei Falltypen, die keinen Lösungscode erfordern, gebe ich diesen per Data Action nachträglich mit. Aber hier schlägt die Validierung bereits zu, bevor die Data Action etwas ausfüllen kann.
    Das Feld selbst will ich aber gesperrt lassen, weil die betroffenen Enduser auf keinen Fall Problem- oder Lösungscodes in existierenden Tickets ändern dürfen.

    Das ist mein aktuelles Script (die Texte sind übrigens auf Spanisch):

    $(document).ready(function() {
    	$('#BtnSolveCase').hide();
    	$('#BtnUpdateCase').before($('<input id="btnCPXSolveCase" value="Resolver el caso" class="ui-button ui-widget ui-state-default ui-corner-all SolutionButton" name="BtnCPXSolveCase" type="button" role="button" aria-disabled="false">'
    	));
    
    	$('#btnCPXSolveCase').on('click',function(){
    		var bool = confirm(unescape("%BFQuieres resolver el caso%3F"));
    		if(bool){
    			$('#BtnSolveCase').click();
    		}
    	});	
    });

    Ist es möglich, hier vor dem simulierten Klick noch das Feld ClosureCode z.B. mit der ID „CusSelfSolution“ zu befüllen, damit die Validierung zufrieden ist?

    Danke schonmal für eure Anregungen!

    Grüße,

    Stefan

    #3365
    ms
    Keymaster

    Hallo Stefan,

    Es ist möglich mit PK, weil es die Standard werte ist.

    Brauchst du nur ein bisschen Code vor die Click Event, wie diese:
    $(‘#ctl03_ClosureCode’).val(‘ClosureCode PK‘);

    Unter die Beispiel, (bitte ersetzen mit gewünschte Closure Code PK)

    $(document).ready(function() {

    $(‘#BtnSolveCase’).hide();
    $(‘#BtnUpdateCase’).before($(‘<input id=”btnCPXSolveCase” value=”Resolver el caso” class=”ui-button ui-widget ui-state-default ui-corner-all SolutionButton” name=”BtnCPXSolveCase” type=”button” role=”button” aria-disabled=”false”>’
    ));

    $(‘#btnCPXSolveCase’).on(‘click’,function(){
    var bool = confirm(unescape(“%BFQuieres resolver el caso%3F”));
    var ClosureCode = $(‘#ctl03_ClosureCode’).val();
    if(bool){
    $(‘#ctl03_ClosureCode’).val(‘83487620’); // PK von Closure Code
    $(‘#BtnSolveCase’).click();
    }
    });
    });

    #3366
    Stefan Reichelt
    Participant

    Genial, toller Ansatz!
    Leider funktioniert es bei mir noch nicht richtig. Ich habe deinen Code 1:1 kopiert und den PK-Wert ersetzt, aber der ClosureCode wird nicht in das Feld geschrieben. Wenn ich es richtig sehe, existiert #ctl03_ClosureCode gar nicht.

    Testweise habe ich mir mal die CaseCategory angesehen: Dort lässt sich das Feld mit
    $('#CaseCategory').val();
    sauber auslesen. Dann habe ich es mit

    var ClosureCode = $('#ClosureCode').val();

    In einem gelösten Fall probiert und den richtigen Wert angezeigt bekommen.
    Was aber nicht ganz funktioniert, ist

    $('#ClosureCode').val('87868535');

    Wenn ich den val() eine Zeile weiter abfrage, steht er wirklich drin. Aber beim Click-Event kommt trotzdem die Validierungsmeldung, dass ClosureCode leer sei. Es sieht so aus, als ob der Wert beim Update einfach nicht mit gesendet wird.

    Ich habe die Funktion mal auf $(‘#BtnUpdateCase’).click(); umgestellt, um in Ruhe testen zu können. Bislang habe ich es aber noch nicht geschafft, dass der Wert nach dem Update wirklich in den Fall geschrieben wurde.

    Grüße,

    Stefan

    #3367
    ms
    Keymaster

    Hallo Stefan,

    Vielleicht wäre es einfacher wann du mit einem normalen Validation Trigger arbeitest, anstatt der Falltyp Validierung.
    Dann konntest du in der Condition einfach der „POB web end Benutzer“ überprüfen und nur validieren wenn die Änderungen in Full Client erfolgt.
    Konntest du so setzen?

    Ich habe die andere Lösung im WSSP ausprobiert und es läuft zwar, aber nur wenn das Control als generisch gesetzt ist.

    #3368
    Stefan Reichelt
    Participant

    Hallo Ricardo,

    ja, an diese Möglichkeit habe ich auch schon gedacht. In einer anderen Instanz habe ich es sogar schon so umgesetzt, aber ich wollte gern eine Lösung pro Instanz ermöglichen. Ich prüfe mal verschiedene Optionen. Die Jscript-Variante wäre fantastisch gewesen, weil ich damit sogar zwei verschiedene Lösungsbuttons mit unterschiedlichen Lösungscodes (canceled, resolved) hinterlegen könnte. Wenn ich das Feld im Enterprise Manager auf Generisch setze und einen Filter hinterlege, ist es ja in allen anderen Instanzen generisch und mit den spanischen Lösungscodes vorgefiltert – was definitiv nicht gewünscht ist.

    Wenn es mit jScript an dieser Stelle nicht geht, greife ich aber auf jeden Fall auf die Triggervariante zurück. Da weiß ich zumindest, dass es zuverlässig funktioniert.

    Danke für deine Ideen!

    Grüße,

    Stefan

    #3369
    ms
    Keymaster

    ok.

    Wenn ein versteckt feld hier passt, konntest du folgendes machen:

    1. Control als “Generic” setzen
    2. Die <td>’s von Closure Code verstecken, unter die Code:

    $(document).ready(function() {

    $(‘#ctl03_ClosureCodeLbl’).parent().hide(); //bitte hier die Id von die <span> drin die <td class=”LabelCell”> eintragen
    $(‘#ctl03_ClosureCodeLbl’).parent().next().hide();

    $(‘#BtnSolveCase’).hide();
    $(‘#BtnUpdateCase’).before($(‘<input id=”btnCPXSolveCase” value=”Resolver el caso” class=”ui-button ui-widget ui-state-default ui-corner-all SolutionButton” name=”BtnCPXSolveCase” type=”button” role=”button” aria-disabled=”false”>’
    ));

    $(‘#btnCPXSolveCase’).on(‘click’,function(){
    var bool = confirm(unescape(“%BFQuieres resolver el caso%3F”));

    if(bool){
    $(‘input[name=”ctl03$ClosureCode”]’).val(‘83489745’); // $(‘input[name=”ctl03$ClosureCode”]’) ersetzt die id Selector von früher, so sollte es funktionieren
    $(‘#BtnSolveCase’).click();
    }
    });
    });

    #3370
    Stefan Reichelt
    Participant

    Hm, ganz verstecken möchte ich das Control eigentlich nicht. Und wenn ich es auf Generic setze, muss ich es in allen anderen Instanzen wieder deaktivieren.

    Was sehr praktisch wäre: Per jscript das eigentlich deaktivierte Feld wieder auf Generisch setzen, so dass es nur in dieser einen Instanz beschreibbar ist. Geht das?

    #3371
    ms
    Keymaster

    hum… Wahrscheinlich würde es aufwendig…

    Wenn das Control Disabled ist, ist die Lookup nicht bestanden.
    Es ist benötigt, um das Wert zu setzen.

    Deshalb ist das Control als “Generisch” notwendig hier.
    Du konntest auch die Control Berechtigungen in Security Settings kontrollieren, falls nur bestimmte kontakte es sehen sollten.

    #3372
    Stefan Reichelt
    Participant

    Hm, individuelle Security Settings will ich bei vielen tausend Kunden nicht unbedingt einsetzen. Das wird einfach zu schwer zu administrieren.

    Also setze ich wohl doch lieber die Triggervariante ein – oder ich entscheide mich dafür, das Feld doch noch auf generisch zu setzen und es dann in allen anderen Instanzen per custom script zu deaktivieren.

    Wie setze ich es am besten auf Disabled? Das Attribut readonly=”readonly” hinzufügen? Oder doch einfach per CSS?

Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.