71 if (!$this->printedChecks
78 return $this->printedChecks;
91 '=ORDER_ID' => $this->getId()
111 $this->printedChecks[] = $check;
131 public function onShipmentCollectionModify(
$action,
Shipment $shipment,
$name =
null, $oldValue =
null, $value =
null)
138 $entityMarker = $registry->getEntityMarkerClassName();
142 if ((
int)$this->getField(
'DELIVERY_ID') === $shipment->
getDeliveryId())
144 $foundShipment =
false;
147 foreach ($this->getShipmentCollection()->getNotSystemItems() as $entityShipment)
149 if ((
int)$entityShipment->getField(
'DELIVERY_ID') > 0)
151 $foundShipment =
true;
152 $this->setFieldNoDemand(
'DELIVERY_ID', $entityShipment->getField(
'DELIVERY_ID'));
157 if (!$foundShipment && !$shipment->
isSystem())
159 $systemShipment = $this->getShipmentCollection()->getSystemShipment();
161 if ((
int)$systemShipment->getField(
'DELIVERY_ID') > 0)
163 $this->setFieldNoDemand(
'DELIVERY_ID', $systemShipment->getField(
'DELIVERY_ID'));
170 if ($shipment->getId() === 0)
186 if (
$name ===
"ALLOW_DELIVERY")
190 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_ALLOW_DELIVERY_ORDER_CANCELED'),
'SALE_ORDER_ALLOW_DELIVERY_ORDER_CANCELED'));
208 $result->addErrors($r->getErrors());
219 if (!$r->isSuccess())
221 $result->addErrors($r->getErrors());
224 if ($r->hasWarnings())
226 $result->addWarnings($r->getWarnings());
227 $entityMarker::addMarker($this, $shipment, $r);
237 if (!$r->isSuccess())
239 $result->addErrors($r->getErrors());
242 if ($r->hasWarnings())
244 $result->addWarnings($r->getWarnings());
245 $entityMarker::addMarker($this, $shipment, $r);
253 if (!$result->isSuccess())
261 if ($oldValue ===
"N")
265 $orderStatus = Main\Config\Option::get(
'sale',
'status_on_allow_delivery',
'');
269 $orderStatus = Main\Config\Option::get(
'sale',
'status_on_allow_delivery_one_of',
'');
273 if ($orderStatus !==
null && $this->
getField(
'STATUS_ID') != static::getFinalStatus())
275 if ((
string)$orderStatus !=
'')
277 $r = $this->
setField(
'STATUS_ID', $orderStatus);
278 if (!$r->isSuccess())
280 $result->addErrors($r->getErrors());
283 if ($r->hasWarnings())
285 $result->addWarnings($r->getWarnings());
286 $entityMarker::addMarker($this, $this, $r);
296 $r = $shipment->
setField(
"DEDUCTED",
"Y");
297 if (!$r->isSuccess())
299 $result->addErrors($r->getErrors());
302 if ($r->hasWarnings())
304 $result->addWarnings($r->getWarnings());
305 $entityMarker::addMarker($this, $shipment, $r);
317 && $this->
getField(
'ALLOW_DELIVERY') ===
'N'
329 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_SHIPMENT_ORDER_CANCELED'),
'SALE_ORDER_SHIPMENT_ORDER_CANCELED'));
342 if (!$r->isSuccess())
344 $result->addErrors($r->getErrors());
347 if ($r->hasWarnings())
349 $result->addWarnings($r->getWarnings());
350 $entityMarker::addMarker($this, $shipment, $r);
360 if (!$r->isSuccess())
362 $result->addErrors($r->getErrors());
365 if ($r->hasWarnings())
367 $result->addWarnings($r->getWarnings());
368 $entityMarker::addMarker($this, $shipment, $r);
380 $r = $shipment->tryShip();
381 if (!$r->isSuccess())
383 $result->addErrors($r->getErrors());
386 if ($r->hasWarnings())
388 $result->addWarnings($r->getWarnings());
389 $entityMarker::addMarker($this, $shipment, $r);
397 elseif ($oldValue ===
'Y')
400 if (!$r->isSuccess())
402 $result->addErrors($r->getErrors());
405 if ($r->hasWarnings())
407 $result->addWarnings($r->getWarnings());
408 $entityMarker::addMarker($this, $shipment, $r);
421 if (!$r->isSuccess())
423 $result->addErrors($r->getErrors());
426 if ($r->hasWarnings())
428 $result->addWarnings($r->getWarnings());
429 $entityMarker::addMarker($this, $shipment, $r);
438 if (!$result->isSuccess())
445 $allowSetStatus =
false;
447 if ($oldValue ===
"N")
451 $orderStatus = Main\Config\Option::get(
'sale',
'status_on_shipped_shipment',
'');
455 $orderStatus = Main\Config\Option::get(
'sale',
'status_on_shipped_shipment_one_of',
'');
457 $allowSetStatus = ($this->
getField(
'STATUS_ID') != static::getFinalStatus());
462 $originalValues = $fields->getOriginalValues();
463 if (!empty($originalValues[
'STATUS_ID']))
465 $orderStatus = $originalValues[
'STATUS_ID'];
466 $allowSetStatus =
true;
471 (
string)$orderStatus !==
''
475 $r = $this->
setField(
'STATUS_ID', $orderStatus);
476 if (!$r->isSuccess())
478 $result->addErrors($r->getErrors());
480 elseif ($r->hasWarnings())
482 $result->addWarnings($r->getWarnings());
483 $entityMarker::addMarker($this, $this, $r);
493 if (strval($shipment->getField(
'DATE_DEDUCTED')) !=
'')
495 $this->
setFieldNoDemand(
'DATE_DEDUCTED', $shipment->getField(
'DATE_DEDUCTED'));
497 if (strval($shipment->getField(
'EMP_DEDUCTED_ID')) !=
'')
499 $this->
setFieldNoDemand(
'EMP_DEDUCTED_ID', $shipment->getField(
'EMP_DEDUCTED_ID'));
508 $r = $this->
setField(
'MARKED',
'Y');
509 if (!$r->isSuccess())
511 $result->addErrors($r->getErrors());
517 $r = $this->setReasonMarked($value);
518 if (!$r->isSuccess())
520 $result->addErrors($r->getErrors());
527 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'),
'SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'));
532 $discount->setCalculateShipments($shipment);
538 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'),
'SALE_ORDER_PRICE_DELIVERY_ORDER_CANCELED'));
542 $deliveryPrice = ($this->
isNew()) ? $value : $this->
getField(
"PRICE_DELIVERY") - $oldValue +
$value;
551 $this->
getField(
"PRICE") - $oldValue + $value
554 if (!$r->isSuccess())
556 $result->addErrors($r->getErrors());
562 if ($shipment->
isSystem() || intval($shipment->getField(
'DELIVERY_ID')) <= 0 )
579 $this->
setFieldNoDemand(
'TRACKING_NUMBER', $shipment->getField(
'TRACKING_NUMBER'));
582 if ($value != $oldValue)
584 $fields = $this->fields->getChangedValues();
585 if (!empty($fields) && !array_key_exists(
"UPDATED_1C", $fields))
587 parent::setField(
"UPDATED_1C",
"N");
599 $entity->getId() === 0
600 && $entity->getField(
'TRADING_PLATFORM_ID') > 0
603 $this->propertyCollection = $this->loadPropertyCollection();
608 if (
$name ===
'TRADING_PLATFORM_ID')
610 $this->propertyCollection = $this->loadPropertyCollection();
637 $price = parent::getBasePrice();
657 $r = parent::setBasket($basket);
658 if (!$r->isSuccess())
660 $result->addErrors($r->getErrors());
665 if (!$r->isSuccess())
667 $result->addErrors($r->getErrors());
673 $r = $this->refreshData();
674 if (!$r->isSuccess())
676 $result->addErrors($r->getErrors());
684 $r = $this->doFinalAction($hasMeaningfulFields);
685 if (!$r->isSuccess())
687 $result->addErrors($r->getErrors());
703 public function appendBasket(
BasketBase $basket)
707 $isStartField = $this->isStartField();
709 $r = parent::appendBasket($basket);
710 if (!$r->isSuccess())
712 $result->addErrors($r->getErrors());
717 $result = $this->getShipmentCollection()->resetCollection();
718 if (!$r->isSuccess())
720 $result->addErrors($r->getErrors());
724 if (!$this->isMathActionOnly())
727 $r = $this->refreshData();
728 if (!$r->isSuccess())
730 $result->addErrors($r->getErrors());
739 $r = $this->doFinalAction($hasMeaningfulFields);
740 if (!$r->isSuccess())
742 $result->addErrors($r->getErrors());
758 if (empty($this->shipmentCollection))
763 return $this->shipmentCollection;
776 if (empty($this->tradeBindingCollection))
778 $this->tradeBindingCollection = $this->loadTradeBindingCollection();
781 return $this->tradeBindingCollection;
791 if (empty($this->paymentCollection))
806 public function loadShipmentCollection()
811 $shipmentCollectionClassName = $registry->getShipmentCollectionClassName();
812 return $shipmentCollectionClassName::load($this);
821 public function loadPaymentCollection()
826 $paymentCollectionClassName = $registry->getPaymentCollectionClassName();
827 return $paymentCollectionClassName::load($this);
836 protected function loadTradeBindingCollection()
843 return $tradeBindingCollection::load($this);
852 protected static function deleteEntitiesNoDemand(
$orderId)
854 $r = parent::deleteEntitiesNoDemand(
$orderId);
855 if (!$r->isSuccess())
861 $shipmentClassName = $registry->getShipmentClassName();
862 $shipmentClassName::deleteNoDemand(
$orderId);
863 if (!$r->isSuccess())
867 $paymentClassName = $registry->getPaymentClassName();
868 $paymentClassName::deleteNoDemand(
$orderId);
869 if (!$r->isSuccess())
884 protected static function deleteEntities(OrderBase
$order)
886 parent::deleteEntities(
$order);
889 foreach (
$order->getShipmentCollection() as $shipment)
929 if ($this->getField(
'PAY_SYSTEM_ID') ==
$payment->getPaymentSystemId())
932 foreach (
$payment->getCollection() as $entityPayment)
934 if (intval($entityPayment->getField(
'PAY_SYSTEM_ID')) > 0
935 && intval($entityPayment->getField(
'PAY_SYSTEM_ID')) !=
$payment->getPaymentSystemId())
937 $this->setFieldNoDemand(
'PAY_SYSTEM_ID', $entityPayment->getField(
'PAY_SYSTEM_ID'));
956 if ((
$name ==
"CURRENCY") && ($value != $this->
getField(
"CURRENCY")))
958 throw new Main\NotImplementedException();
965 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_PAID_ORDER_CANCELED'),
'SALE_ORDER_PAID_ORDER_CANCELED'));
976 $r = $this->syncOrderAndPayments(
$payment);
977 if (!$r->isSuccess())
979 $result->addErrors($r->getErrors());
981 elseif ($r->hasWarnings())
983 $result->addWarnings($r->getWarnings());
1013 $r = $this->
setField(
'MARKED',
'Y');
1014 if (!$r->isSuccess())
1016 $result->addErrors($r->getErrors());
1022 $r = $this->setReasonMarked($value);
1023 if (!$r->isSuccess())
1025 $result->addErrors($r->getErrors());
1029 if ($value != $oldValue)
1031 $fields = $this->fields->getChangedValues();
1032 if (!empty($fields) && !array_key_exists(
"UPDATED_1C", $fields) &&
$name !=
'UPDATED_1C')
1034 parent::setField(
"UPDATED_1C",
"N");
1055 $result = parent::onFieldModify(
$name, $oldValue, $value);
1057 if (
$name ==
"PRICE")
1060 if (!$r->isSuccess())
1062 return $result->addErrors($r->getErrors());
1066 if (!$r->isSuccess())
1068 return $result->addErrors($r->getErrors());
1071 $r = $this->syncOrderAndPayments();
1072 if (!$r->isSuccess())
1074 $result->addErrors($r->getErrors());
1081 if (is_object(
$USER))
1089 if (!$r->isSuccess())
1091 return $result->addErrors($r->getErrors());
1111 if (!$r->isSuccess())
1113 return $result->addErrors($r->getErrors());
1117 if (!$r->isSuccess())
1119 return $result->addErrors($r->getErrors());
1142 if (!$r->isSuccess())
1144 return $result->addErrors($r->getErrors());
1148 if (!$r->isSuccess())
1150 return $result->addErrors($r->getErrors());
1180 $r = parent::onBasketModify(
$action, $basketItem,
$name, $oldValue, $value);
1181 if (!$r->isSuccess())
1183 $result->addErrors($r->getErrors());
1191 if ($basketItem->
getField(
'ORDER_ID'))
1203 if (
$name ===
"QUANTITY")
1205 $r = parent::onBasketModify(
$action, $basketItem,
$name, $oldValue, $value);
1206 if (!$r->isSuccess())
1208 $result->addErrors($r->getErrors());
1213 if (!$r->isSuccess())
1215 $result->addErrors($r->getErrors());
1218 elseif ($r->hasWarnings())
1220 $result->addWarnings($r->getWarnings());
1227 $r = parent::onBasketModify(
$action, $basketItem,
$name, $oldValue, $value);
1228 if (!$r->isSuccess())
1230 $result->addErrors($r->getErrors());
1245 $r = parent::onBasketModify(
$action, $basketItem,
$name, $oldValue, $value);
1246 if (!$r->isSuccess())
1248 $result->addErrors($r->getErrors());
1264 if (!$r->isSuccess())
1266 $result->addErrors($r->getErrors());
1275 public function onAfterBasketRefresh()
1280 foreach ($this->getShipmentCollection() as $shipment)
1283 $shipment->isShipped()
1284 || !$shipment->needReservation()
1291 $r = $shipment->tryReserve();
1292 if (!$r->isSuccess())
1294 $result->addErrors($r->getErrors());
1313 private function syncOrderAndPayments(Payment
$payment =
null)
1315 $result =
new Result();
1317 $oldPaid = $this->
getField(
'PAYED');
1323 $finalSumPaid = $sumPaid;
1334 $r = $this->syncOrderPaymentPaid(
$payment);
1335 if ($r->isSuccess())
1337 $paidResult = $r->getData();
1338 if (isset($paidResult[
'SUM_PAID']))
1340 $finalSumPaid = $paidResult[
'SUM_PAID'];
1345 return $result->addErrors($r->getErrors());
1353 $r = $this->syncOrderPaid();
1354 if (!$r->isSuccess())
1356 return $result->addErrors($r->getErrors());
1359 $paidResult = $r->getData();
1360 if (isset($paidResult[
'SUM_PAID']))
1362 $finalSumPaid = $paidResult[
'SUM_PAID'];
1378 Internals\EventsPool::addEvent(
1386 Internals\EventsPool::addEvent(
1395 if ($finalSumPaid > 0 && $finalSumPaid > $this->
getPrice())
1407 $r = $this->onAfterSyncPaid($oldPaid);
1408 if (!$r->isSuccess())
1410 $result->addErrors($r->getErrors());
1412 elseif ($r->hasWarnings())
1414 $result->addWarnings($r->getWarnings());
1424 private function syncOrderPaymentPaid(Payment
$payment)
1426 $result =
new Result();
1435 $userBudget = Internals\UserBudgetPool::getUserBudgetByOrder($this);
1441 if ($maxPaid >=
$payment->getSum())
1447 $debitSum = $maxPaid;
1448 $finalSumPaid = $sumPaid;
1451 if ($debitSum > 0 &&
$payment->isInner())
1455 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_PAYMENT_CANCELLED_PAID'),
'SALE_ORDER_PAYMENT_NOT_ENOUGH_USER_BUDGET_SYNCPAID') );
1462 $result->setData(
array(
'SUM_PAID' => $finalSumPaid));
1470 private function syncOrderPaid()
1472 $result =
new Result();
1480 $userBudget = Internals\UserBudgetPool::getUserBudgetByOrder($this);
1486 if ($debitSum > $bePaid)
1488 $debitSum = $bePaid;
1491 if ($debitSum >= $userBudget)
1493 $debitSum = $userBudget;
1496 if ($userBudget >= $debitSum && $debitSum > 0)
1500 $finalSumPaid = $this->
getSumPaid() + $debitSum;
1501 $result->setData([
'SUM_PAID' => $finalSumPaid]);
1539 private function onAfterSyncPaid($oldPaid =
null)
1545 $shipmentCollection = $this->getShipmentCollection();
1547 $orderStatus =
null;
1549 $allowSetStatus =
false;
1551 if ($oldPaid ==
"N")
1553 if ($this->isPaid())
1555 $orderStatus = $this->getStatusOnPaid();
1559 $orderStatus = $this->getStatusOnPartialPaid();
1562 $allowSetStatus = ($this->getField(
'STATUS_ID') != static::getFinalStatus());
1565 if ($orderStatus !==
null && $allowSetStatus)
1567 if (strval($orderStatus) !=
'')
1569 $r = $this->
setField(
'STATUS_ID', $orderStatus);
1570 if (!$r->isSuccess())
1572 $result->addErrors($r->getErrors());
1574 elseif ($r->hasWarnings())
1576 $result->addWarnings($r->getWarnings());
1581 $entityMarker = $registry->getEntityMarkerClassName();
1582 $entityMarker::addMarker($this, $this, $r);
1605 if ($oldPaid ==
"N" && $this->
isPaid())
1617 if (!$r->isSuccess())
1619 $result->addErrors($r->getErrors());
1621 elseif ($r->hasWarnings())
1623 $result->addWarnings($r->getWarnings());
1628 $allowDelivery =
null;
1634 $allowDelivery =
true;
1638 $allowDelivery =
false;
1643 if ($oldPaid ==
"N" && $this->
isPaid())
1645 $allowDelivery =
true;
1649 $allowDelivery =
false;
1653 if ($allowDelivery !==
null)
1664 if (!$r->isSuccess())
1666 $result->addErrors($r->getErrors());
1683 $result = parent::refreshInternal();
1684 if (!$result->isSuccess())
1703 $r = parent::applyDiscount(
$data);
1704 if (!$r->isSuccess())
1709 if (isset(
$data[
'SHIPMENT']) && intval(
$data[
'SHIPMENT']) > 0
1710 && (isset(
$data[
'PRICE_DELIVERY']) && floatval(
$data[
'PRICE_DELIVERY']) >= 0
1711 || isset(
$data[
'DISCOUNT_PRICE']) && floatval(
$data[
'DISCOUNT_PRICE']) >= 0))
1715 if (!$shipment->isCustomPrice())
1717 $data[
'PRICE_DELIVERY'] = (float)
$data[
'PRICE_DELIVERY'];
1718 $data[
'DISCOUNT_PRICE'] = (float)
$data[
'DISCOUNT_PRICE'];
1719 if (
$data[
'PRICE_DELIVERY'] >= 0 &&
$data[
'PRICE_DELIVERY'] != $shipment->getPrice())
1722 $shipment->setField(
'PRICE_DELIVERY',
$data[
'PRICE_DELIVERY']);
1725 if (
$data[
'DISCOUNT_PRICE'] != $shipment->getField(
'DISCOUNT_PRICE'))
1728 $shipment->setField(
'DISCOUNT_PRICE',
$data[
'DISCOUNT_PRICE']);
1753 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_WRONG_ID'),
'SALE_ORDER_WRONG_ID') );
1757 return static::updateInternal($id,
array(
1759 'LOCKED_BY' => (is_object(
$USER) ?
$USER->GetID():
false)
1779 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_WRONG_ID'),
'SALE_ORDER_WRONG_ID') );
1783 if(!
$order = static::load($id))
1785 $result->addError(
new ResultError(Loc::getMessage(
'SALE_ORDER_ENTITY_NOT_FOUND'),
'SALE_ORDER_ENTITY_NOT_FOUND') );
1789 $userRights = \CMain::getUserRight(
"sale",
$USER->getUserGroupArray(),
"Y",
"Y");
1791 if (($userRights >=
"W") || (
$order->getField(
"LOCKED_BY") ==
$USER->getID()))
1793 return static::updateInternal($id,
array(
1794 'DATE_LOCK' =>
null,
1808 public static function isLocked($id)
1811 $r = static::getLockedStatus($id);
1812 if ($r->isSuccess())
1814 $lockResultData = $r->getData();
1816 if (array_key_exists(
'LOCK_STATUS', $lockResultData)
1817 && $lockResultData[
'LOCK_STATUS'] == static::SALE_ORDER_LOCK_STATUS_RED)
1838 'filter' =>
array(
'=ID' => $id),
1848 $result->addData(
array(
1849 'LOCKED_BY' =>
$data[
'LOCKED_BY'],
1850 'LOCK_STATUS' =>
$data[
'LOCK_STATUS'],
1851 'DATE_LOCK' =>
$data[
'DATE_LOCK'],
1868 $result = parent::verify();
1871 if (!$r->isSuccess())
1873 $result->addErrors($r->getErrors());
1877 if (!$r->isSuccess())
1879 $result->addErrors($r->getErrors());
1891 $providerInstance =
null;
1893 if (is_array($mapping) && isset($mapping[
'PROVIDER_KEY']))
1895 switch ($mapping[
'PROVIDER_KEY'])
1899 $providerInstance = $this;
1902 $providerInstance = $this->
getField(
'USER_ID');
1905 $providerInstance = $this->
getField(
'COMPANY_ID');
1910 return $providerInstance;
1921 return Internals\OrderTable::getList($parameters);
1930 protected function cloneEntities(\SplObjectStorage $cloneEntity)
1933 parent::cloneEntities($cloneEntity);
1935 $orderClone = $cloneEntity[$this];
1937 $orderClone->shipmentCollection = $this->getShipmentCollection()->createClone($cloneEntity);
1939 $orderClone->paymentCollection = $this->getPaymentCollection()->createClone($cloneEntity);
1941 $orderClone->tradeBindingCollection = $this->getTradeBindingCollection()->createClone($cloneEntity);
1949 if (parent::isChanged())
1973 parent::clearChanged();
1987 public function getDeliveryIdList() :
array
1992 foreach ($this->getShipmentCollection()->getNotSystemItems() as $shipment)
1994 if ($shipment->getDeliveryId() > 0)
1996 $result[] = $shipment->getDeliveryId();
2006 public function getPaySystemIdList() :
array
2013 if (
$payment->getPaymentSystemId() > 0)
2015 $result[] =
$payment->getPaymentSystemId();
2027 $vatInfo = parent::calculateVat();
2032 $rate = $shipment->getVatRate();
2035 $vatInfo[
'VAT_SUM'] += $shipment->getVatSum();
2036 $vatInfo[
'VAT_RATE'] = max($vatInfo[
'VAT_RATE'], $rate);
2048 $result = parent::saveEntities();
2051 if (!$r->isSuccess())
2053 $result->addWarnings($r->getErrors());
2057 if (!$r->isSuccess())
2059 $result->addWarnings($r->getErrors());
2063 Internals\UserBudgetPool::onUserBudgetSave($this->
getUserId());
2066 if (!$r->isSuccess())
2068 $result->addWarnings($r->getErrors());
2072 if (!
$res->isSuccess())
2074 $result->addWarnings(
$res->getErrors());
2076 $warningResult =
new Result();
2077 $warningResult->addWarnings(
$res->getErrors());
2081 $entityMarker = $registry->getEntityMarkerClassName();
2082 $entityMarker::addMarker($this, $this, $warningResult);
2083 static::updateInternal($this->
getId(),
array(
'MARKED' =>
'Y'));
2094 $price = parent::calculatePrice();
2107 protected function onBeforeSave()
2112 $entityMarker = $registry->getEntityMarkerClassName();
2117 $entityMarker::addMarker($this, $this,
$result);
2118 if ($this->getId() > 0)
2120 static::updateInternal($this->getId(), [
'MARKED' =>
'Y']);
2124 $entityMarker::refreshMarkers($this);
2134 $result = parent::onAfterSave();
2135 if (!$result->isSuccess())
2142 if (defined(
"CACHED_b_sale_order")
2147 && $this->
getField(
"UPDATED_1C") !=
"Y"
2166 public function save()
2173 $orderHistory = $registry->getOrderHistoryClassName();
2174 $orderHistory::collectEntityFields(
'ORDER', $this->getId(), $this->getId());
2177 $entityMarker = $registry->getEntityMarkerClassName();
2178 if ($entityMarker::hasErrors($this))
2180 $entityMarker::saveMarkers($this);
2181 static::updateInternal(
2185 'REASON_MARKED' => $this->getField(
'REASON_MARKED')
2201 protected function add()
2208 $orderHistory = $registry->getOrderHistoryClassName();
2209 $orderHistory::addAction(
'ORDER',
$result->getId(),
'ORDER_ADDED',
$result->getId(), $this);
2218 protected function update()
2220 $result = parent::update();
2224 $orderHistory = $registry->getOrderHistoryClassName();
2226 if (!$result->isSuccess())
2228 $orderHistory::addAction(
2231 'ORDER_UPDATE_ERROR',
2234 array(
"ERROR" => $result->getErrorMessages())
2239 $orderHistory::addAction(
2257 protected function callEventOnSaleOrderEntitySaved()
2259 parent::callEventOnSaleOrderEntitySaved();
2261 $changeMeaningfulFields =
array(
2274 $logFields =
array();
2279 $originalValues = $fields->getOriginalValues();
2281 foreach($originalValues as $originalFieldName => $originalFieldValue)
2283 if (in_array($originalFieldName, $changeMeaningfulFields) && $this->
getField($originalFieldName) != $originalFieldValue)
2285 $logFields[$originalFieldName] = $this->
getField($originalFieldName);
2286 $logFields[
'OLD_'.$originalFieldName] = $originalFieldValue;
2293 $orderHistory = $registry->getOrderHistoryClassName();
2294 $orderHistory::addLog(
2301 $orderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1
2316 $orderHistory = $registry->getOrderHistoryClassName();
2317 $orderHistory::addLog(
2320 'ORDER_EVENT_ON_ORDER_SAVED',
2324 $orderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1
2327 parent::callEventOnSaleOrderSaved();
2337 return Internals\OrderTable::add(
$data);
2348 return Internals\OrderTable::update($primary,
$data);
2358 return Internals\OrderTable::delete($primary);
2365 protected static function deleteExternalEntities(
$orderId)
2367 parent::deleteExternalEntities(
$orderId);
2375 $entityMarker = $registry->getEntityMarkerClassName();
2376 $entityMarker::deleteByOrderId(
$orderId);
2379 $orderHistory = $registry->getOrderHistoryClassName();
2380 $orderHistory::deleteByOrderId(
$orderId);
2390 protected function addChangesToHistory(
$name, $oldValue =
null, $value =
null)
2392 if ($this->getId() > 0)
2394 $historyFields =
array();
2395 if (
$name ==
"PRICE")
2397 $historyFields[
'CURRENCY'] = $this->getCurrency();
2399 if (
$name ==
"RESPONSIBLE_ID")
2401 $historyFields[
$name] = $value;
2404 $historyFields[
'OLD_'.$name] = $oldValue;
2409 $orderHistory = $registry->getOrderHistoryClassName();
2410 $orderHistory::addField(
2431 return $this->getDeliveryIdList();
2441 return $this->getPaySystemIdList();
2451 $result = parent::toArray();