getEarningData function
Implementation
List<EarningData> getEarningData(ProviderData item){
List<EarningData> items = [];
EarningData data = EarningData();
ordersDataCache.sort((a, b) => b.time.compareTo(a.time));
//
DateTime _now = DateTime.now();
DateTime _firstDayOfWeek = _now.subtract(Duration(days: _now.weekday));
DateTime _firstDayOfMonth = _now.subtract(Duration(days: _now.day));
for (var booking in ordersDataCache)
if (booking.finished && booking.providerId == item.id){
data.count++;
//
EarningData item = EarningData();
item.id = booking.id;
item.time = booking.time;
item.name = booking.name;
item.customerName = booking.customerName;
//
// subtotal = price - coupon + addon
// total = subtotal + subtotal*tax
//
//
//
item.total = booking.total;
data.total += item.total;
//
item.admin = booking.toAdmin;
data.admin += item.admin;
//
item.provider = booking.subtotal - item.admin;
data.provider += item.provider;
//
item.tax = booking.tax; //item.total*booking.tax/100;
data.tax += item.tax;
// print("booking.id=${booking.id} booking.providerId =${booking.providerId} _total=$_total _toAdmin=$_toAdmin provider=${data.total - _toAdmin} data.total=${data.total} data.count=${data.count}");
//
if (item.time.year == _now.year && item.time.month == _now.month && item.time.day == _now.day){
data.todayEarning += booking.total;
data.todayBooking++;
}
if (item.time.millisecondsSinceEpoch > _firstDayOfWeek.millisecondsSinceEpoch){ // this week
data.thisWeekEarning += booking.total;
data.thisWeekBooking++;
}
if (item.time.millisecondsSinceEpoch > _firstDayOfMonth.millisecondsSinceEpoch){ // this month
data.thisMonthEarning += booking.total;
}
data.totalBooking++;
//
items.add(item);
}
data.payout = data.provider;
for (var item2 in payout)
if (item2.providerId == item.id)
data.payout -= item2.total;
if (data.payout < 0)
data.payout = 0;
items.sort((a, b) => b.time.compareTo(a.time));
items.add(data);
return items;
}