1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
cashboxorangedataffd12.php
См. документацию.
1<?php
2
3namespace Bitrix\Sale\Cashbox;
4
5use Bitrix\Main\Localization;
6
8
15{
16 private const FFD_12_VERSION = 4;
17
18 const CODE_VAT_5 = 7;
19 const CODE_VAT_7 = 8;
20 const CODE_CALC_VAT_5 = 9;
21 const CODE_CALC_VAT_7 = 10;
22
26 private const PLANNED_STATUS_SALE = 1;
27 private const PLANNED_STATUS_SALE_RETURN = 3;
28
32 public static function getName()
33 {
34 return Localization\Loc::getMessage('SALE_CASHBOX_ORANGE_DATA_TITLE_FFD_12');
35 }
36
40 protected function buildPosition(array $checkData, array $item, bool $isSellReturn): array
41 {
42 $result = [
43 'text' => $this->buildPositionText($item),
44 'quantity' => $this->buildPositionQuantity($item),
45 'price' => $this->buildPositionPrice($item),
46 'tax' => $this->buildPositionTax($checkData, $item),
47 'paymentMethodType' => $this->buildPositionPaymentMethodType($checkData),
48 'paymentSubjectType' => $this->buildPositionPaymentSubjectType($item),
49 'plannedStatus' => $isSellReturn ? self::PLANNED_STATUS_SALE_RETURN : self::PLANNED_STATUS_SALE,
50 ];
51
52 if (isset($item['marking_code']))
53 {
54 $result['itemCode'] = $this->buildPositionMarkingCode($item);
55 }
56
57 $result['quantityMeasurementUnit'] = $this->buildPositionQuantityMeasurementUnit($item);
58
59 if (isset($item['supplier_info']))
60 {
62 $result += $this->buildPositionSupplier($item['supplier_info']);
63 }
64
65 return $result;
66 }
67
71 public function buildCheckQuery(Check $check)
72 {
73 $result = parent::buildCheckQuery($check);
74 $result['content']['ffdVersion'] = self::FFD_12_VERSION;
75
76 return $result;
77 }
78
83 {
84 $data = $this->getCheckData($check);
85 $correctionInfo = $data['correction_info'];
86
87 $result = $this->buildCheckQueryByCheckData($data, ($check->getType() === 'sellreturn'));
88 $result['content']['ffdVersion'] = self::FFD_12_VERSION;
89 $result['content']['correctionType'] = $this->getCorrectionTypeMap($correctionInfo['type']);
90 $result['content']['causeDocumentDate'] = $this->getCorrectionCauseDocumentDate($correctionInfo);
91 $result['content']['causeDocumentNumber'] = $this->getCorrectionCauseDocumentNumber($correctionInfo);
92 $result['content']['totalSum'] = $this->getCorrectionTotalSum($correctionInfo);
93
94 $vats = $this->getVatsByCheckData($data);
95 if (is_array($vats))
96 {
97 foreach ($vats as $vat)
98 {
99 $result['content'][$vat['code']] = $vat['value'];
100 }
101 }
102
103 return $result;
104 }
105
109 protected function getVatKeyPrefix(): string
110 {
111 return 'vat';
112 }
113
117 protected function getVatToCalcVatMap() : array
118 {
119 $map = parent::getVatToCalcVatMap();
120
121 return
122 $map +
123 [
124 self::CODE_VAT_5 => self::CODE_CALC_VAT_5,
125 self::CODE_VAT_7 => self::CODE_CALC_VAT_7,
126 ]
127 ;
128 }
129
130 protected static function getDefaultVatList(): array
131 {
132 $vatList = parent::getDefaultVatList();
133
134 return $vatList + [5 => self::CODE_VAT_5, 7 => self::CODE_VAT_7];
135 }
136
140 protected function getCorrectionUrlPath(): string
141 {
142 return '/correction12/';
143 }
144
182
187 private function buildPositionMarkingCode(array $item)
188 {
189 return $item['marking_code'];
190 }
191
195 protected static function hasMeasureSettings(): bool
196 {
197 return true;
198 }
199
204 private function buildPositionQuantityMeasurementUnit(array $item): ?int
205 {
206 $tag2108Value = $this->getValueFromSettings('MEASURE', $item['measure_code']);
207 if (is_null($tag2108Value) || $tag2108Value === '')
208 {
209 $tag2108Value = $this->getValueFromSettings('MEASURE', 'DEFAULT');
210 }
211
212 return (is_null($tag2108Value) || $tag2108Value === '') ? null : (int)$tag2108Value;
213 }
214
218 public static function getFfdVersion(): ?float
219 {
220 return 1.2;
221 }
222
226 public static function isCorrectionOn(): bool
227 {
228 return false;
229 }
230}
static loadMessages($file)
Определения loc.php:65
static getMessage($code, $replace=null, $language=null)
Определения loc.php:30
getValueFromSettings($name, $code)
Определения cashbox.php:203
buildCorrectionCheckQuery(CorrectionCheck $check)
Определения cashboxorangedataffd12.php:82
buildPosition(array $checkData, array $item, bool $isSellReturn)
Определения cashboxorangedataffd12.php:40
buildPositionQuantity(array $item)
Определения cashboxorangedata.php:198
buildPositionPrice(array $item)
Определения cashboxorangedata.php:207
buildPositionPaymentMethodType(array $checkData)
Определения cashboxorangedata.php:216
getCheckData(AbstractCheck $check)
Определения cashboxorangedata.php:105
buildCheckQueryByCheckData(array $checkData, bool $isSellReturn)
Определения cashboxorangedata.php:115
buildPositionPaymentSubjectType(array $item)
Определения cashboxorangedata.php:227
buildPositionSupplier(array $supplier)
Определения cashboxorangedata.php:269
getCorrectionTotalSum($correctionInfo)
Определения cashboxorangedata.php:1184
getCorrectionCauseDocumentNumber($correctionInfo)
Определения cashboxorangedata.php:1175
getCorrectionCauseDocumentDate($correctionInfo)
Определения cashboxorangedata.php:1164
buildPositionTax(array $checkData, $item)
Определения cashboxorangedata.php:239
const PAYMENT_OBJECT_EXCISE
Определения check.php:25
const PAYMENT_OBJECT_LOTTERY
Определения check.php:31
const PAYMENT_OBJECT_SOCIAL_INSURANCE
Определения check.php:47
const PAYMENT_OBJECT_COMPOSITE
Определения check.php:35
const PAYMENT_OBJECT_LOTTERY_PRIZE
Определения check.php:32
const PAYMENT_OBJECT_MEDICAL_INSURANCE_IP
Определения check.php:45
const PAYMENT_OBJECT_COMMODITY_MARKING_EXCISE
Определения check.php:50
const PAYMENT_OBJECT_NON_OPERATING_GAIN
Определения check.php:38
const PAYMENT_OBJECT_COMMODITY_MARKING_NO_MARKING_EXCISE
Определения check.php:49
const PAYMENT_OBJECT_RESORT_FEE
Определения check.php:40
const PAYMENT_OBJECT_PENSION_INSURANCE_IP
Определения check.php:43
const PAYMENT_OBJECT_PROPERTY_RIGHT
Определения check.php:37
const PAYMENT_OBJECT_GAMBLING_PRIZE
Определения check.php:30
const PAYMENT_OBJECT_COMMODITY_MARKING
Определения check.php:52
const PAYMENT_OBJECT_COMMODITY
Определения check.php:24
const PAYMENT_OBJECT_AGENT_COMMISSION
Определения check.php:34
const PAYMENT_OBJECT_ANOTHER
Определения check.php:36
const PAYMENT_OBJECT_DEPOSIT
Определения check.php:41
const PAYMENT_OBJECT_MEDICAL_INSURANCE
Определения check.php:46
const PAYMENT_OBJECT_SERVICE
Определения check.php:27
const PAYMENT_OBJECT_INTELLECTUAL_ACTIVITY
Определения check.php:33
const PAYMENT_OBJECT_PAYMENT
Определения check.php:28
const PAYMENT_OBJECT_EXPENSE
Определения check.php:42
const PAYMENT_OBJECT_GAMBLING_BET
Определения check.php:29
const PAYMENT_OBJECT_CASINO_PAYMENT
Определения check.php:48
const PAYMENT_OBJECT_PENSION_INSURANCE
Определения check.php:44
const PAYMENT_OBJECT_JOB
Определения check.php:26
const PAYMENT_OBJECT_COMMODITY_MARKING_NO_MARKING
Определения check.php:51
const PAYMENT_OBJECT_SALES_TAX
Определения check.php:39
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$map
Определения config.php:5
$vat
Определения template.php:273
$vatList
Определения yandex_run.php:916