copy invoice

This commit is contained in:
mmrbnjd
2024-07-23 22:30:52 +03:30
parent 87aee3685b
commit 1dcadf1a35
6 changed files with 129 additions and 38 deletions

View File

@@ -131,7 +131,11 @@ namespace Back.Controllers
Invoice invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, item.ID.Value);
if (invoice == null)
return BadRequest(new List<string> { "invoice notFound..." });
if (invoice.PatternID != item.PatternID && invoice.invoice!=null)
{
return BadRequest(new List<string> { "این صورتحساب دارای مرجع می باشد"+'\n'+
"امکان تغییر الگو امکان پذیر نیست"});
}
if (invoice.PatternID != item.PatternID || invoice.CustomerID != item.CustomerID
|| invoice.InvoicIssueDate != item.InvoicIssueDate || invoice.InvoiceDate != item.InvoiceDate)
{
@@ -352,6 +356,56 @@ namespace Back.Controllers
}
return NoContent();
}
[HttpPost("CopyInvoice/{InvoiceID}")]// ok
public async Task<ActionResult<InvoiceDTO>> CopyInvoice(int InvoiceID)
{
//-----GetUserAndCompany
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
Invoice? Invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceID);
if (Invoice == null) return NotFound();
//-----Validaton
var resultValidationmodel = await _validationInvoice.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, new NUInvoiceDTO(), eActionValidation.copy));
if (!resultValidationmodel.IsValid)
return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList());
var result = await _servInvoice.AddInvoice(new Invoice()
{
Title = Invoice.Title,
Des = Invoice.Des,
invoiceType = InvoiceType.Bidding,
CustomerID = Invoice.CustomerID,
CompanyID = Invoice.CompanyID,
InvoicIssueDate = Invoice.InvoicIssueDate.Replace("/", ""),
InvoiceDate = Invoice.InvoicIssueDate.Replace("/", ""),
LastChangeUserID = Convert.ToInt32(UserID),
BillReference = Invoice.ID,
IsDeleted = false,
PatternID = Invoice.PatternID,
setm = Invoice.setm,
invoiceDetails = Invoice.invoiceDetails.Select(s => new InvoiceItem
{
CODID = s.CODID,
am = s.am,
fee = s.fee,
dis = s.dis,
}).ToList()
}, true);
if (result > 0)
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result));
return NoContent();
}