Odstranjenn projekt

dodan vnos pozicije fakture
This commit is contained in:
David Štaleker
2023-05-13 16:42:01 +02:00
parent 03b92525d7
commit a45fe73754
76 changed files with 407 additions and 37538 deletions

View File

@@ -1,4 +1,6 @@
@page
@using EveryThing.Models.Invoice
@using Microsoft.AspNetCore.Mvc.TagHelpers
@model EveryThing.Pages.Invoices.EditModel
@{
ViewData["Title"] = "Vnos fakture";
@@ -36,6 +38,14 @@
.table-status {
width: 140px;
}
.table-hover>tbody>tr.no-hover:hover {
background-color: #ffffff;
}
.input-number {
text-align: right;
}
</style>
<form method="post" onsubmit="handleEditors()">
@@ -176,7 +186,10 @@
<th class="table-header-number">Rabat</th>
<th class="table-header-number">DDV</th>
<th class="table-header-number">Vrednost</th>
<th>Status</th>
@if (Model.Invoice.Type != Invoice.InvoiceType.Invoice)
{
<th>Status</th>
}
<th></th>
</tr>
</thead>

View File

@@ -11,13 +11,11 @@ using EveryThing.Data;
using EveryThing.Models;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Authorization;
using EveryThing.Models.Project;
using System.Text.Json;
using static EveryThing.Pages.Projects.EditModel;
namespace EveryThing.Pages.Invoices
{
[Authorize(Roles = "Administrator,InvoicingUser,ProjecThingUser")]
[Authorize(Roles = "Administrator,InvoicingUser")]
public class EditModel : PageModel
{
public class EditInvoiceItemData
@@ -188,6 +186,7 @@ namespace EveryThing.Pages.Invoices
{
var item = _context.InvoiceItems
.Include(x => x.Item)
.Include(x => x.Invoice)
.First(x => x.IdInvoiceItem == id);
return Partial("InvoiceItemDetails", item);

View File

@@ -106,15 +106,6 @@
break;
}
</td>
@if (Model.ShowProjects)
{
<td>
@if (item.InvoiceInvoiceItem.FirstOrDefault() != null)
{
<a asp-page="/Projects/Edit" asp-route-id="@item.InvoiceInvoiceItem.FirstOrDefault()?.ProjectPartItem?.ProjectPart?.Project?.IdProject">@string.Join(" ", item.InvoiceInvoiceItem.Select(x => x.ProjectPartItem?.ProjectPart?.Project?.ProjectNumberFormatted).Distinct())</a>
}
</td>
}
<td class="text-right">
<a class="btn btn-xs icon-btn btn-outline-success borderless" href='javascript:;' onclick="generateExcel(this)" data-toggle="tooltip" data-placement="left" title="Izvozi pozicije v .xlsx format" data-state="success"><i class="far fa-file-excel"></i></a>
<a class="btn btn-xs icon-btn btn-outline-primary borderless" asp-page="/Invoices/Print" asp-route-id="@item.IdInvoice" data-toggle="tooltip" data-placement="top" title="Tiskanje" data-state="primary"><i class="ion ion-md-print"></i></a>

View File

@@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.Project;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using ClosedXML.Excel;
@@ -16,7 +15,7 @@ using Microsoft.AspNetCore.Hosting;
namespace EveryThing.Pages.Invoices
{
[Authorize(Roles = "Administrator,InvoicingUser,ProjecThingUser")]
[Authorize(Roles = "Administrator,InvoicingUser")]
public class IndexModel : PageModel
{
private readonly IWebHostEnvironment _hostingEnvironment;
@@ -37,8 +36,6 @@ namespace EveryThing.Pages.Invoices
{
var user = _userManager.GetUserAsync(User).Result;
ShowProjects = User.IsInRole("ProjecThingUser") || User.IsInRole("Administrator");
var invoiceType = (Models.Invoice.Invoice.InvoiceType)type;
//Kako spraviti type preko osvezovanja
@@ -46,30 +43,13 @@ namespace EveryThing.Pages.Invoices
ViewData["SearchString"] = searchString;
ViewData["FinishedProjects"] = finishedProjects == "on" ? "checked" : "";
if (ShowProjects)
{
Invoice = await _context.Invoices
.Include(p => p.Company)
.Include(p => p.Partner)
.Include(x => x.InvoiceInvoiceItem)
.ThenInclude(x => x.ProjectPartItem)
.ThenInclude(x => x.ProjectPart)
.ThenInclude(x => x.Project)
.Where(x => x.Type == invoiceType)
.OrderBy(x => x.InvoiceYear)
.ThenBy(x => x.InvoiceNumber)
.ToListAsync();
}
else
{
Invoice = await _context.Invoices
.Include(p => p.Company)
.Include(p => p.Partner)
.Where(x => x.Type == invoiceType)
.OrderBy(x => x.InvoiceYear)
.ThenBy(x => x.InvoiceNumber)
.ToListAsync();
}
Invoice = await _context.Invoices
.Include(p => p.Company)
.Include(p => p.Partner)
.Where(x => x.Type == invoiceType)
.OrderBy(x => x.InvoiceYear)
.ThenBy(x => x.InvoiceNumber)
.ToListAsync();
// Search string
if (!string.IsNullOrEmpty(searchString))

View File

@@ -1,16 +1,19 @@
@model EveryThing.Models.Invoice.InvoiceItem
@using EveryThing.Models.Invoice
@model EveryThing.Models.Invoice.InvoiceItem
<tr data-idinvoiceitem="@Model.IdInvoiceItem">
<td>
@Html.DisplayFor(x => Model.Item.Title) <br/>
@Html.DisplayFor(x => Model.ItemDescription)
@Html.DisplayFor(x => Model.ItemDisplay)
</td>
<td class="table-number">@Html.DisplayFor(x => Model.Quantity)</td>
<td class="table-number">@Html.DisplayFor(x => Model.Price)</td>
<td class="table-number">@Html.DisplayFor(x => Model.Discount)</td>
<td class="table-number">@Html.DisplayFor(x => Model.Tax)</td>
<td class="table-number">@Html.DisplayFor(x => Model.TotalValue)</td>
<td class="table-status">@Html.DisplayFor(modelItem => Model.State)</td>
@if (Model.Invoice.Type != Invoice.InvoiceType.Invoice)
{
<td class="table-status">@Html.DisplayFor(modelItem => Model.State)</td>
}
<td class="text-right" style="width: 70px;">
<a class="btn btn-xs icon-btn btn-outline-secondary borderless" data-state="secondary" href='javascript:;'><i class="fas fa-pencil-alt" hx-get="@Url.Page("Edit", "InvoiceItemEdit", new {id = Model.IdInvoiceItem})" hx-swap="outerHTML" hx-target="closest tr"></i></a>
<a class="btn btn-xs icon-btn btn-outline-danger borderless" data-state="danger" href='javascript:;' onclick="deleteInvoiceItem(this)"><i class="fas fa-times"></i></a>

View File

@@ -1,35 +1,94 @@
@model EveryThing.Pages.Invoices.EditModel.EditInvoiceItemData
<tr>
<tr class="no-hover">
@using (Html.BeginForm("UpdateInvoiceItem", "Edit", FormMethod.Post))
{
<td>
<td colspan="100">
<div class="row">
<div class="col-6">
<div class="form-group row">
<label class="col-sm-2 col-form-label">Artikel</label>
<div class="col-sm-10">
<input type="hidden" asp-for="InvoiceItem.IdInvoiceItem" />
<select id="selTblItem_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.IdItemFk" class="form-control" asp-items="Model.SelectListItems" style="width: 100%"></select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Opis</label>
<div class="col-sm-10">
<textarea id="inpTblItemDescription_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.ItemDescription" class="form-control" rows="3" style="width: 100%; resize: none;"></textarea>
</div>
</div>
</div>
<div class="col-6">
<div class="row">
<div class="col-6">
<div class="form-group row">
<label class="col-sm-4 col-form-label">Količina</label>
<div class="col-sm-8">
<input id="inpTblQuantity_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Quantity" class="form-control input-number" style="width:100%" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label">Rabat</label>
<div class="col-sm-8">
<input id="inpTblDiscount_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Discount" class="form-control input-number" style="width: 100%" />
</div>
</div>
</div>
<div class="col-6">
<div class="form-group row">
<label class="col-sm-4 col-form-label">Cena</label>
<div class="col-sm-8">
<input id="inpTblPrice_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Price" class="form-control input-number" style="width: 100%" />
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label">DDV</label>
<div class="col-sm-8">
<input id="inpTblTax_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Tax" class="form-control input-number" style="width: 100%" />
</div>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Status</label>
<div class="col-sm-10">
<select id="selTblStatus_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.State" asp-items="Html.GetEnumSelectList<EveryThing.Models.Invoice.InvoiceItem.InvoiceItemState>()" class="form-control" style="width: 100%">
</select>
</div>
</div>
</div>
</div>
<div style="width: 100%; text-align: right;">
<a class="btn btn-primary btn-sm" href='javascript:;' data-state="success" data-iditem="@(Model.InvoiceItem.IdInvoiceItem)" onclick="updateInvoiceItem(this)">Potrdi</a>
<a class="btn btn-default btn-sm" id="btnTblCancel_@(Model.InvoiceItem.IdInvoiceItem.ToString())" href='javascript:;' class="btn btn-xs icon-btn btn-outline-danger borderless" data-state="danger" hx-get="@Url.Page("Edit", "InvoiceItemDetails", new { id = Model.InvoiceItem.IdInvoiceItem })" hx-swap="outerHTML" hx-target="closest tr">Prekliči</a>
</div>
</td>
@* <td>
<input type="hidden" asp-for="InvoiceItem.IdInvoiceItem" />
<select id="selTblItem_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.IdItemFk" class="form-control" asp-items="Model.SelectListItems" style="width: 100%"></select>
<input id="inpTblItemDescription_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.ItemDescription" class="form-control" style="width:100%" />
</td>
<td class="table-eddit table-price-edit">
<input id="inpTblQuantity_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Quantity" class="form-control" style="width:100%"/>
</td>
<td class="table-eddit table-price-edit">
<input id="inpTblPrice_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Price" class="form-control" style="width: 100%"/>
</td>
<td class="table-eddit table-price-edit">
<input id="inpTblDiscount_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Discount" class="form-control"style="width: 100%"/>
</td>
<td class="table-eddit table-price-edit">
<input id="inpTblTax_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.Tax" class="form-control" style="width: 100%"/>
</td>
<td class="table-eddit table-price-edit">
@Html.DisplayFor(x => Model.InvoiceItem.TotalValue)
</td>
<td class="table-status">
<select id="selTblStatus_@(Model.InvoiceItem.IdInvoiceItem.ToString())" asp-for="InvoiceItem.State" asp-items="Html.GetEnumSelectList<EveryThing.Models.Invoice.InvoiceItem.InvoiceItemState>()" class="form-control" style="width: 100%">
</select>
</td>
<td class="text-right" style="width: 70px;">
<a class="btn btn-xs icon-btn btn-outline-success borderless" href='javascript:;' data-state="success" data-iditem="@(Model.InvoiceItem.IdInvoiceItem)" onclick="updateInvoiceItem(this)"><i class="fas fa-check"></i></a>
<a id="btnTblCancel_@(Model.InvoiceItem.IdInvoiceItem.ToString())" href='javascript:;' class="btn btn-xs icon-btn btn-outline-danger borderless" data-state="danger" hx-get="@Url.Page("Edit", "InvoiceItemDetails", new { id = Model.InvoiceItem.IdInvoiceItem })" hx-swap="outerHTML" hx-target="closest tr"><i class="fas fa-ban"></i></a>
</td>
</td>*@
}
</tr>

View File

@@ -94,18 +94,6 @@ namespace EveryThing.Pages.Invoices
SetTranslation(translationLanguage, Invoice.State);
var showProjects = User.IsInRole("ProjecThingUser") || User.IsInRole("Administrator");
if (showProjects)
{
var project = _context.InvoiceItems
.Include(x => x.ProjectPartItem)
.ThenInclude(x => x.ProjectPart)
.ThenInclude(x => x.Project).FirstOrDefault(x => x.IdInvoiceFk == Invoice.IdInvoice);
if (project != null && project.ProjectPartItem != null)
ProjectNumber = project.ProjectPartItem.ProjectPart.Project.ProjectNumberFormatted;
}
return Page();
}