OpenXE/classes/Modules/Api/Resource/DocumentDeliveryNoteResource.php
2021-05-21 08:49:41 +02:00

249 lines
7.4 KiB
PHP

<?php
namespace Xentral\Modules\Api\Resource;
use Xentral\Components\Database\SqlQuery\SelectQuery;
/**
* Ressource für Lieferscheine
*/
class DocumentDeliveryNoteResource extends AbstractResource
{
/** @var string */
const TABLE_NAME = 'lieferschein';
/**
* @param array $filter
* @param array $sorting
* @param array $columns
* @param array $includes
* @param int $page
* @param int $paging
*
* @return Result\CollectionResult
*/
public function getList(
array $filter = [],
array $sorting = [],
array $columns = [],
array $includes = [],
$page = 1,
$paging = 20
) {
// Filter für Auftragsnummer über Auftrags-ID verknüpfen
if (isset($filter['auftrag']) && !isset($filter['auftragid'])) {
$select = $this->db->select()
->cols(['a.id'])
->from('auftrag AS a')
->where('a.belegnr = ?', $filter['auftrag']);
if (isset($filter['projekt'])) {
$select->where('a.projekt = ?', $filter['projekt']);
}
$orderId = $this->db->fetchValue($select->getStatement(), $select->getBindValues());
if ($orderId > 0) {
$filter['auftragid'] = $orderId;
unset($filter['auftrag']);
}
}
return parent::getList($filter, $sorting, $columns, $includes, $page, $paging);
}
/**
* @return void
*/
protected function configure()
{
$this->setTableName(self::TABLE_NAME);
$this->registerFilterParams([
'status' => 'li.status LIKE',
'belegnr' => 'li.belegnr %LIKE%',
'belegnr_equals' => 'li.belegnr LIKE',
'belegnr_startswith' => 'li.belegnr LIKE%',
'belegnr_endswith' => 'li.belegnr %LIKE',
'kundennummer' => 'li.kundennummer %LIKE%',
'kundennummer_equals' => 'li.kundennummer LIKE',
'kundennummer_startswith' => 'li.kundennummer LIKE%',
'kundennummer_endswith' => 'li.kundennummer %LIKE',
'datum' => 'li.datum =',
'datum_gt' => 'li.datum >',
'datum_gte' => 'li.datum >=',
'datum_lt' => 'li.datum <',
'datum_lte' => 'li.datum <=',
'auftrag' => 'li.auftrag LIKE',
'auftragid' => 'li.auftragid =',
'projekt' => 'li.projekt =',
]);
$this->registerSortingParams([
'belegnr' => 'li.belegnr',
'datum' => 'li.datum',
]);
$this->registerIncludes([
'positionen' => [
'key' => 'positionen',
'resource' => DocumentDeliveryNotePositionResource::class,
'filter' => [
[
'property' => 'lieferschein',
'value' => ':id',
],
],
'sort' => [
'sort' => 'ASC',
],
],
'protokoll' => [
'key' => 'protokoll',
'resource' => DocumentDeliveryNoteProtocolResource::class,
'filter' => [
[
'property' => 'lieferschein',
'value' => ':id',
],
],
'columns' => [
'liproto.id',
'liproto.zeit',
'liproto.bearbeiter',
'liproto.grund',
],
'sort' => [
'zeit' => 'ASC',
],
],
]);
}
/**
* @return SelectQuery
*/
protected function selectOneQuery()
{
return $this->selectAllQuery()->where('li.id = :id');
}
/**
* @return SelectQuery
*/
protected function selectAllQuery()
{
return $this->db->select()
->cols([
'li.id',#
'li.firma',#
'li.projekt',# // Index
'li.status',# // Index
'li.lieferscheinart',#
'li.belegnr',# // Index
'li.kundennummer',#
'li.ihrebestellnummer',#
'li.datum',# // Index
'li.auftrag',#
'li.auftragid',# // Index
'li.freitext',#
'li.adresse',# // Index
'li.typ',#
'li.name',#
'li.titel',#
'li.ansprechpartnerid',#
'li.ansprechpartner',#
'li.abteilung',#
'li.unterabteilung',#
'li.adresszusatz',#
'li.strasse',#
'li.plz',#
'li.ort',#
'li.land',# // Index
'li.bundesstaat',#
'li.telefon',#
'li.telefax',#
'li.email',#
'li.anschreiben',#
//'li.betreff',#
//'li.vertriebid',# // Index
//'li.vertrieb',#
'li.versandart',#
'li.versand',#
'li.versendet',#
'li.versendet_am',#
'li.versendet_per',#
'li.versendet_durch',#
//'li.inbearbeitung_user',#
//'li.logdatei',#
//'li.schreibschutz',#
'li.ustid',#
'li.ust_befreit',#
'li.usereditid',# // Index
'li.useredittimestamp',#
'li.lieferantenretoure',#
'li.lieferantenretoureinfo',#
'li.lieferant',#
'li.pdfarchiviert',#
'li.pdfarchiviertversion',#
'li.internebemerkung',#
'li.ohne_briefpapier',#
'li.lieferid',#
'li.projektfiliale',#
'li.projektfiliale_eingelagert',#
'li.zuarchivieren',#
'li.internebezeichnung',#
'li.kommissionierung',#
'li.sprache',#
//'li.angelegtam',#
//'li.bundesland',#
'li.gln',#
//'li.rechnungid',#
//'li.bearbeiterid',#
'li.bearbeiter',#
'li.keinerechnung',# // Index
'li.ohne_artikeltext',#
'li.abweichendebezeichnung',#
'li.kostenstelle',#
'li.bodyzusatz',#
'li.lieferbedingung',#
'li.standardlager',#
'li.kommissionskonsignationslager',#
'li.teillieferungvon',#
'li.teillieferungnummer',#
'li.kiste',#
])->from(self::TABLE_NAME . ' AS li');
}
/**
* @return SelectQuery
*/
protected function selectIdsQuery()
{
return $this->selectAllQuery()->where('li.id IN (:ids)');
}
/**
* @return false
*/
protected function insertQuery()
{
return false;
}
/**
* @return false
*/
protected function updateQuery()
{
return false;
}
/**
* @return false
*/
protected function deleteQuery()
{
return false;
}
}