Advertisement
Guest User

Untitled

a guest
Feb 5th, 2019
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. router.post('/inventory/stocks/add/(:id)', authenticationMiddleware(), function(req, res, next) {
  2.     const db = require('../db.js')
  3.     let sql = `SELECT product_slug FROM inventory_tbl WHERE product_no = ?;`
  4.  
  5.     db.query(sql, [req.params.id], (error, results, fields) => {
  6.         if (error) throw error
  7.         let promises = []
  8.  
  9.         var productno = req.params.id
  10.         var cog = req.body.cog
  11.         var productslug = results[0].product_slug
  12.         var sizeslug = req.body.sizeslug
  13.         var sizename = req.body.sizename
  14.         var initialstock = req.body.initialstock
  15.         var stock = []
  16.         var rowinserted = 0
  17.         var pastIds = []
  18.         var batch_id = []
  19.  
  20.         for (var x = 0; x < sizeslug.length; x++) {
  21.             var productsku = productslug + sizeslug[x]
  22.             var slug = sizeslug[x]
  23.             var name = sizename[x]
  24.             var initstock = initialstock[x]
  25.             if (sizeslug != '') {
  26.                 stock.push({
  27.                     product_sku: productsku,
  28.                     product_no: productno,
  29.                     size_slug: slug,
  30.                     size_name: name,
  31.                     total_stock: initstock,
  32.                     available_stock: initstock,
  33.                     reserved_stock: '0'
  34.                 })
  35.             }
  36.         }
  37.  
  38.         promises.push(new Promise((resolve, reject) => {
  39.             for (var i = 0; i < stock.length; i++) {
  40.                 let sql = `INSERT INTO product_tbl(product_sku, product_no, product_sizeslug, product_sizename, total_stock, available_stock, reserved_stock) VALUES (?, ?, ?, ?, ?, ?, ?);`
  41.                 db.query(sql, [stock[i].product_sku, req.params.id, stock[i].size_slug, stock[i].size_name, stock[i].total_stock, stock[i].available_stock, stock[i].reserved_stock], (error, results, fields) => {
  42.                     if(error) reject(error)
  43.  
  44.                     let sql = `INSERT INTO stocks_tbl(product_sku, product_no, production_date, batch_cog, initial_stock, stock_left) VALUES (?, ?, CURRENT_DATE, ?, ?, ?);`
  45.                     db.query(sql, [stock[i].product_sku, req.params.id, cog, stock[i].total_stock, stock[i].available_stock], (error, results, fields) => {
  46.                         if(error) reject(error)
  47.  
  48.                         db.query(`SELECT LAST_INSERT_ID() AS id;`, (error, results, fields) => {
  49.                             if(error) reject(error)
  50.  
  51.                             batch_id[i] = results[0].id
  52.                         })
  53.                     })
  54.                 })
  55.                 pastIds[i] = stock[i].product_sku
  56.                 rowinserted = rowinserted + 1
  57.             }
  58.         }))
  59.  
  60.         promises.push(new Promise((resolve, reject) => {
  61.             if (rowinserted == sizeslug.length) {
  62.                 let sql = `SELECT SUM(total_stock) as total_stock, SUM(available_stock) as available_stock, SUM(reserved_stock) as reserved_stock FROM product_tbl WHERE product_no = ?`
  63.  
  64.                 db.query(sql, [req.params.id], (error, results, fields) => {
  65.                     if (error) throw error
  66.  
  67.                     let sql = `UPDATE inventory_tbl SET total_stock = ?, available_stock = ?, reserved_stock = ? WHERE product_no = ?`
  68.  
  69.                     db.query(sql, [results[0].total_stock, results[0].available_stock, results[0].reserved_stock, req.params.id], (error, results, fields) => {
  70.                         if (error) throw error
  71.                     })
  72.                 })
  73.             }
  74.         }))
  75.  
  76.         promises.push(new Promise((resolve, reject) => {
  77.             if (rowinserted != sizeslug.length) {
  78.                 for (x = 0; x < rowinserted; x++) {
  79.                     let sql = `DELETE FROM product_tbl WHERE product_sku = ?`
  80.                     db.query(sql, [pastIds[x]], (error, results, fields) => {
  81.                         if (error) throw error
  82.                         let sql = `DELETE FROM stocks_tbl WHERE batch_no = ?`
  83.                         db.query(sql, [batch_id[x]], (error, results, fields) => {
  84.                             if (error) throw error
  85.                         })
  86.                     })
  87.                 }
  88.             }
  89.         }))
  90.  
  91.         Promise.all(promises).then(results => {
  92.             if (rowinserted != sizeslug.length) {
  93.                 req.flash('error', error)
  94.  
  95.                 res.redirect('/admin/inventory')
  96.             } else {
  97.                 req.flash('success', 'Data added successfully!')
  98.                 res.redirect('/admin/inventory')
  99.             }
  100.         })
  101.     })
  102. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement