# Bereinigungsskript

Dieses Skript bereinigt etliche Daten, die dadurch entstehen, wenn nachträglich Adresshierarchien gebildet werden.

```sql
-- Rechnungen die bei einer Nebenadresse sind zur Hauptadresse umhängen.
-- dies kann zum Beispiel passieren, wenn man Hierarchie Bilden verwendet 
-- und eine Hauptadresse dabei zur Nebenadresse wird.
print 'Rechnungen von Nebenadressen zur Hauptadresse umhängen'
update View_Belege
set SuperId = a.VNummer
from 
View_Belege b, View_Adressen a 
where a.id = b.SuperId and a.Haupt = 'N' and b.Belegart = 'Ausgangsrechnung'

print 'Bei Tickets, die bei Nebenadressen sind die Nebenadresse als Ansprechpartner setzen'
update View_Tickets
set [Kunde Ansprechpartner] = Kunde
from 
View_Tickets t, View_Adressen a 
where a.id = t.Kunde and a.Haupt = 'N' and t.[Kunde Ansprechpartner] is null

print 'Tickets von Nebenadressen zur Hauptadresse umhängen'
update View_Tickets
set Kunde = a.VNummer
from 
View_Tickets t, View_Adressen a 
where a.id = t.Kunde and a.Haupt = 'N'

-- Betreut von zu den Hauptadressen umhängen
print 'Betreut von Partner von Nebenadressen zur Hauptadresse umhängen'
update View_Adressen
	set [Betreut von Partner] = p.VNummer
from 
	View_Adressen, View_Adressen p
where 
	View_Adressen.[Betreut von Partner] = p.ID and p.Haupt = 'N'

print 'Betreut von Distributor von Nebenadressen zur Hauptadresse umhängen'
update View_Adressen
	set [Betreut von Distributor] = d.VNummer
from 
	View_Adressen, View_Adressen d
where 
	View_Adressen.[Betreut von Distributor] = d.ID and d.Haupt = 'N'

-- Gibt es Leistungen die beim Kunden, als Partner oder Distri nicht bei der Hauptadresse 
-- sondern beim Ansprechpartner liegen? 
-- dies kann zum Beispiel passieren, wenn man Hierarchie Bilden verwendet 
-- und eine Hauptadresse dabei zur Nebenadresse wird.
print 'Leistung von Nebenadressen zur Hauptadresse umhängen'
update View_Leistung
set superid = a.VNummer
from 
View_Leistung l, View_Adressen a 
where a.id = l.SuperId and a.Haupt = 'N'

print 'Leistungspartner von Nebenadressen zur Hauptadresse umhängen'
update View_Leistung
set Partner = a.VNummer
from 
View_Leistung l, View_Adressen a 
where a.id = l.Partner and a.Haupt = 'N'

print 'Leistungsdistributor von Nebenadressen zur Hauptadresse umhängen'
update View_Leistung
set Distributor = a.VNummer
from 
View_Leistung l, View_Adressen a 
where a.id = l.Distributor and a.Haupt = 'N'


```

Mit Vorsicht prüfen

```sql
select * from View_TicketAngebote where not Ticket in (select id from View_Tickets)
select * from View_TicketAngebotPositionen where not TicketAngebot in (select id from View_TicketAngebote)
select * from View_TicketBeobachter where not Ticket in (select id from View_Tickets)
select * from View_TicketDokumente where not Ticket in (select id from View_Tickets)
select * from View_TicketKommentare where not Ticket in (select id from View_Tickets)
select * from View_Zeitbuchung where not Ticket in (select id from View_Tickets)

-- Doppelte Beobachter löschen
delete from View_TicketBeobachter where id in
(
    select min(id) from View_TicketBeobachter group by Benutzer, Ticket having count(*) > 1
)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://time-plus.doc.plustools.de/administratives/bereinigungsskript.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
