X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/ad65bf1b5dc884673dec87e50fc2616e6262b663..60e1aa5531badb7f7ff81b6ebfc577060b8f3cfe:/SL/Presenter/Record.pm diff --git a/SL/Presenter/Record.pm b/SL/Presenter/Record.pm index 20d4d5fd6..64cb21ba7 100644 --- a/SL/Presenter/Record.pm +++ b/SL/Presenter/Record.pm @@ -10,23 +10,32 @@ our @EXPORT = qw(grouped_record_list empty_record_list record_list); use Carp; use List::Util qw(first); +sub _arrayify { + my ($array) = @_; + return [] if !defined $array; + return $array if ref $array; + return [ $array ]; +} + sub grouped_record_list { my ($self, $list, %params) = @_; + %params = map { exists $params{$_} ? ($_ => $params{$_}) : () } qw(selectable with_columns); + my %groups = _group_records($list); my $output = ''; - $output .= _sales_quotation_list( $self, $groups{sales_quotations}) if $groups{sales_quotations}; - $output .= _sales_order_list( $self, $groups{sales_orders}) if $groups{sales_orders}; - $output .= _sales_delivery_order_list( $self, $groups{sales_delivery_orders}) if $groups{sales_delivery_orders}; - $output .= _sales_invoice_list( $self, $groups{sales_invoices}) if $groups{sales_invoices}; - $output .= _ar_transaction_list( $self, $groups{ar_transactions}) if $groups{ar_transactions}; + $output .= _sales_quotation_list( $self, $groups{sales_quotations}, %params) if $groups{sales_quotations}; + $output .= _sales_order_list( $self, $groups{sales_orders}, %params) if $groups{sales_orders}; + $output .= _sales_delivery_order_list( $self, $groups{sales_delivery_orders}, %params) if $groups{sales_delivery_orders}; + $output .= _sales_invoice_list( $self, $groups{sales_invoices}, %params) if $groups{sales_invoices}; + $output .= _ar_transaction_list( $self, $groups{ar_transactions}, %params) if $groups{ar_transactions}; - $output .= _request_quotation_list( $self, $groups{purchase_quotations}) if $groups{purchase_quotations}; - $output .= _purchase_order_list( $self, $groups{purchase_orders}) if $groups{purchase_orders}; - $output .= _purchase_delivery_order_list($self, $groups{purchase_delivery_orders}) if $groups{purchase_delivery_orders}; - $output .= _purchase_invoice_list( $self, $groups{purchase_invoices}) if $groups{purchase_invoices}; - $output .= _ar_transaction_list( $self, $groups{ar_transactions}) if $groups{ar_transactions}; + $output .= _request_quotation_list( $self, $groups{purchase_quotations}, %params) if $groups{purchase_quotations}; + $output .= _purchase_order_list( $self, $groups{purchase_orders}, %params) if $groups{purchase_orders}; + $output .= _purchase_delivery_order_list($self, $groups{purchase_delivery_orders}, %params) if $groups{purchase_delivery_orders}; + $output .= _purchase_invoice_list( $self, $groups{purchase_invoices}, %params) if $groups{purchase_invoices}; + $output .= _ar_transaction_list( $self, $groups{ar_transactions}, %params) if $groups{ar_transactions}; return $output || $self->empty_record_list; } @@ -54,6 +63,14 @@ sub record_list { croak "Wrong type for 'columns' argument: not an array reference"; } + my %with_columns = map { ($_ => 1) } @{ _arrayify($params{with_columns}) }; + if ($with_columns{record_link_direction}) { + push @columns, { + title => $::locale->text('Link direction'), + data => sub { $_[0]->{_record_link_direction} eq 'from' ? $::locale->text('Row was source for current record') : $::locale->text('Row was created from current record') }, + }; + } + my %column_meta = map { $_->name => $_ } @{ $list->[0]->meta->columns }; my %relationships = map { $_->name => $_ } @{ $list->[0]->meta->relationships }; @@ -141,7 +158,7 @@ sub _group_records { } sub _sales_quotation_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -155,11 +172,12 @@ sub _sales_quotation_list { [ $::locale->text('Project'), 'globalproject', ], [ $::locale->text('Closed'), 'closed' ], ], + %params, ); } sub _request_quotation_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -173,11 +191,12 @@ sub _request_quotation_list { [ $::locale->text('Project'), 'globalproject', ], [ $::locale->text('Closed'), 'closed' ], ], + %params, ); } sub _sales_order_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -192,11 +211,12 @@ sub _sales_order_list { [ $::locale->text('Project'), 'globalproject', ], [ $::locale->text('Closed'), 'closed' ], ], + %params, ); } sub _purchase_order_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -211,11 +231,12 @@ sub _purchase_order_list { [ $::locale->text('Project'), 'globalproject', ], [ $::locale->text('Closed'), 'closed' ], ], + %params, ); } sub _sales_delivery_order_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -230,11 +251,12 @@ sub _sales_delivery_order_list { [ $::locale->text('Delivered'), 'delivered' ], [ $::locale->text('Closed'), 'closed' ], ], + %params, ); } sub _purchase_delivery_order_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -249,11 +271,12 @@ sub _purchase_delivery_order_list { [ $::locale->text('Delivered'), 'delivered' ], [ $::locale->text('Closed'), 'closed' ], ], + %params, ); } sub _sales_invoice_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -268,11 +291,12 @@ sub _sales_invoice_list { [ $::locale->text('Paid'), 'paid' ], [ $::locale->text('Transaction description'), 'transaction_description' ], ], + %params, ); } sub _purchase_invoice_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -287,11 +311,12 @@ sub _purchase_invoice_list { [ $::locale->text('Paid'), 'paid' ], [ $::locale->text('Transaction description'), 'transaction_description' ], ], + %params, ); } sub _ar_transaction_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -304,11 +329,12 @@ sub _ar_transaction_list { [ $::locale->text('Paid'), 'paid' ], [ $::locale->text('Transaction description'), 'transaction_description' ], ], + %params, ); } sub _ap_transaction_list { - my ($self, $list) = @_; + my ($self, $list, %params) = @_; return $self->record_list( $list, @@ -321,6 +347,7 @@ sub _ap_transaction_list { [ $::locale->text('Paid'), 'paid' ], [ $::locale->text('Transaction description'), 'transaction_description' ], ], + %params, ); }