Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision d66956d8

Von Sven Schöling vor etwa 1 Jahr hinzugefügt

  • ID d66956d89f96ecb379692f1008b5ed77740a9c9f
  • Vorgänger f70ee6a2
  • Nachfolger 96eba624

RecordLink: support für mehrere ids und close_quotations

Unterschiede anzeigen:

SL/DB/Helper/RecordLink.pm
3 3
use strict;
4 4
use parent qw(Exporter);
5 5

  
6
use Carp qw(croak);
7

  
8
use SL::MoreCommon qw(listify);
9

  
6 10
use constant RECORD_ID            => 'converted_from_record_id';
7 11
use constant RECORD_TYPE_REF      => 'converted_from_record_type_ref';
8 12
use constant RECORD_ITEM_ID       => 'converted_from_record_item_id';
......
12 16

  
13 17

  
14 18
sub link_records {
15
  my ($self, $allowed_linked_records, $allowed_linked_record_items) = @_;
19
  my ($self, $allowed_linked_records, $allowed_linked_record_items, %flags) = @_;
16 20

  
17 21
  my %allowed_linked_records = map {$_ => 1} @$allowed_linked_records;
18 22
  my %allowed_linked_record_items = map {$_ => 1} @$allowed_linked_record_items;
19 23

  
20
  return 1 unless my $from_record_id = $self->{RECORD_ID()};
24
  return 1 unless my $from_record_ids = $self->{RECORD_ID()};
21 25

  
22 26
  my $from_record_type = $self->{RECORD_TYPE_REF()};
23 27
  unless ($allowed_linked_records{$from_record_type}) {
24 28
    croak("Not allowed @{[ RECORD_TYPE_REF ]}: $from_record_type");
25 29
  }
26 30

  
27
  $from_record_type->new(id => $from_record_id)->load
28
    ->link_to_record($self);
31
  for my $id (listify($from_record_ids)) {
32
    my $from_record = $from_record_type->new(id => $id)->load;
33
    $from_record->link_to_record($self);
34

  
35
    close_quotations($from_record, %flags);
36
  }
29 37

  
30 38
  #clear converted_from;
31 39
  delete $self->{$_} for RECORD_ID, RECORD_TYPE_REF;
......
54 62
  delete $record_item->{$_} for RECORD_ITEM_ID, RECORD_ITEM_TYPE_REF;
55 63
}
56 64

  
65

  
66
sub close_quotations {
67
  my ($from_record, %flags) = @_;
68

  
69
  return unless $flags{close_source_quotations};
70
  return unless 'SL::DB::Order' eq  ref $from_record;
71
  return unless $from_record->type =~ /quotation/;
72

  
73
  $from_record->update_attributes(closed => 1);
74
}
75

  
76

  
57 77
1;
58 78

  
59 79
__END__

Auch abrufbar als: Unified diff