updateSellThruOrder method

Future<void> updateSellThruOrder(
  1. CartModel data
)

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);
}