1 # This file has been auto-generated only because it didn't exist.
 
   2 # Feel free to modify it at will; it will not be overwritten automatically.
 
   4 package SL::DB::Invoice;
 
   8 use List::Util qw(first);
 
  10 use SL::DB::MetaSetup::Invoice;
 
  11 use SL::DB::Manager::Invoice;
 
  13 __PACKAGE__->attr_number($_, places => -2) for qw(amount netamount paid  marge_total marge_percent taxamount);
 
  14 __PACKAGE__->attr_date($_) for qw(transdate gldate datepaid duedate deliverydate orddate quodate);
 
  15 __PACKAGE__->attr_percent($_) for qw(abschlag_percentage);
 
  17 __PACKAGE__->meta->add_relationship(
 
  19     type         => 'one to many',
 
  20     class        => 'SL::DB::InvoiceItem',
 
  21     column_map   => { id => 'trans_id' },
 
  23       with_objects => [ 'part' ]
 
  28 __PACKAGE__->meta->initialize;
 
  32 # it is assumed, that ordnumbers are unique here.
 
  33 sub first_order_by_ordnumber {
 
  36   my $orders = SL::DB::Manager::Order->get_all(
 
  38       ordnumber => $self->ordnumber,
 
  43   return first { $_->is_type('sales_order') } @{ $orders };
 
  46 sub abschlag_percentage {
 
  48   my $order        = $self->first_order_by_ordnumber or return;
 
  49   my $order_amount = $order->netamount               or return;
 
  50   return $self->abschlag
 
  51     ? $self->netamount / $order_amount
 
  57   die 'not a setter method' if @_;
 
  59   return $self->amount - $self->netamount;