ExternalAccessCode
This commit is contained in:
@@ -1,186 +1,82 @@
|
||||
<PageTitle>صورتحساب</PageTitle>
|
||||
@* @using Front.Services
|
||||
@using Shared.DTOs
|
||||
@using Stimulsoft.Base
|
||||
@using Stimulsoft.Report
|
||||
@using Stimulsoft.Report.Blazor
|
||||
@inject Fixedvalues fv;
|
||||
<PageTitle>دریافت صورتحساب</PageTitle>
|
||||
@inject IJSRuntime JS
|
||||
@inject HttpClientController hc;
|
||||
@layout EmptyLayout *@
|
||||
@page "/InvoiceReport/{InvoiceID:int}"
|
||||
@* <StiBlazorViewer Report="@Report" /> *@
|
||||
<Preload LoadingText="در حال بارگذاری..." />
|
||||
<Toasts class="p-3" Messages="messages" Placement="ToastsPlacement.MiddleCenter" />
|
||||
@page "/InvoiceReport/{ExternalAccessCode:int}"
|
||||
@using Front.Services
|
||||
|
||||
@code {
|
||||
// public CompanyDTO? company { get; set; }
|
||||
// private StiReport Report;
|
||||
// [Parameter] public int InvoiceID { get; set; }
|
||||
// private int[] NoArray = default;
|
||||
// private int[] ItemArray = new int[] { 1011, 1012 };
|
||||
// private string[] ItemNArray = new string[] { "کالا 1", "کالا 2" };
|
||||
// private int[] amArray = new int[] { 1, 2 };
|
||||
// private string[] UnitNArray = new string[] { "1011", "1012" };
|
||||
// private string[] feeArray = new string[] { "کالا 1", "کالا 2" };
|
||||
// private string[] prdisArray = new string[] { "", "" };
|
||||
// private string[] disArray = new string[] { "1011", "1012" };
|
||||
// private string[] adisArray = new string[] { "کالا 1", "کالا 2" };
|
||||
// private string[] vamArray = new string[] { " 1, 2" };
|
||||
// private string[] tsstamArray = new string[] { "1011", "1012" };
|
||||
// private string[] vraArray = new string[] { "کالا 1", "کالا 2" };
|
||||
[Inject] protected PreloadService PreloadService { get; set; } = default!;
|
||||
List<ToastMessage> messages = new List<ToastMessage>();
|
||||
[Parameter] public int ExternalAccessCode { get; set; }
|
||||
protected async override Task OnParametersSetAsync()
|
||||
{
|
||||
if (ExternalAccessCode == null || ExternalAccessCode <= 0)
|
||||
ShowReport();
|
||||
await base.OnParametersSetAsync();
|
||||
}
|
||||
|
||||
|
||||
// protected async override Task OnParametersSetAsync()
|
||||
// {
|
||||
// if (fv.invoice==null)
|
||||
// {
|
||||
// hc._nav.NavigateTo($"InvoiceDetails/{InvoiceID}");
|
||||
// }
|
||||
// string CustomerName = "";
|
||||
// string CustomerEconomicCode = "";
|
||||
// string CustomerPhone = "";
|
||||
// string CompanyName = "";
|
||||
// string CompanyEconomicCode = "";
|
||||
// string CompanyPhone = "";
|
||||
// var cus =await GetCus();
|
||||
// if (cus!=null)
|
||||
// {
|
||||
// CustomerName = cus?.FullName;
|
||||
// CustomerEconomicCode = cus?.EconomicCode;
|
||||
// CustomerPhone = cus?.Phone;
|
||||
// }
|
||||
// var company =await GetCompany();
|
||||
// if (company != null)
|
||||
// {
|
||||
// CompanyName = company?.Name;
|
||||
// CompanyEconomicCode = company?.EconomicCode;
|
||||
// CompanyPhone = company?.Phone;
|
||||
// }
|
||||
// //datasource
|
||||
// NoArray = Enumerable
|
||||
// .Repeat(1, (int)((fv.invoice.items.Count() - 1) / 1) + 1)
|
||||
// .Select((tr, ti) => Convert.ToInt32(tr + (1 * ti)))
|
||||
// .ToArray();
|
||||
// ItemArray = fv.invoice.items.Select(s => s.CODID).ToArray();
|
||||
// ItemNArray = fv.invoice.items.Select(s => s.sstt).ToArray();
|
||||
// amArray = fv.invoice.items.Select(s => Convert.ToInt32(s.am)).ToArray();
|
||||
// UnitNArray= fv.invoice.items.Select(s => s.mu).ToArray();
|
||||
// feeArray = fv.invoice.items.Select(s => s.fee.ToString("N0")).ToArray();
|
||||
// prdisArray = fv.invoice.items.Select(s => s.prdis?.ToString("N0")).ToArray();
|
||||
// disArray = fv.invoice.items.Select(s => s.dis?.ToString("N0")).ToArray();
|
||||
// adisArray = fv.invoice.items.Select(s => s.adis?.ToString("N0")).ToArray();
|
||||
// vamArray = fv.invoice.items.Select(s => s.vam?.ToString("N0")).ToArray();
|
||||
// tsstamArray = fv.invoice.items.Select(s => s.tsstam?.ToString("N0")).ToArray();
|
||||
// vraArray = fv.invoice.items.Select(s => s.vra?.ToString("N0")).ToArray();
|
||||
|
||||
|
||||
// // //How to activate
|
||||
// // Stimulsoft.Base.StiLicense.Key =
|
||||
// // "6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHn0s4gy0Fr5YoUZ9V00Y0igCSFQzwEqYBh/N77k" +
|
||||
// // "4f0fWXTHW5rqeBNLkaurJDenJ9o97TyqHs9HfvINK18Uwzsc/bG01Rq+x3H3Rf+g7AY92gvWmp7VA2Ux" +
|
||||
// // "a30Q97f61siWz2dE5kdBVcCnSFzC6awE74JzDcJMj8OuxplqB1CYcpoPcOjKy1PiATlC3UsBaLEXsok1" +
|
||||
// // "xxtRMQ283r282tkh8XQitsxtTczAJBxijuJNfziYhci2jResWXK51ygOOEbVAxmpflujkJ8oEVHkOA/C" +
|
||||
// // "jX6bGx05pNZ6oSIu9H8deF94MyqIwcdeirCe60GbIQByQtLimfxbIZnO35X3fs/94av0ODfELqrQEpLr" +
|
||||
// // "pU6FNeHttvlMc5UVrT4K+8lPbqR8Hq0PFWmFrbVIYSi7tAVFMMe2D1C59NWyLu3AkrD3No7YhLVh7LV0" +
|
||||
// // "Tttr/8FrcZ8xirBPcMZCIGrRIesrHxOsZH2V8t/t0GXCnLLAWX+TNvdNXkB8cF2y9ZXf1enI064yE5dw" +
|
||||
// // "Ms2fQ0yOUG/xornE";
|
||||
// //var licenseStream = await Http.GetStreamAsync("Secret/license.key");
|
||||
// //Stimulsoft.Base.StiLicense.LoadFromStream(licenseStream);
|
||||
|
||||
// //Create empty report object
|
||||
// this.Report = new StiReport();
|
||||
|
||||
// //Load report template
|
||||
// var reportBytes = await hc._hc.GetByteArrayAsync($"Invoice/GetReport/{InvoiceID}");
|
||||
|
||||
|
||||
// //Set value
|
||||
// Report["InvoiceID"] = fv.invoice?.ID;
|
||||
// Report["invoicedate"] = fv.invoice?.InvoiceDate;
|
||||
// Report["CusName"] = CustomerName;
|
||||
// Report["CusEconomicCode"] = CustomerEconomicCode;
|
||||
// Report["CusPhone"] = CustomerPhone;
|
||||
// Report["CompanyName"] = CompanyName;
|
||||
// Report["CompanyEconomicCode"] = CompanyEconomicCode;
|
||||
// Report["CompanyPhone"] = CompanyPhone;
|
||||
|
||||
// // var rspCustomer = await hc.Get($"Customer/GetCustomer/{fv.invoice?.CustomerID}");
|
||||
// // if (rspCustomer.IsSuccessStatusCode)
|
||||
// // Cus = await rspCustomer.Content.ReadFromJsonAsync<RCustomer>();
|
||||
|
||||
// // var rspCompany = await hc.Get($"Company/GetCompany");
|
||||
// // if (rspCompany.IsSuccessStatusCode)
|
||||
// // company = await rspCompany.Content.ReadFromJsonAsync<CompanyDTO>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// // Report["cusname"] = CustomerName;
|
||||
|
||||
|
||||
|
||||
// this.Report.Load(reportBytes);
|
||||
|
||||
// //Create User Data
|
||||
// var stiUserData1 = new Stimulsoft.Report.Dictionary.StiUserData();
|
||||
// stiUserData1.Columns.AddRange(new Stimulsoft.Report.Dictionary.StiDataColumn[] {
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("No", "No", "No", typeof(int), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("Item", "Item", "Item", typeof(int), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("ItemN", "ItemN", "ItemN", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("am", "am", "am", typeof(int), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("UnitN", "UnitN", "UnitN", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("fee", "fee", "fee", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("prdis", "prdis", "prdis", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("dis", "dis", "dis", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("adis", "adis", "adis", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("vam", "vam", "vam", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("tsstam", "tsstam", "tsstam", typeof(string), null),
|
||||
// new Stimulsoft.Report.Dictionary.StiDataColumn("vra", "vra", "vra", typeof(string), null)
|
||||
|
||||
// });
|
||||
// stiUserData1.Count = fv.invoice.items.Count();
|
||||
// stiUserData1.GetData += new Stimulsoft.Report.Dictionary.StiUserGetDataEventHandler(stiUserData1_GetData);
|
||||
|
||||
// //Register new data in the report template
|
||||
// this.Report.RegData("Items", stiUserData1);
|
||||
|
||||
|
||||
// await base.OnParametersSetAsync();
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// private void stiUserData1_GetData(object sender, Stimulsoft.Report.Dictionary.StiUserGetDataEventArgs e)
|
||||
// {
|
||||
// if (e.ColumnName == "No") e.Data = NoArray[e.Position];
|
||||
// if (e.ColumnName == "Item") e.Data = ItemArray[e.Position];
|
||||
// if (e.ColumnName == "ItemN") e.Data = ItemNArray[e.Position];
|
||||
// if (e.ColumnName == "am") e.Data = amArray[e.Position];
|
||||
// if (e.ColumnName == "UnitN") e.Data = UnitNArray[e.Position];
|
||||
// if (e.ColumnName == "fee") e.Data = feeArray[e.Position];
|
||||
// if (e.ColumnName == "prdis") e.Data = prdisArray[e.Position];
|
||||
// if (e.ColumnName == "dis") e.Data = disArray[e.Position];
|
||||
// if (e.ColumnName == "adis") e.Data = adisArray[e.Position];
|
||||
// if (e.ColumnName == "vam") e.Data = vamArray[e.Position];
|
||||
// if (e.ColumnName == "tsstam") e.Data = tsstamArray[e.Position];
|
||||
// if (e.ColumnName == "vra") e.Data = vraArray[e.Position];
|
||||
// }
|
||||
|
||||
}
|
||||
@functions{
|
||||
// private async Task<RCustomer?> GetCus()
|
||||
// {
|
||||
// var rspCustomer = await hc.Get($"Customer/GetCustomer/{fv.invoice?.CustomerID}");
|
||||
// if (rspCustomer.IsSuccessStatusCode)
|
||||
// return await rspCustomer.Content.ReadFromJsonAsync<RCustomer>();
|
||||
// else return null;
|
||||
// }
|
||||
// private async Task<CompanyDTO?> GetCompany()
|
||||
// {
|
||||
// var rspCompany = await hc.Get($"Company/GetCompany");
|
||||
// if (rspCompany.IsSuccessStatusCode)
|
||||
// return await rspCompany.Content.ReadFromJsonAsync<CompanyDTO>();
|
||||
// else return null;
|
||||
// }
|
||||
@functions {
|
||||
private void ShowMessage(ToastType toastType, string msg) => messages.Add(CreateToastMessage(toastType, msg));
|
||||
|
||||
private ToastMessage CreateToastMessage(ToastType toastType, string msg)
|
||||
=> new ToastMessage
|
||||
{
|
||||
Type = toastType,
|
||||
Message = msg,
|
||||
};
|
||||
private async Task ShowReport()
|
||||
{
|
||||
PreloadService.Show(SpinnerColor.Dark);
|
||||
var rsp = await hc.Get($"Invoice/GetReportByExternalAccessCode/{ExternalAccessCode}");
|
||||
if (rsp.IsSuccessStatusCode)
|
||||
{
|
||||
var str = await rsp.Content.ReadAsStringAsync();
|
||||
if (string.IsNullOrEmpty(str))
|
||||
ShowMessage(ToastType.Warning, "مشکلی در ساخت فایل رخ داده لطفا مجدد تلاش کنید");
|
||||
else
|
||||
await DownloadFileFromStream(str, $"{ExternalAccessCode}.pdf");
|
||||
}
|
||||
else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound)
|
||||
ShowMessage(ToastType.Warning, "فاکتوری یافت نشد");
|
||||
|
||||
else ShowMessage(ToastType.Warning, "خطایی در چاپ فاکتور");
|
||||
|
||||
PreloadService.Hide();
|
||||
}
|
||||
//for download
|
||||
private Stream GetFileStream(byte[] bytes)
|
||||
{
|
||||
var fileStream = new MemoryStream(bytes);
|
||||
|
||||
return fileStream;
|
||||
}
|
||||
private async Task DownloadFileFromStream(string Base64, string FileName)
|
||||
{
|
||||
byte[] bytes = System.Convert.FromBase64String(Base64);
|
||||
|
||||
var fileStream = GetFileStream(bytes);
|
||||
// var fileName = "log.bin";
|
||||
|
||||
using var streamRef = new DotNetStreamReference(stream: fileStream);
|
||||
|
||||
await JS.InvokeVoidAsync("downloadFileFromStream", FileName, streamRef);
|
||||
}
|
||||
|
||||
}
|
||||
<script>
|
||||
window.downloadFileFromStream = async (fileName, contentStreamReference) => {
|
||||
const arrayBuffer = await contentStreamReference.arrayBuffer();
|
||||
const blob = new Blob([arrayBuffer]);
|
||||
const url = URL.createObjectURL(blob);
|
||||
const anchorElement = document.createElement('a');
|
||||
anchorElement.href = url;
|
||||
anchorElement.download = fileName ?? '';
|
||||
anchorElement.click();
|
||||
anchorElement.remove();
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
</script>
|
@@ -14,6 +14,14 @@
|
||||
<Toasts AutoHide="true" Delay="6000" class="p-3" Messages="messages" Placement="ToastsPlacement.TopRight" />
|
||||
<PageTitle>جزئیات صورتحساب</PageTitle>
|
||||
|
||||
<Modal @ref="Codemodal" title="لینک برای دانلود" IsVerticallyCentered="true">
|
||||
<BodyTemplate>
|
||||
@ExUrl
|
||||
</BodyTemplate>
|
||||
<FooterTemplate>
|
||||
<Button Color="ButtonColor.Secondary" @onclick="OnHideModalClick">Close</Button>
|
||||
</FooterTemplate>
|
||||
</Modal>
|
||||
|
||||
@if (invoice.IsDeleted)
|
||||
{
|
||||
@@ -334,7 +342,9 @@
|
||||
<Button class="mt-3" Color="ButtonColor.Primary" @onclick="ShowReport" Type="ButtonType.Button">
|
||||
pdf
|
||||
</Button>
|
||||
|
||||
<Button class="mt-3" Color="ButtonColor.Secondary" @onclick="onClickExternalAccessCode" Type="ButtonType.Button">
|
||||
لینک
|
||||
</Button>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,6 +379,8 @@
|
||||
|
||||
|
||||
@code {
|
||||
private Modal Codemodal = default!;
|
||||
|
||||
public bool SendInvoice { get; set; } = false;
|
||||
List<ToastMessage> messages = new List<ToastMessage>();
|
||||
private ConfirmDialog dialog = default!;
|
||||
@@ -383,7 +395,7 @@
|
||||
public List<ForCustomerSearch>? Cus { get; set; }
|
||||
public List<IdName<int>>? Patterns { get; set; }
|
||||
public InvoiceDTO? invoice { get; set; }
|
||||
|
||||
public string ExUrl { get; set; } = "";
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
fv.invoice = null;
|
||||
@@ -421,6 +433,12 @@
|
||||
}
|
||||
}
|
||||
@functions {
|
||||
|
||||
|
||||
private async Task OnHideModalClick()
|
||||
{
|
||||
await Codemodal.HideAsync();
|
||||
}
|
||||
private void ShowMessage(ToastType toastType, string msg) => messages.Add(CreateToastMessage(toastType, msg));
|
||||
|
||||
private ToastMessage CreateToastMessage(ToastType toastType, string msg)
|
||||
@@ -474,6 +492,31 @@
|
||||
hc._nav.NavigateTo($"TaxPayerInvoiceItem/{InvoiceID}");
|
||||
}
|
||||
}
|
||||
private async Task onClickExternalAccessCode()
|
||||
{
|
||||
|
||||
PreloadService.Show(SpinnerColor.Dark);
|
||||
var rsp = await hc.Put($"Invoice/SetExternalAccessCode/{InvoiceID}");
|
||||
if (rsp.IsSuccessStatusCode)
|
||||
{
|
||||
var str = await rsp.Content.ReadAsStringAsync();
|
||||
if (string.IsNullOrEmpty(str))
|
||||
ShowDangerAlert("مشکلی در ساخت فایل رخ داده لطفا مجدد تلاش کنید");
|
||||
else
|
||||
{
|
||||
ExUrl = "http://195.88.208.142/InvoiceReport/"+ str;
|
||||
await Codemodal.ShowAsync();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
|
||||
ShowDangerAlert(request[0]);
|
||||
}
|
||||
|
||||
PreloadService.Hide();
|
||||
}
|
||||
private async Task ShowReport()
|
||||
{
|
||||
PreloadService.Show(SpinnerColor.Dark);
|
||||
|
Reference in New Issue
Block a user