X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/c092c963921436b418f42ed73bece53878a61bf0..8e99e751c3617f03dbbca3210b1bf127aceabb40:/SL/Controller/CustomerVendorTurnover.pm diff --git a/SL/Controller/CustomerVendorTurnover.pm b/SL/Controller/CustomerVendorTurnover.pm index bd327daa4..e705a0868 100644 --- a/SL/Controller/CustomerVendorTurnover.pm +++ b/SL/Controller/CustomerVendorTurnover.pm @@ -4,6 +4,7 @@ use parent qw(SL::Controller::Base); use SL::DBUtils; use SL::DB::AccTransaction; use SL::DB::Invoice; +use SL::DB::Order; use SL::DB; __PACKAGE__->run_before('check_auth'); @@ -15,18 +16,34 @@ sub action_list_turnover { my $cv = $::form->{id} || {}; my $open_invoices; + if ( $::form->{db} eq 'customer' ) { $open_invoices = SL::DB::Manager::Invoice->get_all( query => [customer_id => $cv, - paid => {lt_sql => 'amount'}, + or => [ + amount => { gt => \'paid'}, + amount => { lt => \'paid'}, + ], ], 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', + ); + } my $open_items; if (@{$open_invoices}) { return $self->render(\'', { type => 'json' }) unless scalar @{$open_invoices}; $open_items = $self->_list_open_items($open_invoices); } - return $self->render('customer_vendor_turnover/turnover', { header => 0 }, 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 { @@ -39,7 +56,7 @@ sub action_count_open_items_by_year { 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 $dbh = SL::DB->client->dbh; my $cv = $::form->{id} || {}; @@ -63,7 +80,7 @@ sub action_count_open_items_by_month { 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 $dbh = SL::DB->client->dbh; my $cv = $::form->{id} || {}; @@ -88,52 +105,134 @@ 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 $dbh = SL::DB->client->dbh; my $cv = $::form->{id} || {}; - my $query = "SELECT CONCAT(EXTRACT (MONTH FROM transdate),'/',EXTRACT (YEAR FROM transdate)) AS date_part, + my ($db, $cv_type); + if ($::form->{db} eq 'customer') { + $db = "ar"; + $cv_type = "customer_id"; + } else { + $db = "ap"; + $cv_type = "vendor_id"; + } + my $query = <{turnover_statistic} = selectall_hashref_query($::form, $dbh, $query); $self->render('customer_vendor_turnover/count_turnover', { layout => 0 }); } sub action_turnover_by_year { - 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 $dbh = SL::DB->client->dbh; my $cv = $::form->{id} || {}; - my $query = "SELECT EXTRACT (YEAR FROM transdate) as date_part, + my ($db, $cv_type); + if ($::form->{db} eq 'customer') { + $db = "ar"; + $cv_type = "customer_id"; + } else { + $db = "ap"; + $cv_type = "vendor_id"; + } + my $query = <{turnover_statistic} = selectall_hashref_query($::form, $dbh, $query); $self->render('customer_vendor_turnover/count_turnover', { layout => 0 }); } + sub action_get_invoices { my ($self) = @_; return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::form->{id}; my $cv = $::form->{id} || {}; - my $invoices = SL::DB::Manager::Invoice->get_all( - query => [ customer_id => $cv, ], - sort_by => 'invnumber DESC', - ); + my $invoices; + if ( $::form->{db} eq 'customer' ) { + $invoices = SL::DB::Manager::Invoice->get_all( + query => [ customer_id => $cv, ], + sort_by => 'invnumber DESC', + ); + } else { + $invoices = SL::DB::Manager::PurchaseInvoice->get_all( + query => [ vendor_id => $cv, ], + sort_by => 'invnumber DESC', + ); + } $self->render('customer_vendor_turnover/invoices_statistic', { layout => 0 }, invoices => $invoices); } + +sub action_get_orders { + my ($self) = @_; + + return $self->render('generic/error', { layout => 0 }, label_error => "list_transactions needs a trans_id") unless $::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'), + ); + } 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'), + ); + } + if ( $type eq 'order') { + $self->render('customer_vendor_turnover/order_statistic', { layout => 0 }, orders => $orders); + } else { + $self->render('customer_vendor_turnover/quotation_statistic', { layout => 0 }, orders => $orders); + } +} + +sub _get_open_orders { + my ( $self ) = @_; + + 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} || {}; + + if ( $::form->{db} eq 'customer' ) { + $open_orders = SL::DB::Manager::Order->get_all( + query => [ customer_id => $cv, + closed => 'F', + ], + sort_by => 'ordnumber DESC', + ); + } else { + $open_orders = SL::DB::Manager::Order->get_all( + query => [ vendor_id => $cv, + closed => 'F', + ], + sort_by => 'ordnumber 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') ); +} + sub _list_articles_by_invoice { } sub _list_count_articles_by_year {