Support setting edit payment form send email at client/group level

This commit is contained in:
Hillel Coren 2022-08-02 11:26:04 +03:00
parent 95c9b17fa5
commit 1870dce5ec
6 changed files with 33 additions and 25 deletions

View File

@ -7,6 +7,7 @@ import 'package:built_value/serializer.dart';
import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/client/client_selectors.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/strings.dart'; import 'package:invoiceninja_flutter/utils/strings.dart';
@ -75,6 +76,8 @@ abstract class PaymentEntity extends Object
with BaseEntity, SelectableEntity, BelongsToClient with BaseEntity, SelectableEntity, BelongsToClient
implements Built<PaymentEntity, PaymentEntityBuilder> { implements Built<PaymentEntity, PaymentEntityBuilder> {
factory PaymentEntity({String id, AppState state, ClientEntity client}) { factory PaymentEntity({String id, AppState state, ClientEntity client}) {
final settings = getClientSettings(state, client);
return _$PaymentEntity._( return _$PaymentEntity._(
id: id ?? BaseEntity.nextId, id: id ?? BaseEntity.nextId,
isChanged: false, isChanged: false,
@ -109,7 +112,7 @@ abstract class PaymentEntity extends Object
vendorId: '', vendorId: '',
projectId: '', projectId: '',
number: '', number: '',
sendEmail: state?.company?.settings?.clientManualPaymentNotification, sendEmail: settings.clientManualPaymentNotification ?? false,
companyGatewayId: '', companyGatewayId: '',
clientContactId: '', clientContactId: '',
currencyId: '', currencyId: '',

View File

@ -84,6 +84,10 @@ abstract class SettingsEntity
defaultTaxName3: clientSettings?.defaultTaxName3 ?? defaultTaxName3: clientSettings?.defaultTaxName3 ??
groupSettings?.defaultTaxName3 ?? groupSettings?.defaultTaxName3 ??
companySettings?.defaultTaxName3, companySettings?.defaultTaxName3,
clientManualPaymentNotification:
clientSettings?.clientManualPaymentNotification ??
groupSettings?.clientManualPaymentNotification ??
companySettings?.clientManualPaymentNotification,
); );
} }

View File

@ -428,8 +428,8 @@ void handleClientAction(
case EntityAction.newPayment: case EntityAction.newPayment:
createEntity( createEntity(
context: context, context: context,
entity: entity: PaymentEntity(state: state, client: client)
PaymentEntity(state: state).rebuild((b) => b.clientId = client.id), .rebuild((b) => b.clientId = client.id),
); );
break; break;
case EntityAction.newProject: case EntityAction.newProject:

View File

@ -586,12 +586,13 @@ Future handleCreditAction(
case EntityAction.applyCredit: case EntityAction.applyCredit:
createEntity( createEntity(
context: context, context: context,
entity: PaymentEntity(state: state).rebuild((b) => b entity: PaymentEntity(
..typeId = kPaymentTypeCredit state: state, client: state.clientState.get(credit.clientId))
..clientId = credit.clientId .rebuild((b) => b
..credits.addAll(credits ..typeId = kPaymentTypeCredit
.map((credit) => PaymentableEntity.fromCredit(credit)) ..credits.addAll(credits
.toList())), .map((credit) => PaymentableEntity.fromCredit(credit))
.toList())),
); );
break; break;
case EntityAction.download: case EntityAction.download:

View File

@ -660,12 +660,13 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
case EntityAction.newPayment: case EntityAction.newPayment:
createEntity( createEntity(
context: context, context: context,
entity: PaymentEntity(state: state).rebuild((b) => b entity: PaymentEntity(
..clientId = invoice.clientId state: state, client: state.clientState.get(invoice.clientId))
..invoices.addAll(invoices .rebuild((b) => b
.where((invoice) => !(invoice as InvoiceEntity).isPaid) ..invoices.addAll(invoices
.map((invoice) => PaymentableEntity.fromInvoice(invoice)) .where((invoice) => !(invoice as InvoiceEntity).isPaid)
.toList())), .map((invoice) => PaymentableEntity.fromInvoice(invoice))
.toList())),
); );
break; break;
case EntityAction.download: case EntityAction.download:

View File

@ -626,16 +626,15 @@ class _CompanyDetailsState extends State<CompanyDetails>
FormCard( FormCard(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
if (!state.settingsUIState.isFiltered) BoolDropdownButton(
BoolDropdownButton( value: settings.clientManualPaymentNotification,
value: settings.clientManualPaymentNotification, onChanged: (value) => viewModel.onSettingsChanged(
onChanged: (value) => viewModel.onSettingsChanged( settings.rebuild((b) =>
settings.rebuild((b) => b..clientManualPaymentNotification = value)),
b..clientManualPaymentNotification = value)), label: localization.manualPaymentEmail,
label: localization.manualPaymentEmail, helpLabel: localization.emailReceipt,
helpLabel: localization.emailReceipt, iconData: Icons.email,
iconData: Icons.email, ),
),
BoolDropdownButton( BoolDropdownButton(
value: settings.clientOnlinePaymentNotification, value: settings.clientOnlinePaymentNotification,
onChanged: (value) => viewModel.onSettingsChanged( onChanged: (value) => viewModel.onSettingsChanged(