我正在制作离子库存应用程序。在我的可用库存页面中,我正在跟踪这样的用户数据:
<ion-item *ngFor="let stock of stocks | async" class="item item-trns text-center"
(click)="showOptions(stock, stock.$key)">
<strong><h2>{{ stock.name }}</h2></strong>
<p>Date added: {{stock.date}}</p>
<p>Quantity in stock: {{stock.actualq-stock.sold}}</p>
<p>Sold: {{stock.sold}}</p>
这显示了我的firebase后端所有股票的列表。
showOptions(stock, stock.$key)
提供出售特定商品的选项。
如您所见,库存中的剩余数量计算为
Quantity in stock: {{stock.actualq-stock.sold}}
即实际数量减去已售出的数量。
我的问题: 添加销售时,如何阻止用户添加大于库存中已有数量的销售值?这将导致库存中的负数量值。
我曾尝试使用表单验证,但我无法弄清楚如何检查输入的数据是否会大于我的firebase后端中可用的库存。
如果{{stock.actualq-stock.sold}}为0,是否有办法禁用列表选项?
这是我的卖出功能:
addSale(id,saledate,salequantity,buyingprice,sellingprice,sale,profit,saletotal) {
if(id) {
this.stocks.update(id, {
saledate: saledate,
salequantity: salequantity,
buyingprice: buyingprice,
sellingprice: sellingprice,
sale: true,
profit: (sellingprice-buyingprice)*salequantity,
saletotal: (salequantity*sellingprice),
}).then( newSale => {
this.toast.show('Data updated', '5000', 'center').subscribe(
toast => {
this.navCtrl.pop();
}
);
})
.catch(e => {
console.log(e);
this.toast.show(e, '5000', 'center').subscribe(
toast => {
console.log(toast);
}
);
});
所有这一切都是为了更新正在销售的库存中的特定商品的路径,并添加上面的节点以反映在商品上添加了促销。
答案 0 :(得分:0)
如果我理解正确,您需要更新库存ID。因此,在更新之前获取当前数据并检查库存并执行更新。尝试
addSale(id,saledate,salequantity,buyingprice,sellingprice,sale,profit,saletotal) {
if(id) {
this.db.object('stocks/'+id).snapshotChanges().subscribe(action => {
console.log(action.payload.val());
let stockInHand = action.payload.val().actualq-action.payload.val().sold;
//check if salequantity is lessthan or equal to stockInHand
if(salequantity <= stockInHand){
//perform update
}else{
//toast no stock available
}
});
}
}