初始代码提交
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
package com.sw.inbound.model.request
|
||||
|
||||
import com.sw.inbound.GlobalData
|
||||
import com.sw.inbound.ext.toFormattedString
|
||||
import java.math.BigDecimal
|
||||
|
||||
/**
|
||||
* 添加物品参数
|
||||
*/
|
||||
data class GoodsAddParam(
|
||||
/**
|
||||
* 物品名称
|
||||
*/
|
||||
var goodName: String? = null,
|
||||
|
||||
/**
|
||||
* 物品编号 服务自动生成
|
||||
*/
|
||||
var goodCode: String? = null,
|
||||
|
||||
/**
|
||||
* 物品类型
|
||||
*/
|
||||
// var goodType: Int? = null,
|
||||
var goodType: String? = null,
|
||||
|
||||
/**
|
||||
* 存储方式
|
||||
*/
|
||||
var storageType: String? = null,
|
||||
|
||||
/**
|
||||
* 净材率
|
||||
*/
|
||||
var netRate: Float? = null,
|
||||
|
||||
/**
|
||||
* 库存单位id
|
||||
*/
|
||||
var unitId: String? = null,
|
||||
|
||||
/**
|
||||
* 采购单位
|
||||
*/
|
||||
var purchaseUnit: String? = null,
|
||||
|
||||
/**
|
||||
* 单位转换值
|
||||
*/
|
||||
var purchaseValue: Float = 0F,
|
||||
//var purchaseValueStr: String = "",
|
||||
|
||||
/**
|
||||
* 采购单价
|
||||
*/
|
||||
var purchasePrice: BigDecimal? = null,
|
||||
|
||||
/**
|
||||
* 图片url
|
||||
*/
|
||||
var relativeUrl: String? = null,
|
||||
/**
|
||||
* 库存与克的转换值
|
||||
*/
|
||||
val consumeValue: String = ""
|
||||
) {
|
||||
|
||||
val goodNameSr: String
|
||||
get() {
|
||||
if (goodName == null)
|
||||
return ""
|
||||
return goodName!!
|
||||
}
|
||||
|
||||
|
||||
var goodsTypeStr: String
|
||||
set(value) {
|
||||
goodsTypeStr = value
|
||||
}
|
||||
get() {
|
||||
return GlobalData.goodsTypeList.find { it.id == goodType }?.value ?: ""
|
||||
}
|
||||
|
||||
var storageTypeStr: String
|
||||
set(value) {
|
||||
storageTypeStr = value
|
||||
}
|
||||
get() {
|
||||
return GlobalData.storageTypeList.find { it.id == storageType.toString() }?.value ?: ""
|
||||
}
|
||||
|
||||
val netRateStr: String
|
||||
get() {
|
||||
return if (netRate == null || netRate == 0f) {
|
||||
""
|
||||
} else {
|
||||
netRate!!.toFormattedString(1)
|
||||
}
|
||||
}
|
||||
|
||||
val unitIdStr: String
|
||||
get() {
|
||||
return GlobalData.unitTypeList.find { it.id == unitId.toString() }?.value ?: ""
|
||||
}
|
||||
|
||||
val unitIdStrPlace: String
|
||||
get() {
|
||||
return if (unitIdStr.isEmpty()) "-" else unitIdStr
|
||||
}
|
||||
|
||||
val purchasePriceStr: String
|
||||
get() {
|
||||
if (purchasePrice == null) {
|
||||
return ""
|
||||
}
|
||||
return purchasePrice!!.toFormattedString()
|
||||
}
|
||||
|
||||
|
||||
val purchaseUnitStr: String
|
||||
get() {
|
||||
if (purchaseUnit == null) {
|
||||
return ""
|
||||
}
|
||||
return GlobalData.unitTypeList.find { it.id == purchaseUnit.toString() }?.value ?: ""
|
||||
}
|
||||
|
||||
fun hasNullField(): String? {
|
||||
if (goodName == null || goodName!!.isEmpty())
|
||||
return "请录入物品名称"
|
||||
if (goodType.isNullOrBlank() || goodType == "0") {
|
||||
return "请选择物品类型"
|
||||
}
|
||||
if (storageType.isNullOrBlank()) {
|
||||
return "请选择存储方式"
|
||||
}
|
||||
if (netRate == null || netRate == 0f) {
|
||||
return "请录入净材率"
|
||||
}
|
||||
if (unitId.isNullOrBlank()) {
|
||||
return "请选择库存单位"
|
||||
}
|
||||
if (purchaseUnit.isNullOrBlank()) {
|
||||
return "请选择采购单位"
|
||||
}
|
||||
if (purchaseValue == null || purchaseValue == 0f) {
|
||||
return "请输入采购单位对应的库存数量"
|
||||
}
|
||||
if (purchasePrice == null || purchasePrice!!.toFloat() <= 0) {
|
||||
return "请输入单价"
|
||||
}
|
||||
if (consumeValue.isEmpty()) {
|
||||
return "请输入库存单位对应的消耗值"
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.sw.inbound.model.request
|
||||
|
||||
import com.sw.inbound.GlobalData
|
||||
|
||||
/**
|
||||
* 物品采购单位入参
|
||||
*/
|
||||
data class GoodsPurchaseUnitParam(
|
||||
val goodsId: Int = 0,// 物品id integer ,
|
||||
val purchaseUnit: Int = 0, // 采购单位 integer ,
|
||||
val unitId: Int = 0, // 库存单位id integer,
|
||||
val purchaseValue: Float = 0f, // 单位转换值 float
|
||||
val purchaseValueStr: String = "", // 单位转换值
|
||||
/**
|
||||
* 库存与克的转换值
|
||||
*/
|
||||
var consumeValue: String = "",
|
||||
) {
|
||||
val unitIdStr: String
|
||||
get() {
|
||||
if (unitId == 0) return ""
|
||||
return GlobalData.unitTypeList.find { it.id == unitId.toString() }?.value ?: ""
|
||||
}
|
||||
|
||||
val purchaseUnitStr: String
|
||||
get() {
|
||||
if (purchaseUnit == 0) {
|
||||
return ""
|
||||
}
|
||||
return GlobalData.unitTypeList.find { it.id == purchaseUnit.toString() }?.value ?: ""
|
||||
}
|
||||
|
||||
fun hasNullField(): String? {
|
||||
if (goodsId == null || goodsId == 0)
|
||||
return "物品信息异常"
|
||||
if (unitId == null || unitId == 0) {
|
||||
return "请选择库存单位"
|
||||
}
|
||||
if (purchaseUnit == null || purchaseUnit == 0) {
|
||||
return "请选择采购单位"
|
||||
}
|
||||
if (purchaseValue == null || purchaseValue == 0f) {
|
||||
return "请输入采购单位对应的库存数量"
|
||||
}
|
||||
if (consumeValue.isEmpty()) {
|
||||
return "请输入库存单位对应的消耗值"
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.sw.inbound.model.request
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 登录入参
|
||||
*/
|
||||
@Parcelize
|
||||
data class LoginParam(
|
||||
val userName: String,
|
||||
val password: String
|
||||
) : Parcelable
|
||||
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
package com.sw.inbound.model.request
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.sw.inbound.GlobalData
|
||||
import com.sw.inbound.ext.toFormattedString
|
||||
import com.sw.inbound.ext.toSafeString
|
||||
import com.sw.inbound.model.response.DictType
|
||||
import com.sw.inbound.model.response.SearchGoodsInfo.Record.UnitVo
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.math.BigDecimal
|
||||
|
||||
/**
|
||||
* 自采购入库参数
|
||||
*/
|
||||
@Parcelize
|
||||
data class PurchaseWarehouseParam(
|
||||
/**
|
||||
* 物品id
|
||||
*/
|
||||
var goodsId: String = "",
|
||||
/**
|
||||
* 库存单位
|
||||
*/
|
||||
var kcUnitId: String? = "",
|
||||
/**
|
||||
* 入库数量
|
||||
*/
|
||||
var goodsCount: Double = 0.0,
|
||||
|
||||
// 用于数量输入框显示
|
||||
var goodsCountTemp: String = "",
|
||||
/**
|
||||
* 入库单价
|
||||
*/
|
||||
var goodsUnitPrice: Double = 0.0,
|
||||
// 单价 输入框显示
|
||||
var goodsUnitPriceTemp: String = "",
|
||||
/**
|
||||
* 入库金额
|
||||
*/
|
||||
var goodsPrice: Double = 0.0,
|
||||
|
||||
// 用于界面显示的金额
|
||||
var goodsPriceTemp: String = "",
|
||||
/**
|
||||
* (物品列表里 businessUnitId字段的值)
|
||||
*/
|
||||
var goodPurId: String?="",
|
||||
/**
|
||||
* 仓库id
|
||||
*/
|
||||
var warehouseId: String?="",
|
||||
|
||||
/**
|
||||
* 采购库存转换关系
|
||||
*/
|
||||
var buyToInventoryValue: String = "",
|
||||
|
||||
// 仓库名
|
||||
// var warehouseName: String? = null,
|
||||
|
||||
// 重量 收货入参
|
||||
var goodsWeight: BigDecimal? = null,
|
||||
// 物品名称
|
||||
var goodsName: String? = null,
|
||||
// 单位名称
|
||||
var unitName: String? = null,
|
||||
// 搜索的物品单位列表
|
||||
var unitList: List<UnitVo>? = null,
|
||||
// 选中的采购单位
|
||||
var selectUnitType: UnitVo? = null,
|
||||
// 库存单位与克的转换值
|
||||
val consumeValue: String = ""
|
||||
) : Parcelable {
|
||||
|
||||
val warehouseNameStr: String
|
||||
get() {
|
||||
if (warehouseId.isNullOrBlank()) {
|
||||
return ""
|
||||
}
|
||||
return GlobalData.warehouseTypeList.find { it.id == warehouseId.toString() }?.value ?: ""
|
||||
// if (warehouseName == null) {
|
||||
// return ""
|
||||
// }
|
||||
// return warehouseName!!
|
||||
}
|
||||
|
||||
val goodsWeightStr: String
|
||||
get() {
|
||||
if (goodsWeight == null) return ""
|
||||
|
||||
// 小于10 kg 显示 g
|
||||
if (goodsWeight!!.toInt() < 1) {
|
||||
return goodsWeight!!.multiply(BigDecimal(1000)).toString()
|
||||
}
|
||||
return goodsWeight?.toFormattedString() ?: ""
|
||||
}
|
||||
|
||||
val goodsWeightUnitStr: String
|
||||
get() {
|
||||
return if (goodsWeight == null || goodsWeight!!.toInt() < 1) {
|
||||
"克"
|
||||
} else {
|
||||
"千克"
|
||||
}
|
||||
}
|
||||
|
||||
val goodsNameStr: String
|
||||
get() {
|
||||
if (goodsName == null) return "-"
|
||||
return goodsName!!
|
||||
}
|
||||
|
||||
// val unitDictTypeList: List<DictType>
|
||||
// get() {
|
||||
// return if (unitList == null) emptyList()
|
||||
// else {
|
||||
// unitList!!.filter { it.businessUnitId != null && it.purchaseUnitName != null }.map {
|
||||
// DictType(it.businessUnitId?.toInt() ?: 0, it.purchaseUnitName ?: "")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
val unitNameStr: String
|
||||
get() {
|
||||
if (unitName == null) return ""
|
||||
return unitName!!
|
||||
}
|
||||
|
||||
val goodsCountStr: String
|
||||
get() {
|
||||
if (goodsCount == null || goodsCount == 0.0) {
|
||||
return ""
|
||||
}
|
||||
return goodsCount.toSafeString(unitName)
|
||||
}
|
||||
|
||||
val goodsUnitPriceStr: String
|
||||
get() {
|
||||
if (goodsUnitPrice == null || goodsUnitPrice == 0.0) {
|
||||
return ""
|
||||
}
|
||||
return goodsUnitPrice.toFormattedString()
|
||||
}
|
||||
|
||||
val goodsPriceStr: String
|
||||
get() {
|
||||
if (goodsPrice == null || goodsPrice == 0.0) {
|
||||
return ""
|
||||
}
|
||||
return goodsPrice.toFormattedString()
|
||||
}
|
||||
|
||||
fun hasNullField(): String? {
|
||||
if (goodsId.isNullOrBlank() || goodsName == null || goodsName!!.isEmpty())
|
||||
return "请选择物品"
|
||||
if (warehouseId.isNullOrBlank()) {
|
||||
return "请选择仓库"
|
||||
}
|
||||
if (goodPurId.isNullOrBlank()) {
|
||||
return "请选择采购单位"
|
||||
}
|
||||
if (goodsCount == null || goodsCount == 0.0) {
|
||||
return "请输入采购数量"
|
||||
}
|
||||
if (goodsUnitPrice == null || goodsUnitPrice == 0.0) {
|
||||
return "请输入采购单价"
|
||||
}
|
||||
if (goodsPrice == null || goodsPrice == 0.0) {
|
||||
return "请输入采购金额"
|
||||
}
|
||||
if (goodsWeight == null || goodsWeight!!.toFloat() <= 0) {
|
||||
return "请放入要称重的物品"
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package com.sw.inbound.model.request
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.sw.inbound.model.response.BaseBean
|
||||
import com.sw.inbound.model.response.GoodsInfo
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.math.BigDecimal
|
||||
|
||||
/**
|
||||
* 确认收货结构
|
||||
*/
|
||||
@Parcelize
|
||||
data class UploadInfo(
|
||||
/**
|
||||
* 收货单id
|
||||
*/
|
||||
var id: String,
|
||||
/**
|
||||
* 供应商id
|
||||
*/
|
||||
var supplierId: String? = null,
|
||||
/**
|
||||
*
|
||||
* 物品信息 【全部收货使用】
|
||||
*/
|
||||
var receiveGoodsInfos: List<GoodsInfo> = emptyList<GoodsInfo>(),
|
||||
/**
|
||||
* 物品信息 【部分收货使用】
|
||||
*/
|
||||
var receiveGoodsInfoList: List<GoodsInfo> = emptyList<GoodsInfo>()
|
||||
) : Parcelable
|
||||
|
||||
/**
|
||||
* 确认收货物品信息
|
||||
*/
|
||||
@Parcelize
|
||||
private data class UploadGoodsInfo(
|
||||
/**
|
||||
* 物品Id
|
||||
*/
|
||||
var goodId: Int = 0,
|
||||
/**
|
||||
* 物品采购单位关系
|
||||
*/
|
||||
var goodsPurId: Int = 0,
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
var receiveCount: Float = 0F,
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
var recUnitPriceTaxIn: Float = 0f,
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
var recPriceExItem: Float = 0f,
|
||||
|
||||
/**
|
||||
* 仓库id
|
||||
*/
|
||||
var warehouseId: Int = 0,
|
||||
|
||||
|
||||
/**
|
||||
* 物品名称
|
||||
*/
|
||||
var goodName: String = "-",
|
||||
|
||||
|
||||
/**
|
||||
* 单位名称
|
||||
*/
|
||||
var unitName: String = "-",
|
||||
|
||||
/**
|
||||
* 采购单位id
|
||||
*/
|
||||
var purchaseUnitId: String = "",
|
||||
|
||||
/**
|
||||
* 收货数量
|
||||
*/
|
||||
var receivedNum: Float = 0f,
|
||||
/**
|
||||
* 物品重量
|
||||
*/
|
||||
var goodsWeight: BigDecimal = BigDecimal(0),
|
||||
|
||||
// 已调整
|
||||
var isAdjusted: Boolean = false
|
||||
) : Parcelable, BaseBean() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
//data class ApiResponse<T>(
|
||||
// val code: Int,
|
||||
// val success: Boolean? = false,
|
||||
// val message: String? = "",
|
||||
// val result: T? = null,
|
||||
// val timestamp: Long? = 0
|
||||
//) {
|
||||
// fun isSuccess(): Boolean = code == 200
|
||||
//}
|
||||
|
||||
data class ApiResponse<T>(
|
||||
val code: String,
|
||||
val msg: String? = "",
|
||||
val data: T? = null
|
||||
) {
|
||||
fun isSuccess(): Boolean = ("00000" == code)
|
||||
|
||||
val result: T?
|
||||
get() = data
|
||||
val message: String?
|
||||
get() = msg
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
open class BaseBean() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 字典类型 如仓库列表 物品类型 存储方式等
|
||||
*/
|
||||
@Parcelize
|
||||
data class DictType(
|
||||
val id: String?=null,
|
||||
val value: String?=null
|
||||
) : Parcelable
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Parcelize
|
||||
data class EquipmentInfo(
|
||||
@SerializedName("appPackageLocalUrl")
|
||||
val appPackageLocalUrl: String? = "",
|
||||
@SerializedName("appPackageUrl")
|
||||
val appPackageUrl: String? = "",
|
||||
@SerializedName("arcsoftActiveKey")
|
||||
val arcsoftActiveKey: String? = "",
|
||||
@SerializedName("arcsoftAppId")
|
||||
val arcsoftAppId: String? = "",
|
||||
@SerializedName("arcsoftSdkKey")
|
||||
val arcsoftSdkKey: String? = "",
|
||||
@SerializedName("arrayCross")
|
||||
val arrayCross: Int? = 0,
|
||||
@SerializedName("arrayMode")
|
||||
val arrayMode: String? = "",
|
||||
@SerializedName("arrayVertical")
|
||||
val arrayVertical: Int? = 0,
|
||||
@SerializedName("canteenId")
|
||||
val canteenId: String? = "",
|
||||
@SerializedName("canteenName")
|
||||
val canteenName: String? = "",
|
||||
@SerializedName("clientServerIp")
|
||||
val clientServerIp: String? = "",
|
||||
@SerializedName("createBy")
|
||||
val createBy: String? = "",
|
||||
@SerializedName("createTime")
|
||||
val createTime: String? = "",
|
||||
@SerializedName("customerName")
|
||||
val customerName: String? = "",
|
||||
@SerializedName("equipmentCode")
|
||||
val equipmentCode: String? = "",
|
||||
@SerializedName("equipmentName")
|
||||
val equipmentName: String? = "",
|
||||
@SerializedName("equipmentName_dictText")
|
||||
val equipmentNameDictText: String? = "",
|
||||
@SerializedName("id")
|
||||
val id: String? = "",
|
||||
@SerializedName("isSync")
|
||||
val isSync: Int? = 0,
|
||||
@SerializedName("mqName")
|
||||
val mqName: String? = "",
|
||||
@SerializedName("mqPassword")
|
||||
val mqPassword: String? = "",
|
||||
@SerializedName("orgCode")
|
||||
val orgCode: String? = "",
|
||||
@SerializedName("owningTrack")
|
||||
val owningTrack: Int? = 0,
|
||||
@SerializedName("owningTrackOrder")
|
||||
val owningTrackOrder: Int? = 0,
|
||||
@SerializedName("screenHtml")
|
||||
val screenHtml: String? = "",
|
||||
@SerializedName("serviceRequestAddress")
|
||||
val serviceRequestAddress: String? = "",
|
||||
@SerializedName("status")
|
||||
val status: Int? = 0,
|
||||
@SerializedName("sysOrgCode")
|
||||
val sysOrgCode: String? = "",
|
||||
@SerializedName("updateBy")
|
||||
val updateBy: String? = "",
|
||||
@SerializedName("updateTime")
|
||||
val updateTime: String? = "",
|
||||
@SerializedName("zhstServerIp")
|
||||
val zhstServerIp: String? = ""
|
||||
) : Parcelable
|
||||
@@ -0,0 +1,267 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.sw.inbound.GlobalData
|
||||
import com.sw.inbound.ext.toFormattedString
|
||||
import com.sw.inbound.ext.toSafeString
|
||||
import com.sw.inbound.model.response.SearchGoodsInfo.Record.UnitVo
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.math.BigDecimal
|
||||
|
||||
/**
|
||||
* 物品信息
|
||||
*/
|
||||
@Parcelize
|
||||
data class GoodsInfo(
|
||||
/**
|
||||
* 数据id
|
||||
*/
|
||||
var id: String? = "",
|
||||
/**
|
||||
* 物品Id
|
||||
*/
|
||||
var goodId: String? = "",
|
||||
/**
|
||||
* 物品名称
|
||||
*/
|
||||
var goodName: String? = null,
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
var recUnitPriceTaxIn: Double? = null,
|
||||
var recUnitPriceTaxInBak: Double? = null,
|
||||
|
||||
// 单价 界面显示
|
||||
var recUnitPriceTaxInTemp: String = "",
|
||||
|
||||
/**
|
||||
* 新单价 部分收货需要
|
||||
*/
|
||||
var newRecUnitPriceTaxIn: Double? = null,
|
||||
|
||||
var newRecUnitPriceTaxInTemp: String = "",
|
||||
/**
|
||||
* 单位名称
|
||||
*/
|
||||
var unitName: String? = null,
|
||||
var unitNameBak: String? = null,
|
||||
|
||||
/**
|
||||
* 采购单位id
|
||||
*/
|
||||
var purchaseUnitId: String? = null,
|
||||
/**
|
||||
* 采购数量
|
||||
*/
|
||||
var receiveCount: Double? = null,
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
var recPriceExItem: Double? = null,
|
||||
// 金额 界面显示
|
||||
var recPriceExItemTemp: String = "",
|
||||
/**
|
||||
* 仓库id
|
||||
*/
|
||||
var warehouseId: String? = null,
|
||||
/**
|
||||
* 仓库名称
|
||||
*/
|
||||
var warehouseName: String? = null,
|
||||
|
||||
/**
|
||||
* 物品采购单位关系
|
||||
*/
|
||||
var goodsPurId: String? = "",
|
||||
/**
|
||||
* 采购库存转换值
|
||||
*/
|
||||
var purchaseValue: Int? = 0,
|
||||
/**
|
||||
* 库存单位
|
||||
*/
|
||||
var kcUnitName: String? = "",
|
||||
/**
|
||||
* 消耗转换值
|
||||
*/
|
||||
var consumeValue: String? = "",
|
||||
|
||||
// 收货数量 收货入参
|
||||
var receivedNum: Double? = null,
|
||||
var receivedNumBak: Double? = null,
|
||||
var receiveCountAll: Double? = null,
|
||||
// 收货数量显示
|
||||
var receivedNumTemp: String = "",
|
||||
// 重量 收货入参
|
||||
var goodsWeight: BigDecimal? = null,
|
||||
|
||||
// 已调整
|
||||
var isAdjusted: Boolean = false,
|
||||
|
||||
// 选中物品的可选单位
|
||||
var unitList: List<UnitVo> = emptyList<UnitVo>(),
|
||||
//--------------------------------------------------------
|
||||
var isSelected: Boolean = false,
|
||||
var isLocalGoods: Boolean = false,
|
||||
var kcUnitId: String?="",
|
||||
|
||||
var recPriceInItem:Double?=null,
|
||||
var goodsCount:Double?=null,
|
||||
var goodsUnitPrice:Double?=null,
|
||||
var goodsPrice:Double?=null,
|
||||
|
||||
var unitHint:String?="",
|
||||
var buyToInventoryValue:String?="",
|
||||
|
||||
//--------------------------------------------------------
|
||||
) : Parcelable, BaseBean() {
|
||||
|
||||
val goodNameStr: String
|
||||
get() {
|
||||
if (goodName == null) return "-"
|
||||
return goodName!!
|
||||
}
|
||||
val receivedNumStr: String
|
||||
get() {
|
||||
if (receivedNum == null)
|
||||
return ""
|
||||
return receivedNum?.toFormattedString() ?: ""
|
||||
}
|
||||
|
||||
val receivedNumListStr: String
|
||||
get() {
|
||||
if (receivedNum == null)
|
||||
return "-"
|
||||
return receivedNum?.toSafeString(unitName) ?: "-"
|
||||
}
|
||||
|
||||
val receivedNumCount: String
|
||||
get() {
|
||||
if (receivedNum == null || receivedNum == 0.toDouble())
|
||||
return "0"
|
||||
|
||||
return receivedNum?.toSafeString(unitName) ?: "0"
|
||||
}
|
||||
|
||||
val dualCountStr: String
|
||||
get() {
|
||||
return if (receivedNum != null && receivedNum != 0.toDouble() && receiveCount != null && receiveCount != 0.toDouble()) {
|
||||
"${receivedNum.toSafeString(unitName)}/${receiveCount.toSafeString(unitName)}"
|
||||
} else if (receivedNum != null && receivedNum != 0.toDouble()) {
|
||||
"${receivedNum.toSafeString(unitName)}/-"
|
||||
} else {
|
||||
receiveCountListStr
|
||||
}
|
||||
}
|
||||
|
||||
val recUnitPriceTaxInStr: String
|
||||
get() {
|
||||
if (recUnitPriceTaxIn == 0.toDouble()) return ""
|
||||
return recUnitPriceTaxIn?.toFormattedString() ?: ""
|
||||
}
|
||||
|
||||
val recUnitPriceTaxInListStr: String
|
||||
get() {
|
||||
if (recUnitPriceTaxIn == 0.toDouble()) return "-"
|
||||
return recUnitPriceTaxIn?.toFormattedString() ?: "-"
|
||||
}
|
||||
|
||||
val newRecUnitPriceTaxInListStr: String
|
||||
get() {
|
||||
if (newRecUnitPriceTaxIn == 0.toDouble()) return "-"
|
||||
return newRecUnitPriceTaxIn?.toFormattedString() ?: "-"
|
||||
}
|
||||
|
||||
val receiveCountStr: String
|
||||
get() {
|
||||
return when (receiveCount) {
|
||||
0.toDouble() -> ""
|
||||
else -> receiveCount?.toSafeString(unitName) ?: ""
|
||||
}
|
||||
}
|
||||
val receiveCountListStr: String
|
||||
get() {
|
||||
return when (receiveCount) {
|
||||
0.toDouble() -> "-"
|
||||
else -> receiveCount?.toSafeString(unitName) ?: "-"
|
||||
}
|
||||
}
|
||||
|
||||
val recPriceExItemStr: String
|
||||
get() {
|
||||
return when (recPriceExItem) {
|
||||
0.toDouble() -> ""
|
||||
else -> recPriceExItem?.toFormattedString() ?: ""
|
||||
}
|
||||
}
|
||||
val recPriceExItemListStr: String
|
||||
get() {
|
||||
return when (recPriceExItem) {
|
||||
0.toDouble() -> "-"
|
||||
else -> recPriceExItem?.toFormattedString() ?: "-"
|
||||
}
|
||||
}
|
||||
|
||||
val unitNameStr: String
|
||||
get() {
|
||||
if (unitName == null) return "-"
|
||||
return unitName!!
|
||||
}
|
||||
|
||||
val goodsWeightStr: String
|
||||
get() {
|
||||
if (goodsWeight == null) return ""
|
||||
|
||||
// 小于10 kg 显示 g
|
||||
if (goodsWeight!!.toInt() < 1) {
|
||||
return goodsWeight!!.multiply(BigDecimal(1000)).toString()
|
||||
}
|
||||
return goodsWeight?.toFormattedString() ?: ""
|
||||
}
|
||||
|
||||
val goodsWeightUnitStr: String
|
||||
get() {
|
||||
return if (goodsWeight == null || goodsWeight!!.toInt() < 1) {
|
||||
"克"
|
||||
} else {
|
||||
"千克"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var purchaseUnitIdStr: String
|
||||
set(value) {
|
||||
purchaseUnitIdStr = value
|
||||
}
|
||||
get() {
|
||||
return GlobalData.unitTypeList.find { it.id == purchaseUnitId.toString() }?.value ?: ""
|
||||
}
|
||||
|
||||
val warehouseNameStr: String
|
||||
get() {
|
||||
if (warehouseName == null) {
|
||||
return ""
|
||||
}
|
||||
return warehouseName!!
|
||||
}
|
||||
|
||||
fun hasNullField(): String? {
|
||||
if (warehouseId.isNullOrBlank()) {
|
||||
return "请选择仓库"
|
||||
}
|
||||
if (receivedNum == null || receivedNum == 0.toDouble()) {
|
||||
return "请输入收货数量或进行称重"
|
||||
}
|
||||
if (newRecUnitPriceTaxIn == null || newRecUnitPriceTaxIn == 0.toDouble()) {
|
||||
return "请输入收货单价"
|
||||
}
|
||||
if (recPriceExItem == null || recPriceExItem == 0.toDouble()) {
|
||||
return "请输入收货金额"
|
||||
}
|
||||
if (goodsWeight == null || goodsWeight!!.toFloat() <= 0) {
|
||||
return "请放入要称重的物品"
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 物品类型
|
||||
*/
|
||||
@Parcelize
|
||||
data class GoodsType(
|
||||
@SerializedName("allType")
|
||||
val allType: List<AllType?>? = listOf()
|
||||
) : Parcelable {
|
||||
@Parcelize
|
||||
data class AllType(
|
||||
@SerializedName("createTime")
|
||||
val createTime: String? = "",
|
||||
@SerializedName("createUserNo")
|
||||
val createUserNo: String? = "",
|
||||
@SerializedName("eaId")
|
||||
val eaId: Int? = 0,
|
||||
@SerializedName("ftype")
|
||||
val ftype: String? = "",
|
||||
/**
|
||||
* 物品id
|
||||
*/
|
||||
@SerializedName("id")
|
||||
val id: String? = "",
|
||||
@SerializedName("idResult")
|
||||
val idResult: String? = "",
|
||||
@SerializedName("kidTypes")
|
||||
val kidTypes: List<String?>? = listOf(),
|
||||
@SerializedName("pageNum")
|
||||
val pageNum: String? = "",
|
||||
@SerializedName("pageSize")
|
||||
val pageSize: String? = "",
|
||||
@SerializedName("status")
|
||||
val status: Boolean? = false,
|
||||
@SerializedName("superName")
|
||||
val superName: String? = "",
|
||||
@SerializedName("typeCode")
|
||||
val typeCode: String? = "",
|
||||
/**
|
||||
* 物品类型
|
||||
*/
|
||||
@SerializedName("typeName")
|
||||
val typeName: String? = "",
|
||||
@SerializedName("updateTime")
|
||||
val updateTime: String? = "",
|
||||
@SerializedName("updateUserNo")
|
||||
val updateUserNo: String? = ""
|
||||
) : Parcelable
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
/**
|
||||
* 采购详情
|
||||
*/
|
||||
data class PurchaseInfo(
|
||||
/**
|
||||
* 单据id
|
||||
*/
|
||||
var id: String,
|
||||
/**
|
||||
* 供应商id
|
||||
*/
|
||||
var supplierId: String,
|
||||
/**
|
||||
* 供应商名称
|
||||
*/
|
||||
var supplierName: String? = "",
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
var purCode: String? = "",
|
||||
/**
|
||||
* 收货单号
|
||||
*/
|
||||
var receiveCode: String? = "",
|
||||
|
||||
/**
|
||||
* 物品信息
|
||||
*/
|
||||
var receiveGoodsInfoList: List<GoodsInfo> = emptyList<GoodsInfo>(),
|
||||
// 自用
|
||||
var warehouseName: String = "选择仓库"
|
||||
) : BaseBean() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
data class RecGoodsName(
|
||||
var nameList: List<String>
|
||||
)
|
||||
@@ -0,0 +1,149 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.sw.inbound.utils.ext.roundedDecimalPlace
|
||||
import com.sw.inbound.utils.removeTrailingZeros
|
||||
import kotlinx.parcelize.IgnoredOnParcel
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 搜索商品结果
|
||||
*/
|
||||
@Parcelize
|
||||
data class SearchGoodsInfo(
|
||||
@SerializedName("current")
|
||||
val current: Int? = 0,
|
||||
@SerializedName("hitCount")
|
||||
val hitCount: Boolean? = false,
|
||||
@SerializedName("optimizeCountSql")
|
||||
val optimizeCountSql: Boolean? = false,
|
||||
@SerializedName("orders")
|
||||
val orders: List<String?>? = listOf(),
|
||||
@SerializedName("pages")
|
||||
val pages: Int? = 0,
|
||||
@SerializedName("records")
|
||||
val records: List<Record>? = listOf(),
|
||||
@SerializedName("searchCount")
|
||||
val searchCount: Boolean? = false,
|
||||
@SerializedName("size")
|
||||
val size: Int? = 0,
|
||||
@SerializedName("total")
|
||||
val total: Int? = 0
|
||||
) : Parcelable {
|
||||
@Parcelize
|
||||
data class Record(
|
||||
@SerializedName("relativeUrl")
|
||||
val relativeUrl: String? = "",
|
||||
@SerializedName("goodsCode")
|
||||
val goodsCode: String? = "",
|
||||
@SerializedName("id")
|
||||
val id: String? = "",
|
||||
/**
|
||||
* 物品id
|
||||
*/
|
||||
// @SerializedName("goodsId")
|
||||
// val goodsId: String? = "",
|
||||
/**
|
||||
* 物品名称
|
||||
*/
|
||||
@SerializedName("goodsName")
|
||||
val goodsName: String? = "",
|
||||
/**
|
||||
* 库存单位id
|
||||
*/
|
||||
@SerializedName("kcUnitId")
|
||||
val kcUnitId: Int? = 0,
|
||||
/**
|
||||
* 库存单位名称
|
||||
*/
|
||||
@SerializedName("kcUnitName")
|
||||
val kcUnitName: String? = "",
|
||||
|
||||
/**
|
||||
* 库存与克的转换值
|
||||
*/
|
||||
val consumeValue: String? = "",
|
||||
val purchaseValue: String? = "",
|
||||
|
||||
@SerializedName("specification")
|
||||
val specification: String? = "",
|
||||
@SerializedName("typeId")
|
||||
val typeId: Int? = 0,
|
||||
@SerializedName("typeName")
|
||||
val typeName: String? = "",
|
||||
/**
|
||||
* 采购单位列表
|
||||
*/
|
||||
@SerializedName("unitVoList")
|
||||
val unitVoList: List<UnitVo>? = listOf(),
|
||||
@SerializedName("zjmCode")
|
||||
val zjmCode: String? = "",
|
||||
var isSelected: Boolean = false,
|
||||
var score: Int = 0
|
||||
) : Parcelable {
|
||||
val goodsNameStr: String
|
||||
get() {
|
||||
if (goodsName == null) return ""
|
||||
return goodsName
|
||||
}
|
||||
|
||||
|
||||
@Parcelize
|
||||
data class UnitVo(
|
||||
/**
|
||||
* 单位关系id
|
||||
*/
|
||||
@SerializedName("businessUnitId")
|
||||
val businessUnitId: String? = "",
|
||||
/**
|
||||
* 转换值
|
||||
*/
|
||||
@SerializedName("buyToInventoryValue")
|
||||
val buyToInventoryValue: String? = "",
|
||||
@SerializedName("isDefault")
|
||||
val isDefault: Int? = 0,
|
||||
/**
|
||||
* 采购单位名称
|
||||
*/
|
||||
@SerializedName("purchaseUnitName")
|
||||
val purchaseUnitName: String? = "",
|
||||
@SerializedName("value")
|
||||
val value: String? = "",
|
||||
/**
|
||||
* 采购库存转换值
|
||||
*/
|
||||
val consumeValue: String? = "",
|
||||
/**
|
||||
* 消耗转换值
|
||||
*/
|
||||
val purchaseValue: Double? = 0.0,
|
||||
) : Parcelable {
|
||||
|
||||
/**
|
||||
* 购买单位数值
|
||||
*/
|
||||
fun getPurchaseUnitValue(value: Int): String {
|
||||
val defZero = 0.toDouble()
|
||||
val num = when (purchaseUnitName) {
|
||||
"千克", "公斤" -> 2
|
||||
"斤" -> 1
|
||||
else -> 0
|
||||
}
|
||||
if (purchaseValue == null || purchaseValue == defZero || consumeValue.isNullOrBlank()) {
|
||||
return ""
|
||||
}
|
||||
var consumeValueDouble: Double
|
||||
try {
|
||||
consumeValueDouble = consumeValue.toDouble()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
return ""
|
||||
}
|
||||
val count = (value / purchaseValue / consumeValueDouble).roundedDecimalPlace(num)
|
||||
return count.removeTrailingZeros()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
|
||||
//import android.os.Parcelable
|
||||
//import com.google.gson.annotations.SerializedName
|
||||
//import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 存储方式
|
||||
*/
|
||||
|
||||
data class StorageType(
|
||||
val id:String?=null,
|
||||
val value:String?=null,
|
||||
val text:String?=null,
|
||||
val title:String?=null,
|
||||
val label:String?=null,
|
||||
|
||||
)
|
||||
//@Parcelize
|
||||
//data class StorageType(
|
||||
// @SerializedName("childList")
|
||||
// val childList: List<String?>? = listOf(),
|
||||
// @SerializedName("createTime")
|
||||
// val createTime: String? = "",
|
||||
// @SerializedName("createUserNo")
|
||||
// val createUserNo: String? = "",
|
||||
// @SerializedName("depth")
|
||||
// val depth: String? = "",
|
||||
// @SerializedName("description")
|
||||
// val description: String? = "",
|
||||
// @SerializedName("dictId")
|
||||
// val dictId: String? = "",
|
||||
// @SerializedName("eaId")
|
||||
// val eaId: Int? = 0,
|
||||
// @SerializedName("fid")
|
||||
// val fid: String? = "",
|
||||
// @SerializedName("id")
|
||||
// val id: String? = "",
|
||||
// @SerializedName("idc")
|
||||
// val idc: String? = "",
|
||||
// /**
|
||||
// * 名称
|
||||
// */
|
||||
// @SerializedName("itemText")
|
||||
// val itemText: String? = "",
|
||||
// /**
|
||||
// * 对应值
|
||||
// */
|
||||
// @SerializedName("itemValue")
|
||||
// val itemValue: String? = "",
|
||||
// @SerializedName("level")
|
||||
// val level: Int? = 0,
|
||||
// @SerializedName("sortOrder")
|
||||
// val sortOrder: Int? = 0,
|
||||
// @SerializedName("status")
|
||||
// val status: Int? = 0,
|
||||
// @SerializedName("updateTime")
|
||||
// val updateTime: String? = "",
|
||||
// @SerializedName("updateUserNo")
|
||||
// val updateUserNo: String? = ""
|
||||
//) : Parcelable
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 采购信息
|
||||
*/
|
||||
@Parcelize
|
||||
data class SupplierInfo(
|
||||
@SerializedName("createTime")
|
||||
val createTime: String? = "",
|
||||
@SerializedName("createUserNo")
|
||||
val createUserNo: String? = "",
|
||||
@SerializedName("dateStart")
|
||||
val dateStart: String? = "",
|
||||
@SerializedName("dateStop")
|
||||
val dateStop: String? = "",
|
||||
@SerializedName("eaId")
|
||||
val eaId: Int? = 0,
|
||||
@SerializedName("eaIds")
|
||||
val eaIds: String? = "",
|
||||
@SerializedName("giftAll")
|
||||
val giftAll: Double? = 0.0,
|
||||
/**
|
||||
* 物品项
|
||||
*/
|
||||
@SerializedName("goodCount")
|
||||
val goodCount: Int = 0,
|
||||
/**
|
||||
* 订单id
|
||||
*/
|
||||
@SerializedName("id")
|
||||
val id: String? = "",
|
||||
@SerializedName("pageNum")
|
||||
val pageNum: String? = "",
|
||||
@SerializedName("pageSize")
|
||||
val pageSize: String? = "",
|
||||
/**
|
||||
* 采购单位
|
||||
*/
|
||||
@SerializedName("purCode")
|
||||
val purCode: String? = "-",
|
||||
@SerializedName("purDateStart")
|
||||
val purDateStart: String? = "",
|
||||
@SerializedName("purDateStop")
|
||||
val purDateStop: String? = "",
|
||||
/**
|
||||
* 采购日期
|
||||
*/
|
||||
@SerializedName("purchaseDate")
|
||||
val purchaseDate: String? = "",
|
||||
@SerializedName("purchaseDates")
|
||||
val purchaseDates: String? = "",
|
||||
@SerializedName("receiveAddress")
|
||||
val receiveAddress: String? = "",
|
||||
/**
|
||||
* 单号
|
||||
*/
|
||||
@SerializedName("receiveCode")
|
||||
val receiveCode: String? = "",
|
||||
@SerializedName("receiveCountAll")
|
||||
val receiveCountAll: Double? = 0.0,
|
||||
/**
|
||||
* 收货时间
|
||||
*/
|
||||
@SerializedName("receiveDate")
|
||||
val receiveDate: String? = "",
|
||||
@SerializedName("receiveDates")
|
||||
val receiveDates: String? = "",
|
||||
@SerializedName("receiveGoodsInfos")
|
||||
val receiveGoodsInfos: String? = "",
|
||||
@SerializedName("receiveLogs")
|
||||
val receiveLogs: String? = "",
|
||||
@SerializedName("receivePhone")
|
||||
val receivePhone: String? = "",
|
||||
@SerializedName("receivePriceEx")
|
||||
val receivePriceEx: Double? = 0.0,
|
||||
@SerializedName("receivePriceIn")
|
||||
val receivePriceIn: Double? = 0.0,
|
||||
@SerializedName("receiveRemark")
|
||||
val receiveRemark: String? = "",
|
||||
/**
|
||||
* 收货状态1收货关闭/2收货完成/3待收货 /4部分收货
|
||||
*/
|
||||
@SerializedName("receiveStatus")
|
||||
val receiveStatus: Int? = 0,
|
||||
/**
|
||||
* 操作人
|
||||
*/
|
||||
@SerializedName("receiveUser")
|
||||
val receiveUser: String = "",
|
||||
@SerializedName("receivedNum")
|
||||
val receivedNum: String? = "",
|
||||
@SerializedName("restId")
|
||||
val restId: String? = "",
|
||||
/**
|
||||
* 供应商id
|
||||
*/
|
||||
@SerializedName("supplierId")
|
||||
val supplierId: String ? = "",
|
||||
/**
|
||||
* 供应商
|
||||
*/
|
||||
@SerializedName("supplierName")
|
||||
val supplierName: String? = "",
|
||||
@SerializedName("taxRateAll")
|
||||
val taxRateAll: Double? = 0.0,
|
||||
@SerializedName("updateTime")
|
||||
val updateTime: String? = "",
|
||||
@SerializedName("updateUserNo")
|
||||
val updateUserNo: String? = "",
|
||||
@SerializedName("userName")
|
||||
val userName: String? = "",
|
||||
@SerializedName("warehouseId")
|
||||
val warehouseId: String? = ""
|
||||
) : Parcelable
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 供应商列表返回
|
||||
*/
|
||||
@Parcelize
|
||||
data class SupplierResponse(
|
||||
@SerializedName("current")
|
||||
val current: Int? = 0,
|
||||
@SerializedName("hitCount")
|
||||
val hitCount: Boolean? = false,
|
||||
@SerializedName("optimizeCountSql")
|
||||
val optimizeCountSql: Boolean? = false,
|
||||
@SerializedName("orders")
|
||||
val orders: List<SupplierInfo?>? = listOf(),
|
||||
@SerializedName("pages")
|
||||
val pages: Int? = 0,
|
||||
/**
|
||||
* 供应商列表
|
||||
*/
|
||||
@SerializedName("records")
|
||||
val records: List<SupplierInfo?>? = listOf(),
|
||||
@SerializedName("searchCount")
|
||||
val searchCount: Boolean? = false,
|
||||
@SerializedName("size")
|
||||
val size: Int? = 0,
|
||||
@SerializedName("total")
|
||||
val total: Int? = 0
|
||||
) : Parcelable
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.sw.inbound.model.response
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
@Parcelize
|
||||
data class User(
|
||||
@SerializedName("eaCode")
|
||||
val eaCode: String? = null,
|
||||
@SerializedName("eaId")
|
||||
val eaId: String? = null,
|
||||
@SerializedName("eaIdList")
|
||||
val eaIdList: String? = null,
|
||||
@SerializedName("eaIdListName")
|
||||
val eaIdListName: String? = null,
|
||||
@SerializedName("eaLogoUrl")
|
||||
val eaLogoUrl: String? = null,
|
||||
@SerializedName("eaName")
|
||||
val eaName: String? = null,
|
||||
@SerializedName("errorCode")
|
||||
val errorCode: String? = null,
|
||||
@SerializedName("errorMsg")
|
||||
val errorMsg: String? = null,
|
||||
@SerializedName("id")
|
||||
val id: Int? = 0,
|
||||
@SerializedName("loginIp")
|
||||
val loginIp: String? = null,
|
||||
@SerializedName("name")
|
||||
val name: String? = "",
|
||||
@SerializedName("phone")
|
||||
val phone: String? = "",
|
||||
@SerializedName("token")
|
||||
val token: String? = "",
|
||||
@SerializedName("userCode")
|
||||
val userCode: String? = null,
|
||||
@SerializedName("userName")
|
||||
val userName: String? = ""
|
||||
) : Parcelable
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user