Files
kulakpos_app/lib/model/balance_sheet_model.dart

73 lines
2.1 KiB
Dart
Raw Permalink Normal View History

2026-02-07 15:57:09 +07:00
class BalanceSheetModel {
final num? totalAsset;
final List<AssetData>? data;
BalanceSheetModel({this.totalAsset, this.data});
factory BalanceSheetModel.fromJson(Map<String, dynamic> json) {
return BalanceSheetModel(
totalAsset: json["total_asset"],
data: json["asset_datas"] == null
? []
: List<AssetData>.from(json["asset_datas"]!.map((x) => AssetData.fromJson(x))),
);
}
}
class AssetData {
final int? id;
final String? name;
final num? amount;
AssetData({this.id, this.name, this.amount});
factory AssetData.fromJson(Map<String, dynamic> json) {
final _source = json["source"]?.toString().trim().toLowerCase();
final _productType = json["product_type"]?.toString().trim().toLowerCase();
final String? _name = switch (_source) {
"product" => json["productName"],
"bank" => json["meta"]?["bank_name"] ?? "Bank Account",
_ => null,
};
num _amount = 0;
if (_source == "product") {
if (_productType == "single" || _productType == "variation") {
final stocks = json["stocks"];
if (stocks is List && stocks.isNotEmpty) {
final _firstStock = stocks.first as Map<String, dynamic>;
final _purchasePrice = (_firstStock["productPurchasePrice"] as num?) ?? 0;
final _stockQty = (_firstStock["productStock"] as num?) ?? 0;
_amount = _purchasePrice * _stockQty;
}
} else if (_productType == "combo") {
final comboProducts = json["combo_products"];
if (comboProducts is List) {
_amount = comboProducts.fold<num>(0, (sum, item) {
if (item is Map<String, dynamic>) {
final _price = (item["purchase_price"] as num?) ?? 0;
final _qty = (item["quantity"] as num?) ?? 0;
return sum + (_price * _qty);
}
return sum;
});
}
}
} else if (_source == "bank") {
_amount = (json["balance"] as num?) ?? 0;
}
return AssetData(
id: json["id"],
name: _name,
amount: _amount,
);
}
}