build v0.8.30

This commit is contained in:
Frede Hundewadt 2022-06-24 17:15:11 +02:00
parent a6147dd670
commit b114eaa969
3 changed files with 266 additions and 283 deletions

View file

@ -34,23 +34,15 @@
<div class="card-body">
<EditForm EditContext="_editContext">
<DataAnnotationsValidator/>
<div class="accordion-flush" id="crmActivity">
<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">
<div class="card-header">
@_draft.Name - @_draft.Account
</button>
</h2>
<div id="activityBody" class="accordion-collapse collapse show"
aria-labelledby="activityHeader" data-bs-parent="#crmActivity">
<div class="accordion-body">
</div>
<div class="card-body">
<div class="row mb-1">
<label for="activityType" class="col-md-2 col-form-label">Ordre Type</label>
<div class="col-md-4">
<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="phone">Telefon</option>
</InputSelect>
@ -115,86 +107,76 @@
<ValidationMessage For="@(() => _draft.Attention)"></ValidationMessage>
</div>
</div>
</div>
</div>
</div>
<div class="accordion" id="crmActivity">
@* Order lines *@
<div class="accordion-item" style="@(_draft.ActivityStatusEnum is "order" or "quote" ? "display: block" : "display:none")">
<h2 class="accordion-header" id="catalogHeader">
<button class="accordion-button collapsed bg-light" type="button"
data-bs-toggle="collapse" data-bs-target="#catalogBody"
aria-expanded="false" aria-controls="catalogBody">
Varelinjer
Bestilling
</button>
</h2>
<div id="catalogBody" class="accordion-collapse collapse"
aria-labelledby="catalogHeader" data-bs-parent="#crmActivity">
<div id="catalogBody" class="accordion-collapse collapse" aria-labelledby="catalogHeader" data-bs-parent="#crmActivity">
<div class="accordion-body">
<div class="row mb-1">
<div class="col">
<ItemGroupComponent OnChanged="SetItemGroup"/>
@* Order draft lines *@
<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="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>
<div class="row">
<div class="col">
<PaginationComponent MetaData="_metaData" Spread="2" SelectedPage="SelectedPage"></PaginationComponent>
</div>
</div>
@if (_caltalog.Any())
{
<div class="card-body">
<table class="table table-hover table-striped justify-content-center">
<thead>
<tr>
<th scope="col">Navn</th>
<th scope="col" class="text-nowrap">Varenr</th>
<th scope="col" class="text-nowrap">Fork</th>
<th scope="col">Stk / Pris</th>
<th scope="col" class="text-end">Antal</th>
<th scope="col" class="text-end">Enhedspris</th>
<th scope="col" class="text-end">Linjesum</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
<tbody>
@foreach (var item in _caltalog)
@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0)
{
@foreach (var cItem in DraftStateProvider.Draft.Items)
{
<tr>
<td>@item.Name</td>
<td>@item.Sku</td>
<td>@item.ShortName</td>
<td>@cItem.Item.Name</td>
<td>@cItem.Item.Sku</td>
<td class="text-end">@cItem.Quantity</td>
<td class="text-end">@cItem.Price</td>
<td class="text-end">@cItem.LineTotal</td>
<td>
<ul class="list-group">
@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>
<input type="checkbox" checked="@cItem.Sas" disabled/>
</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>
}
</tbody>
</table>
}
else
{
<AppSpinner/>
}
<div class="row">
<div class="col">
<button type="button" class="btn btn-danger" @onclick="@DeleteDraft" disabled="@(DraftStateProvider.Draft.Items.Count == 0)">
Slet kladde
</button>
</div>
</div>
</div>
</div>
@* draft line *@
@if (_selectedItem != null && ShowItem)
{
<div class="card mb-3 mt-3">
@ -249,63 +231,72 @@
</div>
</div>
}
@* Order draft lines *@
@* catalog *@
<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="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">
<thead>
<tr>
<th scope="col">Navn</th>
<th scope="col" class="text-nowrap">Varenr</th>
<th scope="col" class="text-end">Antal</th>
<th scope="col" class="text-end">Enhedspris</th>
<th scope="col" class="text-end">Linjesum</th>
<th scope="col">&nbsp;</th>
<th scope="col" class="text-nowrap">Fork</th>
<th scope="col">Stk / Pris</th>
</tr>
</thead>
<tbody>
@if (DraftStateProvider != null && DraftStateProvider.Draft.Items.Count > 0)
{
@foreach (var cItem in DraftStateProvider.Draft.Items)
@foreach (var item in _caltalog)
{
<tr>
<td>@cItem.Item.Name</td>
<td>@cItem.Item.Sku</td>
<td class="text-end">@cItem.Quantity</td>
<td class="text-end">@cItem.Price</td>
<td class="text-end">@cItem.LineTotal</td>
<td>@item.Name</td>
<td>@item.Sku</td>
<td>@item.ShortName</td>
<td>
<input type="checkbox" checked="@cItem.Sas" disabled/>
</td>
<td>
<button type="button" class="btn btn-warning" @onclick="@(() => RemoveItem(@cItem))">Slet</button>
</td>
</tr>
<ul class="list-group">
@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>
}
<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>
</ul>
</td>
</tr>
}
</tbody>
</table>
</div>
<div class="card-footer">
<div class="row">
<div class="col">
<button type="button" class="btn btn-danger"
@onclick="@DeleteDraft"
disabled="@(DraftStateProvider.Draft.Items.Count == 0)">
Slet kladde
</button>
</div>
}
else
{
<AppSpinner/>
}
</div>
</div>
</div>
@ -314,9 +305,7 @@
@* Delivery address *@
<div class="accordion-item" style="@(_draft.ActivityStatusEnum == "order" ? "display: block" : "display:none")">
<h2 class="accordion-header" id="deliveryHeader">
<button class="accordion-button collapsed bg-light" type="button"
data-bs-toggle="collapse" data-bs-target="#deliveryBody"
aria-expanded="false" aria-controls="deliveryBody">
<button class="accordion-button collapsed bg-light" type="button" data-bs-toggle="collapse" data-bs-target="#deliveryBody" aria-expanded="false" aria-controls="deliveryBody">
Leveringsadresse
</button>
</h2>
@ -357,7 +346,10 @@
</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">
<a class="btn btn-primary" href="/companies">Til Oversigt</a>
</div>
@ -365,10 +357,8 @@
<a class="btn btn-primary" href="/company/@_company.CompanyId">Tilbage</a>
</div>
<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>
</div>
</div>
</EditForm>
</div>
</div>
</div>

View file

@ -150,18 +150,14 @@ public partial class ActivityCompanyCreate : IDisposable
var activityType = _draft.ActivityTypeEnum switch
{
"phone" => "T",
"onSite" => "B",
"phone" => "T:",
"onSite" => "B:",
_ => ""
};
_draft.OurRef = $"{activityType}:{Ux.FullName.Split(" ")[0]}";
_draft.OurRef = $"{activityType}{Ux.FullName.Split(" ")[0]}";
var ln = 0;
// post to create activity endpoint
var lines = new List<ActivityLineDto>();
foreach (var item in DraftStateProvider.Draft.Items)
var lines = DraftStateProvider.Draft.Items.Select(item => new ActivityLineDto
{
var line = new ActivityLineDto{
Price = item.Price,
Discount = item.Discount,
Qty = item.Quantity,
@ -171,15 +167,12 @@ public partial class ActivityCompanyCreate : IDisposable
LineAmount = item.LineTotal,
LineNumber = ++ln,
Sas = item.Sas
};
lines.Add(line);
}
})
.ToList();
_draft.Lines = lines;
await _storage.SetItemAsync(CompanyId, _draft);
Console.WriteLine(JsonSerializer.Serialize(_draft));
var result = await _activityRepo.CreateActivity(_draft);
_toast.ShowSuccess($"{result.Message}.");
await DraftStateProvider.DeleteDraftAsync();
_navigator.NavigateTo($"/companies");
}

View file

@ -18,7 +18,7 @@
},
"appInfo": {
"name": "Wonky Client",
"version": "0.8.24",
"version": "0.8.30",
"isBeta": true,
"image": "grumpy-coder.png"
},