Change ‘Send Email’ to ‘Email Invoice’

This commit is contained in:
Hillel Coren 2020-06-25 11:00:20 +03:00
parent 65bd188ecf
commit f98143b779
11 changed files with 50 additions and 14 deletions

View File

@ -536,7 +536,13 @@ abstract class InvoiceEntity extends Object
} }
if (userCompany.canEditEntity(this)) { if (userCompany.canEditEntity(this)) {
actions.add(EntityAction.sendEmail); if (entityType == EntityType.quote) {
actions.add(EntityAction.emailQuote);
} else if (entityType == EntityType.credit) {
actions.add(EntityAction.emailCredit);
} else {
actions.add(EntityAction.emailInvoice);
}
if (!isQuote && if (!isQuote &&
userCompany.canCreate(EntityType.payment) && userCompany.canCreate(EntityType.payment) &&

View File

@ -48,7 +48,10 @@ class EntityAction extends EnumClass {
static const EntityAction convert = _$convert; static const EntityAction convert = _$convert;
static const EntityAction approve = _$approve; static const EntityAction approve = _$approve;
static const EntityAction download = _$download; static const EntityAction download = _$download;
static const EntityAction sendEmail = _$sendEmail; static const EntityAction emailInvoice = _$emailInvoice;
static const EntityAction emailQuote = _$emailQuote;
static const EntityAction emailCredit = _$emailCredit;
static const EntityAction emailPayment = _$emailPayment;
static const EntityAction markSent = _$markSent; static const EntityAction markSent = _$markSent;
static const EntityAction markPaid = _$markPaid; static const EntityAction markPaid = _$markPaid;
static const EntityAction newClient = _$newClient; static const EntityAction newClient = _$newClient;

View File

@ -18,7 +18,10 @@ const EntityAction _$cloneToQuote = const EntityAction._('cloneToQuote');
const EntityAction _$convert = const EntityAction._('convert'); const EntityAction _$convert = const EntityAction._('convert');
const EntityAction _$approve = const EntityAction._('approve'); const EntityAction _$approve = const EntityAction._('approve');
const EntityAction _$download = const EntityAction._('download'); const EntityAction _$download = const EntityAction._('download');
const EntityAction _$sendEmail = const EntityAction._('sendEmail'); const EntityAction _$emailInvoice = const EntityAction._('emailInvoice');
const EntityAction _$emailQuote = const EntityAction._('emailQuote');
const EntityAction _$emailCredit = const EntityAction._('emailCredit');
const EntityAction _$emailPayment = const EntityAction._('emailPayment');
const EntityAction _$markSent = const EntityAction._('markSent'); const EntityAction _$markSent = const EntityAction._('markSent');
const EntityAction _$markPaid = const EntityAction._('markPaid'); const EntityAction _$markPaid = const EntityAction._('markPaid');
const EntityAction _$newClient = const EntityAction._('newClient'); const EntityAction _$newClient = const EntityAction._('newClient');
@ -70,8 +73,14 @@ EntityAction _$valueOf(String name) {
return _$approve; return _$approve;
case 'download': case 'download':
return _$download; return _$download;
case 'sendEmail': case 'emailInvoice':
return _$sendEmail; return _$emailInvoice;
case 'emailQuote':
return _$emailQuote;
case 'emailCredit':
return _$emailCredit;
case 'emailPayment':
return _$emailPayment;
case 'markSent': case 'markSent':
return _$markSent; return _$markSent;
case 'markPaid': case 'markPaid':
@ -137,7 +146,10 @@ final BuiltSet<EntityAction> _$values =
_$convert, _$convert,
_$approve, _$approve,
_$download, _$download,
_$sendEmail, _$emailInvoice,
_$emailQuote,
_$emailCredit,
_$emailPayment,
_$markSent, _$markSent,
_$markPaid, _$markPaid,
_$newClient, _$newClient,

View File

@ -339,7 +339,7 @@ abstract class PaymentEntity extends Object
} }
if (client != null && client.hasEmailAddress) { if (client != null && client.hasEmailAddress) {
actions.add(EntityAction.sendEmail); actions.add(EntityAction.emailPayment);
} }
} }
} }

View File

@ -178,8 +178,6 @@ void _checkResponse(http.Response response) {
final serverVersion = response.headers['x-app-version']; final serverVersion = response.headers['x-app-version'];
final minClientVersion = response.headers['x-minimum-client-version']; final minClientVersion = response.headers['x-minimum-client-version'];
// TODO re-enable this code
return;
if (serverVersion == null) { if (serverVersion == null) {
throw 'Error: please check that Invoice Ninja v5 is installed on the server'; throw 'Error: please check that Invoice Ninja v5 is installed on the server';
} else { } else {

View File

@ -417,7 +417,7 @@ Future handleCreditAction(
snackBarCompleter<Null>(context, localization.markedCreditAsSent), snackBarCompleter<Null>(context, localization.markedCreditAsSent),
creditIds)); creditIds));
break; break;
case EntityAction.sendEmail: case EntityAction.emailCredit:
store.dispatch(ShowEmailCredit( store.dispatch(ShowEmailCredit(
completer: completer:
snackBarCompleter<Null>(context, localization.emailedCredit), snackBarCompleter<Null>(context, localization.emailedCredit),

View File

@ -508,7 +508,7 @@ void handleInvoiceAction(BuildContext context, List<BaseEntity> invoices,
: localization.markedInvoicesAsPaid), : localization.markedInvoicesAsPaid),
invoiceIds)); invoiceIds));
break; break;
case EntityAction.sendEmail: case EntityAction.emailInvoice:
final client = state.clientState.get(invoice.clientId); final client = state.clientState.get(invoice.clientId);
if (!client.hasEmailAddress) { if (!client.hasEmailAddress) {
showMessageDialog(context: context, message: localization.clientEmailNotSet); showMessageDialog(context: context, message: localization.clientEmailNotSet);

View File

@ -332,7 +332,7 @@ void handlePaymentAction(
payment: payment, payment: payment,
)); ));
break; break;
case EntityAction.sendEmail: case EntityAction.emailPayment:
store.dispatch(EmailPaymentRequest( store.dispatch(EmailPaymentRequest(
snackBarCompleter<Null>(context, localization.emailedPayment), snackBarCompleter<Null>(context, localization.emailedPayment),
payment)); payment));

View File

@ -430,7 +430,7 @@ Future handleQuoteAction(
snackBarCompleter<Null>(context, localization.markedQuoteAsSent), snackBarCompleter<Null>(context, localization.markedQuoteAsSent),
quoteIds)); quoteIds));
break; break;
case EntityAction.sendEmail: case EntityAction.emailQuote:
store.dispatch(ShowEmailQuote( store.dispatch(ShowEmailQuote(
completer: completer:
snackBarCompleter<Null>(context, localization.emailedQuote), snackBarCompleter<Null>(context, localization.emailedQuote),

View File

@ -15,6 +15,10 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map<String, Map<String, String>> _localizedValues = { static final Map<String, Map<String, String>> _localizedValues = {
'en': { 'en': {
// STARTER: lang key - do not remove comment // STARTER: lang key - do not remove comment
'email_invoice': 'Email Invoice',
'email_quote': 'Email Quote',
'email_credit': 'Email Credit',
'email_payment': 'Email Payment',
'client_email_not_set': 'Client does not have an email address set', 'client_email_not_set': 'Client does not have an email address set',
'ledger': 'Ledger', 'ledger': 'Ledger',
'view_pdf': 'View PDF', 'view_pdf': 'View PDF',
@ -3913,6 +3917,16 @@ mixin LocalizationsProvider on LocaleCodeAware {
String get clientEmailNotSet => String get clientEmailNotSet =>
_localizedValues[localeCode]['client_email_not_set'] ?? ''; _localizedValues[localeCode]['client_email_not_set'] ?? '';
String get emailInvoice =>
_localizedValues[localeCode]['email_invoice'] ?? '';
String get emailQuote => _localizedValues[localeCode]['email_quote'] ?? '';
String get emailCredit => _localizedValues[localeCode]['email_credit'] ?? '';
String get emailPayment =>
_localizedValues[localeCode]['email_payment'] ?? '';
String lookup(String key) { String lookup(String key) {
final lookupKey = toSnakeCase(key); final lookupKey = toSnakeCase(key);
return _localizedValues[localeCode][lookupKey] ?? return _localizedValues[localeCode][lookupKey] ??

View File

@ -20,7 +20,10 @@ IconData getEntityActionIcon(EntityAction entityAction) {
return Icons.public; return Icons.public;
case EntityAction.markPaid: case EntityAction.markPaid:
return Icons.payment; return Icons.payment;
case EntityAction.sendEmail: case EntityAction.emailPayment:
case EntityAction.emailQuote:
case EntityAction.emailInvoice:
case EntityAction.emailCredit:
return Icons.send; return Icons.send;
case EntityAction.archive: case EntityAction.archive:
return Icons.archive; return Icons.archive;