package models

// ============================================================
// 📦 ORDER DETAIL (trOrderLine)
// ============================================================
type OrderDetail struct {
	OrderLineID string `json:"OrderLineID"`

	// 🔑 Frontend’den gelen benzersiz anahtar (sadece JSON, DB kolonu değil)
	ClientKey    NullString `json:"clientKey"`
	ComboKey     NullString `json:"ComboKey"`
	SortOrder    NullInt32  `json:"SortOrder"`
	ItemTypeCode NullInt16  `json:"ItemTypeCode"`
	ItemCode     NullString `json:"ItemCode"`
	ColorCode    NullString `json:"ColorCode"`
	ItemDim1Code NullString `json:"ItemDim1Code"`
	ItemDim2Code NullString `json:"ItemDim2Code"`
	ItemDim3Code NullString `json:"ItemDim3Code"`

	Qty1 NullFloat64 `json:"Qty1"`
	Qty2 NullFloat64 `json:"Qty2"`

	CancelQty1 NullFloat64 `json:"CancelQty1"`
	CancelQty2 NullFloat64 `json:"CancelQty2"`
	CancelDate NullTime    `json:"CancelDate"`

	OrderCancelReasonCode NullString `json:"OrderCancelReasonCode"`
	ClosedDate            NullTime   `json:"ClosedDate"`
	IsClosed              NullBool   `json:"IsClosed"`

	SalespersonCode  NullString `json:"SalespersonCode"`
	PaymentPlanCode  NullString `json:"PaymentPlanCode"`
	PurchasePlanCode NullString `json:"PurchasePlanCode"`

	// MSSQL smalldatetime
	DeliveryDate NullTime `json:"DeliveryDate"`

	// MSSQL date (YYYY-MM-DD)
	PlannedDateOfLading NullString `json:"PlannedDateOfLading"`

	LineDescription NullString `json:"LineDescription"`
	UsedBarcode     NullString `json:"UsedBarcode"`
	CostCenterCode  NullString `json:"CostCenterCode"`

	VatCode NullString  `json:"VatCode"`
	VatRate NullFloat64 `json:"VatRate"`

	PCTCode NullString  `json:"PCTCode"`
	PCTRate NullFloat64 `json:"PCTRate"`

	LDisRate1 NullFloat64 `json:"LDisRate1"`
	LDisRate2 NullFloat64 `json:"LDisRate2"`
	LDisRate3 NullFloat64 `json:"LDisRate3"`
	LDisRate4 NullFloat64 `json:"LDisRate4"`
	LDisRate5 NullFloat64 `json:"LDisRate5"`

	DocCurrencyCode      NullString  `json:"DocCurrencyCode"`
	RelationCurrencyCode NullString  `json:"RelationCurrencyCode"`
	PriceCurrencyCode    NullString  `json:"PriceCurrencyCode"`
	PriceExchangeRate    NullFloat64 `json:"PriceExchangeRate"`

	Price NullFloat64 `json:"Price"`

	PriceListLineID NullString `json:"PriceListLineID"`

	BaseProcessCode      NullString `json:"BaseProcessCode"`
	BaseOrderNumber      NullString `json:"BaseOrderNumber"`
	BaseCustomerTypeCode NullInt32  `json:"BaseCustomerTypeCode"`
	BaseCustomerCode     NullString `json:"BaseCustomerCode"`
	BaseSubCurrAccID     NullString `json:"BaseSubCurrAccID"`
	BaseStoreCode        NullString `json:"BaseStoreCode"`

	SupportRequestHeaderID NullString `json:"SupportRequestHeaderID"`

	OrderHeaderID string `json:"OrderHeaderID"`

	OrderLineSumID NullInt32 `json:"OrderLineSumID"`
	OrderLineBOMID NullInt32 `json:"OrderLineBOMID"`

	CreatedUserName     NullString `json:"CreatedUserName"`
	CreatedDate         NullString `json:"CreatedDate"`
	LastUpdatedUserName NullString `json:"LastUpdatedUserName"`
	LastUpdatedDate     NullString `json:"LastUpdatedDate"`

	SurplusOrderQtyToleranceRate NullFloat64 `json:"SurplusOrderQtyToleranceRate"`

	PurchaseRequisitionLineID NullString `json:"PurchaseRequisitionLineID"`
	WithHoldingTaxTypeCode    NullString `json:"WithHoldingTaxTypeCode"`

	DOVCode                  NullString `json:"DOVCode"`
	OrderLineLinkedProductID NullString `json:"OrderLineLinkedProductID"`

	// JOIN attr
	UrunIlkGrubu NullString `json:"UrunIlkGrubu"`
	UrunAnaGrubu NullString `json:"UrunAnaGrubu"`
	UrunAltGrubu NullString `json:"UrunAltGrubu"`
	Fit1         NullString `json:"Fit1"`
	Fit2         NullString `json:"Fit2"`
	// ============================
	// 💰 Currency / Amount Fields
	// (trOrderLineCurrency)
	// ============================

	// Döviz bazlı
	DocPrice  NullFloat64 `json:"DocPrice"`  // PriceVI
	DocAmount NullFloat64 `json:"DocAmount"` // AmountVI

	// Yerel para (TRY)
	LocalPrice  NullFloat64 `json:"LocalPrice"`  // Price
	LocalAmount NullFloat64 `json:"LocalAmount"` // Amount

	// İndirimler
	LineDiscount  NullFloat64 `json:"LineDiscount"`  // LDiscount1
	TotalDiscount NullFloat64 `json:"TotalDiscount"` // TDiscount1

	// Vergi / Matrah
	TaxBase       NullFloat64 `json:"TaxBase"`
	VatAmount     NullFloat64 `json:"VatAmount"`
	VatDeducation NullFloat64 `json:"VatDeducation"`
	NetAmount     NullFloat64 `json:"NetAmount"`

	// Genel oran
	Pct NullFloat64 `json:"Pct"`
}
