This commit is contained in:
mmrbnjd
2024-06-14 22:37:22 +03:30
parent 39c9de8f4c
commit 376da0e7d0
10 changed files with 3815 additions and 13 deletions

View File

@@ -1,28 +1,172 @@
<PageTitle>صورتحساب</PageTitle>
@using Front.Services
@using Shared.DTOs
@using Stimulsoft.Base
@using Stimulsoft.Report
@using Stimulsoft.Report.Blazor
@inject Fixedvalues fv;
@inject HttpClientController hc;
@layout EmptyLayout
@page "/InvoiceReport/{InvoiceID:int}"
<StiBlazorViewer Report="@Report" />
@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" };
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();
//Create empty report object
this.Report = new StiReport();
//Load report template
var reportBytes = await hc._hc.GetByteArrayAsync("Invoice/GetReport");
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;
}
}