From bae9db3cf214e077c400761fd775c777e5f96fb2 Mon Sep 17 00:00:00 2001 From: Nikita Parmenov Date: Thu, 22 May 2025 14:26:27 +0300 Subject: [PATCH 01/56] STDEV-13280 --- .../action/datamapper/PositionMapper.java | 14 ++++ .../ru/evotor/framework/kkt/FiscalTags.kt | 10 +++ .../ru/evotor/framework/receipt/Position.java | 67 ++++++++++++++++++- .../evotor/framework/receipt/PositionTable.kt | 2 + .../ru/evotor/framework/receipt/ReceiptApi.kt | 2 + .../VolumeSortAccountingRealization.kt | 38 +++++++++++ .../VolumeSortAccountingRealizationMapper.kt | 21 ++++++ 7 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt create mode 100644 src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java index 63f2c453f..3f7019f4e 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java @@ -30,6 +30,7 @@ import ru.evotor.framework.receipt.position.PreferentialMedicine; import ru.evotor.framework.receipt.TimeRange; import ru.evotor.framework.receipt.position.SettlementMethod; +import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization; public final class PositionMapper { @@ -99,6 +100,8 @@ public final class PositionMapper { private static final String KEY_SALE_BAN_TIME = "sale_ban_time"; private static final String KEY_VETERINARY_ATTRIBUTE = "veterinary_attribute"; + private static final String KEY_VOLUME_SORT_ACCOUNTING_REALIZATION = "volumeSortAccountingRealization"; + @Nullable public static Position from(@Nullable Bundle bundle) { if (bundle == null) { @@ -179,6 +182,9 @@ public static Position from(@Nullable Bundle bundle) { ); VeterinaryAttribute veterinaryAttribute = VeterinaryAttribute.from(bundle.getBundle(KEY_VETERINARY_ATTRIBUTE)); + VolumeSortAccountingRealization volumeSortAccountingRealization = + VolumeSortAccountingRealization.from(bundle.getBundle(KEY_VOLUME_SORT_ACCOUNTING_REALIZATION)); + Position.Builder builder = Position.Builder.copyFrom(new Position( uuid, productUuid, @@ -212,6 +218,7 @@ public static Position from(@Nullable Bundle bundle) { builder.setIsMarkSkipped(isMarkSkipped); builder.setSaleBanTime(saleBanTime); builder.setVeterinaryAttribute(veterinaryAttribute); + builder.setVolumeSortAccountingRealization(volumeSortAccountingRealization); return builder.build(); } @@ -300,6 +307,13 @@ public static Bundle toBundle(@Nullable Position position) { bundle.putSerializable(KEY_IS_MARK_SKIPPED, position.getIsMarkSkipped()); bundle.putBundle(KEY_SALE_BAN_TIME, position.getSaleBanTime() != null ? position.getSaleBanTime().toBundle() : null); bundle.putBundle(KEY_VETERINARY_ATTRIBUTE, position.getVeterinaryAttribute() != null ? position.getVeterinaryAttribute().toBundle() : null); + + final VolumeSortAccountingRealization volumeSortAccountingRealization = position.getVolumeSortAccountingRealization(); + bundle.putBundle( + KEY_VOLUME_SORT_ACCOUNTING_REALIZATION, + volumeSortAccountingRealization != null ? volumeSortAccountingRealization.toBundle() : null + ); + return bundle; } diff --git a/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt b/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt index 768c429d7..47de8799a 100644 --- a/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt +++ b/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt @@ -202,4 +202,14 @@ object FiscalTags { * Структурный тег 1260, который содержит информацию о рецепте */ const val VETERINARY_ATTRIBUTE = 1260 + + /** + * дополнительный реквизит предмета расчета + */ + const val ADDITIONAL_REQUISITE_OF_SUBJECT_OF_CALCULATION = 1191 + + /** + * выбытие по ОСУ + */ + const val VOLUME_SORT_ACCOUNTING_REALIZATION = ADDITIONAL_REQUISITE_OF_SUBJECT_OF_CALCULATION } diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 58db8b6c2..350d27ee9 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -33,6 +33,7 @@ import ru.evotor.framework.receipt.position.PartialRealization; import ru.evotor.framework.receipt.position.PreferentialMedicine; import ru.evotor.framework.receipt.position.SettlementMethod; +import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization; /** * Позиция чека. @@ -41,7 +42,7 @@ public class Position implements Parcelable { /** * Текущая версия объекта Position */ - private static final int VERSION = 15; + private static final int VERSION = 16; /** * Магическое число для идентификации использования версионирования объекта. */ @@ -237,6 +238,18 @@ public class Position implements Parcelable { @Nullable private TimeRange saleBanTime; + /** + * Выбытие по объемно-сортовому учету(ОСУ) 1191 + *

+ * Доступно только для следующих типов товара: + * - молочная продукция {@link ProductType#DAIRY_MARKED} + * - вода {@link ProductType#WATER_MARKED} + *

+ */ + @FiscalRequisite(tag = FiscalTags.VOLUME_SORT_ACCOUNTING_REALIZATION) + @Nullable + private VolumeSortAccountingRealization volumeSortAccountingRealization; + public Position( String uuid, @Nullable String productUuid, @@ -311,6 +324,7 @@ public Position(Position position) { this.isMarkSkipped = position.isMarkSkipped; this.saleBanTime = position.saleBanTime; this.veterinaryAttribute = position.veterinaryAttribute; + this.volumeSortAccountingRealization = position.getVolumeSortAccountingRealization(); } /** @@ -639,6 +653,15 @@ public MarksCheckingInfo getMarksCheckingInfo() { return marksCheckingInfo; } + /** + * @return Выбытие по объемно-сортовому учету(ОСУ) 1191 + */ + @FiscalRequisite(tag = FiscalTags.VOLUME_SORT_ACCOUNTING_REALIZATION) + @Nullable + public VolumeSortAccountingRealization getVolumeSortAccountingRealization() { + return volumeSortAccountingRealization; + } + @Override public boolean equals(Object o) { return equals(o, false); @@ -712,6 +735,8 @@ private boolean equals(Object o, boolean exceptQuantity) { return false; if (!Objects.equals(veterinaryAttribute, position.veterinaryAttribute)) return false; + if (!Objects.equals(volumeSortAccountingRealization, position.volumeSortAccountingRealization)) + return false; return Objects.equals(subPositions, position.subPositions); } @@ -748,6 +773,7 @@ public int hashCode() { result = 31 * result + (isMarkSkipped != null ? isMarkSkipped.hashCode() : 0); result = 31 * result + (saleBanTime != null ? saleBanTime.hashCode() : 0); result = 31 * result + (veterinaryAttribute != null ? veterinaryAttribute.hashCode() : 0); + result = 31 * result + (volumeSortAccountingRealization != null ? volumeSortAccountingRealization.hashCode() : 0); return result; } @@ -784,6 +810,7 @@ public String toString() { ", isAgeLimited=" + isAgeLimited + ", isMarkSkipped=" + isMarkSkipped + ", veterinaryAttribute=" + veterinaryAttribute + + ", volumeSortAccountingRealization=" + volumeSortAccountingRealization + '}'; } @@ -877,6 +904,8 @@ private void writeAdditionalFields(Parcel dest, int flags) { dest.writeSerializable(this.isMarkSkipped); dest.writeBundle(this.saleBanTime != null ? this.saleBanTime.toBundle() : null); dest.writeBundle(this.veterinaryAttribute != null ? this.veterinaryAttribute.toBundle() : null); + // Volume Sort Accounting Realization + dest.writeBundle(this.volumeSortAccountingRealization != null ? this.volumeSortAccountingRealization.toBundle() : null); } protected Position(Parcel in) { @@ -986,6 +1015,9 @@ private void readAdditionalFields(Parcel in, String measureName, int measurePrec if (version >= 15) { readVeterinaryAttribute(in); } + if (version >= 16) { + readVolumeSortAccountingRealization(in); + } if (isVersionGreaterThanCurrent) { in.setDataPosition(startDataPosition + dataSize); } @@ -1040,6 +1072,12 @@ private void readMarksCheckingInfo(Parcel in) { this.marksCheckingInfo = MarksCheckingInfo.Companion.from(in.readBundle(MarksCheckingInfo.class.getClassLoader())); } + private void readVolumeSortAccountingRealization(Parcel in) { + this.volumeSortAccountingRealization = VolumeSortAccountingRealization.Companion.from( + in.readBundle(VolumeSortAccountingRealization.class.getClassLoader()) + ); + } + public static final Creator CREATOR = new Creator() { @Override public Position createFromParcel(Parcel source) { @@ -1755,6 +1793,17 @@ private void setAlcoParams( position.tareVolume = tareVolume; } + public Builder toVolumeSortAccountingRealization( + @NonNull BigDecimal volumeSortQuantity, + @NonNull String gtin + ) { + position.volumeSortAccountingRealization = new VolumeSortAccountingRealization( + gtin, + volumeSortQuantity + ); + return this; + } + private void setShoesParams(Mark mark) { position.mark = mark; } @@ -1969,6 +2018,22 @@ public Builder setSaleBanTime(@Nullable TimeRange saleBanTime) { return this; } + /** + * Реализация по ОСУ для позиции доступна только если тип товара является одним из: + *

+ * вода {@link ProductType#WATER_MARKED} + * молочная продукция {@link ProductType#DAIRY_MARKED} + * не может использоваться совместно с setPartialRealization + * + * @param volumeSortAccountingRealization реализация по ОСУ + */ + public Builder setVolumeSortAccountingRealization( + @Nullable VolumeSortAccountingRealization volumeSortAccountingRealization + ) { + position.volumeSortAccountingRealization = volumeSortAccountingRealization; + return this; + } + public Position build() { return new Position(position); } diff --git a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt index 056d664be..a7fcaef07 100644 --- a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt @@ -44,6 +44,8 @@ object PositionTable { const val COLUMN_VETERINARY_DOCUMENT_NUMBER = "VETERINARY_DOCUMENT_NUMBER" const val COLUMN_VETERINARY_DOCUMENT_DATE = "VETERINARY_DOCUMENT_DATE" const val COLUMN_VETERINARY_DOCUMENT_TYPE = "VETERINARY_DOCUMENT_TYPE" + const val COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY = "VOLUME_SORT_ACCOUNTING_QUANTITY" + const val COLUMN_VOLUME_SORT_ACCOUNTING_GTIN = "VOLUME_SORT_ACCOUNTING_GTIN" object ExtraKeyJSONKeys { const val KEY_IDENTITY = "identity" diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 835742c37..8965ea7c5 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -32,6 +32,7 @@ import ru.evotor.framework.receipt.position.mapper.PositionPartialRealizationMap import ru.evotor.framework.receipt.position.mapper.PreferentialMedicineMapper import ru.evotor.framework.receipt.position.mapper.SettlementMethodMapper import ru.evotor.framework.receipt.position.mapper.VeterinaryAttributeMapper +import ru.evotor.framework.receipt.position.mapper.VolumeSortAccountingRealizationMapper import ru.evotor.framework.receipt.provider.FiscalReceiptContract import java.math.BigDecimal import java.util.Date @@ -475,6 +476,7 @@ object ReceiptApi { .setIsMarkSkipped(isMarkSkipped) .setIsAgeLimited(isAgeLimited) .setVeterinaryAttribute(veterinaryAttribute) + .setVolumeSortAccountingRealization(VolumeSortAccountingRealizationMapper.fromCursor(cursor)) return builder.build() } diff --git a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt new file mode 100644 index 000000000..e1f883ad3 --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt @@ -0,0 +1,38 @@ +package ru.evotor.framework.receipt.position + +import android.os.Bundle +import ru.evotor.IBundlable +import ru.evotor.framework.optBigDecimal +import java.math.BigDecimal + + +data class VolumeSortAccountingRealization ( + /** + * Идентификатор продукта GTIN + */ + val gtin: String, + /** + * Количество товара по ОСУ + */ + val volumeSortQuantity: BigDecimal +) : IBundlable { + + override fun toBundle() = Bundle().apply { + putString(KEY_VOLUME_SORT_QUANTITY, volumeSortQuantity.toPlainString()) + putString(KEY_GTIN, gtin) + } + + companion object { + + private const val KEY_VOLUME_SORT_QUANTITY = "VolumeSortQuantity" + private const val KEY_GTIN = "GTIN" + + @JvmStatic + fun from(bundle: Bundle?): VolumeSortAccountingRealization? = bundle?.let { + val volumeSortQuantity = it.optBigDecimal(KEY_VOLUME_SORT_QUANTITY) ?: return null + val gtin = it.getString(KEY_GTIN) ?: return null + + VolumeSortAccountingRealization(volumeSortQuantity = volumeSortQuantity, gtin = gtin) + } + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt new file mode 100644 index 000000000..21f09ca0b --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt @@ -0,0 +1,21 @@ +package ru.evotor.framework.receipt.position.mapper + +import android.database.Cursor +import ru.evotor.framework.optQuantity +import ru.evotor.framework.optString +import ru.evotor.framework.receipt.PositionTable +import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization + +internal object VolumeSortAccountingRealizationMapper { + + internal fun fromCursor(cursor: Cursor): VolumeSortAccountingRealization? { + val volumeSortQuantity = cursor.optQuantity(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY) + ?: return null + val gtin = cursor.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_GTIN) + ?: return null + return VolumeSortAccountingRealization( + volumeSortQuantity = volumeSortQuantity, + gtin = gtin + ) + } +} \ No newline at end of file From ad0ea686b73d1297f1a7722c5d07813f3a96e7d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Tue, 27 May 2025 16:44:39 +0700 Subject: [PATCH 02/56] STDEV-22047 --- .../action/datamapper/PositionMapper.java | 15 +-- .../ru/evotor/framework/kkt/FiscalTags.kt | 5 - .../ru/evotor/framework/receipt/Position.java | 50 ++++---- .../evotor/framework/receipt/PositionTable.kt | 4 +- .../ru/evotor/framework/receipt/ReceiptApi.kt | 4 +- .../receipt/position/VolumeSortAccounting.kt | 58 +++++++++ .../mapper/VolumeSortAccountingMapper.kt | 117 ++++++++++++++++++ .../VolumeSortAccountingRealizationMapper.kt | 21 ---- 8 files changed, 210 insertions(+), 64 deletions(-) create mode 100644 src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt create mode 100644 src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt delete mode 100644 src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java index 3f7019f4e..2d660ede1 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java @@ -30,6 +30,7 @@ import ru.evotor.framework.receipt.position.PreferentialMedicine; import ru.evotor.framework.receipt.TimeRange; import ru.evotor.framework.receipt.position.SettlementMethod; +import ru.evotor.framework.receipt.position.VolumeSortAccounting; import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization; public final class PositionMapper { @@ -100,7 +101,7 @@ public final class PositionMapper { private static final String KEY_SALE_BAN_TIME = "sale_ban_time"; private static final String KEY_VETERINARY_ATTRIBUTE = "veterinary_attribute"; - private static final String KEY_VOLUME_SORT_ACCOUNTING_REALIZATION = "volumeSortAccountingRealization"; + private static final String KEY_VOLUME_SORT_ACCOUNTING = "volumeSortAccounting"; @Nullable public static Position from(@Nullable Bundle bundle) { @@ -182,8 +183,8 @@ public static Position from(@Nullable Bundle bundle) { ); VeterinaryAttribute veterinaryAttribute = VeterinaryAttribute.from(bundle.getBundle(KEY_VETERINARY_ATTRIBUTE)); - VolumeSortAccountingRealization volumeSortAccountingRealization = - VolumeSortAccountingRealization.from(bundle.getBundle(KEY_VOLUME_SORT_ACCOUNTING_REALIZATION)); + VolumeSortAccounting volumeSortAccounting = + VolumeSortAccounting.fromBundle(bundle.getBundle(KEY_VOLUME_SORT_ACCOUNTING)); Position.Builder builder = Position.Builder.copyFrom(new Position( uuid, @@ -218,7 +219,7 @@ public static Position from(@Nullable Bundle bundle) { builder.setIsMarkSkipped(isMarkSkipped); builder.setSaleBanTime(saleBanTime); builder.setVeterinaryAttribute(veterinaryAttribute); - builder.setVolumeSortAccountingRealization(volumeSortAccountingRealization); + builder.setVolumeSortAccounting(volumeSortAccounting); return builder.build(); } @@ -308,10 +309,10 @@ public static Bundle toBundle(@Nullable Position position) { bundle.putBundle(KEY_SALE_BAN_TIME, position.getSaleBanTime() != null ? position.getSaleBanTime().toBundle() : null); bundle.putBundle(KEY_VETERINARY_ATTRIBUTE, position.getVeterinaryAttribute() != null ? position.getVeterinaryAttribute().toBundle() : null); - final VolumeSortAccountingRealization volumeSortAccountingRealization = position.getVolumeSortAccountingRealization(); + final VolumeSortAccounting volumeSortAccounting = position.getVolumeSortAccounting(); bundle.putBundle( - KEY_VOLUME_SORT_ACCOUNTING_REALIZATION, - volumeSortAccountingRealization != null ? volumeSortAccountingRealization.toBundle() : null + KEY_VOLUME_SORT_ACCOUNTING, + volumeSortAccounting != null ? volumeSortAccounting.toBundle() : null ); return bundle; diff --git a/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt b/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt index 47de8799a..dfb20597d 100644 --- a/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt +++ b/src/main/java/ru/evotor/framework/kkt/FiscalTags.kt @@ -207,9 +207,4 @@ object FiscalTags { * дополнительный реквизит предмета расчета */ const val ADDITIONAL_REQUISITE_OF_SUBJECT_OF_CALCULATION = 1191 - - /** - * выбытие по ОСУ - */ - const val VOLUME_SORT_ACCOUNTING_REALIZATION = ADDITIONAL_REQUISITE_OF_SUBJECT_OF_CALCULATION } diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 350d27ee9..e99fd9ca6 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -33,6 +33,7 @@ import ru.evotor.framework.receipt.position.PartialRealization; import ru.evotor.framework.receipt.position.PreferentialMedicine; import ru.evotor.framework.receipt.position.SettlementMethod; +import ru.evotor.framework.receipt.position.VolumeSortAccounting; import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization; /** @@ -246,9 +247,9 @@ public class Position implements Parcelable { * - вода {@link ProductType#WATER_MARKED} *

*/ - @FiscalRequisite(tag = FiscalTags.VOLUME_SORT_ACCOUNTING_REALIZATION) + @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_OF_SUBJECT_OF_CALCULATION) @Nullable - private VolumeSortAccountingRealization volumeSortAccountingRealization; + private VolumeSortAccounting volumeSortAccounting; public Position( String uuid, @@ -324,7 +325,7 @@ public Position(Position position) { this.isMarkSkipped = position.isMarkSkipped; this.saleBanTime = position.saleBanTime; this.veterinaryAttribute = position.veterinaryAttribute; - this.volumeSortAccountingRealization = position.getVolumeSortAccountingRealization(); + this.volumeSortAccounting = position.getVolumeSortAccounting(); } /** @@ -656,10 +657,10 @@ public MarksCheckingInfo getMarksCheckingInfo() { /** * @return Выбытие по объемно-сортовому учету(ОСУ) 1191 */ - @FiscalRequisite(tag = FiscalTags.VOLUME_SORT_ACCOUNTING_REALIZATION) + @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_OF_SUBJECT_OF_CALCULATION) @Nullable - public VolumeSortAccountingRealization getVolumeSortAccountingRealization() { - return volumeSortAccountingRealization; + public VolumeSortAccounting getVolumeSortAccounting() { + return volumeSortAccounting; } @Override @@ -735,7 +736,7 @@ private boolean equals(Object o, boolean exceptQuantity) { return false; if (!Objects.equals(veterinaryAttribute, position.veterinaryAttribute)) return false; - if (!Objects.equals(volumeSortAccountingRealization, position.volumeSortAccountingRealization)) + if (!Objects.equals(volumeSortAccounting, position.volumeSortAccounting)) return false; return Objects.equals(subPositions, position.subPositions); } @@ -773,7 +774,7 @@ public int hashCode() { result = 31 * result + (isMarkSkipped != null ? isMarkSkipped.hashCode() : 0); result = 31 * result + (saleBanTime != null ? saleBanTime.hashCode() : 0); result = 31 * result + (veterinaryAttribute != null ? veterinaryAttribute.hashCode() : 0); - result = 31 * result + (volumeSortAccountingRealization != null ? volumeSortAccountingRealization.hashCode() : 0); + result = 31 * result + (volumeSortAccounting != null ? volumeSortAccounting.hashCode() : 0); return result; } @@ -810,7 +811,7 @@ public String toString() { ", isAgeLimited=" + isAgeLimited + ", isMarkSkipped=" + isMarkSkipped + ", veterinaryAttribute=" + veterinaryAttribute + - ", volumeSortAccountingRealization=" + volumeSortAccountingRealization + + ", volumeSortAccounting=" + volumeSortAccounting + '}'; } @@ -905,7 +906,7 @@ private void writeAdditionalFields(Parcel dest, int flags) { dest.writeBundle(this.saleBanTime != null ? this.saleBanTime.toBundle() : null); dest.writeBundle(this.veterinaryAttribute != null ? this.veterinaryAttribute.toBundle() : null); // Volume Sort Accounting Realization - dest.writeBundle(this.volumeSortAccountingRealization != null ? this.volumeSortAccountingRealization.toBundle() : null); + dest.writeBundle(this.volumeSortAccounting != null ? this.volumeSortAccounting.toBundle() : null); } protected Position(Parcel in) { @@ -1016,7 +1017,7 @@ private void readAdditionalFields(Parcel in, String measureName, int measurePrec readVeterinaryAttribute(in); } if (version >= 16) { - readVolumeSortAccountingRealization(in); + readVolumeSortAccounting(in); } if (isVersionGreaterThanCurrent) { in.setDataPosition(startDataPosition + dataSize); @@ -1072,8 +1073,8 @@ private void readMarksCheckingInfo(Parcel in) { this.marksCheckingInfo = MarksCheckingInfo.Companion.from(in.readBundle(MarksCheckingInfo.class.getClassLoader())); } - private void readVolumeSortAccountingRealization(Parcel in) { - this.volumeSortAccountingRealization = VolumeSortAccountingRealization.Companion.from( + private void readVolumeSortAccounting(Parcel in) { + this.volumeSortAccounting = VolumeSortAccounting.fromBundle( in.readBundle(VolumeSortAccountingRealization.class.getClassLoader()) ); } @@ -1793,17 +1794,6 @@ private void setAlcoParams( position.tareVolume = tareVolume; } - public Builder toVolumeSortAccountingRealization( - @NonNull BigDecimal volumeSortQuantity, - @NonNull String gtin - ) { - position.volumeSortAccountingRealization = new VolumeSortAccountingRealization( - gtin, - volumeSortQuantity - ); - return this; - } - private void setShoesParams(Mark mark) { position.mark = mark; } @@ -2023,14 +2013,18 @@ public Builder setSaleBanTime(@Nullable TimeRange saleBanTime) { *

* вода {@link ProductType#WATER_MARKED} * молочная продукция {@link ProductType#DAIRY_MARKED} + * маркированное безалкогольное пиво {@link ProductType#NOT_ALCOHOL_BEER_MARKED} + * маркированное пиво в бутылках {@link ProductType#BEER_MARKED} + * маркированная соковая продукция и безалкогольные напитки {@link ProductType#JUICE_MARKED} + * морепродукты (икра осетровых и лососевых) {@link ProductType#CAVIAR_MARKED} * не может использоваться совместно с setPartialRealization * - * @param volumeSortAccountingRealization реализация по ОСУ + * @param volumeSortAccounting реализация по ОСУ */ - public Builder setVolumeSortAccountingRealization( - @Nullable VolumeSortAccountingRealization volumeSortAccountingRealization + public Builder setVolumeSortAccounting( + @Nullable VolumeSortAccounting volumeSortAccounting ) { - position.volumeSortAccountingRealization = volumeSortAccountingRealization; + position.volumeSortAccounting = volumeSortAccounting; return this; } diff --git a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt index a7fcaef07..1ac8cb576 100644 --- a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt @@ -44,8 +44,10 @@ object PositionTable { const val COLUMN_VETERINARY_DOCUMENT_NUMBER = "VETERINARY_DOCUMENT_NUMBER" const val COLUMN_VETERINARY_DOCUMENT_DATE = "VETERINARY_DOCUMENT_DATE" const val COLUMN_VETERINARY_DOCUMENT_TYPE = "VETERINARY_DOCUMENT_TYPE" - const val COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY = "VOLUME_SORT_ACCOUNTING_QUANTITY" + const val COLUMN_VOLUME_SORT_ACCOUNTING_CLASS = "VOLUME_SORT_ACCOUNTING_QUANTITY_CLASS" const val COLUMN_VOLUME_SORT_ACCOUNTING_GTIN = "VOLUME_SORT_ACCOUNTING_GTIN" + const val COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY = "VOLUME_SORT_ACCOUNTING_QUANTITY" + const val COLUMN_VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE = "VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE" object ExtraKeyJSONKeys { const val KEY_IDENTITY = "identity" diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 8965ea7c5..21dc7dd90 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -32,7 +32,7 @@ import ru.evotor.framework.receipt.position.mapper.PositionPartialRealizationMap import ru.evotor.framework.receipt.position.mapper.PreferentialMedicineMapper import ru.evotor.framework.receipt.position.mapper.SettlementMethodMapper import ru.evotor.framework.receipt.position.mapper.VeterinaryAttributeMapper -import ru.evotor.framework.receipt.position.mapper.VolumeSortAccountingRealizationMapper +import ru.evotor.framework.receipt.position.mapper.VolumeSortAccountingMapper import ru.evotor.framework.receipt.provider.FiscalReceiptContract import java.math.BigDecimal import java.util.Date @@ -476,7 +476,7 @@ object ReceiptApi { .setIsMarkSkipped(isMarkSkipped) .setIsAgeLimited(isAgeLimited) .setVeterinaryAttribute(veterinaryAttribute) - .setVolumeSortAccountingRealization(VolumeSortAccountingRealizationMapper.fromCursor(cursor)) + .setVolumeSortAccounting(VolumeSortAccountingMapper.fromCursor(cursor)) return builder.build() } diff --git a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt new file mode 100644 index 000000000..094e47176 --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt @@ -0,0 +1,58 @@ +package ru.evotor.framework.receipt.position + +import android.os.Bundle +import ru.evotor.IBundlable +import ru.evotor.framework.receipt.position.mapper.VolumeSortAccountingMapper +import java.math.BigDecimal + +sealed class VolumeSortAccounting : IBundlable { + + override fun toBundle(): Bundle { + return VolumeSortAccountingMapper.toBundle(this) + } + + data class Piece( + /** + * Идентификатор продукта GTIN + */ + val gtin: String, + /** + * Тип выбытия по ОСУ + */ + val type: RealizationType = RealizationType.HORECA + ) : VolumeSortAccounting() + + data class Measured( + /** + * Идентификатор продукта GTIN + */ + val gtin: String, + /** + * Количество товара по ОСУ + */ + val quantity: BigDecimal, + /** + * Тип выбытия по ОСУ + */ + val type: RealizationType = RealizationType.HORECA + ) : VolumeSortAccounting() + + enum class RealizationType { + /** + * Общепит + */ + HORECA, + + /** + * Оптовая торговля с организацией или ИП + */ + WHOLESALE + } + + companion object { + @JvmStatic + fun fromBundle(bundle: Bundle?): VolumeSortAccounting? { + return VolumeSortAccountingMapper.fromBundle(bundle) + } + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt new file mode 100644 index 000000000..1d2c73999 --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt @@ -0,0 +1,117 @@ +package ru.evotor.framework.receipt.position.mapper + +import android.database.Cursor +import android.os.Bundle +import ru.evotor.framework.Utils +import ru.evotor.framework.optBigDecimal +import ru.evotor.framework.optQuantity +import ru.evotor.framework.optString +import ru.evotor.framework.receipt.PositionTable +import ru.evotor.framework.receipt.position.VolumeSortAccounting +import ru.evotor.framework.receipt.position.VolumeSortAccounting.Measured +import ru.evotor.framework.receipt.position.VolumeSortAccounting.Piece + +internal object VolumeSortAccountingMapper { + + fun toBundle(volumeSortAccounting: VolumeSortAccounting): Bundle { + val result = Bundle() + result.putString(CLASS_TYPE_KEY, this::class.java.name) + when (volumeSortAccounting) { + is Piece -> { + volumeSortAccounting.writeToBundle(result) + } + + is Measured -> { + volumeSortAccounting.writeToBundle(result) + } + } + return result + } + + private fun Piece.writeToBundle(bundle: Bundle) { + bundle.putString(this.gtin, GTIN_KEY) + bundle.putString(this.type.name, REALIZATION_TYPE_KEY) + } + + private fun Measured.writeToBundle(bundle: Bundle) { + bundle.putString(this.gtin, GTIN_KEY) + bundle.putString(this.quantity.toPlainString(), QUANTITY_KEY) + bundle.putString(this.type.name, REALIZATION_TYPE_KEY) + } + + fun fromBundle(bundle: Bundle?): VolumeSortAccounting? { + return when (bundle?.getString(CLASS_TYPE_KEY)) { + Piece::class.java.name -> { + bundle.readVolumeSortAccountingPiece() + } + + Measured::class.java.name -> { + bundle.readVolumeSortAccountingMeasured() + } + + else -> { + null + } + } + } + + private fun Bundle.readVolumeSortAccountingPiece(): Piece? { + return Piece( + gtin = this.getString(GTIN_KEY, null) ?: return null, + type = Utils.safeValueOf(VolumeSortAccounting.RealizationType::class.java, this.getString(REALIZATION_TYPE_KEY), VolumeSortAccounting.RealizationType.HORECA) + ) + } + + private fun Bundle.readVolumeSortAccountingMeasured(): Measured? { + return Measured( + gtin = this.getString(GTIN_KEY, null) ?: return null, + quantity = this.optBigDecimal(QUANTITY_KEY) ?: return null, + type = Utils.safeValueOf(VolumeSortAccounting.RealizationType::class.java, this.getString(REALIZATION_TYPE_KEY), VolumeSortAccounting.RealizationType.HORECA) + ) + } + + internal fun fromCursor(cursor: Cursor): VolumeSortAccounting? { + return when(cursor.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_CLASS)) { + Piece::class.java.name -> { + cursor.readVolumeSortAccountingPiece() + } + + Measured::class.java.name -> { + cursor.readVolumeSortAccountingMeasured() + } + + else -> { + null + } + } + } + + private fun Cursor.readVolumeSortAccountingPiece(): Piece? { + return Piece( + gtin = this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_GTIN) ?: return null, + type = Utils.safeValueOf( + VolumeSortAccounting.RealizationType::class.java, + this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE), + VolumeSortAccounting.RealizationType.HORECA + ) + ) + } + + private fun Cursor.readVolumeSortAccountingMeasured(): Measured? { + return Measured( + gtin = this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_GTIN) ?: return null, + quantity = this.optQuantity(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY) ?: return null, + type = Utils.safeValueOf( + VolumeSortAccounting.RealizationType::class.java, + this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE), + VolumeSortAccounting.RealizationType.HORECA + ) + ) + } + + private const val CLASS_TYPE_KEY = "CLASS_TYPE_KEY" + + private const val REALIZATION_TYPE_KEY = "REALIZATION_TYPE_KEY" + private const val GTIN_KEY = "GTIN_KEY" + private const val QUANTITY_KEY = "QUANTITY_KEY" +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt deleted file mode 100644 index 21f09ca0b..000000000 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingRealizationMapper.kt +++ /dev/null @@ -1,21 +0,0 @@ -package ru.evotor.framework.receipt.position.mapper - -import android.database.Cursor -import ru.evotor.framework.optQuantity -import ru.evotor.framework.optString -import ru.evotor.framework.receipt.PositionTable -import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization - -internal object VolumeSortAccountingRealizationMapper { - - internal fun fromCursor(cursor: Cursor): VolumeSortAccountingRealization? { - val volumeSortQuantity = cursor.optQuantity(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY) - ?: return null - val gtin = cursor.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_GTIN) - ?: return null - return VolumeSortAccountingRealization( - volumeSortQuantity = volumeSortQuantity, - gtin = gtin - ) - } -} \ No newline at end of file From 81eaca7a1f139832ef92e9f710d7e7596e41b63e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Tue, 27 May 2025 17:01:05 +0700 Subject: [PATCH 03/56] STDEV-13280 --- src/main/java/ru/evotor/framework/receipt/Position.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index e99fd9ca6..b67892541 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -2015,6 +2015,7 @@ public Builder setSaleBanTime(@Nullable TimeRange saleBanTime) { * молочная продукция {@link ProductType#DAIRY_MARKED} * маркированное безалкогольное пиво {@link ProductType#NOT_ALCOHOL_BEER_MARKED} * маркированное пиво в бутылках {@link ProductType#BEER_MARKED} + * маркированное пиво (Кеги) {@link ProductType#BEER_MARKED_KEG} * маркированная соковая продукция и безалкогольные напитки {@link ProductType#JUICE_MARKED} * морепродукты (икра осетровых и лососевых) {@link ProductType#CAVIAR_MARKED} * не может использоваться совместно с setPartialRealization From 1f96013d98bd5383995e456e8092c0eeff30dfcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Tue, 27 May 2025 17:13:35 +0700 Subject: [PATCH 04/56] STDEV-13280 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 69488da43..16b8b1b91 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ apply plugin: 'maven-publish' apply plugin: 'org.jetbrains.dokka' android { - def version = 35 + def version = 36 compileSdk 29 From ae9f9c10f7d1af409cfc8e78e36edb50628ad501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Wed, 28 May 2025 13:42:29 +0700 Subject: [PATCH 05/56] STDEV-13280 --- .../action/datamapper/PositionMapper.java | 3 +- .../ru/evotor/framework/receipt/Position.java | 5 +- .../evotor/framework/receipt/PositionTable.kt | 1 - .../ru/evotor/framework/receipt/ReceiptApi.kt | 4 +- .../receipt/position/VolumeSortAccounting.kt | 87 ++++++++----- .../VolumeSortAccountingRealization.kt | 38 ------ .../mapper/VolumeSortAccountingMapper.kt | 117 ------------------ 7 files changed, 59 insertions(+), 196 deletions(-) delete mode 100644 src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt delete mode 100644 src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java index 2d660ede1..c05fa315e 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java @@ -31,7 +31,6 @@ import ru.evotor.framework.receipt.TimeRange; import ru.evotor.framework.receipt.position.SettlementMethod; import ru.evotor.framework.receipt.position.VolumeSortAccounting; -import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization; public final class PositionMapper { @@ -184,7 +183,7 @@ public static Position from(@Nullable Bundle bundle) { VeterinaryAttribute veterinaryAttribute = VeterinaryAttribute.from(bundle.getBundle(KEY_VETERINARY_ATTRIBUTE)); VolumeSortAccounting volumeSortAccounting = - VolumeSortAccounting.fromBundle(bundle.getBundle(KEY_VOLUME_SORT_ACCOUNTING)); + VolumeSortAccounting.from(bundle.getBundle(KEY_VOLUME_SORT_ACCOUNTING)); Position.Builder builder = Position.Builder.copyFrom(new Position( uuid, diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index b67892541..ea02159a4 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -34,7 +34,6 @@ import ru.evotor.framework.receipt.position.PreferentialMedicine; import ru.evotor.framework.receipt.position.SettlementMethod; import ru.evotor.framework.receipt.position.VolumeSortAccounting; -import ru.evotor.framework.receipt.position.VolumeSortAccountingRealization; /** * Позиция чека. @@ -1074,8 +1073,8 @@ private void readMarksCheckingInfo(Parcel in) { } private void readVolumeSortAccounting(Parcel in) { - this.volumeSortAccounting = VolumeSortAccounting.fromBundle( - in.readBundle(VolumeSortAccountingRealization.class.getClassLoader()) + this.volumeSortAccounting = VolumeSortAccounting.from( + in.readBundle(VolumeSortAccounting.class.getClassLoader()) ); } diff --git a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt index 1ac8cb576..90e97c3cf 100644 --- a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt @@ -44,7 +44,6 @@ object PositionTable { const val COLUMN_VETERINARY_DOCUMENT_NUMBER = "VETERINARY_DOCUMENT_NUMBER" const val COLUMN_VETERINARY_DOCUMENT_DATE = "VETERINARY_DOCUMENT_DATE" const val COLUMN_VETERINARY_DOCUMENT_TYPE = "VETERINARY_DOCUMENT_TYPE" - const val COLUMN_VOLUME_SORT_ACCOUNTING_CLASS = "VOLUME_SORT_ACCOUNTING_QUANTITY_CLASS" const val COLUMN_VOLUME_SORT_ACCOUNTING_GTIN = "VOLUME_SORT_ACCOUNTING_GTIN" const val COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY = "VOLUME_SORT_ACCOUNTING_QUANTITY" const val COLUMN_VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE = "VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE" diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 21dc7dd90..a8d2b453a 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -26,13 +26,13 @@ import ru.evotor.framework.receipt.mapper.FiscalReceiptMapper import ru.evotor.framework.receipt.position.ImportationData import ru.evotor.framework.receipt.position.Mark import ru.evotor.framework.receipt.position.PreferentialMedicine +import ru.evotor.framework.receipt.position.VolumeSortAccounting import ru.evotor.framework.receipt.position.mapper.AgentRequisitesMapper import ru.evotor.framework.receipt.position.mapper.MarksCheckingInfoMapper import ru.evotor.framework.receipt.position.mapper.PositionPartialRealizationMapper import ru.evotor.framework.receipt.position.mapper.PreferentialMedicineMapper import ru.evotor.framework.receipt.position.mapper.SettlementMethodMapper import ru.evotor.framework.receipt.position.mapper.VeterinaryAttributeMapper -import ru.evotor.framework.receipt.position.mapper.VolumeSortAccountingMapper import ru.evotor.framework.receipt.provider.FiscalReceiptContract import java.math.BigDecimal import java.util.Date @@ -476,7 +476,7 @@ object ReceiptApi { .setIsMarkSkipped(isMarkSkipped) .setIsAgeLimited(isAgeLimited) .setVeterinaryAttribute(veterinaryAttribute) - .setVolumeSortAccounting(VolumeSortAccountingMapper.fromCursor(cursor)) + .setVolumeSortAccounting(VolumeSortAccounting.from(cursor)) return builder.build() } diff --git a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt index 094e47176..0b4f12e8e 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt @@ -1,41 +1,30 @@ package ru.evotor.framework.receipt.position +import android.database.Cursor import android.os.Bundle import ru.evotor.IBundlable -import ru.evotor.framework.receipt.position.mapper.VolumeSortAccountingMapper +import ru.evotor.framework.Utils +import ru.evotor.framework.optBigDecimal +import ru.evotor.framework.optQuantity +import ru.evotor.framework.optString +import ru.evotor.framework.receipt.PositionTable import java.math.BigDecimal -sealed class VolumeSortAccounting : IBundlable { - override fun toBundle(): Bundle { - return VolumeSortAccountingMapper.toBundle(this) - } - - data class Piece( - /** - * Идентификатор продукта GTIN - */ - val gtin: String, - /** - * Тип выбытия по ОСУ - */ - val type: RealizationType = RealizationType.HORECA - ) : VolumeSortAccounting() - - data class Measured( - /** - * Идентификатор продукта GTIN - */ - val gtin: String, - /** - * Количество товара по ОСУ - */ - val quantity: BigDecimal, - /** - * Тип выбытия по ОСУ - */ - val type: RealizationType = RealizationType.HORECA - ) : VolumeSortAccounting() +data class VolumeSortAccounting( + /** + * Идентификатор продукта GTIN + */ + val gtin: String, + /** + * Количество товара по ОСУ + */ + val quantity: BigDecimal? = null, + /** + * Тип выбытия по ОСУ + */ + val type: RealizationType = RealizationType.HORECA +) : IBundlable { enum class RealizationType { /** @@ -49,10 +38,42 @@ sealed class VolumeSortAccounting : IBundlable { WHOLESALE } + override fun toBundle() = Bundle().apply { + putString(KEY_VOLUME_SORT_QUANTITY, quantity?.toPlainString()) + putString(KEY_GTIN, gtin) + putString(REALIZATION_TYPE, type.name) + } + companion object { + + private const val KEY_VOLUME_SORT_QUANTITY = "VolumeSortQuantity" + private const val KEY_GTIN = "GTIN" + private const val REALIZATION_TYPE = "REALIZATION_TYPE_KEY" + + @JvmStatic + fun from(bundle: Bundle?): VolumeSortAccounting? = bundle?.let { + val quantity = it.optBigDecimal(KEY_VOLUME_SORT_QUANTITY) + val gtin = it.getString(KEY_GTIN) ?: return null + val type = Utils.safeValueOf( + RealizationType::class.java, + it.getString(REALIZATION_TYPE), + RealizationType.HORECA + ) + + VolumeSortAccounting(quantity = quantity, gtin = gtin, type = type) + } + @JvmStatic - fun fromBundle(bundle: Bundle?): VolumeSortAccounting? { - return VolumeSortAccountingMapper.fromBundle(bundle) + fun from(cursor: Cursor?): VolumeSortAccounting? { + return VolumeSortAccounting( + gtin = cursor?.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_GTIN) ?: return null, + quantity = cursor.optQuantity(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY), + type = Utils.safeValueOf( + RealizationType::class.java, + cursor.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE), + RealizationType.HORECA + ) + ) } } } diff --git a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt deleted file mode 100644 index e1f883ad3..000000000 --- a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccountingRealization.kt +++ /dev/null @@ -1,38 +0,0 @@ -package ru.evotor.framework.receipt.position - -import android.os.Bundle -import ru.evotor.IBundlable -import ru.evotor.framework.optBigDecimal -import java.math.BigDecimal - - -data class VolumeSortAccountingRealization ( - /** - * Идентификатор продукта GTIN - */ - val gtin: String, - /** - * Количество товара по ОСУ - */ - val volumeSortQuantity: BigDecimal -) : IBundlable { - - override fun toBundle() = Bundle().apply { - putString(KEY_VOLUME_SORT_QUANTITY, volumeSortQuantity.toPlainString()) - putString(KEY_GTIN, gtin) - } - - companion object { - - private const val KEY_VOLUME_SORT_QUANTITY = "VolumeSortQuantity" - private const val KEY_GTIN = "GTIN" - - @JvmStatic - fun from(bundle: Bundle?): VolumeSortAccountingRealization? = bundle?.let { - val volumeSortQuantity = it.optBigDecimal(KEY_VOLUME_SORT_QUANTITY) ?: return null - val gtin = it.getString(KEY_GTIN) ?: return null - - VolumeSortAccountingRealization(volumeSortQuantity = volumeSortQuantity, gtin = gtin) - } - } -} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt deleted file mode 100644 index 1d2c73999..000000000 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/VolumeSortAccountingMapper.kt +++ /dev/null @@ -1,117 +0,0 @@ -package ru.evotor.framework.receipt.position.mapper - -import android.database.Cursor -import android.os.Bundle -import ru.evotor.framework.Utils -import ru.evotor.framework.optBigDecimal -import ru.evotor.framework.optQuantity -import ru.evotor.framework.optString -import ru.evotor.framework.receipt.PositionTable -import ru.evotor.framework.receipt.position.VolumeSortAccounting -import ru.evotor.framework.receipt.position.VolumeSortAccounting.Measured -import ru.evotor.framework.receipt.position.VolumeSortAccounting.Piece - -internal object VolumeSortAccountingMapper { - - fun toBundle(volumeSortAccounting: VolumeSortAccounting): Bundle { - val result = Bundle() - result.putString(CLASS_TYPE_KEY, this::class.java.name) - when (volumeSortAccounting) { - is Piece -> { - volumeSortAccounting.writeToBundle(result) - } - - is Measured -> { - volumeSortAccounting.writeToBundle(result) - } - } - return result - } - - private fun Piece.writeToBundle(bundle: Bundle) { - bundle.putString(this.gtin, GTIN_KEY) - bundle.putString(this.type.name, REALIZATION_TYPE_KEY) - } - - private fun Measured.writeToBundle(bundle: Bundle) { - bundle.putString(this.gtin, GTIN_KEY) - bundle.putString(this.quantity.toPlainString(), QUANTITY_KEY) - bundle.putString(this.type.name, REALIZATION_TYPE_KEY) - } - - fun fromBundle(bundle: Bundle?): VolumeSortAccounting? { - return when (bundle?.getString(CLASS_TYPE_KEY)) { - Piece::class.java.name -> { - bundle.readVolumeSortAccountingPiece() - } - - Measured::class.java.name -> { - bundle.readVolumeSortAccountingMeasured() - } - - else -> { - null - } - } - } - - private fun Bundle.readVolumeSortAccountingPiece(): Piece? { - return Piece( - gtin = this.getString(GTIN_KEY, null) ?: return null, - type = Utils.safeValueOf(VolumeSortAccounting.RealizationType::class.java, this.getString(REALIZATION_TYPE_KEY), VolumeSortAccounting.RealizationType.HORECA) - ) - } - - private fun Bundle.readVolumeSortAccountingMeasured(): Measured? { - return Measured( - gtin = this.getString(GTIN_KEY, null) ?: return null, - quantity = this.optBigDecimal(QUANTITY_KEY) ?: return null, - type = Utils.safeValueOf(VolumeSortAccounting.RealizationType::class.java, this.getString(REALIZATION_TYPE_KEY), VolumeSortAccounting.RealizationType.HORECA) - ) - } - - internal fun fromCursor(cursor: Cursor): VolumeSortAccounting? { - return when(cursor.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_CLASS)) { - Piece::class.java.name -> { - cursor.readVolumeSortAccountingPiece() - } - - Measured::class.java.name -> { - cursor.readVolumeSortAccountingMeasured() - } - - else -> { - null - } - } - } - - private fun Cursor.readVolumeSortAccountingPiece(): Piece? { - return Piece( - gtin = this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_GTIN) ?: return null, - type = Utils.safeValueOf( - VolumeSortAccounting.RealizationType::class.java, - this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE), - VolumeSortAccounting.RealizationType.HORECA - ) - ) - } - - private fun Cursor.readVolumeSortAccountingMeasured(): Measured? { - return Measured( - gtin = this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_GTIN) ?: return null, - quantity = this.optQuantity(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_QUANTITY) ?: return null, - type = Utils.safeValueOf( - VolumeSortAccounting.RealizationType::class.java, - this.optString(PositionTable.COLUMN_VOLUME_SORT_ACCOUNTING_REALIZATION_TYPE), - VolumeSortAccounting.RealizationType.HORECA - ) - ) - } - - private const val CLASS_TYPE_KEY = "CLASS_TYPE_KEY" - - private const val REALIZATION_TYPE_KEY = "REALIZATION_TYPE_KEY" - private const val GTIN_KEY = "GTIN_KEY" - private const val QUANTITY_KEY = "QUANTITY_KEY" -} From e11e84a3bb0565ef4c87fb3fa50229de9bbeb545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D0=B8=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BE=D1=84=D0=B5=D0=B5=D0=B2?= Date: Thu, 29 May 2025 13:10:13 +0300 Subject: [PATCH 06/56] =?UTF-8?q?STDEV-22054=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=A2=D0=93=20PET=5FFOOD=5FMARKED=20=D0=B8=20VEGETABL?= =?UTF-8?q?E=5FOIL=5FMARKED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../evotor/framework/features/FeaturesApi.kt | 14 ++++++++ .../features/provider/FeaturesContract.kt | 2 ++ .../framework/inventory/ProductType.java | 10 ++++++ .../ru/evotor/framework/receipt/Position.java | 32 +++++++++++++++++++ 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 69488da43..16b8b1b91 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ apply plugin: 'maven-publish' apply plugin: 'org.jetbrains.dokka' android { - def version = 35 + def version = 36 compileSdk 29 diff --git a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt index 0493f491a..fdc9add4f 100644 --- a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt +++ b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt @@ -320,4 +320,18 @@ object FeaturesApi { it.moveToFirst() it.getInt(it.getColumnIndex(FeaturesContract.COLUMN_IS_ACTIVE)) == 1 } ?: defaultValue + + /** + * Проверяет, активна ли функция "Маркировка кормов для животных" на данном терминале + * + * @return `true` если функция активна; `false` если функция не активна. + */ + fun isPetFoodMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_PET_FOOD_MARKED) + + /** + * Проверяет, активна ли функция "Маркировка растительных масел]" на данном терминале + * + * @return `true` если функция активна; `false` если функция не активна. + */ + fun isVegetableOilMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_VEGETABLE_OIL_MARKED) } diff --git a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt index bee34aa9d..ac7f1727c 100644 --- a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt +++ b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt @@ -49,6 +49,8 @@ object FeaturesContract { const val PATH_VAT_5_AND_7 = "vat_5_and_7" const val PATH_CAVIAR_MARK = "caviar_mark" const val PATH_VETERINARY_MARK = "veterinary_mark" + const val PATH_PET_FOOD_MARKED = "pet_food_marked" + const val PATH_VEGETABLE_OIL_MARKED = "vegetable_oil_marked" const val COLUMN_IS_ACTIVE = "is_active" } diff --git a/src/main/java/ru/evotor/framework/inventory/ProductType.java b/src/main/java/ru/evotor/framework/inventory/ProductType.java index 3953421c1..7a7dd3141 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductType.java +++ b/src/main/java/ru/evotor/framework/inventory/ProductType.java @@ -150,4 +150,14 @@ public enum ProductType { * Маркированное безалкогольное пиво */ NOT_ALCOHOL_BEER_MARKED, + + /** + * Корма для животных + */ + PET_FOOD_MARKED, + + /** + * Растительные масла + */ + VEGETABLE_OIL_MARKED } diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 58db8b6c2..8a97931a5 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -1682,6 +1682,34 @@ public Builder toCaviarMarked( return this; } + public Builder toPetFoodMarked( + @NonNull Mark mark + ) { + position.productType = ProductType.PET_FOOD_MARKED; + setAlcoParams( + null, + null, + null, + null + ); + setPetFoodParams(mark); + return this; + } + + public Builder toVegetableOilMarked( + @NonNull Mark mark + ) { + position.productType = ProductType.VEGETABLE_OIL_MARKED; + setAlcoParams( + null, + null, + null, + null + ); + setVegetableOilParams(mark); + return this; + } + public Builder toVeterinaryMarked( @NonNull Mark mark ) { @@ -1829,6 +1857,10 @@ private void setMedicalDevicesParams(Mark mark) { public void setCaviarParams(Mark mark) { position.mark = mark; } + public void setPetFoodParams(Mark mark) { position.mark = mark; } + + public void setVegetableOilParams(Mark mark) { position.mark = mark; } + public void setVeterinaryParams(Mark mark) { position.mark = mark; } private void setBeerParams(Mark mark) { From f4bf2f4f103dd5706725e1abd03f5a587cf13bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D0=B8=D0=B9=20=D0=95=D1=80?= =?UTF-8?q?=D0=BE=D1=84=D0=B5=D0=B5=D0=B2?= Date: Thu, 29 May 2025 16:16:21 +0300 Subject: [PATCH 07/56] =?UTF-8?q?STDEV-22054=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=BE=D0=B2=D0=BE?= =?UTF-8?q?=D0=B9=20=D0=A2=D0=93=20PET=5FFOOD=5FMARKED=20=D0=B8=20VEGETABL?= =?UTF-8?q?E=5FOIL=5FMARKED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/evotor/framework/features/FeaturesApi.kt | 4 ++-- .../ru/evotor/framework/features/provider/FeaturesContract.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt index fdc9add4f..6267fbf15 100644 --- a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt +++ b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt @@ -326,12 +326,12 @@ object FeaturesApi { * * @return `true` если функция активна; `false` если функция не активна. */ - fun isPetFoodMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_PET_FOOD_MARKED) + fun isPetFoodMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_PET_FOOD_MARK) /** * Проверяет, активна ли функция "Маркировка растительных масел]" на данном терминале * * @return `true` если функция активна; `false` если функция не активна. */ - fun isVegetableOilMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_VEGETABLE_OIL_MARKED) + fun isVegetableOilMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_VEGETABLE_OIL_MARK) } diff --git a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt index ac7f1727c..2d92bec95 100644 --- a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt +++ b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt @@ -49,8 +49,8 @@ object FeaturesContract { const val PATH_VAT_5_AND_7 = "vat_5_and_7" const val PATH_CAVIAR_MARK = "caviar_mark" const val PATH_VETERINARY_MARK = "veterinary_mark" - const val PATH_PET_FOOD_MARKED = "pet_food_marked" - const val PATH_VEGETABLE_OIL_MARKED = "vegetable_oil_marked" + const val PATH_PET_FOOD_MARK = "pet_food_marked" + const val PATH_VEGETABLE_OIL_MARK = "vegetable_oil_marked" const val COLUMN_IS_ACTIVE = "is_active" } From 8855307d0edede25f43d1c2680b8e81d99c14d63 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Wed, 16 Jul 2025 17:10:11 +0500 Subject: [PATCH 08/56] STDEV-22450 --- .../action/datamapper/PrintGroupMapper.java | 6 ++++- .../evotor/framework/receipt/PrintGroup.java | 27 ++++++++++++++++--- .../framework/receipt/PrintGroupSubTable.kt | 1 + .../ru/evotor/framework/receipt/ReceiptApi.kt | 3 ++- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java index 162391ff3..1746300a8 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java @@ -19,6 +19,7 @@ public final class PrintGroupMapper { private static final String KEY_SHOULD_PRINT_RECEIPT = "shouldPrintReceipt"; private static final String KEY_PURCHASER = "purchaser"; private static final String KEY_MEDICINE_ATTRIBUTE = "medicineAttribute"; + private static final String KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet"; @Nullable public static PrintGroup from(@Nullable Bundle bundle) { @@ -34,6 +35,7 @@ public static PrintGroup from(@Nullable Bundle bundle) { boolean shouldPrintReceipt = bundle.getBoolean(KEY_SHOULD_PRINT_RECEIPT, true); Purchaser purchaser = Purchaser.Companion.fromBundle(bundle.getBundle(KEY_PURCHASER)); MedicineAttribute medicineAttribute = MedicineAttribute.Companion.fromBundle(bundle.getBundle(KEY_MEDICINE_ATTRIBUTE)); + boolean receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, true); return new PrintGroup( identifier, Utils.safeValueOf(PrintGroup.Type.class, type, PrintGroup.Type.CASH_RECEIPT), @@ -43,7 +45,8 @@ public static PrintGroup from(@Nullable Bundle bundle) { Utils.safeValueOf(TaxationSystem.class, taxationSystem, null), shouldPrintReceipt, purchaser, - medicineAttribute + medicineAttribute, + receiptFromInternet ); } @@ -62,6 +65,7 @@ public static Bundle toBundle(@Nullable PrintGroup printGroup) { bundle.putBoolean(KEY_SHOULD_PRINT_RECEIPT, printGroup.isShouldPrintReceipt()); bundle.putBundle(KEY_PURCHASER, printGroup.getPurchaser() == null ? null : printGroup.getPurchaser().toBundle()); bundle.putBundle(KEY_MEDICINE_ATTRIBUTE, printGroup.getMedicineAttribute() == null ? null : printGroup.getMedicineAttribute().toBundle()); + bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, printGroup.isReceiptFromInternet()); return bundle; } diff --git a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java index 87556c116..31da49a37 100644 --- a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java +++ b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java @@ -19,11 +19,11 @@ public class PrintGroup implements Parcelable { /** * Текущая версия объекта PrintGroup. */ - private static final int VERSION = 2; + private static final int VERSION = 3; private static final String DEFAULT_PRINT_GROUP_IDENTIFIER = "46dd89f0-3a54-470a-a166-ad01fa34b86a"; - public static final PrintGroup DEFAULT = new PrintGroup(DEFAULT_PRINT_GROUP_IDENTIFIER, Type.CASH_RECEIPT, null, null, null, null, true, null, null); + public static final PrintGroup DEFAULT = new PrintGroup(DEFAULT_PRINT_GROUP_IDENTIFIER, Type.CASH_RECEIPT, null, null, null, null, true, null, null, false); /** * Идентификатор печатной группы. @@ -68,6 +68,11 @@ public class PrintGroup implements Parcelable { @Nullable private MedicineAttribute medicineAttribute; + /** + * Признак расчета в «Интернет». + */ + private boolean receiptFromInternet; + @Deprecated public PrintGroup( String identifier, @@ -78,7 +83,7 @@ public PrintGroup( TaxationSystem taxationSystem, boolean shouldPrintReceipt ) { - this(identifier, type, orgName, orgInn, orgAddress, taxationSystem, shouldPrintReceipt, null, null); + this(identifier, type, orgName, orgInn, orgAddress, taxationSystem, shouldPrintReceipt, null, null, false); } public PrintGroup( @@ -90,7 +95,8 @@ public PrintGroup( TaxationSystem taxationSystem, boolean shouldPrintReceipt, @Nullable Purchaser purchaser, - @Nullable MedicineAttribute medicineAttribute + @Nullable MedicineAttribute medicineAttribute, + boolean receiptFromInternet ) { this.identifier = identifier; this.type = type; @@ -101,6 +107,7 @@ public PrintGroup( this.shouldPrintReceipt = shouldPrintReceipt; this.purchaser = purchaser; this.medicineAttribute = medicineAttribute; + this.receiptFromInternet = receiptFromInternet; } public String getIdentifier() { @@ -142,6 +149,10 @@ public MedicineAttribute getMedicineAttribute() { return medicineAttribute; } + public boolean isReceiptFromInternet() { + return receiptFromInternet; + } + public enum Type { /** * Кассовый чек, напечатанный средствами ККМ @@ -179,6 +190,8 @@ public Unit invoke(Parcel parcel) { parcel.writeParcelable(PrintGroup.this.purchaser, flags); /* version = 2*/ parcel.writeParcelable(PrintGroup.this.medicineAttribute, flags); + /* version = 3*/ + parcel.writeInt(PrintGroup.this.receiptFromInternet ? 1 : 0); return Unit.INSTANCE; } }); @@ -210,6 +223,10 @@ public Unit invoke(Parcel parcel, Integer version) { PrintGroup.this.medicineAttribute = parcel.readParcelable(MedicineAttribute.class.getClassLoader()); } + if (version >= 3) { + PrintGroup.this.receiptFromInternet = in.readInt() == 1; + } + return Unit.INSTANCE; } }); @@ -246,6 +263,7 @@ public boolean equals(Object o) { if (taxationSystem != that.taxationSystem) return false; if (purchaser != null ? !purchaser.equals(that.purchaser) : that.purchaser != null) return false; + if (receiptFromInternet != that.receiptFromInternet) return false; return medicineAttribute != null ? medicineAttribute.equals(that.medicineAttribute) : that.medicineAttribute == null; } @@ -261,6 +279,7 @@ public int hashCode() { result = 31 * result + (shouldPrintReceipt ? 1 : 0); result = 31 * result + (purchaser != null ? purchaser.hashCode() : 0); result = 31 * result + (medicineAttribute != null ? medicineAttribute.hashCode() : 0); + result = 31 * result + (receiptFromInternet ? 1 : 0); return result; } diff --git a/src/main/java/ru/evotor/framework/receipt/PrintGroupSubTable.kt b/src/main/java/ru/evotor/framework/receipt/PrintGroupSubTable.kt index 873f7f489..92c440f35 100644 --- a/src/main/java/ru/evotor/framework/receipt/PrintGroupSubTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/PrintGroupSubTable.kt @@ -14,4 +14,5 @@ object PrintGroupSubTable { const val COLUMN_PURCHASER_BIRTH_DATE = "PURCHASER_BIRTH_DATE" const val COLUMN_PURCHASER_DOCUMENT_TYPE_CODE = "PURCHASER_DOCUMENT_TYPE_CODE" const val COLUMN_PURCHASER_TYPE = "PURCHASER_TYPE" + const val COLUMN_RECEIPT_FROM_INTERNET = "PRINT_GROUP_RECEIPT_FROM_INTERNET" } diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 835742c37..e56c6651e 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -351,7 +351,8 @@ object ReceiptApi { Utils.safeValueOf(TaxationSystem::class.java, cursor.getString(cursor.getColumnIndex(PrintGroupSubTable.COLUMN_TAXATION_SYSTEM)), null), cursor.getInt(cursor.getColumnIndex(PrintGroupSubTable.COLUMN_SHOULD_PRINT_RECEIPT)) == 1, purchaser, - medicineAttribute + medicineAttribute, + cursor.getInt(cursor.getColumnIndex(PrintGroupSubTable.COLUMN_RECEIPT_FROM_INTERNET)) == 1, ) } From 80c60cc9ce4a5a5c2cdf499b0079e1f1fc928f55 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Mon, 21 Jul 2025 12:30:11 +0300 Subject: [PATCH 09/56] STDEV-22450 --- .../framework/core/action/datamapper/PrintGroupMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java index 1746300a8..1a79555cd 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintGroupMapper.java @@ -35,7 +35,7 @@ public static PrintGroup from(@Nullable Bundle bundle) { boolean shouldPrintReceipt = bundle.getBoolean(KEY_SHOULD_PRINT_RECEIPT, true); Purchaser purchaser = Purchaser.Companion.fromBundle(bundle.getBundle(KEY_PURCHASER)); MedicineAttribute medicineAttribute = MedicineAttribute.Companion.fromBundle(bundle.getBundle(KEY_MEDICINE_ATTRIBUTE)); - boolean receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, true); + boolean receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false); return new PrintGroup( identifier, Utils.safeValueOf(PrintGroup.Type.class, type, PrintGroup.Type.CASH_RECEIPT), From cfd0692a3a05be27c9bee216cc63dc45fb200c9f Mon Sep 17 00:00:00 2001 From: Nikita Parmenov Date: Mon, 21 Jul 2025 16:27:38 +0300 Subject: [PATCH 10/56] STDEV-22131 --- .../framework/navigation/NavigationApi.kt | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt b/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt index 1f4bd2117..b79f452f7 100644 --- a/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt +++ b/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt @@ -1,5 +1,6 @@ package ru.evotor.framework.navigation +import android.content.Context import android.content.Intent /** @@ -38,6 +39,7 @@ object NavigationApi { private const val ACTION_PRODUCT_LIST = "evotor.intent.action.commodity.SELECT" const val EXTRA_SHOULD_LOCK_SCREEN = "shouldLockScreen" + const val EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN = "appPackageSourceLockScreen" // extras for edit sell intent const val EXTRA_CLOSE_AFTER_OPERATION = "closeAfterOperation" @@ -146,15 +148,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForSellReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context, ): Intent { return Intent(ACTION_PAYMENT_SELL).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } @@ -164,15 +169,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForPaybackReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context ): Intent { return Intent(ACTION_PAYMENT_PAYBACK).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } @@ -182,15 +190,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForBuyReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context ): Intent { return Intent(ACTION_PAYMENT_BUY).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } @@ -200,15 +211,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForBuybackReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context ): Intent { return Intent(ACTION_PAYMENT_BUYBACK).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } @@ -219,15 +233,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForCorrectionIncomeReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context ): Intent { return Intent(ACTION_PAYMENT_CORRECTION_INCOME).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } @@ -238,15 +255,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForCorrectionOutcomeReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context ): Intent { return Intent(ACTION_PAYMENT_CORRECTION_OUTCOME).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } @@ -256,15 +276,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForCorrectionReturnIncomeReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context ): Intent { return Intent(ACTION_PAYMENT_CORRECTION_RETURN_INCOME).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } @@ -275,15 +298,18 @@ object NavigationApi { * @param shouldLockScreen параметр запуска экрана оплаты, если 'true' то приложение вызвавшее этот Intent, будет запущено в lock-task * и нижняя навигационная панель будет недоступна (кроме кнопки Назад). Если передан 'false' навигационная нижняя панель будет доступна и lock-task не будет. * По-умолчанию 'false' + * @param context параметр для распознования приложением обработки оплаты источника LockTask Mode * * @return intent */ @JvmStatic fun createIntentForCorrectionReturnOutcomeReceiptPayment( - shouldLockScreen: Boolean = false + shouldLockScreen: Boolean = false, + context: Context ): Intent { return Intent(ACTION_PAYMENT_CORRECTION_RETURN_OUTCOME).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) + putExtra(EXTRA_APPLICATION_PACKAGE_SOURCE_LOCK_SCREEN, context.packageName ?: "") } } From e727524fff259d7bcb7cb8e960ad6da01be7e83d Mon Sep 17 00:00:00 2001 From: cheremisin <=> Date: Mon, 21 Jul 2025 15:25:46 +0300 Subject: [PATCH 11/56] STDEV-22461 --- src/main/java/ru/evotor/framework/kkt/api/KktApi.kt | 4 ++-- .../event/CorrectionReceiptRegistrationRequestedEvent.kt | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt index 70d458e64..ee4b22705 100644 --- a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt +++ b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt @@ -246,7 +246,7 @@ object KktApi { basisForCorrection: String, @FiscalRequisite(FiscalTags.PRESCRIPTION_NUMBER) - prescriptionNumber: String, + prescriptionNumber: String? = null, @FiscalRequisite(FiscalTags.CORRECTABLE_SETTLEMENT_DATE) correctableSettlementDate: Date, @@ -342,7 +342,7 @@ object KktApi { basisForCorrection: String, @FiscalRequisite(FiscalTags.PRESCRIPTION_NUMBER) - prescriptionNumber: String, + prescriptionNumber: String? = null, @FiscalRequisite(FiscalTags.CORRECTABLE_SETTLEMENT_DATE) correctableSettlementDate: Date, diff --git a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt index a726b2ddd..d3b61517b 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt @@ -16,7 +16,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( val taxationSystem: TaxationSystem, val correctionType: CorrectionType, val basisForCorrection: String, - val prescriptionNumber: String, + val prescriptionNumber: String? = null, val correctableSettlementDate: Date, val amountPaid: BigDecimal, val paymentType: PaymentType, @@ -48,8 +48,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( getCorrectionType(it), it.getString(KEY_BASIS_FOR_CORRECTION) ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), - it.getString(KEY_PRESCRIPTION_NUMBER) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), + it.getString(KEY_PRESCRIPTION_NUMBER), Date(it.getLong(KEY_CORRECTABLE_SETTLEMENT_DATE)), BigDecimal(it.getString(KEY_AMOUNT_PAID)), PaymentType.valueOf(it.getString(KEY_PAYMENT_TYPE) @@ -90,4 +89,4 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( putString(KEY_PAYMENT_ADDRESS, paymentAddress) putString(KEY_PAYMENT_PLACE, paymentPlace) } -} \ No newline at end of file +} From 9e6e8cbb49ef0157f75b740981df730506028d19 Mon Sep 17 00:00:00 2001 From: cheremisin <=> Date: Tue, 22 Jul 2025 10:40:26 +0300 Subject: [PATCH 12/56] STDEV-22461 --- .../kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt index d3b61517b..f0f648cca 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt @@ -48,7 +48,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( getCorrectionType(it), it.getString(KEY_BASIS_FOR_CORRECTION) ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), - it.getString(KEY_PRESCRIPTION_NUMBER), + it.getString(KEY_PRESCRIPTION_NUMBER)?: "", Date(it.getLong(KEY_CORRECTABLE_SETTLEMENT_DATE)), BigDecimal(it.getString(KEY_AMOUNT_PAID)), PaymentType.valueOf(it.getString(KEY_PAYMENT_TYPE) @@ -80,7 +80,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( putString(KEY_TAXATION_SYSTEM, taxationSystem.name) putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_BASIS_FOR_CORRECTION, basisForCorrection) - putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber) + putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber?: "") putLong(KEY_CORRECTABLE_SETTLEMENT_DATE, correctableSettlementDate.time) putString(KEY_AMOUNT_PAID, amountPaid.toString()) putString(KEY_PAYMENT_TYPE, paymentType.name) From 9fba322145c5aa235502af63da4669481e549839 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 24 Jul 2025 16:54:48 +0500 Subject: [PATCH 13/56] STDEV-22450 --- .../ru/evotor/framework/receipt/PrintGroup.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java index 31da49a37..0fcf844b5 100644 --- a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java +++ b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java @@ -86,6 +86,21 @@ public PrintGroup( this(identifier, type, orgName, orgInn, orgAddress, taxationSystem, shouldPrintReceipt, null, null, false); } + @Deprecated + public PrintGroup( + String identifier, + Type type, + String orgName, + String orgInn, + String orgAddress, + TaxationSystem taxationSystem, + boolean shouldPrintReceipt, + @Nullable Purchaser purchaser, + @Nullable MedicineAttribute medicineAttribute + ) { + this(identifier, type, orgName, orgInn, orgAddress, taxationSystem, shouldPrintReceipt, purchaser, medicineAttribute, false); + } + public PrintGroup( String identifier, Type type, From 90adcd84a3408bb1821f59e623d3bcdb965eecf7 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 24 Jul 2025 17:38:06 +0500 Subject: [PATCH 14/56] STDEV-22450 --- src/main/java/ru/evotor/framework/receipt/PrintGroup.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java index 0fcf844b5..5a6d6f8f7 100644 --- a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java +++ b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java @@ -86,7 +86,6 @@ public PrintGroup( this(identifier, type, orgName, orgInn, orgAddress, taxationSystem, shouldPrintReceipt, null, null, false); } - @Deprecated public PrintGroup( String identifier, Type type, From badcb185b275b59a7142d318a8529c54ad94f414 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Tue, 29 Jul 2025 15:43:42 +0500 Subject: [PATCH 15/56] rc_0.6.27 --- .../kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt index f0f648cca..7f96b8499 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt @@ -80,7 +80,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( putString(KEY_TAXATION_SYSTEM, taxationSystem.name) putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_BASIS_FOR_CORRECTION, basisForCorrection) - putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber?: "") + putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber ?: "") putLong(KEY_CORRECTABLE_SETTLEMENT_DATE, correctableSettlementDate.time) putString(KEY_AMOUNT_PAID, amountPaid.toString()) putString(KEY_PAYMENT_TYPE, paymentType.name) From 67eda613049548866072ca8f2a63b5d17fca175a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Fri, 8 Aug 2025 19:21:30 +0700 Subject: [PATCH 16/56] STDEV-22583 --- build.gradle | 2 +- src/main/java/ru/evotor/framework/inventory/ProductQuery.kt | 6 ------ src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt | 5 ----- src/main/java/ru/evotor/framework/users/GrantQuery.kt | 6 ------ src/main/java/ru/evotor/framework/users/UserQuery.kt | 6 ------ 5 files changed, 1 insertion(+), 24 deletions(-) diff --git a/build.gradle b/build.gradle index 16b8b1b91..d6a94fb02 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" api 'com.github.evotor:push-notifications:v0.2.1' - api 'com.github.evotor:query-api:1.0.0' + api 'com.github.evotor:query-api:1.2.0' implementation 'com.google.code.gson:gson:2.8.9' diff --git a/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt b/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt index e35b73be8..aa2561f6b 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt +++ b/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt @@ -41,9 +41,6 @@ class ProductQuery : FilterBuilder(ProductTable.ROW_TARE_VOLUME, {it?.multiply(BigDecimal(1000))}) - override val currentQuery: ProductQuery - get() = this - class SortOrder : FilterBuilder.SortOrder() { @JvmField @@ -77,9 +74,6 @@ class ProductQuery : FilterBuilder): ProductItem? { diff --git a/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt b/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt index 91cf4bdc9..2b1b449b2 100644 --- a/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt @@ -86,13 +86,8 @@ data class FiscalReceipt internal constructor( val fiscalStorageNumber = addFieldSorter(FiscalDocumentContract.COLUMN_FISCAL_STORAGE_NUMBER) val fiscalIdentifier = addFieldSorter(FiscalDocumentContract.COLUMN_FISCAL_IDENTIFIER) - override val currentSortOrder: SortOrder - get() = this } - override val currentQuery: Query - get() = this - override fun getValue(cursor: Cursor): FiscalReceipt = FiscalReceiptMapper.read(cursor) } } diff --git a/src/main/java/ru/evotor/framework/users/GrantQuery.kt b/src/main/java/ru/evotor/framework/users/GrantQuery.kt index 847e7b1b6..d878c65e4 100644 --- a/src/main/java/ru/evotor/framework/users/GrantQuery.kt +++ b/src/main/java/ru/evotor/framework/users/GrantQuery.kt @@ -11,9 +11,6 @@ class GrantQuery(authenticatedUsersOnly: Boolean = false) : FilterBuilder(GrantsTable.ROW_ROLE_UUID) - override val currentQuery: GrantQuery - get() = this - class SortOrder : FilterBuilder.SortOrder() { @JvmField @@ -21,9 +18,6 @@ class GrantQuery(authenticatedUsersOnly: Boolean = false) : FilterBuilder): Grant? { diff --git a/src/main/java/ru/evotor/framework/users/UserQuery.kt b/src/main/java/ru/evotor/framework/users/UserQuery.kt index 293984dc4..9d586d366 100644 --- a/src/main/java/ru/evotor/framework/users/UserQuery.kt +++ b/src/main/java/ru/evotor/framework/users/UserQuery.kt @@ -27,9 +27,6 @@ class UserQuery(authenticatedUsersOnly: Boolean = false): @JvmField val position = addFieldFilter(UsersTable.ROW_USER_POSITION) - override val currentQuery: UserQuery - get() = this - class SortOrder : FilterBuilder.SortOrder() { @JvmField @@ -50,9 +47,6 @@ class UserQuery(authenticatedUsersOnly: Boolean = false): val roleTitle = addFieldSorter(UsersTable.ROW_ROLE_TITLE) @JvmField val position = addFieldSorter(UsersTable.ROW_USER_POSITION) - - override val currentSortOrder: SortOrder - get() = this } override fun getValue(cursor: Cursor): User? { From 889107213793562c212ff794810f6895a84a823b Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Tue, 12 Aug 2025 20:09:12 +0500 Subject: [PATCH 17/56] STDEV-22601 --- src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index e56c6651e..da80cc565 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -352,7 +352,7 @@ object ReceiptApi { cursor.getInt(cursor.getColumnIndex(PrintGroupSubTable.COLUMN_SHOULD_PRINT_RECEIPT)) == 1, purchaser, medicineAttribute, - cursor.getInt(cursor.getColumnIndex(PrintGroupSubTable.COLUMN_RECEIPT_FROM_INTERNET)) == 1, + cursor.optInt(PrintGroupSubTable.COLUMN_RECEIPT_FROM_INTERNET) == 1, ) } From 6da923c64d4ef45262753810bbe283fd1011bb9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Thu, 14 Aug 2025 21:15:36 +0700 Subject: [PATCH 18/56] STDEV-22627 --- .editorconfig | 18 +- .gitignore | 2 +- build.gradle | 17 +- .../commons/printer/PrinterDocument.aidl | 2 +- .../devices/commons/result/ResultBoolean.aidl | 2 +- .../devices/commons/result/ResultDouble.aidl | 2 +- .../devices/commons/result/ResultInt.aidl | 2 +- .../commons/result/ResultIntArray.aidl | 2 +- .../devices/commons/result/ResultLong.aidl | 2 +- .../devices/commons/result/ResultString.aidl | 2 +- .../devices/commons/result/ResultVoid.aidl | 2 +- .../devices/commons/result/ResultWeight.aidl | 2 +- .../core/IIntegrationManagerResponse.aidl | 2 +- src/main/java/ru/evotor/Bundles.kt | 11 + src/main/java/ru/evotor/IBundlable.kt | 3 +- src/main/java/ru/evotor/Parcelables.kt | 36 +++ .../java/ru/evotor/UuidValidationUtils.kt | 5 +- .../ru/evotor/devices/commons/Constants.java | 1 + .../commons/DeviceServiceConnector.java | 9 +- .../commons/printer/PrinterDocument.java | 5 +- .../printer/printable/PrintableImage.java | 6 +- .../commons/result/AbstractResult.java | 2 +- .../commons/result/ErrorDescription.java | 2 +- .../result/ErrorDescriptionPacker.java | 2 +- .../java/ru/evotor/framework/BundleExt.kt | 23 +- .../java/ru/evotor/framework/ColorUtils.kt | 9 +- .../java/ru/evotor/framework/CursorExt.kt | 2 - src/main/java/ru/evotor/framework/Document.kt | 6 +- .../ru/evotor/framework/FiscalDocument.kt | 1 - .../java/ru/evotor/framework/FutureFeature.kt | 2 +- .../ru/evotor/framework/ParcelableUtils.kt | 16 +- .../common/event/IntegrationEvent.kt | 3 +- .../handler/service/IntegrationServiceV2.kt | 53 ++-- .../component/IntegrationComponent.kt | 21 +- .../framework/component/PaymentDelegator.kt | 13 +- .../component/PaymentDelegatorApi.kt | 19 +- .../framework/component/PaymentPerformer.kt | 30 ++- .../component/PaymentPerformerApi.kt | 65 ++--- .../component/PaymentPerformerTable.kt | 2 +- .../viewdata/IntegrationComponentViewData.kt | 8 +- .../IntegrationComponentViewDataApi.kt | 32 +-- .../viewdata/PaymentPerformerViewData.kt | 10 +- .../framework/core/BroadcastEventReceiver.kt | 4 +- .../framework/core/ICanStartActivity.kt | 3 +- .../core/IntegrationLibraryException.kt | 2 +- .../IntegrationLibraryMappingException.kt | 4 +- .../IntegrationLibraryParsingException.kt | 6 +- .../framework/core/IntegrationManager.java | 6 +- .../core/IntegrationManagerImpl.java | 11 +- .../framework/core/IntegrationService.java | 4 +- .../framework/core/RequiresIntentAction.kt | 8 +- .../CloseBankSessionCommand.kt | 6 +- .../CloseBankSessionCommandResult.kt | 2 - .../OpenBuyReceiptCommand.java | 9 +- .../OpenBuybackReceiptCommand.java | 1 + .../OpenCorrectionIncomeReceiptCommand.kt | 4 +- .../OpenCorrectionOutcomeReceiptCommand.kt | 4 +- ...penCorrectionReturnIncomeReceiptCommand.kt | 4 +- ...enCorrectionReturnOutcomeReceiptCommand.kt | 4 +- .../OpenPaybackReceiptCommand.java | 1 + .../OpenSellReceiptCommand.java | 9 +- .../PrintCashIncomeCommandResult.kt | 1 - .../PrintCashOutcomeCommandResult.kt | 1 - .../PrintBuyReceiptCommand.kt | 107 ++++---- .../PrintBuybackReceiptCommand.kt | 107 ++++---- .../PrintCorrectionIncomeReceiptCommand.kt | 4 +- .../PrintCorrectionOutcomeReceiptCommand.kt | 4 +- ...intCorrectionReturnIncomeReceiptCommand.kt | 2 - ...ntCorrectionReturnOutcomeReceiptCommand.kt | 2 - .../PrintPaybackReceiptCommand.kt | 116 ++++----- .../PrintReceiptCommand.kt | 44 ++-- .../PrintReceiptCommandErrorData.kt | 3 +- .../PrintReceiptCommandErrorDataFactory.kt | 8 +- .../PrintSellReceiptCommand.kt | 107 ++++---- .../PrintSessionOpeningReportCommand.kt | 1 - .../PrintSessionOpeningReportCommandResult.kt | 1 - .../PrintUnprintedDocumentCommand.kt | 2 - .../PrintUnprintedDocumentCommandResult.kt | 4 +- .../PrintZReportCommand.kt | 1 - .../PrintZReportCommandErrorData.kt | 3 +- .../PrintZReportCommandErrorDataFactory.kt | 8 +- .../PrintZReportCommandResult.kt | 3 - .../core/action/datamapper/ChangesMapper.kt | 2 - .../datamapper/IntegrationComponentMapper.kt | 30 +-- .../core/action/datamapper/MarkMapper.kt | 9 +- .../datamapper/PaymentDelegatorMapper.kt | 20 +- .../datamapper/PaymentPerformerMapper.kt | 26 +- .../datamapper/PositionAttributesMapper.kt | 4 - .../datamapper/PrintExtraPlaceMapper.kt | 24 +- .../action/datamapper/PrintablesMapper.kt | 97 ++++--- .../datamapper/SettlementMethodMapper.kt | 7 +- .../core/action/datamapper/TaxMapper.java | 5 +- .../cash_drawer/CashDrawerOpenEvent.java | 3 +- .../event/cash_operations/CashInEvent.java | 8 +- .../event/cash_operations/CashOutEvent.java | 8 +- .../inventory/ProductCardOpenedEvent.java | 3 +- .../BeforePositionsEditedEvent.java | 1 + .../action/event/receipt/changes/IChange.kt | 4 + .../event/receipt/changes/UnknownChange.kt | 7 +- .../changes/position/IPositionChange.kt | 2 +- .../receipt/changes/position/PositionAdd.kt | 13 +- .../receipt/changes/position/PositionEdit.kt | 9 +- .../changes/position/PositionRemove.kt | 11 +- .../event/receipt/changes/receipt/SetExtra.kt | 7 +- .../receipt/changes/receipt/SetPrintGroup.kt | 15 +- .../receipt/SetPurchaserContactData.kt | 1 - .../receipt/print_extra/SetPrintExtra.kt | 15 +- .../discount/ReceiptDiscountEvent.java | 1 + .../discount/ReceiptDiscountEventResult.java | 2 +- .../ReceiptDiscountRequiredEvent.kt | 3 +- .../ReceiptDiscountRequiredEventProcessor.kt | 1 - .../ReceiptDiscountRequiredEventResult.kt | 1 - .../ErrorPaymentByCardEvent.kt | 4 +- .../ErrorPaymentByCardEventProcessor.kt | 1 - .../ErrorPaymentByCardEventResult.kt | 2 - .../actions/ErrorPaymentByCardActionMapper.kt | 2 - .../actions/IHandleEventResultAction.kt | 1 - .../actions/PaymentByCardErrorAction.kt | 5 +- .../event/receipt/jewelry/SendJewelryEvent.kt | 14 +- .../jewelry/SendJewelryEventProcessor.kt | 2 - .../receipt/jewelry/SendJewelryEventResult.kt | 1 - .../event/receipt/merges/PositionsMerge.kt | 12 +- .../receipt/merges/PositionsMergeEvent.kt | 6 +- .../merges/PositionsMergeEventProcessor.kt | 3 +- .../merges/PositionsMergeEventResult.kt | 6 +- .../receipt/payment/PaymentSelectedEvent.java | 1 + .../payment/PaymentSelectedEventResult.java | 2 +- .../PaymentDelegatorEventProcessor.kt | 6 +- .../event/PaybackPaymentDelegatorEvent.kt | 2 +- .../combined/event/PaymentDelegatorEvent.kt | 3 +- .../event/PaymentDelegatorPaybackData.kt | 6 +- .../PaymentDelegatorCanceledAllEventResult.kt | 1 - .../PaymentDelegatorCanceledEventResult.kt | 15 +- .../result/PaymentDelegatorEventResult.kt | 10 +- .../PaymentDelegatorSelectedEventResult.kt | 10 +- .../payment/system/PaymentSystemProcessor.kt | 4 +- .../system/event/PaymentSystemEvent.kt | 9 +- .../event/PaymentSystemPaybackCancelEvent.kt | 13 +- .../system/event/PaymentSystemPaybackEvent.kt | 13 +- .../event/PaymentSystemSellCancelEvent.kt | 13 +- .../system/event/PaymentSystemSellEvent.kt | 11 +- .../result/PaymentSystemPaymentErrorResult.kt | 5 +- .../result/PaymentSystemPaymentOkResult.kt | 27 +- .../result/PaymentSystemPaymentResult.kt | 9 +- .../position_edited/PositionAddedEvent.java | 2 + .../position_edited/PositionEditedEvent.java | 2 + .../position_edited/PositionRemovedEvent.java | 2 + .../print_extra/PrintExtraRequiredEvent.kt | 11 +- .../PrintExtraRequiredEventProcessor.kt | 4 +- .../PrintExtraRequiredEventResult.kt | 39 +-- .../receipt/print_group/PrintGroupEvent.java | 2 +- .../print_group/PrintGroupRequiredEvent.java | 3 +- .../PrintGroupRequiredEventResult.java | 2 +- .../receipt_edited/ReceiptClearedEvent.java | 1 + .../receipt_edited/ReceiptClosedEvent.java | 1 + .../receipt_edited/ReceiptOpenedEvent.java | 1 + .../ReceiptPaymentPartsEditedEvent.java | 1 + .../ReceiptPrintGroupEditedEvent.java | 1 + .../event/session/BankSessionClosedEvent.kt | 3 - .../event/session/SessionClosedEvent.java | 3 +- .../event/session/SessionOpenedEvent.java | 2 +- .../action/event/users/UserChangedEvent.java | 3 +- .../action/processor/ActionProcessor.java | 8 +- .../framework/counterparties/Counterparty.kt | 2 +- .../collaboration/agent_scheme/Agent.kt | 90 +++---- .../collaboration/agent_scheme/Principal.kt | 79 +++--- .../collaboration/agent_scheme/Subagent.kt | 88 +++---- .../agent_scheme/TransactionOperator.kt | 81 +++--- .../agent_scheme/mapper/AgentMapper.kt | 46 ++-- .../agent_scheme/mapper/PrincipalMapper.kt | 28 +- .../agent_scheme/mapper/SubagentMapper.kt | 30 +-- .../mapper/TransactionOperatorMapper.kt | 30 +-- .../mapper/CounterpartyMapper.kt | 33 +-- .../cash_drawer/event/CashDrawerEvent.kt | 3 - .../event/CashDrawerOpenedEvent.kt | 2 +- .../receiver/CashDrawerBroadcastReceiver.kt | 11 +- .../framework/device/display/DisplayApi.kt | 6 +- .../scanner/event/BarcodeReceivedEvent.kt | 6 +- .../event/BarcodeScanRequestedEvent.kt | 2 - .../receiver/ScannerBroadcastReceiver.kt | 13 +- .../service/ScannerIntegrationService.kt | 4 +- .../evotor/framework/features/FeaturesApi.kt | 21 +- .../framework/fs/FsFiscalizationDocument.kt | 4 +- .../java/ru/evotor/framework/fs/api/FsApi.kt | 2 +- .../framework/inventory/AlcoCodeTable.kt | 4 +- .../framework/inventory/AttributeValue.kt | 46 ++-- .../inventory/AttributeWithValues.kt | 36 ++- .../framework/inventory/BarcodeTable.kt | 2 +- .../framework/inventory/InventoryApi.kt | 210 ++++++++------- .../framework/inventory/ProductExtra.kt | 14 +- .../framework/inventory/ProductExtraTable.kt | 2 +- .../evotor/framework/inventory/ProductItem.kt | 58 ++--- .../framework/inventory/ProductMapper.kt | 52 ++-- .../framework/inventory/ProductQuery.kt | 42 ++- .../framework/inventory/ProductTable.kt | 1 + .../inventory/event/ProductCardOpenedEvent.kt | 2 +- .../framework/inventory/event/ProductEvent.kt | 4 - .../receiver/InventoryBroadcastReceiver.kt | 11 +- .../inventory/field/DictionaryField.kt | 20 +- .../evotor/framework/inventory/field/Field.kt | 11 +- .../framework/inventory/field/FieldTable.kt | 2 +- .../framework/inventory/field/TextField.kt | 10 +- .../ru/evotor/framework/kkt/FfdVersion.kt | 2 +- .../evotor/framework/kkt/FiscalRequisite.kt | 19 +- .../evotor/framework/kkt/api/AsyncHandler.kt | 11 +- .../kkt/api/DocumentRegistrationCallback.kt | 3 +- .../kkt/api/DocumentRegistrationException.kt | 6 +- .../ru/evotor/framework/kkt/api/KktApi.kt | 33 +-- .../framework/kkt/event/CashInsertedEvent.kt | 6 +- .../framework/kkt/event/CashOperationEvent.kt | 2 - .../framework/kkt/event/CashWithdrawnEvent.kt | 6 +- ...ectionReceiptRegistrationRequestedEvent.kt | 73 +++--- .../handler/receiver/KktBroadcastReceiver.kt | 6 +- .../service/KktBacksideIntegrationService.kt | 3 +- .../evotor/framework/mapper/DocumentMapper.kt | 2 +- .../framework/mapper/FiscalDocumentMapper.kt | 6 +- .../framework/navigation/NavigationApi.kt | 5 - .../payment/AdditionalTransactionData.kt | 7 +- .../evotor/framework/payment/CashlessInfo.kt | 6 +- .../framework/payment/PaymentSystemApi.kt | 14 +- .../framework/provider/DocumentContract.kt | 2 +- .../provider/FiscalDocumentContract.kt | 2 +- .../evotor/framework/receipt/FiscalReceipt.kt | 86 +++--- .../ru/evotor/framework/receipt/Measure.kt | 36 ++- .../receipt/MedicineAdditionalDetails.kt | 47 ++-- .../framework/receipt/MedicineAttribute.kt | 73 +++--- .../receipt/MedicineAttributeSubTable.kt | 2 +- .../framework/receipt/NonFiscalReceipt.kt | 2 +- .../ru/evotor/framework/receipt/Payment.kt | 89 ++++--- .../ru/evotor/framework/receipt/Position.java | 34 +-- .../evotor/framework/receipt/PositionTable.kt | 1 - .../evotor/framework/receipt/PrintGroup.java | 14 +- .../ru/evotor/framework/receipt/Purchaser.kt | 43 +-- .../ru/evotor/framework/receipt/Receipt.kt | 173 +++++++------ .../ru/evotor/framework/receipt/ReceiptApi.kt | 60 ++--- .../framework/receipt/ReceiptDiscountTable.kt | 2 +- .../framework/receipt/SettlementType.kt | 2 +- .../ru/evotor/framework/receipt/TaxNumber.kt | 5 + .../framework/receipt/TaxationSystem.java | 2 +- .../ru/evotor/framework/receipt/TimeRange.kt | 2 - .../receipt/attribute/VeterinaryAttribute.kt | 1 - .../receipt/correction/CorrectionType.kt | 2 +- .../receipt/event/ReceiptCompletedEvent.kt | 2 +- .../receipt/event/ReceiptCreatedEvent.kt | 2 +- .../framework/receipt/event/ReceiptEvent.kt | 6 +- .../receiver/BuyReceiptBroadcastReceiver.kt | 20 +- .../BuybackReceiptBroadcastReceiver.kt | 20 +- ...orrectionIncomeReceiptBroadcastReceiver.kt | 4 +- ...rrectionOutcomeReceiptBroadcastReceiver.kt | 3 +- ...ionReturnIncomeReceiptBroadcastReceiver.kt | 4 +- ...onReturnOutcomeReceiptBroadcastReceiver.kt | 3 +- .../PaybackReceiptBroadcastReceiver.kt | 28 +- .../receiver/ReceiptBroadcastReceiver.kt | 67 +++-- .../receiver/SellReceiptBroadcastReceiver.kt | 20 +- .../receipt/formation/ReceiptDraft.kt | 2 +- .../receipt/formation/api/SellApi.kt | 24 +- ...rrentReceiptDraftToPaymentStageCallback.kt | 1 + ...rentReceiptDraftToPaymentStageException.kt | 6 +- .../TriggerReceiptDiscountEventCallback.kt | 1 - ...aftMovementToPaymentStageRequestedEvent.kt | 18 +- .../DiscountScreenAdditionalItemsEvent.kt | 10 +- ...iveryRequisitesForReceiptRequestedEvent.kt | 32 +-- .../event/ReturnMedicineAttributeEvent.kt | 18 +- ...ReturnPositionsForBarcodeRequestedEvent.kt | 60 +++-- ...erRequisitesForPrintGroupRequestedEvent.kt | 20 +- ...iggerReceiptDiscountEventRequestedEvent.kt | 3 +- .../service/BuyBacksideIntegrationService.kt | 1 + .../handler/service/BuyIntegrationService.kt | 4 +- .../service/BuybackIntegrationService.kt | 4 +- .../BuybackWithBuyIntegrationService.kt | 3 +- .../CorrectionIncomeIntegrationService.kt | 1 - .../CorrectionOutcomeIntegrationService.kt | 1 - ...orrectionReturnIncomeIntegrationService.kt | 1 - ...rrectionReturnOutcomeIntegrationService.kt | 1 - .../PaybackBacksideIntegrationService.kt | 1 + .../service/PaybackIntegrationService.kt | 4 +- .../PaybackWithSellIntegrationService.kt | 4 +- .../service/SellBacksideIntegrationService.kt | 1 + .../handler/service/SellIntegrationService.kt | 2 - ...rReceiptDiscountEventIntegrationService.kt | 2 +- .../receipt/mapper/FiscalReceiptMapper.kt | 56 ++-- .../receipt/position/AgentRequisites.kt | 37 +-- .../receipt/position/ImportationData.kt | 28 +- .../evotor/framework/receipt/position/Mark.kt | 16 +- .../receipt/position/MarksCheckingInfo.kt | 1 - .../receipt/position/PartialRealization.kt | 34 ++- .../receipt/position/PreferentialMedicine.kt | 28 +- .../receipt/position/SettlementMethod.kt | 20 +- .../position/event/PositionAddedEvent.kt | 6 +- .../receipt/position/event/PositionEvent.kt | 12 +- .../position/event/PositionRemovedEvent.kt | 6 +- .../position/event/PositionUpdatedEvent.kt | 6 +- .../position/mapper/AgentRequisitesMapper.kt | 244 +++++++++--------- .../PositionPartialRealizationMapper.kt | 7 +- .../mapper/PreferentialMedicineMapper.kt | 16 +- .../position/mapper/SettlementMethodMapper.kt | 27 +- .../mapper/VeterinaryAttributeMapper.kt | 1 - .../provider/AgentRequisitesContract.kt | 2 +- .../receipt/print_extras/PrintExtraPlace.kt | 2 +- ...ExtraPlacePositionAllSubpositionsFooter.kt | 11 +- .../PrintExtraPlacePositionFooter.kt | 11 +- .../PrintExtraPlacePrintGroupHeader.kt | 7 +- .../PrintExtraPlacePrintGroupSummary.kt | 9 +- .../PrintExtraPlacePrintGroupTop.kt | 7 +- .../print_extras/PrintExtraPlaceType.kt | 2 +- .../receipt/provider/FiscalReceiptContract.kt | 2 +- .../evotor/framework/settings/SettingsApi.kt | 1 - .../settings/SettingsProviderContracts.kt | 1 - .../evotor/framework/system/SystemStateApi.kt | 21 +- .../framework/system/SystemStateTable.kt | 3 +- .../framework/system/mode/DeviceModeApi.kt | 6 +- .../system/mode/DeviceModeContract.kt | 2 - .../java/ru/evotor/framework/users/Grant.kt | 18 +- .../ru/evotor/framework/users/GrantQuery.kt | 9 +- .../framework/users/GrantsProviderColumns.kt | 1 + .../ru/evotor/framework/users/GrantsTable.kt | 1 + .../framework/users/RolesProviderColumns.kt | 1 + .../java/ru/evotor/framework/users/User.kt | 188 +++++++------- .../java/ru/evotor/framework/users/UserApi.kt | 4 - .../ru/evotor/framework/users/UserMapper.kt | 25 +- .../ru/evotor/framework/users/UserQuery.kt | 26 +- .../users/UsersContentProviderContract.kt | 3 +- .../framework/users/UsersProviderColumns.kt | 1 + .../ru/evotor/framework/users/UsersTable.kt | 2 + .../integrations/BarcodeBroadcastReceiver.kt | 7 +- src/main/res/values/colors.xml | 4 +- .../receipt/position/AgentRequisitesTest.kt | 189 +++++++------- 327 files changed, 2575 insertions(+), 2662 deletions(-) create mode 100644 src/main/java/ru/evotor/Bundles.kt create mode 100644 src/main/java/ru/evotor/Parcelables.kt diff --git a/.editorconfig b/.editorconfig index 9e7562a08..cf7a7dabc 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,7 +2,8 @@ # Если установлена в true, парсер не будет искать другие конфиги родительских папках root = true -[*.{kt, kts}] +# noinspection EditorConfigKeyCorrectness +[*.{kt,kts}] # possible values: number (e.g. 2), "unset" (makes ktlint ignore indentation completely) indent_size = 4 @@ -16,4 +17,17 @@ trim_trailing_whitespace = true # it's automatically set to 100 on `ktlint --android ...` (per Android Kotlin Style Guide) max_line_length = off -disabled_rules = no-wildcard-imports \ No newline at end of file +ktlint_standard_package-name = disabled +ktlint_standard_import-ordering = disabled +ktlint_standard_multiline-expression-wrapping = disabled +ktlint_standard_annotation = disabled +ktlint_standard_function-type-modifier-spacing = disabled +ktlint_standard_no-wildcard-imports = disabled +ktlint_standard_trailing-comma-on-declaration-site = disabled +ktlint_standard_trailing-comma-on-call-site = disabled +ktlint_standard_function-signature = disabled +ktlint_standard_parameter-list-wrapping = disabled +ktlint_standard_chain-method-continuation = disabled +ktlint_standard_function-expression-body = disabled +ktlint_standard_class-signature = disabled +ktlint_argument_list_wrapping_ignore_when_parameter_count_greater_or_equal_than = 8 \ No newline at end of file diff --git a/.gitignore b/.gitignore index c319e3d63..49ef9559b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ codeiris /captures /.idea */build -projectFilesBackup/ +projectFilesBackup/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index d6a94fb02..fbd3e9617 100644 --- a/build.gradle +++ b/build.gradle @@ -6,19 +6,21 @@ apply plugin: 'maven-publish' apply plugin: 'org.jetbrains.dokka' android { + namespace = "ru.evotor.integrations" def version = 36 - compileSdk 29 + compileSdk 30 defaultConfig { minSdkVersion 23 //noinspection ExpiredTargetSdkVersion - targetSdkVersion 29 + targetSdkVersion 30 versionCode version - versionName "0.6.08" + versionName "v0.6.27.1" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' resValue "integer", "versionCodeIntegrationLibrary", "$version" } + buildTypes { release { minifyEnabled false @@ -29,8 +31,11 @@ android { abortOnError false } compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 + sourceCompatibility = 17 + targetCompatibility = 17 + } + buildFeatures { + aidl = true } } @@ -54,7 +59,7 @@ repositories { } buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.7.22' repositories { mavenCentral() google() diff --git a/src/main/aidl/ru/evotor/devices/commons/printer/PrinterDocument.aidl b/src/main/aidl/ru/evotor/devices/commons/printer/PrinterDocument.aidl index 5aa06b6c9..7cc29e064 100644 --- a/src/main/aidl/ru/evotor/devices/commons/printer/PrinterDocument.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/printer/PrinterDocument.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.printer; -parcelable PrinterDocument; \ No newline at end of file +parcelable PrinterDocument; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultBoolean.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultBoolean.aidl index 772cb25cf..ef7a6c94f 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultBoolean.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultBoolean.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultBoolean; \ No newline at end of file +parcelable ResultBoolean; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultDouble.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultDouble.aidl index b7897f2fa..84b2a77de 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultDouble.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultDouble.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultDouble; \ No newline at end of file +parcelable ResultDouble; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultInt.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultInt.aidl index 4c32e5de8..53f9233b9 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultInt.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultInt.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultInt; \ No newline at end of file +parcelable ResultInt; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultIntArray.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultIntArray.aidl index a0bdfbab9..6a8ea16f6 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultIntArray.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultIntArray.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultIntArray; \ No newline at end of file +parcelable ResultIntArray; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultLong.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultLong.aidl index 8ccbdac57..ec58bca8f 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultLong.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultLong.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultLong; \ No newline at end of file +parcelable ResultLong; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultString.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultString.aidl index 1a9905bbd..24a8b9634 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultString.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultString.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultString; \ No newline at end of file +parcelable ResultString; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultVoid.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultVoid.aidl index 49985e60c..a72c338be 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultVoid.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultVoid.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultVoid; \ No newline at end of file +parcelable ResultVoid; diff --git a/src/main/aidl/ru/evotor/devices/commons/result/ResultWeight.aidl b/src/main/aidl/ru/evotor/devices/commons/result/ResultWeight.aidl index f9436e9b8..3f51ffef7 100644 --- a/src/main/aidl/ru/evotor/devices/commons/result/ResultWeight.aidl +++ b/src/main/aidl/ru/evotor/devices/commons/result/ResultWeight.aidl @@ -1,3 +1,3 @@ package ru.evotor.devices.commons.result; -parcelable ResultWeight; \ No newline at end of file +parcelable ResultWeight; diff --git a/src/main/aidl/ru/evotor/framework/core/IIntegrationManagerResponse.aidl b/src/main/aidl/ru/evotor/framework/core/IIntegrationManagerResponse.aidl index fcb93fefc..b2faa5626 100644 --- a/src/main/aidl/ru/evotor/framework/core/IIntegrationManagerResponse.aidl +++ b/src/main/aidl/ru/evotor/framework/core/IIntegrationManagerResponse.aidl @@ -4,4 +4,4 @@ import android.os.Bundle; oneway interface IIntegrationManagerResponse { void onResult(in Bundle value); void onError(int errorCode, String errorMessage, in Bundle data); -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/Bundles.kt b/src/main/java/ru/evotor/Bundles.kt new file mode 100644 index 000000000..8abf247a5 --- /dev/null +++ b/src/main/java/ru/evotor/Bundles.kt @@ -0,0 +1,11 @@ +package ru.evotor + +import android.os.Bundle + +fun Bundle.sanitizeInput(): Bundle { + return this +} + +fun Bundle.sanitizeOutput(): Bundle { + return this +} diff --git a/src/main/java/ru/evotor/IBundlable.kt b/src/main/java/ru/evotor/IBundlable.kt index cca34c81f..92b2d57c5 100644 --- a/src/main/java/ru/evotor/IBundlable.kt +++ b/src/main/java/ru/evotor/IBundlable.kt @@ -2,7 +2,6 @@ package ru.evotor import android.os.Bundle - interface IBundlable { fun toBundle(): Bundle -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/Parcelables.kt b/src/main/java/ru/evotor/Parcelables.kt new file mode 100644 index 000000000..c5ec5be38 --- /dev/null +++ b/src/main/java/ru/evotor/Parcelables.kt @@ -0,0 +1,36 @@ +package ru.evotor + +import android.os.Parcel +import android.os.Parcelable + +inline fun Parcel.readParcelable(): T? { + return readParcelable(this, T::class.java) +} + +fun readParcelable(parcel: Parcel, clazzT: Class): T? { + val dataPosition = parcel.dataPosition() + return try { + parcel.readParcelable(clazzT.classLoader) + } catch (t: Throwable) { + parcel.setDataPosition(dataPosition) + parcel.readValue(clazzT.classLoader) as? T + } +} + +fun Parcel.writeAliased(p: Parcelable?, flags: Int) { + writeParcelable(p, flags) +} + +fun Parcel.readAliased(creator: Parcelable.Creator): T? { + val ignoredClass = readString() ?: return null + println("read class $ignoredClass, but ignore this and read with $creator") + return creator.createFromParcel(this) +} + +fun Parcel.writeAliasedArray(value: Array?, flags: Int) { + writeParcelableArray(value, flags) +} + +fun Parcel.readParcelableArray(clazz: Class): Array? { + return readParcelableArray(clazz.classLoader) +} diff --git a/src/main/java/ru/evotor/UuidValidationUtils.kt b/src/main/java/ru/evotor/UuidValidationUtils.kt index 88b494c82..dc0d48f57 100644 --- a/src/main/java/ru/evotor/UuidValidationUtils.kt +++ b/src/main/java/ru/evotor/UuidValidationUtils.kt @@ -3,7 +3,6 @@ package ru.evotor import java.util.regex.Pattern object UuidValidationUtils { - private val UUID_REGEX: Pattern = Pattern.compile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") @JvmStatic @@ -15,5 +14,5 @@ object UuidValidationUtils { } } -class IncorrectUuidException(value: String?) - : IllegalArgumentException("Invalid UUID String $value : UUID has to be represented by standard 36-char representation") +class IncorrectUuidException(value: String?) : + IllegalArgumentException("Invalid UUID String $value : UUID has to be represented by standard 36-char representation") diff --git a/src/main/java/ru/evotor/devices/commons/Constants.java b/src/main/java/ru/evotor/devices/commons/Constants.java index c383fdb4c..83fd63fbe 100644 --- a/src/main/java/ru/evotor/devices/commons/Constants.java +++ b/src/main/java/ru/evotor/devices/commons/Constants.java @@ -1,5 +1,6 @@ package ru.evotor.devices.commons; + public final class Constants { public static final String ACTION_DEVICE_LIST_CHANGED = "ru.evotor.devices.DeviceConfigChanged"; diff --git a/src/main/java/ru/evotor/devices/commons/DeviceServiceConnector.java b/src/main/java/ru/evotor/devices/commons/DeviceServiceConnector.java index b86863d6f..46ead8bee 100644 --- a/src/main/java/ru/evotor/devices/commons/DeviceServiceConnector.java +++ b/src/main/java/ru/evotor/devices/commons/DeviceServiceConnector.java @@ -1,10 +1,9 @@ package ru.evotor.devices.commons; + import android.content.Context; import android.os.DeadObjectException; -import java.util.concurrent.CopyOnWriteArrayList; - import ru.evotor.devices.commons.exception.DeviceServiceException; import ru.evotor.devices.commons.exception.DeviceServiceOperationOnMainThreadException; import ru.evotor.devices.commons.exception.DeviceServiceRuntimeException; @@ -14,6 +13,8 @@ import ru.evotor.devices.commons.services.PrinterService; import ru.evotor.devices.commons.services.ScalesService; +import java.util.concurrent.CopyOnWriteArrayList; + /** * Класс, необходимый для инициализации встроенного или подключённого оборудования. */ @@ -40,6 +41,7 @@ public static CopyOnWriteArrayList getConnectionWrappers() { /** * Получает событие о подключении оборудования. + * * @param connectionWrapper интерфейс для выполнения дейтвий при подключении и отключении принтера и весов. */ public static void addConnectionWrapper(ConnectionWrapper connectionWrapper) { @@ -75,6 +77,7 @@ public static IScalesServiceWrapper getScalesService() throws ServiceNotConnecte /** * Инициализирует встроенное и подключённое оборудование + * * @param appContext контекст приложения. */ public static void startInitConnections(final Context appContext) { @@ -110,4 +113,4 @@ public static void processException(Exception exc) throws DeviceServiceException } exc.printStackTrace(); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/devices/commons/printer/PrinterDocument.java b/src/main/java/ru/evotor/devices/commons/printer/PrinterDocument.java index fe670a9d3..36643b82f 100644 --- a/src/main/java/ru/evotor/devices/commons/printer/PrinterDocument.java +++ b/src/main/java/ru/evotor/devices/commons/printer/PrinterDocument.java @@ -3,6 +3,7 @@ import android.os.Parcel; import android.os.Parcelable; +import ru.evotor.ParcelablesKt; import ru.evotor.devices.commons.printer.printable.IPrintable; /** @@ -17,7 +18,7 @@ public PrinterDocument(IPrintable... printables) { } private PrinterDocument(Parcel parcel) { - Parcelable[] parcelables = (Parcelable[]) parcel.readParcelableArray(IPrintable.class.getClassLoader()); + Parcelable[] parcelables = (Parcelable[]) ParcelablesKt.readParcelableArray(parcel, IPrintable.class); if (parcelables != null) { printables = new IPrintable[parcelables.length]; for (int i = 0; i < printables.length; i++) { @@ -39,7 +40,7 @@ public int describeContents() { @Override public void writeToParcel(Parcel parcel, int i) { - parcel.writeParcelableArray(printables, 0); + ParcelablesKt.writeAliasedArray(parcel, printables, 0); } public static final Creator CREATOR = new Creator() { diff --git a/src/main/java/ru/evotor/devices/commons/printer/printable/PrintableImage.java b/src/main/java/ru/evotor/devices/commons/printer/printable/PrintableImage.java index 180220b31..3068d0186 100644 --- a/src/main/java/ru/evotor/devices/commons/printer/printable/PrintableImage.java +++ b/src/main/java/ru/evotor/devices/commons/printer/printable/PrintableImage.java @@ -3,6 +3,8 @@ import android.graphics.Bitmap; import android.os.Parcel; +import ru.evotor.ParcelablesKt; + public class PrintableImage implements IPrintable { /** @@ -15,7 +17,7 @@ public PrintableImage(Bitmap bitmap) { } private PrintableImage(Parcel parcel) { - bitmap = parcel.readParcelable(Bitmap.class.getClassLoader()); + bitmap = ParcelablesKt.readAliased(parcel, Bitmap.CREATOR); } public Bitmap getBitmap() { @@ -29,7 +31,7 @@ public int describeContents() { @Override public void writeToParcel(Parcel parcel, int i) { - parcel.writeParcelable(bitmap, 0); + ParcelablesKt.writeAliased(parcel, bitmap, 0); } public static final Creator CREATOR = new Creator() { diff --git a/src/main/java/ru/evotor/devices/commons/result/AbstractResult.java b/src/main/java/ru/evotor/devices/commons/result/AbstractResult.java index 7ea574acb..306707550 100644 --- a/src/main/java/ru/evotor/devices/commons/result/AbstractResult.java +++ b/src/main/java/ru/evotor/devices/commons/result/AbstractResult.java @@ -18,4 +18,4 @@ protected void unpackException() throws DeviceServiceException { abstract ErrorDescription getErrorDescription(); -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/devices/commons/result/ErrorDescription.java b/src/main/java/ru/evotor/devices/commons/result/ErrorDescription.java index 7fa712bb5..97edf418c 100644 --- a/src/main/java/ru/evotor/devices/commons/result/ErrorDescription.java +++ b/src/main/java/ru/evotor/devices/commons/result/ErrorDescription.java @@ -46,4 +46,4 @@ public void writeToParcel(Parcel parcel) { } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/devices/commons/result/ErrorDescriptionPacker.java b/src/main/java/ru/evotor/devices/commons/result/ErrorDescriptionPacker.java index 0e6d5398c..14c29263b 100644 --- a/src/main/java/ru/evotor/devices/commons/result/ErrorDescriptionPacker.java +++ b/src/main/java/ru/evotor/devices/commons/result/ErrorDescriptionPacker.java @@ -97,4 +97,4 @@ public static AbstractErrorExtension createErrorExtension(int errorCode, Parcel return null; } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/BundleExt.kt b/src/main/java/ru/evotor/framework/BundleExt.kt index 897b871f4..8dd1df95f 100644 --- a/src/main/java/ru/evotor/framework/BundleExt.kt +++ b/src/main/java/ru/evotor/framework/BundleExt.kt @@ -39,20 +39,19 @@ internal fun Bundle.getPercent(key: String): BigDecimal? { } internal fun Bundle.optLong(key: String): Long? = - this.getLong(key, DEFAULT_LONG_VALUE).let { long -> - if (long != DEFAULT_LONG_VALUE) long else null - } + this.getLong(key, DEFAULT_LONG_VALUE).let { long -> + if (long != DEFAULT_LONG_VALUE) long else null + } internal fun > Bundle.optEnum(key: String, values: Array): T? = - this.getInt(key, DEFAULT_INT_VALUE).let { int -> - try { - values[int] - } catch (e: IndexOutOfBoundsException) { - e.printStackTrace() - null - } + this.getInt(key, DEFAULT_INT_VALUE).let { int -> + try { + values[int] + } catch (e: IndexOutOfBoundsException) { + e.printStackTrace() + null } + } internal inline fun Bundle.optSerializable(key: String): T? = - this.getSerializable(key)?.let { value -> if (value is T) value else null } - + this.getSerializable(key)?.let { value -> if (value is T) value else null } diff --git a/src/main/java/ru/evotor/framework/ColorUtils.kt b/src/main/java/ru/evotor/framework/ColorUtils.kt index ffaffe5ab..6f5d38f4a 100644 --- a/src/main/java/ru/evotor/framework/ColorUtils.kt +++ b/src/main/java/ru/evotor/framework/ColorUtils.kt @@ -7,7 +7,6 @@ import androidx.annotation.ColorInt * Created by Khaustov on 06.02.18. */ object ColorUtils { - private const val RED_MULTIPLIER = 0.299 private const val GREEN_MULTIPLIER = 0.587 private const val BLUE_MULTIPLIER = 0.114 @@ -16,8 +15,10 @@ object ColorUtils { @JvmStatic @ColorInt fun getContrastColor(@ColorInt color: Int): Int { - val rgbValue = 1 - (RED_MULTIPLIER * Color.red(color) + GREEN_MULTIPLIER * Color.green(color) - + BLUE_MULTIPLIER * Color.blue(color)) / RGB_MAX_COLOR_VALUE + val rgbValue = 1 - ( + RED_MULTIPLIER * Color.red(color) + GREEN_MULTIPLIER * Color.green(color) + + BLUE_MULTIPLIER * Color.blue(color) + ) / RGB_MAX_COLOR_VALUE return if (rgbValue < 0.5) Color.BLACK else Color.WHITE } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/CursorExt.kt b/src/main/java/ru/evotor/framework/CursorExt.kt index 3a3610a10..c077c0dac 100644 --- a/src/main/java/ru/evotor/framework/CursorExt.kt +++ b/src/main/java/ru/evotor/framework/CursorExt.kt @@ -91,7 +91,6 @@ internal fun Cursor.optList(columnIndex: Int): List? { } return getString(columnIndex)?.let { Gson().fromJson(it, object : TypeToken>() {}.type) } - } internal fun > Cursor.optEnum(columnName: String, values: Array): T? { @@ -115,7 +114,6 @@ internal fun > Cursor.optEnum(columnIndex: Int, values: Array): T null } } - } internal fun Cursor.optString(columnName: String): String? { diff --git a/src/main/java/ru/evotor/framework/Document.kt b/src/main/java/ru/evotor/framework/Document.kt index 34b9d68b6..025a995da 100644 --- a/src/main/java/ru/evotor/framework/Document.kt +++ b/src/main/java/ru/evotor/framework/Document.kt @@ -5,9 +5,9 @@ import ru.evotor.IBundlable import ru.evotor.framework.mapper.DocumentMapper import java.util.* -abstract class Document internal constructor(): IBundlable { - @FutureFeature("Uuid документа, зарегистрированного в системе Эвотор") +abstract class Document internal constructor() : IBundlable { + @FutureFeature("Uuid документа, зарегистрированного в системе") protected open val uuid: UUID? = null override fun toBundle(): Bundle = DocumentMapper.write(this) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/FiscalDocument.kt b/src/main/java/ru/evotor/framework/FiscalDocument.kt index 2ecc8dde0..1a08b0a0b 100644 --- a/src/main/java/ru/evotor/framework/FiscalDocument.kt +++ b/src/main/java/ru/evotor/framework/FiscalDocument.kt @@ -7,7 +7,6 @@ import java.util.* abstract class FiscalDocument internal constructor() : Document() { abstract val documentNumber: Long abstract val creationDate: Date - abstract val kktRegistrationNumber: String abstract val sessionNumber: Long abstract val fiscalStorageNumber: String diff --git a/src/main/java/ru/evotor/framework/FutureFeature.kt b/src/main/java/ru/evotor/framework/FutureFeature.kt index b894a88b2..e4bf5c09d 100644 --- a/src/main/java/ru/evotor/framework/FutureFeature.kt +++ b/src/main/java/ru/evotor/framework/FutureFeature.kt @@ -4,4 +4,4 @@ package ru.evotor.framework * То, что вскоре, возможно, будет реализовано. * Чтобы можно было понять, в каком направлении развивается АПИ. */ -internal annotation class FutureFeature(val description: String) \ No newline at end of file +internal annotation class FutureFeature(val description: String) diff --git a/src/main/java/ru/evotor/framework/ParcelableUtils.kt b/src/main/java/ru/evotor/framework/ParcelableUtils.kt index 9d7b97648..c45a86e3c 100644 --- a/src/main/java/ru/evotor/framework/ParcelableUtils.kt +++ b/src/main/java/ru/evotor/framework/ParcelableUtils.kt @@ -3,7 +3,6 @@ package ru.evotor.framework import android.os.Parcel object ParcelableUtils { - /** * Magic number для идентификации использования версионирования объекта */ @@ -17,27 +16,25 @@ object ParcelableUtils { val dataSizePosition = dataPosition() // Use integer placeholder for additional data size writeInt(0) - //Determine position of data start + // Determine position of data start val startDataPosition = dataPosition() - //Write additional data + // Write additional data writer(this) // Calculate additional data size val dataSize = dataPosition() - startDataPosition // Save position at the end of data val endOfDataPosition = dataPosition() - //Set position to start to write additional data size + // Set position to start to write additional data size setDataPosition(dataSizePosition) writeInt(dataSize) // Go back to the end of parcel setDataPosition(endOfDataPosition) } - @JvmStatic fun readExpand(parcel: Parcel, version: Int, reader: (Parcel, Int) -> Unit) = with(parcel) { - val startReadingPosition = dataPosition() // Check if available data size is more than integer size and versioning is supported @@ -46,7 +43,7 @@ object ParcelableUtils { setDataPosition(startReadingPosition) return } - //Read object version + // Read object version val currentVersion = readInt() val dataSize = readInt() val startDataPosition = dataPosition() @@ -55,8 +52,5 @@ object ParcelableUtils { if (currentVersion > version) { setDataPosition(startDataPosition + dataSize) } - } - - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/common/event/IntegrationEvent.kt b/src/main/java/ru/evotor/framework/common/event/IntegrationEvent.kt index 7224b998f..4ca9fc36f 100644 --- a/src/main/java/ru/evotor/framework/common/event/IntegrationEvent.kt +++ b/src/main/java/ru/evotor/framework/common/event/IntegrationEvent.kt @@ -3,6 +3,5 @@ package ru.evotor.framework.common.event import ru.evotor.IBundlable abstract class IntegrationEvent internal constructor() : IBundlable { - abstract class Result internal constructor() : IBundlable -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/common/event/handler/service/IntegrationServiceV2.kt b/src/main/java/ru/evotor/framework/common/event/handler/service/IntegrationServiceV2.kt index d8da94cf3..22af8e841 100644 --- a/src/main/java/ru/evotor/framework/common/event/handler/service/IntegrationServiceV2.kt +++ b/src/main/java/ru/evotor/framework/common/event/handler/service/IntegrationServiceV2.kt @@ -10,23 +10,33 @@ import ru.evotor.framework.core.IIntegrationManager import ru.evotor.framework.core.IIntegrationManagerResponse import ru.evotor.framework.core.IntegrationManager import ru.evotor.framework.core.IntegrationResponse +import ru.evotor.sanitizeInput +import ru.evotor.sanitizeOutput private fun IIntegrationManagerResponse.onEmptyResult() = - onResult(Bundle().apply { putBoolean(IntegrationManager.KEY_SKIP, true) }) + onResult(Bundle().apply { putBoolean(IntegrationManager.KEY_SKIP, true) }) private fun IIntegrationManagerResponse.onResultWithData(data: Bundle) = - onResult(Bundle().apply { putBundle(IntegrationManager.KEY_DATA, data) }) + onResult(Bundle().apply { putBundle(IntegrationManager.KEY_DATA, data) }.sanitizeOutput()) private fun IIntegrationManagerResponse.onResultWithIntent(sourceData: Bundle?, intent: Intent, options: Bundle? = null) = - onResult(Bundle().apply { - putParcelable(IntegrationManager.KEY_INTENT, intent.apply { - putExtra(IntegrationManager.KEY_INTENT_DATA, Bundle().apply { - putParcelable(IntegrationManager.KEY_INTEGRATION_RESPONSE, IntegrationResponse(this@onResultWithIntent)) - putParcelable(IntegrationManager.KEY_SOURCE_DATA, sourceData) - }) - }) + onResult( + Bundle().apply { + putParcelable( + IntegrationManager.KEY_INTENT, + intent.apply { + putExtra( + IntegrationManager.KEY_INTENT_DATA, + Bundle().apply { + putParcelable(IntegrationManager.KEY_INTEGRATION_RESPONSE, IntegrationResponse(this@onResultWithIntent)) + putParcelable(IntegrationManager.KEY_SOURCE_DATA, sourceData) + } + ) + } + ) putParcelable(IntegrationManager.KEY_OPTIONS, options) - }) + }.sanitizeOutput() + ) /** * Обновлённая версия класса [ru.evotor.framework.core.IntegrationService]. @@ -34,24 +44,23 @@ private fun IIntegrationManagerResponse.onResultWithIntent(sourceData: Bundle?, * Базовый класс, на основе которого реализованы интерфейсы взаимодействия служб со смарт-терминалом, например, [ru.evotor.framework.receipt.formation.event.handler.service.ReceiptFormationIntegrationService] */ abstract class IntegrationServiceV2 internal constructor() : Service() { - @Volatile private var intentToIntegrationActivity: Intent? = null private val binder = object : IIntegrationManager.Stub() { @Throws(RemoteException::class) override fun call(response: IIntegrationManagerResponse, action: String, bundle: Bundle?) { - bundle - ?.let { - onEvent(action, it) - } - ?.let { - response.onResultWithData(it.toBundle()) - } - ?: intentToIntegrationActivity?.let { - response.onResultWithIntent(bundle, it) - } - ?: response.onEmptyResult() + bundle?.sanitizeInput() + ?.let { + onEvent(action, it) + } + ?.let { + response.onResultWithData(it.toBundle()) + } + ?: intentToIntegrationActivity?.let { + response.onResultWithIntent(bundle, it) + } + ?: response.onEmptyResult() intentToIntegrationActivity = null } } diff --git a/src/main/java/ru/evotor/framework/component/IntegrationComponent.kt b/src/main/java/ru/evotor/framework/component/IntegrationComponent.kt index 6b636ddaf..f2f32d895 100644 --- a/src/main/java/ru/evotor/framework/component/IntegrationComponent.kt +++ b/src/main/java/ru/evotor/framework/component/IntegrationComponent.kt @@ -11,20 +11,21 @@ import ru.evotor.framework.core.action.datamapper.IntegrationComponentMapper * * @property packageName Название пакета * @property componentName Название компонента (сервис, активити и т.п.) - * @property appUuid Уникальный идентификатор приложения в Облаке Эвотор + * @property appUuid Уникальный идентификатор приложения в Облаке * @property appName Название приложения */ open class IntegrationComponent( - val packageName: String?, - val componentName: String?, - val appUuid: String?, - val appName: String? + val packageName: String?, + val componentName: String?, + val appUuid: String?, + val appName: String? ) : Parcelable, IBundlable { constructor(parcel: Parcel) : this( - parcel.readString(), - parcel.readString(), - parcel.readString(), - parcel.readString()) { + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString() + ) { } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -88,4 +89,4 @@ open class IntegrationComponent( } override fun toBundle(): Bundle = IntegrationComponentMapper.toBundle(this) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/component/PaymentDelegator.kt b/src/main/java/ru/evotor/framework/component/PaymentDelegator.kt index df8116f90..259f1127c 100644 --- a/src/main/java/ru/evotor/framework/component/PaymentDelegator.kt +++ b/src/main/java/ru/evotor/framework/component/PaymentDelegator.kt @@ -9,13 +9,14 @@ import ru.evotor.framework.core.action.datamapper.PaymentDelegatorMapper * * @param packageName Название пакета * @param componentName Название компонента (служба, операция и т.д.) - * @param appUuid Уникальный идентификатора приложения в Облаке Эвотор + * @param appUuid Уникальный идентификатора приложения в Облаке * @param appName Название приложения */ -class PaymentDelegator(packageName: String?, - componentName: String?, - appUuid: String?, - appName: String? +class PaymentDelegator( + packageName: String?, + componentName: String?, + appUuid: String?, + appName: String? ) : IntegrationComponent(packageName, componentName, appUuid, appName), IBundlable { override fun toBundle(): Bundle { return PaymentDelegatorMapper.toBundle(this) @@ -24,4 +25,4 @@ class PaymentDelegator(packageName: String?, companion object { fun from(bundle: Bundle?) = PaymentDelegatorMapper.fromBundle(bundle) } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/component/PaymentDelegatorApi.kt b/src/main/java/ru/evotor/framework/component/PaymentDelegatorApi.kt index 37e000fb3..f89018449 100644 --- a/src/main/java/ru/evotor/framework/component/PaymentDelegatorApi.kt +++ b/src/main/java/ru/evotor/framework/component/PaymentDelegatorApi.kt @@ -10,7 +10,6 @@ import ru.evotor.framework.core.action.event.receipt.payment.combined.event.Paym * Класс для получения делегаторов платежей, установленных на смарт-терминале. */ object PaymentDelegatorApi { - private const val METADATA_NAME_APP_UUID = "app_uuid" /** @@ -47,17 +46,19 @@ object PaymentDelegatorApi { appUuid ?: return null return PaymentDelegator( - resolveInfo.serviceInfo.packageName, - resolveInfo.serviceInfo.name, - appUuid, - resolveInfo.loadLabel(packageManager).toString() + resolveInfo.serviceInfo.packageName, + resolveInfo.serviceInfo.name, + appUuid, + resolveInfo.loadLabel(packageManager).toString() ) } private fun hasPermission(packageInfo: PackageInfo) = packageInfo.requestedPermissions.contains(PaymentDelegatorEvent.NAME_PERMISSION) private fun getAppUuid(packageInfo: PackageInfo) = - if (packageInfo.applicationInfo.metaData != null) - packageInfo.applicationInfo.metaData.getString(METADATA_NAME_APP_UUID, null) - else null -} \ No newline at end of file + if (packageInfo.applicationInfo.metaData != null) { + packageInfo.applicationInfo.metaData.getString(METADATA_NAME_APP_UUID, null) + } else { + null + } +} diff --git a/src/main/java/ru/evotor/framework/component/PaymentPerformer.kt b/src/main/java/ru/evotor/framework/component/PaymentPerformer.kt index 631b9c345..dcb2ae903 100644 --- a/src/main/java/ru/evotor/framework/component/PaymentPerformer.kt +++ b/src/main/java/ru/evotor/framework/component/PaymentPerformer.kt @@ -6,6 +6,8 @@ import android.os.Parcelable import ru.evotor.IBundlable import ru.evotor.framework.core.action.datamapper.PaymentPerformerMapper import ru.evotor.framework.payment.PaymentSystem +import ru.evotor.readAliased +import ru.evotor.writeAliased /** * Компонент (служба, операция и т.д.) интеграционного приложения, осуществляющий оплату. @@ -13,21 +15,23 @@ import ru.evotor.framework.payment.PaymentSystem * @param paymentSystem Платежная система. * @param packageName Название пакета. * @param componentName Название компонента (служба, операция и т.д.). - * @param appUuid Уникальный идентификатора приложения в Облаке Эвотор. + * @param appUuid Уникальный идентификатора приложения в Облаке. * @param appName Название приложения. */ -class PaymentPerformer(val paymentSystem: PaymentSystem?, - packageName: String?, - componentName: String?, - appUuid: String?, - appName: String? +class PaymentPerformer( + val paymentSystem: PaymentSystem?, + packageName: String?, + componentName: String?, + appUuid: String?, + appName: String? ) : IntegrationComponent(packageName, componentName, appUuid, appName), Parcelable, IBundlable { constructor(parcel: Parcel) : this( - parcel.readParcelable(PaymentSystem::class.java.classLoader), - parcel.readString(), - parcel.readString(), - parcel.readString(), - parcel.readString()) { + parcel.readAliased(PaymentSystem.CREATOR), + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString() + ) { } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -43,7 +47,7 @@ class PaymentPerformer(val paymentSystem: PaymentSystem?, val startPosition = parcel.dataPosition() // version 1 - parcel.writeParcelable(paymentSystem, flags) + parcel.writeAliased(paymentSystem, flags) parcel.writeString(packageName) parcel.writeString(componentName) parcel.writeString(appUuid) @@ -69,7 +73,7 @@ class PaymentPerformer(val paymentSystem: PaymentSystem?, const val PARCELABLE_VERSION = 1 @JvmField - val CREATOR: Parcelable.Creator = object : Parcelable.Creator { + val CREATOR = object : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): PaymentPerformer { val parcelableVersion = parcel.readInt() val parcelableSize = parcel.readInt() diff --git a/src/main/java/ru/evotor/framework/component/PaymentPerformerApi.kt b/src/main/java/ru/evotor/framework/component/PaymentPerformerApi.kt index e78207715..6693940fd 100644 --- a/src/main/java/ru/evotor/framework/component/PaymentPerformerApi.kt +++ b/src/main/java/ru/evotor/framework/component/PaymentPerformerApi.kt @@ -13,7 +13,6 @@ import ru.evotor.framework.payment.PaymentType * Класс для получения исполнителей платежей, установленных на смарт-терминале. */ object PaymentPerformerApi { - private const val METADATA_NAME_APP_UUID = "app_uuid" private const val CASH_PAYMENT_SYSTEM_ID = "ru.evotor.paymentSystem.cash.base" @@ -59,24 +58,26 @@ object PaymentPerformerApi { appUuid ?: return null return PaymentPerformer( - PaymentSystem( - paymentType, - resolveInfo.loadLabel(packageManager).toString(), - paymentSystemId - ), - resolveInfo.serviceInfo.packageName, - resolveInfo.serviceInfo.name, - appUuid, - resolveInfo.loadLabel(packageManager).toString() + PaymentSystem( + paymentType, + resolveInfo.loadLabel(packageManager).toString(), + paymentSystemId + ), + resolveInfo.serviceInfo.packageName, + resolveInfo.serviceInfo.name, + appUuid, + resolveInfo.loadLabel(packageManager).toString() ) } private fun hasPermission(packageInfo: PackageInfo) = packageInfo.requestedPermissions.contains(PaymentSystemEvent.NAME_PERMISSION) private fun getAppUuid(packageInfo: PackageInfo) = - if (packageInfo.applicationInfo.metaData != null) - packageInfo.applicationInfo.metaData.getString(METADATA_NAME_APP_UUID, null) - else null + if (packageInfo.applicationInfo.metaData != null) { + packageInfo.applicationInfo.metaData.getString(METADATA_NAME_APP_UUID, null) + } else { + null + } private fun getPaymentSystemId(metaData: Bundle) = metaData.getString(PaymentSystemEvent.META_NAME_PAYMENT_SYSTEM_ID, null) @@ -87,26 +88,26 @@ object PaymentPerformerApi { } private fun getDefaultCashPaymentPerformer() = PaymentPerformer( - PaymentSystem( - PaymentType.CASH, - CASH_PAYMENT_DESCRIPTION, - CASH_PAYMENT_SYSTEM_ID - ), - null, - null, - null, - CASH_PAYMENT_DESCRIPTION + PaymentSystem( + PaymentType.CASH, + CASH_PAYMENT_DESCRIPTION, + CASH_PAYMENT_SYSTEM_ID + ), + null, + null, + null, + CASH_PAYMENT_DESCRIPTION ) private fun getDefaultCardPaymentPerformer() = PaymentPerformer( - PaymentSystem( - PaymentType.ELECTRON, - CARD_PAYMENT_DESCRIPTION, - CARD_PAYMENT_SYSTEM_ID - ), - null, - null, - null, - CARD_PAYMENT_DESCRIPTION + PaymentSystem( + PaymentType.ELECTRON, + CARD_PAYMENT_DESCRIPTION, + CARD_PAYMENT_SYSTEM_ID + ), + null, + null, + null, + CARD_PAYMENT_DESCRIPTION ) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/component/PaymentPerformerTable.kt b/src/main/java/ru/evotor/framework/component/PaymentPerformerTable.kt index 9cd11dbfa..acbab43a5 100644 --- a/src/main/java/ru/evotor/framework/component/PaymentPerformerTable.kt +++ b/src/main/java/ru/evotor/framework/component/PaymentPerformerTable.kt @@ -5,4 +5,4 @@ object PaymentPerformerTable { const val COLUMN_COMPONENT_NAME = "PAYMENT_PERFORMER_COMPONENT_NAME" const val COLUMN_APP_UUID = "PAYMENT_PERFORMER_APP_UUID" const val COLUMN_APP_NAME = "PAYMENT_PERFORMER_APP_NAME" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewData.kt b/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewData.kt index 876e2d3d5..3632ad8d4 100644 --- a/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewData.kt +++ b/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewData.kt @@ -3,7 +3,7 @@ package ru.evotor.framework.component.viewdata import android.graphics.drawable.Drawable open class IntegrationComponentViewData( - val icon: Drawable?, - val backgroundColor: Int?, - val textColor: Int? -) \ No newline at end of file + val icon: Drawable?, + val backgroundColor: Int?, + val textColor: Int? +) diff --git a/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewDataApi.kt b/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewDataApi.kt index 559cbc396..8416597d9 100644 --- a/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewDataApi.kt +++ b/src/main/java/ru/evotor/framework/component/viewdata/IntegrationComponentViewDataApi.kt @@ -14,7 +14,6 @@ import ru.evotor.framework.payment.PaymentType import ru.evotor.integrations.R object IntegrationComponentViewDataApi { - private const val METADATA_NAME_APP_UUID = "app_uuid" private const val BACKGROUND_COLOR_KEY = "ru.evotor.sales_screen.BACKGROUND_COLOR" @@ -56,26 +55,27 @@ object IntegrationComponentViewDataApi { return null } val paymentSystem = PaymentSystem( - paymentType, - resolveInfo.loadLabel(packageManager).toString(), - paymentSystemId + paymentType, + resolveInfo.loadLabel(packageManager).toString(), + paymentSystemId ) val paymentPerformer = PaymentPerformer( - paymentSystem, - resolveInfo.serviceInfo.packageName, - resolveInfo.serviceInfo.name, - appUuid, - resolveInfo.loadLabel(packageManager).toString() + paymentSystem, + resolveInfo.serviceInfo.packageName, + resolveInfo.serviceInfo.name, + appUuid, + resolveInfo.loadLabel(packageManager).toString() ) - val backgroundColor = if (metaData.containsKey(BACKGROUND_COLOR_KEY)) + val backgroundColor = if (metaData.containsKey(BACKGROUND_COLOR_KEY)) { metaData.getInt(BACKGROUND_COLOR_KEY) - else + } else { context.getColor(R.color.white) + } return PaymentPerformerViewData( - paymentPerformer, - resolveInfo.loadIcon(packageManager), - backgroundColor, - ColorUtils.getContrastColor(backgroundColor) + paymentPerformer, + resolveInfo.loadIcon(packageManager), + backgroundColor, + ColorUtils.getContrastColor(backgroundColor) ) } @@ -88,4 +88,4 @@ object IntegrationComponentViewDataApi { } catch (t: Throwable) { null } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/component/viewdata/PaymentPerformerViewData.kt b/src/main/java/ru/evotor/framework/component/viewdata/PaymentPerformerViewData.kt index aa5cbf3c8..0c497d89b 100644 --- a/src/main/java/ru/evotor/framework/component/viewdata/PaymentPerformerViewData.kt +++ b/src/main/java/ru/evotor/framework/component/viewdata/PaymentPerformerViewData.kt @@ -4,8 +4,8 @@ import android.graphics.drawable.Drawable import ru.evotor.framework.component.PaymentPerformer class PaymentPerformerViewData( - val paymentPerformer: PaymentPerformer, - icon: Drawable?, - backgroundColor: Int?, - textColor: Int? -) : IntegrationComponentViewData(icon, backgroundColor, textColor) \ No newline at end of file + val paymentPerformer: PaymentPerformer, + icon: Drawable?, + backgroundColor: Int?, + textColor: Int? +) : IntegrationComponentViewData(icon, backgroundColor, textColor) diff --git a/src/main/java/ru/evotor/framework/core/BroadcastEventReceiver.kt b/src/main/java/ru/evotor/framework/core/BroadcastEventReceiver.kt index 02f3e82a8..5b20a88c1 100644 --- a/src/main/java/ru/evotor/framework/core/BroadcastEventReceiver.kt +++ b/src/main/java/ru/evotor/framework/core/BroadcastEventReceiver.kt @@ -6,7 +6,6 @@ import android.content.Intent import android.os.Bundle abstract class BroadcastEventReceiver : BroadcastReceiver() { - final override fun onReceive(context: Context, intent: Intent) { val action = intent.action val extras = intent.extras @@ -16,5 +15,4 @@ abstract class BroadcastEventReceiver : BroadcastReceiver() { } protected abstract fun onEvent(context: Context, action: String, bundle: Bundle) - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/ICanStartActivity.kt b/src/main/java/ru/evotor/framework/core/ICanStartActivity.kt index aade01bb8..fc93e4510 100644 --- a/src/main/java/ru/evotor/framework/core/ICanStartActivity.kt +++ b/src/main/java/ru/evotor/framework/core/ICanStartActivity.kt @@ -10,6 +10,7 @@ import java.lang.ref.WeakReference */ interface ICanStartActivity { fun startActivity(intent: Intent) + fun startActivity(intent: Intent, options: Bundle?) } @@ -17,8 +18,8 @@ open class ActivityStarter( context: Context, private val isNewTask: Boolean = true ) : ICanStartActivity { - private val contextRef = WeakReference(context) + override fun startActivity(intent: Intent) { startActivity(intent, null) } diff --git a/src/main/java/ru/evotor/framework/core/IntegrationLibraryException.kt b/src/main/java/ru/evotor/framework/core/IntegrationLibraryException.kt index 7d4c9c3d0..c94ccdc5e 100644 --- a/src/main/java/ru/evotor/framework/core/IntegrationLibraryException.kt +++ b/src/main/java/ru/evotor/framework/core/IntegrationLibraryException.kt @@ -1,3 +1,3 @@ package ru.evotor.framework.core -internal abstract class IntegrationLibraryException(message: String) : RuntimeException(message) \ No newline at end of file +internal abstract class IntegrationLibraryException(message: String) : RuntimeException(message) diff --git a/src/main/java/ru/evotor/framework/core/IntegrationLibraryMappingException.kt b/src/main/java/ru/evotor/framework/core/IntegrationLibraryMappingException.kt index 6c8c0a9ac..227285657 100644 --- a/src/main/java/ru/evotor/framework/core/IntegrationLibraryMappingException.kt +++ b/src/main/java/ru/evotor/framework/core/IntegrationLibraryMappingException.kt @@ -9,6 +9,6 @@ private const val BASE_MESSAGE = "Found $CAUSE that is not supported in current * * Причиной возникновения, скорее всего, является устаревшая версия integration-library в стороннем приложении. * - * Если после обновления integration-library исключение не перестало возникать, свяжитесь с техподдержкой Эвотора. + * Если после обновления integration-library исключение не перестало возникать, свяжитесь с техподдержкой. */ -internal class IntegrationLibraryMappingException(cause: String) : IntegrationLibraryException(BASE_MESSAGE.replace(CAUSE, cause)) \ No newline at end of file +internal class IntegrationLibraryMappingException(cause: String) : IntegrationLibraryException(BASE_MESSAGE.replace(CAUSE, cause)) diff --git a/src/main/java/ru/evotor/framework/core/IntegrationLibraryParsingException.kt b/src/main/java/ru/evotor/framework/core/IntegrationLibraryParsingException.kt index 4d04cc3b5..cb57ec774 100644 --- a/src/main/java/ru/evotor/framework/core/IntegrationLibraryParsingException.kt +++ b/src/main/java/ru/evotor/framework/core/IntegrationLibraryParsingException.kt @@ -8,7 +8,7 @@ package ru.evotor.framework.core * * Если после обновления integration-library исключение не перестало возникать, сверьтесь с тех.документацией на сайте. */ -internal class IntegrationLibraryParsingException(clazz: Class<*>) - : IntegrationLibraryException( +internal class IntegrationLibraryParsingException(clazz: Class<*>) : + IntegrationLibraryException( "Field in $clazz is required and must not be null." - ) \ No newline at end of file + ) diff --git a/src/main/java/ru/evotor/framework/core/IntegrationManager.java b/src/main/java/ru/evotor/framework/core/IntegrationManager.java index 042ea4eda..a48f55413 100644 --- a/src/main/java/ru/evotor/framework/core/IntegrationManager.java +++ b/src/main/java/ru/evotor/framework/core/IntegrationManager.java @@ -5,10 +5,10 @@ import android.os.Bundle; import android.os.Handler; -import java.util.Map; - import ru.evotor.IBundlable; +import java.util.Map; + /** * Created by a.kuznetsov on 18/04/2017. */ @@ -47,4 +47,4 @@ public IntegrationManagerFuture call( IntegrationManagerCallback callback, Handler handler); -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/IntegrationManagerImpl.java b/src/main/java/ru/evotor/framework/core/IntegrationManagerImpl.java index 632e5c467..561fcceb5 100644 --- a/src/main/java/ru/evotor/framework/core/IntegrationManagerImpl.java +++ b/src/main/java/ru/evotor/framework/core/IntegrationManagerImpl.java @@ -13,20 +13,12 @@ import android.os.Looper; import android.os.OperationCanceledException; import android.os.RemoteException; -import android.util.ArrayMap; import android.util.Log; import android.util.Pair; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.Optional; -import java.util.Set; import java.util.concurrent.CancellationException; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; @@ -110,7 +102,6 @@ public IntegrationManagerFuture call( data, packageSpecificTimeouts ); - new Thread() { @Override public void run() { @@ -431,4 +422,4 @@ public void onServiceDisconnected(ComponentName name) { disconnected = true; } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/IntegrationService.java b/src/main/java/ru/evotor/framework/core/IntegrationService.java index 7db271bf1..7c88f783e 100644 --- a/src/main/java/ru/evotor/framework/core/IntegrationService.java +++ b/src/main/java/ru/evotor/framework/core/IntegrationService.java @@ -16,6 +16,7 @@ import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; +import ru.evotor.BundlesKt; import ru.evotor.framework.core.action.processor.ActionProcessor; /** @@ -28,10 +29,11 @@ public abstract class IntegrationService extends Service { private final IIntegrationManager.Stub binder = new IIntegrationManager.Stub() { @Override public void call(IIntegrationManagerResponse response, String action, Bundle bundle) throws RemoteException { + Bundle sanitized = BundlesKt.sanitizeInput(bundle); ActionProcessor processor = processors.get(action); if (processor != null) { try { - processor.process(action, response, bundle); + processor.process(action, response, sanitized); } catch (Exception e) { Log.e("IntegrationService", "Message: " + e.getMessage(), e); if ((!(e instanceof BadParcelableException)) diff --git a/src/main/java/ru/evotor/framework/core/RequiresIntentAction.kt b/src/main/java/ru/evotor/framework/core/RequiresIntentAction.kt index f2cededd7..88940462f 100644 --- a/src/main/java/ru/evotor/framework/core/RequiresIntentAction.kt +++ b/src/main/java/ru/evotor/framework/core/RequiresIntentAction.kt @@ -21,8 +21,8 @@ package ru.evotor.framework.core * */ internal annotation class RequiresIntentAction( - /** - * Действие - */ - val action: String + /** + * Действие + */ + val action: String ) diff --git a/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommand.kt index ceaf59d48..ccef3ada2 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommand.kt @@ -9,7 +9,6 @@ import ru.evotor.framework.core.ActivityStarter import ru.evotor.framework.core.IntegrationManagerCallback import ru.evotor.framework.core.IntegrationManagerImpl - /** * Команда закрытия смены платежного терминала * @param userUuid - Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI @@ -19,7 +18,6 @@ class CloseBankSessionCommand( val paymentSystemAccountId: Int? = null, val userUuid: String? = null ) : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { val componentNameList = IntegrationManagerImpl.convertImplicitIntentToExplicitIntent( NAME, @@ -77,7 +75,9 @@ class CloseBankSessionCommand( private fun getPaymentSystemAccountId(bundle: Bundle): Int? { return if (bundle.containsKey(KEY_ACCOUNT_ID)) { bundle.getInt(KEY_ACCOUNT_ID) - } else null + } else { + null + } } } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommandResult.kt b/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommandResult.kt index 458132806..8ee93ac97 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommandResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/close_bank_session/CloseBankSessionCommandResult.kt @@ -6,7 +6,6 @@ import ru.evotor.IBundlable class CloseBankSessionCommandResult( val slipLines: Array ) : IBundlable { - override fun toBundle(): Bundle { return Bundle().apply { putStringArray(KEY_SLIP_LINES, slipLines) @@ -14,7 +13,6 @@ class CloseBankSessionCommandResult( } companion object { - /** * ККМ в данный момент выполняет другую операцию */ diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java index 59dd4e2c0..ae521bbc0 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.command.open_receipt_command; + import android.app.Activity; import android.content.ComponentName; import android.os.Bundle; @@ -10,10 +11,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - import ru.evotor.IBundlable; import ru.evotor.framework.Utils; import ru.evotor.framework.core.IntegrationManagerCallback; @@ -24,6 +21,10 @@ import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + /** * Команда открытия чека покупки. */ diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java index e7a4b7bd1..2a99fe110 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.command.open_receipt_command; + import android.app.Activity; import android.content.ComponentName; import android.os.Bundle; diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt index f0b8a5e64..918be2f86 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt @@ -41,7 +41,6 @@ class OpenCorrectionIncomeReceiptCommand( val fiscalSignOfIncorrectReceipt: String? = null, val setPurchaserContactData: SetPurchaserContactData? = null ) : IBundlable { - companion object { const val NAME = "evo.v2.receipt.correction.income.openReceipt" private const val KEY_CHANGES = "changes" @@ -61,7 +60,8 @@ class OpenCorrectionIncomeReceiptCommand( it.getParcelableArray( KEY_CHANGES ) - ), PositionAdd::class.java + ), + PositionAdd::class.java ), extra = SetExtra.from(it.getBundle(KEY_RECEIPT_EXTRA)), correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt index 80fafdbf7..d6a439082 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt @@ -41,7 +41,6 @@ class OpenCorrectionOutcomeReceiptCommand( val fiscalSignOfIncorrectReceipt: String? = null, val setPurchaserContactData: SetPurchaserContactData? = null ) : IBundlable { - companion object { const val NAME = "evo.v2.receipt.correction.outcome.openReceipt" private const val KEY_CHANGES = "changes" @@ -61,7 +60,8 @@ class OpenCorrectionOutcomeReceiptCommand( it.getParcelableArray( KEY_CHANGES ) - ), PositionAdd::class.java + ), + PositionAdd::class.java ), extra = SetExtra.from(it.getBundle(KEY_RECEIPT_EXTRA)), correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt index ee4219315..49f7b649d 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt @@ -41,7 +41,6 @@ class OpenCorrectionReturnIncomeReceiptCommand( val fiscalSignOfIncorrectReceipt: String? = null, val setPurchaserContactData: SetPurchaserContactData? = null ) : IBundlable { - companion object { const val NAME = "evo.v2.receipt.correction.return.income.openReceipt" private const val KEY_CHANGES = "changes" @@ -61,7 +60,8 @@ class OpenCorrectionReturnIncomeReceiptCommand( it.getParcelableArray( KEY_CHANGES ) - ), PositionAdd::class.java + ), + PositionAdd::class.java ), extra = SetExtra.from(it.getBundle(KEY_RECEIPT_EXTRA)), correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt index 1905e609b..94e4212d6 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt @@ -41,7 +41,6 @@ class OpenCorrectionReturnOutcomeReceiptCommand( val fiscalSignOfIncorrectReceipt: String? = null, val setPurchaserContactData: SetPurchaserContactData? = null ) : IBundlable { - companion object { const val NAME = "evo.v2.receipt.correction.return.outcome.openReceipt" private const val KEY_CHANGES = "changes" @@ -61,7 +60,8 @@ class OpenCorrectionReturnOutcomeReceiptCommand( it.getParcelableArray( KEY_CHANGES ) - ), PositionAdd::class.java + ), + PositionAdd::class.java ), extra = SetExtra.from(it.getBundle(KEY_RECEIPT_EXTRA)), correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java index c104c8f0f..00c5002fb 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.command.open_receipt_command; + import android.app.Activity; import android.content.ComponentName; import android.os.Bundle; diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java index ca22005d2..e64b0198d 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.command.open_receipt_command; + import android.app.Activity; import android.content.ComponentName; import android.os.Bundle; @@ -10,10 +11,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - import ru.evotor.IBundlable; import ru.evotor.framework.Utils; import ru.evotor.framework.core.IntegrationManagerCallback; @@ -24,6 +21,10 @@ import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + /** * Команда открытия чека продажи. */ diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashIncomeCommandResult.kt b/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashIncomeCommandResult.kt index 9e320c8b5..415c7f9cc 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashIncomeCommandResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashIncomeCommandResult.kt @@ -8,7 +8,6 @@ class PrintCashIncomeCommandResult : IBundlable { Bundle() companion object { - /** * Поле "получатель" не может быть пустым */ diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashOutcomeCommandResult.kt b/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashOutcomeCommandResult.kt index 1468df6b9..8d9708fd4 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashOutcomeCommandResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_cash_command/PrintCashOutcomeCommandResult.kt @@ -7,7 +7,6 @@ class PrintCashOutcomeCommandResult : IBundlable { override fun toBundle(): Bundle = Bundle() companion object { - /** * Поле "получатель" не может быть пустым */ diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt index afc7e9e41..037eaba1b 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt @@ -23,14 +23,14 @@ import java.util.* * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI */ class PrintBuyReceiptCommand( - printReceipts: List, - extra: SetExtra?, - clientPhone: String?, - clientEmail: String?, - receiptDiscount: BigDecimal?, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null + printReceipts: List, + extra: SetExtra?, + clientPhone: String?, + clientEmail: String?, + receiptDiscount: BigDecimal?, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -40,8 +40,7 @@ class PrintBuyReceiptCommand( paymentAddress = paymentAddress, paymentPlace = paymentPlace, userUuid = userUuid -) { - + ) { /** * @param positions Список позиций * @param payments Список оплат @@ -51,40 +50,43 @@ class PrintBuyReceiptCommand( * @param paymentPlace Место расчёта */ constructor( - positions: List, - payments: List, - clientPhone: String?, - clientEmail: String?, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null) : this( - ArrayList().apply { - add(Receipt.PrintReceipt( - PrintGroup( - UUID.randomUUID().toString(), - PrintGroup.Type.CASH_RECEIPT, - null, - null, - null, - null, - clientEmail == null && clientPhone == null - ), - positions, - payments.associate { it to it.value }, - calculateChanges( - positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, - payments - ), - hashMapOf() - )) - }, - null, - clientPhone, - clientEmail, - BigDecimal.ZERO, - paymentAddress, - paymentPlace, - userUuid + positions: List, + payments: List, + clientPhone: String?, + clientEmail: String?, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null + ) : this( + ArrayList().apply { + add( + Receipt.PrintReceipt( + PrintGroup( + UUID.randomUUID().toString(), + PrintGroup.Type.CASH_RECEIPT, + null, + null, + null, + null, + clientEmail == null && clientPhone == null + ), + positions, + payments.associate { it to it.value }, + calculateChanges( + positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, + payments + ), + hashMapOf() + ) + ) + }, + null, + clientPhone, + clientEmail, + BigDecimal.ZERO, + paymentAddress, + paymentPlace, + userUuid ) fun process(context: Context, callback: IntegrationManagerCallback) { @@ -92,7 +94,6 @@ class PrintBuyReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.buy.printReceipt" fun create(bundle: Bundle?): PrintBuyReceiptCommand? { @@ -100,14 +101,14 @@ class PrintBuyReceiptCommand( return null } return PrintBuyReceiptCommand( - printReceipts = getPrintReceipts(bundle), - extra = getSetExtra(bundle), - clientPhone = getClientPhone(bundle), - clientEmail = getClientEmail(bundle), - receiptDiscount = getReceiptDiscount(bundle), - paymentAddress = getPaymentAddress(bundle), - paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + printReceipts = getPrintReceipts(bundle), + extra = getSetExtra(bundle), + clientPhone = getClientPhone(bundle), + clientEmail = getClientEmail(bundle), + receiptDiscount = getReceiptDiscount(bundle), + paymentAddress = getPaymentAddress(bundle), + paymentPlace = getPaymentPlace(bundle), + userUuid = getUserUuid(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt index 7fecfde4f..626816860 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt @@ -23,14 +23,14 @@ import java.util.* * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI */ class PrintBuybackReceiptCommand( - printReceipts: List, - extra: SetExtra?, - clientPhone: String?, - clientEmail: String?, - receiptDiscount: BigDecimal?, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null + printReceipts: List, + extra: SetExtra?, + clientPhone: String?, + clientEmail: String?, + receiptDiscount: BigDecimal?, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -40,8 +40,7 @@ class PrintBuybackReceiptCommand( paymentAddress = paymentAddress, paymentPlace = paymentPlace, userUuid = userUuid -) { - + ) { /** * @param positions Список позиций * @param payments Список оплат @@ -51,40 +50,43 @@ class PrintBuybackReceiptCommand( * @param paymentPlace Место расчёта */ constructor( - positions: List, - payments: List, - clientPhone: String?, - clientEmail: String?, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null) : this( - ArrayList().apply { - add(Receipt.PrintReceipt( - PrintGroup( - UUID.randomUUID().toString(), - PrintGroup.Type.CASH_RECEIPT, - null, - null, - null, - null, - clientEmail == null && clientPhone == null - ), - positions, - payments.associate { it to it.value }, - calculateChanges( - positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, - payments - ), - hashMapOf() - )) - }, - null, - clientPhone, - clientEmail, - BigDecimal.ZERO, - paymentAddress, - paymentPlace, - userUuid + positions: List, + payments: List, + clientPhone: String?, + clientEmail: String?, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null + ) : this( + ArrayList().apply { + add( + Receipt.PrintReceipt( + PrintGroup( + UUID.randomUUID().toString(), + PrintGroup.Type.CASH_RECEIPT, + null, + null, + null, + null, + clientEmail == null && clientPhone == null + ), + positions, + payments.associate { it to it.value }, + calculateChanges( + positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, + payments + ), + hashMapOf() + ) + ) + }, + null, + clientPhone, + clientEmail, + BigDecimal.ZERO, + paymentAddress, + paymentPlace, + userUuid ) fun process(context: Context, callback: IntegrationManagerCallback) { @@ -92,7 +94,6 @@ class PrintBuybackReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.buyback.printReceipt" fun create(bundle: Bundle?): PrintBuybackReceiptCommand? { @@ -100,14 +101,14 @@ class PrintBuybackReceiptCommand( return null } return PrintBuybackReceiptCommand( - printReceipts = getPrintReceipts(bundle), - extra = getSetExtra(bundle), - clientPhone = getClientPhone(bundle), - clientEmail = getClientEmail(bundle), - receiptDiscount = getReceiptDiscount(bundle), - paymentAddress = getPaymentAddress(bundle), - paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + printReceipts = getPrintReceipts(bundle), + extra = getSetExtra(bundle), + clientPhone = getClientPhone(bundle), + clientEmail = getClientEmail(bundle), + receiptDiscount = getReceiptDiscount(bundle), + paymentAddress = getPaymentAddress(bundle), + paymentPlace = getPaymentPlace(bundle), + userUuid = getUserUuid(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt index e39ac7956..db05c4a3d 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt @@ -48,9 +48,8 @@ class PrintCorrectionIncomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.PRESCRIPTION_NUMBER) val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) - val fiscalSignOfIncorrectReceipt: String? = null, + val fiscalSignOfIncorrectReceipt: String? = null ) : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl .convertImplicitIntentToExplicitIntent(NAME, context.applicationContext) @@ -93,7 +92,6 @@ class PrintCorrectionIncomeReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.correction.income.printReceipt" private const val KEY_PRINT_RECEIPTS = "printReceipts" diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt index ccc8d0be6..12523b01b 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt @@ -48,9 +48,8 @@ class PrintCorrectionOutcomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.PRESCRIPTION_NUMBER) val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) - val fiscalSignOfIncorrectReceipt: String? = null, + val fiscalSignOfIncorrectReceipt: String? = null ) : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl .convertImplicitIntentToExplicitIntent(NAME, context.applicationContext) @@ -93,7 +92,6 @@ class PrintCorrectionOutcomeReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.correction.outcome.printReceipt" private const val KEY_PRINT_RECEIPTS = "printReceipts" diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt index 23bcf0fd3..a2520cd65 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt @@ -50,7 +50,6 @@ class PrintCorrectionReturnIncomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) val fiscalSignOfIncorrectReceipt: String? = null ) : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl .convertImplicitIntentToExplicitIntent(NAME, context.applicationContext) @@ -93,7 +92,6 @@ class PrintCorrectionReturnIncomeReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.correction.return.income.printReceipt" private const val KEY_PRINT_RECEIPTS = "printReceipts" diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt index 73cba7cb1..695570e50 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt @@ -50,7 +50,6 @@ class PrintCorrectionReturnOutcomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) val fiscalSignOfIncorrectReceipt: String? = null ) : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl .convertImplicitIntentToExplicitIntent(NAME, context.applicationContext) @@ -93,7 +92,6 @@ class PrintCorrectionReturnOutcomeReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.correction.return.outcome.printReceipt" private const val KEY_PRINT_RECEIPTS = "printReceipts" diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt index 0865e15cc..cd7c4140a 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.Receipt import java.math.BigDecimal import java.util.* - /** * Команда печати чека возврата. * @param printReceipts Список чеков для печати. @@ -24,15 +23,15 @@ import java.util.* * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI */ class PrintPaybackReceiptCommand( - printReceipts: List, - extra: SetExtra?, - clientPhone: String?, - clientEmail: String?, - receiptDiscount: BigDecimal?, - val sellReceiptUuid: String? = null, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null + printReceipts: List, + extra: SetExtra?, + clientPhone: String?, + clientEmail: String?, + receiptDiscount: BigDecimal?, + val sellReceiptUuid: String? = null, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -42,8 +41,7 @@ class PrintPaybackReceiptCommand( paymentAddress = paymentAddress, paymentPlace = paymentPlace, userUuid = userUuid -) { - + ) { /** * @param positions Список позиций * @param payments Список оплат @@ -54,42 +52,45 @@ class PrintPaybackReceiptCommand( * @param paymentPlace Место расчёта */ constructor( - positions: List, - payments: List, - clientPhone: String?, - clientEmail: String?, - sellReceiptUuid: String? = null, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null) : this( - ArrayList().apply { - add(Receipt.PrintReceipt( - PrintGroup( - UUID.randomUUID().toString(), - PrintGroup.Type.CASH_RECEIPT, - null, - null, - null, - null, - clientEmail == null && clientPhone == null - ), - positions, - payments.associate { it to it.value }, - calculateChanges( - positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, - payments - ), - hashMapOf() - )) - }, - null, - clientPhone, - clientEmail, - BigDecimal.ZERO, - sellReceiptUuid, - paymentAddress, - paymentPlace, - userUuid + positions: List, + payments: List, + clientPhone: String?, + clientEmail: String?, + sellReceiptUuid: String? = null, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null + ) : this( + ArrayList().apply { + add( + Receipt.PrintReceipt( + PrintGroup( + UUID.randomUUID().toString(), + PrintGroup.Type.CASH_RECEIPT, + null, + null, + null, + null, + clientEmail == null && clientPhone == null + ), + positions, + payments.associate { it to it.value }, + calculateChanges( + positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, + payments + ), + hashMapOf() + ) + ) + }, + null, + clientPhone, + clientEmail, + BigDecimal.ZERO, + sellReceiptUuid, + paymentAddress, + paymentPlace, + userUuid ) fun process(context: Context, callback: IntegrationManagerCallback) { @@ -101,7 +102,6 @@ class PrintPaybackReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.payback.printReceipt" private const val KEY_SELL_RECEIPT_UUID = "SELL_RECEIPT_UUID" @@ -111,15 +111,15 @@ class PrintPaybackReceiptCommand( return null } return PrintPaybackReceiptCommand( - printReceipts = getPrintReceipts(bundle), - extra = getSetExtra(bundle), - clientPhone = getClientPhone(bundle), - clientEmail = getClientEmail(bundle), - receiptDiscount = getReceiptDiscount(bundle), - sellReceiptUuid = bundle.getString(KEY_SELL_RECEIPT_UUID), - paymentAddress = getPaymentAddress(bundle), - paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + printReceipts = getPrintReceipts(bundle), + extra = getSetExtra(bundle), + clientPhone = getClientPhone(bundle), + clientEmail = getClientEmail(bundle), + receiptDiscount = getReceiptDiscount(bundle), + sellReceiptUuid = bundle.getString(KEY_SELL_RECEIPT_UUID), + paymentAddress = getPaymentAddress(bundle), + paymentPlace = getPaymentPlace(bundle), + userUuid = getUserUuid(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt index 6511757d3..dc8547c98 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt @@ -30,29 +30,29 @@ import java.util.* * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI */ abstract class PrintReceiptCommand( - val printReceipts: List, - val extra: SetExtra?, - val clientPhone: String?, - val clientEmail: String?, - val receiptDiscount: BigDecimal?, - val paymentAddress: String?, - val paymentPlace: String?, - val userUuid: String? + val printReceipts: List, + val extra: SetExtra?, + val clientPhone: String?, + val clientEmail: String?, + val receiptDiscount: BigDecimal?, + val paymentAddress: String?, + val paymentPlace: String?, + val userUuid: String? ) : IBundlable { - internal fun process(context: Context, callback: IntegrationManagerCallback, action: String) { val componentNameList = IntegrationManagerImpl.convertImplicitIntentToExplicitIntent(action, context.applicationContext) if (componentNameList == null || componentNameList.isEmpty()) { return } IntegrationManagerImpl(context.applicationContext) - .call(action, - componentNameList[0], - this, - ActivityStarter(context), - callback, - Handler(Looper.getMainLooper()) - ) + .call( + action, + componentNameList[0], + this, + ActivityStarter(context), + callback, + Handler(Looper.getMainLooper()) + ) } override fun toBundle(): Bundle { @@ -61,8 +61,11 @@ abstract class PrintReceiptCommand( bundle.putBundle(KEY_RECEIPT_EXTRA, extra?.toBundle()) bundle.putString(KEY_CLIENT_EMAIL, clientEmail) bundle.putString(KEY_CLIENT_PHONE, clientPhone) - bundle.putString(KEY_RECEIPT_DISCOUNT, receiptDiscount?.toPlainString() - ?: BigDecimal.ZERO.toPlainString()) + bundle.putString( + KEY_RECEIPT_DISCOUNT, + receiptDiscount?.toPlainString() + ?: BigDecimal.ZERO.toPlainString() + ) bundle.putString(KEY_PAYMENT_ADDRESS, paymentAddress) bundle.putString(KEY_PAYMENT_PLACE, paymentPlace) bundle.putString(KEY_USER_UUID, userUuid) @@ -70,7 +73,6 @@ abstract class PrintReceiptCommand( } companion object { - /** * Разрешение для отправки чеков по СМС или электронной почте. * @@ -89,8 +91,8 @@ abstract class PrintReceiptCommand( internal fun getPrintReceipts(bundle: Bundle): List { return bundle.getParcelableArrayList(KEY_PRINT_RECEIPTS) - ?.mapNotNull { PrintReceiptMapper.from(it) } - ?: emptyList() + ?.mapNotNull { PrintReceiptMapper.from(it) } + ?: emptyList() } internal fun getSetExtra(bundle: Bundle): SetExtra? { diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorData.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorData.kt index fb1be734c..643019a87 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorData.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorData.kt @@ -1,6 +1,5 @@ package ru.evotor.framework.core.action.command.print_receipt_command - sealed class PrintReceiptCommandErrorData { class KktError(val kktErrorCode: Int?, val kktErrorDescription: String?) : PrintReceiptCommandErrorData() -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorDataFactory.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorDataFactory.kt index 61dfc3ef3..128f3cb72 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorDataFactory.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandErrorDataFactory.kt @@ -1,8 +1,6 @@ package ru.evotor.framework.core.action.command.print_receipt_command import android.os.Bundle -import ru.evotor.framework.core.Error - object PrintReceiptCommandErrorDataFactory { private const val KEY_EXT_TYPE = "EXT_TYPE" @@ -28,8 +26,8 @@ object PrintReceiptCommandErrorDataFactory { fun create(data: Bundle): PrintReceiptCommandErrorData.KktError { return PrintReceiptCommandErrorData.KktError( - kktErrorCode = data.optInt(KEY_KKT_ERROR_CODE), - kktErrorDescription = data.getString(KEY_KKT_ERROR_DESCRIPTION, null) + kktErrorCode = data.optInt(KEY_KKT_ERROR_CODE), + kktErrorDescription = data.getString(KEY_KKT_ERROR_DESCRIPTION, null) ) } @@ -49,4 +47,4 @@ object PrintReceiptCommandErrorDataFactory { } } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt index eae796374..7846b10b3 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.Receipt import java.math.BigDecimal import java.util.* - /** * Команда печати чека продажи. * @param printReceipts Список чеков для печати. @@ -24,14 +23,14 @@ import java.util.* * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI */ class PrintSellReceiptCommand( - printReceipts: List, - extra: SetExtra?, - clientPhone: String?, - clientEmail: String?, - receiptDiscount: BigDecimal?, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null + printReceipts: List, + extra: SetExtra?, + clientPhone: String?, + clientEmail: String?, + receiptDiscount: BigDecimal?, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -41,8 +40,7 @@ class PrintSellReceiptCommand( paymentAddress = paymentAddress, paymentPlace = paymentPlace, userUuid = userUuid -) { - + ) { /** * @param positions Список позиций * @param payments Список оплат @@ -52,41 +50,43 @@ class PrintSellReceiptCommand( * @param paymentPlace Место расчёта */ constructor( - positions: List, - payments: List, - clientPhone: String?, - clientEmail: String?, - paymentAddress: String? = null, - paymentPlace: String? = null, - userUuid: String? = null + positions: List, + payments: List, + clientPhone: String?, + clientEmail: String?, + paymentAddress: String? = null, + paymentPlace: String? = null, + userUuid: String? = null ) : this( - ArrayList().apply { - add(Receipt.PrintReceipt( - PrintGroup( - UUID.randomUUID().toString(), - PrintGroup.Type.CASH_RECEIPT, - null, - null, - null, - null, - clientEmail == null && clientPhone == null - ), - positions, - payments.associate { it to it.value }, - calculateChanges( - positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, - payments - ), - hashMapOf() - )) - }, - null, - clientPhone, - clientEmail, - BigDecimal.ZERO, - paymentAddress, - paymentPlace, - userUuid + ArrayList().apply { + add( + Receipt.PrintReceipt( + PrintGroup( + UUID.randomUUID().toString(), + PrintGroup.Type.CASH_RECEIPT, + null, + null, + null, + null, + clientEmail == null && clientPhone == null + ), + positions, + payments.associate { it to it.value }, + calculateChanges( + positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, + payments + ), + hashMapOf() + ) + ) + }, + null, + clientPhone, + clientEmail, + BigDecimal.ZERO, + paymentAddress, + paymentPlace, + userUuid ) fun process(context: Context, callback: IntegrationManagerCallback) { @@ -94,7 +94,6 @@ class PrintSellReceiptCommand( } companion object { - const val NAME = "evo.v2.receipt.sell.printReceipt" fun create(bundle: Bundle?): PrintSellReceiptCommand? { @@ -102,14 +101,14 @@ class PrintSellReceiptCommand( return null } return PrintSellReceiptCommand( - printReceipts = getPrintReceipts(bundle), - extra = getSetExtra(bundle), - clientPhone = getClientPhone(bundle), - clientEmail = getClientEmail(bundle), - receiptDiscount = getReceiptDiscount(bundle), - paymentAddress = getPaymentAddress(bundle), - paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + printReceipts = getPrintReceipts(bundle), + extra = getSetExtra(bundle), + clientPhone = getClientPhone(bundle), + clientEmail = getClientEmail(bundle), + receiptDiscount = getReceiptDiscount(bundle), + paymentAddress = getPaymentAddress(bundle), + paymentPlace = getPaymentPlace(bundle), + userUuid = getUserUuid(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommand.kt index 84b221880..e59551e96 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommand.kt @@ -16,7 +16,6 @@ import ru.evotor.framework.core.IntegrationManagerImpl class PrintSessionOpeningReportCommand( val userUuid: String? = null ) : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { val componentNameList = IntegrationManagerImpl.convertImplicitIntentToExplicitIntent( NAME, diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommandResult.kt b/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommandResult.kt index 6bfa7497c..763e9f13f 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommandResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_session_opening_report_command/PrintSessionOpeningReportCommandResult.kt @@ -6,7 +6,6 @@ import ru.evotor.IBundlable class PrintSessionOpeningReportCommandResult( val notPrinted: Boolean = false ) : IBundlable { - override fun toBundle(): Bundle { return Bundle().also { it.putBoolean(KEY_NOT_PRINTED, notPrinted) diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommand.kt index 36f2378e9..e98b21693 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommand.kt @@ -10,7 +10,6 @@ import ru.evotor.framework.core.IntegrationManagerCallback import ru.evotor.framework.core.IntegrationManagerImpl class PrintUnprintedDocumentCommand : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { val componentNameList = IntegrationManagerImpl.convertImplicitIntentToExplicitIntent( NAME, @@ -35,7 +34,6 @@ class PrintUnprintedDocumentCommand : IBundlable { } companion object { - const val NAME = "evo.v2.unprinted_document.print" @JvmStatic diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommandResult.kt b/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommandResult.kt index c04f7511d..2525d4ad7 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommandResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_unprinted_document/PrintUnprintedDocumentCommandResult.kt @@ -3,14 +3,12 @@ package ru.evotor.framework.core.action.command.print_unprinted_document import android.os.Bundle import ru.evotor.IBundlable -class PrintUnprintedDocumentCommandResult: IBundlable { - +class PrintUnprintedDocumentCommandResult : IBundlable { override fun toBundle(): Bundle { return Bundle() } companion object { - /** * ККМ в данный момент выполняет другую операцию */ diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommand.kt index 7b3ab47f9..ba3b582cc 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommand.kt @@ -16,7 +16,6 @@ import ru.evotor.framework.core.IntegrationManagerImpl class PrintZReportCommand( val userUuid: String? = null ) : IBundlable { - fun process(context: Context, callback: IntegrationManagerCallback) { val componentNameList = IntegrationManagerImpl.convertImplicitIntentToExplicitIntent( NAME, diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorData.kt b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorData.kt index 75d430a47..88754e54f 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorData.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorData.kt @@ -1,6 +1,5 @@ package ru.evotor.framework.core.action.command.print_z_report_command - sealed class PrintZReportCommandErrorData { class KktError(val kktErrorCode: Int?, val kktErrorDescription: String?) : PrintZReportCommandErrorData() -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorDataFactory.kt b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorDataFactory.kt index a4f8a1c1c..46f629298 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorDataFactory.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandErrorDataFactory.kt @@ -1,8 +1,6 @@ package ru.evotor.framework.core.action.command.print_z_report_command import android.os.Bundle -import ru.evotor.framework.core.Error - object PrintZReportCommandErrorDataFactory { private const val KEY_EXT_TYPE = "EXT_TYPE" @@ -28,8 +26,8 @@ object PrintZReportCommandErrorDataFactory { fun create(data: Bundle): PrintZReportCommandErrorData.KktError { return PrintZReportCommandErrorData.KktError( - kktErrorCode = data.optInt(KEY_KKT_ERROR_CODE), - kktErrorDescription = data.getString(KEY_KKT_ERROR_DESCRIPTION, null) + kktErrorCode = data.optInt(KEY_KKT_ERROR_CODE), + kktErrorDescription = data.getString(KEY_KKT_ERROR_DESCRIPTION, null) ) } @@ -49,4 +47,4 @@ object PrintZReportCommandErrorDataFactory { } } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandResult.kt b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandResult.kt index 6406c6268..86966ffe4 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_z_report_command/PrintZReportCommandResult.kt @@ -7,7 +7,6 @@ import ru.evotor.IBundlable class PrintZReportCommandResult( val notPrinted: Boolean = false ) : IBundlable { - override fun toBundle(): Bundle { return Bundle().also { it.putBoolean(KEY_NOT_PRINTED, notPrinted) @@ -15,7 +14,6 @@ class PrintZReportCommandResult( } companion object { - private const val KEY_NOT_PRINTED = "notPrinted" /** @@ -53,7 +51,6 @@ class PrintZReportCommandResult( */ const val ERROR_CODE_PREVIOUS_DOCUMENT_NOT_PRINTED = -7 - @JvmStatic fun create(bundle: Bundle?): PrintZReportCommandResult? { return bundle?.let { diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt index 2eeffb8b5..611ad3b5f 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt @@ -69,7 +69,6 @@ object ChangesMapper { } private fun fromBundle(typeName: String, bundle: Bundle): IChange? { - return when (Utils.safeValueOf(IChange.Type::class.java, typeName, null)) { IChange.Type.POSITION_REMOVE -> PositionRemove.from(bundle) IChange.Type.POSITION_ADD -> PositionAdd.from(bundle) @@ -82,5 +81,4 @@ object ChangesMapper { null, IChange.Type.UNKNOWN -> UnknownChange.from(typeName, bundle) } } - } diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/IntegrationComponentMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/IntegrationComponentMapper.kt index f90c72ba4..79ac9cc4a 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/IntegrationComponentMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/IntegrationComponentMapper.kt @@ -10,22 +10,22 @@ object IntegrationComponentMapper { private const val KEY_APP_NAME = "appName" fun toBundle(integrationComponent: IntegrationComponent): Bundle = - Bundle().apply { - putString(KEY_PACKAGE_NAME, integrationComponent.packageName) - putString(KEY_COMPONENT_NAME, integrationComponent.componentName) - putString(KEY_APP_UUID, integrationComponent.appUuid) - putString(KEY_APP_NAME, integrationComponent.appName) - } + Bundle().apply { + putString(KEY_PACKAGE_NAME, integrationComponent.packageName) + putString(KEY_COMPONENT_NAME, integrationComponent.componentName) + putString(KEY_APP_UUID, integrationComponent.appUuid) + putString(KEY_APP_NAME, integrationComponent.appName) + } fun fromBundle(bundle: Bundle?): IntegrationComponent? = - bundle?.let { - IntegrationComponent( - bundle.getString(KEY_PACKAGE_NAME), - bundle.getString(KEY_COMPONENT_NAME), - bundle.getString(KEY_APP_UUID), - bundle.getString(KEY_APP_NAME) - ) - } + bundle?.let { + IntegrationComponent( + bundle.getString(KEY_PACKAGE_NAME), + bundle.getString(KEY_COMPONENT_NAME), + bundle.getString(KEY_APP_UUID), + bundle.getString(KEY_APP_NAME) + ) + } fun readPackageName(bundle: Bundle?) = bundle?.getString(KEY_PACKAGE_NAME) @@ -34,4 +34,4 @@ object IntegrationComponentMapper { fun readAppUuid(bundle: Bundle?) = bundle?.getString(KEY_APP_UUID) fun readAppName(bundle: Bundle?) = bundle?.getString(KEY_APP_NAME) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/MarkMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/MarkMapper.kt index 1880a525e..a4e3ba3c3 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/MarkMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/MarkMapper.kt @@ -4,14 +4,13 @@ import android.os.Bundle import ru.evotor.framework.receipt.position.Mark object MarkMapper { - private const val KEY_MARK_ENTITY = "markEntity" @JvmStatic fun toBundle(mark: Mark?): Bundle = - Bundle().apply { - putParcelable(KEY_MARK_ENTITY, mark) - } + Bundle().apply { + putParcelable(KEY_MARK_ENTITY, mark) + } @JvmStatic fun fromBundle(bundle: Bundle?): Mark? { @@ -20,4 +19,4 @@ object MarkMapper { it.getParcelable(KEY_MARK_ENTITY) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentDelegatorMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentDelegatorMapper.kt index d948983dc..3889bcf74 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentDelegatorMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentDelegatorMapper.kt @@ -5,15 +5,15 @@ import ru.evotor.framework.component.PaymentDelegator object PaymentDelegatorMapper { fun fromBundle(bundle: Bundle?) = - bundle?.let { - PaymentDelegator( - IntegrationComponentMapper.readPackageName(bundle), - IntegrationComponentMapper.readComponentName(bundle), - IntegrationComponentMapper.readAppUuid(bundle), - IntegrationComponentMapper.readAppName(bundle) - ) - } + bundle?.let { + PaymentDelegator( + IntegrationComponentMapper.readPackageName(bundle), + IntegrationComponentMapper.readComponentName(bundle), + IntegrationComponentMapper.readAppUuid(bundle), + IntegrationComponentMapper.readAppName(bundle) + ) + } fun toBundle(paymentDelegator: PaymentDelegator) = - IntegrationComponentMapper.toBundle(paymentDelegator) -} \ No newline at end of file + IntegrationComponentMapper.toBundle(paymentDelegator) +} diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentPerformerMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentPerformerMapper.kt index ff8c0dfee..2f309bfc3 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentPerformerMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PaymentPerformerMapper.kt @@ -7,18 +7,18 @@ object PaymentPerformerMapper { private const val KEY_PAYMENT_SYSTEM = "paymentSystem" fun toBundle(paymentPerformer: PaymentPerformer): Bundle = - IntegrationComponentMapper.toBundle(paymentPerformer).apply { - putBundle(KEY_PAYMENT_SYSTEM, PaymentSystemMapper.toBundle(paymentPerformer.paymentSystem)) - } + IntegrationComponentMapper.toBundle(paymentPerformer).apply { + putBundle(KEY_PAYMENT_SYSTEM, PaymentSystemMapper.toBundle(paymentPerformer.paymentSystem)) + } fun fromBundle(bundle: Bundle?): PaymentPerformer? = - bundle?.let { - PaymentPerformer( - PaymentSystemMapper.from(bundle.getBundle(KEY_PAYMENT_SYSTEM)), - IntegrationComponentMapper.readPackageName(bundle), - IntegrationComponentMapper.readComponentName(bundle), - IntegrationComponentMapper.readAppUuid(bundle), - IntegrationComponentMapper.readAppName(bundle) - ) - } -} \ No newline at end of file + bundle?.let { + PaymentPerformer( + PaymentSystemMapper.from(bundle.getBundle(KEY_PAYMENT_SYSTEM)), + IntegrationComponentMapper.readPackageName(bundle), + IntegrationComponentMapper.readComponentName(bundle), + IntegrationComponentMapper.readAppUuid(bundle), + IntegrationComponentMapper.readAppName(bundle) + ) + } +} diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionAttributesMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionAttributesMapper.kt index a3583de2d..3de9a907f 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionAttributesMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionAttributesMapper.kt @@ -3,9 +3,7 @@ package ru.evotor.framework.core.action.datamapper import android.os.Bundle import ru.evotor.framework.inventory.AttributeValue - object PositionAttributesMapper { - @JvmStatic fun fromBundle(attributes: Bundle?): Map? { attributes?.let { bundle -> @@ -21,7 +19,6 @@ object PositionAttributesMapper { } ?: return null } - @JvmStatic fun toBundle(attributes: Map?): Bundle? { attributes?.let { @@ -32,5 +29,4 @@ object PositionAttributesMapper { } } ?: return null } - } diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt index 1a3beb099..80d7ceffc 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt @@ -5,22 +5,20 @@ import ru.evotor.framework.Utils import ru.evotor.framework.receipt.print_extras.* object PrintExtraPlaceMapper { - private const val KEY_TYPE = "type" fun toBundle(printExtraPlace: PrintExtraPlace): Bundle = - Bundle().let { - it.putString(KEY_TYPE, printExtraPlace.placeType.name) - when (printExtraPlace) { - is PrintExtraPlacePrintGroupTop -> PrintExtraPlacePrintGroupTop.addToBundle(it, printExtraPlace) - is PrintExtraPlacePrintGroupHeader -> PrintExtraPlacePrintGroupHeader.addToBundle(it, printExtraPlace) - is PrintExtraPlacePrintGroupSummary -> PrintExtraPlacePrintGroupSummary.addToBundle(it, printExtraPlace) - is PrintExtraPlacePositionFooter -> PrintExtraPlacePositionFooter.addToBundle(it, printExtraPlace) - is PrintExtraPlacePositionAllSubpositionsFooter -> PrintExtraPlacePositionAllSubpositionsFooter.addToBundle(it, printExtraPlace) - } - it + Bundle().let { + it.putString(KEY_TYPE, printExtraPlace.placeType.name) + when (printExtraPlace) { + is PrintExtraPlacePrintGroupTop -> PrintExtraPlacePrintGroupTop.addToBundle(it, printExtraPlace) + is PrintExtraPlacePrintGroupHeader -> PrintExtraPlacePrintGroupHeader.addToBundle(it, printExtraPlace) + is PrintExtraPlacePrintGroupSummary -> PrintExtraPlacePrintGroupSummary.addToBundle(it, printExtraPlace) + is PrintExtraPlacePositionFooter -> PrintExtraPlacePositionFooter.addToBundle(it, printExtraPlace) + is PrintExtraPlacePositionAllSubpositionsFooter -> PrintExtraPlacePositionAllSubpositionsFooter.addToBundle(it, printExtraPlace) } - + it + } fun fromBundle(bundle: Bundle?): PrintExtraPlace? { if (bundle == null) return null @@ -33,4 +31,4 @@ object PrintExtraPlaceMapper { else -> null } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt index 66f576449..daaf83a61 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt @@ -11,49 +11,47 @@ import ru.evotor.devices.commons.printer.printable.PrintableText import ru.evotor.framework.Utils import java.io.ByteArrayOutputStream - object PrintablesMapper { - private const val KEY_PRINTABLE_TYPE = "printableType" private const val KEY_PRINTABLE_ARRAY = "printablesArray" private const val KEY_PRINTABL_TEXT = "printableText" private const val KEY_PRINTABL_BARCODE_TYPE = "printableBarcodeType" private const val KEY_PRINTABL_IMAGE = "printableImage" - fun toBundle(printables: Array): Bundle = - Bundle().apply { - val printablesParcelable = arrayOfNulls(printables.size) - printables.indices.forEach { - printablesParcelable[it] = toBundle(printables.get(it)) - } - putParcelableArray(KEY_PRINTABLE_ARRAY, printablesParcelable) + Bundle().apply { + val printablesParcelable = arrayOfNulls(printables.size) + printables.indices.forEach { + printablesParcelable[it] = toBundle(printables.get(it)) } + putParcelableArray(KEY_PRINTABLE_ARRAY, printablesParcelable) + } private fun toBundle(printable: IPrintable): Bundle = - Bundle().let { - when (printable) { - is PrintableText -> { - it.putString(KEY_PRINTABLE_TYPE, PrintableType.TEXT.name) - it.putString(KEY_PRINTABL_TEXT, printable.text) - } - is PrintableBarcode -> { - it.putString(KEY_PRINTABLE_TYPE, PrintableType.BARCODE.name) - it.putString(KEY_PRINTABL_TEXT, printable.barcodeValue) - it.putString(KEY_PRINTABL_BARCODE_TYPE, printable.barcodeType.name) - } - is PrintableImage -> { - it.putString(KEY_PRINTABLE_TYPE, PrintableType.IMAGE.name) - it.putByteArray(KEY_PRINTABL_IMAGE, - ByteArrayOutputStream().let { - printable.bitmap.compress(Bitmap.CompressFormat.PNG, 100, it) - it.toByteArray() - } - ) - } + Bundle().let { + when (printable) { + is PrintableText -> { + it.putString(KEY_PRINTABLE_TYPE, PrintableType.TEXT.name) + it.putString(KEY_PRINTABL_TEXT, printable.text) + } + is PrintableBarcode -> { + it.putString(KEY_PRINTABLE_TYPE, PrintableType.BARCODE.name) + it.putString(KEY_PRINTABL_TEXT, printable.barcodeValue) + it.putString(KEY_PRINTABL_BARCODE_TYPE, printable.barcodeType.name) + } + is PrintableImage -> { + it.putString(KEY_PRINTABLE_TYPE, PrintableType.IMAGE.name) + it.putByteArray( + KEY_PRINTABL_IMAGE, + ByteArrayOutputStream().let { + printable.bitmap.compress(Bitmap.CompressFormat.PNG, 100, it) + it.toByteArray() + } + ) } - it } + it + } fun fromBundle(bundle: Bundle?): Array? { if (bundle == null) return null @@ -69,26 +67,27 @@ object PrintablesMapper { } } - private fun singleFromBundle(bundle: Bundle): IPrintable? = - when (Utils.safeValueOf(PrintableType::class.java, bundle.getString(KEY_PRINTABLE_TYPE), null)) { - PrintableType.TEXT -> PrintableText( - bundle.getString(KEY_PRINTABL_TEXT) - ) - PrintableType.BARCODE -> PrintableBarcode( - bundle.getString(KEY_PRINTABL_TEXT), - Utils.safeValueOf(PrintableBarcode.BarcodeType::class.java, bundle.getString(KEY_PRINTABL_BARCODE_TYPE), PrintableBarcode.BarcodeType.CODE39) - ) - PrintableType.IMAGE -> - bundle.getByteArray(KEY_PRINTABL_IMAGE).let { - PrintableImage( - BitmapFactory.decodeByteArray(it, 0, it?.size ?: 0) - ) - } - null -> null - } + when (Utils.safeValueOf(PrintableType::class.java, bundle.getString(KEY_PRINTABLE_TYPE), null)) { + PrintableType.TEXT -> PrintableText( + bundle.getString(KEY_PRINTABL_TEXT) + ) + PrintableType.BARCODE -> PrintableBarcode( + bundle.getString(KEY_PRINTABL_TEXT), + Utils.safeValueOf(PrintableBarcode.BarcodeType::class.java, bundle.getString(KEY_PRINTABL_BARCODE_TYPE), PrintableBarcode.BarcodeType.CODE39) + ) + PrintableType.IMAGE -> + bundle.getByteArray(KEY_PRINTABL_IMAGE).let { + PrintableImage( + BitmapFactory.decodeByteArray(it, 0, it?.size ?: 0) + ) + } + null -> null + } enum class PrintableType { - TEXT, BARCODE, IMAGE + TEXT, + BARCODE, + IMAGE } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/SettlementMethodMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/SettlementMethodMapper.kt index ba2779ce9..e88dc693a 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/SettlementMethodMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/SettlementMethodMapper.kt @@ -4,14 +4,13 @@ import android.os.Bundle import ru.evotor.framework.receipt.position.SettlementMethod object SettlementMethodMapper { - private const val KEY_SETTLEMENT_METHOD = "settlementMethod" @JvmStatic fun toBundle(settlementMethod: SettlementMethod): Bundle = - Bundle().apply { - putParcelable(KEY_SETTLEMENT_METHOD, settlementMethod) - } + Bundle().apply { + putParcelable(KEY_SETTLEMENT_METHOD, settlementMethod) + } @JvmStatic fun fromBundle(bundle: Bundle?): SettlementMethod { diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/TaxMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/TaxMapper.java index cda26fff0..c03424b8d 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/TaxMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/TaxMapper.java @@ -2,14 +2,15 @@ import android.os.Bundle; -import java.math.BigDecimal; - import androidx.annotation.Nullable; + import ru.evotor.framework.BundleUtils; import ru.evotor.framework.Utils; import ru.evotor.framework.receipt.Tax; import ru.evotor.framework.receipt.TaxNumber; +import java.math.BigDecimal; + public final class TaxMapper { private static final String KEY_TAX_NUMBER = "taxNumber"; diff --git a/src/main/java/ru/evotor/framework/core/action/event/cash_drawer/CashDrawerOpenEvent.java b/src/main/java/ru/evotor/framework/core/action/event/cash_drawer/CashDrawerOpenEvent.java index 655e2c972..cb5a1a793 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/cash_drawer/CashDrawerOpenEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/cash_drawer/CashDrawerOpenEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.cash_drawer; + import android.os.Bundle; import androidx.annotation.NonNull; @@ -27,4 +28,4 @@ public static CashDrawerOpenEvent create(@Nullable Bundle bundle) { } return new CashDrawerOpenEvent(bundle); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashInEvent.java b/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashInEvent.java index 52d3f5282..e0d866729 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashInEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashInEvent.java @@ -1,13 +1,15 @@ package ru.evotor.framework.core.action.event.cash_operations; -import android.os.Bundle; -import java.math.BigDecimal; +import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import ru.evotor.framework.BundleUtils; +import java.math.BigDecimal; + /** * @deprecated Используйте {@link ru.evotor.framework.kkt.event.CashInsertedEvent} */ @@ -58,4 +60,4 @@ public Bundle toBundle() { bundle.putString(KEY_TOTAL, total.toPlainString()); return bundle; } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashOutEvent.java b/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashOutEvent.java index b0ad91b87..6626ffda9 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashOutEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/cash_operations/CashOutEvent.java @@ -1,13 +1,15 @@ package ru.evotor.framework.core.action.event.cash_operations; -import android.os.Bundle; -import java.math.BigDecimal; +import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import ru.evotor.framework.BundleUtils; +import java.math.BigDecimal; + /** * @deprecated Используйте {@link ru.evotor.framework.kkt.event.CashWithdrawnEvent} */ @@ -58,4 +60,4 @@ public Bundle toBundle() { public BigDecimal getTotal() { return total; } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/inventory/ProductCardOpenedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/inventory/ProductCardOpenedEvent.java index c037d7b09..fb8d2b905 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/inventory/ProductCardOpenedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/inventory/ProductCardOpenedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.inventory; + import android.os.Bundle; import androidx.annotation.Nullable; @@ -22,4 +23,4 @@ public static ProductCardOpenedEvent create(@Nullable Bundle bundle) { } return new ProductCardOpenedEvent(getProductUuid(bundle)); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEvent.java index 81b7bd49f..d0936ae48 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.before_positions_edited; + import android.os.Bundle; import android.os.Parcelable; diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt index 97f22b51e..5062b0769 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt @@ -16,20 +16,24 @@ interface IChange : IBundlable { * Добавление позиции в чек. */ POSITION_ADD, + /** * Удаление позиции из чека. */ POSITION_REMOVE, + /** * Изменение позиции чека. */ POSITION_EDIT, + /** * Запись дополнительных полей в чек. */ SET_EXTRA, SET_POSITION_PRINT_GROUP, SET_PAYMENT_PURPOSE_PRINT_GROUP, + /** * Добавление дополнительных полей для печати в чеке. */ diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/UnknownChange.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/UnknownChange.kt index 5b9427818..45b073544 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/UnknownChange.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/UnknownChange.kt @@ -7,7 +7,6 @@ import android.os.Bundle */ class UnknownChange(val typeName: String, val bundle: Bundle) : IChange { - override fun getType(): IChange.Type { return IChange.Type.UNKNOWN } @@ -23,11 +22,9 @@ class UnknownChange(val typeName: String, val bundle: Bundle) : IChange { bundle ?: return null return UnknownChange( - typeName, - bundle + typeName, + bundle ) } } - - } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/IPositionChange.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/IPositionChange.kt index 691547e7c..3dab8d61d 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/IPositionChange.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/IPositionChange.kt @@ -10,4 +10,4 @@ interface IPositionChange : IChange { * Возвращает идентификатор позиции. */ fun getPositionUuid(): String? -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionAdd.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionAdd.kt index 45482fde8..3788499a3 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionAdd.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionAdd.kt @@ -10,12 +10,11 @@ import ru.evotor.framework.receipt.Position * @param position – позиция. */ data class PositionAdd(val position: Position) : IPositionChange { - override fun toBundle(): Bundle { return Bundle().apply { putBundle( - PositionMapper.KEY_POSITION, - PositionMapper.toBundle(position) + PositionMapper.KEY_POSITION, + PositionMapper.toBundle(position) ) } } @@ -34,10 +33,10 @@ data class PositionAdd(val position: Position) : IPositionChange { bundle ?: return null return PositionAdd( - PositionMapper.from( - bundle.getBundle(PositionMapper.KEY_POSITION) - ) ?: return null + PositionMapper.from( + bundle.getBundle(PositionMapper.KEY_POSITION) + ) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionEdit.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionEdit.kt index 10df9c3d6..61de6cd03 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionEdit.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionEdit.kt @@ -10,12 +10,11 @@ import ru.evotor.framework.receipt.Position * @param position – позиция. */ data class PositionEdit(val position: Position) : IPositionChange { - override fun toBundle(): Bundle { return Bundle().apply { putBundle( - PositionMapper.KEY_POSITION, - PositionMapper.toBundle(position) + PositionMapper.KEY_POSITION, + PositionMapper.toBundle(position) ) } } @@ -34,8 +33,8 @@ data class PositionEdit(val position: Position) : IPositionChange { bundle ?: return null return PositionEdit( - PositionMapper.from(bundle.getBundle(PositionMapper.KEY_POSITION)) ?: return null + PositionMapper.from(bundle.getBundle(PositionMapper.KEY_POSITION)) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionRemove.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionRemove.kt index f2d71d219..a9f12fbb1 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionRemove.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/position/PositionRemove.kt @@ -8,14 +8,13 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange * @param positionUuid – идентификатор позиции, которую требуется удалить. */ data class PositionRemove( - private val positionUuid: String + private val positionUuid: String ) : IPositionChange { - override fun toBundle(): Bundle { return Bundle().apply { putString( - KEY_POSITION_UUID, - positionUuid + KEY_POSITION_UUID, + positionUuid ) } } @@ -36,8 +35,8 @@ data class PositionRemove( bundle ?: return null return PositionRemove( - bundle.getString(KEY_POSITION_UUID) ?: return null + bundle.getString(KEY_POSITION_UUID) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetExtra.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetExtra.kt index df72bd9df..bbe56eace 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetExtra.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetExtra.kt @@ -8,12 +8,11 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange * Добавляет в чек дополнительные поля в виде валидного JSON-объекта. */ data class SetExtra(val extra: JSONObject?) : IChange { - override fun toBundle(): Bundle { return Bundle().apply { putString( - KEY_EXTRA, - extra?.toString() + KEY_EXTRA, + extra?.toString() ) } } @@ -30,7 +29,7 @@ data class SetExtra(val extra: JSONObject?) : IChange { bundle ?: return null return SetExtra( - bundle.getString(KEY_EXTRA)?.let { JSONObject(it) } + bundle.getString(KEY_EXTRA)?.let { JSONObject(it) } ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt index c59c1d7e7..1cb428529 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt @@ -15,20 +15,19 @@ import ru.evotor.framework.receipt.PrintGroup * @param positionUuids список позиций, входящих в печатную группу. */ data class SetPrintGroup(val printGroup: PrintGroup?, val paymentPurposeIds: List, val positionUuids: List) : IChange { - override fun toBundle(): Bundle { return Bundle().apply { putBundle( - KEY_PRINT_GROUP, - PrintGroupMapper.toBundle(printGroup) + KEY_PRINT_GROUP, + PrintGroupMapper.toBundle(printGroup) ) putStringArrayList( - KEY_PAYMENT_PURPOSE_ID, - ArrayList(paymentPurposeIds) + KEY_PAYMENT_PURPOSE_ID, + ArrayList(paymentPurposeIds) ) putStringArrayList( - KEY_PAYMENT_POSITIONS_UUIDS, - ArrayList(positionUuids) + KEY_PAYMENT_POSITIONS_UUIDS, + ArrayList(positionUuids) ) } } @@ -56,4 +55,4 @@ data class SetPrintGroup(val printGroup: PrintGroup?, val paymentPurposeIds: Lis return SetPrintGroup(printGroup, paymentPurposeIds, positionsUuids) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPurchaserContactData.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPurchaserContactData.kt index 3fda5829d..6b888f664 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPurchaserContactData.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPurchaserContactData.kt @@ -12,7 +12,6 @@ class SetPurchaserContactData private constructor( val email: String?, val phone: String? ) : IChange { - override fun toBundle(): Bundle { return Bundle().apply { putString(KEY_EMAIL, email) diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt index 5a4a6c9d2..16cf2432e 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt @@ -8,20 +8,18 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange import ru.evotor.framework.receipt.print_extras.PrintExtraPlace class SetPrintExtra( - val printPlace: PrintExtraPlace, - val printables: Array + val printPlace: PrintExtraPlace, + val printables: Array ) : IChange { - override fun getType() = IChange.Type.SET_PRINT_EXTRA override fun toBundle(): Bundle = - Bundle().apply { - putBundle(KEY_PRINT_PLACE, PrintExtraPlaceMapper.toBundle(printPlace)) - putBundle(KEY_PRINTABLES, PrintablesMapper.toBundle(printables)) - } + Bundle().apply { + putBundle(KEY_PRINT_PLACE, PrintExtraPlaceMapper.toBundle(printPlace)) + putBundle(KEY_PRINTABLES, PrintablesMapper.toBundle(printables)) + } companion object { - const val KEY_PRINT_PLACE = "printPlace" const val KEY_PRINTABLES = "printables" @@ -39,5 +37,4 @@ class SetPrintExtra( return SetPrintExtra(printPlace, printables) } } - } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEvent.java index c69ca5272..568da259f 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.discount; + import android.os.Bundle; import java.math.BigDecimal; diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEventResult.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEventResult.java index e1d6d2a0d..adebb2d29 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEventResult.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount/ReceiptDiscountEventResult.java @@ -143,4 +143,4 @@ public SetPurchaserContactData getSetPurchaserContactData() { public Map getPositionUuidToDiscountMap() { return positionUuidToDiscountMap; } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEvent.kt index aefcf060e..452516e67 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEvent.kt @@ -9,8 +9,7 @@ import ru.evotor.IBundlable * Чтобы приложение получало событие, значение константы [NAME_SELL_RECEIPT], [NAME_PAYBACK_RECEIPT] или [NAME_BUY_RECEIPT] * необходимо указать в элементе intent-фильтра соотвествующей службы */ -class ReceiptDiscountRequiredEvent: IBundlable { - +class ReceiptDiscountRequiredEvent : IBundlable { override fun toBundle(): Bundle { return Bundle() } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventProcessor.kt index 07a502431..66ebd3208 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventProcessor.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventProcessor.kt @@ -21,4 +21,3 @@ abstract class ReceiptDiscountRequiredEventProcessor : ActionProcessor() { abstract fun call(action: String, event: ReceiptDiscountRequiredEvent, callback: ActionProcessor.Callback) } - diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventResult.kt index 25a6ce4f0..5386d3217 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/discount_required/ReceiptDiscountRequiredEventResult.kt @@ -25,5 +25,4 @@ class ReceiptDiscountRequiredEventResult( return ReceiptDiscountRequiredEventResult(componentName) } } - } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEvent.kt index df12e8f84..ca1fb15fd 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEvent.kt @@ -4,13 +4,11 @@ import android.os.Bundle import ru.evotor.IBundlable class ErrorPaymentByCardEvent : IBundlable { - override fun toBundle(): Bundle { return Bundle() } companion object { - /** * Разрешение для обработки события ошибки безналичной платежной системы * @@ -20,7 +18,7 @@ class ErrorPaymentByCardEvent : IBundlable { const val NAME = "evo.v2.receipt.errorPaymentByCard" fun create(bundle: Bundle?): ErrorPaymentByCardEvent? { - if(bundle == null) { + if (bundle == null) { return null } return ErrorPaymentByCardEvent() diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventProcessor.kt index 5542d1d4a..b09a64963 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventProcessor.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventProcessor.kt @@ -5,7 +5,6 @@ import android.os.RemoteException import ru.evotor.framework.core.action.processor.ActionProcessor abstract class ErrorPaymentByCardEventProcessor : ActionProcessor() { - @Throws(RemoteException::class) override fun process(action: String, bundle: Bundle?, callback: ActionProcessor.Callback) { val event = ErrorPaymentByCardEvent.create(bundle) diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventResult.kt index 8b7aa12f4..ee2cd51f8 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/ErrorPaymentByCardEventResult.kt @@ -9,8 +9,6 @@ import ru.evotor.framework.core.action.event.receipt.error_card_payment.actions. class ErrorPaymentByCardEventResult( val actions: List ) : IBundlable { - - override fun toBundle(): Bundle { val bundle = Bundle() val actionsParcelable = arrayOfNulls(actions.size) diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/ErrorPaymentByCardActionMapper.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/ErrorPaymentByCardActionMapper.kt index d4575af48..3e3a12237 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/ErrorPaymentByCardActionMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/ErrorPaymentByCardActionMapper.kt @@ -6,7 +6,6 @@ import android.util.Log import ru.evotor.framework.Utils object ErrorPaymentByCardActionMapper { - private const val KEY_ACTION_TYPE = "type" private const val KEY_ACTION = "action" @@ -34,7 +33,6 @@ object ErrorPaymentByCardActionMapper { } else { null } - } .filterNotNull() } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/IHandleEventResultAction.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/IHandleEventResultAction.kt index 534d8dc8a..1338fb978 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/IHandleEventResultAction.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/IHandleEventResultAction.kt @@ -3,7 +3,6 @@ package ru.evotor.framework.core.action.event.receipt.error_card_payment.actions import ru.evotor.IBundlable interface IHandleEventResultAction : IBundlable { - fun getType(): Type enum class Type { diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/PaymentByCardErrorAction.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/PaymentByCardErrorAction.kt index bd76bd513..44c791c14 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/PaymentByCardErrorAction.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/error_card_payment/actions/PaymentByCardErrorAction.kt @@ -8,9 +8,9 @@ import android.os.Bundle * Если был передан cancelTimeout, то по истечении будет нажата кнопка "ОТМЕНА". */ class PaymentByCardErrorAction( - val cancelTimeout: UInt? = null // таймаут нажатия на кнопку "ОТМЕНА" в секундах + // таймаут нажатия на кнопку "ОТМЕНА" в секундах + val cancelTimeout: UInt? = null ) : IHandleEventResultAction { - override fun getType(): IHandleEventResultAction.Type { return IHandleEventResultAction.Type.SHOW_ERROR_SCREEN_ACTION } @@ -24,7 +24,6 @@ class PaymentByCardErrorAction( } companion object { - private const val KEY_TIMEOUT = "timeout" fun from(bundle: Bundle): PaymentByCardErrorAction { diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEvent.kt index 610b1433e..11e97c45e 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEvent.kt @@ -1,5 +1,4 @@ package ru.evotor.framework.core.action.event.receipt.jewelry - import android.os.Bundle import ru.evotor.IBundlable import ru.evotor.framework.Utils @@ -25,11 +24,14 @@ class SendJewelryEvent( val sessionNumber: Long, val documentNumber: Long, val paperWidth: Int, - val kktSerialNumber: String, + val kktSerialNumber: String ) : IBundlable { - public enum class OperationType { - UNKNOWN, SELL, SELL_CANCEL, PAYBACK, PAYBACK_CANCEL + UNKNOWN, + SELL, + SELL_CANCEL, + PAYBACK, + PAYBACK_CANCEL } override fun toBundle(): Bundle { @@ -45,7 +47,6 @@ class SendJewelryEvent( } companion object { - /** * Отправка чека в УТМ ГИИС ДМДК через стороннее приложение. * @@ -69,7 +70,7 @@ class SendJewelryEvent( getSessionNumber(it) ?: return null, getDocumentNumber(it) ?: return null, getPaperWidth(it) ?: return null, - getKktSerialNumber(it) ?: return null, + getKktSerialNumber(it) ?: return null ) } @@ -128,5 +129,4 @@ class SendJewelryEvent( } ?: return null } } - } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventProcessor.kt index ae230176a..f5d9d74b0 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventProcessor.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventProcessor.kt @@ -7,7 +7,6 @@ import ru.evotor.framework.core.action.processor.ActionProcessor * Обработчик события [SendJewelryEvent]. */ abstract class SendJewelryEventProcessor : ActionProcessor() { - override fun process(action: String, bundle: Bundle?, callback: ActionProcessor.Callback) { val event = SendJewelryEvent.from(bundle) ?: run { callback.skip() @@ -24,5 +23,4 @@ abstract class SendJewelryEventProcessor : ActionProcessor() { * запускать операции и обрабатывать ошибки. */ abstract fun call(action: String, event: SendJewelryEvent, callback: ActionProcessor.Callback) - } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventResult.kt index 7c826dadd..e441fe9fb 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/jewelry/SendJewelryEventResult.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.core.action.datamapper.PrintablesMapper class SendJewelryEventResult( val printableReport: Array? ) : IBundlable { - override fun toBundle(): Bundle { val bundle = Bundle() printableReport?.let { diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMerge.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMerge.kt index afaf624e3..ec208b565 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMerge.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMerge.kt @@ -4,32 +4,30 @@ import android.os.Parcel import android.os.Parcelable import ru.evotor.framework.core.IntegrationLibraryParsingException import ru.evotor.framework.receipt.Position +import ru.evotor.readAliased +import ru.evotor.writeAliased /** * Created by ivan on 26.06.17. - */ - -/** + * * Класс представляет собой результат склеивания 2-х и более позиций в чеке для оповещения интеграций * before - список позиций, которые будут склеены * after - результат склейки */ class PositionsMerge(val before: List, val after: Position) : Parcelable { - override fun writeToParcel(parcel: Parcel, i: Int) { parcel.writeList(before) - parcel.writeParcelable(after, Parcelable.PARCELABLE_WRITE_RETURN_VALUE) + parcel.writeAliased(after, Parcelable.PARCELABLE_WRITE_RETURN_VALUE) } companion object { - @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): PositionsMerge { val before = ArrayList() parcel.readList(before as List<*>, Position::class.java.classLoader) - val after = parcel.readParcelable(Position::class.java.classLoader) ?: throw IntegrationLibraryParsingException(PositionsMerge::class.java) + val after = parcel.readAliased(Position.CREATOR) ?: throw IntegrationLibraryParsingException(PositionsMerge::class.java) return PositionsMerge(before, after) } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt index 1fd0d6956..4dfcab018 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt @@ -12,7 +12,6 @@ import ru.evotor.IBundlable */ class PositionsMergeEvent(val receiptUuid: String, val merges: ArrayList) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putString(KEY_RECEIPT_UUID, receiptUuid) @@ -77,7 +76,6 @@ class PositionsMergeEvent(val receiptUuid: String, val merges: ArrayList(KEY_MERGES) - ?: ArrayList() + ?: ArrayList() PositionsMergeEvent(receiptUuid, merges) } } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventProcessor.kt index 0c0099afe..9a6d4f4a3 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventProcessor.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventProcessor.kt @@ -8,7 +8,6 @@ import ru.evotor.framework.core.action.processor.ActionProcessor */ abstract class PositionsMergeEventProcessor : ActionProcessor() { - override fun process(action: String, bundle: Bundle?, callback: ActionProcessor.Callback) { val event = PositionsMergeEvent.create(bundle) ?: run { callback.skip() @@ -19,4 +18,4 @@ abstract class PositionsMergeEventProcessor : ActionProcessor() { } abstract fun call(action: String, event: PositionsMergeEvent, callback: ActionProcessor.Callback) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventResult.kt index ad24b9fed..8ab2707af 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEventResult.kt @@ -9,7 +9,6 @@ import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra */ class PositionsMergeEventResult(val extra: SetExtra?) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putBundle(KEY_RECEIPT_EXTRA, extra?.toBundle()) @@ -20,10 +19,11 @@ class PositionsMergeEventResult(val extra: SetExtra?) : IBundlable { private val KEY_RECEIPT_EXTRA = "extra" fun create(bundle: Bundle?): PositionsMergeEventResult? { - return if (bundle == null) + return if (bundle == null) { null - else + } else { PositionsMergeEventResult(SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA))) + } } } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEvent.java index 6fdc402f3..ffcc3575e 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.payment; + import android.os.Bundle; import androidx.annotation.NonNull; diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEventResult.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEventResult.java index 0fe0d7b30..9b917b765 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEventResult.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/PaymentSelectedEventResult.java @@ -89,4 +89,4 @@ public SetExtra getExtra() { public List getPaymentPurposes() { return paymentPurposes; } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/PaymentDelegatorEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/PaymentDelegatorEventProcessor.kt index 1d0c413c2..ec54b0129 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/PaymentDelegatorEventProcessor.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/PaymentDelegatorEventProcessor.kt @@ -11,9 +11,9 @@ abstract class PaymentDelegatorEventProcessor : ActionProcessor() { return } call( - action, - event, - callback + action, + event, + callback ) } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaybackPaymentDelegatorEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaybackPaymentDelegatorEvent.kt index 680ff43e0..2796c0e49 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaybackPaymentDelegatorEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaybackPaymentDelegatorEvent.kt @@ -27,6 +27,7 @@ class PaybackPaymentDelegatorEvent( * Значение константы: evo.v2.receipt.payback.payment.COMBINED. */ const val NAME_ACTION = "evo.v2.receipt.payback.payment.COMBINED" + /** * Разрешение, которое необходимо указать в манифесте приложения. */ @@ -43,7 +44,6 @@ class PaybackPaymentDelegatorEvent( val receiptUuid = getReceiptUuid(bundle) ?: return null val remains = getAvailablePaybackSum(bundle) return PaybackPaymentDelegatorEvent(receiptUuid, remains) - } fun getReceiptUuid(bundle: Bundle?): String? = diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorEvent.kt index 2fc4d116f..d38ff151d 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorEvent.kt @@ -21,6 +21,7 @@ class PaymentDelegatorEvent(val receiptUuid: String) : IBundlable { * Значение константы: evo.v2.receipt.sell.payment.COMBINED. */ const val NAME_ACTION = "evo.v2.receipt.sell.payment.COMBINED" + /** * Разрешение, которое необходимо указать в манифесте приложения. */ @@ -38,6 +39,6 @@ class PaymentDelegatorEvent(val receiptUuid: String) : IBundlable { } fun getReceiptUuid(bundle: Bundle?): String? = - bundle?.getString(KEY_RECEIPT_UUID) + bundle?.getString(KEY_RECEIPT_UUID) } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorPaybackData.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorPaybackData.kt index dc83db6c6..f231a7c1b 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorPaybackData.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/event/PaymentDelegatorPaybackData.kt @@ -4,6 +4,8 @@ import android.os.Parcel import android.os.Parcelable import ru.evotor.framework.ParcelableUtils import ru.evotor.framework.component.PaymentPerformer +import ru.evotor.readAliased +import ru.evotor.writeAliased import java.math.BigDecimal class PaymentDelegatorPaybackData( @@ -14,7 +16,7 @@ class PaymentDelegatorPaybackData( override fun writeToParcel(dest: Parcel, flags: Int) { ParcelableUtils.writeExpand(dest, VERSION) { parcel -> - parcel.writeParcelable(performer, flags) + parcel.writeAliased(performer, flags) parcel.writeSerializable(sum) } } @@ -41,7 +43,7 @@ class PaymentDelegatorPaybackData( var sum: BigDecimal? = null if (version >= 1) { - performer = parcel.readParcelable(PaymentPerformer::class.java.classLoader) + performer = parcel.readAliased(PaymentPerformer.CREATOR) sum = parcel.readSerializable() as BigDecimal } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledAllEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledAllEventResult.kt index 38c8f5f10..c110c6a02 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledAllEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledAllEventResult.kt @@ -5,7 +5,6 @@ import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra class PaymentDelegatorCanceledAllEventResult(extra: SetExtra?) : PaymentDelegatorEventResult(ResultType.CANCEL_ALL, extra) { companion object { - fun create(bundle: Bundle?): PaymentDelegatorCanceledAllEventResult? { if (bundle == null) { return null diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledEventResult.kt index f772659e3..fadd2c390 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorCanceledEventResult.kt @@ -4,8 +4,8 @@ import android.os.Bundle import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra class PaymentDelegatorCanceledEventResult( - val paymentUuid: String, - extra: SetExtra? + val paymentUuid: String, + extra: SetExtra? ) : PaymentDelegatorEventResult(ResultType.CANCEL, extra) { override fun toBundle(): Bundle { val result = super.toBundle() @@ -21,11 +21,12 @@ class PaymentDelegatorCanceledEventResult( return null } return bundle.getString(KEY_PAYMENT_UUID) - ?.let { - PaymentDelegatorCanceledEventResult( - it, - SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA))) - } + ?.let { + PaymentDelegatorCanceledEventResult( + it, + SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)) + ) + } } } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt index 15f00816d..e80d7288c 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt @@ -6,10 +6,9 @@ import ru.evotor.framework.Utils import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra abstract class PaymentDelegatorEventResult( - val resultType: ResultType, - val extra: SetExtra? + val resultType: ResultType, + val extra: SetExtra? ) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putBundle(KEY_RECEIPT_EXTRA, extra?.toBundle()) @@ -18,7 +17,10 @@ abstract class PaymentDelegatorEventResult( } public enum class ResultType { - UNKNOWN, SELECTED, CANCEL, CANCEL_ALL + UNKNOWN, + SELECTED, + CANCEL, + CANCEL_ALL } companion object { diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorSelectedEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorSelectedEventResult.kt index a012ddd22..8d0158f08 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorSelectedEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorSelectedEventResult.kt @@ -6,8 +6,8 @@ import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra import ru.evotor.framework.payment.PaymentPurpose class PaymentDelegatorSelectedEventResult( - val paymentPurpose: PaymentPurpose, - extra: SetExtra? + val paymentPurpose: PaymentPurpose, + extra: SetExtra? ) : PaymentDelegatorEventResult(ResultType.SELECTED, extra) { override fun toBundle(): Bundle { val result = super.toBundle() @@ -23,11 +23,11 @@ class PaymentDelegatorSelectedEventResult( return null } val paymentPurpose = bundle.getBundle(KEY_PAYMENT_PURPOSE) - ?.let { PaymentPurposeMapper.from(it) } + ?.let { PaymentPurposeMapper.from(it) } if (paymentPurpose != null) { return PaymentDelegatorSelectedEventResult( - paymentPurpose, - SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)) + paymentPurpose, + SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)) ) } return null diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/PaymentSystemProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/PaymentSystemProcessor.kt index f5e6b3a93..16ea70c53 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/PaymentSystemProcessor.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/PaymentSystemProcessor.kt @@ -22,8 +22,10 @@ abstract class PaymentSystemProcessor : ActionProcessor() { } abstract fun sell(action: String, event: PaymentSystemSellEvent, callback: ActionProcessor.Callback) + abstract fun sellCancel(action: String, event: PaymentSystemSellCancelEvent, callback: ActionProcessor.Callback) + abstract fun payback(action: String, event: PaymentSystemPaybackEvent, callback: ActionProcessor.Callback) + abstract fun paybackCancel(action: String, event: PaymentSystemPaybackCancelEvent, callback: ActionProcessor.Callback) } - diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemEvent.kt index ed20c42a2..2b79bfa20 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemEvent.kt @@ -12,11 +12,14 @@ import ru.evotor.framework.Utils * Чтобы приложение получало событие, значение константы NAME_ACTION необходимо указать в элементе intent-фильтра соотвествующей службы. */ abstract class PaymentSystemEvent( - val operationType: OperationType + val operationType: OperationType ) : IBundlable { - public enum class OperationType { - UNKNOWN, SELL, SELL_CANCEL, PAYBACK, PAYBACK_CANCEL + UNKNOWN, + SELL, + SELL_CANCEL, + PAYBACK, + PAYBACK_CANCEL } override fun toBundle(): Bundle { diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackCancelEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackCancelEvent.kt index fdad57bd3..8d6f98ec9 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackCancelEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackCancelEvent.kt @@ -8,13 +8,12 @@ import java.math.BigDecimal * Событие, которое возникает при отмене оплаты чека возврата сторонней платёжной системой. */ class PaymentSystemPaybackCancelEvent( - val receiptUuid: String, - val accountId: String?, - val sum: BigDecimal, - val rrn: String?, - val description: String? + val receiptUuid: String, + val accountId: String?, + val sum: BigDecimal, + val rrn: String?, + val description: String? ) : PaymentSystemEvent(OperationType.PAYBACK_CANCEL) { - override fun toBundle(): Bundle { val result = super.toBundle() result.putString(KEY_RECEIPT_UUID, receiptUuid) @@ -44,4 +43,4 @@ class PaymentSystemPaybackCancelEvent( return PaymentSystemPaybackCancelEvent(receiptUuid, accountId, sum!!, rrn, description) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackEvent.kt index 4bd5003ef..d4581568e 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemPaybackEvent.kt @@ -8,13 +8,12 @@ import java.math.BigDecimal * Событие, которое возникает при оплате чека возврата сторонней платёжной системой. */ class PaymentSystemPaybackEvent( - val receiptUuid: String, - val accountId: String?, - val sum: BigDecimal, - val rrn: String?, - val description: String? + val receiptUuid: String, + val accountId: String?, + val sum: BigDecimal, + val rrn: String?, + val description: String? ) : PaymentSystemEvent(OperationType.PAYBACK) { - override fun toBundle(): Bundle { val result = super.toBundle() result.putString(KEY_RECEIPT_UUID, receiptUuid) @@ -44,4 +43,4 @@ class PaymentSystemPaybackEvent( return PaymentSystemPaybackEvent(receiptUuid, accountId, sum!!, rrn, description) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellCancelEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellCancelEvent.kt index 9f393522a..353e7a705 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellCancelEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellCancelEvent.kt @@ -8,13 +8,12 @@ import java.math.BigDecimal * Событие, которое возникает при отмене оплаты чека продажи сторонней платёжной системой. */ class PaymentSystemSellCancelEvent( - val receiptUuid: String, - val accountId: String?, - val sum: BigDecimal, - val rrn: String?, - val description: String? + val receiptUuid: String, + val accountId: String?, + val sum: BigDecimal, + val rrn: String?, + val description: String? ) : PaymentSystemEvent(OperationType.SELL_CANCEL) { - override fun toBundle(): Bundle { val result = super.toBundle() result.putString(KEY_RECEIPT_UUID, receiptUuid) @@ -44,4 +43,4 @@ class PaymentSystemSellCancelEvent( return PaymentSystemSellCancelEvent(receiptUuid, accountId, sum!!, rrn, description) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellEvent.kt index 350cc6072..d02dd11f2 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/event/PaymentSystemSellEvent.kt @@ -8,12 +8,11 @@ import java.math.BigDecimal * Событие, которое возникает при оплате чека продажи сторонней платёжной системой. */ class PaymentSystemSellEvent( - val receiptUuid: String, - val accoundId: String?, - val sum: BigDecimal, - val description: String? + val receiptUuid: String, + val accoundId: String?, + val sum: BigDecimal, + val description: String? ) : PaymentSystemEvent(PaymentSystemEvent.OperationType.SELL) { - override fun toBundle(): Bundle { val result = super.toBundle() result.putString(KEY_RECEIPT_UUID, receiptUuid) @@ -40,4 +39,4 @@ class PaymentSystemSellEvent( return PaymentSystemSellEvent(receiptUuid, accoundId, sum!!, description) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentErrorResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentErrorResult.kt index 8279e4896..94ca7bdfd 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentErrorResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentErrorResult.kt @@ -3,9 +3,8 @@ package ru.evotor.framework.core.action.event.receipt.payment.system.result import android.os.Bundle class PaymentSystemPaymentErrorResult( - val errorDescription: String? + val errorDescription: String? ) : PaymentSystemPaymentResult(ResultType.ERROR) { - override fun toBundle(): Bundle { val result = super.toBundle() result.putString(KEY_ERROR_DESCRIPTION, errorDescription) @@ -23,4 +22,4 @@ class PaymentSystemPaymentErrorResult( return PaymentSystemPaymentErrorResult(errorDescription) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentOkResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentOkResult.kt index e32ea9cfe..e10978d0d 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentOkResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentOkResult.kt @@ -7,14 +7,13 @@ import ru.evotor.framework.payment.CashlessInfo import ru.evotor.framework.payment.PaymentType class PaymentSystemPaymentOkResult( - val rrn: String, - val slip: List, - val paymentInfo: String?, - val paymentType: PaymentType = PaymentType.ELECTRON, - val cashlessInfo: CashlessInfo? = null, - val additionalTransactionData: AdditionalTransactionData? = null + val rrn: String, + val slip: List, + val paymentInfo: String?, + val paymentType: PaymentType = PaymentType.ELECTRON, + val cashlessInfo: CashlessInfo? = null, + val additionalTransactionData: AdditionalTransactionData? = null ) : PaymentSystemPaymentResult(ResultType.OK) { - override fun toBundle(): Bundle { val result = super.toBundle() result.putString(KEY_RRN, rrn) @@ -41,9 +40,19 @@ class PaymentSystemPaymentOkResult( val rrn = bundle.getString(KEY_RRN, null) val slip = bundle.getStringArrayList(KEY_SLIP) ?: emptyList() val paymentInfo = bundle.getString(KEY_PAYMENT_INFO, null) - val paymentType = Utils.safeValueOf(PaymentType::class.java, bundle.getString(KEY_PAYMENT_TYPE), PaymentType.UNKNOWN) + val paymentType = Utils.safeValueOf( + PaymentType::class.java, + bundle.getString( + KEY_PAYMENT_TYPE + ), + PaymentType.UNKNOWN + ) val cashlessInfo = CashlessInfo.fromBundle(bundle.getBundle(KEY_CASHLESS_INFO)) - val additionalTransactionData = AdditionalTransactionData.fromBundle(bundle.getBundle(KEY_ADDITIONAL_TRANSACTION_DATA)) + val additionalTransactionData = AdditionalTransactionData.fromBundle( + bundle.getBundle( + KEY_ADDITIONAL_TRANSACTION_DATA + ) + ) return PaymentSystemPaymentOkResult(rrn, slip, paymentInfo, paymentType, cashlessInfo, additionalTransactionData) } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentResult.kt index 87165b6e1..e3109d629 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/system/result/PaymentSystemPaymentResult.kt @@ -5,9 +5,8 @@ import ru.evotor.IBundlable import ru.evotor.framework.Utils abstract class PaymentSystemPaymentResult( - val resultType: ResultType + val resultType: ResultType ) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putString(KEY_RESULT_TYPE, resultType.name) @@ -15,7 +14,9 @@ abstract class PaymentSystemPaymentResult( } public enum class ResultType { - UNKNOWN, OK, ERROR + UNKNOWN, + OK, + ERROR } companion object { @@ -33,4 +34,4 @@ abstract class PaymentSystemPaymentResult( } } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionAddedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionAddedEvent.java index f2cf7e5ca..4513cf810 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionAddedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionAddedEvent.java @@ -1,9 +1,11 @@ package ru.evotor.framework.core.action.event.receipt.position_edited; + import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import ru.evotor.framework.receipt.Position; /** diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionEditedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionEditedEvent.java index 541231ee3..0b4fd0e18 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionEditedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionEditedEvent.java @@ -1,9 +1,11 @@ package ru.evotor.framework.core.action.event.receipt.position_edited; + import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import ru.evotor.framework.receipt.Position; /** diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionRemovedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionRemovedEvent.java index 650ba8aaa..1bc7705a2 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionRemovedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/position_edited/PositionRemovedEvent.java @@ -1,9 +1,11 @@ package ru.evotor.framework.core.action.event.receipt.position_edited; + import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import ru.evotor.framework.receipt.Position; /** diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEvent.kt index 074fcd596..763e2787b 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEvent.kt @@ -11,7 +11,6 @@ import ru.evotor.IBundlable * Чтобы приложение получало событие, значение константы необходимо указать в элементе intent-фильтра соотвествующей службы. */ class PrintExtraRequiredEvent() : IBundlable { - override fun toBundle(): Bundle { return Bundle() } @@ -21,48 +20,56 @@ class PrintExtraRequiredEvent() : IBundlable { * Разрешение, которое необходимо указать в манифесте приложения. */ const val NAME_PERMISSION = "ru.evotor.permission.receipt.printExtra.SET" + /** * Данные будут напечатанны в чеке продажи. * * Значение константы: evo.v2.receipt.sell.printExtra.REQUIRED. */ const val NAME_SELL_RECEIPT = "evo.v2.receipt.sell.printExtra.REQUIRED" + /** * Данные будут напечатанны в чеке возврата. * * Значение константы: evo.v2.receipt.payback.printExtra.REQUIRED. */ const val NAME_PAYBACK_RECEIPT = "evo.v2.receipt.payback.printExtra.REQUIRED" + /** * Данные будут напечатанны в чеке покупки. * * Значение константы: evo.v2.receipt.buy.printExtra.REQUIRED. */ const val NAME_BUY_RECEIPT = "evo.v2.receipt.buy.printExtra.REQUIRED" + /** * Данные будут напечатанны в чеке возврата покупки. * * Значение константы: evo.v2.receipt.buyback.printExtra.REQUIRED. */ const val NAME_BUYBACK_RECEIPT = "evo.v2.receipt.buyback.printExtra.REQUIRED" + /** * Данные будут напечатанны в чеке коррекции прихода. * * Значение константы: evo.v2.receipt.correction.income.printExtra.REQUIRED. */ const val NAME_CORRECTION_INCOME_RECEIPT = "evo.v2.receipt.correction.income.printExtra.REQUIRED" + /** * Данные будут напечатанны в чеке коррекции расхода. * * Значение константы: evo.v2.receipt.correction.outcome.printExtra.REQUIRED. */ const val NAME_CORRECTION_OUTCOME_RECEIPT = "evo.v2.receipt.correction.outcome.printExtra.REQUIRED" + /** * Данные будут напечатанны в чеке коррекции возврата прихода. * * Значение константы: evo.v2.receipt.correction.return.income.printExtra.REQUIRED. */ const val NAME_CORRECTION_RETURN_INCOME_RECEIPT = "evo.v2.receipt.correction.return.income.printExtra.REQUIRED" + /** * Данные будут напечатанны в чеке коррекции возврата расхода. * @@ -78,4 +85,4 @@ class PrintExtraRequiredEvent() : IBundlable { return PrintExtraRequiredEvent() } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventProcessor.kt index 0d2eda39d..c081f14af 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventProcessor.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventProcessor.kt @@ -4,7 +4,6 @@ import android.os.Bundle import ru.evotor.framework.core.action.processor.ActionProcessor abstract class PrintExtraRequiredEventProcessor : ActionProcessor() { - override fun process(action: String, bundle: Bundle?, callback: ActionProcessor.Callback) { val event = PrintExtraRequiredEvent.create(bundle) ?: run { callback.skip() @@ -14,5 +13,4 @@ abstract class PrintExtraRequiredEventProcessor : ActionProcessor() { } abstract fun call(action: String, event: PrintExtraRequiredEvent, callback: ActionProcessor.Callback) - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventResult.kt index 43774bdcf..a39843dc9 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventResult.kt @@ -8,23 +8,24 @@ import ru.evotor.framework.core.action.datamapper.ChangesMapper import ru.evotor.framework.core.action.event.receipt.changes.receipt.print_extra.SetPrintExtra class PrintExtraRequiredEventResult( - val printExtras: List? + val printExtras: List? ) : IBundlable { - override fun toBundle(): Bundle { val bundle = Bundle() - bundle.putParcelableArray(KEY_PRINT_EXTRA, - if (printExtras != null) { - val setPrintGroupsParcelableArray = mutableListOf() - printExtras.map { - ChangesMapper.toBundle(it) - }.forEach { - setPrintGroupsParcelableArray.add(it) - } - setPrintGroupsParcelableArray.toTypedArray() - } else { - null - }) + bundle.putParcelableArray( + KEY_PRINT_EXTRA, + if (printExtras != null) { + val setPrintGroupsParcelableArray = mutableListOf() + printExtras.map { + ChangesMapper.toBundle(it) + }.forEach { + setPrintGroupsParcelableArray.add(it) + } + setPrintGroupsParcelableArray.toTypedArray() + } else { + null + } + ) return bundle } @@ -36,11 +37,11 @@ class PrintExtraRequiredEventResult( return null } return PrintExtraRequiredEventResult( - Utils.filterByClass( - ChangesMapper.create(bundle.getParcelableArray(KEY_PRINT_EXTRA)), - SetPrintExtra::class.java - ) + Utils.filterByClass( + ChangesMapper.create(bundle.getParcelableArray(KEY_PRINT_EXTRA)), + SetPrintExtra::class.java + ) ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupEvent.java index ce06c285d..1c11cd172 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupEvent.java @@ -49,4 +49,4 @@ public Bundle toBundle() { result.putBundle(KEY_SELECTED_PAYMENT_SYSTEM, PaymentSystemMapper.toBundle(paymentSystem)); return result; } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEvent.java index ed6cb5fa8..cbc0123eb 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.print_group; + import android.os.Bundle; import androidx.annotation.Nullable; @@ -57,4 +58,4 @@ public static PrintGroupRequiredEvent create(@Nullable Bundle bundle) { return new PrintGroupRequiredEvent(paymentSystem); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEventResult.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEventResult.java index f7e14aa95..f5b0fe655 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEventResult.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/print_group/PrintGroupRequiredEventResult.java @@ -79,4 +79,4 @@ public SetExtra getExtra() { public List getSetPrintGroups() { return setPrintGroups; } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClearedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClearedEvent.java index 8ed2de2a3..720d5d764 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClearedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClearedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.receipt_edited; + import android.os.Bundle; import androidx.annotation.NonNull; diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClosedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClosedEvent.java index 141210fe9..66ce218ed 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClosedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptClosedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.receipt_edited; + import android.os.Bundle; import androidx.annotation.NonNull; diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptOpenedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptOpenedEvent.java index 90f64ed1e..74ec1b826 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptOpenedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptOpenedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.receipt_edited; + import android.os.Bundle; import androidx.annotation.NonNull; diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPaymentPartsEditedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPaymentPartsEditedEvent.java index 9e6c1f750..9a18a9c48 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPaymentPartsEditedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPaymentPartsEditedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.receipt_edited; + import android.os.Bundle; import androidx.annotation.NonNull; diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPrintGroupEditedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPrintGroupEditedEvent.java index 88dc88095..88a2f2096 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPrintGroupEditedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/receipt_edited/ReceiptPrintGroupEditedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.receipt.receipt_edited; + import android.os.Bundle; import androidx.annotation.NonNull; diff --git a/src/main/java/ru/evotor/framework/core/action/event/session/BankSessionClosedEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/session/BankSessionClosedEvent.kt index 9de8e8fd7..837c0fd88 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/session/BankSessionClosedEvent.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/session/BankSessionClosedEvent.kt @@ -6,8 +6,6 @@ data class BankSessionClosedEvent( val paymentSystemAccountId: Int, val slipLines: Array ) : SessionEvent() { - - override fun toBundle(): Bundle { return Bundle().apply { this.putInt(KEY_PAYMENT_SYSTEM_ACCOUNT_ID, paymentSystemAccountId) @@ -48,5 +46,4 @@ data class BankSessionClosedEvent( } } } - } diff --git a/src/main/java/ru/evotor/framework/core/action/event/session/SessionClosedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/session/SessionClosedEvent.java index 48f3cdc81..23e68dca5 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/session/SessionClosedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/session/SessionClosedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.session; + import android.os.Bundle; import androidx.annotation.NonNull; @@ -23,4 +24,4 @@ public static SessionClosedEvent create(@Nullable Bundle bundle) { } return new SessionClosedEvent(bundle); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/session/SessionOpenedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/session/SessionOpenedEvent.java index 34518dff3..245fbec8c 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/session/SessionOpenedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/session/SessionOpenedEvent.java @@ -23,4 +23,4 @@ public static SessionOpenedEvent create(@Nullable Bundle bundle) { } return new SessionOpenedEvent(bundle); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/users/UserChangedEvent.java b/src/main/java/ru/evotor/framework/core/action/event/users/UserChangedEvent.java index b72b8c77d..489b627bb 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/users/UserChangedEvent.java +++ b/src/main/java/ru/evotor/framework/core/action/event/users/UserChangedEvent.java @@ -1,5 +1,6 @@ package ru.evotor.framework.core.action.event.users; + import android.os.Bundle; import androidx.annotation.NonNull; @@ -23,4 +24,4 @@ public static UserChangedEvent create(@Nullable Bundle bundle) { } return new UserChangedEvent(bundle); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/core/action/processor/ActionProcessor.java b/src/main/java/ru/evotor/framework/core/action/processor/ActionProcessor.java index ce6a29a2e..cb9427085 100644 --- a/src/main/java/ru/evotor/framework/core/action/processor/ActionProcessor.java +++ b/src/main/java/ru/evotor/framework/core/action/processor/ActionProcessor.java @@ -7,6 +7,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; + +import ru.evotor.BundlesKt; import ru.evotor.IBundlable; import ru.evotor.framework.core.IIntegrationManagerResponse; import ru.evotor.framework.core.IntegrationManager; @@ -54,7 +56,7 @@ public final void startActivity(Intent intent, Bundle options) throws RemoteExce data.putParcelable(IntegrationManager.KEY_INTENT, intent); data.putParcelable(IntegrationManager.KEY_OPTIONS, options); - response.onResult(data); + response.onResult(BundlesKt.sanitizeOutput(data)); } /** @@ -85,7 +87,7 @@ public final void onResult(IBundlable bundlable) throws RemoteException { public final void onResult(Bundle bundle) throws RemoteException { Bundle result = new Bundle(); result.putBundle(IntegrationManager.KEY_DATA, bundle); - response.onResult(result); + response.onResult(BundlesKt.sanitizeOutput(result)); } /** @@ -117,7 +119,7 @@ public final void onError(int errorCode, String errorMessage, IBundlable data) t * @throws RemoteException */ public final void onError(int errorCode, String errorMessage, Bundle data) throws RemoteException { - response.onError(errorCode, errorMessage, data); + response.onError(errorCode, errorMessage, BundlesKt.sanitizeOutput(data)); } /** diff --git a/src/main/java/ru/evotor/framework/counterparties/Counterparty.kt b/src/main/java/ru/evotor/framework/counterparties/Counterparty.kt index ad8a99897..ca9cffc5d 100644 --- a/src/main/java/ru/evotor/framework/counterparties/Counterparty.kt +++ b/src/main/java/ru/evotor/framework/counterparties/Counterparty.kt @@ -46,4 +46,4 @@ abstract class Counterparty : IBundlable { } override fun toBundle(): Bundle = CounterpartyMapper.write(this) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Agent.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Agent.kt index a558cc0f7..8fbdeb2fb 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Agent.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Agent.kt @@ -11,53 +11,45 @@ import java.util.* * Агент */ data class Agent( - /** - * Uuid контрагента - */ - override val uuid: UUID? = null, - - /** - * Тип (признак) агента - */ - @FiscalRequisite(tag = FiscalTags.SETTLEMENT_SUBJECT_AGENT_TYPE) - val type: Type? = null, - - /** - * Тип контрагента - */ - override val counterpartyType: Counterparty.Type? = null, - - /** - * Наименование полное - */ - override val fullName: String? = null, - - /** - * Наименование краткое - */ - override val shortName: String? = null, - - /** - * ИНН - */ - override val inn: String? = null, - - /** - * КПП - */ - override val kpp: String? = null, - - /** - * Телефоны - */ - @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) - @FiscalRequisite(tag = FiscalTags.PAYMENT_OPERATOR_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) - override val phones: List? = null, - - /** - * Адреса - */ - override val addresses: List? = null + /** + * Uuid контрагента + */ + override val uuid: UUID? = null, + /** + * Тип (признак) агента + */ + @FiscalRequisite(tag = FiscalTags.SETTLEMENT_SUBJECT_AGENT_TYPE) + val type: Type? = null, + /** + * Тип контрагента + */ + override val counterpartyType: Counterparty.Type? = null, + /** + * Наименование полное + */ + override val fullName: String? = null, + /** + * Наименование краткое + */ + override val shortName: String? = null, + /** + * ИНН + */ + override val inn: String? = null, + /** + * КПП + */ + override val kpp: String? = null, + /** + * Телефоны + */ + @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) + @FiscalRequisite(tag = FiscalTags.PAYMENT_OPERATOR_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) + override val phones: List? = null, + /** + * Адреса + */ + override val addresses: List? = null ) : Counterparty() { /** * Тип агента @@ -86,7 +78,7 @@ data class Agent( /** * Банковский платёжный агент */ - BANK_PAYMENT_AGENT, + BANK_PAYMENT_AGENT } companion object { @@ -94,4 +86,4 @@ data class Agent( } override fun toBundle(): Bundle = AgentMapper.write(this, super.toBundle()) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Principal.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Principal.kt index e29605c0f..53bbb358f 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Principal.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Principal.kt @@ -11,50 +11,43 @@ import java.util.* * Принципал (поставщик) */ data class Principal( - /** - * Uuid контрагента - */ - override val uuid: UUID? = null, - - /** - * Тип контрагента - */ - override val counterpartyType: Counterparty.Type? = null, - - /** - * Наименование полное - */ - override val fullName: String? = null, - - /** - * Наименование краткое - */ - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) - override val shortName: String, - - /** - * ИНН - */ - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) - override val inn: String, - - /** - * КПП - */ - override val kpp: String? = null, - - /** - * Телефоны - */ - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) - override val phones: List, - - /** - * Адреса - */ - override val addresses: List? = null + /** + * Uuid контрагента + */ + override val uuid: UUID? = null, + /** + * Тип контрагента + */ + override val counterpartyType: Counterparty.Type? = null, + /** + * Наименование полное + */ + override val fullName: String? = null, + /** + * Наименование краткое + */ + @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) + override val shortName: String, + /** + * ИНН + */ + @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) + override val inn: String, + /** + * КПП + */ + override val kpp: String? = null, + /** + * Телефоны + */ + @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) + override val phones: List, + /** + * Адреса + */ + override val addresses: List? = null ) : Counterparty() { companion object { fun from(bundle: Bundle?): Principal? = PrincipalMapper.read(bundle) } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Subagent.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Subagent.kt index 4993be4b5..af5cce285 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Subagent.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/Subagent.kt @@ -11,52 +11,44 @@ import java.util.* * Cубагент */ data class Subagent( - /** - * Uuid контрагента - */ - override val uuid: UUID? = null, - - /** - * Тип (признак) субагента - */ - @FiscalRequisite(tag = FiscalTags.SETTLEMENT_SUBJECT_AGENT_TYPE) - val type: Type, - - /** - * Тип контрагента - */ - override val counterpartyType: Counterparty.Type? = null, - - /** - * Наименование полное - */ - override val fullName: String? = null, - - /** - * Наименование краткое - */ - override val shortName: String? = null, - - /** - * ИНН - */ - override val inn: String? = null, - - /** - * КПП - */ - override val kpp: String? = null, - - /** - * Телефоны - */ - @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) - override val phones: List? = null, - - /** - * Адреса - */ - override val addresses: List? = null + /** + * Uuid контрагента + */ + override val uuid: UUID? = null, + /** + * Тип (признак) субагента + */ + @FiscalRequisite(tag = FiscalTags.SETTLEMENT_SUBJECT_AGENT_TYPE) + val type: Type, + /** + * Тип контрагента + */ + override val counterpartyType: Counterparty.Type? = null, + /** + * Наименование полное + */ + override val fullName: String? = null, + /** + * Наименование краткое + */ + override val shortName: String? = null, + /** + * ИНН + */ + override val inn: String? = null, + /** + * КПП + */ + override val kpp: String? = null, + /** + * Телефоны + */ + @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) + override val phones: List? = null, + /** + * Адреса + */ + override val addresses: List? = null ) : Counterparty() { /** * Тип субагента @@ -70,7 +62,7 @@ data class Subagent( /** * Банковский платёжный субагент */ - BANK_PAYMENT_SUBAGENT, + BANK_PAYMENT_SUBAGENT } companion object { @@ -78,4 +70,4 @@ data class Subagent( } override fun toBundle(): Bundle = SubagentMapper.write(this, super.toBundle()) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/TransactionOperator.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/TransactionOperator.kt index 113937c17..7f6f19a57 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/TransactionOperator.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/TransactionOperator.kt @@ -11,51 +11,44 @@ import java.util.* * Оператор перевода */ data class TransactionOperator( - /** - * Uuid контрагента - */ - override val uuid: UUID? = null, - - /** - * Тип контрагента - */ - override val counterpartyType: Counterparty.Type? = null, - - /** - * Наименование полное - */ - override val fullName: String? = null, - - /** - * Наименование краткое - */ - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_NAME) - override val shortName: String? = null, - - /** - * ИНН - */ - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_INN) - override val inn: String? = null, - - /** - * КПП - */ - override val kpp: String? = null, - - /** - * Телефоны - */ - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) - override val phones: List? = null, - - /** - * Адреса - */ - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_ADDRESS) - override val addresses: List? = null + /** + * Uuid контрагента + */ + override val uuid: UUID? = null, + /** + * Тип контрагента + */ + override val counterpartyType: Counterparty.Type? = null, + /** + * Наименование полное + */ + override val fullName: String? = null, + /** + * Наименование краткое + */ + @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_NAME) + override val shortName: String? = null, + /** + * ИНН + */ + @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_INN) + override val inn: String? = null, + /** + * КПП + */ + override val kpp: String? = null, + /** + * Телефоны + */ + @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) + override val phones: List? = null, + /** + * Адреса + */ + @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_ADDRESS) + override val addresses: List? = null ) : Counterparty() { companion object { fun from(bundle: Bundle?): TransactionOperator? = TransactionOperatorMapper.read(bundle) } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/AgentMapper.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/AgentMapper.kt index d491b04e1..4f401599f 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/AgentMapper.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/AgentMapper.kt @@ -5,35 +5,35 @@ import ru.evotor.framework.counterparties.collaboration.agent_scheme.Agent import ru.evotor.framework.counterparties.mapper.CounterpartyMapper internal object AgentMapper { - private const val KEY_TYPE = "TYPE" fun read(bundle: Bundle?): Agent? = - bundle?.let { - Agent( - uuid = CounterpartyMapper.readUuid(it), - type = if (it.containsKey(KEY_TYPE)) - Agent.Type.values()[it.getInt(KEY_TYPE)] - else - null, - counterpartyType = CounterpartyMapper.readCounterpartyType(it), - fullName = CounterpartyMapper.readFullName(it), - shortName = CounterpartyMapper.readShortName(it), - inn = CounterpartyMapper.readInn(it), - kpp = CounterpartyMapper.readKpp(it), - phones = CounterpartyMapper.readPhones(it), - addresses = CounterpartyMapper.readAddresses(it) - ) - } + bundle?.let { + Agent( + uuid = CounterpartyMapper.readUuid(it), + type = if (it.containsKey(KEY_TYPE)) { + Agent.Type.values()[it.getInt(KEY_TYPE)] + } else { + null + }, + counterpartyType = CounterpartyMapper.readCounterpartyType(it), + fullName = CounterpartyMapper.readFullName(it), + shortName = CounterpartyMapper.readShortName(it), + inn = CounterpartyMapper.readInn(it), + kpp = CounterpartyMapper.readKpp(it), + phones = CounterpartyMapper.readPhones(it), + addresses = CounterpartyMapper.readAddresses(it) + ) + } fun write(agent: Agent, bundle: Bundle) = bundle.apply { agent.type?.let { this.putInt(KEY_TYPE, it.ordinal) } } fun convertToNull(agent: Agent): Agent? = - if (CounterpartyMapper.convertToNull(agent) == null && agent.type == null) - null - else - agent - -} \ No newline at end of file + if (CounterpartyMapper.convertToNull(agent) == null && agent.type == null) { + null + } else { + agent + } +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/PrincipalMapper.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/PrincipalMapper.kt index 184e0bbc5..329745666 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/PrincipalMapper.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/PrincipalMapper.kt @@ -5,19 +5,17 @@ import ru.evotor.framework.counterparties.collaboration.agent_scheme.Principal import ru.evotor.framework.counterparties.mapper.CounterpartyMapper internal object PrincipalMapper { - fun read(bundle: Bundle?): Principal? = - bundle?.let { - Principal( - uuid = CounterpartyMapper.readUuid(it), - counterpartyType = CounterpartyMapper.readCounterpartyType(it), - fullName = CounterpartyMapper.readFullName(it), - shortName = CounterpartyMapper.readShortName(it) ?: "", - inn = CounterpartyMapper.readInn(it) ?: return null, - kpp = CounterpartyMapper.readKpp(it), - phones = CounterpartyMapper.readPhones(it) ?: return null, - addresses = CounterpartyMapper.readAddresses(it) - ) - } - -} \ No newline at end of file + bundle?.let { + Principal( + uuid = CounterpartyMapper.readUuid(it), + counterpartyType = CounterpartyMapper.readCounterpartyType(it), + fullName = CounterpartyMapper.readFullName(it), + shortName = CounterpartyMapper.readShortName(it) ?: "", + inn = CounterpartyMapper.readInn(it) ?: return null, + kpp = CounterpartyMapper.readKpp(it), + phones = CounterpartyMapper.readPhones(it) ?: return null, + addresses = CounterpartyMapper.readAddresses(it) + ) + } +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/SubagentMapper.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/SubagentMapper.kt index c5aa1ab48..398c8f31c 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/SubagentMapper.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/SubagentMapper.kt @@ -5,26 +5,24 @@ import ru.evotor.framework.counterparties.collaboration.agent_scheme.Subagent import ru.evotor.framework.counterparties.mapper.CounterpartyMapper internal object SubagentMapper { - private const val KEY_TYPE = "TYPE" fun read(bundle: Bundle?): Subagent? = - bundle?.let { - Subagent( - uuid = CounterpartyMapper.readUuid(it), - type = Subagent.Type.values()[it.getInt(KEY_TYPE)], - counterpartyType = CounterpartyMapper.readCounterpartyType(it), - fullName = CounterpartyMapper.readFullName(it), - shortName = CounterpartyMapper.readShortName(it), - inn = CounterpartyMapper.readInn(it), - kpp = CounterpartyMapper.readKpp(it), - phones = CounterpartyMapper.readPhones(it), - addresses = CounterpartyMapper.readAddresses(it) - ) - } + bundle?.let { + Subagent( + uuid = CounterpartyMapper.readUuid(it), + type = Subagent.Type.values()[it.getInt(KEY_TYPE)], + counterpartyType = CounterpartyMapper.readCounterpartyType(it), + fullName = CounterpartyMapper.readFullName(it), + shortName = CounterpartyMapper.readShortName(it), + inn = CounterpartyMapper.readInn(it), + kpp = CounterpartyMapper.readKpp(it), + phones = CounterpartyMapper.readPhones(it), + addresses = CounterpartyMapper.readAddresses(it) + ) + } fun write(subagent: Subagent, bundle: Bundle) = bundle.apply { this.putInt(KEY_TYPE, subagent.type.ordinal) } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/TransactionOperatorMapper.kt b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/TransactionOperatorMapper.kt index 519eb9c17..ca3008c9f 100644 --- a/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/TransactionOperatorMapper.kt +++ b/src/main/java/ru/evotor/framework/counterparties/collaboration/agent_scheme/mapper/TransactionOperatorMapper.kt @@ -5,22 +5,20 @@ import ru.evotor.framework.counterparties.collaboration.agent_scheme.Transaction import ru.evotor.framework.counterparties.mapper.CounterpartyMapper internal object TransactionOperatorMapper { - fun read(bundle: Bundle?): TransactionOperator? = - bundle?.let { - TransactionOperator( - uuid = CounterpartyMapper.readUuid(it), - counterpartyType = CounterpartyMapper.readCounterpartyType(it), - fullName = CounterpartyMapper.readFullName(it), - shortName = CounterpartyMapper.readShortName(it), - inn = CounterpartyMapper.readInn(it), - kpp = CounterpartyMapper.readKpp(it), - phones = CounterpartyMapper.readPhones(it), - addresses = CounterpartyMapper.readAddresses(it) - ) - } + bundle?.let { + TransactionOperator( + uuid = CounterpartyMapper.readUuid(it), + counterpartyType = CounterpartyMapper.readCounterpartyType(it), + fullName = CounterpartyMapper.readFullName(it), + shortName = CounterpartyMapper.readShortName(it), + inn = CounterpartyMapper.readInn(it), + kpp = CounterpartyMapper.readKpp(it), + phones = CounterpartyMapper.readPhones(it), + addresses = CounterpartyMapper.readAddresses(it) + ) + } fun convertToNull(transactionOperator: TransactionOperator): TransactionOperator? = - CounterpartyMapper.convertToNull(transactionOperator) - -} \ No newline at end of file + CounterpartyMapper.convertToNull(transactionOperator) +} diff --git a/src/main/java/ru/evotor/framework/counterparties/mapper/CounterpartyMapper.kt b/src/main/java/ru/evotor/framework/counterparties/mapper/CounterpartyMapper.kt index 7ecb4c91c..fcb92061a 100644 --- a/src/main/java/ru/evotor/framework/counterparties/mapper/CounterpartyMapper.kt +++ b/src/main/java/ru/evotor/framework/counterparties/mapper/CounterpartyMapper.kt @@ -6,7 +6,6 @@ import java.util.* import kotlin.collections.ArrayList internal object CounterpartyMapper { - private const val KEY_UUID = "UUID" private const val KEY_COUNTERPARTY_TYPE = "COUNTERPARTY_TYPE" private const val KEY_FULL_NAME = "FULL_NAME" @@ -19,10 +18,11 @@ internal object CounterpartyMapper { fun readUuid(bundle: Bundle?) = bundle?.let { it.getString(KEY_UUID)?.let { uuid -> UUID.fromString(uuid) } } fun readCounterpartyType(bundle: Bundle?) = bundle?.let { - if (it.containsKey(KEY_COUNTERPARTY_TYPE)) + if (it.containsKey(KEY_COUNTERPARTY_TYPE)) { Counterparty.Type.values()[it.getInt(KEY_COUNTERPARTY_TYPE)] - else + } else { null + } } fun readFullName(bundle: Bundle?) = bundle?.getString(KEY_FULL_NAME) @@ -49,16 +49,17 @@ internal object CounterpartyMapper { } fun convertToNull(counterparty: C): C? = - if (counterparty.uuid == null && - counterparty.counterpartyType == null && - counterparty.fullName == null && - counterparty.shortName == null && - counterparty.inn == null && - counterparty.kpp == null && - counterparty.phones == null && - counterparty.addresses == null) - null - else - counterparty - -} \ No newline at end of file + if (counterparty.uuid == null && + counterparty.counterpartyType == null && + counterparty.fullName == null && + counterparty.shortName == null && + counterparty.inn == null && + counterparty.kpp == null && + counterparty.phones == null && + counterparty.addresses == null + ) { + null + } else { + counterparty + } +} diff --git a/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerEvent.kt b/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerEvent.kt index 59bc95399..83d409e6e 100644 --- a/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerEvent.kt +++ b/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerEvent.kt @@ -5,7 +5,6 @@ import android.os.Bundle import ru.evotor.IBundlable abstract class CashDrawerEvent internal constructor(val cashDrawerId: Int) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putInt(KEY_CASH_DRAWER_ID, cashDrawerId) @@ -13,10 +12,8 @@ abstract class CashDrawerEvent internal constructor(val cashDrawerId: Int) : IBu } companion object { - private const val KEY_CASH_DRAWER_ID = "cashDrawerId" internal fun getCashDrawerId(bundle: Bundle) = bundle.getInt(KEY_CASH_DRAWER_ID, -1) - } } diff --git a/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerOpenedEvent.kt b/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerOpenedEvent.kt index 081754530..8f0f87a25 100644 --- a/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerOpenedEvent.kt +++ b/src/main/java/ru/evotor/framework/device/cash_drawer/event/CashDrawerOpenedEvent.kt @@ -18,4 +18,4 @@ class CashDrawerOpenedEvent(cashDrawerId: Int) : CashDrawerEvent(cashDrawerId) { CashDrawerOpenedEvent(CashDrawerEvent.getCashDrawerId(it)) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/device/cash_drawer/event/handler/receiver/CashDrawerBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/device/cash_drawer/event/handler/receiver/CashDrawerBroadcastReceiver.kt index 92e2571c6..caa5e2ce2 100644 --- a/src/main/java/ru/evotor/framework/device/cash_drawer/event/handler/receiver/CashDrawerBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/device/cash_drawer/event/handler/receiver/CashDrawerBroadcastReceiver.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.device.cash_drawer.event.CashDrawerOpenedEvent * @see Использование широковещательного приёмника */ abstract class CashDrawerBroadcastReceiver : BroadcastEventReceiver() { - /** * Обработчик событий открытия денежного ящика. */ @@ -20,13 +19,15 @@ abstract class CashDrawerBroadcastReceiver : BroadcastEventReceiver() { final override fun onEvent(context: Context, action: String, bundle: Bundle) { when (action) { - ACTION_CASH_DRAWER_OPENED -> handleCashDrawerOpenedEvent(context, CashDrawerOpenedEvent.from(bundle) - ?: return) + ACTION_CASH_DRAWER_OPENED -> handleCashDrawerOpenedEvent( + context, + CashDrawerOpenedEvent.from(bundle) + ?: return + ) } } companion object { const val ACTION_CASH_DRAWER_OPENED = "evotor.intent.action.cashDrawer.OPEN" } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/device/display/DisplayApi.kt b/src/main/java/ru/evotor/framework/device/display/DisplayApi.kt index 89d22e108..332e72506 100644 --- a/src/main/java/ru/evotor/framework/device/display/DisplayApi.kt +++ b/src/main/java/ru/evotor/framework/device/display/DisplayApi.kt @@ -8,7 +8,6 @@ import android.os.Build import android.os.Bundle object DisplayApi { - /** * Возвращает id дисплея покупателя * (или 0, если отсутствует подключенный дисплей покупателя) @@ -26,7 +25,9 @@ object DisplayApi { fun getLaunchDisplayId(context: Context, display: Displays): Int { return if (display == Displays.CUSTOMER) { getCustomerDisplayId(context) - } else 0 + } else { + 0 + } } /** @@ -52,5 +53,4 @@ object DisplayApi { fun isActivityOnCustomerScreen(activity: Activity): Boolean { return activity.windowManager.defaultDisplay.displayId != 0 } - } diff --git a/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeReceivedEvent.kt b/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeReceivedEvent.kt index d7f80afd9..cd6901600 100644 --- a/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeReceivedEvent.kt +++ b/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeReceivedEvent.kt @@ -15,7 +15,6 @@ import ru.evotor.IBundlable * @param barcode отсканированный штрихкод */ class BarcodeReceivedEvent(val barcode: String) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putString(KEY_BARCODE, barcode) @@ -23,13 +22,10 @@ class BarcodeReceivedEvent(val barcode: String) : IBundlable { } companion object { - private const val KEY_BARCODE = "ScannedCode" fun from(bundle: Bundle?): BarcodeReceivedEvent? = bundle?.let { BarcodeReceivedEvent(it.getString(KEY_BARCODE) ?: return null) } - } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeScanRequestedEvent.kt b/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeScanRequestedEvent.kt index 2a7053648..6bad51fe6 100644 --- a/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeScanRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/device/scanner/event/BarcodeScanRequestedEvent.kt @@ -7,7 +7,6 @@ class BarcodeScanRequestedEvent : IntegrationEvent() { override fun toBundle() = Bundle() class Result(val barcode: String) : IntegrationEvent.Result() { - override fun toBundle() = Bundle().apply { putString(KEY_BARCODE, barcode) } @@ -23,7 +22,6 @@ class BarcodeScanRequestedEvent : IntegrationEvent() { } companion object { - @JvmStatic fun from(bundle: Bundle?) = bundle?.let { BarcodeScanRequestedEvent() diff --git a/src/main/java/ru/evotor/framework/device/scanner/event/handler/receiver/ScannerBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/device/scanner/event/handler/receiver/ScannerBroadcastReceiver.kt index 8494729fb..86cb7ea6d 100644 --- a/src/main/java/ru/evotor/framework/device/scanner/event/handler/receiver/ScannerBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/device/scanner/event/handler/receiver/ScannerBroadcastReceiver.kt @@ -13,7 +13,6 @@ import ru.evotor.framework.device.scanner.event.BarcodeReceivedEvent * @see Использование широковещательного приёмника */ abstract class ScannerBroadcastReceiver : BroadcastEventReceiver() { - /** * Обработчик событий получения штрихкода. */ @@ -24,19 +23,19 @@ abstract class ScannerBroadcastReceiver : BroadcastEventReceiver() { @SuppressLint("MissingPermission") final override fun onEvent(context: Context, action: String, bundle: Bundle) { when (action) { - ACTION_BARCODE_RECEIVED -> handleBarcodeReceivedEvent(context, BarcodeReceivedEvent.from(bundle) - ?: return) + ACTION_BARCODE_RECEIVED -> handleBarcodeReceivedEvent( + context, + BarcodeReceivedEvent.from(bundle) + ?: return + ) } } companion object { - const val ACTION_BARCODE_RECEIVED = "ru.evotor.devices.ScannedCode" const val SENDER_PERMISSION = "ru.evotor.devices.SCANNER_SENDER" const val RECEIVER_PERMISSION = "ru.evotor.devices.SCANNER_RECEIVER" - } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/device/scanner/event/handler/service/ScannerIntegrationService.kt b/src/main/java/ru/evotor/framework/device/scanner/event/handler/service/ScannerIntegrationService.kt index 0fd55984d..8a9497c44 100644 --- a/src/main/java/ru/evotor/framework/device/scanner/event/handler/service/ScannerIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/device/scanner/event/handler/service/ScannerIntegrationService.kt @@ -6,7 +6,6 @@ import ru.evotor.framework.core.RequiresIntentAction import ru.evotor.framework.device.scanner.event.BarcodeScanRequestedEvent abstract class ScannerIntegrationService : IntegrationServiceV2() { - @RequiresIntentAction(ACTION_BARCODE_SCAN_REQUEST) abstract fun handleBarcodeScanRequestedEvent(event: BarcodeScanRequestedEvent): BarcodeScanRequestedEvent.Result? @@ -16,7 +15,6 @@ abstract class ScannerIntegrationService : IntegrationServiceV2() { } companion object { - const val ACTION_BARCODE_SCAN_REQUEST = "evotor.intent.action.BARCODE_SCAN_REQUEST" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt index 6267fbf15..ee9a3da3d 100644 --- a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt +++ b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt @@ -15,7 +15,6 @@ import ru.evotor.framework.features.provider.FeaturesContract * возможность добавлять в чек реквизиты покупателя. */ object FeaturesApi { - /** * Проверяет, активна ли на смарт-терминале функция "НДС 20%". * @@ -310,16 +309,16 @@ object FeaturesApi { fun isVeterinaryMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_VETERINARY_MARK) private fun isFeatureActive(context: Context, path: String, defaultValue: Boolean = false): Boolean = - context.contentResolver.query( - Uri.withAppendedPath(FeaturesContract.BASE_URI, path), - null, - null, - null, - null - )?.use { - it.moveToFirst() - it.getInt(it.getColumnIndex(FeaturesContract.COLUMN_IS_ACTIVE)) == 1 - } ?: defaultValue + context.contentResolver.query( + Uri.withAppendedPath(FeaturesContract.BASE_URI, path), + null, + null, + null, + null + )?.use { + it.moveToFirst() + it.getInt(it.getColumnIndex(FeaturesContract.COLUMN_IS_ACTIVE)) == 1 + } ?: defaultValue /** * Проверяет, активна ли функция "Маркировка кормов для животных" на данном терминале diff --git a/src/main/java/ru/evotor/framework/fs/FsFiscalizationDocument.kt b/src/main/java/ru/evotor/framework/fs/FsFiscalizationDocument.kt index c04e557c1..ad3b2cf07 100644 --- a/src/main/java/ru/evotor/framework/fs/FsFiscalizationDocument.kt +++ b/src/main/java/ru/evotor/framework/fs/FsFiscalizationDocument.kt @@ -5,7 +5,6 @@ import java.util.* import kotlin.collections.ArrayList import kotlin.experimental.and - /** * Сокращенный отчет о регистрации ФН */ @@ -113,7 +112,6 @@ data class FsFiscalizationDocument( */ fun isInternetPays() = isBitSet(workModeFlags, 5) - private fun isBitSet(value: Byte, bitNum: Int): Boolean { if ((bitNum < 0) && (bitNum > 7)) { return false @@ -121,4 +119,4 @@ data class FsFiscalizationDocument( val mask: Byte = 1.shl(bitNum).toByte() return value and mask == mask } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/fs/api/FsApi.kt b/src/main/java/ru/evotor/framework/fs/api/FsApi.kt index 1de2720d8..a4e588ccd 100644 --- a/src/main/java/ru/evotor/framework/fs/api/FsApi.kt +++ b/src/main/java/ru/evotor/framework/fs/api/FsApi.kt @@ -132,9 +132,9 @@ object FsApi { } } - sealed class GetFsFiscalizationDocumentResult { class Success(val document: FsFiscalizationDocument?) : GetFsFiscalizationDocumentResult() + object Unsupported : GetFsFiscalizationDocumentResult() } } diff --git a/src/main/java/ru/evotor/framework/inventory/AlcoCodeTable.kt b/src/main/java/ru/evotor/framework/inventory/AlcoCodeTable.kt index e08798885..37ce65917 100644 --- a/src/main/java/ru/evotor/framework/inventory/AlcoCodeTable.kt +++ b/src/main/java/ru/evotor/framework/inventory/AlcoCodeTable.kt @@ -3,7 +3,7 @@ package ru.evotor.framework.inventory import android.net.Uri internal object AlcoCodeTable { - @JvmField val URI = Uri.withAppendedPath(ru.evotor.framework.inventory.InventoryApi.BASE_URI, "AlcoCode") + @JvmField val URI = Uri.withAppendedPath(InventoryApi.BASE_URI, "AlcoCode") const val COLUMN_ALCO_CODE = "ALCO_CODE" const val COLUMN_COMMODITY_UUID = "COMMODITY_UUID" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/inventory/AttributeValue.kt b/src/main/java/ru/evotor/framework/inventory/AttributeValue.kt index cf1e4a86c..bae2f337e 100644 --- a/src/main/java/ru/evotor/framework/inventory/AttributeValue.kt +++ b/src/main/java/ru/evotor/framework/inventory/AttributeValue.kt @@ -10,35 +10,30 @@ private const val VERSION = 1 * Значение атрибута */ data class AttributeValue( - /** - * Уникальный идентификатор атрибута - */ - val attributeUuid: String, - - /** - * Имя атрибута (ex. 'Цвет') - */ - val attributeName: String, - - /** - * Уникальный идентификатор значения атрибута - */ - val uuid: String, - - /** - * Имя значения атрибута (ex. 'Черный') - */ - val name: String - + /** + * Уникальный идентификатор атрибута + */ + val attributeUuid: String, + /** + * Имя атрибута (ex. 'Цвет') + */ + val attributeName: String, + /** + * Уникальный идентификатор значения атрибута + */ + val uuid: String, + /** + * Имя значения атрибута (ex. 'Черный') + */ + val name: String ) : Parcelable { - override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeInt(VERSION) // Determine position in parcel for writing data size val dataSizePosition = parcel.dataPosition() // Use integer placeholder for data size parcel.writeInt(0) - //Determine position of data start + // Determine position of data start val startDataPosition = parcel.dataPosition() parcel.writeString(attributeUuid) @@ -49,7 +44,7 @@ data class AttributeValue( val dataSize = parcel.dataPosition() - startDataPosition // Save position at the end of data val endOfDataPosition = parcel.dataPosition() - //Set position to start to write additional data size + // Set position to start to write additional data size parcel.setDataPosition(dataSizePosition) parcel.writeInt(dataSize) // Go back to the end of parcel @@ -57,9 +52,10 @@ data class AttributeValue( } override fun describeContents(): Int = 0 + companion object { @JvmStatic - fun readFromParcel(parcel : Parcel) : AttributeValue { + fun readFromParcel(parcel: Parcel): AttributeValue { val version = parcel.readInt() val dataSize = parcel.readInt() val dataStartPosition = parcel.dataPosition() @@ -74,7 +70,7 @@ data class AttributeValue( @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): AttributeValue = - readFromParcel(parcel) + readFromParcel(parcel) override fun newArray(size: Int): Array = arrayOfNulls(size) } diff --git a/src/main/java/ru/evotor/framework/inventory/AttributeWithValues.kt b/src/main/java/ru/evotor/framework/inventory/AttributeWithValues.kt index 83f6dc0b7..5aff3bb88 100644 --- a/src/main/java/ru/evotor/framework/inventory/AttributeWithValues.kt +++ b/src/main/java/ru/evotor/framework/inventory/AttributeWithValues.kt @@ -10,21 +10,18 @@ private const val VERSION = 1 * Атрибут */ data class AttributeWithValues( - /** - * Уникальный идентификатор атрибута - */ - val uuid: String, - - /** - * Имя атрибута (ex. 'Цвет') - */ - val name: String, - - /** - * Список значений атрибутов - */ - val attributeValues: List - + /** + * Уникальный идентификатор атрибута + */ + val uuid: String, + /** + * Имя атрибута (ex. 'Цвет') + */ + val name: String, + /** + * Список значений атрибутов + */ + val attributeValues: List ) : Parcelable { override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeInt(VERSION) @@ -32,7 +29,7 @@ data class AttributeWithValues( val dataSizePosition = parcel.dataPosition() // Use integer placeholder for data size parcel.writeInt(0) - //Determine position of data start + // Determine position of data start val startDataPosition = parcel.dataPosition() parcel.writeString(uuid) parcel.writeString(name) @@ -41,7 +38,7 @@ data class AttributeWithValues( val dataSize = parcel.dataPosition() - startDataPosition // Save position at the end of data val endOfDataPosition = parcel.dataPosition() - //Set position to start to write data size + // Set position to start to write data size parcel.setDataPosition(dataSizePosition) parcel.writeInt(dataSize) // Go back to the end of parcel @@ -51,9 +48,8 @@ data class AttributeWithValues( override fun describeContents(): Int = 0 companion object { - @JvmStatic - fun readFromParcel(parcel: Parcel) : AttributeWithValues { + fun readFromParcel(parcel: Parcel): AttributeWithValues { val version = parcel.readInt() val dataSize = parcel.readInt() val dataStartPosition = parcel.dataPosition() @@ -61,7 +57,7 @@ data class AttributeWithValues( val name = parcel.readString() ?: throw IntegrationLibraryParsingException(AttributeWithValues::class.java) val attributeValues = parcel.createTypedArrayList(AttributeValue.CREATOR) ?: throw IntegrationLibraryParsingException(AttributeWithValues::class.java) parcel.setDataPosition(dataStartPosition + dataSize) - return AttributeWithValues(uuid, name, attributeValues) + return AttributeWithValues(uuid, name, attributeValues.filterNotNull()) } @JvmField diff --git a/src/main/java/ru/evotor/framework/inventory/BarcodeTable.kt b/src/main/java/ru/evotor/framework/inventory/BarcodeTable.kt index f2cccce74..244f9a1d7 100644 --- a/src/main/java/ru/evotor/framework/inventory/BarcodeTable.kt +++ b/src/main/java/ru/evotor/framework/inventory/BarcodeTable.kt @@ -3,6 +3,6 @@ package ru.evotor.framework.inventory import android.net.Uri object BarcodeTable { - @JvmField val URI = Uri.withAppendedPath(ru.evotor.framework.inventory.InventoryApi.BASE_URI, "Barcode") + @JvmField val URI = Uri.withAppendedPath(InventoryApi.BASE_URI, "Barcode") const val ROW_BARCODE = "BARCODE" } diff --git a/src/main/java/ru/evotor/framework/inventory/InventoryApi.kt b/src/main/java/ru/evotor/framework/inventory/InventoryApi.kt index 15c9c3407..53952d54e 100644 --- a/src/main/java/ru/evotor/framework/inventory/InventoryApi.kt +++ b/src/main/java/ru/evotor/framework/inventory/InventoryApi.kt @@ -14,9 +14,7 @@ import ru.evotor.framework.optString * Created by nixan on 06.03.17. */ - object InventoryApi { - @JvmField val BASE_URI: Uri = Uri.parse("content://ru.evotor.evotorpos.inventory") @@ -26,92 +24,95 @@ object InventoryApi { fun getAllBarcodesForProduct(context: Context, productUuid: String): List { val barcodesList = ArrayList() context.contentResolver.query( - Uri.withAppendedPath(BarcodeTable.URI, productUuid), - null, null, null, null) - ?.use { cursor -> - while (cursor.moveToNext()) { - val barcode: String = cursor.getString(cursor.getColumnIndex(BarcodeTable.ROW_BARCODE)) - barcodesList.add(barcode) - } + Uri.withAppendedPath(BarcodeTable.URI, productUuid), + null, + null, + null, + null + ) + ?.use { cursor -> + while (cursor.moveToNext()) { + val barcode: String = cursor.getString(cursor.getColumnIndex(BarcodeTable.ROW_BARCODE)) + barcodesList.add(barcode) } + } return barcodesList } @JvmStatic fun getAlcoCodesForProduct(context: Context, productUuid: String): List? = - context.contentResolver.query( - AlcoCodeTable.URI, - arrayOf(AlcoCodeTable.COLUMN_ALCO_CODE), - "${AlcoCodeTable.COLUMN_COMMODITY_UUID} = ?", - arrayOf(productUuid), - null - )?.let { - (object : ru.evotor.query.Cursor(it) { + context.contentResolver.query( + AlcoCodeTable.URI, + arrayOf(AlcoCodeTable.COLUMN_ALCO_CODE), + "${AlcoCodeTable.COLUMN_COMMODITY_UUID} = ?", + arrayOf(productUuid), + null + )?.let { + ( + object : ru.evotor.query.Cursor(it) { override fun getValue() = getString(getColumnIndex(AlcoCodeTable.COLUMN_ALCO_CODE)) - - }).toList() - } + } + ).toList() + } @JvmStatic fun getProductByUuid(context: Context, uuid: String): ProductItem? { if (uuid.isBlank()) return null context.contentResolver - .query(Uri.withAppendedPath(ProductTable.URI, uuid), null, null, null, null) - ?.use { cursor -> - try { - if (cursor.moveToFirst()) { - return ProductMapper.getValueFromCursor(cursor) - } - } catch (e: Exception) { - e.printStackTrace() + .query(Uri.withAppendedPath(ProductTable.URI, uuid), null, null, null, null) + ?.use { cursor -> + try { + if (cursor.moveToFirst()) { + return ProductMapper.getValueFromCursor(cursor) } + } catch (e: Exception) { + e.printStackTrace() } + } return null } @JvmStatic fun getProductsByAlcoCode(context: Context, alcoCode: String): List? = - context.contentResolver.query( - AlcoCodeTable.URI, - arrayOf(AlcoCodeTable.COLUMN_COMMODITY_UUID), - "${AlcoCodeTable.COLUMN_ALCO_CODE} = ?", - arrayOf(alcoCode), - null - )?.use { - ArrayList().apply { - fun addValue() = this.add( - getProductByUuid( - context, - it.getString(it.getColumnIndex(AlcoCodeTable.COLUMN_COMMODITY_UUID)) - ) as ProductItem.Product? - ) - if (it.moveToFirst()) { + context.contentResolver.query( + AlcoCodeTable.URI, + arrayOf(AlcoCodeTable.COLUMN_COMMODITY_UUID), + "${AlcoCodeTable.COLUMN_ALCO_CODE} = ?", + arrayOf(alcoCode), + null + )?.use { + ArrayList().apply { + fun addValue() = this.add( + getProductByUuid( + context, + it.getString(it.getColumnIndex(AlcoCodeTable.COLUMN_COMMODITY_UUID)) + ) as ProductItem.Product? + ) + if (it.moveToFirst()) { + addValue() + while (it.moveToNext()) { addValue() - while (it.moveToNext()) { - addValue() - } } } } + } @JvmStatic fun getProductExtras(context: Context, productUuid: String): List { val result = ArrayList() - context.contentResolver - .query(ProductExtraTable.URI, null, "${ProductExtraTable.ROW_PRODUCT_UUID} = ?", arrayOf(productUuid), null) - ?.use { cursor -> - try { - if (cursor.moveToFirst()) { - do { - result.add(createProductExtra(cursor)) - } while (cursor.moveToNext()) - } - } catch (e: Exception) { - e.printStackTrace() + .query(ProductExtraTable.URI, null, "${ProductExtraTable.ROW_PRODUCT_UUID} = ?", arrayOf(productUuid), null) + ?.use { cursor -> + try { + if (cursor.moveToFirst()) { + do { + result.add(createProductExtra(cursor)) + } while (cursor.moveToNext()) } + } catch (e: Exception) { + e.printStackTrace() } - + } return result } @@ -128,19 +129,19 @@ object InventoryApi { null ) ?.use { cursor -> - try { - if (cursor.moveToFirst()) { - do { - val newProductUuid = cursor.getString(cursor.getColumnIndexOrThrow("COMMODITY_UUID")) - - newProductUuid?.let { - productUuidList.add(newProductUuid) - } - } while (cursor.moveToNext()) - } - } catch (e: Exception) { - e.printStackTrace() + try { + if (cursor.moveToFirst()) { + do { + val newProductUuid = cursor.getString(cursor.getColumnIndexOrThrow("COMMODITY_UUID")) + + newProductUuid?.let { + productUuidList.add(newProductUuid) + } + } while (cursor.moveToNext()) } + } catch (e: Exception) { + e.printStackTrace() + } } productUuidList.forEach { uuid -> @@ -173,30 +174,30 @@ object InventoryApi { private fun createProductExtra(cursor: Cursor): ProductExtra { return ProductExtra( - uuid = cursor.getString(cursor.getColumnIndex(ProductExtraTable.ROW_UUID)), - name = cursor.optString(ProductExtraTable.ROW_NAME), - commodityUUID = cursor.getString(cursor.getColumnIndex(ProductExtraTable.ROW_PRODUCT_UUID)), - fieldUUID = cursor.getString(cursor.getColumnIndex(ProductExtraTable.ROW_FIELD_UUID)), - fieldValue = cursor.optString(ProductExtraTable.ROW_FIELD_VALUE), - data = cursor.optString(ProductExtraTable.ROW_DATA) + uuid = cursor.getString(cursor.getColumnIndex(ProductExtraTable.ROW_UUID)), + name = cursor.optString(ProductExtraTable.ROW_NAME), + commodityUUID = cursor.getString(cursor.getColumnIndex(ProductExtraTable.ROW_PRODUCT_UUID)), + fieldUUID = cursor.getString(cursor.getColumnIndex(ProductExtraTable.ROW_FIELD_UUID)), + fieldValue = cursor.optString(ProductExtraTable.ROW_FIELD_VALUE), + data = cursor.optString(ProductExtraTable.ROW_DATA) ) } @JvmStatic fun getField(context: Context, fieldUuid: String): Field? { context.contentResolver - .query(FieldTable.URI, null, "${FieldTable.ROW_FIELD_UUID} = ?", arrayOf(fieldUuid), null) - ?.use { cursor -> - try { - return if (cursor.moveToFirst()) { - createField(cursor) - } else { - null - } - } catch (e: Exception) { - e.printStackTrace() + .query(FieldTable.URI, null, "${FieldTable.ROW_FIELD_UUID} = ?", arrayOf(fieldUuid), null) + ?.use { cursor -> + try { + return if (cursor.moveToFirst()) { + createField(cursor) + } else { + null } + } catch (e: Exception) { + e.printStackTrace() } + } return null } @@ -206,39 +207,36 @@ object InventoryApi { val title = cursor.getString(cursor.getColumnIndex(FieldTable.ROW_TITLE)) val specificData = JSONObject(cursor.getString(cursor.getColumnIndex(FieldTable.ROW_SPECIFIC_DATA))) - when (cursor.getInt(cursor.getColumnIndex(FieldTable.ROW_TYPE))) { FieldTable.TYPE_DICTIONARY -> { val jsonItems = specificData.optJSONArray("items") val items = (0 until jsonItems.length()) - .map { jsonItems.getJSONObject(it) } - .map { - DictionaryField.Item( - title = it.optString("title"), - value = it.opt("value"), - data = it.opt("data") - ) - } + .map { jsonItems.getJSONObject(it) } + .map { + DictionaryField.Item( + title = it.optString("title"), + value = it.opt("value"), + data = it.opt("data") + ) + } return DictionaryField( - name = name, - fieldUUID = fieldUUID, - title = title, - items = items.toTypedArray(), - multiple = specificData.optBoolean("multiple") - + name = name, + fieldUUID = fieldUUID, + title = title, + items = items.toTypedArray(), + multiple = specificData.optBoolean("multiple") ) } FieldTable.TYPE_TEXT_FIELD -> { return TextField( - name = name, - fieldUUID = fieldUUID, - title = title, - data = specificData.optString("data") + name = name, + fieldUUID = fieldUUID, + title = title, + data = specificData.optString("data") ) } else -> return null } } - } diff --git a/src/main/java/ru/evotor/framework/inventory/ProductExtra.kt b/src/main/java/ru/evotor/framework/inventory/ProductExtra.kt index fad0060de..538237206 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductExtra.kt +++ b/src/main/java/ru/evotor/framework/inventory/ProductExtra.kt @@ -4,10 +4,10 @@ package ru.evotor.framework.inventory * Created by a.kuznetsov on 26/03/2017. */ data class ProductExtra( - val uuid: String, - val name: String?, - val commodityUUID: String, - val fieldUUID: String, - val fieldValue: Any?, - val data: String? -) \ No newline at end of file + val uuid: String, + val name: String?, + val commodityUUID: String, + val fieldUUID: String, + val fieldValue: Any?, + val data: String? +) diff --git a/src/main/java/ru/evotor/framework/inventory/ProductExtraTable.kt b/src/main/java/ru/evotor/framework/inventory/ProductExtraTable.kt index 42a2acae0..016882a52 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductExtraTable.kt +++ b/src/main/java/ru/evotor/framework/inventory/ProductExtraTable.kt @@ -15,4 +15,4 @@ object ProductExtraTable { const val ROW_FIELD_UUID = "FIELD_UUID" const val ROW_FIELD_VALUE = "FIELD_VALUE" const val ROW_DATA = "DATA" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/inventory/ProductItem.kt b/src/main/java/ru/evotor/framework/inventory/ProductItem.kt index b3ce772a2..f44d69533 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductItem.kt +++ b/src/main/java/ru/evotor/framework/inventory/ProductItem.kt @@ -5,49 +5,49 @@ import ru.evotor.framework.receipt.TaxNumber import java.math.BigDecimal sealed class ProductItem( - val uuid: String, - val parentUuid: String?, - val code: String?, - val name: String + val uuid: String, + val parentUuid: String?, + val code: String?, + val name: String ) { class ProductGroup( - uuid: String, - parentUuid: String?, - code: String?, - name: String, - val taxNumber: TaxNumber + uuid: String, + parentUuid: String?, + code: String?, + name: String, + val taxNumber: TaxNumber ) : ProductItem( uuid, parentUuid, code, name - ) + ) class Product( - uuid: String, - parentUuid: String?, - code: String?, - name: String, - val taxNumber: TaxNumber, - val type: ProductType, - val price: BigDecimal, - val costPrice: BigDecimal?, - val quantity: BigDecimal, - val description: String?, - val measure: Measure, - val alcoholByVolume: BigDecimal?, - val alcoholProductKindCode: Long?, - val tareVolume: BigDecimal?, - val classificationCode: String?, - val allowPartialRealization: AllowPartialRealization?, - val isExcisable: Boolean?, - val isAgeLimited: Boolean? + uuid: String, + parentUuid: String?, + code: String?, + name: String, + val taxNumber: TaxNumber, + val type: ProductType, + val price: BigDecimal, + val costPrice: BigDecimal?, + val quantity: BigDecimal, + val description: String?, + val measure: Measure, + val alcoholByVolume: BigDecimal?, + val alcoholProductKindCode: Long?, + val tareVolume: BigDecimal?, + val classificationCode: String?, + val allowPartialRealization: AllowPartialRealization?, + val isExcisable: Boolean?, + val isAgeLimited: Boolean? ) : ProductItem( uuid, parentUuid, code, name - ) + ) override fun equals(other: Any?): Boolean { if (this === other) return true diff --git a/src/main/java/ru/evotor/framework/inventory/ProductMapper.kt b/src/main/java/ru/evotor/framework/inventory/ProductMapper.kt index c918b2763..9729c4083 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductMapper.kt +++ b/src/main/java/ru/evotor/framework/inventory/ProductMapper.kt @@ -22,33 +22,33 @@ internal object ProductMapper { try { if (cursor.getInt(cursor.getColumnIndex(ProductTable.ROW_IS_GROUP)) > 0) { return ProductItem.ProductGroup( - uuid = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_UUID)), - parentUuid = cursor.optString(ProductTable.ROW_PARENT_UUID), - code = cursor.optString(ProductTable.ROW_CODE), - name = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_NAME)), - taxNumber = Utils.safeValueOf(TaxNumber::class.java, cursor.getString(cursor.getColumnIndex(ProductTable.ROW_TAX_NUMBER)), TaxNumber.NO_VAT) + uuid = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_UUID)), + parentUuid = cursor.optString(ProductTable.ROW_PARENT_UUID), + code = cursor.optString(ProductTable.ROW_CODE), + name = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_NAME)), + taxNumber = Utils.safeValueOf(TaxNumber::class.java, cursor.getString(cursor.getColumnIndex(ProductTable.ROW_TAX_NUMBER)), TaxNumber.NO_VAT) ) } else { val productType = Utils.safeValueOf(ProductType::class.java, cursor.getString(cursor.getColumnIndex(ProductTable.ROW_TYPE)), ProductType.NORMAL) return ProductItem.Product( - uuid = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_UUID)), - parentUuid = cursor.optString(ProductTable.ROW_PARENT_UUID), - code = cursor.optString(ProductTable.ROW_CODE), - type = productType, - name = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_NAME)), - description = cursor.optString(ProductTable.ROW_DESCRIPTION), - price = cursor.getMoney(ProductTable.ROW_PRICE_OUT), - costPrice = cursor.optMoney(ProductTable.ROW_COST_PRICE), - quantity = cursor.getQuantity(ProductTable.ROW_QUANTITY), - measure = readFromProductCursor(cursor), - alcoholByVolume = cursor.optVolume(ProductTable.ROW_ALCOHOL_BY_VOLUME), - alcoholProductKindCode = cursor.optLong(ProductTable.ROW_ALCOHOL_PRODUCT_KIND_CODE), - tareVolume = cursor.optVolume(ProductTable.ROW_TARE_VOLUME), - taxNumber = Utils.safeValueOf(TaxNumber::class.java, cursor.getString(cursor.getColumnIndex(ProductTable.ROW_TAX_NUMBER)), TaxNumber.NO_VAT), - classificationCode = cursor.optString(ProductTable.ROW_CLASSIFICATION_CODE), - allowPartialRealization = Utils.safeValueOf(ProductItem.AllowPartialRealization::class.java, cursor.optString(ProductTable.ROW_ALLOW_PARTIAL_SALE), null), - isExcisable = cursor.optBoolean(ProductTable.ROW_IS_EXCISABLE), - isAgeLimited = cursor.optBoolean(ProductTable.ROW_IS_AGE_LIMITED) + uuid = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_UUID)), + parentUuid = cursor.optString(ProductTable.ROW_PARENT_UUID), + code = cursor.optString(ProductTable.ROW_CODE), + type = productType, + name = cursor.getString(cursor.getColumnIndex(ProductTable.ROW_NAME)), + description = cursor.optString(ProductTable.ROW_DESCRIPTION), + price = cursor.getMoney(ProductTable.ROW_PRICE_OUT), + costPrice = cursor.optMoney(ProductTable.ROW_COST_PRICE), + quantity = cursor.getQuantity(ProductTable.ROW_QUANTITY), + measure = readFromProductCursor(cursor), + alcoholByVolume = cursor.optVolume(ProductTable.ROW_ALCOHOL_BY_VOLUME), + alcoholProductKindCode = cursor.optLong(ProductTable.ROW_ALCOHOL_PRODUCT_KIND_CODE), + tareVolume = cursor.optVolume(ProductTable.ROW_TARE_VOLUME), + taxNumber = Utils.safeValueOf(TaxNumber::class.java, cursor.getString(cursor.getColumnIndex(ProductTable.ROW_TAX_NUMBER)), TaxNumber.NO_VAT), + classificationCode = cursor.optString(ProductTable.ROW_CLASSIFICATION_CODE), + allowPartialRealization = Utils.safeValueOf(ProductItem.AllowPartialRealization::class.java, cursor.optString(ProductTable.ROW_ALLOW_PARTIAL_SALE), null), + isExcisable = cursor.optBoolean(ProductTable.ROW_IS_EXCISABLE), + isAgeLimited = cursor.optBoolean(ProductTable.ROW_IS_AGE_LIMITED) ) } } catch (e: Exception) { @@ -60,9 +60,9 @@ internal object ProductMapper { private fun readFromProductCursor(cursor: Cursor): Measure { return cursor.let { Measure( - it.getString(cursor.getColumnIndex(ProductTable.ROW_MEASURE_NAME)), - it.getInt(cursor.getColumnIndex(ProductTable.ROW_MEASURE_PRECISION)), - it.optInt(ProductTable.ROW_MEASURE_CODE) ?: Measure.UNKNOWN_MEASURE_CODE + it.getString(cursor.getColumnIndex(ProductTable.ROW_MEASURE_NAME)), + it.getInt(cursor.getColumnIndex(ProductTable.ROW_MEASURE_PRECISION)), + it.optInt(ProductTable.ROW_MEASURE_CODE) ?: Measure.UNKNOWN_MEASURE_CODE ) } } diff --git a/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt b/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt index aa2561f6b..309ef37ed 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt +++ b/src/main/java/ru/evotor/framework/inventory/ProductQuery.kt @@ -9,75 +9,99 @@ import java.math.BigDecimal * Created by a.lunkov on 07.03.2018. */ class ProductQuery : FilterBuilder(ProductTable.URI) { - @JvmField val uuid = addFieldFilter(ProductTable.ROW_UUID) + @JvmField val parentUuid = addFieldFilter(ProductTable.ROW_PARENT_UUID) + @JvmField val code = addFieldFilter(ProductTable.ROW_CODE) + @JvmField val name = addFieldFilter(ProductTable.ROW_NAME) + @JvmField val taxNumber = addFieldFilter(ProductTable.ROW_TAX_NUMBER) + @JvmField val type = addFieldFilter(ProductTable.ROW_TYPE) + @JvmField - val price = addFieldFilter(ProductTable.ROW_PRICE_OUT, {it.multiply(BigDecimal(100))}) + val price = addFieldFilter(ProductTable.ROW_PRICE_OUT, { it.multiply(BigDecimal(100)) }) + @JvmField - val costPrice = addFieldFilter(ProductTable.ROW_COST_PRICE, {it?.multiply(BigDecimal(100))}) + val costPrice = addFieldFilter(ProductTable.ROW_COST_PRICE, { it?.multiply(BigDecimal(100)) }) + @JvmField - val quantity = addFieldFilter(ProductTable.ROW_QUANTITY, {it.multiply(BigDecimal(1000))}) + val quantity = addFieldFilter(ProductTable.ROW_QUANTITY, { it.multiply(BigDecimal(1000)) }) + @JvmField val description = addFieldFilter(ProductTable.ROW_DESCRIPTION) + @JvmField val measureName = addFieldFilter(ProductTable.ROW_MEASURE_NAME) + @JvmField val measurePrecision = addFieldFilter(ProductTable.ROW_MEASURE_PRECISION) + @JvmField - val alcoholByVolume = addFieldFilter(ProductTable.ROW_ALCOHOL_BY_VOLUME, {it?.multiply(BigDecimal(1000))}) + val alcoholByVolume = addFieldFilter(ProductTable.ROW_ALCOHOL_BY_VOLUME, { it?.multiply(BigDecimal(1000)) }) + @JvmField val alcoholProductKindCode = addFieldFilter(ProductTable.ROW_ALCOHOL_PRODUCT_KIND_CODE) + @JvmField - val tareVolume = addFieldFilter(ProductTable.ROW_TARE_VOLUME, {it?.multiply(BigDecimal(1000))}) + val tareVolume = addFieldFilter(ProductTable.ROW_TARE_VOLUME, { it?.multiply(BigDecimal(1000)) }) class SortOrder : FilterBuilder.SortOrder() { - @JvmField val uuid = addFieldSorter(ProductTable.ROW_UUID) + @JvmField val parentUuid = addFieldSorter(ProductTable.ROW_PARENT_UUID) + @JvmField val code = addFieldSorter(ProductTable.ROW_CODE) + @JvmField val name = addFieldSorter(ProductTable.ROW_NAME) + @JvmField val taxNumber = addFieldSorter(ProductTable.ROW_TAX_NUMBER) + @JvmField val type = addFieldSorter(ProductTable.ROW_TYPE) + @JvmField val price = addFieldSorter(ProductTable.ROW_PRICE_OUT) + @JvmField val costPrice = addFieldSorter(ProductTable.ROW_COST_PRICE) + @JvmField val quantity = addFieldSorter(ProductTable.ROW_QUANTITY) + @JvmField val description = addFieldSorter(ProductTable.ROW_DESCRIPTION) + @JvmField val measureName = addFieldSorter(ProductTable.ROW_MEASURE_NAME) + @JvmField val measurePrecision = addFieldSorter(ProductTable.ROW_MEASURE_PRECISION) + @JvmField val alcoholByVolume = addFieldSorter(ProductTable.ROW_ALCOHOL_BY_VOLUME) + @JvmField val alcoholProductKindCode = addFieldSorter(ProductTable.ROW_ALCOHOL_PRODUCT_KIND_CODE) + @JvmField val tareVolume = addFieldSorter(ProductTable.ROW_TARE_VOLUME) - } override fun getValue(cursor: Cursor): ProductItem? { return ProductMapper.getValueFromCursor(cursor) } - } diff --git a/src/main/java/ru/evotor/framework/inventory/ProductTable.kt b/src/main/java/ru/evotor/framework/inventory/ProductTable.kt index 1d5279611..856dad6c2 100644 --- a/src/main/java/ru/evotor/framework/inventory/ProductTable.kt +++ b/src/main/java/ru/evotor/framework/inventory/ProductTable.kt @@ -7,6 +7,7 @@ import android.net.Uri */ object ProductTable { @JvmField val URI = Uri.withAppendedPath(InventoryApi.BASE_URI, "Commodity") + @JvmField val COMMODITY_BARCODE_URI = Uri.withAppendedPath(InventoryApi.BASE_URI, "CommodityBarcode") const val ROW_UUID = "UUID" diff --git a/src/main/java/ru/evotor/framework/inventory/event/ProductCardOpenedEvent.kt b/src/main/java/ru/evotor/framework/inventory/event/ProductCardOpenedEvent.kt index 3b66891e4..1d1a106d8 100644 --- a/src/main/java/ru/evotor/framework/inventory/event/ProductCardOpenedEvent.kt +++ b/src/main/java/ru/evotor/framework/inventory/event/ProductCardOpenedEvent.kt @@ -18,4 +18,4 @@ class ProductCardOpenedEvent(productUuid: String) : ProductEvent(productUuid) { ProductCardOpenedEvent(ProductEvent.getProductUuid(it) ?: return null) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/inventory/event/ProductEvent.kt b/src/main/java/ru/evotor/framework/inventory/event/ProductEvent.kt index 3e8e66d97..d5ce3bf7a 100644 --- a/src/main/java/ru/evotor/framework/inventory/event/ProductEvent.kt +++ b/src/main/java/ru/evotor/framework/inventory/event/ProductEvent.kt @@ -5,7 +5,6 @@ import android.os.Bundle import ru.evotor.IBundlable abstract class ProductEvent internal constructor(val productUuid: String?) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putString(KEY_PRODUCT_UUID, productUuid) @@ -13,11 +12,8 @@ abstract class ProductEvent internal constructor(val productUuid: String?) : IBu } companion object { - private const val KEY_PRODUCT_UUID = "productUuid" internal fun getProductUuid(bundle: Bundle): String? = bundle.getString(KEY_PRODUCT_UUID) - } - } diff --git a/src/main/java/ru/evotor/framework/inventory/event/handler/receiver/InventoryBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/inventory/event/handler/receiver/InventoryBroadcastReceiver.kt index 758aa2eda..6bec028f4 100644 --- a/src/main/java/ru/evotor/framework/inventory/event/handler/receiver/InventoryBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/inventory/event/handler/receiver/InventoryBroadcastReceiver.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.inventory.event.ProductCardOpenedEvent * @see Использование широковещательного приёмника */ open class InventoryBroadcastReceiver : BroadcastEventReceiver() { - /** * Обработчик событий открытия карточки товара. */ @@ -20,13 +19,15 @@ open class InventoryBroadcastReceiver : BroadcastEventReceiver() { final override fun onEvent(context: Context, action: String, bundle: Bundle) { when (action) { - ACTION_PRODUCT_CARD_OPENED -> handleProductCardOpenedEvent(context, ProductCardOpenedEvent.from(bundle) - ?: return) + ACTION_PRODUCT_CARD_OPENED -> handleProductCardOpenedEvent( + context, + ProductCardOpenedEvent.from(bundle) + ?: return + ) } } companion object { const val ACTION_PRODUCT_CARD_OPENED = "evotor.intent.action.inventory.CARD_OPEN" } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/inventory/field/DictionaryField.kt b/src/main/java/ru/evotor/framework/inventory/field/DictionaryField.kt index bb7ee314c..3bedee531 100644 --- a/src/main/java/ru/evotor/framework/inventory/field/DictionaryField.kt +++ b/src/main/java/ru/evotor/framework/inventory/field/DictionaryField.kt @@ -1,20 +1,20 @@ package ru.evotor.framework.inventory.field class DictionaryField( - name: String?, - fieldUUID: String, - title: String?, - val multiple: Boolean, - val items: Array + name: String?, + fieldUUID: String, + title: String?, + val multiple: Boolean, + val items: Array ) : Field( name, fieldUUID, title, Type.DICTIONARY_FIELD -) { + ) { class Item( - val title: String, - val value: Any, - val data: Any? + val title: String, + val value: Any, + val data: Any? ) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/inventory/field/Field.kt b/src/main/java/ru/evotor/framework/inventory/field/Field.kt index 5cc570b9c..2228617bd 100644 --- a/src/main/java/ru/evotor/framework/inventory/field/Field.kt +++ b/src/main/java/ru/evotor/framework/inventory/field/Field.kt @@ -1,10 +1,10 @@ package ru.evotor.framework.inventory.field abstract class Field( - val name: String?, - val fieldUUID: String, - val title: String?, - val type: Type + val name: String?, + val fieldUUID: String, + val title: String?, + val type: Type ) { enum class Type { TEXT_FIELD, @@ -25,5 +25,4 @@ abstract class Field( override fun hashCode(): Int { return fieldUUID.hashCode() } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/inventory/field/FieldTable.kt b/src/main/java/ru/evotor/framework/inventory/field/FieldTable.kt index 3b15f0852..39646c288 100644 --- a/src/main/java/ru/evotor/framework/inventory/field/FieldTable.kt +++ b/src/main/java/ru/evotor/framework/inventory/field/FieldTable.kt @@ -18,4 +18,4 @@ object FieldTable { const val TYPE_TEXT_FIELD = 1 const val TYPE_DICTIONARY = 2 -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/inventory/field/TextField.kt b/src/main/java/ru/evotor/framework/inventory/field/TextField.kt index 58fee244a..974ffef2a 100644 --- a/src/main/java/ru/evotor/framework/inventory/field/TextField.kt +++ b/src/main/java/ru/evotor/framework/inventory/field/TextField.kt @@ -1,13 +1,13 @@ package ru.evotor.framework.inventory.field class TextField( - name: String?, - fieldUUID: String, - title: String?, - val data: String? + name: String?, + fieldUUID: String, + title: String?, + val data: String? ) : Field( name, fieldUUID, title, Type.TEXT_FIELD -) \ No newline at end of file + ) diff --git a/src/main/java/ru/evotor/framework/kkt/FfdVersion.kt b/src/main/java/ru/evotor/framework/kkt/FfdVersion.kt index 4d320cb36..de0c2fa10 100644 --- a/src/main/java/ru/evotor/framework/kkt/FfdVersion.kt +++ b/src/main/java/ru/evotor/framework/kkt/FfdVersion.kt @@ -8,4 +8,4 @@ enum class FfdVersion { V_1_0_5, V_1_1_0, // unrealised by fiscal department V_1_2_0 -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/FiscalRequisite.kt b/src/main/java/ru/evotor/framework/kkt/FiscalRequisite.kt index 50b5ed771..30995febf 100644 --- a/src/main/java/ru/evotor/framework/kkt/FiscalRequisite.kt +++ b/src/main/java/ru/evotor/framework/kkt/FiscalRequisite.kt @@ -9,15 +9,14 @@ package ru.evotor.framework.kkt @Repeatable @Retention(AnnotationRetention.SOURCE) internal annotation class FiscalRequisite( - /** - * Фискальный тег - */ - val tag: Int, - - /** - * Флаги - */ - val flags: Int = NO_FLAGS + /** + * Фискальный тег + */ + val tag: Int, + /** + * Флаги + */ + val flags: Int = NO_FLAGS ) { companion object { private const val NO_FLAGS = 0 @@ -27,4 +26,4 @@ internal annotation class FiscalRequisite( */ internal const val FLAG_MULTIPLE_VALUES = 2 } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/api/AsyncHandler.kt b/src/main/java/ru/evotor/framework/kkt/api/AsyncHandler.kt index 423aefff5..ade8afc3c 100644 --- a/src/main/java/ru/evotor/framework/kkt/api/AsyncHandler.kt +++ b/src/main/java/ru/evotor/framework/kkt/api/AsyncHandler.kt @@ -7,18 +7,17 @@ import ru.evotor.framework.core.IntegrationLibraryMappingException import ru.evotor.framework.kkt.provider.KktContract import ru.evotor.framework.optList -class AsyncHandler(context: Context, private val callback: (serial: String, reg: String) -> Unit) - : AsyncQueryHandler(context.contentResolver) { - +class AsyncHandler(context: Context, private val callback: (serial: String, reg: String) -> Unit) : + AsyncQueryHandler(context.contentResolver) { override fun onQueryComplete(token: Int, cookie: Any?, cursor: Cursor?) { cursor?.use { it.moveToFirst() val serialNumber = it.optList(KktContract.COLUMN_SERIAL_NUMBER) - ?: throw IntegrationLibraryMappingException(KktContract.COLUMN_SERIAL_NUMBER) + ?: throw IntegrationLibraryMappingException(KktContract.COLUMN_SERIAL_NUMBER) val regNumber = it.optList(KktContract.COLUMN_REGISTER_NUMBER) - ?: throw IntegrationLibraryMappingException(KktContract.COLUMN_REGISTER_NUMBER) + ?: throw IntegrationLibraryMappingException(KktContract.COLUMN_REGISTER_NUMBER) callback(serialNumber[0], regNumber[0]) } @@ -27,4 +26,4 @@ class AsyncHandler(context: Context, private val callback: (serial: String, reg: companion object { internal const val KKT_INFO_TOKEN = 0 } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationCallback.kt b/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationCallback.kt index 149b07d78..c7b358d82 100644 --- a/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationCallback.kt +++ b/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationCallback.kt @@ -4,5 +4,6 @@ import java.util.* interface DocumentRegistrationCallback { fun onSuccess(documentUuid: UUID?) + fun onError(error: DocumentRegistrationException) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationException.kt b/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationException.kt index fdfd7ef88..2b4d050ba 100644 --- a/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationException.kt +++ b/src/main/java/ru/evotor/framework/kkt/api/DocumentRegistrationException.kt @@ -6,8 +6,8 @@ import java.lang.Exception * Исключение, возникающее при попытке зарегистрировать документ в кассе */ class DocumentRegistrationException( - val code: Int, - message: String + val code: Int, + message: String ) : Exception(message) { companion object { /** @@ -55,4 +55,4 @@ class DocumentRegistrationException( */ const val CODE_UNIDENTIFIED_ERROR = -1 } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt index ee4b22705..e4766ffdc 100644 --- a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt +++ b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt @@ -36,7 +36,6 @@ import java.util.* * Интерфейс для работы с кассой. */ object KktApi { - private val stringGetter: (Cursor, String) -> String? = { cursor, name -> cursor.optString(name) } private val booleanGetter: (Cursor, String) -> Boolean? = { cursor, name -> cursor.optBoolean(name) } @@ -161,7 +160,7 @@ object KktApi { * Результатом является логическое "И" всех необходимых условий. * * @param context текущий контекст - * @return true - если все условия для работы в разъездной торговле выполнены, + * @return true - если все условия для работы в разъездной торговле выполнены, * false - если хотя бы одно условие не выполнено * @throws IntegrationLibraryMappingException, если не удалось распознать полученное значение */ @@ -232,35 +231,24 @@ object KktApi { @JvmStatic fun registerCorrectionReceipt( context: Context, - @FiscalRequisite(FiscalTags.SETTLEMENT_TYPE) settlementType: SettlementType, - @FiscalRequisite(FiscalTags.TAXATION_SYSTEM) taxationSystem: TaxationSystem, - @FiscalRequisite(FiscalTags.CORRECTION_TYPE) correctionType: CorrectionType, - @FiscalRequisite(FiscalTags.BASIS_FOR_CORRECTION) basisForCorrection: String, - @FiscalRequisite(FiscalTags.PRESCRIPTION_NUMBER) - prescriptionNumber: String? = null, - + prescriptionNumber: String, @FiscalRequisite(FiscalTags.CORRECTABLE_SETTLEMENT_DATE) correctableSettlementDate: Date, - amountPaid: BigDecimal, - paymentType: PaymentType, - @FiscalRequisite(FiscalTags.VAT_RATE) vatRate: VatRate, - @FiscalRequisite(FiscalTags.CORRECTION_DESCRIPTION) correctionDescription: String, - callback: DocumentRegistrationCallback ) { if (correctableSettlementDate >= Date()) { @@ -328,41 +316,28 @@ object KktApi { @JvmStatic fun registerCorrectionReceipt( context: Context, - @FiscalRequisite(FiscalTags.SETTLEMENT_TYPE) settlementType: SettlementType, - @FiscalRequisite(FiscalTags.TAXATION_SYSTEM) taxationSystem: TaxationSystem, - @FiscalRequisite(FiscalTags.CORRECTION_TYPE) correctionType: CorrectionType, - @FiscalRequisite(FiscalTags.BASIS_FOR_CORRECTION) basisForCorrection: String, - @FiscalRequisite(FiscalTags.PRESCRIPTION_NUMBER) - prescriptionNumber: String? = null, - + prescriptionNumber: String, @FiscalRequisite(FiscalTags.CORRECTABLE_SETTLEMENT_DATE) correctableSettlementDate: Date, - amountPaid: BigDecimal, - paymentType: PaymentType, - @FiscalRequisite(FiscalTags.VAT_RATE) vatRate: VatRate, - @FiscalRequisite(FiscalTags.CORRECTION_DESCRIPTION) correctionDescription: String, - @FiscalRequisite(FiscalTags.PAYMENT_ADDRESS) paymentAddress: String, - @FiscalRequisite(FiscalTags.PAYMENT_PLACE) paymentPlace: String, - callback: DocumentRegistrationCallback ) { if (correctableSettlementDate >= Date()) { @@ -408,7 +383,7 @@ object KktApi { } @JvmStatic - fun getKktSessionInfo(context: Context) : KktSessionInfo?{ + fun getKktSessionInfo(context: Context): KktSessionInfo? { val uri = Uri.parse("${KktContract.BASE_URI}${KktContract.PATH_SESSION_STATUS}") return getKktSessionInfo(context, uri) } diff --git a/src/main/java/ru/evotor/framework/kkt/event/CashInsertedEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CashInsertedEvent.kt index cd784a623..fe4788269 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CashInsertedEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CashInsertedEvent.kt @@ -18,9 +18,9 @@ class CashInsertedEvent(documentUuid: String, total: BigDecimal) : CashOperation companion object { fun from(bundle: Bundle?): CashInsertedEvent? = bundle?.let { CashInsertedEvent( - getDocumentUuid(it) ?: return null, - getTotal(it) ?: return null + getDocumentUuid(it) ?: return null, + getTotal(it) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/event/CashOperationEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CashOperationEvent.kt index 3ef19859b..bd4e83dc7 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CashOperationEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CashOperationEvent.kt @@ -7,7 +7,6 @@ import ru.evotor.framework.getMoney import java.math.BigDecimal abstract class CashOperationEvent internal constructor(val documentUuid: String, val total: BigDecimal) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putString(KEY_DOCUMENT_UUID, documentUuid) @@ -16,7 +15,6 @@ abstract class CashOperationEvent internal constructor(val documentUuid: String, } companion object { - private const val KEY_DOCUMENT_UUID = "documentUuid" private const val KEY_TOTAL = "total" diff --git a/src/main/java/ru/evotor/framework/kkt/event/CashWithdrawnEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CashWithdrawnEvent.kt index 66f9834ee..13b86e0b0 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CashWithdrawnEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CashWithdrawnEvent.kt @@ -18,9 +18,9 @@ class CashWithdrawnEvent(documentUuid: String, total: BigDecimal) : CashOperatio companion object { fun from(bundle: Bundle?): CashWithdrawnEvent? = bundle?.let { CashWithdrawnEvent( - getDocumentUuid(it) ?: return null, - getTotal(it) ?: return null + getDocumentUuid(it) ?: return null, + getTotal(it) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt index 7f96b8499..307bdc687 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt @@ -12,18 +12,18 @@ import java.math.BigDecimal import java.util.* class CorrectionReceiptRegistrationRequestedEvent internal constructor( - val settlementType: SettlementType, - val taxationSystem: TaxationSystem, - val correctionType: CorrectionType, - val basisForCorrection: String, - val prescriptionNumber: String? = null, - val correctableSettlementDate: Date, - val amountPaid: BigDecimal, - val paymentType: PaymentType, - val vatRate: VatRate, - val correctionDescription: String, - var paymentAddress: String? = null, - var paymentPlace: String? = null + val settlementType: SettlementType, + val taxationSystem: TaxationSystem, + val correctionType: CorrectionType, + val basisForCorrection: String, + val prescriptionNumber: String? = null, + val correctableSettlementDate: Date, + val amountPaid: BigDecimal, + val paymentType: PaymentType, + val vatRate: VatRate, + val correctionDescription: String, + var paymentAddress: String? = null, + var paymentPlace: String? = null ) : IBundlable { companion object { private const val KEY_TAXATION_SYSTEM = "TAXATION_SYSTEM" @@ -41,24 +41,33 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( fun from(bundle: Bundle?): CorrectionReceiptRegistrationRequestedEvent? = bundle?.let { CorrectionReceiptRegistrationRequestedEvent( - SettlementType.valueOf(it.getString(KEY_SETTLEMENT_TYPE) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java)), - TaxationSystem.valueOf(it.getString(KEY_TAXATION_SYSTEM) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java)), - getCorrectionType(it), - it.getString(KEY_BASIS_FOR_CORRECTION) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), - it.getString(KEY_PRESCRIPTION_NUMBER)?: "", - Date(it.getLong(KEY_CORRECTABLE_SETTLEMENT_DATE)), - BigDecimal(it.getString(KEY_AMOUNT_PAID)), - PaymentType.valueOf(it.getString(KEY_PAYMENT_TYPE) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java)), - VatRate.valueOf(it.getString(KEY_VAT_RATE) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java)), - it.getString(KEY_CORRECTION_DESCRIPTION) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), - it.getString(KEY_PAYMENT_ADDRESS), - it.getString(KEY_PAYMENT_PLACE) + SettlementType.valueOf( + it.getString(KEY_SETTLEMENT_TYPE) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java) + ), + TaxationSystem.valueOf( + it.getString(KEY_TAXATION_SYSTEM) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java) + ), + getCorrectionType(it), + it.getString(KEY_BASIS_FOR_CORRECTION) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), + it.getString(KEY_PRESCRIPTION_NUMBER) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), + Date(it.getLong(KEY_CORRECTABLE_SETTLEMENT_DATE)), + BigDecimal(it.getString(KEY_AMOUNT_PAID)), + PaymentType.valueOf( + it.getString(KEY_PAYMENT_TYPE) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java) + ), + VatRate.valueOf( + it.getString(KEY_VAT_RATE) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java) + ), + it.getString(KEY_CORRECTION_DESCRIPTION) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), + it.getString(KEY_PAYMENT_ADDRESS), + it.getString(KEY_PAYMENT_PLACE) ) } @@ -69,7 +78,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( CorrectionType.values()[ordinal] } else { val correctionTypeName = bundle.getString(KEY_CORRECTION_TYPE) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java) + ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java) CorrectionType.valueOf(correctionTypeName) } } @@ -80,7 +89,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( putString(KEY_TAXATION_SYSTEM, taxationSystem.name) putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_BASIS_FOR_CORRECTION, basisForCorrection) - putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber ?: "") + putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber) putLong(KEY_CORRECTABLE_SETTLEMENT_DATE, correctableSettlementDate.time) putString(KEY_AMOUNT_PAID, amountPaid.toString()) putString(KEY_PAYMENT_TYPE, paymentType.name) diff --git a/src/main/java/ru/evotor/framework/kkt/event/handler/receiver/KktBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/kkt/event/handler/receiver/KktBroadcastReceiver.kt index 65faa112e..03a70228e 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/handler/receiver/KktBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/handler/receiver/KktBroadcastReceiver.kt @@ -12,7 +12,6 @@ import ru.evotor.framework.kkt.event.CashWithdrawnEvent * @see Использование широковещательного приёмника */ open class KktBroadcastReceiver : BroadcastEventReceiver() { - /** * Обработчик событий внесения наличности в кассу. */ @@ -33,11 +32,8 @@ open class KktBroadcastReceiver : BroadcastEventReceiver() { } companion object { - const val ACTION_CASH_INSERTED = "evotor.intent.action.cashOperation.CASH_IN" const val ACTION_CASH_WITHDRAWN = "evotor.intent.action.cashOperation.CASH_OUT" - } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/kkt/event/handler/service/KktBacksideIntegrationService.kt b/src/main/java/ru/evotor/framework/kkt/event/handler/service/KktBacksideIntegrationService.kt index 7f84f0a8c..4c1578c96 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/handler/service/KktBacksideIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/handler/service/KktBacksideIntegrationService.kt @@ -1,7 +1,8 @@ package ru.evotor.framework.kkt.event.handler.service + class KktBacksideIntegrationService { companion object { const val ACTION_CORRECTION_RECEIPT_REGISTRATION_REQUESTED = "evotor.intent.action.CORRECTION_RECEIPT_REGISTRATION_REQUESTED" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/mapper/DocumentMapper.kt b/src/main/java/ru/evotor/framework/mapper/DocumentMapper.kt index ff287c566..a38121ccf 100644 --- a/src/main/java/ru/evotor/framework/mapper/DocumentMapper.kt +++ b/src/main/java/ru/evotor/framework/mapper/DocumentMapper.kt @@ -12,4 +12,4 @@ internal object DocumentMapper { fun write(document: Document) = Bundle().apply { } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/mapper/FiscalDocumentMapper.kt b/src/main/java/ru/evotor/framework/mapper/FiscalDocumentMapper.kt index 095e8af8a..36aa62d54 100644 --- a/src/main/java/ru/evotor/framework/mapper/FiscalDocumentMapper.kt +++ b/src/main/java/ru/evotor/framework/mapper/FiscalDocumentMapper.kt @@ -30,9 +30,9 @@ internal object FiscalDocumentMapper { fun readCreationDate(bundle: Bundle?): Date? = bundle?.optSerializable(KEY_CREATION_DATE) fun readCreationDate(cursor: Cursor): Date? = cursor.optString(FiscalDocumentContract.COLUMN_CREATION_DATE) - ?.let { dateString -> - SimpleDateFormat(FISCAL_DATE_PATTERN, Locale.getDefault()).parse(dateString) - } + ?.let { dateString -> + SimpleDateFormat(FISCAL_DATE_PATTERN, Locale.getDefault()).parse(dateString) + } fun readKktRegistrationNumber(bundle: Bundle?): String? = bundle?.getString(KEY_KKT_REGISTRATION_NUMBER_STRING) ?: bundle?.optLong(KEY_KKT_REGISTRATION_NUMBER)?.toString() diff --git a/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt b/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt index 1f4bd2117..c2a939136 100644 --- a/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt +++ b/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt @@ -212,7 +212,6 @@ object NavigationApi { } } - /** * Создаёт `intent`, который открывает окно оплаты чека коррекции прихода. * @@ -231,7 +230,6 @@ object NavigationApi { } } - /** * Создаёт `intent`, который открывает окно оплаты чека коррекции расхода. * @@ -268,7 +266,6 @@ object NavigationApi { } } - /** * Создаёт `intent`, который открывает окно оплаты чека коррекции возврата расхода. * @@ -409,6 +406,4 @@ object NavigationApi { putExtra(EXTRA_PRODUCT_UUID, uuid) } } - - } diff --git a/src/main/java/ru/evotor/framework/payment/AdditionalTransactionData.kt b/src/main/java/ru/evotor/framework/payment/AdditionalTransactionData.kt index 3471b9401..24af43f52 100644 --- a/src/main/java/ru/evotor/framework/payment/AdditionalTransactionData.kt +++ b/src/main/java/ru/evotor/framework/payment/AdditionalTransactionData.kt @@ -13,9 +13,8 @@ data class AdditionalTransactionData( val paymentSystemCode: String, val acquiringBankCode: String, val authorizationCode: String, - val transactionId: String?, + val transactionId: String? ) : IBundlable, Parcelable { - override fun toBundle(): Bundle { val bundle = Bundle() bundle.putString(KEY_TID, tid) @@ -51,7 +50,6 @@ data class AdditionalTransactionData( } companion object { - private const val VERSION = 2 private const val KEY_TID = "tid" @@ -66,7 +64,7 @@ data class AdditionalTransactionData( bundle ?: return null return AdditionalTransactionData( - tid = bundle.getString(KEY_TID), + tid = bundle.getString(KEY_TID) ?: return null, initialDatetime = bundle.optLong(KEY_INITIAL_DATETIME) ?: return null, paymentSystemCode = bundle.getString(KEY_PAYMENT_SYSTEM_CODE) ?: return null, acquiringBankCode = bundle.getString(KEY_ACQUIRING_BANK_CODE) ?: return null, @@ -115,7 +113,6 @@ data class AdditionalTransactionData( } } return additionalTransactionData - } } } diff --git a/src/main/java/ru/evotor/framework/payment/CashlessInfo.kt b/src/main/java/ru/evotor/framework/payment/CashlessInfo.kt index 07b9f721c..e861f8ee3 100644 --- a/src/main/java/ru/evotor/framework/payment/CashlessInfo.kt +++ b/src/main/java/ru/evotor/framework/payment/CashlessInfo.kt @@ -13,7 +13,6 @@ data class CashlessInfo( val description: String, val method: Method ) : IBundlable, Parcelable { - init { UuidValidationUtils.checkUuid(uuid) } @@ -49,7 +48,6 @@ data class CashlessInfo( } companion object { - private const val VERSION = 1 private const val KEY_UUID = "uuid" @@ -66,8 +64,7 @@ data class CashlessInfo( } val method = if (methodOrdinal >= Method.values().size) { Method.UNKNOWN - } - else { + } else { Method.values()[methodOrdinal] } @@ -105,7 +102,6 @@ data class CashlessInfo( } checkNotNull(cashlessInfo) return cashlessInfo as CashlessInfo - } } } diff --git a/src/main/java/ru/evotor/framework/payment/PaymentSystemApi.kt b/src/main/java/ru/evotor/framework/payment/PaymentSystemApi.kt index 9c2c72b79..6653ec7e4 100644 --- a/src/main/java/ru/evotor/framework/payment/PaymentSystemApi.kt +++ b/src/main/java/ru/evotor/framework/payment/PaymentSystemApi.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.Utils */ @WorkerThread object PaymentSystemApi { - const val AUTHORITY = "ru.evotor.evotorpos.paymentSystem" @JvmField @@ -32,14 +31,14 @@ object PaymentSystemApi { cursor?.use { while (cursor.moveToNext()) { val paymentSystem = PaymentSystem( - Utils.safeValueOf(PaymentType::class.java, cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_PAYMENT_TYPE)), PaymentType.UNKNOWN), - cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_PAYMENT_SYSTEM_USER_DESCRIPTION)), - cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_PAYMENT_SYSTEM_ID)) + Utils.safeValueOf(PaymentType::class.java, cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_PAYMENT_TYPE)), PaymentType.UNKNOWN), + cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_PAYMENT_SYSTEM_USER_DESCRIPTION)), + cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_PAYMENT_SYSTEM_ID)) ) val paymentAccount = PaymentAccount( - cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_ACCOUNT_USER_DESCRIPTION)), - cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_ACCOUNT_ID)) + cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_ACCOUNT_USER_DESCRIPTION)), + cursor.getString(cursor.getColumnIndex(PaymentSystemTable.COLUMN_ACCOUNT_ID)) ) var inList = false @@ -57,5 +56,4 @@ object PaymentSystemApi { return paymentSystemList } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/provider/DocumentContract.kt b/src/main/java/ru/evotor/framework/provider/DocumentContract.kt index dfbfae683..0b7ad9778 100644 --- a/src/main/java/ru/evotor/framework/provider/DocumentContract.kt +++ b/src/main/java/ru/evotor/framework/provider/DocumentContract.kt @@ -8,4 +8,4 @@ internal object DocumentContract { val URI: Uri = Uri.parse("content://$AUTHORITY") const val COLUMN_UUID = "UUID" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/provider/FiscalDocumentContract.kt b/src/main/java/ru/evotor/framework/provider/FiscalDocumentContract.kt index a8a510f60..2508c05c9 100644 --- a/src/main/java/ru/evotor/framework/provider/FiscalDocumentContract.kt +++ b/src/main/java/ru/evotor/framework/provider/FiscalDocumentContract.kt @@ -13,4 +13,4 @@ internal object FiscalDocumentContract { const val COLUMN_SESSION_NUMBER = "SESSION_NUMBER" const val COLUMN_FISCAL_STORAGE_NUMBER = "FISCAL_STORAGE_NUMBER" const val COLUMN_FISCAL_IDENTIFIER = "FISCAL_IDENTIFIER" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt b/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt index 2b1b449b2..436fb1e51 100644 --- a/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/FiscalReceipt.kt @@ -14,52 +14,45 @@ import ru.evotor.query.FilterBuilder import java.util.* data class FiscalReceipt internal constructor( - /** - * Номер фискального документа - */ - @FiscalRequisite(tag = FiscalTags.DOCUMENT_NUMBER) - override val documentNumber: Long, - - /** - * Дата и время создания фискального документа - */ - @FiscalRequisite(tag = FiscalTags.CREATION_DATE) - override val creationDate: Date, - - /** - * Признак (тип) расчёта - */ - @FiscalRequisite(tag = FiscalTags.SETTLEMENT_TYPE) - val settlementType: SettlementType, - - /** - * Регистрационный номер ККТ - */ - @FiscalRequisite(tag = FiscalTags.KKT_REGISTRATION_NUMBER) - override val kktRegistrationNumber: String, - - /** - * Номер аппаратной смены - */ - @FiscalRequisite(tag = FiscalTags.SESSION_NUMBER) - override val sessionNumber: Long, - - /** - * Номер фискального накопителя - */ - @FiscalRequisite(tag = FiscalTags.FISCAL_STORAGE_NUMBER) - override val fiscalStorageNumber: String, - - /** - * Фискальный признак (фискальный идентификатор) документа - */ - @FiscalRequisite(tag = FiscalTags.FISCAL_IDENTIFIER) - override val fiscalIdentifier: String, - - /** - * Был ли напечатан фискальный чек - */ - val wasPrinted: Boolean + /** + * Номер фискального документа + */ + @FiscalRequisite(tag = FiscalTags.DOCUMENT_NUMBER) + override val documentNumber: Long, + /** + * Дата и время создания фискального документа + */ + @FiscalRequisite(tag = FiscalTags.CREATION_DATE) + override val creationDate: Date, + /** + * Признак (тип) расчёта + */ + @FiscalRequisite(tag = FiscalTags.SETTLEMENT_TYPE) + val settlementType: SettlementType, + /** + * Регистрационный номер ККТ + */ + @FiscalRequisite(tag = FiscalTags.KKT_REGISTRATION_NUMBER) + override val kktRegistrationNumber: String, + /** + * Номер аппаратной смены + */ + @FiscalRequisite(tag = FiscalTags.SESSION_NUMBER) + override val sessionNumber: Long, + /** + * Номер фискального накопителя + */ + @FiscalRequisite(tag = FiscalTags.FISCAL_STORAGE_NUMBER) + override val fiscalStorageNumber: String, + /** + * Фискальный признак (фискальный идентификатор) документа + */ + @FiscalRequisite(tag = FiscalTags.FISCAL_IDENTIFIER) + override val fiscalIdentifier: String, + /** + * Был ли напечатан фискальный чек + */ + val wasPrinted: Boolean ) : FiscalDocument(), IBundlable { companion object { fun from(bundle: Bundle?): FiscalReceipt? = FiscalReceiptMapper.read(bundle) @@ -85,7 +78,6 @@ data class FiscalReceipt internal constructor( val sessionNumber = addFieldSorter(FiscalDocumentContract.COLUMN_SESSION_NUMBER) val fiscalStorageNumber = addFieldSorter(FiscalDocumentContract.COLUMN_FISCAL_STORAGE_NUMBER) val fiscalIdentifier = addFieldSorter(FiscalDocumentContract.COLUMN_FISCAL_IDENTIFIER) - } override fun getValue(cursor: Cursor): FiscalReceipt = FiscalReceiptMapper.read(cursor) diff --git a/src/main/java/ru/evotor/framework/receipt/Measure.kt b/src/main/java/ru/evotor/framework/receipt/Measure.kt index 923ef140e..d5f0a07dc 100644 --- a/src/main/java/ru/evotor/framework/receipt/Measure.kt +++ b/src/main/java/ru/evotor/framework/receipt/Measure.kt @@ -10,23 +10,20 @@ import ru.evotor.framework.kkt.FiscalTags * Единица измерения. */ data class Measure( - - /** - * Наименование - */ - val name: String, - /** - * Точность - */ - val precision: Int, - /** - * Код - */ - @FiscalRequisite(tag = FiscalTags.MEASURE_CODE) - val code: Int - + /** + * Наименование + */ + val name: String, + /** + * Точность + */ + val precision: Int, + /** + * Код + */ + @FiscalRequisite(tag = FiscalTags.MEASURE_CODE) + val code: Int ) : Parcelable { - override fun writeToParcel(dest: Parcel, flags: Int) { ParcelableUtils.writeExpand(dest, VERSION) { parcel -> parcel.writeString(name) @@ -38,7 +35,6 @@ data class Measure( override fun describeContents(): Int = 0 companion object { - private const val VERSION = 1 internal const val UNKNOWN_MEASURE_CODE = 255 @@ -54,9 +50,9 @@ data class Measure( ParcelableUtils.readExpand(dest, VERSION) { parcel, version -> if (version >= 1) { measure = Measure( - name = parcel.readString()!!, - precision = parcel.readInt(), - code = parcel.readInt() + name = parcel.readString()!!, + precision = parcel.readInt(), + code = parcel.readInt() ) } } diff --git a/src/main/java/ru/evotor/framework/receipt/MedicineAdditionalDetails.kt b/src/main/java/ru/evotor/framework/receipt/MedicineAdditionalDetails.kt index 00fbc877c..4fcfb82e8 100644 --- a/src/main/java/ru/evotor/framework/receipt/MedicineAdditionalDetails.kt +++ b/src/main/java/ru/evotor/framework/receipt/MedicineAdditionalDetails.kt @@ -8,24 +8,22 @@ import ru.evotor.framework.ParcelableUtils import java.util.* data class MedicineAdditionalDetails( - /** - * Номер документа, не более 200 символов; - * Составная часть дополнительного реквизита пользователя (тег 1086) - */ - val documentNumber: String, - /** - * Дата документа в формате ГГММДД; - * Составная часть дополнительного реквизита пользователя (тег 1086) - */ - val documentDate: Date, - /** - * номер серии льготного рецепта; - * Составная часть дополнительного реквизита пользователя (тег 1086) - */ - val serialNumber: String - + /** + * Номер документа, не более 200 символов; + * Составная часть дополнительного реквизита пользователя (тег 1086) + */ + val documentNumber: String, + /** + * Дата документа в формате ГГММДД; + * Составная часть дополнительного реквизита пользователя (тег 1086) + */ + val documentDate: Date, + /** + * номер серии льготного рецепта; + * Составная часть дополнительного реквизита пользователя (тег 1086) + */ + val serialNumber: String ) : Parcelable, IBundlable { - override fun writeToParcel(dest: Parcel, flag: Int) { ParcelableUtils.writeExpand(dest, VERSION) { parcel -> parcel.writeString(documentNumber) @@ -48,6 +46,7 @@ data class MedicineAdditionalDetails( @JvmField val CREATOR = object : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): MedicineAdditionalDetails? = create(parcel) + override fun newArray(size: Int): Array = arrayOfNulls(size) } @@ -62,9 +61,9 @@ data class MedicineAdditionalDetails( fun fromBundle(bundle: Bundle?): MedicineAdditionalDetails? { return bundle?.let { MedicineAdditionalDetails( - documentNumber = it.getString(KEY_DOCUMENT_NUMBER) ?: return null, - documentDate = Date(it.getLong(KEY_DOCUMENT_DATE)), - serialNumber = it.getString(KEY_SERIAL_NUMBER) ?: return null + documentNumber = it.getString(KEY_DOCUMENT_NUMBER) ?: return null, + documentDate = Date(it.getLong(KEY_DOCUMENT_DATE)), + serialNumber = it.getString(KEY_SERIAL_NUMBER) ?: return null ) } } @@ -79,9 +78,9 @@ data class MedicineAdditionalDetails( val serialNumber = parcel.readString() if (documentNumber != null && serialNumber != null) { medicineAdditionalDetails = MedicineAdditionalDetails( - documentNumber = documentNumber, - documentDate = documentDate, - serialNumber = serialNumber + documentNumber = documentNumber, + documentDate = documentDate, + serialNumber = serialNumber ) } } @@ -89,4 +88,4 @@ data class MedicineAdditionalDetails( return medicineAdditionalDetails } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/MedicineAttribute.kt b/src/main/java/ru/evotor/framework/receipt/MedicineAttribute.kt index dd498a4a2..80d3de1d9 100644 --- a/src/main/java/ru/evotor/framework/receipt/MedicineAttribute.kt +++ b/src/main/java/ru/evotor/framework/receipt/MedicineAttribute.kt @@ -9,6 +9,8 @@ import ru.evotor.framework.Utils import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags import ru.evotor.framework.receipt.position.PreferentialMedicine.PreferentialMedicineType +import ru.evotor.readAliased +import ru.evotor.writeAliased /** * Дополнительные реквизиты пользователя, которые необходимы для формирования структурного тега 1084 @@ -16,34 +18,31 @@ import ru.evotor.framework.receipt.position.PreferentialMedicine.PreferentialMed * Применяется к каждой печатной группе */ data class MedicineAttribute( - /** - * Часть композитного тега: идентификатор субъекта обращения - * Значение дополнительного реквизита пользователя (тег 1086) - */ - @FiscalRequisite(tag = FiscalTags.MEDICINE_ADDITIONAL_REQUISITE_VALUE) - val subjectId: String, - /** - * Тип льготы рецепта - * При наличии рецепта обязателен к заполнению - * Необходим для формирования тега 1085 - */ - @FiscalRequisite(tag = FiscalTags.MEDICINE_ADDITIONAL_REQUISITE_TITLE) - val preferentialMedicineType: PreferentialMedicineType? = null, - - /** - * Часть композитного тега: дополнительные реквизиты пользователя (тег 1086) - * обязательны для рецепта с полной, либо частичной льготой - */ - @FiscalRequisite(tag = FiscalTags.MEDICINE_ADDITIONAL_REQUISITE_VALUE) - val medicineAdditionalDetails: MedicineAdditionalDetails? = null - + /** + * Часть композитного тега: идентификатор субъекта обращения + * Значение дополнительного реквизита пользователя (тег 1086) + */ + @FiscalRequisite(tag = FiscalTags.MEDICINE_ADDITIONAL_REQUISITE_VALUE) + val subjectId: String, + /** + * Тип льготы рецепта + * При наличии рецепта обязателен к заполнению + * Необходим для формирования тега 1085 + */ + @FiscalRequisite(tag = FiscalTags.MEDICINE_ADDITIONAL_REQUISITE_TITLE) + val preferentialMedicineType: PreferentialMedicineType? = null, + /** + * Часть композитного тега: дополнительные реквизиты пользователя (тег 1086) + * обязательны для рецепта с полной, либо частичной льготой + */ + @FiscalRequisite(tag = FiscalTags.MEDICINE_ADDITIONAL_REQUISITE_VALUE) + val medicineAdditionalDetails: MedicineAdditionalDetails? = null ) : Parcelable, IBundlable { - override fun writeToParcel(dest: Parcel, flag: Int) { ParcelableUtils.writeExpand(dest, VERSION) { parcel -> parcel.writeString(subjectId) parcel.writeString(preferentialMedicineType?.name) - parcel.writeParcelable(medicineAdditionalDetails, flag) + parcel.writeAliased(medicineAdditionalDetails, flag) } } @@ -58,7 +57,6 @@ data class MedicineAttribute( } companion object { - /** * Текущая версия объекта MedicineAttribute. */ @@ -71,10 +69,13 @@ data class MedicineAttribute( return bundle?.let { val subjectId = it.getString(KEY_SUBJECT_ID) ?: return@let null MedicineAttribute( - subjectId = subjectId, - preferentialMedicineType = Utils.safeValueOf(PreferentialMedicineType::class.java, - it.getString(KEY_PREFERENTIAL_MEDICINE_TYPE), null), - medicineAdditionalDetails = MedicineAdditionalDetails.fromBundle(it.getBundle(KEY_MEDICINE_ADDITIONAL_DETAILS)) + subjectId = subjectId, + preferentialMedicineType = Utils.safeValueOf( + PreferentialMedicineType::class.java, + it.getString(KEY_PREFERENTIAL_MEDICINE_TYPE), + null + ), + medicineAdditionalDetails = MedicineAdditionalDetails.fromBundle(it.getBundle(KEY_MEDICINE_ADDITIONAL_DETAILS)) ) } } @@ -82,6 +83,7 @@ data class MedicineAttribute( @JvmField val CREATOR = object : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): MedicineAttribute = create(parcel) + override fun newArray(size: Int): Array = arrayOfNulls(size) } @@ -98,9 +100,12 @@ data class MedicineAttribute( subjectId = parcel.readString() } if (version >= 2) { - preferentialMedicineType = Utils.safeValueOf(PreferentialMedicineType::class.java, parcel.readString(), - null) - medicineAdditionalDetails = parcel.readParcelable(MedicineAdditionalDetails::class.java.classLoader) + preferentialMedicineType = Utils.safeValueOf( + PreferentialMedicineType::class.java, + parcel.readString(), + null + ) + medicineAdditionalDetails = parcel.readAliased(MedicineAdditionalDetails.CREATOR) } if (version >= 3) { // Во второй версии поменялся тип, здесь оставлено для обратной совместимости @@ -110,9 +115,9 @@ data class MedicineAttribute( checkNotNull(subjectId) medicineAttribute = MedicineAttribute( - subjectId = subjectId, - preferentialMedicineType = preferentialMedicineType, - medicineAdditionalDetails = medicineAdditionalDetails + subjectId = subjectId, + preferentialMedicineType = preferentialMedicineType, + medicineAdditionalDetails = medicineAdditionalDetails ) } checkNotNull(medicineAttribute) diff --git a/src/main/java/ru/evotor/framework/receipt/MedicineAttributeSubTable.kt b/src/main/java/ru/evotor/framework/receipt/MedicineAttributeSubTable.kt index e556f7b10..7129fba83 100644 --- a/src/main/java/ru/evotor/framework/receipt/MedicineAttributeSubTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/MedicineAttributeSubTable.kt @@ -6,4 +6,4 @@ object MedicineAttributeSubTable { const val COLUMN_MEDICINE_DOCUMENT_NUMBER = "MEDICINE_DOCUMENT_NUMBER" const val COLUMN_MEDICINE_DOCUMENT_DATE = "MEDICINE_DOCUMENT_DATE" const val COLUMN_MEDICINE_SERIAL_NUMBER = "MEDICINE_SERIAL_NUMBER" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/NonFiscalReceipt.kt b/src/main/java/ru/evotor/framework/receipt/NonFiscalReceipt.kt index 1f93bca58..9a0b0dd09 100644 --- a/src/main/java/ru/evotor/framework/receipt/NonFiscalReceipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/NonFiscalReceipt.kt @@ -5,4 +5,4 @@ import ru.evotor.framework.FutureFeature import java.util.* @FutureFeature("Нефискальный чек (квитанция)") -private data class NonFiscalReceipt(override val uuid: UUID) : Document() \ No newline at end of file +private data class NonFiscalReceipt(override val uuid: UUID) : Document() diff --git a/src/main/java/ru/evotor/framework/receipt/Payment.kt b/src/main/java/ru/evotor/framework/receipt/Payment.kt index b22175d17..44f4eed9b 100644 --- a/src/main/java/ru/evotor/framework/receipt/Payment.kt +++ b/src/main/java/ru/evotor/framework/receipt/Payment.kt @@ -9,53 +9,52 @@ import java.math.BigDecimal * Оплата */ data class Payment( - /** - * Uuid - */ - val uuid: String, - /** - * Сумма денег принятых от клиента - */ - val value: BigDecimal, - /** - * Платежная система - */ - @Deprecated("To define payment system use paymentPerformer instead") - val paymentSystem: PaymentSystem?, - /** - * Интеграционное приложение, осуществляющее оплату определенной платежной системой - */ - val paymentPerformer: PaymentPerformer, - /** - * Идентификатор цели платежа - */ - val purposeIdentifier: String?, - /** - * Идентификатор аккаунта - */ - val accountId: String?, - /** - * Описание аккаунта - */ - val accountUserDescription: String?, - /** - * Идентификатор платежа в платежной системе (RRN для оплаты картой) - */ - val identifier: String?, - /** - * Дополнительная информация о способе безналичной оплаты - */ - val cashlessInfo: CashlessInfo? = null + /** + * Uuid + */ + val uuid: String, + /** + * Сумма денег принятых от клиента + */ + val value: BigDecimal, + /** + * Платежная система + */ + @Deprecated("To define payment system use paymentPerformer instead") + val paymentSystem: PaymentSystem?, + /** + * Интеграционное приложение, осуществляющее оплату определенной платежной системой + */ + val paymentPerformer: PaymentPerformer, + /** + * Идентификатор цели платежа + */ + val purposeIdentifier: String?, + /** + * Идентификатор аккаунта + */ + val accountId: String?, + /** + * Описание аккаунта + */ + val accountUserDescription: String?, + /** + * Идентификатор платежа в платежной системе (RRN для оплаты картой) + */ + val identifier: String?, + /** + * Дополнительная информация о способе безналичной оплаты + */ + val cashlessInfo: CashlessInfo? = null ) { - constructor( - uuid: String, - value: BigDecimal, - paymentSystem: PaymentSystem?, - paymentPerformer: PaymentPerformer, - purposeIdentifier: String?, - accountId: String?, - accountUserDescription: String? + uuid: String, + value: BigDecimal, + paymentSystem: PaymentSystem?, + paymentPerformer: PaymentPerformer, + purposeIdentifier: String?, + accountId: String?, + accountUserDescription: String? ) : this(uuid, value, paymentSystem, paymentPerformer, purposeIdentifier, accountId, accountUserDescription, null) override fun toString(): String { diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 8a97931a5..f6041f566 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -17,6 +17,7 @@ import java.util.Set; import java.util.UUID; +import ru.evotor.ParcelablesKt; import ru.evotor.framework.calculator.MoneyCalculator; import ru.evotor.framework.calculator.PercentCalculator; import ru.evotor.framework.core.IntegrationLibraryParsingException; @@ -853,11 +854,11 @@ private void writeAdditionalFields(Parcel dest, int flags) { if (this.attributes != null) { for (Map.Entry entry : this.attributes.entrySet()) { dest.writeString(entry.getKey()); - dest.writeParcelable(entry.getValue(), flags); + ParcelablesKt.writeAliased(dest, entry.getValue(), flags); } } // Payment features - dest.writeParcelable(this.settlementMethod, flags); + ParcelablesKt.writeAliased(dest, this.settlementMethod, flags); //AgentRequisites dest.writeBundle(this.agentRequisites != null ? this.agentRequisites.toBundle() : null); //ImportationData @@ -867,7 +868,7 @@ private void writeAdditionalFields(Parcel dest, int flags) { //Preferential medicine dest.writeBundle(this.preferentialMedicine != null ? this.preferentialMedicine.toBundle() : null); // Mark - dest.writeParcelable(this.mark, flags); + ParcelablesKt.writeAliased(dest, this.mark, flags); // Partial realization dest.writeBundle(this.partialRealization != null ? this.partialRealization.toBundle() : null); dest.writeInt(this.measure.getCode()); @@ -997,14 +998,14 @@ private void readAttributesField(Parcel in) { this.attributes = new HashMap<>(attributesSize); for (int i = 0; i < attributesSize; i++) { String key = in.readString(); - AttributeValue value = in.readParcelable(AttributeValue.class.getClassLoader()); + AttributeValue value = ParcelablesKt.readAliased(in, AttributeValue.CREATOR); this.attributes.put(key, value); } } } private void readSettlementMethodField(Parcel in) { - SettlementMethod settlementMethod = in.readParcelable(SettlementMethod.class.getClassLoader()); + SettlementMethod settlementMethod = ParcelablesKt.readParcelable(in, SettlementMethod.class); if (settlementMethod == null) { this.settlementMethod = new SettlementMethod.FullSettlement(); } else { @@ -1669,14 +1670,14 @@ public Builder toMedicalDevicesMarked( } public Builder toCaviarMarked( - @NonNull Mark mark + @NonNull Mark mark ) { position.productType = ProductType.CAVIAR_MARKED; setAlcoParams( - null, - null, - null, - null + null, + null, + null, + null ); setCaviarParams(mark); return this; @@ -1711,19 +1712,20 @@ public Builder toVegetableOilMarked( } public Builder toVeterinaryMarked( - @NonNull Mark mark + @NonNull Mark mark ) { position.productType = ProductType.VETERINARY_MARKED; setAlcoParams( - null, - null, - null, - null + null, + null, + null, + null ); setCaviarParams(mark); return this; } + /** * Частичная реализация для позиции доступна только если тип товара является одним из: *

@@ -2006,4 +2008,4 @@ public Position build() { } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt index 056d664be..1658e67f3 100644 --- a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt @@ -3,7 +3,6 @@ package ru.evotor.framework.receipt import android.net.Uri object PositionTable { - @JvmField val URI = Uri.withAppendedPath(ReceiptApi.BASE_URI, "position") diff --git a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java index 5a6d6f8f7..49f8e284d 100644 --- a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java +++ b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java @@ -7,6 +7,8 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; import kotlin.jvm.functions.Function2; + +import ru.evotor.ParcelablesKt; import ru.evotor.framework.ParcelableUtils; import ru.evotor.framework.kkt.FiscalRequisite; import ru.evotor.framework.kkt.FiscalTags; @@ -83,7 +85,7 @@ public PrintGroup( TaxationSystem taxationSystem, boolean shouldPrintReceipt ) { - this(identifier, type, orgName, orgInn, orgAddress, taxationSystem, shouldPrintReceipt, null, null, false); + this(identifier, type, orgName, orgInn, orgAddress, taxationSystem, shouldPrintReceipt, null, null); } public PrintGroup( @@ -201,9 +203,9 @@ public void writeToParcel(Parcel dest, final int flags) { @Override public Unit invoke(Parcel parcel) { /* version = 1*/ - parcel.writeParcelable(PrintGroup.this.purchaser, flags); + ParcelablesKt.writeAliased(parcel, PrintGroup.this.purchaser, flags); /* version = 2*/ - parcel.writeParcelable(PrintGroup.this.medicineAttribute, flags); + ParcelablesKt.writeAliased(parcel, PrintGroup.this.medicineAttribute, flags); /* version = 3*/ parcel.writeInt(PrintGroup.this.receiptFromInternet ? 1 : 0); return Unit.INSTANCE; @@ -230,11 +232,11 @@ protected PrintGroup(Parcel in) { @Override public Unit invoke(Parcel parcel, Integer version) { if (version >= 1) { - PrintGroup.this.purchaser = parcel.readParcelable(Purchaser.class.getClassLoader()); + PrintGroup.this.purchaser = ParcelablesKt.readAliased(parcel, Purchaser.CREATOR); } if (version >= 2) { - PrintGroup.this.medicineAttribute = parcel.readParcelable(MedicineAttribute.class.getClassLoader()); + PrintGroup.this.medicineAttribute = ParcelablesKt.readAliased(parcel, MedicineAttribute.CREATOR); } if (version >= 3) { @@ -302,4 +304,4 @@ public boolean isDefault() { return DEFAULT_PRINT_GROUP_IDENTIFIER.equals(identifier); } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/Purchaser.kt b/src/main/java/ru/evotor/framework/receipt/Purchaser.kt index 33183d5e9..1c3dad419 100644 --- a/src/main/java/ru/evotor/framework/receipt/Purchaser.kt +++ b/src/main/java/ru/evotor/framework/receipt/Purchaser.kt @@ -22,14 +22,13 @@ import java.util.* * @property type Тип покупателя, например, физическое лицо. Не сохраняется в фискальном документе. */ data class Purchaser( - val name: String, - val innNumber: String?, - val birthDate: Date?, - val documentType: DocumentType?, - val documentNumber: String?, - val type: PurchaserType + val name: String, + val innNumber: String?, + val birthDate: Date?, + val documentType: DocumentType?, + val documentNumber: String?, + val type: PurchaserType ) : Parcelable, IBundlable { - val version = 2 override fun toBundle(): Bundle { @@ -48,7 +47,7 @@ data class Purchaser( override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(name) parcel.writeString(innNumber) - //Для поддержки старой версии приложения ST_PurchaserRequisitesApp + // Для поддержки старой версии приложения ST_PurchaserRequisitesApp parcel.writeInt(version) parcel.writeInt(type.ordinal) if (version >= 2) { @@ -62,10 +61,10 @@ data class Purchaser( override fun describeContents(): Int = 0 companion object { - @JvmField val CREATOR = object : Parcelable.Creator { override fun createFromParcel(parcel: Parcel) = createPurchaserFromParcel(parcel) + override fun newArray(size: Int) = arrayOfNulls(size) } @@ -83,13 +82,18 @@ data class Purchaser( return bundle?.let { val bundleVersion = it.getInt(KEY_BUNDLE_VERSION, 1) val name = it.getString(KEY_NAME) ?: return null - val innNumber = if (bundleVersion >= 2) it.getString(KEY_INN_NUMBER) - else it.getString(KEY_DOCUMENT_NUMBER) + val innNumber = if (bundleVersion >= 2) { + it.getString(KEY_INN_NUMBER) + } else { + it.getString(KEY_DOCUMENT_NUMBER) + } val birthDate = it.getString(KEY_BIRTH_DATE) val documentTypeCode = it.getInt(KEY_DOCUMENT_TYPE, -1) val documentType = if (documentTypeCode != -1) { DocumentType.values().first { documentType -> documentType.documentCode == documentTypeCode } - } else null + } else { + null + } val documentNumber = it.getString(KEY_DOCUMENT_NUMBER_V2) val purchaserTypeOrdinal = it.getInt(KEY_TYPE) val purchaserType = PurchaserType.values()[purchaserTypeOrdinal % PurchaserType.values().size] @@ -102,11 +106,11 @@ data class Purchaser( val name = parcel.readString() ?: throw IntegrationLibraryParsingException(Purchaser::class.java) val inn = parcel.readString() - //Для поддержки старой версии приложения ST_PurchaserRequisitesApp + // Для поддержки старой версии приложения ST_PurchaserRequisitesApp val purchaserTypeVersion = parcel.readInt() val purchaserTypeOrdinal = parcel.readInt() if (purchaserTypeVersion < 2) { - val purchaserType = if(purchaserTypeVersion == 1) PurchaserType.values()[purchaserTypeOrdinal % PurchaserType.values().size] else PurchaserType.NATURAL_PERSON + val purchaserType = if (purchaserTypeVersion == 1) PurchaserType.values()[purchaserTypeOrdinal % PurchaserType.values().size] else PurchaserType.NATURAL_PERSON purchaser = Purchaser(name, inn, null, null, null, purchaserType) } @@ -114,9 +118,12 @@ data class Purchaser( val birthDate = parcel.readString()?.let { stringToDate(it) } val documentNumber = parcel.readString() val isDocumentNotExists = parcel.readInt() != 1 - val documentType = if(isDocumentNotExists) null else { + val documentType = if (isDocumentNotExists) { + null + } else { val documentCode = parcel.readInt() - DocumentType.values().firstOrNull { documentType -> documentType.documentCode == documentCode } } + DocumentType.values().firstOrNull { documentType -> documentType.documentCode == documentCode } + } val purchaserType = PurchaserType.values()[purchaserTypeOrdinal % PurchaserType.values().size] purchaser = Purchaser(name, inn, birthDate, documentType, documentNumber, purchaserType) } @@ -141,7 +148,6 @@ data class Purchaser( * Тип покупателя. Не сохраняется в фискальном документе. */ enum class PurchaserType { - /** * Физическое лицо. */ @@ -162,7 +168,6 @@ enum class PurchaserType { * Значения реквизита "код вида документа, удостоверяющего личность". Данные сохраняются в теге 1245 фискального документа. */ enum class DocumentType(val documentCode: Int) { - /** * Паспорт гражданина РФ */ @@ -236,5 +241,5 @@ enum class DocumentType(val documentCode: Int) { * Документ, удостоверяющий личность лица, не имеющего действительного документа, * удостоверяющего личность, на период рассмотрения заявления о признании гражданином РФ или о приеме в гражданство РФ */ - DOC_FOR_PERIOD_OF_CONSIDERATION_CITIZENSHIP_RF(40), + DOC_FOR_PERIOD_OF_CONSIDERATION_CITIZENSHIP_RF(40) } diff --git a/src/main/java/ru/evotor/framework/receipt/Receipt.kt b/src/main/java/ru/evotor/framework/receipt/Receipt.kt index e2757afcd..d9a2cab86 100644 --- a/src/main/java/ru/evotor/framework/receipt/Receipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/Receipt.kt @@ -7,25 +7,23 @@ import java.util.* /** * Чек */ -data class Receipt -( - /** - * Заголовок чека - */ - val header: Header, - /** - * Печатные формы чека - */ - val printDocuments: List +data class Receipt( + /** + * Заголовок чека + */ + val header: Header, + /** + * Печатные формы чека + */ + val printDocuments: List ) { - /** * Список всех позиций чека */ fun getPositions(): List { return printDocuments - .flatMap { it.positions } - .toList() + .flatMap { it.positions } + .toList() } /** @@ -33,9 +31,9 @@ data class Receipt */ fun getPayments(): List { return printDocuments - .map { it.payments } - .flatMap { it.keys } - .distinct() + .map { it.payments } + .flatMap { it.keys } + .distinct() } /** @@ -43,54 +41,51 @@ data class Receipt */ fun getDiscount(): BigDecimal { return printDocuments - .fold(BigDecimal.ZERO, { acc, printDocument -> - MoneyCalculator.add(acc, printDocument.getDiscount()) - }) + .fold(BigDecimal.ZERO, { acc, printDocument -> + MoneyCalculator.add(acc, printDocument.getDiscount()) + }) } /** * Заголовок чека */ data class Header( - /** - * Uuid чека - */ - val uuid: String, - /** - * Uuid чека-основания - */ - val baseReceiptUuid: String?, - /** - * Номер чека. Может быть null для еще незакрытого чека - */ - val number: String?, - /** - * Тип чека - */ - val type: Type, - /** - * Дата регистрации чека. - */ - val date: Date?, - /** - * Email для отправки чека по почте - */ - var clientEmail: String?, - - /** - * Phone для отправки чека по смс - */ - var clientPhone: String?, - - /** - * Extra - */ - val extra: String?, - - /** - * Номер аппаратной смены. Может быть null для еще незакрытого чека - */ - val sessionNumber: Long? + /** + * Uuid чека + */ + val uuid: String, + /** + * Uuid чека-основания + */ + val baseReceiptUuid: String?, + /** + * Номер чека. Может быть null для еще незакрытого чека + */ + val number: String?, + /** + * Тип чека + */ + val type: Type, + /** + * Дата регистрации чека. + */ + val date: Date?, + /** + * Email для отправки чека по почте + */ + var clientEmail: String?, + /** + * Phone для отправки чека по смс + */ + var clientPhone: String?, + /** + * Extra + */ + val extra: String?, + /** + * Номер аппаратной смены. Может быть null для еще незакрытого чека + */ + val sessionNumber: Long? ) /** @@ -101,30 +96,37 @@ data class Receipt * Продажа */ SELL, + /** * Возврат */ PAYBACK, + /** * Покупка */ BUY, + /** * Возврат покупки */ BUYBACK, + /** * Коррекция прихода */ CORRECTION_INCOME, + /** * Коррекция расхода */ CORRECTION_OUTCOME, + /** * Коррекция возврата прихода */ CORRECTION_RETURN_INCOME, + /** * Коррекция возврата расхода */ @@ -135,40 +137,39 @@ data class Receipt * Печатная форма чека */ data class PrintReceipt( - /** - * Печатная группа - */ - val printGroup: PrintGroup?, - /** - * Позиции - */ - val positions: List, - /** - * Оплаты - */ - val payments: Map, - /** - * Сдача - */ - val changes: Map, - /** - * Скидка на документ, распределенная на позиции - * Ключ - uuid позиции - * Значение - скидка (уже высчитанная из цены) - * - * Added on 13.02.2018 - */ - val discounts: Map? + /** + * Печатная группа + */ + val printGroup: PrintGroup?, + /** + * Позиции + */ + val positions: List, + /** + * Оплаты + */ + val payments: Map, + /** + * Сдача + */ + val changes: Map, + /** + * Скидка на документ, распределенная на позиции + * Ключ - uuid позиции + * Значение - скидка (уже высчитанная из цены) + * + * Added on 13.02.2018 + */ + val discounts: Map? ) { - /** * Сумма скидок для текущей группы */ fun getDiscount(): BigDecimal { return positions - .fold(BigDecimal.ZERO, { acc, position -> - MoneyCalculator.add(acc, discounts?.get(position.uuid) ?: BigDecimal.ZERO) - }) + .fold(BigDecimal.ZERO, { acc, position -> + MoneyCalculator.add(acc, discounts?.get(position.uuid) ?: BigDecimal.ZERO) + }) } } } diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index da80cc565..3c019f725 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -38,7 +38,6 @@ import java.util.Date @WorkerThread object ReceiptApi { - @Deprecated(message = "Используйте методы API") const val AUTHORITY = "ru.evotor.evotorpos.receipt" @@ -71,7 +70,6 @@ object ReceiptApi { private val CURRENT_CORRECTION_RETURN_INCOME_RECEIPT_URI = Uri.withAppendedPath(BASE_URI_V2, CURRENT_CORRECTION_RETURN_INCOME_PATH) private val CURRENT_CORRECTION_RETURN_OUTCOME_RECEIPT_URI = Uri.withAppendedPath(BASE_URI_V2, CURRENT_CORRECTION_RETURN_OUTCOME_PATH) - @JvmStatic @Deprecated( message = "Use getProductsByBarcode from InventoryApi", @@ -82,7 +80,10 @@ object ReceiptApi { context.contentResolver.query( Uri.withAppendedPath(PositionTable.URI, barcode), - null, null, null, null + null, + null, + null, + null ) ?.use { cursor -> while (cursor.moveToNext()) { @@ -208,7 +209,7 @@ object ReceiptApi { discountMap } catch (error: IllegalArgumentException) { - //old version of evopos, does not support discounts + // old version of evopos, does not support discounts error.printStackTrace() null } @@ -219,15 +220,16 @@ object ReceiptApi { for (printGroup in printGroups) { val payments = groupByPrintGroupPaymentResults[printGroup]?.associateBy { it.payment } ?: HashMap() - printDocuments.add(Receipt.PrintReceipt( - printGroup, - getPositionResults - .filter { it.printGroup == printGroup } - .map { it.position }, - payments.mapValues { it.value.value }, - payments.mapValues { it.value.change }, - receiptDiscount - ) + printDocuments.add( + Receipt.PrintReceipt( + printGroup, + getPositionResults + .filter { it.printGroup == printGroup } + .map { it.position }, + payments.mapValues { it.value.value }, + payments.mapValues { it.value.change }, + receiptDiscount + ) ) } @@ -237,7 +239,6 @@ object ReceiptApi { ) } - /** * Получить заголовок текущего открытого чека. * @param context контекст приложения @@ -307,26 +308,27 @@ object ReceiptApi { } } - private fun createGetPositionResult(cursor: Cursor): GetPositionResult? { - return if (cursor.getString(cursor.getColumnIndex(PositionTable.COLUMN_PARENT_POSITION_UUID)) == null) + return if (cursor.getString(cursor.getColumnIndex(PositionTable.COLUMN_PARENT_POSITION_UUID)) == null) { GetPositionResult( createPosition(cursor) ?: return null, createPrintGroup(cursor) ) - else + } else { null + } } private fun createGetSubpositionResult(cursor: Cursor): GetSubpositionResult? { val parentUuid = cursor.getString(cursor.getColumnIndex(PositionTable.COLUMN_PARENT_POSITION_UUID)) - return if (parentUuid != null) + return if (parentUuid != null) { GetSubpositionResult( createPosition(cursor) ?: return null, parentUuid ) - else + } else { null + } } private fun createGetPaymentResult(cursor: Cursor): GetPaymentsResult? { @@ -352,7 +354,7 @@ object ReceiptApi { cursor.getInt(cursor.getColumnIndex(PrintGroupSubTable.COLUMN_SHOULD_PRINT_RECEIPT)) == 1, purchaser, medicineAttribute, - cursor.optInt(PrintGroupSubTable.COLUMN_RECEIPT_FROM_INTERNET) == 1, + cursor.optInt(PrintGroupSubTable.COLUMN_RECEIPT_FROM_INTERNET) == 1 ) } @@ -370,7 +372,9 @@ object ReceiptApi { cursor.optInt(PrintGroupSubTable.COLUMN_PURCHASER_DOCUMENT_TYPE_CODE) val purchaserDocumentType = if (purchaserDocumentTypeCode != null) { DocumentType.values().first { it.documentCode == purchaserDocumentTypeCode } - } else null + } else { + null + } Purchaser( name = purchaserName, innNumber = purchaserInnNumber, @@ -398,9 +402,11 @@ object ReceiptApi { val serialNumber: String? = cursor.optString(MedicineAttributeSubTable.COLUMN_MEDICINE_SERIAL_NUMBER) val medicineAdditionalDetails: MedicineAdditionalDetails? = - if (documentDate != null && documentNumber != null && serialNumber != null) + if (documentDate != null && documentNumber != null && serialNumber != null) { MedicineAdditionalDetails(documentNumber, documentDate, serialNumber) - else null + } else { + null + } return MedicineAttribute( subjectId = subjectId, @@ -497,7 +503,6 @@ object ReceiptApi { } } - private fun createAttributesFromDBFormat(value: String?): Map { if (value == null) return emptyMap() val array = JSONArray(value) @@ -612,12 +617,13 @@ object ReceiptApi { } private data class GetPositionResult(var position: Position, val printGroup: PrintGroup?) + private data class GetSubpositionResult(val position: Position, val parentUuid: String?) + private data class GetPaymentsResult(val payment: Payment, val printGroup: PrintGroup?, val value: BigDecimal, val change: BigDecimal) @Deprecated(message = "Используйте метод getSellReceipt") object Description { - const val PATH_RECEIPT_DESCRIPTION = "information" @JvmField @@ -626,12 +632,10 @@ object ReceiptApi { const val ROW_ID = "_id" const val ROW_UUID = "uuid" const val ROW_DISCOUNT = "discount" - } @Deprecated(message = "Используйте метод getSellReceipt") object Positions { - const val PATH_RECEIPT_POSITIONS = "positions" @JvmField @@ -651,7 +655,6 @@ object ReceiptApi { @Deprecated(message = "Используйте метод getSellReceipt") object Payments { - const val PATH_RECEIPT_PAYMENTS = "payments" @JvmField @@ -668,6 +671,5 @@ object ReceiptApi { const val TYPE_CASH = 0 const val TYPE_CARD = 1 } - } } diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptDiscountTable.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptDiscountTable.kt index 51a9483bb..2b3f565b0 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptDiscountTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptDiscountTable.kt @@ -3,4 +3,4 @@ package ru.evotor.framework.receipt object ReceiptDiscountTable { const val POSITION_DISCOUNT_UUID_COLUMN_NAME = "POSITION_UUID" const val DISCOUNT_COLUMN_NAME = "DISCOUNT" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/SettlementType.kt b/src/main/java/ru/evotor/framework/receipt/SettlementType.kt index 04bd4b4fa..989593b3f 100644 --- a/src/main/java/ru/evotor/framework/receipt/SettlementType.kt +++ b/src/main/java/ru/evotor/framework/receipt/SettlementType.kt @@ -43,4 +43,4 @@ enum class SettlementType { * Коррекция возврата расхода */ CORRECTION_RETURN_OUTCOME -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt index 43cd8dfaf..9b64ab374 100644 --- a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt +++ b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt @@ -19,22 +19,27 @@ enum class TaxNumber(val value: BigDecimal) { * Основная ставка 18%. С первого января 2019 года может указывать как на 18%, так и на 20% ставку. */ VAT_18(BigDecimal.valueOf(18)), + /** * Основная ставка 10%. */ VAT_10(BigDecimal.valueOf(10)), + /** * Без НДС. */ NO_VAT(BigDecimal.ZERO), + /** * Расчётная ставка 18%. С первого января 2019 года может указывать как на 18%, так и на 20% ставку. */ VAT_18_118(BigDecimal.valueOf(18)), + /** * Расчётная ставка 10%. */ VAT_10_110(BigDecimal.valueOf(10)), + /** * Основная ставка 0% */ diff --git a/src/main/java/ru/evotor/framework/receipt/TaxationSystem.java b/src/main/java/ru/evotor/framework/receipt/TaxationSystem.java index 17672b920..30334a603 100644 --- a/src/main/java/ru/evotor/framework/receipt/TaxationSystem.java +++ b/src/main/java/ru/evotor/framework/receipt/TaxationSystem.java @@ -7,4 +7,4 @@ public enum TaxationSystem { SINGLE_IMPUTED_INCOME, SINGLE_AGRICULTURE, PATENT -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/TimeRange.kt b/src/main/java/ru/evotor/framework/receipt/TimeRange.kt index e2d6756b7..df808d633 100644 --- a/src/main/java/ru/evotor/framework/receipt/TimeRange.kt +++ b/src/main/java/ru/evotor/framework/receipt/TimeRange.kt @@ -19,7 +19,6 @@ data class TimeRange( val endHours: Int, val endMinutes: Int ) : IBundlable { - init { if (!validateHours(startHours) || !validateMinutes(startMinutes)) { throw IllegalArgumentException("Incorrect time ${String.format(Locale.getDefault(), "%02d:%02d", startHours, startMinutes)}") @@ -43,7 +42,6 @@ data class TimeRange( } companion object { - @JvmStatic fun from(bundle: Bundle?): TimeRange? { return bundle?.let { diff --git a/src/main/java/ru/evotor/framework/receipt/attribute/VeterinaryAttribute.kt b/src/main/java/ru/evotor/framework/receipt/attribute/VeterinaryAttribute.kt index 9e84287ca..f6120e989 100644 --- a/src/main/java/ru/evotor/framework/receipt/attribute/VeterinaryAttribute.kt +++ b/src/main/java/ru/evotor/framework/receipt/attribute/VeterinaryAttribute.kt @@ -21,7 +21,6 @@ data class VeterinaryAttribute( */ val documentDate: String ) : IBundlable { - override fun toBundle(): Bundle = VeterinaryAttributeMapper.writeToBundle(this) companion object { diff --git a/src/main/java/ru/evotor/framework/receipt/correction/CorrectionType.kt b/src/main/java/ru/evotor/framework/receipt/correction/CorrectionType.kt index 780d36d19..6f20a2b5d 100644 --- a/src/main/java/ru/evotor/framework/receipt/correction/CorrectionType.kt +++ b/src/main/java/ru/evotor/framework/receipt/correction/CorrectionType.kt @@ -3,4 +3,4 @@ package ru.evotor.framework.receipt.correction enum class CorrectionType { BY_SELF, BY_PRESCRIBED -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/ReceiptCompletedEvent.kt b/src/main/java/ru/evotor/framework/receipt/event/ReceiptCompletedEvent.kt index 7ef61b080..f5a59c66c 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/ReceiptCompletedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/ReceiptCompletedEvent.kt @@ -26,4 +26,4 @@ class ReceiptCompletedEvent(receiptUuid: String) : ReceiptEvent(receiptUuid) { ReceiptCompletedEvent(ReceiptEvent.getReceiptUuid(it) ?: return null) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/ReceiptCreatedEvent.kt b/src/main/java/ru/evotor/framework/receipt/event/ReceiptCreatedEvent.kt index 8bfeb933b..2b02d388b 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/ReceiptCreatedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/ReceiptCreatedEvent.kt @@ -26,4 +26,4 @@ class ReceiptCreatedEvent(receiptUuid: String) : ReceiptEvent(receiptUuid) { ReceiptCreatedEvent(ReceiptEvent.getReceiptUuid(it) ?: return null) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/ReceiptEvent.kt b/src/main/java/ru/evotor/framework/receipt/event/ReceiptEvent.kt index 13db06783..5278de3e9 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/ReceiptEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/ReceiptEvent.kt @@ -5,7 +5,6 @@ import android.os.Bundle import ru.evotor.IBundlable abstract class ReceiptEvent internal constructor(val receiptUuid: String) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putString(KEY_RECEIPT_UUID, receiptUuid) @@ -13,12 +12,9 @@ abstract class ReceiptEvent internal constructor(val receiptUuid: String) : IBun } companion object { - private const val KEY_RECEIPT_UUID = "receiptUuid" internal fun getReceiptUuid(bundle: Bundle): String? = - bundle.getString(KEY_RECEIPT_UUID, null) - + bundle.getString(KEY_RECEIPT_UUID, null) } - } diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuyReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuyReceiptBroadcastReceiver.kt index 45f1b94d8..d5509eb48 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuyReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuyReceiptBroadcastReceiver.kt @@ -15,15 +15,14 @@ import ru.evotor.framework.receipt.position.event.PositionUpdatedEvent * @see Использование широковещательного приёмника */ open class BuyReceiptBroadcastReceiver : ReceiptBroadcastReceiver( - ACTION_RECEIPT_CREATED, - ACTION_POSITION_ADDED, - ACTION_POSITION_UPDATED, - ACTION_POSITION_REMOVED, - ACTION_APPLY_DISCOUNT_TO_RECEIPT, - ACTION_RECEIPT_DELETED, - ACTION_RECEIPT_COMPLETED + ACTION_RECEIPT_CREATED, + ACTION_POSITION_ADDED, + ACTION_POSITION_UPDATED, + ACTION_POSITION_REMOVED, + ACTION_APPLY_DISCOUNT_TO_RECEIPT, + ACTION_RECEIPT_DELETED, + ACTION_RECEIPT_COMPLETED ) { - /** * Обработчик событий создания чека. */ @@ -67,7 +66,6 @@ open class BuyReceiptBroadcastReceiver : ReceiptBroadcastReceiver( override fun handleReceiptCompletedEvent(context: Context, event: ReceiptCompletedEvent) = Unit companion object { - const val ACTION_RECEIPT_CREATED = "evotor.intent.action.receipt.buy.OPENED" const val ACTION_POSITION_ADDED = "evotor.intent.action.receipt.buy.POSITION_ADDED" @@ -81,7 +79,5 @@ open class BuyReceiptBroadcastReceiver : ReceiptBroadcastReceiver( const val ACTION_RECEIPT_DELETED = "evotor.intent.action.receipt.buy.CLEARED" const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.buy.RECEIPT_CLOSED" - } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuybackReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuybackReceiptBroadcastReceiver.kt index 64228b607..927d3c548 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuybackReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/BuybackReceiptBroadcastReceiver.kt @@ -15,15 +15,14 @@ import ru.evotor.framework.receipt.position.event.PositionUpdatedEvent * @see Использование широковещательного приёмника */ open class BuybackReceiptBroadcastReceiver : ReceiptBroadcastReceiver( - ACTION_RECEIPT_CREATED, - ACTION_POSITION_ADDED, - ACTION_POSITION_UPDATED, - ACTION_POSITION_REMOVED, - ACTION_APPLY_DISCOUNT_TO_RECEIPT, - ACTION_RECEIPT_DELETED, - ACTION_RECEIPT_COMPLETED + ACTION_RECEIPT_CREATED, + ACTION_POSITION_ADDED, + ACTION_POSITION_UPDATED, + ACTION_POSITION_REMOVED, + ACTION_APPLY_DISCOUNT_TO_RECEIPT, + ACTION_RECEIPT_DELETED, + ACTION_RECEIPT_COMPLETED ) { - /** * Обработчик событий создания чека. */ @@ -67,7 +66,6 @@ open class BuybackReceiptBroadcastReceiver : ReceiptBroadcastReceiver( override fun handleReceiptCompletedEvent(context: Context, event: ReceiptCompletedEvent) = Unit companion object { - const val ACTION_RECEIPT_CREATED = "evotor.intent.action.receipt.buyback.OPENED" const val ACTION_POSITION_ADDED = "evotor.intent.action.receipt.buyback.POSITION_ADDED" @@ -81,7 +79,5 @@ open class BuybackReceiptBroadcastReceiver : ReceiptBroadcastReceiver( const val ACTION_RECEIPT_DELETED = "evotor.intent.action.receipt.buyback.CLEARED" const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.buyback.RECEIPT_CLOSED" - } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionIncomeReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionIncomeReceiptBroadcastReceiver.kt index 36406a6e0..ad29565bf 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionIncomeReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionIncomeReceiptBroadcastReceiver.kt @@ -23,7 +23,6 @@ open class CorrectionIncomeReceiptBroadcastReceiver : ReceiptBroadcastReceiver( actionReceiptCreated = ACTION_RECEIPT_CREATED, actionReceiptDeleted = ACTION_RECEIPT_DELETED ) { - /** * Обработчик событий создания чека. */ @@ -69,7 +68,6 @@ open class CorrectionIncomeReceiptBroadcastReceiver : ReceiptBroadcastReceiver( @RequiresIntentAction(ACTION_RECEIPT_COMPLETED) override fun handleReceiptCompletedEvent(context: Context, event: ReceiptCompletedEvent) = Unit - companion object { const val ACTION_RECEIPT_CREATED = "evotor.intent.action.receipt.correction.income.OPENED" @@ -86,4 +84,4 @@ open class CorrectionIncomeReceiptBroadcastReceiver : ReceiptBroadcastReceiver( const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.correction.income.RECEIPT_CLOSED" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionOutcomeReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionOutcomeReceiptBroadcastReceiver.kt index 574055f45..1dadcd883 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionOutcomeReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionOutcomeReceiptBroadcastReceiver.kt @@ -23,7 +23,6 @@ open class CorrectionOutcomeReceiptBroadcastReceiver : ReceiptBroadcastReceiver( actionReceiptCreated = ACTION_RECEIPT_CREATED, actionReceiptDeleted = ACTION_RECEIPT_DELETED ) { - /** * Обработчик событий создания чека. */ @@ -85,4 +84,4 @@ open class CorrectionOutcomeReceiptBroadcastReceiver : ReceiptBroadcastReceiver( const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.correction.outcome.RECEIPT_CLOSED" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnIncomeReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnIncomeReceiptBroadcastReceiver.kt index d64f654ca..ca38f464f 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnIncomeReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnIncomeReceiptBroadcastReceiver.kt @@ -23,7 +23,6 @@ open class CorrectionReturnIncomeReceiptBroadcastReceiver : ReceiptBroadcastRece actionReceiptCreated = ACTION_RECEIPT_CREATED, actionReceiptDeleted = ACTION_RECEIPT_DELETED ) { - /** * Обработчик событий создания чека. */ @@ -69,7 +68,6 @@ open class CorrectionReturnIncomeReceiptBroadcastReceiver : ReceiptBroadcastRece @RequiresIntentAction(ACTION_RECEIPT_COMPLETED) override fun handleReceiptCompletedEvent(context: Context, event: ReceiptCompletedEvent) = Unit - companion object { const val ACTION_RECEIPT_CREATED = "evotor.intent.action.receipt.correction.return.income.OPENED" @@ -86,4 +84,4 @@ open class CorrectionReturnIncomeReceiptBroadcastReceiver : ReceiptBroadcastRece const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.correction.return.income.RECEIPT_CLOSED" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnOutcomeReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnOutcomeReceiptBroadcastReceiver.kt index 7bb0f3395..d2f8b55b9 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnOutcomeReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/CorrectionReturnOutcomeReceiptBroadcastReceiver.kt @@ -23,7 +23,6 @@ open class CorrectionReturnOutcomeReceiptBroadcastReceiver : ReceiptBroadcastRec actionReceiptCreated = ACTION_RECEIPT_CREATED, actionReceiptDeleted = ACTION_RECEIPT_DELETED ) { - /** * Обработчик событий создания чека. */ @@ -85,4 +84,4 @@ open class CorrectionReturnOutcomeReceiptBroadcastReceiver : ReceiptBroadcastRec const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.correction.return.outcome.RECEIPT_CLOSED" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/PaybackReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/PaybackReceiptBroadcastReceiver.kt index a74e79a34..8474c98ba 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/PaybackReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/PaybackReceiptBroadcastReceiver.kt @@ -15,15 +15,14 @@ import ru.evotor.framework.receipt.position.event.PositionUpdatedEvent * @see Использование широковещательного приёмника */ open class PaybackReceiptBroadcastReceiver : ReceiptBroadcastReceiver( - ACTION_RECEIPT_CREATED, - ACTION_POSITION_ADDED, - ACTION_POSITION_UPDATED, - ACTION_POSITION_REMOVED, - ACTION_APPLY_DISCOUNT_TO_RECEIPT, - ACTION_RECEIPT_DELETED, - ACTION_RECEIPT_COMPLETED + ACTION_RECEIPT_CREATED, + ACTION_POSITION_ADDED, + ACTION_POSITION_UPDATED, + ACTION_POSITION_REMOVED, + ACTION_APPLY_DISCOUNT_TO_RECEIPT, + ACTION_RECEIPT_DELETED, + ACTION_RECEIPT_COMPLETED ) { - /** * Обработчик событий создания чека. */ @@ -52,7 +51,10 @@ open class PaybackReceiptBroadcastReceiver : ReceiptBroadcastReceiver( * Обработчик событий применения скидки к чеку. */ @RequiresIntentAction(ACTION_APPLY_DISCOUNT_TO_RECEIPT) - override fun handleApplyDiscountToReceiptEvent(context: Context, eventApplyDiscountTo: ApplyDiscountToReceiptEvent) = Unit + override fun handleApplyDiscountToReceiptEvent( + context: Context, + eventApplyDiscountTo: ApplyDiscountToReceiptEvent + ) = Unit /** * Обработчик событий удаления чека. @@ -67,7 +69,6 @@ open class PaybackReceiptBroadcastReceiver : ReceiptBroadcastReceiver( override fun handleReceiptCompletedEvent(context: Context, event: ReceiptCompletedEvent) = Unit companion object { - const val ACTION_RECEIPT_CREATED = "evotor.intent.action.receipt.payback.OPENED" const val ACTION_POSITION_ADDED = "evotor.intent.action.receipt.payback.POSITION_ADDED" @@ -76,12 +77,11 @@ open class PaybackReceiptBroadcastReceiver : ReceiptBroadcastReceiver( const val ACTION_POSITION_REMOVED = "evotor.intent.action.receipt.payback.POSITION_REMOVED" - const val ACTION_APPLY_DISCOUNT_TO_RECEIPT = "evotor.intent.action.receipt.payback.APPLY_DISCOUNT_TO_RECEIPT" + const val ACTION_APPLY_DISCOUNT_TO_RECEIPT = + "evotor.intent.action.receipt.payback.APPLY_DISCOUNT_TO_RECEIPT" const val ACTION_RECEIPT_DELETED = "evotor.intent.action.receipt.payback.CLEARED" const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.payback.RECEIPT_CLOSED" - } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/ReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/ReceiptBroadcastReceiver.kt index 18ad893e0..c32dee5a5 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/ReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/ReceiptBroadcastReceiver.kt @@ -12,15 +12,14 @@ import ru.evotor.framework.receipt.position.event.PositionRemovedEvent import ru.evotor.framework.receipt.position.event.PositionUpdatedEvent abstract class ReceiptBroadcastReceiver( - private val actionReceiptCreated: String, - private val actionPositionAdded: String, - private val actionPositionUpdated: String, - private val actionPositionRemoved: String, - private val actionApplyDiscountToReceipt: String, - private val actionReceiptDeleted: String, - private val actionReceiptCompleted: String + private val actionReceiptCreated: String, + private val actionPositionAdded: String, + private val actionPositionUpdated: String, + private val actionPositionRemoved: String, + private val actionApplyDiscountToReceipt: String, + private val actionReceiptDeleted: String, + private val actionReceiptCompleted: String ) : BroadcastEventReceiver() { - protected abstract fun handleReceiptCreatedEvent(context: Context, event: ReceiptCreatedEvent) protected abstract fun handlePositionAddedEvent(context: Context, event: PositionAddedEvent) @@ -37,21 +36,41 @@ abstract class ReceiptBroadcastReceiver( final override fun onEvent(context: Context, action: String, bundle: Bundle) { when (action) { - actionReceiptCreated -> handleReceiptCreatedEvent(context, ReceiptCreatedEvent.from(bundle) - ?: return) - actionPositionAdded -> handlePositionAddedEvent(context, PositionAddedEvent.from(bundle) - ?: return) - actionPositionUpdated -> handlePositionUpdatedEvent(context, PositionUpdatedEvent.from(bundle) - ?: return) - actionPositionRemoved -> handlePositionRemovedEvent(context, PositionRemovedEvent.from(bundle) - ?: return) - actionApplyDiscountToReceipt -> handleApplyDiscountToReceiptEvent(context, ApplyDiscountToReceiptEvent.from(bundle) - ?: return) - actionReceiptDeleted -> handleReceiptDeletedEvent(context, ReceiptDeletedEvent.from(bundle) - ?: return) - actionReceiptCompleted -> handleReceiptCompletedEvent(context, ReceiptCompletedEvent.from(bundle) - ?: return) + actionReceiptCreated -> handleReceiptCreatedEvent( + context, + ReceiptCreatedEvent.from(bundle) + ?: return + ) + actionPositionAdded -> handlePositionAddedEvent( + context, + PositionAddedEvent.from(bundle) + ?: return + ) + actionPositionUpdated -> handlePositionUpdatedEvent( + context, + PositionUpdatedEvent.from(bundle) + ?: return + ) + actionPositionRemoved -> handlePositionRemovedEvent( + context, + PositionRemovedEvent.from(bundle) + ?: return + ) + actionApplyDiscountToReceipt -> handleApplyDiscountToReceiptEvent( + context, + ApplyDiscountToReceiptEvent.from(bundle) + ?: return + ) + actionReceiptDeleted -> handleReceiptDeletedEvent( + context, + ReceiptDeletedEvent.from(bundle) + ?: return + ) + actionReceiptCompleted -> handleReceiptCompletedEvent( + context, + ReceiptCompletedEvent.from(bundle) + ?: return + ) } } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/SellReceiptBroadcastReceiver.kt b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/SellReceiptBroadcastReceiver.kt index 834d42826..d1c96ce74 100644 --- a/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/SellReceiptBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/framework/receipt/event/handler/receiver/SellReceiptBroadcastReceiver.kt @@ -15,15 +15,14 @@ import ru.evotor.framework.receipt.position.event.PositionUpdatedEvent * @see Использование широковещательного приёмника */ open class SellReceiptBroadcastReceiver : ReceiptBroadcastReceiver( - ACTION_RECEIPT_CREATED, - ACTION_POSITION_ADDED, - ACTION_POSITION_UPDATED, - ACTION_POSITION_REMOVED, - ACTION_APPLY_DISCOUNT_TO_RECEIPT, - ACTION_RECEIPT_DELETED, - ACTION_RECEIPT_COMPLETED + ACTION_RECEIPT_CREATED, + ACTION_POSITION_ADDED, + ACTION_POSITION_UPDATED, + ACTION_POSITION_REMOVED, + ACTION_APPLY_DISCOUNT_TO_RECEIPT, + ACTION_RECEIPT_DELETED, + ACTION_RECEIPT_COMPLETED ) { - /** * Обработчик событий создания чека. */ @@ -67,7 +66,6 @@ open class SellReceiptBroadcastReceiver : ReceiptBroadcastReceiver( override fun handleReceiptCompletedEvent(context: Context, event: ReceiptCompletedEvent) = Unit companion object { - const val ACTION_RECEIPT_CREATED = "evotor.intent.action.receipt.sell.OPENED" const val ACTION_POSITION_ADDED = "evotor.intent.action.receipt.sell.POSITION_ADDED" @@ -81,7 +79,5 @@ open class SellReceiptBroadcastReceiver : ReceiptBroadcastReceiver( const val ACTION_RECEIPT_DELETED = "evotor.intent.action.receipt.sell.CLEARED" const val ACTION_RECEIPT_COMPLETED = "evotor.intent.action.receipt.sell.RECEIPT_CLOSED" - } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/ReceiptDraft.kt b/src/main/java/ru/evotor/framework/receipt/formation/ReceiptDraft.kt index 24b05efa8..7a187db15 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/ReceiptDraft.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/ReceiptDraft.kt @@ -3,4 +3,4 @@ package ru.evotor.framework.receipt.formation import ru.evotor.framework.FutureFeature @FutureFeature("Несформированный чек (до момента регистриции в кассе и/или печати)") -private class ReceiptDraft \ No newline at end of file +private class ReceiptDraft diff --git a/src/main/java/ru/evotor/framework/receipt/formation/api/SellApi.kt b/src/main/java/ru/evotor/framework/receipt/formation/api/SellApi.kt index e435b9df7..b830317c1 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/api/SellApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/api/SellApi.kt @@ -30,12 +30,12 @@ object SellApi { @JvmStatic fun moveCurrentReceiptDraftToPaymentStage(context: Context, paymentPerformer: PaymentPerformer, callback: MoveCurrentReceiptDraftToPaymentStageCallback) { context.startIntegrationService( - SellBacksideIntegrationService.ACTION_MOVE_CURRENT_RECEIPT_DRAFT_TO_PAYMENT_STAGE, - CurrentReceiptDraftMovementToPaymentStageRequestedEvent(null, paymentPerformer), - IntegrationManagerCallback { - it?.result?.error?.let { error -> callback.onError(MoveCurrentReceiptDraftToPaymentStageException(error.code, error.message)) } - ?: callback.onSuccess() - } + SellBacksideIntegrationService.ACTION_MOVE_CURRENT_RECEIPT_DRAFT_TO_PAYMENT_STAGE, + CurrentReceiptDraftMovementToPaymentStageRequestedEvent(null, paymentPerformer), + IntegrationManagerCallback { + it?.result?.error?.let { error -> callback.onError(MoveCurrentReceiptDraftToPaymentStageException(error.code, error.message)) } + ?: callback.onSuccess() + } ) } @@ -49,12 +49,12 @@ object SellApi { @JvmStatic fun moveCurrentReceiptDraftToPaymentStage(context: Context, paymentDelegator: PaymentDelegator, callback: MoveCurrentReceiptDraftToPaymentStageCallback) { context.startIntegrationService( - SellBacksideIntegrationService.ACTION_MOVE_CURRENT_RECEIPT_DRAFT_TO_PAYMENT_STAGE, - CurrentReceiptDraftMovementToPaymentStageRequestedEvent(paymentDelegator, null), - IntegrationManagerCallback { - it?.result?.error?.let { error -> callback.onError(MoveCurrentReceiptDraftToPaymentStageException(error.code, error.message)) } - ?: callback.onSuccess() - } + SellBacksideIntegrationService.ACTION_MOVE_CURRENT_RECEIPT_DRAFT_TO_PAYMENT_STAGE, + CurrentReceiptDraftMovementToPaymentStageRequestedEvent(paymentDelegator, null), + IntegrationManagerCallback { + it?.result?.error?.let { error -> callback.onError(MoveCurrentReceiptDraftToPaymentStageException(error.code, error.message)) } + ?: callback.onSuccess() + } ) } diff --git a/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageCallback.kt b/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageCallback.kt index b74e7fbb3..80abc58f7 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageCallback.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageCallback.kt @@ -2,5 +2,6 @@ package ru.evotor.framework.receipt.formation.api.move_receipt_to_payment_stage interface MoveCurrentReceiptDraftToPaymentStageCallback { fun onSuccess() + fun onError(error: MoveCurrentReceiptDraftToPaymentStageException) } diff --git a/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageException.kt b/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageException.kt index 661d957b8..9a4df7185 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageException.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/api/move_receipt_to_payment_stage/MoveCurrentReceiptDraftToPaymentStageException.kt @@ -1,9 +1,9 @@ package ru.evotor.framework.receipt.formation.api.move_receipt_to_payment_stage class MoveCurrentReceiptDraftToPaymentStageException( - val code: Int, - message: String -): Exception(message) { + val code: Int, + message: String +) : Exception(message) { companion object { /** * Некорректные входные данные diff --git a/src/main/java/ru/evotor/framework/receipt/formation/api/trigger_receipt_discount_event/TriggerReceiptDiscountEventCallback.kt b/src/main/java/ru/evotor/framework/receipt/formation/api/trigger_receipt_discount_event/TriggerReceiptDiscountEventCallback.kt index 0838b8d86..0f2f20418 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/api/trigger_receipt_discount_event/TriggerReceiptDiscountEventCallback.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/api/trigger_receipt_discount_event/TriggerReceiptDiscountEventCallback.kt @@ -1,7 +1,6 @@ package ru.evotor.framework.receipt.formation.api.trigger_receipt_discount_event interface TriggerReceiptDiscountEventCallback { - fun onSuccess() fun onError(error: TriggerReceiptDiscountEventException) diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/CurrentReceiptDraftMovementToPaymentStageRequestedEvent.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/CurrentReceiptDraftMovementToPaymentStageRequestedEvent.kt index 764482fcc..14e72d646 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/CurrentReceiptDraftMovementToPaymentStageRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/CurrentReceiptDraftMovementToPaymentStageRequestedEvent.kt @@ -8,8 +8,8 @@ import ru.evotor.framework.core.action.datamapper.PaymentDelegatorMapper import ru.evotor.framework.core.action.datamapper.PaymentPerformerMapper class CurrentReceiptDraftMovementToPaymentStageRequestedEvent internal constructor( - val paymentDelegator: PaymentDelegator?, - val paymentPerformer: PaymentPerformer? + val paymentDelegator: PaymentDelegator?, + val paymentPerformer: PaymentPerformer? ) : IBundlable { override fun toBundle(): Bundle = Bundle().apply { paymentDelegator?.let { putBundle(KEY_PAYMENT_DELEGATOR, PaymentDelegatorMapper.toBundle(it)) } @@ -19,16 +19,16 @@ class CurrentReceiptDraftMovementToPaymentStageRequestedEvent internal construct companion object { fun from(bundle: Bundle?): CurrentReceiptDraftMovementToPaymentStageRequestedEvent? = bundle?.let { b -> CurrentReceiptDraftMovementToPaymentStageRequestedEvent( - b.getBundle(KEY_PAYMENT_DELEGATOR)?.let { - PaymentDelegatorMapper.fromBundle(it) - }, - b.getBundle(KEY_PAYMENT_PERFORMER)?.let { - PaymentPerformerMapper.fromBundle(it) - } + b.getBundle(KEY_PAYMENT_DELEGATOR)?.let { + PaymentDelegatorMapper.fromBundle(it) + }, + b.getBundle(KEY_PAYMENT_PERFORMER)?.let { + PaymentPerformerMapper.fromBundle(it) + } ) } private const val KEY_PAYMENT_PERFORMER = "paymentPerformer" private const val KEY_PAYMENT_DELEGATOR = "paymentDelegator" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/DiscountScreenAdditionalItemsEvent.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/DiscountScreenAdditionalItemsEvent.kt index f52cbe967..201bd571c 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/DiscountScreenAdditionalItemsEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/DiscountScreenAdditionalItemsEvent.kt @@ -11,9 +11,8 @@ import ru.evotor.framework.common.event.IntegrationEvent * Обрабатывайте событие с помощью соответствующих методов служб [ru.evotor.framework.receipt.formation.event.handler.service.SellIntegrationService] и [ru.evotor.framework.receipt.formation.event.handler.service.PaybackIntegrationService]. */ data class DiscountScreenAdditionalItemsEvent( - val receiptUuid: String + val receiptUuid: String ) : IntegrationEvent() { - override fun toBundle() = Bundle().apply { putString(KEY_RECEIPT_UUID, receiptUuid) } @@ -24,10 +23,9 @@ data class DiscountScreenAdditionalItemsEvent( @JvmStatic fun from(bundle: Bundle?) = bundle?.let { DiscountScreenAdditionalItemsEvent( - receiptUuid = it.getString(KEY_RECEIPT_UUID) - ?: return null + receiptUuid = it.getString(KEY_RECEIPT_UUID) + ?: return null ) } } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnDeliveryRequisitesForReceiptRequestedEvent.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnDeliveryRequisitesForReceiptRequestedEvent.kt index 55fe40909..1a79ed43b 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnDeliveryRequisitesForReceiptRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnDeliveryRequisitesForReceiptRequestedEvent.kt @@ -25,11 +25,10 @@ import ru.evotor.framework.common.event.IntegrationEvent * @see "Добавление в чек адреса и места расчёта" */ data class ReturnDeliveryRequisitesForReceiptRequestedEvent( - val receiptUuid: String, - val paymentAddress: String? = null, - val paymentPlace: String? = null + val receiptUuid: String, + val paymentAddress: String? = null, + val paymentPlace: String? = null ) : IntegrationEvent() { - override fun toBundle() = Bundle().apply { putString(KEY_RECEIPT_UUID, receiptUuid) putString(KEY_EXTRA_ADDRESS, paymentAddress) @@ -44,9 +43,9 @@ data class ReturnDeliveryRequisitesForReceiptRequestedEvent( @JvmStatic fun from(bundle: Bundle?) = bundle?.let { ReturnDeliveryRequisitesForReceiptRequestedEvent( - receiptUuid = it.getString(KEY_RECEIPT_UUID) ?: return null, - paymentAddress = it.getString(KEY_EXTRA_ADDRESS), - paymentPlace = it.getString(KEY_EXTRA_PLACE) + receiptUuid = it.getString(KEY_RECEIPT_UUID) ?: return null, + paymentAddress = it.getString(KEY_EXTRA_ADDRESS), + paymentPlace = it.getString(KEY_EXTRA_PLACE) ) } } @@ -55,27 +54,24 @@ data class ReturnDeliveryRequisitesForReceiptRequestedEvent( * Результат обработки события, который содержит адрес и место расчёта. */ data class Result( - val paymentAddress: String, - val paymentPlace: String + val paymentAddress: String, + val paymentPlace: String ) : IntegrationEvent.Result() { - override fun toBundle() = Bundle().apply { putString(KEY_EXTRA_ADDRESS, paymentAddress) putString(KEY_EXTRA_PLACE, paymentPlace) } companion object { - @JvmStatic fun from(bundle: Bundle?) = bundle?.let { Result( - paymentAddress = it.getString(KEY_EXTRA_ADDRESS) - ?: return null, - paymentPlace = it.getString(KEY_EXTRA_PLACE) - ?: return null) + paymentAddress = it.getString(KEY_EXTRA_ADDRESS) + ?: return null, + paymentPlace = it.getString(KEY_EXTRA_PLACE) + ?: return null + ) } - } - } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnMedicineAttributeEvent.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnMedicineAttributeEvent.kt index 8fd3c5dec..9fae16fc6 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnMedicineAttributeEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnMedicineAttributeEvent.kt @@ -13,10 +13,9 @@ import ru.evotor.framework.receipt.PrintGroup * @see Добавление реквизитов покупателя в чек */ class ReturnMedicineAttributeEvent( - val receiptUuid: String, - val printGroups: List + val receiptUuid: String, + val printGroups: List ) : IntegrationEvent() { - override fun toBundle(): Bundle = Bundle().apply { putString(KEY_RECEIPT_UUID, receiptUuid) putParcelableArrayList(KEY_PRINT_GROUPS, ArrayList(printGroups)) @@ -30,10 +29,11 @@ class ReturnMedicineAttributeEvent( fun from(bundle: Bundle?) = bundle?.let { it.classLoader = PrintGroup::class.java.classLoader ReturnMedicineAttributeEvent( - receiptUuid = it.getString(KEY_RECEIPT_UUID) - ?: return null, - printGroups = it.getParcelableArrayList(KEY_PRINT_GROUPS) - ?: return null) + receiptUuid = it.getString(KEY_RECEIPT_UUID) + ?: return null, + printGroups = it.getParcelableArrayList(KEY_PRINT_GROUPS) + ?: return null + ) } } @@ -43,7 +43,7 @@ class ReturnMedicineAttributeEvent( * @property attributes Массив печатных групп и соответствующих им объектов с медицинскими атрибутами. */ data class Result( - val attributes: Map? + val attributes: Map? ) : IntegrationEvent.Result() { override fun toBundle() = Bundle().apply { classLoader = PrintGroup::class.java.classLoader @@ -83,4 +83,4 @@ class ReturnMedicineAttributeEvent( } } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPositionsForBarcodeRequestedEvent.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPositionsForBarcodeRequestedEvent.kt index 49abf391b..d0c4d895b 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPositionsForBarcodeRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPositionsForBarcodeRequestedEvent.kt @@ -18,11 +18,10 @@ import ru.evotor.framework.receipt.Position * @see Обработка события сканирования штрихкода */ data class ReturnPositionsForBarcodeRequestedEvent( - val barcode: String, - val extractedData: DataExtracted?, - val creatingNewProduct: Boolean + val barcode: String, + val extractedData: DataExtracted?, + val creatingNewProduct: Boolean ) : IntegrationEvent() { - override fun toBundle() = Bundle().apply { putString(KEY_BARCODE_EXTRA, barcode) putBundle(KEY_EXTRACTED_DATA_EXTRA, extractedData?.toBundle()) @@ -37,16 +36,16 @@ data class ReturnPositionsForBarcodeRequestedEvent( @JvmStatic fun from(bundle: Bundle?) = bundle?.let { ReturnPositionsForBarcodeRequestedEvent( - barcode = it.getString(KEY_BARCODE_EXTRA) - ?: return null, - extractedData = if (!it.containsKey(KEY_EXTRACTED_DATA_EXTRA)) { - null - } else { - DataExtracted.from( - it.getBundle(KEY_EXTRACTED_DATA_EXTRA) - ) - }, - creatingNewProduct = it.getBoolean(KEY_CREATE_PRODUCT_EXTRA) + barcode = it.getString(KEY_BARCODE_EXTRA) + ?: return null, + extractedData = if (!it.containsKey(KEY_EXTRACTED_DATA_EXTRA)) { + null + } else { + DataExtracted.from( + it.getBundle(KEY_EXTRACTED_DATA_EXTRA) + ) + }, + creatingNewProduct = it.getBoolean(KEY_CREATE_PRODUCT_EXTRA) ) } } @@ -54,24 +53,25 @@ data class ReturnPositionsForBarcodeRequestedEvent( /** * Результат обработки события сканирования штрихкода. * - * @property positionsList список списков позиций, все позиции из одного списка будут добавлены в чек вместе. Используется на версиях ЭвоторПос выше 6.35.0 + * @property positionsList список списков позиций, все позиции из одного списка будут добавлены в чек вместе. Используется на версиях Пос выше 6.35.0 * @property positions список позиций, которые будут отображены пользователю для выбора, будет добавлена только одна (использовать для обратной совместимости) * @property iCanCreateNewProduct указывает, будет приложение создавать товар на основе отсканированного штрихкода или нет. */ data class Result( - val iCanCreateNewProduct: Boolean, - @Deprecated("""Использовать для обратной совместимости. - На старых версиях кассы (с приложением ЭвоторПос ниже 6.35) будут браться значения отсюда, - на новых версиях кассы (с приложением ЭвоторПос выше 6.35) будут браться из @property positionsList - Будет удалено после обновления рынка.""") - val positions: List, - val positionsList: List> + val iCanCreateNewProduct: Boolean, + @Deprecated( + """Использовать для обратной совместимости. + На старых версиях кассы (с приложением Пос ниже 6.35) будут браться значения отсюда, + на новых версиях кассы (с приложением Пос выше 6.35) будут браться из @property positionsList + Будет удалено после обновления рынка.""" + ) + val positions: List, + val positionsList: List> ) : IntegrationEvent.Result() { - @Deprecated("Используйте основной конструктор") constructor( - positions: List, - iCanCreateNewProduct: Boolean + positions: List, + iCanCreateNewProduct: Boolean ) : this(iCanCreateNewProduct, positions, emptyList()) override fun toBundle() = Bundle().apply { @@ -87,7 +87,7 @@ data class ReturnPositionsForBarcodeRequestedEvent( for (i in positionsList.indices) { putInt(KEY_EXTRA_SUB_POSITIONS_COUNT + i, positionsList[i].size) for (j in positionsList[i].indices) { - putParcelable("${KEY_EXTRA_SUB_POSITIONS_LIST}_${i}_${j}", positionsList[i][j]) // KEY_EXTRA_SUB_POSITIONS_LIST0 + putParcelable("${KEY_EXTRA_SUB_POSITIONS_LIST}_${i}_$j", positionsList[i][j]) // KEY_EXTRA_SUB_POSITIONS_LIST0 } } } @@ -124,8 +124,8 @@ data class ReturnPositionsForBarcodeRequestedEvent( val subList = mutableListOf() for (j in 0 until subListCount) { subList.add( - it.getParcelable("${KEY_EXTRA_SUB_POSITIONS_LIST}_${i}_${j}") - ?: return null + it.getParcelable("${KEY_EXTRA_SUB_POSITIONS_LIST}_${i}_$j") + ?: return null ) } positionsList.add(subList) @@ -138,16 +138,14 @@ data class ReturnPositionsForBarcodeRequestedEvent( } data class DataExtracted( - val ean: String? + val ean: String? ) : IBundlable { - override fun toBundle(): Bundle = Bundle().apply { classLoader = DataExtracted::class.java.classLoader putString(KEY_EAN_EXTRA, ean) } companion object { - private const val KEY_EAN_EXTRA = "key_ean_extra" @JvmStatic diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPurchaserRequisitesForPrintGroupRequestedEvent.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPurchaserRequisitesForPrintGroupRequestedEvent.kt index e821e4ea3..9e8f6d137 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPurchaserRequisitesForPrintGroupRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/ReturnPurchaserRequisitesForPrintGroupRequestedEvent.kt @@ -13,10 +13,9 @@ import ru.evotor.framework.receipt.Purchaser * @see Добавление реквизитов покупателя в чек */ data class ReturnPurchaserRequisitesForPrintGroupRequestedEvent( - val receiptUuid: String, - val printGroups: List + val receiptUuid: String, + val printGroups: List ) : IntegrationEvent() { - override fun toBundle() = Bundle().apply { putString(KEY_RECEIPT_UUID, receiptUuid) putParcelableArrayList(KEY_PRINT_GROUPS, ArrayList(printGroups)) @@ -30,12 +29,12 @@ data class ReturnPurchaserRequisitesForPrintGroupRequestedEvent( fun from(bundle: Bundle?) = bundle?.let { it.classLoader = PrintGroup::class.java.classLoader ReturnPurchaserRequisitesForPrintGroupRequestedEvent( - receiptUuid = it.getString(KEY_RECEIPT_UUID) - ?: return null, - printGroups = it.getParcelableArrayList(KEY_PRINT_GROUPS) - ?: return null) + receiptUuid = it.getString(KEY_RECEIPT_UUID) + ?: return null, + printGroups = it.getParcelableArrayList(KEY_PRINT_GROUPS) + ?: return null + ) } - } /** @@ -44,9 +43,8 @@ data class ReturnPurchaserRequisitesForPrintGroupRequestedEvent( * @property printGroupsWithPurchaserRequisites Массив печатных групп и соответствующих им объектов с реквизитами покупателя. */ data class Result( - val printGroupsWithPurchaserRequisites: Map? + val printGroupsWithPurchaserRequisites: Map? ) : IntegrationEvent.Result() { - override fun toBundle() = Bundle().apply { classLoader = PrintGroup::class.java.classLoader putInt(KEY_MAP_ENTRIES_COUNT, printGroupsWithPurchaserRequisites?.size ?: -1) @@ -85,4 +83,4 @@ data class ReturnPurchaserRequisitesForPrintGroupRequestedEvent( } } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/TriggerReceiptDiscountEventRequestedEvent.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/TriggerReceiptDiscountEventRequestedEvent.kt index 34ba00e51..c9564392f 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/TriggerReceiptDiscountEventRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/TriggerReceiptDiscountEventRequestedEvent.kt @@ -9,7 +9,6 @@ class TriggerReceiptDiscountEventRequestedEvent( val componentName: ComponentName, val receiptType: Receipt.Type ) : IBundlable { - override fun toBundle(): Bundle { return Bundle().also { it.putParcelable(KEY_COMPONENT_NAME, componentName) @@ -33,7 +32,7 @@ class TriggerReceiptDiscountEventRequestedEvent( val componentName = bundle.getParcelable(KEY_COMPONENT_NAME) ?: throw IllegalStateException("Bundle doesn't contain the necessary data to create TriggerReceiptDiscountEventCommand") - val receiptType = bundle.getString(KEY_RECEIPT_TYPE)?.let{Receipt.Type.valueOf(it) } + val receiptType = bundle.getString(KEY_RECEIPT_TYPE)?.let { Receipt.Type.valueOf(it) } ?: throw IllegalStateException("Bundle doesn't contain the necessary data to create TriggerReceiptDiscountEventCommand") return TriggerReceiptDiscountEventRequestedEvent(componentName, receiptType) diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyBacksideIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyBacksideIntegrationService.kt index be55ee209..693024744 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyBacksideIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyBacksideIntegrationService.kt @@ -1,5 +1,6 @@ package ru.evotor.framework.receipt.formation.event.handler.service + class BuyBacksideIntegrationService { companion object { const val ACTION_MOVE_CURRENT_BUY_RECEIPT_DRAFT_TO_PAYMENT_STAGE = "evotor.intent.action.MOVE_CURRENT_BUY_RECEIPT_DRAFT_TO_PAYMENT_STAGE" diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyIntegrationService.kt index 9bbcc91a5..5fd71892f 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuyIntegrationService.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком покупки. */ abstract class BuyIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } @@ -44,7 +43,6 @@ abstract class BuyIntegrationService : IntegrationServiceV2() { open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null companion object { - /** * Запрос [реквизитов покупателя][ru.evotor.framework.receipt.Purchaser] для добавления в чек покупки. * @@ -67,4 +65,4 @@ abstract class BuyIntegrationService : IntegrationServiceV2() { */ const val PERMISSION = "ru.evotor.permission.BUY_INTEGRATION_SERVICE" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackIntegrationService.kt index 148333f99..c3f47fb17 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackIntegrationService.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком возврата покупки. */ abstract class BuybackIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } @@ -44,7 +43,6 @@ abstract class BuybackIntegrationService : IntegrationServiceV2() { open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null companion object { - /** * Запрос [реквизитов покупателя][ru.evotor.framework.receipt.Purchaser] для добавления в чек возврата покупки. * @@ -67,4 +65,4 @@ abstract class BuybackIntegrationService : IntegrationServiceV2() { */ const val PERMISSION = "ru.evotor.permission.BUYBACK_INTEGRATION_SERVICE" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackWithBuyIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackWithBuyIntegrationService.kt index 88ac84d26..3a3f4df91 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackWithBuyIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/BuybackWithBuyIntegrationService.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком возврата покупки на основании чека покупки. */ abstract class BuybackWithBuyIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } @@ -66,4 +65,4 @@ abstract class BuybackWithBuyIntegrationService : IntegrationServiceV2() { */ const val PERMISSION = "ru.evotor.permission.BUYBACK_WITH_BUY_INTEGRATION_SERVICE" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt index 37b6ddfa1..995847d01 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком коррекции. */ abstract class CorrectionIncomeIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt index d1997e718..52133c07f 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком коррекции. */ abstract class CorrectionOutcomeIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from( bundle diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt index 4eb86c4b6..bb9ac1672 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком коррекции. */ abstract class CorrectionReturnIncomeIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt index 5546d4d22..56d43cb8b 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком коррекции. */ abstract class CorrectionReturnOutcomeIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackBacksideIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackBacksideIntegrationService.kt index ccce87262..f488714a0 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackBacksideIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackBacksideIntegrationService.kt @@ -1,5 +1,6 @@ package ru.evotor.framework.receipt.formation.event.handler.service + class PaybackBacksideIntegrationService { companion object { const val ACTION_MOVE_CURRENT_PAYBACK_RECEIPT_DRAFT_TO_PAYMENT_STAGE = "evotor.intent.action.MOVE_CURRENT_PAYBACK_RECEIPT_DRAFT_TO_PAYMENT_STAGE" diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt index 11af95cd5..e3632ec35 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt @@ -10,7 +10,6 @@ import ru.evotor.framework.receipt.formation.event.* * Служба для работы с чеком возврата. */ abstract class PaybackIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle): IBundlable? = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } @@ -67,7 +66,6 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { open fun handleEvent(event: ReturnMedicineAttributeEvent): ReturnMedicineAttributeEvent.Result? = null companion object { - /** * Запрос [реквизитов покупателя][ru.evotor.framework.receipt.Purchaser] для добавления в чек возврата. * @@ -104,4 +102,4 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { */ const val PERMISSION = "ru.evotor.permission.PAYBACK_INTEGRATION_SERVICE" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt index 1e77c2a5b..a7bde82d7 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt @@ -11,13 +11,13 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком возврата на основании чека покупки. */ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } else -> null } + /** * Возвращает смарт-терминалу массив печатных групп с соответствующими реквизитами покупателя. * @@ -63,4 +63,4 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { */ const val PERMISSION = "ru.evotor.permission.PAYBACK_WITH_SELL_INTEGRATION_SERVICE" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellBacksideIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellBacksideIntegrationService.kt index c8ec115f6..7a974345c 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellBacksideIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellBacksideIntegrationService.kt @@ -1,5 +1,6 @@ package ru.evotor.framework.receipt.formation.event.handler.service + class SellBacksideIntegrationService { companion object { const val ACTION_MOVE_CURRENT_RECEIPT_DRAFT_TO_PAYMENT_STAGE = "evotor.intent.action.MOVE_CURRENT_SELL_RECEIPT_DRAFT_TO_PAYMENT_STAGE" diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt index 0b3d715a0..c80ab535a 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt @@ -13,7 +13,6 @@ import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForP * Служба для работы с чеком продажи. */ abstract class SellIntegrationService : IntegrationServiceV2() { - final override fun onEvent(action: String, bundle: Bundle) = when (action) { ACTION_BARCODE_RECEIVED -> ReturnPositionsForBarcodeRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } @@ -73,7 +72,6 @@ abstract class SellIntegrationService : IntegrationServiceV2() { open fun handleEvent(event: ReturnMedicineAttributeEvent): ReturnMedicineAttributeEvent.Result? = null companion object { - /** * Действие, которое сообщает о получении данных от сканера штрихкодов. * diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/TriggerReceiptDiscountEventIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/TriggerReceiptDiscountEventIntegrationService.kt index e0afe1f28..094981fb3 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/TriggerReceiptDiscountEventIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/TriggerReceiptDiscountEventIntegrationService.kt @@ -1,7 +1,7 @@ package ru.evotor.framework.receipt.formation.event.handler.service -class TriggerReceiptDiscountEventIntegrationService { +class TriggerReceiptDiscountEventIntegrationService { companion object { const val ACTION_TRIGGER_RECEIPT_DISCOUNT_EVENT = "evotor.intent.action.ACTION_TRIGGER_RECEIPT_DISCOUNT_EVENT" } diff --git a/src/main/java/ru/evotor/framework/receipt/mapper/FiscalReceiptMapper.kt b/src/main/java/ru/evotor/framework/receipt/mapper/FiscalReceiptMapper.kt index e40ee2117..68d16c5dc 100644 --- a/src/main/java/ru/evotor/framework/receipt/mapper/FiscalReceiptMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/mapper/FiscalReceiptMapper.kt @@ -16,40 +16,42 @@ internal object FiscalReceiptMapper { fun read(bundle: Bundle?): FiscalReceipt? = bundle?.let { FiscalReceipt( - documentNumber = FiscalDocumentMapper.readDocumentNumber(it) ?: return null, - creationDate = FiscalDocumentMapper.readCreationDate(it) ?: return null, - settlementType = it.optEnum(KEY_SETTLEMENT_TYPE, SettlementType.values()) - ?: return null, - kktRegistrationNumber = FiscalDocumentMapper.readKktRegistrationNumber(it) - ?: return null, - sessionNumber = FiscalDocumentMapper.readSessionNumber(it) ?: return null, - fiscalStorageNumber = FiscalDocumentMapper.readFiscalStorageNumber(it) - ?: return null, - fiscalIdentifier = FiscalDocumentMapper.readFiscalIdentifier(it) ?: return null, - wasPrinted = it.getBoolean(KEY_WAS_PRINTED) + documentNumber = FiscalDocumentMapper.readDocumentNumber(it) ?: return null, + creationDate = FiscalDocumentMapper.readCreationDate(it) ?: return null, + settlementType = it.optEnum(KEY_SETTLEMENT_TYPE, SettlementType.values()) + ?: return null, + kktRegistrationNumber = FiscalDocumentMapper.readKktRegistrationNumber(it) + ?: return null, + sessionNumber = FiscalDocumentMapper.readSessionNumber(it) ?: return null, + fiscalStorageNumber = FiscalDocumentMapper.readFiscalStorageNumber(it) + ?: return null, + fiscalIdentifier = FiscalDocumentMapper.readFiscalIdentifier(it) ?: return null, + wasPrinted = it.getBoolean(KEY_WAS_PRINTED) ) } fun read(cursor: Cursor) = FiscalReceipt( - documentNumber = FiscalDocumentMapper.readDocumentNumber(cursor) - ?: throwOutdatedLibraryException(), - creationDate = FiscalDocumentMapper.readCreationDate(cursor) - ?: throwOutdatedLibraryException(), - settlementType = cursor.optEnum( - FiscalReceiptContract.COLUMN_SETTLEMENT_TYPE, SettlementType.values() - ) ?: throwOutdatedLibraryException(), - kktRegistrationNumber = FiscalDocumentMapper.readKktRegistrationNumber(cursor) ?: throwOutdatedLibraryException(), - sessionNumber = FiscalDocumentMapper.readSessionNumber(cursor) - ?: throwOutdatedLibraryException(), - fiscalStorageNumber = FiscalDocumentMapper.readFiscalStorageNumber(cursor) - ?: throwOutdatedLibraryException(), - fiscalIdentifier = FiscalDocumentMapper.readFiscalIdentifier(cursor) - ?: throwOutdatedLibraryException(), - wasPrinted = cursor.optBoolean(KEY_WAS_PRINTED) ?: throwOutdatedLibraryException() + documentNumber = FiscalDocumentMapper.readDocumentNumber(cursor) + ?: throwOutdatedLibraryException(), + creationDate = FiscalDocumentMapper.readCreationDate(cursor) + ?: throwOutdatedLibraryException(), + settlementType = cursor.optEnum( + FiscalReceiptContract.COLUMN_SETTLEMENT_TYPE, + SettlementType.values() + ) ?: throwOutdatedLibraryException(), + kktRegistrationNumber = FiscalDocumentMapper.readKktRegistrationNumber(cursor) + ?: throwOutdatedLibraryException(), + sessionNumber = FiscalDocumentMapper.readSessionNumber(cursor) + ?: throwOutdatedLibraryException(), + fiscalStorageNumber = FiscalDocumentMapper.readFiscalStorageNumber(cursor) + ?: throwOutdatedLibraryException(), + fiscalIdentifier = FiscalDocumentMapper.readFiscalIdentifier(cursor) + ?: throwOutdatedLibraryException(), + wasPrinted = cursor.optBoolean(KEY_WAS_PRINTED) ?: throwOutdatedLibraryException() ) private fun throwOutdatedLibraryException(): Nothing = - throw IntegrationLibraryMappingException("${FiscalReceipt::class.java.name} field") + throw IntegrationLibraryMappingException("${FiscalReceipt::class.java.name} field") fun write(fiscalReceipt: FiscalReceipt) = FiscalDocumentMapper.write(fiscalReceipt).apply { this.putInt(KEY_SETTLEMENT_TYPE, fiscalReceipt.settlementType.ordinal) diff --git a/src/main/java/ru/evotor/framework/receipt/position/AgentRequisites.kt b/src/main/java/ru/evotor/framework/receipt/position/AgentRequisites.kt index d370e58a9..af7e89b51 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/AgentRequisites.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/AgentRequisites.kt @@ -24,22 +24,18 @@ data class AgentRequisites( * Агент */ val agent: Agent? = null, - /** * Субагент */ val subagent: Subagent? = null, - /** * Принципал (поставщик) */ val principal: Principal, - /** * Оператор перевода */ val transactionOperator: TransactionOperator? = null, - /** * Описание операции */ @@ -57,10 +53,8 @@ data class AgentRequisites( fun createForAgent( @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) principalInn: String, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) principalPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) principalName: String ) = AgentRequisitesMapper.create( @@ -88,10 +82,8 @@ data class AgentRequisites( fun createForCommissioner( @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) principalInn: String, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) principalPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) principalName: String ) = AgentRequisitesMapper.create( @@ -119,10 +111,8 @@ data class AgentRequisites( fun createForAttorneyInFact( @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) principalInn: String, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) principalPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) principalName: String ) = AgentRequisitesMapper.create( @@ -152,15 +142,12 @@ data class AgentRequisites( fun createForPaymentAgent( @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) agentPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) principalInn: String, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) principalPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) - principalName: String, + principalName: String ) = AgentRequisitesMapper.create( agentType = Agent.Type.PAYMENT_AGENT, agentPhones = agentPhones, @@ -189,18 +176,14 @@ data class AgentRequisites( fun createForPaymentSubagent( @FiscalRequisite(tag = FiscalTags.PAYMENT_OPERATOR_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) agentPhones: List, - @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) subagentPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) principalInn: String, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) principalPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) - principalName: String, + principalName: String ) = AgentRequisitesMapper.create( agentType = null, agentPhones = agentPhones, @@ -232,28 +215,20 @@ data class AgentRequisites( fun createForBankPaymentAgent( @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) agentPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) principalInn: String, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) principalPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) principalName: String, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_NAME) transactionOperatorName: String, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_INN) transactionOperatorInn: String, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) transactionOperatorPhones: List, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_ADDRESS) transactionOperatorAddress: String, - @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_OPERATION) operationDescription: String ) = AgentRequisitesMapper.create( @@ -288,28 +263,20 @@ data class AgentRequisites( fun createForBankPaymentSubagent( @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) subagentPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_INN) principalInn: String, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) principalPhones: List, - @FiscalRequisite(tag = FiscalTags.PRINCIPAL_NAME) principalName: String, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_NAME) transactionOperatorName: String, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_INN) transactionOperatorInn: String, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_PHONE, flags = FiscalRequisite.FLAG_MULTIPLE_VALUES) transactionOperatorPhones: List, - @FiscalRequisite(tag = FiscalTags.TRANSACTION_OPERATOR_ADDRESS) transactionOperatorAddress: String, - @FiscalRequisite(tag = FiscalTags.PAYMENT_AGENT_OPERATION) operationDescription: String ) = AgentRequisitesMapper.create( diff --git a/src/main/java/ru/evotor/framework/receipt/position/ImportationData.kt b/src/main/java/ru/evotor/framework/receipt/position/ImportationData.kt index 543566643..d8fe8485c 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/ImportationData.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/ImportationData.kt @@ -10,20 +10,19 @@ import ru.evotor.framework.kkt.FiscalTags * Применяются к позиции чека. */ data class ImportationData( - /** - * Код страны происхождения товара - * Тег 1230 - */ - @FiscalRequisite(tag = FiscalTags.COUNTRY_ORIGIN_CODE) - val countryOriginCode: String, - /** - * Номер таможенной декларации - * Тег 1231 - */ - @FiscalRequisite(tag = FiscalTags.CUSTOM_DECLARATION_NUMBER) - val customsDeclarationNumber: String + /** + * Код страны происхождения товара + * Тег 1230 + */ + @FiscalRequisite(tag = FiscalTags.COUNTRY_ORIGIN_CODE) + val countryOriginCode: String, + /** + * Номер таможенной декларации + * Тег 1231 + */ + @FiscalRequisite(tag = FiscalTags.CUSTOM_DECLARATION_NUMBER) + val customsDeclarationNumber: String ) : IBundlable { - override fun toBundle(): Bundle = Bundle().apply { putString(KEY_COUNTRY_ORIGIN_CODE, countryOriginCode) putString(KEY_CUSTOM_DECLARATION_NUMBER, customsDeclarationNumber) @@ -43,5 +42,4 @@ data class ImportationData( } } } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/Mark.kt b/src/main/java/ru/evotor/framework/receipt/position/Mark.kt index 79383760f..26d7f86f2 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/Mark.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/Mark.kt @@ -17,7 +17,6 @@ import ru.evotor.framework.receipt.position.Mark.RawMark * частичное представление по конкретным тэгам [MarkByFiscalTags] */ sealed class Mark : Parcelable { - protected abstract fun writeFieldsToParcel(dest: Parcel, flags: Int) override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -25,7 +24,7 @@ sealed class Mark : Parcelable { val dataSizePosition = parcel.dataPosition() // Use integer placeholder for data size parcel.writeInt(0) - //Determine position of data start + // Determine position of data start val startDataPosition = parcel.dataPosition() writeFieldsToParcel(parcel, flags) @@ -34,7 +33,7 @@ sealed class Mark : Parcelable { val dataSize = parcel.dataPosition() - startDataPosition // Save position at the end of data val endOfDataPosition = parcel.dataPosition() - //Set position to start to write additional data size + // Set position to start to write additional data size parcel.setDataPosition(dataSizePosition) parcel.writeInt(dataSize) // Go back to the end of parcel @@ -45,10 +44,9 @@ sealed class Mark : Parcelable { * Значение при полной марке */ class RawMark( - @FiscalRequisite(tag = FiscalTags.PRODUCT_CODE) - val value: String + @FiscalRequisite(tag = FiscalTags.PRODUCT_CODE) + val value: String ) : Mark() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { dest.writeString(value) } @@ -106,10 +104,9 @@ sealed class Mark : Parcelable { */ @Deprecated("Работает только для версий ФФД <= 1.1") class MarkByFiscalTags( - @FiscalRequisite(tag = FiscalTags.PRODUCT_CODE) - val productCode: String? + @FiscalRequisite(tag = FiscalTags.PRODUCT_CODE) + val productCode: String? ) : Mark() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { dest.writeString(productCode) } @@ -159,5 +156,4 @@ sealed class Mark : Parcelable { } } } - } diff --git a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt index 92e840c4b..163a88d99 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt @@ -23,7 +23,6 @@ data class MarksCheckingInfo( } companion object { - private const val KEY_CHECK_ID = "CheckId" private const val KEY_TIMESTAMP = "Timestamp" diff --git a/src/main/java/ru/evotor/framework/receipt/position/PartialRealization.kt b/src/main/java/ru/evotor/framework/receipt/position/PartialRealization.kt index 609f76577..2c762ab0a 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/PartialRealization.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/PartialRealization.kt @@ -9,26 +9,24 @@ import java.math.BigDecimal * Частичное выбытие */ data class PartialRealization( - /** - * Количество товара в упаковке всего. Необходимое для заполнения поле, - * при частичной продаже маркированного товара. - */ - val quantityInPackage: BigDecimal + /** + * Количество товара в упаковке всего. Необходимое для заполнения поле, + * при частичной продаже маркированного товара. + */ + val quantityInPackage: BigDecimal ) : IBundlable { + override fun toBundle(): Bundle = Bundle().apply { + putString(KEY_QUANTITY_IN_PACKAGE, quantityInPackage.toPlainString()) + } - override fun toBundle(): Bundle = Bundle().apply { - putString(KEY_QUANTITY_IN_PACKAGE, quantityInPackage.toPlainString()) - } - - companion object { - - private const val KEY_QUANTITY_IN_PACKAGE = "QuantityInPackage" + companion object { + private const val KEY_QUANTITY_IN_PACKAGE = "QuantityInPackage" - @JvmStatic - fun from(bundle: Bundle?): PartialRealization? = bundle?.let { - val quantityInPackage = it.optBigDecimal(KEY_QUANTITY_IN_PACKAGE) ?: BigDecimal.ZERO + @JvmStatic + fun from(bundle: Bundle?): PartialRealization? = bundle?.let { + val quantityInPackage = it.optBigDecimal(KEY_QUANTITY_IN_PACKAGE) ?: BigDecimal.ZERO - PartialRealization(quantityInPackage = quantityInPackage) - } + PartialRealization(quantityInPackage = quantityInPackage) } -} \ No newline at end of file + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/PreferentialMedicine.kt b/src/main/java/ru/evotor/framework/receipt/position/PreferentialMedicine.kt index 0b420e5e0..d2de92ed6 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/PreferentialMedicine.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/PreferentialMedicine.kt @@ -10,24 +10,22 @@ import java.math.BigDecimal * Льгота для позиции, используется при продаже лекарственных препаратов */ data class PreferentialMedicine( - /** - * Тип льготы - */ - val type: PreferentialMedicineType, - /** - * Сумма льготы. - * Указывается только в случае рецепта с частичной льготой [PreferentialMedicineType.PARTIAL_PREFERENTIAL_MEDICINE] - * - * Это десятичное число с фиксированной точностью 2 знака после десятичного разделителя целой и дробной части. - * Например, при субсидии 123 руб 00 коп значение 123.00 - */ - val preferentialValue: BigDecimal? = null + /** + * Тип льготы + */ + val type: PreferentialMedicineType, + /** + * Сумма льготы. + * Указывается только в случае рецепта с частичной льготой [PreferentialMedicineType.PARTIAL_PREFERENTIAL_MEDICINE] + * + * Это десятичное число с фиксированной точностью 2 знака после десятичного разделителя целой и дробной части. + * Например, при субсидии 123 руб 00 коп значение 123.00 + */ + val preferentialValue: BigDecimal? = null ) : IBundlable { - override fun toBundle(): Bundle = PreferentialMedicineMapper.writeToBundle(this) companion object { - @JvmStatic fun from(bundle: Bundle?): PreferentialMedicine? = PreferentialMedicineMapper.readFromBundle(bundle) } @@ -40,4 +38,4 @@ data class PreferentialMedicine( PARTIAL_PREFERENTIAL_MEDICINE, NON_PREFERENTIAL_MEDICINE } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/SettlementMethod.kt b/src/main/java/ru/evotor/framework/receipt/position/SettlementMethod.kt index 0f11eef46..873dffb03 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/SettlementMethod.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/SettlementMethod.kt @@ -11,7 +11,6 @@ import java.math.BigDecimal */ @Suppress("UNUSED_VARIABLE") sealed class SettlementMethod : Parcelable { - protected abstract fun writeFieldsToParcel(dest: Parcel, flags: Int) override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -19,7 +18,7 @@ sealed class SettlementMethod : Parcelable { val dataSizePosition = parcel.dataPosition() // Use integer placeholder for data size parcel.writeInt(0) - //Determine position of data start + // Determine position of data start val startDataPosition = parcel.dataPosition() writeFieldsToParcel(parcel, flags) @@ -28,7 +27,7 @@ sealed class SettlementMethod : Parcelable { val dataSize = parcel.dataPosition() - startDataPosition // Save position at the end of data val endOfDataPosition = parcel.dataPosition() - //Set position to start to write additional data size + // Set position to start to write additional data size parcel.setDataPosition(dataSizePosition) parcel.writeInt(dataSize) // Go back to the end of parcel @@ -39,7 +38,6 @@ sealed class SettlementMethod : Parcelable { * Предоплата 100% – полная предварительная оплата до момента передачи предмета расчёта. */ class FullPrepayment : SettlementMethod() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { // nothing to do } @@ -87,9 +85,7 @@ sealed class SettlementMethod : Parcelable { * Предоплата – частичная предварительная оплата до момента передачи предмета расчёта. */ class PartialPrepayment : SettlementMethod() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { - } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -135,9 +131,7 @@ sealed class SettlementMethod : Parcelable { * Аванс. */ class AdvancePayment : SettlementMethod() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { - } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -183,9 +177,7 @@ sealed class SettlementMethod : Parcelable { * Полный расчёт – полная оплата, в том числе с учётом аванса (предварительной оплаты) в момент передачи предмета расчёта. */ class FullSettlement : SettlementMethod() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { - } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -233,7 +225,6 @@ sealed class SettlementMethod : Parcelable { * @property amount Сумма первичного взноса. */ class PartialSettlement(val amount: BigDecimal) : SettlementMethod() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { dest.writeString(amount.toPlainString()) } @@ -285,9 +276,7 @@ sealed class SettlementMethod : Parcelable { * Передача в кредит – передача предмета расчёта без его оплаты в момент его передачи с последующей оплатой в кредит. */ class Lend : SettlementMethod() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { - } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -333,9 +322,7 @@ sealed class SettlementMethod : Parcelable { * Оплата кредита – оплата предмета расчёта после его передачи с оплатой в кредит. */ class LoanPayment : SettlementMethod() { - override fun writeFieldsToParcel(dest: Parcel, flags: Int) { - } override fun writeToParcel(parcel: Parcel, flags: Int) { @@ -376,5 +363,4 @@ sealed class SettlementMethod : Parcelable { } } } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/event/PositionAddedEvent.kt b/src/main/java/ru/evotor/framework/receipt/position/event/PositionAddedEvent.kt index 268709859..6c105cfce 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/event/PositionAddedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/event/PositionAddedEvent.kt @@ -26,9 +26,9 @@ class PositionAddedEvent(receiptUuid: String, position: Position) : PositionEven companion object { fun from(bundle: Bundle?): PositionAddedEvent? = bundle?.let { PositionAddedEvent( - PositionEvent.getReceiptUuid(it) ?: return null, - PositionEvent.getPosition(it) ?: return null + PositionEvent.getReceiptUuid(it) ?: return null, + PositionEvent.getPosition(it) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/event/PositionEvent.kt b/src/main/java/ru/evotor/framework/receipt/position/event/PositionEvent.kt index fe6439226..eae95f618 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/event/PositionEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/event/PositionEvent.kt @@ -7,10 +7,9 @@ import ru.evotor.framework.core.action.datamapper.PositionMapper import ru.evotor.framework.receipt.Position abstract class PositionEvent internal constructor( - val receiptUuid: String, - val position: Position + val receiptUuid: String, + val position: Position ) : IBundlable { - override fun toBundle(): Bundle { val result = Bundle() result.putString(KEY_RECEIPT_UUID, receiptUuid) @@ -19,17 +18,14 @@ abstract class PositionEvent internal constructor( } companion object { - private const val KEY_RECEIPT_UUID = "receiptUuid" private const val KEY_POSITION = "position" internal fun getReceiptUuid(bundle: Bundle): String? = - bundle.getString(KEY_RECEIPT_UUID, null) + bundle.getString(KEY_RECEIPT_UUID, null) internal fun getPosition(bundle: Bundle): Position? = - PositionMapper.from(bundle.getBundle(KEY_POSITION)) - + PositionMapper.from(bundle.getBundle(KEY_POSITION)) } - } diff --git a/src/main/java/ru/evotor/framework/receipt/position/event/PositionRemovedEvent.kt b/src/main/java/ru/evotor/framework/receipt/position/event/PositionRemovedEvent.kt index 2c9e906bc..6f48c7137 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/event/PositionRemovedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/event/PositionRemovedEvent.kt @@ -26,9 +26,9 @@ class PositionRemovedEvent(receiptUuid: String, position: Position) : PositionEv companion object { fun from(bundle: Bundle?): PositionRemovedEvent? = bundle?.let { PositionRemovedEvent( - PositionEvent.getReceiptUuid(it) ?: return null, - PositionEvent.getPosition(it) ?: return null + PositionEvent.getReceiptUuid(it) ?: return null, + PositionEvent.getPosition(it) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/event/PositionUpdatedEvent.kt b/src/main/java/ru/evotor/framework/receipt/position/event/PositionUpdatedEvent.kt index 395a85158..3dc40ff0d 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/event/PositionUpdatedEvent.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/event/PositionUpdatedEvent.kt @@ -26,9 +26,9 @@ class PositionUpdatedEvent(receiptUuid: String, position: Position) : PositionEv companion object { fun from(bundle: Bundle?): PositionUpdatedEvent? = bundle?.let { PositionUpdatedEvent( - PositionEvent.getReceiptUuid(it) ?: return null, - PositionEvent.getPosition(it) ?: return null + PositionEvent.getReceiptUuid(it) ?: return null, + PositionEvent.getPosition(it) ?: return null ) } } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/AgentRequisitesMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/AgentRequisitesMapper.kt index 437e1fe85..88fee0fde 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/AgentRequisitesMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/AgentRequisitesMapper.kt @@ -17,7 +17,6 @@ import ru.evotor.framework.receipt.position.provider.AgentRequisitesContract import java.util.* internal object AgentRequisitesMapper { - private const val KEY_AGENT = "AGENT" private const val KEY_SUBAGENT = "SUBAGENT" private const val KEY_PRINCIPAL = "PRINCIPAL" @@ -25,150 +24,154 @@ internal object AgentRequisitesMapper { private const val KEY_OPERATION_DESCRIPTION = "OPERATION_DESCRIPTION" fun create( - agentType: Agent.Type?, - agentPhones: List?, - subagentType: Subagent.Type?, - subagentPhones: List?, - principalInn: String, - principalPhones: List, - principalName: String, - transactionOperatorName: String?, - transactionOperatorInn: String?, - transactionOperatorPhones: List?, - transactionOperatorAddress: String?, - operationDescription: String? + agentType: Agent.Type?, + agentPhones: List?, + subagentType: Subagent.Type?, + subagentPhones: List?, + principalInn: String, + principalPhones: List, + principalName: String, + transactionOperatorName: String?, + transactionOperatorInn: String?, + transactionOperatorPhones: List?, + transactionOperatorAddress: String?, + operationDescription: String? ) = AgentRequisites( - AgentMapper.convertToNull( - Agent( - null, - agentType, - null, - null, - null, - null, - null, - agentPhones, - null - ) - ), - subagentType?.let { - Subagent( - null, - it, - null, - null, - null, - null, - null, - subagentPhones, - null - ) - }, - Principal( - null, - null, - null, - principalName, - principalInn, - null, - principalPhones, - null - ), - TransactionOperatorMapper.convertToNull( - TransactionOperator( - null, - null, - transactionOperatorName, - null, - transactionOperatorInn, - null, - transactionOperatorPhones, - transactionOperatorAddress?.let { listOf(it) } - ) - ), - operationDescription + AgentMapper.convertToNull( + Agent( + null, + agentType, + null, + null, + null, + null, + null, + agentPhones, + null + ) + ), + subagentType?.let { + Subagent( + null, + it, + null, + null, + null, + null, + null, + subagentPhones, + null + ) + }, + Principal( + null, + null, + null, + principalName, + principalInn, + null, + principalPhones, + null + ), + TransactionOperatorMapper.convertToNull( + TransactionOperator( + null, + null, + transactionOperatorName, + null, + transactionOperatorInn, + null, + transactionOperatorPhones, + transactionOperatorAddress?.let { listOf(it) } + ) + ), + operationDescription ) fun read(bundle: Bundle?): AgentRequisites? = bundle?.let { AgentRequisites( - agent = Agent.from(it.getBundle(KEY_AGENT)), - subagent = Subagent.from(it.getBundle(KEY_SUBAGENT)), - principal = Principal.from(it.getBundle(KEY_PRINCIPAL)) ?: return null, - transactionOperator = TransactionOperator.from(it.getBundle(KEY_TRANSACTION_OPERATOR)), - operationDescription = it.getString(KEY_OPERATION_DESCRIPTION) + agent = Agent.from(it.getBundle(KEY_AGENT)), + subagent = Subagent.from(it.getBundle(KEY_SUBAGENT)), + principal = Principal.from(it.getBundle(KEY_PRINCIPAL)) ?: return null, + transactionOperator = TransactionOperator.from(it.getBundle(KEY_TRANSACTION_OPERATOR)), + operationDescription = it.getString(KEY_OPERATION_DESCRIPTION) ) } fun read(cursor: Cursor): AgentRequisites? { return AgentRequisites( - agent = readAgent(cursor), - subagent = readSubagent(cursor), - principal = readPrincipal(cursor) ?: return null, - transactionOperator = readTransactionOperator(cursor), - operationDescription = cursor.optString(AgentRequisitesContract.COLUMN_OPERATION_DESCRIPTION) + agent = readAgent(cursor), + subagent = readSubagent(cursor), + principal = readPrincipal(cursor) ?: return null, + transactionOperator = readTransactionOperator(cursor), + operationDescription = cursor.optString(AgentRequisitesContract.COLUMN_OPERATION_DESCRIPTION) ) } private fun readAgent(cursor: Cursor): Agent? = - if (cursor.optString(AgentRequisitesContract.COLUMN_AGENT_IS_NULL)?.toBoolean() != false) - null - else - Agent( - uuid = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_UUID)?.let { UUID.fromString(it) }, - type = cursor.optInt(AgentRequisitesContract.COLUMN_AGENT_TYPE)?.let { Agent.Type.values()[it] }, - counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_AGENT_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, - fullName = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_FULL_NAME), - shortName = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_SHORT_NAME), - inn = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_INN), - kpp = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_KPP), - phones = cursor.optList(AgentRequisitesContract.COLUMN_AGENT_PHONES), - addresses = cursor.optList(AgentRequisitesContract.COLUMN_AGENT_ADDRESSES) - ) + if (cursor.optString(AgentRequisitesContract.COLUMN_AGENT_IS_NULL)?.toBoolean() != false) { + null + } else { + Agent( + uuid = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_UUID)?.let { UUID.fromString(it) }, + type = cursor.optInt(AgentRequisitesContract.COLUMN_AGENT_TYPE)?.let { Agent.Type.values()[it] }, + counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_AGENT_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, + fullName = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_FULL_NAME), + shortName = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_SHORT_NAME), + inn = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_INN), + kpp = cursor.optString(AgentRequisitesContract.COLUMN_AGENT_KPP), + phones = cursor.optList(AgentRequisitesContract.COLUMN_AGENT_PHONES), + addresses = cursor.optList(AgentRequisitesContract.COLUMN_AGENT_ADDRESSES) + ) + } private fun readSubagent(cursor: Cursor): Subagent? { return Subagent( - uuid = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_UUID)?.let { UUID.fromString(it) }, - type = Subagent.Type.values()[cursor.optInt(AgentRequisitesContract.COLUMN_SUBAGENT_TYPE) - ?: return null], - counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_SUBAGENT_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, - fullName = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_FULL_NAME), - shortName = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_SHORT_NAME), - inn = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_INN), - kpp = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_KPP), - phones = cursor.optList(AgentRequisitesContract.COLUMN_SUBAGENT_PHONES), - addresses = cursor.optList(AgentRequisitesContract.COLUMN_SUBAGENT_ADDRESSES) + uuid = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_UUID)?.let { UUID.fromString(it) }, + type = Subagent.Type.values()[ + cursor.optInt(AgentRequisitesContract.COLUMN_SUBAGENT_TYPE) + ?: return null + ], + counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_SUBAGENT_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, + fullName = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_FULL_NAME), + shortName = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_SHORT_NAME), + inn = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_INN), + kpp = cursor.optString(AgentRequisitesContract.COLUMN_SUBAGENT_KPP), + phones = cursor.optList(AgentRequisitesContract.COLUMN_SUBAGENT_PHONES), + addresses = cursor.optList(AgentRequisitesContract.COLUMN_SUBAGENT_ADDRESSES) ) } private fun readPrincipal(cursor: Cursor): Principal? { return Principal( - uuid = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_UUID)?.let { UUID.fromString(it) }, - counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_PRINCIPAL_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, - fullName = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_FULL_NAME), - shortName = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_SHORT_NAME) ?: "", - inn = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_INN) - ?: return null, - kpp = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_KPP), - phones = cursor.optList(AgentRequisitesContract.COLUMN_PRINCIPAL_PHONES) - ?: return null, - addresses = cursor.optList(AgentRequisitesContract.COLUMN_PRINCIPAL_ADDRESSES) + uuid = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_UUID)?.let { UUID.fromString(it) }, + counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_PRINCIPAL_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, + fullName = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_FULL_NAME), + shortName = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_SHORT_NAME) ?: "", + inn = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_INN) + ?: return null, + kpp = cursor.optString(AgentRequisitesContract.COLUMN_PRINCIPAL_KPP), + phones = cursor.optList(AgentRequisitesContract.COLUMN_PRINCIPAL_PHONES) + ?: return null, + addresses = cursor.optList(AgentRequisitesContract.COLUMN_PRINCIPAL_ADDRESSES) ) } private fun readTransactionOperator(cursor: Cursor): TransactionOperator? = - if (cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_IS_NULL)?.toBoolean() != false) - null - else - TransactionOperator( - uuid = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_UUID)?.let { UUID.fromString(it) }, - counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, - fullName = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_FULL_NAME), - shortName = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_SHORT_NAME), - inn = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_INN), - kpp = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_KPP), - phones = cursor.optList(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_PHONES), - addresses = cursor.optList(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_ADDRESSES) - ) + if (cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_IS_NULL)?.toBoolean() != false) { + null + } else { + TransactionOperator( + uuid = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_UUID)?.let { UUID.fromString(it) }, + counterpartyType = cursor.optInt(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_COUNTERPARTY_TYPE)?.let { Counterparty.Type.values()[it] }, + fullName = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_FULL_NAME), + shortName = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_SHORT_NAME), + inn = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_INN), + kpp = cursor.optString(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_KPP), + phones = cursor.optList(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_PHONES), + addresses = cursor.optList(AgentRequisitesContract.COLUMN_TRANSACTION_OPERATOR_ADDRESSES) + ) + } fun write(agentRequisites: AgentRequisites) = Bundle().apply { this.putBundle(KEY_AGENT, agentRequisites.agent?.toBundle()) @@ -177,5 +180,4 @@ internal object AgentRequisitesMapper { this.putBundle(KEY_TRANSACTION_OPERATOR, agentRequisites.transactionOperator?.toBundle()) this.putString(KEY_OPERATION_DESCRIPTION, agentRequisites.operationDescription) } - -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/PositionPartialRealizationMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/PositionPartialRealizationMapper.kt index 3ad6054ae..b81d3ee85 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/PositionPartialRealizationMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/PositionPartialRealizationMapper.kt @@ -6,12 +6,11 @@ import ru.evotor.framework.receipt.PositionTable import ru.evotor.framework.receipt.position.PartialRealization internal object PositionPartialRealizationMapper { - internal fun fromCursor(cursor: Cursor): PartialRealization? { val quantityInPackage = cursor.optQuantity(PositionTable.COLUMN_PARTIAL_QUANTITY_IN_PACKAGE) - ?: return null + ?: return null return PartialRealization( - quantityInPackage = quantityInPackage + quantityInPackage = quantityInPackage ) } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/PreferentialMedicineMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/PreferentialMedicineMapper.kt index febdfb79f..97e4b9db4 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/PreferentialMedicineMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/PreferentialMedicineMapper.kt @@ -10,14 +10,13 @@ import ru.evotor.framework.receipt.PositionTable import ru.evotor.framework.receipt.position.PreferentialMedicine internal object PreferentialMedicineMapper { - private const val KEY_PREFERENTIAL_MEDICINE_TYPE = "PreferentialMedicineType" private const val KEY_PREFERENTIAL_MEDICINE_VALUE = "PreferentialMedicineValue" internal fun readFromCursor(cursor: Cursor): PreferentialMedicine? = cursor.optInt(PositionTable.COLUMN_PREFERENTIAL_MEDICINE)?.let { PreferentialMedicine( - type = PreferentialMedicine.PreferentialMedicineType.values()[it], - preferentialValue = cursor.optString(PositionTable.COLUMN_PREFERENTIAL_MEDICINE_AMOUNT)?.toBigDecimalOrNull() + type = PreferentialMedicine.PreferentialMedicineType.values()[it], + preferentialValue = cursor.optString(PositionTable.COLUMN_PREFERENTIAL_MEDICINE_AMOUNT)?.toBigDecimalOrNull() ) } @@ -27,9 +26,12 @@ internal object PreferentialMedicineMapper { return@let null } PreferentialMedicine( - type = Utils.safeValueOf(PreferentialMedicine.PreferentialMedicineType::class.java, - type, PreferentialMedicine.PreferentialMedicineType.NON_PREFERENTIAL_MEDICINE), - preferentialValue = it.optBigDecimal(KEY_PREFERENTIAL_MEDICINE_VALUE) + type = Utils.safeValueOf( + PreferentialMedicine.PreferentialMedicineType::class.java, + type, + PreferentialMedicine.PreferentialMedicineType.NON_PREFERENTIAL_MEDICINE + ), + preferentialValue = it.optBigDecimal(KEY_PREFERENTIAL_MEDICINE_VALUE) ) } @@ -37,4 +39,4 @@ internal object PreferentialMedicineMapper { this.putString(KEY_PREFERENTIAL_MEDICINE_TYPE, preferentialMedicine.type.name) this.putString(KEY_PREFERENTIAL_MEDICINE_VALUE, preferentialMedicine.preferentialValue?.toPlainString()) } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/SettlementMethodMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/SettlementMethodMapper.kt index 3a66924ca..7e817f792 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/SettlementMethodMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/SettlementMethodMapper.kt @@ -1,3 +1,4 @@ +@file:Suppress("PropertyName") package ru.evotor.framework.receipt.position.mapper import android.database.Cursor @@ -8,7 +9,6 @@ import ru.evotor.framework.receipt.position.SettlementMethod import java.math.BigDecimal internal object SettlementMethodMapper { - private const val KEY_FullPrepayment = 0 private const val KEY_PartialPrepayment = 1 private const val KEY_AdvancePayment = 2 @@ -19,22 +19,21 @@ internal object SettlementMethodMapper { internal fun fromCursor(cursor: Cursor): SettlementMethod { val typeOrdinal = cursor.optInt(PositionTable.COLUMN_SETTLEMENT_METHOD) - ?: return SettlementMethod.FullSettlement() + ?: return SettlementMethod.FullSettlement() val amountValue = cursor.optString(PositionTable.COLUMN_SETTLEMENT_METHOD_AMOUNT) val amount = if (amountValue == null) null else BigDecimal(amountValue) return fromInt(typeOrdinal, amount) } private fun fromInt(type: Int, amount: BigDecimal? = null): SettlementMethod = - when (type) { - KEY_FullPrepayment -> SettlementMethod.FullPrepayment() - KEY_PartialPrepayment -> SettlementMethod.PartialPrepayment() - KEY_AdvancePayment -> SettlementMethod.AdvancePayment() - KEY_FullSettlement -> SettlementMethod.FullSettlement() - KEY_PartialSettlement -> SettlementMethod.PartialSettlement(amount!!) - KEY_Lend -> SettlementMethod.Lend() - KEY_LoanPayment -> SettlementMethod.LoanPayment() - else -> SettlementMethod.FullSettlement() - } - -} \ No newline at end of file + when (type) { + KEY_FullPrepayment -> SettlementMethod.FullPrepayment() + KEY_PartialPrepayment -> SettlementMethod.PartialPrepayment() + KEY_AdvancePayment -> SettlementMethod.AdvancePayment() + KEY_FullSettlement -> SettlementMethod.FullSettlement() + KEY_PartialSettlement -> SettlementMethod.PartialSettlement(amount!!) + KEY_Lend -> SettlementMethod.Lend() + KEY_LoanPayment -> SettlementMethod.LoanPayment() + else -> SettlementMethod.FullSettlement() + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/VeterinaryAttributeMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/VeterinaryAttributeMapper.kt index 3021e6263..83fa1870a 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/VeterinaryAttributeMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/VeterinaryAttributeMapper.kt @@ -8,7 +8,6 @@ import ru.evotor.framework.receipt.PositionTable import ru.evotor.framework.receipt.attribute.VeterinaryAttribute internal object VeterinaryAttributeMapper { - private const val KEY_VETERINARY_ATTRIBUTE_TYPE = "VeterinaryAttributeType" private const val KEY_VETERINARY_ATTRIBUTE_DOCUMENT_DATE_VALUE = "VeterinaryAttributeDocumentDateValue" private const val KEY_VETERINARY_ATTRIBUTE_DOCUMENT_NUMBER_VALUE = "VeterinaryAttributeDocumentNumberValue" diff --git a/src/main/java/ru/evotor/framework/receipt/position/provider/AgentRequisitesContract.kt b/src/main/java/ru/evotor/framework/receipt/position/provider/AgentRequisitesContract.kt index d05dac9ac..6cb20bd1a 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/provider/AgentRequisitesContract.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/provider/AgentRequisitesContract.kt @@ -41,4 +41,4 @@ object AgentRequisitesContract { const val COLUMN_TRANSACTION_OPERATOR_PHONES = "TRANSACTION_OPERATOR_PHONES" const val COLUMN_TRANSACTION_OPERATOR_ADDRESSES = "TRANSACTION_OPERATOR_ADDRESSES" const val COLUMN_OPERATION_DESCRIPTION = "OPERATION_DESCRIPTION" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt index 8fbe2c044..3afab52b4 100644 --- a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt +++ b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt @@ -3,4 +3,4 @@ package ru.evotor.framework.receipt.print_extras /** * Класс-родитель для указания на место в чеке, куда будет добавлена дополнительная печатная информация */ -abstract class PrintExtraPlace(val placeType: PrintExtraPlaceType) \ No newline at end of file +abstract class PrintExtraPlace(val placeType: PrintExtraPlaceType) diff --git a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt index 0602ccc49..c03582932 100644 --- a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt +++ b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt @@ -6,18 +6,17 @@ import android.os.Bundle * Печатная информация будет добавлена после позиции в чеке и после всех её модификаторов (подпозиций) */ class PrintExtraPlacePositionAllSubpositionsFooter( - val positionUuid: String? + val positionUuid: String? ) : PrintExtraPlace(PrintExtraPlaceType.POSITION_ALL_SUBPOSITIONS_FOOTER) { - companion object { val KEY_POSITION_UUID = "positionUuid" fun addToBundle(bundle: Bundle, place: PrintExtraPlacePositionAllSubpositionsFooter): Bundle = - bundle.apply { putString(KEY_POSITION_UUID, place.positionUuid) } + bundle.apply { putString(KEY_POSITION_UUID, place.positionUuid) } fun fromBundle(bundle: Bundle): PrintExtraPlacePositionAllSubpositionsFooter? = - bundle.getString(KEY_POSITION_UUID)?.let { - PrintExtraPlacePositionAllSubpositionsFooter(it) - } + bundle.getString(KEY_POSITION_UUID)?.let { + PrintExtraPlacePositionAllSubpositionsFooter(it) + } } } diff --git a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt index 19f45c4b5..84f089251 100644 --- a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt +++ b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt @@ -6,18 +6,17 @@ import android.os.Bundle * Печатная информация будет добавлена сразу после позиции в чеке, до списка её модификаторов (подпозиций) */ class PrintExtraPlacePositionFooter( - val positionUuid: String? + val positionUuid: String? ) : PrintExtraPlace(PrintExtraPlaceType.POSITION_FOOTER) { - companion object { val KEY_POSITION_UUID = "positionUuid" fun addToBundle(bundle: Bundle, place: PrintExtraPlacePositionFooter): Bundle = - bundle.apply { putString(KEY_POSITION_UUID, place.positionUuid) } + bundle.apply { putString(KEY_POSITION_UUID, place.positionUuid) } fun fromBundle(bundle: Bundle): PrintExtraPlacePositionFooter? = - bundle.getString(KEY_POSITION_UUID)?.let { - PrintExtraPlacePositionFooter(it) - } + bundle.getString(KEY_POSITION_UUID)?.let { + PrintExtraPlacePositionFooter(it) + } } } diff --git a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt index f5225c616..14ac312c7 100644 --- a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt +++ b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt @@ -6,16 +6,15 @@ import android.os.Bundle * Печатная информация будет добавлена в верхней части чека: после текста "Кассовый чек", до имени пользователя */ class PrintExtraPlacePrintGroupHeader( - val printGroupId: String? + val printGroupId: String? ) : PrintExtraPlace(PrintExtraPlaceType.PRINT_GROUP_HEADER) { - companion object { val KEY_PRINT_GROUP_ID = "printGroupId" fun addToBundle(bundle: Bundle, place: PrintExtraPlacePrintGroupHeader): Bundle = - bundle.apply { putString(KEY_PRINT_GROUP_ID, place.printGroupId) } + bundle.apply { putString(KEY_PRINT_GROUP_ID, place.printGroupId) } fun fromBundle(bundle: Bundle): PrintExtraPlacePrintGroupHeader? = - PrintExtraPlacePrintGroupHeader(bundle.getString(KEY_PRINT_GROUP_ID)) + PrintExtraPlacePrintGroupHeader(bundle.getString(KEY_PRINT_GROUP_ID)) } } diff --git a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt index b28f02abf..178ce3b1d 100644 --- a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt +++ b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt @@ -6,16 +6,15 @@ import android.os.Bundle * Печатная информация будет добавлена в нижней части чека, после итога и списка отплат, до поля "всего оплачено" */ class PrintExtraPlacePrintGroupSummary( - val printGroupId: String? + val printGroupId: String? ) : PrintExtraPlace(PrintExtraPlaceType.PRINT_GROUP_SUMMARY) { - companion object { val KEY_PRINT_GROUP_ID = "printGroupId" fun addToBundle(bundle: Bundle, place: PrintExtraPlacePrintGroupSummary): Bundle = - bundle.apply { putString(KEY_PRINT_GROUP_ID, place.printGroupId) } + bundle.apply { putString(KEY_PRINT_GROUP_ID, place.printGroupId) } fun fromBundle(bundle: Bundle): PrintExtraPlacePrintGroupSummary? = - PrintExtraPlacePrintGroupSummary(bundle.getString(KEY_PRINT_GROUP_ID)) + PrintExtraPlacePrintGroupSummary(bundle.getString(KEY_PRINT_GROUP_ID)) } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt index ff6b24646..80c8169f4 100644 --- a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt +++ b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt @@ -6,16 +6,15 @@ import android.os.Bundle * Печатная информация будет добавлена сверху от чека: после клише, до текста "Кассовый чек" */ class PrintExtraPlacePrintGroupTop( - val printGroupId: String? + val printGroupId: String? ) : PrintExtraPlace(PrintExtraPlaceType.PRINT_GROUP_TOP) { - companion object { val KEY_PRINT_GROUP_ID = "printGroupId" fun addToBundle(bundle: Bundle, place: PrintExtraPlacePrintGroupTop): Bundle = - bundle.apply { putString(KEY_PRINT_GROUP_ID, place.printGroupId) } + bundle.apply { putString(KEY_PRINT_GROUP_ID, place.printGroupId) } fun fromBundle(bundle: Bundle): PrintExtraPlacePrintGroupTop? = - PrintExtraPlacePrintGroupTop(bundle.getString(KEY_PRINT_GROUP_ID)) + PrintExtraPlacePrintGroupTop(bundle.getString(KEY_PRINT_GROUP_ID)) } } diff --git a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt index a52147ab8..b3ad65b54 100644 --- a/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt +++ b/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt @@ -9,4 +9,4 @@ enum class PrintExtraPlaceType { PRINT_GROUP_SUMMARY, POSITION_FOOTER, POSITION_ALL_SUBPOSITIONS_FOOTER -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/provider/FiscalReceiptContract.kt b/src/main/java/ru/evotor/framework/receipt/provider/FiscalReceiptContract.kt index 1729737e0..4b31e7744 100644 --- a/src/main/java/ru/evotor/framework/receipt/provider/FiscalReceiptContract.kt +++ b/src/main/java/ru/evotor/framework/receipt/provider/FiscalReceiptContract.kt @@ -9,4 +9,4 @@ internal object FiscalReceiptContract { val URI: Uri = Uri.withAppendedPath(FiscalDocumentContract.URI, PATH) const val COLUMN_SETTLEMENT_TYPE = "SETTLEMENT_TYPE" -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/settings/SettingsApi.kt b/src/main/java/ru/evotor/framework/settings/SettingsApi.kt index c8baa20b0..c25deee2c 100644 --- a/src/main/java/ru/evotor/framework/settings/SettingsApi.kt +++ b/src/main/java/ru/evotor/framework/settings/SettingsApi.kt @@ -13,7 +13,6 @@ import ru.evotor.framework.settings.SettingsProviderContracts.NEGATIVE_BALANCE_P * Настройки EvotorPos (раздел "Правила торговли"). */ object SettingsApi { - /** * Количество печати слип-чеков. */ diff --git a/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt b/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt index 9c8d4ae87..e010a95e0 100644 --- a/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt +++ b/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt @@ -9,7 +9,6 @@ enum class SettingsProviderContracts( val path: String, val columnName: String ) { - /** * Количество печати слип-чеков. */ diff --git a/src/main/java/ru/evotor/framework/system/SystemStateApi.kt b/src/main/java/ru/evotor/framework/system/SystemStateApi.kt index d0ed4f46c..e8e6ca4f9 100644 --- a/src/main/java/ru/evotor/framework/system/SystemStateApi.kt +++ b/src/main/java/ru/evotor/framework/system/SystemStateApi.kt @@ -7,14 +7,18 @@ import androidx.annotation.WorkerThread @WorkerThread object SystemStateApi { - @JvmField val BASE_URI = Uri.parse("content://ru.evotor.evotorpos.system_state") @JvmStatic fun getLastSessionNumber(context: Context): Long? { - val cursor = context.contentResolver.query(SystemStateTable.LAST_SESSION_NUMBER_URI, null, - null, null, null) + val cursor = context.contentResolver.query( + SystemStateTable.LAST_SESSION_NUMBER_URI, + null, + null, + null, + null + ) return cursor?.use { if (it.moveToFirst()) { @@ -27,8 +31,13 @@ object SystemStateApi { @JvmStatic fun isSessionOpened(context: Context): Boolean? { - val cursor = context.contentResolver.query(SystemStateTable.IS_SESSION_OPENED_URI, null, - null, null, null) + val cursor = context.contentResolver.query( + SystemStateTable.IS_SESSION_OPENED_URI, + null, + null, + null, + null + ) return cursor?.use { if (it.moveToFirst()) { @@ -60,4 +69,4 @@ object SystemStateApi { return valueStr.toBoolean() } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/system/SystemStateTable.kt b/src/main/java/ru/evotor/framework/system/SystemStateTable.kt index 8a24de372..ce9318a6b 100644 --- a/src/main/java/ru/evotor/framework/system/SystemStateTable.kt +++ b/src/main/java/ru/evotor/framework/system/SystemStateTable.kt @@ -11,6 +11,7 @@ object SystemStateTable { @JvmField val IS_SESSION_OPENED_URI = Uri.withAppendedPath(SystemStateApi.BASE_URI, IS_SESSION_OPENED_PATH) + @JvmField val LAST_SESSION_NUMBER_URI = Uri.withAppendedPath(SystemStateApi.BASE_URI, LAST_SESSION_NUMBER_PATH) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/system/mode/DeviceModeApi.kt b/src/main/java/ru/evotor/framework/system/mode/DeviceModeApi.kt index 984b06bff..4bdf43d76 100644 --- a/src/main/java/ru/evotor/framework/system/mode/DeviceModeApi.kt +++ b/src/main/java/ru/evotor/framework/system/mode/DeviceModeApi.kt @@ -3,7 +3,6 @@ package ru.evotor.framework.system.mode import android.content.Context object DeviceModeApi { - /** * Режим работы терминала - смарт-терминал */ @@ -23,7 +22,9 @@ object DeviceModeApi { context.contentResolver.query( DeviceModeContract.QUERY_URI, arrayOf(DeviceModeContract.COLUMN_MODE), - null, null, null + null, + null, + null )?.use { c -> if (c.moveToNext()) { c.getString(c.getColumnIndex(DeviceModeContract.COLUMN_MODE)) @@ -35,5 +36,4 @@ object DeviceModeApi { null } } - } diff --git a/src/main/java/ru/evotor/framework/system/mode/DeviceModeContract.kt b/src/main/java/ru/evotor/framework/system/mode/DeviceModeContract.kt index 8239a6e29..3ea0ad678 100644 --- a/src/main/java/ru/evotor/framework/system/mode/DeviceModeContract.kt +++ b/src/main/java/ru/evotor/framework/system/mode/DeviceModeContract.kt @@ -3,11 +3,9 @@ package ru.evotor.framework.system.mode import android.net.Uri object DeviceModeContract { - val AUTHORITY = "ru.evotor.external.integrations" val PATH = "mode_fr" val COLUMN_MODE = "mode" val QUERY_URI = Uri.parse("content://$AUTHORITY/$PATH") - } diff --git a/src/main/java/ru/evotor/framework/users/Grant.kt b/src/main/java/ru/evotor/framework/users/Grant.kt index 16f3516b0..f8819769e 100644 --- a/src/main/java/ru/evotor/framework/users/Grant.kt +++ b/src/main/java/ru/evotor/framework/users/Grant.kt @@ -6,12 +6,12 @@ package ru.evotor.framework.users * @see ["Права приложения"](https://developer.evotor.ru/docs/doc_app_grants.html) */ data class Grant( - /** - * Название права. - */ - val title: String, - /** - * Идентификатор роли, которой соответствует право. - */ - val roleUuid: String -) \ No newline at end of file + /** + * Название права. + */ + val title: String, + /** + * Идентификатор роли, которой соответствует право. + */ + val roleUuid: String +) diff --git a/src/main/java/ru/evotor/framework/users/GrantQuery.kt b/src/main/java/ru/evotor/framework/users/GrantQuery.kt index d878c65e4..443628ce0 100644 --- a/src/main/java/ru/evotor/framework/users/GrantQuery.kt +++ b/src/main/java/ru/evotor/framework/users/GrantQuery.kt @@ -4,24 +4,23 @@ import ru.evotor.query.Cursor import ru.evotor.query.FilterBuilder class GrantQuery(authenticatedUsersOnly: Boolean = false) : FilterBuilder( - if (authenticatedUsersOnly) GrantsTable.URI_GRANTS_OF_AUTHENTICATED_USER else GrantsTable.URI) { - + if (authenticatedUsersOnly) GrantsTable.URI_GRANTS_OF_AUTHENTICATED_USER else GrantsTable.URI +) { @JvmField val title = addFieldFilter(GrantsTable.ROW_TITLE) + @JvmField val roleUuid = addFieldFilter(GrantsTable.ROW_ROLE_UUID) class SortOrder : FilterBuilder.SortOrder() { - @JvmField val title = addFieldSorter(GrantsTable.ROW_TITLE) + @JvmField val roleUuid = addFieldSorter(GrantsTable.ROW_ROLE_UUID) - } override fun getValue(cursor: Cursor): Grant? { return UserMapper.createGrant(cursor) } - } diff --git a/src/main/java/ru/evotor/framework/users/GrantsProviderColumns.kt b/src/main/java/ru/evotor/framework/users/GrantsProviderColumns.kt index a8a8397dd..1e8890306 100644 --- a/src/main/java/ru/evotor/framework/users/GrantsProviderColumns.kt +++ b/src/main/java/ru/evotor/framework/users/GrantsProviderColumns.kt @@ -1,3 +1,4 @@ +@file:Suppress("PropertyName") package ru.evotor.framework.users import android.provider.BaseColumns diff --git a/src/main/java/ru/evotor/framework/users/GrantsTable.kt b/src/main/java/ru/evotor/framework/users/GrantsTable.kt index f7361fd1b..0522bb25a 100644 --- a/src/main/java/ru/evotor/framework/users/GrantsTable.kt +++ b/src/main/java/ru/evotor/framework/users/GrantsTable.kt @@ -4,6 +4,7 @@ import android.net.Uri object GrantsTable { @JvmField val URI = Uri.withAppendedPath(UsersContentProviderContract.BASE_URI, "grants") + @JvmField val URI_GRANTS_OF_AUTHENTICATED_USER = Uri.withAppendedPath(URI, "authenticated") const val ROW_ROLE_UUID = "ROLE_UUID" diff --git a/src/main/java/ru/evotor/framework/users/RolesProviderColumns.kt b/src/main/java/ru/evotor/framework/users/RolesProviderColumns.kt index 3314866b5..92b3f8bb9 100644 --- a/src/main/java/ru/evotor/framework/users/RolesProviderColumns.kt +++ b/src/main/java/ru/evotor/framework/users/RolesProviderColumns.kt @@ -1,3 +1,4 @@ +@file:Suppress("PropertyName") package ru.evotor.framework.users import android.provider.BaseColumns diff --git a/src/main/java/ru/evotor/framework/users/User.kt b/src/main/java/ru/evotor/framework/users/User.kt index 62dbc689d..88f3d62b8 100644 --- a/src/main/java/ru/evotor/framework/users/User.kt +++ b/src/main/java/ru/evotor/framework/users/User.kt @@ -2,105 +2,109 @@ package ru.evotor.framework.users /** * Описывает данные сотрудника, который работает со смарт-терминалом. - * Пользователь указывает данные сотрудника в Личном кабинете Эвотора. + * Пользователь указывает данные сотрудника в Личном кабинете. */ data class User( - /** - * Идентификатор сотрудника в формате `uuid4`. - */ - val uuid: String, - /** - * Фамилия сотрудника. - * Поле может быть пустым. - */ - val secondName: String?, - /** - * Имя сотрудника. - */ - val firstName: String?, - /** - * ИНН - * Поле может быть пустым - */ - val inn: String? = null, - /** - * Номер телефона сотрудника. - * Поле может быть пустым. - */ - val phone: String?, - /** - * Пин код от смарт-терминала. - * Поле может быть пустым. - */ - val pin: String?, - /** - * Идентификатор роли сотрудника в формате `uuid4`. - * Роли создаёт пользователь в Личном кабинете Эвотора. - * С помощью ролей, пользователь предоставляет сотрудникам доступ к различным функциям смарт-терминала. - */ - val roleUuid: String, - /** - * Название роли, например, "Кассир". - */ - val roleTitle: String, - /** - * Должность - * Поле может быть пустым - */ - val position: String? = null + /** + * Идентификатор сотрудника в формате `uuid4`. + */ + val uuid: String, + /** + * Фамилия сотрудника. + * Поле может быть пустым. + */ + val secondName: String?, + /** + * Имя сотрудника. + */ + val firstName: String?, + /** + * ИНН + * Поле может быть пустым + */ + val inn: String? = null, + /** + * Номер телефона сотрудника. + * Поле может быть пустым. + */ + val phone: String?, + /** + * Пин код от смарт-терминала. + * Поле может быть пустым. + */ + val pin: String?, + /** + * Идентификатор роли сотрудника в формате `uuid4`. + * Роли создаёт пользователь в Личном кабинете. + * С помощью ролей, пользователь предоставляет сотрудникам доступ к различным функциям смарт-терминала. + */ + val roleUuid: String, + /** + * Название роли, например, "Кассир". + */ + val roleTitle: String, + /** + * Должность + * Поле может быть пустым + */ + val position: String? = null ) { @Deprecated( - message = "Use constructor with inn and position parameters instead", - level = DeprecationLevel.WARNING, - replaceWith = ReplaceWith( - expression = "User(uuid: String, secondName: String?, firstName: String?, " + - "inn: String?, phone: String?, pin: String?, roleUuid: String, " + - "roleTitle: String, position: String?)" - ) + message = "Use constructor with inn and position parameters instead", + level = DeprecationLevel.WARNING, + replaceWith = ReplaceWith( + expression = "User(uuid: String, secondName: String?, firstName: String?, " + + "inn: String?, phone: String?, pin: String?, roleUuid: String, " + + "roleTitle: String, position: String?)" + ) ) - constructor(uuid: String, - secondName: String?, - firstName: String?, - phone: String?, - pin: String?, - roleUuid: String, - roleTitle: String) : this( - uuid, - secondName, - firstName, - null, - phone, - pin, - roleUuid, - roleTitle, - null + constructor( + uuid: String, + secondName: String?, + firstName: String?, + phone: String?, + pin: String?, + roleUuid: String, + roleTitle: String + ) : this( + uuid, + secondName, + firstName, + null, + phone, + pin, + roleUuid, + roleTitle, + null ) @Deprecated( - message = "Use constructor with inn and position parameters instead", - level = DeprecationLevel.WARNING, - replaceWith = ReplaceWith( - expression = "User(uuid: String, secondName: String?, firstName: String?, " + - "inn: String?, phone: String?, pin: String?, roleUuid: String, " + - "roleTitle: String, position: String?)" - ) + message = "Use constructor with inn and position parameters instead", + level = DeprecationLevel.WARNING, + replaceWith = ReplaceWith( + expression = "User(uuid: String, secondName: String?, firstName: String?, " + + "inn: String?, phone: String?, pin: String?, roleUuid: String, " + + "roleTitle: String, position: String?)" + ) ) - constructor(uuid: String, - secondName: String?, - firstName: String?, - inn: String?, - phone: String?, - pin: String?, - roleUuid: String, - roleTitle: String) : this( - uuid, - secondName, - firstName, - inn, - phone, - pin, - roleUuid, - roleTitle, - null + constructor( + uuid: String, + secondName: String?, + firstName: String?, + inn: String?, + phone: String?, + pin: String?, + roleUuid: String, + roleTitle: String + ) : this( + uuid, + secondName, + firstName, + inn, + phone, + pin, + roleUuid, + roleTitle, + null ) -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/users/UserApi.kt b/src/main/java/ru/evotor/framework/users/UserApi.kt index bfe18d01c..7ecdd3659 100644 --- a/src/main/java/ru/evotor/framework/users/UserApi.kt +++ b/src/main/java/ru/evotor/framework/users/UserApi.kt @@ -2,7 +2,6 @@ package ru.evotor.framework.users import android.content.ContentValues import android.content.Context -import android.net.Uri import androidx.annotation.WorkerThread /** @@ -10,7 +9,6 @@ import androidx.annotation.WorkerThread */ @WorkerThread object UserApi { - /** * Возвращает данные всех сотрудников, которые могут работать со смарт-терминалом. * @param context контекст приложения. @@ -126,7 +124,6 @@ object UserApi { } } - /** * Принудительно авторизует пользователя в системе, без ввода пин-кода. * Требует разрешения ru.evotor.permission.auth.FORCE_LOGIN @@ -146,5 +143,4 @@ object UserApi { false } } - } diff --git a/src/main/java/ru/evotor/framework/users/UserMapper.kt b/src/main/java/ru/evotor/framework/users/UserMapper.kt index a08e288d5..a76035584 100644 --- a/src/main/java/ru/evotor/framework/users/UserMapper.kt +++ b/src/main/java/ru/evotor/framework/users/UserMapper.kt @@ -4,25 +4,24 @@ import android.database.Cursor import ru.evotor.framework.optString internal object UserMapper { - fun createGrant(cursor: Cursor): Grant { return Grant( - title = cursor.getString(cursor.getColumnIndex(GrantsTable.ROW_TITLE)), - roleUuid = cursor.getString(cursor.getColumnIndex(GrantsTable.ROW_ROLE_UUID)) + title = cursor.getString(cursor.getColumnIndex(GrantsTable.ROW_TITLE)), + roleUuid = cursor.getString(cursor.getColumnIndex(GrantsTable.ROW_ROLE_UUID)) ) } fun createUser(cursor: Cursor): User { return User( - uuid = cursor.getString(cursor.getColumnIndex(UsersTable.ROW_USER_UUID)), - secondName = cursor.optString(UsersTable.ROW_USER_SECOND_NAME), - firstName = cursor.optString(UsersTable.ROW_USER_FIRST_NAME), - inn = cursor.optString(UsersTable.ROW_USER_INN), - phone = cursor.optString(UsersTable.ROW_USER_PHONE), - pin = cursor.optString(UsersTable.ROW_USER_PIN), - roleUuid = cursor.getString(cursor.getColumnIndex(UsersTable.ROW_ROLE_UUID)), - roleTitle = cursor.getString(cursor.getColumnIndex(UsersTable.ROW_ROLE_TITLE)), - position = cursor.optString(UsersTable.ROW_USER_POSITION) + uuid = cursor.getString(cursor.getColumnIndex(UsersTable.ROW_USER_UUID)), + secondName = cursor.optString(UsersTable.ROW_USER_SECOND_NAME), + firstName = cursor.optString(UsersTable.ROW_USER_FIRST_NAME), + inn = cursor.optString(UsersTable.ROW_USER_INN), + phone = cursor.optString(UsersTable.ROW_USER_PHONE), + pin = cursor.optString(UsersTable.ROW_USER_PIN), + roleUuid = cursor.getString(cursor.getColumnIndex(UsersTable.ROW_ROLE_UUID)), + roleTitle = cursor.getString(cursor.getColumnIndex(UsersTable.ROW_ROLE_TITLE)), + position = cursor.optString(UsersTable.ROW_USER_POSITION) ) } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/users/UserQuery.kt b/src/main/java/ru/evotor/framework/users/UserQuery.kt index 9d586d366..228e2096d 100644 --- a/src/main/java/ru/evotor/framework/users/UserQuery.kt +++ b/src/main/java/ru/evotor/framework/users/UserQuery.kt @@ -3,48 +3,62 @@ package ru.evotor.framework.users import ru.evotor.query.Cursor import ru.evotor.query.FilterBuilder -class UserQuery(authenticatedUsersOnly: Boolean = false): - FilterBuilder( - if (authenticatedUsersOnly) UsersTable.URI_AUTHENTICATED else UsersTable.URI - ) { - +class UserQuery(authenticatedUsersOnly: Boolean = false) : + FilterBuilder( + if (authenticatedUsersOnly) UsersTable.URI_AUTHENTICATED else UsersTable.URI + ) { @JvmField val uuid = addFieldFilter(UsersTable.ROW_USER_UUID) + @JvmField val secondName = addFieldFilter(UsersTable.ROW_USER_SECOND_NAME) + @JvmField val firstName = addFieldFilter(UsersTable.ROW_USER_FIRST_NAME) + @JvmField val inn = addFieldFilter(UsersTable.ROW_USER_INN) + @JvmField val phone = addFieldFilter(UsersTable.ROW_USER_PHONE) + @JvmField val pin = addFieldFilter(UsersTable.ROW_USER_PIN) + @JvmField val roleUuid = addFieldFilter(UsersTable.ROW_ROLE_UUID) + @JvmField val roleTitle = addFieldFilter(UsersTable.ROW_ROLE_TITLE) + @JvmField val position = addFieldFilter(UsersTable.ROW_USER_POSITION) class SortOrder : FilterBuilder.SortOrder() { - @JvmField val uuid = addFieldSorter(UsersTable.ROW_USER_UUID) + @JvmField val secondName = addFieldSorter(UsersTable.ROW_USER_SECOND_NAME) + @JvmField val firstName = addFieldSorter(UsersTable.ROW_USER_FIRST_NAME) + @JvmField val inn = addFieldSorter(UsersTable.ROW_USER_INN) + @JvmField val phone = addFieldSorter(UsersTable.ROW_USER_PHONE) + @JvmField val pin = addFieldSorter(UsersTable.ROW_USER_PIN) + @JvmField val roleUuid = addFieldSorter(UsersTable.ROW_ROLE_UUID) + @JvmField val roleTitle = addFieldSorter(UsersTable.ROW_ROLE_TITLE) + @JvmField val position = addFieldSorter(UsersTable.ROW_USER_POSITION) } diff --git a/src/main/java/ru/evotor/framework/users/UsersContentProviderContract.kt b/src/main/java/ru/evotor/framework/users/UsersContentProviderContract.kt index e749d1dfc..fbf3471a8 100644 --- a/src/main/java/ru/evotor/framework/users/UsersContentProviderContract.kt +++ b/src/main/java/ru/evotor/framework/users/UsersContentProviderContract.kt @@ -3,5 +3,6 @@ package ru.evotor.framework.users import android.net.Uri object UsersContentProviderContract { - @JvmField val BASE_URI: Uri = Uri.parse("content://ru.evotor.users") + @JvmField + val BASE_URI: Uri = Uri.parse("content://ru.evotor.users") } diff --git a/src/main/java/ru/evotor/framework/users/UsersProviderColumns.kt b/src/main/java/ru/evotor/framework/users/UsersProviderColumns.kt index 60acbcde0..3c9e28954 100644 --- a/src/main/java/ru/evotor/framework/users/UsersProviderColumns.kt +++ b/src/main/java/ru/evotor/framework/users/UsersProviderColumns.kt @@ -1,3 +1,4 @@ +@file:Suppress("PropertyName") package ru.evotor.framework.users import android.provider.BaseColumns diff --git a/src/main/java/ru/evotor/framework/users/UsersTable.kt b/src/main/java/ru/evotor/framework/users/UsersTable.kt index fea2e4349..4ed94ebad 100644 --- a/src/main/java/ru/evotor/framework/users/UsersTable.kt +++ b/src/main/java/ru/evotor/framework/users/UsersTable.kt @@ -4,7 +4,9 @@ import android.net.Uri object UsersTable { @JvmField val URI: Uri = Uri.withAppendedPath(UsersContentProviderContract.BASE_URI, "users") + @JvmField val URI_AUTHENTICATED: Uri = Uri.withAppendedPath(URI, "authenticated") + @JvmField val URI_FORCE_AUTHENTICATED: Uri = Uri.withAppendedPath(URI, "force_authenticated") const val ROW_USER_UUID = "USER_UUID" diff --git a/src/main/java/ru/evotor/integrations/BarcodeBroadcastReceiver.kt b/src/main/java/ru/evotor/integrations/BarcodeBroadcastReceiver.kt index 8743ea57c..7984cd563 100644 --- a/src/main/java/ru/evotor/integrations/BarcodeBroadcastReceiver.kt +++ b/src/main/java/ru/evotor/integrations/BarcodeBroadcastReceiver.kt @@ -10,7 +10,6 @@ import android.content.IntentFilter */ abstract class BarcodeBroadcastReceiver : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { intent?.extras?.getString(EXTRA_SCANNED_CODE)?.let { code -> if (code.isNotEmpty()) { @@ -21,9 +20,7 @@ abstract class BarcodeBroadcastReceiver : BroadcastReceiver() { public abstract fun onBarcodeReceived(barcode: String, context: Context?) - companion object { - @JvmField public val ACTION_SCANNED = "ru.evotor.devices.ScannedCode" @@ -38,7 +35,5 @@ abstract class BarcodeBroadcastReceiver : BroadcastReceiver() { @JvmField public val BARCODE_INTENT_FILTER = IntentFilter(ACTION_SCANNED) - } - -} \ No newline at end of file +} diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml index 9f4c36e1d..dc2998af3 100644 --- a/src/main/res/values/colors.xml +++ b/src/main/res/values/colors.xml @@ -1,5 +1,5 @@ - + #FFFFFF #333333 - \ No newline at end of file + diff --git a/src/test/java/ru/evotor/framework/receipt/position/AgentRequisitesTest.kt b/src/test/java/ru/evotor/framework/receipt/position/AgentRequisitesTest.kt index 936c5f187..77cfeb419 100644 --- a/src/test/java/ru/evotor/framework/receipt/position/AgentRequisitesTest.kt +++ b/src/test/java/ru/evotor/framework/receipt/position/AgentRequisitesTest.kt @@ -9,147 +9,144 @@ import ru.evotor.framework.counterparties.collaboration.agent_scheme.Transaction @Suppress("SameParameterValue") class AgentRequisitesTest { - @Test fun createForAgent() = createForAgent("1234", listOf("89000000000", "89000000001"), "name") private fun createForAgent( - principalInn: String, - principalPhones: List, - principalName: String + principalInn: String, + principalPhones: List, + principalName: String ) = Assert.assertEquals( - AgentRequisites.createForAgent(principalInn, principalPhones, principalName), - AgentRequisites( - Agent(null, Agent.Type.AGENT, null, null, null, null, null, null, null), - null, - Principal(null, null, null, principalName, principalInn, null, principalPhones, null), - null, - null - ) + AgentRequisites.createForAgent(principalInn, principalPhones, principalName), + AgentRequisites( + Agent(null, Agent.Type.AGENT, null, null, null, null, null, null, null), + null, + Principal(null, null, null, principalName, principalInn, null, principalPhones, null), + null, + null + ) ) @Test fun createForCommissioner() = createForCommissioner("1234", listOf("89000000000", "89000000001"), "name") private fun createForCommissioner( - principalInn: String, - principalPhones: List, - principalName: String + principalInn: String, + principalPhones: List, + principalName: String ) = Assert.assertEquals( - AgentRequisites.createForCommissioner(principalInn, principalPhones, principalName), - AgentRequisites( - Agent(null, Agent.Type.COMMISSIONER, null, null, null, null, null, null, null), - null, - Principal(null, null, null, principalName, principalInn, null, principalPhones, null), - null, - null - ) + AgentRequisites.createForCommissioner(principalInn, principalPhones, principalName), + AgentRequisites( + Agent(null, Agent.Type.COMMISSIONER, null, null, null, null, null, null, null), + null, + Principal(null, null, null, principalName, principalInn, null, principalPhones, null), + null, + null + ) ) @Test fun createForAttorneyInFact() = createForAttorneyInFact("1234", listOf("89000000000", "89000000001"), "name") private fun createForAttorneyInFact( - principalInn: String, - principalPhones: List, - principalName: String + principalInn: String, + principalPhones: List, + principalName: String ) = Assert.assertEquals( - AgentRequisites.createForAttorneyInFact(principalInn, principalPhones, principalName), - AgentRequisites( - Agent(null, Agent.Type.ATTORNEY_IN_FACT, null, null, null, null, null, null, null), - null, - Principal(null, null, null, principalName, principalInn, null, principalPhones, null), - null, - null - ) + AgentRequisites.createForAttorneyInFact(principalInn, principalPhones, principalName), + AgentRequisites( + Agent(null, Agent.Type.ATTORNEY_IN_FACT, null, null, null, null, null, null, null), + null, + Principal(null, null, null, principalName, principalInn, null, principalPhones, null), + null, + null + ) ) @Test - fun createForPaymentAgent() = createForPaymentAgent(listOf("+70000000000"), "1234", listOf("89000000000", "89000000001"), "name", ) + fun createForPaymentAgent() = createForPaymentAgent(listOf("+70000000000"), "1234", listOf("89000000000", "89000000001"), "name") private fun createForPaymentAgent( - agentPhones: List, - principalInn: String, - principalPhones: List, - principalName: String + agentPhones: List, + principalInn: String, + principalPhones: List, + principalName: String ) = Assert.assertEquals( - AgentRequisites.createForPaymentAgent(agentPhones, principalInn, principalPhones, principalName), - AgentRequisites( - Agent(null, Agent.Type.PAYMENT_AGENT, null, null, null, null, null, agentPhones, null), - null, - Principal(null, null, null, principalName, principalInn, null, principalPhones, null), - null, - null - ) + AgentRequisites.createForPaymentAgent(agentPhones, principalInn, principalPhones, principalName), + AgentRequisites( + Agent(null, Agent.Type.PAYMENT_AGENT, null, null, null, null, null, agentPhones, null), + null, + Principal(null, null, null, principalName, principalInn, null, principalPhones, null), + null, + null + ) ) @Test fun createForPaymentSubagent() = createForPaymentSubagent(listOf("+70000000000"), listOf("+77776668888"), "1234", listOf("89000000000", "89000000001"), "name") private fun createForPaymentSubagent( - agentPhones: List, - subagentPhones: List, - principalInn: String, - principalPhones: List, - principalName: String + agentPhones: List, + subagentPhones: List, + principalInn: String, + principalPhones: List, + principalName: String ) = Assert.assertEquals( - AgentRequisites.createForPaymentSubagent(agentPhones, subagentPhones, principalInn, principalPhones, principalName), - AgentRequisites( - Agent(null, null, null, null, null, null, null, agentPhones, null), - Subagent(null, Subagent.Type.PAYMENT_SUBAGENT, null, null, null, null, null, subagentPhones, null), - Principal(null, null, null, principalName, principalInn, null, principalPhones, null), - null, - null - ) + AgentRequisites.createForPaymentSubagent(agentPhones, subagentPhones, principalInn, principalPhones, principalName), + AgentRequisites( + Agent(null, null, null, null, null, null, null, agentPhones, null), + Subagent(null, Subagent.Type.PAYMENT_SUBAGENT, null, null, null, null, null, subagentPhones, null), + Principal(null, null, null, principalName, principalInn, null, principalPhones, null), + null, + null + ) ) @Test fun createForBankPaymentAgent() = createForBankPaymentAgent(listOf("+70000000000"), "1234", listOf("89000000000", "89000000001"), "name", "Страховое агентство", "4321", listOf("89859998070"), "улица Пушкина, дом Калатушкина, офис 420", "Страхование на выгодных условиях") private fun createForBankPaymentAgent( - agentPhones: List, - principalInn: String, - principalPhones: List, - principalName: String, - transactionOperatorName: String, - transactionOperatorInn: String, - transactionOperatorPhones: List, - transactionOperatorAddress: String, - operationDescription: String + agentPhones: List, + principalInn: String, + principalPhones: List, + principalName: String, + transactionOperatorName: String, + transactionOperatorInn: String, + transactionOperatorPhones: List, + transactionOperatorAddress: String, + operationDescription: String ) = Assert.assertEquals( - AgentRequisites.createForBankPaymentAgent(agentPhones, principalInn, principalPhones, principalName, transactionOperatorName, transactionOperatorInn, transactionOperatorPhones, transactionOperatorAddress, operationDescription), - AgentRequisites( - Agent(null, Agent.Type.BANK_PAYMENT_AGENT, null, null, null, null, null, agentPhones, null), - null, - Principal(null, null, null, principalName, principalInn, null, principalPhones, null), - TransactionOperator(null, null, transactionOperatorName, null, transactionOperatorInn, null, transactionOperatorPhones, listOf(transactionOperatorAddress)), - operationDescription - ) + AgentRequisites.createForBankPaymentAgent(agentPhones, principalInn, principalPhones, principalName, transactionOperatorName, transactionOperatorInn, transactionOperatorPhones, transactionOperatorAddress, operationDescription), + AgentRequisites( + Agent(null, Agent.Type.BANK_PAYMENT_AGENT, null, null, null, null, null, agentPhones, null), + null, + Principal(null, null, null, principalName, principalInn, null, principalPhones, null), + TransactionOperator(null, null, transactionOperatorName, null, transactionOperatorInn, null, transactionOperatorPhones, listOf(transactionOperatorAddress)), + operationDescription + ) ) @Test fun createForBankPaymentSubagent() = createForBankPaymentSubagent(listOf("+77776668888"), "1234", listOf("89000000000", "89000000001"), "name", "Страховое агентство", "4321", listOf("89859998070"), "улица Пушкина, дом Калатушкина, офис 420", "Страхование на выгодных условиях") private fun createForBankPaymentSubagent( - subagentPhones: List, - principalInn: String, - principalPhones: List, - principalName: String, - transactionOperatorName: String, - transactionOperatorInn: String, - transactionOperatorPhones: List, - transactionOperatorAddress: String, - operationDescription: String + subagentPhones: List, + principalInn: String, + principalPhones: List, + principalName: String, + transactionOperatorName: String, + transactionOperatorInn: String, + transactionOperatorPhones: List, + transactionOperatorAddress: String, + operationDescription: String ) = Assert.assertEquals( - AgentRequisites.createForBankPaymentSubagent(subagentPhones, principalInn, principalPhones, principalName, transactionOperatorName, transactionOperatorInn, transactionOperatorPhones, transactionOperatorAddress, operationDescription), - AgentRequisites( - null, - Subagent(null, Subagent.Type.BANK_PAYMENT_SUBAGENT, null, null, null, null, null, subagentPhones, null), - Principal(null, null, null, principalName, principalInn, null, principalPhones, null), - TransactionOperator(null, null, transactionOperatorName, null, transactionOperatorInn, null, transactionOperatorPhones, listOf(transactionOperatorAddress)), - operationDescription - ) + AgentRequisites.createForBankPaymentSubagent(subagentPhones, principalInn, principalPhones, principalName, transactionOperatorName, transactionOperatorInn, transactionOperatorPhones, transactionOperatorAddress, operationDescription), + AgentRequisites( + null, + Subagent(null, Subagent.Type.BANK_PAYMENT_SUBAGENT, null, null, null, null, null, subagentPhones, null), + Principal(null, null, null, principalName, principalInn, null, principalPhones, null), + TransactionOperator(null, null, transactionOperatorName, null, transactionOperatorInn, null, transactionOperatorPhones, listOf(transactionOperatorAddress)), + operationDescription + ) ) - - } From adcc9476e49021b89a8a0cabb35cf6a56aeba51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Thu, 14 Aug 2025 21:32:52 +0700 Subject: [PATCH 19/56] STDEV-22627 --- build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 6 +++--- gradlew | 0 3 files changed, 5 insertions(+), 5 deletions(-) mode change 100755 => 100644 gradlew diff --git a/build.gradle b/build.gradle index fbd3e9617..d844dfcd1 100644 --- a/build.gradle +++ b/build.gradle @@ -65,7 +65,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:7.1.3' + classpath 'com.android.tools.build:gradle:8.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.6.21" } @@ -102,7 +102,7 @@ dokkaHtml.configure { } task sourceJar(type: Jar) { - classifier "sources" + archiveClassifier = "sources" from android.sourceSets.main.java.srcDirs } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6b4ba702a..cc6a43d1a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Sep 09 13:53:43 MSK 2022 +#Fri Jun 06 16:11:07 NOVT 2025 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100755 new mode 100644 From 277030ca8c3b90a9e969f0ed3323d53d9efa6113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Mon, 18 Aug 2025 18:51:29 +0700 Subject: [PATCH 20/56] STDEV-22627 --- build.gradle | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build.gradle b/build.gradle index d844dfcd1..3088d837f 100644 --- a/build.gradle +++ b/build.gradle @@ -112,6 +112,12 @@ task javadocJar(type: Jar, dependsOn: dokkaJavadoc) { from dokkaJavadoc.outputDirectory } +tasks.configureEach { + if (it.name.startsWith("publish")) { + dependsOn(tasks.named("bundleReleaseAar")) + } +} + publishing { publications { mavenKotlin(MavenPublication) { From 766aae1b8050249e1a246a3c7b0d36898202b4b9 Mon Sep 17 00:00:00 2001 From: Anna Balakireva Date: Wed, 20 Aug 2025 12:54:16 +0300 Subject: [PATCH 21/56] STDEV-22613 Add lm chz data for MarksCheckingInfo.kt --- build.gradle | 2 +- .../ru/evotor/framework/receipt/Position.java | 2 +- .../receipt/position/MarksCheckingInfo.kt | 23 +++++++++++++++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 16b8b1b91..4f00f8eeb 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ apply plugin: 'maven-publish' apply plugin: 'org.jetbrains.dokka' android { - def version = 36 + def version = 37 compileSdk 29 diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 8a97931a5..6574e8911 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -41,7 +41,7 @@ public class Position implements Parcelable { /** * Текущая версия объекта Position */ - private static final int VERSION = 15; + private static final int VERSION = 16; /** * Магическое число для идентификации использования версионирования объекта. */ diff --git a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt index 92e840c4b..37d3eeb3d 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt @@ -15,24 +15,43 @@ data class MarksCheckingInfo( /** * Время онлайн проверки */ - val checkTimestamp: Long + val checkTimestamp: Long, + /** + * Идентификатор экземпляра ЛМ ЧЗ + */ + val inst: String?, + /** + * Версия базы ЛМ ЧЗ, на которой осуществлялась проверка + */ + val lmChzDbVersion: String?, ) : IBundlable { override fun toBundle(): Bundle = Bundle().apply { putString(KEY_CHECK_ID, checkId) putLong(KEY_TIMESTAMP, checkTimestamp) + putString(KEY_LM_CHZ_ID, inst) + putString(KEY_LM_CHZ_DB_Version, lmChzDbVersion) } companion object { private const val KEY_CHECK_ID = "CheckId" private const val KEY_TIMESTAMP = "Timestamp" + private const val KEY_LM_CHZ_ID = "LmChzId" + private const val KEY_LM_CHZ_DB_Version = "LmChzDbVersion" @JvmStatic fun from(bundle: Bundle?): MarksCheckingInfo? = bundle?.let { val checkId = it.getString(KEY_CHECK_ID) ?: return null val checkTimestamp = it.optLong(KEY_TIMESTAMP) ?: return null + val inst = it.getString(KEY_LM_CHZ_ID) + val lmChzDbVersion = it.getString(KEY_LM_CHZ_DB_Version) - MarksCheckingInfo(checkId = checkId, checkTimestamp = checkTimestamp) + MarksCheckingInfo( + checkId = checkId, + checkTimestamp = checkTimestamp, + inst = inst, + lmChzDbVersion = lmChzDbVersion + ) } } } From 2d00d0b762315c9cc68b5d8dea0ca349ebdf63df Mon Sep 17 00:00:00 2001 From: Anna Balakireva Date: Wed, 20 Aug 2025 12:54:16 +0300 Subject: [PATCH 22/56] STDEV-22613 Add lm chz data for MarksCheckingInfo.kt --- build.gradle | 2 +- .../ru/evotor/framework/receipt/Position.java | 46 ++++++++++++------- .../evotor/framework/receipt/PositionTable.kt | 2 + .../receipt/position/MarksCheckingInfo.kt | 23 +++++++++- .../mapper/MarksCheckingInfoMapper.kt | 6 ++- 5 files changed, 58 insertions(+), 21 deletions(-) diff --git a/build.gradle b/build.gradle index 16b8b1b91..4f00f8eeb 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ apply plugin: 'maven-publish' apply plugin: 'org.jetbrains.dokka' android { - def version = 36 + def version = 37 compileSdk 29 diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 8a97931a5..371b63eeb 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -41,7 +41,7 @@ public class Position implements Parcelable { /** * Текущая версия объекта Position */ - private static final int VERSION = 15; + private static final int VERSION = 16; /** * Магическое число для идентификации использования версионирования объекта. */ @@ -1669,14 +1669,14 @@ public Builder toMedicalDevicesMarked( } public Builder toCaviarMarked( - @NonNull Mark mark + @NonNull Mark mark ) { position.productType = ProductType.CAVIAR_MARKED; setAlcoParams( - null, - null, - null, - null + null, + null, + null, + null ); setCaviarParams(mark); return this; @@ -1711,14 +1711,14 @@ public Builder toVegetableOilMarked( } public Builder toVeterinaryMarked( - @NonNull Mark mark + @NonNull Mark mark ) { position.productType = ProductType.VETERINARY_MARKED; setAlcoParams( - null, - null, - null, - null + null, + null, + null, + null ); setCaviarParams(mark); return this; @@ -1744,11 +1744,15 @@ public Builder toPartialRealization( public Builder toMarksCheckingInfo( @NonNull String checkId, - @NonNull Long timestamp + @NonNull Long timestamp, + String inst, + String lmChzDbVersion ) { position.marksCheckingInfo = new MarksCheckingInfo( checkId, - timestamp + timestamp, + inst, + lmChzDbVersion ); return this; } @@ -1855,13 +1859,21 @@ private void setMedicalDevicesParams(Mark mark) { position.mark = mark; } - public void setCaviarParams(Mark mark) { position.mark = mark; } + public void setCaviarParams(Mark mark) { + position.mark = mark; + } - public void setPetFoodParams(Mark mark) { position.mark = mark; } + public void setPetFoodParams(Mark mark) { + position.mark = mark; + } - public void setVegetableOilParams(Mark mark) { position.mark = mark; } + public void setVegetableOilParams(Mark mark) { + position.mark = mark; + } - public void setVeterinaryParams(Mark mark) { position.mark = mark; } + public void setVeterinaryParams(Mark mark) { + position.mark = mark; + } private void setBeerParams(Mark mark) { position.mark = mark; diff --git a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt index 056d664be..408505299 100644 --- a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt @@ -39,6 +39,8 @@ object PositionTable { const val COLUMN_IS_EXCISABLE = "IS_EXCISABLE" const val COLUMN_MARKS_CHECKING_INFO_CHECK_ID = "MARKS_CHECKING_INFO_CHECK_ID" const val COLUMN_MARKS_CHECKING_INFO_CHECK_TIMESTAMP = "MARKS_CHECKING_INFO_CHECK_TIMESTAMP" + const val COLUMN_MARKS_CHECKING_INFO_CHECK_INST = "MARKS_CHECKING_INFO_CHECK_INST" + const val COLUMN_MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION = "MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION" const val COLUMN_IS_MARK_SKIPPED = "IS_MARK_SKIPPED" const val COLUMN_IS_AGE_LIMITED: String = "IS_AGE_LIMITED" const val COLUMN_VETERINARY_DOCUMENT_NUMBER = "VETERINARY_DOCUMENT_NUMBER" diff --git a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt index 92e840c4b..85122f505 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt @@ -15,24 +15,43 @@ data class MarksCheckingInfo( /** * Время онлайн проверки */ - val checkTimestamp: Long + val checkTimestamp: Long, + /** + * Идентификатор экземпляра ЛМ ЧЗ + */ + val inst: String?, + /** + * Версия базы ЛМ ЧЗ, на которой осуществлялась проверка + */ + val lmChzDbVersion: String? ) : IBundlable { override fun toBundle(): Bundle = Bundle().apply { putString(KEY_CHECK_ID, checkId) putLong(KEY_TIMESTAMP, checkTimestamp) + putString(KEY_LM_CHZ_ID, inst) + putString(KEY_LM_CHZ_DB_Version, lmChzDbVersion) } companion object { private const val KEY_CHECK_ID = "CheckId" private const val KEY_TIMESTAMP = "Timestamp" + private const val KEY_LM_CHZ_ID = "LmChzId" + private const val KEY_LM_CHZ_DB_Version = "LmChzDbVersion" @JvmStatic fun from(bundle: Bundle?): MarksCheckingInfo? = bundle?.let { val checkId = it.getString(KEY_CHECK_ID) ?: return null val checkTimestamp = it.optLong(KEY_TIMESTAMP) ?: return null + val inst = it.getString(KEY_LM_CHZ_ID) + val lmChzDbVersion = it.getString(KEY_LM_CHZ_DB_Version) - MarksCheckingInfo(checkId = checkId, checkTimestamp = checkTimestamp) + MarksCheckingInfo( + checkId = checkId, + checkTimestamp = checkTimestamp, + inst = inst, + lmChzDbVersion = lmChzDbVersion + ) } } } diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt index 8275f91b6..f53150502 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt @@ -12,9 +12,13 @@ object MarksCheckingInfoMapper { ?: return null val checkTimestamp = cursor.optLong(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_TIMESTAMP) ?: return null + val inst = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_INST) + val lmChzDbVersion = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION) return MarksCheckingInfo( checkId = checkId, - checkTimestamp = checkTimestamp + checkTimestamp = checkTimestamp, + inst = inst, + lmChzDbVersion = lmChzDbVersion ) } } From 0e50dea85991fcf9d139de3db748d4bcc35b2770 Mon Sep 17 00:00:00 2001 From: Anna Balakireva Date: Thu, 21 Aug 2025 10:06:27 +0300 Subject: [PATCH 23/56] STDEV-22613 Create localModule object --- .../ru/evotor/framework/receipt/Position.java | 7 ++-- .../receipt/position/LocalModuleInfo.kt | 39 +++++++++++++++++++ .../receipt/position/MarksCheckingInfo.kt | 21 ++++------ .../mapper/MarksCheckingInfoMapper.kt | 12 +++++- 4 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 371b63eeb..bcf52173a 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -28,6 +28,7 @@ import ru.evotor.framework.receipt.attribute.VeterinaryAttribute; import ru.evotor.framework.receipt.position.AgentRequisites; import ru.evotor.framework.receipt.position.ImportationData; +import ru.evotor.framework.receipt.position.LocalModuleInfo; import ru.evotor.framework.receipt.position.Mark; import ru.evotor.framework.receipt.position.MarksCheckingInfo; import ru.evotor.framework.receipt.position.PartialRealization; @@ -1745,14 +1746,12 @@ public Builder toPartialRealization( public Builder toMarksCheckingInfo( @NonNull String checkId, @NonNull Long timestamp, - String inst, - String lmChzDbVersion + LocalModuleInfo localModuleInfo ) { position.marksCheckingInfo = new MarksCheckingInfo( checkId, timestamp, - inst, - lmChzDbVersion + localModuleInfo ); return this; } diff --git a/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt new file mode 100644 index 000000000..0a3aef194 --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt @@ -0,0 +1,39 @@ +package ru.evotor.framework.receipt.position + +import android.os.Bundle +import ru.evotor.IBundlable + +/** + * Данные о локальном модуле ЧЗ + */ +data class LocalModuleInfo( + /** + * Идентификатор экземпляра ЛМ ЧЗ + */ + val inst: String, + /** + * Версия базы ЛМ ЧЗ, на которой осуществлялась проверка + */ + val lmChzDbVersion: String +) : IBundlable { + override fun toBundle(): Bundle = Bundle().apply { + putString(KEY_LM_CHZ_ID, inst) + putString(KEY_LM_CHZ_DB_Version, lmChzDbVersion) + } + + companion object { + private const val KEY_LM_CHZ_ID = "LmChzId" + private const val KEY_LM_CHZ_DB_Version = "LmChzDbVersion" + + @JvmStatic + fun from(bundle: Bundle?): LocalModuleInfo? = bundle?.let { + val inst = it.getString(KEY_LM_CHZ_ID) ?: return null + val lmChzDbVersion = it.getString(KEY_LM_CHZ_DB_Version) ?: return null + + LocalModuleInfo( + inst = inst, + lmChzDbVersion = lmChzDbVersion + ) + } + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt index 85122f505..fcfd349ae 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt @@ -17,40 +17,33 @@ data class MarksCheckingInfo( */ val checkTimestamp: Long, /** - * Идентификатор экземпляра ЛМ ЧЗ + * Информация о локальном модуле */ - val inst: String?, - /** - * Версия базы ЛМ ЧЗ, на которой осуществлялась проверка - */ - val lmChzDbVersion: String? + val localModuleInfo: LocalModuleInfo? ) : IBundlable { override fun toBundle(): Bundle = Bundle().apply { putString(KEY_CHECK_ID, checkId) putLong(KEY_TIMESTAMP, checkTimestamp) - putString(KEY_LM_CHZ_ID, inst) - putString(KEY_LM_CHZ_DB_Version, lmChzDbVersion) + putBundle(KEY_LOCAL_MODULE, localModuleInfo?.toBundle()) } companion object { private const val KEY_CHECK_ID = "CheckId" private const val KEY_TIMESTAMP = "Timestamp" - private const val KEY_LM_CHZ_ID = "LmChzId" - private const val KEY_LM_CHZ_DB_Version = "LmChzDbVersion" + private const val KEY_LOCAL_MODULE = "LocalModule" @JvmStatic fun from(bundle: Bundle?): MarksCheckingInfo? = bundle?.let { val checkId = it.getString(KEY_CHECK_ID) ?: return null val checkTimestamp = it.optLong(KEY_TIMESTAMP) ?: return null - val inst = it.getString(KEY_LM_CHZ_ID) - val lmChzDbVersion = it.getString(KEY_LM_CHZ_DB_Version) + val localModuleInfoBundle = it.getBundle(KEY_LOCAL_MODULE) + val localModuleInfo = LocalModuleInfo.from(localModuleInfoBundle) MarksCheckingInfo( checkId = checkId, checkTimestamp = checkTimestamp, - inst = inst, - lmChzDbVersion = lmChzDbVersion + localModuleInfo = localModuleInfo ) } } diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt index f53150502..794f0d70d 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt @@ -4,6 +4,7 @@ import android.database.Cursor import ru.evotor.framework.optLong import ru.evotor.framework.optString import ru.evotor.framework.receipt.PositionTable +import ru.evotor.framework.receipt.position.LocalModuleInfo import ru.evotor.framework.receipt.position.MarksCheckingInfo object MarksCheckingInfoMapper { @@ -14,11 +15,18 @@ object MarksCheckingInfoMapper { ?: return null val inst = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_INST) val lmChzDbVersion = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION) + val localModuleInfo = if (inst != null && lmChzDbVersion != null) { + LocalModuleInfo( + inst, + lmChzDbVersion + ) + } else { + null + } return MarksCheckingInfo( checkId = checkId, checkTimestamp = checkTimestamp, - inst = inst, - lmChzDbVersion = lmChzDbVersion + localModuleInfo = localModuleInfo ) } } From e3381376e7987d2a724809a23103bbb4698675fa Mon Sep 17 00:00:00 2001 From: Anna Balakireva Date: Thu, 21 Aug 2025 10:06:27 +0300 Subject: [PATCH 24/56] STDEV-22613 Create localModule object --- .../ru/evotor/framework/receipt/Position.java | 9 ++--- .../receipt/position/LocalModuleInfo.kt | 39 +++++++++++++++++++ .../receipt/position/MarksCheckingInfo.kt | 21 ++++------ .../mapper/MarksCheckingInfoMapper.kt | 12 +++++- 4 files changed, 60 insertions(+), 21 deletions(-) create mode 100644 src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 371b63eeb..607b0a55d 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -28,6 +28,7 @@ import ru.evotor.framework.receipt.attribute.VeterinaryAttribute; import ru.evotor.framework.receipt.position.AgentRequisites; import ru.evotor.framework.receipt.position.ImportationData; +import ru.evotor.framework.receipt.position.LocalModuleInfo; import ru.evotor.framework.receipt.position.Mark; import ru.evotor.framework.receipt.position.MarksCheckingInfo; import ru.evotor.framework.receipt.position.PartialRealization; @@ -41,7 +42,7 @@ public class Position implements Parcelable { /** * Текущая версия объекта Position */ - private static final int VERSION = 16; + private static final int VERSION = 15; /** * Магическое число для идентификации использования версионирования объекта. */ @@ -1745,14 +1746,12 @@ public Builder toPartialRealization( public Builder toMarksCheckingInfo( @NonNull String checkId, @NonNull Long timestamp, - String inst, - String lmChzDbVersion + LocalModuleInfo localModuleInfo ) { position.marksCheckingInfo = new MarksCheckingInfo( checkId, timestamp, - inst, - lmChzDbVersion + localModuleInfo ); return this; } diff --git a/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt new file mode 100644 index 000000000..0a3aef194 --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt @@ -0,0 +1,39 @@ +package ru.evotor.framework.receipt.position + +import android.os.Bundle +import ru.evotor.IBundlable + +/** + * Данные о локальном модуле ЧЗ + */ +data class LocalModuleInfo( + /** + * Идентификатор экземпляра ЛМ ЧЗ + */ + val inst: String, + /** + * Версия базы ЛМ ЧЗ, на которой осуществлялась проверка + */ + val lmChzDbVersion: String +) : IBundlable { + override fun toBundle(): Bundle = Bundle().apply { + putString(KEY_LM_CHZ_ID, inst) + putString(KEY_LM_CHZ_DB_Version, lmChzDbVersion) + } + + companion object { + private const val KEY_LM_CHZ_ID = "LmChzId" + private const val KEY_LM_CHZ_DB_Version = "LmChzDbVersion" + + @JvmStatic + fun from(bundle: Bundle?): LocalModuleInfo? = bundle?.let { + val inst = it.getString(KEY_LM_CHZ_ID) ?: return null + val lmChzDbVersion = it.getString(KEY_LM_CHZ_DB_Version) ?: return null + + LocalModuleInfo( + inst = inst, + lmChzDbVersion = lmChzDbVersion + ) + } + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt index 85122f505..fcfd349ae 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt @@ -17,40 +17,33 @@ data class MarksCheckingInfo( */ val checkTimestamp: Long, /** - * Идентификатор экземпляра ЛМ ЧЗ + * Информация о локальном модуле */ - val inst: String?, - /** - * Версия базы ЛМ ЧЗ, на которой осуществлялась проверка - */ - val lmChzDbVersion: String? + val localModuleInfo: LocalModuleInfo? ) : IBundlable { override fun toBundle(): Bundle = Bundle().apply { putString(KEY_CHECK_ID, checkId) putLong(KEY_TIMESTAMP, checkTimestamp) - putString(KEY_LM_CHZ_ID, inst) - putString(KEY_LM_CHZ_DB_Version, lmChzDbVersion) + putBundle(KEY_LOCAL_MODULE, localModuleInfo?.toBundle()) } companion object { private const val KEY_CHECK_ID = "CheckId" private const val KEY_TIMESTAMP = "Timestamp" - private const val KEY_LM_CHZ_ID = "LmChzId" - private const val KEY_LM_CHZ_DB_Version = "LmChzDbVersion" + private const val KEY_LOCAL_MODULE = "LocalModule" @JvmStatic fun from(bundle: Bundle?): MarksCheckingInfo? = bundle?.let { val checkId = it.getString(KEY_CHECK_ID) ?: return null val checkTimestamp = it.optLong(KEY_TIMESTAMP) ?: return null - val inst = it.getString(KEY_LM_CHZ_ID) - val lmChzDbVersion = it.getString(KEY_LM_CHZ_DB_Version) + val localModuleInfoBundle = it.getBundle(KEY_LOCAL_MODULE) + val localModuleInfo = LocalModuleInfo.from(localModuleInfoBundle) MarksCheckingInfo( checkId = checkId, checkTimestamp = checkTimestamp, - inst = inst, - lmChzDbVersion = lmChzDbVersion + localModuleInfo = localModuleInfo ) } } diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt index f53150502..794f0d70d 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt @@ -4,6 +4,7 @@ import android.database.Cursor import ru.evotor.framework.optLong import ru.evotor.framework.optString import ru.evotor.framework.receipt.PositionTable +import ru.evotor.framework.receipt.position.LocalModuleInfo import ru.evotor.framework.receipt.position.MarksCheckingInfo object MarksCheckingInfoMapper { @@ -14,11 +15,18 @@ object MarksCheckingInfoMapper { ?: return null val inst = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_INST) val lmChzDbVersion = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION) + val localModuleInfo = if (inst != null && lmChzDbVersion != null) { + LocalModuleInfo( + inst, + lmChzDbVersion + ) + } else { + null + } return MarksCheckingInfo( checkId = checkId, checkTimestamp = checkTimestamp, - inst = inst, - lmChzDbVersion = lmChzDbVersion + localModuleInfo = localModuleInfo ) } } From eef8bdb25c2e3c6761cd055742baebd210af4b42 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Wed, 27 Aug 2025 16:41:42 +0500 Subject: [PATCH 25/56] STDEV-22761 --- src/main/java/ru/evotor/framework/receipt/Position.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 8a97931a5..8fce040ee 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -197,6 +197,7 @@ public class Position implements Parcelable { * - лекарства {@link ProductType#MEDICINE_MARKED} * - духи {@link ProductType#PERFUME_MARKED} * - альтернативный табак {@link ProductType#TOBACCO_PRODUCTS_MARKED} + * - ветеринарные препараты {@link ProductType#VETERINARY_MARKED} *

* Также см. {@link #quantity} */ @@ -1730,6 +1731,7 @@ public Builder toVeterinaryMarked( * лекарства {@link ProductType#MEDICINE_MARKED} * духи {@link ProductType#PERFUME_MARKED} * альтернативный табак {@link ProductType#TOBACCO_PRODUCTS_MARKED} + * ветеринарные препараты {@link ProductType#VETERINARY_MARKED} * * @param quantityInPackage количество товара в упаковке всего */ @@ -1973,6 +1975,7 @@ public Builder setClassificationCode(@Nullable String classificationCode) { * лекарства {@link ProductType#MEDICINE_MARKED} * духи {@link ProductType#PERFUME_MARKED} * альтернативный табак {@link ProductType#TOBACCO_PRODUCTS_MARKED} + * ветеринарные препараты {@link ProductType#VETERINARY_MARKED} * * @param partialRealization частичная реализация */ From cf684ec084c3a450b09cad4bfac0666f0d234da4 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 9 Oct 2025 14:10:52 +0500 Subject: [PATCH 26/56] STDEV-23251 --- .../result/PaymentDelegatorEventResult.kt | 3 +- .../PaymentDelegatorForwardedEventResult.kt | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt index 15f00816d..db9ba6fc9 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorEventResult.kt @@ -18,7 +18,7 @@ abstract class PaymentDelegatorEventResult( } public enum class ResultType { - UNKNOWN, SELECTED, CANCEL, CANCEL_ALL + UNKNOWN, SELECTED, CANCEL, CANCEL_ALL, FORWARDED } companion object { @@ -34,6 +34,7 @@ abstract class PaymentDelegatorEventResult( ResultType.SELECTED -> PaymentDelegatorSelectedEventResult.create(bundle) ResultType.CANCEL -> PaymentDelegatorCanceledEventResult.create(bundle) ResultType.CANCEL_ALL -> PaymentDelegatorCanceledAllEventResult.create(bundle) + ResultType.FORWARDED -> PaymentDelegatorForwardedEventResult.create(bundle) else -> null } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt new file mode 100644 index 000000000..15d7bb0a4 --- /dev/null +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt @@ -0,0 +1,38 @@ +package ru.evotor.framework.core.action.event.receipt.payment.combined.result + +import android.os.Bundle +import ru.evotor.framework.component.PaymentDelegator +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra +import ru.evotor.framework.core.action.datamapper.PaymentDelegatorMapper + +class PaymentDelegatorForwardedEventResult( + val paymentDelegator: PaymentDelegator, + extra: SetExtra? +) : PaymentDelegatorEventResult(ResultType.FORWARDED, extra) { + override fun toBundle(): Bundle { + val result = super.toBundle() + result.putBundle(KEY_PAYMENT_DELEGATOR, PaymentDelegatorMapper.toBundle(paymentDelegator)) + return result + } + + companion object { + private const val KEY_PAYMENT_DELEGATOR = "paymentDelegator" + + fun create(bundle: Bundle?): PaymentDelegatorForwardedEventResult? { + if (bundle == null) { + return null + } + val delegatorBundle = bundle.getBundle(KEY_PAYMENT_DELEGATOR) + val paymentDelegator = PaymentDelegator.from(delegatorBundle) + if (paymentDelegator != null) { + return PaymentDelegatorForwardedEventResult( + paymentDelegator, + SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)) + ) + } + return null + } + } +} + + From 711d37d17f681c6e0a489bdadf3e22ca6faf1d67 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Mon, 13 Oct 2025 15:14:41 +0500 Subject: [PATCH 27/56] STDEV-23251 --- .../combined/result/PaymentDelegatorForwardedEventResult.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt index 15d7bb0a4..4462f7d25 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt @@ -22,8 +22,8 @@ class PaymentDelegatorForwardedEventResult( if (bundle == null) { return null } - val delegatorBundle = bundle.getBundle(KEY_PAYMENT_DELEGATOR) - val paymentDelegator = PaymentDelegator.from(delegatorBundle) + val paymentDelegator = bundle.getBundle(KEY_PAYMENT_DELEGATOR) + ?.let { PaymentDelegator.from(it) } if (paymentDelegator != null) { return PaymentDelegatorForwardedEventResult( paymentDelegator, From 96dd3923ce03a8f1dcd5fd9aef60e0c3043cacaa Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Mon, 6 Oct 2025 13:12:06 +0500 Subject: [PATCH 28/56] STDEV-23301 --- .../PrintBuyReceiptCommand.kt | 17 +++-- .../PrintBuybackReceiptCommand.kt | 17 +++-- .../PrintPaybackReceiptCommand.kt | 17 +++-- .../PrintReceiptCommand.kt | 9 ++- .../PrintSellReceiptCommand.kt | 16 +++-- .../action/datamapper/PrintReceiptMapper.java | 8 ++- .../InternetRequisitesRequiredEvent.kt | 69 +++++++++++++++++++ ...nternetRequisitesRequiredEventProcessor.kt | 28 ++++++++ .../InternetRequisitesRequiredEventResult.kt | 43 ++++++++++++ .../evotor/framework/receipt/PrintGroup.java | 2 + .../ru/evotor/framework/receipt/Receipt.kt | 6 +- .../ru/evotor/framework/receipt/ReceiptApi.kt | 20 +++--- .../CorrectionIncomeIntegrationService.kt | 10 ++- ...orrectionReturnIncomeIntegrationService.kt | 10 ++- .../service/PaybackIntegrationService.kt | 10 ++- .../PaybackWithSellIntegrationService.kt | 10 ++- .../handler/service/SellIntegrationService.kt | 8 +++ 17 files changed, 264 insertions(+), 36 deletions(-) create mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt create mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt create mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt index afc7e9e41..fd91214bd 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt @@ -21,6 +21,7 @@ import java.util.* * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintBuyReceiptCommand( printReceipts: List, @@ -30,7 +31,8 @@ class PrintBuyReceiptCommand( receiptDiscount: BigDecimal?, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null + userUuid: String? = null, + receiptFromInternet: Boolean? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -39,7 +41,8 @@ class PrintBuyReceiptCommand( receiptDiscount = receiptDiscount, paymentAddress = paymentAddress, paymentPlace = paymentPlace, - userUuid = userUuid + userUuid = userUuid, + receiptFromInternet = receiptFromInternet ) { /** @@ -57,7 +60,9 @@ class PrintBuyReceiptCommand( clientEmail: String?, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null) : this( + userUuid: String? = null, + receiptFromInternet: Boolean? = null + ) : this( ArrayList().apply { add(Receipt.PrintReceipt( PrintGroup( @@ -75,7 +80,8 @@ class PrintBuyReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf() + hashMapOf(), + receiptFromInternet ?: false )) }, null, @@ -107,7 +113,8 @@ class PrintBuyReceiptCommand( receiptDiscount = getReceiptDiscount(bundle), paymentAddress = getPaymentAddress(bundle), paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + userUuid = getUserUuid(bundle), + receiptFromInternet = getReceiptFromInternet(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt index 7fecfde4f..6cc14254e 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt @@ -21,6 +21,7 @@ import java.util.* * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintBuybackReceiptCommand( printReceipts: List, @@ -30,7 +31,8 @@ class PrintBuybackReceiptCommand( receiptDiscount: BigDecimal?, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null + userUuid: String? = null, + receiptFromInternet: Boolean? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -39,7 +41,8 @@ class PrintBuybackReceiptCommand( receiptDiscount = receiptDiscount, paymentAddress = paymentAddress, paymentPlace = paymentPlace, - userUuid = userUuid + userUuid = userUuid, + receiptFromInternet = receiptFromInternet ) { /** @@ -57,7 +60,9 @@ class PrintBuybackReceiptCommand( clientEmail: String?, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null) : this( + userUuid: String? = null, + receiptFromInternet: Boolean? = null + ) : this( ArrayList().apply { add(Receipt.PrintReceipt( PrintGroup( @@ -75,7 +80,8 @@ class PrintBuybackReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf() + hashMapOf(), + receiptFromInternet ?: false )) }, null, @@ -107,7 +113,8 @@ class PrintBuybackReceiptCommand( receiptDiscount = getReceiptDiscount(bundle), paymentAddress = getPaymentAddress(bundle), paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + userUuid = getUserUuid(bundle), + receiptFromInternet = getReceiptFromInternet(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt index 0865e15cc..db41863c0 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt @@ -22,6 +22,7 @@ import java.util.* * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintPaybackReceiptCommand( printReceipts: List, @@ -32,7 +33,8 @@ class PrintPaybackReceiptCommand( val sellReceiptUuid: String? = null, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null + userUuid: String? = null, + receiptFromInternet: Boolean? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -41,7 +43,8 @@ class PrintPaybackReceiptCommand( receiptDiscount = receiptDiscount, paymentAddress = paymentAddress, paymentPlace = paymentPlace, - userUuid = userUuid + userUuid = userUuid, + receiptFromInternet = receiptFromInternet ) { /** @@ -61,7 +64,9 @@ class PrintPaybackReceiptCommand( sellReceiptUuid: String? = null, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null) : this( + userUuid: String? = null, + receiptFromInternet: Boolean? = null + ) : this( ArrayList().apply { add(Receipt.PrintReceipt( PrintGroup( @@ -79,7 +84,8 @@ class PrintPaybackReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf() + hashMapOf(), + receiptFromInternet ?: false )) }, null, @@ -119,7 +125,8 @@ class PrintPaybackReceiptCommand( sellReceiptUuid = bundle.getString(KEY_SELL_RECEIPT_UUID), paymentAddress = getPaymentAddress(bundle), paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + userUuid = getUserUuid(bundle), + receiptFromInternet = getReceiptFromInternet(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt index 6511757d3..8fea70b6c 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt @@ -37,7 +37,8 @@ abstract class PrintReceiptCommand( val receiptDiscount: BigDecimal?, val paymentAddress: String?, val paymentPlace: String?, - val userUuid: String? + val userUuid: String?, + val receiptFromInternet: Boolean? ) : IBundlable { internal fun process(context: Context, callback: IntegrationManagerCallback, action: String) { @@ -66,6 +67,7 @@ abstract class PrintReceiptCommand( bundle.putString(KEY_PAYMENT_ADDRESS, paymentAddress) bundle.putString(KEY_PAYMENT_PLACE, paymentPlace) bundle.putString(KEY_USER_UUID, userUuid) + bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet ?: false) return bundle } @@ -86,6 +88,7 @@ abstract class PrintReceiptCommand( private const val KEY_PAYMENT_ADDRESS = "paymentAddress" private const val KEY_PAYMENT_PLACE = "paymentPlace" private const val KEY_USER_UUID = "userUuid" + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" internal fun getPrintReceipts(bundle: Bundle): List { return bundle.getParcelableArrayList(KEY_PRINT_RECEIPTS) @@ -121,6 +124,10 @@ abstract class PrintReceiptCommand( return bundle.getString(KEY_USER_UUID, null) } + internal fun getReceiptFromInternet(bundle: Bundle): Boolean { + return bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false) + } + internal fun calculateChanges(sum: BigDecimal, payments: List): Map { var remaining = MoneyCalculator.subtract(payments.sumByBigDecimal { it.value }, sum) val result = HashMap() diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt index eae796374..34d801d3f 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt @@ -22,6 +22,7 @@ import java.util.* * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintSellReceiptCommand( printReceipts: List, @@ -31,7 +32,8 @@ class PrintSellReceiptCommand( receiptDiscount: BigDecimal?, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null + userUuid: String? = null, + receiptFromInternet: Boolean? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -40,7 +42,8 @@ class PrintSellReceiptCommand( receiptDiscount = receiptDiscount, paymentAddress = paymentAddress, paymentPlace = paymentPlace, - userUuid = userUuid + userUuid = userUuid, + receiptFromInternet = receiptFromInternet ) { /** @@ -58,7 +61,8 @@ class PrintSellReceiptCommand( clientEmail: String?, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null + userUuid: String? = null, + receiptFromInternet: Boolean? = null ) : this( ArrayList().apply { add(Receipt.PrintReceipt( @@ -77,7 +81,8 @@ class PrintSellReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf() + hashMapOf(), + receiptFromInternet ?: false )) }, null, @@ -109,7 +114,8 @@ class PrintSellReceiptCommand( receiptDiscount = getReceiptDiscount(bundle), paymentAddress = getPaymentAddress(bundle), paymentPlace = getPaymentPlace(bundle), - userUuid = getUserUuid(bundle) + userUuid = getUserUuid(bundle), + receiptFromInternet = getReceiptFromInternet(bundle) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java index 470e2a906..e38fc00c2 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java @@ -27,6 +27,7 @@ public final class PrintReceiptMapper { private static final String KEY_CHANGES = "changes"; private static final String KEY_SINGLE_CHANGE = "change"; private static final String KEY_SINGLE_CHANGE_VALUE = "changeValue"; + private static final String KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet"; @Nullable public static Receipt.PrintReceipt from(@Nullable Bundle bundle) { @@ -67,12 +68,15 @@ public static Receipt.PrintReceipt from(@Nullable Bundle bundle) { changes.put(change, BundleUtils.getMoney(completeChangeBundle, KEY_SINGLE_CHANGE_VALUE)); } + boolean receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false); + return new Receipt.PrintReceipt( printGroup, positions, payments, changes, - new HashMap() + new HashMap(), + receiptFromInternet ); } @@ -111,6 +115,8 @@ public static Bundle toBundle(@Nullable Receipt.PrintReceipt printReceipt) { } bundle.putParcelableArrayList(KEY_CHANGES, changes); + bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, printReceipt.getReceiptFromInternet()); + return bundle; } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt new file mode 100644 index 000000000..8802d774c --- /dev/null +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt @@ -0,0 +1,69 @@ +package ru.evotor.framework.core.action.event.receipt.internet + +import android.os.Bundle +import ru.evotor.IBundlable +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData + +/** + * Событие передачи реквизитов в случае интернет-расчёта. + * + * Происходит перед сразу после оплат. + * + * @param receiptUuid uuid чека + * @param receiptFromInternet признак расчета в сети «Интернет» + * @param paymentPlace текущее место расчетов в чеке + * @param purchaserContactData текущие контакты покупателя в чеке + */ +class InternetRequisitesRequiredEvent( + val receiptUuid: String, + val receiptFromInternet: Boolean, + val paymentPlace: String? = null, + val purchaserContactData: SetPurchaserContactData? = null +) : IBundlable { + + override fun toBundle(): Bundle { + val result = Bundle() + result.putString(KEY_RECEIPT_UUID, receiptUuid) + result.putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet) + result.putString(KEY_PAYMENT_PLACE, paymentPlace) + result.putBundle(KEY_PURCHASER_CONTACT_DATA, purchaserContactData?.toBundle()) + return result + } + + companion object { + + /** + * Передача реквизитов в случае интернет-расчёта. + * + * Значение константы: evo.v2.receipt.internetRequisites. + */ + const val NAME_ACTION = "evo.v2.receipt.internetRequisites" + + private const val KEY_RECEIPT_UUID = "receiptUuid" + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" + private const val KEY_PAYMENT_PLACE = "paymentPlace" + private const val KEY_PURCHASER_CONTACT_DATA = "purchaserContactData" + + fun from(bundle: Bundle?): InternetRequisitesRequiredEvent? = bundle?.let { + InternetRequisitesRequiredEvent( + getReceiptUuid(it) ?: return null, + getReceiptFromInternet(it) ?: return null, + getPaymentPlace(it), + getPurchaserContactData(it) + ) + } + + private fun getReceiptUuid(bundle: Bundle): String? = + bundle.getString(KEY_RECEIPT_UUID, null) + + private fun getReceiptFromInternet(bundle: Bundle): Boolean? = + bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false) + + private fun getPaymentPlace(bundle: Bundle): String? = + bundle.getString(KEY_PAYMENT_PLACE, null) + + private fun getPurchaserContactData(bundle: Bundle): SetPurchaserContactData? = + SetPurchaserContactData.from(bundle.getBundle(KEY_PURCHASER_CONTACT_DATA)) + } + +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt new file mode 100644 index 000000000..b11f028cd --- /dev/null +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt @@ -0,0 +1,28 @@ +package ru.evotor.framework.core.action.event.receipt.internet + +import android.os.Bundle +import ru.evotor.framework.core.action.processor.ActionProcessor + +/** + * Обработчик события [InternetRequisitesRequiredEvent]. + */ +abstract class InternetRequisitesRequiredEventProcessor : ActionProcessor() { + + override fun process(action: String, bundle: Bundle?, callback: Callback) { + val event = InternetRequisitesRequiredEvent.Companion.from(bundle) ?: run { + callback.skip() + return + } + call(action, event, callback) + } + + /** + * Используйте метод, чтобы обработать событие [InternetRequisitesRequiredEvent] и сохранить результат [InternetRequisitesRequiredEventResult]. + * @param action + * @param event экземпляр события передачи реквизитов в случае интернет-расчёта. + * @param callback функция обратного вызова. Методы функции позволяют пропускать обработку события, возвращать результат, + * запускать операции и обрабатывать ошибки. + */ + abstract fun call(action: String, event: InternetRequisitesRequiredEvent, callback: Callback) + +} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt new file mode 100644 index 000000000..5e2aa46d0 --- /dev/null +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt @@ -0,0 +1,43 @@ +package ru.evotor.framework.core.action.event.receipt.internet + +import android.os.Bundle +import ru.evotor.IBundlable +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData + +/** + * Результат обработки события [InternetRequisitesRequiredEvent]. + */ +class InternetRequisitesRequiredEventResult( + val receiptFromInternet: Boolean, + val paymentPlace: String, + val purchaserContactData: SetPurchaserContactData +) : IBundlable { + + override fun toBundle(): Bundle { + if (purchaserContactData.email.isNullOrEmpty() xor purchaserContactData.phone.isNullOrEmpty()) { + throw IllegalArgumentException("email or phone should be not null or empty") // TODO + } + val bundle = Bundle() + bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet) + bundle.putString(KEY_PAYMENT_PLACE, paymentPlace) + bundle.putBundle(KEY_PURCHASER_CONTACT_DATA, purchaserContactData.toBundle()) + return bundle + } + + companion object { + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" + private const val KEY_PAYMENT_PLACE = "paymentPlace" + private const val KEY_PURCHASER_CONTACT_DATA = "purchaserContactData" + + fun create(bundle: Bundle?): InternetRequisitesRequiredEventResult? = bundle?.let { + val receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false) + val paymentPlace = bundle.getString(KEY_PAYMENT_PLACE) ?: return null + val purchaserContactData = SetPurchaserContactData.from(bundle.getBundle(KEY_PURCHASER_CONTACT_DATA)) ?: return null + return InternetRequisitesRequiredEventResult( + receiptFromInternet, + paymentPlace, + purchaserContactData + ) + } + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java index 5a6d6f8f7..ac06c18c5 100644 --- a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java +++ b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java @@ -70,7 +70,9 @@ public class PrintGroup implements Parcelable { /** * Признак расчета в «Интернет». + * @deprecated Используйте {@link ru.evotor.framework.receipt.Receipt.PrintReceipt#receiptFromInternet} */ + @Deprecated private boolean receiptFromInternet; @Deprecated diff --git a/src/main/java/ru/evotor/framework/receipt/Receipt.kt b/src/main/java/ru/evotor/framework/receipt/Receipt.kt index e2757afcd..8fb4f0841 100644 --- a/src/main/java/ru/evotor/framework/receipt/Receipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/Receipt.kt @@ -158,7 +158,11 @@ data class Receipt * * Added on 13.02.2018 */ - val discounts: Map? + val discounts: Map?, + /** + * Признак расчета в сети «Интернет» + */ + val receiptFromInternet: Boolean ) { /** diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index da80cc565..5518b11c0 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -219,15 +219,17 @@ object ReceiptApi { for (printGroup in printGroups) { val payments = groupByPrintGroupPaymentResults[printGroup]?.associateBy { it.payment } ?: HashMap() - printDocuments.add(Receipt.PrintReceipt( - printGroup, - getPositionResults - .filter { it.printGroup == printGroup } - .map { it.position }, - payments.mapValues { it.value.value }, - payments.mapValues { it.value.change }, - receiptDiscount - ) + printDocuments.add( + Receipt.PrintReceipt( + printGroup = printGroup, + positions = getPositionResults + .filter { it.printGroup == printGroup } + .map { it.position }, + payments = payments.mapValues { it.value.value }, + changes = payments.mapValues { it.value.change }, + discounts = receiptDiscount, + receiptFromInternet = false // TODO + ) ) } diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt index 37b6ddfa1..3af12b710 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt @@ -3,6 +3,8 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForPrintGroupRequestedEvent @@ -16,6 +18,7 @@ abstract class CorrectionIncomeIntegrationService : IntegrationServiceV2() { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } + ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -43,9 +46,12 @@ abstract class CorrectionIncomeIntegrationService : IntegrationServiceV2() { * * @see "Добавление в чек адреса и места расчёта" */ - @RequiresIntentAction(BuyIntegrationService.ACTION_DELIVERY_REQUISITES) + @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null + @RequiresIntentAction(ACTION_INTERNET_REQUISITES) + open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null + companion object { /** * Запрос [реквизитов покупателя][ru.evotor.framework.receipt.Purchaser] для добавления в чек коррекции. @@ -62,6 +68,8 @@ abstract class CorrectionIncomeIntegrationService : IntegrationServiceV2() { */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.correction_income.DELIVERY_REQUISITES" + const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.correction_income.INTERNET_REQUISITES" + /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.CorrectionIncomeIntegrationService]. * diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt index 4eb86c4b6..c08cd82b4 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt @@ -3,6 +3,8 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForPrintGroupRequestedEvent @@ -16,6 +18,7 @@ abstract class CorrectionReturnIncomeIntegrationService : IntegrationServiceV2() ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } + ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -43,9 +46,12 @@ abstract class CorrectionReturnIncomeIntegrationService : IntegrationServiceV2() * * @see "Добавление в чек адреса и места расчёта" */ - @RequiresIntentAction(BuyIntegrationService.ACTION_DELIVERY_REQUISITES) + @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null + @RequiresIntentAction(ACTION_INTERNET_REQUISITES) + open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null + companion object { /** * Запрос [реквизитов покупателя][ru.evotor.framework.receipt.Purchaser] для добавления в чек коррекции. @@ -62,6 +68,8 @@ abstract class CorrectionReturnIncomeIntegrationService : IntegrationServiceV2() */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.correction_return_income.DELIVERY_REQUISITES" + const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.correction_return_income.INTERNET_REQUISITES" + /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.CorrectionReturnIncomeIntegrationService]. * diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt index 11af95cd5..fa7b10285 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt @@ -4,6 +4,8 @@ import android.os.Bundle import ru.evotor.IBundlable import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.* /** @@ -17,6 +19,7 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_MEDICINE_ATTRIBUTES -> ReturnMedicineAttributeEvent.from(bundle)?.let { handleEvent(it) } ACTION_BARCODE_RECEIVED -> ReturnPositionsForBarcodeRequestedEvent.from(bundle)?.let { handleEvent(it) } + ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -66,6 +69,9 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { @RequiresIntentAction(ACTION_MEDICINE_ATTRIBUTES) open fun handleEvent(event: ReturnMedicineAttributeEvent): ReturnMedicineAttributeEvent.Result? = null + @RequiresIntentAction(ACTION_INTERNET_REQUISITES) + open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null + companion object { /** @@ -97,6 +103,8 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { */ const val ACTION_BARCODE_RECEIVED = "ru.evotor.event.payback.BARCODE_RECEIVED" + const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.payback.INTERNET_REQUISITES" + /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.PaybackIntegrationService]. * @@ -104,4 +112,4 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { */ const val PERMISSION = "ru.evotor.permission.PAYBACK_INTEGRATION_SERVICE" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt index 1e77c2a5b..15b2fcde7 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt @@ -3,6 +3,8 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForPrintGroupRequestedEvent @@ -16,6 +18,7 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } + ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } /** @@ -45,6 +48,9 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null + @RequiresIntentAction(ACTION_INTERNET_REQUISITES) + open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null + companion object { const val ACTION_PURCHASER_REQUISITES = "ru.evotor.event.paybackWithSell.PURCHASER_REQUISITES" const val ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS = "ru.evotor.event.paybackWithSell.DISCOUNT_SCREEN_ADDITIONAL_ITEMS" @@ -56,6 +62,8 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.paybackWithSell.DELIVERY_REQUISITES" + const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.paybackWithSell.INTERNET_REQUISITES" + /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.PaybackIntegrationService]. * @@ -63,4 +71,4 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { */ const val PERMISSION = "ru.evotor.permission.PAYBACK_WITH_SELL_INTEGRATION_SERVICE" } -} \ No newline at end of file +} diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt index 0b3d715a0..504555818 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt @@ -3,6 +3,8 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent +import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnMedicineAttributeEvent @@ -20,6 +22,7 @@ abstract class SellIntegrationService : IntegrationServiceV2() { ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_MEDICINE_ATTRIBUTES -> ReturnMedicineAttributeEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } + ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -72,6 +75,9 @@ abstract class SellIntegrationService : IntegrationServiceV2() { @RequiresIntentAction(ACTION_MEDICINE_ATTRIBUTES) open fun handleEvent(event: ReturnMedicineAttributeEvent): ReturnMedicineAttributeEvent.Result? = null + @RequiresIntentAction(PaybackIntegrationService.Companion.ACTION_INTERNET_REQUISITES) + open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null + companion object { /** @@ -103,6 +109,8 @@ abstract class SellIntegrationService : IntegrationServiceV2() { */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.sell.DELIVERY_REQUISITES" + const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.sell.INTERNET_REQUISITES" + /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.SellIntegrationService]. * From 7db7512c1b7543db9e2df285d267d812abbbc4bb Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 16 Oct 2025 13:10:46 +0500 Subject: [PATCH 29/56] STDEV-23301 --- .../print_receipt_command/PrintBuyReceiptCommand.kt | 2 +- .../print_receipt_command/PrintBuybackReceiptCommand.kt | 2 +- .../print_receipt_command/PrintPaybackReceiptCommand.kt | 2 +- .../print_receipt_command/PrintSellReceiptCommand.kt | 2 +- .../core/action/datamapper/PrintReceiptMapper.java | 2 +- src/main/java/ru/evotor/framework/receipt/Receipt.kt | 2 +- .../handler/service/CorrectionIncomeIntegrationService.kt | 8 -------- .../service/CorrectionReturnIncomeIntegrationService.kt | 8 -------- .../event/handler/service/PaybackIntegrationService.kt | 8 -------- .../handler/service/PaybackWithSellIntegrationService.kt | 8 -------- .../event/handler/service/SellIntegrationService.kt | 8 -------- 11 files changed, 6 insertions(+), 46 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt index fd91214bd..af60a3792 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt @@ -81,7 +81,7 @@ class PrintBuyReceiptCommand( payments ), hashMapOf(), - receiptFromInternet ?: false + receiptFromInternet )) }, null, diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt index 6cc14254e..2b5dc4255 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt @@ -81,7 +81,7 @@ class PrintBuybackReceiptCommand( payments ), hashMapOf(), - receiptFromInternet ?: false + receiptFromInternet )) }, null, diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt index db41863c0..00ca75808 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt @@ -85,7 +85,7 @@ class PrintPaybackReceiptCommand( payments ), hashMapOf(), - receiptFromInternet ?: false + receiptFromInternet )) }, null, diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt index 34d801d3f..a2de41a8b 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt @@ -82,7 +82,7 @@ class PrintSellReceiptCommand( payments ), hashMapOf(), - receiptFromInternet ?: false + receiptFromInternet )) }, null, diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java index e38fc00c2..cc98b3094 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java @@ -115,7 +115,7 @@ public static Bundle toBundle(@Nullable Receipt.PrintReceipt printReceipt) { } bundle.putParcelableArrayList(KEY_CHANGES, changes); - bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, printReceipt.getReceiptFromInternet()); + bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, Boolean.TRUE.equals(printReceipt.getReceiptFromInternet())); return bundle; } diff --git a/src/main/java/ru/evotor/framework/receipt/Receipt.kt b/src/main/java/ru/evotor/framework/receipt/Receipt.kt index 8fb4f0841..465d71136 100644 --- a/src/main/java/ru/evotor/framework/receipt/Receipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/Receipt.kt @@ -162,7 +162,7 @@ data class Receipt /** * Признак расчета в сети «Интернет» */ - val receiptFromInternet: Boolean + val receiptFromInternet: Boolean? ) { /** diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt index 3af12b710..0383502cd 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionIncomeIntegrationService.kt @@ -3,8 +3,6 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForPrintGroupRequestedEvent @@ -18,7 +16,6 @@ abstract class CorrectionIncomeIntegrationService : IntegrationServiceV2() { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } - ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -49,9 +46,6 @@ abstract class CorrectionIncomeIntegrationService : IntegrationServiceV2() { @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null - @RequiresIntentAction(ACTION_INTERNET_REQUISITES) - open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null - companion object { /** * Запрос [реквизитов покупателя][ru.evotor.framework.receipt.Purchaser] для добавления в чек коррекции. @@ -68,8 +62,6 @@ abstract class CorrectionIncomeIntegrationService : IntegrationServiceV2() { */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.correction_income.DELIVERY_REQUISITES" - const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.correction_income.INTERNET_REQUISITES" - /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.CorrectionIncomeIntegrationService]. * diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt index c08cd82b4..7bb90d37a 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnIncomeIntegrationService.kt @@ -3,8 +3,6 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForPrintGroupRequestedEvent @@ -18,7 +16,6 @@ abstract class CorrectionReturnIncomeIntegrationService : IntegrationServiceV2() ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } - ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -49,9 +46,6 @@ abstract class CorrectionReturnIncomeIntegrationService : IntegrationServiceV2() @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null - @RequiresIntentAction(ACTION_INTERNET_REQUISITES) - open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null - companion object { /** * Запрос [реквизитов покупателя][ru.evotor.framework.receipt.Purchaser] для добавления в чек коррекции. @@ -68,8 +62,6 @@ abstract class CorrectionReturnIncomeIntegrationService : IntegrationServiceV2() */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.correction_return_income.DELIVERY_REQUISITES" - const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.correction_return_income.INTERNET_REQUISITES" - /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.CorrectionReturnIncomeIntegrationService]. * diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt index fa7b10285..8a2fab71c 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackIntegrationService.kt @@ -4,8 +4,6 @@ import android.os.Bundle import ru.evotor.IBundlable import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.* /** @@ -19,7 +17,6 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_MEDICINE_ATTRIBUTES -> ReturnMedicineAttributeEvent.from(bundle)?.let { handleEvent(it) } ACTION_BARCODE_RECEIVED -> ReturnPositionsForBarcodeRequestedEvent.from(bundle)?.let { handleEvent(it) } - ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -69,9 +66,6 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { @RequiresIntentAction(ACTION_MEDICINE_ATTRIBUTES) open fun handleEvent(event: ReturnMedicineAttributeEvent): ReturnMedicineAttributeEvent.Result? = null - @RequiresIntentAction(ACTION_INTERNET_REQUISITES) - open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null - companion object { /** @@ -103,8 +97,6 @@ abstract class PaybackIntegrationService : IntegrationServiceV2() { */ const val ACTION_BARCODE_RECEIVED = "ru.evotor.event.payback.BARCODE_RECEIVED" - const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.payback.INTERNET_REQUISITES" - /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.PaybackIntegrationService]. * diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt index 15b2fcde7..492685a8d 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/PaybackWithSellIntegrationService.kt @@ -3,8 +3,6 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnPurchaserRequisitesForPrintGroupRequestedEvent @@ -18,7 +16,6 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { ACTION_PURCHASER_REQUISITES -> ReturnPurchaserRequisitesForPrintGroupRequestedEvent.from(bundle)?.let { handleEvent(it) } ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } - ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } /** @@ -48,9 +45,6 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null - @RequiresIntentAction(ACTION_INTERNET_REQUISITES) - open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null - companion object { const val ACTION_PURCHASER_REQUISITES = "ru.evotor.event.paybackWithSell.PURCHASER_REQUISITES" const val ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS = "ru.evotor.event.paybackWithSell.DISCOUNT_SCREEN_ADDITIONAL_ITEMS" @@ -62,8 +56,6 @@ abstract class PaybackWithSellIntegrationService : IntegrationServiceV2() { */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.paybackWithSell.DELIVERY_REQUISITES" - const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.paybackWithSell.INTERNET_REQUISITES" - /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.PaybackIntegrationService]. * diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt index 504555818..0b3d715a0 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/SellIntegrationService.kt @@ -3,8 +3,6 @@ package ru.evotor.framework.receipt.formation.event.handler.service import android.os.Bundle import ru.evotor.framework.common.event.handler.service.IntegrationServiceV2 import ru.evotor.framework.core.RequiresIntentAction -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEvent -import ru.evotor.framework.core.action.event.receipt.internet.InternetRequisitesRequiredEventResult import ru.evotor.framework.receipt.formation.event.DiscountScreenAdditionalItemsEvent import ru.evotor.framework.receipt.formation.event.ReturnDeliveryRequisitesForReceiptRequestedEvent import ru.evotor.framework.receipt.formation.event.ReturnMedicineAttributeEvent @@ -22,7 +20,6 @@ abstract class SellIntegrationService : IntegrationServiceV2() { ACTION_DISCOUNT_SCREEN_ADDITIONAL_ITEMS -> DiscountScreenAdditionalItemsEvent.from(bundle)?.let { handleEvent(it) } ACTION_MEDICINE_ATTRIBUTES -> ReturnMedicineAttributeEvent.from(bundle)?.let { handleEvent(it) } ACTION_DELIVERY_REQUISITES -> ReturnDeliveryRequisitesForReceiptRequestedEvent.from(bundle)?.let { handleEvent(it) } - ACTION_INTERNET_REQUISITES -> InternetRequisitesRequiredEvent.from(bundle)?.let { handleEvent(it) } else -> null } @@ -75,9 +72,6 @@ abstract class SellIntegrationService : IntegrationServiceV2() { @RequiresIntentAction(ACTION_MEDICINE_ATTRIBUTES) open fun handleEvent(event: ReturnMedicineAttributeEvent): ReturnMedicineAttributeEvent.Result? = null - @RequiresIntentAction(PaybackIntegrationService.Companion.ACTION_INTERNET_REQUISITES) - open fun handleEvent(event: InternetRequisitesRequiredEvent): InternetRequisitesRequiredEventResult? = null - companion object { /** @@ -109,8 +103,6 @@ abstract class SellIntegrationService : IntegrationServiceV2() { */ const val ACTION_DELIVERY_REQUISITES = "ru.evotor.event.sell.DELIVERY_REQUISITES" - const val ACTION_INTERNET_REQUISITES = "ru.evotor.event.sell.INTERNET_REQUISITES" - /** * Разрешение необходимое приложению для работы со службой [ru.evotor.framework.receipt.formation.event.handler.service.SellIntegrationService]. * From 540342b85349104aeeb9afb8ed6a5925ee99858d Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 16 Oct 2025 14:28:55 +0500 Subject: [PATCH 30/56] STDEV-23301 --- .../ru/evotor/framework/receipt/ReceiptApi.kt | 15 ++++++++++++++- .../framework/receipt/ReceiptFromInternetTable.kt | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 5518b11c0..66809c3ff 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -55,6 +55,7 @@ object ReceiptApi { private const val POSITIONS_PATH = "positions" private const val PAYMENTS_PATH = "payments" private const val DISCOUNTS_PATH = "discounts" + private const val RECEIPT_FROM_INTERNET_PATH = "receiptFromInternet" private const val CURRENT_CORRECTION_INCOME_PATH = "correctionIncome" private const val CURRENT_CORRECTION_OUTCOME_PATH = "correctionOutcome" private const val CURRENT_CORRECTION_RETURN_INCOME_PATH = "correctionReturnIncome" @@ -213,6 +214,18 @@ object ReceiptApi { null } + val receiptFromInternet = context.contentResolver.query( + Uri.withAppendedPath(baseUri, RECEIPT_FROM_INTERNET_PATH), + null, + null, + null, + null + )?.use { cursor -> + if (cursor.moveToNext()) { + cursor.optInt(ReceiptFromInternetTable.COLUMN_RECEIPT_FROM_INTERNET)?.let { it == 1 } + } else null + } + val printDocuments = ArrayList() val groupByPrintGroupPaymentResults = getPaymentsResults .groupBy { it.printGroup } @@ -228,7 +241,7 @@ object ReceiptApi { payments = payments.mapValues { it.value.value }, changes = payments.mapValues { it.value.change }, discounts = receiptDiscount, - receiptFromInternet = false // TODO + receiptFromInternet = receiptFromInternet ) ) } diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt new file mode 100644 index 000000000..3358301a4 --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt @@ -0,0 +1,7 @@ +package ru.evotor.framework.receipt + +object ReceiptFromInternetTable { + const val COLUMN_RECEIPT_FROM_INTERNET = "RECEIPT_FROM_INTERNET" +} + + From 2adc022ac320f5ad4f5837ad824de70c8e1948b8 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 16 Oct 2025 14:29:06 +0500 Subject: [PATCH 31/56] STDEV-23301 --- .../ru/evotor/framework/receipt/ReceiptFromInternetTable.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt index 3358301a4..7615e1cf5 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt @@ -3,5 +3,3 @@ package ru.evotor.framework.receipt object ReceiptFromInternetTable { const val COLUMN_RECEIPT_FROM_INTERNET = "RECEIPT_FROM_INTERNET" } - - From e6ce9f20d12cd237172d3a669f25e6a2fd6ea67f Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 16 Oct 2025 15:13:30 +0500 Subject: [PATCH 32/56] STDEV-23301 --- .../core/action/datamapper/ChangesMapper.kt | 2 + .../action/event/receipt/changes/IChange.kt | 1 + .../changes/receipt/SetInternetRequisites.kt | 49 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt b/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt index 2eeffb8b5..1c8e593c2 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt @@ -11,6 +11,7 @@ import ru.evotor.framework.core.action.event.receipt.changes.position.PositionEd import ru.evotor.framework.core.action.event.receipt.changes.position.PositionRemove import ru.evotor.framework.core.action.event.receipt.changes.position.SetPrintGroup import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData import ru.evotor.framework.core.action.event.receipt.changes.receipt.print_extra.SetPrintExtra @@ -79,6 +80,7 @@ object ChangesMapper { IChange.Type.SET_PAYMENT_PURPOSE_PRINT_GROUP -> SetPrintGroup.from(bundle) IChange.Type.SET_PRINT_EXTRA -> SetPrintExtra.from(bundle) IChange.Type.SET_PURCHASER_CONTACT_DATA -> SetPurchaserContactData.from(bundle) + IChange.Type.SET_INTERNET_REQUISITES -> SetInternetRequisites.from(bundle) null, IChange.Type.UNKNOWN -> UnknownChange.from(typeName, bundle) } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt index 97f22b51e..f053cbc7f 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt @@ -35,6 +35,7 @@ interface IChange : IBundlable { */ SET_PRINT_EXTRA, SET_PURCHASER_CONTACT_DATA, + SET_INTERNET_REQUISITES, UNKNOWN } } diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt new file mode 100644 index 000000000..57ca022c3 --- /dev/null +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt @@ -0,0 +1,49 @@ +package ru.evotor.framework.core.action.event.receipt.changes.receipt + +import android.os.Bundle +import ru.evotor.framework.core.action.event.receipt.changes.IChange + +/** + * Устанавливает интернет-реквизиты чека. + * + * @param receiptFromInternet признак расчета в сети Интернет + * @param paymentPlace место расчетов + */ +data class SetInternetRequisites( + val receiptFromInternet: Boolean, + val paymentPlace: String +) : IChange { + + override fun toBundle(): Bundle { + return Bundle().apply { + putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet) + putString(KEY_PAYMENT_PLACE, paymentPlace) + } + } + + override fun getType(): IChange.Type { + return IChange.Type.SET_INTERNET_REQUISITES + } + + companion object { + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" + private const val KEY_PAYMENT_PLACE = "paymentPlace" + + @JvmStatic + fun from(bundle: Bundle?): SetInternetRequisites? { + bundle ?: return null + + val receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false) + val paymentPlace = bundle.getString(KEY_PAYMENT_PLACE) + + if (paymentPlace == null) { + return null + } + + return SetInternetRequisites( + receiptFromInternet = receiptFromInternet, + paymentPlace = paymentPlace + ) + } + } +} From 3c15e2d020e81a1059528a427f97a64376e4cefe Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 16 Oct 2025 16:02:37 +0500 Subject: [PATCH 33/56] STDEV-23301 --- .../OpenBuyReceiptCommand.java | 28 ++++++++++++++++-- .../OpenBuybackReceiptCommand.java | 28 ++++++++++++++++-- .../OpenPaybackReceiptCommand.java | 29 +++++++++++++++++-- .../OpenSellReceiptCommand.java | 28 ++++++++++++++++-- 4 files changed, 105 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java index 59dd4e2c0..3909c8cb7 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuyReceiptCommand.java @@ -22,6 +22,7 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange; import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; /** @@ -33,6 +34,7 @@ public class OpenBuyReceiptCommand implements IBundlable { private static final String KEY_CHANGES = "changes"; private static final String KEY_RECEIPT_EXTRA = "extra"; private static final String KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData"; + private static final String KEY_RECEIPT_SET_INTERNET_REQUISITES = "setInternetRequisites"; @Nullable public static OpenBuyReceiptCommand create(@Nullable Bundle bundle) { @@ -46,7 +48,8 @@ public static OpenBuyReceiptCommand create(@Nullable Bundle bundle) { PositionAdd.class ), SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)), - SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)) + SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)), + SetInternetRequisites.from(bundle.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES)) ); } @@ -56,9 +59,11 @@ public static OpenBuyReceiptCommand create(@Nullable Bundle bundle) { private final SetExtra extra; @Nullable private final SetPurchaserContactData setPurchaserContactData; + @Nullable + private final SetInternetRequisites setInternetRequisites; /** - * Используйте конструктор с setPurchaserContactData + * Используйте конструктор с setPurchaserContactData и setInternetRequisites * * @param changes * @param extra @@ -75,6 +80,15 @@ public OpenBuyReceiptCommand( @Nullable List changes, @Nullable SetExtra extra, @Nullable SetPurchaserContactData setPurchaserContactData + ) { + this(changes, extra, setPurchaserContactData, null); + } + + public OpenBuyReceiptCommand( + @Nullable List changes, + @Nullable SetExtra extra, + @Nullable SetPurchaserContactData setPurchaserContactData, + @Nullable SetInternetRequisites setInternetRequisites ) { this.changes = new ArrayList<>(); if (changes != null) { @@ -82,6 +96,7 @@ public OpenBuyReceiptCommand( } this.extra = extra; this.setPurchaserContactData = setPurchaserContactData; + this.setInternetRequisites = setInternetRequisites; } public void process(@NonNull final Activity activity, IntegrationManagerCallback callback) { @@ -116,6 +131,10 @@ public Bundle toBundle() { KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData == null ? null : setPurchaserContactData.toBundle() ); + bundle.putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites == null ? null : setInternetRequisites.toBundle() + ); return bundle; } @@ -133,4 +152,9 @@ public SetExtra getExtra() { public SetPurchaserContactData getSetPurchaserContactData() { return setPurchaserContactData; } + + @Nullable + public SetInternetRequisites getSetInternetRequisites() { + return setInternetRequisites; + } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java index e7a4b7bd1..20f657384 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenBuybackReceiptCommand.java @@ -22,6 +22,7 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange; import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; /** @@ -33,6 +34,7 @@ public class OpenBuybackReceiptCommand implements IBundlable { private static final String KEY_CHANGES = "changes"; private static final String KEY_RECEIPT_EXTRA = "extra"; private static final String KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData"; + private static final String KEY_RECEIPT_SET_INTERNET_REQUISITES = "setInternetRequisites"; @Nullable public static OpenBuybackReceiptCommand create(@Nullable Bundle bundle) { @@ -47,7 +49,8 @@ public static OpenBuybackReceiptCommand create(@Nullable Bundle bundle) { PositionAdd.class ), SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)), - SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)) + SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)), + SetInternetRequisites.from(bundle.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES)) ); } @@ -57,9 +60,11 @@ public static OpenBuybackReceiptCommand create(@Nullable Bundle bundle) { private final SetExtra extra; @Nullable private final SetPurchaserContactData setPurchaserContactData; + @Nullable + private final SetInternetRequisites setInternetRequisites; /** - * Используйте конструктор с setPurchaserContactData + * Используйте конструктор с setPurchaserContactData и setInternetRequisites * * @param changes * @param extra @@ -76,6 +81,15 @@ public OpenBuybackReceiptCommand( @Nullable List changes, @Nullable SetExtra extraChange, @Nullable SetPurchaserContactData setPurchaserContactData + ) { + this(changes, extraChange, setPurchaserContactData, null); + } + + public OpenBuybackReceiptCommand( + @Nullable List changes, + @Nullable SetExtra extraChange, + @Nullable SetPurchaserContactData setPurchaserContactData, + @Nullable SetInternetRequisites setInternetRequisites ) { this.changes = new ArrayList<>(); if (changes != null) { @@ -83,6 +97,7 @@ public OpenBuybackReceiptCommand( } this.extra = extraChange; this.setPurchaserContactData = setPurchaserContactData; + this.setInternetRequisites = setInternetRequisites; } public void process(@NonNull final Activity activity, IntegrationManagerCallback callback) { @@ -118,6 +133,10 @@ public Bundle toBundle() { KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData == null ? null : setPurchaserContactData.toBundle() ); + bundle.putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites == null ? null : setInternetRequisites.toBundle() + ); return bundle; } @@ -135,4 +154,9 @@ public SetExtra getExtra() { public SetPurchaserContactData getSetPurchaserContactData() { return setPurchaserContactData; } + + @Nullable + public SetInternetRequisites getSetInternetRequisites() { + return setInternetRequisites; + } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java index c104c8f0f..ceb89efbc 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenPaybackReceiptCommand.java @@ -22,6 +22,7 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange; import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; /** @@ -34,6 +35,7 @@ public class OpenPaybackReceiptCommand implements IBundlable { private static final String KEY_RECEIPT_EXTRA = "extra"; private static final String KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData"; private static final String KEY_SELL_RECEIPT_UUID = "sellReceiptUuid"; + private static final String KEY_RECEIPT_SET_INTERNET_REQUISITES = "setInternetRequisites"; @Nullable public static OpenPaybackReceiptCommand create(@Nullable Bundle bundle) { @@ -49,7 +51,8 @@ public static OpenPaybackReceiptCommand create(@Nullable Bundle bundle) { ), SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)), SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)), - bundle.getString(KEY_SELL_RECEIPT_UUID, null) + bundle.getString(KEY_SELL_RECEIPT_UUID, null), + SetInternetRequisites.from(bundle.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES)) ); } @@ -61,9 +64,11 @@ public static OpenPaybackReceiptCommand create(@Nullable Bundle bundle) { private final SetPurchaserContactData setPurchaserContactData; @Nullable private final String sellReceiptUuid; + @Nullable + private final SetInternetRequisites setInternetRequisites; /** - * Используйте конструктор с setPurchaserContactData + * Используйте конструктор с setPurchaserContactData и setInternetRequisites * * @param changes * @param extraChange @@ -89,6 +94,16 @@ public OpenPaybackReceiptCommand( @Nullable SetExtra extraChange, @Nullable SetPurchaserContactData setPurchaserContactData, @Nullable String sellReceiptUuid + ) { + this(changes, extraChange, setPurchaserContactData, sellReceiptUuid, null); + } + + public OpenPaybackReceiptCommand( + @Nullable List changes, + @Nullable SetExtra extraChange, + @Nullable SetPurchaserContactData setPurchaserContactData, + @Nullable String sellReceiptUuid, + @Nullable SetInternetRequisites setInternetRequisites ) { this.changes = new ArrayList<>(); if (changes != null) { @@ -97,6 +112,7 @@ public OpenPaybackReceiptCommand( this.extra = extraChange; this.setPurchaserContactData = setPurchaserContactData; this.sellReceiptUuid = sellReceiptUuid; + this.setInternetRequisites = setInternetRequisites; } public void process(@NonNull final Activity activity, IntegrationManagerCallback callback) { @@ -133,6 +149,10 @@ public Bundle toBundle() { setPurchaserContactData == null ? null : setPurchaserContactData.toBundle() ); bundle.putString(KEY_SELL_RECEIPT_UUID, sellReceiptUuid); + bundle.putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites == null ? null : setInternetRequisites.toBundle() + ); return bundle; } @@ -156,4 +176,9 @@ public SetPurchaserContactData getSetPurchaserContactData() { public String getSellReceiptUuid() { return sellReceiptUuid; } + + @Nullable + public SetInternetRequisites getSetInternetRequisites() { + return setInternetRequisites; + } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java index ca22005d2..7807eb3b2 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenSellReceiptCommand.java @@ -22,6 +22,7 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange; import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; /** @@ -33,6 +34,7 @@ public class OpenSellReceiptCommand implements IBundlable { private static final String KEY_CHANGES = "changes"; private static final String KEY_RECEIPT_EXTRA = "extra"; private static final String KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData"; + private static final String KEY_RECEIPT_SET_INTERNET_REQUISITES = "setInternetRequisites"; @Nullable public static OpenSellReceiptCommand create(@Nullable Bundle bundle) { @@ -46,7 +48,8 @@ public static OpenSellReceiptCommand create(@Nullable Bundle bundle) { PositionAdd.class ), SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)), - SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)) + SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)), + SetInternetRequisites.from(bundle.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES)) ); } @@ -56,9 +59,11 @@ public static OpenSellReceiptCommand create(@Nullable Bundle bundle) { private final SetExtra extra; @Nullable private final SetPurchaserContactData setPurchaserContactData; + @Nullable + private final SetInternetRequisites setInternetRequisites; /** - * Используйте конструктор с setPurchaserContactData + * Используйте конструктор с setPurchaserContactData и setInternetRequisites * * @param changes * @param extra @@ -75,6 +80,15 @@ public OpenSellReceiptCommand( @Nullable List changes, @Nullable SetExtra extra, @Nullable SetPurchaserContactData setPurchaserContactData + ) { + this(changes, extra, setPurchaserContactData, null); + } + + public OpenSellReceiptCommand( + @Nullable List changes, + @Nullable SetExtra extra, + @Nullable SetPurchaserContactData setPurchaserContactData, + @Nullable SetInternetRequisites setInternetRequisites ) { this.changes = new ArrayList<>(); if (changes != null) { @@ -82,6 +96,7 @@ public OpenSellReceiptCommand( } this.extra = extra; this.setPurchaserContactData = setPurchaserContactData; + this.setInternetRequisites = setInternetRequisites; } public void process(@NonNull final Activity activity, IntegrationManagerCallback callback) { @@ -117,6 +132,10 @@ public Bundle toBundle() { KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData == null ? null : setPurchaserContactData.toBundle() ); + bundle.putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites == null ? null : setInternetRequisites.toBundle() + ); return bundle; } @@ -134,4 +153,9 @@ public SetExtra getExtra() { public SetPurchaserContactData getSetPurchaserContactData() { return setPurchaserContactData; } + + @Nullable + public SetInternetRequisites getSetInternetRequisites() { + return setInternetRequisites; + } } From 7b656ea463fba944cd865ba93dfdde808599c1de Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 16 Oct 2025 16:12:16 +0500 Subject: [PATCH 34/56] STDEV-23301 --- .../BeforePositionsEditedEventResult.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java index 77abdc6f4..db47d4122 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java @@ -13,6 +13,7 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange; import ru.evotor.framework.core.action.event.receipt.changes.position.IPositionChange; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; /** @@ -23,6 +24,7 @@ public class BeforePositionsEditedEventResult implements IBundlable { private static final String KEY_CHANGES = "changes"; private static final String KEY_RECEIPT_EXTRA = "extra"; private static final String KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData"; + private static final String KEY_RECEIPT_SET_INTERNET_REQUISITES = "setInternetRequisites"; @Nullable public static BeforePositionsEditedEventResult create(@Nullable Bundle bundle) { @@ -40,7 +42,8 @@ public static BeforePositionsEditedEventResult create(@Nullable Bundle bundle) { return new BeforePositionsEditedEventResult( positionChanges, SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)), - SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)) + SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)), + SetInternetRequisites.from(bundle.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES)) ); } @@ -53,11 +56,22 @@ public static BeforePositionsEditedEventResult create(@Nullable Bundle bundle) { private final SetExtra extra; @Nullable private final SetPurchaserContactData setPurchaserContactData; + @Nullable + private final SetInternetRequisites setInternetRequisites; public BeforePositionsEditedEventResult( @Nullable List changes, @Nullable SetExtra extra, @Nullable SetPurchaserContactData setPurchaserContactData + ) { + this(changes, extra, setPurchaserContactData, null); + } + + public BeforePositionsEditedEventResult( + @Nullable List changes, + @Nullable SetExtra extra, + @Nullable SetPurchaserContactData setPurchaserContactData, + @Nullable SetInternetRequisites setInternetRequisites ) { this.changes = new ArrayList<>(); if (changes != null) { @@ -65,6 +79,7 @@ public BeforePositionsEditedEventResult( } this.extra = extra; this.setPurchaserContactData = setPurchaserContactData; + this.setInternetRequisites = setInternetRequisites; } @Override @@ -82,6 +97,10 @@ public Bundle toBundle() { KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData == null ? null : setPurchaserContactData.toBundle() ); + bundle.putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites == null ? null : setInternetRequisites.toBundle() + ); return bundle; } @@ -99,4 +118,9 @@ public SetExtra getExtra() { public SetPurchaserContactData getSetPurchaserContactData() { return setPurchaserContactData; } + + @Nullable + public SetInternetRequisites getSetInternetRequisites() { + return setInternetRequisites; + } } From 32ed92a2893d017de0288564622c72d4532cd27a Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Fri, 17 Oct 2025 12:56:37 +0500 Subject: [PATCH 35/56] STDEV-23301 --- .../print_receipt_command/PrintReceiptCommandResult.java | 5 +++++ .../event/receipt/changes/receipt/SetInternetRequisites.kt | 1 + 2 files changed, 6 insertions(+) diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandResult.java b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandResult.java index c5c15f62a..61f77d1e2 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandResult.java +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommandResult.java @@ -74,6 +74,11 @@ public class PrintReceiptCommandResult implements IBundlable { */ public static final int ERROR_CODE_INVALID_FISCAL_SIGN_OF_INCORRECT_RECEIPT = -14; + /** + * В интернет-чеках место расчета должно быть заполнено + */ + public static final int ERROR_PAYMENT_PLACE_IS_NULL = -15; + @Nullable public static PrintReceiptCommandResult create(@Nullable Bundle bundle) { if (bundle == null) { diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt index 57ca022c3..71b7fd02b 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt @@ -47,3 +47,4 @@ data class SetInternetRequisites( } } } + From 90cc5b745bb29746b99882d1ed0f788a4ea6314a Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Mon, 20 Oct 2025 18:41:29 +0500 Subject: [PATCH 36/56] STDEV-23301 --- .../InternetRequisitesRequiredEvent.kt | 69 ------------------- ...nternetRequisitesRequiredEventProcessor.kt | 28 -------- .../InternetRequisitesRequiredEventResult.kt | 43 ------------ .../ru/evotor/framework/receipt/ReceiptApi.kt | 2 +- .../receipt/ReceiptFromInternetTable.kt | 5 -- .../framework/receipt/ReceiptHeaderTable.kt | 1 + 6 files changed, 2 insertions(+), 146 deletions(-) delete mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt delete mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt delete mode 100644 src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt delete mode 100644 src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt deleted file mode 100644 index 8802d774c..000000000 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEvent.kt +++ /dev/null @@ -1,69 +0,0 @@ -package ru.evotor.framework.core.action.event.receipt.internet - -import android.os.Bundle -import ru.evotor.IBundlable -import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData - -/** - * Событие передачи реквизитов в случае интернет-расчёта. - * - * Происходит перед сразу после оплат. - * - * @param receiptUuid uuid чека - * @param receiptFromInternet признак расчета в сети «Интернет» - * @param paymentPlace текущее место расчетов в чеке - * @param purchaserContactData текущие контакты покупателя в чеке - */ -class InternetRequisitesRequiredEvent( - val receiptUuid: String, - val receiptFromInternet: Boolean, - val paymentPlace: String? = null, - val purchaserContactData: SetPurchaserContactData? = null -) : IBundlable { - - override fun toBundle(): Bundle { - val result = Bundle() - result.putString(KEY_RECEIPT_UUID, receiptUuid) - result.putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet) - result.putString(KEY_PAYMENT_PLACE, paymentPlace) - result.putBundle(KEY_PURCHASER_CONTACT_DATA, purchaserContactData?.toBundle()) - return result - } - - companion object { - - /** - * Передача реквизитов в случае интернет-расчёта. - * - * Значение константы: evo.v2.receipt.internetRequisites. - */ - const val NAME_ACTION = "evo.v2.receipt.internetRequisites" - - private const val KEY_RECEIPT_UUID = "receiptUuid" - private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" - private const val KEY_PAYMENT_PLACE = "paymentPlace" - private const val KEY_PURCHASER_CONTACT_DATA = "purchaserContactData" - - fun from(bundle: Bundle?): InternetRequisitesRequiredEvent? = bundle?.let { - InternetRequisitesRequiredEvent( - getReceiptUuid(it) ?: return null, - getReceiptFromInternet(it) ?: return null, - getPaymentPlace(it), - getPurchaserContactData(it) - ) - } - - private fun getReceiptUuid(bundle: Bundle): String? = - bundle.getString(KEY_RECEIPT_UUID, null) - - private fun getReceiptFromInternet(bundle: Bundle): Boolean? = - bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false) - - private fun getPaymentPlace(bundle: Bundle): String? = - bundle.getString(KEY_PAYMENT_PLACE, null) - - private fun getPurchaserContactData(bundle: Bundle): SetPurchaserContactData? = - SetPurchaserContactData.from(bundle.getBundle(KEY_PURCHASER_CONTACT_DATA)) - } - -} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt deleted file mode 100644 index b11f028cd..000000000 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventProcessor.kt +++ /dev/null @@ -1,28 +0,0 @@ -package ru.evotor.framework.core.action.event.receipt.internet - -import android.os.Bundle -import ru.evotor.framework.core.action.processor.ActionProcessor - -/** - * Обработчик события [InternetRequisitesRequiredEvent]. - */ -abstract class InternetRequisitesRequiredEventProcessor : ActionProcessor() { - - override fun process(action: String, bundle: Bundle?, callback: Callback) { - val event = InternetRequisitesRequiredEvent.Companion.from(bundle) ?: run { - callback.skip() - return - } - call(action, event, callback) - } - - /** - * Используйте метод, чтобы обработать событие [InternetRequisitesRequiredEvent] и сохранить результат [InternetRequisitesRequiredEventResult]. - * @param action - * @param event экземпляр события передачи реквизитов в случае интернет-расчёта. - * @param callback функция обратного вызова. Методы функции позволяют пропускать обработку события, возвращать результат, - * запускать операции и обрабатывать ошибки. - */ - abstract fun call(action: String, event: InternetRequisitesRequiredEvent, callback: Callback) - -} diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt deleted file mode 100644 index 5e2aa46d0..000000000 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/internet/InternetRequisitesRequiredEventResult.kt +++ /dev/null @@ -1,43 +0,0 @@ -package ru.evotor.framework.core.action.event.receipt.internet - -import android.os.Bundle -import ru.evotor.IBundlable -import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData - -/** - * Результат обработки события [InternetRequisitesRequiredEvent]. - */ -class InternetRequisitesRequiredEventResult( - val receiptFromInternet: Boolean, - val paymentPlace: String, - val purchaserContactData: SetPurchaserContactData -) : IBundlable { - - override fun toBundle(): Bundle { - if (purchaserContactData.email.isNullOrEmpty() xor purchaserContactData.phone.isNullOrEmpty()) { - throw IllegalArgumentException("email or phone should be not null or empty") // TODO - } - val bundle = Bundle() - bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet) - bundle.putString(KEY_PAYMENT_PLACE, paymentPlace) - bundle.putBundle(KEY_PURCHASER_CONTACT_DATA, purchaserContactData.toBundle()) - return bundle - } - - companion object { - private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" - private const val KEY_PAYMENT_PLACE = "paymentPlace" - private const val KEY_PURCHASER_CONTACT_DATA = "purchaserContactData" - - fun create(bundle: Bundle?): InternetRequisitesRequiredEventResult? = bundle?.let { - val receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false) - val paymentPlace = bundle.getString(KEY_PAYMENT_PLACE) ?: return null - val purchaserContactData = SetPurchaserContactData.from(bundle.getBundle(KEY_PURCHASER_CONTACT_DATA)) ?: return null - return InternetRequisitesRequiredEventResult( - receiptFromInternet, - paymentPlace, - purchaserContactData - ) - } - } -} diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 66809c3ff..7686c9f96 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -222,7 +222,7 @@ object ReceiptApi { null )?.use { cursor -> if (cursor.moveToNext()) { - cursor.optInt(ReceiptFromInternetTable.COLUMN_RECEIPT_FROM_INTERNET)?.let { it == 1 } + cursor.optInt(ReceiptHeaderTable.COLUMN_RECEIPT_FROM_INTERNET)?.let { it == 1 } } else null } diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt deleted file mode 100644 index 7615e1cf5..000000000 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptFromInternetTable.kt +++ /dev/null @@ -1,5 +0,0 @@ -package ru.evotor.framework.receipt - -object ReceiptFromInternetTable { - const val COLUMN_RECEIPT_FROM_INTERNET = "RECEIPT_FROM_INTERNET" -} diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt index c6492ec9e..b48aac093 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt @@ -10,4 +10,5 @@ object ReceiptHeaderTable { const val COLUMN_CLIENT_PHONE = "CLIENT_PHONE" const val COLUMN_EXTRA = "EXTRA" const val COLUMN_SESSION_NUMBER = "SESSION_NUMBER" + const val COLUMN_RECEIPT_FROM_INTERNET = "RECEIPT_FROM_INTERNET" } From d7b31efbb4888dc4ca1a3eddbe8ea4f6c194c6c5 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Mon, 20 Oct 2025 20:36:01 +0500 Subject: [PATCH 37/56] STDEV-23301 --- .../BeforePositionsEditedEventResult.java | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java b/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java index db47d4122..77abdc6f4 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/before_positions_edited/BeforePositionsEditedEventResult.java @@ -13,7 +13,6 @@ import ru.evotor.framework.core.action.event.receipt.changes.IChange; import ru.evotor.framework.core.action.event.receipt.changes.position.IPositionChange; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra; -import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites; import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData; /** @@ -24,7 +23,6 @@ public class BeforePositionsEditedEventResult implements IBundlable { private static final String KEY_CHANGES = "changes"; private static final String KEY_RECEIPT_EXTRA = "extra"; private static final String KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData"; - private static final String KEY_RECEIPT_SET_INTERNET_REQUISITES = "setInternetRequisites"; @Nullable public static BeforePositionsEditedEventResult create(@Nullable Bundle bundle) { @@ -42,8 +40,7 @@ public static BeforePositionsEditedEventResult create(@Nullable Bundle bundle) { return new BeforePositionsEditedEventResult( positionChanges, SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)), - SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)), - SetInternetRequisites.from(bundle.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES)) + SetPurchaserContactData.from(bundle.getBundle(KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA)) ); } @@ -56,22 +53,11 @@ public static BeforePositionsEditedEventResult create(@Nullable Bundle bundle) { private final SetExtra extra; @Nullable private final SetPurchaserContactData setPurchaserContactData; - @Nullable - private final SetInternetRequisites setInternetRequisites; public BeforePositionsEditedEventResult( @Nullable List changes, @Nullable SetExtra extra, @Nullable SetPurchaserContactData setPurchaserContactData - ) { - this(changes, extra, setPurchaserContactData, null); - } - - public BeforePositionsEditedEventResult( - @Nullable List changes, - @Nullable SetExtra extra, - @Nullable SetPurchaserContactData setPurchaserContactData, - @Nullable SetInternetRequisites setInternetRequisites ) { this.changes = new ArrayList<>(); if (changes != null) { @@ -79,7 +65,6 @@ public BeforePositionsEditedEventResult( } this.extra = extra; this.setPurchaserContactData = setPurchaserContactData; - this.setInternetRequisites = setInternetRequisites; } @Override @@ -97,10 +82,6 @@ public Bundle toBundle() { KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData == null ? null : setPurchaserContactData.toBundle() ); - bundle.putBundle( - KEY_RECEIPT_SET_INTERNET_REQUISITES, - setInternetRequisites == null ? null : setInternetRequisites.toBundle() - ); return bundle; } @@ -118,9 +99,4 @@ public SetExtra getExtra() { public SetPurchaserContactData getSetPurchaserContactData() { return setPurchaserContactData; } - - @Nullable - public SetInternetRequisites getSetInternetRequisites() { - return setInternetRequisites; - } } From a9be6986f5efd1535dd3f9d922274cddb1018240 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Tue, 21 Oct 2025 14:33:17 +0500 Subject: [PATCH 38/56] STDEV-23301 --- .../ru/evotor/framework/receipt/ReceiptApi.kt | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 7686c9f96..4ac0ad109 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -55,7 +55,6 @@ object ReceiptApi { private const val POSITIONS_PATH = "positions" private const val PAYMENTS_PATH = "payments" private const val DISCOUNTS_PATH = "discounts" - private const val RECEIPT_FROM_INTERNET_PATH = "receiptFromInternet" private const val CURRENT_CORRECTION_INCOME_PATH = "correctionIncome" private const val CURRENT_CORRECTION_OUTCOME_PATH = "correctionOutcome" private const val CURRENT_CORRECTION_RETURN_INCOME_PATH = "correctionReturnIncome" @@ -129,15 +128,19 @@ object ReceiptApi { else -> Uri.withAppendedPath(RECEIPTS_URI, uuid) } - val header = context.contentResolver.query( + val (header, receiptFromInternet) = context.contentResolver.query( baseUri, null, null, null, null - )?.use { - if (it.moveToNext()) { - return@use createReceiptHeader(it) + )?.use { cursor -> + if (cursor.moveToNext()) { + val receiptHeader = createReceiptHeader(cursor) + val receiptFromInternet = cursor.optInt(ReceiptHeaderTable.COLUMN_RECEIPT_FROM_INTERNET)?.let { it == 1 } + receiptHeader?.let { + return@use receiptHeader to receiptFromInternet + } } else { return null } @@ -214,18 +217,6 @@ object ReceiptApi { null } - val receiptFromInternet = context.contentResolver.query( - Uri.withAppendedPath(baseUri, RECEIPT_FROM_INTERNET_PATH), - null, - null, - null, - null - )?.use { cursor -> - if (cursor.moveToNext()) { - cursor.optInt(ReceiptHeaderTable.COLUMN_RECEIPT_FROM_INTERNET)?.let { it == 1 } - } else null - } - val printDocuments = ArrayList() val groupByPrintGroupPaymentResults = getPaymentsResults .groupBy { it.printGroup } From 60312bcc642a881b78b79772e400c329398f3892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Wed, 22 Oct 2025 20:57:28 +0700 Subject: [PATCH 39/56] STDEV-22627 --- .../ru/evotor/framework/receipt/Position.java | 28 +++++++++---- .../evotor/framework/receipt/PositionTable.kt | 2 + .../receipt/position/LocalModuleInfo.kt | 39 +++++++++++++++++++ .../receipt/position/MarksCheckingInfo.kt | 16 +++++++- .../mapper/MarksCheckingInfoMapper.kt | 14 ++++++- 5 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index f6041f566..6e918c9b4 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -29,6 +29,7 @@ import ru.evotor.framework.receipt.attribute.VeterinaryAttribute; import ru.evotor.framework.receipt.position.AgentRequisites; import ru.evotor.framework.receipt.position.ImportationData; +import ru.evotor.framework.receipt.position.LocalModuleInfo; import ru.evotor.framework.receipt.position.Mark; import ru.evotor.framework.receipt.position.MarksCheckingInfo; import ru.evotor.framework.receipt.position.PartialRealization; @@ -198,6 +199,7 @@ public class Position implements Parcelable { * - лекарства {@link ProductType#MEDICINE_MARKED} * - духи {@link ProductType#PERFUME_MARKED} * - альтернативный табак {@link ProductType#TOBACCO_PRODUCTS_MARKED} + * - ветеринарные препараты {@link ProductType#VETERINARY_MARKED} *

* Также см. {@link #quantity} */ @@ -1030,7 +1032,7 @@ private void readVeterinaryAttribute(Parcel in) { } private void readMark(Parcel in) { - this.mark = in.readParcelable(Mark.class.getClassLoader()); + this.mark = ParcelablesKt.readParcelable(in, Mark.class); } private void readPartialRealization(Parcel in) { @@ -1732,6 +1734,7 @@ public Builder toVeterinaryMarked( * лекарства {@link ProductType#MEDICINE_MARKED} * духи {@link ProductType#PERFUME_MARKED} * альтернативный табак {@link ProductType#TOBACCO_PRODUCTS_MARKED} + * ветеринарные препараты {@link ProductType#VETERINARY_MARKED} * * @param quantityInPackage количество товара в упаковке всего */ @@ -1746,11 +1749,13 @@ public Builder toPartialRealization( public Builder toMarksCheckingInfo( @NonNull String checkId, - @NonNull Long timestamp + @NonNull Long timestamp, + LocalModuleInfo localModuleInfo ) { position.marksCheckingInfo = new MarksCheckingInfo( checkId, - timestamp + timestamp, + localModuleInfo ); return this; } @@ -1857,13 +1862,21 @@ private void setMedicalDevicesParams(Mark mark) { position.mark = mark; } - public void setCaviarParams(Mark mark) { position.mark = mark; } + public void setCaviarParams(Mark mark) { + position.mark = mark; + } - public void setPetFoodParams(Mark mark) { position.mark = mark; } + public void setPetFoodParams(Mark mark) { + position.mark = mark; + } - public void setVegetableOilParams(Mark mark) { position.mark = mark; } + public void setVegetableOilParams(Mark mark) { + position.mark = mark; + } - public void setVeterinaryParams(Mark mark) { position.mark = mark; } + public void setVeterinaryParams(Mark mark) { + position.mark = mark; + } private void setBeerParams(Mark mark) { position.mark = mark; @@ -1975,6 +1988,7 @@ public Builder setClassificationCode(@Nullable String classificationCode) { * лекарства {@link ProductType#MEDICINE_MARKED} * духи {@link ProductType#PERFUME_MARKED} * альтернативный табак {@link ProductType#TOBACCO_PRODUCTS_MARKED} + * ветеринарные препараты {@link ProductType#VETERINARY_MARKED} * * @param partialRealization частичная реализация */ diff --git a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt index 1658e67f3..daccc8d25 100644 --- a/src/main/java/ru/evotor/framework/receipt/PositionTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/PositionTable.kt @@ -38,6 +38,8 @@ object PositionTable { const val COLUMN_IS_EXCISABLE = "IS_EXCISABLE" const val COLUMN_MARKS_CHECKING_INFO_CHECK_ID = "MARKS_CHECKING_INFO_CHECK_ID" const val COLUMN_MARKS_CHECKING_INFO_CHECK_TIMESTAMP = "MARKS_CHECKING_INFO_CHECK_TIMESTAMP" + const val COLUMN_MARKS_CHECKING_INFO_CHECK_INST = "MARKS_CHECKING_INFO_CHECK_INST" + const val COLUMN_MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION = "MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION" const val COLUMN_IS_MARK_SKIPPED = "IS_MARK_SKIPPED" const val COLUMN_IS_AGE_LIMITED: String = "IS_AGE_LIMITED" const val COLUMN_VETERINARY_DOCUMENT_NUMBER = "VETERINARY_DOCUMENT_NUMBER" diff --git a/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt new file mode 100644 index 000000000..523fc020e --- /dev/null +++ b/src/main/java/ru/evotor/framework/receipt/position/LocalModuleInfo.kt @@ -0,0 +1,39 @@ +package ru.evotor.framework.receipt.position + +import android.os.Bundle +import ru.evotor.IBundlable + +/** + * Данные о локальном модуле ЧЗ + */ +data class LocalModuleInfo( + /** + * Идентификатор экземпляра ЛМ ЧЗ + */ + val inst: String, + /** + * Версия базы ЛМ ЧЗ, на которой осуществлялась проверка + */ + val lmChzDbVersion: String +) : IBundlable { + override fun toBundle(): Bundle = Bundle().apply { + putString(KEY_LM_CHZ_ID, inst) + putString(KEY_LM_CHZ_DB_VERSION, lmChzDbVersion) + } + + companion object { + private const val KEY_LM_CHZ_ID = "LmChzId" + private const val KEY_LM_CHZ_DB_VERSION = "LmChzDbVersion" + + @JvmStatic + fun from(bundle: Bundle?): LocalModuleInfo? = bundle?.let { + val inst = it.getString(KEY_LM_CHZ_ID) ?: return null + val lmChzDbVersion = it.getString(KEY_LM_CHZ_DB_VERSION) ?: return null + + LocalModuleInfo( + inst = inst, + lmChzDbVersion = lmChzDbVersion + ) + } + } +} diff --git a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt index 163a88d99..cb474302e 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/MarksCheckingInfo.kt @@ -15,23 +15,35 @@ data class MarksCheckingInfo( /** * Время онлайн проверки */ - val checkTimestamp: Long + val checkTimestamp: Long, + /** + * Информация о локальном модуле + */ + val localModuleInfo: LocalModuleInfo? ) : IBundlable { override fun toBundle(): Bundle = Bundle().apply { putString(KEY_CHECK_ID, checkId) putLong(KEY_TIMESTAMP, checkTimestamp) + putBundle(KEY_LOCAL_MODULE, localModuleInfo?.toBundle()) } companion object { private const val KEY_CHECK_ID = "CheckId" private const val KEY_TIMESTAMP = "Timestamp" + private const val KEY_LOCAL_MODULE = "LocalModule" @JvmStatic fun from(bundle: Bundle?): MarksCheckingInfo? = bundle?.let { val checkId = it.getString(KEY_CHECK_ID) ?: return null val checkTimestamp = it.optLong(KEY_TIMESTAMP) ?: return null + val localModuleInfoBundle = it.getBundle(KEY_LOCAL_MODULE) + val localModuleInfo = LocalModuleInfo.from(localModuleInfoBundle) - MarksCheckingInfo(checkId = checkId, checkTimestamp = checkTimestamp) + MarksCheckingInfo( + checkId = checkId, + checkTimestamp = checkTimestamp, + localModuleInfo = localModuleInfo + ) } } } diff --git a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt index 8275f91b6..794f0d70d 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/mapper/MarksCheckingInfoMapper.kt @@ -4,6 +4,7 @@ import android.database.Cursor import ru.evotor.framework.optLong import ru.evotor.framework.optString import ru.evotor.framework.receipt.PositionTable +import ru.evotor.framework.receipt.position.LocalModuleInfo import ru.evotor.framework.receipt.position.MarksCheckingInfo object MarksCheckingInfoMapper { @@ -12,9 +13,20 @@ object MarksCheckingInfoMapper { ?: return null val checkTimestamp = cursor.optLong(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_TIMESTAMP) ?: return null + val inst = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_INST) + val lmChzDbVersion = cursor.optString(PositionTable.COLUMN_MARKS_CHECKING_INFO_CHECK_LM_CHZ_DB_VERSION) + val localModuleInfo = if (inst != null && lmChzDbVersion != null) { + LocalModuleInfo( + inst, + lmChzDbVersion + ) + } else { + null + } return MarksCheckingInfo( checkId = checkId, - checkTimestamp = checkTimestamp + checkTimestamp = checkTimestamp, + localModuleInfo = localModuleInfo ) } } From 15f4de111ff5fbd890e6c3bb44233c99f14ba5f1 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 23 Oct 2025 14:49:33 +0500 Subject: [PATCH 40/56] STDEV-23301 --- .../PrintBuyReceiptCommand.kt | 8 +++++--- .../PrintBuybackReceiptCommand.kt | 8 +++++--- .../PrintPaybackReceiptCommand.kt | 9 +++++---- .../print_receipt_command/PrintReceiptCommand.kt | 1 + .../PrintSellReceiptCommand.kt | 9 +++++---- .../core/action/datamapper/PrintReceiptMapper.java | 8 +------- .../action/datamapper/ReceiptHeaderMapper.java | 8 +++++++- .../java/ru/evotor/framework/receipt/Receipt.kt | 12 ++++++------ .../java/ru/evotor/framework/receipt/ReceiptApi.kt | 14 +++++--------- 9 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt index af60a3792..7553feb0c 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt @@ -52,6 +52,8 @@ class PrintBuyReceiptCommand( * @param clientEmail Эл.почта клиента * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта + * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция + * @param receiptFromInternet Признак расчета в сети «Интернет» */ constructor( positions: List, @@ -80,8 +82,7 @@ class PrintBuyReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf(), - receiptFromInternet + hashMapOf() )) }, null, @@ -90,7 +91,8 @@ class PrintBuyReceiptCommand( BigDecimal.ZERO, paymentAddress, paymentPlace, - userUuid + userUuid, + receiptFromInternet ) fun process(context: Context, callback: IntegrationManagerCallback) { diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt index 2b5dc4255..e0aa2a68c 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt @@ -52,6 +52,8 @@ class PrintBuybackReceiptCommand( * @param clientEmail Эл.почта клиента * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта + * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция + * @param receiptFromInternet Признак расчета в сети «Интернет» */ constructor( positions: List, @@ -80,8 +82,7 @@ class PrintBuybackReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf(), - receiptFromInternet + hashMapOf() )) }, null, @@ -90,7 +91,8 @@ class PrintBuybackReceiptCommand( BigDecimal.ZERO, paymentAddress, paymentPlace, - userUuid + userUuid, + receiptFromInternet ) fun process(context: Context, callback: IntegrationManagerCallback) { diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt index 00ca75808..ad93e9148 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.Receipt import java.math.BigDecimal import java.util.* - /** * Команда печати чека возврата. * @param printReceipts Список чеков для печати. @@ -55,6 +54,8 @@ class PrintPaybackReceiptCommand( * @param sellReceiptUuid Идентифиатор чека продажи, на основании которого осуществляется возврат * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта + * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция + * @param receiptFromInternet Признак расчета в сети «Интернет» */ constructor( positions: List, @@ -84,8 +85,7 @@ class PrintPaybackReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf(), - receiptFromInternet + hashMapOf() )) }, null, @@ -95,7 +95,8 @@ class PrintPaybackReceiptCommand( sellReceiptUuid, paymentAddress, paymentPlace, - userUuid + userUuid, + receiptFromInternet ) fun process(context: Context, callback: IntegrationManagerCallback) { diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt index 8fea70b6c..aa955af07 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt @@ -28,6 +28,7 @@ import java.util.* * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция. Если передано null, то будет выбран текущий авторизованный сотрудник. @see ru.evotor.framework.users.UserAPI + * @param receiptFromInternet Признак расчета в сети «Интернет» */ abstract class PrintReceiptCommand( val printReceipts: List, diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt index a2de41a8b..d22ce4325 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt @@ -11,7 +11,6 @@ import ru.evotor.framework.receipt.Receipt import java.math.BigDecimal import java.util.* - /** * Команда печати чека продажи. * @param printReceipts Список чеков для печати. @@ -53,6 +52,8 @@ class PrintSellReceiptCommand( * @param clientEmail Эл.почта клиента * @param paymentAddress Адрес места расчёта * @param paymentPlace Место расчёта + * @param userUuid Идентификатор сотрудника в формате `uuid4`, от лица которого будет произведена операция + * @param receiptFromInternet Признак расчета в сети «Интернет» */ constructor( positions: List, @@ -81,8 +82,7 @@ class PrintSellReceiptCommand( positions.sumByBigDecimal { it.totalWithSubPositionsAndWithoutDocumentDiscount }, payments ), - hashMapOf(), - receiptFromInternet + hashMapOf() )) }, null, @@ -91,7 +91,8 @@ class PrintSellReceiptCommand( BigDecimal.ZERO, paymentAddress, paymentPlace, - userUuid + userUuid, + receiptFromInternet ) fun process(context: Context, callback: IntegrationManagerCallback) { diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java index cc98b3094..470e2a906 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PrintReceiptMapper.java @@ -27,7 +27,6 @@ public final class PrintReceiptMapper { private static final String KEY_CHANGES = "changes"; private static final String KEY_SINGLE_CHANGE = "change"; private static final String KEY_SINGLE_CHANGE_VALUE = "changeValue"; - private static final String KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet"; @Nullable public static Receipt.PrintReceipt from(@Nullable Bundle bundle) { @@ -68,15 +67,12 @@ public static Receipt.PrintReceipt from(@Nullable Bundle bundle) { changes.put(change, BundleUtils.getMoney(completeChangeBundle, KEY_SINGLE_CHANGE_VALUE)); } - boolean receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false); - return new Receipt.PrintReceipt( printGroup, positions, payments, changes, - new HashMap(), - receiptFromInternet + new HashMap() ); } @@ -115,8 +111,6 @@ public static Bundle toBundle(@Nullable Receipt.PrintReceipt printReceipt) { } bundle.putParcelableArrayList(KEY_CHANGES, changes); - bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, Boolean.TRUE.equals(printReceipt.getReceiptFromInternet())); - return bundle; } diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java index 503b1717d..661f74ae0 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java @@ -20,6 +20,7 @@ public final class ReceiptHeaderMapper { private static final String KEY_CLIENT_PHONE = "clientPhone"; private static final String KEY_EXTRA = "extra"; private static final String KEY_SESSION_NUMBER = "sessionNumber"; + private static final String KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet"; @Nullable public static Receipt.Header from(@Nullable Bundle bundle) { @@ -44,6 +45,8 @@ public static Receipt.Header from(@Nullable Bundle bundle) { sessionNumber = bundle.getLong(KEY_SESSION_NUMBER); } + boolean receiptFromInternet = bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false); + return new Receipt.Header( receiptUuid, baseReceiptUuid, @@ -53,7 +56,8 @@ public static Receipt.Header from(@Nullable Bundle bundle) { bundle.getString(KEY_CLIENT_EMAIL), bundle.getString(KEY_CLIENT_PHONE), bundle.getString(KEY_EXTRA), - sessionNumber + sessionNumber, + receiptFromInternet ); } @@ -81,6 +85,8 @@ public static Bundle toBundle(@Nullable Receipt.Header header) { if(header.getSessionNumber() != null) bundle.putLong(KEY_SESSION_NUMBER, header.getSessionNumber()); + bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, header.getReceiptFromInternet()); + return bundle; } diff --git a/src/main/java/ru/evotor/framework/receipt/Receipt.kt b/src/main/java/ru/evotor/framework/receipt/Receipt.kt index 465d71136..b7cd6e3a4 100644 --- a/src/main/java/ru/evotor/framework/receipt/Receipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/Receipt.kt @@ -90,7 +90,11 @@ data class Receipt /** * Номер аппаратной смены. Может быть null для еще незакрытого чека */ - val sessionNumber: Long? + val sessionNumber: Long?, + /** + * Признак расчета в сети «Интернет» + */ + val receiptFromInternet: Boolean ) /** @@ -158,11 +162,7 @@ data class Receipt * * Added on 13.02.2018 */ - val discounts: Map?, - /** - * Признак расчета в сети «Интернет» - */ - val receiptFromInternet: Boolean? + val discounts: Map? ) { /** diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 4ac0ad109..bb9514701 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -128,7 +128,7 @@ object ReceiptApi { else -> Uri.withAppendedPath(RECEIPTS_URI, uuid) } - val (header, receiptFromInternet) = context.contentResolver.query( + val header = context.contentResolver.query( baseUri, null, null, @@ -136,11 +136,7 @@ object ReceiptApi { null )?.use { cursor -> if (cursor.moveToNext()) { - val receiptHeader = createReceiptHeader(cursor) - val receiptFromInternet = cursor.optInt(ReceiptHeaderTable.COLUMN_RECEIPT_FROM_INTERNET)?.let { it == 1 } - receiptHeader?.let { - return@use receiptHeader to receiptFromInternet - } + return@use createReceiptHeader(cursor) } else { return null } @@ -231,8 +227,7 @@ object ReceiptApi { .map { it.position }, payments = payments.mapValues { it.value.value }, changes = payments.mapValues { it.value.change }, - discounts = receiptDiscount, - receiptFromInternet = receiptFromInternet + discounts = receiptDiscount ) ) } @@ -613,7 +608,8 @@ object ReceiptApi { clientEmail = cursor.optString(ReceiptHeaderTable.COLUMN_CLIENT_EMAIL), clientPhone = cursor.optString(ReceiptHeaderTable.COLUMN_CLIENT_PHONE), extra = extra, - sessionNumber = cursor.optLong(ReceiptHeaderTable.COLUMN_SESSION_NUMBER) + sessionNumber = cursor.optLong(ReceiptHeaderTable.COLUMN_SESSION_NUMBER), + receiptFromInternet = cursor.optInt(ReceiptHeaderTable.COLUMN_RECEIPT_FROM_INTERNET)?.let { it == 1 } ?: false ) } From 7d9759e9554d2a3275050fd1ec0f5ff3be078fbe Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 23 Oct 2025 17:48:26 +0500 Subject: [PATCH 41/56] STDEV-23301 --- src/main/java/ru/evotor/framework/receipt/PrintGroup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java index ac06c18c5..f63bf82e2 100644 --- a/src/main/java/ru/evotor/framework/receipt/PrintGroup.java +++ b/src/main/java/ru/evotor/framework/receipt/PrintGroup.java @@ -70,7 +70,7 @@ public class PrintGroup implements Parcelable { /** * Признак расчета в «Интернет». - * @deprecated Используйте {@link ru.evotor.framework.receipt.Receipt.PrintReceipt#receiptFromInternet} + * @deprecated Используйте {@link ru.evotor.framework.receipt.Receipt.Header#receiptFromInternet} */ @Deprecated private boolean receiptFromInternet; From 7fd56708b66b5ed21f353bdeef8fcbda35d25d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Thu, 23 Oct 2025 22:33:09 +0700 Subject: [PATCH 42/56] STDEV-22627 --- src/main/java/ru/evotor/framework/kkt/api/KktApi.kt | 4 ++-- .../kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt index e4766ffdc..68ffaca36 100644 --- a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt +++ b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt @@ -240,7 +240,7 @@ object KktApi { @FiscalRequisite(FiscalTags.BASIS_FOR_CORRECTION) basisForCorrection: String, @FiscalRequisite(FiscalTags.PRESCRIPTION_NUMBER) - prescriptionNumber: String, + prescriptionNumber: String? = null, @FiscalRequisite(FiscalTags.CORRECTABLE_SETTLEMENT_DATE) correctableSettlementDate: Date, amountPaid: BigDecimal, @@ -325,7 +325,7 @@ object KktApi { @FiscalRequisite(FiscalTags.BASIS_FOR_CORRECTION) basisForCorrection: String, @FiscalRequisite(FiscalTags.PRESCRIPTION_NUMBER) - prescriptionNumber: String, + prescriptionNumber: String? = null, @FiscalRequisite(FiscalTags.CORRECTABLE_SETTLEMENT_DATE) correctableSettlementDate: Date, amountPaid: BigDecimal, diff --git a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt index 307bdc687..86c4339f5 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt @@ -52,8 +52,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( getCorrectionType(it), it.getString(KEY_BASIS_FOR_CORRECTION) ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), - it.getString(KEY_PRESCRIPTION_NUMBER) - ?: throw IntegrationLibraryParsingException(CorrectionReceiptRegistrationRequestedEvent::class.java), + it.getString(KEY_PRESCRIPTION_NUMBER), Date(it.getLong(KEY_CORRECTABLE_SETTLEMENT_DATE)), BigDecimal(it.getString(KEY_AMOUNT_PAID)), PaymentType.valueOf( From d9638b9a5d4761dfdad50053b5e240b481f24d88 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Wed, 29 Oct 2025 13:50:06 +0500 Subject: [PATCH 43/56] STDEV-23403 --- .../core/action/datamapper/ReceiptHeaderMapper.java | 9 ++++++++- src/main/java/ru/evotor/framework/receipt/Receipt.kt | 11 ++++++++++- .../java/ru/evotor/framework/receipt/ReceiptApi.kt | 4 +++- .../ru/evotor/framework/receipt/ReceiptHeaderTable.kt | 2 ++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java index 503b1717d..b3a0cee1b 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java @@ -20,6 +20,8 @@ public final class ReceiptHeaderMapper { private static final String KEY_CLIENT_PHONE = "clientPhone"; private static final String KEY_EXTRA = "extra"; private static final String KEY_SESSION_NUMBER = "sessionNumber"; + private static final String KEY_PAYMENT_ADDRESS = "paymentAddress"; + private static final String KEY_PAYMENT_PLACE = "paymentPlace"; @Nullable public static Receipt.Header from(@Nullable Bundle bundle) { @@ -53,7 +55,9 @@ public static Receipt.Header from(@Nullable Bundle bundle) { bundle.getString(KEY_CLIENT_EMAIL), bundle.getString(KEY_CLIENT_PHONE), bundle.getString(KEY_EXTRA), - sessionNumber + sessionNumber, + bundle.getString(KEY_PAYMENT_ADDRESS), + bundle.getString(KEY_PAYMENT_PLACE) ); } @@ -81,6 +85,9 @@ public static Bundle toBundle(@Nullable Receipt.Header header) { if(header.getSessionNumber() != null) bundle.putLong(KEY_SESSION_NUMBER, header.getSessionNumber()); + bundle.putString(KEY_PAYMENT_ADDRESS, header.getPaymentAddress()); + bundle.putString(KEY_PAYMENT_PLACE, header.getPaymentPlace()); + return bundle; } diff --git a/src/main/java/ru/evotor/framework/receipt/Receipt.kt b/src/main/java/ru/evotor/framework/receipt/Receipt.kt index e2757afcd..b243d60b2 100644 --- a/src/main/java/ru/evotor/framework/receipt/Receipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/Receipt.kt @@ -90,7 +90,16 @@ data class Receipt /** * Номер аппаратной смены. Может быть null для еще незакрытого чека */ - val sessionNumber: Long? + val sessionNumber: Long?, + /** + * Адрес места расчёта + */ + var paymentAddress: String?, + + /** + * Место расчёта + */ + var paymentPlace: String? ) /** diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index da80cc565..01f68bd4b 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -607,7 +607,9 @@ object ReceiptApi { clientEmail = cursor.optString(ReceiptHeaderTable.COLUMN_CLIENT_EMAIL), clientPhone = cursor.optString(ReceiptHeaderTable.COLUMN_CLIENT_PHONE), extra = extra, - sessionNumber = cursor.optLong(ReceiptHeaderTable.COLUMN_SESSION_NUMBER) + sessionNumber = cursor.optLong(ReceiptHeaderTable.COLUMN_SESSION_NUMBER), + paymentAddress = cursor.optString(ReceiptHeaderTable.COLUMN_PAYMENT_ADDRESS), + paymentPlace = cursor.optString(ReceiptHeaderTable.COLUMN_PAYMENT_PLACE), ) } diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt index c6492ec9e..0cf426a02 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptHeaderTable.kt @@ -10,4 +10,6 @@ object ReceiptHeaderTable { const val COLUMN_CLIENT_PHONE = "CLIENT_PHONE" const val COLUMN_EXTRA = "EXTRA" const val COLUMN_SESSION_NUMBER = "SESSION_NUMBER" + const val COLUMN_PAYMENT_ADDRESS = "PAYMENT_ADDRESS" + const val COLUMN_PAYMENT_PLACE = "PAYMENT_PLACE" } From 60b2056b5cb58898d873ffcf491569f53449cf23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Wed, 29 Oct 2025 22:30:42 +0700 Subject: [PATCH 44/56] STDEV-22627 --- src/main/java/ru/evotor/Bundles.kt | 4 ++-- .../kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/evotor/Bundles.kt b/src/main/java/ru/evotor/Bundles.kt index 8abf247a5..ee5ee6ca8 100644 --- a/src/main/java/ru/evotor/Bundles.kt +++ b/src/main/java/ru/evotor/Bundles.kt @@ -2,10 +2,10 @@ package ru.evotor import android.os.Bundle -fun Bundle.sanitizeInput(): Bundle { +fun Bundle?.sanitizeInput(): Bundle? { return this } -fun Bundle.sanitizeOutput(): Bundle { +fun Bundle?.sanitizeOutput(): Bundle? { return this } diff --git a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt index 86c4339f5..80342837b 100644 --- a/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt +++ b/src/main/java/ru/evotor/framework/kkt/event/CorrectionReceiptRegistrationRequestedEvent.kt @@ -88,7 +88,7 @@ class CorrectionReceiptRegistrationRequestedEvent internal constructor( putString(KEY_TAXATION_SYSTEM, taxationSystem.name) putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_BASIS_FOR_CORRECTION, basisForCorrection) - putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber) + putString(KEY_PRESCRIPTION_NUMBER, prescriptionNumber ?: "") putLong(KEY_CORRECTABLE_SETTLEMENT_DATE, correctableSettlementDate.time) putString(KEY_AMOUNT_PAID, amountPaid.toString()) putString(KEY_PAYMENT_TYPE, paymentType.name) From 48328c35c6d592ff91a8d0fe09ae89a0f083621c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Wed, 29 Oct 2025 22:31:38 +0700 Subject: [PATCH 45/56] STDEV-22021 --- .../ru/evotor/framework/kkt/api/KktApi.kt | 53 ++++++++++++++++++- .../framework/kkt/provider/KktContract.kt | 4 ++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt index 68ffaca36..f3189caf7 100644 --- a/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt +++ b/src/main/java/ru/evotor/framework/kkt/api/KktApi.kt @@ -3,18 +3,20 @@ package ru.evotor.framework.kkt.api import android.content.Context import android.database.Cursor import android.net.Uri -import ru.evotor.framework.* import ru.evotor.framework.core.IntegrationLibraryMappingException import ru.evotor.framework.core.IntegrationManagerCallback import ru.evotor.framework.core.startIntegrationService import ru.evotor.framework.counterparties.collaboration.agent_scheme.Agent import ru.evotor.framework.counterparties.collaboration.agent_scheme.Subagent +import ru.evotor.framework.getMoney import ru.evotor.framework.kkt.FfdVersion import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags import ru.evotor.framework.kkt.event.CorrectionReceiptRegistrationRequestedEvent import ru.evotor.framework.kkt.event.handler.service.KktBacksideIntegrationService import ru.evotor.framework.kkt.provider.KktContract +import ru.evotor.framework.kkt.provider.KktContract.COLUMN_PAYMENT_ADDRESS +import ru.evotor.framework.kkt.provider.KktContract.COLUMN_PAYMENT_PLACE import ru.evotor.framework.kkt.provider.KktContract.COLUMN_SESSION_STATUS_CLOSE_DATE import ru.evotor.framework.kkt.provider.KktContract.COLUMN_SESSION_STATUS_IS_EXPIRED import ru.evotor.framework.kkt.provider.KktContract.COLUMN_SESSION_STATUS_IS_OPEN @@ -23,6 +25,7 @@ import ru.evotor.framework.kkt.provider.KktContract.COLUMN_SESSION_STATUS_SESSIO import ru.evotor.framework.optBoolean import ru.evotor.framework.optInt import ru.evotor.framework.optList +import ru.evotor.framework.optLong import ru.evotor.framework.optString import ru.evotor.framework.payment.PaymentType import ru.evotor.framework.receipt.SettlementType @@ -30,7 +33,7 @@ import ru.evotor.framework.receipt.TaxationSystem import ru.evotor.framework.receipt.correction.CorrectionType import ru.evotor.framework.receipt.position.VatRate import java.math.BigDecimal -import java.util.* +import java.util.Date /** * Интерфейс для работы с кассой. @@ -388,6 +391,12 @@ object KktApi { return getKktSessionInfo(context, uri) } + @JvmStatic + fun getPaymentLocation(context: Context): Location? { + val uri = Uri.parse("${KktContract.BASE_URI}/${KktContract.PATH_KKT_PAYMENT_LOCATION}") + return getLocationInfo(context, uri) + } + private fun getValue(context: Context, valueName: String, parser: (Cursor, String) -> T?): T? { return context.contentResolver.query( KktContract.BASE_URI, @@ -463,6 +472,41 @@ object KktApi { ) } + private fun getLocationInfo( + context: Context, + uri: Uri + ): Location? { + val cursor = context.contentResolver.query( + uri, + arrayOf( + COLUMN_PAYMENT_ADDRESS, + COLUMN_PAYMENT_PLACE + ), + null, + null, + null + ) + + cursor ?: return null + + cursor.use { + return mapCursorToLocation(it) + } + } + + private fun mapCursorToLocation(cursor: Cursor): Location? { + if (!cursor.moveToFirst()) { + return null + } + val paymentLocation: String? = cursor.optString(COLUMN_PAYMENT_ADDRESS) + val paymentPlace: String? = cursor.optString(COLUMN_PAYMENT_PLACE) + + return Location( + paymentLocation, + paymentPlace + ) + } + data class KktSessionInfo( val isOpen: Boolean?, val isExpired: Boolean?, @@ -470,4 +514,9 @@ object KktApi { val closeDate: Date?, val sessionNumber: Int? ) + + data class Location( + val paymentAddress: String? = null, + val paymentPlace: String? = null + ) } diff --git a/src/main/java/ru/evotor/framework/kkt/provider/KktContract.kt b/src/main/java/ru/evotor/framework/kkt/provider/KktContract.kt index fd503cfbb..01e2875f5 100644 --- a/src/main/java/ru/evotor/framework/kkt/provider/KktContract.kt +++ b/src/main/java/ru/evotor/framework/kkt/provider/KktContract.kt @@ -44,4 +44,8 @@ object KktContract { const val PATH_KKT_COUNTERS = ".Counters" const val COLUMN_CURRENT_CASH_SUM = "CURRENT_CASH_SUM" + + const val PATH_KKT_PAYMENT_LOCATION = ".Location" + const val COLUMN_PAYMENT_ADDRESS = "PAYMENT_ADDRESS" + const val COLUMN_PAYMENT_PLACE = "PAYMENT_PLACE" } From c0413b70d5ae57352222654b3fdab9f4ef0bfc21 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Fri, 31 Oct 2025 18:38:27 +0500 Subject: [PATCH 46/56] STDEV-23408 --- src/main/java/ru/evotor/framework/BundleExt.kt | 7 +++++++ .../command/print_receipt_command/PrintReceiptCommand.kt | 7 ++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/evotor/framework/BundleExt.kt b/src/main/java/ru/evotor/framework/BundleExt.kt index 897b871f4..bd9283c5a 100644 --- a/src/main/java/ru/evotor/framework/BundleExt.kt +++ b/src/main/java/ru/evotor/framework/BundleExt.kt @@ -56,3 +56,10 @@ internal fun > Bundle.optEnum(key: String, values: Array): T? = internal inline fun Bundle.optSerializable(key: String): T? = this.getSerializable(key)?.let { value -> if (value is T) value else null } +internal fun Bundle.optBoolean(key: String): Boolean? { + return if (this.containsKey(key)) { + this.getBoolean(key) + } else { + null + } +} diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt index aa955af07..daebdea22 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.IntegrationManagerImpl import ru.evotor.framework.core.action.datamapper.PrintReceiptMapper import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra import ru.evotor.framework.getMoney +import ru.evotor.framework.optBoolean import ru.evotor.framework.payment.PaymentType import ru.evotor.framework.receipt.Payment import ru.evotor.framework.receipt.Receipt @@ -68,7 +69,7 @@ abstract class PrintReceiptCommand( bundle.putString(KEY_PAYMENT_ADDRESS, paymentAddress) bundle.putString(KEY_PAYMENT_PLACE, paymentPlace) bundle.putString(KEY_USER_UUID, userUuid) - bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet ?: false) + receiptFromInternet?.let { bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, it) } return bundle } @@ -125,8 +126,8 @@ abstract class PrintReceiptCommand( return bundle.getString(KEY_USER_UUID, null) } - internal fun getReceiptFromInternet(bundle: Bundle): Boolean { - return bundle.getBoolean(KEY_RECEIPT_FROM_INTERNET, false) + internal fun getReceiptFromInternet(bundle: Bundle): Boolean? { + return bundle.optBoolean(KEY_RECEIPT_FROM_INTERNET) } internal fun calculateChanges(sum: BigDecimal, payments: List): Map { From 4464d523c5f5213f2109d01c29e037e6480f26c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Mon, 10 Nov 2025 16:38:27 +0700 Subject: [PATCH 47/56] STDEV-0 fix after merge --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 81f8c3699..9391ac9df 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,7 @@ apply plugin: 'maven-publish' apply plugin: 'org.jetbrains.dokka' android { + namespace = "ru.evotor.integrations" def version = 37 compileSdk 30 From b51608556b569598a6d50f416ac3628ca7e85c20 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Tue, 11 Nov 2025 12:51:49 +0500 Subject: [PATCH 48/56] STDEV-23471 --- .../OpenCorrectionIncomeReceiptCommand.kt | 13 ++++++++++++- .../OpenCorrectionOutcomeReceiptCommand.kt | 13 ++++++++++++- .../OpenCorrectionReturnIncomeReceiptCommand.kt | 13 ++++++++++++- .../OpenCorrectionReturnOutcomeReceiptCommand.kt | 13 ++++++++++++- .../PrintCorrectionIncomeReceiptCommand.kt | 10 ++++++++-- .../PrintCorrectionOutcomeReceiptCommand.kt | 10 ++++++++-- .../PrintCorrectionReturnIncomeReceiptCommand.kt | 10 ++++++++-- .../PrintCorrectionReturnOutcomeReceiptCommand.kt | 10 ++++++++-- 8 files changed, 80 insertions(+), 12 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt index 918be2f86..8a9466ed9 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionIncomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.ChangesMapper import ru.evotor.framework.core.action.datamapper.ChangesMapper.toBundle import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags @@ -27,6 +28,7 @@ import java.util.* * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) * @param setPurchaserContactData Контактные данные покупателя, на которые будет отправлен чек + * @param setInternetRequisites Интернет-реквизиты чека */ class OpenCorrectionIncomeReceiptCommand( val changes: List, @@ -39,7 +41,8 @@ class OpenCorrectionIncomeReceiptCommand( val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) val fiscalSignOfIncorrectReceipt: String? = null, - val setPurchaserContactData: SetPurchaserContactData? = null + val setPurchaserContactData: SetPurchaserContactData? = null, + val setInternetRequisites: SetInternetRequisites? = null ) : IBundlable { companion object { const val NAME = "evo.v2.receipt.correction.income.openReceipt" @@ -50,6 +53,7 @@ class OpenCorrectionIncomeReceiptCommand( private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" private const val KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData" + private const val KEY_RECEIPT_SET_INTERNET_REQUISITES: String = "setInternetRequisites" @JvmStatic fun create(bundle: Bundle?): OpenCorrectionIncomeReceiptCommand? { @@ -72,6 +76,9 @@ class OpenCorrectionIncomeReceiptCommand( it.getBundle( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA ) + ), + setInternetRequisites = SetInternetRequisites.from( + it.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES) ) ) } @@ -106,6 +113,10 @@ class OpenCorrectionIncomeReceiptCommand( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData?.toBundle() ) + putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites?.toBundle() + ) } } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt index d6a439082..912d6a61f 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionOutcomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.ChangesMapper import ru.evotor.framework.core.action.datamapper.ChangesMapper.toBundle import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags @@ -27,6 +28,7 @@ import java.util.* * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) * @param setPurchaserContactData Контактные данные покупателя, на которые будет отправлен чек + * @param setInternetRequisites Интернет-реквизиты чека */ class OpenCorrectionOutcomeReceiptCommand( val changes: List, @@ -39,7 +41,8 @@ class OpenCorrectionOutcomeReceiptCommand( val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) val fiscalSignOfIncorrectReceipt: String? = null, - val setPurchaserContactData: SetPurchaserContactData? = null + val setPurchaserContactData: SetPurchaserContactData? = null, + val setInternetRequisites: SetInternetRequisites? = null ) : IBundlable { companion object { const val NAME = "evo.v2.receipt.correction.outcome.openReceipt" @@ -50,6 +53,7 @@ class OpenCorrectionOutcomeReceiptCommand( private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" private const val KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData" + private const val KEY_RECEIPT_SET_INTERNET_REQUISITES: String = "setInternetRequisites" @JvmStatic fun create(bundle: Bundle?): OpenCorrectionOutcomeReceiptCommand? { @@ -72,6 +76,9 @@ class OpenCorrectionOutcomeReceiptCommand( it.getBundle( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA ) + ), + setInternetRequisites = SetInternetRequisites.from( + it.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES) ) ) } @@ -106,6 +113,10 @@ class OpenCorrectionOutcomeReceiptCommand( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData?.toBundle() ) + putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites?.toBundle() + ) } } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt index 49f7b649d..6452b46e0 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnIncomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.ChangesMapper import ru.evotor.framework.core.action.datamapper.ChangesMapper.toBundle import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags @@ -27,6 +28,7 @@ import java.util.* * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) * @param setPurchaserContactData Контактные данные покупателя, на которые будет отправлен чек + * @param setInternetRequisites Интернет-реквизиты чека */ class OpenCorrectionReturnIncomeReceiptCommand( val changes: List, @@ -39,7 +41,8 @@ class OpenCorrectionReturnIncomeReceiptCommand( val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) val fiscalSignOfIncorrectReceipt: String? = null, - val setPurchaserContactData: SetPurchaserContactData? = null + val setPurchaserContactData: SetPurchaserContactData? = null, + val setInternetRequisites: SetInternetRequisites? = null ) : IBundlable { companion object { const val NAME = "evo.v2.receipt.correction.return.income.openReceipt" @@ -50,6 +53,7 @@ class OpenCorrectionReturnIncomeReceiptCommand( private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" private const val KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData" + private const val KEY_RECEIPT_SET_INTERNET_REQUISITES: String = "setInternetRequisites" @JvmStatic fun create(bundle: Bundle?): OpenCorrectionReturnIncomeReceiptCommand? { @@ -72,6 +76,9 @@ class OpenCorrectionReturnIncomeReceiptCommand( it.getBundle( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA ) + ), + setInternetRequisites = SetInternetRequisites.from( + it.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES) ) ) } @@ -106,6 +113,10 @@ class OpenCorrectionReturnIncomeReceiptCommand( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData?.toBundle() ) + putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites?.toBundle() + ) } } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt index 94e4212d6..752dc2207 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/open_receipt_command/OpenCorrectionReturnOutcomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.ChangesMapper import ru.evotor.framework.core.action.datamapper.ChangesMapper.toBundle import ru.evotor.framework.core.action.event.receipt.changes.position.PositionAdd import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetInternetRequisites import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetPurchaserContactData import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags @@ -27,6 +28,7 @@ import java.util.* * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) * @param setPurchaserContactData Контактные данные покупателя, на которые будет отправлен чек + * @param setInternetRequisites Интернет-реквизиты чека */ class OpenCorrectionReturnOutcomeReceiptCommand( val changes: List, @@ -39,7 +41,8 @@ class OpenCorrectionReturnOutcomeReceiptCommand( val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) val fiscalSignOfIncorrectReceipt: String? = null, - val setPurchaserContactData: SetPurchaserContactData? = null + val setPurchaserContactData: SetPurchaserContactData? = null, + val setInternetRequisites: SetInternetRequisites? = null ) : IBundlable { companion object { const val NAME = "evo.v2.receipt.correction.return.outcome.openReceipt" @@ -50,6 +53,7 @@ class OpenCorrectionReturnOutcomeReceiptCommand( private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" private const val KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA = "setPurchaserContactData" + private const val KEY_RECEIPT_SET_INTERNET_REQUISITES: String = "setInternetRequisites" @JvmStatic fun create(bundle: Bundle?): OpenCorrectionReturnOutcomeReceiptCommand? { @@ -72,6 +76,9 @@ class OpenCorrectionReturnOutcomeReceiptCommand( it.getBundle( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA ) + ), + setInternetRequisites = SetInternetRequisites.from( + it.getBundle(KEY_RECEIPT_SET_INTERNET_REQUISITES) ) ) } @@ -106,6 +113,10 @@ class OpenCorrectionReturnOutcomeReceiptCommand( KEY_RECEIPT_SET_PURCHASER_CONTACT_DATA, setPurchaserContactData?.toBundle() ) + putBundle( + KEY_RECEIPT_SET_INTERNET_REQUISITES, + setInternetRequisites?.toBundle() + ) } } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt index db05c4a3d..6265c8e8a 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionIncomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.PrintReceiptMapper import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags +import ru.evotor.framework.optBoolean import ru.evotor.framework.receipt.Receipt import ru.evotor.framework.receipt.correction.CorrectionType import java.math.BigDecimal @@ -31,6 +32,7 @@ import java.util.* * @param correctionType Тип коррекции (ТЕГ 1173) * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintCorrectionIncomeReceiptCommand( val printReceipts: List, @@ -48,7 +50,8 @@ class PrintCorrectionIncomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.PRESCRIPTION_NUMBER) val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) - val fiscalSignOfIncorrectReceipt: String? = null + val fiscalSignOfIncorrectReceipt: String? = null, + val receiptFromInternet: Boolean? = null ) : IBundlable { fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl @@ -88,6 +91,7 @@ class PrintCorrectionIncomeReceiptCommand( putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_PRESCRIPTION, prescription) putString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT, fiscalSignOfIncorrectReceipt) + receiptFromInternet?.let { putBoolean(KEY_RECEIPT_FROM_INTERNET, it) } } } @@ -106,6 +110,7 @@ class PrintCorrectionIncomeReceiptCommand( private const val KEY_CORRECTION_TYPE = "correctionType" private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" @JvmStatic fun create(bundle: Bundle?): PrintCorrectionIncomeReceiptCommand? { @@ -122,7 +127,8 @@ class PrintCorrectionIncomeReceiptCommand( correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), correctionType = CorrectionType.valueOf(it.getString(KEY_CORRECTION_TYPE) as String), prescription = it.getString(KEY_PRESCRIPTION), - fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT) + fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT), + receiptFromInternet = it.optBoolean(KEY_RECEIPT_FROM_INTERNET) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt index 12523b01b..7160d8e16 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionOutcomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.PrintReceiptMapper import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags +import ru.evotor.framework.optBoolean import ru.evotor.framework.receipt.Receipt import ru.evotor.framework.receipt.correction.CorrectionType import java.math.BigDecimal @@ -31,6 +32,7 @@ import java.util.* * @param correctionType Тип коррекции (ТЕГ 1173) * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintCorrectionOutcomeReceiptCommand( val printReceipts: List, @@ -48,7 +50,8 @@ class PrintCorrectionOutcomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.PRESCRIPTION_NUMBER) val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) - val fiscalSignOfIncorrectReceipt: String? = null + val fiscalSignOfIncorrectReceipt: String? = null, + val receiptFromInternet: Boolean? = null ) : IBundlable { fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl @@ -88,6 +91,7 @@ class PrintCorrectionOutcomeReceiptCommand( putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_PRESCRIPTION, prescription) putString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT, fiscalSignOfIncorrectReceipt) + receiptFromInternet?.let { putBoolean(KEY_RECEIPT_FROM_INTERNET, it) } } } @@ -106,6 +110,7 @@ class PrintCorrectionOutcomeReceiptCommand( private const val KEY_CORRECTION_TYPE = "correctionType" private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" @JvmStatic fun create(bundle: Bundle?): PrintCorrectionOutcomeReceiptCommand? { @@ -122,7 +127,8 @@ class PrintCorrectionOutcomeReceiptCommand( correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), correctionType = CorrectionType.valueOf(it.getString(KEY_CORRECTION_TYPE) as String), prescription = it.getString(KEY_PRESCRIPTION), - fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT) + fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT), + receiptFromInternet = it.optBoolean(KEY_RECEIPT_FROM_INTERNET) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt index a2520cd65..bfa7e05c6 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnIncomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.PrintReceiptMapper import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags +import ru.evotor.framework.optBoolean import ru.evotor.framework.receipt.Receipt import ru.evotor.framework.receipt.correction.CorrectionType import java.math.BigDecimal @@ -31,6 +32,7 @@ import java.util.* * @param correctionType Тип коррекции (ТЕГ 1173) * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintCorrectionReturnIncomeReceiptCommand( val printReceipts: List, @@ -48,7 +50,8 @@ class PrintCorrectionReturnIncomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.PRESCRIPTION_NUMBER) val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) - val fiscalSignOfIncorrectReceipt: String? = null + val fiscalSignOfIncorrectReceipt: String? = null, + val receiptFromInternet: Boolean? = null ) : IBundlable { fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl @@ -88,6 +91,7 @@ class PrintCorrectionReturnIncomeReceiptCommand( putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_PRESCRIPTION, prescription) putString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT, fiscalSignOfIncorrectReceipt) + receiptFromInternet?.let { putBoolean(KEY_RECEIPT_FROM_INTERNET, it) } } } @@ -106,6 +110,7 @@ class PrintCorrectionReturnIncomeReceiptCommand( private const val KEY_CORRECTION_TYPE = "correctionType" private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" @JvmStatic fun create(bundle: Bundle?): PrintCorrectionReturnIncomeReceiptCommand? { @@ -122,7 +127,8 @@ class PrintCorrectionReturnIncomeReceiptCommand( correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), correctionType = CorrectionType.valueOf(it.getString(KEY_CORRECTION_TYPE) as String), prescription = it.getString(KEY_PRESCRIPTION), - fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT) + fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT), + receiptFromInternet = it.optBoolean(KEY_RECEIPT_FROM_INTERNET) ) } } diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt index 695570e50..77f3efa72 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintCorrectionReturnOutcomeReceiptCommand.kt @@ -12,6 +12,7 @@ import ru.evotor.framework.core.action.datamapper.PrintReceiptMapper import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra import ru.evotor.framework.kkt.FiscalRequisite import ru.evotor.framework.kkt.FiscalTags +import ru.evotor.framework.optBoolean import ru.evotor.framework.receipt.Receipt import ru.evotor.framework.receipt.correction.CorrectionType import java.math.BigDecimal @@ -31,6 +32,7 @@ import java.util.* * @param correctionType Тип коррекции (ТЕГ 1173) * @param prescription Номер предписания налогового органа (ТЕГ 1179) * @param fiscalSignOfIncorrectReceipt Фискальный признак ошибочного чека (ТЕГ 1192) + * @param receiptFromInternet Признак расчета в сети «Интернет» */ class PrintCorrectionReturnOutcomeReceiptCommand( val printReceipts: List, @@ -48,7 +50,8 @@ class PrintCorrectionReturnOutcomeReceiptCommand( @FiscalRequisite(tag = FiscalTags.PRESCRIPTION_NUMBER) val prescription: String? = null, @FiscalRequisite(tag = FiscalTags.ADDITIONAL_REQUISITE_1192) - val fiscalSignOfIncorrectReceipt: String? = null + val fiscalSignOfIncorrectReceipt: String? = null, + val receiptFromInternet: Boolean? = null ) : IBundlable { fun process(context: Context, callback: IntegrationManagerCallback) { IntegrationManagerImpl @@ -88,6 +91,7 @@ class PrintCorrectionReturnOutcomeReceiptCommand( putString(KEY_CORRECTION_TYPE, correctionType.name) putString(KEY_PRESCRIPTION, prescription) putString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT, fiscalSignOfIncorrectReceipt) + receiptFromInternet?.let { putBoolean(KEY_RECEIPT_FROM_INTERNET, it) } } } @@ -106,6 +110,7 @@ class PrintCorrectionReturnOutcomeReceiptCommand( private const val KEY_CORRECTION_TYPE = "correctionType" private const val KEY_PRESCRIPTION = "prescription" private const val KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT = "fiscalSignOfIncorrectReceipt" + private const val KEY_RECEIPT_FROM_INTERNET = "receiptFromInternet" @JvmStatic fun create(bundle: Bundle?): PrintCorrectionReturnOutcomeReceiptCommand? { @@ -122,7 +127,8 @@ class PrintCorrectionReturnOutcomeReceiptCommand( correctionDate = Date(it.getLong(KEY_CORRECTION_DATE)), correctionType = CorrectionType.valueOf(it.getString(KEY_CORRECTION_TYPE) as String), prescription = it.getString(KEY_PRESCRIPTION), - fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT) + fiscalSignOfIncorrectReceipt = it.getString(KEY_FISCAL_SIGN_OF_INCORRECT_RECEIPT), + receiptFromInternet = it.optBoolean(KEY_RECEIPT_FROM_INTERNET) ) } } From f9fe82b83185db9cb339185e163620308857811d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Mon, 17 Nov 2025 20:35:26 +0700 Subject: [PATCH 49/56] STDEV-0 --- .../print_receipt_command/PrintBuyReceiptCommand.kt | 8 +++++--- .../PrintBuybackReceiptCommand.kt | 8 ++++---- .../PrintPaybackReceiptCommand.kt | 5 +++-- .../print_receipt_command/PrintSellReceiptCommand.kt | 2 +- .../core/action/datamapper/ReceiptHeaderMapper.java | 4 ++-- .../receipt/changes/receipt/SetInternetRequisites.kt | 2 -- .../result/PaymentDelegatorForwardedEventResult.kt | 12 +++++------- .../ru/evotor/framework/navigation/NavigationApi.kt | 2 +- src/main/java/ru/evotor/framework/receipt/Receipt.kt | 1 - .../java/ru/evotor/framework/receipt/ReceiptApi.kt | 10 +++++----- .../service/CorrectionOutcomeIntegrationService.kt | 2 +- .../CorrectionReturnOutcomeIntegrationService.kt | 2 +- 12 files changed, 28 insertions(+), 30 deletions(-) diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt index 24434b9ad..2ace25b9b 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuyReceiptCommand.kt @@ -32,7 +32,7 @@ class PrintBuyReceiptCommand( paymentAddress: String? = null, paymentPlace: String? = null, userUuid: String? = null, - receiptFromInternet: Boolean? = null + receiptFromInternet: Boolean? = null ) : PrintReceiptCommand( printReceipts = printReceipts, extra = extra, @@ -42,7 +42,8 @@ class PrintBuyReceiptCommand( paymentAddress = paymentAddress, paymentPlace = paymentPlace, userUuid = userUuid, - receiptFromInternet = receiptFromInternet) { + receiptFromInternet = receiptFromInternet + ) { /** * @param positions Список позиций * @param payments Список оплат @@ -61,7 +62,8 @@ class PrintBuyReceiptCommand( paymentAddress: String? = null, paymentPlace: String? = null, userUuid: String? = null, - receiptFromInternet: Boolean? = null) : this( + receiptFromInternet: Boolean? = null + ) : this( ArrayList().apply { add( Receipt.PrintReceipt( diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt index b4be98222..73a5b0561 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintBuybackReceiptCommand.kt @@ -43,7 +43,7 @@ class PrintBuybackReceiptCommand( paymentPlace = paymentPlace, userUuid = userUuid, receiptFromInternet = receiptFromInternet -) { + ) { /** * @param positions Список позиций * @param payments Список оплат @@ -61,9 +61,9 @@ class PrintBuybackReceiptCommand( clientEmail: String?, paymentAddress: String? = null, paymentPlace: String? = null, - userUuid: String? = null - , - receiptFromInternet: Boolean? = null) : this( + userUuid: String? = null, + receiptFromInternet: Boolean? = null + ) : this( ArrayList().apply { add( Receipt.PrintReceipt( diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt index 11c7db769..f4c64750a 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintPaybackReceiptCommand.kt @@ -44,7 +44,7 @@ class PrintPaybackReceiptCommand( paymentPlace = paymentPlace, userUuid = userUuid, receiptFromInternet = receiptFromInternet -) { + ) { /** * @param positions Список позиций * @param payments Список оплат @@ -65,7 +65,8 @@ class PrintPaybackReceiptCommand( paymentAddress: String? = null, paymentPlace: String? = null, userUuid: String? = null, - receiptFromInternet: Boolean? = null) : this( + receiptFromInternet: Boolean? = null + ) : this( ArrayList().apply { add( Receipt.PrintReceipt( diff --git a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt index ae3b48564..914f2d743 100644 --- a/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt +++ b/src/main/java/ru/evotor/framework/core/action/command/print_receipt_command/PrintSellReceiptCommand.kt @@ -43,7 +43,7 @@ class PrintSellReceiptCommand( paymentPlace = paymentPlace, userUuid = userUuid, receiptFromInternet = receiptFromInternet -) { + ) { /** * @param positions Список позиций * @param payments Список оплат diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java index bd050b94e..23798f866 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/ReceiptHeaderMapper.java @@ -43,7 +43,7 @@ public static Receipt.Header from(@Nullable Bundle bundle) { } Long sessionNumber = null; - if(bundle.containsKey(KEY_SESSION_NUMBER)) { + if (bundle.containsKey(KEY_SESSION_NUMBER)) { sessionNumber = bundle.getLong(KEY_SESSION_NUMBER); } @@ -86,7 +86,7 @@ public static Bundle toBundle(@Nullable Receipt.Header header) { bundle.putString(KEY_CLIENT_EMAIL, header.getClientEmail()); bundle.putString(KEY_EXTRA, header.getExtra()); - if(header.getSessionNumber() != null) + if (header.getSessionNumber() != null) bundle.putLong(KEY_SESSION_NUMBER, header.getSessionNumber()); bundle.putBoolean(KEY_RECEIPT_FROM_INTERNET, header.getReceiptFromInternet()); diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt index 71b7fd02b..792dd6bcf 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetInternetRequisites.kt @@ -13,7 +13,6 @@ data class SetInternetRequisites( val receiptFromInternet: Boolean, val paymentPlace: String ) : IChange { - override fun toBundle(): Bundle { return Bundle().apply { putBoolean(KEY_RECEIPT_FROM_INTERNET, receiptFromInternet) @@ -47,4 +46,3 @@ data class SetInternetRequisites( } } } - diff --git a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt index 4462f7d25..b894e41a5 100644 --- a/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt +++ b/src/main/java/ru/evotor/framework/core/action/event/receipt/payment/combined/result/PaymentDelegatorForwardedEventResult.kt @@ -2,12 +2,12 @@ package ru.evotor.framework.core.action.event.receipt.payment.combined.result import android.os.Bundle import ru.evotor.framework.component.PaymentDelegator -import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra import ru.evotor.framework.core.action.datamapper.PaymentDelegatorMapper +import ru.evotor.framework.core.action.event.receipt.changes.receipt.SetExtra class PaymentDelegatorForwardedEventResult( - val paymentDelegator: PaymentDelegator, - extra: SetExtra? + val paymentDelegator: PaymentDelegator, + extra: SetExtra? ) : PaymentDelegatorEventResult(ResultType.FORWARDED, extra) { override fun toBundle(): Bundle { val result = super.toBundle() @@ -26,13 +26,11 @@ class PaymentDelegatorForwardedEventResult( ?.let { PaymentDelegator.from(it) } if (paymentDelegator != null) { return PaymentDelegatorForwardedEventResult( - paymentDelegator, - SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)) + paymentDelegator, + SetExtra.from(bundle.getBundle(KEY_RECEIPT_EXTRA)) ) } return null } } } - - diff --git a/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt b/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt index 7070ff3dc..b3a1cfd0f 100644 --- a/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt +++ b/src/main/java/ru/evotor/framework/navigation/NavigationApi.kt @@ -155,7 +155,7 @@ object NavigationApi { @JvmStatic fun createIntentForSellReceiptPayment( shouldLockScreen: Boolean = false, - context: Context, + context: Context ): Intent { return Intent(ACTION_PAYMENT_SELL).apply { putExtra(EXTRA_SHOULD_LOCK_SCREEN, shouldLockScreen) diff --git a/src/main/java/ru/evotor/framework/receipt/Receipt.kt b/src/main/java/ru/evotor/framework/receipt/Receipt.kt index 49d6525d7..476da59e3 100644 --- a/src/main/java/ru/evotor/framework/receipt/Receipt.kt +++ b/src/main/java/ru/evotor/framework/receipt/Receipt.kt @@ -94,7 +94,6 @@ data class Receipt( * Адрес места расчёта */ var paymentAddress: String?, - /** * Место расчёта */ diff --git a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt index 708b0153a..35d459fe5 100644 --- a/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt +++ b/src/main/java/ru/evotor/framework/receipt/ReceiptApi.kt @@ -222,13 +222,13 @@ object ReceiptApi { ?: HashMap() printDocuments.add( Receipt.PrintReceipt( - printGroup= printGroup, - positions =getPositionResults + printGroup = printGroup, + positions = getPositionResults .filter { it.printGroup == printGroup } .map { it.position }, - payments =payments.mapValues { it.value.value }, - changes =payments.mapValues { it.value.change }, - discounts =receiptDiscount + payments = payments.mapValues { it.value.value }, + changes = payments.mapValues { it.value.change }, + discounts = receiptDiscount ) ) } diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt index 52133c07f..42d4dc820 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionOutcomeIntegrationService.kt @@ -47,7 +47,7 @@ abstract class CorrectionOutcomeIntegrationService : IntegrationServiceV2() { * * @see "Добавление в чек адреса и места расчёта" */ - @RequiresIntentAction(BuyIntegrationService.ACTION_DELIVERY_REQUISITES) + @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null diff --git a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt index 56d43cb8b..21be43f8b 100644 --- a/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt +++ b/src/main/java/ru/evotor/framework/receipt/formation/event/handler/service/CorrectionReturnOutcomeIntegrationService.kt @@ -42,7 +42,7 @@ abstract class CorrectionReturnOutcomeIntegrationService : IntegrationServiceV2( * * @see "Добавление в чек адреса и места расчёта" */ - @RequiresIntentAction(BuyIntegrationService.ACTION_DELIVERY_REQUISITES) + @RequiresIntentAction(ACTION_DELIVERY_REQUISITES) open fun handleEvent(event: ReturnDeliveryRequisitesForReceiptRequestedEvent): ReturnDeliveryRequisitesForReceiptRequestedEvent.Result? = null companion object { From 6d66ad19a7a8243eeaba2260876c49507f8ffb8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Mon, 17 Nov 2025 21:27:25 +0700 Subject: [PATCH 50/56] =?UTF-8?q?STDEV-0=20=D0=9D=D0=94=D0=A1=2022%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/evotor/framework/features/FeaturesApi.kt | 7 +++++++ .../framework/features/provider/FeaturesContract.kt | 1 + .../java/ru/evotor/framework/receipt/TaxNumber.kt | 12 +++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt index ee9a3da3d..c1bd7e62d 100644 --- a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt +++ b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt @@ -333,4 +333,11 @@ object FeaturesApi { * @return `true` если функция активна; `false` если функция не активна. */ fun isVegetableOilMarkActive(context: Context) = isFeatureActive(context, FeaturesContract.PATH_VEGETABLE_OIL_MARK) + + /** + * Проверяет, активна ли функция "НДС 22%" на данном терминале + * + * @return `true` если функция активна; `false` если функция не активна. + */ + fun isVat22Active(context: Context) = isFeatureActive(context, FeaturesContract.VAT22) } diff --git a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt index 2d92bec95..0907af27f 100644 --- a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt +++ b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt @@ -51,6 +51,7 @@ object FeaturesContract { const val PATH_VETERINARY_MARK = "veterinary_mark" const val PATH_PET_FOOD_MARK = "pet_food_marked" const val PATH_VEGETABLE_OIL_MARK = "vegetable_oil_marked" + const val VAT22 = "vat22" const val COLUMN_IS_ACTIVE = "is_active" } diff --git a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt index 9b64ab374..806d8b688 100644 --- a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt +++ b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt @@ -63,5 +63,15 @@ enum class TaxNumber(val value: BigDecimal) { /** * Расчётная ставка 7%. */ - VAT_7_107(BigDecimal.valueOf(7)) + VAT_7_107(BigDecimal.valueOf(7)), + + /** + * Основная ставка 22%. + */ + VAT_22(BigDecimal.valueOf(22)), + + /** + * Расчётная ставка 22%. + */ + VAT_22_122(BigDecimal.valueOf(22)) } From c623f18b3a750979c6e26b236d060fb7d2d513a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Wed, 26 Nov 2025 15:27:49 +0700 Subject: [PATCH 51/56] STDEV-23567 version up --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 9391ac9df..c99dae9ab 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'org.jetbrains.dokka' android { namespace = "ru.evotor.integrations" - def version = 37 + def version = 38 compileSdk 30 From 2cf0789fed8e5493bde3dcc358f8d8550664c6dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=B4=D0=B8=D0=BC=20=D0=91=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D1=87=D0=B5=D0=B2?= Date: Wed, 26 Nov 2025 15:44:13 +0700 Subject: [PATCH 52/56] STDEV-23511 --- src/main/java/ru/evotor/framework/receipt/position/VatRate.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/receipt/position/VatRate.kt b/src/main/java/ru/evotor/framework/receipt/position/VatRate.kt index d28978857..4b01f69cc 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/VatRate.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/VatRate.kt @@ -12,5 +12,7 @@ enum class VatRate { VAT_5, VAT_7, VAT_5_105, - VAT_7_107 + VAT_7_107, + VAT_22, + VAT_22_122 } From 81374aa78b793223954b5c18ad7e10cd02ca1604 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Wed, 26 Nov 2025 16:54:57 +0500 Subject: [PATCH 53/56] STDEV-23511 --- src/main/java/ru/evotor/framework/features/FeaturesApi.kt | 2 +- .../ru/evotor/framework/features/provider/FeaturesContract.kt | 2 +- src/main/java/ru/evotor/framework/receipt/TaxNumber.kt | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt index c1bd7e62d..4e82f93f4 100644 --- a/src/main/java/ru/evotor/framework/features/FeaturesApi.kt +++ b/src/main/java/ru/evotor/framework/features/FeaturesApi.kt @@ -339,5 +339,5 @@ object FeaturesApi { * * @return `true` если функция активна; `false` если функция не активна. */ - fun isVat22Active(context: Context) = isFeatureActive(context, FeaturesContract.VAT22) + fun isVat22Active(context: Context) = isFeatureActive(context, FeaturesContract.PATH_VAT22) } diff --git a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt index 0907af27f..086f2da53 100644 --- a/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt +++ b/src/main/java/ru/evotor/framework/features/provider/FeaturesContract.kt @@ -51,7 +51,7 @@ object FeaturesContract { const val PATH_VETERINARY_MARK = "veterinary_mark" const val PATH_PET_FOOD_MARK = "pet_food_marked" const val PATH_VEGETABLE_OIL_MARK = "vegetable_oil_marked" - const val VAT22 = "vat22" + const val PATH_VAT22 = "vat22" const val COLUMN_IS_ACTIVE = "is_active" } diff --git a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt index 806d8b688..18bf24eab 100644 --- a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt +++ b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt @@ -9,10 +9,11 @@ import java.math.BigDecimal * Наименования полей (VAT_18 и VAT_18_118), при этом не меняются. * Реальное значение ставки НДС зависит от того, имеет пользователь доступ к новому значению НДС или нет. * - * Ставки НДС 20%, 5%, 7% активируются после приобритения и установки приложения "Обновления под законы" из комплекта "Смарт-терминал Плюс" или "УТМ Плюс". + * Ставки НДС 20%, 5%, 7%, 22% активируются после приобретения и установки приложения "Обновления под законы" из комплекта "Смарт-терминал Плюс" или "УТМ Плюс". * * Используйте метод [ru.evotor.framework.features.FeaturesApi.isVat20Active], чтобы проверить активна ставка НДС 20% у пользователя или нет. * Используйте метод [ru.evotor.framework.features.FeaturesApi.isVat5And7Active], чтобы проверить активны ли ставки НДС 5% и 7% у пользователя или нет. + * Используйте метод [ru.evotor.framework.features.FeaturesApi.isVat22Active], чтобы проверить активна ли ставка НДС 22% у пользователя или нет. */ enum class TaxNumber(val value: BigDecimal) { /** From 2c68f12f24aef373afb6542fdf6c950e79467c4e Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Thu, 27 Nov 2025 20:08:06 +0500 Subject: [PATCH 54/56] STDEV-23511 --- src/main/java/ru/evotor/framework/receipt/TaxNumber.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt index 18bf24eab..2e6758776 100644 --- a/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt +++ b/src/main/java/ru/evotor/framework/receipt/TaxNumber.kt @@ -9,7 +9,7 @@ import java.math.BigDecimal * Наименования полей (VAT_18 и VAT_18_118), при этом не меняются. * Реальное значение ставки НДС зависит от того, имеет пользователь доступ к новому значению НДС или нет. * - * Ставки НДС 20%, 5%, 7%, 22% активируются после приобретения и установки приложения "Обновления под законы" из комплекта "Смарт-терминал Плюс" или "УТМ Плюс". + * Ставки НДС 22%, 5%, 7% активируются после приобретения и установки приложения "Обновления под законы" из комплекта "Смарт-терминал Плюс" или "УТМ Плюс". * * Используйте метод [ru.evotor.framework.features.FeaturesApi.isVat20Active], чтобы проверить активна ставка НДС 20% у пользователя или нет. * Используйте метод [ru.evotor.framework.features.FeaturesApi.isVat5And7Active], чтобы проверить активны ли ставки НДС 5% и 7% у пользователя или нет. From 674e17211891aaa36209c48bfd44bcad88cf84d3 Mon Sep 17 00:00:00 2001 From: "e.cheremisin" Date: Fri, 19 Dec 2025 00:32:26 +0300 Subject: [PATCH 55/56] STDEV-22091 --- src/main/java/ru/evotor/framework/receipt/Position.java | 3 ++- .../framework/receipt/position/VolumeSortAccounting.kt | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index ea02159a4..ef2e23c9a 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -5,6 +5,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.RequiresPermission; import java.math.BigDecimal; import java.util.ArrayList; @@ -2018,9 +2019,9 @@ public Builder setSaleBanTime(@Nullable TimeRange saleBanTime) { * маркированная соковая продукция и безалкогольные напитки {@link ProductType#JUICE_MARKED} * морепродукты (икра осетровых и лососевых) {@link ProductType#CAVIAR_MARKED} * не может использоваться совместно с setPartialRealization - * * @param volumeSortAccounting реализация по ОСУ */ + @RequiresPermission(VolumeSortAccounting.VOLUME_SORT_PERMISSION) public Builder setVolumeSortAccounting( @Nullable VolumeSortAccounting volumeSortAccounting ) { diff --git a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt index 0b4f12e8e..f324c4690 100644 --- a/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt +++ b/src/main/java/ru/evotor/framework/receipt/position/VolumeSortAccounting.kt @@ -46,6 +46,13 @@ data class VolumeSortAccounting( companion object { + /** + * Разрешение для редактирования ОСУ. + * + * Указывайте разрешение в манифесте приложения, в элементе `` до элемента ``. + */ + const val VOLUME_SORT_PERMISSION = "ru.evotor.permission.receipt.volumeSortAccounting.SET"; + private const val KEY_VOLUME_SORT_QUANTITY = "VolumeSortQuantity" private const val KEY_GTIN = "GTIN" private const val REALIZATION_TYPE = "REALIZATION_TYPE_KEY" From e1789a0c614ce81b1c13d8fb8c87e74cf7797958 Mon Sep 17 00:00:00 2001 From: Ilya Fomenko Date: Fri, 19 Dec 2025 17:53:20 +0500 Subject: [PATCH 56/56] STDEV-23797 --- build.gradle | 2 +- .../action/datamapper/PositionMapper.java | 4 +++ .../ru/evotor/framework/receipt/Position.java | 33 ++++++++++++++++++- .../evotor/framework/settings/SettingsApi.kt | 9 +++++ .../settings/SettingsProviderContracts.kt | 8 +++++ 5 files changed, 54 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index c99dae9ab..9ff12c147 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'org.jetbrains.dokka' android { namespace = "ru.evotor.integrations" - def version = 38 + def version = 39 compileSdk 30 diff --git a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java index 63f2c453f..17a9f0764 100644 --- a/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java +++ b/src/main/java/ru/evotor/framework/core/action/datamapper/PositionMapper.java @@ -98,6 +98,7 @@ public final class PositionMapper { private static final String KEY_IS_MARK_SKIPPED = "is_mark_skipped"; private static final String KEY_SALE_BAN_TIME = "sale_ban_time"; private static final String KEY_VETERINARY_ATTRIBUTE = "veterinary_attribute"; + private static final String KEY_FORCE_TAX_NUMBER = "force_tax_number"; @Nullable public static Position from(@Nullable Bundle bundle) { @@ -178,6 +179,7 @@ public static Position from(@Nullable Bundle bundle) { measureCode ); VeterinaryAttribute veterinaryAttribute = VeterinaryAttribute.from(bundle.getBundle(KEY_VETERINARY_ATTRIBUTE)); + Boolean forceTaxNumber = (Boolean) bundle.getSerializable(KEY_FORCE_TAX_NUMBER); Position.Builder builder = Position.Builder.copyFrom(new Position( uuid, @@ -212,6 +214,7 @@ public static Position from(@Nullable Bundle bundle) { builder.setIsMarkSkipped(isMarkSkipped); builder.setSaleBanTime(saleBanTime); builder.setVeterinaryAttribute(veterinaryAttribute); + builder.setForceTaxNumber(forceTaxNumber); return builder.build(); } @@ -300,6 +303,7 @@ public static Bundle toBundle(@Nullable Position position) { bundle.putSerializable(KEY_IS_MARK_SKIPPED, position.getIsMarkSkipped()); bundle.putBundle(KEY_SALE_BAN_TIME, position.getSaleBanTime() != null ? position.getSaleBanTime().toBundle() : null); bundle.putBundle(KEY_VETERINARY_ATTRIBUTE, position.getVeterinaryAttribute() != null ? position.getVeterinaryAttribute().toBundle() : null); + bundle.putSerializable(KEY_FORCE_TAX_NUMBER, position.getForceTaxNumber()); return bundle; } diff --git a/src/main/java/ru/evotor/framework/receipt/Position.java b/src/main/java/ru/evotor/framework/receipt/Position.java index 6e918c9b4..a92f3355d 100644 --- a/src/main/java/ru/evotor/framework/receipt/Position.java +++ b/src/main/java/ru/evotor/framework/receipt/Position.java @@ -40,10 +40,16 @@ * Позиция чека. */ public class Position implements Parcelable { + /** + * Разрешение для установки признака принудительного использования указанного НДС. + * Указывайте разрешение в манифесте приложения, в элементе `` до элемента ``. + */ + public static final String FORCE_TAX_NUMBER_SET_PERMISSION = "ru.evotor.permission.position.forceTaxNumber.SET"; + /** * Текущая версия объекта Position */ - private static final int VERSION = 15; + private static final int VERSION = 16; /** * Магическое число для идентификации использования версионирования объекта. */ @@ -240,6 +246,12 @@ public class Position implements Parcelable { @Nullable private TimeRange saleBanTime; + /** + * Признак принудительного использования указанного НДС + */ + @Nullable + private Boolean forceTaxNumber; + public Position( String uuid, @Nullable String productUuid, @@ -314,6 +326,7 @@ public Position(Position position) { this.isMarkSkipped = position.isMarkSkipped; this.saleBanTime = position.saleBanTime; this.veterinaryAttribute = position.veterinaryAttribute; + this.forceTaxNumber = position.forceTaxNumber; } /** @@ -642,6 +655,11 @@ public MarksCheckingInfo getMarksCheckingInfo() { return marksCheckingInfo; } + @Nullable + public Boolean getForceTaxNumber() { + return forceTaxNumber; + } + @Override public boolean equals(Object o) { return equals(o, false); @@ -715,6 +733,8 @@ private boolean equals(Object o, boolean exceptQuantity) { return false; if (!Objects.equals(veterinaryAttribute, position.veterinaryAttribute)) return false; + if (!Objects.equals(forceTaxNumber, position.forceTaxNumber)) + return false; return Objects.equals(subPositions, position.subPositions); } @@ -751,6 +771,7 @@ public int hashCode() { result = 31 * result + (isMarkSkipped != null ? isMarkSkipped.hashCode() : 0); result = 31 * result + (saleBanTime != null ? saleBanTime.hashCode() : 0); result = 31 * result + (veterinaryAttribute != null ? veterinaryAttribute.hashCode() : 0); + result = 31 * result + (forceTaxNumber != null ? forceTaxNumber.hashCode() : 0); return result; } @@ -787,6 +808,7 @@ public String toString() { ", isAgeLimited=" + isAgeLimited + ", isMarkSkipped=" + isMarkSkipped + ", veterinaryAttribute=" + veterinaryAttribute + + ", forceTaxNumber=" + forceTaxNumber + '}'; } @@ -880,6 +902,7 @@ private void writeAdditionalFields(Parcel dest, int flags) { dest.writeSerializable(this.isMarkSkipped); dest.writeBundle(this.saleBanTime != null ? this.saleBanTime.toBundle() : null); dest.writeBundle(this.veterinaryAttribute != null ? this.veterinaryAttribute.toBundle() : null); + dest.writeSerializable(this.forceTaxNumber); } protected Position(Parcel in) { @@ -989,6 +1012,9 @@ private void readAdditionalFields(Parcel in, String measureName, int measurePrec if (version >= 15) { readVeterinaryAttribute(in); } + if (version >= 16) { + this.forceTaxNumber = (Boolean) in.readSerializable(); + } if (isVersionGreaterThanCurrent) { in.setDataPosition(startDataPosition + dataSize); } @@ -2017,6 +2043,11 @@ public Builder setSaleBanTime(@Nullable TimeRange saleBanTime) { return this; } + public Builder setForceTaxNumber(@Nullable Boolean forceTaxNumber) { + position.forceTaxNumber = forceTaxNumber; + return this; + } + public Position build() { return new Position(position); } diff --git a/src/main/java/ru/evotor/framework/settings/SettingsApi.kt b/src/main/java/ru/evotor/framework/settings/SettingsApi.kt index c25deee2c..9250701cf 100644 --- a/src/main/java/ru/evotor/framework/settings/SettingsApi.kt +++ b/src/main/java/ru/evotor/framework/settings/SettingsApi.kt @@ -8,6 +8,7 @@ import ru.evotor.framework.settings.SettingsProviderContracts.Companion.BASE_URI import ru.evotor.framework.settings.SettingsProviderContracts.Companion.DEPRECATED_BASE_URI import ru.evotor.framework.settings.SettingsProviderContracts.SLIPS_AMOUNT_PROVIDER import ru.evotor.framework.settings.SettingsProviderContracts.NEGATIVE_BALANCE_PROVIDER +import ru.evotor.framework.settings.SettingsProviderContracts.VAT_20_PROVIDER /** * Настройки EvotorPos (раздел "Правила торговли"). @@ -35,6 +36,14 @@ object SettingsApi { getInt(columnIndex) != 0 } + /** + * Включена ли опция "Разрешить НДС 20% в 2026 году". + */ + fun isVat20Enabled(context: Context): Boolean? = + VAT_20_PROVIDER.runCursor(context) { columnIndex -> + getInt(columnIndex) != 0 + } + private fun SettingsProviderContracts.runCursor( context: Context, baseUri: Uri = BASE_URI, diff --git a/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt b/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt index e010a95e0..c6bfb255f 100644 --- a/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt +++ b/src/main/java/ru/evotor/framework/settings/SettingsProviderContracts.kt @@ -23,6 +23,14 @@ enum class SettingsProviderContracts( NEGATIVE_BALANCE_PROVIDER( "NEGATIVE_BALANCE_PATH", "NEGATIVE_BALANCE_COLUMN" + ), + + /** + * Опция "Разрешить НДС 20% в 2026 году". + */ + VAT_20_PROVIDER( + "VAT_20_PATH", + "VAT_20_COLUMN" ); @Suppress("MemberVisibilityCanBePrivate")