using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Shared.DTOs
{
    public class NUInvoiceDTO
    {
        public int? ID { get; set; }
        public string Title { get; set; }
        public int? PatternID { get; set; }
        public int CustomerID { get; set; }
        public string InvoicIssueDate { get; set; }
        public string InvoiceDate { get; set; }
        public string? Des { get; set; }
    }
    public class InvoiceGridDTO
    {
        [Display(Name = "شناسه")]
        public int ID { get; set; }
        [Display(Name = "عنوان")]
        public string Title { get; set; }//
        [Display(Name = "نوع صورتحساب")]
        public string? invoiceTypeTitle { get; set; }//
        public int CustomerID { get; set; }//
        [Display(Name = "مشتری")]
        public string CustomerName { get; set; }//
        public string? Udate { get; set; }
        [Display(Name = "تاریخ صدور")]
        public string InvoicIssueDate { get; set; }//
        //مجموع تخفیفات
        [Display(Name = "مجموع تخفیف")]
        public decimal? tdis { get; set; }
        //مجموع مالیات بر ارزش افزوده
        [MaxLength(18)]
        [Display(Name = "مجموع مالیات")]
        public decimal? tvam { get; set; }
        //مجموع صورتحساب
        [MaxLength(18)]
        [Display(Name = "مجموع صورتحساب")]
        public decimal? tbill { get; set; }
        [Display(Name = "صورتحساب مرجع")]
        public int? BillReference { get; set; }
    }
    public class InvoiceDTO
    {
        [Display(Name = "شناسه")]
        public int ID { get; set; }
        [Display(Name = "عنوان")]
        public string Title { get; set; }//
        public InvoiceType? invoiceType { get; set; }//
        public int? PatternID { get; set; }//
        public string? PatternTitle { get; set; }//
        [Display(Name = "نوع صورتحساب")]
        public string? invoiceTypeTitle { get; set; }//
        public int CustomerID { get; set; }//
        [Display(Name = "مشتری")]
        public string CustomerName { get; set; }//
        public string? Udate { get; set; }
        [Display(Name = "تاریخ صدور")]
        public string InvoicIssueDate { get; set; }//
        public string InvoiceDate { get; set; }//
        public bool PreparedtoSendtoTax { get; set; }
        public string? Des { get; set; }
        //مجموع تخفیفات
        [Display(Name = "مجموع تخفیف")]
        public decimal? tdis { get; set; }
        //مجموع مالیات بر ارزش افزوده
        [MaxLength(18)]
        [Display(Name = "مجموع مالیات")]
        public decimal? tvam { get; set; }
        //مجموع صورتحساب
        [MaxLength(18)]
        [Display(Name = "مجموع صورتحساب")]
        public decimal? tbill { get; set; }
        public int? BillReference { get; set; }
        public bool IsDeleted { get; set; }
        public ICollection<InvoiceItemDTO> items { get; set; }=new List<InvoiceItemDTO>();
        public ICollection<InvoicePaymentDTO> payments { get; set; } = new List<InvoicePaymentDTO>();
       // public ICollection<InvoiceStatusDto> Invoicestatuschanges { get; set; }
        public ICollection<SentTaxDto> InvoiceSendTaxs { get; set; }=new List<SentTaxDto> { };

    }
    public class InvoiceItemDTO
    {
        public int? ID { get; set; }
        public int CODID { get; set; }
        // شرح کاال/خدمت
        public string? sstt { get; set; }
        //واحد اندازهگیری------
        public string? mu { get; set; }
        //تعداد/مقدار
        public decimal am { get; set; }
        //مبلغ واحد
        public decimal fee { get; set; }
        //نرخ مالیات بر ازش افزوده
        public decimal? vra { get; set; }
        //مبلغ مالیات بر ارزش افزوده
        public decimal? vam { get; set; }
        //مبلغ تخفیف
        public decimal? dis { get; set; } = 0;
        //مبلغ کل کالا/خدمت
        public decimal? tsstam { get; set; }
        //مبلغ قبل از تخفیف
        public decimal? prdis { get; set; }
        //مبلغ بعد از تخفیف
  
        public decimal? adis { get; set; }

    }
    public class InvoicePaymentDTO
    {
        public int? ID { get; set; }
        [MaxLength(9)]
        public string? iinn { get; set; }
        //شماره پذیرنده فروشگاهی
        [MaxLength(14)]
        public string? acn { get; set; }
        //شماره پایانه
        [MaxLength(8)]
        public string? trmn { get; set; }
        //روش پرداخت
        [MaxLength(2)]
        public int? pmt { get; set; }
        //شماره پیگیری/شماره مرجع
        [MaxLength(14)]
        public string? trn { get; set; }
        //شماره کارت پرداخت کننده صورتحساب
        [MaxLength(16)]
        public string? pcn { get; set; }
        //شماره/شناسه ملی/کد فراگیر اتباع غیر ایرانی پرداخت کننده صورتحساب
        [MaxLength(12)]
        public string? pid { get; set; }
        //تاریخ و زمان پرداخت
        [MaxLength(13)]
        public long? pdt { get; set; }
        public string? PaymentDateTime { get; set; }
        //مبلغ پرداختی
        [MaxLength(18)]
        public decimal? pv { get; set; }

    }
    //------------------------------
    public class InvoiceStatusDto
    {
        public string Date { get; set; }
        public string User { get; set; }
        public string FromStatus { get; set; }
        public string ToStatus { get; set; }
    }
    public class InvoiceSendTaxDTO
    {
        public int SendTaxID { get; set; }
        public string Date { get; set; }
        public string Status { get; set; }
        public string Type { get; set; }
    }
}

