feat : update payroll
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9615c01..c33a494 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -49,6 +49,8 @@
 
         <activity android:name=".ui.online.customers.customerpayroll.PayrollActivity" />
 
+        <activity android:name=".ui.online.customers.customerpayroll.editcustomerpayroll.EditPayrollActivity"/>
+
         <activity android:name=".ui.online.depositaccounts.depositaccountslist.DepositAccountsActivity" />
 
         <activity android:name=".ui.online.loanaccounts.loanaccountlist.LoanAccountsActivity" />
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerPayroll.kt b/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerPayroll.kt
index ac8b2d8..f588836 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerPayroll.kt
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/api/DataManagerPayroll.kt
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager.api
 
+import io.reactivex.Completable
 import io.reactivex.Observable
 import io.reactivex.ObservableSource
 import io.reactivex.functions.Function
@@ -21,4 +22,9 @@
                     .onErrorResumeNext(Function<Throwable, ObservableSource<PayrollConfiguration>>
                     { Observable.just(FakeRemoteDataSource.getPayrollConfig()) })
 
+    fun editPayrollConfig(identifier: String, payrollConfiguration: PayrollConfiguration)
+            : Completable = baseManagerApi
+            .payrollService.updatePayrollConfig(identifier, payrollConfiguration)
+
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollAllocation.kt b/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollAllocation.kt
index 70c094e..084b900 100644
--- a/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollAllocation.kt
+++ b/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollAllocation.kt
@@ -1,10 +1,13 @@
 package org.apache.fineract.data.models.payroll
 
+import android.os.Parcelable
 import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
 import java.math.BigDecimal
 
+@Parcelize
 data class PayrollAllocation(
         @SerializedName("accountNumber") val accountNumber: String? = null,
         @SerializedName("amount") val amount: BigDecimal,
         @SerializedName("proportional") val proportional: Boolean = false
-)
\ No newline at end of file
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollConfiguration.kt b/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollConfiguration.kt
index 1c6d663..3a01b3c 100644
--- a/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollConfiguration.kt
+++ b/app/src/main/java/org/apache/fineract/data/models/payroll/PayrollConfiguration.kt
@@ -1,7 +1,10 @@
 package org.apache.fineract.data.models.payroll
 
+import android.os.Parcelable
 import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
 
+@Parcelize
 data class PayrollConfiguration(
         @SerializedName("mainAccountNumber") val mainAccountNumber: String? = null,
         @SerializedName("payrollAllocations") val payrollAllocations:
@@ -10,4 +13,4 @@
         @SerializedName("createdBy") val createdBy: String? = null,
         @SerializedName("lastModifiedOn") val lastModifiedOn: String? = null,
         @SerializedName("lastModifiedBy") val lastModifiedBy: String? = null
-)
\ No newline at end of file
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/services/PayrollService.kt b/app/src/main/java/org/apache/fineract/data/services/PayrollService.kt
index d451fee..3a2621e 100644
--- a/app/src/main/java/org/apache/fineract/data/services/PayrollService.kt
+++ b/app/src/main/java/org/apache/fineract/data/services/PayrollService.kt
@@ -1,9 +1,12 @@
 package org.apache.fineract.data.services
 
+import io.reactivex.Completable
 import io.reactivex.Observable
 import org.apache.fineract.data.models.payroll.PayrollConfiguration
 import org.apache.fineract.data.remote.EndPoints
+import retrofit2.http.Body
 import retrofit2.http.GET
+import retrofit2.http.PUT
 import retrofit2.http.Path
 
 
@@ -11,4 +14,9 @@
 
     @GET(EndPoints.API_PAYROLL_PATH + "/customers/{identifier}/payroll")
     fun getPayrollConfig(@Path("identifier") identifier: String): Observable<PayrollConfiguration>
+
+    @PUT(EndPoints.API_PAYROLL_PATH + "/customers/{identifier}/payroll")
+    fun updatePayrollConfig(@Path("identifier") identifier: String,
+                            @Body payrollConfiguration: PayrollConfiguration)
+            : Completable
 }
diff --git a/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java b/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java
index 4019716..6c250f8 100644
--- a/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java
+++ b/app/src/main/java/org/apache/fineract/injection/component/ActivityComponent.java
@@ -4,6 +4,7 @@
 import org.apache.fineract.injection.module.ActivityModule;
 import org.apache.fineract.ui.offline.CustomerPayloadFragment;
 import org.apache.fineract.ui.online.DashboardActivity;
+import org.apache.fineract.ui.online.accounting.accounts.AccountsFragment;
 import org.apache.fineract.ui.online.accounting.ledgers.LedgerFragment;
 import org.apache.fineract.ui.online.customers.createcustomer.customeractivity
         .CreateCustomerActivity;
@@ -12,6 +13,11 @@
 import org.apache.fineract.ui.online.customers.customeractivities.CustomerActivitiesFragment;
 import org.apache.fineract.ui.online.customers.customerdetails.CustomerDetailsFragment;
 import org.apache.fineract.ui.online.customers.customerlist.CustomersFragment;
+import org.apache.fineract.ui.online.customers.customerpayroll.PayrollFragment;
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+        .EditPayrollActivity;
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+        .EditPayrollAllocationFragment;
 import org.apache.fineract.ui.online.customers.customerprofile.editcustomerprofilebottomsheet
         .EditCustomerProfileBottomSheet;
 import org.apache.fineract.ui.online.customers.customertasks.CustomerTasksBottomSheetFragment;
@@ -43,9 +49,7 @@
 import org.apache.fineract.ui.online.loanaccounts.plannedpayment.PlannedPaymentFragment;
 import org.apache.fineract.ui.online.login.LoginActivity;
 import org.apache.fineract.ui.online.review.AddLoanReviewFragment;
-import org.apache.fineract.ui.online.customers.customerpayroll.PayrollFragment;
 import org.apache.fineract.ui.online.roles.roleslist.RolesFragment;
-import org.apache.fineract.ui.online.accounting.accounts.AccountsFragment;
 import org.apache.fineract.ui.online.teller.TellerFragment;
 import org.apache.fineract.ui.product.ProductFragment;
 
@@ -127,5 +131,9 @@
     void inject(ProductFragment productFragment);
 
     void inject(PayrollFragment payrollFragment);
+
+    void inject(EditPayrollAllocationFragment editPayrollAllocationFragment);
+
+    void inject(EditPayrollActivity editPayrollActivity);
 }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/adapters/EditPayrollStepAdapter.kt b/app/src/main/java/org/apache/fineract/ui/adapters/EditPayrollStepAdapter.kt
new file mode 100644
index 0000000..c09a4ec
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/adapters/EditPayrollStepAdapter.kt
@@ -0,0 +1,31 @@
+package org.apache.fineract.ui.adapters
+
+import android.content.Context
+import android.support.v4.app.FragmentManager
+import com.stepstone.stepper.Step
+import com.stepstone.stepper.adapter.AbstractFragmentStepAdapter
+import com.stepstone.stepper.viewmodel.StepViewModel
+import org.apache.fineract.R
+import org.apache.fineract.data.models.payroll.PayrollConfiguration
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.EditPayrollAllocationFragment
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.EditPayrollFragment
+
+class EditPayrollStepAdapter(fm: FragmentManager, context: Context,
+                             val payrollConfig: PayrollConfiguration)
+    : AbstractFragmentStepAdapter(fm, context) {
+
+    val payrollStep: Array<String> = context.resources.getStringArray(R.array.edit_payroll_steps)
+
+    override fun getViewModel(position: Int): StepViewModel = StepViewModel.Builder(context)
+            .setTitle(payrollStep[position])
+            .create()
+
+    override fun createStep(position: Int): Step? = when (position) {
+        0 -> EditPayrollFragment.newInstance(payrollConfig)
+        1 -> EditPayrollAllocationFragment.newInstance(payrollConfig)
+        else -> null
+    }
+
+    override fun getCount(): Int = payrollStep.size
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/adapters/PayrollAllocationAdapter.kt b/app/src/main/java/org/apache/fineract/ui/adapters/PayrollAllocationAdapter.kt
new file mode 100644
index 0000000..21640e2
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/adapters/PayrollAllocationAdapter.kt
@@ -0,0 +1,70 @@
+package org.apache.fineract.ui.adapters
+
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.CheckBox
+import android.widget.ImageView
+import android.widget.TextView
+import kotlinx.android.synthetic.main.item_payroll_allocation.view.*
+import org.apache.fineract.R
+import org.apache.fineract.data.models.payroll.PayrollAllocation
+import javax.inject.Inject
+
+class PayrollAllocationAdapter @Inject constructor()
+    : RecyclerView.Adapter<PayrollAllocationAdapter.ViewHolder>() {
+
+    lateinit var payrollAllocation: List<PayrollAllocation>
+    lateinit var onClickListener: OnClickEditDeleteListener
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+        val view = LayoutInflater.from(parent.context)
+                .inflate(R.layout.item_payroll_allocation, parent, false)
+        return ViewHolder(view)
+    }
+
+    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+        val (accountNumber, amount, proportional) = payrollAllocation[position]
+        holder.tvAccount.text = accountNumber
+        holder.tvAmount.text = amount.toString()
+        holder.cbProportional.isChecked = proportional
+    }
+
+    override fun getItemCount(): Int {
+        return payrollAllocation.size
+    }
+
+    fun setPayrollAllocations(allocation: List<PayrollAllocation>) {
+        this.payrollAllocation = allocation
+        notifyDataSetChanged()
+    }
+
+    fun setOnClickEditDeleteListener(itemClickListener: OnClickEditDeleteListener) {
+        this.onClickListener = itemClickListener
+    }
+
+    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+
+        val ivEdit: ImageView = itemView.iv_edit
+        val ivDelete: ImageView = itemView.iv_delete
+        val tvAccount: TextView = itemView.tv_account
+        val tvAmount: TextView = itemView.tv_amount
+        val cbProportional: CheckBox = itemView.cb_Proportional
+
+        init {
+            ivEdit.setOnClickListener {
+                onClickListener.onClickEdit(payrollAllocation[adapterPosition], adapterPosition)
+            }
+
+            ivDelete.setOnClickListener {
+                onClickListener.onClickDelete(payrollAllocation[adapterPosition], adapterPosition)
+            }
+        }
+    }
+
+    interface OnClickEditDeleteListener {
+        fun onClickEdit(payrollAllocation: PayrollAllocation, position: Int)
+        fun onClickDelete(payrollAllocation: PayrollAllocation, position: Int)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/PayrollFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/PayrollFragment.kt
index 8502e01..1763c95 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/PayrollFragment.kt
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/PayrollFragment.kt
@@ -1,6 +1,7 @@
 package org.apache.fineract.ui.online.customers.customerpayroll
 
 
+import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -11,6 +12,7 @@
 import org.apache.fineract.data.models.payroll.PayrollConfiguration
 import org.apache.fineract.ui.base.FineractBaseActivity
 import org.apache.fineract.ui.base.FineractBaseFragment
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.EditPayrollActivity
 import org.apache.fineract.utils.ConstantKeys
 import javax.inject.Inject
 
@@ -22,6 +24,8 @@
 
     lateinit var customerIdentifier: String
 
+    lateinit var payrollConfiguration: PayrollConfiguration
+
     companion object {
         fun newInstance(customerIdentifier: String) =
                 PayrollFragment().apply {
@@ -57,6 +61,13 @@
             payrollPresenter.getPayrollConfiguration(customerIdentifier)
         }
 
+        fabEditPayroll.setOnClickListener{
+            val intent = Intent(activity,EditPayrollActivity::class.java)
+            intent.putExtra(ConstantKeys.PAYROLL_CONFIG, payrollConfiguration)
+            intent.putExtra(ConstantKeys.CUSTOMER_IDENTIFIER,customerIdentifier)
+            startActivity(intent)
+        }
+
         payrollPresenter.getPayrollConfiguration(customerIdentifier)
     }
 
@@ -67,6 +78,7 @@
 
     override fun showPayrollConfiguration(payrollConfiguration: PayrollConfiguration) {
 
+        this.payrollConfiguration = payrollConfiguration
         clPayroll.visibility = View.VISIBLE
         tvAccount.text = payrollConfiguration.mainAccountNumber
         tvCreatedBy.text = payrollConfiguration.createdBy
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollActivity.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollActivity.kt
new file mode 100644
index 0000000..e377a60
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollActivity.kt
@@ -0,0 +1,92 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+
+import android.os.Bundle
+import android.view.View
+import com.stepstone.stepper.StepperLayout
+import com.stepstone.stepper.VerificationError
+import kotlinx.android.synthetic.main.activity_edit_payroll.*
+import org.apache.fineract.R
+import org.apache.fineract.data.models.payroll.PayrollAllocation
+import org.apache.fineract.data.models.payroll.PayrollConfiguration
+import org.apache.fineract.ui.adapters.EditPayrollStepAdapter
+import org.apache.fineract.ui.base.FineractBaseActivity
+import org.apache.fineract.ui.base.Toaster
+import org.apache.fineract.ui.online.accounting.accounts.EditPayrollContract
+import org.apache.fineract.utils.ConstantKeys
+import javax.inject.Inject
+
+class EditPayrollActivity : FineractBaseActivity(), StepperLayout.StepperListener,
+        OnNavigationBarListener.Payroll, EditPayrollContract.View {
+
+    lateinit var payrollConfig: PayrollConfiguration
+    lateinit var customerIdentifier: String
+
+    @Inject
+    lateinit var editPayrollPresenter: EditPayrollPresenter
+
+    override fun onStepSelected(newStepPosition: Int) {
+
+    }
+
+    override fun onError(verificationError: VerificationError?) {
+    }
+
+    override fun onReturn() {
+    }
+
+    override fun onCompleted(completeButton: View?) {
+        editPayrollPresenter.updatePayrollConfiguration(customerIdentifier, payrollConfig)
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_edit_payroll)
+
+        setToolbarTitle(getString(R.string.edit_payroll))
+        activityComponent.inject(this)
+        editPayrollPresenter.attachView(this)
+        val payrollConfig = intent.getParcelableExtra<PayrollConfiguration>(ConstantKeys
+                .PAYROLL_CONFIG)
+
+        customerIdentifier = intent.getStringExtra(ConstantKeys.CUSTOMER_IDENTIFIER)
+
+        val stepAdapter = EditPayrollStepAdapter(
+                supportFragmentManager, this, payrollConfig)
+        stepperLayout.adapter = stepAdapter
+        stepperLayout.setListener(this)
+        stepperLayout.setOffscreenPageLimit(stepAdapter.count)
+
+        showBackButton()
+    }
+
+    override fun setPayrollConfig(accountNo: String, lastModifiedBy: String,
+                                  lastModifiedOn: String, createdBy: String,
+                                  createdOn: String) {
+        payrollConfig = PayrollConfiguration(mainAccountNumber = accountNo,
+                createdOn = createdOn, createdBy = createdBy,
+                lastModifiedOn = lastModifiedOn, lastModifiedBy = lastModifiedBy)
+
+    }
+
+    override fun setPayrollAllocations(payrollAllocations: List<PayrollAllocation>) {
+        payrollConfig = payrollConfig.copy(payrollAllocations = payrollAllocations)
+    }
+
+    override fun updatePayrollSuccess() {
+        finish()
+    }
+
+    override fun showNoInternetConnection() {
+        Toaster.show(findViewById(android.R.id.content),
+                getString(R.string.no_internet_connection))
+    }
+
+    override fun showError(message: String?) {
+        Toaster.show(findViewById(android.R.id.content), message)
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        editPayrollPresenter.detachView()
+    }
+}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollAllocationFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollAllocationFragment.kt
new file mode 100644
index 0000000..714fd97
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollAllocationFragment.kt
@@ -0,0 +1,133 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+
+import android.content.Context
+import android.os.Bundle
+import android.support.v7.widget.LinearLayoutManager
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.stepstone.stepper.Step
+import com.stepstone.stepper.VerificationError
+import kotlinx.android.synthetic.main.fragment_edit_payroll_allocation.*
+import org.apache.fineract.R
+import org.apache.fineract.data.models.payroll.PayrollAllocation
+import org.apache.fineract.data.models.payroll.PayrollConfiguration
+import org.apache.fineract.ui.adapters.PayrollAllocationAdapter
+import org.apache.fineract.ui.base.FineractBaseActivity
+import org.apache.fineract.ui.base.FineractBaseFragment
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+        .editpayrollbottomsheet.EditPayrollBottomSheet
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+        .editpayrollbottomsheet.OnBottomSheetDialogListener
+import org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.editpayrollbottomsheet.PayrollSource
+import org.apache.fineract.utils.ConstantKeys
+import javax.inject.Inject
+
+
+class EditPayrollAllocationFragment : FineractBaseFragment(), Step,
+        PayrollAllocationAdapter.OnClickEditDeleteListener,
+        OnBottomSheetDialogListener {
+
+    lateinit var payrollConfiguration: PayrollConfiguration
+    lateinit var listener: OnNavigationBarListener.Payroll
+    lateinit var payrollAllocations: MutableList<PayrollAllocation>
+
+    @Inject
+    lateinit var payrollAllocationAdapter: PayrollAllocationAdapter
+
+    companion object {
+        fun newInstance(payrollConfiguration: PayrollConfiguration) =
+                EditPayrollAllocationFragment().apply {
+                    arguments = Bundle().apply {
+                        putParcelable(ConstantKeys.PAYROLL_CONFIG, payrollConfiguration)
+                    }
+                }
+    }
+
+    override fun onAttach(context: Context?) {
+        super.onAttach(context)
+        if (context is OnNavigationBarListener.Payroll) {
+            listener = context
+        } else {
+            throw RuntimeException(context.toString() +
+                    " must implement OnFragmentInteractionListener")
+        }
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        arguments?.let {
+            payrollConfiguration = it.getParcelable(ConstantKeys.PAYROLL_CONFIG)
+        }
+    }
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
+                              savedInstanceState: Bundle?): View? {
+
+        (activity as FineractBaseActivity).activityComponent.inject(this)
+        return inflater.inflate(R.layout.fragment_edit_payroll_allocation, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+
+        showUserInterface()
+        fabAddPayrollAllocation.setOnClickListener {
+            val editPayrollBottomSheet = EditPayrollBottomSheet()
+            editPayrollBottomSheet.addPayrollSource(PayrollSource.ADD)
+            editPayrollBottomSheet.setBottomSheetListener(this)
+            editPayrollBottomSheet.show(childFragmentManager, getString(R.string.payroll_allocation))
+        }
+    }
+
+    fun showUserInterface() {
+
+        val layoutManager = LinearLayoutManager(activity)
+        layoutManager.orientation = LinearLayoutManager.VERTICAL
+        rvPayrollAllocation.layoutManager = layoutManager
+        rvPayrollAllocation.setHasFixedSize(true)
+
+        this.payrollAllocations = payrollConfiguration.payrollAllocations.toMutableList()
+        payrollAllocationAdapter.setPayrollAllocations(payrollAllocations)
+        payrollAllocationAdapter.setOnClickEditDeleteListener(this)
+        rvPayrollAllocation.adapter = payrollAllocationAdapter
+    }
+
+    override fun onSelected() {
+
+    }
+
+    override fun onClickEdit(payrollAllocation: PayrollAllocation, position: Int) {
+        val editPayrollBottomSheet = EditPayrollBottomSheet()
+        editPayrollBottomSheet.addPayrollSource(PayrollSource.EDIT)
+        editPayrollBottomSheet.editPayrollAllocation(payrollAllocation, position)
+        editPayrollBottomSheet.setBottomSheetListener(this)
+        editPayrollBottomSheet.show(childFragmentManager, getString(R.string.payroll_allocation))
+    }
+
+    override fun onClickDelete(payrollAllocation: PayrollAllocation, position: Int) {
+        payrollAllocations.removeAt(position)
+        payrollAllocationAdapter.setPayrollAllocations(payrollAllocations)
+    }
+
+    override fun editPayrollAllocation(payrollAllocation: PayrollAllocation, position: Int) {
+        payrollAllocations.removeAt(position)
+        payrollAllocations.add(position, payrollAllocation)
+        payrollAllocationAdapter.setPayrollAllocations(payrollAllocations)
+    }
+
+    override fun addPayrollAllocation(payrollAllocation: PayrollAllocation) {
+        payrollAllocations.add(payrollAllocation)
+        payrollAllocationAdapter.setPayrollAllocations(payrollAllocations)
+    }
+
+    override fun verifyStep(): VerificationError? {
+        listener.setPayrollAllocations(payrollAllocations.toList())
+        return null
+    }
+
+    override fun onError(error: VerificationError) {
+
+    }
+
+}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollContract.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollContract.kt
new file mode 100644
index 0000000..78f2976
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollContract.kt
@@ -0,0 +1,18 @@
+package org.apache.fineract.ui.online.accounting.accounts
+
+import org.apache.fineract.data.models.payroll.PayrollConfiguration
+import org.apache.fineract.ui.base.MvpView
+
+interface EditPayrollContract {
+
+    interface View : MvpView {
+
+        fun updatePayrollSuccess()
+    }
+
+    interface Presenter {
+
+        fun updatePayrollConfiguration(identifier: String,
+                                       payrollConfiguration: PayrollConfiguration)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollFragment.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollFragment.kt
new file mode 100644
index 0000000..0decfcf
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollFragment.kt
@@ -0,0 +1,145 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+
+import android.app.DatePickerDialog
+import android.content.Context
+import android.os.Bundle
+import android.text.TextUtils
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.stepstone.stepper.Step
+import com.stepstone.stepper.VerificationError
+import kotlinx.android.synthetic.main.fragment_edit_payroll.*
+import org.apache.fineract.R
+import org.apache.fineract.data.models.customer.DateOfBirth
+import org.apache.fineract.data.models.payroll.PayrollConfiguration
+import org.apache.fineract.ui.base.FineractBaseFragment
+import org.apache.fineract.utils.ConstantKeys
+import java.text.SimpleDateFormat
+import java.util.*
+
+
+class EditPayrollFragment : FineractBaseFragment(), Step {
+
+    lateinit var payrollConfiguration: PayrollConfiguration
+    lateinit var listener: OnNavigationBarListener.Payroll
+
+    val calendar: Calendar = Calendar.getInstance()
+
+    val dateOfBirth by lazy { DateOfBirth() }
+
+    companion object {
+        fun newInstance(payrollConfiguration: PayrollConfiguration) = EditPayrollFragment().apply {
+            arguments = Bundle().apply {
+                putParcelable(ConstantKeys.PAYROLL_CONFIG, payrollConfiguration)
+            }
+        }
+
+        const val DATE_FORMAT = "dd MMM yyyy"
+    }
+
+    override fun onAttach(context: Context?) {
+        super.onAttach(context)
+        if (context is OnNavigationBarListener.Payroll) {
+            listener = context
+        } else {
+            throw RuntimeException(context.toString() +
+                    " must implement OnFragmentInteractionListener")
+        }
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        arguments?.let {
+            payrollConfiguration = it.getParcelable(ConstantKeys.PAYROLL_CONFIG)
+        }
+    }
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
+                              savedInstanceState: Bundle?): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_edit_payroll, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        showUserInterface()
+    }
+
+    fun showUserInterface() {
+
+        etAccount.setText(payrollConfiguration.mainAccountNumber)
+        etCreatedBy.setText(payrollConfiguration.createdBy)
+        etLastModifiedBy.setText(payrollConfiguration.lastModifiedBy)
+        etCreatedOn.setText(payrollConfiguration.createdOn)
+        etLastModifiedOn.setText(payrollConfiguration.lastModifiedOn)
+
+        etLastModifiedOn.setOnClickListener {
+            showDatePicker(it)
+        }
+
+        etCreatedOn.setOnClickListener {
+            showDatePicker(it)
+        }
+
+    }
+
+    private fun showDatePicker(buttonView: View) {
+        val datePickerDialog = DatePickerDialog(activity!!,
+                R.style.MaterialDatePickerTheme,
+                DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
+                    calendar.set(Calendar.YEAR, year)
+                    calendar.set(Calendar.MONTH, monthOfYear)
+                    calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)
+                    dateOfBirth.day = dayOfMonth
+                    dateOfBirth.month = monthOfYear + 1
+                    dateOfBirth.year = year
+
+                    if (buttonView.id == R.id.etLastModifiedOn) {
+                        setLastModifiedDate()
+                    } else {
+                        setCreatedOnDate()
+                    }
+
+                }, calendar
+                .get(Calendar.YEAR), calendar.get(Calendar.MONTH),
+                calendar.get(Calendar.DAY_OF_MONTH))
+        datePickerDialog.datePicker.maxDate = System.currentTimeMillis()
+        datePickerDialog.show()
+    }
+
+    fun setLastModifiedDate() {
+        val sdf = SimpleDateFormat(DATE_FORMAT, Locale.ENGLISH)
+        etLastModifiedOn.setText(sdf.format(calendar.time))
+    }
+
+    fun setCreatedOnDate() {
+        val sdf = SimpleDateFormat(DATE_FORMAT, Locale.ENGLISH)
+        etCreatedOn.setText(sdf.format(calendar.time))
+    }
+
+
+    override fun onSelected() {
+    }
+
+    override fun verifyStep(): VerificationError? {
+        if (TextUtils.isEmpty(etAccount.text.toString()) ||
+                TextUtils.isEmpty(etCreatedBy.text.toString())
+                || TextUtils.isEmpty(etLastModifiedBy.text.toString())) {
+            return VerificationError(null)
+
+        } else {
+
+            listener.setPayrollConfig(etAccount.text.toString(), etLastModifiedBy.text.toString(),
+                    etLastModifiedOn.text.toString(), etCreatedBy.text.toString(),
+                    etCreatedOn.text.toString())
+        }
+
+        return null
+    }
+
+    override fun onError(error: VerificationError) {
+
+    }
+
+}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollPresenter.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollPresenter.kt
new file mode 100644
index 0000000..33c3574
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/EditPayrollPresenter.kt
@@ -0,0 +1,40 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+
+import android.content.Context
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.CompositeDisposable
+import io.reactivex.observers.DisposableCompletableObserver
+import io.reactivex.schedulers.Schedulers
+import org.apache.fineract.R
+import org.apache.fineract.data.datamanager.api.DataManagerPayroll
+import org.apache.fineract.data.models.payroll.PayrollConfiguration
+import org.apache.fineract.injection.ApplicationContext
+import org.apache.fineract.ui.base.BasePresenter
+import org.apache.fineract.ui.online.accounting.accounts.EditPayrollContract
+import javax.inject.Inject
+
+class EditPayrollPresenter @Inject constructor(@ApplicationContext context: Context,
+                                               val dataManagerPayroll: DataManagerPayroll) :
+        BasePresenter<EditPayrollContract.View>(context), EditPayrollContract.Presenter {
+
+    val compositeDisposable = CompositeDisposable()
+
+    override fun updatePayrollConfiguration(identifier: String,
+                                            payrollConfiguration: PayrollConfiguration) {
+
+        compositeDisposable.add(dataManagerPayroll
+                .editPayrollConfig(identifier, payrollConfiguration)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribeWith(object : DisposableCompletableObserver() {
+                    override fun onComplete() {
+                        mvpView.updatePayrollSuccess()
+                    }
+
+                    override fun onError(e: Throwable) {
+                        mvpView.showError(context.getString(R.string.error_updating_payroll))
+                    }
+                })
+        )
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/OnNavigationBarListener.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/OnNavigationBarListener.kt
new file mode 100644
index 0000000..42e0cfe
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/OnNavigationBarListener.kt
@@ -0,0 +1,15 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll
+
+import org.apache.fineract.data.models.payroll.PayrollAllocation
+
+interface OnNavigationBarListener {
+
+    interface Payroll {
+
+        fun setPayrollConfig(accountNo: String, lastModifiedBy: String,
+                             lastModifiedOn: String, createdBy: String,
+                             createdOn: String)
+
+        fun setPayrollAllocations(payrollAllocations: List<PayrollAllocation>)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/EditPayrollBottomSheet.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/EditPayrollBottomSheet.kt
new file mode 100644
index 0000000..df444f3
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/EditPayrollBottomSheet.kt
@@ -0,0 +1,84 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.editpayrollbottomsheet
+
+import android.app.Dialog
+import android.os.Bundle
+import android.support.design.widget.BottomSheetDialogFragment
+import android.view.View
+import kotlinx.android.synthetic.main.bottom_sheet_edit_payroll_allocations.view.*
+import org.apache.fineract.R
+import org.apache.fineract.data.models.payroll.PayrollAllocation
+import java.math.BigDecimal
+
+class EditPayrollBottomSheet : BottomSheetDialogFragment() {
+
+    lateinit var payrollAllocation: PayrollAllocation
+    lateinit var payrollSource: PayrollSource
+    lateinit var onBottomSheetDialogListener: OnBottomSheetDialogListener
+    var position: Int = -1
+
+    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+        val bottomSheetDialog = super.onCreateDialog(savedInstanceState)
+        val rootView = View.inflate(context, R.layout.bottom_sheet_edit_payroll_allocations, null)
+        bottomSheetDialog.setContentView(rootView)
+
+        rootView.btnCancel.setOnClickListener {
+            dismiss()
+        }
+
+        rootView.btnAddAllocation.setOnClickListener {
+
+            if (!rootView.etAccount.text.isBlank()
+                    && !rootView.etAmount.text.isBlank()) {
+
+                val updatedPayrollAllocation = PayrollAllocation(accountNumber =
+                rootView.etAccount.text.toString(),
+                        amount = BigDecimal(rootView.etAmount.text.toString()),
+                        proportional = rootView.cbProportional.isChecked)
+
+                when (payrollSource) {
+
+                    PayrollSource.ADD -> onBottomSheetDialogListener
+                            .addPayrollAllocation(updatedPayrollAllocation)
+
+                    PayrollSource.EDIT -> onBottomSheetDialogListener
+                            .editPayrollAllocation(updatedPayrollAllocation, position)
+                }
+
+                dismiss()
+            }
+        }
+
+        when (payrollSource) {
+
+            PayrollSource.EDIT -> {
+                rootView.btnAddAllocation.text = getString(R.string.edit)
+                rootView.etAmount.setText("${payrollAllocation.amount}")
+                rootView.etAccount.setText(payrollAllocation.accountNumber)
+                rootView.cbProportional.isChecked = payrollAllocation.proportional
+            }
+
+            PayrollSource.ADD -> {
+                rootView.btnAddAllocation.text = getString(R.string.add)
+                rootView.etAmount.setText("0")
+                rootView.etAccount.setText("")
+                rootView.cbProportional.isChecked = false
+            }
+        }
+
+
+        return bottomSheetDialog
+    }
+
+    fun addPayrollSource(payrollSource: PayrollSource) {
+        this.payrollSource = payrollSource
+    }
+
+    fun editPayrollAllocation(payrollAllocation: PayrollAllocation, position: Int) {
+        this.payrollAllocation = payrollAllocation
+        this.position = position
+    }
+
+    fun setBottomSheetListener(onBottomSheetDialogListener: OnBottomSheetDialogListener) {
+        this.onBottomSheetDialogListener = onBottomSheetDialogListener
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/OnBottomSheetDialogListener.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/OnBottomSheetDialogListener.kt
new file mode 100644
index 0000000..4e86f43
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/OnBottomSheetDialogListener.kt
@@ -0,0 +1,11 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.editpayrollbottomsheet
+
+import org.apache.fineract.data.models.payroll.PayrollAllocation
+
+
+interface OnBottomSheetDialogListener {
+
+    fun editPayrollAllocation(payrollAllocation: PayrollAllocation, position: Int)
+
+    fun addPayrollAllocation(payrollAllocation: PayrollAllocation)
+}
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/PayrollSource.kt b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/PayrollSource.kt
new file mode 100644
index 0000000..7c01e89
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerpayroll/editcustomerpayroll/editpayrollbottomsheet/PayrollSource.kt
@@ -0,0 +1,8 @@
+package org.apache.fineract.ui.online.customers.customerpayroll.editcustomerpayroll.editpayrollbottomsheet
+
+enum class PayrollSource {
+
+    EDIT,
+
+    ADD
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
index 2258a7e..028076b 100644
--- a/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
+++ b/app/src/main/java/org/apache/fineract/utils/ConstantKeys.java
@@ -26,6 +26,7 @@
     public static final String DEPOSIT_ACCOUNT = "deposit";
     public static final String COUNTRIES = "countries";
 
+    public static final String PAYROLL_CONFIG = "payrollConfiguration";
 
     public static final int REQUEST_PERMISSION_SETTING = 254;
 
diff --git a/app/src/main/res/layout/activity_edit_payroll.xml b/app/src/main/res/layout/activity_edit_payroll.xml
new file mode 100644
index 0000000..01c00ba
--- /dev/null
+++ b/app/src/main/res/layout/activity_edit_payroll.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fitsSystemWindows="true"
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
+
+    <LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        style="@style/LinearLayout.Base">
+
+        <include layout="@layout/toolbar"/>
+
+        <com.stepstone.stepper.StepperLayout
+            xmlns:android="http://schemas.android.com/apk/res/android"
+            xmlns:app="http://schemas.android.com/apk/res-auto"
+            android:id="@+id/stepperLayout"
+            android:layout_height="match_parent"
+            android:layout_width="match_parent"
+            app:ms_activeStepColor="?attr/colorPrimary"
+            app:ms_backButtonColor="#FFFFFF"
+            app:ms_bottomNavigationBackground="?attr/colorPrimary"
+            app:ms_completeButtonColor="#FFFFFF"
+            app:ms_inactiveStepColor="#cccccc"
+            app:ms_nextButtonColor="#FFFFFF"
+            app:ms_stepperType="tabs"
+            app:ms_tabNavigationEnabled="false"
+            app:ms_tabStepDividerWidth="138dp"
+            app:ms_stepperFeedbackType="tabs|content|disabled_bottom_navigation"/>
+
+    </LinearLayout>
+
+</android.support.design.widget.CoordinatorLayout>
+
+
+
diff --git a/app/src/main/res/layout/bottom_sheet_edit_payroll_allocations.xml b/app/src/main/res/layout/bottom_sheet_edit_payroll_allocations.xml
new file mode 100644
index 0000000..ef1ecf4
--- /dev/null
+++ b/app/src/main/res/layout/bottom_sheet_edit_payroll_allocations.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:paddingBottom="@dimen/layout_padding_24dp">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/tv_header"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingBottom="@dimen/layout_padding_30dp"
+                android:paddingLeft="@dimen/layout_padding_24dp"
+                android:paddingRight="@dimen/layout_padding_24dp"
+                android:paddingStart="@dimen/layout_padding_24dp"
+                android:paddingTop="@dimen/layout_padding_24dp"
+                android:text="@string/payroll_allocation"
+                android:textColor="@color/colorPrimaryDark"
+                android:textStyle="bold" />
+
+            <android.support.design.widget.TextInputLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingLeft="@dimen/layout_padding_24dp"
+                android:paddingRight="@dimen/layout_padding_24dp">
+
+                <EditText
+                    android:id="@+id/etAccount"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:inputType="text"
+                    android:hint="@string/account" />
+
+            </android.support.design.widget.TextInputLayout>
+
+            <android.support.design.widget.TextInputLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingLeft="@dimen/layout_padding_24dp"
+                android:paddingRight="@dimen/layout_padding_24dp"
+                android:paddingTop="@dimen/layout_padding_16dp">
+
+                <EditText
+                    android:id="@+id/etAmount"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:hint="@string/amount"
+                    android:inputType="numberDecimal"/>
+
+            </android.support.design.widget.TextInputLayout>
+
+        </LinearLayout>
+
+        <CheckBox
+            android:id="@+id/cbProportional"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/layout_padding_16dp"
+            android:layout_marginStart="@dimen/layout_padding_16dp"
+            android:layout_marginTop="@dimen/layout_padding_16dp"
+            android:checked="false"
+            android:text="@string/proportional" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="end"
+            android:orientation="horizontal"
+            android:paddingBottom="@dimen/layout_padding_30dp"
+            android:paddingEnd="@dimen/layout_padding_24dp"
+            android:paddingLeft="@dimen/layout_padding_30dp"
+            android:paddingRight="@dimen/layout_padding_24dp"
+            android:paddingStart="@dimen/layout_padding_30dp"
+            android:paddingTop="@dimen/layout_padding_16dp">
+
+            <Button
+                android:id="@+id/btnCancel"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:layout_marginEnd="@dimen/layout_padding_16dp"
+                android:layout_marginRight="@dimen/layout_padding_16dp"
+                android:text="@string/cancel"
+                android:textAllCaps="false" />
+
+            <Button
+                android:id="@+id/btnAddAllocation"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:text="Add"
+                android:textAllCaps="false" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</android.support.design.widget.CoordinatorLayout>
+
+
+
diff --git a/app/src/main/res/layout/fragment_edit_payroll.xml b/app/src/main/res/layout/fragment_edit_payroll.xml
new file mode 100644
index 0000000..fabdfb1
--- /dev/null
+++ b/app/src/main/res/layout/fragment_edit_payroll.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/clEditPayroll"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:visibility="visible">
+
+    <android.support.v4.widget.NestedScrollView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/ncvEditPayroll"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/gray_light"
+        android:visibility="visible"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+        <android.support.v7.widget.CardView
+            xmlns:android="http://schemas.android.com/apk/res/android"
+            xmlns:app="http://schemas.android.com/apk/res-auto"
+            android:id="@+id/cvEditPayroll"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/layout_padding_8dp"
+            android:layout_marginTop="@dimen/layout_padding_8dp"
+            app:cardBackgroundColor="@color/white">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:padding="@dimen/layout_padding_16dp">
+
+                    <android.support.design.widget.TextInputLayout
+                        android:id="@+id/tilAccount"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:paddingTop="@dimen/layout_padding_16dp"
+                        app:errorEnabled="true">
+
+                        <EditText
+                            android:id="@+id/etAccount"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:hint="@string/account"
+                            android:inputType="text" />
+                    </android.support.design.widget.TextInputLayout>
+
+                    <android.support.design.widget.TextInputLayout
+                        android:id="@+id/tilCreatedBy"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        app:errorEnabled="true">
+
+                        <EditText
+                            android:id="@+id/etCreatedBy"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:hint="@string/created_by"
+                            android:inputType="text" />
+                    </android.support.design.widget.TextInputLayout>
+
+                    <android.support.design.widget.TextInputLayout
+                        android:id="@+id/tilCreatedOn"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        app:errorEnabled="true">
+
+                        <EditText
+                            android:id="@+id/etCreatedOn"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:focusable="false"
+                            android:hint="@string/created_on"
+                            android:inputType="date" />
+                    </android.support.design.widget.TextInputLayout>
+
+                    <android.support.design.widget.TextInputLayout
+                        android:id="@+id/tilLastModifiedBy"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        app:errorEnabled="true">
+
+                        <EditText
+                            android:id="@+id/etLastModifiedBy"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:hint="@string/last_modified_by"
+                            android:inputType="text" />
+                    </android.support.design.widget.TextInputLayout>
+
+                    <android.support.design.widget.TextInputLayout
+                        android:id="@+id/tilLastModifiedOn"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        app:errorEnabled="true">
+
+                        <EditText
+                            android:id="@+id/etLastModifiedOn"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:focusable="false"
+                            android:hint="@string/last_modified_by"
+                            android:inputType="text" />
+                    </android.support.design.widget.TextInputLayout>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </android.support.v7.widget.CardView>
+
+    </android.support.v4.widget.NestedScrollView>
+
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_edit_payroll_allocation.xml b/app/src/main/res/layout/fragment_edit_payroll_allocation.xml
new file mode 100644
index 0000000..22145a2
--- /dev/null
+++ b/app/src/main/res/layout/fragment_edit_payroll_allocation.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/clEditPayroll"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:visibility="visible">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/rvPayrollAllocation"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <android.support.design.widget.FloatingActionButton
+        android:id="@+id/fabAddPayrollAllocation"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom|end"
+        android:layout_margin="@dimen/fab_margin"
+        android:clickable="true"
+        android:focusable="true"
+        android:tint="@color/white"
+        app:srcCompat="@drawable/ic_add_black_24dp" />
+
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_payroll.xml b/app/src/main/res/layout/fragment_payroll.xml
index 3fe7b5f..95d0709 100644
--- a/app/src/main/res/layout/fragment_payroll.xml
+++ b/app/src/main/res/layout/fragment_payroll.xml
@@ -201,5 +201,15 @@
         layout="@layout/layout_exception_handler"
         android:visibility="gone" />
 
+    <android.support.design.widget.FloatingActionButton
+        android:clickable="true"
+        android:focusable="true"
+        android:id="@+id/fabEditPayroll"
+        android:layout_gravity="bottom|end"
+        android:layout_height="wrap_content"
+        android:layout_margin="@dimen/fab_margin"
+        android:layout_width="wrap_content"
+        android:tint="@color/white"
+        app:srcCompat="@drawable/ic_edit_black_24dp"/>
 
 </android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_payroll_allocation.xml b/app/src/main/res/layout/item_payroll_allocation.xml
new file mode 100644
index 0000000..3b02da1
--- /dev/null
+++ b/app/src/main/res/layout/item_payroll_allocation.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="@dimen/layout_padding_8dp">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:baselineAligned="false"
+            android:orientation="horizontal"
+            android:paddingEnd="0dp"
+            android:paddingLeft="@dimen/layout_padding_16dp"
+            android:paddingRight="0dp"
+            android:paddingStart="@dimen/layout_padding_16dp"
+            android:paddingTop="@dimen/layout_padding_4dp"
+            android:weightSum="2">
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:orientation="vertical">
+
+                <TextView
+                    style="@style/Base.TextAppearance.AppCompat.Small"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/account"
+                    android:textSize="@dimen/text_size_12sp" />
+
+                <TextView
+                    android:id="@+id/tv_account"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:paddingTop="@dimen/layout_padding_4dp"
+                    android:textSize="@dimen/text_medium"
+                    tools:text="Account Number" />
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="end"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:id="@+id/iv_edit"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:layout_marginEnd="@dimen/layout_padding_16dp"
+                    android:layout_marginRight="@dimen/layout_padding_16dp"
+                    android:clickable="true"
+                    android:contentDescription="@string/debt_income_edit_image"
+                    android:foreground="?android:attr/selectableItemBackground"
+                    android:tint="@color/colorAccent"
+                    app:srcCompat="@drawable/ic_edit_black_24dp" />
+
+                <ImageView
+                    android:id="@+id/iv_delete"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:layout_marginEnd="@dimen/layout_padding_8dp"
+                    android:layout_marginRight="@dimen/layout_padding_8dp"
+                    android:clickable="true"
+                    android:contentDescription="@string/debt_income_delete_image"
+                    android:foreground="?android:attr/selectableItemBackground"
+                    android:tint="@color/colorAccent"
+                    app:srcCompat="@drawable/ic_delete_black_24dp" />
+            </LinearLayout>
+
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingEnd="0dp"
+            android:paddingLeft="@dimen/layout_padding_16dp"
+            android:paddingRight="0dp"
+            android:paddingStart="@dimen/layout_padding_16dp"
+            android:paddingTop="@dimen/layout_padding_16dp">
+
+            <TextView
+                style="@style/Base.TextAppearance.AppCompat.Small"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/amount"
+                android:textSize="@dimen/text_size_12sp" />
+
+            <TextView
+                android:id="@+id/tv_amount"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:paddingTop="@dimen/layout_padding_4dp"
+                android:textSize="@dimen/text_medium"
+                tools:text="4500" />
+
+        </LinearLayout>
+
+        <CheckBox
+            android:id="@+id/cb_Proportional"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/layout_padding_16dp"
+            android:layout_marginStart="@dimen/layout_padding_16dp"
+            android:layout_marginTop="@dimen/layout_padding_16dp"
+            android:clickable="false"
+            android:text="@string/proportional" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:layout_marginTop="@dimen/layout_padding_16dp"
+            android:background="@color/collapse_image" />
+    </LinearLayout>
+
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0b7297f..d82a0ba 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -75,6 +75,7 @@
     <string name="account">Account</string>
     <string name="balance">Balance</string>
     <string name="beneficiaries">Beneficiaries</string>
+    <string name="proportional">Proportional</string>
     <string name="payroll_configuration">Payroll Configuration</string>
     <string name="payroll_allocation">Payroll Allocation</string>
     <string name="no_payroll_allocation">No Payroll Allocation</string>
@@ -92,6 +93,8 @@
     <string name="day">Day</string>
     <string name="in">In</string>
     <string name="required">Required</string>
+    <string name="edit">Edit</string>
+    <string name="add">Add</string>
     <string name="add_debt">Add Debt</string>
     <string name="add_document">Add Document</string>
     <string name="add_income">Add Income</string>
@@ -120,6 +123,7 @@
     <string name="is_member">Is member?</string>
     <string name="create_customer">Create Customer</string>
     <string name="edit_customer">Edit customer</string>
+    <string name="edit_payroll">Edit payroll</string>
     <string name="create_new_identification">Create new Identification</string>
     <string name="create_new_deposit">Create new deposit</string>
     <string name="update_deposit">Update deposit</string>
@@ -176,6 +180,7 @@
     <string name="customer_created_successfully">%1$s created successfully</string>
     <string name="customer_updated_successfully">%1$s updated successfully</string>
     <string name="created_by">Created by</string>
+    <string name="created_on">Created on</string>
     <string name="no_deposit_account">No deposit account</string>
     <string name="identification_search">Search identification card</string>
     <string name="ledger_search">Ledger Search</string>
@@ -267,6 +272,7 @@
     <string name="error_loading_countries">Error while fetching countries</string>
     <string name="error_creating_customer">Error while creating customer</string>
     <string name="error_updating_customer">Error while updating customer</string>
+    <string name="error_updating_payroll">Error while updating payroll</string>
     <string name="error_updating_status">Error while updating customer</string>
     <string name="error_fetching_identification_list">Error while fetching identification cards</string>
     <string name="error_creating_identification_card">Error while creating identification card</string>
@@ -405,6 +411,11 @@
         <item>Review</item>
     </string-array>
 
+    <string-array name="edit_payroll_steps">
+        <item>Customer payroll</item>
+        <item>Payroll allocations</item>
+    </string-array>
+
     <string-array name="repay_unit_type">
         <item>weeks</item>
         <item>months</item>
@@ -475,7 +486,6 @@
         <item>29.</item>
         <item>30.</item>
     </string-array>
-<<<<<<< HEAD
 
     <!-- TODO: Remove or change this placeholder text -->
     <string name="hello_blank_fragment">Hello blank fragment</string>
@@ -485,6 +495,4 @@
     <string name="no_documents_to_show_add_documents">No documents to show. add documents</string>
     <string name="customer_payloads">Customer Payloads</string>
     <string name="email">Email</string>
-=======
->>>>>>> feat: payroll configurations of customer
 </resources>