Document::getFpd()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
namespace alekciy\ofd\providers\taxcom\Model;
4
5
use alekciy\ofd\BaseModel;
6
use alekciy\ofd\interfaces\DocumentInterface;
7
8
class Document extends BaseModel implements DocumentInterface
9
{
10
	/** @var string Признак расчета */
11
	public $accountingType = '';
12
13
	/** @var int Сумма нал (копейки) */
14
	public $cash = 0;
15
16
	/** @var string Кассир */
17
	public $cashier = '';
18
19
	/** @var string Время создания */
20
	public $dateTime = '';
21
22
	/** @var integer Тип документа */
23
	public $documentType = 0;
24
25
	/** @var int Сумма безнал (копейки) */
26
	public $electronic = 0;
27
28
	/** @var integer Номер фискального документа (ФД) */
29
	public $fdNumber = 0;
30
31
	/** @var string Заводской номер ФН */
32
	public $fnFactoryNumber = '';
33
34
	/** @var string Фискальный признак документа */
35
	public $fpd = '';
36
37
	/** @var int Сумма с НДС 0% (копейки) */
38
	public $nds0Sum = 0;
39
40
	/** @var int НДС 10% (копейки) */
41
	public $nds10 = 0;
42
43
	/** @var int НДС 18% (копейки) */
44
	public $nds18 = 0;
45
46
	/** @var int НДС 20% (копейки) */
47
	public $nds20 = 0;
48
49
	/** @var int НДС 10/110 (копейки) */
50
	public $ndsC10 = 0;
51
52
	/** @var int НДС 18/118 (копейки) */
53
	public $ndsC18 = 0;
54
55
	/** @var int НДС 20/120 (копейки) */
56
	public $ndsC20 = 0;
57
58
	/** @var int Сумма без НДС (копейки) */
59
	public $nondsSum = 0;
60
61
	/** @var integer Номер за смену */
62
	public $numberInShift = 0;
63
64
	/** @var int Номер смены */
65
	public $shiftNumber = 0;
66
67
	/** @var int Сумма (копейки) */
68
	public $sum = 0;
69
70
	/** @var string Система налогообложения */
71
	public $taxationSystem = '';
72
73
	// Система налогообложения
74
	const TAX_OSN                    = 'OSN';                  // общая система налогообложения (ОСН)
75
	const TAX_USN_INCOME             = 'USNIncome';            // упрощенная система налогообложения (УСН), доход
76
	const TAX_USN_INCOME_EXPENDITURE = 'USNIncomeExpenditure'; // упрощенная система налогообложения (УСН), доход-расход
77
	const TAX_ENVD                   = 'ENVD';                 // единый налог на вмененный доход (ЕНВД)
78
	const TAX_ESN                    = 'ESN';                  // единый социальный налог (ЕСН)
79
	const TAX_PATENT                 = 'Patent';               // Патент
80
81
	// Типы
82
	const TYPE_OPEN           = 2;  // отчет об открытии смены
83
	const TYPE_CLOSE          = 5;  // отчет о закрытии смены
84
	const TYPE_STATE          = 21; // отчет о текущем состоянии расчетов
85
	const TYPE_CHECK          = 3;  // кассовый чек
86
	const TYPE_CHECK_CORRECT  = 31; // кассовый чек коррекции
87
	const TYPE_STRICT         = 4;  // бланк строгой отчетности
88
	const TYPE_STRICT_CORRECT = 41; // бланк строгой отчетности коррекции
89
90
	// Признак расчета
91
	const ACCOUNTING_INCOME             = 'Income';            // приход
92
	const ACCOUNTING_INCOME_RETURN      = 'IncomeReturn';      // возврат прихода
93
	const ACCOUNTING_EXPENDITURE        = 'Expenditure';       // расход
94
	const ACCOUNTING_EXPENDITURE_RETURN = 'ExpenditureReturn'; // возврат расхода
95
96
	/**
97
	 * @inheritDoc
98
	 */
99
	protected function getRuleList(): array
100
	{
101
		return [
102
			'fnFactoryNumber' => ['required', ['lengthMin', 1], ['lengthMax', 16]],
103
			'dateTime'        => ['required', ['dateFormat', 'Y-m-d\TH:i:s']],
104
			'fdNumber'        => ['required', 'integer', ['min', 1]],
105
			'shiftNumber'     => ['required', 'integer', ['min', 0]],
106
			'numberInShift'   => ['required', 'integer', ['min', 0]],
107
			'fpd'             => ['required', ['lengthMin', 1], ['lengthMax', 10]],
108
			'documentType'    => ['required', ['in', [
109
				self::TYPE_OPEN,
110
				self::TYPE_CLOSE,
111
				self::TYPE_STATE,
112
				self::TYPE_CHECK,
113
				self::TYPE_CHECK_CORRECT,
114
				self::TYPE_STRICT,
115
				self::TYPE_STRICT_CORRECT,
116
			]]],
117
118
			'cashier'    => [['lengthMin', 1], ['lengthMax', 256]],
119
			'sum'        => ['integer', ['min', 0], ['max', PHP_INT_MAX ]],
120
			'cash'       => ['integer', ['min', 0], ['max', PHP_INT_MAX ]],
121
			'electronic' => ['integer', ['min', 0], ['max', PHP_INT_MAX ]],
122
			'nondsSum'   => ['integer', ['min', 0], ['max', PHP_INT_MAX ]],
123
			'nds0Sum'    => ['integer', ['min', 0], ['max', PHP_INT_MAX ]],
124
			'nds10'      => ['integer', ['min', 0]],
125
			'nds18'      => ['integer', ['min', 0]],
126
			'nds20'      => ['integer', ['min', 0]],
127
			'ndsC10'     => ['integer', ['min', 0]],
128
			'ndsC18'     => ['integer', ['min', 0]],
129
			'ndsC20'     => ['integer', ['min', 0]],
130
			'accountingType' => [['in', [
131
				self::ACCOUNTING_INCOME,
132
				self::ACCOUNTING_INCOME_RETURN,
133
				self::ACCOUNTING_EXPENDITURE,
134
				self::ACCOUNTING_EXPENDITURE_RETURN,
135
			]]],
136
		];
137
	}
138
139
	/**
140
	 * @inheritDoc
141
	 */
142
	public function getFnFactoryNumber(): string
143
	{
144
		return $this->fnFactoryNumber;
145
	}
146
147
	/**
148
	 * @inheritDoc
149
	 */
150
	public function getNumber(): int
151
	{
152
		return $this->fdNumber;
153
	}
154
155
	/**
156
	 * @inheritDoc
157
	 */
158
	public function getCreatAt(): string
159
	{
160
		return $this->dateTime;
161
	}
162
163
	/**
164
	 * @inheritDoc
165
	 */
166
	public function getFpd(): string
167
	{
168
		return $this->fpd;
169
	}
170
171
	/**
172
	 * @inheritDoc
173
	 */
174
	protected function getPropertyInitMap(): array
175
	{
176
		return [];
177
	}
178
}