]> wagnertech.de Git - mfinanz.git/blobdiff - SL/DB/Inventory.pm
Inventory: before hooks für trans_id, shippingdate und employee
[mfinanz.git] / SL / DB / Inventory.pm
index 98d505d703dbedcad8ea5fbdeddc959a417f4fa1..a2b571ce6b02537e43bc3b0ca7c244c3cb44e7ae 100644 (file)
@@ -6,8 +6,48 @@ package SL::DB::Inventory;
 use strict;
 
 use SL::DB::MetaSetup::Inventory;
+use SL::DB::Manager::Inventory;
 
-# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
-__PACKAGE__->meta->make_manager_class;
+__PACKAGE__->meta->initialize;
 
+__PACKAGE__->before_save(\&_before_save_create_trans_id);
+__PACKAGE__->before_save(\&_before_save_set_shippingdate);
+__PACKAGE__->before_save(\&_before_save_set_employee);
+
+# part accessor is badly named
+sub part {
+  goto &parts;
+}
+
+sub _before_save_create_trans_id {
+  my ($self, %params) = @_;
+
+  return 1 if $self->trans_id;
+
+  my ($trans_id) = selectrow_query($::form, SL::DB->client->dbh, qq|SELECT nextval('id')|);
+
+  $self->trans_id($trans_id);
+
+  return 1;
+}
+
+sub _before_save_set_shippingdate {
+  my ($self, %params) = @_;
+
+  return 1 if $self->shippingdate;
+
+  $self->shippingdate(DateTime->now);
+
+  return 1;
+}
+
+sub _before_save_set_employee {
+  my ($self, %params) = @_;
+
+  return 1 if $self->emplyee_id;
+
+  $self->employee(SL::DB::Manager::Employee->current);
+
+  return 1;
+}
 1;