diff --git a/Back/Controllers/InvoiceController.cs b/Back/Controllers/InvoiceController.cs index 4b09211..63c5269 100644 --- a/Back/Controllers/InvoiceController.cs +++ b/Back/Controllers/InvoiceController.cs @@ -81,7 +81,6 @@ namespace Back.Controllers if (!resultValidationmodel.IsValid) return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList()); - //if (item.BillReference.HasValue) //{ // Invoice ReferenceInvoice = await _servInvoice.GetInvoiceByInvoiceID(item.BillReference.Value); @@ -144,12 +143,18 @@ namespace Back.Controllers if (CheckTaxPayer) return BadRequest(new List { "این صورتحساب به سازمان ارسال شده"+'\n'+ "برای تغییر ،صورتحساب را ابطال/اصلاح یا برگشت بزنید"}); - else if (invoice.invoiceType == InvoiceType.BackFrmSale) + else if (invoice.invoiceType == InvoiceType.BackFrmSale ) { return BadRequest(new List { "صورتحساب در وضعیت برگشت از فروش امکان تغییر مشتری یا الگو را ندارد"+'\n'+ "بهتر است صورتحساب دیگر صادر کنید" }); } + else if (invoice.invoiceType == InvoiceType.Repair) + { + return BadRequest(new List + { "صورتحساب در وضعیت اصلاحی امکان تغییر مشتری یا الگو را ندارد"+'\n'+ + "بهتر است صورتحساب دیگر صادر کنید" }); + } else if (invoice.invoiceType != InvoiceType.Bidding && invoice.invoiceType != InvoiceType.Sale && invoice.invoiceType != InvoiceType.Repair) { diff --git a/Back/Controllers/InvoiceItemController.cs b/Back/Controllers/InvoiceItemController.cs index 82f4698..b02d659 100644 --- a/Back/Controllers/InvoiceItemController.cs +++ b/Back/Controllers/InvoiceItemController.cs @@ -48,6 +48,14 @@ namespace Back.Controllers if (invoice == null) return BadRequest(new List { "invoice notFound..." }); + if (invoice.invoiceType==InvoiceType.Repair) + { + return BadRequest(new List { "امکان افزودن کالا جدید در صورتحساب اصلاحی وجود ندارد" }); + } + if (invoice.invoiceType == InvoiceType.BackFrmSale) + { + return BadRequest(new List { "امکان افزودن کالا جدید در صورتحساب برگشت از فروش وجود ندارد" }); + } invoice.LastChangeUserID = Convert.ToInt32(UserID); @@ -81,10 +89,10 @@ namespace Back.Controllers if (invoice == null) return BadRequest(new List { "invoice notFound..." }); + - - //-----Validaton - var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, model.invoiceID, model.item, eActionValidation.update)); + //-----Validaton + var resultValidationmodel = await _validationInvoiceItem.ValidateAsync(Tuple.Create(user.RolUsers.First().CompanyID, model.invoiceID, model.item, eActionValidation.update)); if (!resultValidationmodel.IsValid) { if (invoice.invoiceType != InvoiceType.BackFrmSale || (invoice.invoiceType != InvoiceType.BackFrmSale @@ -103,8 +111,27 @@ namespace Back.Controllers if (invoiceitem == null) return BadRequest(new List { "invoice Item notFound..." }); + if (invoice.invoiceType == InvoiceType.Repair && invoiceitem.CODID != model.item.CODID) + { + return BadRequest(new List { "در صورتحساب اصلاجی نمیتوان کالا را تغییر داد" }); + } + if (invoice.invoiceType == InvoiceType.BackFrmSale && invoiceitem.CODID != model.item.CODID) + { + return BadRequest(new List { "در صورتحساب برگشت از فروش نمیتوان کالا را تغییر داد" }); + } + + if (invoice.invoiceType == InvoiceType.Repair && invoiceitem.fee != model.item.fee) + { + return BadRequest(new List { "در صورتحساب اصلاجی نمیتوان مبلغ واحد را تغییر داد" }); + } + if (invoice.invoiceType == InvoiceType.BackFrmSale && invoiceitem.fee != model.item.fee) + { + return BadRequest(new List { "در صورتحساب برگشت از فروش نمیتوان مبلغ واحد را تغییر داد" }); + } + + if (invoice.invoiceType==InvoiceType.BackFrmSale && invoiceitem.am < model.item.am) - return BadRequest(new List { "در حالت برگشت از فروش تعداد آیتم فقط میتواند کاهشی باشد" }); + return BadRequest(new List { "در صورتحساب برگشت از فروش تعداد آیتم فقط میتواند کاهشی باشد" }); invoice.LastChangeUserID = Convert.ToInt32(UserID); @@ -146,6 +173,14 @@ namespace Back.Controllers + if (invoiceitem.invoice.invoiceType == InvoiceType.Repair ) + { + return BadRequest(new List { "در صورتحساب اصلاجی نمیتوان کالا را حذف کذد" }); + } + if (invoiceitem.invoice.invoiceType == InvoiceType.BackFrmSale) + { + return BadRequest(new List { "در صورتحساب برگشت از فروش نمیتوان کالا را حذف کذد" }); + } invoiceitem.invoice.LastChangeUserID = Convert.ToInt32(UserID); diff --git a/Back/Data/Models/Invoice.cs b/Back/Data/Models/Invoice.cs index 09c2b01..2da1b4c 100644 --- a/Back/Data/Models/Invoice.cs +++ b/Back/Data/Models/Invoice.cs @@ -33,10 +33,10 @@ namespace Back.Data.Models public int? inp { get { return pattern?.inp; } } //شماره اقتصادی فروشنده [MaxLength(14)] - public string? tins { get { return company?.EconomicCode; } } + public string? tins { get { return company?.EconomicCode; } } //شماره اقتصادی خریدار [MaxLength(14)] - public string? tinb { get { return Customer.EconomicCode; } } + public string? tinb { get { return Customer.CustomerType==CustomerType.WithoutIdentity ?null : Customer.EconomicCode; } } //مجموع مبلغ قبل از کسر تخفیف [MaxLength(18)] public decimal? tprdis { get { return invoiceDetails.Sum(i => i.prdis); } } @@ -69,7 +69,7 @@ namespace Back.Data.Models public decimal? tvop { get { return invoiceDetails.Sum(i => i.vop); } } //نوع شخص خریدار [MaxLength(1)] - public int tob { get { return (int)Customer.CustomerType; } } + public int tob { get { return Customer.CustomerType == CustomerType.WithoutIdentity ? 0 : (int)Customer.CustomerType; } } //اریخ کوتاژ اظهارنامه گمرکی // Unix Time => from fild CottageDateOfCustomsDeclaration [MaxLength(5)] @@ -79,16 +79,16 @@ namespace Back.Data.Models } } //کد پستی خریدار [MaxLength(10)] - public string? bpc { get { return Customer.ZipCode; } } + public string? bpc { get { return Customer.CustomerType == CustomerType.WithoutIdentity ? null : Customer.ZipCode; } } //کد شعبه خریدار [MaxLength(10)] - public string? bbc { get { return Customer.BranchID; } } + public string? bbc { get { return Customer.CustomerType == CustomerType.WithoutIdentity ? null : Customer.BranchID; } } //شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی/ کد فراگیر اتباع غیرایرانی خریدار [MaxLength(14)] - public string? bid { get { return Customer.MeliCode; } } + public string? bid { get { return Customer.CustomerType == CustomerType.WithoutIdentity ? null : Customer.MeliCode; } } //شماره گذرنامه خریدار [MaxLength(9)] - public string? bpn { get { return Customer.PassportNumber; } } + public string? bpn { get { return Customer.CustomerType == CustomerType.WithoutIdentity ? null : Customer.PassportNumber; } } //کد شعبه فروشنده [MaxLength(9)] public string? sbc { get { return company?.BranchID; } } diff --git a/Back/Services/PreparationTaxInvoice.cs b/Back/Services/PreparationTaxInvoice.cs index 5e0723d..86da7c3 100644 --- a/Back/Services/PreparationTaxInvoice.cs +++ b/Back/Services/PreparationTaxInvoice.cs @@ -33,13 +33,14 @@ namespace Back.Services public int? Inp { get { return _invoice.inp ?? 1; } } public int? Ins { get { return _invoice.ins ?? 1; } } public string? Tins { get { return string.IsNullOrEmpty(_invoice.tins) ? null : _invoice.tins; } } - public int? Tob { get { return level == 10 ? 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 { get { return level == 10 || string.IsNullOrEmpty(_invoice.bid) || !string.IsNullOrEmpty(_invoice.tinb) - || _invoice.tob == 1 || _invoice.tob == 2 || _invoice.tob == 3 || _invoice.tob == 4 ? null : _invoice.bid}; + || _invoice.tob == 1 || _invoice.tob == 2 || _invoice.tob == 3 || _invoice.tob == 4 ? null : _invoice.bid; + } } public string? Tinb { get { return level == 10 || string.IsNullOrEmpty(_invoice.tinb) || _invoice.tob == 5 || _invoice.tob == 6 ? null : _invoice.tinb; } } public string? Sbc { get { return string.IsNullOrEmpty(_invoice.sbc) ? null : _invoice.sbc; } } diff --git a/Back/Validations/AddOrUpdateInvoiceValidation.cs b/Back/Validations/AddOrUpdateInvoiceValidation.cs index 7fa68b6..b4c424a 100644 --- a/Back/Validations/AddOrUpdateInvoiceValidation.cs +++ b/Back/Validations/AddOrUpdateInvoiceValidation.cs @@ -52,6 +52,7 @@ namespace Back.Validations RuleFor(r => r.Item2.PatternID) .Custom((PatternID, context) => { + if (PatternID != null && PatternID > 0 && !patternRepo.Get(w => w.Status && w.ID == PatternID).AnyAsync().Result) context.AddFailure("الگوی صورتحساب معتبر نیست"); }); @@ -61,9 +62,17 @@ namespace Back.Validations { if (model.Item2.CustomerID == null || model.Item2.CustomerID <= 0) context.AddFailure("برای صدور صورتحساب باید مشتری تعریف شود"); - + else if (!servCustomer.ExistCustomerByCustomerID(model.Item2.CustomerID, model.Item1).Result) context.AddFailure("مشتری یافت نشد"); + + var cus = servCustomer.GetCustomerByCustomerID(model.Item2.CustomerID, model.Item1).Result; + if (cus.CustomerType == CustomerType.WithoutIdentity && !(model.Item2.PatternID == 3 || model.Item2.PatternID == 5 || + model.Item2.PatternID == 5 || model.Item2.PatternID == 6 || model.Item2.PatternID == 8 || model.Item2.PatternID == 9 || model.Item2.PatternID == 14)) + context.AddFailure("مشتری بدون هویت برای این الگو نمیتوان در نظر گرفت"); + + + }); RuleFor(r => r.Item2.InvoiceDate) diff --git a/Shared/Enums/CustomerType.cs b/Shared/Enums/CustomerType.cs index 56c8fd4..2881fbd 100644 --- a/Shared/Enums/CustomerType.cs +++ b/Shared/Enums/CustomerType.cs @@ -16,7 +16,9 @@ namespace Shared.DTOs [Display(Name = "حقیقی با شناسه ملی")] genuineByMeliCode = 5, [Display(Name = "اتباع عیر ایرانی با شناسه ملی")] - NonIranianNationalsByMeliCode = 6 + NonIranianNationalsByMeliCode = 6, + [Display(Name = "بدون هویت")] + WithoutIdentity = 7 } -} +} \ No newline at end of file diff --git a/TaxPayerFull/CUSComponent/CustomerItem.razor b/TaxPayerFull/CUSComponent/CustomerItem.razor index 9e7c48b..c38fd02 100644 --- a/TaxPayerFull/CUSComponent/CustomerItem.razor +++ b/TaxPayerFull/CUSComponent/CustomerItem.razor @@ -54,6 +54,7 @@ + diff --git a/TaxPayerFull/Pages/UserPanel/Customer.razor b/TaxPayerFull/Pages/UserPanel/Customer.razor index 2813291..7fce905 100644 --- a/TaxPayerFull/Pages/UserPanel/Customer.razor +++ b/TaxPayerFull/Pages/UserPanel/Customer.razor @@ -32,6 +32,7 @@ +