Add credit mark paid action

This commit is contained in:
Hillel Coren 2022-01-16 16:53:28 +02:00
parent ed19c885b0
commit 17694e30c7
4 changed files with 67 additions and 0 deletions

View File

@ -878,6 +878,8 @@ abstract class InvoiceEntity extends Object
if (isPayable && isInvoice) {
actions.add(EntityAction.markPaid);
} else if (isCredit && balanceOrAmount > 0) {
//actions.add(EntityAction.markPaid);
}
if (isPayable && userCompany.canCreate(EntityType.payment)) {

View File

@ -277,6 +277,25 @@ class BulkEmailCreditsFailure implements StopSaving {
final dynamic error;
}
class MarkCreditsPaidRequest implements StartSaving {
MarkCreditsPaidRequest(this.completer, this.invoiceIds);
final Completer completer;
final List<String> invoiceIds;
}
class MarkCreditsPaidSuccess implements StopSaving {
MarkCreditsPaidSuccess(this.invoices);
final List<InvoiceEntity> invoices;
}
class MarkCreditsPaidFailure implements StopSaving {
MarkCreditsPaidFailure(this.error);
final dynamic error;
}
class ArchiveCreditsRequest implements StartSaving {
ArchiveCreditsRequest(this.completer, this.creditIds);
@ -536,6 +555,15 @@ Future handleCreditAction(
..entityType = EntityType.recurringInvoice
..designId = designId));
break;
case EntityAction.markPaid:
store.dispatch(MarkCreditsPaidRequest(
snackBarCompleter<Null>(
context,
credits.length == 1
? localization.markedCreditAsPaid
: localization.markedCreditsAsPaid),
creditIds));
break;
case EntityAction.applyCredit:
createEntity(
context: context,

View File

@ -35,6 +35,7 @@ List<Middleware<AppState>> createStoreCreditsMiddleware([
final restoreCredit = _restoreCredit(repository);
final emailCredit = _emailCredit(repository);
final bulkEmailCredits = _bulkEmailCredits(repository);
final markPaidCredit = _markPaidCredit(repository);
final markSentCredit = _markSentCredit(repository);
final downloadCredits = _downloadCredits(repository);
final saveDocument = _saveDocument(repository);
@ -54,6 +55,7 @@ List<Middleware<AppState>> createStoreCreditsMiddleware([
TypedMiddleware<AppState, EmailCreditRequest>(emailCredit),
TypedMiddleware<AppState, BulkEmailCreditsRequest>(bulkEmailCredits),
TypedMiddleware<AppState, MarkSentCreditRequest>(markSentCredit),
TypedMiddleware<AppState, MarkCreditsPaidRequest>(markPaidCredit),
TypedMiddleware<AppState, DownloadCreditsRequest>(downloadCredits),
TypedMiddleware<AppState, SaveCreditDocumentRequest>(saveDocument),
];
@ -242,6 +244,30 @@ Middleware<AppState> _markSentCredit(CreditRepository repository) {
};
}
Middleware<AppState> _markPaidCredit(CreditRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as MarkCreditsPaidRequest;
repository
.bulkAction(
store.state.credentials, action.invoiceIds, EntityAction.markPaid)
.then((invoices) {
store.dispatch(MarkCreditsPaidSuccess(invoices));
store.dispatch(RefreshData());
if (action.completer != null) {
action.completer.complete(null);
}
}).catchError((Object error) {
print(error);
store.dispatch(MarkCreditsPaidFailure(error));
if (action.completer != null) {
action.completer.completeError(error);
}
});
next(action);
};
}
Middleware<AppState> _emailCredit(CreditRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as EmailCreditRequest;

View File

@ -16,6 +16,8 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map<String, Map<String, String>> _localizedValues = {
'en': {
// STARTER: lang key - do not remove comment
'marked_credit_as_paid': 'Successfully marked credit as paid',
'marked_credits_as_paid': 'Successfully marked credits as paid',
'wait_for_loading': 'Data loading - please wait for it to complete',
'wait_for_saving': 'Data saving - please wait for it to complete',
'html_preview_warning':
@ -70935,6 +70937,15 @@ mixin LocalizationsProvider on LocaleCodeAware {
_localizedValues[localeCode]['wait_for_saving'] ??
_localizedValues['en']['wait_for_saving'];
String get markedCreditAsPaid =>
_localizedValues[localeCode]['marked_credit_as_paid'] ??
_localizedValues['en']['marked_credit_as_paid'];
String get markedCreditsAsPaid =>
_localizedValues[localeCode]['marked_credits_as_paid'] ??
_localizedValues['en']['marked_credits_as_paid'];
// STARTER: lang field - do not remove comment
String lookup(String key) {