Page 1 of 1

SQL Abfrage für Vertragsstatus

Posted: 28. Jun 2019, 07:45
by LiMa_SE
Hallo,

wie lautet das SQL Statement um mir in der SQL Datenbank Verträge mit dem Status gelöscht anzuzeigen?

Danke vorab!

Re: SQL Abfrage für Vertragsstatus

Posted: 28. Jun 2019, 10:44
by FrankPree
Servus,

was soll denn der Vertragssstatus 'gelöscht' sein?
Was ist denn das gewünschte Ziel der Anzeige?

Viele Grüße
Frank

Re: SQL Abfrage für Vertragsstatus

Posted: 02. Jul 2019, 09:25
by LiMa_SE
Verträge können wie alle CIs mit der Aktion "Löschen" gelöscht werden. Seit kurzem verschwinden die Verträge aber nicht im Datennirwana sondern erhalten den Status "Gelöscht" und sind ausgegraut, aber immer noch vorhanden. Ziel ist es, dass die Verträge wirklich gelöscht werden und kein Datenrest übrig bleibt.

Re: SQL Abfrage für Vertragsstatus

Posted: 05. Jul 2019, 08:22
by FrankPree
Servus,

ich hab' das im Testsystem bei mir in der UUX und der LegacyUI ausprobiert. Wenn ich einen Vertrag lösche, dann bleibt da bei mir nichts übrig. In der Datendefinition wird der Eintrag entfernt und dann ist da nix ausgegraut.

Es gibt laut Matrix42 HelpCenter eine Option dafür in den Globalen Systemeinstellungen, das könntest Du mal prüfen:
The Deleted status is not available by default. If you want to use it, open Administration > Global System Settings > Contracts in the old console and select the checkbox for Deleted in Available Status Values for Contracts.
Quelle:
https://help.matrix42.com/50Software_As ... ract_items

Und um die Eingangsfrage noch korrekt zu beantworten:
Wenn die Option gelöscht in den globalen Systemeinstellungen aktiviert ist, lautet das SQL Statement zu den Verträgen zum Beispiel so:

Code: Select all

select
com.state,
cpos_ci.DisplayString,
*
from SPSContractClassBase ctr 
inner join SPSCommonClassBase com on ctr.[Expression-ObjectID] = com.[Expression-ObjectID]
inner join SPSCommonPickupObjectStatus cpos on com.state = cpos.value
left join [SPSCommonPickupObjectStatus-CI] cpos_ci on cpos.id = cpos_ci.Owner and cpos_ci.LCID=7
where com.state = 10659
LG
Frank

Re: SQL Abfrage für Vertragsstatus

Posted: 05. Aug 2019, 09:10
by LiMa_SE
Hallo Frank,

vielen Dank! Es lag tatsächlich an der Einstellung in den Globalen Systemeinstellung. Ich habe den Status "Gelöscht" für Verträge erlaubt. Das führt dazu, dass wenn Verträge mit der Aktion "Löschen" gelöscht werden. Bleiben Sie erhalten und werden nur auf den Status "Gelöscht" gesetzt. Leider kann man ansonsten gar nichts mehr mit dem Datensatz machen. Alles ist ausgegraut. Auch die erneute Statusveränderung ist nicht mehr möglich. Daher wollte ich die Verträge, die sich in diesem Status befinden, aus der Datenbank löschen. Spricht da was dagegen dein Statement zu nutzen und aus dem Select ein Delete zu machen? Es sind nur 4 Datensätze betroffen und es gibt keine Assets oder Positionen, die am Vertrag hängen. Es gibt lediglich eine Zuordnung zu einer OU. Verkraftet das die DB oder könnte es da zu Problemen mit der Verknüpfung kommen??

Re: SQL Abfrage für Vertragsstatus

Posted: 05. Aug 2019, 13:07
by FrankPree
Servus,

da spricht dagegen, dass durch ein "einfaches" Delete in der Datendefinition die Referenzen nicht gelöscht würden.
Wenn, dann müsstest Du das Script erweitern/bzw. abändern.
Eine Möglichkeit zum Löschen Deiner vier Verträge wäre folgende:
Du nimmst den 'Gelöscht'-Status raus. Danach gehst Du in die Aktionen und suchst Dir die Aktion zum Löschen von Verträgen (Assistent für spezielle Operationen beim Löschen eines Vertrages).
Dort entfernst Du temporär den JavaScript Eintrag zum Filtern des Objekts

Code: Select all

!(($object.Status_Value || $object.SPSCommonClassBase && $object.SPSCommonClassBase.State) == 10659);
Dann gehst Du in die Verträge, löscht Deine vier Objekte quasi auf dem regulären Weg. Danach setzt Du das JavaScript einfach wieder ein.
So musst Du nicht in der Datenbank rumlöschen.

LG
Frank