Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9196f75b

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

  • ID 9196f75b35023f4588d9d223f7693a9da68b49f8
  • Vorgänger a409f500
  • Nachfolger 1000a360

Model::Record: erstes Grundgerüst

Unterschiede anzeigen:

SL/Model/Record.pm
1
package SL::Model::Record;
2

  
3
use strict;
4

  
5

  
6

  
7

  
8
sub new {
9
  my ($class, $target_type, %flags) = @_;
10

  
11
  # target_type: der angeforderte typ
12
  # flags: zusätzliche informationen zu der behanldung (soll    )
13

  
14
  # (aus add) neues record mit vorbereitenden sachen wie transdate/reqdate
15
  #
16
  # rückgabe: neues objekt
17
  # fehlerfall: exception
18
}
19

  
20
sub new_from_workflow {
21
  my ($class, $source_objects, $target_type, %flags) = @_;
22

  
23
  # source: entweder das einzelne quellobjekt oder ein arrayref von quellobjekten.
24
  #   - wenn ein arrayref übergeben wurde muss der code testen ob die objekte alle subtype gleich sind und evtl customer/vendor gleich sind
25
  # target type: sollte ein subtype sein. wer das hier implementiert, sollte auch eine subtype registratur bauen in der man subtypes nachschlagen kann
26
  # flags: welche extra behandlungen sollen gemacht werden, z.B. record_links setzen
27

  
28
  # muss prüfen ob diese umwandlung korrekt ist
29
  # muss das entsprechende new_from in den objekten selber benutzen
30
  # und dann evtl nachbearbeitung machen (die bisher im controller stand)
31

  
32
  # new_from_workflow: (aus add_from_*) workflow umwandlung von bestehenden records
33

  
34
  # fehlerfall: exception aus unterliegendem code bubblen oder neue exception werfen
35
  # rückgabe: das neue objekt
36
}
37

  
38
# im Moment nur bei Aufträgen
39
sub increment_subversion {
40
  my ($class, $record, %flags) = @_;
41

  
42
  # erhöht die version des auftrags
43
  # setzt die neue auftragsnummer
44
  # legt OrderVersion objekt an
45
  # speichert
46
  #
47
  # return - nichts
48
  # fehlerfall: exception
49
}
50

  
51
sub delete {
52
  my ($class, $record, %flags) = @_;
53

  
54
  # das hier sollte der code sein der in sub delete aus den controllern liegt
55
  # nicht nur record->delete, sondern auch andere elemente aufräumen
56
  # spool aufräumen
57
  # status aufräumen
58
  # history eintrag
59
  #
60
  # return: nichts
61
  # fehler: exception
62
}
63

  
64
sub save {
65
  my ($class, $record, %params) = @_;
66

  
67
  # record: das zu speichernde objekt
68
  # params:
69
  #   - with_validity_token -> scope
70
  #   - delete custom shipto if empty
71
  #   - item_ids_to_delete
72
  #   - order version behandlung
73

  
74

  
75
  # muss linked_records aus converted_from_* erzeugen -> verschieben in after_save hooks
76
  # wenn aus quotation erstellt, muss beim speichern das angebot geschlossen werden
77
  # wenn aus lieferschein erstellt muss beim speichern delivered setzen (wenn in config aktiviert)
78
  # muss auch link requirement_specs machen (was tut das?)
79
  # set project in linked requirementspecs (nur aufträge -> flag)
80
  #
81
  # history einträge erstellen
82

  
83
  # rückgabe: nichts
84
  # fehler: exception
85
}
86

  
87
sub update_for_save_as_new {
88
  my ($class, $record, %params) = @_;
89

  
90
  # der übergebene beleg wurde mit new_from erstellt und muss nachbearbeitet werden:
91
  # - transadte, reqdate müssen überschrieben werden
92
  # - number muss überschrieben werden
93
  # - employee auf aktuellen setzen
94

  
95
  # return: nichts
96
  # fehler: exception
97
}
98

  
99

  
100
1;
101

  
102
__END__
103

  
104
=encoding utf-8
105

  
106
=head1 NAME
107

  
108
SL::Model::Record - shared computations for orders (Order), delivery orders (DeliveryOrder), invoices (Invoice) and reclamations (Reclamation)
109

  
110
=head1 SYNOPSIS
111

  
112

  
113

  
114
=head1 DESCRIPTION
115

  
116
=head1 BUGS
117

  
118
None yet. :)
119

  
120
=head1 AUTHORS
121

  

Auch abrufbar als: Unified diff