Recurring invoices

This commit is contained in:
Hillel Coren 2020-09-21 20:04:36 +03:00
parent 4451dcb3f3
commit baf6d5c5fb
3 changed files with 44 additions and 8 deletions

View File

@ -129,6 +129,7 @@ abstract class InvoiceEntity extends Object
partialDueDate: '', partialDueDate: '',
hasTasks: false, hasTasks: false,
autoBill: CompanyGatewayEntity.TOKEN_BILLING_ALWAYS, autoBill: CompanyGatewayEntity.TOKEN_BILLING_ALWAYS,
autoBillEnabled: false,
customValue1: '', customValue1: '',
customValue2: '', customValue2: '',
customValue3: '', customValue3: '',
@ -288,10 +289,12 @@ abstract class InvoiceEntity extends Object
@BuiltValueField(wireName: 'has_tasks') @BuiltValueField(wireName: 'has_tasks')
bool get hasTasks; bool get hasTasks;
@nullable
@BuiltValueField(wireName: 'auto_bill') @BuiltValueField(wireName: 'auto_bill')
String get autoBill; String get autoBill;
@BuiltValueField(wireName: 'auto_bill_enabled')
bool get autoBillEnabled;
@BuiltValueField(wireName: 'custom_value1') @BuiltValueField(wireName: 'custom_value1')
String get customValue1; String get customValue1;

View File

@ -201,6 +201,12 @@ class _$InvoiceEntitySerializer implements StructuredSerializer<InvoiceEntity> {
'has_tasks', 'has_tasks',
serializers.serialize(object.hasTasks, serializers.serialize(object.hasTasks,
specifiedType: const FullType(bool)), specifiedType: const FullType(bool)),
'auto_bill',
serializers.serialize(object.autoBill,
specifiedType: const FullType(String)),
'auto_bill_enabled',
serializers.serialize(object.autoBillEnabled,
specifiedType: const FullType(bool)),
'custom_value1', 'custom_value1',
serializers.serialize(object.customValue1, serializers.serialize(object.customValue1,
specifiedType: const FullType(String)), specifiedType: const FullType(String)),
@ -261,12 +267,6 @@ class _$InvoiceEntitySerializer implements StructuredSerializer<InvoiceEntity> {
'id', 'id',
serializers.serialize(object.id, specifiedType: const FullType(String)), serializers.serialize(object.id, specifiedType: const FullType(String)),
]; ];
if (object.autoBill != null) {
result
..add('auto_bill')
..add(serializers.serialize(object.autoBill,
specifiedType: const FullType(String)));
}
if (object.customTaxes1 != null) { if (object.customTaxes1 != null) {
result result
..add('custom_taxes1') ..add('custom_taxes1')
@ -511,6 +511,10 @@ class _$InvoiceEntitySerializer implements StructuredSerializer<InvoiceEntity> {
result.autoBill = serializers.deserialize(value, result.autoBill = serializers.deserialize(value,
specifiedType: const FullType(String)) as String; specifiedType: const FullType(String)) as String;
break; break;
case 'auto_bill_enabled':
result.autoBillEnabled = serializers.deserialize(value,
specifiedType: const FullType(bool)) as bool;
break;
case 'custom_value1': case 'custom_value1':
result.customValue1 = serializers.deserialize(value, result.customValue1 = serializers.deserialize(value,
specifiedType: const FullType(String)) as String; specifiedType: const FullType(String)) as String;
@ -1338,6 +1342,8 @@ class _$InvoiceEntity extends InvoiceEntity {
@override @override
final String autoBill; final String autoBill;
@override @override
final bool autoBillEnabled;
@override
final String customValue1; final String customValue1;
@override @override
final String customValue2; final String customValue2;
@ -1447,6 +1453,7 @@ class _$InvoiceEntity extends InvoiceEntity {
this.partialDueDate, this.partialDueDate,
this.hasTasks, this.hasTasks,
this.autoBill, this.autoBill,
this.autoBillEnabled,
this.customValue1, this.customValue1,
this.customValue2, this.customValue2,
this.customValue3, this.customValue3,
@ -1565,6 +1572,12 @@ class _$InvoiceEntity extends InvoiceEntity {
if (hasTasks == null) { if (hasTasks == null) {
throw new BuiltValueNullFieldError('InvoiceEntity', 'hasTasks'); throw new BuiltValueNullFieldError('InvoiceEntity', 'hasTasks');
} }
if (autoBill == null) {
throw new BuiltValueNullFieldError('InvoiceEntity', 'autoBill');
}
if (autoBillEnabled == null) {
throw new BuiltValueNullFieldError('InvoiceEntity', 'autoBillEnabled');
}
if (customValue1 == null) { if (customValue1 == null) {
throw new BuiltValueNullFieldError('InvoiceEntity', 'customValue1'); throw new BuiltValueNullFieldError('InvoiceEntity', 'customValue1');
} }
@ -1662,6 +1675,7 @@ class _$InvoiceEntity extends InvoiceEntity {
partialDueDate == other.partialDueDate && partialDueDate == other.partialDueDate &&
hasTasks == other.hasTasks && hasTasks == other.hasTasks &&
autoBill == other.autoBill && autoBill == other.autoBill &&
autoBillEnabled == other.autoBillEnabled &&
customValue1 == other.customValue1 && customValue1 == other.customValue1 &&
customValue2 == other.customValue2 && customValue2 == other.customValue2 &&
customValue3 == other.customValue3 && customValue3 == other.customValue3 &&
@ -1724,7 +1738,7 @@ class _$InvoiceEntity extends InvoiceEntity {
$jc( $jc(
$jc( $jc(
$jc( $jc(
$jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc(0, amount.hashCode), balance.hashCode), clientId.hashCode), statusId.hashCode), number.hashCode), discount.hashCode), poNumber.hashCode), date.hashCode), dueDate.hashCode), publicNotes.hashCode), privateNotes.hashCode), terms.hashCode), footer.hashCode), designId.hashCode), usesInclusiveTaxes.hashCode), taxName1.hashCode), taxRate1.hashCode), taxName2.hashCode), taxRate2.hashCode), taxName3.hashCode), taxRate3.hashCode), isAmountDiscount.hashCode), partial.hashCode), taxAmount.hashCode), partialDueDate.hashCode), hasTasks.hashCode), autoBill.hashCode), customValue1.hashCode), customValue2.hashCode), customValue3.hashCode), customValue4.hashCode), customSurcharge1.hashCode), customSurcharge2.hashCode), customSurcharge3.hashCode), customSurcharge4.hashCode), customTaxes1.hashCode), customTaxes2.hashCode), customTaxes3.hashCode), customTaxes4.hashCode), hasExpenses.hashCode), exchangeRate.hashCode), reminder1Sent.hashCode), reminder2Sent.hashCode), reminder3Sent.hashCode), reminderLastSent.hashCode), frequencyId.hashCode), lastSentDate.hashCode), $jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc($jc(0, amount.hashCode), balance.hashCode), clientId.hashCode), statusId.hashCode), number.hashCode), discount.hashCode), poNumber.hashCode), date.hashCode), dueDate.hashCode), publicNotes.hashCode), privateNotes.hashCode), terms.hashCode), footer.hashCode), designId.hashCode), usesInclusiveTaxes.hashCode), taxName1.hashCode), taxRate1.hashCode), taxName2.hashCode), taxRate2.hashCode), taxName3.hashCode), taxRate3.hashCode), isAmountDiscount.hashCode), partial.hashCode), taxAmount.hashCode), partialDueDate.hashCode), hasTasks.hashCode), autoBill.hashCode), autoBillEnabled.hashCode), customValue1.hashCode), customValue2.hashCode), customValue3.hashCode), customValue4.hashCode), customSurcharge1.hashCode), customSurcharge2.hashCode), customSurcharge3.hashCode), customSurcharge4.hashCode), customTaxes1.hashCode), customTaxes2.hashCode), customTaxes3.hashCode), customTaxes4.hashCode), hasExpenses.hashCode), exchangeRate.hashCode), reminder1Sent.hashCode), reminder2Sent.hashCode), reminder3Sent.hashCode), reminderLastSent.hashCode), frequencyId.hashCode), lastSentDate.hashCode),
nextSendDate.hashCode), nextSendDate.hashCode),
remainingCycles.hashCode), remainingCycles.hashCode),
dueDateDays.hashCode), dueDateDays.hashCode),
@ -1776,6 +1790,7 @@ class _$InvoiceEntity extends InvoiceEntity {
..add('partialDueDate', partialDueDate) ..add('partialDueDate', partialDueDate)
..add('hasTasks', hasTasks) ..add('hasTasks', hasTasks)
..add('autoBill', autoBill) ..add('autoBill', autoBill)
..add('autoBillEnabled', autoBillEnabled)
..add('customValue1', customValue1) ..add('customValue1', customValue1)
..add('customValue2', customValue2) ..add('customValue2', customValue2)
..add('customValue3', customValue3) ..add('customValue3', customValue3)
@ -1934,6 +1949,11 @@ class InvoiceEntityBuilder
String get autoBill => _$this._autoBill; String get autoBill => _$this._autoBill;
set autoBill(String autoBill) => _$this._autoBill = autoBill; set autoBill(String autoBill) => _$this._autoBill = autoBill;
bool _autoBillEnabled;
bool get autoBillEnabled => _$this._autoBillEnabled;
set autoBillEnabled(bool autoBillEnabled) =>
_$this._autoBillEnabled = autoBillEnabled;
String _customValue1; String _customValue1;
String get customValue1 => _$this._customValue1; String get customValue1 => _$this._customValue1;
set customValue1(String customValue1) => _$this._customValue1 = customValue1; set customValue1(String customValue1) => _$this._customValue1 = customValue1;
@ -2140,6 +2160,7 @@ class InvoiceEntityBuilder
_partialDueDate = _$v.partialDueDate; _partialDueDate = _$v.partialDueDate;
_hasTasks = _$v.hasTasks; _hasTasks = _$v.hasTasks;
_autoBill = _$v.autoBill; _autoBill = _$v.autoBill;
_autoBillEnabled = _$v.autoBillEnabled;
_customValue1 = _$v.customValue1; _customValue1 = _$v.customValue1;
_customValue2 = _$v.customValue2; _customValue2 = _$v.customValue2;
_customValue3 = _$v.customValue3; _customValue3 = _$v.customValue3;
@ -2230,6 +2251,7 @@ class InvoiceEntityBuilder
partialDueDate: partialDueDate, partialDueDate: partialDueDate,
hasTasks: hasTasks, hasTasks: hasTasks,
autoBill: autoBill, autoBill: autoBill,
autoBillEnabled: autoBillEnabled,
customValue1: customValue1, customValue1: customValue1,
customValue2: customValue2, customValue2: customValue2,
customValue3: customValue3, customValue3: customValue3,

View File

@ -1,5 +1,6 @@
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/constants.dart';
import 'package:invoiceninja_flutter/data/models/company_gateway_model.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/data/models/quote_model.dart'; import 'package:invoiceninja_flutter/data/models/quote_model.dart';
@ -121,6 +122,16 @@ class InvoiceOverview extends StatelessWidget {
RecurringInvoiceFields.remainingCycles: invoice.remainingCycles == -1 RecurringInvoiceFields.remainingCycles: invoice.remainingCycles == -1
? localization.endless ? localization.endless
: '${invoice.remainingCycles}', : '${invoice.remainingCycles}',
RecurringInvoiceFields.autoBill: localization.lookup(invoice.autoBill) +
([
CompanyGatewayEntity.TOKEN_BILLING_OPT_IN,
CompanyGatewayEntity.TOKEN_BILLING_OPT_OUT
].contains(invoice.autoBill)
? (' - ' +
(invoice.autoBillEnabled
? localization.yes
: localization.no))
: ''),
InvoiceFields.dueDate: invoice.dueDateDays == 'terms' InvoiceFields.dueDate: invoice.dueDateDays == 'terms'
? localization.paymentTerm ? localization.paymentTerm
: invoice.dueDateDays == '1' : invoice.dueDateDays == '1'