627 lines
31 KiB
C#
627 lines
31 KiB
C#
using Back.Common;
|
|
using Back.Data.Models;
|
|
using Back.Services;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Http.HttpResults;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Newtonsoft.Json;
|
|
using Org.BouncyCastle.Asn1.Cmp;
|
|
using Org.BouncyCastle.Ocsp;
|
|
using Org.BouncyCastle.Utilities;
|
|
using Shared.DTOs;
|
|
using Shared.DTOs.Serch;
|
|
using System;
|
|
using System.Security.Cryptography;
|
|
using TaxCollectData.Library.Dto.Content;
|
|
using TaxCollectData.Library.Dto.Transfer;
|
|
using static Shared.DTOs._TaxPayer;
|
|
using static System.Collections.Specialized.BitVector32;
|
|
|
|
namespace Back.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[Authorize]
|
|
[ApiController]
|
|
public class TaxPayerController : ControllerBase
|
|
{
|
|
private readonly servTaxPayer _servTaxPayer;
|
|
private readonly servUser _servUser;
|
|
private readonly ActionTaxPayer _actionTaxPayer;
|
|
public TaxPayerController(servTaxPayer servTaxPayer, servUser servUser, ActionTaxPayer actionTaxPayer)
|
|
{
|
|
_servTaxPayer = servTaxPayer;
|
|
_servUser = servUser;
|
|
_actionTaxPayer = actionTaxPayer;
|
|
}
|
|
[HttpGet("GetInvoice/{ID}")]
|
|
public async Task<ActionResult<_TaxPayer.Atemplatefield?>> Get(int ID)
|
|
{
|
|
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 _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, ID);
|
|
if (result == null)
|
|
return BadRequest(new List<string> { "صورتحساب یافت نشد" });
|
|
|
|
else
|
|
{
|
|
if (!result.PatternID.HasValue || result.PatternID == 0)
|
|
return BadRequest(new List<string> { "ابتدا برای این صورتحساب الگو در نظر بگیرید" });
|
|
|
|
//if (result.invoiceType == InvoiceType.Bidding)
|
|
// return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند ارسال شود" });
|
|
|
|
//if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result))
|
|
// return BadRequest(new List<string> { "این صورتحساب قبلا به سازمان ارسال شده" });
|
|
|
|
//if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
// && !result.BillReference.HasValue)
|
|
// return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" });
|
|
|
|
|
|
//if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
// && !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice))
|
|
// return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
|
|
|
|
|
|
|
|
return Ok(await _servTaxPayer.GetFildInvoiceForPreparation(result));
|
|
}
|
|
|
|
}
|
|
[HttpPost("PreparationInvoiceBeforeSending")]
|
|
public async Task<ActionResult<Shared.DTOs._TaxPayer.Atemplatefield?>> PreparationInvoiceBeforeSending([FromBody] Atemplatefield item)
|
|
{
|
|
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 _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, item.header.ID);
|
|
if (result == null)
|
|
return BadRequest(new List<string> { "صورتحساب یافت نشد" });
|
|
|
|
else
|
|
{
|
|
if (result.invoiceType == InvoiceType.Bidding)
|
|
return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند آماده ارسال شود" });
|
|
|
|
if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result))
|
|
return BadRequest(new List<string> { "این صورتحساب قبلا به سازمان ارسال شده" });
|
|
|
|
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
&& !result.BillReference.HasValue)
|
|
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" });
|
|
|
|
|
|
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
&& !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice))
|
|
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
|
|
|
|
}
|
|
|
|
|
|
return Ok(await _servTaxPayer.PreparationInvoiceBeforeSending(item, result));
|
|
}
|
|
[HttpPost("UpdateInvoice")]
|
|
public async Task<ActionResult<bool>> UpdateInvoice([FromBody] Atemplatefield item)
|
|
{
|
|
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 _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, item.header.ID);
|
|
if (result == null)
|
|
return BadRequest(new List<string> { "صورتحساب یافت نشد" });
|
|
|
|
//else
|
|
//{
|
|
// if (result.invoiceType == InvoiceType.Bidding)
|
|
// return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند آماده ارسال شود" });
|
|
|
|
if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result))
|
|
return BadRequest(new List<string> { "این صورتحساب به سازمان ارسال شده"+'\n'+
|
|
"برای تغییر ،صورتحساب را ابطال/اصلاح یا برگشت بزنید" });
|
|
|
|
// if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
// && !result.BillReference.HasValue)
|
|
// return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" });
|
|
|
|
|
|
// if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
// && !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice))
|
|
// return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
|
|
|
|
//}
|
|
|
|
|
|
return Ok(await _servTaxPayer.PreparationInvoiceBeforeSending(item, result));
|
|
}
|
|
[HttpGet("CheckAuth")]
|
|
public async Task<ActionResult<bool>> CheckAuth()
|
|
{
|
|
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
return Ok(await _actionTaxPayer.login(user.RolUsers.First().CompanyID));
|
|
// return Ok(true);
|
|
|
|
return BadRequest();
|
|
|
|
}
|
|
[HttpGet("SendInvoice/{InvoiceID}")]
|
|
public async Task<ActionResult<bool>> SendInvoice(int InvoiceID)
|
|
{
|
|
//return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
|
|
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
|
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
|
|
|
var result = await _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
|
|
if (result == null)
|
|
return BadRequest(new List<string> { "صورتحساب یافت نشد" });
|
|
|
|
else
|
|
{
|
|
if (!result.PatternID.HasValue)
|
|
return BadRequest(new List<string> { "ابتدا برای این صورتحساب الگو در نظر بگیرید" });
|
|
|
|
if (result.invoiceType == InvoiceType.Bidding)
|
|
return BadRequest(new List<string> { "صورتحساب در وضعیت پیش نویس نمیتواند ارسال شود" });
|
|
|
|
if (await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result))
|
|
return BadRequest(new List<string> { "این صورتحساب قبلا به سازمان ارسال شده" });
|
|
|
|
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
&& !result.BillReference.HasValue)
|
|
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع وجود داشته باشد" });
|
|
|
|
|
|
if ((result.invoiceType == InvoiceType.BackFrmSale || result.invoiceType == InvoiceType.Repair)
|
|
&& !await _servTaxPayer.ExistSuccessfulorSendorpendingInvoice(result.invoice))
|
|
return BadRequest(new List<string> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
|
|
|
|
if (result.invoiceType == InvoiceType.Cancellation && string.IsNullOrEmpty(result.taxid))
|
|
{
|
|
return BadRequest(new List<string> { "صورتحساب در وضعیت ابطالی باید صورتحساب مرجع آن به سامانه مودیان ارسال شده باشد" });
|
|
|
|
}
|
|
#region Inital Send
|
|
InvoiceHeaderDto header = new InvoiceHeaderDto();
|
|
PreparationHeaderTaxInvoice preparation = new PreparationHeaderTaxInvoice(result, _actionTaxPayer);
|
|
|
|
|
|
int level = result.pattern.ID;
|
|
|
|
//header
|
|
#region header
|
|
header = new InvoiceHeaderDto
|
|
{
|
|
//شماره منحصر به فرد مالیاتی
|
|
Taxid = preparation.Taxid,
|
|
//زمان صدور
|
|
Indatim = preparation.Indatim,
|
|
//زمان ایجاد
|
|
Indati2m = preparation.Indati2m,
|
|
// صورتحساب نوع *
|
|
Inty = preparation.Inty,
|
|
//سریال صورت حساب
|
|
Inno = preparation.Inno,
|
|
//شماره منحصر به فرد مالیاتی صورتحساب مرجع
|
|
Irtaxid = preparation.Irtaxid,
|
|
//الگوی صورتحساب *
|
|
Inp = preparation.Inp,
|
|
//موضوع صورتحساب *
|
|
Ins = preparation.Ins,
|
|
//شماره اقتصادی فروشنده به جاش شناسه ملی داده شد
|
|
Tins = preparation.Tins,
|
|
//نوع شخص خریدار
|
|
Tob = preparation.Tob,
|
|
//شماره/شناسه ملی/شناسه مشارکت مدنی / کد فراگیر
|
|
Bid = preparation.Bid,
|
|
//شماره اقتصادی خریدار
|
|
Tinb = preparation.Tinb,
|
|
//کد شعبه فروشنده
|
|
Sbc = preparation.Sbc,
|
|
//کد پستی خریدار
|
|
Bpc = preparation.Bpc,
|
|
//کد شعبه خریدار
|
|
Bbc = preparation.Bbc,
|
|
//نوع پرواز
|
|
Ft = preparation.Ft,
|
|
//شماره گذرنامه خریدار
|
|
Bpn = preparation.Bpn,
|
|
//شماره پروانه گمرکی
|
|
Scln = preparation.Scln,
|
|
//کد گمرک محل اظهار فروشنده
|
|
Scc = preparation.Scc,
|
|
//شماره کدتاژ اظهارنامه گمرکی
|
|
Cdcn = preparation.Cdcn,
|
|
//تاریخ کوتاژ اظهارنامه گمرکی
|
|
Cdcd = preparation.Cdcd,
|
|
//شناسه یکتای ثبت قزارداد فروشنده
|
|
Crn = preparation.Crn,
|
|
//شماره اشتراک/شناسه قبض بهره بردار
|
|
Billid = preparation.Billid,
|
|
//مجموع مبلغ قبل از کسر تخفیف
|
|
Tprdis = preparation.Tprdis,
|
|
//مجموع تخفیفات
|
|
Tdis = preparation.Tdis,
|
|
// مجموع مبلغ پس از کسر تخفیف
|
|
Tadis = preparation.Tadis,
|
|
//مجموع مالیات بر ارزش افزوده
|
|
Tvam = preparation.Tvam,
|
|
// مجموع سایر مالیات، عوارض و وجوه قانونی
|
|
Todam = preparation.Todam,
|
|
//صورتحساب مجموع
|
|
Tbill = preparation.Tbill,
|
|
//مجموع وزن خالض
|
|
Tonw = preparation.Tonw,
|
|
//مجموع ارزش ریالی
|
|
Torv = preparation.Torv,
|
|
//مجموع ارزش ارزی
|
|
Tocv = preparation.Tocv,
|
|
// تسویه روش
|
|
Setm = preparation.Setm,
|
|
//نقدی پرداختی مبلغ
|
|
Cap = preparation.Cap,
|
|
//پرداختی نسیه
|
|
Insp = preparation.Insp,
|
|
//مجموع سهم مالیات بر ارزش افزوده از پرداخت
|
|
Tvop = preparation.Tvop,
|
|
//مالیات موضوع 17
|
|
Tax17 = preparation.Tax17,
|
|
//شماره اقتصادی آژانس
|
|
Tinc = preparation.Tinc,
|
|
//تاریخ اعلامیه فروش
|
|
Asd=null,
|
|
//شماره اعلامیه فروش
|
|
Asn = null,
|
|
//شماره ناوگان
|
|
Cno=null,
|
|
//شهر مقصد
|
|
Dci = null,
|
|
//کشور مقصد
|
|
Dco = null,
|
|
//کد ملی/ کد فراگیر اتباع غیر ایرانی راننده) در حمل و نقل جاده ای(
|
|
Did = null,
|
|
//شماره بارنامه
|
|
Lno = null,
|
|
//شماره بارنامه مرجع
|
|
Lrno = null,
|
|
//نوع بارنامه/ نوع حمل
|
|
Lt = null,
|
|
//شهر مبدا
|
|
Oci = null,
|
|
//کشور مبدا
|
|
Ocu = null,
|
|
//شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی/ کد فراگیر اتباع غیر ایرانی گیرنده
|
|
Rid = null,
|
|
//کالاهای حمل شده
|
|
Sg = new List<ShippingGoodDto>(),
|
|
//شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی / کد فراگیر اتباع غیر ایرانی فرستنده
|
|
Tid =null
|
|
|
|
};
|
|
#endregion header
|
|
|
|
|
|
|
|
|
|
//body
|
|
List<InvoiceBodyDto> InvoiceBody = new List<InvoiceBodyDto>();
|
|
foreach (var bitem in result.invoiceDetails)
|
|
{
|
|
InvoiceBodyDto item = new InvoiceBodyDto();
|
|
PreparationBodyTaxInvoice preparationBody = new PreparationBodyTaxInvoice(bitem, level);
|
|
#region body
|
|
|
|
item = new InvoiceBodyDto
|
|
{
|
|
//شناسه کالا / خدمت
|
|
Sstid = preparationBody.Sstid,
|
|
//شرح کاال/خدمت
|
|
Sstt = preparationBody.Sstt,
|
|
// تعداد
|
|
Am = preparationBody.Am,
|
|
//واحد اندازه گیری
|
|
Mu = preparationBody.Mu,
|
|
//وزن خالص
|
|
Nw= preparationBody.Nw,
|
|
// مبلغ واحد
|
|
Fee = preparationBody.Fee,
|
|
//میزان ارز
|
|
Cfee = preparationBody.Cfee ,
|
|
//نوع ارز
|
|
Cut = preparationBody.Cut,
|
|
//نرخ برابری ارز با ریال
|
|
Exr = preparationBody.Exr,
|
|
// ارزش ریالی کاا
|
|
Ssrv= preparationBody.Ssrv,
|
|
// ارزش ارزی کاا
|
|
Sscv= preparationBody.Sscv,
|
|
//مبلغ قبل از تخفیف
|
|
Prdis = preparationBody.Prdis,
|
|
//مبلغ تخفیف
|
|
Dis = preparationBody.Dis,
|
|
//مبلغ بعد از تخفیف
|
|
Adis = preparationBody.Adis,
|
|
//نرخ مالیات بر ارزش افزوده
|
|
Vra = preparationBody.Vra,
|
|
//مبلغ مالیات بر ارزش افزوده
|
|
Vam = preparationBody.Vam,
|
|
//موضوع سایر مالیات و عوارض
|
|
Odt = preparationBody.Odt,
|
|
//نرخ سایر مالیات و عوارض
|
|
Odr = preparationBody.Odr,
|
|
//مبلغ سایر مالیات و عوارض
|
|
Odam = preparationBody.Odam,
|
|
//موضوع سایر وجوه قانونی
|
|
Olt = preparationBody.Olt,
|
|
//نرخ سایر وجوه قانونی
|
|
Olr = preparationBody.Olr,
|
|
//مبلغ سایر وجوه قانونی
|
|
Olam = preparationBody.Olam,
|
|
//اجرت ساخت
|
|
Consfee = preparationBody.Consfee,
|
|
// سود فروشنده
|
|
Spro= preparationBody.Spro,
|
|
//حقالعمل
|
|
Bros= preparationBody.Bros,
|
|
//جمع کل اجرت، حقالعمل و سود
|
|
Tcpbs= preparationBody.Tcpbs,
|
|
//سهم نقدی از پرداخت
|
|
Cop = preparationBody.Cop,
|
|
//سهم مالیات بر لرزش افزوده از پرداخت
|
|
Vop = preparationBody.Vop,
|
|
//شناسه یکتای ثبت قرارداد حق العمل کاری
|
|
Bsrn = preparationBody.Bsrn,
|
|
// مبلغ کل کالا / خدمت
|
|
Tsstam = preparationBody.Tsstam,
|
|
//عیار
|
|
Cui = preparationBody.Cui,
|
|
// نرخ خرید ارز
|
|
Cpr = preparationBody.Cpr,
|
|
//ماخذ مالیات بر ارزش افزوده در الگوی فروش ارز
|
|
Sovat = preparationBody.Sovat
|
|
};
|
|
#endregion
|
|
InvoiceBody.Add(item);
|
|
}
|
|
|
|
|
|
//Pay
|
|
List<PaymentDto> InvoicePay = new List<PaymentDto>();
|
|
if (result.setm==1 || result.setm == 3)
|
|
{
|
|
if (level != 10)
|
|
foreach (var pitem in result.payments)
|
|
{
|
|
|
|
PaymentDto payment = new PaymentDto();
|
|
payment = new PaymentDto
|
|
{
|
|
Iinn = pitem.iinn,
|
|
Acn = pitem.acn,
|
|
Trmn = pitem.trmn,
|
|
Pmt = pitem.pmt,
|
|
Trn = pitem.trn,
|
|
Pcn = pitem.pcn,
|
|
Pid = pitem.pid,
|
|
Pdt = pitem.pdt,
|
|
Pv = pitem.pv,
|
|
|
|
};
|
|
|
|
InvoicePay.Add(payment);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var responseModel = await _actionTaxPayer.SendInvoice(user.RolUsers.First().CompanyID, header, InvoiceBody, InvoicePay);
|
|
if (responseModel == null)
|
|
{
|
|
return BadRequest(new List<string> { "خطا در ورود به سامانه مودیان" });
|
|
}
|
|
else if (responseModel.Status == 200 && (responseModel.Body.Errors == null || responseModel.Body.Errors.Count == 0))
|
|
{
|
|
foreach (var item in responseModel.Body.Result)
|
|
{
|
|
|
|
|
|
var ressenttax = new SentTax
|
|
{
|
|
InvoiceID = result.ID,
|
|
Date = DateTime.Now.ConvertMiladiToShamsi(),
|
|
Time = $"{DateTime.Now.Hour}:{DateTime.Now.Minute}:{DateTime.Now.Second}",
|
|
InvoiceType = result.invoiceType,
|
|
ReferenceNumber = item.ReferenceNumber,
|
|
uId = item.Uid,
|
|
SentStatus = SentStatus.Send,
|
|
InvoiceModel = JsonConvert.SerializeObject(result, Formatting.Indented, new JsonSerializerSettings
|
|
{
|
|
PreserveReferencesHandling = PreserveReferencesHandling.Objects
|
|
}),
|
|
ResponseModel = JsonConvert.SerializeObject(responseModel)
|
|
|
|
};
|
|
await _servTaxPayer.AddSentTax(ressenttax);
|
|
}
|
|
result.taxid = header.Taxid;
|
|
result.irtaxid = header.Irtaxid;
|
|
return Ok(await _servTaxPayer.UpdateInvoice(result));
|
|
}
|
|
else
|
|
{
|
|
string errors = "";
|
|
foreach (var item in responseModel.Body.Errors)
|
|
errors += '\n' + $"{item.ErrorCode}:{item.Detail}";
|
|
|
|
return BadRequest(new List<string> { errors });
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
}
|
|
[HttpPost("GetAllSentTax")]
|
|
public async Task<ActionResult<PagingDto<SentTaxDto>>> GetSentTax([FromBody] ItemSerchGetSentTax item)
|
|
{
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
return Ok(await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, item));
|
|
}
|
|
[HttpGet("GetResult/{ID}")]
|
|
public async Task<ActionResult<DataInSendTaxDto>> GetResultByUid(int ID)
|
|
{
|
|
try
|
|
{
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
var item = await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, ID);
|
|
if (item == null)
|
|
return BadRequest(new List<string> { "یافت نشد" });
|
|
|
|
if (string.IsNullOrEmpty(item.uId))
|
|
return BadRequest(new List<string> { "کد پیگیری یافت نشد" });
|
|
|
|
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
|
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
|
|
|
DataInSendTaxDto desData = new DataInSendTaxDto();
|
|
|
|
|
|
if (item.SentStatus == SentStatus.Unsuccessful && !string.IsNullOrEmpty(item.ErrorsModel))
|
|
{
|
|
List<MessageInSendTaxDto> inquiryerrorResult = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(item.ErrorsModel);
|
|
|
|
InquiryResultModel inquiryResult = JsonConvert.DeserializeObject<InquiryResultModel>(item.InquiryResultModel);
|
|
if (inquiryResult.Data != null)
|
|
{
|
|
|
|
desData = new DataInSendTaxDto();
|
|
desData.SentStatus = SentStatus.Unsuccessful;
|
|
desData.error = inquiryerrorResult;
|
|
|
|
|
|
|
|
}
|
|
return Ok(desData);
|
|
}
|
|
else if (item.SentStatus == SentStatus.Send
|
|
|| item.SentStatus == SentStatus.pending
|
|
|| item.SentStatus == SentStatus.IN_PROGRESS
|
|
|| item.SentStatus == SentStatus.Unsuccessful)
|
|
{
|
|
|
|
//ta imja
|
|
var result = await _actionTaxPayer.GetResultByUid(user.RolUsers.First().CompanyID, item.uId);
|
|
if (result == null)
|
|
return BadRequest(new List<string> { "پاسخی از سازمان دریافت نشد" });
|
|
|
|
else
|
|
{
|
|
item.InquiryResultModel = JsonConvert.SerializeObject(result);
|
|
if (result.Data != null)
|
|
{
|
|
desData = JsonConvert.DeserializeObject<DataInSendTaxDto>(result.Data.ToString());
|
|
if (desData == null)
|
|
{
|
|
desData = new DataInSendTaxDto();
|
|
desData.error = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(result.Data.ToString());
|
|
}
|
|
}
|
|
|
|
desData.SentStatus = item.SentStatus =
|
|
result.Status == "FAILED" ? SentStatus.Unsuccessful
|
|
: result.Status == "PENDING" ? SentStatus.pending
|
|
: result.Status == "SUCCESS" ? SentStatus.Successful
|
|
: result.Status == "NOT_FOUND" ? SentStatus.NOT_FOUND
|
|
: result.Status == "IN_PROGRESS" ? SentStatus.IN_PROGRESS
|
|
: SentStatus.Unknown;
|
|
|
|
if (item.SentStatus == SentStatus.Unsuccessful)
|
|
item.ErrorsModel = JsonConvert.SerializeObject(desData.error);
|
|
}
|
|
|
|
|
|
if (await _servTaxPayer.UpdateSentTax(item)) return Ok(desData);
|
|
|
|
else return BadRequest(new List<string> { "خطای در ذخیره سازی" });
|
|
}
|
|
return BadRequest(new List<string> { "در این وضعیت امکان پذیر نمی باشد" });
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return BadRequest(new List<string> { "خطای ناشناخته" });
|
|
}
|
|
}
|
|
[HttpGet("GetBillTypes")]
|
|
public async Task<ActionResult<List<IdName<int>>>> GetBillTypes()
|
|
{
|
|
return Ok(await _servTaxPayer.GetBillTypes());
|
|
}
|
|
[HttpGet("GetPatterns")]
|
|
public async Task<ActionResult<List<IdName<int>>>> GetPatterns()
|
|
{
|
|
return Ok(await _servTaxPayer.GetPatterns(true));
|
|
}
|
|
[HttpGet("GetUnits")]
|
|
public async Task<ActionResult<List<IdName<int>>>> GetUnits()
|
|
{
|
|
return Ok(await _servTaxPayer.GetUnits());
|
|
}
|
|
[HttpGet("EconomicCodeInformation")]
|
|
public async Task<ActionResult<EconomicCodeModelDto>> GetEconomicCodeInformation(string item)
|
|
{
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
|
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
|
var result=await _actionTaxPayer.GetEconomicCodeInformation(item);
|
|
if (result == null) return NotFound();
|
|
return Ok(result);
|
|
}
|
|
[HttpGet("FiscalInformation")]
|
|
public async Task<ActionResult<FiscalInformationModelDto>> GetFiscalInformation(string item)
|
|
{
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
|
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
|
var result=await _actionTaxPayer.GetFiscalInformation(item);
|
|
if (result == null) return NotFound();
|
|
return Ok(result);
|
|
}
|
|
[HttpGet("CodInTaxPayerHaveBeenSentSuccessfully/{CODID}")]
|
|
public async Task<ActionResult<bool>> CodInTaxPayerHaveBeenSentSuccessfully(int CODID)
|
|
{
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
return Ok(await _servTaxPayer.AnyCodInTaxPayerHaveBeenSentSuccessfully(CODID, user.RolUsers.First().CompanyID));
|
|
}
|
|
[HttpGet("CustomerInTaxPayerHaveBeenSentSuccessfully/{CUSID}")]
|
|
public async Task<ActionResult<bool>> CustomerInTaxPayerHaveBeenSentSuccessfully(int CUSID)
|
|
{
|
|
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
|
var UserID = claim.Value;
|
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
|
return Ok(await _servTaxPayer.AnyCusInTaxPayerHaveBeenSentSuccessfully(CUSID, user.RolUsers.First().CompanyID));
|
|
}
|
|
}
|
|
}
|