added ledger as souec of funds for payouts

This commit is contained in:
Arseni
2026-03-03 21:03:30 +03:00
parent 3f578353da
commit 51c72a87ae
29 changed files with 796 additions and 385 deletions

View File

@@ -5,8 +5,10 @@ import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
import 'package:pshared/controllers/balance_mask/wallets.dart';
import 'package:pshared/controllers/payment/source.dart';
import 'package:pshared/models/payment/type.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/provider/ledger.dart';
import 'package:pshared/provider/organizations.dart';
import 'package:pshared/provider/payment/amount.dart';
import 'package:pshared/provider/payment/flow.dart';
@@ -49,7 +51,6 @@ import 'package:pweb/services/payments/csv_input.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
RouteBase payoutShellRoute() => ShellRoute(
builder: (context, state, child) => MultiProvider(
providers: [
@@ -82,10 +83,19 @@ RouteBase payoutShellRoute() => ShellRoute(
provider!..update(recipients, methods),
),
ChangeNotifierProvider(create: (_) => PaymentAmountProvider()),
ChangeNotifierProxyProvider2<
WalletsController,
LedgerAccountsProvider,
PaymentSourceController
>(
create: (_) => PaymentSourceController(),
update: (_, wallets, ledger, controller) =>
controller!..update(wallets, ledger),
),
ChangeNotifierProxyProvider6<
OrganizationsProvider,
PaymentAmountProvider,
WalletsController,
PaymentSourceController,
PaymentFlowProvider,
RecipientsProvider,
PaymentMethodsProvider,
@@ -97,7 +107,7 @@ RouteBase payoutShellRoute() => ShellRoute(
_,
organization,
payment,
wallet,
source,
flow,
recipients,
methods,
@@ -106,7 +116,7 @@ RouteBase payoutShellRoute() => ShellRoute(
..update(
organization,
payment,
wallet,
source,
flow,
recipients,
methods,
@@ -212,23 +222,12 @@ RouteBase payoutShellRoute() => ShellRoute(
path: routerPage(Pages.dashboard),
pageBuilder: (context, _) => NoTransitionPage(
child: DashboardPage(
onRecipientSelected: (recipient) => _startPayment(
context,
recipient: recipient,
),
onGoToPaymentWithoutRecipient: (type) => _startPayment(
context,
recipient: null,
paymentType: type,
),
onTopUp: (wallet) => _openWalletTopUp(
context,
wallet,
),
onWalletTap: (wallet) => _openWalletEdit(
context,
wallet,
),
onRecipientSelected: (recipient) =>
_startPayment(context, recipient: recipient),
onGoToPaymentWithoutRecipient: (type) =>
_startPayment(context, recipient: null, paymentType: type),
onTopUp: (wallet) => _openWalletTopUp(context, wallet),
onWalletTap: (wallet) => _openWalletEdit(context, wallet),
),
),
),
@@ -239,10 +238,8 @@ RouteBase payoutShellRoute() => ShellRoute(
final loc = AppLocalizations.of(context)!;
return NoTransitionPage(
child: RecipientAddressBookPage(
onRecipientSelected: (recipient) => _startPayment(
context,
recipient: recipient,
),
onRecipientSelected: (recipient) =>
_startPayment(context, recipient: recipient),
onAddRecipient: () => _openAddRecipient(context),
onEditRecipient: (recipient) =>
_openEditRecipient(context, recipient: recipient),
@@ -329,8 +326,8 @@ RouteBase payoutShellRoute() => ShellRoute(
path: PayoutRoutes.reportPaymentPath,
pageBuilder: (_, state) => NoTransitionPage(
child: PaymentDetailsPage(
paymentId: state.uri.queryParameters[
PayoutRoutes.reportPaymentIdQuery] ??
paymentId:
state.uri.queryParameters[PayoutRoutes.reportPaymentIdQuery] ??
'',
),
),
@@ -350,9 +347,7 @@ RouteBase payoutShellRoute() => ShellRoute(
return NoTransitionPage(
child: wallet != null
? WalletEditPage(
onBack: () => _popOrGo(context),
)
? WalletEditPage(onBack: () => _popOrGo(context))
: Center(child: Text(loc.noWalletSelected)),
);
},
@@ -361,11 +356,8 @@ RouteBase payoutShellRoute() => ShellRoute(
name: PayoutRoutes.walletTopUp,
path: PayoutRoutes.walletTopUpPath,
pageBuilder: (context, state) {
return NoTransitionPage(
child: WalletTopUpPage(
onBack: () => _popOrGo(context),
),
child: WalletTopUpPage(onBack: () => _popOrGo(context)),
);
},
),
@@ -396,18 +388,12 @@ void _openEditRecipient(BuildContext context, {required Recipient recipient}) {
context.pushNamed(PayoutRoutes.editRecipient);
}
void _openWalletEdit(
BuildContext context,
Wallet wallet,
) {
void _openWalletEdit(BuildContext context, Wallet wallet) {
context.read<WalletsController>().selectWallet(wallet);
context.pushToEditWallet();
}
void _openWalletTopUp(
BuildContext context,
Wallet wallet,
) {
void _openWalletTopUp(BuildContext context, Wallet wallet) {
context.read<WalletsController>().selectWallet(wallet);
context.pushToWalletTopUp();
}