build v0.8.30
This commit is contained in:
parent
a6147dd670
commit
b114eaa969
3 changed files with 266 additions and 283 deletions
|
@ -34,23 +34,15 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<EditForm EditContext="_editContext">
|
<EditForm EditContext="_editContext">
|
||||||
<DataAnnotationsValidator/>
|
<DataAnnotationsValidator/>
|
||||||
<div class="accordion-flush" id="crmActivity">
|
<div class="card-header">
|
||||||
<div class="accordion-item">
|
|
||||||
<h2 class="accordion-header" id="activityHeader">
|
|
||||||
<button class="accordion-button bg-light" type="button"
|
|
||||||
data-bs-toggle="collapse" data-bs-target="#activityBody"
|
|
||||||
aria-expanded="true" aria-controls="activityBody">
|
|
||||||
@_draft.Name - @_draft.Account
|
@_draft.Name - @_draft.Account
|
||||||
</button>
|
</div>
|
||||||
</h2>
|
<div class="card-body">
|
||||||
<div id="activityBody" class="accordion-collapse collapse show"
|
|
||||||
aria-labelledby="activityHeader" data-bs-parent="#crmActivity">
|
|
||||||
<div class="accordion-body">
|
|
||||||
<div class="row mb-1">
|
<div class="row mb-1">
|
||||||
<label for="activityType" class="col-md-2 col-form-label">Ordre Type</label>
|
<label for="activityType" class="col-md-2 col-form-label">Ordre Type</label>
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<InputSelect id="activityType" class="form-select" @bind-Value="@_draft.ActivityTypeEnum">
|
<InputSelect id="activityType" class="form-select" @bind-Value="@_draft.ActivityTypeEnum">
|
||||||
<option value="">ORDRE TYPE</option>
|
<option value="">-TAG MIG-</option>
|
||||||
<option value="onSite">Besøg</option>
|
<option value="onSite">Besøg</option>
|
||||||
<option value="phone">Telefon</option>
|
<option value="phone">Telefon</option>
|
||||||
</InputSelect>
|
</InputSelect>
|
||||||
|
@ -115,86 +107,76 @@
|
||||||
<ValidationMessage For="@(() => _draft.Attention)"></ValidationMessage>
|
<ValidationMessage For="@(() => _draft.Attention)"></ValidationMessage>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="accordion" id="crmActivity">
|
||||||
@* Order lines *@
|
@* Order lines *@
|
||||||
<div class="accordion-item" style="@(_draft.ActivityStatusEnum is "order" or "quote" ? "display: block" : "display:none")">
|
<div class="accordion-item" style="@(_draft.ActivityStatusEnum is "order" or "quote" ? "display: block" : "display:none")">
|
||||||
<h2 class="accordion-header" id="catalogHeader">
|
<h2 class="accordion-header" id="catalogHeader">
|
||||||
<button class="accordion-button collapsed bg-light" type="button"
|
<button class="accordion-button collapsed bg-light" type="button"
|
||||||
data-bs-toggle="collapse" data-bs-target="#catalogBody"
|
data-bs-toggle="collapse" data-bs-target="#catalogBody"
|
||||||
aria-expanded="false" aria-controls="catalogBody">
|
aria-expanded="false" aria-controls="catalogBody">
|
||||||
Varelinjer
|
Bestilling
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div id="catalogBody" class="accordion-collapse collapse"
|
<div id="catalogBody" class="accordion-collapse collapse" aria-labelledby="catalogHeader" data-bs-parent="#crmActivity">
|
||||||
aria-labelledby="catalogHeader" data-bs-parent="#crmActivity">
|
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<div class="row mb-1">
|
@* Order draft lines *@
|
||||||
<div class="col">
|
<div class="card">
|
||||||
<ItemGroupComponent OnChanged="SetItemGroup"/>
|
<div class="card-header">
|
||||||
|
Kladdelinjer <span class="mx-2 draft-expires-msg">Global kladde (udløber efter @(DraftStateProvider.Draft.TimeToLiveInSeconds / 60)m inaktivitet)</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="card-body">
|
||||||
<ItemSearchComponent OnChanged="SetSearchCol"/>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<SearchPhraseComponent OnChanged="SetSearchPhrase"/>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<ItemSortComponent OnChanged="SetSortCol"/>
|
|
||||||
</div>
|
|
||||||
<div class="col">
|
|
||||||
<PageSizeComponent OnChanged="SetPageSize"></PageSizeComponent>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@if (_caltalog.Any())
|
|
||||||
{
|
|
||||||
<table class="table table-hover table-striped justify-content-center">
|
<table class="table table-hover table-striped justify-content-center">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">Navn</th>
|
<th scope="col">Navn</th>
|
||||||
<th scope="col" class="text-nowrap">Varenr</th>
|
<th scope="col" class="text-nowrap">Varenr</th>
|
||||||
<th scope="col" class="text-nowrap">Fork</th>
|
<th scope="col" class="text-end">Antal</th>
|
||||||
<th scope="col">Stk / Pris</th>
|
<th scope="col" class="text-end">Enhedspris</th>
|
||||||
|
<th scope="col" class="text-end">Linjesum</th>
|
||||||
|
<th scope="col"> </th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@foreach (var item in _caltalog)
|
@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0)
|
||||||
|
{
|
||||||
|
@foreach (var cItem in DraftStateProvider.Draft.Items)
|
||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td>@item.Name</td>
|
<td>@cItem.Item.Name</td>
|
||||||
<td>@item.Sku</td>
|
<td>@cItem.Item.Sku</td>
|
||||||
<td>@item.ShortName</td>
|
<td class="text-end">@cItem.Quantity</td>
|
||||||
|
<td class="text-end">@cItem.Price</td>
|
||||||
|
<td class="text-end">@cItem.LineTotal</td>
|
||||||
<td>
|
<td>
|
||||||
<ul class="list-group">
|
<input type="checkbox" checked="@cItem.Sas" disabled/>
|
||||||
@foreach (var rate in item.Rates)
|
|
||||||
{
|
|
||||||
<li class="list-group-item d-flex justify-content-between align-items-end">
|
|
||||||
<div class="text-sm-start px-2">@rate.Quantity</div>
|
|
||||||
<div class="text-sm-end">@rate.Rate</div>
|
|
||||||
<button type="button" class="btn btn-primary btn-sm"
|
|
||||||
@onclick="@(() => SelectItem(item.ItemId, rate.Quantity, rate.Rate))">
|
|
||||||
Vælg
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
}
|
|
||||||
</ul>
|
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<button type="button" class="btn btn-warning" @onclick="@(() => RemoveItem(@cItem))">Slet</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="text-black text-end fw-bold">Total</td>
|
||||||
|
<td class="text-black text-end fw-bold">@DraftStateProvider.Draft.Total</td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
}
|
<div class="row">
|
||||||
else
|
<div class="col">
|
||||||
{
|
<button type="button" class="btn btn-danger" @onclick="@DeleteDraft" disabled="@(DraftStateProvider.Draft.Items.Count == 0)">
|
||||||
<AppSpinner/>
|
Slet kladde
|
||||||
}
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@* draft line *@
|
||||||
@if (_selectedItem != null && ShowItem)
|
@if (_selectedItem != null && ShowItem)
|
||||||
{
|
{
|
||||||
<div class="card mb-3 mt-3">
|
<div class="card mb-3 mt-3">
|
||||||
|
@ -249,63 +231,72 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@* Order draft lines *@
|
@* catalog *@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">
|
|
||||||
Kladdelinjer <span class="mx-2 draft-expires-msg">Global kladde (udløber efter @(DraftStateProvider.Draft.TimeToLiveInSeconds / 60)m inaktivitet)</span>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
<div class="row mb-1">
|
||||||
|
<div class="col">
|
||||||
|
<ItemGroupComponent OnChanged="SetItemGroup"/>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<ItemSearchComponent OnChanged="SetSearchCol"/>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<SearchPhraseComponent OnChanged="SetSearchPhrase"/>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<ItemSortComponent OnChanged="SetSortCol"/>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<PageSizeComponent OnChanged="SetPageSize"></PageSizeComponent>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if (_caltalog.Any())
|
||||||
|
{
|
||||||
<table class="table table-hover table-striped justify-content-center">
|
<table class="table table-hover table-striped justify-content-center">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">Navn</th>
|
<th scope="col">Navn</th>
|
||||||
<th scope="col" class="text-nowrap">Varenr</th>
|
<th scope="col" class="text-nowrap">Varenr</th>
|
||||||
<th scope="col" class="text-end">Antal</th>
|
<th scope="col" class="text-nowrap">Fork</th>
|
||||||
<th scope="col" class="text-end">Enhedspris</th>
|
<th scope="col">Stk / Pris</th>
|
||||||
<th scope="col" class="text-end">Linjesum</th>
|
|
||||||
<th scope="col"> </th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0)
|
@foreach (var item in _caltalog)
|
||||||
{
|
|
||||||
@foreach (var cItem in DraftStateProvider.Draft.Items)
|
|
||||||
{
|
{
|
||||||
<tr>
|
<tr>
|
||||||
<td>@cItem.Item.Name</td>
|
<td>@item.Name</td>
|
||||||
<td>@cItem.Item.Sku</td>
|
<td>@item.Sku</td>
|
||||||
<td class="text-end">@cItem.Quantity</td>
|
<td>@item.ShortName</td>
|
||||||
<td class="text-end">@cItem.Price</td>
|
|
||||||
<td class="text-end">@cItem.LineTotal</td>
|
|
||||||
<td>
|
<td>
|
||||||
<input type="checkbox" checked="@cItem.Sas" disabled/>
|
<ul class="list-group">
|
||||||
</td>
|
@foreach (var rate in item.Rates)
|
||||||
<td>
|
{
|
||||||
<button type="button" class="btn btn-warning" @onclick="@(() => RemoveItem(@cItem))">Slet</button>
|
<li class="list-group-item d-flex justify-content-between align-items-end">
|
||||||
</td>
|
<div class="text-sm-start px-2">@rate.Quantity</div>
|
||||||
</tr>
|
<div class="text-sm-end">@rate.Rate</div>
|
||||||
|
<button type="button" class="btn btn-primary btn-sm" @onclick="@(() => SelectItem(item.ItemId, rate.Quantity, rate.Rate))">
|
||||||
|
Vælg
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
}
|
}
|
||||||
<tr>
|
</ul>
|
||||||
<td></td>
|
</td>
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
<td class="text-black text-end fw-bold">Total</td>
|
|
||||||
<td class="text-black text-end fw-bold">@DraftStateProvider.Draft.Total</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
}
|
||||||
<div class="card-footer">
|
else
|
||||||
<div class="row">
|
{
|
||||||
<div class="col">
|
<AppSpinner/>
|
||||||
<button type="button" class="btn btn-danger"
|
}
|
||||||
@onclick="@DeleteDraft"
|
|
||||||
disabled="@(DraftStateProvider.Draft.Items.Count == 0)">
|
|
||||||
Slet kladde
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -314,9 +305,7 @@
|
||||||
@* Delivery address *@
|
@* Delivery address *@
|
||||||
<div class="accordion-item" style="@(_draft.ActivityStatusEnum == "order" ? "display: block" : "display:none")">
|
<div class="accordion-item" style="@(_draft.ActivityStatusEnum == "order" ? "display: block" : "display:none")">
|
||||||
<h2 class="accordion-header" id="deliveryHeader">
|
<h2 class="accordion-header" id="deliveryHeader">
|
||||||
<button class="accordion-button collapsed bg-light" type="button"
|
<button class="accordion-button collapsed bg-light" type="button" data-bs-toggle="collapse" data-bs-target="#deliveryBody" aria-expanded="false" aria-controls="deliveryBody">
|
||||||
data-bs-toggle="collapse" data-bs-target="#deliveryBody"
|
|
||||||
aria-expanded="false" aria-controls="deliveryBody">
|
|
||||||
Leveringsadresse
|
Leveringsadresse
|
||||||
</button>
|
</button>
|
||||||
</h2>
|
</h2>
|
||||||
|
@ -357,7 +346,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mt-2 mb-2">
|
</EditForm>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="row mt-2 mb-2">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<a class="btn btn-primary" href="/companies">Til Oversigt</a>
|
<a class="btn btn-primary" href="/companies">Til Oversigt</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -365,10 +357,8 @@
|
||||||
<a class="btn btn-primary" href="/company/@_company.CompanyId">Tilbage</a>
|
<a class="btn btn-primary" href="/company/@_company.CompanyId">Tilbage</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
@* <button type="submit" class="btn btn-success" disabled="@InvalidActivity">Gem</button> *@
|
|
||||||
<button type="button" class="btn btn-success" @onclick="CreateActivity">Opret besøg</button>
|
<button type="button" class="btn btn-success" @onclick="CreateActivity">Opret besøg</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</EditForm>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -150,18 +150,14 @@ public partial class ActivityCompanyCreate : IDisposable
|
||||||
|
|
||||||
var activityType = _draft.ActivityTypeEnum switch
|
var activityType = _draft.ActivityTypeEnum switch
|
||||||
{
|
{
|
||||||
"phone" => "T",
|
"phone" => "T:",
|
||||||
"onSite" => "B",
|
"onSite" => "B:",
|
||||||
_ => ""
|
_ => ""
|
||||||
};
|
};
|
||||||
_draft.OurRef = $"{activityType}:{Ux.FullName.Split(" ")[0]}";
|
_draft.OurRef = $"{activityType}{Ux.FullName.Split(" ")[0]}";
|
||||||
var ln = 0;
|
var ln = 0;
|
||||||
|
var lines = DraftStateProvider.Draft.Items.Select(item => new ActivityLineDto
|
||||||
// post to create activity endpoint
|
|
||||||
var lines = new List<ActivityLineDto>();
|
|
||||||
foreach (var item in DraftStateProvider.Draft.Items)
|
|
||||||
{
|
{
|
||||||
var line = new ActivityLineDto{
|
|
||||||
Price = item.Price,
|
Price = item.Price,
|
||||||
Discount = item.Discount,
|
Discount = item.Discount,
|
||||||
Qty = item.Quantity,
|
Qty = item.Quantity,
|
||||||
|
@ -171,15 +167,12 @@ public partial class ActivityCompanyCreate : IDisposable
|
||||||
LineAmount = item.LineTotal,
|
LineAmount = item.LineTotal,
|
||||||
LineNumber = ++ln,
|
LineNumber = ++ln,
|
||||||
Sas = item.Sas
|
Sas = item.Sas
|
||||||
};
|
})
|
||||||
lines.Add(line);
|
.ToList();
|
||||||
}
|
|
||||||
_draft.Lines = lines;
|
_draft.Lines = lines;
|
||||||
|
|
||||||
await _storage.SetItemAsync(CompanyId, _draft);
|
|
||||||
Console.WriteLine(JsonSerializer.Serialize(_draft));
|
|
||||||
var result = await _activityRepo.CreateActivity(_draft);
|
var result = await _activityRepo.CreateActivity(_draft);
|
||||||
_toast.ShowSuccess($"{result.Message}.");
|
_toast.ShowSuccess($"{result.Message}.");
|
||||||
|
await DraftStateProvider.DeleteDraftAsync();
|
||||||
_navigator.NavigateTo($"/companies");
|
_navigator.NavigateTo($"/companies");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
},
|
},
|
||||||
"appInfo": {
|
"appInfo": {
|
||||||
"name": "Wonky Client",
|
"name": "Wonky Client",
|
||||||
"version": "0.8.24",
|
"version": "0.8.30",
|
||||||
"isBeta": true,
|
"isBeta": true,
|
||||||
"image": "grumpy-coder.png"
|
"image": "grumpy-coder.png"
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue