updateSellThruOrder method
Implementation
Future<void> updateSellThruOrder(cart.CartModel data) async {
var totalAmount = data.data!.totalRetailPrice; // subTotal
var totalNetAmount = data.data!.totalNetPrice; // strike through
double totalTax = 0.0; //
double ctw = 0.0; // - value
var salesTax = "";
var ctwNegativeTax = ""; // red color
var localCurrency = data.data!.grandTotalInLocalCurrency!.price!.currency;
var currency = data.data!.currency;
var localGrandTotal = data.data!.grandTotalInLocalCurrency!.price!.amount;
// only for spot sell thru
// data.data!.taxes!.forEach((tax) {
// if (tax.name == "SalesTax") {
// salesTax = tax.name!;
// totalTax = double.parse(tax.totalPrice!);
// }
// if (tax.name!.toLowerCase() == "ctw") {
// ctwNegativeTax = tax.name!;
// ctw = double.parse(tax.totalPrice!);
// }
// });
var totalAmountPaid = data.data!.grandTotal;
var products = data.data!.products ?? [];
RxList<ProductContentModel> temp = <ProductContentModel>[].obs;
var tempIccids = <String>[].obs;
if (products.isNotEmpty) {
temp.addAll(productDataScannedList); // assigning order prodcut to temp.
products.forEach((product) {
product.assetList!.forEach((element) {
tempIccids.add(element.id!);
});
// tempIccids.addAll(product.assetList!);
if (temp.isEmpty) {
// new product
ProductContentModel productModel = ProductContentModel();
productModel.productCode = product.productCode;
productModel.productImage = product.productImage ?? "";
productModel.productName = product.name ?? "";
productModel.totalOrderedQuantity = 0;
productModel.itemAmount = double.parse(product.unitPrice!);
productModel.itemTax = double.parse(product.unitTax!);
productModel.scannedQty = product.quantity!;
List<SingleScannedModel> iccidList = [];
product.assetList!.forEach((element) {
iccidList.add(SingleScannedModel(iccid: element.id));
});
productModel.iccidList = iccidList;
temp.add(productModel); // adding new product on temp
} else {
var isProductExists = false;
var existingProductIndex = 0;
for (int i = 0; i < temp.length; i++) {
if (product.productCode == temp[i].productCode) {
isProductExists = true;
existingProductIndex = i;
break;
}
}
if (isProductExists) {
List<SingleScannedModel> iccidList = [];
product.assetList!.forEach((element) {
iccidList.add(SingleScannedModel(iccid: element.id));
});
ProductContentModel productModel = ProductContentModel();
productModel = temp[existingProductIndex].copyWith(
productImage: product.productImage ?? "",
iccidList: iccidList,
rangeList: [],
scannedQty: product.quantity!,
itemAmount: double.parse(product.unitPrice!),
itemTax: double.parse(product.unitTax!),
);
temp[existingProductIndex] =
productModel; // updating existing product on temp
} else {
// new product
ProductContentModel productModel = ProductContentModel();
productModel.productCode = product.productCode;
productModel.productImage = product.productImage ?? "";
productModel.productName = product.name ?? "";
productModel.totalOrderedQuantity = 0;
productModel.itemAmount = double.parse(product.unitPrice!);
productModel.itemTax = double.parse(product.unitTax!);
productModel.scannedQty = product.quantity!;
List<SingleScannedModel> iccidList = [];
product.assetList!.forEach((element) {
iccidList.add(SingleScannedModel(iccid: element.id));
});
productModel.iccidList = iccidList;
temp.add(productModel); // adding new product on temp
}
}
});
} else {
temp.addAll(originalProductList);
}
scannedIccidList = tempIccids; // assigning all the scanned iccids;
productDataScannedList.value = [...temp]; // assigning product list
RxList<ProductContentModel> onlyScannedProducts =
<ProductContentModel>[].obs;
productDataScannedList.forEach((element) {
// validating for scanQty>0
if (element.scannedQty > 0) {
onlyScannedProducts.add(element);
}
});
sellThruOrder.value = sellThruOrder.value.copyWith(
currency: currency,
localCurrency: localCurrency,
localCurrencyGrandTotal: double.parse(localGrandTotal!),
ctwNegativeTax: ctwNegativeTax,
ctw: ctw,
salesTax: salesTax,
content: onlyScannedProducts,
totalAmount: double.parse(totalAmount.toString()),
totalNetAmount: totalNetAmount,
totalTax: totalTax,
totalAmountPaid: totalAmountPaid);
}