Skip to content

Commit 06c0e4e

Browse files
authored
Merge pull request #613 from evotor/rc_0.6.31
Rc 0.6.31
2 parents d384b43 + f3fc6b1 commit 06c0e4e

File tree

5 files changed

+54
-2
lines changed

5 files changed

+54
-2
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ apply plugin: 'org.jetbrains.dokka'
77

88
android {
99
namespace = "ru.evotor.integrations"
10-
def version = 38
10+
def version = 39
1111

1212
compileSdk 30
1313

src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public final class PositionMapper {
9898
private static final String KEY_IS_MARK_SKIPPED = "is_mark_skipped";
9999
private static final String KEY_SALE_BAN_TIME = "sale_ban_time";
100100
private static final String KEY_VETERINARY_ATTRIBUTE = "veterinary_attribute";
101+
private static final String KEY_FORCE_TAX_NUMBER = "force_tax_number";
101102

102103
@Nullable
103104
public static Position from(@Nullable Bundle bundle) {
@@ -178,6 +179,7 @@ public static Position from(@Nullable Bundle bundle) {
178179
measureCode
179180
);
180181
VeterinaryAttribute veterinaryAttribute = VeterinaryAttribute.from(bundle.getBundle(KEY_VETERINARY_ATTRIBUTE));
182+
Boolean forceTaxNumber = (Boolean) bundle.getSerializable(KEY_FORCE_TAX_NUMBER);
181183

182184
Position.Builder builder = Position.Builder.copyFrom(new Position(
183185
uuid,
@@ -212,6 +214,7 @@ public static Position from(@Nullable Bundle bundle) {
212214
builder.setIsMarkSkipped(isMarkSkipped);
213215
builder.setSaleBanTime(saleBanTime);
214216
builder.setVeterinaryAttribute(veterinaryAttribute);
217+
builder.setForceTaxNumber(forceTaxNumber);
215218
return builder.build();
216219
}
217220

@@ -300,6 +303,7 @@ public static Bundle toBundle(@Nullable Position position) {
300303
bundle.putSerializable(KEY_IS_MARK_SKIPPED, position.getIsMarkSkipped());
301304
bundle.putBundle(KEY_SALE_BAN_TIME, position.getSaleBanTime() != null ? position.getSaleBanTime().toBundle() : null);
302305
bundle.putBundle(KEY_VETERINARY_ATTRIBUTE, position.getVeterinaryAttribute() != null ? position.getVeterinaryAttribute().toBundle() : null);
306+
bundle.putSerializable(KEY_FORCE_TAX_NUMBER, position.getForceTaxNumber());
303307
return bundle;
304308
}
305309

src/main/java/ru/evotor/framework/receipt/Position.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,16 @@
4040
* Позиция чека.
4141
*/
4242
public class Position implements Parcelable {
43+
/**
44+
* Разрешение для установки признака принудительного использования указанного НДС.
45+
* Указывайте разрешение в манифесте приложения, в элементе `<uses-permission android:name="" />` до элемента `<application>`.
46+
*/
47+
public static final String FORCE_TAX_NUMBER_SET_PERMISSION = "ru.evotor.permission.position.forceTaxNumber.SET";
48+
4349
/**
4450
* Текущая версия объекта Position
4551
*/
46-
private static final int VERSION = 15;
52+
private static final int VERSION = 16;
4753
/**
4854
* Магическое число для идентификации использования версионирования объекта.
4955
*/
@@ -240,6 +246,12 @@ public class Position implements Parcelable {
240246
@Nullable
241247
private TimeRange saleBanTime;
242248

249+
/**
250+
* Признак принудительного использования указанного НДС
251+
*/
252+
@Nullable
253+
private Boolean forceTaxNumber;
254+
243255
public Position(
244256
String uuid,
245257
@Nullable String productUuid,
@@ -314,6 +326,7 @@ public Position(Position position) {
314326
this.isMarkSkipped = position.isMarkSkipped;
315327
this.saleBanTime = position.saleBanTime;
316328
this.veterinaryAttribute = position.veterinaryAttribute;
329+
this.forceTaxNumber = position.forceTaxNumber;
317330
}
318331

319332
/**
@@ -642,6 +655,11 @@ public MarksCheckingInfo getMarksCheckingInfo() {
642655
return marksCheckingInfo;
643656
}
644657

658+
@Nullable
659+
public Boolean getForceTaxNumber() {
660+
return forceTaxNumber;
661+
}
662+
645663
@Override
646664
public boolean equals(Object o) {
647665
return equals(o, false);
@@ -715,6 +733,8 @@ private boolean equals(Object o, boolean exceptQuantity) {
715733
return false;
716734
if (!Objects.equals(veterinaryAttribute, position.veterinaryAttribute))
717735
return false;
736+
if (!Objects.equals(forceTaxNumber, position.forceTaxNumber))
737+
return false;
718738
return Objects.equals(subPositions, position.subPositions);
719739
}
720740

@@ -751,6 +771,7 @@ public int hashCode() {
751771
result = 31 * result + (isMarkSkipped != null ? isMarkSkipped.hashCode() : 0);
752772
result = 31 * result + (saleBanTime != null ? saleBanTime.hashCode() : 0);
753773
result = 31 * result + (veterinaryAttribute != null ? veterinaryAttribute.hashCode() : 0);
774+
result = 31 * result + (forceTaxNumber != null ? forceTaxNumber.hashCode() : 0);
754775
return result;
755776
}
756777

@@ -787,6 +808,7 @@ public String toString() {
787808
", isAgeLimited=" + isAgeLimited +
788809
", isMarkSkipped=" + isMarkSkipped +
789810
", veterinaryAttribute=" + veterinaryAttribute +
811+
", forceTaxNumber=" + forceTaxNumber +
790812
'}';
791813
}
792814

@@ -880,6 +902,7 @@ private void writeAdditionalFields(Parcel dest, int flags) {
880902
dest.writeSerializable(this.isMarkSkipped);
881903
dest.writeBundle(this.saleBanTime != null ? this.saleBanTime.toBundle() : null);
882904
dest.writeBundle(this.veterinaryAttribute != null ? this.veterinaryAttribute.toBundle() : null);
905+
dest.writeSerializable(this.forceTaxNumber);
883906
}
884907

885908
protected Position(Parcel in) {
@@ -989,6 +1012,9 @@ private void readAdditionalFields(Parcel in, String measureName, int measurePrec
9891012
if (version >= 15) {
9901013
readVeterinaryAttribute(in);
9911014
}
1015+
if (version >= 16) {
1016+
this.forceTaxNumber = (Boolean) in.readSerializable();
1017+
}
9921018
if (isVersionGreaterThanCurrent) {
9931019
in.setDataPosition(startDataPosition + dataSize);
9941020
}
@@ -2017,6 +2043,11 @@ public Builder setSaleBanTime(@Nullable TimeRange saleBanTime) {
20172043
return this;
20182044
}
20192045

2046+
public Builder setForceTaxNumber(@Nullable Boolean forceTaxNumber) {
2047+
position.forceTaxNumber = forceTaxNumber;
2048+
return this;
2049+
}
2050+
20202051
public Position build() {
20212052
return new Position(position);
20222053
}

src/main/java/ru/evotor/framework/settings/SettingsApi.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import ru.evotor.framework.settings.SettingsProviderContracts.Companion.BASE_URI
88
import ru.evotor.framework.settings.SettingsProviderContracts.Companion.DEPRECATED_BASE_URI
99
import ru.evotor.framework.settings.SettingsProviderContracts.SLIPS_AMOUNT_PROVIDER
1010
import ru.evotor.framework.settings.SettingsProviderContracts.NEGATIVE_BALANCE_PROVIDER
11+
import ru.evotor.framework.settings.SettingsProviderContracts.VAT_20_PROVIDER
1112

1213
/**
1314
* Настройки EvotorPos (раздел "Правила торговли").
@@ -35,6 +36,14 @@ object SettingsApi {
3536
getInt(columnIndex) != 0
3637
}
3738

39+
/**
40+
* Включена ли опция "Разрешить НДС 20% в 2026 году".
41+
*/
42+
fun isVat20Enabled(context: Context): Boolean? =
43+
VAT_20_PROVIDER.runCursor(context) { columnIndex ->
44+
getInt(columnIndex) != 0
45+
}
46+
3847
private fun <T> SettingsProviderContracts.runCursor(
3948
context: Context,
4049
baseUri: Uri = BASE_URI,

src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ enum class SettingsProviderContracts(
2323
NEGATIVE_BALANCE_PROVIDER(
2424
"NEGATIVE_BALANCE_PATH",
2525
"NEGATIVE_BALANCE_COLUMN"
26+
),
27+
28+
/**
29+
* Опция "Разрешить НДС 20% в 2026 году".
30+
*/
31+
VAT_20_PROVIDER(
32+
"VAT_20_PATH",
33+
"VAT_20_COLUMN"
2634
);
2735

2836
@Suppress("MemberVisibilityCanBePrivate")

0 commit comments

Comments
 (0)