Skip to content

Commit

Permalink
fix save_and_new for split transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
mtotschnig committed Jun 27, 2020
1 parent df0954b commit 5c8f436
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 24 deletions.
Expand Up @@ -58,8 +58,8 @@ class SplitEditTest : BaseUiTest() {
}
}

override fun updateSplitPartList(account: org.totschnig.myexpenses.viewmodel.data.Account) {
super.updateSplitPartList(account)
override fun updateSplitPartList(account: org.totschnig.myexpenses.viewmodel.data.Account, rowId: Long) {
super.updateSplitPartList(account, rowId)
if (activityIsRecreated) {
activityIsRecreated = false
} else {
Expand Down
Expand Up @@ -71,7 +71,6 @@ import org.totschnig.myexpenses.model.CrStatus
import org.totschnig.myexpenses.model.Model
import org.totschnig.myexpenses.model.Money
import org.totschnig.myexpenses.model.Plan.Recurrence
import org.totschnig.myexpenses.model.SplitTransaction
import org.totschnig.myexpenses.model.Template
import org.totschnig.myexpenses.model.Transaction
import org.totschnig.myexpenses.preference.PrefKey
Expand Down Expand Up @@ -134,10 +133,6 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?
override val exchangeRateEdit: ExchangeRateEdit
get() = rootBinding.ERR.ExchangeRate

@JvmField
@State
var mRowId = 0L

@JvmField
@State
var parentId = 0L
Expand Down Expand Up @@ -241,7 +236,7 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?
setTitle()
} else {
val extras = intent.extras
mRowId = Utils.getFromExtra(extras, KEY_ROWID, 0L)
var mRowId = Utils.getFromExtra(extras, KEY_ROWID, 0L)
var task: TransactionViewModel.InstantiationTask? = null
if (mRowId == 0L) {
mRowId = intent.getLongExtra(KEY_TEMPLATEID, 0L)
Expand Down Expand Up @@ -429,9 +424,8 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?
abortWithMessage("This transaction refers to a closed account and can no longer be edited")
} else {
if (task != TRANSACTION_FROM_TEMPLATE) {
viewModel.loadOriginalTags(mRowId, it.linkedTagsUri(), it.linkColumn())
viewModel.loadOriginalTags(transaction.id, it.linkedTagsUri(), it.linkColumn())
}
mRowId = it.id
populate(it)

}
Expand All @@ -453,7 +447,6 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?

private fun populate(transaction: Transaction) {
if (isClone) {
mRowId = if (transaction is SplitTransaction) transaction.id else 0L
transaction.crStatus = CrStatus.UNRECONCILED
transaction.status = DatabaseConstants.STATUS_NONE
transaction.uuid = Model.generateUuid()
Expand Down Expand Up @@ -651,7 +644,7 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?
forwardDataEntryFromWidget(i)
i.putExtra(Transactions.OPERATION_TYPE, Transactions.TYPE_TRANSACTION)
i.putExtra(DatabaseConstants.KEY_ACCOUNTID, account.id)
i.putExtra(DatabaseConstants.KEY_PARENTID, mRowId)
i.putExtra(DatabaseConstants.KEY_PARENTID, delegate.rowId)
i.putExtra(KEY_NEW_TEMPLATE, isMainTemplate)
startActivityForResult(i, ProtectedFragmentActivity.EDIT_REQUEST)
}
Expand Down Expand Up @@ -776,9 +769,9 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?
}

private fun cleanup(onComplete: () -> Unit) {
if (operationType == Transactions.TYPE_SPLIT) {
if (mRowId != 0L) {
viewModel.cleanupSplit(mRowId, isTemplate).observe(this, Observer {
if (operationType == Transactions.TYPE_SPLIT && ::delegate.isInitialized) {
delegate.rowId?.let {
viewModel.cleanupSplit(it, isTemplate).observe(this, Observer {
onComplete()
})
}
Expand Down Expand Up @@ -1123,7 +1116,7 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?
super.onRestoreInstanceState(savedInstanceState)
exchangeRateEdit.setBlockWatcher(false)
delegate.isProcessingLinkedAmountInputs = false
if (mRowId == 0L) {
if (delegate.rowId == 0L) {
(delegate as? TransferDelegate)?.configureTransferDirection()
}
}
Expand All @@ -1145,22 +1138,22 @@ open class ExpenseEdit : AmountActivity(), LoaderManager.LoaderCallbacks<Cursor?
TemplatesList.CALDROID_DIALOG_FRAGMENT_TAG)
}

fun addSplitPartList() {
fun addSplitPartList(rowId: Long) {
val fm = supportFragmentManager
if (findSplitPartList() == null && !fm.isStateSaved) {
fm.beginTransaction()
.add(R.id.edit_container, SplitPartList.newInstance(mRowId, isTemplate, currentAccount!!), SPLIT_PART_LIST)
.add(R.id.edit_container, SplitPartList.newInstance(rowId, isTemplate, currentAccount!!), SPLIT_PART_LIST)
.commit()
fm.executePendingTransactions()
}
}

open fun updateSplitPartList(account: Account) {
open fun updateSplitPartList(account: Account, rowId: Long) {
findSplitPartList()?.let {
it.updateAccount(account)
if (it.splitCount > 0) { //call background task for moving parts to new account
startTaskExecution(
TaskExecutionFragment.TASK_MOVE_UNCOMMITED_SPLIT_PARTS, arrayOf(mRowId),
TaskExecutionFragment.TASK_MOVE_UNCOMMITED_SPLIT_PARTS, arrayOf(rowId),
account.id,
R.string.progress_dialog_updating_split_parts)
return
Expand Down
Expand Up @@ -43,9 +43,9 @@ class SplitDelegate(viewBinding: OneExpenseBinding, dateEditBinding: DateEditBin
override fun buildMainTransaction(accountId: Long): ISplit = if (isTemplate) buildTemplate(accountId) else SplitTransaction(accountId)

override fun prepareForNew() {
super.prepareForNew()
rowId = SplitTransaction.getNewInstance(accountId!!).id
host.findSplitPartList()?.updateParent(rowId!!)
resetAmounts()
}

override fun configureType() {
Expand All @@ -55,12 +55,12 @@ class SplitDelegate(viewBinding: OneExpenseBinding, dateEditBinding: DateEditBin

override fun setAccounts(data: List<Account>, currencyExtra: String?) {
super.setAccounts(data, currencyExtra)
host.addSplitPartList()
host.addSplitPartList(rowId)
}

override fun updateAccount(account: Account) {
super.updateAccount(account)
host.updateSplitPartList(account)
host.updateSplitPartList(account, rowId)
}

fun onUncommitedSplitPartsMoved(success: Boolean) {
Expand Down
Expand Up @@ -128,7 +128,7 @@ abstract class TransactionDelegate<T : ITransaction>(val viewBinding: OneExpense
var parentId: Long? = null
@JvmField
@State
var rowId: Long? = null
var rowId: Long = 0L
@JvmField
@State
var planId: Long? = null
Expand Down

0 comments on commit 5c8f436

Please sign in to comment.