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

281 lines
8.5 KiB
PHP

<?php
namespace Xentral\Modules\Api\Resource;
use Xentral\Components\Database\SqlQuery\SelectQuery;
/**
* Ressource für Angebote
*/
class DocumentOfferResource extends AbstractResource
{
/** @var string */
const TABLE_NAME = 'angebot';
/**
* @return void
*/
protected function configure()
{
$this->setTableName(self::TABLE_NAME);
$this->registerFilterParams([
'status' => 'an.status LIKE',
'belegnr' => 'an.belegnr %LIKE%',
'belegnr_equals' => 'an.belegnr LIKE',
'belegnr_startswith' => 'an.belegnr LIKE%',
'belegnr_endswith' => 'an.belegnr %LIKE',
'kundennummer' => 'an.kundennummer %LIKE%',
'kundennummer_equals' => 'an.kundennummer LIKE',
'kundennummer_startswith' => 'an.kundennummer LIKE%',
'kundennummer_endswith' => 'an.kundennummer %LIKE',
'datum' => 'an.datum =',
'datum_gt' => 'an.datum >',
'datum_gte' => 'an.datum >=',
'datum_lt' => 'an.datum <',
'datum_lte' => 'an.datum <=',
'projekt' => 'an.projekt =',
]);
$this->registerSortingParams([
'belegnr' => 'an.belegnr',
'datum' => 'an.datum',
]);
$this->registerIncludes([
'positionen' => [
'key' => 'positionen',
'resource' => DocumentOfferPositionResource::class,
'filter' => [
[
'property' => 'angebot',
'value' => ':id',
],
],
'sort' => [
'sort' => 'ASC',
],
],
'protokoll' => [
'key' => 'protokoll',
'resource' => DocumentOfferProtocolResource::class,
'filter' => [
[
'property' => 'angebot',
'value' => ':id',
],
],
'sort' => [
'zeit' => 'ASC',
],
],
]);
}
/**
* @return SelectQuery
*/
protected function selectOneQuery()
{
return $this->selectAllQuery()->where('an.id = :id');
}
/**
* @return SelectQuery
*/
protected function selectAllQuery()
{
return $this->db->select()
->cols([
'an.id',
'an.firma',
'an.projekt', // Index
'an.status', // Index
'an.belegnr', // Index
'an.kundennummer',
'an.aktion',
'an.anfrage',
'an.internebezeichnung',
'an.datum',
'an.gueltigbis',
'an.lieferdatum',
'an.lieferdatumkw',
'an.planedorderdate',
'an.abweichendebezeichnung',
//'an.auftrag',
'an.adresse', // Index
'an.typ',
'an.name',
'an.titel',
'an.ansprechpartnerid',
'an.ansprechpartner',
'an.abteilung',
'an.unterabteilung',
'an.adresszusatz',
'an.strasse',
'an.plz',
'an.ort',
'an.land',
'an.bundesstaat',
'an.telefon',
'an.telefax',
'an.email',
'an.anschreiben',
//'an.betreff',
//'an.vertrieb',
//'an.vertriebid', // Index
//'an.deckungsbeitragcalc',
//'an.deckungsbeitrag',
'an.gesamtsumme',
'an.erloes_netto',
'an.umsatz_netto',
//'an.provision',
//'an.provision_summe',
//'an.keinsteuersatz',
'an.versandart',
'an.lieferbedingung',
'an.autoversand',
'an.keinporto',
'an.gesamtsummeausblenden',
'an.zahlungsweise',
'an.zahlungszieltage',
'an.zahlungszieltageskonto',
'an.zahlungszielskonto',
'an.skontobetrag',
'an.skontoberechnet',
//'an.bank_inhaber',
//'an.bank_institut',
//'an.bank_blz',
//'an.bank_konto',
//'an.kreditkarte_typ',
//'an.kreditkarte_inhaber',
//'an.kreditkarte_nummer',
//'an.kreditkarte_pruefnummer',
//'an.kreditkarte_monat',
//'an.kreditkarte_jahr',
'an.abweichendelieferadresse',
'an.liefername',
'an.liefertitel',
'an.lieferansprechpartner',
'an.lieferabteilung',
'an.lieferunterabteilung',
'an.lieferadresszusatz',
'an.lieferstrasse',
'an.lieferort',
'an.lieferplz',
'an.lieferland',
'an.lieferbundesstaat',
'an.liefertelefon',
'an.liefertelefax',
'an.liefermail',
'an.lieferid',
'an.liefergln',
'an.lieferemail',
'an.abweichenderechnungsadresse',
'an.retyp',
'an.rechnungname',
'an.retelefon',
'an.reansprechpartner',
'an.retelefax',
'an.reabteilung',
'an.reemail',
'an.reunterabteilung',
'an.readresszusatz',
'an.restrasse',
'an.replz',
'an.reort',
'an.reland',
'an.versendet',
'an.versendet_am',
'an.versendet_per',
'an.versendet_durch',
//'an.inbearbeitung',
//'an.vermerk',
//'an.logdatei',
//'an.auftragid',
//'an.anfrageid',
//'an.gruppe', // Index
//'an.usereditid', // Index
//'an.useredittimestamp',
//'an.realrabatt',
//'an.rabatt',
//'an.rabatt1',
//'an.rabatt2',
//'an.rabatt3',
//'an.rabatt4',
//'an.rabatt5',
//'an.steuersatz_normal',
//'an.steuersatz_zwischen',
//'an.steuersatz_ermaessigt',
//'an.steuersatz_starkermaessigt',
//'an.steuersatz_dienstleistung',
//'an.schreibschutz',
//'an.pdfarchiviert',
//'an.pdfarchiviertversion',
//'an.ohne_briefpapier',
//'an.projektfiliale',
//'an.zuarchivieren',
//'an.angelegtam',
//'an.kopievon',
//'an.kopienummer',
'an.gln',
'an.bearbeiterid',
'an.bearbeiter',
'an.ohne_artikeltext',
'an.ustid',
'an.ust_befreit',
'an.anzeigesteuer',
'an.waehrung',
'an.sprache',
'an.kurs',
'an.kostenstelle',
'an.freitext',
'an.internebemerkung',
'an.bodyzusatz',
'an.shop',
'an.shopextid',
'an.internet',
//'an.transaktionsnummer',
//'an.packstation_inhaber',
//'an.packstation_station',
//'an.packstation_ident',
//'an.packstation_plz',
//'an.packstation_ort',
])->from(self::TABLE_NAME . ' AS an');
}
/**
* @return SelectQuery
*/
protected function selectIdsQuery()
{
return $this->selectAllQuery()->where('an.id IN (:ids)');
}
/**
* @return false
*/
protected function insertQuery()
{
return false;
}
/**
* @return false
*/
protected function updateQuery()
{
return false;
}
/**
* @return false
*/
protected function deleteQuery()
{
return false;
}
}