PageRenderTime 46ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/bitrix/modules/sale/lib/exchange/onec/orderdocument.php

https://gitlab.com/neuser/bitrix-core
PHP | 621 lines | 593 code | 7 blank | 21 comment | 1 complexity | ed3e082e0f62b2b6d887689bd8d46ed8 MD5 | raw file
  1. <?php
  2. namespace Bitrix\Sale\Exchange\OneC;
  3. class OrderDocument extends DocumentBase
  4. {
  5. protected static $FIELD_INFOS = null;
  6. /**
  7. * @return int
  8. */
  9. public function getTypeId()
  10. {
  11. return DocumentType::ORDER;
  12. }
  13. /**
  14. * @return array
  15. */
  16. static public function getFieldsInfo()
  17. {
  18. if(!self::$FIELD_INFOS)
  19. {
  20. self::$FIELD_INFOS = array(
  21. //region export fields
  22. /*'XML_1C_DOCUMENT_ID' => array(
  23. 'TYPE' => 'string'
  24. ),*/
  25. 'DATE' => array(
  26. 'TYPE' => 'date'
  27. ),
  28. 'TIME' => array(
  29. 'TYPE' => 'time'
  30. ),
  31. 'ROLE' => array(
  32. 'TYPE' => 'string'
  33. ),
  34. 'CURRENCY' => array(
  35. 'TYPE' => 'string'
  36. ),
  37. 'CURRENCY_RATE' => array(
  38. 'TYPE' => 'int'
  39. ),
  40. 'NUMBER_BASE' => array(
  41. 'TYPE' => 'int'
  42. ),
  43. 'NUMBER' => array(
  44. 'TYPE' => 'string'
  45. ),
  46. 'DISCOUNTS' => array(
  47. 'TYPE' => 'array',
  48. 'FIELDS' => array(
  49. 'NAME' => array(
  50. 'TYPE' => 'string'
  51. ),
  52. 'IN_PRICE' => array(
  53. 'TYPE' => 'bool'
  54. ),
  55. 'AMOUNT' => array(
  56. 'TYPE' => 'string'
  57. )
  58. )
  59. ),
  60. //endregion
  61. 'ID' => array(
  62. 'TYPE' => 'string'
  63. ),
  64. 'OPERATION' => array(
  65. 'TYPE' => 'string'
  66. ),
  67. 'VERSION' => array(
  68. 'TYPE' => 'int'
  69. ),
  70. 'AMOUNT' => array(
  71. 'TYPE' => 'float'
  72. ),
  73. 'COMMENT' => array(
  74. 'TYPE' => 'text'
  75. ),
  76. 'CANCELED' => array(
  77. 'TYPE' => 'bool'
  78. ),
  79. 'VERSION_1C' => array(
  80. 'TYPE' => 'string'
  81. ),
  82. 'ID_1C' => array(
  83. 'TYPE' => 'string'
  84. ),
  85. 'REK_VALUES' => array(
  86. 'TYPE' => 'array',
  87. 'FIELDS' => array(
  88. 'CANCEL' => array(
  89. 'TYPE' => 'array',
  90. 'FIELDS' => array(
  91. 'NAME' => array(
  92. 'TYPE' => 'string'
  93. ),
  94. 'VALUE' => array(
  95. 'TYPE' => 'bool'
  96. )
  97. )
  98. ),
  99. '1C_STATUS_ID' => array(
  100. 'TYPE' => 'array',
  101. 'FIELDS' => array(
  102. 'NAME' => array(
  103. 'TYPE' => 'string'
  104. ),
  105. 'VALUE' => array(
  106. 'TYPE' => 'string'
  107. )
  108. )
  109. ),
  110. '1C_PAYED_DATE' => array(
  111. 'TYPE' => 'array',
  112. 'FIELDS' => array(
  113. 'NAME' => array(
  114. 'TYPE' => 'string'
  115. ),
  116. 'VALUE' => array(
  117. 'TYPE' => 'datetime'
  118. )
  119. )
  120. ),
  121. '1C_DELIVERY_DATE' => array(
  122. 'TYPE' => 'array',
  123. 'FIELDS' => array(
  124. 'NAME' => array(
  125. 'TYPE' => 'string'
  126. ),
  127. 'VALUE' => array(
  128. 'TYPE' => 'datetime'
  129. )
  130. )
  131. ),
  132. 'PAY_SYSTEM_ID' => array(
  133. 'TYPE' => 'array',
  134. 'FIELDS' => array(
  135. 'NAME' => array(
  136. 'TYPE' => 'string'
  137. ),
  138. 'VALUE' => array(
  139. 'TYPE' => 'int'
  140. )
  141. )
  142. ),
  143. 'DELIVERY_SYSTEM_ID' => array(
  144. 'TYPE' => 'array',
  145. 'FIELDS' => array(
  146. 'NAME' => array(
  147. 'TYPE' => 'string'
  148. ),
  149. 'VALUE' => array(
  150. 'TYPE' => 'string'
  151. )
  152. )
  153. ),
  154. '1C_TRACKING_NUMBER' => array(
  155. 'TYPE' => 'array',
  156. 'FIELDS' => array(
  157. 'NAME' => array(
  158. 'TYPE' => 'string'
  159. ),
  160. 'VALUE' => array(
  161. 'TYPE' => 'string'
  162. )
  163. )
  164. ),
  165. //region export fields requsite
  166. 'DATE_PAID' => array(
  167. 'TYPE' => 'array',
  168. 'FIELDS' => array(
  169. 'NAME' => array(
  170. 'TYPE' => 'string'
  171. ),
  172. 'VALUE' => array(
  173. 'TYPE' => 'datetime'
  174. )
  175. )
  176. ),
  177. 'PAY_NUMBER' => array(
  178. 'TYPE' => 'array',
  179. 'FIELDS' => array(
  180. 'NAME' => array(
  181. 'TYPE' => 'string'
  182. ),
  183. 'VALUE' => array(
  184. 'TYPE' => 'string'
  185. )
  186. )
  187. ),
  188. 'DATE_ALLOW_DELIVERY_LAST' => array(
  189. 'TYPE' => 'array',
  190. 'FIELDS' => array(
  191. 'NAME' => array(
  192. 'TYPE' => 'string'
  193. ),
  194. 'VALUE' => array(
  195. 'TYPE' => 'datetime'
  196. )
  197. )
  198. ),
  199. 'DELIVERY_SERVICE' => array(
  200. 'TYPE' => 'array',
  201. 'FIELDS' => array(
  202. 'NAME' => array(
  203. 'TYPE' => 'string'
  204. ),
  205. 'VALUE' => array(
  206. 'TYPE' => 'string'
  207. )
  208. )
  209. ),
  210. 'DELIVERY_ID' => array(
  211. 'TYPE' => 'array',
  212. 'FIELDS' => array(
  213. 'NAME' => array(
  214. 'TYPE' => 'string'
  215. ),
  216. 'VALUE' => array(
  217. 'TYPE' => 'string'
  218. )
  219. )
  220. ),
  221. 'PAY_SYSTEM' => array(
  222. 'TYPE' => 'array',
  223. 'FIELDS' => array(
  224. 'NAME' => array(
  225. 'TYPE' => 'string'
  226. ),
  227. 'VALUE' => array(
  228. 'TYPE' => 'string'
  229. )
  230. )
  231. ),
  232. 'ORDER_PAID' => array(
  233. 'TYPE' => 'array',
  234. 'FIELDS' => array(
  235. 'NAME' => array(
  236. 'TYPE' => 'string'
  237. ),
  238. 'VALUE' => array(
  239. 'TYPE' => 'bool'
  240. )
  241. )
  242. ),
  243. 'ALLOW_DELIVERY' => array(
  244. 'TYPE' => 'array',
  245. 'FIELDS' => array(
  246. 'NAME' => array(
  247. 'TYPE' => 'string'
  248. ),
  249. 'VALUE' => array(
  250. 'TYPE' => 'bool'
  251. )
  252. )
  253. ),
  254. 'CANCELED' => array(
  255. 'TYPE' => 'array',
  256. 'FIELDS' => array(
  257. 'NAME' => array(
  258. 'TYPE' => 'string'
  259. ),
  260. 'VALUE' => array(
  261. 'TYPE' => 'bool'
  262. )
  263. )
  264. ),
  265. 'FINAL_STATUS' => array(
  266. 'TYPE' => 'array',
  267. 'FIELDS' => array(
  268. 'NAME' => array(
  269. 'TYPE' => 'string'
  270. ),
  271. 'VALUE' => array(
  272. 'TYPE' => 'bool'
  273. )
  274. )
  275. ),
  276. 'ORDER_STATUS' => array(
  277. 'TYPE' => 'array',
  278. 'FIELDS' => array(
  279. 'NAME' => array(
  280. 'TYPE' => 'string'
  281. ),
  282. 'VALUE' => array(
  283. 'TYPE' => 'string'
  284. )
  285. )
  286. ),
  287. 'ORDER_STATUS_ID' => array(
  288. 'TYPE' => 'array',
  289. 'FIELDS' => array(
  290. 'NAME' => array(
  291. 'TYPE' => 'string'
  292. ),
  293. 'VALUE' => array(
  294. 'TYPE' => 'string'
  295. )
  296. )
  297. ),
  298. 'DATE_CANCEL' => array(
  299. 'TYPE' => 'array',
  300. 'FIELDS' => array(
  301. 'NAME' => array(
  302. 'TYPE' => 'string'
  303. ),
  304. 'VALUE' => array(
  305. 'TYPE' => 'datetime'
  306. )
  307. )
  308. ),
  309. 'CANCEL_REASON' => array(
  310. 'TYPE' => 'array',
  311. 'FIELDS' => array(
  312. 'NAME' => array(
  313. 'TYPE' => 'string'
  314. ),
  315. 'VALUE' => array(
  316. 'TYPE' => 'string'
  317. )
  318. )
  319. ),
  320. 'DATE_STATUS' => array(
  321. 'TYPE' => 'array',
  322. 'FIELDS' => array(
  323. 'NAME' => array(
  324. 'TYPE' => 'string'
  325. ),
  326. 'VALUE' => array(
  327. 'TYPE' => 'datetime'
  328. )
  329. )
  330. ),
  331. 'USER_DESCRIPTION' => array(
  332. 'TYPE' => 'array',
  333. 'FIELDS' => array(
  334. 'NAME' => array(
  335. 'TYPE' => 'string'
  336. ),
  337. 'VALUE' => array(
  338. 'TYPE' => 'string'
  339. )
  340. )
  341. ),
  342. 'SITE_NAME' => array(
  343. 'TYPE' => 'array',
  344. 'FIELDS' => array(
  345. 'NAME' => array(
  346. 'TYPE' => 'string'
  347. ),
  348. 'VALUE' => array(
  349. 'TYPE' => 'string'
  350. )
  351. )
  352. ),
  353. 'DELIVERY_ADDRESS' => array(
  354. 'TYPE' => 'array',
  355. 'FIELDS' => array(
  356. 'NAME' => array(
  357. 'TYPE' => 'string'
  358. ),
  359. 'VALUE' => array(
  360. 'TYPE' => 'string'
  361. )
  362. )
  363. ),
  364. 'REKV' => array(
  365. 'TYPE' => 'array',
  366. 'FIELDS' => array(
  367. 'NAME' => array(
  368. 'TYPE' => 'string'
  369. ),
  370. 'VALUE' => array(
  371. 'TYPE' => 'string'
  372. )
  373. )
  374. ),
  375. //endregion
  376. ),
  377. ),
  378. 'ITEMS' => array(
  379. 'TYPE' => 'array',//BASE_UNIT
  380. 'FIELDS' => array(
  381. 'ID' => array(
  382. 'TYPE' => 'string'
  383. ),
  384. 'NAME' => array(
  385. 'TYPE' => 'string'
  386. ),
  387. 'QUANTITY' => array(
  388. 'TYPE' => 'float'
  389. ),
  390. 'SUMM' => array(
  391. 'TYPE' => 'float'
  392. ),
  393. 'PRICE_PER_UNIT' => array(
  394. 'TYPE' => 'float'
  395. ),
  396. 'PRICE_ONE' => array(
  397. 'TYPE' => 'float'
  398. ),
  399. 'REK_VALUES' => array(
  400. 'TYPE' => 'array',
  401. 'FIELDS' => array(
  402. 'PROPERTY_VALUE_BASKET' => array( // import
  403. 'TYPE' => 'array',
  404. 'FIELDS' => array(
  405. 'NAME' => array(
  406. 'TYPE' => 'string'
  407. ),
  408. 'VALUE' => array(
  409. 'TYPE' => 'string'
  410. )
  411. )
  412. ),
  413. 'TYPE_OF_NOMENKLATURA' => array( // import
  414. 'TYPE' => 'array',
  415. 'FIELDS' => array(
  416. 'NAME' => array(
  417. 'TYPE' => 'string'
  418. ),
  419. 'VALUE' => array(
  420. 'TYPE' => 'string'
  421. )
  422. )
  423. ),
  424. 'TYPE_NOMENKLATURA' => array(
  425. 'TYPE' => 'array',
  426. 'FIELDS' => array(
  427. 'NAME' => array(
  428. 'TYPE' => 'string'
  429. ),
  430. 'VALUE' => array(
  431. 'TYPE' => 'string'
  432. )
  433. )
  434. ),
  435. 'BASKET_NUMBER' => array(
  436. 'TYPE' => 'array',
  437. 'FIELDS' => array(
  438. 'NAME' => array(
  439. 'TYPE' => 'string'
  440. ),
  441. 'VALUE' => array(
  442. 'TYPE' => 'string'
  443. )
  444. )
  445. ),
  446. )
  447. ),
  448. 'TAXES' => array(
  449. 'TYPE' => 'array',
  450. 'FIELDS' => array(
  451. 'NAME' => array(
  452. 'TYPE' => 'string'
  453. ),
  454. 'TAX_VALUE' => array(
  455. 'TYPE' => 'string'
  456. ),
  457. 'IN_PRICE' => array(
  458. 'TYPE' => 'bool'
  459. )
  460. )
  461. ),
  462. 'DISCOUNTS' => array(
  463. 'TYPE' => 'array',
  464. 'FIELDS' => array(
  465. 'SUMM' => array(
  466. 'TYPE' => 'string'
  467. ),
  468. //region export fields discount
  469. 'NAME' => array(
  470. 'TYPE' => 'string'
  471. ),
  472. 'IN_PRICE' => array(
  473. 'TYPE' => 'bool'
  474. ),
  475. //endregion
  476. )
  477. ),
  478. 'MARKING_GROUP' => array(
  479. 'TYPE' => 'array',
  480. 'FIELDS' => array(
  481. 'CODE' => array(
  482. 'TYPE' => 'string'
  483. )
  484. )
  485. ),
  486. //region export fields items
  487. 'PRICE_PER_ITEM' => array(
  488. 'TYPE' => 'float'
  489. ),
  490. 'CATALOG_ID' => array(
  491. 'TYPE' => 'string'
  492. ),
  493. 'TAX_RATES' => array(
  494. 'TYPE' => 'array',
  495. 'FIELDS' => array(
  496. 'NAME' => array(
  497. 'TYPE' => 'string'
  498. ),
  499. 'RATE' => array(
  500. 'TYPE' => 'float'
  501. )
  502. )
  503. ),
  504. //endregion
  505. )
  506. ),
  507. 'TAXES' => array(
  508. 'TYPE' => 'array',
  509. 'FIELDS' => array(
  510. 'SUMM' => array(
  511. 'TYPE' => 'float'
  512. ),
  513. 'IN_PRICE' => array(
  514. 'TYPE' => 'bool'
  515. ),
  516. //region export fields taxes
  517. 'NAME' => array(
  518. 'TYPE' => 'string'
  519. )
  520. //endregion
  521. )
  522. ),
  523. '1C_DATE' => array(
  524. 'TYPE' => 'datetime'
  525. ),
  526. '1C_TIME' => array(
  527. 'TYPE' => 'datetime'
  528. ),
  529. //region export fields stories
  530. 'STORIES' => array(
  531. 'TYPE' => 'array',
  532. 'FIELDS' => array(
  533. 'ID'=> array(
  534. 'TYPE' => 'string'
  535. ),
  536. 'NAME'=> array(
  537. 'TYPE' => 'string'
  538. ),
  539. 'ADDRESS' => array(
  540. 'TYPE' => 'array',
  541. 'FIELDS' => array(
  542. 'PRESENTATION' => array(
  543. 'TYPE' => 'string'
  544. ),
  545. 'ADDRESS_FIELD' => array(
  546. 'TYPE' => 'array',
  547. 'FIELDS' => array(
  548. 'STREET' => array(
  549. 'TYPE' => 'array',
  550. 'FIELDS' => array(
  551. 'TYPE' => array(
  552. 'TYPE' => 'string'
  553. ),
  554. 'VALUE' => array(
  555. 'TYPE' => 'string'
  556. )
  557. )
  558. )
  559. )
  560. )
  561. )
  562. ),
  563. 'CONTACTS' => array(
  564. 'TYPE' => 'array',
  565. 'FIELDS' => array(
  566. 'CONTACT' => array(
  567. 'TYPE' => 'array',
  568. 'FIELDS' => array(
  569. 'WORK_PHONE_NEW' => array(
  570. 'TYPE' => 'array',
  571. 'FIELDS' => array(
  572. 'TYPE' => array(
  573. 'TYPE' => 'string'
  574. ),
  575. 'VALUE' => array(
  576. 'TYPE' => 'string'
  577. )
  578. )
  579. )
  580. )
  581. )
  582. )
  583. )
  584. )
  585. ), // schemes element
  586. //endregion
  587. 'AGENT'=>array()
  588. );
  589. static::unitFieldsInfo(self::$FIELD_INFOS);
  590. static::koefFieldsInfo(self::$FIELD_INFOS);
  591. }
  592. return self::$FIELD_INFOS;
  593. }
  594. static protected function unitFieldsInfo(&$info)
  595. {
  596. $info['ITEMS']['FIELDS']['ITEM_UNIT'] = array(
  597. 'TYPE' => 'array',
  598. 'FIELDS' => array(
  599. 'ITEM_UNIT_CODE' => array(
  600. 'TYPE' => 'int'
  601. ),
  602. 'ITEM_UNIT_NAME' => array(
  603. 'TYPE' => 'string'
  604. )
  605. )
  606. );
  607. }
  608. static protected function koefFieldsInfo(&$info)
  609. {//export
  610. $info['ITEMS']['FIELDS']['KOEF'] = array(
  611. 'TYPE' => 'string'
  612. );
  613. }
  614. }