diff --git a/Back/Controllers/InvoiceController.cs b/Back/Controllers/InvoiceController.cs index e6e55f9..f5ea261 100644 --- a/Back/Controllers/InvoiceController.cs +++ b/Back/Controllers/InvoiceController.cs @@ -48,8 +48,8 @@ namespace Back.Controllers [HttpPost("Add")] public async Task> Add([FromBody] NUInvoiceDTO item) { - if(string.IsNullOrEmpty(item.InvoiceDate)) - item.InvoiceDate = DateTime.Now.ConvertMiladiToShamsi(); + if (string.IsNullOrEmpty(item.InvoiceDate)) + item.InvoiceDate = DateTime.Now.ConvertMiladiToShamsi(); if (string.IsNullOrEmpty(item.InvoicIssueDate)) item.InvoicIssueDate = DateTime.Now.ConvertMiladiToShamsi(); @@ -78,23 +78,23 @@ namespace Back.Controllers //} - return Ok(_servInvoice.AddInvoice(new Invoice() - { + return Ok(_servInvoice.AddInvoice(new Invoice() + { + + Title = item.Title, + Des = item.Des, + invoiceType = InvoiceType.Bidding, + CustomerID = item.CustomerID, + CompanyID = user.RolUsers.First().CompanyID, + InvoicIssueDate = item.InvoicIssueDate.Replace("/", ""), + InvoiceDate = item.InvoicIssueDate.Replace("/", ""), + LastChangeUserID = Convert.ToInt32(UserID), + BillReference = null, + IsDeleted = false, + PatternID = item.PatternID + })); + - Title = item.Title, - Des = item.Des, - invoiceType = InvoiceType.Bidding, - CustomerID = item.CustomerID, - CompanyID = user.RolUsers.First().CompanyID, - InvoicIssueDate = item.InvoicIssueDate.Replace("/", ""), - InvoiceDate = item.InvoicIssueDate.Replace("/", ""), - LastChangeUserID = Convert.ToInt32(UserID), - BillReference = null, - IsDeleted = false, - PatternID = item.PatternID - })); - - } [HttpPut("Update")] @@ -114,7 +114,7 @@ namespace Back.Controllers return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList()); //-----Get invoice - Invoice invoice =await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID,item.ID.Value); + Invoice invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, item.ID.Value); if (invoice == null) return BadRequest(new List { "invoice notFound..." }); @@ -124,11 +124,17 @@ namespace Back.Controllers //----Check TaxPayer if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(invoice)) return BadRequest(new List { "این صورتحساب به سازمان ارسال شده"+'\n'+ - "برای ویرایش ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"}); - else if (invoice.invoiceType != InvoiceType.Bidding - && invoice.invoiceType != InvoiceType.Sale) + "برای تغییر ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"}); + else if (invoice.invoiceType != InvoiceType.BackFrmSale) { - return BadRequest(new List { $"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود" }); + return BadRequest(new List + { "صورتحساب در وضعیت برگشت از فروش نمی تواند ویرایش شود" }); + } + else if (invoice.invoiceType != InvoiceType.Bidding + && invoice.invoiceType != InvoiceType.Sale && invoice.invoiceType != InvoiceType.Repair) + { + return BadRequest(new List { $"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود"+'\n'+ + $"فقط در حالت پیش نویس ، فاکتور و اصلاح (که به سازمان ارسال نشده باشد) میتوان سند را ویرایش کرد" }); } } @@ -140,7 +146,7 @@ namespace Back.Controllers invoice.PatternID = item.PatternID; - if(item.CustomerID > 0) + if (item.CustomerID > 0) invoice.CustomerID = item.CustomerID; if (!string.IsNullOrEmpty(item.InvoicIssueDate)) @@ -163,7 +169,7 @@ namespace Back.Controllers var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); //-----Get invoice - Invoice invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID,ID); + Invoice invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, ID); if (invoice == null) return NotFound(); @@ -171,12 +177,12 @@ namespace Back.Controllers //----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()} نمی تواند ویرایش شود" }); - } + "برای حذف ،صورتحساب را ابطال بزنید"}); + //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 @@ -190,9 +196,9 @@ namespace Back.Controllers var UserID = claim.Value; var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); - Invoice? Invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID,InvoiceID); + Invoice? Invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceID); if (Invoice == null) return NotFound(); - + if (Invoice.invoiceType == InvoiceType.CANCEL) return BadRequest(new List { "این صورتحساب لغو شده" }); var sent = await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(Invoice); Invoice.LastChangeUserID = Convert.ToInt32(UserID); @@ -220,7 +226,7 @@ namespace Back.Controllers return Ok(await _servInvoice.ChangeInvoiceType(Invoice, invoiceType)); case InvoiceType.Repair: - await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); + await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); return Ok(await _servInvoice.AddInvoice(new Invoice() { @@ -238,7 +244,7 @@ namespace Back.Controllers }, false)); case InvoiceType.BackFrmSale: - await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); + await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); return Ok(await _servInvoice.AddInvoice(new Invoice() { @@ -311,7 +317,7 @@ namespace Back.Controllers return Ok(await _servInvoice.ChangeInvoiceType(Invoice, invoiceType)); case InvoiceType.BackFrmSale: - await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); + await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); return Ok(await _servInvoice.AddInvoice(new Invoice() { @@ -355,7 +361,7 @@ namespace Back.Controllers return Ok(await _servInvoice.ChangeInvoiceType(Invoice, invoiceType)); case InvoiceType.Repair: - await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); + await _servInvoice.ChangeInvoiceType(Invoice, invoiceType, false); return Ok(await _servInvoice.AddInvoice(new Invoice() { diff --git a/Back/Controllers/InvoiceItemController.cs b/Back/Controllers/InvoiceItemController.cs index 2a79d10..97cc99e 100644 --- a/Back/Controllers/InvoiceItemController.cs +++ b/Back/Controllers/InvoiceItemController.cs @@ -86,12 +86,20 @@ namespace Back.Controllers if (invoiceitem == null) return BadRequest(new List { "invoice Item notFound..." }); + if (invoice.invoiceType==InvoiceType.BackFrmSale && invoiceitem.am < model.am) + return BadRequest(new List { "در حالت برگشت از فروش تعداد آیتم فقط میتواند کاهشی باشد" }); + invoice.LastChangeUserID = Convert.ToInt32(UserID); + if (invoice.invoiceType == InvoiceType.BackFrmSale) invoiceitem.am = model.am; - invoiceitem.fee = model.fee; - invoiceitem.dis = model.dis; - invoiceitem.CODID = model.CODID; + else + { + invoiceitem.am = model.am; + invoiceitem.fee = model.fee; + invoiceitem.dis = model.dis; + invoiceitem.CODID = model.CODID; + } if (await _servInvoice.UpdateInvoice(invoice)) return Ok(await _servInvoiceItem.Update(invoiceitem)); @@ -101,7 +109,7 @@ namespace Back.Controllers } [HttpDelete("DeleteItem/{invoiceID}/{invoiceItemID}")] - public async Task UpdateItem([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"); diff --git a/Back/Validations/AUInvoiceItemValidation.cs b/Back/Validations/AUInvoiceItemValidation.cs index b0205cc..5cbc1d5 100644 --- a/Back/Validations/AUInvoiceItemValidation.cs +++ b/Back/Validations/AUInvoiceItemValidation.cs @@ -10,6 +10,10 @@ namespace Back.Validations { public AUInvoiceItemValidation(servInvoice servInvoice,ServCOD servCOD, servTaxPayer servTaxPayer, servInvoiceItem servInvoiceItem) { + When(m => m.Item4 == eActionValidation.delete || m.Item4 == eActionValidation.add, () => + { + + }); When(m => m.Item4 == eActionValidation.update, () => { RuleFor(r => r) @@ -65,15 +69,21 @@ namespace Back.Validations var invoice = servInvoice.GetInvoiceByInvoiceID(model.Item1,model.Item2).Result; if (invoice==null) context.AddFailure("صورتحساب یافت نشد"); + + else { if ( servTaxPayer.ExistSuccessfulorSendorpendingInvoice(invoice).Result) context.AddFailure("این صورتحساب به سازمان ارسال شده"+'\n'+ "برای تغییر ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"); + else if ((model.Item4 == eActionValidation.add || model.Item4 == eActionValidation.delete) + && invoice.invoiceType == InvoiceType.BackFrmSale) + context.AddFailure("آیتم های صورتحساب در وضعیت برگشت از فروش نمی تواند اضافه یا کم شود"); else if(invoice.invoiceType!=InvoiceType.Bidding - && invoice.invoiceType != InvoiceType.Sale) + && invoice.invoiceType != InvoiceType.Sale && invoice.invoiceType != InvoiceType.Repair) { - context.AddFailure($"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود"); + context.AddFailure($"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود" +'\n'+ + $"فقط در حالت پیش نویس ، فاکتور و اصلاح (که به سازمان ارسال نشده باشد) میتوان سند را ویرایش کرد"); } } }