This commit is contained in:
mmrbnjd
2025-01-20 14:10:15 +03:30
parent 25c72b2eb5
commit a296f31d74
8 changed files with 409 additions and 64 deletions

View File

@@ -29,6 +29,7 @@ namespace Back.Controllers
private readonly IAsyncRepository<rptQueue> _rptQueueRepository;
private readonly RemittanceService _remittanceService;
private readonly WarehouseService _warehouseService;
private readonly ReceiptService _receiptService;
public InvoiceController(IConfiguration configuration, servInvoice servInvoice, servUser servUser, AddOrUpdateInvoiceValidation validationInvoice, servTaxPayer servTaxPayer, servReport servReport, IAsyncRepository<rptQueue> rptQueueRepository, RemittanceService remittanceService, WarehouseService warehouseService)
{
@@ -136,7 +137,7 @@ 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)
if (invoice.PatternID != item.PatternID && invoice.invoice != null)
{
return BadRequest(new List<string> { "این صورتحساب دارای مرجع می باشد"+'\n'+
"امکان تغییر الگو امکان پذیر نیست"});
@@ -145,11 +146,11 @@ namespace Back.Controllers
if (invoice.PatternID != item.PatternID || invoice.CustomerID != item.CustomerID)
{
//----Check TaxPayer
if (CheckTaxPayer)
return BadRequest(new List<string> { "این صورتحساب به سازمان ارسال شده"+'\n'+
"برای تغییر ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"});
else if (invoice.invoiceType == InvoiceType.BackFrmSale )
else if (invoice.invoiceType == InvoiceType.BackFrmSale)
{
return BadRequest(new List<string>
{ "صورتحساب در وضعیت برگشت از فروش امکان تغییر مشتری یا الگو را ندارد"+'\n'+
@@ -170,10 +171,10 @@ namespace Back.Controllers
}
else if (invoice.InvoicIssueDate != item.InvoicIssueDate || invoice.InvoiceDate != item.InvoiceDate)
{
if(CheckTaxPayer)
return BadRequest(new List<string> { "این صورتحساب به سازمان ارسال شده"+'\n'+
if (CheckTaxPayer)
return BadRequest(new List<string> { "این صورتحساب به سازمان ارسال شده"+'\n'+
"امکان تغییر تاریخ را ندارد"});
else if(invoice.BillReference.HasValue)
else if (invoice.BillReference.HasValue)
{
if (invoice.InvoicIssueDate != item.InvoicIssueDate && Convert.ToInt32(invoice.invoice.InvoicIssueDate) > Convert.ToInt32(item.InvoicIssueDate))
{
@@ -268,9 +269,27 @@ namespace Back.Controllers
switch (invoiceType)
{
//ابطال
case 3:
return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation));
foreach (var item in Invoice.invoiceDetails)
{
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
{
await _receiptService.ADD(new Shared.DTOs.Warehouse.ReceiptDto()
{
CODID = item.CODID,
Count = item.am.GetValueOrDefault(),
Date = DateTime.Now.ConvertMiladiToShamsi(),
ForSale = true,
InvoiceID = item.InvoiceID,
Type = TypeReceipt.Shopping,
info = $"ابطال شدن صورتحساب {item.InvoiceID}",
}, user.RolUsers.First().CompanyID, true);
}
}
return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation));
//اصلاح
case 2:
await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Repair, false);
var result = await _servInvoice.AddInvoice(new Invoice()
@@ -322,22 +341,30 @@ namespace Back.Controllers
pspd = s.pspd,
cui = s.cui,
}).ToList(),
payments=Invoice.payments.Select(s=>new InvoicePayment()
payments = Invoice.payments.Select(s => new InvoicePayment()
{
acn=s.acn,
iinn=s.iinn,
PaymentDateTime=s.PaymentDateTime,
pcn=s.pcn,
pid=s.pid,
pmt=s.pmt,
pv=s.pv,
trmn=s.trmn,
trn=s.trn,
acn = s.acn,
iinn = s.iinn,
PaymentDateTime = s.PaymentDateTime,
pcn = s.pcn,
pid = s.pid,
pmt = s.pmt,
pv = s.pv,
trmn = s.trmn,
trn = s.trn,
}).ToList()
}, false);
if (result > 0)
{
foreach (var item in Invoice.invoiceDetails)
{
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
await _remittanceService.ChangeRemittance(Invoice.ID, item.CODID, result);
}
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result));
}
break;
//برگشت
case 4:
await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.BackFrmSale, false);
var result1 = await _servInvoice.AddInvoice(new Invoice()
@@ -403,7 +430,14 @@ namespace Back.Controllers
}).ToList()
}, false);
if (result1 > 0)
{
foreach (var item in Invoice.invoiceDetails)
{
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
await _remittanceService.ChangeRemittance(Invoice.ID, item.CODID, result1);
}
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result1));
}
break;
default:
@@ -415,6 +449,23 @@ namespace Back.Controllers
switch (invoiceType)
{
case 3:
foreach (var item in Invoice.invoiceDetails)
{
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
{
await _receiptService.ADD(new Shared.DTOs.Warehouse.ReceiptDto()
{
CODID = item.CODID,
Count = item.am.GetValueOrDefault(),
Date = DateTime.Now.ConvertMiladiToShamsi(),
ForSale = true,
InvoiceID = item.InvoiceID,
Type = TypeReceipt.Shopping,
info = $"ابطال شدن صورتحساب {item.InvoiceID}",
}, user.RolUsers.First().CompanyID, true);
}
}
return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation));
case 4:
@@ -482,7 +533,14 @@ namespace Back.Controllers
}).ToList()
}, false);
if (result2 > 0)
{
foreach (var item in Invoice.invoiceDetails)
{
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
await _remittanceService.ChangeRemittance(Invoice.ID, item.CODID, result2);
}
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result2));
}
break;
default:
@@ -495,6 +553,23 @@ namespace Back.Controllers
switch (invoiceType)
{
case 3:
foreach (var item in Invoice.invoiceDetails)
{
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
{
await _receiptService.ADD(new Shared.DTOs.Warehouse.ReceiptDto()
{
CODID = item.CODID,
Count = item.am.GetValueOrDefault(),
Date = DateTime.Now.ConvertMiladiToShamsi(),
ForSale = true,
InvoiceID = item.InvoiceID,
Type = TypeReceipt.Shopping,
info = $"ابطال شدن صورتحساب {item.InvoiceID}",
}, user.RolUsers.First().CompanyID, true);
}
}
return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation));
default:
return BadRequest(new List<string> { $"تغییر وضعیت از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()} امکان پذیر نیست" });
@@ -547,7 +622,7 @@ namespace Back.Controllers
scc = Invoice.scc,
scln = Invoice.scln,
seventeentax = Invoice.seventeentax,
tinc = Invoice.tinc,
tinc = Invoice.tinc,
invoiceDetails = Invoice.invoiceDetails.Select(s => new InvoiceItem
{
CODID = s.CODID,
@@ -566,11 +641,11 @@ namespace Back.Controllers
olam = s.olam,
olr = s.olr,
olt = s.olt,
spro=s.spro,
spro = s.spro,
sscv = s.sscv,
ssrv = s.ssrv,
pspd= s.pspd,
cui= s.cui,
pspd = s.pspd,
cui = s.cui,
}).ToList(),
payments = Invoice.payments.Select(s => new InvoicePayment()
{
@@ -610,9 +685,9 @@ namespace Back.Controllers
if (!await _servInvoice.ExistInvoiceByInvoiceID(CompanyID.Value, InvoiceID))
return NotFound();
var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID,InvoiceID);
var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
string base64= await _servReport.CreateImage(result, user?.RolUsers.First().Company.Logo==null ?"":Convert.ToBase64String(user?.RolUsers.First().Company.Logo), user?.RolUsers.First().Company.Name);
string base64 = await _servReport.CreateImage(result, user?.RolUsers.First().Company.Logo == null ? "" : Convert.ToBase64String(user?.RolUsers.First().Company.Logo), user?.RolUsers.First().Company.Name);
return Ok(base64);
}
[HttpPost("IssuingRemittance/{InvoiceID}")]
@@ -636,17 +711,21 @@ namespace Back.Controllers
{
List<string> errors = new List<string>();
var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
if (result.invoiceType == InvoiceType.Bidding || result.invoiceType == InvoiceType.Cancellation)
{
return BadRequest(new List<string>() { $"در وضعیت {result.invoiceType.GetEnumDisplayName()} امکان صدور حواله ممکن نیست" });
}
//check
foreach (var item in result.items
.GroupBy(i => i.CODID).Select(g => new { CODID = g.Key,TotalAm = g.Sum(i => i.am) }))
.GroupBy(i => i.CODID).Select(g => new { CODID = g.Key, TotalAm = g.Sum(i => i.am) }))
{
var Inventory =await _warehouseService.Inventory(CompanyID.Value, item.CODID);
if (Inventory - item.TotalAm <= 0 )
var Inventory = await _warehouseService.Inventory(CompanyID.Value, item.CODID);
if (Inventory - item.TotalAm <= 0)
{
errors.Add($"موجودی کالا {item.CODID} کمتر از درخواست شماست");
}
}
if (errors.Count==0)
if (errors.Count == 0)
{
//save
await _remittanceService.AddRange(result.items.Select(s => new Data.Models.Warehouse.Remittance()
@@ -665,13 +744,31 @@ namespace Back.Controllers
{
return BadRequest(errors);
}
}
}
[HttpGet("HasaRemittance/{InvoiceID}")]
public async Task<ActionResult> HasaRemittance(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));
var CompanyID = user?.RolUsers.First().CompanyID;
if (!await _servInvoice.ExistInvoiceByInvoiceID(CompanyID.Value, InvoiceID))
return NotFound();
if (await _remittanceService.HasaRemittance(InvoiceID))
return NotFound();
return Ok();
}
}
}