Bitrix-D7  20.5.0
Класс Payment
Граф наследования:Payment:
CollectableEntity IBusinessValueProvider IEntityMarker Entity

Открытые члены

 setPaySystemService (Sale\PaySystem\Service $service)
 
 delete ()
 
 save ()
 
 getOrder ()
 
 getSum ()
 
 getSumPaid ()
 
 isPaid ()
 
 isReturn ()
 
 getOrderId ()
 
 getPaySystem ()
 
 getPaymentSystemId ()
 
 getPaymentSystemName ()
 
 setPaid ($value)
 
 setReturn ($value)
 
 isInner ()
 
 setField ($name, $value)
 
 setFieldNoDemand ($name, $value)
 
 verify ()
 
 setAccountNumber ($id)
 
 getBusinessValueProviderInstance ($mapping)
 
 getPersonTypeId ()
 
 createClone (\SplObjectStorage $cloneEntity)
 
 getHash ()
 
 isAllowPay ()
 
 isMarked ()
 
 getErrorEntity ($value)
 
 canAutoFixError ($value)
 
 getAutoFixErrorsList ()
 
 tryFixError ($code)
 
 canMarked ()
 
 getMarkField ()
 
- Открытые члены унаследованные от CollectableEntity
 setCollection (EntityCollection $collection)
 
 getCollection ()
 
 setInternalIndex ($index)
 
 getInternalIndex ()
 
 isStartField ($isMeaningfulField=false)
 
 clearStartField ()
 
 hasMeaningfulField ()
 
 doFinalAction ($hasMeaningfulField=false)
 
 setMathActionOnly ($value=false)
 
 isMathActionOnly ()
 
 isClone ()
 
- Открытые члены унаследованные от Entity
 initializeField ($fieldName, $fieldInfo)
 Fields factory. Подробнее...
 
 initialize ($className)
 
 postInitialize ()
 
 getObjectClass ()
 Returns class of Object for current entity. Подробнее...
 
 getObjectClassName ()
 Returns class name of Object for current entity. Подробнее...
 
 getCollectionClass ()
 
 getCollectionClassName ()
 
 createObject ($setDefaultValues=true)
 
 createCollection ()
 
 wakeUpObject ($row)
 
 wakeUpCollection ($rows)
 
 addField ($fieldInfo, $fieldName=null)
 
 getReferencesCountTo ($refEntityName)
 
 getReferencesTo ($refEntityName)
 
 getFields ()
 
 getField ($name)
 
 hasField ($name)
 
 getScalarFields ()
 
 getUField ($name)
 
 hasUField ($name)
 
 getName ()
 
 getFullName ()
 
 getNamespace ()
 
 getModule ()
 
 getDataClass ()
 
 getConnection ()
 
 getDBTableName ()
 
 getPrimary ()
 
 getPrimaryArray ()
 
 getAutoIncrement ()
 
 isUts ()
 
 isUtm ()
 
 setDefaultScope ($query)
 
 getCode ()
 
 getLangCode ()
 
 getTitle ()
 
 __clone ()
 
 compileDbTableStructureDump ()
 
 createDbTable ()
 Creates table according to Fields collection. Подробнее...
 
 readFromCache ($ttl, $cacheId, $countTotal=false)
 Reads data from cache. Подробнее...
 
 writeToCache (Main\DB\Result $result, $cacheId, $countTotal=false)
 
 getCacheTtl ($ttl)
 Returns cache TTL for the entity, possibly limited by the .settings.php: 'cache_flags' => array('value'=> array( "b_group_max_ttl" => 200, "b_group_min_ttl" => 100, )) Maximum is a higher-priority. Подробнее...
 
 cleanCache ()
 Cleans all cache entries for the entity. Подробнее...
 
 enableFullTextIndex ($field, $mode=true)
 Sets a flag indicating full text index support for a field. Подробнее...
 
 fullTextIndexEnabled ($field)
 Returns true if full text index is enabled for a field. Подробнее...
 

Открытые статические члены

static getRegistryEntity ()
 
static getAvailableFields ()
 
static getRegistryType ()
 
static create (PaymentCollection $collection, Sale\PaySystem\Service $paySystem=null)
 
static loadForOrder ($id)
 
static deleteNoDemand ($idOrder)
 
static getList (array $parameters=[])
 
static getUfId ()
 
static getEntityEventName ()
 
- Открытые статические члены унаследованные от Entity
static get ($entityName)
 Returns entity object. Подробнее...
 
static has ($entityName)
 Checks if entity exists. Подробнее...
 
static getInstance ($entityName)
 
static getDefaultObjectClassName ($entityName)
 
static getDefaultCollectionClassName ($entityName)
 
static isExists ($name)
 
static normalizeEntityClass ($entityName)
 
static getEntityClassParts ($class)
 
static camel2snake ($str)
 
static snake2camel ($str)
 
static normalizeName ($entityName)
 
static getInstanceByQuery (Query $query, &$entity_name=null)
 
static compileEntity ($entityName, $fields=null, $parameters=array())
 
static compileObjectClass ($dataClass)
 
static compileCollectionClass ($dataClass)
 
static destroy ($entity)
 

Поля данных

const RETURN_NONE = 'N'
 
const RETURN_INNER = 'Y'
 
const RETURN_PS = 'P'
 
- Поля данных унаследованные от Entity
 $name
 
 $connectionName
 
 $dbTableName
 
 $primary
 
 $autoIncrement
 
 $isUts
 
 $isUtm
 
const DEFAULT_OBJECT_PREFIX = 'EO_'
 

Защищенные члены

 __construct (array $fields=[])
 Payment constructor. Подробнее...
 
 onBeforeSetFields (array $values)
 
 onFieldModify ($name, $oldValue, $value)
 
 addCashboxChecks ()
 
 calculateStatistic ()
 
 onAfterSave ($isNew)
 
 loadPaySystem ()
 
 checkValueBeforeSet ($name, $value)
 
 addChangesToHistory ($name, $oldValue=null, $value=null)
 
 addInternal (array $data)
 
 updateInternal ($primary, array $data)
 
- Защищенные члены унаследованные от Entity
 appendField (Field $field)
 
 getCacheDir ()
 

Защищенные статические члены

static getMeaningfulFields ()
 
static generateXmlId ()
 
static deleteInternal ($primary)
 
static getFieldsMap ()
 
- Защищенные статические члены унаследованные от Entity
static getInstanceDirect ($className)
 

Защищенные данные

 $service
 
- Защищенные данные унаследованные от CollectableEntity
 $collection
 
 $internalIndex = null
 
 $isClone = false
 
- Защищенные данные унаследованные от Entity
 $className
 
 $module
 
 $uf_id
 
 $fields
 
 $fieldsMap
 
 $u_fields
 
 $code
 
 $references
 
 $isClone = false
 

Дополнительные унаследованные члены

- Статические защищенные данные унаследованные от Entity
static $instances
 

Подробное описание

См. определение в файле payment.php строка 17

Конструктор(ы)

◆ __construct()

__construct ( array  $fields = [])
protected

Payment constructor.

Аргументы
array$fields
Исключения
Main

См. определение в файле payment.php строка 31

32  {
33  $priceFields = ['SUM', 'PRICE_COD'];
34 
35  foreach ($priceFields as $code)
36  {
37  if (isset($fields[$code]))
38  {
40  }
41  }
42 
44  }
static roundPrecision($value)
Definition: pricemaths.php:17
__construct(Base $connector)
Constructor.
Definition: resultview.php:40

Методы

◆ addCashboxChecks()

addCashboxChecks ( )
protected
Возвращает
void;

См. определение в файле payment.php строка 657

658  {
659  $service = $this->getPaySystem();
660  if ($service && $service->getField("CAN_PRINT_CHECK") === "Y")
661  {
662  Cashbox\Internals\Pool::addDoc($this->getOrder()->getInternalId(), $this);
663  }
664  }

◆ addChangesToHistory()

addChangesToHistory (   $name,
  $oldValue = null,
  $value = null 
)
protected
Аргументы
string$name
null$oldValue
null$value

См. определение в файле payment.php строка 1080

1081  {
1082  if ($this->getId() > 0)
1083  {
1084  $order = $this->getOrder();
1085 
1086  if ($order && $order->getId() > 0)
1087  {
1089  'PAYMENT',
1090  $order->getId(),
1091  $name,
1092  $oldValue,
1093  $value,
1094  $this->getId(),
1095  $this
1096  );
1097  }
1098  }
1099  }
static addField($entityName, $orderId, $field, $oldValue=null, $value=null, $id=null, $entity=null, array $fields=array())

◆ addInternal()

addInternal ( array  $data)
protected
Аргументы
array$data
Возвращает
Main\ORM\Data\AddResult
Исключения

См. определение в файле payment.php строка 1348

1349  {
1350  return Internals\PaymentTable::add($data);
1351  }

◆ calculateStatistic()

calculateStatistic ( )
protected
Возвращает
void;

См. определение в файле payment.php строка 669

670  {
671  /** @var Order $order */
672  $order = $this->getOrder();
673 
674  BuyerStatistic::calculate($order->getUserId(), $order->getCurrency(), $order->getSiteId());
675  }
static calculate($userId, $currency, $lid)
Fill statistic for user for certain site and currency.

◆ canAutoFixError()

canAutoFixError (   $value)
Аргументы
$value
Возвращает
bool

Замещает IEntityMarker.

См. определение в файле payment.php строка 1297

1298  {
1299  $autoFix = false;
1300  $errorsList = static::getAutoFixErrorsList();
1301  if (is_array($errorsList) && in_array($value, $errorsList))
1302  {
1303  $autoFix = true;
1304  }
1305  return $autoFix;
1306  }

◆ canMarked()

canMarked ( )
Возвращает
bool

Замещает IEntityMarker.

См. определение в файле payment.php строка 1329

1330  {
1331  return true;
1332  }

◆ checkValueBeforeSet()

checkValueBeforeSet (   $name,
  $value 
)
protected
Аргументы
$name
$value
Возвращает
Result
Исключения
Main

См. определение в файле payment.php строка 1011

1012  {
1013  $result = parent::checkValueBeforeSet($name, $value);
1014 
1015  if ($name == "PAY_SYSTEM_ID")
1016  {
1017  if (intval($value) > 0 && !Sale\PaySystem\Manager::isExist($value))
1018  {
1019  $result->addError(
1020  new ResultError(
1021  Loc::getMessage('SALE_PAYMENT_WRONG_PAYMENT_SERVICE'),
1022  'SALE_PAYMENT_WRONG_PAYMENT_SERVICE'
1023  )
1024  );
1025  }
1026  }
1027  elseif ($name === 'ACCOUNT_NUMBER')
1028  {
1029  $dbRes = static::getList([
1030  'select' => ['ID'],
1031  'filter' => ['=ACCOUNT_NUMBER' => $value]
1032  ]);
1033 
1034  if ($dbRes->fetch())
1035  {
1036  $result->addError(
1037  new ResultError(
1038  Loc::getMessage('SALE_PAYMENT_ACCOUNT_NUMBER_EXISTS')
1039  )
1040  );
1041  }
1042  }
1043 
1044  return $result;
1045  }
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Class RestHandler \Handlers\PaySystem.

◆ create()

static create ( PaymentCollection  $collection,
Sale\PaySystem\Service  $paySystem = null 
)
static
Аргументы
PaymentCollection$collection
PaySystem\Service | null$paySystem
Возвращает
Payment
Исключения
Main

См. определение в файле payment.php строка 171

172  {
173  $fields = [
174  'DATE_BILL' => new Main\Type\DateTime(),
175  'PAID' => 'N',
176  'XML_ID' => static::generateXmlId(),
177  'IS_RETURN' => static::RETURN_NONE,
178  'CURRENCY' => $collection->getOrder()->getCurrency()
179  ];
180 
181  $payment = static::createPaymentObject();
182  $payment->setFieldsNoDemand($fields);
183  $payment->setCollection($collection);
184 
185  if ($paySystem !== null)
186  {
187  $payment->setPaySystemService($paySystem);
188  }
189 
190  return $payment;
191  }

◆ createClone()

createClone ( \SplObjectStorage  $cloneEntity)

Переопределяет метод предка CollectableEntity.

См. определение в файле payment.php строка 1207

1208  {
1209  if ($this->isClone() && $cloneEntity->contains($this))
1210  {
1211  return $cloneEntity[$this];
1212  }
1213 
1214  /** @var Payment $paymentClone */
1215  $paymentClone = parent::createClone($cloneEntity);
1216 
1217  /** @var Sale\PaySystem\Service $paySystem */
1218  if ($paySystem = $this->getPaySystem())
1219  {
1220  if (!$cloneEntity->contains($paySystem))
1221  {
1222  $cloneEntity[$paySystem] = $paySystem->createClone($cloneEntity);
1223  }
1224 
1225  if ($cloneEntity->contains($paySystem))
1226  {
1227  $paymentClone->service = $cloneEntity[$paySystem];
1228  }
1229  }
1230 
1231  return $paymentClone;
1232  }

◆ delete()

delete ( )
Возвращает
Result
Исключения
Main

Переопределяет метод предка CollectableEntity.

См. определение в файле payment.php строка 277

278  {
279  $result = new Result();
280 
281  if ($this->isPaid())
282  {
283  $result->addError(new ResultError(Loc::getMessage('SALE_PAYMENT_DELETE_EXIST_PAID'), 'SALE_PAYMENT_DELETE_EXIST_PAID'));
284  return $result;
285  }
286 
287  $r = $this->callEventOnBeforeEntityDeleted();
288  if (!$r->isSuccess())
289  {
290  return $result->addErrors($r->getErrors());
291  }
292 
293  $r = parent::delete();
294  if (!$r->isSuccess())
295  {
296  $result->addErrors($r->getErrors());
297  }
298 
299  $r = $this->callEventOnEntityDeleted();
300  if (!$r->isSuccess())
301  {
302  $result->addErrors($r->getErrors());
303  }
304 
305  return $result;
306  }

◆ deleteInternal()

static deleteInternal (   $primary)
staticprotected
Аргументы
$primary
Возвращает
Main\ORM\Data\DeleteResult
Исключения

См. определение в файле payment.php строка 1369

◆ deleteNoDemand()

static deleteNoDemand (   $idOrder)
static

См. определение в файле payment.php строка 251

252  {
253  $result = new Result();
254 
255  $dbRes = static::getList([
256  "select" => ["ID"],
257  "filter" => ["=ORDER_ID" => $idOrder]
258  ]);
259 
260  while ($payment = $dbRes->fetch())
261  {
262  $r = static::deleteInternal($payment['ID']);
263  if (!$r->isSuccess())
264  {
265  $result->addErrors($r->getErrors());
266  }
267  }
268 
269  return $result;
270  }

◆ generateXmlId()

static generateXmlId ( )
staticprotected
Возвращает
string

См. определение в файле payment.php строка 211

212  {
213  return uniqid('bx_');
214  }

◆ getAutoFixErrorsList()

getAutoFixErrorsList ( )
Возвращает
array

Замещает IEntityMarker.

См. определение в файле payment.php строка 1311

1312  {
1313  return [];
1314  }

◆ getAvailableFields()

static getAvailableFields ( )
static
Возвращает
array

См. определение в файле payment.php строка 86

87  {
88  return [
89  'PAID',
90  'DATE_PAID',
91  'EMP_PAID_ID',
92  'PAY_SYSTEM_ID',
93  'PS_STATUS',
94  'PS_STATUS_CODE',
95  'PS_STATUS_DESCRIPTION',
96  'PS_STATUS_MESSAGE',
97  'PS_SUM',
98  'PS_CURRENCY',
99  'PS_RESPONSE_DATE',
100  'PS_RECURRING_TOKEN',
101  'PAY_VOUCHER_NUM',
102  'PAY_VOUCHER_DATE',
103  'DATE_PAY_BEFORE',
104  'DATE_BILL',
105  'XML_ID',
106  'SUM',
107  'CURRENCY',
108  'PAY_SYSTEM_NAME',
109  'COMPANY_ID',
110  'PAY_RETURN_NUM',
111  'PRICE_COD',
112  'PAY_RETURN_DATE',
113  'EMP_RETURN_ID',
114  'PAY_RETURN_COMMENT',
115  'RESPONSIBLE_ID',
116  'EMP_RESPONSIBLE_ID',
117  'DATE_RESPONSIBLE_ID',
118  'IS_RETURN',
119  'COMMENTS',
120  'ACCOUNT_NUMBER',
121  'UPDATED_1C',
122  'ID_1C',
123  'VERSION_1C',
124  'EXTERNAL_PAYMENT',
125  'PS_INVOICE_ID',
126  'MARKED',
127  'REASON_MARKED',
128  'DATE_MARKED',
129  'EMP_MARKED_ID',
130  ];
131  }

◆ getBusinessValueProviderInstance()

getBusinessValueProviderInstance (   $mapping)
Аргументы
$mapping
Возвращает
Payment|null|string

Замещает IBusinessValueProvider.

См. определение в файле payment.php строка 1149

1150  {
1151  $providerInstance = null;
1152 
1153  if (is_array($mapping))
1154  {
1155  switch ($mapping['PROVIDER_KEY'])
1156  {
1157  case 'PAYMENT':
1158  $providerInstance = $this;
1159  break;
1160  case 'COMPANY':
1161  $providerInstance = $this->getField('COMPANY_ID');
1162  break;
1163  default:
1164  $order = $this->getOrder();
1165  if ($order)
1166  {
1167  $providerInstance = $order->getBusinessValueProviderInstance($mapping);
1168  }
1169  }
1170  }
1171 
1172  return $providerInstance;
1173  }

◆ getEntityEventName()

static getEntityEventName ( )
static
Возвращает
null|string

См. определение в файле payment.php строка 1395

1396  {
1397  return 'SalePayment';
1398  }

◆ getErrorEntity()

getErrorEntity (   $value)
Аргументы
$value
Возвращает
string

Замещает IEntityMarker.

См. определение в файле payment.php строка 1279

1280  {
1281  static $className = null;
1282  $errorsList = static::getAutoFixErrorsList();
1283  if (is_array($errorsList) && in_array($value, $errorsList))
1284  {
1285  if ($className === null)
1286  $className = static::getClassName();
1287  }
1288 
1289  return $className;
1290  }

◆ getFieldsMap()

static getFieldsMap ( )
staticprotected
Возвращает
array

См. определение в файле payment.php строка 1377

1378  {
1380  }

◆ getHash()

getHash ( )
Возвращает
string
Исключения
Main

См. определение в файле payment.php строка 1238

1239  {
1240  $order = $this->getOrder();
1241 
1242  return md5(
1243  $this->getId().
1245  $order->getId()
1246  );
1247  }

◆ getList()

static getList ( array  $parameters = [])
static
Аргументы
array$parameters
Возвращает
Main\ORM\Query\Result
Исключения
Main

См. определение в файле payment.php строка 1196

1197  {
1198  return Internals\PaymentTable::getList($parameters);
1199  }

◆ getMarkField()

getMarkField ( )
Возвращает
string

Замещает IEntityMarker.

См. определение в файле payment.php строка 1337

1338  {
1339  return 'MARKED';
1340  }

◆ getMeaningfulFields()

static getMeaningfulFields ( )
staticprotected
Возвращает
array

См. определение в файле payment.php строка 136

137  {
138  return ['PAY_SYSTEM_ID'];
139  }

◆ getOrder()

getOrder ( )
Возвращает
Order

См. определение в файле payment.php строка 649

650  {
651  return $this->getCollection()->getOrder();
652  }

◆ getOrderId()

getOrderId ( )
Возвращает
int

См. определение в файле payment.php строка 858

859  {
860  return $this->getField('ORDER_ID');
861  }

◆ getPaymentSystemId()

getPaymentSystemId ( )
Возвращает
int

См. определение в файле payment.php строка 892

893  {
894  return (int)$this->getField('PAY_SYSTEM_ID');
895  }

◆ getPaymentSystemName()

getPaymentSystemName ( )
Возвращает
string

См. определение в файле payment.php строка 900

901  {
902  return $this->getField('PAY_SYSTEM_NAME');
903  }

◆ getPaySystem()

getPaySystem ( )
Возвращает
PaySystem\Service

См. определение в файле payment.php строка 866

867  {
868  if ($this->service === null)
869  {
870  $this->service = $this->loadPaySystem();
871  }
872 
873  return $this->service;
874  }

◆ getPersonTypeId()

getPersonTypeId ( )
Возвращает
int|null

Замещает IBusinessValueProvider.

См. определение в файле payment.php строка 1178

1179  {
1180  $order = $this->getOrder();
1181  if ($order)
1182  {
1183  return $order->getPersonTypeId();
1184  }
1185 
1186  return null;
1187  }

◆ getRegistryEntity()

static getRegistryEntity ( )
static
Возвращает
string|void

См. определение в файле payment.php строка 49

50  {
52  }

◆ getRegistryType()

static getRegistryType ( )
static
Возвращает
string

См. определение в файле payment.php строка 157

158  {
160  }

◆ getSum()

getSum ( )
Возвращает
float

См. определение в файле payment.php строка 822

823  {
824  return floatval($this->getField('SUM'));
825  }

◆ getSumPaid()

getSumPaid ( )
Возвращает
float

См. определение в файле payment.php строка 830

831  {
832  return $this->getField('PS_SUM');
833  }

◆ getUfId()

static getUfId ( )
static
Возвращает
null

Переопределяет метод предка Entity.

См. определение в файле payment.php строка 1385

1386  {
1388  }

◆ isAllowPay()

isAllowPay ( )
Уст.:
Возвращает
bool
Исключения
Main

См. определение в файле payment.php строка 1258

1259  {
1260  /** @var \Bitrix\Sale\Order $order */
1261  $order = $this->getOrder();
1262 
1263  return $order->isAllowPay();
1264  }

◆ isInner()

isInner ( )
Возвращает
bool

См. определение в файле payment.php строка 973

974  {
975  return (int)$this->getPaymentSystemId() === (int)Sale\PaySystem\Manager::getInnerPaySystemId();
976  }

◆ isMarked()

isMarked ( )
Возвращает
bool

См. определение в файле payment.php строка 1269

1270  {
1271  return $this->getField('MARKED') == "Y";
1272  }

◆ isPaid()

isPaid ( )
Возвращает
bool

См. определение в файле payment.php строка 838

839  {
840  return $this->getField('PAID') === 'Y';
841  }

◆ isReturn()

isReturn ( )
Возвращает
bool

См. определение в файле payment.php строка 846

847  {
848  return
849  $this->getField('IS_RETURN') === static::RETURN_INNER
850  ||
851  $this->getField('IS_RETURN') === static::RETURN_PS
852  ;
853  }

◆ loadForOrder()

static loadForOrder (   $id)
static
Аргументы
$id
Возвращает
Payment[]
Исключения
Main

См. определение в файле payment.php строка 224

225  {
226  if (intval($id) <= 0)
227  {
228  throw new Main\ArgumentNullException("id");
229  }
230 
231  $payments = [];
232 
233  $paymentDataList = static::getList(['filter' => ['=ORDER_ID' => $id]]);
234  while ($paymentData = $paymentDataList->fetch())
235  {
236  $payments[] = static::createPaymentObject($paymentData);
237  }
238 
239  return $payments;
240  }

◆ loadPaySystem()

loadPaySystem ( )
protected
Возвращает
PaySystem\Service

См. определение в файле payment.php строка 879

880  {
881  if ($paySystemId = $this->getPaymentSystemId())
882  {
883  return Sale\PaySystem\Manager::getObjectById($paySystemId);
884  }
885 
886  return null;
887  }

◆ onAfterSave()

onAfterSave (   $isNew)
protected
Аргументы
$isNew

См. определение в файле payment.php строка 814

815  {
816  return;
817  }

◆ onBeforeSetFields()

onBeforeSetFields ( array  $values)
protected
Аргументы
array$values
Возвращает
array

См. определение в файле payment.php строка 58

59  {
60  if (isset($values['PAID']))
61  {
62  if ($this->getField('PAID') === 'Y')
63  {
64  if ($values['PAID'] === 'N')
65  {
66  $values = ['PAID' => $values['PAID']] + $values;
67  }
68  }
69  else
70  {
71  if ($values['PAID'] === 'Y')
72  {
73  // move to the end of array
74  unset($values['PAID']);
75  $values['PAID'] = 'Y';
76  }
77  }
78  }
79 
80  return $values;
81  }

◆ onFieldModify()

onFieldModify (   $name,
  $oldValue,
  $value 
)
protected
Аргументы
string$name
mixed$oldValue
mixed$value
Возвращает
Result
Исключения
Main

Переопределяет метод предка CollectableEntity.

См. определение в файле payment.php строка 403

404  {
405  global $USER;
406 
407  $result = new Result();
408 
409  if ($name === "PAID")
410  {
411  if ($value === "Y")
412  {
413  $this->setField('DATE_PAID', new Main\Type\DateTime());
414  $this->setField('EMP_PAID_ID', $USER->GetID());
415 
416  if ($this->getField('IS_RETURN') === self::RETURN_INNER)
417  {
418  $paySystemId = Sale\PaySystem\Manager::getInnerPaySystemId();
419  }
420  else
421  {
422  $paySystemId = $this->getPaymentSystemId();
423  }
424 
426  if ($service)
427  {
428  $operationResult = $service->creditNoDemand($this);
429  if (!$operationResult->isSuccess())
430  {
431  return $result->addErrors($operationResult->getErrors());
432  }
433  }
434 
435  $this->setField('IS_RETURN', static::RETURN_NONE);
436 
438  'p'.$this->getInternalIndex(),
440  [
441  'ENTITY' => $this,
442  'VALUES' => $this->fields->getOriginalValues(),
443  ]
444  );
445  }
446 
447  $this->addCashboxChecks();
448  }
449  elseif ($name === "IS_RETURN")
450  {
451  if ($value === static::RETURN_NONE)
452  {
453  return $result;
454  }
455 
456  if ($oldValue === static::RETURN_NONE)
457  {
458  $this->setField('EMP_RETURN_ID', $USER->GetID());
459  }
460 
461  /** @var PaymentCollection $collection */
462  $collection = $this->getCollection();
463 
464  $creditSum = 0;
465  $overPaid = $collection->getPaidSum() - $collection->getOrder()->getPrice();
466 
467  if ($overPaid <= 0)
468  {
469  $creditSum = $this->getSum();
470  $overPaid = 0;
471  }
472  elseif ($this->getSum() - $overPaid > 0)
473  {
474  $creditSum = $this->getSum() - $overPaid;
475  }
476 
477  if ($value == static::RETURN_PS)
478  {
479  $psId = $this->getPaymentSystemId();
480  }
481  else
482  {
483  $psId = Sale\PaySystem\Manager::getInnerPaySystemId();
484  }
485 
487 
488  if ($service && $service->isRefundable())
489  {
490  if ($creditSum)
491  {
492  if ($value == static::RETURN_PS)
493  {
494  if ($overPaid > 0)
495  {
497  if (PriceMaths::roundPrecision($overPaid) > PriceMaths::roundPrecision($userBudget))
498  {
499  return $result->addError(
500  new Entity\EntityError(
501  Loc::getMessage('SALE_ORDER_PAYMENT_RETURN_PAID'),
502  'SALE_ORDER_PAYMENT_RETURN_PAID'
503  )
504  );
505  }
506  }
507  }
508 
509  $refResult = $service->refund($this);
510  if (!$refResult->isSuccess())
511  {
512  return $result->addErrors($refResult->getErrors());
513  }
514  }
515  }
516  else
517  {
518  return $result->addError(
519  new Entity\EntityError(
520  Loc::getMessage('SALE_ORDER_PAYMENT_RETURN_NO_SUPPORTED'),
521  'SALE_ORDER_PAYMENT_RETURN_NO_SUPPORTED'
522  )
523  );
524  }
525 
526  $r = $this->setField('PAID', 'N');
527  if (!$r->isSuccess())
528  {
529  return $result->addErrors($r->getErrors());
530  }
531  }
532  elseif($name === "SUM")
533  {
534  if($this->isPaid())
535  {
536  $result = new Result();
537 
538  return $result->addError(
539  new ResultError(
540  Loc::getMessage('SALE_PAYMENT_NOT_ALLOWED_CHANGE_SUM'),
541  'SALE_PAYMENT_NOT_ALLOWED_CHANGE_SUM'
542  )
543  );
544  }
545  }
546  elseif ($name === "MARKED")
547  {
548  if ($oldValue !== "Y")
549  {
550  $this->setField('DATE_MARKED', new Main\Type\DateTime());
551  $this->setField('EMP_MARKED_ID', $USER->GetID());
552  }
553  elseif ($value === "N")
554  {
555  $r = $this->setField('REASON_MARKED', '');
556  if (!$r->isSuccess())
557  {
558  return $result->addErrors($r->getErrors());
559  }
560  }
561  }
562  elseif ($name === 'RESPONSIBLE_ID')
563  {
564  $this->setField('DATE_RESPONSIBLE_ID', new Main\Type\DateTime());
565  }
566 
567  return parent::onFieldModify($name, $oldValue, $value);
568  }
static addEvent(Order $order, $type, $event)
Definition: eventspool.php:24
static getUserBudgetByOrder(Sale\Order $order)
setField($name, $value)
Definition: payment.php:986

◆ save()

save ( )

См. определение в файле payment.php строка 579

580  {
581  $this->checkCallingContext();
582 
583  $result = new Result();
584 
585  $id = $this->getId();
586  $isNew = (int)$id <= 0;
587 
588  $this->callEventOnBeforeEntitySaved();
589 
590  if (!$this->isChanged())
591  {
592  return $result;
593  }
594 
595  if ($id > 0)
596  {
597  $r = $this->update();
598  }
599  else
600  {
601  $r = $this->add();
602  if ($r->getId() > 0)
603  {
604  $id = $r->getId();
605  }
606  }
607 
608  if (!$r->isSuccess())
609  {
610  $result->addErrors($r->getErrors());
611  return $result;
612  }
613 
614  if ($id > 0)
615  {
616  $result->setId($id);
617  }
618 
619  if ($this->fields->isChanged('PAID'))
620  {
621  $this->calculateStatistic();
622  }
623 
624  $this->callEventOnEntitySaved();
625 
626  $this->callDelayedEvents();
627 
628  $this->onAfterSave($isNew);
629 
630  return $result;
631  }
onAfterSave($isNew)
Definition: payment.php:814

◆ setAccountNumber()

setAccountNumber (   $id)
Аргументы
$id
Возвращает
Result
Исключения
Main

См. определение в файле payment.php строка 1121

1122  {
1123  $result = new Sale\Result();
1124 
1126 
1127  try
1128  {
1129  $r = static::updateInternal($id, ["ACCOUNT_NUMBER" => $value]);
1130  $res = $r->isSuccess(true);
1131  }
1132  catch (\Exception $exception)
1133  {
1134  $res = false;
1135  }
1136 
1137  if ($res)
1138  {
1139  $this->setFieldNoDemand('ACCOUNT_NUMBER', $value);
1140  }
1141 
1142  return $result;
1143  }
static generateForPayment(CollectableEntity $item)
setFieldNoDemand($name, $value)
Definition: payment.php:1055

◆ setField()

setField (   $name,
  $value 
)
Аргументы
$name
$value
Возвращает
Result
Исключения
Main

См. определение в файле payment.php строка 986

987  {
988  $priceFields = [
989  'SUM' => 'SUM',
990  'PRICE_COD' => 'PRICE_COD',
991  ];
992  if (isset($priceFields[$name]))
993  {
994  $value = PriceMaths::roundPrecision($value);
995  }
996 
997  if ($name === 'REASON_MARKED' && mb_strlen($value) > 255)
998  {
999  $value = mb_substr($value, 0, 255);
1000  }
1001 
1002  return parent::setField($name, $value);
1003  }

◆ setFieldNoDemand()

setFieldNoDemand (   $name,
  $value 
)

См. определение в файле payment.php строка 1055

1056  {
1057  $priceFields = [
1058  'SUM' => 'SUM',
1059  'PRICE_COD' => 'PRICE_COD',
1060  ];
1061  if (isset($priceFields[$name]))
1062  {
1063  $value = PriceMaths::roundPrecision($value);
1064  }
1065 
1066  if ($name === 'REASON_MARKED'
1067  && mb_strlen($value) > 255)
1068  {
1069  $value = mb_substr($value, 0, 255);
1070  }
1071 
1072  parent::setFieldNoDemand($name, $value);
1073  }

◆ setPaid()

setPaid (   $value)
Аргументы
$value
Возвращает
Result
Исключения
Main

См. определение в файле payment.php строка 912

913  {
914  $result = new Result();
915 
916  /** @var Result $r */
917  $r = $this->setField('PAID', $value);
918  if (!$r->isSuccess())
919  {
920  $result->addErrors($r->getErrors());
921  }
922  elseif($r->hasWarnings())
923  {
924  $result->addWarnings($r->getWarnings());
925  }
926 
927  return $result;
928  }

◆ setPaySystemService()

setPaySystemService ( Sale\PaySystem\Service  $service)
Аргументы
PaySystem\Service$service
Исключения
Main

См. определение в файле payment.php строка 198

199  {
200  $this->service = $service;
201  $result = $this->setField("PAY_SYSTEM_ID", $service->getField('ID'));
202  if ($result->isSuccess())
203  {
204  $this->setField("PAY_SYSTEM_NAME", $service->getField('NAME'));
205  }
206  }

◆ setReturn()

setReturn (   $value)
Аргументы
$value
Возвращает
Result
Исключения
Main

См. определение в файле payment.php строка 937

938  {
939  $result = new Result();
940 
941  if ($value === static::RETURN_INNER || $value === static::RETURN_PS)
942  {
943  if ($this->isReturn())
944  {
945  return new Result();
946  }
947  }
948  elseif($value === static::RETURN_NONE)
949  {
950  if (!$this->isReturn())
951  {
952  return new Result();
953  }
954  }
955  else
956  {
957  throw new Main\ArgumentOutOfRangeException('value');
958  }
959 
960  /** @var Result $r */
961  $r = $this->setField('IS_RETURN', $value);
962  if (!$r->isSuccess())
963  {
964  $result->addErrors($r->getErrors());
965  }
966 
967  return $result;
968  }

◆ tryFixError()

tryFixError (   $code)
Аргументы
$code
Возвращает
Result

Замещает IEntityMarker.

См. определение в файле payment.php строка 1321

1322  {
1323  return new Result();
1324  }

◆ updateInternal()

updateInternal (   $primary,
array  $data 
)
protected
Аргументы
$primary
array$data
Возвращает
Main\ORM\Data\UpdateResult
Исключения

См. определение в файле payment.php строка 1359

1360  {
1361  return Internals\PaymentTable::update($primary, $data);
1362  }

◆ verify()

verify ( )
Возвращает
Result

См. определение в файле payment.php строка 1104

1105  {
1106  $result = new Result();
1107  if ($this->getPaymentSystemId() <= 0)
1108  {
1109  $result->addError(new ResultError(Loc::getMessage("SALE_PAYMENT_PAYMENT_SERVICE_EMPTY"), 'SALE_PAYMENT_PAYMENT_SERVICE_EMPTY'));
1110  }
1111  return $result;
1112  }

Поля

◆ $service

$service
protected

См. определение в файле payment.php строка 24

◆ RETURN_INNER

const RETURN_INNER = 'Y'

См. определение в файле payment.php строка 20

◆ RETURN_NONE

const RETURN_NONE = 'N'

См. определение в файле payment.php строка 19

◆ RETURN_PS

const RETURN_PS = 'P'

См. определение в файле payment.php строка 21


Объявления и описания членов класса находятся в файле: