| 1 | @model StockMaster.Models.Product
|
|---|
| 2 | @{
|
|---|
| 3 | ViewData["Title"] = "New Product";
|
|---|
| 4 | }
|
|---|
| 5 |
|
|---|
| 6 | <div class="row mb-4">
|
|---|
| 7 | <div class="col-12">
|
|---|
| 8 | <h2><i class="fas fa-plus-circle"></i> Add New Product</h2>
|
|---|
| 9 | <nav aria-label="breadcrumb">
|
|---|
| 10 | <ol class="breadcrumb">
|
|---|
| 11 | <li class="breadcrumb-item"><a href="/">Home</a></li>
|
|---|
| 12 | <li class="breadcrumb-item"><a href="/Product/Index">Products</a></li>
|
|---|
| 13 | <li class="breadcrumb-item active">New Product</li>
|
|---|
| 14 | </ol>
|
|---|
| 15 | </nav>
|
|---|
| 16 | </div>
|
|---|
| 17 | </div>
|
|---|
| 18 |
|
|---|
| 19 | <div class="row">
|
|---|
| 20 | <div class="col-md-8">
|
|---|
| 21 | <div class="card">
|
|---|
| 22 | <div class="card-header">
|
|---|
| 23 | <i class="fas fa-info-circle"></i> Product Information
|
|---|
| 24 | </div>
|
|---|
| 25 | <div class="card-body">
|
|---|
| 26 | <form asp-action="Create" method="post">
|
|---|
| 27 | @Html.AntiForgeryToken()
|
|---|
| 28 | <div class="row">
|
|---|
| 29 | <div class="col-md-6 mb-3">
|
|---|
| 30 | <label asp-for="Name" class="form-label">Product Name *</label>
|
|---|
| 31 | <input asp-for="Name" class="form-control" placeholder="Enter product name" required />
|
|---|
| 32 | <span asp-validation-for="Name" class="text-danger"></span>
|
|---|
| 33 | </div>
|
|---|
| 34 |
|
|---|
| 35 | <div class="col-md-6 mb-3">
|
|---|
| 36 | <label asp-for="Sku" class="form-label">SKU *</label>
|
|---|
| 37 | <input asp-for="Sku" class="form-control" placeholder="Stock keeping unit" required />
|
|---|
| 38 | <span asp-validation-for="Sku" class="text-danger"></span>
|
|---|
| 39 | </div>
|
|---|
| 40 | </div>
|
|---|
| 41 |
|
|---|
| 42 | <div class="mb-3">
|
|---|
| 43 | <label asp-for="Description" class="form-label">Description</label>
|
|---|
| 44 | <textarea asp-for="Description" class="form-control" rows="3" placeholder="Product description"></textarea>
|
|---|
| 45 | </div>
|
|---|
| 46 |
|
|---|
| 47 | <div class="row">
|
|---|
| 48 | <div class="col-md-6 mb-3">
|
|---|
| 49 | <label asp-for="CategoryId" class="form-label">Category</label>
|
|---|
| 50 | <select asp-for="CategoryId" class="form-select">
|
|---|
| 51 | <option value="">Select category</option>
|
|---|
| 52 | @foreach (var cat in ViewBag.Categories)
|
|---|
| 53 | {
|
|---|
| 54 | <option value="@cat.CategoryId">@cat.Name</option>
|
|---|
| 55 | }
|
|---|
| 56 | </select>
|
|---|
| 57 | </div>
|
|---|
| 58 |
|
|---|
| 59 | <div class="col-md-6 mb-3">
|
|---|
| 60 | <label asp-for="SupplierId" class="form-label">Supplier</label>
|
|---|
| 61 | <select asp-for="SupplierId" class="form-select">
|
|---|
| 62 | <option value="">Select supplier</option>
|
|---|
| 63 | @foreach (var sup in ViewBag.Suppliers)
|
|---|
| 64 | {
|
|---|
| 65 | <option value="@sup.SupplierId">@sup.Name</option>
|
|---|
| 66 | }
|
|---|
| 67 | </select>
|
|---|
| 68 | </div>
|
|---|
| 69 | </div>
|
|---|
| 70 |
|
|---|
| 71 | <div class="row">
|
|---|
| 72 | <div class="col-md-6 mb-3">
|
|---|
| 73 | <label asp-for="UnitPrice" class="form-label">Unit Price (MKD) *</label>
|
|---|
| 74 | <div class="input-group">
|
|---|
| 75 | <input asp-for="UnitPrice" class="form-control" type="number" step="0.01" min="0" required />
|
|---|
| 76 | <span class="input-group-text">MKD</span>
|
|---|
| 77 | </div>
|
|---|
| 78 | <span asp-validation-for="UnitPrice" class="text-danger"></span>
|
|---|
| 79 | </div>
|
|---|
| 80 |
|
|---|
| 81 | <div class="col-md-6 mb-3">
|
|---|
| 82 | <label asp-for="ReorderLevel" class="form-label">Reorder Level *</label>
|
|---|
| 83 | <input asp-for="ReorderLevel" class="form-control" type="number" min="0" required />
|
|---|
| 84 | <small class="text-muted">Alert when stock falls below this level</small>
|
|---|
| 85 | </div>
|
|---|
| 86 | </div>
|
|---|
| 87 |
|
|---|
| 88 | <div class="form-check mb-3">
|
|---|
| 89 | <input asp-for="IsActive" class="form-check-input" type="checkbox" checked />
|
|---|
| 90 | <label asp-for="IsActive" class="form-check-label">
|
|---|
| 91 | Active
|
|---|
| 92 | </label>
|
|---|
| 93 | </div>
|
|---|
| 94 |
|
|---|
| 95 | <div class="d-grid gap-2 d-md-flex justify-content-md-end">
|
|---|
| 96 | <a href="/Product/Index" class="btn btn-secondary">
|
|---|
| 97 | <i class="fas fa-times"></i> Cancel
|
|---|
| 98 | </a>
|
|---|
| 99 | <button type="submit" class="btn btn-primary">
|
|---|
| 100 | <i class="fas fa-save"></i> Save
|
|---|
| 101 | </button>
|
|---|
| 102 | </div>
|
|---|
| 103 | </form>
|
|---|
| 104 | </div>
|
|---|
| 105 | </div>
|
|---|
| 106 | </div>
|
|---|
| 107 |
|
|---|
| 108 | <div class="col-md-4">
|
|---|
| 109 | <div class="card">
|
|---|
| 110 | <div class="card-header">
|
|---|
| 111 | <i class="fas fa-lightbulb"></i> Tips
|
|---|
| 112 | </div>
|
|---|
| 113 | <div class="card-body">
|
|---|
| 114 | <ul class="list-unstyled">
|
|---|
| 115 | <li class="mb-2">
|
|---|
| 116 | <i class="fas fa-check text-success me-2"></i>
|
|---|
| 117 | SKU must be unique
|
|---|
| 118 | </li>
|
|---|
| 119 | <li class="mb-2">
|
|---|
| 120 | <i class="fas fa-check text-success me-2"></i>
|
|---|
| 121 | Enter detailed description
|
|---|
| 122 | </li>
|
|---|
| 123 | <li class="mb-2">
|
|---|
| 124 | <i class="fas fa-check text-success me-2"></i>
|
|---|
| 125 | Select correct category
|
|---|
| 126 | </li>
|
|---|
| 127 | <li>
|
|---|
| 128 | <i class="fas fa-check text-success me-2"></i>
|
|---|
| 129 | Set appropriate reorder level
|
|---|
| 130 | </li>
|
|---|
| 131 | </ul>
|
|---|
| 132 | </div>
|
|---|
| 133 | </div>
|
|---|
| 134 | </div>
|
|---|
| 135 | </div> |
|---|