FullInvoiceItem

This commit is contained in:
mmrbnjd
2024-07-20 17:34:28 +03:30
parent cb8c69d81b
commit bd99459bc2
5 changed files with 158 additions and 125 deletions

View File

@@ -80,24 +80,24 @@ namespace Back.Controllers
if (result == null) if (result == null)
return BadRequest(new List<string> { "صورتحساب یافت نشد" }); return BadRequest(new List<string> { "صورتحساب یافت نشد" });
else //else
{ //{
if (result.invoiceType == InvoiceType.Bidding) // if (result.invoiceType == InvoiceType.Bidding)
return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند آماده ارسال شود" }); // return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند آماده ارسال شود" });
if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result)) // if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result))
return BadRequest(new List<string> { "این صورتحساب قبلا به سازمان ارسال شده" }); // return BadRequest(new List<string> { "این صورتحساب قبلا به سازمان ارسال شده" });
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair) // if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
&& !result.BillReference.HasValue) // && !result.BillReference.HasValue)
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" }); // return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" });
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair) // if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
&& !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice)) // && !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice))
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" }); // return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
} //}
return Ok(await _servTaxPayer.PreparationInvoiceBeforeSending(item, result)); return Ok(await _servTaxPayer.PreparationInvoiceBeforeSending(item, result));

View File

@@ -25,12 +25,12 @@ namespace Back.Data.Models
public string? mu { get { return cODItem != null ? cODItem.CODUnit.UnitTaxID : null; } } public string? mu { get { return cODItem != null ? cODItem.CODUnit.UnitTaxID : null; } }
//میزان ارز //میزان ارز
[MaxLength(18)] [MaxLength(18)]
public decimal? cfee { get { return fee / exr; } } public decimal? cfee { get { return exr==null || exr==0 ? null : fee / exr; } }
//مبلغ مالیات بر ارزش افزوده //مبلغ مالیات بر ارزش افزوده
[MaxLength(18)] [MaxLength(18)]
public decimal? vam { get public decimal? vam { get
{ {
return invoice?.pattern?.inp == 9 ? fee*vra/100 : return vra==0 ? 0 : invoice?.pattern?.inp == 9 ? fee*vra/100 :
invoice?.pattern?.inp == 13 ? ((tcpbs+9)/100)+((prdis*vra)/100) invoice?.pattern?.inp == 13 ? ((tcpbs+9)/100)+((prdis*vra)/100)
: vra * adis / 100; : vra * adis / 100;
} } } }

View File

@@ -33,81 +33,79 @@ namespace Back.Services
} }
#endregion #endregion
//----------------------- //-----------------------
var item= await invok
return await invok
.Include(inc => inc.invoiceDetails) .Include(inc => inc.invoiceDetails)
.ThenInclude(inc => inc.cODItem) .ThenInclude(inc => inc.cODItem)
.ThenInclude(inc => inc.CODUnit) .ThenInclude(inc => inc.CODUnit)
.Include(inc => inc.Customer)
.Include(inc => inc.sentTax) .Include(inc => inc.sentTax)
//.Include(inc => inc.payments) //.Include(inc => inc.payments)
.Include(inc => inc.pattern) .Include(inc => inc.pattern)
.ThenInclude(inc => inc.BillType) .ThenInclude(inc => inc.BillType).FirstOrDefaultAsync();
.Select(s => new InvoiceDTO() return new InvoiceDTO()
{ {
IsDeleted = s.IsDeleted,
PatternID = s.PatternID,
PatternTitle = s.pattern.Title,
CustomerID = s.CustomerID,
CustomerName = s.Customer.FullName,
ID = s.ID,
InvoiceDate = s.InvoiceDate.ShamciToFormatShamci(),
invoiceTypeTitle = s.invoiceType.GetEnumDisplayName(),
invoiceType = s.invoiceType,
Title = s.Title,
InvoicIssueDate = s.InvoicIssueDate.ShamciToFormatShamci(),
BillReference = s.BillReference,
tbill = s.tbill,
Des = s.Des,
PreparedtoSendtoTax = s.PreparedtoSendtoTax,
tdis = s.tdis,
//
tvam = s.tvam,
Udate = s.Udate.ShamciToFormatShamci(),
InvoiceSendTaxs = s.sentTax.OrderBy(o => o.ID).Select(s => new SentTaxDto() IsDeleted = item.IsDeleted,
{ PatternID = item.PatternID,
Date = s.Date.ShamciToFormatShamci(), PatternTitle = item.pattern.Title,
Time = s.Time, CustomerID = item.CustomerID,
ID = s.ID, CustomerName = item.Customer.FullName,
InvoiceID = s.InvoiceID, ID = item.ID,
SentStatus = s.SentStatus, InvoiceDate = item.InvoiceDate.ShamciToFormatShamci(),
InvoiceType = s.InvoiceType, invoiceTypeTitle = item.invoiceType.GetEnumDisplayName(),
msgInvoiceType = s.InvoiceType.GetEnumDisplayName(), invoiceType = item.invoiceType,
msgSentStatus = s.SentStatus.GetEnumDisplayName() Title = item.Title,
}).ToList(), InvoicIssueDate = item.InvoicIssueDate.ShamciToFormatShamci(),
//items = s.invoiceDetails.OrderBy(o => o.ID).Select(x => new InvoiceItemDTO() BillReference = item.BillReference,
//{ tbill = item.tbill,
// ID = x.ID, Des = item.Des,
// CODID = x.CODID, PreparedtoSendtoTax = item.PreparedtoSendtoTax,
// adis = x.adis, tdis = item.tdis,
// am = x.am.Value, tvam = item.tvam,
// dis = x.dis, Udate = item.Udate.ShamciToFormatShamci(),
// fee = x.fee.Value,
// mu = x.unitTitle, InvoiceSendTaxs = item.sentTax.OrderBy(o => o.ID).Select(s => new SentTaxDto()
// sstt = x.sstt, {
// tsstam = x.tsstam, Date = s.Date.ShamciToFormatShamci(),
// vam = x.vam, Time = s.Time,
// vra = x.vra, ID = s.ID,
// prdis = x.prdis InvoiceID = s.InvoiceID,
//}).ToList(), SentStatus = s.SentStatus,
payments = new List<InvoicePaymentDTO>() InvoiceType = s.InvoiceType,
//s.payments.OrderBy(o => o.ID).Select(x => new InvoicePaymentDTO() msgInvoiceType = s.InvoiceType.GetEnumDisplayName(),
//{ msgSentStatus = s.SentStatus.GetEnumDisplayName()
// ID = x.ID, }).ToList(),
// acn = x.acn, items = item.invoiceDetails.OrderBy(o => o.ID).Select(x => new InvoiceItemDTO()
// iinn = x.acn, {
// pcn = x.acn, ID = x.ID,
// pdt = x.pdt, CODID = x.CODID,
// PaymentDateTime=x.PaymentDateTime, adis = x.adis,
// pid = x.pid, am = x.am.Value,
// pmt = x.pmt, dis = x.dis,
// pv = x.pv, fee = x.fee.Value,
// trmn = x.trmn, mu = x.unitTitle,
// trn = x.acn sstt = x.sstt,
//}).ToList() tsstam = x.tsstam,
}) vam = x.vam,
.FirstOrDefaultAsync(); vra = x.vra,
prdis = x.prdis
}).ToList(),
payments = new List<InvoicePaymentDTO>()
//s.payments.OrderBy(o => o.ID).Select(x => new InvoicePaymentDTO()
//{
// ID = x.ID,
// acn = x.acn,
// iinn = x.acn,
// pcn = x.acn,
// pdt = x.pdt,
// PaymentDateTime=x.PaymentDateTime,
// pid = x.pid,
// pmt = x.pmt,
// pv = x.pv,
// trmn = x.trmn,
// trn = x.acn
//}).ToList()
};
} }

View File

@@ -334,16 +334,17 @@
} }
else else
{ {
<div class="d-flex gap-2">
<Dropdown Color="DropdownColor.Info" Direction="DropdownDirection.Dropend">
<DropdownToggleButton>Dropend</DropdownToggleButton> <Button class="mt-3" Color="ButtonColor.Success" @onclick="OnClickUpdate" Type="ButtonType.Button">
<DropdownMenu> ثبت تغییرات
<DropdownItem Type="ButtonType.Link" @onclick="OnClickUpdate"> ثبت تغییرات</DropdownItem> </Button>
<DropdownItem Type="ButtonType.Link" @onclick="ShowConfirmationDeleteAsync">حذف</DropdownItem> <Button class="mt-3" Color="ButtonColor.Danger" @onclick="ShowConfirmationDeleteAsync" Type="ButtonType.Button">
<DropdownItem Type="ButtonType.Link" @onclick="showFullInvoiceItem">اطلاعات تکمیلی صورتحساب</DropdownItem> حذف
</DropdownMenu> </Button>
</Dropdown> <Button class="mt-3" Color="ButtonColor.Primary" @onclick="showFullInvoiceItem" Type="ButtonType.Button">
</div> اطلاعات تکمیلی
</Button>
@* <Button class="mt-3" Color="ButtonColor.Primary" @onclick="ShowReport" Type="ButtonType.Button"> @* <Button class="mt-3" Color="ButtonColor.Primary" @onclick="ShowReport" Type="ButtonType.Button">
pdf pdf
</Button> </Button>
@@ -354,7 +355,7 @@
} }
</div> </div>
@if (invoice.invoiceType != InvoiceType.Bidding && SendInvoice) @if (!invoice.IsDeleted && invoice.invoiceType != InvoiceType.Bidding && SendInvoice)
{ {
<div class="form-group col-md-2"> <div class="form-group col-md-2">
<br /> <br />

View File

@@ -17,22 +17,36 @@
</Alert> </Alert>
</div> </div>
<h4 class="fw-bold py-3 mb-4"> @if (FullInvoice)
<span class="text-muted fw-light">سرویس ها / صورتحساب /</span> آماده سازی قبل از ارسال به سامانه مودیان {
</h4> <h4 class="fw-bold py-3 mb-4">
<div class="row"> <span class="text-muted fw-light">سرویس ها / صورتحساب /</span> اطلاعات تکمیلی صورتحساب
<div class="col-md-12"> </h4>
<div class="card mb-4"> }
<h4 style="color:red;" class="card-header">توجه</h4> else
<div class="card-body"> {
<p>1) این یک پیش نمایش کامل از صورتحساب شماست با دقت آنرا بررسی کنید</p> <h4 class="fw-bold py-3 mb-4">
<p>2) یسری از فیلدها قابل دسترس هستند میتوانید در این مرحله اطلاعات تکمیلی بیشتری برای صورتحساب وارد کنید</p> <span class="text-muted fw-light">سرویس ها / صورتحساب /</span> آماده سازی قبل از ارسال به سامانه مودیان
<p>3) فیلد هایی که قابل دسترسی نیستند به صورت خودکار از صورتحساب پر شده اند</p> </h4>
<p>4) فیلد های قرمز را حتما مشخص کنید</p> }
@if(!FullInvoice)
{
<div class="row">
<div class="col-md-12">
<div class="card mb-4">
<h4 style="color:red;" class="card-header">توجه</h4>
<div class="card-body">
<p>1) این یک پیش نمایش کامل از صورتحساب شماست با دقت آنرا بررسی کنید</p>
<p>2) یسری از فیلدها قابل دسترس هستند میتوانید در این مرحله اطلاعات تکمیلی بیشتری برای صورتحساب وارد کنید</p>
<p>3) فیلد هایی که قابل دسترسی نیستند به صورت خودکار از صورتحساب پر شده اند</p>
<p>4) فیلد های قرمز را حتما مشخص کنید</p>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> }
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class="card mb-4"> <div class="card mb-4">
@@ -188,7 +202,15 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class="col-auto"> <div class="col-auto">
<button type="submit" @onclick="Send" class="btn btn-primary">آماده سازی و ارسال</button> @if (FullInvoice)
{
<button type="submit" @onclick="Send" class="btn btn-primary">ثبت تغییرات</button>
}
else
{
<button type="submit" @onclick="Send" class="btn btn-primary">آماده سازی و ارسال</button>
}
</div> </div>
</div> </div>
</div> </div>
@@ -204,6 +226,7 @@
List<ToastMessage> messages = new List<ToastMessage>(); List<ToastMessage> messages = new List<ToastMessage>();
[Inject] protected PreloadService PreloadService { get; set; } = default!; [Inject] protected PreloadService PreloadService { get; set; } = default!;
public _TaxPayer.Atemplatefield? invoice { get; set; } public _TaxPayer.Atemplatefield? invoice { get; set; }
public bool FullInvoice { get; set; } = true;
// alert // alert
AlertColor alertColor = AlertColor.Primary; AlertColor alertColor = AlertColor.Primary;
IconName alertIconName = IconName.CheckCircleFill; IconName alertIconName = IconName.CheckCircleFill;
@@ -216,7 +239,9 @@
await LoadData(); await LoadData();
PreloadService.Hide(); PreloadService.Hide();
var res= hc._nav.Uri.ToString(); if (hc._nav.Uri.ToString().Contains("FullInvoiceItem"))
FullInvoice = true;
else FullInvoice = false;
await base.OnParametersSetAsync(); await base.OnParametersSetAsync();
} }
@@ -232,7 +257,7 @@
}; };
public async Task Send() public async Task Send()
{ {
if (!await CheckAuth()) if (!FullInvoice && !await CheckAuth())
{ {
ShowMessage(ToastType.Danger, "خطا در احراز هویت سازمان مالیاتی"); ShowMessage(ToastType.Danger, "خطا در احراز هویت سازمان مالیاتی");
} }
@@ -244,31 +269,40 @@
var response = await rsp.Content.ReadFromJsonAsync<bool>(); var response = await rsp.Content.ReadFromJsonAsync<bool>();
if (response) if (response)
{ {
ShowMessage(ToastType.Success, "آماده سازی با موفقیت انجام شد"); if(FullInvoice)
ShowMessage(ToastType.Light, "در حال ارسال صورتحساب"); ShowMessage(ToastType.Success, "تغییرات با موفقیت انجام شد");
rsp = await hc.Get($"TaxPayer/SendInvoice/{InvoiceID}");
if (rsp.IsSuccessStatusCode) if (!FullInvoice)
{ {
response = await rsp.Content.ReadFromJsonAsync<bool>(); ShowMessage(ToastType.Light, "در حال ارسال صورتحساب");
if (response) rsp = await hc.Get($"TaxPayer/SendInvoice/{InvoiceID}");
if (rsp.IsSuccessStatusCode)
{ {
hc._nav.NavigateTo($"TaxPayer/{InvoiceID}"); response = await rsp.Content.ReadFromJsonAsync<bool>();
// ShowMessage(ToastType.Success, "ارسال با موفقیت انجام شد"); if (response)
{
hc._nav.NavigateTo($"TaxPayer/{InvoiceID}");
// ShowMessage(ToastType.Success, "ارسال با موفقیت انجام شد");
}
else
{
ShowMessage(ToastType.Danger, "خطای در ارسال رخ داده");
}
} }
else else
{ {
ShowMessage(ToastType.Danger, "خطای در ارسال رخ داده"); var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
ShowMessage(ToastType.Danger, request[0]);
} }
} }
else
{
var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
ShowMessage(ToastType.Danger, request[0]);
}
} }
else else
{ {
ShowMessage(ToastType.Danger, "خطای در آماده سازی اطلاعات رخ داده"); if (FullInvoice)
ShowMessage(ToastType.Danger, "خطای در ذخیره سازی اطلاعات رخ داده");
else
ShowMessage(ToastType.Danger, "خطای در آماده سازی اطلاعات رخ داده");
} }
} }
else else