diff --git a/Back/Back.csproj b/Back/Back.csproj index fd97cd7..899d7e4 100644 --- a/Back/Back.csproj +++ b/Back/Back.csproj @@ -36,7 +36,7 @@ - ..\..\Dlls\Service.dll + ..\..\..\LocalGit\TaxPayerTools\Service\bin\Debug\Service.dll diff --git a/Back/Controllers/InvoiceController.cs b/Back/Controllers/InvoiceController.cs index 7d8d066..fb52b59 100644 --- a/Back/Controllers/InvoiceController.cs +++ b/Back/Controllers/InvoiceController.cs @@ -40,14 +40,14 @@ namespace Back.Controllers } [HttpGet("Get/{ID}/{loaddelete}")] - public async Task> GetAll(int ID,bool loaddelete) + public async Task> GetAll(int ID, bool loaddelete) { var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); var UserID = claim.Value; var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); - var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, ID,!loaddelete); + var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, ID, !loaddelete); - return result==null ? BadRequest() : Ok(result); + return result == null ? BadRequest() : Ok(result); } [HttpPost("Add")] @@ -64,7 +64,7 @@ namespace Back.Controllers // return BadRequest(item); //-----GetUserAndCompany - var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); + var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); var UserID = claim.Value; var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); @@ -97,7 +97,7 @@ namespace Back.Controllers BillReference = null, IsDeleted = false, PatternID = item.PatternID, - setm=1 + setm = 1 })); @@ -182,7 +182,7 @@ namespace Back.Controllers //----Check TaxPayer if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(invoice)) - return BadRequest(new List { "این صورتحساب به سازمان ارسال شده"}); + return BadRequest(new List { "این صورتحساب به سازمان ارسال شده" }); //else if (invoice.invoiceType != InvoiceType.Bidding // && invoice.invoiceType != InvoiceType.Sale) //{ @@ -227,76 +227,76 @@ namespace Back.Controllers { //if (sent) //{ - switch (invoiceType) - { - //case 0: - // return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.CANCEL)); + switch (invoiceType) + { + //case 0: + // return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.CANCEL)); - case 3: - return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation)); + case 3: + return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation)); - case 2: - await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Repair, false); - var result = await _servInvoice.AddInvoice(new Invoice() + case 2: + await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Repair, false); + var result = await _servInvoice.AddInvoice(new Invoice() + { + + Title = Invoice.Title, + Des = Invoice.Des, + invoiceType = InvoiceType.Repair, + CustomerID = Invoice.CustomerID, + CompanyID = Invoice.CompanyID, + InvoicIssueDate = Invoice.InvoicIssueDate.Replace("/", ""), + InvoiceDate = Invoice.InvoicIssueDate.Replace("/", ""), + LastChangeUserID = Convert.ToInt32(UserID), + BillReference = Invoice.ID, + IsDeleted = false, + PatternID = Invoice.PatternID, + setm = Invoice.setm, + invoiceDetails = Invoice.invoiceDetails.Select(s => new InvoiceItem { + CODID = s.CODID, + am = s.am, + fee = s.fee, + dis = s.dis, - Title = Invoice.Title, - Des = Invoice.Des, - invoiceType = InvoiceType.Repair, - CustomerID = Invoice.CustomerID, - CompanyID = Invoice.CompanyID, - InvoicIssueDate = Invoice.InvoicIssueDate.Replace("/", ""), - InvoiceDate = Invoice.InvoicIssueDate.Replace("/", ""), - LastChangeUserID = Convert.ToInt32(UserID), - BillReference = Invoice.ID, - IsDeleted = false, - PatternID = Invoice.PatternID, - setm=Invoice.setm, - invoiceDetails=Invoice.invoiceDetails.Select(s=>new InvoiceItem - { - CODID=s.CODID, - am=s.am, - fee=s.fee, - dis=s.dis, - - }).ToList() - }, false); - if (result > 0) - 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() + }).ToList() + }, false); + if (result > 0) + 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() + { + + Title = Invoice.Title, + Des = Invoice.Des, + invoiceType = InvoiceType.BackFrmSale, + CustomerID = Invoice.CustomerID, + CompanyID = Invoice.CompanyID, + InvoicIssueDate = Invoice.InvoicIssueDate.Replace("/", ""), + InvoiceDate = Invoice.InvoicIssueDate.Replace("/", ""), + LastChangeUserID = Convert.ToInt32(UserID), + BillReference = Invoice.ID, + IsDeleted = false, + PatternID = Invoice.PatternID, + setm = Invoice.setm, + invoiceDetails = Invoice.invoiceDetails.Select(s => new InvoiceItem { + CODID = s.CODID, + am = s.am, + fee = s.fee, + dis = s.dis, - Title = Invoice.Title, - Des = Invoice.Des, - invoiceType = InvoiceType.BackFrmSale, - CustomerID = Invoice.CustomerID, - CompanyID = Invoice.CompanyID, - InvoicIssueDate = Invoice.InvoicIssueDate.Replace("/", ""), - InvoiceDate = Invoice.InvoicIssueDate.Replace("/", ""), - LastChangeUserID = Convert.ToInt32(UserID), - BillReference = Invoice.ID, - IsDeleted = false, - PatternID = Invoice.PatternID, - setm = Invoice.setm, - invoiceDetails = Invoice.invoiceDetails.Select(s => new InvoiceItem - { - CODID = s.CODID, - am = s.am, - fee = s.fee, - dis = s.dis, + }).ToList() + }, false); + if (result1 > 0) + return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result1)); + break; - }).ToList() - }, false); - if (result1 > 0) - return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result1)); - break; - - default: - return BadRequest(new List { $"تغییر وضعیت از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()} امکان پذیر نیست این صورتحساب به سامانه مودیان ارسال شده" }); - } + default: + return BadRequest(new List { $"تغییر وضعیت از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()} امکان پذیر نیست این صورتحساب به سامانه مودیان ارسال شده" }); + } //} //else //{ @@ -344,62 +344,62 @@ namespace Back.Controllers //} //else //{ - switch (invoiceType) - { - case 3: - return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation)); + switch (invoiceType) + { + case 3: + return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation)); - case 4: - await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.BackFrmSale, false); - var result2 = await _servInvoice.AddInvoice(new Invoice() + case 4: + await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.BackFrmSale, false); + var result2 = await _servInvoice.AddInvoice(new Invoice() + { + + Title = Invoice.Title, + Des = Invoice.Des, + invoiceType = InvoiceType.BackFrmSale, + CustomerID = Invoice.CustomerID, + CompanyID = Invoice.CompanyID, + InvoicIssueDate = Invoice.InvoicIssueDate.Replace("/", ""), + InvoiceDate = Invoice.InvoicIssueDate.Replace("/", ""), + LastChangeUserID = Convert.ToInt32(UserID), + BillReference = Invoice.ID, + IsDeleted = false, + PatternID = Invoice.PatternID, + setm = Invoice.setm, + invoiceDetails = Invoice.invoiceDetails.Select(s => new InvoiceItem { + CODID = s.CODID, + am = s.am, + fee = s.fee, + dis = s.dis, - Title = Invoice.Title, - Des = Invoice.Des, - invoiceType = InvoiceType.BackFrmSale, - CustomerID = Invoice.CustomerID, - CompanyID = Invoice.CompanyID, - InvoicIssueDate = Invoice.InvoicIssueDate.Replace("/", ""), - InvoiceDate = Invoice.InvoicIssueDate.Replace("/", ""), - LastChangeUserID = Convert.ToInt32(UserID), - BillReference = Invoice.ID, - IsDeleted = false, - PatternID = Invoice.PatternID, - setm = Invoice.setm, - invoiceDetails =Invoice.invoiceDetails.Select(s => new InvoiceItem - { - CODID = s.CODID, - am = s.am, - fee = s.fee, - dis = s.dis, + }).ToList() + }, false); + if (result2 > 0) + return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result2)); + break; - }).ToList() - }, false); - if (result2 > 0) - return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result2)); - break; + default: + return BadRequest(new List { $"تغییر وضعیت از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()} امکان پذیر نیست این صورتحساب به سامانه مودیان ارسال شده" }); - default: - return BadRequest(new List { $"تغییر وضعیت از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()} امکان پذیر نیست این صورتحساب به سامانه مودیان ارسال شده" }); - - } + } //} } if (Invoice.invoiceType == InvoiceType.BackFrmSale) { - // if (!sent) - // { - switch (invoiceType) - { - //case 0: - // return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.CANCEL)); + // if (!sent) + // { + switch (invoiceType) + { + //case 0: + // return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.CANCEL)); - case 3: - return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation)); - default: - return BadRequest(new List { $"تغییر وضعیت از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()} امکان پذیر نیست" }); - } - // } + case 3: + return Ok(await _servInvoice.ChangeInvoiceType(Invoice, InvoiceType.Cancellation)); + default: + return BadRequest(new List { $"تغییر وضعیت از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()} امکان پذیر نیست" }); + } + // } //else //{ // switch (invoiceType) @@ -450,7 +450,7 @@ namespace Back.Controllers var UserID = claim.Value; var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); - var CompanyID= user?.RolUsers.First().CompanyID; + var CompanyID = user?.RolUsers.First().CompanyID; if (!await _servInvoice.ExistInvoiceByInvoiceID(CompanyID.Value, InvoiceID)) return NotFound(); @@ -463,7 +463,52 @@ namespace Back.Controllers p.StartInfo.FileName = "C:\\CreateReport\\CreateReport.exe"; p.StartInfo.Arguments = $"{CompanyID} {InvoiceID}"; p.Start(); - output = p.StandardOutput.ReadToEnd(); + output = p.StandardOutput.ReadToEnd(); + p.WaitForExit(); + return Ok(output); + } + [HttpPut("SetExternalAccessCode/{InvoiceID}")] + public async Task> SetExternalAccessCode(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 code = Convert.ToInt32(DateTime.Now.ToString($"yMMdd{InvoiceID}Hmmss{user.RolUsers.First().CompanyID}")); + Invoice? Invoice = await _servInvoice.GetInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceID); + if (Invoice == null) return NotFound(); + if (Invoice.ExternalAccessCode.HasValue) + return Ok(Invoice.ExternalAccessCode.Value.ToString()); + + Invoice.ExternalAccessCode = code; + if (await _servInvoice.UpdateInvoice(Invoice)) + return Ok(code.ToString()); + + + return BadRequest(new List { "خطایی سرور" }); + + } + [HttpGet("GetReportByExternalAccessCode/{xternalAccessCode}")] + [AllowAnonymous] + public async Task> GetReportByExternalAccessCode(int ExternalAccessCode) + { + if (ExternalAccessCode == null || ExternalAccessCode <= 0) + return NotFound(); + + string output = ""; + var invoice = await _servInvoice.GetInvoiceByExternalAccessCode(ExternalAccessCode); + if (invoice == null) + return NotFound(); + + // Start the child process. + Process p = new Process(); + // Redirect the output stream of the child process. + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.StartInfo.FileName = "C:\\CreateReport\\CreateReport.exe"; + p.StartInfo.Arguments = $"{invoice.CompanyID} {invoice.ID}"; + p.Start(); + output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); return Ok(output); } diff --git a/Back/Controllers/TaxPayerController.cs b/Back/Controllers/TaxPayerController.cs index 03c23fa..457b131 100644 --- a/Back/Controllers/TaxPayerController.cs +++ b/Back/Controllers/TaxPayerController.cs @@ -184,109 +184,111 @@ namespace Back.Controllers Scln = result.scln ?? null, Bid = result.bid ?? null, }; - if (header.Inty == 1 && header.Inp == 2) - header = new InvoiceHeaderDto - { - //نوع شخص خریدار - Tob = result.tob, - // صورتحساب نوع * - Inty = result.inty ?? 1, - //الگوی صورتحساب * - Inp = result.inp ?? 1, - //موضوع صورتحساب * - Ins = result.ins ?? 1, - //شماره منحصر به فرد مالیاتی - Taxid = _actionTaxPayer.GenerateTaxid(result.inno, result.InvoiceDate.Replace("/", "").Trim()), - //سریال صورت حساب - Inno = result.inno ?? null, - //شماره اقتصادی فروشنده به جاش شناسه ملی داده شد - Tins = result.tins ?? null, - //مجموع مبلغ قبل از کسر تخفیف - Tprdis = result.tprdis ?? null, - // مجموع مبلغ پس از کسر تخفیف - Tadis = result.tadis ?? null, - //مجموع مالیات بر ارزش افزوده - Tvam = result.tvam ?? null, - // مجموع سایر مالیات، عوارض و وجوه قانونی - Todam = result.todam ?? null, - //صورتحساب مجموع - Tbill = result.tbill ?? null, - // تسویه روش - Setm = result.setm ?? null, - //نقدی پرداختی مبلغ - Cap = result.cap ?? null, - //پرداختی نسیه - Insp = result.insp ?? null, - //مجموع تخفیفات - Tdis = result.tdis ?? null, - //شماره منحصر به فرد مالیاتی صورتحساب مرجع - Irtaxid = result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair ? result.invoice.taxid : null, - //شماره اقتصادی خریدار - Tinb = result.tinb ?? null, - //زمان صدور - Indatim = result.indatim ?? null, - //زمان ایجاد - Indati2m = result.Indati2m ?? null, - //کد شعبه خریدار - Bbc = result.bbc ?? null, - Tvop = result.tvop ?? null, - Crn = result.crn ?? null, - Tax17 = string.IsNullOrEmpty(result.seventeentax) ? null : Convert.ToDecimal(result.seventeentax), - Scc = result.scc ?? null, - Scln = result.scln ?? null, - Bpn = result.bpn ?? null, - Bid = result.bid ?? null, - }; - if (header.Inty == 1 && header.Inp == 3) - header = new InvoiceHeaderDto - { - //نوع شخص خریدار - Tob = result.tob, - // صورتحساب نوع * - Inty = result.inty ?? 1, - //الگوی صورتحساب * - Inp = result.inp ?? 1, - //موضوع صورتحساب * - Ins = result.ins ?? 1, - //شماره منحصر به فرد مالیاتی - Taxid = _actionTaxPayer.GenerateTaxid(result.inno, result.InvoiceDate.Replace("/", "").Trim()), - //سریال صورت حساب - Inno = result.inno ?? null, - //شماره اقتصادی فروشنده به جاش شناسه ملی داده شد - Tins = result.tins ?? null, - //مجموع مبلغ قبل از کسر تخفیف - Tprdis = result.tprdis ?? null, - // مجموع مبلغ پس از کسر تخفیف - Tadis = result.tadis ?? null, - //مجموع مالیات بر ارزش افزوده - Tvam = result.tvam ?? null, - // مجموع سایر مالیات، عوارض و وجوه قانونی - Todam = result.todam ?? null, - //صورتحساب مجموع - Tbill = result.tbill ?? null, - // تسویه روش - Setm = result.setm ?? null, - //نقدی پرداختی مبلغ - Cap = result.cap ?? null, - //پرداختی نسیه - Insp = result.insp ?? null, - //مجموع تخفیفات - Tdis = result.tdis ?? null, - //شماره منحصر به فرد مالیاتی صورتحساب مرجع - Irtaxid = result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair ? result.invoice.taxid : null, - //شماره اقتصادی خریدار - Tinb = result.tinb ?? null, - //زمان صدور - Indatim = result.indatim ?? null, - //زمان ایجاد - Indati2m = result.Indati2m ?? null, - //کد شعبه خریدار - Bbc = result.bbc ?? null, - Tvop = result.tvop ?? null, - Crn = result.crn ?? null, - Tax17 = string.IsNullOrEmpty(result.seventeentax) ? null : Convert.ToDecimal(result.seventeentax), - Bid = result.bid ?? null, - }; + + //if (header.Inty == 1 && header.Inp == 2) + // header = new InvoiceHeaderDto + // { + // //نوع شخص خریدار + // Tob = result.tob, + // // صورتحساب نوع * + // Inty = result.inty ?? 1, + // //الگوی صورتحساب * + // Inp = result.inp ?? 1, + // //موضوع صورتحساب * + // Ins = result.ins ?? 1, + // //شماره منحصر به فرد مالیاتی + // Taxid = _actionTaxPayer.GenerateTaxid(result.inno, result.InvoiceDate.Replace("/", "").Trim()), + // //سریال صورت حساب + // Inno = result.inno ?? null, + // //شماره اقتصادی فروشنده به جاش شناسه ملی داده شد + // Tins = result.tins ?? null, + // //مجموع مبلغ قبل از کسر تخفیف + // Tprdis = result.tprdis ?? null, + // // مجموع مبلغ پس از کسر تخفیف + // Tadis = result.tadis ?? null, + // //مجموع مالیات بر ارزش افزوده + // Tvam = result.tvam ?? null, + // // مجموع سایر مالیات، عوارض و وجوه قانونی + // Todam = result.todam ?? null, + // //صورتحساب مجموع + // Tbill = result.tbill ?? null, + // // تسویه روش + // Setm = result.setm ?? null, + // //نقدی پرداختی مبلغ + // Cap = result.cap ?? null, + // //پرداختی نسیه + // Insp = result.insp ?? null, + // //مجموع تخفیفات + // Tdis = result.tdis ?? null, + // //شماره منحصر به فرد مالیاتی صورتحساب مرجع + // Irtaxid = result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair ? result.invoice.taxid : null, + // //شماره اقتصادی خریدار + // Tinb = result.tinb ?? null, + // //زمان صدور + // Indatim = result.indatim ?? null, + // //زمان ایجاد + // Indati2m = result.Indati2m ?? null, + // //کد شعبه خریدار + // Bbc = result.bbc ?? null, + // Tvop = result.tvop ?? null, + // Crn = result.crn ?? null, + // Tax17 = string.IsNullOrEmpty(result.seventeentax) ? null : Convert.ToDecimal(result.seventeentax), + // Scc = result.scc ?? null, + // Scln = result.scln ?? null, + // Bpn = result.bpn ?? null, + // Bid = result.bid ?? null, + // }; + //if (header.Inty == 1 && header.Inp == 3) + // header = new InvoiceHeaderDto + // { + // //نوع شخص خریدار + // Tob = result.tob, + // // صورتحساب نوع * + // Inty = result.inty ?? 1, + // //الگوی صورتحساب * + // Inp = result.inp ?? 1, + // //موضوع صورتحساب * + // Ins = result.ins ?? 1, + // //شماره منحصر به فرد مالیاتی + // Taxid = _actionTaxPayer.GenerateTaxid(result.inno, result.InvoiceDate.Replace("/", "").Trim()), + // //سریال صورت حساب + // Inno = result.inno ?? null, + // //شماره اقتصادی فروشنده به جاش شناسه ملی داده شد + // Tins = result.tins ?? null, + // //مجموع مبلغ قبل از کسر تخفیف + // Tprdis = result.tprdis ?? null, + // // مجموع مبلغ پس از کسر تخفیف + // Tadis = result.tadis ?? null, + // //مجموع مالیات بر ارزش افزوده + // Tvam = result.tvam ?? null, + // // مجموع سایر مالیات، عوارض و وجوه قانونی + // Todam = result.todam ?? null, + // //صورتحساب مجموع + // Tbill = result.tbill ?? null, + // // تسویه روش + // Setm = result.setm ?? null, + // //نقدی پرداختی مبلغ + // Cap = result.cap ?? null, + // //پرداختی نسیه + // Insp = result.insp ?? null, + // //مجموع تخفیفات + // Tdis = result.tdis ?? null, + // //شماره منحصر به فرد مالیاتی صورتحساب مرجع + // Irtaxid = result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair ? result.invoice.taxid : null, + // //شماره اقتصادی خریدار + // Tinb = result.tinb ?? null, + // //زمان صدور + // Indatim = result.indatim ?? null, + // //زمان ایجاد + // Indati2m = result.Indati2m ?? null, + // //کد شعبه خریدار + // Bbc = result.bbc ?? null, + // Tvop = result.tvop ?? null, + // Crn = result.crn ?? null, + // Tax17 = string.IsNullOrEmpty(result.seventeentax) ? null : Convert.ToDecimal(result.seventeentax), + // Bid = result.bid ?? null, + // }; + else return BadRequest(new List { "این الگو فعلا در دسترس نمی باشد" }); #endregion header List InvoiceBody = new List(); foreach (var bitem in result.invoiceDetails) diff --git a/Back/Data/Models/Invoice.cs b/Back/Data/Models/Invoice.cs index 0fefad4..0cb4419 100644 --- a/Back/Data/Models/Invoice.cs +++ b/Back/Data/Models/Invoice.cs @@ -97,6 +97,7 @@ namespace Back.Data.Models #endregion #region fild + public int? ExternalAccessCode { get; set; } public string Title { get; set; } public string? Des { get; set; } public InvoiceType invoiceType { get; set; } diff --git a/Back/Services/servInvoice.cs b/Back/Services/servInvoice.cs index 0fb885f..23d0b26 100644 --- a/Back/Services/servInvoice.cs +++ b/Back/Services/servInvoice.cs @@ -160,6 +160,11 @@ namespace Back.Services { return await _invoiceRepo.Get(w => w.ID == InvoiceID && w.CompanyID == CompanyID && !w.IsDeleted).AnyAsync(); + } + public async Task GetInvoiceByExternalAccessCode( int ExternalAccessCode) + { + return await _invoiceRepo.Get(w => w.ExternalAccessCode == ExternalAccessCode && !w.IsDeleted).FirstOrDefaultAsync(); + } public async Task checkFatherInvoiceByInvoiceID(int CompanyID, int InvoiceID) { diff --git a/TaxPayerFull/Pages/InvoiceReport.razor b/TaxPayerFull/Pages/InvoiceReport.razor index 1311df8..4414b58 100644 --- a/TaxPayerFull/Pages/InvoiceReport.razor +++ b/TaxPayerFull/Pages/InvoiceReport.razor @@ -1,186 +1,82 @@ -صورتحساب -@* @using Front.Services -@using Shared.DTOs -@using Stimulsoft.Base -@using Stimulsoft.Report -@using Stimulsoft.Report.Blazor -@inject Fixedvalues fv; +دریافت صورتحساب +@inject IJSRuntime JS @inject HttpClientController hc; -@layout EmptyLayout *@ -@page "/InvoiceReport/{InvoiceID:int}" -@* *@ + + +@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 messages = new List(); + [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(); - - // // var rspCompany = await hc.Get($"Company/GetCompany"); - // // if (rspCompany.IsSuccessStatusCode) - // // company = await rspCompany.Content.ReadFromJsonAsync(); - - - - - - - // // 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 GetCus() - // { - // var rspCustomer = await hc.Get($"Customer/GetCustomer/{fv.invoice?.CustomerID}"); - // if (rspCustomer.IsSuccessStatusCode) - // return await rspCustomer.Content.ReadFromJsonAsync(); - // else return null; - // } - // private async Task GetCompany() - // { - // var rspCompany = await hc.Get($"Company/GetCompany"); - // if (rspCompany.IsSuccessStatusCode) - // return await rspCompany.Content.ReadFromJsonAsync(); - // 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); + } + } + \ No newline at end of file diff --git a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor index f564fa0..d54490b 100644 --- a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor +++ b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor @@ -14,6 +14,14 @@ جزئیات صورتحساب + + + @ExUrl + + + + + @if (invoice.IsDeleted) { @@ -334,7 +342,9 @@ - + } } @@ -369,6 +379,8 @@ @code { + private Modal Codemodal = default!; + public bool SendInvoice { get; set; } = false; List messages = new List(); private ConfirmDialog dialog = default!; @@ -383,7 +395,7 @@ public List? Cus { get; set; } public List>? 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>(); + ShowDangerAlert(request[0]); + } + + PreloadService.Hide(); + } private async Task ShowReport() { PreloadService.Show(SpinnerColor.Dark); diff --git a/TaxPayerFull/Program.cs b/TaxPayerFull/Program.cs index ea0270a..670070e 100644 --- a/TaxPayerFull/Program.cs +++ b/TaxPayerFull/Program.cs @@ -37,10 +37,10 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO() //builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") }); //Home -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") }); +//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") }); //farzan -//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") }); +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") }); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");