Browse Source

2024-12-12 新增 / 修改

新增:
1. 团组经理主管 - 出入境费用明细 - 导出到收款账单 / 团组成员名单下载
2. 市场客户资料 根据省域更新客户级别 / 客户类别选项
3. 市场客户资料 - 根据客户级别更新客户类别选项

修改:
1. UI bug修改
2. 部分UI逻辑修改
zhaiy 3 weeks ago
parent
commit
9f31254fa4

+ 3 - 0
app/src/main/java/com/pan_american/android/data/model/customer_resource/company_customer/network/UpdateClientTypeRequest.kt

@@ -0,0 +1,3 @@
+package com.pan_american.android.data.model.customer_resource.company_customer.network
+
+data class UpdateClientTypeRequest(val setDataIdArr: List<Int>)

+ 9 - 0
app/src/main/java/com/pan_american/android/data/model/customer_resource/company_customer/network/UpdateClientTypeResponse.kt

@@ -0,0 +1,9 @@
+package com.pan_american.android.data.model.customer_resource.company_customer.network
+
+import com.pan_american.android.base.BaseResponse
+import com.pan_american.android.data.model.common.entity.Selector
+
+data class UpdateClientTypeResponse(val data: Data): BaseResponse() {
+
+    inner class Data (val typeArr: ArrayList<Selector>, val lvArr: ArrayList<Selector>)
+}

+ 3 - 0
app/src/main/java/com/pan_american/android/data/model/group_management/entry_and_exit_fee_detail/network/DownloadCustomerListRequest.kt

@@ -0,0 +1,3 @@
+package com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network
+
+data class DownloadCustomerListRequest(val portType: Int = 2, val diId: Int, val exportType: Int = 3, val subTypeId: Int = 1)

+ 5 - 0
app/src/main/java/com/pan_american/android/data/model/group_management/entry_and_exit_fee_detail/network/DownloadCustomerListResponse.kt

@@ -0,0 +1,5 @@
+package com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network
+
+import com.pan_american.android.base.BaseResponse
+
+data class DownloadCustomerListResponse(val data: String): BaseResponse()

+ 4 - 2
app/src/main/java/com/pan_american/android/data/model/group_management/entry_and_exit_fee_detail/network/UpdateOtherPaymentRequest.kt

@@ -5,10 +5,12 @@ import com.pan_american.android.OASystem
 class UpdateOtherPaymentRequest {
     val portType = 2
     val currUserId = OASystem.userInfo.userId
-    var subId = 0
+
     var diid = 0
-    var setDataId = 0
     var index = 0
+
+    var subId = 0
+    var setDataId = 0
     var cost = 0.0
     var currency = 0
     var subTotal = 0.0

+ 35 - 0
app/src/main/java/com/pan_american/android/data/network/APIService.kt

@@ -37,6 +37,8 @@ import com.pan_american.android.data.model.customer_resource.company_customer.ne
 import com.pan_american.android.data.model.customer_resource.company_customer.network.MarketCustomerRequest
 import com.pan_american.android.data.model.customer_resource.company_customer.network.MarketCustomerResponse
 import com.pan_american.android.data.model.customer_resource.company_customer.network.MarketCustomerSiftListResponse
+import com.pan_american.android.data.model.customer_resource.company_customer.network.UpdateClientTypeRequest
+import com.pan_american.android.data.model.customer_resource.company_customer.network.UpdateClientTypeResponse
 import com.pan_american.android.data.model.customer_resource.market_sales_revenue.network.GenerateMarketSalesDocumentRequest
 import com.pan_american.android.data.model.customer_resource.market_sales_revenue.network.GenerateMarketSalesDocumentResponse
 import com.pan_american.android.data.model.customer_resource.market_sales_revenue.network.MarketSalesAddVisitHistoryRequest
@@ -151,6 +153,8 @@ import com.pan_american.android.data.model.group_invite_official.official_visits
 import com.pan_american.android.data.model.group_invite_official.official_visits.network.UpdateOfficialVisitRequest
 import com.pan_american.android.data.model.group_invite_official.official_visits.network.UpdateOfficialVisitResponse
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.DeleteEntryAndExitPaymentItemRequest
+import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.DownloadCustomerListRequest
+import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.DownloadCustomerListResponse
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.EntryAndExitDetailRequest
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.EntryAndExitDetailResponse
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.EntryAndExitGroupListRequest
@@ -174,6 +178,7 @@ import com.pan_american.android.data.model.group_management.entry_and_exit_fee_d
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.UpdateInBoardPaymentResponse
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.UpdateInternationalTravelRequest
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.UpdateInternationalTravelResponse
+import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.UpdateOtherPaymentRequest
 import com.pan_american.android.data.model.group_management.group_info.network.GetSellCodeResponse
 import com.pan_american.android.data.model.group_management.group_info.network.GroupCustomerListRequest
 import com.pan_american.android.data.model.group_management.group_info.network.GroupCustomerListResponse
@@ -465,6 +470,18 @@ interface APIService {
     @POST("/api/MarketCustomerResources/QueryNumberGroups")
     fun queryNumberGroups(): Call<GroupInfoResponse>
 
+    /**
+     * 市场客户资料,根据选择省域更新客户级别 / 客户类别
+     */
+    @POST("/api/MarketCustomerResources/QueryClientType")
+    fun updateClientTypeAndClassByProvince(@Body updateClientTypeRequest: UpdateClientTypeRequest): Call<UpdateClientTypeResponse>
+
+    /**
+     * 市场客户资料,根据客户级别更新客户类别
+     */
+    @POST("/api/MarketCustomerResources/QueryClientTypeSecond")
+    fun updateClientTypeList(@Body updateClientTypeRequest: UpdateClientTypeRequest): Call<SelectorResponse>
+
     /**
      * 市场客户资料,名片识别
      */
@@ -1279,6 +1296,18 @@ interface APIService {
     @POST("/api/Groups/EnterExitCostMobileGroupData")
     fun getEntryAndExitGroupList(@Body entryAndExitGroupListRequest: EntryAndExitGroupListRequest): Call<EntryAndExitGroupListResponse>
 
+    /**
+     * 出入境费用明细,费用导出到出款账单
+     */
+    @GET("/api/Groups/NationalTravelFeeImportReceivables/{groupId}")
+    fun exportPaymentToCollectionBill(@Path("groupId") groupId: Int, @Header("Authorization") headerValue: String = OASystem.token): Call<BaseResponse>
+
+    /**
+     * 出入境费用明细,下载团组成员名单
+     */
+    @POST("/api/Groups/PostEnterExitCostDownload")
+    fun downloadCustomerList(@Body downloadCustomerListRequest: DownloadCustomerListRequest): Call<DownloadCustomerListResponse>
+
     /**
      * 出入境费用明细,团组三公详细
      */
@@ -1374,4 +1403,10 @@ interface APIService {
      */
     @POST("/api/Groups/EnterExitCostMobileOtherItemCurrencyData")
     fun getEntryAndExitOtherPaymentBaseData(@Body otherPaymentDataSourceRequest: OtherPaymentDataSourceRequest): Call<OtherPaymentDataSourceResponse>
+
+    /**
+     * 出入境费用详情,其它款项 - 更新其它款项
+     */
+    @POST("/api/Groups/EnterExitCostMobileOpSingleStep7")
+    fun updateEntryAndExitOtherPayment(@Body updateOtherPaymentRequest: UpdateOtherPaymentRequest): Call<BaseResponse>
 }

+ 76 - 1
app/src/main/java/com/pan_american/android/ui/customer_resource/company_customer/CustomerSiftFragment.kt

@@ -14,8 +14,11 @@ import com.pan_american.android.base.ListAdapter
 import com.pan_american.android.data.model.common.adapter.SiftListAdapter
 import com.pan_american.android.data.model.common.entity.Selector
 import com.pan_american.android.data.model.common.entity.SiftListItem
+import com.pan_american.android.data.model.common.network.SelectorResponse
 import com.pan_american.android.data.model.customer_resource.company_customer.network.GroupInfoResponse
 import com.pan_american.android.data.model.customer_resource.company_customer.network.MarketCustomerRequest
+import com.pan_american.android.data.model.customer_resource.company_customer.network.UpdateClientTypeRequest
+import com.pan_american.android.data.model.customer_resource.company_customer.network.UpdateClientTypeResponse
 import com.pan_american.android.data.network.APIService
 import com.pan_american.android.data.network.ServiceCreator
 import com.pan_american.android.databinding.FragmentCustomerFilterBinding
@@ -137,7 +140,7 @@ class CustomerSiftFragment : BaseFragment<FragmentCustomerFilterBinding>() {
         //初始化右侧省域主界面LinearLayout
         provincePage = binding.provincePage
 
-        initServiceClass()
+        initProvince()
 
         if (OASystem.userInfo.userId != 21 && OASystem.userInfo.userId != 95) {
             binding.director.visibility = View.GONE
@@ -480,6 +483,8 @@ class CustomerSiftFragment : BaseFragment<FragmentCustomerFilterBinding>() {
                         adapter.notifyItemChanged(customerLevelPosition)
                     }
                 }
+
+                updateCustomerClass()
             }
         }
     }
@@ -684,8 +689,78 @@ class CustomerSiftFragment : BaseFragment<FragmentCustomerFilterBinding>() {
                         range = provinceList[position].id
                         provincePosition = position
                     }
+
+                    updateCustomerClassAndCustomerLevelList()
+                }
+            }
+    }
+
+    private fun updateCustomerClassAndCustomerLevelList() {
+        apiService.updateClientTypeAndClassByProvince(UpdateClientTypeRequest(listOf(range))).enqueue(object : Callback<UpdateClientTypeResponse> {
+            override fun onResponse(call: Call<UpdateClientTypeResponse>, response: Response<UpdateClientTypeResponse>) {
+                val updateResponse = response.body()
+
+                if (updateResponse != null) {
+                    if (updateResponse.code == 200) {
+
+                        customerClass.clear()
+                        customerLevel.clear()
+
+                        updateResponse.data.apply {
+                            for (item in typeArr) {
+                                customerClass.add(item)
+                            }
+
+                            for (item in lvArr) {
+                                customerLevel.add(item)
+                            }
+                        }
+
+                        lvlid = 0
+                        category = 0
+
+                        customerLevelPosition = -1
+                        customerClassPosition = -1
+
+                    } else {
+                        showMessage(updateResponse.msg)
+                    }
                 }
             }
+
+            override fun onFailure(p0: Call<UpdateClientTypeResponse>, p1: Throwable) {
+                showErrorInfo(R.string.interface_request_error)
+            }
+        })
     }
 
+    private fun updateCustomerClass() {
+        apiService.updateClientTypeList(UpdateClientTypeRequest(listOf(lvlid))).enqueue(object : Callback<SelectorResponse> {
+            override fun onResponse(call: Call<SelectorResponse>, response: Response<SelectorResponse>) {
+                val updateResponse = response.body()
+
+                if (updateResponse != null) {
+                    if (updateResponse.code == 200) {
+
+                        customerClass.clear()
+
+                        for (item in updateResponse.data) {
+                            customerClass.add(item)
+                        }
+
+                        category = 0
+
+                        customerClassPosition = -1
+
+                    } else {
+                        showMessage(updateResponse.msg)
+                    }
+                }
+            }
+
+            override fun onFailure(p0: Call<SelectorResponse>, p1: Throwable) {
+                showErrorInfo(R.string.interface_request_error)
+            }
+        })
+    }
 }

+ 130 - 18
app/src/main/java/com/pan_american/android/ui/group_management/entry_and_exit_fee_detail/EntryAndExitFeeTotalFragment.kt

@@ -1,5 +1,7 @@
 package com.pan_american.android.ui.group_management.entry_and_exit_fee_detail
 
+import android.content.Intent
+import android.net.Uri
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -7,6 +9,10 @@ import android.view.ViewGroup
 import com.pan_american.android.OASystem
 import com.pan_american.android.R
 import com.pan_american.android.base.BaseFragment
+import com.pan_american.android.base.BaseResponse
+import com.pan_american.android.base.CustomAlertDialog
+import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.DownloadCustomerListRequest
+import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.DownloadCustomerListResponse
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.EntryAndExitDetailResponse
 import com.pan_american.android.data.network.APIService
 import com.pan_american.android.data.network.ServiceCreator
@@ -14,6 +20,9 @@ import com.pan_american.android.databinding.FragmentEntryAndExitFeeTotalBinding
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
 
 class EntryAndExitFeeTotalFragment : BaseFragment<FragmentEntryAndExitFeeTotalBinding>() {
 
@@ -52,49 +61,82 @@ class EntryAndExitFeeTotalFragment : BaseFragment<FragmentEntryAndExitFeeTotalBi
     override fun initViews() {
         OASystem.entryAndExitDetailResponse.apply {
             binding.checkInBoard.isChecked = choiceOne == 1
-            binding.inBoardTotal.text = String.format(resources.getString(R.string.total_per_fee_format), choiceOneTotalCost)
+            binding.inBoardTotal.text = String.format(
+                resources.getString(R.string.total_per_fee_format),
+                choiceOneTotalCost
+            )
 
             binding.checkEconomyClass.isChecked = choiceTwoJJ == 1
             binding.checkBusinessClass.isChecked = choiceTwoGW == 1
             binding.checkFirstClass.isChecked = choiceTwoTD == 1
 
             binding.checkAccommodationFee.isChecked = choiceThree == 1
-            binding.accommodationTotal.text = String.format(resources.getString(R.string.total_per_fee_format), choiceThreeTotalCost)
+            binding.accommodationTotal.text = String.format(
+                resources.getString(R.string.total_per_fee_format),
+                choiceThreeTotalCost
+            )
 
             binding.checkMealFee.isChecked = choiceFour == 1
-            binding.mealTotal.text = String.format(resources.getString(R.string.total_per_fee_format), choiceFourTotalCost)
+            binding.mealTotal.text = String.format(
+                resources.getString(R.string.total_per_fee_format),
+                choiceFourTotalCost
+            )
 
             binding.checkPublicAndMiscellaneous.isChecked = choiceFive == 1
-            binding.publicAndMiscellaneousTotal.text = String.format(resources.getString(R.string.total_per_fee_format), choiceFiveTotalCost)
+            binding.publicAndMiscellaneousTotal.text = String.format(
+                resources.getString(R.string.total_per_fee_format),
+                choiceFiveTotalCost
+            )
 
             binding.checkTraining.isChecked = choiceSix == 1
-            binding.trainingTotal.text = String.format(resources.getString(R.string.total_per_fee_format), choiceSixTotalCost)
+            binding.trainingTotal.text = String.format(
+                resources.getString(R.string.total_per_fee_format),
+                choiceSixTotalCost
+            )
 
             binding.checkOther.isChecked = otherExpenses_Checked == 1
-            binding.otherTotal.text = String.format(resources.getString(R.string.total_per_fee_format), otherExpensesTotalCost)
-
-            binding.economyClass.text = String.format(resources.getString(R.string.economy_class_price), outsideJJPay)
-            binding.businessClass.text = String.format(resources.getString(R.string.business_class_price), outsideGWPay)
-            binding.firstClass.text = String.format(resources.getString(R.string.first_class_price), outsideTDPay)
+            binding.otherTotal.text = String.format(
+                resources.getString(R.string.total_per_fee_format),
+                otherExpensesTotalCost
+            )
+
+            binding.economyClass.text =
+                String.format(resources.getString(R.string.economy_class_price), outsideJJPay)
+            binding.businessClass.text =
+                String.format(resources.getString(R.string.business_class_price), outsideGWPay)
+            binding.firstClass.text =
+                String.format(resources.getString(R.string.first_class_price), outsideTDPay)
 
             OASystem.entryAndExitDetailResponse.apply {
-                economyTotalPayment = choiceOneTotalCost + outsideJJPay + choiceThreeTotalCost + choiceFourTotalCost + choiceFiveTotalCost
-                bussinessTotalPayment = choiceOneTotalCost + outsideGWPay + choiceThreeTotalCost + choiceFourTotalCost + choiceFiveTotalCost
-                firstClassTotalPayment = choiceOneTotalCost + outsideTDPay + choiceThreeTotalCost + choiceFourTotalCost + choiceFiveTotalCost
+                economyTotalPayment =
+                    choiceOneTotalCost + outsideJJPay + choiceThreeTotalCost + choiceFourTotalCost + choiceFiveTotalCost
+                bussinessTotalPayment =
+                    choiceOneTotalCost + outsideGWPay + choiceThreeTotalCost + choiceFourTotalCost + choiceFiveTotalCost
+                firstClassTotalPayment =
+                    choiceOneTotalCost + outsideTDPay + choiceThreeTotalCost + choiceFourTotalCost + choiceFiveTotalCost
             }
 
             binding.economyClassTotal.text = if (choiceTwoJJ == 1) {
-                String.format(resources.getString(R.string.economy_class_price), economyTotalPayment)
+                String.format(
+                    resources.getString(R.string.economy_class_price),
+                    economyTotalPayment
+                )
             } else {
                 String.format(resources.getString(R.string.economy_class_price), 0.0)
             }
             binding.businessClassTotal.text = if (choiceTwoGW == 1) {
-                String.format(resources.getString(R.string.business_class_price), bussinessTotalPayment)
+                String.format(
+                    resources.getString(R.string.business_class_price),
+                    bussinessTotalPayment
+                )
             } else {
                 String.format(resources.getString(R.string.business_class_price), 0.0)
             }
             binding.firstClassTotal.text = if (choiceTwoTD == 1) {
-                String.format(resources.getString(R.string.first_class_price), firstClassTotalPayment)
+                String.format(
+                    resources.getString(R.string.first_class_price),
+                    firstClassTotalPayment
+                )
             } else {
                 String.format(resources.getString(R.string.first_class_price), 0.0)
             }
@@ -235,11 +277,23 @@ class EntryAndExitFeeTotalFragment : BaseFragment<FragmentEntryAndExitFeeTotalBi
         }
 
         binding.exportToCollectionBill.setOnClickListener {
-
+            CustomAlertDialog.Builder(OASystem.context).apply {
+                setTitle(resources.getString(R.string.hint))
+                setMessage(resources.getString(R.string.export_to_collection_bil_confirm))
+                setNegativeButtonAndListener(resources.getString(R.string.cancel)) { dialog, _ ->
+                    dialog.dismiss()
+                }
+                setPositiveButtonAndListener(resources.getString(R.string.confirm)) { dialog, _ ->
+
+                    exportPaymentToCollectionBill()
+
+                    dialog.dismiss()
+                }
+            }
         }
 
         binding.downloadGroupMembersList.setOnClickListener {
-
+            downloadCustomerList()
         }
     }
 
@@ -247,4 +301,62 @@ class EntryAndExitFeeTotalFragment : BaseFragment<FragmentEntryAndExitFeeTotalBi
     fun updateView(response: EntryAndExitDetailResponse) {
         initViews()
     }
+
+    private fun exportPaymentToCollectionBill() {
+        apiService.exportPaymentToCollectionBill(groupId = OASystem.entryAndExitDetailResponse.diId)
+            .enqueue(object :
+                Callback<BaseResponse> {
+                override fun onResponse(call: Call<BaseResponse>, response: Response<BaseResponse>) {
+                    val addResponse = response.body()
+
+                    if (addResponse != null) {
+                        if (addResponse.code == 200) {
+                            showMessage(resources.getString(R.string.operate_success))
+                        } else {
+                            showMessage(addResponse.msg)
+                        }
+                    }
+                }
+
+                override fun onFailure(p0: Call<BaseResponse>, p1: Throwable) {
+                    showErrorInfo(R.string.interface_request_error)
+                }
+            })
+    }
+
+    private fun downloadCustomerList() {
+        apiService.downloadCustomerList(DownloadCustomerListRequest(diId = OASystem.entryAndExitDetailResponse.diId)).enqueue(object : Callback<DownloadCustomerListResponse> {
+            override fun onResponse(
+                call: Call<DownloadCustomerListResponse>,
+                response: Response<DownloadCustomerListResponse>
+            ) {
+                val dataResponse = response.body()
+                if (dataResponse != null) {
+                    if (dataResponse.code == 200) {
+
+                        CustomAlertDialog.Builder(OASystem.context).apply {
+                            setTitle(resources.getString(R.string.hint))
+                            setMessage(resources.getString(R.string.group_members_list_generated))
+                            setNegativeButtonAndListener(resources.getString(R.string.cancel)) { dialog, _ ->
+                                dialog.dismiss()
+                            }
+                            setPositiveButtonAndListener(resources.getString(R.string.confirm)) { dialog, _ ->
+                                val uri = Uri.parse(dataResponse.data)
+                                startActivity(Intent(Intent.ACTION_VIEW, uri))
+
+                                dialog.dismiss()
+                            }
+                        }
+
+                    } else {
+                        showMessage(dataResponse.msg)
+                    }
+                }
+            }
+
+            override fun onFailure(p0: Call<DownloadCustomerListResponse>, p1: Throwable) {
+                showErrorInfo(R.string.interface_request_error)
+            }
+        })
+    }
 }

+ 51 - 0
app/src/main/java/com/pan_american/android/ui/group_management/entry_and_exit_fee_detail/OtherPaymentDetailActivity.kt

@@ -8,6 +8,7 @@ import androidx.core.content.res.ResourcesCompat
 import com.pan_american.android.OASystem
 import com.pan_american.android.R
 import com.pan_american.android.base.BaseActivity
+import com.pan_american.android.base.BaseResponse
 import com.pan_american.android.base.ListAdapter
 import com.pan_american.android.data.model.common.entity.Selector
 import com.pan_american.android.data.model.group_management.entry_and_exit_fee_detail.network.OtherPaymentDataSourceRequest
@@ -233,6 +234,30 @@ class OtherPaymentDetailActivity : BaseActivity<ActivityOtherPaymentDetailBindin
 
         binding.commit.setOnClickListener {
 
+            if (updateOtherPaymentRequest.setDataId == 0) {
+                showMessage(resources.getString(R.string.payment_type_select_hint))
+                return@setOnClickListener
+            }
+
+            if (!binding.paymentPrinciple.text.toString().matches(regex)) {
+                showMessage(resources.getString(R.string.payment_price_hint))
+                return@setOnClickListener
+            } else {
+                updateOtherPaymentRequest.cost = binding.paymentPrinciple.text.toString().toDouble()
+            }
+
+            if (updateOtherPaymentRequest.currency == 0) {
+                showMessage(resources.getString(R.string.payment_currency_hint))
+                return@setOnClickListener
+            }
+
+            updateOtherPaymentRequest.subTotal = binding.totalPayment.text.toString().toDouble()
+
+            if (binding.remark.getText().isNotBlank()) {
+                updateOtherPaymentRequest.remark = binding.remark.getText()
+            }
+
+            updateOtherPayment()
         }
     }
 
@@ -326,4 +351,30 @@ class OtherPaymentDetailActivity : BaseActivity<ActivityOtherPaymentDetailBindin
                 }
             })
     }
+
+    private fun updateOtherPayment() {
+        apiService.updateEntryAndExitOtherPayment(updateOtherPaymentRequest).enqueue(object : Callback<BaseResponse> {
+            override fun onResponse(call: Call<BaseResponse>, response: Response<BaseResponse>) {
+                val updateResponse = response.body()
+
+                if (updateResponse != null) {
+                    if (updateResponse.code == 200) {
+
+                        showMessage(resources.getString(R.string.update_success))
+
+                        OASystem.needRefresh = true
+
+                        finish()
+
+                    } else {
+                        showMessage(updateResponse.msg)
+                    }
+                }
+            }
+
+            override fun onFailure(p0: Call<BaseResponse>, p1: Throwable) {
+                showErrorInfo(R.string.update_error)
+            }
+        })
+    }
 }

+ 0 - 10
app/src/main/java/com/pan_american/android/ui/group_management/entry_and_exit_fee_detail/OtherPaymentFragment.kt

@@ -2,7 +2,6 @@ package com.pan_american.android.ui.group_management.entry_and_exit_fee_detail
 
 import android.content.Intent
 import android.os.Bundle
-import android.util.Log
 import android.view.Gravity
 import android.view.LayoutInflater
 import android.view.View
@@ -11,7 +10,6 @@ import android.widget.EditText
 import android.widget.PopupWindow
 import android.widget.TextView
 import androidx.recyclerview.widget.LinearLayoutManager
-import com.google.gson.Gson
 import com.pan_american.android.OASystem
 import com.pan_american.android.R
 import com.pan_american.android.base.BaseFragment
@@ -360,14 +358,6 @@ class OtherPaymentFragment : BaseFragment<FragmentOtherPaymentBinding>() {
     }
 
     private fun updateSelectStatus(status: Int) {
-
-        Log.e("request", Gson().toJson(UpdateEntryAndExitTypeStatusRequest(
-            id = paymentId,
-            diId = groupId,
-            itemType = 7,
-            isSelected = status
-        )))
-
         apiService.updateEntryAndExitTypeStatus(
             UpdateEntryAndExitTypeStatusRequest(
                 id = paymentId,

+ 9 - 9
app/src/main/res/layout/fragment_customer_filter.xml

@@ -26,14 +26,15 @@
             android:orientation="vertical">
 
             <RadioButton
-                android:id="@+id/business_sift"
+                android:id="@+id/province"
                 android:layout_width="match_parent"
                 android:layout_height="50dp"
+                android:layout_marginTop="@dimen/common_padding"
                 android:background="@drawable/style_radio_button"
                 android:button="@null"
                 android:checked="true"
                 android:gravity="center"
-                android:text="@string/business_sift" />
+                android:text="@string/province" />
 
             <RadioButton
                 android:id="@+id/customer_level"
@@ -56,24 +57,23 @@
                 android:text="@string/customer_classification" />
 
             <RadioButton
-                android:id="@+id/director"
+                android:id="@+id/business_sift"
                 android:layout_width="match_parent"
                 android:layout_height="50dp"
-                android:layout_marginTop="@dimen/common_padding"
                 android:background="@drawable/style_radio_button"
                 android:button="@null"
                 android:gravity="center"
-                android:text="@string/director" />
+                android:text="@string/business_sift" />
 
             <RadioButton
-                android:id="@+id/province"
+                android:id="@+id/director"
                 android:layout_width="match_parent"
                 android:layout_height="50dp"
                 android:layout_marginTop="@dimen/common_padding"
                 android:background="@drawable/style_radio_button"
                 android:button="@null"
                 android:gravity="center"
-                android:text="@string/province" />
+                android:text="@string/director" />
         </RadioGroup>
 
         <LinearLayout
@@ -83,7 +83,7 @@
             android:layout_weight="2"
             android:background="@color/white"
             android:orientation="vertical"
-            android:visibility="visible">
+            android:visibility="gone">
 
             <CheckedTextView
                 android:id="@+id/business_sift_all"
@@ -239,7 +239,7 @@
             android:layout_weight="2"
             android:background="@color/white"
             android:orientation="vertical"
-            android:visibility="gone">
+            android:visibility="visible">
 
             <CheckedTextView
                 android:id="@+id/province_all"

+ 4 - 0
app/src/main/res/values/strings.xml

@@ -1119,6 +1119,7 @@
     <string name="check_commit">复核确认</string>
     <string name="check_cancel">取消确认</string>
     <string name="confirm_success">确认成功</string>
+    <string name="operate_success">操作成功</string>
 
     <string name="gallery_permission_hint">请在设置中打开文件访问权限</string>
 
@@ -1314,6 +1315,9 @@
     <string name="business_class_price">公务舱: %.2f 元 / 人</string>
     <string name="first_class_price">头等舱: %.2f 元 / 人</string>
 
+    <string name="export_to_collection_bil_confirm">确认将费用导出到收款账单?</string>
+    <string name="group_members_list_generated">团组客户名单已生成,点击确认前往下载s</string>
+
     <string name="visa_payment">签证费</string>
     <string name="vaccine_payment">疫苗费</string>
     <string name="nucleic_acid_testing_payment">核酸检测费</string>