Inhalt von Dynamische Felder (Einfachauswahl) per ACL beschränken

Hilfe zu Znuny Problemen aller Art
Locked
anonxx

Inhalt von Dynamische Felder (Einfachauswahl) per ACL beschränken

Post by anonxx »

Guten Tag,

ich habe vor folgendes zu realisieren und hoffe, dass mich beim letzten Schritt jemand unterstützen kann.
Ich möchte für jedes Ticket eine Information hinterlegen, wie das Ticket abgerechnet (Presales, Gewährleistung, Projekt, Rechnung, Wartungsvertrag) werden soll. Eine Abrechnungsart (Wartungsvertrag) darf nur für bestimmte Tickets ausgewählbar sein, wenn die Kundennummer eine ganz bestimmte ist (Eben nur für Kunden die auch einen Wartungsvertrag haben).

Das dynamische Feld Einfachauswahl habe ich angelegt:
Name: Accounting
Gültigkeit: gültig
Feldtyp: Einfachauswahl
Beschriftung: Abrechnungsart
Objekttyp: Ticket
Feldreihenfolge: 1
Schlüssel: 1 Wert: Gewährleistung
Schlüssel: 2 Wert: Fakturierung
Schlüssel: 3 Wert: Projekt
Schlüssel: 4 Wert: Wartungsvertrag
Schlüssel: 5 Wert: Presales

Das dynmaische Feld habe ich auch in allen notwendigen Ansichten eingefügt, so dass das Agent das Feld sieht und eine Auswahl treffen kann. Noch kann der Agent aber jede Auswahl treffen. Jetzt möchte ich begrenzen, dass der Schlüssel 4 nur dann angezeigt wird, wenn die Kundennummer eine bestimmte ist. Wir haben mehrere Kundennummern, die einen Wartungsvertrag haben.

Das Ausblenden muss ich durch eine ACL machen, wenn ich das richtig verstanden habe.
So sieht meine ACL, als Export, zur Zeit aus:

Code: Select all

---
- ChangeBy: admin
  ChangeTime: 2016-01-07 09:15:22
  Comment: Abrechnung Wartungsvertrag nur für bestimmte Kunden erlauben
  ConfigChange:
    PossibleNot:
      Ticket:
        DynamicField_Accounting:
        - '4'
  ConfigMatch:
    Properties:
      Ticket:
        CustomerID:
        - '[Not]1385000'
  CreateBy: admin
  CreateTime: 2015-12-15 15:55:11
  Description: Die Abrechnungsart "Wartungsvertrag" wird nur für Tickets angezeigt,
    die ausgewählten Kundennummern angehören (Das sind die Kundennummern von Kunden,
    die einen Wartungsvertrag haben).
  ID: 3
  Name: 099-AccountingContract
  StopAfterMatch: 0
  ValidID: 1
Hat nun ein Ticket die Kundennummer 1385000, wird auch richtig der Eintrag "Wartungsvertrag" angezeigt. Hat ein Ticket eine andere Kundenummer, wird der Eintrag Wartungsvertrag nicht angezeigt. Nun mein Problem:
1. Hat ein Ticket keine Kundenummer (das kommt bei uns vor), wird auch dort der Eintrag "Wartungsvertrag" angezeigt.
2. Füge ich eine 2. Kundenunummer in der ACL hinzu, wird nirgends mehr der Eintrag Wartungsvertrag angezeigt. Vermutlich, weil die Bedingungen UND verknüpft sind?!

Mit der 2. Kundennummer sieht die ACL wie folgt aus:

Code: Select all

---
- ChangeBy: admin
  ChangeTime: 2016-01-07 10:32:30
  Comment: Abrechnung Wartungsvertrag nur für bestimmte Kunden erlauben
  ConfigChange:
    PossibleNot:
      Ticket:
        DynamicField_Accounting:
        - '4'
  ConfigMatch:
    Properties:
      Ticket:
        CustomerID:
        - '[Not]1385000'
        - '[Not]123456'
  CreateBy: admin
  CreateTime: 2015-12-15 15:55:11
  Description: Die Abrechnungsart "Wartungsvertrag" wird nur für Tickets angezeigt,
    die ausgewählten Kundennummern angehören (Das sind die Kundennummern von Kunden,
    die einen Wartungsvertrag haben).
  ID: 3
  Name: 099-AccountingContract
  StopAfterMatch: 0
  ValidID: 1
Kann mir jemand sagen wie ich die Probleme lösen kann? Zum 1. Problem hätte ich gerne, dass der Eintrag "Wartungsvertrag" nicht angezeigt wird, wenn keine Kundennummer hintelegt ist. Zum 2. Problem wäre die Lösung, dass ich in der ACL mehrere Kundennummern angeben kann und die Bedingung verodert wird.

Liebe Grüße, Tobias
anonxx

Re: Inhalt von Dynamische Felder (Einfachauswahl) per ACL beschränken

Post by anonxx »

Guten Tag,

gibt es niemanden der mich in irgendeiner Art und Weise unterstützen kann?

Guten Start in den Tag, Tobias
wurzel
Znuny guru
Posts: 3273
Joined: 08 Jul 2010, 22:25
Znuny Version: x.x.x
Real Name: Florian

Re: Inhalt von Dynamische Felder (Einfachauswahl) per ACL beschränken

Post by wurzel »

Hi,

siehe http://otrs.github.io/doc/manual/admin/ ... -reference


Wenn Kunde '1385000', zeige im Dropdown nur 'Wartungsvertrag'

Properties => {
CustomerUser => {
UserCustomerID => ['1385000'],
}
}


PossibleAdd => {
Ticket => {
DynamicField_Vertragstyp => ['Wartungsvertrag'],
}
}



Eine zusätzliche ACL (sollte als erstes ausgeführt werden) wäre:

Blende alles aus, außer '-'

Properties => {
}

Possible => {
Ticket => {
DynamicField_Vertragstyp => ['-'],
}
}



so, oder so ähnlich (ungetestete Beispiele!) ;)

Flo
OTRS 2025 SILVER (Prod)
OTRS 2025 auf Debian 12 (Test)
Znuny 7.x latest version testing auf Debian 12

-- Ich beantworte keine Forums-Fragen PN - No PN please

I won't answer to unfriendly users any more. A greeting and regards are just polite.
anonxx

Re: Inhalt von Dynamische Felder (Einfachauswahl) per ACL beschränken

Post by anonxx »

Hallo Flo,

das war der Schupps in die richtige Richtung, danke!
Habe per ACL erst alles erlaubt, außer den Wert 4.
In einer zusätzlichen ACL erlaube ich den Wert 4, wenn die CustomerID entsprechend ist. Dort kann ich nun auch mehrere CustomerIDs angeben.

Jetzt funktioniert alles so wie es sein soll. Danke!
Locked