diff --git a/EveryThing/Models/Invoice/Invoice.cs b/EveryThing/Models/Invoice/Invoice.cs index 39bc32b..f597f1f 100644 --- a/EveryThing/Models/Invoice/Invoice.cs +++ b/EveryThing/Models/Invoice/Invoice.cs @@ -110,6 +110,9 @@ namespace EveryThing.Models.Invoice [NotMapped] public string InvoiceNumberFormatted => $"{InvoiceYear}-{InvoiceNumber}"; + [NotMapped] + public string InvoiceNumberFormattedLong => $"{InvoiceNumberFormatted}-{Partner?.Title ?? ""}"; + [NotMapped] public string InvoiceTypeString { diff --git a/EveryThing/Pages/Projects/Edit.cshtml b/EveryThing/Pages/Projects/Edit.cshtml index 98a2ae9..e44f58c 100644 --- a/EveryThing/Pages/Projects/Edit.cshtml +++ b/EveryThing/Pages/Projects/Edit.cshtml @@ -170,65 +170,68 @@
- +
+
- - - - - - - - + + + + + + + + - @foreach (var invoice in Model.Invoices.Where(x => x.Type == Models.Invoice.Invoice.InvoiceType.Order)) - { - x.ProjectPartItem.IdProjectPartFk))"> - - - - - - - - } + @foreach (var invoice in Model.Invoices.Where(x => x.Type == Models.Invoice.Invoice.InvoiceType.Order)) + { + x.ProjectPartItem.IdProjectPartFk) ?? Array.Empty())"> + + + + + + + + }
- # - - Dobavitelj - - Datum - - Dobavni rok - - Status - Pokaži vse
+ # + + Dobavitelj + + Datum + + Dobavni rok + + Status + Pokaži vse
- @Html.DisplayFor(modelItem => invoice.InvoiceYear) - @Html.DisplayFor(modelItem => invoice.InvoiceNumber) - - @Html.DisplayFor(x => invoice.Partner.Title) - - @Html.DisplayFor(x => invoice.Date) - - @Html.DisplayFor(x => invoice.DateOfDispatch) - - @switch (invoice.State) - { - case Models.Invoice.Invoice.InvoiceState.Closed: - @Html.DisplayFor(modelItem => invoice.State) - break; - case Models.Invoice.Invoice.InvoiceState.Confirmed: - @Html.DisplayFor(modelItem => invoice.State) - break; - default: - @Html.DisplayFor(modelItem => invoice.State) - break; - } - - - -
+ @Html.DisplayFor(modelItem => invoice.InvoiceYear) - @Html.DisplayFor(modelItem => invoice.InvoiceNumber) + + @Html.DisplayFor(x => invoice.Partner.Title) + + @Html.DisplayFor(x => invoice.Date) + + @Html.DisplayFor(x => invoice.DateOfDispatch) + + @switch (invoice.State) + { + case Models.Invoice.Invoice.InvoiceState.Closed: + @Html.DisplayFor(modelItem => invoice.State) + break; + case Models.Invoice.Invoice.InvoiceState.Confirmed: + @Html.DisplayFor(modelItem => invoice.State) + break; + default: + @Html.DisplayFor(modelItem => invoice.State) + break; + } + + + +
+ +
@@ -258,7 +261,7 @@ @foreach (var invoice in Model.Invoices.Where(x => x.Type == Models.Invoice.Invoice.InvoiceType.DeliveryNote)) { - x.ProjectPartItem.IdProjectPartFk))"> + x.ProjectPartItem.IdProjectPartFk) ?? Array.Empty())"> @if (invoice.State == Invoice.InvoiceState.Confirmed) { @@ -328,7 +331,7 @@ @foreach (var invoice in Model.Invoices.Where(x => x.Type == Models.Invoice.Invoice.InvoiceType.Invoice)) { - x.ProjectPartItem.IdProjectPartFk))"> + x.ProjectPartItem.IdProjectPartFk) ?? Array.Empty())"> @Html.DisplayFor(modelItem => invoice.InvoiceYear) - @Html.DisplayFor(modelItem => invoice.InvoiceNumber) @@ -370,63 +373,70 @@
- - - - - - - - + + + + + + + + + - @foreach (var invoice in Model.Invoices.Where(x => x.Type == Invoice.InvoiceType.BuyersOrder)) - { - x.ProjectPartItem.IdProjectPartFk))"> - - - - - - - - } + @foreach (var invoice in Model.Invoices.Where(x => x.Type == Invoice.InvoiceType.BuyersOrder)) + { + x.ProjectPartItem?.IdProjectPartFk ?? 0) ?? Array.Empty())"> + + + + + + + + + }
- # - - Partner - - Datum - - Datum odpreme - - Status - Pokaži vse
+ # + + Partner + + Datum + + Datum odpreme + + Status + + Znesek + Pokaži vse
- @Html.DisplayFor(modelItem => invoice.InvoiceYear) - @Html.DisplayFor(modelItem => invoice.InvoiceNumber) - - @Html.DisplayFor(x => invoice.Partner.Title) - - @Html.DisplayFor(x => invoice.Date) - - @Html.DisplayFor(x => invoice.DateOfDispatch) - - @switch (invoice.State) - { - case Models.Invoice.Invoice.InvoiceState.Closed: - @Html.DisplayFor(modelItem => invoice.State) - break; - case Models.Invoice.Invoice.InvoiceState.Confirmed: - @Html.DisplayFor(modelItem => invoice.State) - break; - default: - @Html.DisplayFor(modelItem => invoice.State) - break; - } - - - -
+ @Html.DisplayFor(modelItem => invoice.InvoiceYear) - @Html.DisplayFor(modelItem => invoice.InvoiceNumber) + + @Html.DisplayFor(x => invoice.Partner.Title) + + @Html.DisplayFor(x => invoice.Date) + + @Html.DisplayFor(x => invoice.DateOfDispatch) + + @switch (invoice.State) + { + case Models.Invoice.Invoice.InvoiceState.Closed: + @Html.DisplayFor(modelItem => invoice.State) + break; + case Models.Invoice.Invoice.InvoiceState.Confirmed: + @Html.DisplayFor(modelItem => invoice.State) + break; + default: + @Html.DisplayFor(modelItem => invoice.State) + break; + } + + @invoice.InvoiceInvoiceItem.Sum(y => y.TotalValue).ToString("#,###,##0.00") € + + + +
+ Poveži ponudbo
@@ -523,7 +533,7 @@ @foreach (var invoice in Model.Invoices.Where(x => x.Type == Invoice.InvoiceType.Cooperation)) { - x.ProjectPartItem.IdProjectPartFk))"> + x.ProjectPartItem.IdProjectPartFk) ?? Array.Empty())"> @Html.DisplayFor(modelItem => invoice.InvoiceYear) - @Html.DisplayFor(modelItem => invoice.InvoiceNumber) @@ -745,6 +755,8 @@
@Html.AntiForgeryToken()
+
+ @section Scripts { @@ -1535,5 +1547,98 @@ }); } + function openModalCreateLinkToOrders(){ + $.blockUI(); + $.ajax({ + type: "GET", + url: "/Invoices/Index/?handler=Excel", + data: { + idInvoice + }, + success: function (data) { + $.unblockUI(); + if (data.successful) { + + } else { + console.log(data); + Swal.fire('Napaka pri pridobivanju ponudb', + data.error, + 'error'); + } + + }, + error: function (xhr, ajaxOptions, thrownError) { + console.log(xhr); + alert(xhr.responseText); + $.unblockUI(); + } + }); + } + + + + } diff --git a/EveryThing/Pages/Projects/Edit.cshtml.cs b/EveryThing/Pages/Projects/Edit.cshtml.cs index 28d7d34..27c908d 100644 --- a/EveryThing/Pages/Projects/Edit.cshtml.cs +++ b/EveryThing/Pages/Projects/Edit.cshtml.cs @@ -1,31 +1,39 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading.Tasks; +using DocumentFormat.OpenXml.InkML; +using DocumentFormat.OpenXml.Spreadsheet; +using EveryThing.Data; +using EveryThing.Models; +using EveryThing.Models.CodeTable; +using EveryThing.Models.Invoice; +using EveryThing.Models.Project; +using EveryThing.Models.Vehicle; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; -using EveryThing.Data; -using EveryThing.Models; -using EveryThing.Models.Project; -using System.Text.Json; -using EveryThing.Models.CodeTable; -using DocumentFormat.OpenXml.InkML; -using EveryThing.Models.Invoice; -using EveryThing.Models.Vehicle; -using static EveryThing.Pages.CodeTableVehicleFuelTypes.IndexModel; -using DocumentFormat.OpenXml.Spreadsheet; using NuGet.Packaging; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using static EveryThing.Pages.CodeTableItems.IndexModel; +using static EveryThing.Pages.CodeTableVehicleFuelTypes.IndexModel; namespace EveryThing.Pages.Projects { [Authorize(Roles = "Administrator,ProjecThingUser")] public class EditModel : PageModel { + public class LinkToBuyersOrderData + { + public int IdProject { get; set; } + public SelectList SelectListOrders { get; set; } + public int IdOrder { get; set; } + } + public class EditProjectPartData { public ProjectPartItem Item { get; set; } @@ -96,6 +104,12 @@ namespace EveryThing.Pages.Projects .OrderBy(x => x.InvoiceYear).ThenBy(x => x.InvoiceNumber) .ToListAsync(); + Invoices.AddRange(await _context.Invoices + .Include(x => x.Project) + .Include(x => x.InvoiceInvoiceItem) + .Where(x => x.IdProjectFk == id).ToArrayAsync()); + + FilesProject = await _context.Files .Where(x => x.IdCompanyFk == user.IdCompanyFk && x.IdReferenceFk == Project.IdProject @@ -820,5 +834,39 @@ namespace EveryThing.Pages.Projects return new JsonResult(new { successful = true, error = "", idInvoice }); } + + public IActionResult OnGetLinkToProjectData(int idProject) + { + var user = _userManager.GetUserAsync(User).Result; + + var selListOrders = new SelectList(_context.Invoices.Include(x => x.Partner) + .Where(x => x.Type == Invoice.InvoiceType.BuyersOrder && x.State == Invoice.InvoiceState.Offer) + .OrderByDescending(x => x.InvoiceYear).ThenBy(x => x.InvoiceNumber).ToList(), "IdInvoice", "InvoiceNumberFormattedLong"); + + return Partial("ModalCreateLinkToBuyersOrders", new LinkToBuyersOrderData + { + SelectListOrders = selListOrders, + IdProject = idProject + }); + } + + public IActionResult OnPostLinkProjectToBuyerOrder(int idProject, int idOrder) + { + var user = _userManager.GetUserAsync(User).Result; + + var project = _context.Projects.FirstOrDefault(x => x.IdProject == idProject); + if (project == null) + return new JsonResult(new { successful = false, error = $"Project with ID {idProject} not exists!" }); + + var invoice = _context.Invoices.FirstOrDefault(x => x.IdInvoice == idOrder); + + if (invoice == null) + return new JsonResult(new { successful = false, error = $"Invoice with ID {idOrder} not exists!" }); + + invoice.IdProjectFk = project.IdProject; + _context.SaveChanges(); + + return new JsonResult(new { successful = true, error = ""}); + } } } diff --git a/EveryThing/Pages/Projects/ModalCreateLinkToBuyersOrders.cshtml b/EveryThing/Pages/Projects/ModalCreateLinkToBuyersOrders.cshtml new file mode 100644 index 0000000..9553d3e --- /dev/null +++ b/EveryThing/Pages/Projects/ModalCreateLinkToBuyersOrders.cshtml @@ -0,0 +1,27 @@ +@model EveryThing.Pages.Projects.EditModel.LinkToBuyersOrderData + +