<?php declare(strict_types=1);namespace Shopware\Core\Checkout\Order;use Shopware\Core\Checkout\Cart\Price\Struct\CalculatedPrice;use Shopware\Core\Checkout\Cart\Price\Struct\CartPrice;use Shopware\Core\Checkout\Document\DocumentCollection;use Shopware\Core\Checkout\Order\Aggregate\OrderAddress\OrderAddressCollection;use Shopware\Core\Checkout\Order\Aggregate\OrderAddress\OrderAddressEntity;use Shopware\Core\Checkout\Order\Aggregate\OrderCustomer\OrderCustomerEntity;use Shopware\Core\Checkout\Order\Aggregate\OrderDelivery\OrderDeliveryCollection;use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemCollection;use Shopware\Core\Checkout\Order\Aggregate\OrderTransaction\OrderTransactionCollection;use Shopware\Core\Framework\DataAbstractionLayer\Entity;use Shopware\Core\Framework\DataAbstractionLayer\EntityCustomFieldsTrait;use Shopware\Core\Framework\DataAbstractionLayer\EntityIdTrait;use Shopware\Core\Framework\DataAbstractionLayer\Pricing\CashRoundingConfig;use Shopware\Core\Framework\Log\Package;use Shopware\Core\System\Currency\CurrencyEntity;use Shopware\Core\System\Language\LanguageEntity;use Shopware\Core\System\SalesChannel\SalesChannelEntity;use Shopware\Core\System\StateMachine\Aggregation\StateMachineState\StateMachineStateEntity;use Shopware\Core\System\Tag\TagCollection;use Shopware\Core\System\User\UserEntity;#[Package('customer-order')]class OrderEntity extends Entity{ use EntityIdTrait; use EntityCustomFieldsTrait; /** * @var string */ protected $orderNumber; /** * @var string */ protected $currencyId; /** * @var float */ protected $currencyFactor; /** * @var string */ protected $salesChannelId; /** * @var string */ protected $billingAddressId; /** * @var \DateTimeInterface */ protected $orderDateTime; /** * @var \DateTimeInterface */ protected $orderDate; /** * @var CartPrice */ protected $price; /** * @var float */ protected $amountTotal; /** * @var float|null */ protected $amountNet; /** * @var float */ protected $positionPrice; /** * @var string */ protected $taxStatus; /** * @var CalculatedPrice */ protected $shippingCosts; /** * @var float */ protected $shippingTotal; /** * @var OrderCustomerEntity|null */ protected $orderCustomer; /** * @var CurrencyEntity|null */ protected $currency; /** * @var string */ protected $languageId; /** * @var LanguageEntity */ protected $language; /** * @var SalesChannelEntity|null */ protected $salesChannel; /** * @var OrderAddressCollection|null */ protected $addresses; /** * @var OrderAddressEntity|null */ protected $billingAddress; /** * @var OrderDeliveryCollection|null */ protected $deliveries; /** * @var OrderLineItemCollection|null */ protected $lineItems; /** * @var OrderTransactionCollection|null */ protected $transactions; /** * @var string|null */ protected $deepLinkCode; /** * @var int */ protected $autoIncrement; /** * @var StateMachineStateEntity|null */ protected $stateMachineState; /** * @var string */ protected $stateId; /** * @var DocumentCollection|null */ protected $documents; /** * @var TagCollection|null */ protected $tags; /** * @var string|null */ protected $affiliateCode; /** * @var string|null */ protected $campaignCode; /** * @var string|null */ protected $customerComment; /** * @var array<string>|null */ protected $ruleIds = []; /** * @var string|null */ protected $createdById; /** * @var UserEntity|null */ protected $createdBy; /** * @var string|null */ protected $updatedById; /** * @var UserEntity|null */ protected $updatedBy; /** * @var CashRoundingConfig|null */ protected $itemRounding; /** * @var CashRoundingConfig|null */ protected $totalRounding; public function getCurrencyId(): string { return $this->currencyId; } public function setCurrencyId(string $currencyId): void { $this->currencyId = $currencyId; } public function getCurrencyFactor(): float { return $this->currencyFactor; } public function setCurrencyFactor(float $currencyFactor): void { $this->currencyFactor = $currencyFactor; } public function getSalesChannelId(): string { return $this->salesChannelId; } public function setSalesChannelId(string $salesChannelId): void { $this->salesChannelId = $salesChannelId; } public function getBillingAddressId(): string { return $this->billingAddressId; } public function setBillingAddressId(string $billingAddressId): void { $this->billingAddressId = $billingAddressId; } public function getOrderDateTime(): \DateTimeInterface { return $this->orderDateTime; } public function setOrderDateTime(\DateTimeInterface $orderDateTime): void { $this->orderDateTime = $orderDateTime; } public function getOrderDate(): \DateTimeInterface { return $this->orderDate; } public function setOrderDate(\DateTimeInterface $orderDate): void { $this->orderDate = $orderDate; } public function getPrice(): CartPrice { return $this->price; } public function setPrice(CartPrice $price): void { $this->price = $price; } public function getAmountTotal(): float { return $this->amountTotal; } public function getAmountNet(): float { return $this->amountNet; } public function getPositionPrice(): float { return $this->positionPrice; } public function getTaxStatus(): string { return $this->taxStatus; } public function getShippingCosts(): CalculatedPrice { return $this->shippingCosts; } public function setShippingCosts(CalculatedPrice $shippingCosts): void { $this->shippingCosts = $shippingCosts; } public function getShippingTotal(): float { return $this->shippingTotal; } public function getOrderCustomer(): ?OrderCustomerEntity { return $this->orderCustomer; } public function setOrderCustomer(OrderCustomerEntity $orderCustomer): void { $this->orderCustomer = $orderCustomer; } public function getCurrency(): ?CurrencyEntity { return $this->currency; } public function setCurrency(CurrencyEntity $currency): void { $this->currency = $currency; } public function getLanguageId(): string { return $this->languageId; } public function setLanguageId(string $languageId): void { $this->languageId = $languageId; } public function getLanguage(): LanguageEntity { return $this->language; } public function setLanguage(LanguageEntity $language): void { $this->language = $language; } public function getSalesChannel(): ?SalesChannelEntity { return $this->salesChannel; } public function setSalesChannel(SalesChannelEntity $salesChannel): void { $this->salesChannel = $salesChannel; } public function getAddresses(): ?OrderAddressCollection { return $this->addresses; } public function setAddresses(OrderAddressCollection $addresses): void { $this->addresses = $addresses; } public function getDeliveries(): ?OrderDeliveryCollection { return $this->deliveries; } public function setDeliveries(OrderDeliveryCollection $deliveries): void { $this->deliveries = $deliveries; } public function getLineItems(): ?OrderLineItemCollection { return $this->lineItems; } public function setLineItems(OrderLineItemCollection $lineItems): void { $this->lineItems = $lineItems; } public function getTransactions(): ?OrderTransactionCollection { return $this->transactions; } public function setTransactions(OrderTransactionCollection $transactions): void { $this->transactions = $transactions; } public function getDeepLinkCode(): ?string { return $this->deepLinkCode; } public function setDeepLinkCode(string $deepLinkCode): void { $this->deepLinkCode = $deepLinkCode; } public function getAutoIncrement(): int { return $this->autoIncrement; } public function setAutoIncrement(int $autoIncrement): void { $this->autoIncrement = $autoIncrement; } public function getStateMachineState(): ?StateMachineStateEntity { return $this->stateMachineState; } public function setStateMachineState(StateMachineStateEntity $stateMachineState): void { $this->stateMachineState = $stateMachineState; } public function getStateId(): string { return $this->stateId; } public function setStateId(string $stateId): void { $this->stateId = $stateId; } public function setAmountTotal(float $amountTotal): void { $this->amountTotal = $amountTotal; } public function setAmountNet(float $amountNet): void { $this->amountNet = $amountNet; } public function setPositionPrice(float $positionPrice): void { $this->positionPrice = $positionPrice; } public function setTaxStatus(string $taxStatus): void { $this->taxStatus = $taxStatus; } public function setShippingTotal(float $shippingTotal): void { $this->shippingTotal = $shippingTotal; } public function getDocuments(): ?DocumentCollection { return $this->documents; } public function setDocuments(DocumentCollection $documents): void { $this->documents = $documents; } public function getOrderNumber(): ?string { return $this->orderNumber; } public function setOrderNumber(string $orderNumber): void { $this->orderNumber = $orderNumber; } public function getTags(): ?TagCollection { return $this->tags; } public function setTags(TagCollection $tags): void { $this->tags = $tags; } public function getNestedLineItems(): ?OrderLineItemCollection { $lineItems = $this->getLineItems(); if (!$lineItems) { return null; } /** @var OrderLineItemCollection $roots */ $roots = $lineItems->filterByProperty('parentId', null); $roots->sortByPosition(); $this->addChildren($lineItems, $roots); return $roots; } public function getAffiliateCode(): ?string { return $this->affiliateCode; } public function setAffiliateCode(?string $affiliateCode): void { $this->affiliateCode = $affiliateCode; } public function getCampaignCode(): ?string { return $this->campaignCode; } public function setCampaignCode(?string $campaignCode): void { $this->campaignCode = $campaignCode; } public function getCustomerComment(): ?string { return $this->customerComment; } public function setCustomerComment(?string $customerComment): void { $this->customerComment = $customerComment; } public function getRuleIds(): ?array { return $this->ruleIds; } /** * @param array<string>|null $ruleIds */ public function setRuleIds(?array $ruleIds): void { $this->ruleIds = $ruleIds; } public function getBillingAddress(): ?OrderAddressEntity { return $this->billingAddress; } public function setBillingAddress(OrderAddressEntity $billingAddress): void { $this->billingAddress = $billingAddress; } public function getCreatedById(): ?string { return $this->createdById; } public function setCreatedById(string $createdById): void { $this->createdById = $createdById; } public function getCreatedBy(): ?UserEntity { return $this->createdBy; } public function setCreatedBy(UserEntity $createdBy): void { $this->createdBy = $createdBy; } public function getUpdatedById(): ?string { return $this->updatedById; } public function setUpdatedById(string $updatedById): void { $this->updatedById = $updatedById; } public function getUpdatedBy(): ?UserEntity { return $this->updatedBy; } public function setUpdatedBy(UserEntity $updatedBy): void { $this->updatedBy = $updatedBy; } public function getItemRounding(): ?CashRoundingConfig { return $this->itemRounding; } public function setItemRounding(?CashRoundingConfig $itemRounding): void { $this->itemRounding = $itemRounding; } public function getTotalRounding(): ?CashRoundingConfig { return $this->totalRounding; } public function setTotalRounding(?CashRoundingConfig $totalRounding): void { $this->totalRounding = $totalRounding; } private function addChildren(OrderLineItemCollection $lineItems, OrderLineItemCollection $parents): void { foreach ($parents as $parent) { /** @var OrderLineItemCollection $children */ $children = $lineItems->filterByProperty('parentId', $parent->getId()); $children->sortByPosition(); $parent->setChildren($children); $this->addChildren($lineItems, $children); } }}