Compare commits
10 Commits
642284c2aa
...
4df6c87012
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4df6c87012 | ||
![]() |
ef2cf5ff30 | ||
![]() |
f2dd0bd837 | ||
![]() |
b57839a212 | ||
![]() |
48072d6e00 | ||
![]() |
505adf6ab2 | ||
![]() |
e40192c428 | ||
![]() |
88d4b63394 | ||
![]() |
83d7514581 | ||
![]() |
b896c9aced |
30
.dockerignore
Normal file
30
.dockerignore
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
**/.classpath
|
||||||
|
**/.dockerignore
|
||||||
|
**/.env
|
||||||
|
**/.git
|
||||||
|
**/.gitignore
|
||||||
|
**/.project
|
||||||
|
**/.settings
|
||||||
|
**/.toolstarget
|
||||||
|
**/.vs
|
||||||
|
**/.vscode
|
||||||
|
**/*.*proj.user
|
||||||
|
**/*.dbmdl
|
||||||
|
**/*.jfm
|
||||||
|
**/azds.yaml
|
||||||
|
**/bin
|
||||||
|
**/charts
|
||||||
|
**/docker-compose*
|
||||||
|
**/Dockerfile*
|
||||||
|
**/node_modules
|
||||||
|
**/npm-debug.log
|
||||||
|
**/obj
|
||||||
|
**/secrets.dev.yaml
|
||||||
|
**/values.dev.yaml
|
||||||
|
LICENSE
|
||||||
|
README.md
|
||||||
|
!**/.gitignore
|
||||||
|
!.git/HEAD
|
||||||
|
!.git/config
|
||||||
|
!.git/packed-refs
|
||||||
|
!.git/refs/heads/**
|
5
Back/.config/dotnet-tools.json
Normal file
5
Back/.config/dotnet-tools.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"isRoot": true,
|
||||||
|
"tools": {}
|
||||||
|
}
|
@@ -4,12 +4,15 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<UserSecretsId>3a1884b0-3dfb-48c8-8b55-fac6d02b8d35</UserSecretsId>
|
||||||
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Blazor.PersianDatePicker" Version="2.1.0" />
|
<PackageReference Include="Blazor.PersianDatePicker" Version="2.1.0" />
|
||||||
<PackageReference Include="Melipayamak.RestClient" Version="1.0.0" />
|
<PackageReference Include="Melipayamak.RestClient" Version="1.0.0" />
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
|
||||||
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||||
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.5" />
|
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.5" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
|
||||||
<PackageReference Include="FluentValidation" Version="11.9.0" />
|
<PackageReference Include="FluentValidation" Version="11.9.0" />
|
||||||
@@ -25,7 +28,7 @@
|
|||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
||||||
<PackageReference Include="TaxCollectData.Library" Version="0.0.23" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -36,10 +39,4 @@
|
|||||||
<ProjectReference Include="..\Shared\Shared.csproj" />
|
<ProjectReference Include="..\Shared\Shared.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="Service">
|
|
||||||
<HintPath>C:\Dlls\Service.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@@ -95,6 +95,21 @@ namespace Back.Common
|
|||||||
return new PagingDto<T>(rowCount, PageCount, await values.Skip(skip).Take(take).ToListAsync());
|
return new PagingDto<T>(rowCount, PageCount, await values.Skip(skip).Take(take).ToListAsync());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public static async Task<PagingDto<T>> Paging<T>(this IEnumerable<T> values, int pageId, int take)
|
||||||
|
{
|
||||||
|
if (/*values.Count()<1000 && */pageId == 0 && take == 0)
|
||||||
|
{
|
||||||
|
return new PagingDto<T>(values.Count(), 1, values.ToList());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int skip = (pageId - 1) * take;
|
||||||
|
int rowCount = values.Count();
|
||||||
|
int PageCount = rowCount % take == 0 ? rowCount / take : rowCount / take + 1;
|
||||||
|
return new PagingDto<T>(rowCount, PageCount, values.Skip(skip).Take(take).ToList());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public static System.Linq.Expressions.Expression<Func<TEntity, bool>> GetFunc<TEntity>(string Fild, string Value)
|
public static System.Linq.Expressions.Expression<Func<TEntity, bool>> GetFunc<TEntity>(string Fild, string Value)
|
||||||
{
|
{
|
||||||
|
@@ -52,6 +52,17 @@ namespace Back.Controllers
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
[HttpGet("GetVra/{ID}")]
|
||||||
|
public async Task<ActionResult<decimal>> GetVra(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 cod = await _servCOD.GetCodByCodID(ID, user.RolUsers.First().CompanyID);
|
||||||
|
if(cod!=null)
|
||||||
|
return Ok(cod.TaxRate);
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
[HttpGet("GetAllForidName")]
|
[HttpGet("GetAllForidName")]
|
||||||
public async Task<ActionResult<List<CODIdName<int>>>> GetAllForidName()
|
public async Task<ActionResult<List<CODIdName<int>>>> GetAllForidName()
|
||||||
{
|
{
|
||||||
|
@@ -4,7 +4,6 @@ using Back.Services;
|
|||||||
using Back.Validations;
|
using Back.Validations;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Service;
|
|
||||||
using Shared.DTOs;
|
using Shared.DTOs;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Reflection.Emit;
|
using System.Reflection.Emit;
|
||||||
|
@@ -31,7 +31,7 @@ namespace Back.Controllers
|
|||||||
private readonly WarehouseService _warehouseService;
|
private readonly WarehouseService _warehouseService;
|
||||||
private readonly ReceiptService _receiptService;
|
private readonly ReceiptService _receiptService;
|
||||||
|
|
||||||
public InvoiceController(IConfiguration configuration, servInvoice servInvoice, servUser servUser, AddOrUpdateInvoiceValidation validationInvoice, servTaxPayer servTaxPayer, servReport servReport, IAsyncRepository<rptQueue> rptQueueRepository, RemittanceService remittanceService, WarehouseService warehouseService)
|
public InvoiceController(IConfiguration configuration, servInvoice servInvoice, servUser servUser, AddOrUpdateInvoiceValidation validationInvoice, servTaxPayer servTaxPayer, servReport servReport, IAsyncRepository<rptQueue> rptQueueRepository, RemittanceService remittanceService, WarehouseService warehouseService, ReceiptService receiptService)
|
||||||
{
|
{
|
||||||
_configuration = configuration;
|
_configuration = configuration;
|
||||||
_servInvoice = servInvoice;
|
_servInvoice = servInvoice;
|
||||||
@@ -42,6 +42,7 @@ namespace Back.Controllers
|
|||||||
_rptQueueRepository = rptQueueRepository;
|
_rptQueueRepository = rptQueueRepository;
|
||||||
_remittanceService = remittanceService;
|
_remittanceService = remittanceService;
|
||||||
_warehouseService = warehouseService;
|
_warehouseService = warehouseService;
|
||||||
|
_receiptService = receiptService;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("GetAll")]
|
[HttpPost("GetAll")]
|
||||||
@@ -233,7 +234,32 @@ namespace Back.Controllers
|
|||||||
//{
|
//{
|
||||||
// return BadRequest(new List<string> { $"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود" });
|
// return BadRequest(new List<string> { $"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود" });
|
||||||
//}
|
//}
|
||||||
|
//if (invoice.invoiceType!=InvoiceType.Cancellation)
|
||||||
|
//{
|
||||||
|
//bool InvoiceHasaRemittanceBillReference = invoice.BillReference.HasValue && await _remittanceService.HasaRemittance(invoice.BillReference.Value);
|
||||||
|
await _receiptService.DeleteByInvoiceID(invoice.ID, user.RolUsers.First().CompanyID);
|
||||||
|
await _remittanceService.DeleteByInvoiceID(invoice.ID,user.RolUsers.First().CompanyID);
|
||||||
|
//foreach (var item in invoice.invoiceDetails)
|
||||||
|
//{
|
||||||
|
// if (await _remittanceService.HasaRemittance(invoice.ID, item.CODID))
|
||||||
|
// {
|
||||||
|
// await _receiptService.ADD(new Shared.DTOs.Warehouse.ReceiptDto()
|
||||||
|
// {
|
||||||
|
// CODID = item.CODID,
|
||||||
|
// Count = item.am.GetValueOrDefault(),
|
||||||
|
// Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
|
// ForSale = true,
|
||||||
|
// InvoiceID = item.InvoiceID,
|
||||||
|
// Type = TypeReceipt.Shopping,
|
||||||
|
// info = $"حذف صورتحساب {item.InvoiceID}",
|
||||||
|
|
||||||
|
// }, user.RolUsers.First().CompanyID, true);
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
// }
|
||||||
|
|
||||||
invoice.LastChangeUserID = Convert.ToInt32(UserID);
|
invoice.LastChangeUserID = Convert.ToInt32(UserID);
|
||||||
//----Update and sendResult
|
//----Update and sendResult
|
||||||
return Ok(await _servInvoice.DeleteInvoice(invoice));
|
return Ok(await _servInvoice.DeleteInvoice(invoice));
|
||||||
@@ -359,7 +385,29 @@ namespace Back.Controllers
|
|||||||
foreach (var item in Invoice.invoiceDetails)
|
foreach (var item in Invoice.invoiceDetails)
|
||||||
{
|
{
|
||||||
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
|
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
|
||||||
await _remittanceService.ChangeRemittance(Invoice.ID, item.CODID, result);
|
{
|
||||||
|
await _remittanceService.DeleteByCODIDAndInvoiceID(Invoice.ID,item.CODID, user.RolUsers.First().CompanyID);
|
||||||
|
//await _receiptService.ADD(new Shared.DTOs.Warehouse.ReceiptDto()
|
||||||
|
//{
|
||||||
|
// CODID = item.CODID,
|
||||||
|
// Count = item.am.GetValueOrDefault(),
|
||||||
|
// Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
|
// ForSale = true,
|
||||||
|
// InvoiceID = item.InvoiceID,
|
||||||
|
// Type = TypeReceipt.Shopping,
|
||||||
|
// info = $"رسید خودکار: صورتحساب {item.InvoiceID} از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()}",
|
||||||
|
|
||||||
|
//}, user.RolUsers.First().CompanyID, true);
|
||||||
|
await _remittanceService.ADD(new Shared.DTOs.Warehouse.RemittanceDto()
|
||||||
|
{
|
||||||
|
CODID = item.CODID,
|
||||||
|
Count = item.am.GetValueOrDefault(),
|
||||||
|
Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
|
InvoiceID = result,
|
||||||
|
Type = TypeRemittance.Sale,
|
||||||
|
info = $"حواله خودکار: از صورتحساب {result}"
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result));
|
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result));
|
||||||
}
|
}
|
||||||
@@ -434,7 +482,29 @@ namespace Back.Controllers
|
|||||||
foreach (var item in Invoice.invoiceDetails)
|
foreach (var item in Invoice.invoiceDetails)
|
||||||
{
|
{
|
||||||
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
|
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
|
||||||
await _remittanceService.ChangeRemittance(Invoice.ID, item.CODID, result1);
|
{
|
||||||
|
await _remittanceService.DeleteByCODIDAndInvoiceID(Invoice.ID, item.CODID, user.RolUsers.First().CompanyID);
|
||||||
|
//await _receiptService.ADD(new Shared.DTOs.Warehouse.ReceiptDto()
|
||||||
|
//{
|
||||||
|
// CODID = item.CODID,
|
||||||
|
// Count = item.am.GetValueOrDefault(),
|
||||||
|
// Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
|
// ForSale = true,
|
||||||
|
// InvoiceID = item.InvoiceID,
|
||||||
|
// Type = TypeReceipt.Shopping,
|
||||||
|
// info = $"رسید خودکار: صورتحساب {item.InvoiceID} از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()}",
|
||||||
|
|
||||||
|
//}, user.RolUsers.First().CompanyID, true);
|
||||||
|
await _remittanceService.ADD(new Shared.DTOs.Warehouse.RemittanceDto()
|
||||||
|
{
|
||||||
|
CODID = item.CODID,
|
||||||
|
Count = item.am.GetValueOrDefault(),
|
||||||
|
Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
|
InvoiceID = result1,
|
||||||
|
Type = TypeRemittance.Sale,
|
||||||
|
info = $"حواله خودکار: از صورتحساب {result1}"
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result1));
|
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result1));
|
||||||
}
|
}
|
||||||
@@ -537,7 +607,29 @@ namespace Back.Controllers
|
|||||||
foreach (var item in Invoice.invoiceDetails)
|
foreach (var item in Invoice.invoiceDetails)
|
||||||
{
|
{
|
||||||
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
|
if (await _remittanceService.HasaRemittance(Invoice.ID, item.CODID))
|
||||||
await _remittanceService.ChangeRemittance(Invoice.ID, item.CODID, result2);
|
{
|
||||||
|
await _remittanceService.DeleteByCODIDAndInvoiceID(Invoice.ID, item.CODID, user.RolUsers.First().CompanyID);
|
||||||
|
//await _receiptService.ADD(new Shared.DTOs.Warehouse.ReceiptDto()
|
||||||
|
//{
|
||||||
|
// CODID = item.CODID,
|
||||||
|
// Count = item.am.GetValueOrDefault(),
|
||||||
|
// Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
|
// ForSale = true,
|
||||||
|
// InvoiceID = item.InvoiceID,
|
||||||
|
// Type = TypeReceipt.Shopping,
|
||||||
|
// info = $"رسید خودکار: صورتحساب {item.InvoiceID} از {Invoice.invoiceType.GetEnumDisplayName()} به {((InvoiceType)invoiceType).GetEnumDisplayName()}",
|
||||||
|
|
||||||
|
//}, user.RolUsers.First().CompanyID, true);
|
||||||
|
await _remittanceService.ADD(new Shared.DTOs.Warehouse.RemittanceDto()
|
||||||
|
{
|
||||||
|
CODID = item.CODID,
|
||||||
|
Count = item.am.GetValueOrDefault(),
|
||||||
|
Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
|
InvoiceID = result2,
|
||||||
|
Type = TypeRemittance.Sale,
|
||||||
|
info = $"حواله خودکار: از صورتحساب {result2}"
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result2));
|
return Ok(await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, result2));
|
||||||
}
|
}
|
||||||
@@ -709,6 +801,11 @@ namespace Back.Controllers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceID).Result)
|
||||||
|
return BadRequest(new List<string> {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+'\r'+
|
||||||
|
"نمیتواند برای این صورتحساب حواله صادر کنید، ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" });
|
||||||
|
|
||||||
List<string> errors = new List<string>();
|
List<string> errors = new List<string>();
|
||||||
var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
|
var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
|
||||||
if (result.invoiceType == InvoiceType.Bidding || result.invoiceType == InvoiceType.Cancellation)
|
if (result.invoiceType == InvoiceType.Bidding || result.invoiceType == InvoiceType.Cancellation)
|
||||||
@@ -720,9 +817,9 @@ namespace Back.Controllers
|
|||||||
.GroupBy(i => i.CODID).Select(g => new { CODID = g.Key, TotalAm = g.Sum(i => i.am) }))
|
.GroupBy(i => i.CODID).Select(g => new { CODID = g.Key, TotalAm = g.Sum(i => i.am) }))
|
||||||
{
|
{
|
||||||
var Inventory = await _warehouseService.Inventory(CompanyID.Value, item.CODID);
|
var Inventory = await _warehouseService.Inventory(CompanyID.Value, item.CODID);
|
||||||
if (Inventory - item.TotalAm <= 0)
|
if (Inventory - item.TotalAm < 0)
|
||||||
{
|
{
|
||||||
errors.Add($"موجودی کالا {item.CODID} کمتر از درخواست شماست");
|
errors.Add($"موجودی کالا {result.items.First(w => w.CODID == item.CODID).sstt} کمتر از درخواست شماست");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (errors.Count == 0)
|
if (errors.Count == 0)
|
||||||
@@ -737,6 +834,7 @@ namespace Back.Controllers
|
|||||||
Type = TypeRemittance.Sale,
|
Type = TypeRemittance.Sale,
|
||||||
InvoiceID = InvoiceID,
|
InvoiceID = InvoiceID,
|
||||||
Deleted = false,
|
Deleted = false,
|
||||||
|
CreateDt=DateTime.Now
|
||||||
}).ToList());
|
}).ToList());
|
||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
@@ -751,6 +849,28 @@ namespace Back.Controllers
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
[HttpPost("FreeRemittance/{InvoiceID}")]
|
||||||
|
public async Task<ActionResult> FreeRemittance(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 CompanyID = user?.RolUsers.First().CompanyID;
|
||||||
|
|
||||||
|
if (!await _servInvoice.ExistInvoiceByInvoiceID(CompanyID.Value, InvoiceID))
|
||||||
|
return NotFound();
|
||||||
|
|
||||||
|
|
||||||
|
await _receiptService.DeleteByInvoiceID(InvoiceID, CompanyID.Value);
|
||||||
|
await _remittanceService.DeleteByInvoiceID(InvoiceID, CompanyID.Value);
|
||||||
|
|
||||||
|
return Ok();
|
||||||
|
//return BadRequest(new List<string>() { $"حواله ای یافت نشد" });
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
[HttpGet("HasaRemittance/{InvoiceID}")]
|
[HttpGet("HasaRemittance/{InvoiceID}")]
|
||||||
public async Task<ActionResult> HasaRemittance(int InvoiceID)
|
public async Task<ActionResult> HasaRemittance(int InvoiceID)
|
||||||
|
@@ -26,15 +26,17 @@ namespace Back.Controllers
|
|||||||
private readonly servInvoice _servInvoice;
|
private readonly servInvoice _servInvoice;
|
||||||
private readonly RemittanceService _remittanceService;
|
private readonly RemittanceService _remittanceService;
|
||||||
private readonly WarehouseService _warehouseService;
|
private readonly WarehouseService _warehouseService;
|
||||||
public InvoiceItemController(servInvoiceItem servInvoiceItem, AUInvoiceItemValidation validationInvoiceItem
|
|
||||||
, servUser servUser, servInvoice servInvoice)
|
public InvoiceItemController(servInvoiceItem servInvoiceItem, servUser servUser, AUInvoiceItemValidation validationInvoiceItem, servInvoice servInvoice, RemittanceService remittanceService, WarehouseService warehouseService)
|
||||||
{
|
{
|
||||||
_servInvoiceItem = servInvoiceItem;
|
_servInvoiceItem = servInvoiceItem;
|
||||||
_validationInvoiceItem = validationInvoiceItem;
|
|
||||||
_servUser = servUser;
|
_servUser = servUser;
|
||||||
|
_validationInvoiceItem = validationInvoiceItem;
|
||||||
_servInvoice = servInvoice;
|
_servInvoice = servInvoice;
|
||||||
|
_remittanceService = remittanceService;
|
||||||
|
_warehouseService = warehouseService;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("AddItem")]
|
[HttpPost("AddItem")]
|
||||||
public async Task<ActionResult<bool>> AddItem([FromBody] InvoiceItemAction<InvoiceItemDTO> model)
|
public async Task<ActionResult<bool>> AddItem([FromBody] InvoiceItemAction<InvoiceItemDTO> model)
|
||||||
{
|
{
|
||||||
@@ -53,6 +55,10 @@ namespace Back.Controllers
|
|||||||
if (invoice == null)
|
if (invoice == null)
|
||||||
return BadRequest(new List<string> { "invoice notFound..." });
|
return BadRequest(new List<string> { "invoice notFound..." });
|
||||||
|
|
||||||
|
if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, model.invoiceID).Result)
|
||||||
|
return BadRequest(new List<string> {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+
|
||||||
|
"برای تغییر در آیتم ها ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" });
|
||||||
|
|
||||||
if (invoice.invoiceType == InvoiceType.Repair)
|
if (invoice.invoiceType == InvoiceType.Repair)
|
||||||
{
|
{
|
||||||
return BadRequest(new List<string> { "امکان افزودن کالا جدید در صورتحساب اصلاحی وجود ندارد" });
|
return BadRequest(new List<string> { "امکان افزودن کالا جدید در صورتحساب اصلاحی وجود ندارد" });
|
||||||
@@ -94,6 +100,7 @@ namespace Back.Controllers
|
|||||||
|
|
||||||
return Ok(await _servInvoiceItem.Add(new InvoiceItem
|
return Ok(await _servInvoiceItem.Add(new InvoiceItem
|
||||||
{
|
{
|
||||||
|
vra=model.item.vra,
|
||||||
am = model.item.am,
|
am = model.item.am,
|
||||||
fee = model.item.fee,
|
fee = model.item.fee,
|
||||||
dis = model.item.dis,
|
dis = model.item.dis,
|
||||||
@@ -123,7 +130,9 @@ namespace Back.Controllers
|
|||||||
if (invoice == null)
|
if (invoice == null)
|
||||||
return BadRequest(new List<string> { "invoice notFound..." });
|
return BadRequest(new List<string> { "invoice notFound..." });
|
||||||
|
|
||||||
|
if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, model.invoiceID).Result)
|
||||||
|
return BadRequest(new List<string> {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+
|
||||||
|
"برای تغییر در آیتم ها ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" });
|
||||||
|
|
||||||
//-----Validaton
|
//-----Validaton
|
||||||
var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, model.invoiceID, model.item, eActionValidation.update));
|
var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, model.invoiceID, model.item, eActionValidation.update));
|
||||||
@@ -178,6 +187,8 @@ namespace Back.Controllers
|
|||||||
|
|
||||||
invoice.LastChangeUserID = Convert.ToInt32(UserID);
|
invoice.LastChangeUserID = Convert.ToInt32(UserID);
|
||||||
|
|
||||||
|
var copyInvoice = (InvoiceItem)invoiceitem.Clone();
|
||||||
|
|
||||||
if (invoice.invoiceType == InvoiceType.BackFrmSale)
|
if (invoice.invoiceType == InvoiceType.BackFrmSale)
|
||||||
invoiceitem.am = model.item.am;
|
invoiceitem.am = model.item.am;
|
||||||
else
|
else
|
||||||
@@ -186,18 +197,19 @@ namespace Back.Controllers
|
|||||||
invoiceitem.fee = model.item.fee;
|
invoiceitem.fee = model.item.fee;
|
||||||
invoiceitem.dis = model.item.dis;
|
invoiceitem.dis = model.item.dis;
|
||||||
invoiceitem.CODID = model.item.CODID;
|
invoiceitem.CODID = model.item.CODID;
|
||||||
|
invoiceitem.vra = model.item.vra;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (await _servInvoice.UpdateInvoice(invoice))
|
if (await _servInvoice.UpdateInvoice(invoice))
|
||||||
{
|
{
|
||||||
if (invoiceitem.am != model.item.am || invoiceitem.CODID != model.item.CODID)
|
if (copyInvoice.am != model.item.am || copyInvoice.CODID != model.item.CODID)
|
||||||
{
|
{
|
||||||
if (await _remittanceService.HasaRemittance(invoiceitem.invoice.ID, invoiceitem.CODID))
|
if (await _remittanceService.HasaRemittance(model.invoiceID, copyInvoice.CODID))
|
||||||
{
|
{
|
||||||
var inv = await _warehouseService.Inventory(user.RolUsers.First().CompanyID, model.item.CODID);
|
var inv = await _warehouseService.Inventory(user.RolUsers.First().CompanyID, model.item.CODID);
|
||||||
if (inv - model.item.am <= 0)
|
if (inv+ copyInvoice.am - model.item.am < 0)
|
||||||
return BadRequest(new List<string> { "موجودی کالا کمتر از درخواست شماست" });
|
return BadRequest(new List<string> { "خطای انبار :"+"موجودی کالا کمتر از درخواست شماست" });
|
||||||
else await _remittanceService.DeleteByInvoiceIDandCODID(invoiceitem.invoice.ID, invoiceitem.CODID);
|
else await _remittanceService.DeleteByInvoiceIDandCODID(model.invoiceID, copyInvoice.CODID);
|
||||||
|
|
||||||
// حواله جئدید
|
// حواله جئدید
|
||||||
await _remittanceService.ADD(new Shared.DTOs.Warehouse.RemittanceDto()
|
await _remittanceService.ADD(new Shared.DTOs.Warehouse.RemittanceDto()
|
||||||
@@ -205,9 +217,9 @@ namespace Back.Controllers
|
|||||||
CODID = model.item.CODID,
|
CODID = model.item.CODID,
|
||||||
Count = model.item.am,
|
Count = model.item.am,
|
||||||
Date = DateTime.Now.ConvertMiladiToShamsi(),
|
Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
info = $"حواله خودکار از صورتحساب {invoiceitem.invoice.ID}",
|
info = $"حواله خودکار از صورتحساب {model.invoiceID}",
|
||||||
Type = TypeRemittance.Sale,
|
Type = TypeRemittance.Sale,
|
||||||
InvoiceID = invoiceitem.invoice.ID
|
InvoiceID = model.invoiceID
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,6 +245,10 @@ namespace Back.Controllers
|
|||||||
if (invoiceitem == null)
|
if (invoiceitem == null)
|
||||||
return NotFound(new List<string> { "invoice Item notFound..." });
|
return NotFound(new List<string> { "invoice Item notFound..." });
|
||||||
|
|
||||||
|
if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceItemID).Result)
|
||||||
|
return BadRequest(new List<string> {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+
|
||||||
|
"برای تغییر در آیتم ها ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" });
|
||||||
|
|
||||||
//-----Validaton
|
//-----Validaton
|
||||||
var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, invoiceitem.InvoiceID.Value, new InvoiceItemDTO(), eActionValidation.delete));
|
var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, invoiceitem.InvoiceID.Value, new InvoiceItemDTO(), eActionValidation.delete));
|
||||||
if (!resultValidationmodel.IsValid)
|
if (!resultValidationmodel.IsValid)
|
||||||
|
@@ -6,18 +6,10 @@ using Microsoft.AspNetCore.Http;
|
|||||||
using Microsoft.AspNetCore.Http.HttpResults;
|
using Microsoft.AspNetCore.Http.HttpResults;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
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;
|
||||||
using Shared.DTOs.Serch;
|
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 Shared.DTOs._TaxPayer;
|
||||||
using static System.Collections.Specialized.BitVector32;
|
|
||||||
|
|
||||||
namespace Back.Controllers
|
namespace Back.Controllers
|
||||||
{
|
{
|
||||||
@@ -152,326 +144,326 @@ namespace Back.Controllers
|
|||||||
[HttpGet("SendInvoice/{InvoiceID}")]
|
[HttpGet("SendInvoice/{InvoiceID}")]
|
||||||
public async Task<ActionResult<bool>> SendInvoice(int InvoiceID)
|
public async Task<ActionResult<bool>> SendInvoice(int InvoiceID)
|
||||||
{
|
{
|
||||||
//return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
|
return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
|
||||||
|
|
||||||
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 UserID = claim.Value;
|
||||||
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
//var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
||||||
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
//if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
||||||
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
// return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
||||||
|
|
||||||
var result = await _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
|
//var result = await _servTaxPayer.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID);
|
||||||
if (result == null)
|
//if (result == null)
|
||||||
return BadRequest(new List<string> { "صورتحساب یافت نشد" });
|
// return BadRequest(new List<string> { "صورتحساب یافت نشد" });
|
||||||
|
|
||||||
else
|
//else
|
||||||
{
|
//{
|
||||||
if (!result.PatternID.HasValue)
|
// if (!result.PatternID.HasValue)
|
||||||
return BadRequest(new List<string> { "ابتدا برای این صورتحساب الگو در نظر بگیرید" });
|
// return BadRequest(new List<string> { "ابتدا برای این صورتحساب الگو در نظر بگیرید" });
|
||||||
|
|
||||||
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> { "در وضعیت برگشت از فروش و اصلاحی باید صورتحساب مرجع به سامانه مودیان ارسال شده باشد" });
|
||||||
|
|
||||||
if (result.invoiceType == InvoiceType.Cancellation && string.IsNullOrEmpty(result.taxid))
|
// if (result.invoiceType == InvoiceType.Cancellation && string.IsNullOrEmpty(result.taxid))
|
||||||
{
|
// {
|
||||||
return BadRequest(new List<string> { "صورتحساب در وضعیت ابطالی باید صورتحساب مرجع آن به سامانه مودیان ارسال شده باشد" });
|
// return BadRequest(new List<string> { "صورتحساب در وضعیت ابطالی باید صورتحساب مرجع آن به سامانه مودیان ارسال شده باشد" });
|
||||||
|
|
||||||
}
|
// }
|
||||||
#region Inital Send
|
// #region Inital Send
|
||||||
InvoiceHeaderDto header = new InvoiceHeaderDto();
|
// InvoiceHeaderDto header = new InvoiceHeaderDto();
|
||||||
PreparationHeaderTaxInvoice preparation = new PreparationHeaderTaxInvoice(result, _actionTaxPayer);
|
// PreparationHeaderTaxInvoice preparation = new PreparationHeaderTaxInvoice(result, _actionTaxPayer);
|
||||||
|
|
||||||
|
|
||||||
int level = result.pattern.ID;
|
// int level = result.pattern.ID;
|
||||||
|
|
||||||
//header
|
// //header
|
||||||
#region header
|
// #region header
|
||||||
header = new InvoiceHeaderDto
|
// header = new InvoiceHeaderDto
|
||||||
{
|
// {
|
||||||
//شماره منحصر به فرد مالیاتی
|
// //شماره منحصر به فرد مالیاتی
|
||||||
Taxid = preparation.Taxid,
|
// Taxid = preparation.Taxid,
|
||||||
//زمان صدور
|
// //زمان صدور
|
||||||
Indatim = preparation.Indatim,
|
// Indatim = preparation.Indatim,
|
||||||
//زمان ایجاد
|
// //زمان ایجاد
|
||||||
Indati2m = preparation.Indati2m,
|
// Indati2m = preparation.Indati2m,
|
||||||
// صورتحساب نوع *
|
// // صورتحساب نوع *
|
||||||
Inty = preparation.Inty,
|
// Inty = preparation.Inty,
|
||||||
//سریال صورت حساب
|
// //سریال صورت حساب
|
||||||
Inno = preparation.Inno,
|
// Inno = preparation.Inno,
|
||||||
//شماره منحصر به فرد مالیاتی صورتحساب مرجع
|
// //شماره منحصر به فرد مالیاتی صورتحساب مرجع
|
||||||
Irtaxid = preparation.Irtaxid,
|
// Irtaxid = preparation.Irtaxid,
|
||||||
//الگوی صورتحساب *
|
// //الگوی صورتحساب *
|
||||||
Inp = preparation.Inp,
|
// Inp = preparation.Inp,
|
||||||
//موضوع صورتحساب *
|
// //موضوع صورتحساب *
|
||||||
Ins = preparation.Ins,
|
// Ins = preparation.Ins,
|
||||||
//شماره اقتصادی فروشنده به جاش شناسه ملی داده شد
|
// //شماره اقتصادی فروشنده به جاش شناسه ملی داده شد
|
||||||
Tins = preparation.Tins,
|
// Tins = preparation.Tins,
|
||||||
//نوع شخص خریدار
|
// //نوع شخص خریدار
|
||||||
Tob = preparation.Tob,
|
// Tob = preparation.Tob,
|
||||||
//شماره/شناسه ملی/شناسه مشارکت مدنی / کد فراگیر
|
// //شماره/شناسه ملی/شناسه مشارکت مدنی / کد فراگیر
|
||||||
Bid = preparation.Bid,
|
// Bid = preparation.Bid,
|
||||||
//شماره اقتصادی خریدار
|
// //شماره اقتصادی خریدار
|
||||||
Tinb = preparation.Tinb,
|
// Tinb = preparation.Tinb,
|
||||||
//کد شعبه فروشنده
|
// //کد شعبه فروشنده
|
||||||
Sbc = preparation.Sbc,
|
// Sbc = preparation.Sbc,
|
||||||
//کد پستی خریدار
|
// //کد پستی خریدار
|
||||||
Bpc = preparation.Bpc,
|
// Bpc = preparation.Bpc,
|
||||||
//کد شعبه خریدار
|
// //کد شعبه خریدار
|
||||||
Bbc = preparation.Bbc,
|
// Bbc = preparation.Bbc,
|
||||||
//نوع پرواز
|
// //نوع پرواز
|
||||||
Ft = preparation.Ft,
|
// Ft = preparation.Ft,
|
||||||
//شماره گذرنامه خریدار
|
// //شماره گذرنامه خریدار
|
||||||
Bpn = preparation.Bpn,
|
// Bpn = preparation.Bpn,
|
||||||
//شماره پروانه گمرکی
|
// //شماره پروانه گمرکی
|
||||||
Scln = preparation.Scln,
|
// Scln = preparation.Scln,
|
||||||
//کد گمرک محل اظهار فروشنده
|
// //کد گمرک محل اظهار فروشنده
|
||||||
Scc = preparation.Scc,
|
// Scc = preparation.Scc,
|
||||||
//شماره کدتاژ اظهارنامه گمرکی
|
// //شماره کدتاژ اظهارنامه گمرکی
|
||||||
Cdcn = preparation.Cdcn,
|
// Cdcn = preparation.Cdcn,
|
||||||
//تاریخ کوتاژ اظهارنامه گمرکی
|
// //تاریخ کوتاژ اظهارنامه گمرکی
|
||||||
Cdcd = preparation.Cdcd,
|
// Cdcd = preparation.Cdcd,
|
||||||
//شناسه یکتای ثبت قزارداد فروشنده
|
// //شناسه یکتای ثبت قزارداد فروشنده
|
||||||
Crn = preparation.Crn,
|
// Crn = preparation.Crn,
|
||||||
//شماره اشتراک/شناسه قبض بهره بردار
|
// //شماره اشتراک/شناسه قبض بهره بردار
|
||||||
Billid = preparation.Billid,
|
// Billid = preparation.Billid,
|
||||||
//مجموع مبلغ قبل از کسر تخفیف
|
// //مجموع مبلغ قبل از کسر تخفیف
|
||||||
Tprdis = preparation.Tprdis,
|
// Tprdis = preparation.Tprdis,
|
||||||
//مجموع تخفیفات
|
// //مجموع تخفیفات
|
||||||
Tdis = preparation.Tdis,
|
// Tdis = preparation.Tdis,
|
||||||
// مجموع مبلغ پس از کسر تخفیف
|
// // مجموع مبلغ پس از کسر تخفیف
|
||||||
Tadis = preparation.Tadis,
|
// Tadis = preparation.Tadis,
|
||||||
//مجموع مالیات بر ارزش افزوده
|
// //مجموع مالیات بر ارزش افزوده
|
||||||
Tvam = preparation.Tvam,
|
// Tvam = preparation.Tvam,
|
||||||
// مجموع سایر مالیات، عوارض و وجوه قانونی
|
// // مجموع سایر مالیات، عوارض و وجوه قانونی
|
||||||
Todam = preparation.Todam,
|
// Todam = preparation.Todam,
|
||||||
//صورتحساب مجموع
|
// //صورتحساب مجموع
|
||||||
Tbill = preparation.Tbill,
|
// Tbill = preparation.Tbill,
|
||||||
//مجموع وزن خالض
|
// //مجموع وزن خالض
|
||||||
Tonw = preparation.Tonw,
|
// Tonw = preparation.Tonw,
|
||||||
//مجموع ارزش ریالی
|
// //مجموع ارزش ریالی
|
||||||
Torv = preparation.Torv,
|
// Torv = preparation.Torv,
|
||||||
//مجموع ارزش ارزی
|
// //مجموع ارزش ارزی
|
||||||
Tocv = preparation.Tocv,
|
// Tocv = preparation.Tocv,
|
||||||
// تسویه روش
|
// // تسویه روش
|
||||||
Setm = preparation.Setm,
|
// Setm = preparation.Setm,
|
||||||
//نقدی پرداختی مبلغ
|
// //نقدی پرداختی مبلغ
|
||||||
Cap = preparation.Cap,
|
// Cap = preparation.Cap,
|
||||||
//پرداختی نسیه
|
// //پرداختی نسیه
|
||||||
Insp = preparation.Insp,
|
// Insp = preparation.Insp,
|
||||||
//مجموع سهم مالیات بر ارزش افزوده از پرداخت
|
// //مجموع سهم مالیات بر ارزش افزوده از پرداخت
|
||||||
Tvop = preparation.Tvop,
|
// Tvop = preparation.Tvop,
|
||||||
//مالیات موضوع 17
|
// //مالیات موضوع 17
|
||||||
Tax17 = preparation.Tax17,
|
// Tax17 = preparation.Tax17,
|
||||||
//شماره اقتصادی آژانس
|
// //شماره اقتصادی آژانس
|
||||||
Tinc = preparation.Tinc,
|
// Tinc = preparation.Tinc,
|
||||||
//تاریخ اعلامیه فروش
|
// //تاریخ اعلامیه فروش
|
||||||
Asd=null,
|
// Asd=null,
|
||||||
//شماره اعلامیه فروش
|
// //شماره اعلامیه فروش
|
||||||
Asn = null,
|
// Asn = null,
|
||||||
//شماره ناوگان
|
// //شماره ناوگان
|
||||||
Cno=null,
|
// Cno=null,
|
||||||
//شهر مقصد
|
// //شهر مقصد
|
||||||
Dci = null,
|
// Dci = null,
|
||||||
//کشور مقصد
|
// //کشور مقصد
|
||||||
Dco = null,
|
// Dco = null,
|
||||||
//کد ملی/ کد فراگیر اتباع غیر ایرانی راننده) در حمل و نقل جاده ای(
|
// //کد ملی/ کد فراگیر اتباع غیر ایرانی راننده) در حمل و نقل جاده ای(
|
||||||
Did = null,
|
// Did = null,
|
||||||
//شماره بارنامه
|
// //شماره بارنامه
|
||||||
Lno = null,
|
// Lno = null,
|
||||||
//شماره بارنامه مرجع
|
// //شماره بارنامه مرجع
|
||||||
Lrno = null,
|
// Lrno = null,
|
||||||
//نوع بارنامه/ نوع حمل
|
// //نوع بارنامه/ نوع حمل
|
||||||
Lt = null,
|
// Lt = null,
|
||||||
//شهر مبدا
|
// //شهر مبدا
|
||||||
Oci = null,
|
// Oci = null,
|
||||||
//کشور مبدا
|
// //کشور مبدا
|
||||||
Ocu = null,
|
// Ocu = null,
|
||||||
//شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی/ کد فراگیر اتباع غیر ایرانی گیرنده
|
// //شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی/ کد فراگیر اتباع غیر ایرانی گیرنده
|
||||||
Rid = null,
|
// Rid = null,
|
||||||
//کالاهای حمل شده
|
// //کالاهای حمل شده
|
||||||
Sg = new List<ShippingGoodDto>(),
|
// Sg = new List<ShippingGoodDto>(),
|
||||||
//شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی / کد فراگیر اتباع غیر ایرانی فرستنده
|
// //شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی / کد فراگیر اتباع غیر ایرانی فرستنده
|
||||||
Tid =null
|
// Tid =null
|
||||||
|
|
||||||
};
|
// };
|
||||||
#endregion header
|
// #endregion header
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//body
|
// //body
|
||||||
List<InvoiceBodyDto> InvoiceBody = new List<InvoiceBodyDto>();
|
// List<InvoiceBodyDto> InvoiceBody = new List<InvoiceBodyDto>();
|
||||||
foreach (var bitem in result.invoiceDetails)
|
// foreach (var bitem in result.invoiceDetails)
|
||||||
{
|
// {
|
||||||
InvoiceBodyDto item = new InvoiceBodyDto();
|
// InvoiceBodyDto item = new InvoiceBodyDto();
|
||||||
PreparationBodyTaxInvoice preparationBody = new PreparationBodyTaxInvoice(bitem, level);
|
// PreparationBodyTaxInvoice preparationBody = new PreparationBodyTaxInvoice(bitem, level);
|
||||||
#region body
|
// #region body
|
||||||
|
|
||||||
item = new InvoiceBodyDto
|
// item = new InvoiceBodyDto
|
||||||
{
|
// {
|
||||||
//شناسه کالا / خدمت
|
// //شناسه کالا / خدمت
|
||||||
Sstid = preparationBody.Sstid,
|
// Sstid = preparationBody.Sstid,
|
||||||
//شرح کاال/خدمت
|
// //شرح کاال/خدمت
|
||||||
Sstt = preparationBody.Sstt,
|
// Sstt = preparationBody.Sstt,
|
||||||
// تعداد
|
// // تعداد
|
||||||
Am = preparationBody.Am,
|
// Am = preparationBody.Am,
|
||||||
//واحد اندازه گیری
|
// //واحد اندازه گیری
|
||||||
Mu = preparationBody.Mu,
|
// Mu = preparationBody.Mu,
|
||||||
//وزن خالص
|
// //وزن خالص
|
||||||
Nw= preparationBody.Nw,
|
// Nw= preparationBody.Nw,
|
||||||
// مبلغ واحد
|
// // مبلغ واحد
|
||||||
Fee = preparationBody.Fee,
|
// Fee = preparationBody.Fee,
|
||||||
//میزان ارز
|
// //میزان ارز
|
||||||
Cfee = preparationBody.Cfee ,
|
// Cfee = preparationBody.Cfee ,
|
||||||
//نوع ارز
|
// //نوع ارز
|
||||||
Cut = preparationBody.Cut,
|
// Cut = preparationBody.Cut,
|
||||||
//نرخ برابری ارز با ریال
|
// //نرخ برابری ارز با ریال
|
||||||
Exr = preparationBody.Exr,
|
// Exr = preparationBody.Exr,
|
||||||
// ارزش ریالی کاا
|
// // ارزش ریالی کاا
|
||||||
Ssrv= preparationBody.Ssrv,
|
// Ssrv= preparationBody.Ssrv,
|
||||||
// ارزش ارزی کاا
|
// // ارزش ارزی کاا
|
||||||
Sscv= preparationBody.Sscv,
|
// Sscv= preparationBody.Sscv,
|
||||||
//مبلغ قبل از تخفیف
|
// //مبلغ قبل از تخفیف
|
||||||
Prdis = preparationBody.Prdis,
|
// Prdis = preparationBody.Prdis,
|
||||||
//مبلغ تخفیف
|
// //مبلغ تخفیف
|
||||||
Dis = preparationBody.Dis,
|
// Dis = preparationBody.Dis,
|
||||||
//مبلغ بعد از تخفیف
|
// //مبلغ بعد از تخفیف
|
||||||
Adis = preparationBody.Adis,
|
// Adis = preparationBody.Adis,
|
||||||
//نرخ مالیات بر ارزش افزوده
|
// //نرخ مالیات بر ارزش افزوده
|
||||||
Vra = preparationBody.Vra,
|
// Vra = preparationBody.Vra,
|
||||||
//مبلغ مالیات بر ارزش افزوده
|
// //مبلغ مالیات بر ارزش افزوده
|
||||||
Vam = preparationBody.Vam,
|
// Vam = preparationBody.Vam,
|
||||||
//موضوع سایر مالیات و عوارض
|
// //موضوع سایر مالیات و عوارض
|
||||||
Odt = preparationBody.Odt,
|
// Odt = preparationBody.Odt,
|
||||||
//نرخ سایر مالیات و عوارض
|
// //نرخ سایر مالیات و عوارض
|
||||||
Odr = preparationBody.Odr,
|
// Odr = preparationBody.Odr,
|
||||||
//مبلغ سایر مالیات و عوارض
|
// //مبلغ سایر مالیات و عوارض
|
||||||
Odam = preparationBody.Odam,
|
// Odam = preparationBody.Odam,
|
||||||
//موضوع سایر وجوه قانونی
|
// //موضوع سایر وجوه قانونی
|
||||||
Olt = preparationBody.Olt,
|
// Olt = preparationBody.Olt,
|
||||||
//نرخ سایر وجوه قانونی
|
// //نرخ سایر وجوه قانونی
|
||||||
Olr = preparationBody.Olr,
|
// Olr = preparationBody.Olr,
|
||||||
//مبلغ سایر وجوه قانونی
|
// //مبلغ سایر وجوه قانونی
|
||||||
Olam = preparationBody.Olam,
|
// Olam = preparationBody.Olam,
|
||||||
//اجرت ساخت
|
// //اجرت ساخت
|
||||||
Consfee = preparationBody.Consfee,
|
// Consfee = preparationBody.Consfee,
|
||||||
// سود فروشنده
|
// // سود فروشنده
|
||||||
Spro= preparationBody.Spro,
|
// Spro= preparationBody.Spro,
|
||||||
//حقالعمل
|
// //حقالعمل
|
||||||
Bros= preparationBody.Bros,
|
// Bros= preparationBody.Bros,
|
||||||
//جمع کل اجرت، حقالعمل و سود
|
// //جمع کل اجرت، حقالعمل و سود
|
||||||
Tcpbs= preparationBody.Tcpbs,
|
// Tcpbs= preparationBody.Tcpbs,
|
||||||
//سهم نقدی از پرداخت
|
// //سهم نقدی از پرداخت
|
||||||
Cop = preparationBody.Cop,
|
// Cop = preparationBody.Cop,
|
||||||
//سهم مالیات بر لرزش افزوده از پرداخت
|
// //سهم مالیات بر لرزش افزوده از پرداخت
|
||||||
Vop = preparationBody.Vop,
|
// Vop = preparationBody.Vop,
|
||||||
//شناسه یکتای ثبت قرارداد حق العمل کاری
|
// //شناسه یکتای ثبت قرارداد حق العمل کاری
|
||||||
Bsrn = preparationBody.Bsrn,
|
// Bsrn = preparationBody.Bsrn,
|
||||||
// مبلغ کل کالا / خدمت
|
// // مبلغ کل کالا / خدمت
|
||||||
Tsstam = preparationBody.Tsstam,
|
// Tsstam = preparationBody.Tsstam,
|
||||||
//عیار
|
// //عیار
|
||||||
Cui = preparationBody.Cui,
|
// Cui = preparationBody.Cui,
|
||||||
// نرخ خرید ارز
|
// // نرخ خرید ارز
|
||||||
Cpr = preparationBody.Cpr,
|
// Cpr = preparationBody.Cpr,
|
||||||
//ماخذ مالیات بر ارزش افزوده در الگوی فروش ارز
|
// //ماخذ مالیات بر ارزش افزوده در الگوی فروش ارز
|
||||||
Sovat = preparationBody.Sovat
|
// Sovat = preparationBody.Sovat
|
||||||
};
|
// };
|
||||||
#endregion
|
// #endregion
|
||||||
InvoiceBody.Add(item);
|
// InvoiceBody.Add(item);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
//Pay
|
// //Pay
|
||||||
List<PaymentDto> InvoicePay = new List<PaymentDto>();
|
// List<PaymentDto> InvoicePay = new List<PaymentDto>();
|
||||||
if (result.setm==1 || result.setm == 3)
|
// if (result.setm==1 || result.setm == 3)
|
||||||
{
|
// {
|
||||||
if (level != 10)
|
// if (level != 10)
|
||||||
foreach (var pitem in result.payments)
|
// foreach (var pitem in result.payments)
|
||||||
{
|
// {
|
||||||
|
|
||||||
PaymentDto payment = new PaymentDto();
|
// PaymentDto payment = new PaymentDto();
|
||||||
payment = new PaymentDto
|
// payment = new PaymentDto
|
||||||
{
|
// {
|
||||||
Iinn = pitem.iinn,
|
// Iinn = pitem.iinn,
|
||||||
Acn = pitem.acn,
|
// Acn = pitem.acn,
|
||||||
Trmn = pitem.trmn,
|
// Trmn = pitem.trmn,
|
||||||
Pmt = pitem.pmt,
|
// Pmt = pitem.pmt,
|
||||||
Trn = pitem.trn,
|
// Trn = pitem.trn,
|
||||||
Pcn = pitem.pcn,
|
// Pcn = pitem.pcn,
|
||||||
Pid = pitem.pid,
|
// Pid = pitem.pid,
|
||||||
Pdt = pitem.pdt,
|
// Pdt = pitem.pdt,
|
||||||
Pv = pitem.pv,
|
// Pv = pitem.pv,
|
||||||
|
|
||||||
};
|
// };
|
||||||
|
|
||||||
InvoicePay.Add(payment);
|
// InvoicePay.Add(payment);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var responseModel = await _actionTaxPayer.SendInvoice(user.RolUsers.First().CompanyID, header, InvoiceBody, InvoicePay);
|
// var responseModel = await _actionTaxPayer.SendInvoice(user.RolUsers.First().CompanyID, header, InvoiceBody, InvoicePay);
|
||||||
if (responseModel == null)
|
// if (responseModel == null)
|
||||||
{
|
// {
|
||||||
return BadRequest(new List<string> { "خطا در ورود به سامانه مودیان" });
|
// return BadRequest(new List<string> { "خطا در ورود به سامانه مودیان" });
|
||||||
}
|
// }
|
||||||
else if (responseModel.Status == 200 && (responseModel.Body.Errors == null || responseModel.Body.Errors.Count == 0))
|
// else if (responseModel.Status == 200 && (responseModel.Body.Errors == null || responseModel.Body.Errors.Count == 0))
|
||||||
{
|
// {
|
||||||
foreach (var item in responseModel.Body.Result)
|
// foreach (var item in responseModel.Body.Result)
|
||||||
{
|
// {
|
||||||
|
|
||||||
|
|
||||||
var ressenttax = new SentTax
|
// var ressenttax = new SentTax
|
||||||
{
|
// {
|
||||||
InvoiceID = result.ID,
|
// InvoiceID = result.ID,
|
||||||
Date = DateTime.Now.ConvertMiladiToShamsi(),
|
// Date = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
Time = $"{DateTime.Now.Hour}:{DateTime.Now.Minute}:{DateTime.Now.Second}",
|
// Time = $"{DateTime.Now.Hour}:{DateTime.Now.Minute}:{DateTime.Now.Second}",
|
||||||
InvoiceType = result.invoiceType,
|
// InvoiceType = result.invoiceType,
|
||||||
ReferenceNumber = item.ReferenceNumber,
|
// ReferenceNumber = item.ReferenceNumber,
|
||||||
uId = item.Uid,
|
// uId = item.Uid,
|
||||||
SentStatus = SentStatus.Send,
|
// SentStatus = SentStatus.Send,
|
||||||
InvoiceModel = JsonConvert.SerializeObject(result, Formatting.Indented, new JsonSerializerSettings
|
// InvoiceModel = JsonConvert.SerializeObject(result, Formatting.Indented, new JsonSerializerSettings
|
||||||
{
|
// {
|
||||||
PreserveReferencesHandling = PreserveReferencesHandling.Objects
|
// PreserveReferencesHandling = PreserveReferencesHandling.Objects
|
||||||
}),
|
// }),
|
||||||
ResponseModel = JsonConvert.SerializeObject(responseModel)
|
// ResponseModel = JsonConvert.SerializeObject(responseModel)
|
||||||
|
|
||||||
};
|
// };
|
||||||
await _servTaxPayer.AddSentTax(ressenttax);
|
// await _servTaxPayer.AddSentTax(ressenttax);
|
||||||
}
|
// }
|
||||||
result.taxid = header.Taxid;
|
// result.taxid = header.Taxid;
|
||||||
result.irtaxid = header.Irtaxid;
|
// result.irtaxid = header.Irtaxid;
|
||||||
return Ok(await _servTaxPayer.UpdateInvoice(result));
|
// return Ok(await _servTaxPayer.UpdateInvoice(result));
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
string errors = "";
|
// string errors = "";
|
||||||
foreach (var item in responseModel.Body.Errors)
|
// foreach (var item in responseModel.Body.Errors)
|
||||||
errors += '\n' + $"{item.ErrorCode}:{item.Detail}";
|
// errors += '\n' + $"{item.ErrorCode}:{item.Detail}";
|
||||||
|
|
||||||
return BadRequest(new List<string> { errors });
|
// return BadRequest(new List<string> { errors });
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
// #endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
[HttpPost("GetAllSentTax")]
|
[HttpPost("GetAllSentTax")]
|
||||||
public async Task<ActionResult<PagingDto<SentTaxDto>>> GetSentTax([FromBody] ItemSerchGetSentTax item)
|
public async Task<ActionResult<PagingDto<SentTaxDto>>> GetSentTax([FromBody] ItemSerchGetSentTax item)
|
||||||
@@ -484,88 +476,90 @@ namespace Back.Controllers
|
|||||||
[HttpGet("GetResult/{ID}")]
|
[HttpGet("GetResult/{ID}")]
|
||||||
public async Task<ActionResult<DataInSendTaxDto>> GetResultByUid(int ID)
|
public async Task<ActionResult<DataInSendTaxDto>> GetResultByUid(int ID)
|
||||||
{
|
{
|
||||||
try
|
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));
|
|
||||||
var item = await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, ID);
|
|
||||||
if (item == null)
|
|
||||||
return BadRequest(new List<string> { "یافت نشد" });
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(item.uId))
|
//try
|
||||||
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));
|
||||||
|
// var item = await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, ID);
|
||||||
|
// if (item == null)
|
||||||
|
// return BadRequest(new List<string> { "یافت نشد" });
|
||||||
|
|
||||||
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
// if (string.IsNullOrEmpty(item.uId))
|
||||||
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
// return BadRequest(new List<string> { "کد پیگیری یافت نشد" });
|
||||||
|
|
||||||
DataInSendTaxDto desData = new DataInSendTaxDto();
|
// 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))
|
// if (item.SentStatus == SentStatus.Unsuccessful && !string.IsNullOrEmpty(item.ErrorsModel))
|
||||||
{
|
// {
|
||||||
List<MessageInSendTaxDto> inquiryerrorResult = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(item.ErrorsModel);
|
// List<MessageInSendTaxDto> inquiryerrorResult = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(item.ErrorsModel);
|
||||||
|
|
||||||
InquiryResultModel inquiryResult = JsonConvert.DeserializeObject<InquiryResultModel>(item.InquiryResultModel);
|
// InquiryResultModel inquiryResult = JsonConvert.DeserializeObject<InquiryResultModel>(item.InquiryResultModel);
|
||||||
if (inquiryResult.Data != null)
|
// if (inquiryResult.Data != null)
|
||||||
{
|
// {
|
||||||
|
|
||||||
desData = new DataInSendTaxDto();
|
// desData = new DataInSendTaxDto();
|
||||||
desData.SentStatus = SentStatus.Unsuccessful;
|
// desData.SentStatus = SentStatus.Unsuccessful;
|
||||||
desData.error = inquiryerrorResult;
|
// desData.error = inquiryerrorResult;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
return Ok(desData);
|
// return Ok(desData);
|
||||||
}
|
// }
|
||||||
else if (item.SentStatus == SentStatus.Send
|
// else if (item.SentStatus == SentStatus.Send
|
||||||
|| item.SentStatus == SentStatus.pending
|
// || item.SentStatus == SentStatus.pending
|
||||||
|| item.SentStatus == SentStatus.IN_PROGRESS
|
// || item.SentStatus == SentStatus.IN_PROGRESS
|
||||||
|| item.SentStatus == SentStatus.Unsuccessful)
|
// || item.SentStatus == SentStatus.Unsuccessful)
|
||||||
{
|
// {
|
||||||
|
|
||||||
//ta imja
|
// //ta imja
|
||||||
var result = await _actionTaxPayer.GetResultByUid(user.RolUsers.First().CompanyID, item.uId);
|
// var result = await _actionTaxPayer.GetResultByUid(user.RolUsers.First().CompanyID, item.uId);
|
||||||
if (result == null)
|
// if (result == null)
|
||||||
return BadRequest(new List<string> { "پاسخی از سازمان دریافت نشد" });
|
// return BadRequest(new List<string> { "پاسخی از سازمان دریافت نشد" });
|
||||||
|
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
item.InquiryResultModel = JsonConvert.SerializeObject(result);
|
// item.InquiryResultModel = JsonConvert.SerializeObject(result);
|
||||||
if (result.Data != null)
|
// if (result.Data != null)
|
||||||
{
|
// {
|
||||||
desData = JsonConvert.DeserializeObject<DataInSendTaxDto>(result.Data.ToString());
|
// desData = JsonConvert.DeserializeObject<DataInSendTaxDto>(result.Data.ToString());
|
||||||
if (desData == null)
|
// if (desData == null)
|
||||||
{
|
// {
|
||||||
desData = new DataInSendTaxDto();
|
// desData = new DataInSendTaxDto();
|
||||||
desData.error = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(result.Data.ToString());
|
// desData.error = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(result.Data.ToString());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
desData.SentStatus = item.SentStatus =
|
// desData.SentStatus = item.SentStatus =
|
||||||
result.Status == "FAILED" ? SentStatus.Unsuccessful
|
// result.Status == "FAILED" ? SentStatus.Unsuccessful
|
||||||
: result.Status == "PENDING" ? SentStatus.pending
|
// : result.Status == "PENDING" ? SentStatus.pending
|
||||||
: result.Status == "SUCCESS" ? SentStatus.Successful
|
// : result.Status == "SUCCESS" ? SentStatus.Successful
|
||||||
: result.Status == "NOT_FOUND" ? SentStatus.NOT_FOUND
|
// : result.Status == "NOT_FOUND" ? SentStatus.NOT_FOUND
|
||||||
: result.Status == "IN_PROGRESS" ? SentStatus.IN_PROGRESS
|
// : result.Status == "IN_PROGRESS" ? SentStatus.IN_PROGRESS
|
||||||
: SentStatus.Unknown;
|
// : SentStatus.Unknown;
|
||||||
|
|
||||||
if (item.SentStatus == SentStatus.Unsuccessful)
|
// if (item.SentStatus == SentStatus.Unsuccessful)
|
||||||
item.ErrorsModel = JsonConvert.SerializeObject(desData.error);
|
// item.ErrorsModel = JsonConvert.SerializeObject(desData.error);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
if (await _servTaxPayer.UpdateSentTax(item)) return Ok(desData);
|
// if (await _servTaxPayer.UpdateSentTax(item)) return Ok(desData);
|
||||||
|
|
||||||
else return BadRequest(new List<string> { "خطای در ذخیره سازی" });
|
// else return BadRequest(new List<string> { "خطای در ذخیره سازی" });
|
||||||
}
|
// }
|
||||||
return BadRequest(new List<string> { "در این وضعیت امکان پذیر نمی باشد" });
|
// return BadRequest(new List<string> { "در این وضعیت امکان پذیر نمی باشد" });
|
||||||
}
|
//}
|
||||||
catch (Exception ex)
|
//catch (Exception ex)
|
||||||
{
|
//{
|
||||||
return BadRequest(new List<string> { "خطای ناشناخته" });
|
// return BadRequest(new List<string> { "خطای ناشناخته" });
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
[HttpGet("GetBillTypes")]
|
[HttpGet("GetBillTypes")]
|
||||||
public async Task<ActionResult<List<IdName<int>>>> GetBillTypes()
|
public async Task<ActionResult<List<IdName<int>>>> GetBillTypes()
|
||||||
@@ -585,26 +579,30 @@ namespace Back.Controllers
|
|||||||
[HttpGet("EconomicCodeInformation")]
|
[HttpGet("EconomicCodeInformation")]
|
||||||
public async Task<ActionResult<EconomicCodeModelDto>> GetEconomicCodeInformation(string item)
|
public async Task<ActionResult<EconomicCodeModelDto>> GetEconomicCodeInformation(string item)
|
||||||
{
|
{
|
||||||
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
|
||||||
var UserID = claim.Value;
|
|
||||||
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
//var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
||||||
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
//var UserID = claim.Value;
|
||||||
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
//var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
||||||
var result=await _actionTaxPayer.GetEconomicCodeInformation(item);
|
//if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
||||||
if (result == null) return NotFound();
|
// return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
||||||
return Ok(result);
|
//var result=await _actionTaxPayer.GetEconomicCodeInformation(item);
|
||||||
|
//if (result == null) return NotFound();
|
||||||
|
//return Ok(result);
|
||||||
}
|
}
|
||||||
[HttpGet("FiscalInformation")]
|
[HttpGet("FiscalInformation")]
|
||||||
public async Task<ActionResult<FiscalInformationModelDto>> GetFiscalInformation(string item)
|
public async Task<ActionResult<FiscalInformationModelDto>> GetFiscalInformation(string item)
|
||||||
{
|
{
|
||||||
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
return BadRequest(new List<string> { "در حال حاضر سامانه مودیان در دسترس نمی باشد" });
|
||||||
var UserID = claim.Value;
|
|
||||||
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
//var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
|
||||||
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
//var UserID = claim.Value;
|
||||||
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
//var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
||||||
var result=await _actionTaxPayer.GetFiscalInformation(item);
|
//if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
|
||||||
if (result == null) return NotFound();
|
// return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
|
||||||
return Ok(result);
|
//var result=await _actionTaxPayer.GetFiscalInformation(item);
|
||||||
|
//if (result == null) return NotFound();
|
||||||
|
//return Ok(result);
|
||||||
}
|
}
|
||||||
[HttpGet("CodInTaxPayerHaveBeenSentSuccessfully/{CODID}")]
|
[HttpGet("CodInTaxPayerHaveBeenSentSuccessfully/{CODID}")]
|
||||||
public async Task<ActionResult<bool>> CodInTaxPayerHaveBeenSentSuccessfully(int CODID)
|
public async Task<ActionResult<bool>> CodInTaxPayerHaveBeenSentSuccessfully(int CODID)
|
||||||
|
@@ -13,6 +13,13 @@ namespace Back.Controllers.Warehouse
|
|||||||
{
|
{
|
||||||
private readonly WarehouseService _warehouseService;
|
private readonly WarehouseService _warehouseService;
|
||||||
private readonly servUser _servUser;
|
private readonly servUser _servUser;
|
||||||
|
|
||||||
|
public WarehouseController(WarehouseService warehouseService, servUser servUser)
|
||||||
|
{
|
||||||
|
_warehouseService = warehouseService;
|
||||||
|
_servUser = servUser;
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet("Circulation")]
|
[HttpGet("Circulation")]
|
||||||
public async Task<IActionResult> Circulation(string date = "", int CODID = 0, int PageIndex = 1, int PageSize = 5)
|
public async Task<IActionResult> Circulation(string date = "", int CODID = 0, int PageIndex = 1, int PageSize = 5)
|
||||||
{
|
{
|
||||||
@@ -20,7 +27,7 @@ namespace Back.Controllers.Warehouse
|
|||||||
var UserID = claim.Value;
|
var UserID = claim.Value;
|
||||||
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
|
||||||
var CompanyID = user.RolUsers.First().CompanyID;
|
var CompanyID = user.RolUsers.First().CompanyID;
|
||||||
return Ok(await _warehouseService.Circulation(CompanyID,date,CODID));
|
return Ok(await _warehouseService.Circulation(CompanyID,date,CODID,PageIndex,PageSize));
|
||||||
}
|
}
|
||||||
[HttpGet("Inventory/{CODID}")]
|
[HttpGet("Inventory/{CODID}")]
|
||||||
public async Task<IActionResult> Inventory(int CODID)
|
public async Task<IActionResult> Inventory(int CODID)
|
||||||
|
@@ -3,7 +3,6 @@ using Back.Services;
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Shared.DTOs;
|
using Shared.DTOs;
|
||||||
using Shared.DTOs.Serch;
|
using Shared.DTOs.Serch;
|
||||||
|
|
||||||
|
@@ -3,7 +3,6 @@ using System.ComponentModel.DataAnnotations.Schema;
|
|||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Back.Common;
|
using Back.Common;
|
||||||
using Shared.DTOs;
|
using Shared.DTOs;
|
||||||
using TaxCollectData.Library.Dto.Content;
|
|
||||||
namespace Back.Data.Models
|
namespace Back.Data.Models
|
||||||
{
|
{
|
||||||
public class Invoice : ICloneable
|
public class Invoice : ICloneable
|
||||||
@@ -148,7 +147,7 @@ namespace Back.Data.Models
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return pattern.BillTypeID == 3 || (pattern.BillTypeID == 2 && pattern.ID == 10)
|
return pattern!=null && (pattern.BillTypeID == 3 || (pattern.BillTypeID == 2 && pattern.ID == 10))
|
||||||
? 1
|
? 1
|
||||||
: _setm;
|
: _setm;
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,7 @@ using System.Reflection.Metadata.Ecma335;
|
|||||||
|
|
||||||
namespace Back.Data.Models
|
namespace Back.Data.Models
|
||||||
{
|
{
|
||||||
public class InvoiceItem
|
public class InvoiceItem : ICloneable
|
||||||
{
|
{
|
||||||
#region Key
|
#region Key
|
||||||
public int ID { get; set; }
|
public int ID { get; set; }
|
||||||
@@ -64,18 +64,16 @@ namespace Back.Data.Models
|
|||||||
//مبلغ قبل از تخفیف
|
//مبلغ قبل از تخفیف
|
||||||
[MaxLength(18)]
|
[MaxLength(18)]
|
||||||
public decimal? prdis { get { return am * fee; } }
|
public decimal? prdis { get { return am * fee; } }
|
||||||
//نرخ مالیات بر ازش افزوده
|
|
||||||
[MaxLength(5)]
|
|
||||||
public decimal? vra { get { return
|
|
||||||
//صادرات مالیات ندارد
|
|
||||||
invoice?.pattern?.ID == 10 ? 0
|
|
||||||
:cODItem != null ? cODItem.TaxRate
|
|
||||||
: null; } }
|
|
||||||
//واحد اندازه گیری عنوان
|
//واحد اندازه گیری عنوان
|
||||||
public string? unitTitle { get { return cODItem!=null ? cODItem.CODUnit.Title : null; } }
|
public string? unitTitle { get { return cODItem!=null ? cODItem.CODUnit.Title : null; } }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region fild
|
#region fild
|
||||||
|
//نرخ مالیات بر ازش افزوده
|
||||||
|
[MaxLength(5)]
|
||||||
|
public decimal? vra { get; set; }
|
||||||
//تعداد/مقدار
|
//تعداد/مقدار
|
||||||
[MaxLength(36)]
|
[MaxLength(36)]
|
||||||
public decimal? am { get; set; }
|
public decimal? am { get; set; }
|
||||||
@@ -147,6 +145,11 @@ namespace Back.Data.Models
|
|||||||
|
|
||||||
[ForeignKey("CODID")]
|
[ForeignKey("CODID")]
|
||||||
public virtual CODItem cODItem { get; set; }
|
public virtual CODItem cODItem { get; set; }
|
||||||
|
|
||||||
|
public object Clone()
|
||||||
|
{
|
||||||
|
return this.MemberwiseClone();
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@ namespace Back.Data.Models.Warehouse
|
|||||||
public int CODID { get; set; }
|
public int CODID { get; set; }
|
||||||
public decimal Count { get; set; }
|
public decimal Count { get; set; }
|
||||||
public string Date { get; set; }
|
public string Date { get; set; }
|
||||||
|
public DateTime CreateDt { get; set; }
|
||||||
public bool ForSale { get; set; }
|
public bool ForSale { get; set; }
|
||||||
public TypeReceipt Type { get; set; }
|
public TypeReceipt Type { get; set; }
|
||||||
public string info { get; set; }
|
public string info { get; set; }
|
||||||
|
@@ -11,6 +11,8 @@ namespace Back.Data.Models.Warehouse
|
|||||||
public int CODID { get; set; }
|
public int CODID { get; set; }
|
||||||
public decimal Count { get; set; }
|
public decimal Count { get; set; }
|
||||||
public string Date { get; set; }
|
public string Date { get; set; }
|
||||||
|
public DateTime CreateDt { get; set; }
|
||||||
|
|
||||||
public TypeRemittance Type { get; set; }
|
public TypeRemittance Type { get; set; }
|
||||||
public string info { get; set; }
|
public string info { get; set; }
|
||||||
public int? InvoiceID { get; set; }
|
public int? InvoiceID { get; set; }
|
||||||
|
15
Back/DockerCommand.txt
Normal file
15
Back/DockerCommand.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
from run E:\TaxPayerFULL
|
||||||
|
|
||||||
|
docker build -f back\Dockerfile -t api_moadiran .
|
||||||
|
docker run --name api_moadiran -d -p 3201:8080 api_moadiran
|
||||||
|
|
||||||
|
یکی از مشکلات این پروژه یکی کنابخانه سامانه مودیان بود که وقتی خود کنابخانه رو ریختیم کنار پروژه و در داکزفایل آدرسشو دادیم درست شد ولی ما کلا حذفش کردیم
|
||||||
|
یکی هم taxtools بود که اونم باید میومد کنار پروؤه ولی ما فعلا خذفش کردیم
|
||||||
|
|
||||||
|
کلا داکر نمیتونه به درایو ها دسترسی داشته باشه همه چی باید در خود پروژه باشه
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------
|
||||||
|
in local => docker build -f back\Dockerfile -t mmrbnjd/api_moadiran:latest .
|
||||||
|
in local => docker push mmrbnjd/api_moadiran:latest
|
||||||
|
in server => docker pull mmrbnjd/api_moadiran:latest
|
||||||
|
in server => docker run -d -p 3201:8080 --restart always mmrbnjd/api_moadiran:latest
|
30
Back/Dockerfile
Normal file
30
Back/Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
|
||||||
|
WORKDIR /app
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
# کپی csproj ها
|
||||||
|
COPY Back/Back.csproj Back/
|
||||||
|
COPY Shared/Shared.csproj Shared/
|
||||||
|
|
||||||
|
# کپی کردن سورس لوکال و NuGet.config (از داخل Back)
|
||||||
|
#COPY Back/NuGet.config ./
|
||||||
|
#COPY Back/LocalPackages ./LocalPackages
|
||||||
|
|
||||||
|
RUN dotnet restore "./Back/Back.csproj"
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
WORKDIR "/src/Back"
|
||||||
|
RUN dotnet build "./Back.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||||
|
|
||||||
|
FROM build AS publish
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
RUN dotnet publish "./Back.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||||
|
|
||||||
|
FROM base AS final
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=publish /app/publish .
|
||||||
|
ENTRYPOINT ["dotnet", "Back.dll"]
|
@@ -1,25 +1,24 @@
|
|||||||
using Newtonsoft.Json.Serialization;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
namespace Back.Features
|
namespace Back.Features
|
||||||
{
|
{
|
||||||
public class IgnorePropertiesResolver : DefaultContractResolver
|
//public class IgnorePropertiesResolver : DefaultContractResolver
|
||||||
{
|
//{
|
||||||
private readonly HashSet<string> ignoreProps;
|
// private readonly HashSet<string> ignoreProps;
|
||||||
public IgnorePropertiesResolver(IEnumerable<string> propNamesToIgnore)
|
// public IgnorePropertiesResolver(IEnumerable<string> propNamesToIgnore)
|
||||||
{
|
// {
|
||||||
this.ignoreProps = new HashSet<string>(propNamesToIgnore);
|
// this.ignoreProps = new HashSet<string>(propNamesToIgnore);
|
||||||
}
|
// }
|
||||||
|
|
||||||
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
|
// protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
|
||||||
{
|
// {
|
||||||
JsonProperty property = base.CreateProperty(member, memberSerialization);
|
// JsonProperty property = base.CreateProperty(member, memberSerialization);
|
||||||
if (this.ignoreProps.Contains(property.PropertyName))
|
// if (this.ignoreProps.Contains(property.PropertyName))
|
||||||
{
|
// {
|
||||||
property.ShouldSerialize = _ => false;
|
// property.ShouldSerialize = _ => false;
|
||||||
}
|
// }
|
||||||
return property;
|
// return property;
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
2086
Back/Migrations/20250122093421_tbswarehouse.Designer.cs
generated
Normal file
2086
Back/Migrations/20250122093421_tbswarehouse.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
92
Back/Migrations/20250122093421_tbswarehouse.cs
Normal file
92
Back/Migrations/20250122093421_tbswarehouse.cs
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Back.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class tbswarehouse : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<decimal>(
|
||||||
|
name: "Count",
|
||||||
|
table: "Remittances",
|
||||||
|
type: "decimal(18,2)",
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(int),
|
||||||
|
oldType: "int");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "Deleted",
|
||||||
|
table: "Remittances",
|
||||||
|
type: "bit",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "InvoiceID",
|
||||||
|
table: "Remittances",
|
||||||
|
type: "int",
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<decimal>(
|
||||||
|
name: "Count",
|
||||||
|
table: "Receipts",
|
||||||
|
type: "decimal(18,2)",
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(int),
|
||||||
|
oldType: "int");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "Deleted",
|
||||||
|
table: "Receipts",
|
||||||
|
type: "bit",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "InvoiceID",
|
||||||
|
table: "Receipts",
|
||||||
|
type: "int",
|
||||||
|
nullable: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Deleted",
|
||||||
|
table: "Remittances");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "InvoiceID",
|
||||||
|
table: "Remittances");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "Deleted",
|
||||||
|
table: "Receipts");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "InvoiceID",
|
||||||
|
table: "Receipts");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<int>(
|
||||||
|
name: "Count",
|
||||||
|
table: "Remittances",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(decimal),
|
||||||
|
oldType: "decimal(18,2)");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<int>(
|
||||||
|
name: "Count",
|
||||||
|
table: "Receipts",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(decimal),
|
||||||
|
oldType: "decimal(18,2)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2090
Back/Migrations/20250125085346_invoicetb.Designer.cs
generated
Normal file
2090
Back/Migrations/20250125085346_invoicetb.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
32
Back/Migrations/20250125085346_invoicetb.cs
Normal file
32
Back/Migrations/20250125085346_invoicetb.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Back.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class invoicetb : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<decimal>(
|
||||||
|
name: "vra",
|
||||||
|
table: "InvoiceItems",
|
||||||
|
type: "decimal(18,2)",
|
||||||
|
maxLength: 5,
|
||||||
|
nullable: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "vra",
|
||||||
|
table: "InvoiceItems");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2096
Back/Migrations/20250125170646_cdt.Designer.cs
generated
Normal file
2096
Back/Migrations/20250125170646_cdt.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
41
Back/Migrations/20250125170646_cdt.cs
Normal file
41
Back/Migrations/20250125170646_cdt.cs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Back.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class cdt : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "CreateDt",
|
||||||
|
table: "Remittances",
|
||||||
|
type: "datetime2",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "CreateDt",
|
||||||
|
table: "Receipts",
|
||||||
|
type: "datetime2",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "CreateDt",
|
||||||
|
table: "Remittances");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "CreateDt",
|
||||||
|
table: "Receipts");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -668,6 +668,10 @@ namespace Back.Migrations
|
|||||||
.HasMaxLength(18)
|
.HasMaxLength(18)
|
||||||
.HasColumnType("decimal(18,2)");
|
.HasColumnType("decimal(18,2)");
|
||||||
|
|
||||||
|
b.Property<decimal?>("vra")
|
||||||
|
.HasMaxLength(5)
|
||||||
|
.HasColumnType("decimal(18,2)");
|
||||||
|
|
||||||
b.HasKey("ID");
|
b.HasKey("ID");
|
||||||
|
|
||||||
b.HasIndex("CODID");
|
b.HasIndex("CODID");
|
||||||
@@ -1463,16 +1467,25 @@ namespace Back.Migrations
|
|||||||
b.Property<int>("CODID")
|
b.Property<int>("CODID")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<int>("Count")
|
b.Property<decimal>("Count")
|
||||||
.HasColumnType("int");
|
.HasColumnType("decimal(18,2)");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreateDt")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
b.Property<string>("Date")
|
b.Property<string>("Date")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasColumnType("nvarchar(max)");
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("Deleted")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
b.Property<bool>("ForSale")
|
b.Property<bool>("ForSale")
|
||||||
.HasColumnType("bit");
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int?>("InvoiceID")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<int>("Type")
|
b.Property<int>("Type")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
@@ -1498,13 +1511,22 @@ namespace Back.Migrations
|
|||||||
b.Property<int>("CODID")
|
b.Property<int>("CODID")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<int>("Count")
|
b.Property<decimal>("Count")
|
||||||
.HasColumnType("int");
|
.HasColumnType("decimal(18,2)");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreateDt")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
b.Property<string>("Date")
|
b.Property<string>("Date")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasColumnType("nvarchar(max)");
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("Deleted")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<int?>("InvoiceID")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<int>("Type")
|
b.Property<int>("Type")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
7
Back/NuGet.config
Normal file
7
Back/NuGet.config
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<packageSources>
|
||||||
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||||
|
<add key="local" value="./LocalPackages" />
|
||||||
|
</packageSources>
|
||||||
|
</configuration>
|
@@ -55,7 +55,7 @@ builder.Services.AddScoped(typeof(IAsyncRepository<>), typeof(RepositoryBase<>))
|
|||||||
builder.Services.AddScoped(typeof(RepositoryBase<>), typeof(RepositoryBase<>));
|
builder.Services.AddScoped(typeof(RepositoryBase<>), typeof(RepositoryBase<>));
|
||||||
builder.Services.AddScoped<Back.Services.ServBase>();
|
builder.Services.AddScoped<Back.Services.ServBase>();
|
||||||
builder.Services.AddScoped<MobileValidation> ();
|
builder.Services.AddScoped<MobileValidation> ();
|
||||||
builder.Services.AddScoped<Service.Main>();
|
//builder.Services.AddScoped<Service.Main>();
|
||||||
builder.Services.AddScoped<servTicket > ();
|
builder.Services.AddScoped<servTicket > ();
|
||||||
builder.Services.AddScoped<ServValidatinMsg>();
|
builder.Services.AddScoped<ServValidatinMsg>();
|
||||||
builder.Services.AddScoped<GetVerificationValidation> ();
|
builder.Services.AddScoped<GetVerificationValidation> ();
|
||||||
@@ -104,10 +104,11 @@ builder.Services.AddCors(options =>
|
|||||||
options.AddPolicy(origins,
|
options.AddPolicy(origins,
|
||||||
policy =>
|
policy =>
|
||||||
{
|
{
|
||||||
policy.WithOrigins("https://localhost:7224", "http://localhost:5107"
|
policy.AllowAnyOrigin()
|
||||||
, "http://195.88.208.142", "http://moadiran.ir"
|
//.WithOrigins("https://localhost:7224", "http://localhost:5107"
|
||||||
, "https://195.88.208.142", "https://moadiran.ir"
|
// , "http://195.88.208.142", "http://moadiran.ir"
|
||||||
, "https://195.88.208.142:440", "https://moadiran.ir:440", "https://localhost:44346")
|
// , "https://195.88.208.142", "https://moadiran.ir"
|
||||||
|
//, "https://195.88.208.142:440", "https://moadiran.ir:440", "https://localhost:44346")
|
||||||
.AllowAnyHeader()
|
.AllowAnyHeader()
|
||||||
.WithHeaders(HeaderNames.ContentType)
|
.WithHeaders(HeaderNames.ContentType)
|
||||||
.AllowAnyMethod();
|
.AllowAnyMethod();
|
||||||
@@ -135,7 +136,7 @@ builder.Services.AddAuthentication("Bearer")
|
|||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
if (app.Environment.IsDevelopment())
|
if (true || app.Environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
app.UseSwagger();
|
app.UseSwagger();
|
||||||
app.UseSwaggerUI();
|
app.UseSwaggerUI();
|
||||||
|
@@ -27,6 +27,17 @@
|
|||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Container (Dockerfile)": {
|
||||||
|
"commandName": "Docker",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_HTTPS_PORTS": "8081",
|
||||||
|
"ASPNETCORE_HTTP_PORTS": "8080"
|
||||||
|
},
|
||||||
|
"publishAllPorts": true,
|
||||||
|
"useSSL": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||||
|
@@ -1,13 +1,8 @@
|
|||||||
using Back.Common;
|
using Back.Common;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Shared.DTOs;
|
using Shared.DTOs;
|
||||||
using TaxCollectData.Library.Business;
|
|
||||||
using TaxCollectData.Library.Dto.Config;
|
|
||||||
using TaxCollectData.Library.Dto.Content;
|
|
||||||
using TaxCollectData.Library.Dto.Properties;
|
|
||||||
using TaxCollectData.Library.Dto.Transfer;
|
|
||||||
using TaxCollectData.Library.Enums;
|
|
||||||
|
|
||||||
namespace Back.Services
|
namespace Back.Services
|
||||||
{
|
{
|
||||||
@@ -26,77 +21,77 @@ namespace Back.Services
|
|||||||
|
|
||||||
public string GenerateTaxid(string FactorNo, string InvoiceDate)
|
public string GenerateTaxid(string FactorNo, string InvoiceDate)
|
||||||
{
|
{
|
||||||
//return "testTaxid";
|
return "testTaxid";
|
||||||
return TaxApiService.Instance.TaxIdGenerator.GenerateTaxId(_UniqueMemory,
|
//return TaxApiService.Instance.TaxIdGenerator.GenerateTaxId(_UniqueMemory,
|
||||||
Convert.ToInt64(FactorNo), InvoiceDate.ToMiladi());
|
// Convert.ToInt64(FactorNo), InvoiceDate.ToMiladi());
|
||||||
}
|
}
|
||||||
public async Task<InquiryResultModel> GetResultByUid(int CompanyID, string uid)
|
//public async Task<InquiryResultModel> GetResultByUid(int CompanyID, string uid)
|
||||||
{
|
//{
|
||||||
|
|
||||||
var uidAndFiscalId = new UidAndFiscalId(uid, _UniqueMemory);
|
// var uidAndFiscalId = new UidAndFiscalId(uid, _UniqueMemory);
|
||||||
var inquiryResultModels = TaxApiService.Instance.TaxApis.InquiryByUidAndFiscalId(new() { uidAndFiscalId });
|
// var inquiryResultModels = TaxApiService.Instance.TaxApis.InquiryByUidAndFiscalId(new() { uidAndFiscalId });
|
||||||
if (inquiryResultModels.Count > 0)
|
// if (inquiryResultModels.Count > 0)
|
||||||
return inquiryResultModels[0];
|
// return inquiryResultModels[0];
|
||||||
return null;
|
// return null;
|
||||||
}
|
//}
|
||||||
public async Task<TaxCollectData.Library.Dto.HttpResponse<AsyncResponseModel>> SendInvoice(int CompanyID,InvoiceHeaderDto header, List<InvoiceBodyDto> InvoiceBody, List<PaymentDto> payments)
|
//public async Task<TaxCollectData.Library.Dto.HttpResponse<AsyncResponseModel>> SendInvoice(int CompanyID,InvoiceHeaderDto header, List<InvoiceBodyDto> InvoiceBody, List<PaymentDto> payments)
|
||||||
{
|
//{
|
||||||
return await TaxApiService.Instance.TaxApis.SendInvoicesAsync(new List<InvoiceDto>()
|
// return await TaxApiService.Instance.TaxApis.SendInvoicesAsync(new List<InvoiceDto>()
|
||||||
{
|
// {
|
||||||
new()
|
// new()
|
||||||
{
|
// {
|
||||||
Header =header,Body =InvoiceBody,Payments = payments
|
// Header =header,Body =InvoiceBody,Payments = payments
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
, null);
|
// , null);
|
||||||
}
|
//}
|
||||||
public async Task<EconomicCodeModel?> GetEconomicCodeInformation(string Item)
|
//public async Task<EconomicCodeModel?> GetEconomicCodeInformation(string Item)
|
||||||
{
|
//{
|
||||||
|
|
||||||
return await TaxApiService.Instance.TaxApis.GetEconomicCodeInformationAsync(Item);
|
// return await TaxApiService.Instance.TaxApis.GetEconomicCodeInformationAsync(Item);
|
||||||
|
|
||||||
|
|
||||||
}
|
//}
|
||||||
public async Task<FiscalInformationModel?> GetFiscalInformation(string Item)
|
//public async Task<FiscalInformationModel?> GetFiscalInformation(string Item)
|
||||||
{
|
//{
|
||||||
return await TaxApiService.Instance.TaxApis.GetFiscalInformationAsync(Item);
|
// return await TaxApiService.Instance.TaxApis.GetFiscalInformationAsync(Item);
|
||||||
}
|
//}
|
||||||
//-------------------internal
|
//-------------------internal
|
||||||
public async Task<bool> login(int CompanyID)
|
public async Task<bool> login(int CompanyID)
|
||||||
{
|
{
|
||||||
|
return false;
|
||||||
|
//try
|
||||||
|
//{
|
||||||
|
// #region TokenTax
|
||||||
|
// var resquth = await _servCompany.GetTaxAuth(CompanyID);
|
||||||
|
// if (string.IsNullOrEmpty(resquth.UniqueMemory) || string.IsNullOrEmpty(resquth.PrivateKey))
|
||||||
|
// return false;
|
||||||
|
|
||||||
try
|
// if (!string.IsNullOrEmpty(resquth.UniqueMemory) && !string.IsNullOrEmpty(resquth.PrivateKey))
|
||||||
{
|
// {
|
||||||
#region TokenTax
|
|
||||||
var resquth = await _servCompany.GetTaxAuth(CompanyID);
|
|
||||||
if (string.IsNullOrEmpty(resquth.UniqueMemory) || string.IsNullOrEmpty(resquth.PrivateKey))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(resquth.UniqueMemory) && !string.IsNullOrEmpty(resquth.PrivateKey))
|
|
||||||
{
|
|
||||||
|
|
||||||
//string taxapi = _configuration.GetSection("TaxPayerApi").Value;
|
// //string taxapi = _configuration.GetSection("TaxPayerApi").Value;
|
||||||
string taxapi = "https://sandboxrc.tax.gov.ir/req/api/";
|
// string taxapi = "https://sandboxrc.tax.gov.ir/req/api/";
|
||||||
_UniqueMemory = resquth.UniqueMemory;
|
// _UniqueMemory = resquth.UniqueMemory;
|
||||||
_PrivateKey = resquth.PrivateKey;
|
// _PrivateKey = resquth.PrivateKey;
|
||||||
TaxApiService.Instance.Init(_UniqueMemory,
|
// TaxApiService.Instance.Init(_UniqueMemory,
|
||||||
new SignatoryConfig(_PrivateKey, null),
|
// new SignatoryConfig(_PrivateKey, null),
|
||||||
new NormalProperties(ClientType.SELF_TSP), taxapi);
|
// new NormalProperties(ClientType.SELF_TSP), taxapi);
|
||||||
await TaxApiService.Instance.TaxApis.GetServerInformationAsync();
|
// await TaxApiService.Instance.TaxApis.GetServerInformationAsync();
|
||||||
}
|
// }
|
||||||
#endregion
|
// #endregion
|
||||||
|
|
||||||
if (TaxApiService.Instance.TaxApis.GetToken() is null)
|
// if (TaxApiService.Instance.TaxApis.GetToken() is null)
|
||||||
{
|
// {
|
||||||
if (await TaxApiService.Instance.TaxApis.RequestTokenAsync() == null)
|
// if (await TaxApiService.Instance.TaxApis.RequestTokenAsync() == null)
|
||||||
return false;
|
// return false;
|
||||||
}
|
// }
|
||||||
return true;
|
// return true;
|
||||||
}
|
//}
|
||||||
catch (Exception)
|
//catch (Exception)
|
||||||
{
|
//{
|
||||||
return false;
|
// return false;
|
||||||
}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,7 +33,7 @@ namespace Back.Services
|
|||||||
public int? Inp { get { return _invoice.inp ?? 1; } }
|
public int? Inp { get { return _invoice.inp ?? 1; } }
|
||||||
public int? Ins { get { return _invoice.ins ?? 1; } }
|
public int? Ins { get { return _invoice.ins ?? 1; } }
|
||||||
public string? Tins { get { return string.IsNullOrEmpty(_invoice.tins) ? null : _invoice.tins; } }
|
public string? Tins { get { return string.IsNullOrEmpty(_invoice.tins) ? null : _invoice.tins; } }
|
||||||
public int? Tob { get { return level == 10 || _invoice.tob==0 ? null : _invoice.tob == 5 ? 1 : _invoice.tob == 6 ? 4 : _invoice.tob; } }
|
public int? Tob { get { return level == 10 || _invoice.tob == 0 ? null : _invoice.tob == 5 ? 1 : _invoice.tob == 6 ? 4 : _invoice.tob; } }
|
||||||
public string? Bid
|
public string? Bid
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -96,14 +96,22 @@ namespace Back.Services
|
|||||||
public decimal? Nw { get { return level == 10 ? bitem.nw : null; } }
|
public decimal? Nw { get { return level == 10 ? bitem.nw : null; } }
|
||||||
public decimal? Fee { get { return level == 4 ? null : bitem.fee; } }
|
public decimal? Fee { get { return level == 4 ? null : bitem.fee; } }
|
||||||
public decimal? Cfee { get { return bitem.cfee == 0 || level == 8 || level == 10 ? null : bitem.cfee; } }
|
public decimal? Cfee { get { return bitem.cfee == 0 || level == 8 || level == 10 ? null : bitem.cfee; } }
|
||||||
public string? Cut { get{ return level == 8 || string.IsNullOrEmpty(bitem.cut) ? null : bitem.cut; } }
|
public string? Cut { get { return level == 8 || string.IsNullOrEmpty(bitem.cut) ? null : bitem.cut; } }
|
||||||
public decimal? Exr { get { return level == 8 ? null : bitem.exr; } }
|
public decimal? Exr { get { return level == 8 ? null : bitem.exr; } }
|
||||||
public decimal? Ssrv { get { return level == 10 ? bitem.ssrv : null; } }
|
public decimal? Ssrv { get { return level == 10 ? bitem.ssrv : null; } }
|
||||||
public decimal? Sscv { get { return level == 10 ? bitem.sscv : null; } }
|
public decimal? Sscv { get { return level == 10 ? bitem.sscv : null; } }
|
||||||
public decimal? Prdis { get { return level == 10 ? null : bitem.prdis; } }
|
public decimal? Prdis { get { return level == 10 ? null : bitem.prdis; } }
|
||||||
public decimal? Dis { get { return level == 10 ? null : bitem.dis; } }
|
public decimal? Dis { get { return level == 10 ? null : bitem.dis; } }
|
||||||
public decimal? Adis { get { return level == 10 ? null : bitem.adis; } }
|
public decimal? Adis { get { return level == 10 ? null : bitem.adis; } }
|
||||||
public decimal? Vra { get { return bitem.vra; } }
|
public decimal? Vra
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return level == 14 ? 0
|
||||||
|
:
|
||||||
|
bitem.vra;
|
||||||
|
}
|
||||||
|
}
|
||||||
public decimal? Vam { get { return bitem.vam; } }
|
public decimal? Vam { get { return bitem.vam; } }
|
||||||
public string? Odt { get { return string.IsNullOrEmpty(bitem.odt) ? null : bitem.odt; } }
|
public string? Odt { get { return string.IsNullOrEmpty(bitem.odt) ? null : bitem.odt; } }
|
||||||
public decimal? Odr { get { return bitem.odr; } }
|
public decimal? Odr { get { return bitem.odr; } }
|
||||||
|
@@ -16,15 +16,15 @@ namespace Back.Services
|
|||||||
private readonly IAsyncRepository<Blog> _repoBlog;
|
private readonly IAsyncRepository<Blog> _repoBlog;
|
||||||
private readonly IAsyncRepository<Question> _repoQuestion;
|
private readonly IAsyncRepository<Question> _repoQuestion;
|
||||||
private readonly IAsyncRepository<SaleLead> _repoSaleLead;
|
private readonly IAsyncRepository<SaleLead> _repoSaleLead;
|
||||||
private readonly Service.Main _Taxtools;
|
// private readonly Service.Main _Taxtools;
|
||||||
public ServBase(IAsyncRepository<Pricing> repoPricing,
|
public ServBase(IAsyncRepository<Pricing> repoPricing,
|
||||||
IAsyncRepository<Blog> repoBlog, IAsyncRepository<Question> repoQuestion
|
IAsyncRepository<Blog> repoBlog, IAsyncRepository<Question> repoQuestion
|
||||||
, Service.Main taxtools, IAsyncRepository<SaleLead> repoSaleLead)
|
/* , Service.Main taxtools*/, IAsyncRepository<SaleLead> repoSaleLead)
|
||||||
{
|
{
|
||||||
_repoPricing = repoPricing;
|
_repoPricing = repoPricing;
|
||||||
_repoBlog = repoBlog;
|
_repoBlog = repoBlog;
|
||||||
_repoQuestion = repoQuestion;
|
_repoQuestion = repoQuestion;
|
||||||
_Taxtools = taxtools;
|
// _Taxtools = taxtools;
|
||||||
_repoSaleLead = repoSaleLead;
|
_repoSaleLead = repoSaleLead;
|
||||||
}
|
}
|
||||||
public async Task<List<BasePriceDto>> GetBasePrice()
|
public async Task<List<BasePriceDto>> GetBasePrice()
|
||||||
@@ -89,63 +89,63 @@ namespace Back.Services
|
|||||||
public async Task<TaxToolsDTO?> CreateCsrAndPrivateKey(CsrPrivateKeyDto model)
|
public async Task<TaxToolsDTO?> CreateCsrAndPrivateKey(CsrPrivateKeyDto model)
|
||||||
{
|
{
|
||||||
TaxToolsDTO taxTools = null;
|
TaxToolsDTO taxTools = null;
|
||||||
List<Service.PrmValue> values = new List<Service.PrmValue>()
|
//List<Service.PrmValue> values = new List<Service.PrmValue>()
|
||||||
{
|
//{
|
||||||
new Service.PrmValue(){Prm="CN",Value=model.cn},
|
// new Service.PrmValue(){Prm="CN",Value=model.cn},
|
||||||
new Service.PrmValue(){Prm="serialNumber",Value=model.sn},
|
// new Service.PrmValue(){Prm="serialNumber",Value=model.sn},
|
||||||
new Service.PrmValue(){Prm="O",Value="Non-Governmental"},
|
// new Service.PrmValue(){Prm="O",Value="Non-Governmental"},
|
||||||
new Service.PrmValue(){Prm="3.OU",Value=model.company},
|
// new Service.PrmValue(){Prm="3.OU",Value=model.company},
|
||||||
new Service.PrmValue(){Prm="2.OU",Value=model.company},
|
// new Service.PrmValue(){Prm="2.OU",Value=model.company},
|
||||||
new Service.PrmValue(){Prm="1.OU",Value=model.company},
|
// new Service.PrmValue(){Prm="1.OU",Value=model.company},
|
||||||
new Service.PrmValue(){Prm="C",Value="IR"},
|
// new Service.PrmValue(){Prm="C",Value="IR"},
|
||||||
};
|
//};
|
||||||
string msg = "";
|
//string msg = "";
|
||||||
if (_Taxtools.CraeteCnfFile(values, ref msg))
|
//if (_Taxtools.CraeteCnfFile(values, ref msg))
|
||||||
{
|
//{
|
||||||
if (_Taxtools.CreateCsrAndPrivateKey(model.cn, ref msg))
|
// if (_Taxtools.CreateCsrAndPrivateKey(model.cn, ref msg))
|
||||||
{
|
// {
|
||||||
taxTools = new TaxToolsDTO();
|
// taxTools = new TaxToolsDTO();
|
||||||
//خواندن
|
// //خواندن
|
||||||
Stream stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.Csr", FileMode.Open);
|
// Stream stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.Csr", FileMode.Open);
|
||||||
byte[] buffer = new byte[stream.Length];
|
// byte[] buffer = new byte[stream.Length];
|
||||||
stream.Read(buffer, 0, (int)stream.Length);
|
// stream.Read(buffer, 0, (int)stream.Length);
|
||||||
string csr = Encoding.UTF8.GetString(buffer);
|
// string csr = Encoding.UTF8.GetString(buffer);
|
||||||
stream.Flush();
|
// stream.Flush();
|
||||||
stream.Close();
|
// stream.Close();
|
||||||
taxTools.Base64csr = Convert.ToBase64String(buffer);
|
// taxTools.Base64csr = Convert.ToBase64String(buffer);
|
||||||
taxTools.typecsr = "Csr";
|
// taxTools.typecsr = "Csr";
|
||||||
stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.key", FileMode.Open);
|
// stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.key", FileMode.Open);
|
||||||
buffer = new byte[stream.Length];
|
// buffer = new byte[stream.Length];
|
||||||
stream.Read(buffer, 0, (int)stream.Length);
|
// stream.Read(buffer, 0, (int)stream.Length);
|
||||||
string key = Encoding.UTF8.GetString(buffer);
|
// string key = Encoding.UTF8.GetString(buffer);
|
||||||
taxTools.Base64key = Convert.ToBase64String(buffer);
|
// taxTools.Base64key = Convert.ToBase64String(buffer);
|
||||||
taxTools.typekey = "key";
|
// taxTools.typekey = "key";
|
||||||
stream.Flush();
|
// stream.Flush();
|
||||||
stream.Close();
|
// stream.Close();
|
||||||
|
|
||||||
//_contextMongodb.InsertItem(new SysLog()
|
// //_contextMongodb.InsertItem(new SysLog()
|
||||||
//{
|
// //{
|
||||||
// TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
|
// // TraceIdentifierID = _httpContextAccessor.HttpContext.TraceIdentifier,
|
||||||
// Datetime = DateTime.Now.ConvertMiladiToShamsi(),
|
// // Datetime = DateTime.Now.ConvertMiladiToShamsi(),
|
||||||
// Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/CreateCsrAndPrivateKey",
|
// // Method = $"{_httpContextAccessor.HttpContext.Request.Method}/{this.GetType().FullName}/CreateCsrAndPrivateKey",
|
||||||
// Value = JsonConvert.SerializeObject(model),
|
// // Value = JsonConvert.SerializeObject(model),
|
||||||
// Route = _httpContextAccessor.HttpContext.Request.Path,
|
// // Route = _httpContextAccessor.HttpContext.Request.Path,
|
||||||
// Type = "User"
|
// // Type = "User"
|
||||||
//});
|
// //});
|
||||||
await _repoSaleLead.AddAsync(new SaleLead
|
// await _repoSaleLead.AddAsync(new SaleLead
|
||||||
{
|
// {
|
||||||
cn = model.cn,
|
// cn = model.cn,
|
||||||
company = model.company,
|
// company = model.company,
|
||||||
csr = csr,
|
// csr = csr,
|
||||||
Key = key,
|
// Key = key,
|
||||||
Mobile = model.Mobile,
|
// Mobile = model.Mobile,
|
||||||
sn = model.sn
|
// sn = model.sn
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(msg))
|
// if (string.IsNullOrEmpty(msg))
|
||||||
{
|
{
|
||||||
//_contextMongodb.InsertItem(new SysLog()
|
//_contextMongodb.InsertItem(new SysLog()
|
||||||
//{
|
//{
|
||||||
|
@@ -27,13 +27,15 @@ namespace Back.Services.Warehouse
|
|||||||
{
|
{
|
||||||
var model = new Receipt()
|
var model = new Receipt()
|
||||||
{
|
{
|
||||||
Date = item.Date,
|
Date = item.Date.Replace("/",""),
|
||||||
CODID = item.CODID,
|
CODID = item.CODID,
|
||||||
Count = item.Count,
|
Count = item.Count,
|
||||||
ForSale = item.ForSale,
|
ForSale = item.ForSale,
|
||||||
info = item.info,
|
info = item.info,
|
||||||
Type = item.Type,
|
Type = item.Type,
|
||||||
Deleted = false
|
InvoiceID=item.InvoiceID,
|
||||||
|
Deleted = false,
|
||||||
|
CreateDt=DateTime.Now
|
||||||
};
|
};
|
||||||
var returnmodel = await _ReceiptRepo.AddAsync(model);
|
var returnmodel = await _ReceiptRepo.AddAsync(model);
|
||||||
if (returnmodel != null)
|
if (returnmodel != null)
|
||||||
@@ -60,7 +62,8 @@ namespace Back.Services.Warehouse
|
|||||||
public async Task<ReceiptDto?> Update(ReceiptDto item)
|
public async Task<ReceiptDto?> Update(ReceiptDto item)
|
||||||
{
|
{
|
||||||
var model= await _ReceiptRepo.Get(w => w.ID == item.ID).FirstOrDefaultAsync();
|
var model= await _ReceiptRepo.Get(w => w.ID == item.ID).FirstOrDefaultAsync();
|
||||||
model.Date= item.Date;
|
|
||||||
|
model.Date= item.Date.Replace("/", "");
|
||||||
model.CODID= item.CODID;
|
model.CODID= item.CODID;
|
||||||
model.Count= item.Count;
|
model.Count= item.Count;
|
||||||
model.ForSale= item.ForSale;
|
model.ForSale= item.ForSale;
|
||||||
@@ -83,6 +86,25 @@ namespace Back.Services.Warehouse
|
|||||||
return await _ReceiptRepo.UpdateAsync(model);
|
return await _ReceiptRepo.UpdateAsync(model);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public async Task<bool> DeleteByInvoiceID(int InvoiceID, int CompanyID)
|
||||||
|
{
|
||||||
|
var models = await _ReceiptRepo.Get(w => w.InvoiceID == InvoiceID && w.cODItem.CompanyID == CompanyID && !w.Deleted).ToListAsync();
|
||||||
|
foreach (var model in models)
|
||||||
|
model.Deleted = true;
|
||||||
|
if (models.Any())
|
||||||
|
return await _ReceiptRepo.UpdateRangeAsync(models);
|
||||||
|
return true;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
//public async Task<bool> DeleteByCODIDAndInvoiceID(int InvoiceID,int CODID, int CompanyID)
|
||||||
|
//{
|
||||||
|
// var model = await _ReceiptRepo.Get(w => w.InvoiceID == InvoiceID && w.CODID==CODID && w.cODItem.CompanyID == CompanyID && !w.Deleted).FirstOrDefaultAsync();
|
||||||
|
// model.Deleted = true;
|
||||||
|
// return await _ReceiptRepo.UpdateAsync(model);
|
||||||
|
|
||||||
|
|
||||||
|
//}
|
||||||
public async Task<ReceiptDto?> Get(int itemID, int CompanyID)
|
public async Task<ReceiptDto?> Get(int itemID, int CompanyID)
|
||||||
{
|
{
|
||||||
return await _ReceiptRepo.Get(w => w.ID == itemID && w.cODItem.CompanyID == CompanyID && !w.Deleted)
|
return await _ReceiptRepo.Get(w => w.ID == itemID && w.cODItem.CompanyID == CompanyID && !w.Deleted)
|
||||||
|
@@ -19,12 +19,14 @@ namespace Back.Services.Warehouse
|
|||||||
{
|
{
|
||||||
var model = new Remittance()
|
var model = new Remittance()
|
||||||
{
|
{
|
||||||
Date = item.Date,
|
Date = item.Date.Replace("/", ""),
|
||||||
CODID = item.CODID,
|
CODID = item.CODID,
|
||||||
Count = item.Count,
|
Count = item.Count,
|
||||||
info = item.info,
|
info = item.info,
|
||||||
Type = item.Type,
|
Type = item.Type,
|
||||||
Deleted=false
|
InvoiceID = item.InvoiceID,
|
||||||
|
Deleted=false,
|
||||||
|
CreateDt = DateTime.Now
|
||||||
};
|
};
|
||||||
var returnmodel = await _ReceiptRepo.AddAsync(model);
|
var returnmodel = await _ReceiptRepo.AddAsync(model);
|
||||||
if (returnmodel != null)
|
if (returnmodel != null)
|
||||||
@@ -44,7 +46,7 @@ namespace Back.Services.Warehouse
|
|||||||
public async Task<RemittanceDto?> Update(RemittanceDto item)
|
public async Task<RemittanceDto?> Update(RemittanceDto item)
|
||||||
{
|
{
|
||||||
var model = await _ReceiptRepo.Get(w => w.ID == item.ID).FirstOrDefaultAsync();
|
var model = await _ReceiptRepo.Get(w => w.ID == item.ID).FirstOrDefaultAsync();
|
||||||
model.Date = item.Date;
|
model.Date = item.Date.Replace("/", "");
|
||||||
model.CODID = item.CODID;
|
model.CODID = item.CODID;
|
||||||
model.Count = item.Count;
|
model.Count = item.Count;
|
||||||
model.info = item.info;
|
model.info = item.info;
|
||||||
@@ -66,6 +68,23 @@ namespace Back.Services.Warehouse
|
|||||||
model.Deleted = true;
|
model.Deleted = true;
|
||||||
return await _ReceiptRepo.UpdateAsync(model);
|
return await _ReceiptRepo.UpdateAsync(model);
|
||||||
|
|
||||||
|
}
|
||||||
|
public async Task<bool> DeleteByInvoiceID(int InvoiceID, int CompanyID)
|
||||||
|
{
|
||||||
|
var models = await _ReceiptRepo.Get(w => w.InvoiceID == InvoiceID && w.cODItem.CompanyID == CompanyID && !w.Deleted).ToListAsync();
|
||||||
|
foreach (var model in models)
|
||||||
|
model.Deleted = true;
|
||||||
|
if(models.Any())
|
||||||
|
return await _ReceiptRepo.UpdateRangeAsync(models);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public async Task<bool> DeleteByCODIDAndInvoiceID(int InvoiceID, int CODID, int CompanyID)
|
||||||
|
{
|
||||||
|
var model = await _ReceiptRepo.Get(w => w.InvoiceID == InvoiceID && w.CODID == CODID && w.cODItem.CompanyID == CompanyID && !w.Deleted).FirstOrDefaultAsync();
|
||||||
|
model.Deleted = true;
|
||||||
|
return await _ReceiptRepo.UpdateAsync(model);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public async Task<RemittanceDto?> Get(int itemID, int CompanyID)
|
public async Task<RemittanceDto?> Get(int itemID, int CompanyID)
|
||||||
{
|
{
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Back.Common;
|
|
||||||
|
using Back.Common;
|
||||||
using Back.Data.Contracts;
|
using Back.Data.Contracts;
|
||||||
using Back.Data.Models.Warehouse;
|
using Back.Data.Models.Warehouse;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@@ -23,51 +24,65 @@ namespace Back.Services.Warehouse
|
|||||||
_RemittanceRepo = remittanceRepo;
|
_RemittanceRepo = remittanceRepo;
|
||||||
_ReceiptRepo = receiptRepo;
|
_ReceiptRepo = receiptRepo;
|
||||||
}
|
}
|
||||||
public async Task<PagingDto<CirculationDto>> Circulation(int CompanyID,string date="",int CODID=0,int PageIndex=1,int PageSize=5)
|
public async Task<PagingDto<CirculationDto>> Circulation(int CompanyID, string date = "", int CODID = 0, int PageIndex = 1, int PageSize = 5)
|
||||||
{
|
{
|
||||||
var RequestRemittance = _RemittanceRepo.Get(w => w.cODItem.CompanyID == CompanyID && !w.Deleted)
|
var RequestRemittance = _RemittanceRepo.Get(w => w.cODItem.CompanyID == CompanyID && !w.Deleted)
|
||||||
.Select(s=>new CirculationDto
|
.Select(s => new CirculationDto
|
||||||
{
|
{
|
||||||
CODID=s.CODID,
|
ID= s.ID,
|
||||||
CODTitle=s.cODItem.Title,
|
CODID = s.CODID,
|
||||||
Date=s.Date,
|
CODTitle = s.cODItem.Title,
|
||||||
Count=s.Count,
|
Date = s.Date.ShamciToFormatShamci(),
|
||||||
info=s.info,
|
Count = s.Count,
|
||||||
Type=TypeCirculation.Remittance,
|
info = s.info,
|
||||||
|
Type = TypeCirculation.Remittance,
|
||||||
ModelTypeID = (int)s.Type,
|
ModelTypeID = (int)s.Type,
|
||||||
ModelTypeTitle= s.Type.GetDisplayName()
|
ModelTypeTitle = s.Type.GetEnumDisplayName(),
|
||||||
|
invoiceID = s.InvoiceID,
|
||||||
|
CreateDt = s.CreateDt,
|
||||||
});
|
});
|
||||||
if (!string.IsNullOrEmpty(date))
|
if (!string.IsNullOrEmpty(date))
|
||||||
RequestRemittance = RequestRemittance.Where(w => w.Date == date);
|
RequestRemittance = RequestRemittance.Where(w => w.Date == date);
|
||||||
if (CODID!=0)
|
if (CODID != 0)
|
||||||
RequestRemittance = RequestRemittance.Where(w => w.CODID == CODID);
|
RequestRemittance = RequestRemittance.Where(w => w.CODID == CODID);
|
||||||
//-----------
|
//-----------
|
||||||
var RequestReceipt = _ReceiptRepo.Get(w => w.cODItem.CompanyID == CompanyID && !w.Deleted)
|
var RequestReceipt = _ReceiptRepo.Get(w => w.cODItem.CompanyID == CompanyID && !w.Deleted)
|
||||||
.Select(s => new CirculationDto
|
.Select(s => new CirculationDto
|
||||||
{
|
{
|
||||||
|
ID = s.ID,
|
||||||
CODID = s.CODID,
|
CODID = s.CODID,
|
||||||
CODTitle = s.cODItem.Title,
|
CODTitle = s.cODItem.Title,
|
||||||
Date = s.Date,
|
Date = s.Date.ShamciToFormatShamci(),
|
||||||
Count = s.Count,
|
Count = s.Count,
|
||||||
info = s.info,
|
info = s.info,
|
||||||
Type = TypeCirculation.Receipt,
|
Type = TypeCirculation.Receipt,
|
||||||
ModelTypeID = (int)s.Type,
|
ModelTypeID = (int)s.Type,
|
||||||
ModelTypeTitle = s.Type.GetDisplayName()
|
ModelTypeTitle = s.Type.GetEnumDisplayName(),
|
||||||
|
invoiceID = s.InvoiceID,
|
||||||
|
ForSale = s.ForSale,
|
||||||
|
CreateDt = s.CreateDt,
|
||||||
});
|
});
|
||||||
if (!string.IsNullOrEmpty(date))
|
if (!string.IsNullOrEmpty(date))
|
||||||
RequestReceipt = RequestReceipt.Where(w => w.Date == date);
|
RequestReceipt = RequestReceipt.Where(w => w.Date == date);
|
||||||
if (CODID != 0)
|
if (CODID != 0)
|
||||||
RequestReceipt = RequestReceipt.Where(w => w.CODID == CODID);
|
RequestReceipt = RequestReceipt.Where(w => w.CODID == CODID);
|
||||||
|
|
||||||
return await RequestReceipt.Union(RequestRemittance).OrderByDescending(o => o.Date).Paging(PageIndex, PageSize);
|
var itemsReceipt = await RequestReceipt.ToListAsync();
|
||||||
|
var Remittance = await RequestRemittance.ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
return await itemsReceipt.Union(Remittance).OrderByDescending(o => o.CreateDt).Paging(PageIndex, PageSize);
|
||||||
|
|
||||||
|
|
||||||
|
// return await RequestReceipt.Union(RequestRemittance).OrderByDescending(o => o.Date).Paging(PageIndex, PageSize);
|
||||||
//var list = await RequestReceipt.ToListAsync();
|
//var list = await RequestReceipt.ToListAsync();
|
||||||
//list.AddRange(await RequestRemittance.ToListAsync());
|
//list.AddRange(await RequestRemittance.ToListAsync());
|
||||||
//return await list.OrderByDescending(o=>o.Date).AsQueryable().Paging(PageIndex, PageSize);
|
//return await list.OrderByDescending(o=>o.Date).AsQueryable().Paging(PageIndex, PageSize);
|
||||||
}
|
}
|
||||||
public async Task<decimal> Inventory(int CompanyID,int CODID)
|
public async Task<decimal> Inventory(int CompanyID, int CODID)
|
||||||
{
|
{
|
||||||
var CReceipt=await _ReceiptRepo.Get(w => w.cODItem.CompanyID == CompanyID && w.CODID == CODID && w.ForSale && !w.Deleted).SumAsync(s => s.Count);
|
var CReceipt = await _ReceiptRepo.Get(w => w.cODItem.CompanyID == CompanyID && w.CODID == CODID && w.ForSale && !w.Deleted).SumAsync(s => s.Count);
|
||||||
var CRemittance=await _RemittanceRepo.Get(w => w.cODItem.CompanyID == CompanyID && w.CODID == CODID && !w.Deleted).SumAsync(s => s.Count);
|
var CRemittance = await _RemittanceRepo.Get(w => w.cODItem.CompanyID == CompanyID && w.CODID == CODID && !w.Deleted).SumAsync(s => s.Count);
|
||||||
return CReceipt - CRemittance;
|
return CReceipt - CRemittance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,23 +4,28 @@ using Shared.DTOs.Serch;
|
|||||||
using Shared.DTOs;
|
using Shared.DTOs;
|
||||||
using Back.Common;
|
using Back.Common;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Back.Services.Warehouse;
|
||||||
|
|
||||||
namespace Back.Services
|
namespace Back.Services
|
||||||
{
|
{
|
||||||
public class servInvoice
|
public class servInvoice
|
||||||
{
|
{
|
||||||
|
private readonly RemittanceService _remittanceService;
|
||||||
|
|
||||||
private readonly IAsyncRepository<Invoice> _invoiceRepo;
|
private readonly IAsyncRepository<Invoice> _invoiceRepo;
|
||||||
private readonly IAsyncRepository<Coding> _CodingRepo;
|
private readonly IAsyncRepository<Coding> _CodingRepo;
|
||||||
private readonly IAsyncRepository<InvoiceStatusChang> _invoiceStatusChangPaymentRepo;
|
private readonly IAsyncRepository<InvoiceStatusChang> _invoiceStatusChangPaymentRepo;
|
||||||
private readonly CheckPermission _checkPermission;
|
private readonly CheckPermission _checkPermission;
|
||||||
public servInvoice(IAsyncRepository<Invoice> invoiceRepo, CheckPermission checkPermission
|
|
||||||
, IAsyncRepository<InvoiceStatusChang> invoiceStatusChangPaymentRepo, IAsyncRepository<Coding> codingRepo)
|
public servInvoice(RemittanceService remittanceService, IAsyncRepository<Invoice> invoiceRepo, IAsyncRepository<Coding> codingRepo, IAsyncRepository<InvoiceStatusChang> invoiceStatusChangPaymentRepo, CheckPermission checkPermission)
|
||||||
{
|
{
|
||||||
_invoiceStatusChangPaymentRepo = invoiceStatusChangPaymentRepo;
|
_remittanceService = remittanceService;
|
||||||
_invoiceRepo = invoiceRepo;
|
_invoiceRepo = invoiceRepo;
|
||||||
_checkPermission = checkPermission;
|
|
||||||
_CodingRepo = codingRepo;
|
_CodingRepo = codingRepo;
|
||||||
|
_invoiceStatusChangPaymentRepo = invoiceStatusChangPaymentRepo;
|
||||||
|
_checkPermission = checkPermission;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<List<Coding>> GetCodingPMT()
|
public async Task<List<Coding>> GetCodingPMT()
|
||||||
{
|
{
|
||||||
return await _CodingRepo.Get(w => w.FildID == 71).ToListAsync();
|
return await _CodingRepo.Get(w => w.FildID == 71).ToListAsync();
|
||||||
@@ -65,6 +70,7 @@ namespace Back.Services
|
|||||||
tbill = item.tbill,
|
tbill = item.tbill,
|
||||||
Des = item.Des,
|
Des = item.Des,
|
||||||
PreparedtoSendtoTax = item.PreparedtoSendtoTax,
|
PreparedtoSendtoTax = item.PreparedtoSendtoTax,
|
||||||
|
HasaRemittance= await _remittanceService.HasaRemittance(ID),
|
||||||
tdis = item.tdis,
|
tdis = item.tdis,
|
||||||
tvam = item.tvam,
|
tvam = item.tvam,
|
||||||
Udate = item.Udate.ShamciToFormatShamci(),
|
Udate = item.Udate.ShamciToFormatShamci(),
|
||||||
|
@@ -4,7 +4,6 @@ using Back.Data.Infrastructure.Repository;
|
|||||||
using Back.Data.Models;
|
using Back.Data.Models;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using Org.BouncyCastle.Crypto.Tls;
|
|
||||||
using Shared.DTOs;
|
using Shared.DTOs;
|
||||||
using System.ComponentModel.Design;
|
using System.ComponentModel.Design;
|
||||||
using System.Data.SqlTypes;
|
using System.Data.SqlTypes;
|
||||||
|
@@ -37,9 +37,13 @@ namespace Back.Validations
|
|||||||
if (!servCOD.ExistCodByCompanyID(model.Item3.CODID, model.Item1).Result)
|
if (!servCOD.ExistCodByCompanyID(model.Item3.CODID, model.Item1).Result)
|
||||||
context.AddFailure("کالا یافت نشد");
|
context.AddFailure("کالا یافت نشد");
|
||||||
}
|
}
|
||||||
|
|
||||||
else context.AddFailure("کالا صحیح نمی باشد");
|
else context.AddFailure("کالا صحیح نمی باشد");
|
||||||
|
|
||||||
|
if (!model.Item3.vra.HasValue)
|
||||||
|
context.AddFailure("نرخ مالیات را وارد کنید");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
RuleFor(r => r.Item3.am)
|
RuleFor(r => r.Item3.am)
|
||||||
.NotEmpty().WithMessage("تعداد مشخص نشده")
|
.NotEmpty().WithMessage("تعداد مشخص نشده")
|
||||||
|
@@ -5,7 +5,6 @@ using Back.Services;
|
|||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Shared.DTOs;
|
using Shared.DTOs;
|
||||||
using TaxCollectData.Library.Dto.Content;
|
|
||||||
|
|
||||||
namespace Back.Validations
|
namespace Back.Validations
|
||||||
{
|
{
|
||||||
|
@@ -1,9 +1,8 @@
|
|||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using TaxCollectData.Library.Dto.Content;
|
|
||||||
|
|
||||||
namespace Back.Validations
|
namespace Back.Validations
|
||||||
{
|
{
|
||||||
public class TaxSystemRules : AbstractValidator<Tuple<InvoiceHeaderDto, List<InvoiceBodyDto>, PaymentDto>>
|
//public class TaxSystemRules : AbstractValidator<Tuple<InvoiceHeaderDto, List<InvoiceBodyDto>, PaymentDto>>
|
||||||
{
|
//{
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
using Back.Data.Contracts;
|
using Back.Data.Contracts;
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using Shared.DTOs.Warehouse;
|
using Shared.DTOs.Warehouse;
|
||||||
using Net.Pkcs11Interop.Common;
|
|
||||||
using Back.Services;
|
using Back.Services;
|
||||||
using Back.Data.Models;
|
using Back.Data.Models;
|
||||||
|
using Back.Common;
|
||||||
|
|
||||||
namespace Back.Validations.Warehouse.Receipt
|
namespace Back.Validations.Warehouse.Receipt
|
||||||
{
|
{
|
||||||
@@ -16,7 +16,7 @@ namespace Back.Validations.Warehouse.Receipt
|
|||||||
|
|
||||||
RuleFor(model => model)
|
RuleFor(model => model)
|
||||||
.Custom((model, context) => {
|
.Custom((model, context) => {
|
||||||
if (servCOD.ExistCodByCompanyID(model.Item1.CODID, model.Item2).Result)
|
if (!servCOD.ExistCodByCompanyID(model.Item1.CODID, model.Item2).Result)
|
||||||
context.AddFailure("کد کالا یافت نشد");
|
context.AddFailure("کد کالا یافت نشد");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -33,6 +33,21 @@ namespace Back.Validations.Warehouse.Receipt
|
|||||||
context.AddFailure("توضیحی برای رسید در نظر بگیرید");
|
context.AddFailure("توضیحی برای رسید در نظر بگیرید");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
RuleFor(r => r.Item1.Date)
|
||||||
|
.Custom((InvoiceDate, context) =>
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(InvoiceDate))
|
||||||
|
context.AddFailure("تاریخ نمی تواند خالی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Length != 8)
|
||||||
|
context.AddFailure("تاریخ صحیح نمی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Trim().ToMiladi() > DateTime.Now)
|
||||||
|
context.AddFailure("تاریخ از امروز جلوتر باشد");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
RuleFor(r => r.Item2)
|
RuleFor(r => r.Item2)
|
||||||
.Custom((CompanyID, context) =>
|
.Custom((CompanyID, context) =>
|
||||||
{
|
{
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Back.Data.Contracts;
|
using Back.Common;
|
||||||
|
using Back.Data.Contracts;
|
||||||
using Back.Services;
|
using Back.Services;
|
||||||
using Back.Services.Warehouse;
|
using Back.Services.Warehouse;
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
@@ -13,6 +14,18 @@ namespace Back.Validations.Warehouse.Receipt
|
|||||||
public UpdateValidation(IAsyncRepository<Back.Data.Models.Warehouse.Receipt> _ReceiptRepo, ServCOD servCOD, WarehouseService warehouseService)
|
public UpdateValidation(IAsyncRepository<Back.Data.Models.Warehouse.Receipt> _ReceiptRepo, ServCOD servCOD, WarehouseService warehouseService)
|
||||||
{
|
{
|
||||||
CascadeMode = CascadeMode.Stop;
|
CascadeMode = CascadeMode.Stop;
|
||||||
|
RuleFor(r => r.Item1.Date)
|
||||||
|
.Custom((InvoiceDate, context) =>
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(InvoiceDate))
|
||||||
|
context.AddFailure("تاریخ نمی تواند خالی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Length != 8)
|
||||||
|
context.AddFailure("تاریخ صحیح نمی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Trim().ToMiladi() > DateTime.Now)
|
||||||
|
context.AddFailure("تاریخ از امروز جلوتر باشد");
|
||||||
|
});
|
||||||
RuleFor(model => model)
|
RuleFor(model => model)
|
||||||
.Custom((model, context) =>
|
.Custom((model, context) =>
|
||||||
{
|
{
|
||||||
@@ -26,17 +39,11 @@ namespace Back.Validations.Warehouse.Receipt
|
|||||||
context.AddFailure("رسید یافت نشد");
|
context.AddFailure("رسید یافت نشد");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ORGitem.CODID != model.Item1.CODID)
|
|
||||||
{
|
|
||||||
if (servCOD.ExistCodByCompanyID(model.Item1.CODID, model.Item2).Result)
|
|
||||||
context.AddFailure("کد کالا یافت نشد");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (ORGitem.CODID != model.Item1.CODID)
|
if (ORGitem.CODID != model.Item1.CODID)
|
||||||
{
|
{
|
||||||
|
|
||||||
context.AddFailure("در رسید امکان ویرایش کالا انکان پذیر نیست");
|
context.AddFailure("در رسید امکان ویرایش کالا امکان پذیر نیست");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -69,7 +76,7 @@ namespace Back.Validations.Warehouse.Receipt
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
using Back.Services;
|
using Back.Common;
|
||||||
|
using Back.Services;
|
||||||
using Back.Services.Warehouse;
|
using Back.Services.Warehouse;
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using Shared.DTOs.Warehouse;
|
using Shared.DTOs.Warehouse;
|
||||||
@@ -11,10 +12,23 @@ namespace Back.Validations.Warehouse.Remittance
|
|||||||
{
|
{
|
||||||
CascadeMode = CascadeMode.Stop;
|
CascadeMode = CascadeMode.Stop;
|
||||||
|
|
||||||
|
RuleFor(r => r.Item1.Date)
|
||||||
|
.Custom((InvoiceDate, context) =>
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(InvoiceDate))
|
||||||
|
context.AddFailure("تاریخ نمی تواند خالی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Length != 8)
|
||||||
|
context.AddFailure("تاریخ صحیح نمی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Trim().ToMiladi() > DateTime.Now)
|
||||||
|
context.AddFailure("تاریخ از امروز جلوتر باشد");
|
||||||
|
});
|
||||||
|
|
||||||
RuleFor(model => model)
|
RuleFor(model => model)
|
||||||
.Custom((model, context) =>
|
.Custom((model, context) =>
|
||||||
{
|
{
|
||||||
if (servCOD.ExistCodByCompanyID(model.Item1.CODID, model.Item2).Result)
|
if (!servCOD.ExistCodByCompanyID(model.Item1.CODID, model.Item2).Result)
|
||||||
context.AddFailure("کد کالا یافت نشد");
|
context.AddFailure("کد کالا یافت نشد");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -4,6 +4,7 @@ using Back.Services;
|
|||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using Shared.DTOs.Warehouse;
|
using Shared.DTOs.Warehouse;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Back.Common;
|
||||||
|
|
||||||
namespace Back.Validations.Warehouse.Remittance
|
namespace Back.Validations.Warehouse.Remittance
|
||||||
{
|
{
|
||||||
@@ -12,6 +13,20 @@ namespace Back.Validations.Warehouse.Remittance
|
|||||||
public UpdateValidation(IAsyncRepository<Back.Data.Models.Warehouse.Remittance> _Repo, ServCOD servCOD, WarehouseService warehouseService)
|
public UpdateValidation(IAsyncRepository<Back.Data.Models.Warehouse.Remittance> _Repo, ServCOD servCOD, WarehouseService warehouseService)
|
||||||
{
|
{
|
||||||
CascadeMode = CascadeMode.Stop;
|
CascadeMode = CascadeMode.Stop;
|
||||||
|
RuleFor(r => r.Item1.Date)
|
||||||
|
.Custom((InvoiceDate, context) =>
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(InvoiceDate))
|
||||||
|
context.AddFailure("تاریخ نمی تواند خالی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Length != 8)
|
||||||
|
context.AddFailure("تاریخ صحیح نمی باشد");
|
||||||
|
|
||||||
|
else if (InvoiceDate.Trim().ToMiladi() > DateTime.Now)
|
||||||
|
context.AddFailure("تاریخ از امروز جلوتر باشد");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
RuleFor(model => model)
|
RuleFor(model => model)
|
||||||
.Custom((model, context) => {
|
.Custom((model, context) => {
|
||||||
var ORGitem = _Repo.Get(w => w.ID == model.Item1.ID && !w.Deleted).Include(i => i.cODItem).FirstOrDefault();
|
var ORGitem = _Repo.Get(w => w.ID == model.Item1.ID && !w.Deleted).Include(i => i.cODItem).FirstOrDefault();
|
||||||
@@ -27,7 +42,7 @@ namespace Back.Validations.Warehouse.Remittance
|
|||||||
if (ORGitem.CODID != model.Item1.CODID)
|
if (ORGitem.CODID != model.Item1.CODID)
|
||||||
{
|
{
|
||||||
|
|
||||||
context.AddFailure("در حئاله امکان ویرایش کالا انکان پذیر نیست");
|
context.AddFailure("در حواله امکان ویرایش کالا امکان پذیر نیست");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -6,5 +6,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"TaxPayerApi": "https://tp.tax.gov.ir/req/api/"
|
"TaxPayerApi": "https://tp.tax.gov.ir/req/api/",
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"Base": "Data Source=195.88.208.142;Initial Catalog=TaxPayer020713;User ID=sa;Password=M439610m@;TrustServerCertificate=True"
|
||||||
|
|
||||||
|
},
|
||||||
|
"Fixedvalues": {
|
||||||
|
"Jwt_Lifetime_Minutes": "144000"
|
||||||
|
},
|
||||||
|
"CreateReportFileName": "E:\\CreateReport\\CreateReport.exe",
|
||||||
|
"ReportLog": "E:\\Report\\log.txt"
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Security.Principal;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@@ -87,7 +88,7 @@ namespace Shared.DTOs
|
|||||||
[MaxLength(10)]
|
[MaxLength(10)]
|
||||||
[Display(Name = "سریال صورتحساب داخلی حافظه مالیاتی")]
|
[Display(Name = "سریال صورتحساب داخلی حافظه مالیاتی")]
|
||||||
public string? inno { get; set; }
|
public string? inno { get; set; }
|
||||||
|
public bool HasaRemittance { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
public class InvoiceItemDTO
|
public class InvoiceItemDTO
|
||||||
@@ -113,7 +114,6 @@ namespace Shared.DTOs
|
|||||||
//مبلغ قبل از تخفیف
|
//مبلغ قبل از تخفیف
|
||||||
public decimal? prdis { get; set; }
|
public decimal? prdis { get; set; }
|
||||||
//مبلغ بعد از تخفیف
|
//مبلغ بعد از تخفیف
|
||||||
|
|
||||||
public decimal? adis { get; set; }
|
public decimal? adis { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -11,13 +11,14 @@ namespace Shared.DTOs.Warehouse
|
|||||||
public enum TypeCirculation
|
public enum TypeCirculation
|
||||||
{
|
{
|
||||||
[Display(Name = "رسید")]
|
[Display(Name = "رسید")]
|
||||||
Receipt,
|
Receipt=10,
|
||||||
|
|
||||||
[Display(Name = "حواله")]
|
[Display(Name = "حواله")]
|
||||||
Remittance
|
Remittance=20
|
||||||
}
|
}
|
||||||
public class CirculationDto
|
public class CirculationDto
|
||||||
{
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
public int CODID { get; set; }
|
public int CODID { get; set; }
|
||||||
[Display(Name = "کالا")]
|
[Display(Name = "کالا")]
|
||||||
public string? CODTitle { get; set; }
|
public string? CODTitle { get; set; }
|
||||||
@@ -35,5 +36,7 @@ namespace Shared.DTOs.Warehouse
|
|||||||
public TypeCirculation Type { get; set; }
|
public TypeCirculation Type { get; set; }
|
||||||
[Display(Name = "نوع سند")]
|
[Display(Name = "نوع سند")]
|
||||||
public string msgType { get { return Type.GetEnumDisplayName(); } }
|
public string msgType { get { return Type.GetEnumDisplayName(); } }
|
||||||
|
public int? invoiceID { get; set; }
|
||||||
|
public DateTime CreateDt { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -11,7 +11,7 @@ namespace Shared.DTOs.Warehouse
|
|||||||
{
|
{
|
||||||
public int? ID { get; set; }
|
public int? ID { get; set; }
|
||||||
public int CODID { get; set; }
|
public int CODID { get; set; }
|
||||||
public string CODTitle { get; set; }
|
public string? CODTitle { get; set; }
|
||||||
public decimal Count { get; set; }
|
public decimal Count { get; set; }
|
||||||
public string Date { get; set; }
|
public string Date { get; set; }
|
||||||
public TypeRemittance Type { get; set; }
|
public TypeRemittance Type { get; set; }
|
||||||
|
48
TaxPayerFULL.sln
Normal file
48
TaxPayerFULL.sln
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.9.34723.18
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Front", "TaxPayerFull\Front.csproj", "{0D25B253-4DAC-4D94-9BAD-C1E02F35F58B}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Back", "Back\Back.csproj", "{94DE9132-9D4E-468B-9BC4-134957BF48FE}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{07963EE9-ADA6-4A30-890B-6643BA332D3A}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "View", "View", "{25C58D68-C8E7-4623-9159-1FC010E73EEA}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "moadiran", "moadiran\moadiran.csproj", "{E209C152-76D5-469F-A969-B5BE5970CA7A}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{0D25B253-4DAC-4D94-9BAD-C1E02F35F58B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0D25B253-4DAC-4D94-9BAD-C1E02F35F58B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0D25B253-4DAC-4D94-9BAD-C1E02F35F58B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{0D25B253-4DAC-4D94-9BAD-C1E02F35F58B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{94DE9132-9D4E-468B-9BC4-134957BF48FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{94DE9132-9D4E-468B-9BC4-134957BF48FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{94DE9132-9D4E-468B-9BC4-134957BF48FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{94DE9132-9D4E-468B-9BC4-134957BF48FE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{07963EE9-ADA6-4A30-890B-6643BA332D3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{07963EE9-ADA6-4A30-890B-6643BA332D3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{07963EE9-ADA6-4A30-890B-6643BA332D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{07963EE9-ADA6-4A30-890B-6643BA332D3A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E209C152-76D5-469F-A969-B5BE5970CA7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{E209C152-76D5-469F-A969-B5BE5970CA7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E209C152-76D5-469F-A969-B5BE5970CA7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{E209C152-76D5-469F-A969-B5BE5970CA7A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{E209C152-76D5-469F-A969-B5BE5970CA7A} = {25C58D68-C8E7-4623-9159-1FC010E73EEA}
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {7631EF02-9C92-4BD7-BE06-54BA375F457F}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
@@ -16,7 +16,7 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
@if (_SuccessfulSubmissiontoTaxPayer)
|
@if (_SuccessfulSubmissiontoTaxPayer)
|
||||||
{
|
{
|
||||||
<li style="color:red">با این کالا صورتحسابی به سامانه مودیان ارسال کرده اید <br />نمیتوانید آن را ویرایش کنید</li>
|
<li style="color:red">با این کالا صورتحسابی به سامانه مودیان ارسال کرده اید <br />نمیتوانید آن را ویرایش کنید</li>
|
||||||
@@ -30,7 +30,16 @@
|
|||||||
}
|
}
|
||||||
<li style="color:dodgerblue">زمان ویرایش دقت کنید<br /> تغییرات میتواند روی فاکتورهای صادر شده تائیر بگذارد</li>
|
<li style="color:dodgerblue">زمان ویرایش دقت کنید<br /> تغییرات میتواند روی فاکتورهای صادر شده تائیر بگذارد</li>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@if (InventoryValue > 0)
|
||||||
|
{
|
||||||
|
<li style="color:seagreen">موجودی کالا در انبار : @InventoryValue</li>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<li style="color:red">این کالا در انبار موجودی ندارد</li>
|
||||||
|
|
||||||
|
}
|
||||||
</ul>
|
</ul>
|
||||||
}
|
}
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
@@ -38,14 +47,13 @@
|
|||||||
<label class="col-sm-4 col-form-label" style="color:red" for="inputTitle">نام کالا</label>
|
<label class="col-sm-4 col-form-label" style="color:red" for="inputTitle">نام کالا</label>
|
||||||
@if (Cod.ID == 0 || !_UsedInTheInvoice)
|
@if (Cod.ID == 0 || !_UsedInTheInvoice)
|
||||||
{
|
{
|
||||||
<InputText style="text-align:center" @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا"
|
<InputText style="text-align:center" @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا" />
|
||||||
/>
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<InputText style="text-align:center" @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا" readonly />
|
<InputText style="text-align:center" @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا" readonly />
|
||||||
}
|
}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
<label class="col-sm-5 col-form-label" style="color:red" for="inputUnitID">واحد اندازه گیزی</label>
|
<label class="col-sm-5 col-form-label" style="color:red" for="inputUnitID">واحد اندازه گیزی</label>
|
||||||
@@ -90,19 +98,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
@if (Cod.ID == 0)
|
@if (Cod.ID == 0)
|
||||||
{
|
{
|
||||||
<Button class="mt-3" Color="ButtonColor.Success" @onclick="OnClickAdd" Type="ButtonType.Button">
|
<Button class="mt-3" Color="ButtonColor.Success" @onclick="OnClickAdd" Type="ButtonType.Button">
|
||||||
جدید
|
جدید
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@if (!_SuccessfulSubmissiontoTaxPayer)
|
@if (!_SuccessfulSubmissiontoTaxPayer)
|
||||||
{
|
{
|
||||||
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickUpdate" Type="ButtonType.Button">
|
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickUpdate" Type="ButtonType.Button">
|
||||||
@@ -112,19 +120,20 @@ else
|
|||||||
حذف
|
حذف
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
|
|
||||||
@if (_UsedInTheInvoice)
|
@if (_UsedInTheInvoice)
|
||||||
|
|
||||||
{
|
{
|
||||||
<Button Disabled="SpinnerVisible" class=" mt-3" Color="ButtonColor.Link" @onclick="OnClickGoToInvoice" Type="ButtonType.Button">
|
<Button Disabled="SpinnerVisible" class=" mt-3" Color="ButtonColor.Link" @onclick="OnClickGoToInvoice" Type="ButtonType.Button">
|
||||||
صورتحساب های مرتبط
|
صورتحساب های مرتبط
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2" >
|
<div class="col-md-2">
|
||||||
<Spinner Visible="SpinnerVisible" Color="SpinnerColor.Primary" />
|
<Spinner Visible="SpinnerVisible" Color="SpinnerColor.Primary" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@code {
|
@code {
|
||||||
public bool SpinnerVisible { get; set; } = false;
|
public bool SpinnerVisible { get; set; } = false;
|
||||||
@@ -154,6 +163,9 @@ else
|
|||||||
alertMessage = "";
|
alertMessage = "";
|
||||||
await UsedInTheInvoice();
|
await UsedInTheInvoice();
|
||||||
await SuccessfulSubmissiontoTaxPayer();
|
await SuccessfulSubmissiontoTaxPayer();
|
||||||
|
// موجودی
|
||||||
|
await Inventory();
|
||||||
|
//
|
||||||
SpinnerVisible = false;
|
SpinnerVisible = false;
|
||||||
await base.OnParametersSetAsync();
|
await base.OnParametersSetAsync();
|
||||||
}
|
}
|
||||||
@@ -165,7 +177,7 @@ else
|
|||||||
}
|
}
|
||||||
public async Task UsedInTheInvoice()
|
public async Task UsedInTheInvoice()
|
||||||
{
|
{
|
||||||
if (Cod.ID!=0)
|
if (Cod.ID != 0)
|
||||||
{
|
{
|
||||||
var rsp = await hc.Get($"Cod/UsedInTheInvoice/{Cod.ID}");
|
var rsp = await hc.Get($"Cod/UsedInTheInvoice/{Cod.ID}");
|
||||||
if (rsp.IsSuccessStatusCode)
|
if (rsp.IsSuccessStatusCode)
|
||||||
@@ -175,6 +187,16 @@ else
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public decimal InventoryValue { get; set; } = 0;
|
||||||
|
public async Task Inventory()
|
||||||
|
{
|
||||||
|
if (Cod.ID != 0)
|
||||||
|
{
|
||||||
|
var rsp = await hc.Get($"Warehouse/Inventory/{Cod.ID}");
|
||||||
|
if (rsp.IsSuccessStatusCode)
|
||||||
|
InventoryValue = await rsp.Content.ReadFromJsonAsync<decimal>();
|
||||||
|
}
|
||||||
|
}
|
||||||
public async Task SuccessfulSubmissiontoTaxPayer()
|
public async Task SuccessfulSubmissiontoTaxPayer()
|
||||||
{
|
{
|
||||||
SpinnerVisible = true;
|
SpinnerVisible = true;
|
||||||
@@ -187,7 +209,7 @@ else
|
|||||||
else _SuccessfulSubmissiontoTaxPayer = false;
|
else _SuccessfulSubmissiontoTaxPayer = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinnerVisible = false ;
|
SpinnerVisible = false;
|
||||||
}
|
}
|
||||||
private void ShowSuccessAlert(string msg)
|
private void ShowSuccessAlert(string msg)
|
||||||
{
|
{
|
||||||
@@ -234,7 +256,7 @@ else
|
|||||||
SpinnerVisible = true;
|
SpinnerVisible = true;
|
||||||
if (Cod.UnitID > 0 && Cod.TaxRate >= 0 && !string.IsNullOrEmpty(Cod.Title))
|
if (Cod.UnitID > 0 && Cod.TaxRate >= 0 && !string.IsNullOrEmpty(Cod.Title))
|
||||||
{
|
{
|
||||||
|
|
||||||
var rsp = await hc.Put<RCOD>("Cod/Update", Cod);
|
var rsp = await hc.Put<RCOD>("Cod/Update", Cod);
|
||||||
if (rsp.IsSuccessStatusCode)
|
if (rsp.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
@@ -295,11 +317,11 @@ else
|
|||||||
message2: "اطمینان دارید?");
|
message2: "اطمینان دارید?");
|
||||||
|
|
||||||
if (confirmation)
|
if (confirmation)
|
||||||
await OnClickDelete();
|
await OnClickDelete();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@@ -21,8 +21,7 @@
|
|||||||
<select @bind="itemDTO.CODID" @bind:after="async () =>
|
<select @bind="itemDTO.CODID" @bind:after="async () =>
|
||||||
{
|
{
|
||||||
await AfterAsync();
|
await AfterAsync();
|
||||||
if(itemDTO.ID==null)
|
itemDTO.vra=await GetVra(itemDTO.CODID);
|
||||||
itemDTO.vra=cods.Where(w=>w.ID==itemDTO.CODID).Select(s=>s.Tax).FirstOrDefault();
|
|
||||||
}" class="form-control" aria-label="Default select example" id="inputcod">
|
}" class="form-control" aria-label="Default select example" id="inputcod">
|
||||||
@if (itemDTO.CODID > 0)
|
@if (itemDTO.CODID > 0)
|
||||||
{
|
{
|
||||||
@@ -54,7 +53,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label class="col-sm-6 col-form-label">نرخ مالیات</label>
|
<label class="col-sm-6 col-form-label">نرخ مالیات</label>
|
||||||
<InputNumber @bind-Value="itemDTO.vra" type="text" class="form-control" id="inputvra" placeholder="نرخ مالیات" readonly />
|
<InputNumber @bind-Value="itemDTO.vra" type="text" class="form-control" id="inputvra" placeholder="نرخ مالیات" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label class="col-sm-4 col-form-label" style="color:red" for="inputFullName">تعداد</label>
|
<label class="col-sm-4 col-form-label" style="color:red" for="inputFullName">تعداد</label>
|
||||||
@@ -98,24 +97,24 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
@if (itemDTO.ID == null)
|
@if (itemDTO.ID == null)
|
||||||
{
|
{
|
||||||
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickAdd" Type="ButtonType.Button">
|
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickAdd" Type="ButtonType.Button">
|
||||||
جدید
|
جدید
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickUpdate" Type="ButtonType.Button">
|
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickUpdate" Type="ButtonType.Button">
|
||||||
ثبت تغییرات
|
ثبت تغییرات
|
||||||
</Button>
|
</Button>
|
||||||
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Danger" @onclick="ShowConfirmationDeleteAsync" Type="ButtonType.Button">
|
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Danger" @onclick="ShowConfirmationDeleteAsync" Type="ButtonType.Button">
|
||||||
حذف
|
حذف
|
||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<Spinner Visible="SpinnerVisible" Color="SpinnerColor.Primary" />
|
<Spinner Visible="SpinnerVisible" Color="SpinnerColor.Primary" />
|
||||||
</div>
|
</div>
|
||||||
@@ -146,7 +145,8 @@ else
|
|||||||
protected override async Task OnParametersSetAsync()
|
protected override async Task OnParametersSetAsync()
|
||||||
{
|
{
|
||||||
SpinnerVisible = false;
|
SpinnerVisible = false;
|
||||||
|
if (!itemDTO.ID.HasValue)
|
||||||
|
itemDTO.vra = 0;
|
||||||
result = new ActionInResultComponent()
|
result = new ActionInResultComponent()
|
||||||
{
|
{
|
||||||
Status = ComponentStatus.fild
|
Status = ComponentStatus.fild
|
||||||
@@ -157,9 +157,9 @@ else
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@functions {
|
@functions {
|
||||||
private void ShowMessage(ToastType toastType,string msg) => messages.Add(CreateToastMessage(toastType,msg));
|
private void ShowMessage(ToastType toastType, string msg) => messages.Add(CreateToastMessage(toastType, msg));
|
||||||
|
|
||||||
private ToastMessage CreateToastMessage(ToastType toastType,string msg)
|
private ToastMessage CreateToastMessage(ToastType toastType, string msg)
|
||||||
=> new ToastMessage
|
=> new ToastMessage
|
||||||
{
|
{
|
||||||
Type = toastType,
|
Type = toastType,
|
||||||
@@ -172,6 +172,16 @@ else
|
|||||||
alertIconName = IconName.CheckCircleFill;
|
alertIconName = IconName.CheckCircleFill;
|
||||||
alertMessage = msg;
|
alertMessage = msg;
|
||||||
}
|
}
|
||||||
|
private async Task<decimal> GetVra(int CODID)
|
||||||
|
{
|
||||||
|
var rsp = await hc.Get($"COD/GetVra/{CODID}");
|
||||||
|
if (rsp.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
return await rsp.Content.ReadFromJsonAsync<decimal>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
private void ShowDangerAlert(string msg)
|
private void ShowDangerAlert(string msg)
|
||||||
{
|
{
|
||||||
Hidealert = false;
|
Hidealert = false;
|
||||||
@@ -266,10 +276,10 @@ else
|
|||||||
}
|
}
|
||||||
var rsp = await hc.Put<InvoiceItemAction<InvoiceItemDTO>>($"InvoiceItem/UpdateItem"
|
var rsp = await hc.Put<InvoiceItemAction<InvoiceItemDTO>>($"InvoiceItem/UpdateItem"
|
||||||
, new InvoiceItemAction<InvoiceItemDTO>
|
, new InvoiceItemAction<InvoiceItemDTO>
|
||||||
{
|
{
|
||||||
invoiceID=InvoiceID,
|
invoiceID = InvoiceID,
|
||||||
item = itemDTO
|
item = itemDTO
|
||||||
});
|
});
|
||||||
if (rsp.IsSuccessStatusCode)
|
if (rsp.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
var request = await rsp.Content.ReadFromJsonAsync<bool>();
|
var request = await rsp.Content.ReadFromJsonAsync<bool>();
|
||||||
|
@@ -118,6 +118,24 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
|
if (Selected.promotionDetails.Any(w => w.PermissionID == 18))
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td>@Selected.promotionDetails.Where(w => w.PermissionID == 18).Select(s => s.PermissionTitle).FirstOrDefault()</td>
|
||||||
|
<td>@Selected.promotionDetails.Where(w => w.PermissionID == 18).Select(s => s.APrice).FirstOrDefault().ToString("N0") ريال</td>
|
||||||
|
<td>
|
||||||
|
@if (Selected.ID < 0)
|
||||||
|
{
|
||||||
|
<InputNumber @bind-Value="values[4]" @bind-Value:after="OnInput" type="text" class="form-control" id="inputax" style="text-align:center;" placeholder="تعداد" />
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<input value="@Selected.promotionDetails.Where(w => w.PermissionID == 18).Select(s => s.CreditAmount).FirstOrDefault()" style="text-align:center;" class="form-control" type="text" readonly>
|
||||||
|
|
||||||
|
}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -154,7 +172,7 @@
|
|||||||
public List<PromotionDto> Promotions { get; set; } = new();
|
public List<PromotionDto> Promotions { get; set; } = new();
|
||||||
public PromotionDto? Selected { get; set; } = null;
|
public PromotionDto? Selected { get; set; } = null;
|
||||||
// invoice cod cus tax
|
// invoice cod cus tax
|
||||||
int[] values = { 0,0,0,0};
|
int[] values = { 0,0,0,0,0};
|
||||||
decimal TotalPrice = 0;
|
decimal TotalPrice = 0;
|
||||||
}
|
}
|
||||||
@functions {
|
@functions {
|
||||||
@@ -176,7 +194,7 @@
|
|||||||
{
|
{
|
||||||
orderSelectName = "نوع سفارش";
|
orderSelectName = "نوع سفارش";
|
||||||
Selected = null;
|
Selected = null;
|
||||||
values =new int[] { 0,0,0,0};
|
values =new int[] { 0,0,0,0,0};
|
||||||
TotalPrice = 0;
|
TotalPrice = 0;
|
||||||
Promotions = await fv.GetPromotion();
|
Promotions = await fv.GetPromotion();
|
||||||
orderstype = new List<IdName<int>>();
|
orderstype = new List<IdName<int>>();
|
||||||
@@ -220,6 +238,10 @@
|
|||||||
if (itemtax != null)
|
if (itemtax != null)
|
||||||
itemtax.CreditAmount = values[3];
|
itemtax.CreditAmount = values[3];
|
||||||
|
|
||||||
|
var itemwarehouse = Selected.promotionDetails.Where(w => w.PermissionID == 18).FirstOrDefault();
|
||||||
|
if (itemwarehouse != null)
|
||||||
|
itemwarehouse.CreditAmount = values[4];
|
||||||
|
|
||||||
TotalPrice = Selected.TotalPrice;
|
TotalPrice = Selected.TotalPrice;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,8 +252,8 @@
|
|||||||
SpinnerVisible = true;
|
SpinnerVisible = true;
|
||||||
if (Selected != null)
|
if (Selected != null)
|
||||||
{
|
{
|
||||||
if (Selected.ID < 0 && (values[0] < 0 || values[1] < 0 || values[2] < 0 || values[3] < 0)) return;
|
if (Selected.ID < 0 && (values[0] < 0 || values[1] < 0 || values[2] < 0 || values[3] < 0 || values[4] < 0)) return;
|
||||||
if (Selected.ID < 0 && values[0] == 0 && values[1] == 0 && values[2] == 0 && values[3] == 0) return;
|
if (Selected.ID < 0 && values[0] == 0 && values[1] == 0 && values[2] == 0 && values[3] == 0 && values[4] == 0) return;
|
||||||
|
|
||||||
//---------
|
//---------
|
||||||
var itemFac = Selected.promotionDetails.Where(w => w.PermissionID == 3).FirstOrDefault();
|
var itemFac = Selected.promotionDetails.Where(w => w.PermissionID == 3).FirstOrDefault();
|
||||||
@@ -249,6 +271,10 @@
|
|||||||
var itemtax = Selected.promotionDetails.Where(w => w.PermissionID == 16).FirstOrDefault();
|
var itemtax = Selected.promotionDetails.Where(w => w.PermissionID == 16).FirstOrDefault();
|
||||||
if (itemtax != null)
|
if (itemtax != null)
|
||||||
itemtax.CreditAmount = values[3];
|
itemtax.CreditAmount = values[3];
|
||||||
|
|
||||||
|
var itemwarehouse = Selected.promotionDetails.Where(w => w.PermissionID == 18).FirstOrDefault();
|
||||||
|
if (itemwarehouse != null)
|
||||||
|
itemwarehouse.CreditAmount = values[4];
|
||||||
//---------
|
//---------
|
||||||
var rsp = await hc.Post<PromotionDto>($"Orders/AddOrder", Selected);
|
var rsp = await hc.Post<PromotionDto>($"Orders/AddOrder", Selected);
|
||||||
if (rsp.IsSuccessStatusCode)
|
if (rsp.IsSuccessStatusCode)
|
||||||
|
355
TaxPayerFull/CUSComponent/WarehouseItem.razor
Normal file
355
TaxPayerFull/CUSComponent/WarehouseItem.razor
Normal file
@@ -0,0 +1,355 @@
|
|||||||
|
@using Front.Services
|
||||||
|
@using Shared
|
||||||
|
@using Shared.DTOs
|
||||||
|
@using Shared.DTOs.Warehouse
|
||||||
|
@using Shared.Enums
|
||||||
|
@inject HttpClientController hc;
|
||||||
|
<ConfirmDialog @ref="dialog" />
|
||||||
|
<form>
|
||||||
|
@* alert *@
|
||||||
|
<div class="row">
|
||||||
|
<Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
|
||||||
|
<Icon Name="@alertIconName" class="me-2"></Icon>
|
||||||
|
@alertMessage
|
||||||
|
</Alert>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (_UsedFromInvoice)
|
||||||
|
{
|
||||||
|
<ul>
|
||||||
|
<li style="color:red"> این سند از فاکتور صادر شده، ویرایش مستقیم آن ممکن نیست</li>
|
||||||
|
<br />
|
||||||
|
</ul>
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label class="col-sm-4 col-form-label" style="color:red" for="inputFullName">کالا</label>
|
||||||
|
|
||||||
|
<AutoComplete @bind-Value="model.CODTitle"
|
||||||
|
TItem="CODIdName<int>"
|
||||||
|
DataProvider="CODDataProvider"
|
||||||
|
PropertyName="Title"
|
||||||
|
Placeholder="جستجو در کالا..."
|
||||||
|
Disabled="!NewItem"
|
||||||
|
OnChanged="(CODIdName<int> cod) => OnAutoCompleteChanged(cod)" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-3">
|
||||||
|
<label class="col-sm-4 col-form-label" style="color:red">مقدار</label>
|
||||||
|
<InputNumber @bind-Value="model.Count" style="text-align:center" type="text" class="form-control" placeholder="مقدار" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-3">
|
||||||
|
<label class="col-sm-5 col-form-label" for="inputInvoicIssueDate">تاریخ</label>
|
||||||
|
<InputText style=" text-align: center;" @bind-Value="model.Date" type="text" class="form-control" id="inputInvoicIssueDate" placeholder="تاریخ" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="col-sm-4 col-form-label" style="color:red">نوع سند</label>
|
||||||
|
|
||||||
|
<select style="text-align:center" @bind="model.ModelTypeID" class="form-control" aria-label="Default select example">
|
||||||
|
<option value="0" style="color: #b5b5b5" selected>نوع سند ...</option>
|
||||||
|
@if (model.Type == TypeCirculation.Receipt)
|
||||||
|
{
|
||||||
|
<option value="1">خرید</option>
|
||||||
|
<option value="2">امانت</option>
|
||||||
|
}
|
||||||
|
@if (model.Type == TypeCirculation.Remittance)
|
||||||
|
{
|
||||||
|
|
||||||
|
<option value="3">فروش</option>
|
||||||
|
<option value="4">امانت</option>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-8">
|
||||||
|
<label class="col-form-label" for="inputdes">توضیحات</label>
|
||||||
|
<InputText @bind-Value="model.info" type="text" class="form-control" id="inputdes" placeholder="توضیحات" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@* <div class="col-md-2">
|
||||||
|
<select style="text-align:center" @bind="Doctype" class="form-control" aria-label="Default select example">
|
||||||
|
<option value="0" style="color: #b5b5b5" selected>نوع ...</option>
|
||||||
|
<option value="10">رسید</option>
|
||||||
|
<option value="20">حواله</option>
|
||||||
|
</select>
|
||||||
|
</div> *@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@if (model.Type == TypeCirculation.Receipt)
|
||||||
|
{
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="form-group col-md-4" style="margin-top:30px">
|
||||||
|
<Switch @bind-Value="forsale" Label="اجازه فروش" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<div class="row g-3">
|
||||||
|
<div class="col-md-10">
|
||||||
|
@if (NewItem)
|
||||||
|
{
|
||||||
|
<Button class="mt-3" Color="ButtonColor.Success" @onclick="OnClickAddOrUpdate" Type="ButtonType.Button">
|
||||||
|
جدید
|
||||||
|
</Button>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@if (!_UsedFromInvoice)
|
||||||
|
{
|
||||||
|
<Button Disabled="SpinnerVisible" class="mt-3" Color="ButtonColor.Success" @onclick="OnClickAddOrUpdate" Type="ButtonType.Button">
|
||||||
|
ثبت تغییرات
|
||||||
|
</Button>
|
||||||
|
<Button Disabled="SpinnerVisible" class=" mt-3" Color="ButtonColor.Danger" @onclick="ShowConfirmationDeleteAsync" Type="ButtonType.Button">
|
||||||
|
حذف
|
||||||
|
</Button>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2">
|
||||||
|
<Spinner Visible="SpinnerVisible" Color="SpinnerColor.Primary" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@code {
|
||||||
|
[Parameter] public CirculationDto model { get; set; }
|
||||||
|
[Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; }
|
||||||
|
[Parameter] public bool NewItem { get; set; }
|
||||||
|
[Parameter] public List<CODIdName<int>> CODrequest { get; set; }
|
||||||
|
private ConfirmDialog dialog = default!;
|
||||||
|
|
||||||
|
AlertColor alertColor = AlertColor.Primary;
|
||||||
|
IconName alertIconName = IconName.CheckCircleFill;
|
||||||
|
bool Hidealert = true;
|
||||||
|
string alertMessage = "";
|
||||||
|
|
||||||
|
bool _UsedFromInvoice = false;
|
||||||
|
|
||||||
|
public bool SpinnerVisible { get; set; } = false;
|
||||||
|
|
||||||
|
private bool forsale { get; set; } = true;
|
||||||
|
}
|
||||||
|
@functions {
|
||||||
|
protected override async Task OnParametersSetAsync()
|
||||||
|
{
|
||||||
|
if (NewItem)
|
||||||
|
forsale = true;
|
||||||
|
|
||||||
|
else
|
||||||
|
forsale = model.ForSale.HasValue ? model.ForSale.Value : false;
|
||||||
|
_UsedFromInvoice = model.invoiceID.HasValue;
|
||||||
|
if (NewItem)
|
||||||
|
model.Date = DateTime.Now.ConvertMiladiToShamsiinFront().ShamciToFormatShamciinFront();
|
||||||
|
|
||||||
|
await base.OnParametersSetAsync();
|
||||||
|
}
|
||||||
|
private void ShowSuccessAlert(string msg)
|
||||||
|
{
|
||||||
|
Hidealert = false;
|
||||||
|
alertColor = AlertColor.Success;
|
||||||
|
alertIconName = IconName.CheckCircleFill;
|
||||||
|
alertMessage = msg;
|
||||||
|
}
|
||||||
|
private void ShowDangerAlert(string msg)
|
||||||
|
{
|
||||||
|
Hidealert = false;
|
||||||
|
alertColor = AlertColor.Danger;
|
||||||
|
alertIconName = IconName.ExclamationTriangleFill;
|
||||||
|
alertMessage = msg;
|
||||||
|
}
|
||||||
|
public async Task OnClickDelete()
|
||||||
|
{
|
||||||
|
if (NewItem)
|
||||||
|
return;
|
||||||
|
|
||||||
|
SpinnerVisible = true;
|
||||||
|
await Delete();
|
||||||
|
SpinnerVisible = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task Delete()
|
||||||
|
{
|
||||||
|
string route = model.Type == TypeCirculation.Receipt ? "Receipt" : "Remittance";
|
||||||
|
|
||||||
|
var rsp = await hc.Delete($"{route}/{model.ID}");
|
||||||
|
if (rsp.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
|
||||||
|
ActionInResultComponent result = new ActionInResultComponent();
|
||||||
|
result.Status = ComponentStatus.success;
|
||||||
|
result.Action = ComponentAction.delete;
|
||||||
|
await OnMultipleOfThree.InvokeAsync(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound)
|
||||||
|
{
|
||||||
|
ShowDangerAlert("سندی یافت نشد");
|
||||||
|
}
|
||||||
|
else ShowDangerAlert("خطایی در اجرای عملیات رخ داده");
|
||||||
|
}
|
||||||
|
private async Task Addorupdate()
|
||||||
|
{
|
||||||
|
if ((model.Type == TypeCirculation.Receipt && !await ValidateReceipt())
|
||||||
|
|| (model.Type == TypeCirculation.Remittance && !await ValidateRemittance()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
string controller = model.Type == TypeCirculation.Receipt ? "Receipt" : "Remittance";
|
||||||
|
string route = NewItem ? "ADD" : "Update";
|
||||||
|
ActionInResultComponent result = new ActionInResultComponent();
|
||||||
|
HttpResponseMessage rsp = new HttpResponseMessage();
|
||||||
|
|
||||||
|
if (NewItem)
|
||||||
|
{
|
||||||
|
if (model.Type == TypeCirculation.Receipt)
|
||||||
|
rsp = await hc.Post($"{controller}/{route}", new ReceiptDto()
|
||||||
|
{
|
||||||
|
CODID = model.CODID,
|
||||||
|
Count = model.Count,
|
||||||
|
Date = model.Date,
|
||||||
|
ForSale = model.ForSale.Value,
|
||||||
|
info = model.info,
|
||||||
|
Type = (TypeReceipt)model.ModelTypeID,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (model.Type == TypeCirculation.Remittance)
|
||||||
|
rsp = await hc.Post($"{controller}/{route}", new RemittanceDto()
|
||||||
|
{
|
||||||
|
CODID = model.CODID,
|
||||||
|
Count = model.Count,
|
||||||
|
Date = model.Date,
|
||||||
|
info = model.info,
|
||||||
|
Type = (TypeRemittance)model.ModelTypeID,
|
||||||
|
});
|
||||||
|
result.Action = ComponentAction.add;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (model.Type == TypeCirculation.Receipt)
|
||||||
|
rsp = await hc.Put($"{controller}/{route}", new ReceiptDto()
|
||||||
|
{
|
||||||
|
ID = model.ID,
|
||||||
|
CODID = model.CODID,
|
||||||
|
Count = model.Count,
|
||||||
|
Date = model.Date,
|
||||||
|
ForSale = model.ForSale.Value,
|
||||||
|
info = model.info,
|
||||||
|
Type = (TypeReceipt)model.ModelTypeID,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (model.Type == TypeCirculation.Remittance)
|
||||||
|
rsp = await hc.Put($"{controller}/{route}", new RemittanceDto()
|
||||||
|
{
|
||||||
|
ID = model.ID,
|
||||||
|
CODID = model.CODID,
|
||||||
|
Count = model.Count,
|
||||||
|
Date = model.Date,
|
||||||
|
info = model.info,
|
||||||
|
Type = (TypeRemittance)model.ModelTypeID,
|
||||||
|
});
|
||||||
|
|
||||||
|
result.Action = ComponentAction.update;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (rsp.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
result.Status = ComponentStatus.success;
|
||||||
|
|
||||||
|
await OnMultipleOfThree.InvokeAsync(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
|
||||||
|
ShowDangerAlert(request[0]);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
ShowDangerAlert("حظای سیستمی");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public async Task OnClickAddOrUpdate()
|
||||||
|
{
|
||||||
|
SpinnerVisible = true;
|
||||||
|
await Addorupdate();
|
||||||
|
SpinnerVisible = false;
|
||||||
|
}
|
||||||
|
private async Task ShowConfirmationDeleteAsync()
|
||||||
|
{
|
||||||
|
if (!NewItem)
|
||||||
|
{
|
||||||
|
var confirmation = await dialog.ShowAsync(
|
||||||
|
title: "عملیات حذف سند انبار",
|
||||||
|
message1: $"{model.info}",
|
||||||
|
message2: "اطمینان دارید?");
|
||||||
|
|
||||||
|
if (confirmation)
|
||||||
|
await OnClickDelete();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task<bool> ValidateRemittance()
|
||||||
|
{
|
||||||
|
if (model.Type == TypeCirculation.Remittance)
|
||||||
|
{
|
||||||
|
if (model.ModelTypeID != 3 && model.ModelTypeID != 4)
|
||||||
|
ShowDangerAlert("نوع سند صحیح نمی باشد");
|
||||||
|
|
||||||
|
else return await Validate();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
private async Task<bool> ValidateReceipt()
|
||||||
|
{
|
||||||
|
if (model.Type == TypeCirculation.Receipt)
|
||||||
|
{
|
||||||
|
model.ForSale = forsale;
|
||||||
|
if (model.ModelTypeID != 1 && model.ModelTypeID != 2)
|
||||||
|
ShowDangerAlert("نوع سند صحیح نمی باشد");
|
||||||
|
|
||||||
|
else return await Validate();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
private async Task<bool> Validate()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (model.CODID == null || model.CODID == 0)
|
||||||
|
ShowDangerAlert("کالایی انتخاب کنید");
|
||||||
|
else if (model.Count <= 0)
|
||||||
|
ShowDangerAlert("تعدادی وارد کنید");
|
||||||
|
else if (string.IsNullOrEmpty(model.Date))
|
||||||
|
ShowDangerAlert("تاریخ را مشخص کنید");
|
||||||
|
else if (model.Date.Replace("/", "").Length != 8)
|
||||||
|
ShowDangerAlert("تاریخ صحیح نمی باشد");
|
||||||
|
else if (string.IsNullOrEmpty(model.info))
|
||||||
|
ShowDangerAlert("توضیحی مشخص کنید");
|
||||||
|
else return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
private async Task<AutoCompleteDataProviderResult<CODIdName<int>>> CODDataProvider(AutoCompleteDataProviderRequest<CODIdName<int>> request)
|
||||||
|
{
|
||||||
|
return await Task.FromResult(request.ApplyTo(CODrequest.OrderBy(cod => cod.ID)));
|
||||||
|
}
|
||||||
|
private void OnAutoCompleteChanged(CODIdName<int> cOD)
|
||||||
|
{
|
||||||
|
model.CODID = cOD.ID;
|
||||||
|
}
|
||||||
|
}
|
10
TaxPayerFull/DockerCommand.txt
Normal file
10
TaxPayerFull/DockerCommand.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
from run E:\TaxPayerFULL
|
||||||
|
docker build -f TaxPayerFULL\Dockerfile -t app_moadiran .
|
||||||
|
docker run --name app_moadiran -d -p 82:5107 app_moadiran
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------
|
||||||
|
in local => docker build -f TaxPayerFULL\Dockerfile -t mmrbnjd/app_moadiran:latest .
|
||||||
|
in local => docker push mmrbnjd/app_moadiran:latest
|
||||||
|
in server => docker pull mmrbnjd/app_moadiran:latest
|
||||||
|
in server => docker run -d -p 3102:5107 --restart always mmrbnjd/app_moadiran:latest
|
98
TaxPayerFull/Dockerfile
Normal file
98
TaxPayerFull/Dockerfile
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# مرحله ۱: Build پروژه Blazor WASM با .NET 9
|
||||||
|
# اینجا باید از SDK استفاده کنید نه aspnet
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
# نصب وابستگیها برای emscripten (python3 + سایر ابزارها)
|
||||||
|
RUN apt-get update && apt-get install -y python3 make cmake clang zlib1g-dev \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# کپی کردن فایلهای پروژه
|
||||||
|
COPY TaxPayerFull/Front.csproj Front/
|
||||||
|
COPY Shared/Shared.csproj Shared/
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# پاکسازی workloadهای قدیمی (اختیاری)
|
||||||
|
RUN dotnet workload clean
|
||||||
|
|
||||||
|
# نصب wasm-tools برای Blazor
|
||||||
|
RUN dotnet workload install wasm-tools
|
||||||
|
|
||||||
|
# انتشار (Publish) خروجی در حالت Release
|
||||||
|
RUN dotnet publish "TaxPayerFull/Front.csproj" -c Release -o /app \
|
||||||
|
-p:TreatWarningsAsErrors=false \
|
||||||
|
-p:RunAOTCompilation=false \
|
||||||
|
-p:PublishTrimmed=false
|
||||||
|
|
||||||
|
# مرحله ۲: سرو کردن با Nginx
|
||||||
|
FROM nginx:alpine AS final
|
||||||
|
WORKDIR /usr/share/nginx/html
|
||||||
|
|
||||||
|
# حذف محتوای پیشفرض nginx
|
||||||
|
RUN rm -rf ./*
|
||||||
|
|
||||||
|
# کپی خروجی Blazor WASM
|
||||||
|
COPY --from=build /app/wwwroot ./
|
||||||
|
|
||||||
|
# فقط بلوک server داخل default.conf
|
||||||
|
RUN printf 'server {\n\
|
||||||
|
listen 5107;\n\
|
||||||
|
server_name localhost;\n\
|
||||||
|
\n\
|
||||||
|
root /usr/share/nginx/html;\n\
|
||||||
|
index index.html;\n\
|
||||||
|
\n\
|
||||||
|
location / {\n\
|
||||||
|
try_files $uri $uri/ /index.html;\n\
|
||||||
|
}\n\
|
||||||
|
|
||||||
|
\n\
|
||||||
|
location /_framework/ {\n\
|
||||||
|
expires 1y;\n\
|
||||||
|
add_header Cache-Control "public, immutable";\n\
|
||||||
|
}\n\
|
||||||
|
\n\
|
||||||
|
location /_content/ {\n\
|
||||||
|
expires 1y;\n\
|
||||||
|
add_header Cache-Control "public, immutable";\n\
|
||||||
|
}\n\
|
||||||
|
\n\
|
||||||
|
location /assets/ {\n\
|
||||||
|
expires 7d;\n\
|
||||||
|
add_header Cache-Control "public";\n\
|
||||||
|
}\n\
|
||||||
|
\n\
|
||||||
|
location /css/ {\n\
|
||||||
|
expires 7d;\n\
|
||||||
|
add_header Cache-Control "public";\n\
|
||||||
|
}\n\
|
||||||
|
\n\
|
||||||
|
location /fonts/ {\n\
|
||||||
|
expires 7d;\n\
|
||||||
|
add_header Cache-Control "public";\n\
|
||||||
|
}\n\
|
||||||
|
\n\
|
||||||
|
location /img/ {\n\
|
||||||
|
expires 7d;\n\
|
||||||
|
add_header Cache-Control "public";\n\
|
||||||
|
}\n\
|
||||||
|
\n\
|
||||||
|
location /js/ {\n\
|
||||||
|
expires 7d;\n\
|
||||||
|
add_header Cache-Control "public";\n\
|
||||||
|
}\n\
|
||||||
|
\n\
|
||||||
|
location ~ \\.dll$ { add_header Content-Type application/octet-stream; }\n\
|
||||||
|
location ~ \\.wasm$ { add_header Content-Type application/wasm; }\n\
|
||||||
|
location ~ \\.pdb$ { add_header Content-Type application/octet-stream; }\n\
|
||||||
|
location ~ \\.dat$ { add_header Content-Type application/octet-stream; }\n\
|
||||||
|
\n\
|
||||||
|
gzip on;\n\
|
||||||
|
gzip_types text/plain application/xml text/css application/javascript application/json application/wasm;\n\
|
||||||
|
gzip_min_length 256;\n\
|
||||||
|
\n\
|
||||||
|
error_page 404 /index.html;\n\
|
||||||
|
}' > /etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
|
EXPOSE 5107
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
@@ -1,6 +1,7 @@
|
|||||||
@using System.Reflection
|
@using System.Reflection
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using Shared.DTOs
|
@using Shared.DTOs
|
||||||
|
@using Shared.DTOs.Warehouse
|
||||||
@typeparam T
|
@typeparam T
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -44,12 +45,61 @@
|
|||||||
|
|
||||||
if (property.CustomAttributes.Any(w => w.AttributeType.Name == "DisplayAttribute"))
|
if (property.CustomAttributes.Any(w => w.AttributeType.Name == "DisplayAttribute"))
|
||||||
{
|
{
|
||||||
if (property.PropertyType == typeof(Nullable<System.Decimal>) || property.PropertyType == typeof(System.Decimal))
|
|
||||||
|
if (property.PropertyType == typeof(Nullable<System.Decimal>)
|
||||||
|
|| property.PropertyType == typeof(System.Decimal) && item.ToString() != "Shared.DTOs.Warehouse.CirculationDto")
|
||||||
{
|
{
|
||||||
<td>
|
<td>
|
||||||
@decimal.Parse(property.GetValue(item, null).ToString()).ToString("N0") ريال
|
@decimal.Parse(property.GetValue(item, null).ToString()).ToString("N0") ريال
|
||||||
</td>
|
</td>
|
||||||
}
|
}
|
||||||
|
else if (property.PropertyType == typeof(Nullable<System.Boolean>)
|
||||||
|
|| property.PropertyType == typeof(System.Boolean))
|
||||||
|
{
|
||||||
|
var res = property.GetValue(item, null);
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
<td>
|
||||||
|
...
|
||||||
|
</td>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (res.ToString().ToLower()=="true")
|
||||||
|
{
|
||||||
|
<td>
|
||||||
|
دارد
|
||||||
|
</td>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<td>
|
||||||
|
ندارد
|
||||||
|
</td>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (property.Name.ToLower() == "msgtype" && item.ToString() == "Shared.DTOs.Warehouse.CirculationDto")
|
||||||
|
{
|
||||||
|
var convertmodel = (CirculationDto)Convert.ChangeType(item, typeof(CirculationDto));
|
||||||
|
switch (convertmodel.Type)
|
||||||
|
{
|
||||||
|
case TypeCirculation.Receipt:
|
||||||
|
<td style="background-color:#ffab00">@property.GetValue(item, null)</td>
|
||||||
|
break;
|
||||||
|
|
||||||
|
case TypeCirculation.Remittance:
|
||||||
|
<td style="background-color:#66c732">@property.GetValue(item, null)</td>
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
default:
|
||||||
|
<td>@property.GetValue(item, null)</td>
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (property.Name.ToLower() == "id" && item.ToString() != "Shared.DTOs.SentTaxDto")
|
else if (property.Name.ToLower() == "id" && item.ToString() != "Shared.DTOs.SentTaxDto")
|
||||||
{
|
{
|
||||||
if (id > 0)
|
if (id > 0)
|
||||||
|
File diff suppressed because one or more lines are too long
@@ -1,5 +1,6 @@
|
|||||||
<PageTitle>انبارداری</PageTitle>
|
<PageTitle>انبارداری</PageTitle>
|
||||||
@page "/Warehouse"
|
@page "/Warehouse"
|
||||||
|
@using Front.CUSComponent
|
||||||
@using Front.Services
|
@using Front.Services
|
||||||
@using Shared.DTOs
|
@using Shared.DTOs
|
||||||
@using Shared.DTOs.Warehouse
|
@using Shared.DTOs.Warehouse
|
||||||
@@ -11,7 +12,7 @@
|
|||||||
@* search *@
|
@* search *@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<h4 class="fw-bold py-3 mb-4">
|
<h4 class="fw-bold py-3 mb-4">
|
||||||
<span class="text-muted fw-light">سرویس ها /</span> مشتری
|
<span class="text-muted fw-light">سرویس ها /</span> انبارداری
|
||||||
</h4>
|
</h4>
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="card mb-2">
|
<div class="card mb-2">
|
||||||
@@ -20,7 +21,7 @@
|
|||||||
<ul class="list-group fa-padding" style="border: 2px solid #0d6efd">
|
<ul class="list-group fa-padding" style="border: 2px solid #0d6efd">
|
||||||
<li class="list-group-item" data-toggle="modal" data-target="#issue">
|
<li class="list-group-item" data-toggle="modal" data-target="#issue">
|
||||||
<div class="row g-3">
|
<div class="row g-3">
|
||||||
=
|
=
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<input @bind-value="date" placeholder="تاریخ" style="text-align:center" dir="ltr" class="form-control" type="number">
|
<input @bind-value="date" placeholder="تاریخ" style="text-align:center" dir="ltr" class="form-control" type="number">
|
||||||
</div>
|
</div>
|
||||||
@@ -55,20 +56,23 @@
|
|||||||
@* action *@
|
@* action *@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="mb-2">
|
<ul class="list-group fa-padding" >
|
||||||
<div class="row">
|
<li class="list-group-item" data-toggle="modal" data-target="#issue">
|
||||||
<div class="col-md-12">
|
<div class="row g-3">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<Button Disabled="SpinnerVisible" Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="()=>Item(new CirculationDto(){Type=TypeCirculation.Receipt})">رسید جدید</Button>
|
<Button Disabled="SpinnerVisible" Type="ButtonType.Submit" Color="ButtonColor.Warning" @onclick="()=>Item(new CirculationDto(){Type=TypeCirculation.Receipt})">رسید جدید</Button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto" >
|
||||||
<Button Disabled="SpinnerVisible" Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="()=>Item(new CirculationDto(){Type=TypeCirculation.Remittance})">حواله جدید</Button>
|
<Button Disabled="SpinnerVisible" Type="ButtonType.Submit" Color="ButtonColor.Success" @onclick="()=>Item(new CirculationDto(){Type=TypeCirculation.Remittance})">حواله جدید</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* alert *@
|
@* alert *@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
|
<Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
|
||||||
@@ -157,7 +161,15 @@
|
|||||||
string query = "";
|
string query = "";
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(date))
|
if (!string.IsNullOrEmpty(date))
|
||||||
query = $"date={date}&";
|
{
|
||||||
|
if (date.Replace("/","").Length==10)
|
||||||
|
query = $"date={date}&";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ShowDangerAlert("تاریخ صحیح نمی باشد");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (CODID != null && CODID != 0)
|
if (CODID != null && CODID != 0)
|
||||||
query += $"CODID={CODID}&";
|
query += $"CODID={CODID}&";
|
||||||
@@ -183,44 +195,42 @@
|
|||||||
}
|
}
|
||||||
public async Task CallBackItem(ActionInResultComponent result)
|
public async Task CallBackItem(ActionInResultComponent result)
|
||||||
{
|
{
|
||||||
|
if (result.Status == ComponentStatus.success && result.Action==ComponentAction.delete)
|
||||||
|
ShowSuccessAlert("حذف با موفقیت انجام شد");
|
||||||
|
if (result.Status == ComponentStatus.success && result.Action == ComponentAction.update)
|
||||||
|
ShowSuccessAlert("ویرایش با موفقیت انجام شد");
|
||||||
|
if (result.Status == ComponentStatus.success && result.Action == ComponentAction.add)
|
||||||
|
ShowSuccessAlert("سند جدید اضافه شد");
|
||||||
|
|
||||||
|
if (result.Status==ComponentStatus.success)
|
||||||
|
{
|
||||||
|
await Load(1);
|
||||||
|
await modal.HideAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public async Task Item(CirculationDto circulationDto)
|
public async Task Item(CirculationDto circulationDto)
|
||||||
{
|
{
|
||||||
//رسید
|
string title = "";
|
||||||
|
//رسید
|
||||||
if (circulationDto.Type == TypeCirculation.Receipt)
|
if (circulationDto.Type == TypeCirculation.Receipt)
|
||||||
{
|
title = "رسید";
|
||||||
//جدید
|
|
||||||
if (circulationDto.CODID==0)
|
//حواله
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//حواله
|
|
||||||
if (circulationDto.Type == TypeCirculation.Remittance)
|
if (circulationDto.Type == TypeCirculation.Remittance)
|
||||||
{
|
title = "حواله";
|
||||||
//جدید
|
|
||||||
if (circulationDto.CODID == 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
if (circulationDto.CODID == 0)
|
||||||
}
|
title += " جدید";
|
||||||
|
else title = "اطلاعات " + title;
|
||||||
// var parameters = new Dictionary<string, object>();
|
var parameters = new Dictionary<string, object>();
|
||||||
|
|
||||||
// if (ID == 0) parameters.Add("Cus", new RCustomer() { ID = 0 });
|
|
||||||
// else parameters.Add("Cus", request.list.Where(w => w.ID == ID).First().Clone());
|
|
||||||
|
|
||||||
// parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create<ActionInResultComponent>(this, CallBackCustomerItem));
|
parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create<ActionInResultComponent>(this, CallBackItem));
|
||||||
// await modal.ShowAsync<CustomerItem>(title: ID == 0 ? "مشتری جدید" : "ویرایش اطلاعات", parameters: parameters);
|
parameters.Add("model", circulationDto);
|
||||||
|
parameters.Add("NewItem", circulationDto.CODID == 0);
|
||||||
|
parameters.Add("CODrequest", CODrequest);
|
||||||
|
await modal.ShowAsync<WarehouseItem>(title: title, parameters: parameters);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -31,16 +31,17 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO()
|
|||||||
enterDate =new DateTime(),
|
enterDate =new DateTime(),
|
||||||
exitDate = new DateTime(),
|
exitDate = new DateTime(),
|
||||||
}) ;
|
}) ;
|
||||||
|
string BaseAddress = builder.Configuration.GetSection("BaseAddress").Value;
|
||||||
|
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(BaseAddress) });
|
||||||
// Server
|
// Server
|
||||||
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") });
|
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") });
|
||||||
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://moadiran.ir:444/api/") });
|
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://moadiran.ir:444/api/") });
|
||||||
|
|
||||||
//Home
|
//Home
|
||||||
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/") });
|
||||||
|
|
||||||
//farzan
|
//farzan
|
||||||
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") });
|
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") });
|
||||||
|
|
||||||
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");
|
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");
|
||||||
|
|
||||||
|
21
TaxPayerFull/default.conf
Normal file
21
TaxPayerFull/default.conf
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
server {
|
||||||
|
listen 8084;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~* \.(?:ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|svg)$ {
|
||||||
|
expires 6M;
|
||||||
|
access_log off;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /index.html {
|
||||||
|
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
|
||||||
|
}
|
||||||
|
}
|
12
TaxPayerFull/nginx.conf
Normal file
12
TaxPayerFull/nginx.conf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
worker_processes 1;
|
||||||
|
|
||||||
|
events { worker_connections 1024; }
|
||||||
|
|
||||||
|
http {
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
sendfile on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
10
TaxPayerFull/wwwroot/appsettings.json
Normal file
10
TaxPayerFull/wwwroot/appsettings.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"BaseAddress": "http://192.168.1.14:3201/api/",
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
48
docker-compose.yml
Normal file
48
docker-compose.yml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
version: '3.9'
|
||||||
|
|
||||||
|
services:
|
||||||
|
webapi:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: back/Dockerfile
|
||||||
|
image: moadiran.webapi:latest
|
||||||
|
container_name: moadiran-webapi
|
||||||
|
environment:
|
||||||
|
- ASPNETCORE_ENVIRONMENT=Production
|
||||||
|
ports:
|
||||||
|
- "1013:8080"
|
||||||
|
# networks:
|
||||||
|
# - moadirannet
|
||||||
|
|
||||||
|
land:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: moadiran/Dockerfile
|
||||||
|
image: moadiran.land:latest
|
||||||
|
container_name: moadiran-land
|
||||||
|
environment:
|
||||||
|
- ASPNETCORE_ENVIRONMENT=Production
|
||||||
|
ports:
|
||||||
|
- "81:7050"
|
||||||
|
depends_on:
|
||||||
|
- webapi
|
||||||
|
# networks:
|
||||||
|
# - moadirannet
|
||||||
|
|
||||||
|
webapp:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: TaxPayerFull/Dockerfile
|
||||||
|
image: moadiran.webapp:latest
|
||||||
|
container_name: moadiran-webapp
|
||||||
|
ports:
|
||||||
|
- "82:5107"
|
||||||
|
depends_on:
|
||||||
|
- webapi
|
||||||
|
# networks:
|
||||||
|
# - moadirannet
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
5
moadiran/.config/dotnet-tools.json
Normal file
5
moadiran/.config/dotnet-tools.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"isRoot": true,
|
||||||
|
"tools": {}
|
||||||
|
}
|
11
moadiran/DockerCommand.txt
Normal file
11
moadiran/DockerCommand.txt
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
from run E:\TaxPayerFULL
|
||||||
|
docker build -f moadiran\Dockerfile -t land_moadiran .
|
||||||
|
|
||||||
|
docker run --name land_moadiran -d -p 81:8080 land_moadiran
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------------------
|
||||||
|
in local => docker build -f moadiran\Dockerfile -t mmrbnjd/land_moadiran:latest .
|
||||||
|
in local => docker push mmrbnjd/land_moadiran:latest
|
||||||
|
in server => docker pull mmrbnjd/land_moadiran:latest
|
||||||
|
in server => docker run -d -p 3101:8080 --restart always mmrbnjd/land_moadiran:latest
|
30
moadiran/Dockerfile
Normal file
30
moadiran/Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
||||||
|
|
||||||
|
# This stage is used when running from VS in fast mode (Default for Debug configuration)
|
||||||
|
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
|
||||||
|
USER $APP_UID
|
||||||
|
WORKDIR /app
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
|
||||||
|
# This stage is used to build the service project
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
WORKDIR /src
|
||||||
|
COPY ["moadiran/moadiran.csproj", "moadiran/"]
|
||||||
|
COPY ["Shared/Shared.csproj", "Shared/"]
|
||||||
|
RUN dotnet restore "./moadiran/moadiran.csproj"
|
||||||
|
COPY . .
|
||||||
|
WORKDIR "/src/moadiran"
|
||||||
|
RUN dotnet build "./moadiran.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||||
|
|
||||||
|
# This stage is used to publish the service project to be copied to the final stage
|
||||||
|
FROM build AS publish
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
RUN dotnet publish "./moadiran.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||||
|
|
||||||
|
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
|
||||||
|
FROM base AS final
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=publish /app/publish .
|
||||||
|
ENTRYPOINT ["dotnet", "moadiran.dll"]
|
@@ -34,13 +34,15 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO()
|
|||||||
exitDate = new DateTime(),
|
exitDate = new DateTime(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
string BaseAddress = builder.Configuration.GetSection("BaseAddress").Value;
|
||||||
|
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(BaseAddress) });
|
||||||
|
|
||||||
// Server
|
// Server
|
||||||
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") });
|
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") });
|
||||||
// builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://moadiran.ir:444/api/") });
|
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://moadiran.ir:444/api/") });
|
||||||
|
|
||||||
//Home
|
//Home
|
||||||
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/") });
|
||||||
|
|
||||||
//farzan
|
//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/") });
|
||||||
|
@@ -1,21 +1,13 @@
|
|||||||
{
|
{
|
||||||
"iisSettings": {
|
|
||||||
"windowsAuthentication": false,
|
|
||||||
"anonymousAuthentication": true,
|
|
||||||
"iisExpress": {
|
|
||||||
"applicationUrl": "http://localhost:60550",
|
|
||||||
"sslPort": 44360
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"moadiran": {
|
"moadiran": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"dotnetRunMessages": true,
|
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"applicationUrl": "https://localhost:7050;http://localhost:5219",
|
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
},
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"applicationUrl": "https://localhost:7050;http://localhost:5219"
|
||||||
},
|
},
|
||||||
"IIS Express": {
|
"IIS Express": {
|
||||||
"commandName": "IISExpress",
|
"commandName": "IISExpress",
|
||||||
@@ -23,6 +15,25 @@
|
|||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Container (Dockerfile)": {
|
||||||
|
"commandName": "Docker",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_HTTPS_PORTS": "8081",
|
||||||
|
"ASPNETCORE_HTTP_PORTS": "8080"
|
||||||
|
},
|
||||||
|
"publishAllPorts": true,
|
||||||
|
"useSSL": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"iisSettings": {
|
||||||
|
"windowsAuthentication": false,
|
||||||
|
"anonymousAuthentication": true,
|
||||||
|
"iisExpress": {
|
||||||
|
"applicationUrl": "http://localhost:60550",
|
||||||
|
"sslPort": 44360
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"BaseAddress": "http://192.168.1.14:3201/api/",
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Information",
|
||||||
|
@@ -4,6 +4,8 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<UserSecretsId>a89579cc-1c94-4d4e-93a1-86ce286e98ac</UserSecretsId>
|
||||||
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -12,6 +14,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Blazor.Bootstrap" Version="2.2.0" />
|
<PackageReference Include="Blazor.Bootstrap" Version="2.2.0" />
|
||||||
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Shared\Shared.csproj" />
|
<ProjectReference Include="..\Shared\Shared.csproj" />
|
||||||
|
Reference in New Issue
Block a user