1 # @tag: record_links_remove_to_quotation
2 # @description: Verknüpfte Positionen mit Ziel Angebot und dazugehörige Belegverknüpfung entfernen, wenn Quelle Angebot oder Auftrag.
3 # @depends: release_3_6_0
4 package SL::DBUpgrade2::record_links_remove_to_quotation;
9 use parent qw(SL::DBUpgrade2::Base);
16 my $query = qq|SELECT record_links.id AS rl_id, from_oe.id AS from_oe_id, to_oe.id AS to_oe_id FROM record_links
17 LEFT JOIN orderitems from_oi ON (from_oi.id = from_id)
18 LEFT JOIN orderitems to_oi ON (to_oi.id = to_id)
19 LEFT JOIN oe from_oe ON (from_oe.id = from_oi.trans_id)
20 LEFT JOIN oe to_oe ON (to_oe.id = to_oi.trans_id)
21 WHERE from_table = 'orderitems'
22 AND to_table = 'orderitems'
23 AND to_oe.quotation IS TRUE|;
25 my $refs = selectall_hashref_query($::form, $self->dbh, $query);
27 my $query_delete_oi_links = qq|
28 DELETE FROM record_links WHERE id = ?;
30 my $sth_delete_oi_links = $self->dbh->prepare($query_delete_oi_links);
32 my $query_delete_oe_links = qq|
33 DELETE FROM record_links WHERE from_table = 'oe' AND to_table = 'oe' AND from_id = ? AND to_id = ?;
35 my $sth_delete_oe_links = $self->dbh->prepare($query_delete_oe_links);
38 foreach my $ref (@$refs) {
39 $sth_delete_oi_links->execute($ref->{rl_id}) || $::form->dberror($query_delete_oi_links);
40 $oe_links{$ref->{from_oe_id} . ':' . $ref->{to_oe_id}} = 1;
43 for my $from_to (keys %oe_links) {
44 my ($from_oe_id, $to_oe_id) = split ':', $from_to;
45 $sth_delete_oe_links->execute($from_oe_id, $to_oe_id) || $::form->dberror($query_delete_oe_links);