Expense changes

This commit is contained in:
Hillel Coren 2021-01-12 13:07:42 +02:00
parent ed3ba13fa9
commit b4251c674e
4 changed files with 78 additions and 29 deletions

View File

@ -552,14 +552,25 @@ abstract class ExpenseEntity extends Object
@override @override
FormatNumberType get listDisplayAmountType => FormatNumberType.money; FormatNumberType get listDisplayAmountType => FormatNumberType.money;
double get calculatetaxRate1 => double get calculatetaxRate1 {
calculateTaxByAmount == true ? taxAmount1 / amount : taxRate1; if (calculateTaxByAmount == true) {
if (usesInclusiveTaxes) {
return taxAmount1 / (amount - taxAmount1) * 100;
} else {
return taxAmount1 / amount * 100;
}
} else {
return taxRate1;
}
}
double get calculatetaxRate2 => double get calculatetaxRate2 => calculateTaxByAmount == true
calculateTaxByAmount == true ? taxAmount2 / amount : taxRate2; ? taxAmount2 / (amount - taxAmount2) * 100
: taxRate2;
double get calculatetaxRate3 => double get calculatetaxRate3 => calculateTaxByAmount == true
calculateTaxByAmount == true ? taxAmount3 / amount : taxRate3; ? taxAmount3 / (amount - taxAmount3) * 100
: taxRate3;
double get taxAmount { double get taxAmount {
var total = 0.0; var total = 0.0;
@ -609,9 +620,9 @@ abstract class ExpenseEntity extends Object
double get convertedExchangeRate => exchangeRate == 0 ? 1 : exchangeRate; double get convertedExchangeRate => exchangeRate == 0 ? 1 : exchangeRate;
double get convertedAmount => round(grossAmount * convertedExchangeRate, 2); double get convertedAmount => grossAmount * convertedExchangeRate;
double get convertedNetAmount => round(netAmount * convertedExchangeRate, 2); double get convertedNetAmount => netAmount * convertedExchangeRate;
double get convertedAmountWithTax => double get convertedAmountWithTax =>
round(grossAmount * convertedExchangeRate, 2); round(grossAmount * convertedExchangeRate, 2);

View File

@ -16,7 +16,9 @@ InvoiceItemEntity convertExpenseToInvoiceItem({
..notes = expense.publicNotes ..notes = expense.publicNotes
..quantity = ..quantity =
company.defaultQuantity || !company.enableProductQuantity ? 1 : null company.defaultQuantity || !company.enableProductQuantity ? 1 : null
..cost = expense.convertedNetAmount ..cost = company.settings.enableInclusiveTaxes
? expense.convertedAmount
: expense.convertedNetAmount
..taxName1 = expense.taxName1 ..taxName1 = expense.taxName1
..taxRate1 = expense.calculatetaxRate1 ..taxRate1 = expense.calculatetaxRate1
..taxName2 = expense.taxName2 ..taxName2 = expense.taxName2

View File

@ -15,10 +15,26 @@ InvoiceItemEntity convertTaskToInvoiceItem(
final client = state.clientState.get(task.clientId); final client = state.clientState.get(task.clientId);
final group = state.groupState.get(client.groupId); final group = state.groupState.get(client.groupId);
var notes = task.description;
if (state.company.invoiceTaskTimelog) {
notes += '\n';
task
.getTaskTimes(sort: true)
.where((time) => time.startDate != null && time.endDate != null)
.forEach((time) {
final start =
formatDate(time.startDate.toIso8601String(), context, showTime: true);
final end = formatDate(time.endDate.toIso8601String(), context,
showTime: true, showDate: false, showSeconds: false);
notes += '\n$start - $end';
});
}
return InvoiceItemEntity().rebuild((b) => b return InvoiceItemEntity().rebuild((b) => b
..taskId = task.id ..taskId = task.id
..typeId = InvoiceItemEntity.TYPE_TASK ..typeId = InvoiceItemEntity.TYPE_TASK
..notes = task.description ..notes = notes
..cost = taskRateSelector( ..cost = taskRateSelector(
company: state.company, company: state.company,
project: project, project: project,

View File

@ -52,25 +52,45 @@ class ExpenseOverview extends StatelessWidget {
List<Widget> _buildDetailsList() { List<Widget> _buildDetailsList() {
String tax = ''; String tax = '';
if (expense.taxName1.isNotEmpty) { if (expense.calculateTaxByAmount) {
tax += formatNumber(expense.taxRate1, context, if (expense.taxName1.isNotEmpty) {
formatNumberType: FormatNumberType.percent) + tax += formatNumber(expense.taxAmount1, context) +
' ' + ' ' +
expense.taxName1; expense.taxName1;
} }
if (expense.taxName2.isNotEmpty) { if (expense.taxName2.isNotEmpty) {
tax += ' ' + tax += ' ' +
formatNumber(expense.taxRate2, context, formatNumber(expense.taxAmount2, context) +
formatNumberType: FormatNumberType.percent) + ' ' +
' ' + expense.taxName2;
expense.taxName2; }
} if (expense.taxName3.isNotEmpty) {
if (expense.taxName3.isNotEmpty) { tax += ' ' +
tax += ' ' + formatNumber(expense.taxAmount3, context) +
formatNumber(expense.taxRate3, context, ' ' +
formatNumberType: FormatNumberType.percent) + expense.taxName3;
' ' + }
expense.taxName3; } else {
if (expense.taxName1.isNotEmpty) {
tax += formatNumber(expense.taxRate1, context,
formatNumberType: FormatNumberType.percent) +
' ' +
expense.taxName1;
}
if (expense.taxName2.isNotEmpty) {
tax += ' ' +
formatNumber(expense.taxRate2, context,
formatNumberType: FormatNumberType.percent) +
' ' +
expense.taxName2;
}
if (expense.taxName3.isNotEmpty) {
tax += ' ' +
formatNumber(expense.taxRate3, context,
formatNumberType: FormatNumberType.percent) +
' ' +
expense.taxName3;
}
} }
final fields = <String, String>{ final fields = <String, String>{