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

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

 setPaySystemService (Sale\PaySystem\Service $service)
 
 delete ()
 
 save ()
 
 getOrder ()
 
 getId ()
 
 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=array())
 
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=array())
 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)
 

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

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

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

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

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

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

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

◆ __construct()

__construct ( array  $fields = array())
protected

Payment constructor.

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

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

37  {
38  $priceFields = ['SUM', 'PRICE_COD'];
39 
40  foreach ($priceFields as $code)
41  {
42  if (isset($fields[$code]))
43  {
45  }
46  }
47 
49  }

Методы

◆ addCashboxChecks()

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

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

711  {
712  /** @var Order $order */
713  $order = $this->getOrder();
714 
715  /** @var Sale\PaySystem\Service $ps */
716  $ps = $this->getPaySystem();
717  if (isset($ps) && $ps->getField("CAN_PRINT_CHECK") == "Y")
718  {
719  Cashbox\Internals\Pool::addDoc($order->getInternalId(), $this);
720  }
721  }

◆ addChangesToHistory()

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

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

1150  {
1151  if ($this->getId() > 0)
1152  {
1153  $order = $this->getOrder();
1154 
1155  if ($order && $order->getId() > 0)
1156  {
1158  'PAYMENT',
1159  $order->getId(),
1160  $name,
1161  $oldValue,
1162  $value,
1163  $this->getId(),
1164  $this
1165  );
1166  }
1167  }
1168  }

◆ addInternal()

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

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

1420  {
1421  return Internals\PaymentTable::add($data);
1422  }

◆ calculateStatistic()

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

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

727  {
728  /** @var Order $order */
729  $order = $this->getOrder();
730 
731  BuyerStatistic::calculate($order->getUserId(), $order->getCurrency(), $order->getSiteId());
732  }

◆ canAutoFixError()

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

Замещает IEntityMarker.

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

1369  {
1370  $autoFix = false;
1371  $errorsList = static::getAutoFixErrorsList();
1372  if (is_array($errorsList) && in_array($value, $errorsList))
1373  {
1374  $autoFix = true;
1375  }
1376  return $autoFix;
1377  }

◆ canMarked()

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

Замещает IEntityMarker.

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

1401  {
1402  return true;
1403  }

◆ checkValueBeforeSet()

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

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

1081  {
1082  $result = parent::checkValueBeforeSet($name, $value);
1083 
1084  if ($name == "PAY_SYSTEM_ID")
1085  {
1086  if (intval($value) > 0 && !Sale\PaySystem\Manager::isExist($value))
1087  {
1088  $result->addError(
1089  new ResultError(
1090  Loc::getMessage('SALE_PAYMENT_WRONG_PAYMENT_SERVICE'),
1091  'SALE_PAYMENT_WRONG_PAYMENT_SERVICE'
1092  )
1093  );
1094  }
1095  }
1096  elseif ($name === 'ACCOUNT_NUMBER')
1097  {
1098  $dbRes = static::getList([
1099  'select' => ['ID'],
1100  'filter' => ['=ACCOUNT_NUMBER' => $value]
1101  ]);
1102 
1103  if ($dbRes->fetch())
1104  {
1105  $result->addError(
1106  new ResultError(
1107  Loc::getMessage('SALE_PAYMENT_ACCOUNT_NUMBER_EXISTS')
1108  )
1109  );
1110  }
1111  }
1112 
1113  return $result;
1114  }

◆ create()

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

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

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

◆ createClone()

createClone ( \SplObjectStorage  $cloneEntity)

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

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

1283  {
1284  if ($this->isClone() && $cloneEntity->contains($this))
1285  {
1286  return $cloneEntity[$this];
1287  }
1288 
1289  /** @var Payment $paymentClone */
1290  $paymentClone = parent::createClone($cloneEntity);
1291 
1292  /** @var Sale\PaySystem\Service $paySystem */
1293  if ($paySystem = $this->getPaySystem())
1294  {
1295  if (!$cloneEntity->contains($paySystem))
1296  {
1297  $cloneEntity[$paySystem] = $paySystem->createClone($cloneEntity);
1298  }
1299 
1300  if ($cloneEntity->contains($paySystem))
1301  {
1302  $paymentClone->paySystem = $cloneEntity[$paySystem];
1303  }
1304  }
1305 
1306  return $paymentClone;
1307  }

◆ delete()

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

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

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

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

◆ deleteInternal()

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

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

1441  {
1442  return Internals\PaymentTable::delete($primary);
1443  }

◆ deleteNoDemand()

static deleteNoDemand (   $idOrder)
static

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

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

◆ generateXmlId()

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

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

218  {
219  return uniqid('bx_');
220  }

◆ getAutoFixErrorsList()

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

Замещает IEntityMarker.

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

1383  {
1384  return array();
1385  }

◆ getAvailableFields()

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

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

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

◆ getBusinessValueProviderInstance()

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

Замещает IBusinessValueProvider.

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

1225  {
1226  $providerInstance = null;
1227 
1228  if (is_array($mapping))
1229  {
1230  switch ($mapping['PROVIDER_KEY'])
1231  {
1232  case 'PAYMENT':
1233  $providerInstance = $this;
1234  break;
1235  case 'COMPANY':
1236  $providerInstance = $this->getField('COMPANY_ID');
1237  break;
1238  default:
1239  $order = $this->getOrder();
1240  if ($order)
1241  {
1242  $providerInstance = $order->getBusinessValueProviderInstance($mapping);
1243  }
1244  }
1245  }
1246 
1247  return $providerInstance;
1248  }

◆ getEntityEventName()

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

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

1467  {
1468  return 'SalePayment';
1469  }

◆ getErrorEntity()

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

Замещает IEntityMarker.

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

1351  {
1352  static $className = null;
1353  $errorsList = static::getAutoFixErrorsList();
1354  if (is_array($errorsList) && in_array($value, $errorsList))
1355  {
1356  if ($className === null)
1357  $className = static::getClassName();
1358  }
1359 
1360  return $className;
1361  }

◆ getFieldsMap()

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

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

1449  {
1451  }

◆ getHash()

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

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

1314  {
1315  $order = $this->getOrder();
1316 
1317  return md5(
1318  $this->getId().
1320  $order->getId()
1321  );
1322  }

◆ getId()

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

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

886  {
887  return $this->getField('ID');
888  }

◆ getList()

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

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

1272  {
1273  return Internals\PaymentTable::getList($parameters);
1274  }

◆ getMarkField()

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

Замещает IEntityMarker.

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

1409  {
1410  return 'MARKED';
1411  }

◆ getMeaningfulFields()

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

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

141  {
142  return array('PAY_SYSTEM_ID');
143  }

◆ getOrder()

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

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

689  {
690  /** @var PaymentCollection $paymentCollection */
691  $paymentCollection = $this->getCollection();
692  if (!$paymentCollection)
693  {
694  return null;
695  }
696 
697  /** @var Order $order */
698  $order = $paymentCollection->getOrder();
699  if (!$order)
700  {
701  return null;
702  }
703 
704  return $order;
705  }

◆ getOrderId()

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

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

928  {
929  return $this->getField('ORDER_ID');
930  }

◆ getPaymentSystemId()

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

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

962  {
963  return (int)$this->getField('PAY_SYSTEM_ID');
964  }

◆ getPaymentSystemName()

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

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

970  {
971  return $this->getField('PAY_SYSTEM_NAME');
972  }

◆ getPaySystem()

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

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

936  {
937  if ($this->paySystem === null)
938  {
939  $this->paySystem = $this->loadPaySystem();
940  }
941 
942  return $this->paySystem;
943  }

◆ getPersonTypeId()

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

Замещает IBusinessValueProvider.

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

1254  {
1255  $order = $this->getOrder();
1256  if ($order)
1257  {
1258  return $order->getPersonTypeId();
1259  }
1260 
1261  return null;
1262  }

◆ getRegistryEntity()

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

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

55  {
57  }

◆ getRegistryType()

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

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

161  {
163  }

◆ getSum()

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

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

895  {
896  return floatval($this->getField('SUM'));
897  }

◆ getSumPaid()

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

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

904  {
905  return $this->getField('PS_SUM');
906  }

◆ getUfId()

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

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

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

1457  {
1459  }

◆ isAllowPay()

isAllowPay ( )
Уст.:
Возвращает
bool

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

1330  {
1331  /** @var \Bitrix\Sale\Order $order */
1332  $order = $this->getOrder();
1333 
1334  return $order->isAllowPay();
1335  }

◆ isInner()

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

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

1043  {
1044  return (int)$this->getPaymentSystemId() === (int)Sale\PaySystem\Manager::getInnerPaySystemId();
1045  }

◆ isMarked()

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

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

1341  {
1342  return $this->getField('MARKED') == "Y";
1343  }

◆ isPaid()

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

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

912  {
913  return ($this->getField('PAID') == "Y");
914  }

◆ isReturn()

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

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

920  {
921  return ($this->getField('IS_RETURN') == "Y" || $this->getField('IS_RETURN') == "P");
922  }

◆ loadForOrder()

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

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

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

◆ loadPaySystem()

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

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

949  {
950  if ($paySystemId = $this->getPaymentSystemId())
951  {
952  return Sale\PaySystem\Manager::getObjectById($paySystemId);
953  }
954 
955  return null;
956  }

◆ onAfterSave()

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

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

878  {
879  return;
880  }

◆ onBeforeSetFields()

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

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

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

◆ onFieldModify()

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

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

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

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

◆ save()

save ( )

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

596  {
597  $this->checkCallingContext();
598 
599  $result = new Result();
600 
601  $id = $this->getId();
602  $isNew = (int)$id <= 0;
603 
604  if ($this->isChanged())
605  {
606  $this->callEventOnBeforeEntitySaved();
607  }
608 
609  if ($id > 0)
610  {
611  $r = $this->update();
612  }
613  else
614  {
615  $r = $this->add();
616  if ($r->getId() > 0)
617  {
618  $id = $r->getId();
619  }
620  }
621 
622  if (!$r->isSuccess())
623  {
625  'PAYMENT',
626  $this->getOrderId(),
627  'PAYMENT_UPDATE_ERROR',
628  ($id > 0) ? $id : null,
629  $this,
630  array("ERROR" => $r->getErrorMessages())
631  );
632 
633  $result->addErrors($r->getErrors());
634  return $result;
635  }
636 
637  if ($id > 0)
638  {
639  $result->setId($id);
640  }
641 
642  if ($this->fields->isChanged('PAID'))
643  {
644  if ($this->isPaid())
645  {
646  $this->callEventOnPaid();
647 
648  $registry = Registry::getInstance(static::getRegistryType());
649 
650  /** @var Notify $notifyClassName */
651  $notifyClassName = $registry->getNotifyClassName();
652  $notifyClassName::callNotify($this, EventActions::EVENT_ON_PAYMENT_PAID);
653  }
654 
655  $this->addCashboxChecks();
656 
657  $this->calculateStatistic();
658  }
659 
660  if ($this->isChanged())
661  {
662  $this->callEventOnEntitySaved();
663  }
664 
665  $this->callDelayedEvents();
666 
667  $this->onAfterSave($isNew);
668 
669  return $result;
670  }

◆ setAccountNumber()

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

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

1191  {
1192  $result = new Sale\Result();
1193  $id = intval($id);
1194 
1196 
1197  try
1198  {
1199  /** @var \Bitrix\Sale\Result $r */
1200  $r = static::updateInternal($id, array("ACCOUNT_NUMBER" => $value));
1201  $res = $r->isSuccess(true);
1202  }
1203  catch (Main\DB\SqlQueryException $exception)
1204  {
1205  $res = false;
1206  }
1207 
1208  if ($res)
1209  {
1210  $r = $this->setField('ACCOUNT_NUMBER', $value);
1211  if (!$r->isSuccess())
1212  {
1213  $result->addErrors($r->getErrors());
1214  }
1215  }
1216 
1217  return $result;
1218  }

◆ setField()

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

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

1056  {
1057  $priceFields = array(
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' && strlen($value) > 255)
1067  {
1068  $value = substr($value, 0, 255);
1069  }
1070 
1071  return parent::setField($name, $value);
1072  }

◆ setFieldNoDemand()

setFieldNoDemand (   $name,
  $value 
)

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

1125  {
1126  $priceFields = array(
1127  'SUM' => 'SUM',
1128  'PRICE_COD' => 'PRICE_COD',
1129  );
1130  if (isset($priceFields[$name]))
1131  {
1132  $value = PriceMaths::roundPrecision($value);
1133  }
1134 
1135  if ($name === 'REASON_MARKED'
1136  && strlen($value) > 255)
1137  {
1138  $value = substr($value, 0, 255);
1139  }
1140 
1141  parent::setFieldNoDemand($name, $value);
1142  }

◆ setPaid()

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

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

982  {
983  $result = new Result();
984 
985  /** @var Result $r */
986  $r = $this->setField('PAID', $value);
987  if (!$r->isSuccess())
988  {
989  $result->addErrors($r->getErrors());
990  }
991  elseif($r->hasWarnings())
992  {
993  $result->addWarnings($r->getWarnings());
994  }
995 
996  return $result;
997  }

◆ setPaySystemService()

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

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

205  {
206  $this->paySystem = $service;
207  $result = $this->setField("PAY_SYSTEM_ID", $service->getField('ID'));
208  if ($result->isSuccess())
209  {
210  $this->setField("PAY_SYSTEM_NAME", $service->getField('NAME'));
211  }
212  }

◆ setReturn()

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

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

1007  {
1008  $result = new Result();
1009 
1010  if ($value == "Y" || $value == "P")
1011  {
1012  if ($this->isReturn())
1013  {
1014  return new Result();
1015  }
1016  }
1017  elseif($value == "N")
1018  {
1019  if (!$this->isReturn())
1020  {
1021  return new Result();
1022  }
1023  }
1024  else
1025  {
1026  throw new Main\ArgumentOutOfRangeException('value');
1027  }
1028 
1029  /** @var Result $r */
1030  $r = $this->setField('IS_RETURN', $value);
1031  if (!$r->isSuccess())
1032  {
1033  $result->addErrors($r->getErrors());
1034  }
1035 
1036  return $result;
1037  }

◆ tryFixError()

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

Замещает IEntityMarker.

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

1393  {
1394  return new Result();
1395  }

◆ updateInternal()

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

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

1431  {
1432  return Internals\PaymentTable::update($primary, $data);
1433  }

◆ verify()

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

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

1174  {
1175  $result = new Result();
1176  if ($this->getPaymentSystemId() <= 0)
1177  {
1178  $result->addError(new ResultError(Loc::getMessage("SALE_PAYMENT_PAYMENT_SERVICE_EMPTY"), 'SALE_PAYMENT_PAYMENT_SERVICE_EMPTY'));
1179  }
1180  return $result;
1181  }

Поля

◆ $paySystem

$paySystem
protected

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

◆ RETURN_INNER

const RETURN_INNER = 'Y'

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

◆ RETURN_NONE

const RETURN_NONE = 'N'

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

◆ RETURN_PS

const RETURN_PS = 'P'

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


Объявления и описания членов класса находятся в файле:
Bitrix\Main\Localization\Loc\getMessage
static getMessage($code, $replace=null, $language=null)
Returns translation by message code.
Definition: loc.php:29
Bitrix\Sale\EventActions\EVENT_ON_PAYMENT_PAID
const EVENT_ON_PAYMENT_PAID
Definition: eventactions.php:38
Bitrix\Main\ORM\Entity\$className
$className
Definition: main/lib/orm/entity.php:28
Bitrix\Sale\Payment\getSum
getSum()
Definition: payment.php:894
Bitrix\Sale\Registry\REGISTRY_TYPE_ORDER
const REGISTRY_TYPE_ORDER
Definition: sale/lib/registry.php:16
Bitrix\Main\ORM\Entity\$fields
$fields
Definition: main/lib/orm/entity.php:44
Bitrix\Sale\Internals\CollectableEntity\getCollection
getCollection()
Definition: collectableentity.php:46
Bitrix\Main\ORM\Entity\$primary
$primary
Definition: main/lib/orm/entity.php:35
Bitrix\Sale\Payment\getId
getId()
Definition: payment.php:885
Bitrix\Sale\Internals\PaymentTable\getUfId
static getUfId()
Definition: internals/payment.php:22
Bitrix\Sale\Internals\PaymentTable\getMap
static getMap()
Definition: internals/payment.php:27
Bitrix\Sale\Internals\AccountNumberGenerator\generateForPayment
static generateForPayment(CollectableEntity $item)
Definition: accountnumber.php:130
Bitrix\Sale\Registry\ENTITY_PAYMENT
const ENTITY_PAYMENT
Definition: sale/lib/registry.php:21
Bitrix\Sale\Payment\isPaid
isPaid()
Definition: payment.php:911
Bitrix\Sale\Internals\CollectableEntity\isClone
isClone()
Definition: collectableentity.php:166
Bitrix\Main\ORM\Entity\getField
getField($name)
Definition: main/lib/orm/entity.php:537
Bitrix\Sale\Payment\calculateStatistic
calculateStatistic()
Definition: payment.php:726
Bitrix\Sale\Payment\isReturn
isReturn()
Definition: payment.php:919
Bitrix\Main\Type
Definition: main/lib/type/collection.php:2
Bitrix\Sale\Registry\getInstance
static getInstance($type)
Definition: sale/lib/registry.php:161
Bitrix\Sale\Payment\$paySystem
$paySystem
Definition: payment.php:29
Bitrix\Sale\OrderHistory\addAction
static addAction($entityName, $orderId, $type, $id=null, $entity=null, array $fields=array(), $level=null)
Definition: orderhistory.php:97
Bitrix\Sale\OrderHistory\addField
static addField($entityName, $orderId, $field, $oldValue=null, $value=null, $id=null, $entity=null, array $fields=array())
Definition: orderhistory.php:46
Bitrix\Sale\Payment\setField
setField($name, $value)
Definition: payment.php:1055
Bitrix\Sale\Payment\setFieldNoDemand
setFieldNoDemand($name, $value)
Definition: payment.php:1124
Bitrix\Sender\Connector\__construct
__construct(Base $connector)
Constructor.
Definition: resultview.php:40
Bitrix\Sale\BuyerStatistic\calculate
static calculate($userId, $currency, $lid)
Fill statistic for user for certain site and currency.
Definition: buyerstatistic.php:41
Bitrix\Main\ORM\Entity\$code
$code
Definition: main/lib/orm/entity.php:52
Sale
Class RestHandler.
Bitrix\Sale\Payment\getOrder
getOrder()
Definition: payment.php:688
Bitrix\Sale\Payment\loadPaySystem
loadPaySystem()
Definition: payment.php:948
Bitrix\Sale\Payment\onAfterSave
onAfterSave($isNew)
Definition: payment.php:877
Bitrix\Sale\Cashbox\Manager\getObjectById
static getObjectById($id)
Definition: sale/lib/cashbox/manager.php:60
Bitrix\Sale\Internals\UserBudgetPool\getUserBudgetByOrder
static getUserBudgetByOrder(Sale\Order $order)
Definition: userbudgetpool.php:204
Bitrix\Sale\Cashbox\Internals\Pool\addDoc
static addDoc($code, $doc)
Definition: cashbox/internals/pool.php:30
Bitrix\Sale\Internals\CollectableEntity\$collection
$collection
Definition: collectableentity.php:16
Bitrix\Sale\Payment\getPaymentSystemId
getPaymentSystemId()
Definition: payment.php:961
Bitrix\Sale\PriceMaths\roundPrecision
static roundPrecision($value)
Definition: pricemaths.php:17
Bitrix\Sale\Payment\getPaySystem
getPaySystem()
Definition: payment.php:935
Bitrix\Sale\Payment\addCashboxChecks
addCashboxChecks()
Definition: payment.php:710
Bitrix\Main\ORM\Entity\$name
$name
Definition: main/lib/orm/entity.php:32
Bitrix\Sale\Payment\getOrderId
getOrderId()
Definition: payment.php:927