Stock management changes
parent
b352058e76
commit
3ab76684bb
|
@ -142,9 +142,7 @@ $(document).ready(function (){
|
|||
cartUpdate(qtyElement);
|
||||
});
|
||||
|
||||
|
||||
$(document).on('change', '.cart-product-quantity', function (e) {
|
||||
|
||||
$(document).on('change', '.cart-product-quantity', function (e){
|
||||
cartUpdate(e.target);
|
||||
});
|
||||
|
||||
|
@ -735,7 +733,7 @@ function updateCart(){
|
|||
$('#cart-count').text(msg.totalCartItems);
|
||||
})
|
||||
.fail(function(msg){
|
||||
showNotification(msg.responseJSON.message, 'danger');
|
||||
showNotification(msg.responseJSON.message, 'danger', true);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -168,8 +168,10 @@ router.get('/product/:id', (req, res) => {
|
|||
// Updates a single product quantity
|
||||
router.post('/product/updatecart', (req, res, next) => {
|
||||
const db = req.app.db;
|
||||
const config = req.app.config;
|
||||
let cartItems = JSON.parse(req.body.items);
|
||||
let hasError = false;
|
||||
let stockError = false;
|
||||
|
||||
async.eachSeries(cartItems, (cartItem, callback) => {
|
||||
let productQuantity = cartItem.itemQuantity ? cartItem.itemQuantity : 1;
|
||||
|
@ -183,6 +185,16 @@ router.post('/product/updatecart', (req, res, next) => {
|
|||
console.error(colors.red('Error updating cart', err));
|
||||
}
|
||||
if(product){
|
||||
// If stock management on check there is sufficient stock for this product
|
||||
if(config.trackStock){
|
||||
if(productQuantity > product.productStock){
|
||||
hasError = true;
|
||||
stockError = true;
|
||||
callback(null);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let productPrice = parseFloat(product.productPrice).toFixed(2);
|
||||
if(req.session.cart[cartItem.cartIndex]){
|
||||
req.session.cart[cartItem.cartIndex].quantity = productQuantity;
|
||||
|
@ -202,9 +214,13 @@ router.post('/product/updatecart', (req, res, next) => {
|
|||
// show response
|
||||
if(hasError === false){
|
||||
res.status(200).json({message: 'Cart successfully updated', totalCartItems: Object.keys(req.session.cart).length});
|
||||
}else{
|
||||
if(stockError){
|
||||
res.status(400).json({message: 'There is insufficient stock of this product.', totalCartItems: Object.keys(req.session.cart).length});
|
||||
}else{
|
||||
res.status(400).json({message: 'There was an error updating the cart', totalCartItems: Object.keys(req.session.cart).length});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -86,7 +86,8 @@ router.post('/admin/product/insert', common.restrict, common.checkAccess, (req,
|
|||
productTags: req.body.frmProductTags,
|
||||
productOptions: common.cleanHtml(req.body.productOptJson),
|
||||
productComment: common.checkboxBool(req.body.frmProductComment),
|
||||
productAddedDate: new Date()
|
||||
productAddedDate: new Date(),
|
||||
productStock: req.body.frmProductStock ? parseInt(req.body.frmProductStock) : null
|
||||
};
|
||||
|
||||
db.products.count({'productPermalink': req.body.frmProductPermalink}, (err, product) => {
|
||||
|
@ -106,6 +107,7 @@ router.post('/admin/product/insert', common.restrict, common.checkAccess, (req,
|
|||
req.session.productPermalink = req.body.productOptJson;
|
||||
req.session.productComment = common.checkboxBool(req.body.frmProductComment);
|
||||
req.session.productTags = req.body.frmProductTags;
|
||||
req.session.productStock = req.body.frmProductStock ? parseInt(req.body.frmProductStock) : null;
|
||||
|
||||
// redirect to insert
|
||||
res.redirect('/admin/insert');
|
||||
|
@ -122,6 +124,7 @@ router.post('/admin/product/insert', common.restrict, common.checkAccess, (req,
|
|||
req.session.productPermalink = req.body.productOptJson;
|
||||
req.session.productComment = common.checkboxBool(req.body.frmProductComment);
|
||||
req.session.productTags = req.body.frmProductTags;
|
||||
req.session.productStock = req.body.frmProductStock ? parseInt(req.body.frmProductStock) : null;
|
||||
|
||||
req.session.message = 'Error: Inserting product';
|
||||
req.session.messageType = 'danger';
|
||||
|
|
|
@ -33,12 +33,14 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{#if config.trackStock}}
|
||||
<div class="form-group">
|
||||
<label for="frmProductStock" class="col-sm-2 control-label">Stock level</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="number" name="frmProductStock" class="form-control" value="{{result.productStock}}" step="any" />
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="form-group">
|
||||
<label for="editor" class="col-sm-2 control-label">Product description *</label>
|
||||
<div class="col-sm-10">
|
||||
|
|
|
@ -32,6 +32,14 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{#if config.trackStock}}
|
||||
<div class="form-group">
|
||||
<label for="frmProductStock" class="col-sm-2 control-label">Stock level</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="number" name="frmProductStock" class="form-control" value="{{productStock}}" step="any" />
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="form-group" id="editor-wrapper">
|
||||
<label for="editor" class="col-sm-2 control-label">Product description *</label>
|
||||
<div class="col-sm-10">
|
||||
|
|
Loading…
Reference in New Issue