From c1c804876ae706173255f5e82e3afb7722c8993b Mon Sep 17 00:00:00 2001 From: xcam Date: Mon, 17 Jul 2017 18:06:08 +0300 Subject: [PATCH 1/2] Update README.md (#74) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d30452739..e818f9a97a 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ allprojects { ``` dependencies { -compile 'com.github.evotor:integration-library:v0.3.+' +compile 'com.github.evotor:integration-library:v0.4.+' } ``` From d7552f64bfa58528308f41a0fc4ef3437866e736 Mon Sep 17 00:00:00 2001 From: rMozg Date: Wed, 19 Jul 2017 11:36:44 +0300 Subject: [PATCH 2/2] Extra print in receipt (#72) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * немного кода для печати доп.полей в чеке * првильные преобразования печатных типов * javadoc + consts --- .../main/java/ru/evotor/framework/Utils.java | 17 ++++ .../core/action/datamapper/ChangesMapper.kt | 2 + .../datamapper/PrintExtraPlaceMapper.kt | 35 +++++++ .../action/datamapper/PrintablesMapper.kt | 92 +++++++++++++++++++ .../action/event/receipt/changes/IChange.kt | 1 + .../receipt/changes/receipt/SetPrintGroup.kt | 4 +- .../receipt/print_extra/SetPrintExtra.kt | 43 +++++++++ .../receipt/merges/PositionsMergeEvent.kt | 4 +- .../print_extra/PrintExtraRequiredEvent.kt | 25 +++++ .../PrintExtraRequiredEventProcessor.kt | 15 +++ .../PrintExtraRequiredEventResult.kt | 46 ++++++++++ .../receipt/print_extras/PrintExtraPlace.kt | 6 ++ ...ExtraPlacePositionAllSubpositionsFooter.kt | 23 +++++ .../PrintExtraPlacePositionFooter.kt | 23 +++++ .../PrintExtraPlacePrintGroupHeader.kt | 21 +++++ .../PrintExtraPlacePrintGroupSummary.kt | 21 +++++ .../PrintExtraPlacePrintGroupTop.kt | 21 +++++ .../print_extras/PrintExtraPlaceType.kt | 12 +++ 18 files changed, 406 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt create mode 100644 app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt create mode 100644 app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt create mode 100644 app/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEvent.kt create mode 100644 app/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventProcessor.kt create mode 100644 app/src/main/java/ru/evotor/framework/core/action/event/receipt/print_extra/PrintExtraRequiredEventResult.kt create mode 100644 app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt create mode 100644 app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt create mode 100644 app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt create mode 100644 app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt create mode 100644 app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt create mode 100644 app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt create mode 100644 app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt diff --git a/app/src/main/java/ru/evotor/framework/Utils.java b/app/src/main/java/ru/evotor/framework/Utils.java index 5e20898d77..58cc096539 100644 --- a/app/src/main/java/ru/evotor/framework/Utils.java +++ b/app/src/main/java/ru/evotor/framework/Utils.java @@ -1,6 +1,8 @@ package ru.evotor.framework; +import android.os.Parcelable; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import java.util.ArrayList; import java.util.List; @@ -34,4 +36,19 @@ public static List filterByClass(@NonNull List source, @NonNull Cla } return list; } + + @Nullable + public static List convertParcelables(@Nullable Parcelable[] parcelables, @NonNull Class clazz) { + if (parcelables != null) { + List exports = new ArrayList<>(); + for (Parcelable parcelable : parcelables) { + if (clazz.isInstance(parcelable)) { + exports.add((T) parcelable); + } + } + return exports; + } else { + return null; + } + } } diff --git a/app/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt b/app/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt index 5c6c4bbfd3..9f2cfc808d 100644 --- a/app/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt +++ b/app/src/main/java/ru/evotor/framework/core/action/datamapper/ChangesMapper.kt @@ -6,6 +6,7 @@ import android.util.Log import ru.evotor.framework.core.action.event.receipt.changes.IChange import ru.evotor.framework.core.action.event.receipt.changes.UnknownChange import ru.evotor.framework.core.action.event.receipt.changes.position.* +import ru.evotor.framework.core.action.event.receipt.changes.receipt.print_extra.SetPrintExtra import ru.evotor.framework.safeValueOf object ChangesMapper { @@ -72,6 +73,7 @@ object ChangesMapper { IChange.Type.SET_EXTRA -> SetExtra.from(bundle) IChange.Type.SET_POSITION_PRINT_GROUP -> SetPrintGroup.from(bundle) IChange.Type.SET_PAYMENT_PURPOSE_PRINT_GROUP -> SetPrintGroup.from(bundle) + IChange.Type.SET_PRINT_EXTRA -> SetPrintExtra.from(bundle) null, IChange.Type.UNKNOWN -> UnknownChange.from(typeName, bundle) } } diff --git a/app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt b/app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt new file mode 100644 index 0000000000..8d9a0f3bc4 --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintExtraPlaceMapper.kt @@ -0,0 +1,35 @@ +package ru.evotor.framework.core.action.datamapper + +import android.os.Bundle +import ru.evotor.framework.receipt.print_extras.* +import ru.evotor.framework.safeValueOf + +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 + } + + + fun fromBundle(bundle: Bundle): PrintExtraPlace? = + when (safeValueOf(bundle.getString(KEY_TYPE))) { + PrintExtraPlaceType.PRINT_GROUP_TOP -> PrintExtraPlacePrintGroupTop.fromBundle(bundle) + PrintExtraPlaceType.PRINT_GROUP_HEADER -> PrintExtraPlacePrintGroupHeader.fromBundle(bundle) + PrintExtraPlaceType.PRINT_GROUP_SUMMARY -> PrintExtraPlacePrintGroupSummary.fromBundle(bundle) + PrintExtraPlaceType.POSITION_FOOTER -> PrintExtraPlacePositionFooter.fromBundle(bundle) + PrintExtraPlaceType.POSITION_ALL_SUBPOSITIONS_FOOTER -> PrintExtraPlacePositionAllSubpositionsFooter.fromBundle(bundle) + else -> null + } + +} \ No newline at end of file diff --git a/app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt b/app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt new file mode 100644 index 0000000000..b9a56e39e4 --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/core/action/datamapper/PrintablesMapper.kt @@ -0,0 +1,92 @@ +package ru.evotor.framework.core.action.datamapper + +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.os.Bundle +import android.os.Parcelable +import ru.evotor.devices.commons.printer.printable.IPrintable +import ru.evotor.devices.commons.printer.printable.PrintableBarcode +import ru.evotor.devices.commons.printer.printable.PrintableImage +import ru.evotor.devices.commons.printer.printable.PrintableText +import ru.evotor.framework.safeValueOf +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) + } + + 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() + } + ) + } + } + it + } + + fun fromBundle(bundle: Bundle): Array? = + arrayListOf().let { + list -> + val bundleParcelables: Array = bundle.getParcelableArray(KEY_PRINTABLE_ARRAY) + bundleParcelables.forEach { + bundle -> + if (bundle is Bundle) { + singleFromBundle(bundle)?.let { list.add(it) } + } + } + list.toTypedArray() + } + + private fun singleFromBundle(bundle: Bundle): IPrintable? = + when (safeValueOf(bundle.getString(KEY_PRINTABLE_TYPE), null)) { + PrintableType.TEXT -> PrintableText( + bundle.getString(KEY_PRINTABL_TEXT) + ) + PrintableType.BARCODE -> PrintableBarcode( + bundle.getString(KEY_PRINTABL_TEXT), + safeValueOf(bundle.getString(KEY_PRINTABL_BARCODE_TYPE), PrintableBarcode.BarcodeType.CODE39) + ) + PrintableType.IMAGE -> + bundle.getByteArray(KEY_PRINTABL_IMAGE).let { + PrintableImage( + BitmapFactory.decodeByteArray(it, 0, it.size) + ) + } + null -> null + } + + enum class PrintableType { + TEXT, BARCODE, IMAGE + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt index e6e9a11c28..1466e305e5 100644 --- a/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt +++ b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/IChange.kt @@ -12,6 +12,7 @@ interface IChange : IBundlable { SET_EXTRA, SET_POSITION_PRINT_GROUP, SET_PAYMENT_PURPOSE_PRINT_GROUP, + SET_PRINT_EXTRA, UNKNOWN } } \ No newline at end of file diff --git a/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt index 611ae844a0..9afbf1d0a2 100644 --- a/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt +++ b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/SetPrintGroup.kt @@ -24,9 +24,7 @@ data class SetPrintGroup(val printGroup: PrintGroup?, val paymentPurposeIds: Lis } } - override fun getType(): IChange.Type { - return IChange.Type.SET_PAYMENT_PURPOSE_PRINT_GROUP - } + override fun getType() = IChange.Type.SET_PAYMENT_PURPOSE_PRINT_GROUP companion object { const val KEY_PRINT_GROUP = "printGroup" diff --git a/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt new file mode 100644 index 0000000000..5a4a6c9d21 --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/changes/receipt/print_extra/SetPrintExtra.kt @@ -0,0 +1,43 @@ +package ru.evotor.framework.core.action.event.receipt.changes.receipt.print_extra + +import android.os.Bundle +import ru.evotor.devices.commons.printer.printable.IPrintable +import ru.evotor.framework.core.action.datamapper.PrintExtraPlaceMapper +import ru.evotor.framework.core.action.datamapper.PrintablesMapper +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 +) : 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)) + } + + companion object { + + const val KEY_PRINT_PLACE = "printPlace" + const val KEY_PRINTABLES = "printables" + + @JvmStatic + fun from(bundle: Bundle?): SetPrintExtra? { + bundle ?: return null + + val printPlace = PrintExtraPlaceMapper.fromBundle(bundle.getBundle(KEY_PRINT_PLACE)) + val printables = PrintablesMapper.fromBundle(bundle.getBundle(KEY_PRINTABLES)) + + if (printPlace == null || printables == null) { + return null + } + + return SetPrintExtra(printPlace, printables) + } + } + +} diff --git a/app/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt index b6e99cc4ef..b9fe1eeda0 100644 --- a/app/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt +++ b/app/src/main/java/ru/evotor/framework/core/action/event/receipt/merges/PositionsMergeEvent.kt @@ -17,8 +17,8 @@ class PositionsMergeEvent(val receiptUuid: String, val merges: ArrayList? +) : 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 + }) + return bundle + } + + companion object { + private val KEY_PRINT_EXTRA = "printExtras" + + fun create(bundle: Bundle?): PrintExtraRequiredEventResult? { + if (bundle == null) { + return null + } + return PrintExtraRequiredEventResult( + Utils.filterByClass( + ChangesMapper.create(bundle.getParcelableArray(KEY_PRINT_EXTRA)), + SetPrintExtra::class.java + ) + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt new file mode 100644 index 0000000000..8fbe2c0444 --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlace.kt @@ -0,0 +1,6 @@ +package ru.evotor.framework.receipt.print_extras + +/** + * Класс-родитель для указания на место в чеке, куда будет добавлена дополнительная печатная информация + */ +abstract class PrintExtraPlace(val placeType: PrintExtraPlaceType) \ No newline at end of file diff --git a/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt new file mode 100644 index 0000000000..0602ccc49d --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionAllSubpositionsFooter.kt @@ -0,0 +1,23 @@ +package ru.evotor.framework.receipt.print_extras + +import android.os.Bundle + +/** + * Печатная информация будет добавлена после позиции в чеке и после всех её модификаторов (подпозиций) + */ +class PrintExtraPlacePositionAllSubpositionsFooter( + 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) } + + fun fromBundle(bundle: Bundle): PrintExtraPlacePositionAllSubpositionsFooter? = + bundle.getString(KEY_POSITION_UUID)?.let { + PrintExtraPlacePositionAllSubpositionsFooter(it) + } + } +} diff --git a/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt new file mode 100644 index 0000000000..19f45c4b56 --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePositionFooter.kt @@ -0,0 +1,23 @@ +package ru.evotor.framework.receipt.print_extras + +import android.os.Bundle + +/** + * Печатная информация будет добавлена сразу после позиции в чеке, до списка её модификаторов (подпозиций) + */ +class PrintExtraPlacePositionFooter( + 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) } + + fun fromBundle(bundle: Bundle): PrintExtraPlacePositionFooter? = + bundle.getString(KEY_POSITION_UUID)?.let { + PrintExtraPlacePositionFooter(it) + } + } +} diff --git a/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt new file mode 100644 index 0000000000..f5225c6162 --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupHeader.kt @@ -0,0 +1,21 @@ +package ru.evotor.framework.receipt.print_extras + +import android.os.Bundle + +/** + * Печатная информация будет добавлена в верхней части чека: после текста "Кассовый чек", до имени пользователя + */ +class PrintExtraPlacePrintGroupHeader( + 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) } + + fun fromBundle(bundle: Bundle): PrintExtraPlacePrintGroupHeader? = + PrintExtraPlacePrintGroupHeader(bundle.getString(KEY_PRINT_GROUP_ID)) + } +} diff --git a/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt new file mode 100644 index 0000000000..b28f02abfc --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupSummary.kt @@ -0,0 +1,21 @@ +package ru.evotor.framework.receipt.print_extras + +import android.os.Bundle + +/** + * Печатная информация будет добавлена в нижней части чека, после итога и списка отплат, до поля "всего оплачено" + */ +class PrintExtraPlacePrintGroupSummary( + 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) } + + fun fromBundle(bundle: Bundle): PrintExtraPlacePrintGroupSummary? = + PrintExtraPlacePrintGroupSummary(bundle.getString(KEY_PRINT_GROUP_ID)) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt new file mode 100644 index 0000000000..ff6b246460 --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlacePrintGroupTop.kt @@ -0,0 +1,21 @@ +package ru.evotor.framework.receipt.print_extras + +import android.os.Bundle + +/** + * Печатная информация будет добавлена сверху от чека: после клише, до текста "Кассовый чек" + */ +class PrintExtraPlacePrintGroupTop( + 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) } + + fun fromBundle(bundle: Bundle): PrintExtraPlacePrintGroupTop? = + PrintExtraPlacePrintGroupTop(bundle.getString(KEY_PRINT_GROUP_ID)) + } +} diff --git a/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt new file mode 100644 index 0000000000..a52147ab8d --- /dev/null +++ b/app/src/main/java/ru/evotor/framework/receipt/print_extras/PrintExtraPlaceType.kt @@ -0,0 +1,12 @@ +package ru.evotor.framework.receipt.print_extras + +/** + * Тип места в чеке, куда будет добавлена дополнительная печатная информация + */ +enum class PrintExtraPlaceType { + PRINT_GROUP_TOP, + PRINT_GROUP_HEADER, + PRINT_GROUP_SUMMARY, + POSITION_FOOTER, + POSITION_ALL_SUBPOSITIONS_FOOTER +} \ No newline at end of file