bakery-erp / src /BakeryErp.Web /Pages /Transfers.cshtml
Neil67's picture
Deploy Bakery ERP Space
13240d3
Raw
History Blame Contribute Delete
8.89 kB
@page
@using BakeryErp.Infrastructure.Database
@using BakeryErp.Infrastructure.Repositories
@model TransfersModel
@{
ViewData["Title"] = "中央廚房調撥";
}
<header class="page-header">
<div>
<p class="eyebrow">中央廚房調撥</p>
<h1>門市叫貨、備貨、出庫與收貨</h1>
</div>
<a class="button-link" href="/">返回總覽</a>
</header>
@if (!string.IsNullOrWhiteSpace(Model.Message))
{
<div class="notice success">@Model.Message</div>
}
@if (!string.IsNullOrWhiteSpace(Model.ErrorMessage))
{
<div class="notice error">@Model.ErrorMessage</div>
}
<section class="metrics compact">
<article>
<span>調撥單數</span>
<strong>@Model.Report.OrderCount</strong>
</article>
<article>
<span>門市叫貨</span>
<strong>@Model.Report.StoreRequestedCount</strong>
</article>
<article>
<span>已備貨</span>
<strong>@Model.Report.PreparedCount</strong>
</article>
<article>
<span>配送中</span>
<strong>@Model.Report.InTransitCount</strong>
</article>
<article>
<span>差異數量</span>
<strong>@Model.Report.DifferenceQuantityTotal.ToString("N0")</strong>
</article>
</section>
<section class="form-panel">
<h2>@(Model.Form.Id == Guid.Empty ? "門市叫貨" : "編輯調撥單")</h2>
<form method="post" class="data-form">
<input type="hidden" asp-for="Form.Id" />
<div class="field">
<label asp-for="Form.TransferNumber">調撥單號</label>
<input asp-for="Form.TransferNumber" placeholder="例如 TRF-20260525-002" />
</div>
<div class="field">
<label asp-for="Form.StoreName">叫貨門市</label>
<input asp-for="Form.StoreName" list="storeOptions" placeholder="例如 直營一店" />
</div>
<div class="field">
<label asp-for="RequestDateText">叫貨日期</label>
<input asp-for="RequestDateText" type="date" />
</div>
<div class="field">
<label asp-for="Form.FromWarehouseName">出貨倉</label>
<input asp-for="Form.FromWarehouseName" list="warehouseOptions" placeholder="中央廚房主倉" />
</div>
<div class="field">
<label asp-for="Form.ToWarehouseName">收貨倉</label>
<input asp-for="Form.ToWarehouseName" list="warehouseOptions" placeholder="直營一店倉" />
</div>
<div class="field">
<label asp-for="Form.ItemSku">品項代號</label>
<input asp-for="Form.ItemSku" list="itemSkuOptions" />
</div>
<div class="field">
<label asp-for="Form.ItemName">品項名稱</label>
<input asp-for="Form.ItemName" list="itemNameOptions" />
</div>
<div class="field">
<label asp-for="Form.RequestedQuantity">叫貨數量</label>
<input asp-for="Form.RequestedQuantity" type="number" min="0" step="0.01" />
</div>
<div class="field">
<label asp-for="Form.Unit">單位</label>
<input asp-for="Form.Unit" list="unitOptions" placeholder="kg / 個 / 箱" />
</div>
<div class="field wide">
<label asp-for="Form.Note">備註</label>
<textarea asp-for="Form.Note" rows="3"></textarea>
</div>
<div class="form-actions">
<button class="primary-button" type="submit" asp-page-handler="Save">儲存叫貨單</button>
<a class="secondary-button" href="/Transfers">清空表單</a>
</div>
<datalist id="storeOptions">
@foreach (var store in Model.StoreOptions)
{
<option value="@store.Value">@store.Label</option>
}
</datalist>
<datalist id="warehouseOptions">
@foreach (var warehouse in Model.WarehouseOptions)
{
<option value="@warehouse.Value">@warehouse.Label</option>
}
</datalist>
<datalist id="itemSkuOptions">
@foreach (var item in Model.ItemOptions)
{
<option value="@item.Sku">@item.Label</option>
}
</datalist>
<datalist id="itemNameOptions">
@foreach (var item in Model.ItemOptions)
{
<option value="@item.Name">@item.Label</option>
}
</datalist>
<datalist id="unitOptions">
@foreach (var unit in Model.ItemOptions.Select(item => item.Unit).Distinct())
{
<option value="@unit"></option>
}
</datalist>
</form>
</section>
<section class="table-panel">
<div class="section-title">
<h2>中央廚房調撥清單</h2>
<span>@Model.Orders.Count 筆</span>
</div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>狀態</th>
<th>調撥單號</th>
<th>門市</th>
<th>品項</th>
<th>叫貨</th>
<th>備貨</th>
<th>出庫</th>
<th>收貨</th>
<th>差異</th>
<th>操作</th>
</tr>
</thead>
<tbody>
@foreach (var order in Model.Orders)
{
<tr>
<td>
<span class="badge @Model.GetStatusClass(order.Status)">
@TransferRepository.GetStatusName(order.Status)
</span>
</td>
<td>@order.TransferNumber</td>
<td>@order.StoreName</td>
<td>@order.ItemName</td>
<td>@order.RequestedQuantity.ToString("N2") @order.Unit</td>
<td>@order.PreparedQuantity.ToString("N2")</td>
<td>@order.ShippedQuantity.ToString("N2")</td>
<td>@order.ReceivedQuantity.ToString("N2")</td>
<td>@order.DifferenceQuantity.ToString("N2")</td>
<td class="row-actions">
@if (order.Status is LocalTransferStatus.StoreRequested or LocalTransferStatus.Prepared)
{
<a class="small-link" href="/Transfers?editId=@order.Id">編輯</a>
}
@if (order.Status == LocalTransferStatus.StoreRequested)
{
<form method="post" class="inline-form">
<input type="hidden" name="id" value="@order.Id" />
<input class="mini-input" type="number" name="preparedQuantity" value="@order.RequestedQuantity" min="0" step="0.01" />
<button class="text-button" type="submit" asp-page-handler="Prepare">備貨</button>
</form>
}
@if (order.Status == LocalTransferStatus.Prepared)
{
<form method="post">
<input type="hidden" name="id" value="@order.Id" />
<button class="text-button" type="submit" asp-page-handler="Ship">出庫</button>
</form>
}
@if (order.Status == LocalTransferStatus.InTransit)
{
<form method="post" class="inline-form">
<input type="hidden" name="id" value="@order.Id" />
<input class="mini-input" type="number" name="receivedQuantity" value="@order.ShippedQuantity" min="0" step="0.01" />
<button class="text-button" type="submit" asp-page-handler="Receive">收貨</button>
</form>
}
@if (order.Status is not LocalTransferStatus.Completed and not LocalTransferStatus.Cancelled)
{
<form method="post">
<input type="hidden" name="id" value="@order.Id" />
<button class="text-button" type="submit" asp-page-handler="Cancel">取消</button>
</form>
}
</td>
</tr>
}
</tbody>
</table>
</div>
</section>