FullInvoiceItem
This commit is contained in:
@@ -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));
|
||||||
|
@@ -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;
|
||||||
} }
|
} }
|
||||||
|
@@ -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()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -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 />
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user