X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FCustomerVendorTurnover.pm;h=5a59f1fbdb6bb63e3859fdd7eee636acb130df87;hb=5474d397bbc42ffaea0b51ebb4bb9a4c7afaa881;hp=e7aea0a49d56fafbcd4ea75bf9f3052176f4bfb3;hpb=8233ba0bdaed4ba7312e9180d772385ff221d9b3;p=kivitendo-erp.git diff --git a/SL/Controller/CustomerVendorTurnover.pm b/SL/Controller/CustomerVendorTurnover.pm index e7aea0a49..5a59f1fbd 100644 --- a/SL/Controller/CustomerVendorTurnover.pm +++ b/SL/Controller/CustomerVendorTurnover.pm @@ -16,42 +16,51 @@ sub action_list_turnover { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; - my $cv = $::form->{id} || {}; + my $cv = $::form->{id}; my $open_invoices; if ( $::form->{db} eq 'customer' ) { - $open_invoices = SL::DB::Manager::Invoice->get_all( - query => [customer_id => $cv, - or => [ - amount => { gt => \'paid'}, - amount => { lt => \'paid'}, - ], - ], - with_objects => ['dunnings'], - ); + $open_invoices = SL::DB::Manager::Invoice->get_all( + query => [ + customer_id => $cv, + or => [ + amount => { gt => \'paid'}, + amount => { lt => \'paid'}, + ], + ], + sort_by => 'transdate DESC', + with_objects => [ 'dunnings' ], + ); } else { $open_invoices = SL::DB::Manager::PurchaseInvoice->get_all( - query => [ vendor_id => $cv, - or => [ - amount => { gt => \'paid'}, - amount => { lt => \'paid'}, - ], - ], - sort_by => 'invnumber DESC', + query => [ + vendor_id => $cv, + or => [ + amount => { gt => \'paid'}, + amount => { lt => \'paid'}, + ], + ], + sort_by => 'transdate DESC', ); } my $open_items; if (@{$open_invoices}) { - return $self->render(\'', { type => 'json' }) unless scalar @{$open_invoices}; $open_items = $self->_list_open_items($open_invoices); } - my $open_orders = $self->_get_open_orders(); - return $self->render('customer_vendor_turnover/turnover', { header => 0 }, open_orders => $open_orders, open_items => $open_items, id => $cv); + my $open_orders = $self->_get_open_orders; + return $self->render('customer_vendor_turnover/turnover', { header => 0 }, + open_orders => $open_orders, + open_items => $open_items, + id => $cv, + ); } sub _list_open_items { my ($self, $open_items) = @_; - return $self->render('customer_vendor_turnover/_list_open_items', { output => 0 }, OPEN_ITEMS => $open_items, title => $::locale->text('Open Items') ); + return $self->render('customer_vendor_turnover/_list_open_items', { output => 0 }, + OPEN_ITEMS => $open_items, + title => $::locale->text('Open Items'), + ); } sub action_count_open_items_by_year { @@ -60,22 +69,22 @@ sub action_count_open_items_by_year { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; my $dbh = SL::DB->client->dbh; - my $cv = $::form->{id} || {}; - - my $query = "SELECT EXTRACT (YEAR FROM d.transdate), - count(d.id), - max(d.dunning_level) - FROM dunning d - LEFT JOIN ar a - ON a.id = d.trans_id - LEFT JOIN customer c - ON a.customer_id = c.id - WHERE c.id = $cv - GROUP BY EXTRACT (YEAR FROM d.transdate), c.id - ORDER BY date_part DESC"; - - $self->{dun_statistic} = selectall_hashref_query($::form, $dbh, $query); - $self->render('customer_vendor_turnover/count_open_items_by_year', { layout => 0 }); + my $cv = $::form->{id}; + + my $query = <{dun_statistic} = selectall_hashref_query($::form, $dbh, $query, $cv); + $self->render('customer_vendor_turnover/count_open_items_by_year', { layout => 0 }); } sub action_count_open_items_by_month { @@ -85,21 +94,21 @@ sub action_count_open_items_by_month { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; my $dbh = SL::DB->client->dbh; - my $cv = $::form->{id} || {}; - - my $query = "SELECT CONCAT(EXTRACT (MONTH FROM d.transdate),'/',EXTRACT (YEAR FROM d.transdate)) AS date_part, - count(d.id), - max(d.dunning_level) - FROM dunning d - LEFT JOIN ar a - ON a.id = d.trans_id - LEFT JOIN customer c - ON a.customer_id = c.id - WHERE c.id = $cv - GROUP BY EXTRACT (YEAR FROM d.transdate), EXTRACT (MONTH FROM d.transdate), c.id - ORDER BY EXTRACT (YEAR FROM d.transdate) DESC"; - - $self->{dun_statistic} = selectall_hashref_query($::form, $dbh, $query); + my $cv = $::form->{id}; + + my $query = <{dun_statistic} = selectall_hashref_query($::form, $dbh, $query, $cv); $self->render('customer_vendor_turnover/count_open_items_by_year', { layout => 0 }); } @@ -110,7 +119,7 @@ sub action_turnover_by_month { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; my $dbh = SL::DB->client->dbh; - my $cv = $::form->{id} || {}; + my $cv = $::form->{id}; my ($db, $cv_type); if ($::form->{db} eq 'customer') { $db = "ar"; @@ -120,16 +129,16 @@ sub action_turnover_by_month { $cv_type = "vendor_id"; } my $query = <{turnover_statistic} = selectall_hashref_query($::form, $dbh, $query); + $self->{turnover_statistic} = selectall_hashref_query($::form, $dbh, $query, $cv); $self->render('customer_vendor_turnover/count_turnover', { layout => 0 }); } @@ -139,7 +148,7 @@ sub action_turnover_by_year { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; my $dbh = SL::DB->client->dbh; - my $cv = $::form->{id} || {}; + my $cv = $::form->{id}; my ($db, $cv_type); if ($::form->{db} eq 'customer') { $db = "ar"; @@ -149,16 +158,16 @@ sub action_turnover_by_year { $cv_type = "vendor_id"; } my $query = <{turnover_statistic} = selectall_hashref_query($::form, $dbh, $query); + $self->{turnover_statistic} = selectall_hashref_query($::form, $dbh, $query, $cv); $self->render('customer_vendor_turnover/count_turnover', { layout => 0 }); } @@ -167,17 +176,17 @@ sub action_get_invoices { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; - my $cv = $::form->{id} || {}; + my $cv = $::form->{id}; my $invoices; if ( $::form->{db} eq 'customer' ) { $invoices = SL::DB::Manager::Invoice->get_all( - query => [ customer_id => $cv, ], - sort_by => 'invnumber DESC', + query => [ customer_id => $cv, ], + sort_by => 'transdate DESC', ); } else { $invoices = SL::DB::Manager::PurchaseInvoice->get_all( - query => [ vendor_id => $cv, ], - sort_by => 'invnumber DESC', + query => [ vendor_id => $cv, ], + sort_by => 'transdate DESC', ); } $self->render('customer_vendor_turnover/invoices_statistic', { layout => 0 }, invoices => $invoices); @@ -188,20 +197,24 @@ sub action_get_orders { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; - my $cv = $::form->{id} || {}; + my $cv = $::form->{id}; my $orders; my $type = $::form->{type}; if ( $::form->{db} eq 'customer' ) { $orders = SL::DB::Manager::Order->get_all( - query => [ customer_id => $cv, - quotation => ($type eq 'quotation' ? 'T' : 'F') ], - sort_by => ( $type eq 'order' ? 'ordnumber DESC' : 'quonumber DESC'), + query => [ + customer_id => $cv, + quotation => ($type eq 'quotation' ? 'T' : 'F') + ], + sort_by => 'transdate DESC', ); } else { $orders = SL::DB::Manager::Order->get_all( - query => [ vendor_id => $cv, - quotation => ($type eq 'quotation' ? 'T' : 'F') ], - sort_by => ( $type eq 'order' ? 'ordnumber DESC' : 'quonumber DESC'), + query => [ + vendor_id => $cv, + quotation => ($type eq 'quotation' ? 'T' : 'F') + ], + sort_by => 'transdate DESC', ); } if ( $type eq 'order') { @@ -216,154 +229,190 @@ sub _get_open_orders { return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; my $open_orders; - my $cv = $::form->{id} || {}; + my $cv = $::form->{id}; if ( $::form->{db} eq 'customer' ) { $open_orders = SL::DB::Manager::Order->get_all( - query => [ customer_id => $cv, - closed => 'F', - ], - sort_by => 'ordnumber DESC', - ); + query => [ + customer_id => $cv, + closed => 'F', + ], + sort_by => 'transdate DESC', + ); } else { $open_orders = SL::DB::Manager::Order->get_all( - query => [ vendor_id => $cv, - closed => 'F', - ], - sort_by => 'ordnumber DESC', - ); + query => [ + vendor_id => $cv, + closed => 'F', + ], + sort_by => 'transdate DESC', + ); } return 0 unless scalar @{$open_orders}; - return $self->render('customer_vendor_turnover/_list_open_orders', { output => 0 }, orders => $open_orders, title => $::locale->text('Open Orders') ); + return $self->render('customer_vendor_turnover/_list_open_orders', { output => 0 }, + orders => $open_orders, + title => $::locale->text('Open Orders'), + ); } sub action_get_mails { my ( $self ) = @_; + return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; my $dbh = SL::DB->client->dbh; my $query; my $cv = $::form->{id}; if ( $::form->{db} eq 'customer') { $query = <render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; - my $cv = $::form->{id} || {}; + my $cv = $::form->{id}; my $letters; my $type = $::form->{type}; if ( $::form->{db} eq 'customer' ) { $letters = SL::DB::Manager::Letter->get_all( - query => [ customer_id => $cv, ], + query => [ customer_id => $cv, ], sort_by => 'date DESC', ); } else { $letters = SL::DB::Manager::Letter->get_all( - query => [ vendor_id => $cv, ], + query => [ vendor_id => $cv, ], sort_by => 'date DESC', ); } $self->render('customer_vendor_turnover/letter_statistic', { layout => 0 }, letters => $letters); } -sub _list_articles_by_invoice { -} -sub _list_count_articles_by_year { -} sub check_auth { - $::auth->assert('general_ledger'); + $::auth->assert('show_extra_record_tab_customer | show_extra_record_tab_vendor'); } + 1; + +__END__ + +=encoding utf-8 + +=head1 NAME + +SL::Controller::CustomerVendorTurnover + +=head1 DESCRIPTION + +Gets all kinds of records like orders, request orders, quotations, invoices, emails, letters + +wich belong to customer/vendor and displays them in an extra tab "Records". + +=head1 URL ACTIONS + +=over 4 + +=item C + +Basic action wich displays open invoices and open orders if there are any and shows the tab menu for the other actions + +=item C + +gets and shows a dunning statistic of the customer by month + +=item C + +gets and shows a dunning statistic of the customer by year + +=item C + +gets and shows an invoice statistic of customer/vendor by month + +=item C + +gets and shows an invoice statistic of customer/vendor by year + +=item C + +get and shows all invoices from the customer/vendor in an extra tab + +=item C + +get and shows all orders from the customer/vendor in an extra tab + +=item C + +get and shows all letters from the customer/vendor in an extra tab + +=item C + +get and shows all mails from the customer/vendor in an extra tab + +=back + +=head1 Functions + +=over 4 + +=item C<_get_open_orders> + +retrieves the open orders for customer/vendor to display them + +=item C<_list_open_items> + +retrieves open invoices with their dunnings to display them + +=back + +=head1 BUGS + +None yet. :) + +=head1 AUTHOR + +W. Hahn Ewh@futureworldsearch.netE + +=cut