Merge branch 'develop'

This commit is contained in:
Hillel Coren 2024-01-08 11:13:29 +02:00
commit a0fcc6b5b6
10 changed files with 34 additions and 21 deletions

View File

@ -86,7 +86,7 @@ jobs:
draft: false draft: false
prerelease: false prerelease: false
title: "Latest Release" title: "Latest Release"
automatic_release_tag: "v5.0.147" automatic_release_tag: "v5.0.148"
files: | files: |
${{ github.workspace }}/artifacts/Invoice-Ninja-Archive ${{ github.workspace }}/artifacts/Invoice-Ninja-Archive
${{ github.workspace }}/artifacts/Invoice-Ninja-Hash ${{ github.workspace }}/artifacts/Invoice-Ninja-Hash

View File

@ -50,6 +50,7 @@
</screenshots> </screenshots>
<content_rating type="oars-1.1"/> <content_rating type="oars-1.1"/>
<releases> <releases>
<release version="5.0.148" date="2024-01-08"/>
<release version="5.0.147" date="2024-01-02"/> <release version="5.0.147" date="2024-01-02"/>
<release version="5.0.146" date="2023-12-20"/> <release version="5.0.146" date="2023-12-20"/>
<release version="5.0.145" date="2023-12-03"/> <release version="5.0.145" date="2023-12-03"/>

View File

@ -4,7 +4,7 @@ class Constants {
} }
// TODO remove version once #46609 is fixed // TODO remove version once #46609 is fixed
const String kClientVersion = '5.0.147'; const String kClientVersion = '5.0.148';
const String kMinServerVersion = '5.0.4'; const String kMinServerVersion = '5.0.4';
const String kAppName = 'Invoice Ninja'; const String kAppName = 'Invoice Ninja';

View File

@ -37,7 +37,9 @@ class BankAccountScreen extends StatelessWidget {
void connectAccounts(BuildContext context) { void connectAccounts(BuildContext context) {
final localization = AppLocalization.of(context)!; final localization = AppLocalization.of(context)!;
if (isSelfHosted(context)) { if (!supportsLatestFeatures('5.8.0')) {
_connectAccounts(context, BankAccountEntity.INTEGRATION_TYPE_YODLEE);
} else if (isSelfHosted(context)) {
_connectAccounts(context, BankAccountEntity.INTEGRATION_TYPE_NORDIGEN); _connectAccounts(context, BankAccountEntity.INTEGRATION_TYPE_NORDIGEN);
} else { } else {
showDialog( showDialog(

View File

@ -821,6 +821,19 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
EntityAutocompleteListTile( EntityAutocompleteListTile(
onTap: (entity) => onSelected( onTap: (entity) => onSelected(
entity as ProductEntity), entity as ProductEntity),
overrideSuggestedLabel:
(entity) {
var label =
entity.listDisplayName;
if (state.company
.trackInventory) {
final product = entity
as ProductEntity;
label +=
' [${product.stockQuantity}]';
}
return label;
},
overrideSuggestedAmount: overrideSuggestedAmount:
(entity) { (entity) {
final product = final product =

View File

@ -268,11 +268,6 @@ class InvoiceOverview extends StatelessWidget {
widgets.add(EntityListTile(entity: project, isFilter: isFilter)); widgets.add(EntityListTile(entity: project, isFilter: isFilter));
} }
if ((invoice.invoiceId ?? '').isNotEmpty) {
final linkedInvoice = state.invoiceState.get(invoice.invoiceId!);
widgets.add(EntityListTile(entity: linkedInvoice, isFilter: isFilter));
}
if (invoice.expenseId.isNotEmpty) { if (invoice.expenseId.isNotEmpty) {
final expense = state.vendorState.get(invoice.expenseId); final expense = state.vendorState.get(invoice.expenseId);
widgets.add(EntityListTile(entity: expense, isFilter: isFilter)); widgets.add(EntityListTile(entity: expense, isFilter: isFilter));
@ -303,16 +298,16 @@ class InvoiceOverview extends StatelessWidget {
)); ));
} }
if (invoice.isQuote || invoice.isCredit) { final relatedInvoice = state.invoiceState.map[invoice.invoiceId] ??
final relatedInvoice = state.invoiceState.map[invoice.invoiceId] ?? InvoiceEntity(id: invoice.invoiceId);
InvoiceEntity(id: invoice.invoiceId); if ((invoice.invoiceId ?? '').isNotEmpty) {
if ((invoice.invoiceId ?? '').isNotEmpty) { widgets.add(EntityListTile(
widgets.add(EntityListTile( isFilter: isFilter,
isFilter: isFilter, entity: relatedInvoice,
entity: relatedInvoice, ));
)); }
}
} else { if (invoice.isInvoice) {
final relatedQuote = final relatedQuote =
memoizedInvoiceQuoteSelector(invoice, state.quoteState.map); memoizedInvoiceQuoteSelector(invoice, state.quoteState.map);
if (relatedQuote != null) { if (relatedQuote != null) {

View File

@ -57,9 +57,11 @@ bool supportsLatestFeatures(String version) {
return true; return true;
} }
/*
if (state.isSelfHosted) { if (state.isSelfHosted) {
return true; return true;
} }
*/
if (version.isEmpty) { if (version.isEmpty) {
return false; return false;

View File

@ -1,6 +1,6 @@
name: invoiceninja_flutter name: invoiceninja_flutter
description: Client for Invoice Ninja description: Client for Invoice Ninja
version: 5.0.147+147 version: 5.0.148+148
homepage: https://invoiceninja.com homepage: https://invoiceninja.com
documentation: https://invoiceninja.github.io documentation: https://invoiceninja.github.io
publish_to: none publish_to: none

View File

@ -1,6 +1,6 @@
name: invoiceninja_flutter name: invoiceninja_flutter
description: Client for Invoice Ninja description: Client for Invoice Ninja
version: 5.0.147+147 version: 5.0.148+148
homepage: https://invoiceninja.com homepage: https://invoiceninja.com
documentation: https://invoiceninja.github.io documentation: https://invoiceninja.github.io
publish_to: none publish_to: none

View File

@ -1,5 +1,5 @@
name: invoiceninja name: invoiceninja
version: '5.0.147' version: '5.0.148'
summary: Create invoices, accept payments, track expenses & time tasks summary: Create invoices, accept payments, track expenses & time tasks
description: "### Note: if the app fails to run using `snap run invoiceninja` it may help to run `/snap/invoiceninja/current/bin/invoiceninja` instead description: "### Note: if the app fails to run using `snap run invoiceninja` it may help to run `/snap/invoiceninja/current/bin/invoiceninja` instead