From 5108d00d706027e4743d868539ece532a68e81ff Mon Sep 17 00:00:00 2001 From: Heon Date: Wed, 29 Oct 2025 23:29:55 +0900 Subject: [PATCH 1/5] feat: add category when create ledger transaction --- .../moneymong/model/ledger/LedgerTransactionRequest.kt | 3 ++- .../moneymong/moneymong/ledgermanual/LedgerManualViewModel.kt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/model/src/main/java/com/moneymong/moneymong/model/ledger/LedgerTransactionRequest.kt b/core/model/src/main/java/com/moneymong/moneymong/model/ledger/LedgerTransactionRequest.kt index 7436c0a6..0241b086 100644 --- a/core/model/src/main/java/com/moneymong/moneymong/model/ledger/LedgerTransactionRequest.kt +++ b/core/model/src/main/java/com/moneymong/moneymong/model/ledger/LedgerTransactionRequest.kt @@ -6,5 +6,6 @@ data class LedgerTransactionRequest( val amount: Int, val description: String, val paymentDate: String, - val documentImageUrls: List = emptyList() + val documentImageUrls: List = emptyList(), + val category: String? = null, ) diff --git a/feature/ledgermanual/src/main/java/com/moneymong/moneymong/ledgermanual/LedgerManualViewModel.kt b/feature/ledgermanual/src/main/java/com/moneymong/moneymong/ledgermanual/LedgerManualViewModel.kt index a8b7ce5e..99b91eff 100644 --- a/feature/ledgermanual/src/main/java/com/moneymong/moneymong/ledgermanual/LedgerManualViewModel.kt +++ b/feature/ledgermanual/src/main/java/com/moneymong/moneymong/ledgermanual/LedgerManualViewModel.kt @@ -64,6 +64,7 @@ class LedgerManualViewModel @Inject constructor( description = state.memoValue.text.ifEmpty { "내용 없음" }, paymentDate = state.postPaymentDate, documentImageUrls = state.documentList, + category = state.selectedCategory?.name, ) postLedgerTransactionUseCase(state.agencyId, ledgerTransactionRequest) .onSuccess { From b22f0ac71b5efe07c9675b3b582e3e7c687d121f Mon Sep 17 00:00:00 2001 From: Heon Date: Wed, 29 Oct 2025 23:32:57 +0900 Subject: [PATCH 2/5] feat: add category section when fetch ledger detail --- .../LedgerTransactionDetailResponse.kt | 3 ++- .../ledgerdetail/LedgerDetailScreen.kt | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/core/model/src/main/java/com/moneymong/moneymong/model/ledgerdetail/LedgerTransactionDetailResponse.kt b/core/model/src/main/java/com/moneymong/moneymong/model/ledgerdetail/LedgerTransactionDetailResponse.kt index 7c5ce8fa..fe9bae05 100644 --- a/core/model/src/main/java/com/moneymong/moneymong/model/ledgerdetail/LedgerTransactionDetailResponse.kt +++ b/core/model/src/main/java/com/moneymong/moneymong/model/ledgerdetail/LedgerTransactionDetailResponse.kt @@ -12,5 +12,6 @@ data class LedgerTransactionDetailResponse( val paymentDate: String, val receiptImageUrls: List, val documentImageUrls: List, - val authorName: String + val authorName: String, + val category: String?, ) \ No newline at end of file diff --git a/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt b/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt index 8153008d..c081380f 100644 --- a/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt +++ b/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt @@ -53,6 +53,7 @@ import com.moneymong.moneymong.design_system.component.button.MDSButtonSize import com.moneymong.moneymong.design_system.component.button.MDSButtonType import com.moneymong.moneymong.design_system.component.indicator.LoadingScreen import com.moneymong.moneymong.design_system.component.modal.MDSModal +import com.moneymong.moneymong.design_system.component.tag.MDSOutlineTag import com.moneymong.moneymong.design_system.component.textfield.MDSTextField import com.moneymong.moneymong.design_system.component.textfield.util.MDSTextFieldIcons import com.moneymong.moneymong.design_system.component.textfield.util.withRequiredMark @@ -384,6 +385,22 @@ fun LedgerDetailScreen( .height(1.dp) .background(Gray03, shape = DottedShape(8.dp)) ) + Text( + text = "카테고리", + style = Body2, + color = Gray06 + ) + Spacer(modifier = Modifier.height(8.dp)) + state.ledgerTransactionDetail?.category?.let { + MDSOutlineTag(text = it) + } + Box( + modifier = Modifier + .padding(vertical = 20.dp) + .fillMaxWidth() + .height(1.dp) + .background(Gray03, shape = DottedShape(8.dp)) + ) Text( text = "사진 첨부 (최대12장)", style = Body2, From c56cbfb06a6ec8e05ae486c085efa3da8bb6daec Mon Sep 17 00:00:00 2001 From: Heon Date: Thu, 30 Oct 2025 00:17:04 +0900 Subject: [PATCH 3/5] fix: staff status snapshot --- .../com/moneymong/moneymong/ledger/LedgerScreen.kt | 11 +++++------ .../moneymong/moneymong/ledger/LedgerSideEffect.kt | 2 +- .../moneymong/ledgerdetail/LedgerDetailViewModel.kt | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt index 2571ac87..68a1bb7f 100644 --- a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt +++ b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt @@ -85,16 +85,14 @@ fun LedgerScreen( ) val analyticsTracker = LocalAnalyticsTracker.current - LaunchedEffect(Unit) { - viewModel.fetchMyAgencyList() - viewModel.fetchAgencyMemberList() - viewModel.fetchAgencyExistLedger() + LaunchedEffect(state.isStaff) { + println("isStaff: ${state.isStaff}") } viewModel.collectSideEffect { when (it) { is LedgerSideEffect.LedgerNavigateToLedgerDetail -> { - navigateToLedgerDetail(null, it.id, state.isStaff) + navigateToLedgerDetail(null, it.id, it.isStaff) } is LedgerSideEffect.LedgerNavigateToLedgerManual -> { @@ -236,7 +234,8 @@ fun LedgerScreen( onClickTransactionItem = { viewModel.eventEmit( LedgerSideEffect.LedgerNavigateToLedgerDetail( - it + id = it, + isStaff = state.isStaff, ) ) }, diff --git a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerSideEffect.kt b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerSideEffect.kt index 8dda7faf..a9d9e012 100644 --- a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerSideEffect.kt +++ b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerSideEffect.kt @@ -7,7 +7,7 @@ sealed class LedgerSideEffect : SideEffect { data object LedgerCloseSheet : LedgerSideEffect() data object LedgerNavigateToLedgerManual : LedgerSideEffect() data object LedgerFetchRetry : LedgerSideEffect() - data class LedgerNavigateToLedgerDetail(val id: Int): LedgerSideEffect() + data class LedgerNavigateToLedgerDetail(val id: Int, val isStaff: Boolean): LedgerSideEffect() data class LedgerSelectedAgencyChange(val agencyId: Int): LedgerSideEffect() data class LedgerVisibleSnackbar(val message: String, val withDismissAction: Boolean): LedgerSideEffect() } diff --git a/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailViewModel.kt b/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailViewModel.kt index d9dc9c93..a9b30693 100644 --- a/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailViewModel.kt +++ b/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailViewModel.kt @@ -272,7 +272,7 @@ class LedgerDetailViewModel @Inject constructor( reduce { state.copy(isStaff = isStaff) } } - private fun showErrorDialog(message: String?) = intent { + private fun showErrorDialog(message: String?) = blockingIntent { reduce { state.copy( showErrorDialog = true, From 5b343fea3edf12c280cf1779dfebf7674ed8c19b Mon Sep 17 00:00:00 2001 From: Heon Date: Thu, 30 Oct 2025 00:20:51 +0900 Subject: [PATCH 4/5] refactor: bottom bar edit buttom --- .../ledgerdetail/LedgerDetailScreen.kt | 58 ++++++++++--------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt b/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt index c081380f..3334e78a 100644 --- a/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt +++ b/feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt @@ -178,6 +178,36 @@ fun LedgerDetailScreen( onClickDelete = { viewModel.onChangeVisibleConfirmModal(true) }, onClickDone = viewModel::onClickEditButton ) + }, + bottomBar = { + if (state.isStaff) { + DisposableEffect(key1 = Unit) { + SystemBarColorController.setNavigationBarColor(color = White) + + onDispose { + SystemBarColorController.initialSystemBarColors() + } + } + + Column( + modifier = Modifier + .fillMaxWidth() + .background(White) + .padding(horizontal = MMHorizontalSpacing), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Spacer(modifier = Modifier.height(20.dp)) + MDSButton( + modifier = Modifier.fillMaxWidth(), + text = "수정하기", + enabled = state.enabledEdit, + size = MDSButtonSize.LARGE, + type = MDSButtonType.PRIMARY, + onClick = viewModel::onClickEditButton + ) + Spacer(modifier = Modifier.height(12.dp)) + } + } } ) { Column( @@ -484,34 +514,6 @@ fun LedgerDetailScreen( } } Spacer(modifier = Modifier.height(20.dp)) - if (state.isStaff) { - DisposableEffect(key1 = Unit) { - SystemBarColorController.setNavigationBarColor(color = White) - - onDispose { - SystemBarColorController.initialSystemBarColors() - } - } - - Column( - modifier = Modifier - .fillMaxWidth() - .background(White) - .padding(horizontal = MMHorizontalSpacing), - horizontalAlignment = Alignment.CenterHorizontally - ) { - Spacer(modifier = Modifier.height(20.dp)) - MDSButton( - modifier = Modifier.fillMaxWidth(), - text = "수정하기", - enabled = state.enabledEdit, - size = MDSButtonSize.LARGE, - type = MDSButtonType.PRIMARY, - onClick = viewModel::onClickEditButton - ) - Spacer(modifier = Modifier.height(12.dp)) - } - } } if (state.isLoading) { LoadingScreen(modifier = Modifier.fillMaxSize()) From d5d8331994f15fc319a0706af27e3992654328ff Mon Sep 17 00:00:00 2001 From: Heon Date: Sat, 3 Jan 2026 20:47:51 +0900 Subject: [PATCH 5/5] refactor: remove print --- .../main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt index 68a1bb7f..3836dc84 100644 --- a/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt +++ b/feature/ledger/src/main/java/com/moneymong/moneymong/ledger/LedgerScreen.kt @@ -85,10 +85,6 @@ fun LedgerScreen( ) val analyticsTracker = LocalAnalyticsTracker.current - LaunchedEffect(state.isStaff) { - println("isStaff: ${state.isStaff}") - } - viewModel.collectSideEffect { when (it) { is LedgerSideEffect.LedgerNavigateToLedgerDetail -> {