using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Back.Common; using Shared.DTOs; namespace Back.Data.Models { public class Invoice { #region Key public int ID { get; set; } public int? PatternID { get; set; } public int? CompanyID { get; set; } public int CustomerID { get; set; } public int? BillReference { get; set; } #endregion #region autofild //سریال صورتحساب داخلی حافظه مالیاتی [MaxLength(10)] public string? inno { get { return ID.ToString("0000000000"); } } //تاریخ و زمان صدور صورتحساب )میالدی( [MaxLength(13)] public long? indatim { get { return new DateTimeOffset(InvoicIssueDate.Trim().ToMiladi()).ToUnixTimeMilliseconds(); } } //تاریخ و زمان ایجاد صورتحساب )میالدی( [MaxLength(15)] public long? Indati2m { get { return new DateTimeOffset(InvoiceDate.Trim().ToMiladi()).ToUnixTimeMilliseconds(); } } //نوع صورتحساب [MaxLength(1)] public int? inty { get { return pattern?.BillType.inty; } } //الگوی صورتحساب [MaxLength(2)] public int? inp { get { return pattern?.inp; } } //شماره اقتصادی فروشنده [MaxLength(14)] public string? tins { get { return company?.EconomicCode; } } //شماره اقتصادی خریدار [MaxLength(14)] public string? tinb { get { return Customer.EconomicCode; } } //مجموع مبلغ قبل از کسر تخفیف [MaxLength(18)] public decimal? tprdis { get { return invoiceDetails.Sum(i => i.prdis); } } //مجموع تخفیفات [MaxLength(18)] public decimal? tdis { get { return invoiceDetails.Sum(i => i.dis); } } //مجموع مبلغ پس از کسر تخفیف [MaxLength(18)] public decimal? tadis { get { return invoiceDetails.Sum(i => i.adis); } } //مجموع مالیات بر ارزش افزوده [MaxLength(18)] public decimal? tvam { get { return invoiceDetails.Sum(i => i.vam); } } //مجموع سایر مالیات، عوارض و وجوه قانونی [MaxLength(18)] public decimal? todam { get { return invoiceDetails.Sum(i => i.odam) + invoiceDetails.Sum(i => i.olam); } } //مجموع صورتحساب [MaxLength(18)] public decimal? tbill { get {return pattern?.inp==10? torv+ tvam+ todam : invoiceDetails.Sum(i => i.tsstam);}} //مجموع وزن خالص [MaxLength(18)] public decimal? tonw { get { return invoiceDetails.Sum(i => i.nw); } } //مجموع ارزش ریالی [MaxLength(18)] public decimal? torv { get { return invoiceDetails.Sum(i => i.ssrv); } } //مجموع ارزش ارزی [MaxLength(18)] public decimal? tocv { get { return invoiceDetails.Sum(i => i.sscv); } } //مجموع سهم مالیات بر ارزش افزوده از پرداخت [MaxLength(18)] public decimal? tvop { get { return invoiceDetails.Sum(i => i.vop); } } //نوع شخص خریدار [MaxLength(1)] public int tob { get { return (int)Customer.CustomerType; } } //اریخ کوتاژ اظهارنامه گمرکی // Unix Time => from fild CottageDateOfCustomsDeclaration [MaxLength(5)] public long? cdcd { get { return new DateTimeOffset(CottageDateOfCustomsDeclaration.Trim().ToMiladi()).ToUnixTimeMilliseconds(); } } //کد پستی خریدار [MaxLength(10)] public string? bpc { get { return Customer.ZipCode; } } //کد شعبه خریدار [MaxLength(10)] public string? bbc { get { return Customer.BranchID; } } //شناسه ملی/ شماره ملی/ شناسه مشارکت مدنی/ کد فراگیر اتباع غیرایرانی خریدار [MaxLength(14)] public string? bid { get { return Customer.MeliCode; } } //شماره گذرنامه خریدار [MaxLength(9)] public string? bpn { get { return Customer.PassportNumber; } } //کد شعبه فروشنده [MaxLength(9)] public string? sbc { get { return company?.BranchID; } } //مبلغ پرداختی نقدی [MaxLength(18)] public decimal? cap { get { return tbill- insp- tvam- todam; } } //موضوع صورتحساب [MaxLength(1)] public int? ins { get { return (int)invoiceType; } } #endregion #region fild public int? ExternalAccessCode { get; set; } public string Title { get; set; } public string? Des { get; set; } public InvoiceType invoiceType { get; set; } //شماره منحصر به فرد مالیاتی // [MaxLength(22)] public string taxid { get; set; } = ""; //شماره منحصر به فرد مالیاتی صورتحساب مرجع [MaxLength(22)] public string? irtaxid { get; set; } //نوع پرواز [MaxLength(9)] public int? ft { get; set; } //شماره پروانه گمرکی [MaxLength(14)] public string? scln { get; set; } //کد گمرک محل اظهار فروشنده [MaxLength(5)] public string? scc { get; set; } //شناسه یکتای ثبت قرارداد فروشنده [MaxLength(12)] public string? crn { get; set; } //شماره کوتاژ اظهارنامه گمرکی [MaxLength(14)] public string? cdcn { get; set; } //اریخ کوتاژ اظهارنامه گمرکی // Unix Time [MaxLength(5)] public string? CottageDateOfCustomsDeclaration { get; set; } //شماره اشتراک/ شناسه قبض بهرهبردار [MaxLength(19)] public string? billid { get; set; } //روش تسویه private int? _setm; [MaxLength(1)] public int? setm { get { return pattern.BillTypeID == 3 || pattern.BillTypeID == 4 || pattern.inp == 8 ? 1 : _setm; } set { _setm = value; } } //مبلغ نسیه [MaxLength(18)] public decimal? insp { get; set; } = 0; //مالیات موضوع ماده 17 [MaxLength(18)] public string? seventeentax { get; set; } //نکته باید به شمسی تبدیل شود public string? Cdate { get; set; } //تفاوت نرخ خرید و فروش ارز/ کارمزد فروش ارز [MaxLength(26)] public decimal? pspd { get; set; } public string? Udate { get; set; } public string InvoicIssueDate { get; set; } public string InvoiceDate { get; set; } public bool PreparedtoSendtoTax { get; set; } = false; public int LastChangeUserID { get; set; } public bool IsDeleted { get; set; } #endregion #region Navigation [ForeignKey("CustomerID")] public virtual Customer Customer { get; set; } [ForeignKey("LastChangeUserID")] public virtual User user { get; set; } public virtual ICollection invoiceDetails { get; set; } [ForeignKey("BillReference")] public virtual Invoice? invoice { get; set; } public virtual ICollection payments { get; set; } public virtual ICollection invoiceStatusChangs { get; set; } public virtual ICollection sentTax { get; set; } [ForeignKey("PatternID")] public virtual Pattern? pattern { get; set; } [ForeignKey("CompanyID")] public virtual Company? company { get; set; } #endregion } }