This commit is contained in:
mmrbnjd
2024-06-27 19:18:50 +03:30
parent 6c8aaadac3
commit a44b27b8a7
9 changed files with 109 additions and 16 deletions

View File

@@ -114,7 +114,8 @@ namespace Back.Controllers
////-----change Cod ////-----change Cod
Cod.TaxRate = item.TaxRate; Cod.TaxRate = item.TaxRate;
//Cod.Title = item.Title; if(!await _servCOD.UsedInTheInvoice(Cod.ID))
Cod.Title = item.Title;
Cod.UnitID = item.UnitID; Cod.UnitID = item.UnitID;
Cod.ItemTaxID = item.TaxID; Cod.ItemTaxID = item.TaxID;
Cod.IsDeleted = false; Cod.IsDeleted = false;
@@ -138,5 +139,10 @@ namespace Back.Controllers
//----Update and sendResult //----Update and sendResult
return Ok(await _servCOD.DeleteCod(cod)); return Ok(await _servCOD.DeleteCod(cod));
} }
[HttpGet("UsedInTheInvoice/{ID}")]
public async Task<ActionResult<bool>> UsedInTheInvoice(int ID)
{
return Ok(await _servCOD.UsedInTheInvoice(ID));
}
} }
} }

View File

@@ -130,7 +130,8 @@ namespace Back.Controllers
cus.CustomerType = item.CustomerType; cus.CustomerType = item.CustomerType;
cus.EconomicCode = item.EconomicCode; cus.EconomicCode = item.EconomicCode;
cus.Email = item.Email; cus.Email = item.Email;
// cus.FullName = item.FullName; if(!await _servCus.UsedInTheInvoice(cus.ID))
cus.FullName = item.FullName;
cus.Info = item.Info; cus.Info = item.Info;
cus.MeliCode = item.MeliCode; cus.MeliCode = item.MeliCode;
cus.PassportNumber = item.PassportNumber; cus.PassportNumber = item.PassportNumber;
@@ -157,5 +158,10 @@ namespace Back.Controllers
//----Update and sendResult //----Update and sendResult
return Ok(await _servCus.DeleteCustomer(cus)); return Ok(await _servCus.DeleteCustomer(cus));
} }
[HttpGet("UsedInTheInvoice/{ID}")]
public async Task<ActionResult<bool>> UsedInTheInvoice(int ID)
{
return Ok(await _servCus.UsedInTheInvoice(ID));
}
} }
} }

View File

@@ -170,5 +170,9 @@ namespace Back.Services
} }
} }
public async Task<bool> UsedInTheInvoice(int codID)
{
return await _CODRepo.Get(w => w.invoiceDetails.Any(a=>a.CODID==codID)).AnyAsync();
}
} }
} }

View File

@@ -9,12 +9,13 @@ namespace Back.Services
public class servCustomer public class servCustomer
{ {
private readonly IAsyncRepository<Customer> _repoCus; private readonly IAsyncRepository<Customer> _repoCus;
private readonly IAsyncRepository<Invoice> _repoInvoice;
private readonly CheckPermission _checkPermission; private readonly CheckPermission _checkPermission;
public servCustomer(IAsyncRepository<Customer> repoCus, CheckPermission checkPermission) public servCustomer(IAsyncRepository<Customer> repoCus, CheckPermission checkPermission, IAsyncRepository<Invoice> repoInvoice)
{ {
_repoCus = repoCus; _repoCus = repoCus;
_checkPermission = checkPermission; _checkPermission = checkPermission;
_repoInvoice = repoInvoice;
} }
public async Task<PagingDto<RCustomer>?> GetCustomers(int CompanyID, ItemSerchGetCustomer itemSerch) public async Task<PagingDto<RCustomer>?> GetCustomers(int CompanyID, ItemSerchGetCustomer itemSerch)
{ {
@@ -189,6 +190,10 @@ namespace Back.Services
} }
} }
public async Task<bool> UsedInTheInvoice(int cusID)
{
return await _repoInvoice.Get(w => w.CustomerID == cusID).AnyAsync();
}
} }

View File

@@ -125,6 +125,9 @@ namespace Back.Services
if (itemSerch.refInvoiceID != null) if (itemSerch.refInvoiceID != null)
invok = invok.Where(w => w.BillReference==itemSerch.refInvoiceID); invok = invok.Where(w => w.BillReference==itemSerch.refInvoiceID);
if(itemSerch.CodID != null)
invok = invok.Where(w => w.invoiceDetails.Any(wa=>wa.CODID== itemSerch.CodID));
//foreach (InputObj item in inputObjs) //foreach (InputObj item in inputObjs)
// invok = invok.Where(ExMethod.GetFunc<Customer>(item.Param, item.Value)); // invok = invok.Where(ExMethod.GetFunc<Customer>(item.Param, item.Value));

View File

@@ -12,6 +12,7 @@ namespace Shared.DTOs.Serch
public int? InvoiceID { get; set; }// public int? InvoiceID { get; set; }//
public int? refInvoiceID { get; set; }// public int? refInvoiceID { get; set; }//
public int? CustomerID { get; set; } public int? CustomerID { get; set; }
public int? CodID { get; set; }
public InvoiceType? invoiceType { get; set; }// public InvoiceType? invoiceType { get; set; }//
public int PageIndex { get; set; } = 1; public int PageIndex { get; set; } = 1;
public int PageSize { get; set; } = 5; public int PageSize { get; set; } = 5;

View File

@@ -16,21 +16,24 @@
<h6 style="color:red">نکته:</h6> <h6 style="color:red">نکته:</h6>
<ul> <ul>
<li>در زمان ویرایش نمیتوانید نام کالا را عوض کنید</li> @if (_UsedInTheInvoice)
{
<li>با این کالا صورتحسابی صادر کرده اید ،نمیتوانید نام کالا را ویرایش کنید</li>
}
<li>زمان ویرایش دقت کنید تغییرات میتواند روی فاکتورهای صادر شده تائیر بگذارد</li> <li>زمان ویرایش دقت کنید تغییرات میتواند روی فاکتورهای صادر شده تائیر بگذارد</li>
</ul> </ul>
} }
<div class="row g-3"> <div class="row g-3">
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<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) @if (Cod.ID == 0 || !_UsedInTheInvoice)
{ {
<InputText @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا" <InputText @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا"
readonly /> />
} }
else else
{ {
<InputText @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا" /> <InputText @bind-Value="Cod.Title" type="text" class="form-control" id="inputTitle" placeholder="نام کالا" readonly />
} }
</div> </div>
@@ -95,6 +98,13 @@ else
<Button class="mt-3" Color="ButtonColor.Danger" @onclick="OnClickDelete" Type="ButtonType.Button"> <Button class="mt-3" Color="ButtonColor.Danger" @onclick="OnClickDelete" Type="ButtonType.Button">
حذف حذف
</Button> </Button>
@if (_UsedInTheInvoice)
{
<Button class="mt-3" Color="ButtonColor.Link" @onclick="OnClickGoToInvoice" Type="ButtonType.Button">
صورتحساب های مرتبط
</Button>
}
} }
@@ -105,25 +115,43 @@ else
IconName alertIconName = IconName.CheckCircleFill; IconName alertIconName = IconName.CheckCircleFill;
bool Hidealert = true; bool Hidealert = true;
string alertMessage = ""; string alertMessage = "";
bool _UsedInTheInvoice = false;
[Parameter] public RCOD Cod { get; set; } [Parameter] public RCOD Cod { get; set; }
[Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; } [Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; }
[Parameter] public List<IdName<int>>? Unitrequest { get; set; } [Parameter] public List<IdName<int>>? Unitrequest { get; set; }
public ActionInResultComponent result { get; set; } public ActionInResultComponent result { get; set; }
protected override Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {
result = new ActionInResultComponent() result = new ActionInResultComponent()
{ {
Status = ComponentStatus.fild Status = ComponentStatus.fild
}; };
Hidealert = true; Hidealert = true;
alertMessage = ""; alertMessage = "";
return base.OnParametersSetAsync(); await UsedInTheInvoice();
await base.OnParametersSetAsync();
} }
} }
@functions { @functions {
public async Task OnClickGoToInvoice()
{
hc._nav.NavigateTo($"Invoice/{"cod:" + Cod.ID}");
}
public async Task UsedInTheInvoice()
{
if (Cod.ID!=0)
{
var rsp = await hc.Get($"Cod/UsedInTheInvoice/{Cod.ID}");
if (rsp.IsSuccessStatusCode)
_UsedInTheInvoice = await rsp.Content.ReadFromJsonAsync<bool>();
else _UsedInTheInvoice = false;
}
}
private void ShowSuccessAlert(string msg) private void ShowSuccessAlert(string msg)
{ {
Hidealert = false; Hidealert = false;

View File

@@ -15,14 +15,19 @@
<h6 style="color:red">نکته:</h6> <h6 style="color:red">نکته:</h6>
<ul> <ul>
<li>در زمان ویرایش نمیتوانید نام کامل را عوض کنید</li>
@if (_UsedInTheInvoice)
{
<li>با این مشتری صورتحسابی صادر کرده اید ، نمیتوانید نام کامل را ویرایش کنید</li>
}
<li>زمان ویرایش دقت کنید تغییرات میتواند روی فاکتورهای صادر شده تائیر بگذارد</li> <li>زمان ویرایش دقت کنید تغییرات میتواند روی فاکتورهای صادر شده تائیر بگذارد</li>
</ul> </ul>
} }
<div class="row g-3"> <div class="row g-3">
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<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>
@if (Cus.ID == 0) @if (Cus.ID == 0 || !_UsedInTheInvoice)
{ {
<InputText @bind-Value="Cus.FullName" type="text" class="form-control" id="inputFullName" placeholder="نام کامل" /> <InputText @bind-Value="Cus.FullName" type="text" class="form-control" id="inputFullName" placeholder="نام کامل" />
} }
@@ -111,6 +116,12 @@ else
<Button class="mt-3" Color="ButtonColor.Danger" @onclick="OnClickDelete" Type="ButtonType.Button"> <Button class="mt-3" Color="ButtonColor.Danger" @onclick="OnClickDelete" Type="ButtonType.Button">
حذف حذف
</Button> </Button>
@if (_UsedInTheInvoice)
{
<Button class="mt-3" Color="ButtonColor.Link" @onclick="OnClickGoToInvoice" Type="ButtonType.Button">
صورتحساب های مرتبط
</Button>
}
} }
@@ -119,13 +130,14 @@ else
AlertColor alertColor = AlertColor.Primary; AlertColor alertColor = AlertColor.Primary;
IconName alertIconName = IconName.CheckCircleFill; IconName alertIconName = IconName.CheckCircleFill;
bool Hidealert = true; bool Hidealert = true;
bool _UsedInTheInvoice = false;
string alertMessage = ""; string alertMessage = "";
[Parameter] public RCustomer Cus { get; set; } [Parameter] public RCustomer Cus { get; set; }
public int? ItemSearchCustomertype { get; set; } public int? ItemSearchCustomertype { get; set; }
[Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; } [Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; }
public ActionInResultComponent result { get; set; } public ActionInResultComponent result { get; set; }
protected override Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {
if (Cus.CustomerType != null) if (Cus.CustomerType != null)
ItemSearchCustomertype = (int)Cus.CustomerType; ItemSearchCustomertype = (int)Cus.CustomerType;
@@ -136,7 +148,8 @@ else
}; };
Hidealert = true; Hidealert = true;
alertMessage = ""; alertMessage = "";
return base.OnParametersSetAsync(); await UsedInTheInvoice();
await base.OnParametersSetAsync();
} }
} }
@functions { @functions {
@@ -154,6 +167,10 @@ else
alertIconName = IconName.ExclamationTriangleFill; alertIconName = IconName.ExclamationTriangleFill;
alertMessage = msg; alertMessage = msg;
} }
public async Task OnClickGoToInvoice()
{
hc._nav.NavigateTo($"Invoice/{"cus:"+Cus.ID}");
}
public async Task OnClickDelete() public async Task OnClickDelete()
{ {
@@ -238,4 +255,16 @@ else
} }
else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند"); else ShowDangerAlert("فیلدهای قرمز باید مقدار دهی شوند");
} }
public async Task UsedInTheInvoice()
{
if (Cus.ID!=0)
{
var rsp = await hc.Get($"Customer/UsedInTheInvoice/{Cus.ID}");
if (rsp.IsSuccessStatusCode)
_UsedInTheInvoice = await rsp.Content.ReadFromJsonAsync<bool>();
else _UsedInTheInvoice = false;
}
}
} }

View File

@@ -1,4 +1,5 @@
@page "/Invoice" @page "/Invoice"
@page "/Invoice/{input}"
@using Front.Services @using Front.Services
@using Shared @using Shared
@using Shared.DTOs @using Shared.DTOs
@@ -130,6 +131,7 @@
return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName))); return await Task.FromResult(request.ApplyTo(customers.OrderBy(customer => customer.CustomerName)));
} }
//----------- //-----------
[Parameter] public string? input { get; set; }
[Inject] protected PreloadService PreloadService { get; set; } = default!; [Inject] protected PreloadService PreloadService { get; set; } = default!;
public int? ItemSearchInvoicetype { get; set; } public int? ItemSearchInvoicetype { get; set; }
ItemSerchGetInvoices itemsearch = new ItemSerchGetInvoices(); ItemSerchGetInvoices itemsearch = new ItemSerchGetInvoices();
@@ -146,6 +148,15 @@
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {
if (PageIndex == null) PageIndex = 1; if (PageIndex == null) PageIndex = 1;
if (!string.IsNullOrEmpty(input))
{
if (input.StartsWith("cus"))
itemsearch.CustomerID = Convert.ToInt32(input.Split(':')[1]);
else if (input.StartsWith("cod"))
itemsearch.CodID =Convert.ToInt32(input.Split(':')[1]);
}
await LoadInvoice(PageIndex.Value); await LoadInvoice(PageIndex.Value);
await base.OnParametersSetAsync(); await base.OnParametersSetAsync();
} }