mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-11-16 21:17:14 +01:00
111 lines
4.5 KiB
PHP
111 lines
4.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Xentral\Modules\EPost\DataTable;
|
||
|
|
||
|
use ApplicationCore;
|
||
|
use Xentral\Components\Database\Database;
|
||
|
use Xentral\Components\Database\SqlQuery\SelectQuery;
|
||
|
use Xentral\Widgets\DataTable\Column\Column;
|
||
|
use Xentral\Widgets\DataTable\Column\ColumnCollection;
|
||
|
use Xentral\Widgets\DataTable\Feature\DebugFeature;
|
||
|
use Xentral\Widgets\DataTable\Feature\FeatureCollection;
|
||
|
use Xentral\Widgets\DataTable\Filter\CustomFilter;
|
||
|
use Xentral\Widgets\DataTable\Filter\FilterCollection;
|
||
|
use Xentral\Widgets\DataTable\Options\DataTableOptions;
|
||
|
use Xentral\Widgets\DataTable\Request\DataTableRequest;
|
||
|
use Xentral\Widgets\DataTable\Type\AbstractDataTableType;
|
||
|
|
||
|
class EPostListTable extends AbstractDataTableType
|
||
|
{
|
||
|
public function configureOptions(DataTableOptions $options)
|
||
|
{
|
||
|
parent::configureOptions($options); // TODO: Change the autogenerated stub
|
||
|
}
|
||
|
|
||
|
public function configureQuery(SelectQuery $query)
|
||
|
{
|
||
|
parent::configureQuery($query); // TODO: Change the autogenerated stub
|
||
|
$app = new ApplicationCore();
|
||
|
$query
|
||
|
->from('rechnung AS a')
|
||
|
->cols([
|
||
|
'a.id',
|
||
|
'CONCAT(\'<input type="checkbox" name="select-\', a.id, \'">\') AS auswahl',
|
||
|
'a.belegnr',
|
||
|
'IF(e.id IS NULL AND false, "-", DATE_FORMAT(a.datum,\'%d.%m.%Y\')) AS datum',
|
||
|
'IF(e.id IS NULL, "nicht uebertragen", e.status) AS status',
|
||
|
'IF(e.id IS NULL, "-", e.datei) AS datei',
|
||
|
'IF(e.id IS NULL,
|
||
|
CONCAT(\'<a href="index.php?module=epost&action=uebertragen&rechnung=\', a.id, \'"><img src="themes/new/images/forward.png"></a>\'),
|
||
|
CONCAT(\'<a href="index.php?module=epost&action=download&id=\', e.id, \'"><img src="themes/new/images/download.png"></a>\')
|
||
|
) AS download',
|
||
|
'a.name',
|
||
|
'a.kundennummer',
|
||
|
'a.land',
|
||
|
'a.projekt',
|
||
|
'a.zahlungsweise',
|
||
|
'a.zahlungsstatus',
|
||
|
'a.status AS belegstatus',
|
||
|
'a.soll AS betrag',
|
||
|
'p.abkuerzung AS projekt',
|
||
|
'a.soll - a.ist AS differenz'
|
||
|
])
|
||
|
->leftJoin(
|
||
|
'epost_files AS e',
|
||
|
'a.id=e.rechnung'
|
||
|
)
|
||
|
->leftJoin(
|
||
|
'projekt AS p',
|
||
|
'a.projekt = p.id'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function configureColumns(ColumnCollection $columns)
|
||
|
{
|
||
|
parent::configureColumns($columns); // TODO: Change the autogenerated stub
|
||
|
|
||
|
$columns->add(Column::visible('auswahl', 'Auswahl'));
|
||
|
$columns->add(Column::searchable('belegnr', 'Rechnung'));
|
||
|
$columns->add(Column::sortable('datum', 'Vom'));
|
||
|
$columns->add(Column::searchable('kundennummer', 'Kd-Nr.'));
|
||
|
$columns->add(Column::searchable('name', 'Kunde'));
|
||
|
$columns->add(Column::searchable('land', 'Land'));
|
||
|
$columns->add(Column::searchable('projekt', 'Projekt'));
|
||
|
$columns->add(Column::searchable('zahlungsweise', 'Zahlung'));
|
||
|
$columns->add(Column::searchable('betrag', 'Betrag (Brutto)'));
|
||
|
$columns->add(Column::searchable('zahlungsstatus', 'Zahlstatus'));
|
||
|
$columns->add(Column::sortable('differenz', 'Differenz'));
|
||
|
$columns->add(Column::searchable('belegstatus', 'Belegstatus'));
|
||
|
$columns->add(Column::sortable('status', 'Status'));
|
||
|
$columns->add(Column::sortable('datei', 'Datei'));
|
||
|
$columns->add(Column::visible('download', 'Download'));
|
||
|
}
|
||
|
|
||
|
public function configureFeatures(FeatureCollection $features)
|
||
|
{
|
||
|
parent::configureFeatures($features); // TODO: Change the autogenerated stub
|
||
|
// $features->add(new DebugFeature());
|
||
|
}
|
||
|
|
||
|
public function configureFilters(FilterCollection $filters)
|
||
|
{
|
||
|
$closure = function (SelectQuery $query, DataTableRequest $request) {
|
||
|
$filter = $request->getParams()->getFilterValues();
|
||
|
if ($filter['epost_auch_versendete'] === 'false') {
|
||
|
$query->where('a.status != "versendet"');
|
||
|
}
|
||
|
if (!empty($filter['epost_date'])) {
|
||
|
$date = new \DateTime($filter['epost_date']);
|
||
|
$query->where('DATE(a.datum) = :date')
|
||
|
->bindValue('date', $date->format('Y-m-d'));
|
||
|
}
|
||
|
};
|
||
|
$filters->add(new CustomFilter($closure));
|
||
|
}
|
||
|
|
||
|
protected function addDefaultFeatures(FeatureCollection $featureCollection)
|
||
|
{
|
||
|
parent::addDefaultFeatures($featureCollection); // TODO: Change the autogenerated stub
|
||
|
}
|
||
|
|
||
|
}
|