<?php
namespace Diplix\KMGBundle\Entity\Accounting;
use Diplix\KMGBundle\Entity\BasicEntity;
use Diplix\KMGBundle\Entity\Settings;
use Doctrine\ORM\Mapping as ORM;
use Diplix\KMGBundle\Entity\Accounting\Rate;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
use Symfony\Component\Serializer\Serializer;
/**
* @ORM\Table(name="coop_members", indexes={@ORM\Index(name="be_deleted",columns={"be_deleted"})})
* @ORM\Entity(repositoryClass="Diplix\KMGBundle\Repository\CoopMemberRepository")
*/
class CoopMember extends BasicEntity implements \JsonSerializable
{
/**
* @ORM\Column(type="integer",name="id")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $number;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\Column(type="string")
*/
protected $shortCode;
/**
* @ORM\Column(type="text")
*/
protected $address = '';
/**
* @ORM\Column(type="string")
*/
protected $taxNo = '';
/**
* @ORM\Column(type="decimal", nullable=false, precision=12, scale=2,options={"unsigned":false})
*/
protected $waitPrice = 0.35;
/**
* @ORM\Column(type="decimal", nullable=false, precision=12, scale=2,options={"unsigned":false})
*/
protected $dwzPrice = 0.35;
/**
* @ORM\Column(type="string")
*/
protected $waitPriceAccNumber = '';
/**
* @ORM\Column(type="string")
*/
protected $extraCostAccNumber = '';
/**
* @ORM\Column(type="decimal", nullable=false, precision=5, scale=2,options={"unsigned":false})
*/
protected $commissionPercent = 0.0;
/**
* @ORM\Column(type="json")
* @var array|Rate[]
*/
protected $rates = [ ];
/**
* @ORM\Column(type="boolean")
*/
protected $showInCalendar = true;
/**
* @ORM\Column(type="integer")
*/
protected $sortOrder = 0;
/**
* @ORM\Column(type="text")
*/
protected $feeText = '';
/**
* @ORM\Column(type="decimal", nullable=false, precision=12, scale=2,options={"unsigned":false})
*/
protected $feeAmount = 0.0;
/**
* @ORM\Column(type="text")
*/
protected $accountingEmail = '';
/**
* @ORM\Column(type="text")
*/
protected $accountingEmailCC = '';
/**
* @ORM\Column(type="text")
*/
protected $accountingEmailBCC = '';
/**
* @ORM\Column(type="text")
*/
protected $accountingBankAccount = '';
/**
* @ORM\Column(type="text")
*/
protected $jobEmail = '';
/**
* @ORM\Column(type="decimal", nullable=false, precision=5, scale=2,options={"unsigned":true})
*/
protected $partialPaymentPercent = 0.0;
/**
* @ORM\Column(type="boolean",options={"default" = 0});
*/
protected $accExcludeFromAnalysis = false;
/**
* @ORM\Column(type="boolean",options={"default" = 0});
*/
protected $isCoopPartner = false;
/**
* @ORM\Column(type="integer",options={"unsigned":true, "default":30} )
*/
protected $freeServiceTimeFraMinutes = 30;
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $personenbfscheinGueltigBis;
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $genehmigungKonzAblaufGueltigBis;
/**
* @ORM\Column(type="string")
*/
protected $ordnungsNummer = '';
/**
* @ORM\Column(type="string")
*/
protected $fuehrerscheinNummer = '';
/**
* @ORM\Column(type="string")
*/
protected $fhzKennzeichen = '';
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $fhzBaujahr;
/**
* @ORM\Column(type="string")
*/
protected $fhzTyp = '';
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $kmgEntry;
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $kmgExit;
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $birthDate;
/**
* @ORM\Column(type="string")
*/
protected $xchgTargetUrl = '';
/**
* @ORM\Column(type="string")
*/
protected $xchgLogin = '';
/**
* @ORM\Column(type="string")
*/
protected $xchgPassword = '';
/**
* @ORM\Column(type="boolean")
*/
protected $sendOrderUpdatesPerMail = false;
/**
* @ORM\Column(type="string", options={"length":"1","default":"m"})
*/
protected $defaultRideStyle = Job::RS_MIETWAGEN;
/**
* @ORM\Column(type="string")
*/
protected $creditNumber = '';
/**
* @ORM\Column(type="decimal", nullable=false, precision=12, scale=2,options={"unsigned":false})
*/
protected $taxiGeldAufschlagKurzstrecke = 0.0;
/**
* @ORM\Column(type="boolean",options={"default" = 1});
*/
protected $allowInterest = true;
/**
* @ORM\Column(type="boolean",options={"default" = 1});
*/
protected bool $active = true;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @return mixed
*/
public function getNumber()
{
return $this->number;
}
/**
* @param mixed $number
*/
public function setNumber($number)
{
$this->number = $number;
}
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @param mixed $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return mixed
*/
public function getAddress()
{
return $this->address;
}
/**
* @param mixed $address
*/
public function setAddress($address)
{
$this->address = $address;
}
/**
* @return mixed
*/
public function getTaxNo()
{
return $this->taxNo;
}
/**
* @param mixed $taxNo
*/
public function setTaxNo($taxNo)
{
$this->taxNo = $taxNo;
}
/**
* @return mixed
*/
public function getWaitPrice()
{
return $this->waitPrice;
}
/**
* @param mixed $waitPrice
*/
public function setWaitPrice($waitPrice)
{
$this->waitPrice = $waitPrice;
}
/**
* @return mixed
*/
public function getCommissionPercent()
{
return $this->commissionPercent;
}
/**
* @param mixed $commissionPercent
*/
public function setCommissionPercent($commissionPercent)
{
$this->commissionPercent = $commissionPercent;
}
/**
* @return array|Rate[]
*/
public function getRates()
{
$ro = [];
foreach ( $this->rates as $row)
{
$ro[]= Rate::fromArray($row);
}
if (count($ro)<1)
{
// inject defaults
$ro = Settings::getDefaultMemberRates();
}
return $ro;
}
/**
* @param array $rates
*/
public function setRates($rates)
{
$this->rates = json_decode(json_encode($rates), true); // ugly way to convert array of object to array of assoc-array
}
/**
* @return mixed
*/
public function getShortCode()
{
return $this->shortCode;
}
/**
* @param mixed $shortCode
*/
public function setShortCode($shortCode)
{
$this->shortCode = $shortCode;
}
/**
* @return mixed
*/
public function getShowInCalendar()
{
return $this->showInCalendar;
}
/**
* @param mixed $showInCalendar
*/
public function setShowInCalendar($showInCalendar)
{
$this->showInCalendar = $showInCalendar;
}
/**
* @return mixed
*/
public function getSortOrder()
{
return $this->sortOrder;
}
/**
* @param mixed $sortOrder
*/
public function setSortOrder($sortOrder)
{
$this->sortOrder = $sortOrder;
}
/**
* @return string
*/
public function getFeeText()
{
return $this->feeText;
}
/**
* @param string $feeText
*/
public function setFeeText($feeText)
{
$this->feeText = $feeText;
}
/**
* @return float
*/
public function getFeeAmount()
{
return $this->feeAmount;
}
/**
* @param float $feeAmount
*/
public function setFeeAmount($feeAmount)
{
$this->feeAmount = $feeAmount;
}
/**
* @return string
*/
public function getAccountingEmail()
{
return $this->accountingEmail;
}
/**
* @param string $accountingEmail
*/
public function setAccountingEmail($accountingEmail)
{
$this->accountingEmail = $accountingEmail;
}
/**
* @return string
*/
public function getAccountingEmailCC()
{
return $this->accountingEmailCC;
}
/**
* @param string $accountingEmailCC
*/
public function setAccountingEmailCC($accountingEmailCC)
{
$this->accountingEmailCC = $accountingEmailCC;
}
/**
* @return string
*/
public function getAccountingEmailBCC()
{
return $this->accountingEmailBCC;
}
/**
* @param string $accountingEmailBCC
*/
public function setAccountingEmailBCC($accountingEmailBCC)
{
$this->accountingEmailBCC = $accountingEmailBCC;
}
/**
* @return float
*/
public function getPartialPaymentPercent(): float
{
return $this->partialPaymentPercent;
}
/**
* @param float $partialPaymentPercent
*/
public function setPartialPaymentPercent(float $partialPaymentPercent): void
{
$this->partialPaymentPercent = $partialPaymentPercent;
}
/**
* @return bool
*/
public function isAccExcludeFromAnalysis(): bool
{
return $this->accExcludeFromAnalysis;
}
/**
* @param bool $accExcludeFromAnalysis
*/
public function setAccExcludeFromAnalysis(bool $accExcludeFromAnalysis): void
{
$this->accExcludeFromAnalysis = $accExcludeFromAnalysis;
}
/**
* @return bool
*/
public function isCoopPartner(): bool
{
return $this->isCoopPartner;
}
/**
* @param bool $isCoopPartner
*/
public function setIsCoopPartner(bool $isCoopPartner): void
{
$this->isCoopPartner = $isCoopPartner;
}
/**
* @return int
*/
public function getFreeServiceTimeFraMinutes(): int
{
return $this->freeServiceTimeFraMinutes;
}
/**
* @param int $freeServiceTimeFraMinutes
*/
public function setFreeServiceTimeFraMinutes(int $freeServiceTimeFraMinutes): void
{
$this->freeServiceTimeFraMinutes = $freeServiceTimeFraMinutes;
}
/**
* @return string
*/
public function getAccountingBankAccount(): string
{
return $this->accountingBankAccount;
}
/**
* @param string $accountingBankAccount
*/
public function setAccountingBankAccount(string $accountingBankAccount): void
{
$this->accountingBankAccount = $accountingBankAccount;
}
/**
* @return mixed
*/
public function getPersonenbfscheinGueltigBis()
{
return $this->personenbfscheinGueltigBis;
}
/**
* @param mixed $personenbfscheinGueltigBis
*/
public function setPersonenbfscheinGueltigBis($personenbfscheinGueltigBis): void
{
$this->personenbfscheinGueltigBis = $personenbfscheinGueltigBis;
}
/**
* @return mixed
*/
public function getGenehmigungKonzAblaufGueltigBis()
{
return $this->genehmigungKonzAblaufGueltigBis;
}
/**
* @param mixed $genehmigungKonzAblaufGueltigBis
*/
public function setGenehmigungKonzAblaufGueltigBis($genehmigungKonzAblaufGueltigBis): void
{
$this->genehmigungKonzAblaufGueltigBis = $genehmigungKonzAblaufGueltigBis;
}
/**
* @return string
*/
public function getOrdnungsNummer(): string
{
return $this->ordnungsNummer;
}
/**
* @param string $ordnungsNummer
*/
public function setOrdnungsNummer(string $ordnungsNummer): void
{
$this->ordnungsNummer = $ordnungsNummer;
}
/**
* @return string
*/
public function getFuehrerscheinNummer(): string
{
return $this->fuehrerscheinNummer;
}
/**
* @param string $fuehrerscheinNummer
*/
public function setFuehrerscheinNummer(string $fuehrerscheinNummer): void
{
$this->fuehrerscheinNummer = $fuehrerscheinNummer;
}
/**
* @return string
*/
public function getFhzKennzeichen(): string
{
return $this->fhzKennzeichen;
}
/**
* @param string $fhzKennzeichen
*/
public function setFhzKennzeichen(string $fhzKennzeichen): void
{
$this->fhzKennzeichen = $fhzKennzeichen;
}
/**
* @return \DateTime|null
*/
public function getFhzBaujahr()
{
return $this->fhzBaujahr;
}
/**
* @param $fhzBaujahr
*/
public function setFhzBaujahr( $fhzBaujahr): void
{
$this->fhzBaujahr = $fhzBaujahr;
}
/**
* @return string
*/
public function getFhzTyp(): string
{
return $this->fhzTyp;
}
/**
* @param string $fhzTyp
*/
public function setFhzTyp(string $fhzTyp): void
{
$this->fhzTyp = $fhzTyp;
}
/**
* @return mixed
*/
public function getKmgEntry()
{
return $this->kmgEntry;
}
/**
* @param mixed $kmgEntry
*/
public function setKmgEntry($kmgEntry): void
{
$this->kmgEntry = $kmgEntry;
}
/**
* @return mixed
*/
public function getKmgExit()
{
return $this->kmgExit;
}
/**
* @param mixed $kmgExit
*/
public function setKmgExit($kmgExit): void
{
$this->kmgExit = $kmgExit;
}
/**
* @return mixed
*/
public function getBirthDate()
{
return $this->birthDate;
}
/**
* @param mixed $birthDate
*/
public function setBirthDate($birthDate): void
{
$this->birthDate = $birthDate;
}
/**
* @return string
*/
public function getXchgTargetUrl(): string
{
return $this->xchgTargetUrl;
}
/**
* @param string $xchgTargetUrl
*/
public function setXchgTargetUrl(string $xchgTargetUrl): void
{
$this->xchgTargetUrl = $xchgTargetUrl;
}
/**
* @return string
*/
public function getXchgLogin(): string
{
return $this->xchgLogin;
}
/**
* @param string $xchgLogin
*/
public function setXchgLogin(string $xchgLogin): void
{
$this->xchgLogin = $xchgLogin;
}
/**
* @return string
*/
public function getXchgPassword(): string
{
return $this->xchgPassword;
}
/**
* @param string $xchgPassword
*/
public function setXchgPassword(string $xchgPassword): void
{
$this->xchgPassword = $xchgPassword;
}
/**
* @return bool
*/
public function isSendOrderUpdatesPerMail(): bool
{
return $this->sendOrderUpdatesPerMail;
}
/**
* @param bool $sendOrderUpdatesPerMail
*/
public function setSendOrderUpdatesPerMail(bool $sendOrderUpdatesPerMail): void
{
$this->sendOrderUpdatesPerMail = $sendOrderUpdatesPerMail;
}
/**
* @return string
*/
public function getDefaultRideStyle(): string
{
return $this->defaultRideStyle;
}
/**
* @param string $defaultRideStyle
*/
public function setDefaultRideStyle(string $defaultRideStyle): void
{
$this->defaultRideStyle = $defaultRideStyle;
}
/**
* @return string
*/
public function getCreditNumber(): string
{
return $this->creditNumber;
}
/**
* @param string $creditNumber
*/
public function setCreditNumber(string $creditNumber): void
{
$this->creditNumber = $creditNumber;
}
/**
* @return string
*/
public function getWaitPriceAccNumber(): string
{
return $this->waitPriceAccNumber;
}
/**
* @param string $waitPriceAccNumber
*/
public function setWaitPriceAccNumber(string $waitPriceAccNumber): void
{
$this->waitPriceAccNumber = $waitPriceAccNumber;
}
/**
* @return string
*/
public function getExtraCostAccNumber(): string
{
return $this->extraCostAccNumber;
}
/**
* @param string $extraCostAccNumber
*/
public function setExtraCostAccNumber(string $extraCostAccNumber): void
{
$this->extraCostAccNumber = $extraCostAccNumber;
}
/**
* @return float
*/
public function getTaxiGeldAufschlagKurzstrecke(): float
{
return $this->taxiGeldAufschlagKurzstrecke;
}
/**
* @param float $taxiGeldAufschlagKurzstrecke
*/
public function setTaxiGeldAufschlagKurzstrecke(float $taxiGeldAufschlagKurzstrecke): void
{
$this->taxiGeldAufschlagKurzstrecke = $taxiGeldAufschlagKurzstrecke;
}
/**
* @return bool
*/
public function isAllowInterest(): bool
{
return $this->allowInterest;
}
/**
* @param bool $allowInterest
*/
public function setAllowInterest(bool $allowInterest): void
{
$this->allowInterest = $allowInterest;
}
/**
* @return string
*/
public function getJobEmail(): string
{
return $this->jobEmail;
}
/**
* @param string $jobEmail
*/
public function setJobEmail(string $jobEmail): void
{
$this->jobEmail = $jobEmail;
}
/**
* @return bool
*/
public function isActive(): bool
{
return $this->active;
}
/**
* @param bool $active
*/
public function setActive(bool $active): void
{
$this->active = $active;
}
/**
* @return float
*/
public function getDwzPrice(): float
{
return $this->dwzPrice;
}
/**
* @param float $dwzPrice
*/
public function setDwzPrice(float $dwzPrice): void
{
$this->dwzPrice = $dwzPrice;
}
/**
* Specify data which should be serialized to JSON
* @link http://php.net/manual/en/jsonserializable.jsonserialize.php
* @return mixed data which can be serialized by <b>json_encode</b>,
* which is a value of any type other than a resource.
* @since 5.4.0
*/
function jsonSerialize()
{
return [
'id'=>$this->getId(),
'number'=>$this->number,
'name'=>$this->getName(),
'shortCode'=>$this->shortCode
];
}
public function __toString()
{
return $this->id."|".$this->name;
}
}