SQL Abfrage für Vertragsstatus

Post Reply
LiMa_SE
Posts: 58
Joined: 13. Mar 2017, 15:19
Contact:

SQL Abfrage für Vertragsstatus

Post by LiMa_SE » 28. Jun 2019, 07:45

Hallo,

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

Danke vorab!

User avatar
FrankPree
Posts: 127
Joined: 25. Aug 2011, 08:41
Contact:

Re: SQL Abfrage für Vertragsstatus

Post by FrankPree » 28. Jun 2019, 10:44

Servus,

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

Viele Grüße
Frank

LiMa_SE
Posts: 58
Joined: 13. Mar 2017, 15:19
Contact:

Re: SQL Abfrage für Vertragsstatus

Post by LiMa_SE » 02. Jul 2019, 09:25

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.

User avatar
FrankPree
Posts: 127
Joined: 25. Aug 2011, 08:41
Contact:

Re: SQL Abfrage für Vertragsstatus

Post by FrankPree » 05. Jul 2019, 08:22

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

LiMa_SE
Posts: 58
Joined: 13. Mar 2017, 15:19
Contact:

Re: SQL Abfrage für Vertragsstatus

Post by LiMa_SE » 05. Aug 2019, 09:10

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??

User avatar
FrankPree
Posts: 127
Joined: 25. Aug 2011, 08:41
Contact:

Re: SQL Abfrage für Vertragsstatus

Post by FrankPree » 05. Aug 2019, 13:07

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

Post Reply

Return to “Administration”

Who is online

Users browsing this forum: No registered users and 2 guests