diff --git a/Back/Controllers/InvoiceController.cs b/Back/Controllers/InvoiceController.cs index f5ea261..7b1c462 100644 --- a/Back/Controllers/InvoiceController.cs +++ b/Back/Controllers/InvoiceController.cs @@ -55,8 +55,8 @@ namespace Back.Controllers item.InvoicIssueDate = DateTime.Now.ConvertMiladiToShamsi(); - if (!ModelState.IsValid) - return BadRequest(item); + //if (!ModelState.IsValid) + // return BadRequest(item); //-----GetUserAndCompany var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); diff --git a/Back/Controllers/InvoiceItemController.cs b/Back/Controllers/InvoiceItemController.cs index 97cc99e..c679a53 100644 --- a/Back/Controllers/InvoiceItemController.cs +++ b/Back/Controllers/InvoiceItemController.cs @@ -27,7 +27,7 @@ namespace Back.Controllers } [HttpPost("AddItem/{invoiceID}")] - public async Task AddItem([FromRoute] int invoiceID, [FromBody] InvoiceItemDTO model) + public async Task> AddItem([FromRoute] int invoiceID, [FromBody] InvoiceItemDTO model) { //-----GetUserAndCompany var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); @@ -64,7 +64,7 @@ namespace Back.Controllers } [HttpPut("UpdateItem/{invoiceID}")] - public async Task UpdateItem([FromRoute] int invoiceID, [FromBody] InvoiceItemDTO model) + public async Task> UpdateItem([FromRoute] int invoiceID, [FromBody] InvoiceItemDTO model) { //-----GetUserAndCompany var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); @@ -109,7 +109,7 @@ namespace Back.Controllers } [HttpDelete("DeleteItem/{invoiceID}/{invoiceItemID}")] - public async Task DeleteItem([FromRoute] int invoiceID, [FromRoute] int invoiceItemID) + public async Task> DeleteItem([FromRoute] int invoiceID, [FromRoute] int invoiceItemID) { //-----GetUserAndCompany var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); @@ -124,12 +124,12 @@ namespace Back.Controllers //-----Get invoice Invoice invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, invoiceID); if (invoice == null) - return BadRequest(new List { "invoice notFound..." }); + return NotFound(new List { "invoice notFound..." }); - var invoiceitem = await _servInvoiceItem.Getinvoiceitem(user.RolUsers.First().CompanyID, invoiceID, model.ID.Value); + var invoiceitem = await _servInvoiceItem.Getinvoiceitem(user.RolUsers.First().CompanyID, invoiceID, invoiceItemID); if (invoiceitem == null) - return BadRequest(new List { "invoice Item notFound..." }); + return NotFound(new List { "invoice Item notFound..." }); invoice.LastChangeUserID = Convert.ToInt32(UserID); diff --git a/Back/Services/servInvoice.cs b/Back/Services/servInvoice.cs index 86bf011..bbd0e41 100644 --- a/Back/Services/servInvoice.cs +++ b/Back/Services/servInvoice.cs @@ -129,7 +129,7 @@ namespace Back.Services return await _invoiceRepo.Get(w => w.ID == InvoiceID && w.CompanyID == CompanyID && !w.IsDeleted).AnyAsync(); } - public async Task AddInvoice(Invoice invoice, bool calculate = true) + public async Task AddInvoice(Invoice invoice, bool calculate = true) { invoice.Cdate = DateTime.Now.ConvertMiladiToShamsi(); invoice.Udate = DateTime.Now.ConvertMiladiToShamsi(); @@ -137,12 +137,17 @@ namespace Back.Services if (calculate) { if (await _checkPermission.ExtensionofAccess(invoice.CompanyID.Value, 3, "-1")) - return await _invoiceRepo.AddBoolResultAsync(invoice); - return false; + { + var item= await _invoiceRepo.AddAsync(invoice); + return item.ID; + } + + return -1; } else { - return await _invoiceRepo.AddBoolResultAsync(invoice); + var item = await _invoiceRepo.AddAsync(invoice); + return item.ID; } } diff --git a/Shared/ExMethod.cs b/Shared/ExMethod.cs index 986aa1a..31653ac 100644 --- a/Shared/ExMethod.cs +++ b/Shared/ExMethod.cs @@ -24,6 +24,11 @@ namespace Shared PersianCal.GetDayOfMonth(date).ToString("00") ; } + public static DateTime ToMiladiinFront(this string value) + { + PersianCalendar p = new PersianCalendar(); + return p.ToDateTime(Convert.ToInt32(value.Substring(0, 4)), Convert.ToInt32(value.Substring(4, 2)), Convert.ToInt32(value.Substring(6, 2)), DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond); + } public static string GetEnumDisplayName(this Enum enumType) { return enumType.GetType().GetMember(enumType.ToString()) diff --git a/TaxPayerFull/CUSComponent/InvoiceItem.razor b/TaxPayerFull/CUSComponent/InvoiceItem.razor index af5f86f..9edcb41 100644 --- a/TaxPayerFull/CUSComponent/InvoiceItem.razor +++ b/TaxPayerFull/CUSComponent/InvoiceItem.razor @@ -69,7 +69,7 @@
- +
@@ -83,7 +83,7 @@
- +
@@ -113,6 +113,7 @@ else bool Hidealert = true; string alertMessage = ""; public int Tax { get; set; } = 0; + [Parameter] public int InvoiceID { get; set; } [Parameter] public InvoiceItemDTO itemDTO { get; set; } [Parameter] public EventCallback OnMultipleOfThree { get; set; } public List> cods { get; set; } = new(); @@ -135,6 +136,21 @@ else } } @functions { + private void ShowSuccessAlert(string msg) + { + Hidealert = false; + alertColor = AlertColor.Success; + alertIconName = IconName.CheckCircleFill; + alertMessage = msg; + } + private void ShowDangerAlert(string msg) + { + Hidealert = false; + alertColor = AlertColor.Danger; + alertIconName = IconName.ExclamationTriangleFill; + alertMessage = msg; + } + //----------------------- private async Task prdisAsync() { if (itemDTO.ID == null) @@ -143,7 +159,7 @@ else private async Task adisAsync() { if (itemDTO.ID == null) - itemDTO.adis= itemDTO.prdis - itemDTO.dis; + itemDTO.adis = itemDTO.prdis - itemDTO.dis; // await AftervamAsync(); } @@ -155,7 +171,7 @@ else private async Task tsstamAsync() { if (itemDTO.ID == null) - itemDTO.tsstam = itemDTO.vam + itemDTO.adis ; + itemDTO.tsstam = itemDTO.vam + itemDTO.adis; } private async Task AfterAsync() { @@ -164,27 +180,28 @@ else await vamAsync(); await tsstamAsync(); } + //----------------------- public async Task OnClickDelete() { - // var rsp = await hc.Delete($"Customer/Delete/{Cus.ID}"); - // if (rsp.IsSuccessStatusCode) - // { - // var request = await rsp.Content.ReadFromJsonAsync(); - // if (request) - // { - // result.Status = ComponentStatus.success; - // result.Action = ComponentAction.delete; - // await OnMultipleOfThree.InvokeAsync(result); - // } - // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); - // } + var rsp = await hc.Delete($"InvoiceItem/DeleteItem/{InvoiceID}/{itemDTO.ID}"); + if (rsp.IsSuccessStatusCode) + { + var request = await rsp.Content.ReadFromJsonAsync(); + if (request) + { + result.Status = ComponentStatus.success; + result.Action = ComponentAction.delete; + await OnMultipleOfThree.InvokeAsync(result); + } + else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } - // else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound) - // { - // ShowDangerAlert("مشتری با این شناسه یافت نشد"); - // } - // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + else + { + var request = await rsp.Content.ReadFromJsonAsync>(); + ShowDangerAlert(request[0]); + } @@ -192,60 +209,91 @@ else } public async Task OnClickUpdate() { - // if (ItemSearchCustomertype > 0 && !string.IsNullOrEmpty(Cus.FullName)) - // { - // if (ItemSearchCustomertype > 0) - // Cus.CustomerType = (CustomerType)ItemSearchCustomertype; + if (itemDTO.CODID == null || itemDTO.CODID <= 0) + { + ShowDangerAlert("کالا انتخاب نشده"); + return; + } - // var rsp = await hc.Put("Customer/Update", Cus); - // if (rsp.IsSuccessStatusCode) - // { - // var request = await rsp.Content.ReadFromJsonAsync(); - // if (request) - // { - // result.Status = ComponentStatus.success; - // result.Action = ComponentAction.update; - // await OnMultipleOfThree.InvokeAsync(result); - // } - // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); - // } - // else - // { - // var request = await rsp.Content.ReadFromJsonAsync>(); - // ShowDangerAlert(request[0]); - // } - // } - // else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند"); + if (itemDTO.am == null || itemDTO.am <= 0) + { + ShowDangerAlert("تعداد وارد نشده"); + return; + } + + if (itemDTO.fee == null || itemDTO.fee < 0) + { + ShowDangerAlert("مبلغ واحد وارد نشده"); + return; + } + + if (itemDTO.dis == null || itemDTO.dis < 0) + { + ShowDangerAlert("مبلغ تخفیف درست نیست"); + return; + } + var rsp = await hc.Put($"InvoiceItem/UpdateItem/{InvoiceID}", itemDTO); + if (rsp.IsSuccessStatusCode) + { + var request = await rsp.Content.ReadFromJsonAsync(); + if (request) + { + result.Status = ComponentStatus.success; + result.Action = ComponentAction.update; + await OnMultipleOfThree.InvokeAsync(result); + } + else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } + else + { + var request = await rsp.Content.ReadFromJsonAsync>(); + ShowDangerAlert(request[0]); + } } public async Task OnClickAdd() { - // if (ItemSearchCustomertype > 0 && !string.IsNullOrEmpty(Cus.FullName)) - // { - // if (ItemSearchCustomertype > 0) - // Cus.CustomerType = (CustomerType)ItemSearchCustomertype; - // Cus.ID = null; + if (itemDTO.CODID == null || itemDTO.CODID <= 0) + { + ShowDangerAlert("کالا انتخاب نشده"); + return; + } + if (itemDTO.am == null || itemDTO.am <= 0) + { + ShowDangerAlert("تعداد وارد نشده"); + return; + } - // var rsp = await hc.Post("Customer/Add", Cus); - // if (rsp.IsSuccessStatusCode) - // { - // var request = await rsp.Content.ReadFromJsonAsync(); + if (itemDTO.fee == null || itemDTO.fee < 0) + { + ShowDangerAlert("مبلغ واحد وارد نشده"); + return; + } - // if (request) - // { - // result.Status = ComponentStatus.success; - // result.Action = ComponentAction.add; - // await OnMultipleOfThree.InvokeAsync(result); - // } - // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); - // } - // else - // { + if (itemDTO.dis == null || itemDTO.dis < 0) + { + ShowDangerAlert("مبلغ تخفیف درست نیست"); + return; + } - // var request = await rsp.Content.ReadFromJsonAsync>(); - // ShowDangerAlert(request[0]); - // } - // } - // else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند"); + var rsp = await hc.Post($"InvoiceItem/AddItem/{InvoiceID}", itemDTO); + if (rsp.IsSuccessStatusCode) + { + var request = await rsp.Content.ReadFromJsonAsync(); + + if (request) + { + result.Status = ComponentStatus.success; + result.Action = ComponentAction.add; + await OnMultipleOfThree.InvokeAsync(result); + } + else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } + else + { + var request = await rsp.Content.ReadFromJsonAsync>(); + ShowDangerAlert(request[0]); + } + } } \ No newline at end of file diff --git a/TaxPayerFull/Layout/LGridInvoiceItem.razor b/TaxPayerFull/Layout/LGridInvoiceItem.razor index c7b250b..467628d 100644 --- a/TaxPayerFull/Layout/LGridInvoiceItem.razor +++ b/TaxPayerFull/Layout/LGridInvoiceItem.razor @@ -46,6 +46,7 @@ @code { + [Parameter] public int InvoiceID { get; set; } [Parameter] public EventCallback OnMultipleOfThree { get; set; } [Parameter] public IEnumerable InvoiceItems { get; set; } private Modal modal = default!; @@ -62,6 +63,7 @@ parameters.Add("itemDTO", args.Item); + parameters.Add("InvoiceID", InvoiceID); parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); await modal.ShowAsync(title: "ویرایش اطلاعات", parameters: parameters); diff --git a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor index 1b9cbb1..ea41771 100644 --- a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor +++ b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor @@ -122,38 +122,38 @@

- +
- +
-
+
- + - @* - -
-
- -
-
+ @* + +
+
+ +
+
- -
-
+ +
+
- -
+ +
*@ @@ -216,7 +216,7 @@ invoice = new InvoiceDTO(); await base.OnInitializedAsync(); } - + protected override async Task OnParametersSetAsync() { PreloadService.Show(SpinnerColor.Dark); @@ -224,7 +224,7 @@ Patterns = await fv.GetPatterns(); if (InvoiceID != null && InvoiceID > 0) { - + await LoadData(); } else @@ -248,12 +248,16 @@ @functions { private async Task NewItemClick() { - var parameters = new Dictionary(); + if (InvoiceID.HasValue) + { + var parameters = new Dictionary(); + parameters.Add("InvoiceID", InvoiceID); + parameters.Add("itemDTO", new InvoiceItemDTO()); + parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); + await modal.ShowAsync(title: "آیتم جدید", parameters: parameters); + } - parameters.Add("itemDTO", new InvoiceItemDTO()); - parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); - await modal.ShowAsync(title: "آیتم جدید", parameters: parameters); } private async Task LoadData() @@ -285,7 +289,7 @@ // if (result.Status == ComponentStatus.success) // msg = "آیتم با موفقیت حذف شد"; // } - await CallBack(msg); + await CallBack(msg); // if (result.Status == ComponentStatus.success) // await LoadCod(1); @@ -296,7 +300,7 @@ if (!string.IsNullOrEmpty(result)) { ShowSuccessAlert(result); - await LoadData(); + await LoadData(); } } private void ShowSuccessAlert(string msg) @@ -315,33 +319,62 @@ } public async Task OnClickDelete() { + if (InvoiceID.HasValue) + { + var rsp = await hc.Delete($"Invoice/Delete/{InvoiceID.Value}"); + if (rsp.IsSuccessStatusCode) + { + var request = await rsp.Content.ReadFromJsonAsync(); + if (request) + { + hc._nav.NavigateTo("Invoice"); + } + else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } - // var rsp = await hc.Delete($"Cod/Delete/{invoice.ID}"); - // if (rsp.IsSuccessStatusCode) - // { - // var request = await rsp.Content.ReadFromJsonAsync(); - // if (request) - // { - // result.Status = ComponentStatus.success; - // result.Action = ComponentAction.delete; - - // //await OnMultipleOfThree.InvokeAsync(result); - // } - // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); - // } - - // else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound) - // { - // ShowDangerAlert("کالا با این شناسه یافت نشد"); - // } - // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); - - - - + else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound) + { + ShowDangerAlert("صورتحساب با این شناسه یافت نشد"); + } + else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } + + } public async Task OnClickUpdate() { + if (InvoiceID.HasValue) + { + if (await Validate()) + { + var rsp = await hc.Put("Invoice/Update", new NUInvoiceDTO + { + ID = InvoiceID, + CustomerID = invoice.CustomerID, + Des = invoice.Des, + InvoiceDate = invoice.InvoiceDate, + InvoicIssueDate = invoice.InvoicIssueDate, + PatternID = invoice.PatternID, + Title = invoice.Title + }); + if (rsp.IsSuccessStatusCode) + { + var request = await rsp.Content.ReadFromJsonAsync(); + + if (request > 0) + { + InvoiceID = request; + } + else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } + else + { + + var request = await rsp.Content.ReadFromJsonAsync>(); + ShowDangerAlert(request[0]); + } + } + } // if (Cod.UnitID > 0 && Cod.TaxRate > 0 && !string.IsNullOrEmpty(Cod.Title)) // { @@ -367,33 +400,88 @@ } public async Task OnClickAdd() { - // if (Cod.UnitID > 0 && Cod.TaxRate > 0 && !string.IsNullOrEmpty(Cod.Title)) - // { + if (await Validate()) + { + var rsp = await hc.Post("Invoice/Add", new NUInvoiceDTO + { + CustomerID = invoice.CustomerID, + Des = invoice.Des, + InvoiceDate = invoice.InvoiceDate, + InvoicIssueDate = invoice.InvoicIssueDate, + PatternID = invoice.PatternID, + Title = invoice.Title + }); + if (rsp.IsSuccessStatusCode) + { + var request = await rsp.Content.ReadFromJsonAsync(); - // var rsp = await hc.Post("Cod/Add", Cod); - // if (rsp.IsSuccessStatusCode) - // { - // var request = await rsp.Content.ReadFromJsonAsync(); + if (request > 0) + { + InvoiceID = request; + } + else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } + else + { - // if (request) - // { - // result.Status = ComponentStatus.success; - // result.Action = ComponentAction.add; - // await OnMultipleOfThree.InvokeAsync(result); - // } - // else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); - // } - // else - // { + var request = await rsp.Content.ReadFromJsonAsync>(); + ShowDangerAlert(request[0]); + } + } - // var request = await rsp.Content.ReadFromJsonAsync>(); - // ShowDangerAlert(request[0]); - // } - // } - // else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند"); } public async Task Validate() { - return false; + if (string.IsNullOrEmpty(invoice.Title)) + { + ShowDangerAlert("عنوان نمی تواند خالی باشد"); + return false; + } + + + if (string.IsNullOrEmpty(invoice.InvoiceDate)) + { + ShowDangerAlert("تاریخ صورتحساب نمی تواند خالی باشد"); + return false; + } + else + { + int InvoiceDate = 0; + if (invoice.InvoiceDate.Replace("/", "").Length != 8 || !int.TryParse(invoice.InvoiceDate.Replace("/", ""), out InvoiceDate)) + { + ShowDangerAlert("تاریخ صورتحساب صحیح نمی باشد"); + return false; + } + + + else if (InvoiceDate.ToString().Trim().ToMiladiinFront() > DateTime.Now) + { + ShowDangerAlert("تاریخ صورتحساب نمی تواند از امروز جلوتر باشد"); + return false; + } + + } + + + if (string.IsNullOrEmpty(invoice.InvoicIssueDate)) + { ShowDangerAlert("تاریخ صدور نمی تواند خالی باشد"); return false; } + else + { + int InvoicIssueDate = 0; + if (invoice.InvoicIssueDate.Replace("/", "").Length != 8 || !int.TryParse(invoice.InvoicIssueDate.Replace("/", ""), out InvoicIssueDate)) + { ShowDangerAlert("تاریخ صدور صحیح نمی باشد"); return false; } + + else if (InvoicIssueDate.ToString().Trim().ToMiladiinFront() > DateTime.Now) + { ShowDangerAlert("تاریخ صدور نمی تواند از امروز جلوتر باشد"); return false; } + } + + if (invoice.PatternID.HasValue) + if (invoice.PatternID <= 0 || !Patterns.Any(w => w.ID == invoice.PatternID.Value)) + { ShowDangerAlert("شناسه الگو صحیح نمی باشد"); return false; } + + if (invoice.CustomerID == null || invoice.CustomerID <= 0 || !Cus.Any(w => w.ID == invoice.CustomerID)) + { ShowDangerAlert("مشتری صحیح نمی باشد"); return false; } + + return true; } } \ No newline at end of file