diff --git a/src/machine_details/entities/machine_detail.entity.ts b/src/machine_details/entities/machine_detail.entity.ts
index 2d1af03046c811d8cc922d83bd648eff1213d9a0..85345f3974857919f32d429890b74b30b17f4c9b 100644
--- a/src/machine_details/entities/machine_detail.entity.ts
+++ b/src/machine_details/entities/machine_detail.entity.ts
@@ -26,5 +26,5 @@ export class MachineDetail {
   outputRate: number;
 
   @Column({ type: 'float', nullable: true })
-  changOver?: number;
+  changeOver?: number;
 }
diff --git a/src/queues/dto/create-queue.dto.ts b/src/queues/dto/create-queue.dto.ts
index e50200214e1ca007d139c527059e33cf7fe86f78..dcbbb4aae80eef9ec5c25f863cd010988849ae92 100644
--- a/src/queues/dto/create-queue.dto.ts
+++ b/src/queues/dto/create-queue.dto.ts
@@ -49,7 +49,7 @@ export class CreateQueueDto {
   itemID: number;
 
   // ✅ เพิ่ม itemType
-  @IsEnum(['PRODUCT', 'MATERIAL'])
+  @IsEnum(['PRODUCT', 'MATERIAL', 'CHANGEOVER'])
   @IsNotEmpty()
-  itemType: 'PRODUCT' | 'MATERIAL';
+  itemType: 'PRODUCT' | 'MATERIAL' | 'CHANGEOVER';
 }
diff --git a/src/queues/entities/queue.entity.ts b/src/queues/entities/queue.entity.ts
index a2c28979ebddd7097172c6b63a4ed0ecd849b619..979f48746635eb660ed021e2c77501841c539174 100644
--- a/src/queues/entities/queue.entity.ts
+++ b/src/queues/entities/queue.entity.ts
@@ -69,6 +69,6 @@ export class Queue {
   @Column()
   itemID: number;
 
-  @Column({ type: 'enum', enum: ['PRODUCT', 'MATERIAL'] })
-  itemType: 'PRODUCT' | 'MATERIAL';
+  @Column({ type: 'enum', enum: ['PRODUCT', 'MATERIAL', 'CHANGEOVER'] })
+  itemType: 'PRODUCT' | 'MATERIAL' | 'CHANGEOVER';
 }
diff --git a/src/queues/queues.service.ts b/src/queues/queues.service.ts
index 55d21c85d2ca1748d577d155547be9fa806bf569..e28b155ee2822779a9895e4c76040b909d4ce113 100644
--- a/src/queues/queues.service.ts
+++ b/src/queues/queues.service.ts
@@ -340,16 +340,27 @@ export class QueuesService {
           : await this.orderRepository.findOneByOrFail({
               OrderID: Number(OrderID),
             });
-      const queueType = await this.queueTypeRepository.findOneByOrFail({
-        TypeName: order ? 'ORDER' : 'ผลิตเผื่อ',
-      });
+
+      // --- กำหนด queueType ตาม itemType ---
+      let queueType;
+      if (itemType === 'CHANGEOVER') {
+        // ถ้า itemType เป็น CHANGEOVER ให้ใช้ QueueTypeID 3
+        queueType = await this.queueTypeRepository.findOneByOrFail({
+          QueueTypeID: 3,
+        });
+      } else {
+        // สำหรับสินค้าปกติ ใช้เงื่อนไขเดิม
+        queueType = await this.queueTypeRepository.findOneByOrFail({
+          TypeName: order ? 'ORDER' : 'ผลิตเผื่อ',
+        });
+      }
 
       const employees =
         Array.isArray(EmployeeIds) && EmployeeIds.length > 0
           ? await this.employeeRepository.findByIds(EmployeeIds.map(Number))
           : [];
 
-      // ตรวจสอบ item
+      // ตรวจสอบ item สำหรับ PRODUCT กับ MATERIAL เท่านั้น
       if (itemType === 'PRODUCT') {
         await this.productRepository.findOneByOrFail({
           ProductID: Number(itemID),
@@ -358,7 +369,8 @@ export class QueuesService {
         await this.materialRepository.findOneByOrFail({
           MaterialID: Number(itemID),
         });
-      } else {
+      } else if (itemType !== 'CHANGEOVER') {
+        // ถ้า itemType ไม่ใช่ PRODUCT, MATERIAL, หรือ CHANGEOVER ให้ throw error
         throw new BadRequestException(`Invalid itemType: ${itemType}`);
       }
 
@@ -381,9 +393,14 @@ export class QueuesService {
     // --- STEP 2: Save Queues ---
     const savedQueues = await this.queueRepository.save(newQueues);
 
-    // --- STEP 3: Group Queues by OrderID + Day + Item (สร้าง ProductionTarget เดิม) ---
+    // --- STEP 3: Group Queues by OrderID + Day + Item (สร้าง ProductionTarget) ---
     const targetMap = new Map<string, ProductionTarget>();
     for (const q of savedQueues) {
+      // ข้ามคิวพิเศษ เช่นคิวที่มี itemType ไม่ใช่ PRODUCT หรือ MATERIAL
+      if (!['PRODUCT', 'MATERIAL'].includes(q.itemType)) {
+        continue;
+      }
+
       const orderId = q.order ? q.order.OrderID : 'none';
       const day = q.startTime
         ? q.startTime.toISOString().substring(0, 10)
@@ -394,7 +411,6 @@ export class QueuesService {
       const existing = targetMap.get(key);
       if (existing) {
         existing.TargetProduced += producedQty;
-
         if (
           q.startTime &&
           (!existing.startTime || q.startTime < existing.startTime)
@@ -416,7 +432,7 @@ export class QueuesService {
       } else {
         const target = this.productionTargetRepository.create({
           itemID: q.itemID,
-          itemType: q.itemType,
+          itemType: q.itemType as 'PRODUCT' | 'MATERIAL',
           order: q.order ?? null,
           page: q.page,
           TargetProduced: producedQty, // temporary, จะอัปเดตใหม่
@@ -438,9 +454,6 @@ export class QueuesService {
 
     // --- STEP 4: Reverse Deduction (แยกตาม OrderID และวัน) ---
     const deduction = await this._reverseDeduction(savedQueues);
-    // deduction จะได้ array ของ { orderId, day, key, leftover, totalProduced }
-
-    // สร้าง map จาก deduction ด้วย global key = `${orderId}|${key}|${day}`
     const leftoverMap = new Map<string, number>();
     for (const entry of deduction) {
       const globalKey = `${entry.orderId || 'none'}|${entry.key}|${entry.day}`;