Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ce886488

Von Werner Hahn vor mehr als 1 Jahr hinzugefügt

  • ID ce8864886cb35ff990df695195da829fdf0a3ce4
  • Vorgänger 24585a52
  • Nachfolger d3364ab7

S:M:R: POD

Unterschiede anzeigen:

SL/Model/Record.pm
my $type_data_proxy = SL::DB::Helper::TypeDataProxy->new(ref $new_record, $subtype);
$new_record->reqdate($type_data_proxy->defaults('reqdate'));
# new_record: der neuerstellte objekt
# flags: zusätzliche informationen zu der behanldung (soll )
# (aus add) neues record mit vorbereitenden sachen wie transdate/reqdate
#
# rückgabe: neues objekt
# fehlerfall: exception
return $new_record;
}
sub new_from_workflow {
my ($class, $source_object, $target_subtype, %flags) = @_;
# source: ein quellobjekt
# target type: sollte ein subtype sein. wer das hier implementiert, sollte auch eine subtype registratur bauen in der man subtypes nachschlagen kann
# flags: welche extra behandlungen sollen gemacht werden, z.B. record_links setzen
# (muss prüfen ob diese umwandlung korrekt ist)
# muss das entsprechende new_from in den objekten selber benutzen
# und dann evtl nachbearbeitung machen (die bisher im controller stand)
# new_from_workflow: (aus add_from_*) workflow umwandlung von bestehenden records
# fehlerfall: exception aus unterliegendem code bubblen oder neue exception werfen
# rückgabe: das neue objekt
$flags{destination_type} = $target_subtype;
my %defaults_flags = (
no_linked_records => 0,
......
sub new_from_workflow_multi {
my ($class, $source_objects, $target_subtype, %flags) = @_;
# source: ein arrayref von quellobjekten.
# target type: sollte ein subtype sein. wer das hier implementiert, sollte auch eine subtype registratur bauen in der man subtypes nachschlagen kann
# flags: welche extra behandlungen sollen gemacht werden, z.B. record_links setzen
# muss prüfen ob diese umwandlung korrekt ist
# muss das entsprechende new_from_multi in den objekten selber benutzen
# und dann evtl nachbearbeitung machen (die bisher im controller stand)
# new_from_workflow_multi: (aus action_edit_collective) workflow umwandlung von bestehenden records
# fehlerfall: exception aus unterliegendem code bubblen oder neue exception werfen
# rückgabe: das neue objekt
my %subtype_to_type = (
# Order
......
return $target_object;
}
# im Moment nur bei Aufträgen
sub increment_subversion {
my ($class, $record, %flags) = @_;
# erhöht die version des auftrags
# setzt die neue auftragsnummer
# legt OrderVersion objekt an
# speichert
#
# return - nichts
# fehlerfall: exception
$record->increment_version_number if $record->type_data->features('subversions');
return;
}
sub delete {
my ($class, $record, %params) = @_;
my ($class, $record, %flags) = @_;
my $errors = [];
my $db = $record->db;
......
}) || push(@{$errors}, $db->error);
die t8("Errors delete records:") . "\n" . join("\n", @{$errors}) . "\n" if scalar @{$errors};
# das hier sollte der code sein der in sub delete aus den controllern liegt
# nicht nur record->delete, sondern auch andere elemente aufräumen
# spool aufräumen
# status aufräumen
# history eintrag
#
# return: nichts
# fehler: exception
}
sub _get_history_snumbers {
......
sub save {
my ($class, $record, %params) = @_;
# record: das zu speichernde objekt
# params:
# - with_validity_token -> scope
# - delete custom shipto if empty
# - item_ids_to_delete
# - order version behandlung
# muss linked_records aus converted_from_* erzeugen -> verschieben in after_save hooks
# wenn aus quotation erstellt, muss beim speichern das angebot geschlossen werden
# wenn aus lieferschein erstellt muss beim speichern delivered setzen (wenn in config aktiviert)
# muss auch link requirement_specs machen (was tut das?)
# set project in linked requirementspecs (nur aufträge -> flag)
#
# history einträge erstellen
# rückgabe: nichts
# fehler: exception
$record->calculate_prices_and_taxes() if $record->type_data->features('price_tax');
foreach my $item (@{ $record->items }) {
......
Invoices are not supported as of now, but are planned for the future.
The old deliveryorder C<sales_delivery_order> and C<purchase_delivery_order> must be implemented
in the new DeliveryOrder Controller
=head1 METHODS
=over 4
=item C<update_after_new>
Creates a new record_object by record_type and sub_type
set reqdate and transdate if required by type_data
Returns the record object.
=item C<new_from_workflow>
Expects source_object, target_object, can have flags.
Creates a new record from source_subtype by target_type->new_from(source_record)
Set default flag no_link_record to false and looks up the correct target_type
Throws an error if target_type not exists.
Returns the new record_object.
=item C<new_from_workflow_multi>
Expects an arrayref with source_objects and a target_object, can have flags.
Creates a new record_objects from one or more source_objects. By now only for orders.
Looks up the correct target_type throws an error if it doesn't exist.
Return the new record_object.
=item C<increment_subversion>
Only orders.
Increments the record's subversion number.
TODO: check type data if this is allowed/supported for this record and trow exception or error
=item C<delete>
Expects a record to delete.
Deletes the whole record and puts an entry in the history.
Cleans up the spool directory.
Dies and throws an error if dberror.
TODO: check status order when old deliveryorder (do) will be implemented.
=item C<save>
Expects a record to save and params to handles stuff like validity_token, custom_shipto,
items_to_delete, close objects, requirement_specs
=over 2
=item * L<params:>
=over 4
=item * C<with_validity_token -E<gt> scope>
=item * C<delete custom shipto if empty>
=item * C<items_to_delete>
=item * C<objects_to_close>
=item * C<link_requirement_specs_linking_to_created_from_objects>
=item * C<set_project_in_linked_requirement_specs>
=back
Sets an entry in history
Dies and throws error when error
=back
=back
=over 4
=item C<clone_for_save_as_new>
Expects the saved record and the record to change.
Sets the actual employee.
Sets also new transdate, new reqdate and an empty recordnumber if not allready changed in record to change.
=item C<_save_history>
Expects a record for id, addition for text (SAVED,...)
Expects a record for id, addition for text (SAVED,DELETED,...)
=item C<_get_history_snumbers>
Expects a record returns snumber for history_entry
=back

Auch abrufbar als: Unified diff