cost/price/margin
This commit is contained in:
@@ -39,10 +39,21 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-3">
|
||||
<div class="col-md-3 mb-3">
|
||||
<label for="price" class="form-label">Price</label>
|
||||
<input type="number" class="form-control" id="price" placeholder="0.00" step="0.01" required>
|
||||
</div>
|
||||
<div class="col-md-2 mb-3">
|
||||
<label for="cost_price" class="form-label">Cost Price <span class="text-muted fw-normal">(COGS)</span></label>
|
||||
<input type="number" class="form-control" id="cost_price" placeholder="0.00" step="0.01" min="0">
|
||||
</div>
|
||||
<div class="col-md-2 mb-3">
|
||||
<label class="form-label">Margin</label>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" id="margin_display" placeholder="—" disabled>
|
||||
<span class="input-group-text">%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2 mb-3">
|
||||
<label for="uom" class="form-label">UOM</label>
|
||||
<input type="text" class="form-control" id="uom" placeholder="pcs"
|
||||
@@ -62,7 +73,7 @@
|
||||
<option value="bottle">
|
||||
</datalist>
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="col-md-2 mb-3">
|
||||
<label for="min_stock" class="form-label">Min Stock</label>
|
||||
<input type="number" class="form-control" id="min_stock" placeholder="0" min="0" required>
|
||||
<div class="invalid-feedback" id="min_stock_error"></div>
|
||||
@@ -138,6 +149,7 @@
|
||||
}
|
||||
|
||||
formData.append('keep_files', $('#current_file_label').val())
|
||||
formData.append('cost_price', $('#cost_price').val() || 0)
|
||||
formData.append('uom', $('#uom').val() || 'pcs')
|
||||
|
||||
return ajax_request({
|
||||
@@ -209,8 +221,8 @@
|
||||
});
|
||||
|
||||
$(`button[type=submit]`).text('Update');
|
||||
|
||||
$(`button[type=reset]`).hide();
|
||||
update_margin();
|
||||
|
||||
}
|
||||
});
|
||||
@@ -267,9 +279,22 @@
|
||||
// Live feedback as the user types
|
||||
$('#min_stock, #reorder_point').on('input', validate_stock_thresholds);
|
||||
|
||||
function update_margin() {
|
||||
var price = parseFloat($('#price').val()) || 0;
|
||||
var cost_price = parseFloat($('#cost_price').val()) || 0;
|
||||
if (price > 0) {
|
||||
var margin = (price - cost_price) / price * 100;
|
||||
$('#margin_display').val(margin.toFixed(2));
|
||||
} else {
|
||||
$('#margin_display').val('');
|
||||
}
|
||||
}
|
||||
|
||||
$('#price, #cost_price').on('input', update_margin);
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user