From 48072d6e00e35ca78a3870999bfcbb0fba5e72f2 Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Fri, 24 Jan 2025 19:18:17 +0330 Subject: [PATCH] ... --- Back/Controllers/InvoiceController.cs | 140 +++++++++++++++++- Back/Controllers/InvoiceItemController.cs | 38 +++-- .../Warehouse/WarehouseController.cs | 2 +- Back/Data/Models/Invoice.cs | 2 +- Back/Data/Models/InvoiceItem.cs | 7 +- Back/Services/Warehouse/ReceiptService.cs | 17 +++ Back/Services/Warehouse/RemittanceService.cs | 17 +++ Back/Services/servInvoice.cs | 14 +- Shared/DTOs/InvoiceDtos.cs | 2 +- Shared/DTOs/Warehouse/RemittanceDto.cs | 2 +- TaxPayerFull/CUSComponent/CodItem.razor | 86 +++++++---- TaxPayerFull/CUSComponent/WarehouseItem.razor | 14 +- TaxPayerFull/Layout/LTable.razor | 20 +++ .../Pages/UserPanel/InvoiceItem.razor | 95 ++++++++++++ 14 files changed, 389 insertions(+), 67 deletions(-) diff --git a/Back/Controllers/InvoiceController.cs b/Back/Controllers/InvoiceController.cs index a217390..05bd756 100644 --- a/Back/Controllers/InvoiceController.cs +++ b/Back/Controllers/InvoiceController.cs @@ -31,7 +31,7 @@ namespace Back.Controllers private readonly WarehouseService _warehouseService; private readonly ReceiptService _receiptService; - public InvoiceController(IConfiguration configuration, servInvoice servInvoice, servUser servUser, AddOrUpdateInvoiceValidation validationInvoice, servTaxPayer servTaxPayer, servReport servReport, IAsyncRepository rptQueueRepository, RemittanceService remittanceService, WarehouseService warehouseService) + public InvoiceController(IConfiguration configuration, servInvoice servInvoice, servUser servUser, AddOrUpdateInvoiceValidation validationInvoice, servTaxPayer servTaxPayer, servReport servReport, IAsyncRepository rptQueueRepository, RemittanceService remittanceService, WarehouseService warehouseService, ReceiptService receiptService) { _configuration = configuration; _servInvoice = servInvoice; @@ -42,6 +42,7 @@ namespace Back.Controllers _rptQueueRepository = rptQueueRepository; _remittanceService = remittanceService; _warehouseService = warehouseService; + _receiptService = receiptService; } [HttpPost("GetAll")] @@ -233,7 +234,41 @@ namespace Back.Controllers //{ // return BadRequest(new List { $"صورتحساب در حالت {invoice.invoiceType.GetEnumDisplayName()} نمی تواند ویرایش شود" }); //} + if (invoice.invoiceType!=InvoiceType.Cancellation) + { + bool InvoiceHasaRemittanceBillReference = invoice.BillReference.HasValue && await _remittanceService.HasaRemittance(invoice.BillReference.Value); + 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); + + //if (invoice.BillReference.HasValue && InvoiceHasaRemittanceBillReference) + //{ + // await _remittanceService.ADD(new Shared.DTOs.Warehouse.RemittanceDto() + // { + // CODID = item.CODID, + // Count = item.am.GetValueOrDefault(), + // Date = DateTime.Now.ConvertMiladiToShamsi(), + // InvoiceID = invoice.BillReference.Value, + // Type = TypeRemittance.Sale, + // info = $"حواله خودکار از صورتحساب {invoice.BillReference.Value}", + // }); + //} + } + } + } + invoice.LastChangeUserID = Convert.ToInt32(UserID); //----Update and sendResult return Ok(await _servInvoice.DeleteInvoice(invoice)); @@ -359,7 +394,29 @@ namespace Back.Controllers foreach (var item in Invoice.invoiceDetails) { 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)); } @@ -434,7 +491,29 @@ namespace Back.Controllers foreach (var item in Invoice.invoiceDetails) { 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)); } @@ -537,7 +616,29 @@ namespace Back.Controllers foreach (var item in Invoice.invoiceDetails) { 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)); } @@ -709,6 +810,11 @@ namespace Back.Controllers } else { + + if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceID).Result) + return BadRequest(new List {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+'\r'+ + "نمیتواند برای این صورتحساب حواله صادر کنید، ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" }); + List errors = new List(); var result = await _servInvoice.GetInvoice(user.RolUsers.First().CompanyID, InvoiceID); if (result.invoiceType == InvoiceType.Bidding || result.invoiceType == InvoiceType.Cancellation) @@ -720,9 +826,9 @@ namespace Back.Controllers .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); - 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) @@ -751,6 +857,28 @@ namespace Back.Controllers + } + [HttpPost("FreeRemittance/{InvoiceID}")] + public async Task 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() { $"حواله ای یافت نشد" }); + + } [HttpGet("HasaRemittance/{InvoiceID}")] public async Task HasaRemittance(int InvoiceID) diff --git a/Back/Controllers/InvoiceItemController.cs b/Back/Controllers/InvoiceItemController.cs index b5653f3..b759a1f 100644 --- a/Back/Controllers/InvoiceItemController.cs +++ b/Back/Controllers/InvoiceItemController.cs @@ -26,15 +26,17 @@ namespace Back.Controllers private readonly servInvoice _servInvoice; private readonly RemittanceService _remittanceService; 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; - _validationInvoiceItem = validationInvoiceItem; _servUser = servUser; + _validationInvoiceItem = validationInvoiceItem; _servInvoice = servInvoice; - + _remittanceService = remittanceService; + _warehouseService = warehouseService; } + [HttpPost("AddItem")] public async Task> AddItem([FromBody] InvoiceItemAction model) { @@ -53,6 +55,10 @@ namespace Back.Controllers if (invoice == null) return BadRequest(new List { "invoice notFound..." }); + if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, model.invoiceID).Result) + return BadRequest(new List {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+ + "برای تغییر در آیتم ها ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" }); + if (invoice.invoiceType == InvoiceType.Repair) { return BadRequest(new List { "امکان افزودن کالا جدید در صورتحساب اصلاحی وجود ندارد" }); @@ -123,7 +129,9 @@ namespace Back.Controllers if (invoice == null) return BadRequest(new List { "invoice notFound..." }); - + if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, model.invoiceID).Result) + return BadRequest(new List {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+ + "برای تغییر در آیتم ها ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" }); //-----Validaton var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, model.invoiceID, model.item, eActionValidation.update)); @@ -178,6 +186,8 @@ namespace Back.Controllers invoice.LastChangeUserID = Convert.ToInt32(UserID); + var copyInvoice = (InvoiceItem)invoiceitem.Clone(); + if (invoice.invoiceType == InvoiceType.BackFrmSale) invoiceitem.am = model.item.am; else @@ -190,14 +200,14 @@ namespace Back.Controllers 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); - if (inv - model.item.am <= 0) - return BadRequest(new List { "موجودی کالا کمتر از درخواست شماست" }); - else await _remittanceService.DeleteByInvoiceIDandCODID(invoiceitem.invoice.ID, invoiceitem.CODID); + if (inv+ copyInvoice.am - model.item.am < 0) + return BadRequest(new List { "خطای انبار :"+"موجودی کالا کمتر از درخواست شماست" }); + else await _remittanceService.DeleteByInvoiceIDandCODID(model.invoiceID, copyInvoice.CODID); // حواله جئدید await _remittanceService.ADD(new Shared.DTOs.Warehouse.RemittanceDto() @@ -205,9 +215,9 @@ namespace Back.Controllers CODID = model.item.CODID, Count = model.item.am, Date = DateTime.Now.ConvertMiladiToShamsi(), - info = $"حواله خودکار از صورتحساب {invoiceitem.invoice.ID}", + info = $"حواله خودکار از صورتحساب {model.invoiceID}", Type = TypeRemittance.Sale, - InvoiceID = invoiceitem.invoice.ID + InvoiceID = model.invoiceID }); } @@ -233,6 +243,10 @@ namespace Back.Controllers if (invoiceitem == null) return NotFound(new List { "invoice Item notFound..." }); + if (_servInvoice.checkFatherInvoiceByInvoiceID(user.RolUsers.First().CompanyID, InvoiceItemID).Result) + return BadRequest(new List {"این صورتحساب، مرجع چند صورتحساب دیگر می باشد " +'\n'+ + "برای تغییر در آیتم ها ابتدا صورتحساب هایی که ارتباط دارند را حذف کنید" }); + //-----Validaton var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, invoiceitem.InvoiceID.Value, new InvoiceItemDTO(), eActionValidation.delete)); if (!resultValidationmodel.IsValid) diff --git a/Back/Controllers/Warehouse/WarehouseController.cs b/Back/Controllers/Warehouse/WarehouseController.cs index 0e58674..caca7e7 100644 --- a/Back/Controllers/Warehouse/WarehouseController.cs +++ b/Back/Controllers/Warehouse/WarehouseController.cs @@ -27,7 +27,7 @@ namespace Back.Controllers.Warehouse var UserID = claim.Value; var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); 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}")] public async Task Inventory(int CODID) diff --git a/Back/Data/Models/Invoice.cs b/Back/Data/Models/Invoice.cs index 1bff243..ac0595b 100644 --- a/Back/Data/Models/Invoice.cs +++ b/Back/Data/Models/Invoice.cs @@ -148,7 +148,7 @@ namespace Back.Data.Models { get { - return pattern.BillTypeID == 3 || (pattern.BillTypeID == 2 && pattern.ID == 10) + return pattern!=null && (pattern.BillTypeID == 3 || (pattern.BillTypeID == 2 && pattern.ID == 10)) ? 1 : _setm; } diff --git a/Back/Data/Models/InvoiceItem.cs b/Back/Data/Models/InvoiceItem.cs index f56703a..d24ea49 100644 --- a/Back/Data/Models/InvoiceItem.cs +++ b/Back/Data/Models/InvoiceItem.cs @@ -4,7 +4,7 @@ using System.Reflection.Metadata.Ecma335; namespace Back.Data.Models { - public class InvoiceItem + public class InvoiceItem : ICloneable { #region Key public int ID { get; set; } @@ -147,6 +147,11 @@ namespace Back.Data.Models [ForeignKey("CODID")] public virtual CODItem cODItem { get; set; } + + public object Clone() + { + return this.MemberwiseClone(); + } #endregion } diff --git a/Back/Services/Warehouse/ReceiptService.cs b/Back/Services/Warehouse/ReceiptService.cs index eca8207..ebe05c1 100644 --- a/Back/Services/Warehouse/ReceiptService.cs +++ b/Back/Services/Warehouse/ReceiptService.cs @@ -83,6 +83,23 @@ namespace Back.Services.Warehouse return await _ReceiptRepo.UpdateAsync(model); } + public async Task 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; + return await _ReceiptRepo.UpdateRangeAsync(models); + + + } + //public async Task 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 Get(int itemID, int CompanyID) { return await _ReceiptRepo.Get(w => w.ID == itemID && w.cODItem.CompanyID == CompanyID && !w.Deleted) diff --git a/Back/Services/Warehouse/RemittanceService.cs b/Back/Services/Warehouse/RemittanceService.cs index bdbfa50..5518e37 100644 --- a/Back/Services/Warehouse/RemittanceService.cs +++ b/Back/Services/Warehouse/RemittanceService.cs @@ -24,6 +24,7 @@ namespace Back.Services.Warehouse Count = item.Count, info = item.info, Type = item.Type, + InvoiceID = item.InvoiceID, Deleted=false }; var returnmodel = await _ReceiptRepo.AddAsync(model); @@ -66,6 +67,22 @@ namespace Back.Services.Warehouse model.Deleted = true; return await _ReceiptRepo.UpdateAsync(model); + } + public async Task 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; + return await _ReceiptRepo.UpdateRangeAsync(models); + + } + public async Task 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 Get(int itemID, int CompanyID) { diff --git a/Back/Services/servInvoice.cs b/Back/Services/servInvoice.cs index 9663807..cec5895 100644 --- a/Back/Services/servInvoice.cs +++ b/Back/Services/servInvoice.cs @@ -4,23 +4,28 @@ using Shared.DTOs.Serch; using Shared.DTOs; using Back.Common; using Microsoft.EntityFrameworkCore; +using Back.Services.Warehouse; namespace Back.Services { public class servInvoice { + private readonly RemittanceService _remittanceService; + private readonly IAsyncRepository _invoiceRepo; private readonly IAsyncRepository _CodingRepo; private readonly IAsyncRepository _invoiceStatusChangPaymentRepo; private readonly CheckPermission _checkPermission; - public servInvoice(IAsyncRepository invoiceRepo, CheckPermission checkPermission - , IAsyncRepository invoiceStatusChangPaymentRepo, IAsyncRepository codingRepo) + + public servInvoice(RemittanceService remittanceService, IAsyncRepository invoiceRepo, IAsyncRepository codingRepo, IAsyncRepository invoiceStatusChangPaymentRepo, CheckPermission checkPermission) { - _invoiceStatusChangPaymentRepo = invoiceStatusChangPaymentRepo; + _remittanceService = remittanceService; _invoiceRepo = invoiceRepo; - _checkPermission = checkPermission; _CodingRepo = codingRepo; + _invoiceStatusChangPaymentRepo = invoiceStatusChangPaymentRepo; + _checkPermission = checkPermission; } + public async Task> GetCodingPMT() { return await _CodingRepo.Get(w => w.FildID == 71).ToListAsync(); @@ -65,6 +70,7 @@ namespace Back.Services tbill = item.tbill, Des = item.Des, PreparedtoSendtoTax = item.PreparedtoSendtoTax, + HasaRemittance= await _remittanceService.HasaRemittance(ID), tdis = item.tdis, tvam = item.tvam, Udate = item.Udate.ShamciToFormatShamci(), diff --git a/Shared/DTOs/InvoiceDtos.cs b/Shared/DTOs/InvoiceDtos.cs index 49e2e35..71b40b5 100644 --- a/Shared/DTOs/InvoiceDtos.cs +++ b/Shared/DTOs/InvoiceDtos.cs @@ -87,7 +87,7 @@ namespace Shared.DTOs [MaxLength(10)] [Display(Name = "سریال صورتحساب داخلی حافظه مالیاتی")] public string? inno { get; set; } - + public bool HasaRemittance { get; set; } } public class InvoiceItemDTO diff --git a/Shared/DTOs/Warehouse/RemittanceDto.cs b/Shared/DTOs/Warehouse/RemittanceDto.cs index afb8b31..e96e968 100644 --- a/Shared/DTOs/Warehouse/RemittanceDto.cs +++ b/Shared/DTOs/Warehouse/RemittanceDto.cs @@ -11,7 +11,7 @@ namespace Shared.DTOs.Warehouse { public int? ID { get; set; } public int CODID { get; set; } - public string CODTitle { get; set; } + public string? CODTitle { get; set; } public decimal Count { get; set; } public string Date { get; set; } public TypeRemittance Type { get; set; } diff --git a/TaxPayerFull/CUSComponent/CodItem.razor b/TaxPayerFull/CUSComponent/CodItem.razor index a369a91..e1adb34 100644 --- a/TaxPayerFull/CUSComponent/CodItem.razor +++ b/TaxPayerFull/CUSComponent/CodItem.razor @@ -16,7 +16,7 @@ {
    - + @if (_SuccessfulSubmissiontoTaxPayer) {
  • با این کالا صورتحسابی به سامانه مودیان ارسال کرده اید
    نمیتوانید آن را ویرایش کنید
  • @@ -30,7 +30,16 @@ }
  • زمان ویرایش دقت کنید
    تغییرات میتواند روی فاکتورهای صادر شده تائیر بگذارد
  • } - + + @if (InventoryValue > 0) + { +
  • موجودی کالا در انبار : @InventoryValue
  • + } + else + { +
  • این کالا در انبار موجودی ندارد
  • + + }
}
@@ -38,14 +47,13 @@ @if (Cod.ID == 0 || !_UsedInTheInvoice) { - + } else { } - +
@@ -90,19 +98,19 @@
- + -
+
-@if (Cod.ID == 0) -{ - -} -else -{ + @if (Cod.ID == 0) + { + + } + else + { @if (!_SuccessfulSubmissiontoTaxPayer) { } - - @if (_UsedInTheInvoice) - - { - - } -} + + @if (_UsedInTheInvoice) + + { + + } + + }
-
+
-
+
@code { public bool SpinnerVisible { get; set; } = false; @@ -154,6 +163,9 @@ else alertMessage = ""; await UsedInTheInvoice(); await SuccessfulSubmissiontoTaxPayer(); + // موجودی + await Inventory(); + // SpinnerVisible = false; await base.OnParametersSetAsync(); } @@ -165,7 +177,7 @@ else } public async Task UsedInTheInvoice() { - if (Cod.ID!=0) + if (Cod.ID != 0) { var rsp = await hc.Get($"Cod/UsedInTheInvoice/{Cod.ID}"); 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(); + } + } public async Task SuccessfulSubmissiontoTaxPayer() { SpinnerVisible = true; @@ -187,7 +209,7 @@ else else _SuccessfulSubmissiontoTaxPayer = false; } - SpinnerVisible = false ; + SpinnerVisible = false; } private void ShowSuccessAlert(string msg) { @@ -234,7 +256,7 @@ else SpinnerVisible = true; if (Cod.UnitID > 0 && Cod.TaxRate >= 0 && !string.IsNullOrEmpty(Cod.Title)) { - + var rsp = await hc.Put("Cod/Update", Cod); if (rsp.IsSuccessStatusCode) { @@ -295,11 +317,11 @@ else message2: "اطمینان دارید?"); if (confirmation) - await OnClickDelete(); - + await OnClickDelete(); + } } - + } \ No newline at end of file diff --git a/TaxPayerFull/CUSComponent/WarehouseItem.razor b/TaxPayerFull/CUSComponent/WarehouseItem.razor index 1c9cf3d..415dda8 100644 --- a/TaxPayerFull/CUSComponent/WarehouseItem.razor +++ b/TaxPayerFull/CUSComponent/WarehouseItem.razor @@ -17,7 +17,7 @@ @if (_UsedFromInvoice) {
    -
  • style="color:indianred"این سند از فاکتور صادر شده، ویرایش مستقیم آن ممکن نیست
  • +
  • این سند از فاکتور صادر شده، ویرایش مستقیم آن ممکن نیست

} @@ -31,11 +31,12 @@ DataProvider="CODDataProvider" PropertyName="Title" Placeholder="جستجو در کالا..." + Disabled="!NewItem" OnChanged="(CODIdName cod) => OnAutoCompleteChanged(cod)" />
- - + +
@@ -179,15 +180,12 @@ var rsp = await hc.Delete($"{route}/{model.ID}"); if (rsp.IsSuccessStatusCode) { - var request = await rsp.Content.ReadFromJsonAsync(); - if (request) - { + ActionInResultComponent result = new ActionInResultComponent(); result.Status = ComponentStatus.success; result.Action = ComponentAction.delete; await OnMultipleOfThree.InvokeAsync(result); - } - else ShowDangerAlert("خطایی در اجرای عملیات رخ داده"); + } else if (rsp.StatusCode == System.Net.HttpStatusCode.NotFound) diff --git a/TaxPayerFull/Layout/LTable.razor b/TaxPayerFull/Layout/LTable.razor index 355664d..761d0c6 100644 --- a/TaxPayerFull/Layout/LTable.razor +++ b/TaxPayerFull/Layout/LTable.razor @@ -1,6 +1,7 @@ @using System.Reflection @using System.ComponentModel.DataAnnotations @using Shared.DTOs +@using Shared.DTOs.Warehouse @typeparam T
@@ -79,7 +80,26 @@ } } + 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: + @property.GetValue(item, null) + break; + case TypeCirculation.Remittance: + @property.GetValue(item, null) + break; + + + + default: + @property.GetValue(item, null) + break; + } + } else if (property.Name.ToLower() == "id" && item.ToString() != "Shared.DTOs.SentTaxDto") { if (id > 0) diff --git a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor index 6743e37..95a79b3 100644 --- a/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor +++ b/TaxPayerFull/Pages/UserPanel/InvoiceItem.razor @@ -99,6 +99,30 @@ + @if (invoice.invoiceType != InvoiceType.Bidding && invoice.invoiceType != InvoiceType.Cancellation) + { + @if (invoice.HasaRemittance) + { + + + + } + else + { + + + + } + + } +
@@ -450,6 +474,7 @@ public List>? Patterns { get; set; } public InvoiceDTO? invoice { get; set; } public string ExUrl { get; set; } = ""; + private bool warwhouse = false; protected override async Task OnInitializedAsync() { SpinnerVisible = false; @@ -515,6 +540,76 @@ } + } + private async Task OnClickCancelRemittance() + { + if (InvoiceID.HasValue) + { + SpinnerVisible = true; + var confirmation = await dialog.ShowAsync( + title: "عملیات لغو حواله", + message1: $"با انجام این عملیات حواله های این صورتحساب لغو میشوند،صورتحساب از انبار آزاد میشود و موجودی به انبار برمیگردد", + message2: "اطمینان دارید?"); + + if (!confirmation) return; + + var rsp = await hc.Post($"Invoice/FreeRemittance/{InvoiceID}"); + if (rsp.IsSuccessStatusCode) + { + invoice.HasaRemittance = false; + ShowSuccessAlert("حواله لغو شد"); + } + else + { + try + { + var request = await rsp.Content.ReadFromJsonAsync>(); + ShowDangerAlert(request[0]); + } + catch (Exception) + { + ShowDangerAlert("خطای سیستمی"); + } + + } + SpinnerVisible = false; + } + + } + private async Task OnClickRemittance() + { + if (InvoiceID.HasValue) + { + SpinnerVisible = true; + var confirmation = await dialog.ShowAsync( + title: "عملیات صدور حواله", + message1: $"با انجام این عملیات حواله ای برای آیتم های صورتحساب صادر میشود و با ویرایش هر آیتم صورتحساب تغییرات روی حواله صادر شده هم تائیر میگذارید", + message2: "اطمینان دارید?"); + + if (!confirmation) return; + + var rsp = await hc.Post($"Invoice/IssuingRemittance/{InvoiceID}"); + if (rsp.IsSuccessStatusCode) + { + invoice.HasaRemittance = true; + ShowSuccessAlert("حواله ثبت شد"); + } + else + { + try + { + var request = await rsp.Content.ReadFromJsonAsync>(); + ShowDangerAlert(request[0]); + } + catch (Exception) + { + ShowDangerAlert("خطای سیستمی"); + } + + } + SpinnerVisible = false; + } + } private async Task OnClickPayment() {