Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 24 additions & 12 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@ apply plugin: 'maven-publish'
apply plugin: 'org.jetbrains.dokka'

android {
namespace 'ru.evotor.integrations'

def version = 22

compileSdkVersion 29
compileSdkVersion 30

defaultConfig {
minSdkVersion 23
//noinspection ExpiredTargetSdkVersion
Expand All @@ -18,29 +21,38 @@ android {
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
resValue "integer", "versionCodeIntegrationLibrary", "$version"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

lintOptions {
abortOnError false
}

compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

packagingOptions {
exclude 'META-INF/*_module'
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
}

dependencies {
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.annotation:annotation:1.4.0'

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'

Expand All @@ -49,19 +61,20 @@ dependencies {

repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
google()
}

buildscript {
ext.kotlin_version = '1.6.10'

repositories {
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.6.21"
classpath 'com.android.tools.build:gradle:7.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.7.10"
}
}
// in the individual module build.gradle files
Expand Down Expand Up @@ -111,15 +124,14 @@ publishing {
mavenKotlin(MavenPublication) {
groupId 'com.github.evotor'
artifactId "integration-library"
version "STDEV-12463"
version "STDEV-13837"
artifact(sourceJar)
artifact(javadocJar)
artifact "${project.buildDir}/outputs/aar/${project.archivesBaseName}-release.aar"

//generate pom nodes for dependencies
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')

configurations.api.allDependencies.each { dependency ->
if (dependency.group) {
def dependencyNode = dependenciesNode.appendNode('dependency')
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.enableJetifier=true
android.enableJetifier=false
android.useAndroidX=true

# Kotlin code style for this project: "official" or "obsolete":
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Fri Sep 09 13:53:43 MSK 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
1 change: 0 additions & 1 deletion src/main/AndroidManifest.xml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import ru.evotor.framework.component.PaymentPerformer
import ru.evotor.framework.core.action.event.receipt.payment.system.event.PaymentSystemEvent
import ru.evotor.framework.payment.PaymentSystem
import ru.evotor.framework.payment.PaymentType
import ru.evotor.integrations.R

object IntegrationComponentViewDataApi {

Expand All @@ -23,7 +22,8 @@ object IntegrationComponentViewDataApi {
val applicationsList = ArrayList<PaymentPerformerViewData>()
val packageManager = context.packageManager
val intent = Intent(eventName)
val applicationsInfo = packageManager.queryIntentServices(intent, PackageManager.GET_META_DATA)
val applicationsInfo =
packageManager.queryIntentServices(intent, PackageManager.GET_META_DATA)
for (resolveInfo in applicationsInfo) {
generatePaymentPerformerViewData(context, resolveInfo)?.let {
applicationsList.add(it)
Expand All @@ -32,7 +32,10 @@ object IntegrationComponentViewDataApi {
return applicationsList
}

private fun generatePaymentPerformerViewData(context: Context, resolveInfo: ResolveInfo): PaymentPerformerViewData? {
private fun generatePaymentPerformerViewData(
context: Context,
resolveInfo: ResolveInfo
): PaymentPerformerViewData? {
if (resolveInfo.serviceInfo == null || resolveInfo.serviceInfo.metaData == null) {
return null
}
Expand All @@ -42,12 +45,16 @@ object IntegrationComponentViewDataApi {
val packageManager = context.packageManager
var appUuid: String? = null
try {
val packageInfo = packageManager.getPackageInfo(resolveInfo.serviceInfo.packageName, PackageManager.GET_META_DATA or PackageManager.GET_PERMISSIONS)
val packageInfo = packageManager.getPackageInfo(
resolveInfo.serviceInfo.packageName,
PackageManager.GET_META_DATA or PackageManager.GET_PERMISSIONS
)
if (!hasPermission(packageInfo)) {
return null
}
if (packageInfo.applicationInfo.metaData != null) {
appUuid = packageInfo.applicationInfo.metaData.getString(METADATA_NAME_APP_UUID, null)
appUuid =
packageInfo.applicationInfo.metaData.getString(METADATA_NAME_APP_UUID, null)
}
} catch (exc: PackageManager.NameNotFoundException) {
return null
Expand All @@ -56,36 +63,40 @@ 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
context.getColor(R.color.white)
} else {
context.getColor(android.R.color.white)
}

return PaymentPerformerViewData(
paymentPerformer,
resolveInfo.loadIcon(packageManager),
backgroundColor,
ColorUtils.getContrastColor(backgroundColor)
paymentPerformer,
resolveInfo.loadIcon(packageManager),
backgroundColor,
ColorUtils.getContrastColor(backgroundColor)
)
}

private fun hasPermission(packageInfo: PackageInfo) = packageInfo.requestedPermissions.contains(PaymentSystemEvent.NAME_PERMISSION)
private fun hasPermission(packageInfo: PackageInfo) =
packageInfo.requestedPermissions.contains(PaymentSystemEvent.NAME_PERMISSION)

private fun getPaymentSystemId(metaData: Bundle) = metaData.getString(PaymentSystemEvent.META_NAME_PAYMENT_SYSTEM_ID, null)
private fun getPaymentSystemId(metaData: Bundle) =
metaData.getString(PaymentSystemEvent.META_NAME_PAYMENT_SYSTEM_ID, null)

private fun getPaymentType(metaData: Bundle) = try {
PaymentType.valueOf(metaData.getString(PaymentSystemEvent.META_NAME_PAYMENT_TYPE, null))
} catch (t: Throwable) {
null
}
}
}
59 changes: 45 additions & 14 deletions src/main/java/ru/evotor/framework/inventory/ProductQuery.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,82 +8,113 @@ import java.math.BigDecimal
/**
* Created by a.lunkov on 07.03.2018.
*/
class ProductQuery : FilterBuilder<ProductQuery, ProductQuery.SortOrder, ProductItem?>(ProductTable.URI) {
class ProductQuery :
FilterBuilder<ProductQuery, ProductQuery.SortOrder, ProductItem?>(ProductTable.URI) {

@JvmField
val uuid = addFieldFilter<String>(ProductTable.ROW_UUID)

@JvmField
val parentUuid = addFieldFilter<String?>(ProductTable.ROW_PARENT_UUID)

@JvmField
val code = addFieldFilter<String?>(ProductTable.ROW_CODE)

@JvmField
val name = addFieldFilter<String>(ProductTable.ROW_NAME)

@JvmField
val taxNumber = addFieldFilter<TaxNumber>(ProductTable.ROW_TAX_NUMBER)

@JvmField
val type = addFieldFilter<ProductType>(ProductTable.ROW_TYPE)

@JvmField
val price = addFieldFilter<BigDecimal, BigDecimal>(ProductTable.ROW_PRICE_OUT, {it.multiply(BigDecimal(100))})
val price = addFieldFilter<BigDecimal, BigDecimal>(
ProductTable.ROW_PRICE_OUT
) { it.multiply(BigDecimal(100)) }

@JvmField
val costPrice = addFieldFilter<BigDecimal?, BigDecimal?>(ProductTable.ROW_COST_PRICE, {it?.multiply(BigDecimal(100))})
val costPrice = addFieldFilter<BigDecimal?, BigDecimal?>(
ProductTable.ROW_COST_PRICE
) { it?.multiply(BigDecimal(100)) }

@JvmField
val quantity = addFieldFilter<BigDecimal, BigDecimal>(ProductTable.ROW_QUANTITY, {it.multiply(BigDecimal(1000))})
val quantity = addFieldFilter<BigDecimal, BigDecimal>(
ProductTable.ROW_QUANTITY
) { it.multiply(BigDecimal(1000)) }

@JvmField
val description = addFieldFilter<String?>(ProductTable.ROW_DESCRIPTION)

@JvmField
val measureName = addFieldFilter<String>(ProductTable.ROW_MEASURE_NAME)

@JvmField
val measurePrecision = addFieldFilter<Int>(ProductTable.ROW_MEASURE_PRECISION)

@JvmField
val alcoholByVolume = addFieldFilter<BigDecimal?, BigDecimal?>(ProductTable.ROW_ALCOHOL_BY_VOLUME, {it?.multiply(BigDecimal(1000))})
val alcoholByVolume = addFieldFilter<BigDecimal?, BigDecimal?>(
ProductTable.ROW_ALCOHOL_BY_VOLUME
) { it?.multiply(BigDecimal(1000)) }

@JvmField
val alcoholProductKindCode = addFieldFilter<Long?>(ProductTable.ROW_ALCOHOL_PRODUCT_KIND_CODE)
@JvmField
val tareVolume = addFieldFilter<BigDecimal?, BigDecimal?>(ProductTable.ROW_TARE_VOLUME, {it?.multiply(BigDecimal(1000))})

override val currentQuery: ProductQuery
get() = this
@JvmField
val tareVolume = addFieldFilter<BigDecimal?, BigDecimal?>(
ProductTable.ROW_TARE_VOLUME
) { it?.multiply(BigDecimal(1000)) }

class SortOrder : FilterBuilder.SortOrder<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 val currentSortOrder: SortOrder
get() = this

}

override fun getValue(cursor: Cursor<ProductItem?>): ProductItem? {
return ProductMapper.getValueFromCursor(cursor)
}

}
Loading