package models

type OrderProductionUpdateLine struct {
	OrderLineID  string  `json:"OrderLineID"`
	NewItemCode  string  `json:"NewItemCode"`
	NewColor     string  `json:"NewColor"`
	ItemDim1Code *string `json:"ItemDim1Code,omitempty"`
	NewDim2      string  `json:"NewDim2"`
	NewDesc      string  `json:"NewDesc"`
	OldDueDate   string  `json:"OldDueDate"`
	NewDueDate   string  `json:"NewDueDate"`
}

type OrderProductionUpdatePayload struct {
	Lines                []OrderProductionUpdateLine       `json:"lines"`
	InsertMissing        bool                              `json:"insertMissing"`
	CdItems              []OrderProductionCdItemDraft      `json:"cdItems"`
	ProductAttributes    []OrderProductionItemAttributeRow `json:"productAttributes"`
	HeaderAverageDueDate *string                           `json:"HeaderAverageDueDate,omitempty"`
}

type OrderProductionMissingVariant struct {
	OrderLineID  string `json:"OrderLineID"`
	ItemTypeCode int16  `json:"ItemTypeCode"`
	ItemCode     string `json:"ItemCode"`
	ColorCode    string `json:"ColorCode"`
	ItemDim1Code string `json:"ItemDim1Code"`
	ItemDim2Code string `json:"ItemDim2Code"`
	ItemDim3Code string `json:"ItemDim3Code"`
}

type OrderProductionBarcodeValidation struct {
	Code            string `json:"code"`
	Message         string `json:"message"`
	Barcode         string `json:"barcode,omitempty"`
	BarcodeTypeCode string `json:"barcodeTypeCode,omitempty"`
	ItemTypeCode    int16  `json:"ItemTypeCode,omitempty"`
	ItemCode        string `json:"ItemCode,omitempty"`
	ColorCode       string `json:"ColorCode,omitempty"`
	ItemDim1Code    string `json:"ItemDim1Code,omitempty"`
	ItemDim2Code    string `json:"ItemDim2Code,omitempty"`
	ItemDim3Code    string `json:"ItemDim3Code,omitempty"`
}

type OrderProductionCdItemDraft struct {
	ItemTypeCode            int16   `json:"ItemTypeCode"`
	ItemCode                string  `json:"ItemCode"`
	ItemDimTypeCode         *int16  `json:"ItemDimTypeCode"`
	ProductTypeCode         *int16  `json:"ProductTypeCode"`
	ProductHierarchyID      *int    `json:"ProductHierarchyID"`
	UnitOfMeasureCode1      *string `json:"UnitOfMeasureCode1"`
	ItemAccountGrCode       *string `json:"ItemAccountGrCode"`
	ItemTaxGrCode           *string `json:"ItemTaxGrCode"`
	ItemPaymentPlanGrCode   *string `json:"ItemPaymentPlanGrCode"`
	ItemDiscountGrCode      *string `json:"ItemDiscountGrCode"`
	ItemVendorGrCode        *string `json:"ItemVendorGrCode"`
	PromotionGroupCode      *string `json:"PromotionGroupCode"`
	ProductCollectionGrCode *string `json:"ProductCollectionGrCode"`
	StorePriceLevelCode     *string `json:"StorePriceLevelCode"`
	PerceptionOfFashionCode *string `json:"PerceptionOfFashionCode"`
	CommercialRoleCode      *string `json:"CommercialRoleCode"`
	StoreCapacityLevelCode  *string `json:"StoreCapacityLevelCode"`
	CustomsTariffNumberCode *string `json:"CustomsTariffNumberCode"`
	CompanyCode             *string `json:"CompanyCode"`
}

type OrderProductionLookupOption struct {
	Code        string `json:"code"`
	Description string `json:"description"`
}

type OrderProductionItemAttributeRow struct {
	ItemTypeCode      int16  `json:"ItemTypeCode"`
	ItemCode          string `json:"ItemCode"`
	AttributeTypeCode int    `json:"AttributeTypeCode"`
	AttributeCode     string `json:"AttributeCode"`
}

type OrderProductionCdItemLookups struct {
	ItemDimTypeCodes         []OrderProductionLookupOption `json:"itemDimTypeCodes"`
	ProductTypeCodes         []OrderProductionLookupOption `json:"productTypeCodes"`
	ProductHierarchyIDs      []OrderProductionLookupOption `json:"productHierarchyIDs"`
	UnitOfMeasureCode1List   []OrderProductionLookupOption `json:"unitOfMeasureCode1List"`
	ItemAccountGrCodes       []OrderProductionLookupOption `json:"itemAccountGrCodes"`
	ItemTaxGrCodes           []OrderProductionLookupOption `json:"itemTaxGrCodes"`
	ItemPaymentPlanGrCodes   []OrderProductionLookupOption `json:"itemPaymentPlanGrCodes"`
	ItemDiscountGrCodes      []OrderProductionLookupOption `json:"itemDiscountGrCodes"`
	ItemVendorGrCodes        []OrderProductionLookupOption `json:"itemVendorGrCodes"`
	PromotionGroupCodes      []OrderProductionLookupOption `json:"promotionGroupCodes"`
	ProductCollectionGrCodes []OrderProductionLookupOption `json:"productCollectionGrCodes"`
	StorePriceLevelCodes     []OrderProductionLookupOption `json:"storePriceLevelCodes"`
	PerceptionOfFashionCodes []OrderProductionLookupOption `json:"perceptionOfFashionCodes"`
	CommercialRoleCodes      []OrderProductionLookupOption `json:"commercialRoleCodes"`
	StoreCapacityLevelCodes  []OrderProductionLookupOption `json:"storeCapacityLevelCodes"`
	CustomsTariffNumbers     []OrderProductionLookupOption `json:"customsTariffNumbers"`
	CompanyCodes             []OrderProductionLookupOption `json:"companyCodes"`
}
