1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
numeratorrequestmanager.php
См. документацию.
1<?php
3
13
19{
20 /*** @var \Bitrix\Main\HttpRequest */
21 private $request;
22
27 public function __construct($request)
28 {
29 $this->request = $request;
30 }
31
40 public function saveFromRequest()
41 {
42 $numeratorConfig = $this->request->getPost(Numerator::getType());
43 $id = $numeratorConfig ['id'] ?? null;
44 if ($id)
45 {
46 $result = $this->updateNextSequentialNumber($id);
47 if ($result->isSuccess())
48 {
49 $result = Numerator::update($id, $this->request->getPostList()->toArray());
50 }
51 }
52 else
53 {
54 $numerator = Numerator::create();
55 $result = $numerator->setConfig($this->request->getPostList()->toArray());
56 if ($result->isSuccess())
57 {
58 $result = $numerator->save();
59 }
60 }
61 return $result;
62 }
63
71 private function updateNextSequentialNumber($id)
72 {
73 $sequenceConfig = $this->request->getPost(SequentNumberGenerator::getType());
74 $result = new Result();
75 if ($sequenceConfig !== null && is_array($sequenceConfig)
76 && array_key_exists('nextNumberForSequence', $sequenceConfig) && $sequenceConfig['nextNumberForSequence'])
77 {
78 $nextNumber = $sequenceConfig['nextNumberForSequence'];
79 if (is_numeric($nextNumber))
80 {
81 $sequence = NumeratorTable::query()
82 ->registerRuntimeField('',
83 new Reference(
84 'ref',
85 NumeratorSequenceTable::class,
86 ['=this.ID' => 'ref.NUMERATOR_ID']
87 )
88 )
89 ->addSelect(('ID'))
90 ->addSelect('ref.NEXT_NUMBER', 'NEXT_NUMBER')
91 ->addSelect('ref.TEXT_KEY', 'TEXT_KEY')
92 ->where('ID', $id)
93 ->exec()
94 ->fetchAll();
95
96 if ($sequence && count($sequence) == 1)
97 {
98 $numerator = Numerator::load($id);
99 if ($numerator)
100 {
101 $res = $numerator->setNextSequentialNumber($nextNumber, $sequence[0]['NEXT_NUMBER'], $sequence[0]['TEXT_KEY']);
102 if (!$res->isSuccess())
103 {
104 $errors = $res->getErrors();
105 return $result->addError($errors[0]);
106 }
107 }
108 }
109 }
110 else
111 {
112 return $result->addError(new Error(Loc::getMessage('MAIN_NUMERATOR_EDIT_ERROR_NUMBER_NOT_NUMERIC')));
113 }
114 }
115 return $result;
116 }
117}
Определения error.php:15
static create()
Определения numerator.php:43
static getType()
Определения numerator.php:621
static update($numId, $config)
Определения numerator.php:278
static load($numeratorId, $source=null)
Определения numerator.php:369
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
$errors
Определения iblock_catalog_edit.php:74
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936