From 9df826b99e8ab57a14c0d115cfeb3c6a93fca0aa Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Sat, 25 May 2024 21:30:11 +0330 Subject: [PATCH] ... --- Back/Common/eActionValidation.cs | 3 +- Back/Controllers/InvoiceController.cs | 16 ++++++ Back/Controllers/InvoiceItemController.cs | 40 ++++++++++++- Back/Services/servInvoiceItem.cs | 4 ++ Back/Services/servTaxPayer.cs | 2 +- Back/Validations/AUInvoiceItemValidation.cs | 64 ++++++++++++--------- 6 files changed, 97 insertions(+), 32 deletions(-) diff --git a/Back/Common/eActionValidation.cs b/Back/Common/eActionValidation.cs index a2a7e75..6084955 100644 --- a/Back/Common/eActionValidation.cs +++ b/Back/Common/eActionValidation.cs @@ -3,6 +3,7 @@ public enum eActionValidation { add, - update + update, + delete } } diff --git a/Back/Controllers/InvoiceController.cs b/Back/Controllers/InvoiceController.cs index e9e4998..e6e55f9 100644 --- a/Back/Controllers/InvoiceController.cs +++ b/Back/Controllers/InvoiceController.cs @@ -125,6 +125,11 @@ namespace Back.Controllers if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(invoice)) return BadRequest(new List { "این صورتحساب به سازمان ارسال شده"+'\n'+ "برای ویرایش ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"}); + else if (invoice.invoiceType != InvoiceType.Bidding + && invoice.invoiceType != InvoiceType.Sale) + { + return BadRequest(new List { $"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود" }); + } } @@ -162,6 +167,17 @@ namespace Back.Controllers if (invoice == null) return NotFound(); + + //----Check TaxPayer + if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(invoice)) + return BadRequest(new List { "این صورتحساب به سازمان ارسال شده"+'\n'+ + "برای ویرایش ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"}); + else if (invoice.invoiceType != InvoiceType.Bidding + && invoice.invoiceType != InvoiceType.Sale) + { + return BadRequest(new List { $"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود" }); + } + invoice.LastChangeUserID = Convert.ToInt32(UserID); //----Update and sendResult return Ok(await _servInvoice.DeleteInvoice(invoice)); diff --git a/Back/Controllers/InvoiceItemController.cs b/Back/Controllers/InvoiceItemController.cs index cc78882..2a79d10 100644 --- a/Back/Controllers/InvoiceItemController.cs +++ b/Back/Controllers/InvoiceItemController.cs @@ -63,10 +63,9 @@ namespace Back.Controllers } - [HttpPost("UpdateItem/{invoiceID}")] + [HttpPut("UpdateItem/{invoiceID}")] public async Task UpdateItem([FromRoute] int invoiceID, [FromBody] InvoiceItemDTO model) { - //کالا نمی تواند //-----GetUserAndCompany var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); var UserID = claim.Value; @@ -92,7 +91,7 @@ namespace Back.Controllers invoiceitem.am = model.am; invoiceitem.fee = model.fee; invoiceitem.dis = model.dis; - // invoiceitem.CODID = model.CODID; + invoiceitem.CODID = model.CODID; if (await _servInvoice.UpdateInvoice(invoice)) return Ok(await _servInvoiceItem.Update(invoiceitem)); @@ -101,5 +100,40 @@ namespace Back.Controllers } + [HttpDelete("DeleteItem/{invoiceID}/{invoiceItemID}")] + public async Task UpdateItem([FromRoute] int invoiceID, [FromRoute] int invoiceItemID) + { + //-----GetUserAndCompany + var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); + var UserID = claim.Value; + var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); + + //-----Validaton + var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, invoiceID, new InvoiceItemDTO(), eActionValidation.delete)) ; + if (!resultValidationmodel.IsValid) + return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList()); + + //-----Get invoice + Invoice invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, invoiceID); + if (invoice == null) + return BadRequest(new List { "invoice notFound..." }); + + + var invoiceitem = await _servInvoiceItem.Getinvoiceitem(user.RolUsers.First().CompanyID, invoiceID, model.ID.Value); + if (invoiceitem == null) + return BadRequest(new List { "invoice Item notFound..." }); + + invoice.LastChangeUserID = Convert.ToInt32(UserID); + + + + if (await _servInvoice.UpdateInvoice(invoice)) + return Ok(await _servInvoiceItem.Delete(invoiceitem)); + + else return BadRequest(new List { "خطایی رخ داده" }); + + + } + } } diff --git a/Back/Services/servInvoiceItem.cs b/Back/Services/servInvoiceItem.cs index 782cf08..060ac1a 100644 --- a/Back/Services/servInvoiceItem.cs +++ b/Back/Services/servInvoiceItem.cs @@ -19,6 +19,10 @@ namespace Back.Services { return await _invoiceitemRepo.UpdateAsync(item); } + public async Task Delete(InvoiceItem item) + { + return await _invoiceitemRepo.DeleteAsync(item); + } public async Task Exist(int companyID,int invoiceID,int invoiceitemID) { return await _invoiceitemRepo.Get(w => w.InvoiceID == invoiceID && w.ID == invoiceitemID && w.invoice.CompanyID == companyID).AnyAsync(); diff --git a/Back/Services/servTaxPayer.cs b/Back/Services/servTaxPayer.cs index c362a7b..28f63c8 100644 --- a/Back/Services/servTaxPayer.cs +++ b/Back/Services/servTaxPayer.cs @@ -20,7 +20,7 @@ namespace Back.Services } public async Task ExistSuccessfulorSendorpendingInvoice(Invoice invoice) { - return _repoSentTax.Get(w => /*w.InvoiceType == invoice.invoiceType &&*/ w.InvoiceID == invoice.ID && + return _repoSentTax.Get(w => w.InvoiceType == invoice.invoiceType && w.InvoiceID == invoice.ID && (w.SentStatus == SentStatus.Successful || w.SentStatus == SentStatus.Send || w.SentStatus == SentStatus.pending)).Any(); } public async Task CheckingTheCompanyKeyInformation(int CompanyID, string UniqeMemory, string PrivateKey, string EconomicCode) diff --git a/Back/Validations/AUInvoiceItemValidation.cs b/Back/Validations/AUInvoiceItemValidation.cs index 3cf2ae8..b0205cc 100644 --- a/Back/Validations/AUInvoiceItemValidation.cs +++ b/Back/Validations/AUInvoiceItemValidation.cs @@ -23,20 +23,40 @@ namespace Back.Validations }); }); - - - RuleFor(r => r) - .Custom( (model, context) => - { - if (model.Item3.CODID != null && model.Item3.CODID > 0) + When(m => m.Item4 == eActionValidation.update || m.Item4 == eActionValidation.add, () => + { + RuleFor(r => r) + .Custom((model, context) => { - if (! servCOD.ExistCodByCompanyID(model.Item3.CODID, model.Item1).Result) - context.AddFailure("کالا یافت نشد"); - } + if (model.Item3.CODID != null && model.Item3.CODID > 0) + { + if (!servCOD.ExistCodByCompanyID(model.Item3.CODID, model.Item1).Result) + context.AddFailure("کالا یافت نشد"); + } - else context.AddFailure("کالا صحیح نمی باشد"); + else context.AddFailure("کالا صحیح نمی باشد"); - }); + }); + RuleFor(r => r.Item3.am) + .NotEmpty().WithMessage("تعداد مشخص نشده") + .NotNull().WithMessage("تعداد مشخص نشده"); + + RuleFor(r => r.Item3.fee) + .NotEmpty().WithMessage("مبلغ واحد مشخص نشده") + .NotNull().WithMessage("مبلغ واحد مشخص نشده"); + + RuleFor(r => r).Custom(async (model, context) => + { + if (model.Item3.dis != null && model.Item3.dis > 0) + if (model.Item3.dis > model.Item3.am * model.Item3.fee) + context.AddFailure("مبلغ تخفیف نمی تواند از (تعداد * مبلغ واحد) بیشتر باشد"); + + + }); + }); + + + RuleFor(r => r) .Custom((model, context) => { @@ -50,6 +70,11 @@ namespace Back.Validations if ( servTaxPayer.ExistSuccessfulorSendorpendingInvoice(invoice).Result) context.AddFailure("این صورتحساب به سازمان ارسال شده"+'\n'+ "برای تغییر ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"); + else if(invoice.invoiceType!=InvoiceType.Bidding + && invoice.invoiceType != InvoiceType.Sale) + { + context.AddFailure($"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود"); + } } } @@ -57,22 +82,7 @@ namespace Back.Validations }); - RuleFor(r => r.Item3.am) - .NotEmpty().WithMessage("تعداد مشخص نشده") - .NotNull().WithMessage("تعداد مشخص نشده"); - - RuleFor(r => r.Item3.fee) - .NotEmpty().WithMessage("مبلغ واحد مشخص نشده") - .NotNull().WithMessage("مبلغ واحد مشخص نشده"); - - RuleFor(r => r).Custom(async (model, context) => - { - if (model.Item3.dis!=null && model.Item3.dis > 0) - if (model.Item3.dis > model.Item3.am * model.Item3.fee) - context.AddFailure("مبلغ تخفیف نمی تواند از (تعداد * مبلغ واحد) بیشتر باشد"); - - - }); + } } }