Извлекать и обновлять записи, проходя через массив в IONIC3 - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над проектом управления магазином, и меня здесь зацепили несколько дней назад.Я пытаюсь добавить элементы продажи в таблицу saleItem, а затем обновить оставшееся количество и проданное количество как в таблице product, так и в таблице supplyItem.

Приведенный ниже код работает нормально, если в itemList нет повторяющегося продукта, то есть, если продукта нетдобавлено несколько раз, но обновлять последний продукт можно только в случае добавления дубликата.

Что мне нужно знать о выполнении асинхронного запроса к IONIC SQLite?

/**
* Save saleItems, update quantity left in product table and update quantity sold and quantity left in supplyItem table
**/
addSaleItems(saleID, store){
try{
/*this.itemList is an array containing all informations required
  loop through Items */
  this.itemList.forEach((item) => {
    /*insert save items*/
    let query = "INSERT INTO SaleItem (";
    query += "Name, IsActive, TheSale, TheProduct, BatchNo, UnitPrice, Total, TotalCostPrice, Profit_Loss, Quantity";
    query += ") VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

    let data = [item.TheProductName,'true',saleID,item.TheProduct,item.BatchNo,item.UnitPrice,item.Total,item.TotalCostPrice,item.Profit_Loss,item.Quantity];

    this.database.noRetValQuery(query, data).then((retval) => {

      let prod_q = "SELECT Quantity FROM Product WHERE ID = ?";
      let prod_d = [item.TheProductID]
      /* Get quantity of that particular item left in product table */
      this.database.retValQuery(prod_q, prod_d).then((prodRetVal) => {
        let leftPro = Number(prodRetVal[0].Quantity) - Number(item.Quantity);
        let prod_data = [leftPro, item.TheProductID];
        return prod_data;
      })
      .then((prod_data) => {
        /*Update quantity left in product table*/
        let prod_query = "UPDATE Product SET Quantity = ? WHERE ID = ?";
        this.database.noRetValQuery(prod_query, prod_data).then((retval) => { });
      })

       /* Get QuantitySold and QuantityLeft of that particular item left in SupplyItem table */
      let queryPro = "SELECT QuantitySold, QuantityLeft FROM SupplyItem WHERE BatchNo = ? AND TheProduct = ? AND TheStore = ? LIMIT 1";
      let dataPro = [item.BatchNo, item.TheProductID, store];
      this.database.retValQuery(queryPro, dataPro).then((saleRetVal) => {
        let qtyS = Number(saleRetVal[0].QuantitySold) + Number(item.Quantity);
        let qtyL = Number(saleRetVal[0].QuantityLeft) - Number(item.Quantity);
        let sup_data = [qtyL, qtyS, item.BatchNo, item.TheProductID];
        return sup_data;
      }).then((sup_data) => {
        /*Update Supply Items*/
        let sup_query = "UPDATE SupplyItem SET QuantityLeft = ?, QuantitySold = ? WHERE BatchNo = ? AND TheProduct = ?";
        this.database.noRetValQuery(sup_query, sup_data).then((retval) => { })
      });
    });
  });
} finally {
  this.dismissView();
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...