Revision 2e6fe034
Von Bernd Bleßmann vor mehr als 2 Jahren hinzugefügt
| SL/Controller/CustomerVendorTurnover.pm | ||
|---|---|---|
|     $self->{turnover_statistic} = \@new_stats;
 | ||
|   }
 | ||
|  | ||
|   if (@{$self->{turnover_statistic}} > 1) {
 | ||
|     my $query = <<SQL;
 | ||
|       SELECT $date_part_select as date_part,
 | ||
|          count(id)             as count,
 | ||
|          sum(amount)           as amount,
 | ||
|          sum(netamount)        as netamount,
 | ||
|          sum(paid)             as paid
 | ||
|       FROM $db WHERE $cv_type IS NOT NULL
 | ||
|       GROUP BY $group_by
 | ||
|       ORDER BY $order_by
 | ||
| SQL
 | ||
|     my $overall_turnover = selectall_hashref_query($::form, $dbh, $query);
 | ||
|     foreach my $stat (@{$self->{turnover_statistic}}) {
 | ||
|       my $overall_stat = first { $_->{date_part} eq $stat->{date_part} } @$overall_turnover;
 | ||
|       $stat->{overall_netamount} = 0;
 | ||
|       $stat->{'overall_' . $_} = $overall_stat->{$_} for keys %$overall_stat;
 | ||
|     }
 | ||
|   }
 | ||
|  | ||
|   if ($::request->type eq 'json') {
 | ||
|     $self->render(\ SL::JSON::to_json($self->{turnover_statistic}), { layout => 0, type => 'json', process => 0 });
 | ||
| js/kivi.CustomerVendorTurnover.js | ||
|---|---|---|
|             'rgba(255, 159, 64, 1)'
 | ||
|           ],
 | ||
|           borderWidth: 1
 | ||
|         },
 | ||
|         {
 | ||
|           label: kivi.t8('Overall Net.Turnover'),
 | ||
|           data: data,
 | ||
|           type: 'line',
 | ||
|           backgroundColor: 'black',
 | ||
|         }]
 | ||
|       },
 | ||
|       options: {
 | ||
| ... | ... | |
|         },
 | ||
|         parsing: {
 | ||
|           xAxisKey: 'date_part',
 | ||
|           yAxisKey: 'netamount'
 | ||
|           yAxisKey: ['netamount', 'overall_netamount']
 | ||
|         },
 | ||
|         onClick: (e) => {
 | ||
|           const canvasPosition = Chart.helpers.getRelativePosition(e, chart);
 | ||
| js/locale/de.js | ||
|---|---|---|
| "Oct":"Okt",
 | ||
| "October":"Oktober",
 | ||
| "Ok":"Ok",
 | ||
| "Overall Net.Turnover":"Gesamter Netto-Umsatz",
 | ||
| "Part picker":"Artikelauswahl",
 | ||
| "Paste":"Einfügen",
 | ||
| "Paste template":"Vorlage einfügen",
 | ||
| js/locale/en.js | ||
|---|---|---|
| "Oct":"",
 | ||
| "October":"",
 | ||
| "Ok":"",
 | ||
| "Overall Net.Turnover":"",
 | ||
| "Part picker":"",
 | ||
| "Paste":"",
 | ||
| "Paste template":"",
 | ||
| locale/de/all | ||
|---|---|---|
|   'Out of balance transaction!' => 'Buchung ist nicht ausgeglichen!',
 | ||
|   'Out of balance!'             => 'Summen stimmen nicht überein!',
 | ||
|   'Output Number Format'        => 'Zahlenformat (Ausgabe)',
 | ||
|   'Overall Net.Turnover'        => 'Gesamter Netto-Umsatz',
 | ||
|   'Overdue invoices'            => 'Überfällige Rechnungen',
 | ||
|   'Overdue sales quotations and requests for quotations' => 'Überfällige Angebote und Preisanfragen',
 | ||
|   'Override'                    => 'Override',
 | ||
| locale/en/all | ||
|---|---|---|
|   'Out of balance transaction!' => '',
 | ||
|   'Out of balance!'             => '',
 | ||
|   'Output Number Format'        => '',
 | ||
|   'Overall Net.Turnover'        => '',
 | ||
|   'Overdue invoices'            => '',
 | ||
|   'Overdue sales quotations and requests for quotations' => '',
 | ||
|   'Override'                    => '',
 | ||
Auch abrufbar als: Unified diff
Umsatzstatistik-Chart mit Linie aller Umsätze zum Vergleichen