Hallo,
jetzt sitze ich schon seit Stunden an dieser einfachen Abfrage und finde einfach den Fehler nicht. Der im folgenden aufgeführte Codeschnipsel soll anhand eines Ausgangsthemas und dreier verschiedener Benutzerdefinierten Felder ein bestimmtes Zielthema auswählen. Warum auch immer, es funktioniert nicht. Ich glaube es hat etwas mit der Abfrage der Benutzerdefinierten Felder zu tun. Wenn ich die raus nehme, dann klappt es.
Auch wenn ich mir die Logik im Expertenmodus zusammenklicke klappt es. (Code siehe unten.) Anscheinend sehe ich den Wald vor lauter Bäumen nicht und würde mich daher freuen wenn jemand einen Tipp hat.
Code
- if AnsiSameText(Item.TopicCache.GetNameById(Item.TopicRef), 'Widerruf ohne Grund') then
- if (Item.UserFields.ItemsByName['b_ABexchange'].AsBoolean) or (Item.UserFields.ItemsByName['b_ABrefund'].AsBoolean) then
- if FbmRegExMatch(Item.ColorCache.GetNameById(Item.ColorRef), 'Artikel ist ungeöffnet|Artikel ist wie original') then
- Item.TopicRef := 127 // im Warenlager
- else
- if FbmRegExMatch(Item.ColorCache.GetNameById(Item.ColorRef), 'Artikel ist gebraucht|Artikel ist unvollständig|Artikel ist repariert') then
- Item.TopicRef := 126 // im Retourenlager
- else
- if FbmRegExMatch(Item.ColorCache.GetNameById(Item.ColorRef), 'Artikel ist schrott|Artikel ist unrepariert') then
- Item.TopicRef := 124 // entsorgt
- else
- if (Item.UserFields.ItemsByName['b_ABreturnToCustomer'].AsBoolean) then
- Item.TopicRef := 125 // beim Kunden
- else
und hier der Expertenmodus-Code:
Code
- if (Assigned(Item.TopicCache) and (AnsiSameText(Item.TopicCache.GetNameById(Item.TopicRef), 'Defekt im Rahmen der Gewährleistung'))) then
- begin
- if (Item.UserFields.Exists('b_ABexchange') and (Item.UserFields.ItemsByName['b_ABexchange'].AsBoolean)) then
- begin
- if (Item.UserFields.Exists('b_ABrefund') and (Item.UserFields.ItemsByName['b_ABrefund'].AsBoolean)) then
- begin
- if (Assigned(Item.ColorCache) and (FbmRegExMatch(Item.ColorCache.GetNameById(Item.ColorRef), 'Artikel ist ungeöffnet|Artikel ist wie original'))) then
- begin
- Item.TopicRef := 130;
- end
- else
- begin
- if (Assigned(Item.ColorCache) and (FbmRegExMatch(Item.ColorCache.GetNameById(Item.ColorRef), 'Artikel ist gebraucht|Artikel ist unvollständig|Artikel ist repariert'))) then
- begin
- Item.TopicRef := 129;
- end
- else
- begin
- if (Assigned(Item.ColorCache) and (FbmRegExMatch(Item.ColorCache.GetNameById(Item.ColorRef), 'Artikel ist schrott|Artikel ist unrepariert'))) then
- begin
- Item.TopicRef := 128;
- end;
- end;
- end;
- end
- else
- begin
- if (Item.UserFields.Exists('b_ABreturnToCustomer') and (Item.UserFields.ItemsByName['b_ABreturnToCustomer'].AsBoolean)) then
- begin
- Item.TopicRef := 105;
- end;
- end;
- end
- else
- begin
- if (Item.UserFields.Exists('b_ABreturnToCustomer') and (Item.UserFields.ItemsByName['b_ABreturnToCustomer'].AsBoolean)) then
- begin
- Item.TopicRef := 105;
- end;
- end;
- end;
Lieben Gruß