Odstranjenn projekt
dodan vnos pozicije fakture
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user