import type {
  ApprovalItem,
  AuditEvent,
  ContactShare,
  ContactShareLog,
  CrmBranch,
  CrmSalesperson,
  Customer,
  CustomerContact,
  DocumentSequence,
  Enquiry,
  MasterOption,
  Quotation,
  QuotationTemplate
} from '../api/types';

export interface CrmMockState {
  branches: CrmBranch[];
  salespersons: CrmSalesperson[];
  customers: Customer[];
  contacts: CustomerContact[];
  contactShares: ContactShare[];
  contactShareLogs: ContactShareLog[];
  enquiries: Enquiry[];
  quotations: Quotation[];
  approvals: ApprovalItem[];
  auditEvents: AuditEvent[];
  sequences: DocumentSequence[];
  masterOptions: MasterOption[];
  templates: QuotationTemplate[];
}

export const initialCrmState: CrmMockState = {
  branches: [
    { id: 'bkk', code: 'BKK', name: 'Bangkok HQ', region: 'Central' },
    { id: 'chn', code: 'CHN', name: 'Chiang Mai Branch', region: 'North' }
  ],
  salespersons: [
    { id: 'sp-1', name: 'Krit S.', nickname: 'Krit', branchId: 'bkk', role: 'sales' },
    { id: 'sp-2', name: 'Nicha P.', nickname: 'Nicha', branchId: 'bkk', role: 'sale_admin' },
    { id: 'sp-3', name: 'Ton A.', nickname: 'Ton', branchId: 'chn', role: 'sales' }
  ],
  customers: [
    {
      id: 'cus-1',
      code: 'CUS-BKK-001',
      name: 'Siam Metro Development',
      taxId: '0105556100011',
      address: '88 Rama 9 Road',
      province: 'Bangkok',
      district: 'Huai Khwang',
      subDistrict: 'Bang Kapi',
      postalCode: '10310',
      phone: '02-555-1001',
      fax: '02-555-1999',
      email: 'procurement@siammetro.co.th',
      customerType: 'developer',
      customerStatus: 'active',
      branchId: 'bkk',
      contactIds: ['ct-1', 'ct-2']
    },
    {
      id: 'cus-2',
      code: 'CUS-BKK-002',
      name: 'Prime Lift Engineering',
      taxId: '0105556100012',
      address: '19 Vibhavadi Rangsit',
      province: 'Bangkok',
      district: 'Chatuchak',
      subDistrict: 'Chom Phon',
      postalCode: '10900',
      phone: '02-555-2002',
      email: 'sales@primelift.co.th',
      customerType: 'contractor',
      customerStatus: 'active',
      branchId: 'bkk',
      contactIds: ['ct-3', 'ct-4']
    },
    {
      id: 'cus-3',
      code: 'CUS-CHN-003',
      name: 'Northern Cold Chain',
      taxId: '0505556100013',
      address: '125 Super Highway',
      province: 'Chiang Mai',
      district: 'Mueang',
      subDistrict: 'Wat Ket',
      postalCode: '50000',
      phone: '053-555-3003',
      email: 'project@ncc.co.th',
      customerType: 'owner',
      customerStatus: 'prospect',
      branchId: 'chn',
      contactIds: ['ct-5', 'ct-6']
    },
    {
      id: 'cus-4',
      code: 'CUS-BKK-004',
      name: 'Urban Dock Solution',
      taxId: '0105556100014',
      address: '77 Bangna-Trad KM.8',
      province: 'Samut Prakan',
      district: 'Bang Phli',
      subDistrict: 'Bang Kaeo',
      postalCode: '10540',
      phone: '02-555-4004',
      email: 'admin@urbandock.asia',
      customerType: 'consultant',
      customerStatus: 'active',
      branchId: 'bkk',
      contactIds: ['ct-7', 'ct-8']
    },
    {
      id: 'cus-5',
      code: 'CUS-CHN-005',
      name: 'Lanna Solar Estate',
      taxId: '0505556100015',
      address: '199 Ring Road',
      province: 'Chiang Mai',
      district: 'San Sai',
      subDistrict: 'Nong Chom',
      postalCode: '50210',
      phone: '053-555-5005',
      email: 'energy@lannasolar.co.th',
      customerType: 'developer',
      customerStatus: 'inactive',
      branchId: 'chn',
      contactIds: ['ct-9', 'ct-10']
    }
  ],
  contacts: [
    {
      id: 'ct-1',
      customerId: 'cus-1',
      name: 'Ploy Tantip',
      position: 'Procurement Manager',
      email: 'ploy@siammetro.co.th',
      phone: '081-111-1111',
      isPrimary: true
    },
    {
      id: 'ct-2',
      customerId: 'cus-1',
      name: 'Vee Chan',
      position: 'Project Engineer',
      email: 'vee@siammetro.co.th',
      phone: '081-111-1112'
    },
    {
      id: 'ct-3',
      customerId: 'cus-2',
      name: 'Boss K.',
      position: 'Managing Director',
      email: 'boss@primelift.co.th',
      phone: '082-222-2221',
      isPrimary: true
    },
    {
      id: 'ct-4',
      customerId: 'cus-2',
      name: 'Jane R.',
      position: 'Estimator',
      email: 'jane@primelift.co.th',
      phone: '082-222-2222'
    },
    {
      id: 'ct-5',
      customerId: 'cus-3',
      name: 'Aon M.',
      position: 'Operations Head',
      email: 'aon@ncc.co.th',
      phone: '083-333-3331',
      isPrimary: true
    },
    {
      id: 'ct-6',
      customerId: 'cus-3',
      name: 'Max P.',
      position: 'Warehouse Lead',
      email: 'max@ncc.co.th',
      phone: '083-333-3332'
    },
    {
      id: 'ct-7',
      customerId: 'cus-4',
      name: 'Mint T.',
      position: 'Design Consultant',
      email: 'mint@urbandock.asia',
      phone: '084-444-4441',
      isPrimary: true
    },
    {
      id: 'ct-8',
      customerId: 'cus-4',
      name: 'Ken D.',
      position: 'Project Coordinator',
      email: 'ken@urbandock.asia',
      phone: '084-444-4442'
    },
    {
      id: 'ct-9',
      customerId: 'cus-5',
      name: 'Fah N.',
      position: 'Energy Planning Lead',
      email: 'fah@lannasolar.co.th',
      phone: '085-555-5551',
      isPrimary: true
    },
    {
      id: 'ct-10',
      customerId: 'cus-5',
      name: 'Palm J.',
      position: 'Plant Director',
      email: 'palm@lannasolar.co.th',
      phone: '085-555-5552'
    }
  ],
  contactShares: [
    {
      id: 'share-1',
      contactId: 'ct-1',
      sharedWithUserId: 'u-1',
      sharedWithUserName: 'Nicha P.',
      permission: 'view',
      createdAt: '2026-06-01T09:00:00.000Z'
    },
    {
      id: 'share-2',
      contactId: 'ct-7',
      sharedWithUserId: 'u-2',
      sharedWithUserName: 'Ton A.',
      permission: 'edit',
      createdAt: '2026-06-03T10:30:00.000Z'
    }
  ],
  contactShareLogs: [
    {
      id: 'share-log-1',
      contactId: 'ct-1',
      action: 'SHARE',
      targetUserName: 'Nicha P.',
      actorName: 'Krit S.',
      createdAt: '2026-06-01T09:00:00.000Z'
    },
    {
      id: 'share-log-2',
      contactId: 'ct-7',
      action: 'SHARE',
      targetUserName: 'Ton A.',
      actorName: 'Krit S.',
      createdAt: '2026-06-03T10:30:00.000Z'
    },
    {
      id: 'share-log-3',
      contactId: 'ct-7',
      action: 'REVOKE',
      targetUserName: 'Ton A.',
      actorName: 'Nicha P.',
      createdAt: '2026-06-07T14:45:00.000Z'
    }
  ],
  enquiries: [
    {
      id: 'enq-1',
      code: 'ENQ2606-001',
      title: 'Dock leveler replacement for Phase 3 warehouse',
      customerId: 'cus-1',
      contactId: 'ct-1',
      branchId: 'bkk',
      salesmanId: 'sp-1',
      productType: 'dockdoor',
      status: 'converted',
      requirementSummary: 'Replace 8 dock levelers with high cycle hydraulic model.',
      projectLocation: 'Bangkok Logistics Park',
      chancePercent: 82,
      competitor: 'Apex Dock',
      expectedValue: 2750000,
      dueDate: '2026-06-14',
      createdAt: '2026-05-28T09:00:00.000Z',
      updatedAt: '2026-06-09T15:20:00.000Z',
      quotationIds: ['qt-1', 'qt-2'],
      activities: [
        {
          id: 'enq-1-act-1',
          type: 'CALL',
          title: 'รับ requirement เบื้องต้น',
          detail: 'ลูกค้าต้องการเปลี่ยนภายใน Q3',
          actorName: 'Krit S.',
          createdAt: '2026-05-28T09:00:00.000Z'
        },
        {
          id: 'enq-1-act-2',
          type: 'VISIT',
          title: 'สำรวจหน้างาน',
          detail: 'หน้างานพร้อม shutdown 3 วัน',
          actorName: 'Krit S.',
          createdAt: '2026-05-30T13:30:00.000Z'
        },
        {
          id: 'enq-1-act-3',
          type: 'CONVERT',
          title: 'Convert to quotation',
          detail: 'สร้าง QT2606-001',
          actorName: 'Nicha P.',
          createdAt: '2026-06-02T08:15:00.000Z'
        }
      ]
    },
    {
      id: 'enq-2',
      code: 'ENQ2606-002',
      title: 'Overhead crane upgrade for fabrication line',
      customerId: 'cus-2',
      contactId: 'ct-3',
      branchId: 'bkk',
      salesmanId: 'sp-1',
      productType: 'crane',
      status: 'requirement',
      requirementSummary: '10 ton overhead crane with remote monitoring.',
      projectLocation: 'Samut Sakhon Plant',
      chancePercent: 68,
      competitor: 'LiftPro',
      expectedValue: 5200000,
      dueDate: '2026-06-20',
      createdAt: '2026-05-29T10:00:00.000Z',
      updatedAt: '2026-06-10T11:00:00.000Z',
      quotationIds: ['qt-3'],
      activities: [
        {
          id: 'enq-2-act-1',
          type: 'MEETING',
          title: 'Kickoff meeting',
          detail: 'หารือ requirement ทางเทคนิค',
          actorName: 'Krit S.',
          createdAt: '2026-05-29T10:00:00.000Z'
        }
      ]
    },
    {
      id: 'enq-3',
      code: 'ENQ2606-003',
      title: 'Solar rooftop for cold storage lot C',
      customerId: 'cus-3',
      contactId: 'ct-5',
      branchId: 'chn',
      salesmanId: 'sp-3',
      productType: 'solarcell',
      status: 'follow_up',
      requirementSummary: '500 kWp rooftop with energy monitoring.',
      projectLocation: 'Chiang Mai DC',
      chancePercent: 49,
      competitor: 'SunNorth',
      expectedValue: 6100000,
      dueDate: '2026-06-18',
      createdAt: '2026-05-27T09:20:00.000Z',
      updatedAt: '2026-06-08T16:10:00.000Z',
      quotationIds: ['qt-4'],
      activities: [
        {
          id: 'enq-3-act-1',
          type: 'NOTE',
          title: 'ติดตาม BOQ',
          detail: 'รอฝั่งลูกค้าส่งโหลดไฟฟ้า',
          actorName: 'Ton A.',
          createdAt: '2026-06-08T16:10:00.000Z'
        }
      ]
    },
    {
      id: 'enq-4',
      code: 'ENQ2606-004',
      title: 'Dock shelter package for retrofit',
      customerId: 'cus-4',
      contactId: 'ct-7',
      branchId: 'bkk',
      salesmanId: 'sp-1',
      productType: 'dockdoor',
      status: 'new',
      requirementSummary: 'Retrofit existing dock shelter 12 bays.',
      projectLocation: 'Bangna Logistics Hub',
      chancePercent: 35,
      competitor: 'Apex Dock',
      expectedValue: 1850000,
      dueDate: '2026-06-21',
      createdAt: '2026-06-05T14:00:00.000Z',
      updatedAt: '2026-06-05T14:00:00.000Z',
      quotationIds: [],
      activities: [
        {
          id: 'enq-4-act-1',
          type: 'CALL',
          title: 'Lead intake',
          detail: 'รับ lead จาก consultant',
          actorName: 'Krit S.',
          createdAt: '2026-06-05T14:00:00.000Z'
        }
      ]
    },
    {
      id: 'enq-5',
      code: 'ENQ2606-005',
      title: 'Crane preventive maintenance agreement',
      customerId: 'cus-2',
      contactId: 'ct-4',
      branchId: 'bkk',
      salesmanId: 'sp-1',
      productType: 'crane',
      status: 'qualifying',
      requirementSummary: 'Annual PM contract for 6 cranes.',
      projectLocation: 'Ayutthaya Plant',
      chancePercent: 53,
      competitor: 'LiftPro',
      expectedValue: 980000,
      dueDate: '2026-06-19',
      createdAt: '2026-06-02T11:00:00.000Z',
      updatedAt: '2026-06-06T12:00:00.000Z',
      quotationIds: ['qt-5'],
      activities: [
        {
          id: 'enq-5-act-1',
          type: 'UPDATE',
          title: 'ผ่านขั้น qualifying',
          detail: 'ลูกค้ามี budget แล้ว',
          actorName: 'Krit S.',
          createdAt: '2026-06-06T12:00:00.000Z'
        }
      ]
    },
    {
      id: 'enq-6',
      code: 'ENQ2606-006',
      title: 'Solar canopy concept study',
      customerId: 'cus-5',
      contactId: 'ct-9',
      branchId: 'chn',
      salesmanId: 'sp-3',
      productType: 'solarcell',
      status: 'closed_lost',
      requirementSummary: 'Concept study for parking canopy solar.',
      projectLocation: 'Chiang Rai Service Center',
      chancePercent: 0,
      competitor: 'GreenBeam',
      expectedValue: 2400000,
      dueDate: '2026-06-08',
      createdAt: '2026-05-20T09:00:00.000Z',
      updatedAt: '2026-06-08T18:00:00.000Z',
      quotationIds: ['qt-6'],
      activities: [
        {
          id: 'enq-6-act-1',
          type: 'UPDATE',
          title: 'Lost to competitor',
          detail: 'ราคา competitor ต่ำกว่า',
          actorName: 'Ton A.',
          createdAt: '2026-06-08T18:00:00.000Z'
        }
      ]
    },
    {
      id: 'enq-7',
      code: 'ENQ2606-007',
      title: 'High-speed door package',
      customerId: 'cus-1',
      contactId: 'ct-2',
      branchId: 'bkk',
      salesmanId: 'sp-1',
      productType: 'dockdoor',
      status: 'cancelled',
      requirementSummary: 'High-speed doors for food-grade area.',
      projectLocation: 'Pathum Thani',
      chancePercent: 0,
      competitor: 'FastDoor',
      expectedValue: 1600000,
      dueDate: '2026-06-11',
      createdAt: '2026-05-25T10:10:00.000Z',
      updatedAt: '2026-06-04T11:00:00.000Z',
      quotationIds: [],
      activities: [
        {
          id: 'enq-7-act-1',
          type: 'UPDATE',
          title: 'Project cancelled',
          detail: 'Owner เลื่อน CAPEX',
          actorName: 'Nicha P.',
          createdAt: '2026-06-04T11:00:00.000Z'
        }
      ]
    },
    {
      id: 'enq-8',
      code: 'ENQ2606-008',
      title: 'Monorail crane for packaging line',
      customerId: 'cus-3',
      contactId: 'ct-6',
      branchId: 'chn',
      salesmanId: 'sp-3',
      productType: 'crane',
      status: 'new',
      requirementSummary: '1 ton monorail crane with quick delivery.',
      projectLocation: 'Lamphun Plant',
      chancePercent: 28,
      competitor: 'NorthHoist',
      expectedValue: 740000,
      dueDate: '2026-06-24',
      createdAt: '2026-06-09T13:00:00.000Z',
      updatedAt: '2026-06-09T13:00:00.000Z',
      quotationIds: [],
      activities: [
        {
          id: 'enq-8-act-1',
          type: 'CALL',
          title: 'รับ enquiry ใหม่',
          detail: 'ต้องการเสนอราคาใน 7 วัน',
          actorName: 'Ton A.',
          createdAt: '2026-06-09T13:00:00.000Z'
        }
      ]
    }
  ],
  quotations: [
    {
      id: 'qt-1',
      code: 'QT2606-001',
      enquiryId: 'enq-1',
      quotationDate: '2026-06-02',
      validUntil: '2026-07-02',
      quotationType: 'official',
      project: 'Warehouse Dock Modernization',
      siteLocation: 'Bangkok Logistics Park',
      customerRoles: [
        { role: 'owner', customerId: 'cus-1', contactId: 'ct-1' },
        { role: 'consultant', customerId: 'cus-4', contactId: 'ct-7' },
        { role: 'billing', customerId: 'cus-2', contactId: 'ct-4' }
      ],
      salesmanId: 'sp-1',
      saleAdminId: 'sp-2',
      branchId: 'bkk',
      status: 'pending_approval',
      revision: 0,
      totalAmount: 2750000,
      chancePercent: 82,
      isHotProject: true,
      approvalSnapshot: 'Awaiting Level 2 approval',
      items: [
        {
          id: 'qt-1-item-1',
          topic: 'Mechanical',
          description: 'Hydraulic dock leveler 8 sets',
          quantity: 8,
          unit: 'set',
          unitPrice: 280000,
          amount: 2240000
        },
        {
          id: 'qt-1-item-2',
          topic: 'Installation',
          description: 'Site install and commissioning',
          quantity: 1,
          unit: 'lot',
          unitPrice: 510000,
          amount: 510000
        }
      ],
      topics: [
        {
          id: 'qt-1-topic-1',
          type: 'scope',
          label: 'Scope',
          items: ['Supply equipment', 'Install and test', 'Operator training']
        },
        {
          id: 'qt-1-topic-2',
          type: 'exclusion',
          label: 'Exclusion',
          items: ['Civil work by customer', 'Night shift overtime']
        },
        {
          id: 'qt-1-topic-3',
          type: 'payment',
          label: 'Payment',
          items: ['40% down payment', '50% upon delivery', '10% after handover']
        }
      ],
      followUps: [
        {
          id: 'qt-1-fu-1',
          title: 'Prepare approval summary',
          dueDate: '2026-06-12',
          ownerName: 'Nicha P.',
          status: 'open'
        },
        {
          id: 'qt-1-fu-2',
          title: 'Confirm shutdown window',
          dueDate: '2026-06-13',
          ownerName: 'Krit S.',
          status: 'open'
        }
      ],
      attachments: [
        {
          id: 'qt-1-att-1',
          fileName: 'technical-spec.pdf',
          fileType: 'pdf',
          uploadedAt: '2026-06-02T10:00:00.000Z'
        }
      ],
      approvalSteps: [
        {
          id: 'qt-1-ap-1',
          level: 1,
          approverName: 'Head of Sales',
          approverPosition: 'Sales Director',
          status: 'approved',
          actedAt: '2026-06-03T09:30:00.000Z'
        },
        {
          id: 'qt-1-ap-2',
          level: 2,
          approverName: 'CEO Office',
          approverPosition: 'Managing Director',
          status: 'pending'
        }
      ],
      auditEventIds: ['audit-1', 'audit-2']
    },
    {
      id: 'qt-2',
      code: 'QT2606-001-R01',
      enquiryId: 'enq-1',
      quotationDate: '2026-06-07',
      validUntil: '2026-07-07',
      quotationType: 'official',
      project: 'Warehouse Dock Modernization',
      siteLocation: 'Bangkok Logistics Park',
      customerRoles: [
        { role: 'owner', customerId: 'cus-1', contactId: 'ct-1' },
        { role: 'consultant', customerId: 'cus-4', contactId: 'ct-7' }
      ],
      salesmanId: 'sp-1',
      saleAdminId: 'sp-2',
      branchId: 'bkk',
      status: 'revised',
      revision: 1,
      totalAmount: 2875000,
      chancePercent: 78,
      isHotProject: true,
      approvedPdfUrl: '/mock/qt2606-001-r01.pdf',
      items: [
        {
          id: 'qt-2-item-1',
          topic: 'Mechanical',
          description: 'Hydraulic dock leveler 8 sets',
          quantity: 8,
          unit: 'set',
          unitPrice: 280000,
          amount: 2240000
        },
        {
          id: 'qt-2-item-2',
          topic: 'Safety',
          description: 'Additional dock light and safety package',
          quantity: 1,
          unit: 'lot',
          unitPrice: 635000,
          amount: 635000
        }
      ],
      topics: [
        {
          id: 'qt-2-topic-1',
          type: 'scope',
          label: 'Scope',
          items: ['Updated safety package', 'Delivery within 30 days']
        },
        {
          id: 'qt-2-topic-2',
          type: 'exclusion',
          label: 'Exclusion',
          items: ['Permit by customer']
        },
        { id: 'qt-2-topic-3', type: 'payment', label: 'Payment', items: ['40/50/10 milestone'] }
      ],
      followUps: [
        {
          id: 'qt-2-fu-1',
          title: 'Send revised file to customer',
          dueDate: '2026-06-12',
          ownerName: 'Krit S.',
          status: 'open'
        }
      ],
      attachments: [
        {
          id: 'qt-2-att-1',
          fileName: 'rev1-comparison.pdf',
          fileType: 'pdf',
          uploadedAt: '2026-06-07T16:00:00.000Z'
        }
      ],
      approvalSteps: [
        {
          id: 'qt-2-ap-1',
          level: 1,
          approverName: 'Head of Sales',
          approverPosition: 'Sales Director',
          status: 'approved',
          actedAt: '2026-06-07T15:30:00.000Z'
        },
        {
          id: 'qt-2-ap-2',
          level: 2,
          approverName: 'CEO Office',
          approverPosition: 'Managing Director',
          status: 'approved',
          actedAt: '2026-06-08T09:00:00.000Z'
        }
      ],
      auditEventIds: ['audit-3']
    },
    {
      id: 'qt-3',
      code: 'QT2606-002',
      enquiryId: 'enq-2',
      quotationDate: '2026-06-05',
      validUntil: '2026-07-05',
      quotationType: 'budgetary',
      project: 'Fabrication Crane Upgrade',
      siteLocation: 'Samut Sakhon Plant',
      customerRoles: [
        { role: 'owner', customerId: 'cus-2', contactId: 'ct-3' },
        { role: 'contractor', customerId: 'cus-4', contactId: 'ct-8' }
      ],
      salesmanId: 'sp-1',
      saleAdminId: 'sp-2',
      branchId: 'bkk',
      status: 'draft',
      revision: 0,
      totalAmount: 5200000,
      chancePercent: 68,
      isHotProject: false,
      items: [
        {
          id: 'qt-3-item-1',
          topic: 'Crane',
          description: '10 ton overhead crane',
          quantity: 1,
          unit: 'set',
          unitPrice: 4500000,
          amount: 4500000
        },
        {
          id: 'qt-3-item-2',
          topic: 'IoT',
          description: 'Remote monitoring package',
          quantity: 1,
          unit: 'set',
          unitPrice: 700000,
          amount: 700000
        }
      ],
      topics: [
        {
          id: 'qt-3-topic-1',
          type: 'scope',
          label: 'Scope',
          items: ['Supply', 'Install', 'Commission']
        },
        {
          id: 'qt-3-topic-2',
          type: 'payment',
          label: 'Payment',
          items: ['50% deposit', '40% delivery', '10% handover']
        },
        {
          id: 'qt-3-topic-3',
          type: 'exclusion',
          label: 'Exclusion',
          items: ['Building strengthening']
        }
      ],
      followUps: [
        {
          id: 'qt-3-fu-1',
          title: 'Finalize civil scope',
          dueDate: '2026-06-15',
          ownerName: 'Krit S.',
          status: 'open'
        }
      ],
      attachments: [],
      approvalSteps: [],
      auditEventIds: []
    },
    {
      id: 'qt-4',
      code: 'QT2606-003',
      enquiryId: 'enq-3',
      quotationDate: '2026-06-03',
      validUntil: '2026-07-03',
      quotationType: 'official',
      project: 'Cold Chain Rooftop Solar',
      siteLocation: 'Chiang Mai DC',
      customerRoles: [
        { role: 'owner', customerId: 'cus-3', contactId: 'ct-5' },
        { role: 'consultant', customerId: 'cus-5', contactId: 'ct-9' }
      ],
      salesmanId: 'sp-3',
      saleAdminId: 'sp-2',
      branchId: 'chn',
      status: 'sent',
      revision: 0,
      totalAmount: 6100000,
      chancePercent: 49,
      isHotProject: true,
      approvedPdfUrl: '/mock/qt2606-003.pdf',
      items: [
        {
          id: 'qt-4-item-1',
          topic: 'Solar',
          description: '500 kWp rooftop system',
          quantity: 1,
          unit: 'lot',
          unitPrice: 5900000,
          amount: 5900000
        },
        {
          id: 'qt-4-item-2',
          topic: 'Monitoring',
          description: 'EMS dashboard',
          quantity: 1,
          unit: 'lot',
          unitPrice: 200000,
          amount: 200000
        }
      ],
      topics: [
        { id: 'qt-4-topic-1', type: 'scope', label: 'Scope', items: ['EPC turnkey'] },
        { id: 'qt-4-topic-2', type: 'payment', label: 'Payment', items: ['30/60/10'] },
        {
          id: 'qt-4-topic-3',
          type: 'exclusion',
          label: 'Exclusion',
          items: ['Transformer upgrade']
        }
      ],
      followUps: [
        {
          id: 'qt-4-fu-1',
          title: 'Follow up board decision',
          dueDate: '2026-06-11',
          ownerName: 'Ton A.',
          status: 'open'
        }
      ],
      attachments: [
        {
          id: 'qt-4-att-1',
          fileName: 'financial-model.xls',
          fileType: 'xls',
          uploadedAt: '2026-06-03T12:00:00.000Z'
        }
      ],
      approvalSteps: [
        {
          id: 'qt-4-ap-1',
          level: 1,
          approverName: 'Regional Sales Manager',
          approverPosition: 'Regional Manager',
          status: 'approved',
          actedAt: '2026-06-03T11:00:00.000Z'
        }
      ],
      auditEventIds: ['audit-4']
    },
    {
      id: 'qt-5',
      code: 'QT2606-004',
      enquiryId: 'enq-5',
      quotationDate: '2026-06-06',
      validUntil: '2026-07-06',
      quotationType: 'service',
      project: 'Annual Crane PM',
      siteLocation: 'Ayutthaya Plant',
      customerRoles: [{ role: 'owner', customerId: 'cus-2', contactId: 'ct-4' }],
      salesmanId: 'sp-1',
      saleAdminId: 'sp-2',
      branchId: 'bkk',
      status: 'approved',
      revision: 0,
      totalAmount: 980000,
      chancePercent: 53,
      isHotProject: false,
      approvedPdfUrl: '/mock/qt2606-004.pdf',
      items: [
        {
          id: 'qt-5-item-1',
          topic: 'Service',
          description: 'PM contract 12 months',
          quantity: 1,
          unit: 'lot',
          unitPrice: 980000,
          amount: 980000
        }
      ],
      topics: [
        {
          id: 'qt-5-topic-1',
          type: 'scope',
          label: 'Scope',
          items: ['Quarterly PM', 'Emergency call support']
        },
        { id: 'qt-5-topic-2', type: 'payment', label: 'Payment', items: ['100% after PO'] },
        { id: 'qt-5-topic-3', type: 'exclusion', label: 'Exclusion', items: ['Spare parts'] }
      ],
      followUps: [
        {
          id: 'qt-5-fu-1',
          title: 'Await PO',
          dueDate: '2026-06-17',
          ownerName: 'Nicha P.',
          status: 'open'
        }
      ],
      attachments: [],
      approvalSteps: [
        {
          id: 'qt-5-ap-1',
          level: 1,
          approverName: 'Service GM',
          approverPosition: 'GM Service',
          status: 'approved',
          actedAt: '2026-06-07T10:00:00.000Z'
        }
      ],
      auditEventIds: []
    },
    {
      id: 'qt-6',
      code: 'QT2606-005',
      enquiryId: 'enq-6',
      quotationDate: '2026-05-26',
      validUntil: '2026-06-25',
      quotationType: 'budgetary',
      project: 'Solar Canopy Feasibility',
      siteLocation: 'Chiang Rai Service Center',
      customerRoles: [{ role: 'owner', customerId: 'cus-5', contactId: 'ct-9' }],
      salesmanId: 'sp-3',
      saleAdminId: 'sp-2',
      branchId: 'chn',
      status: 'lost',
      revision: 0,
      totalAmount: 2400000,
      chancePercent: 0,
      isHotProject: false,
      items: [
        {
          id: 'qt-6-item-1',
          topic: 'Solar',
          description: 'Canopy concept and EPC budget',
          quantity: 1,
          unit: 'lot',
          unitPrice: 2400000,
          amount: 2400000
        }
      ],
      topics: [
        { id: 'qt-6-topic-1', type: 'scope', label: 'Scope', items: ['Concept study'] },
        { id: 'qt-6-topic-2', type: 'payment', label: 'Payment', items: ['50/50'] },
        { id: 'qt-6-topic-3', type: 'exclusion', label: 'Exclusion', items: ['Authority permit'] }
      ],
      followUps: [],
      attachments: [],
      approvalSteps: [],
      auditEventIds: ['audit-5']
    },
    {
      id: 'qt-7',
      code: 'QT2606-006',
      enquiryId: 'enq-4',
      quotationDate: '2026-06-09',
      validUntil: '2026-07-09',
      quotationType: 'official',
      project: 'Dock Shelter Retrofit',
      siteLocation: 'Bangna Logistics Hub',
      customerRoles: [{ role: 'consultant', customerId: 'cus-4', contactId: 'ct-7' }],
      salesmanId: 'sp-1',
      saleAdminId: 'sp-2',
      branchId: 'bkk',
      status: 'pending_approval',
      revision: 0,
      totalAmount: 1850000,
      chancePercent: 35,
      isHotProject: false,
      items: [
        {
          id: 'qt-7-item-1',
          topic: 'Retrofit',
          description: 'Dock shelter 12 bays',
          quantity: 12,
          unit: 'bay',
          unitPrice: 154166.67,
          amount: 1850000
        }
      ],
      topics: [
        {
          id: 'qt-7-topic-1',
          type: 'scope',
          label: 'Scope',
          items: ['Supply and install 12 shelters']
        },
        { id: 'qt-7-topic-2', type: 'payment', label: 'Payment', items: ['50/50'] },
        { id: 'qt-7-topic-3', type: 'exclusion', label: 'Exclusion', items: ['Scaffold by others'] }
      ],
      followUps: [
        {
          id: 'qt-7-fu-1',
          title: 'Submit approval',
          dueDate: '2026-06-12',
          ownerName: 'Nicha P.',
          status: 'open'
        }
      ],
      attachments: [],
      approvalSteps: [
        {
          id: 'qt-7-ap-1',
          level: 1,
          approverName: 'Sales Director',
          approverPosition: 'Director',
          status: 'pending'
        }
      ],
      auditEventIds: []
    },
    {
      id: 'qt-8',
      code: 'QT2606-007',
      enquiryId: 'enq-8',
      quotationDate: '2026-06-10',
      validUntil: '2026-07-10',
      quotationType: 'official',
      project: 'Monorail Crane Fast Track',
      siteLocation: 'Lamphun Plant',
      customerRoles: [{ role: 'owner', customerId: 'cus-3', contactId: 'ct-6' }],
      salesmanId: 'sp-3',
      saleAdminId: 'sp-2',
      branchId: 'chn',
      status: 'draft',
      revision: 0,
      totalAmount: 740000,
      chancePercent: 28,
      isHotProject: false,
      items: [
        {
          id: 'qt-8-item-1',
          topic: 'Crane',
          description: '1 ton monorail crane',
          quantity: 1,
          unit: 'set',
          unitPrice: 740000,
          amount: 740000
        }
      ],
      topics: [
        { id: 'qt-8-topic-1', type: 'scope', label: 'Scope', items: ['Supply only'] },
        { id: 'qt-8-topic-2', type: 'payment', label: 'Payment', items: ['100% before delivery'] },
        {
          id: 'qt-8-topic-3',
          type: 'exclusion',
          label: 'Exclusion',
          items: ['Install by customer']
        }
      ],
      followUps: [],
      attachments: [],
      approvalSteps: [],
      auditEventIds: []
    },
    {
      id: 'qt-9',
      code: 'QT2606-008',
      enquiryId: 'enq-2',
      quotationDate: '2026-06-08',
      validUntil: '2026-07-08',
      quotationType: 'official',
      project: 'Crane Upgrade Option B',
      siteLocation: 'Samut Sakhon Plant',
      customerRoles: [{ role: 'owner', customerId: 'cus-2', contactId: 'ct-3' }],
      salesmanId: 'sp-1',
      saleAdminId: 'sp-2',
      branchId: 'bkk',
      status: 'rejected',
      revision: 0,
      totalAmount: 5450000,
      chancePercent: 22,
      isHotProject: false,
      items: [
        {
          id: 'qt-9-item-1',
          topic: 'Crane',
          description: 'Higher spec option',
          quantity: 1,
          unit: 'set',
          unitPrice: 5450000,
          amount: 5450000
        }
      ],
      topics: [
        { id: 'qt-9-topic-1', type: 'scope', label: 'Scope', items: ['Higher duty cycle spec'] },
        { id: 'qt-9-topic-2', type: 'payment', label: 'Payment', items: ['40/50/10'] },
        {
          id: 'qt-9-topic-3',
          type: 'exclusion',
          label: 'Exclusion',
          items: ['Building modification']
        }
      ],
      followUps: [],
      attachments: [],
      approvalSteps: [
        {
          id: 'qt-9-ap-1',
          level: 1,
          approverName: 'Sales Director',
          approverPosition: 'Director',
          status: 'rejected',
          actedAt: '2026-06-09T13:00:00.000Z',
          comment: 'Margin below target'
        }
      ],
      auditEventIds: []
    },
    {
      id: 'qt-10',
      code: 'QT2606-009',
      enquiryId: 'enq-5',
      quotationDate: '2026-06-10',
      validUntil: '2026-07-10',
      quotationType: 'service',
      project: 'Spare Parts Bundle',
      siteLocation: 'Ayutthaya Plant',
      customerRoles: [{ role: 'billing', customerId: 'cus-2', contactId: 'ct-4' }],
      salesmanId: 'sp-1',
      saleAdminId: 'sp-2',
      branchId: 'bkk',
      status: 'accepted',
      revision: 0,
      totalAmount: 420000,
      chancePercent: 100,
      isHotProject: false,
      approvedPdfUrl: '/mock/qt2606-009.pdf',
      items: [
        {
          id: 'qt-10-item-1',
          topic: 'Spare Parts',
          description: 'Critical spare bundle',
          quantity: 1,
          unit: 'lot',
          unitPrice: 420000,
          amount: 420000
        }
      ],
      topics: [
        { id: 'qt-10-topic-1', type: 'scope', label: 'Scope', items: ['Spare bundle supply'] },
        { id: 'qt-10-topic-2', type: 'payment', label: 'Payment', items: ['100% with PO'] },
        { id: 'qt-10-topic-3', type: 'exclusion', label: 'Exclusion', items: ['On-site labor'] }
      ],
      followUps: [
        {
          id: 'qt-10-fu-1',
          title: 'Coordinate delivery slot',
          dueDate: '2026-06-16',
          ownerName: 'Nicha P.',
          status: 'done'
        }
      ],
      attachments: [
        {
          id: 'qt-10-att-1',
          fileName: 'spare-list.doc',
          fileType: 'doc',
          uploadedAt: '2026-06-10T09:00:00.000Z'
        }
      ],
      approvalSteps: [
        {
          id: 'qt-10-ap-1',
          level: 1,
          approverName: 'Service GM',
          approverPosition: 'GM Service',
          status: 'approved',
          actedAt: '2026-06-10T08:00:00.000Z'
        }
      ],
      auditEventIds: []
    }
  ],
  approvals: [
    {
      id: 'approval-1',
      quotationId: 'qt-1',
      quotationCode: 'QT2606-001',
      amount: 2750000,
      productType: 'dockdoor',
      branchId: 'bkk',
      submitterName: 'Nicha P.',
      approverLevel: 2,
      status: 'pending'
    },
    {
      id: 'approval-2',
      quotationId: 'qt-7',
      quotationCode: 'QT2606-006',
      amount: 1850000,
      productType: 'dockdoor',
      branchId: 'bkk',
      submitterName: 'Nicha P.',
      approverLevel: 1,
      status: 'pending'
    },
    {
      id: 'approval-3',
      quotationId: 'qt-3',
      quotationCode: 'QT2606-002',
      amount: 5200000,
      productType: 'crane',
      branchId: 'bkk',
      submitterName: 'Krit S.',
      approverLevel: 1,
      status: 'pending'
    }
  ],
  auditEvents: [
    {
      id: 'audit-1',
      entityType: 'quotation',
      entityId: 'qt-1',
      action: 'CREATE',
      actorName: 'Nicha P.',
      detail: 'สร้างใบเสนอราคา QT2606-001',
      createdAt: '2026-06-02T08:15:00.000Z'
    },
    {
      id: 'audit-2',
      entityType: 'approval',
      entityId: 'qt-1',
      action: 'APPROVE',
      actorName: 'Head of Sales',
      detail: 'อนุมัติ level 1',
      createdAt: '2026-06-03T09:30:00.000Z'
    },
    {
      id: 'audit-3',
      entityType: 'quotation',
      entityId: 'qt-2',
      action: 'REVISE',
      actorName: 'Krit S.',
      detail: 'สร้าง revision R01 เพิ่ม safety package',
      createdAt: '2026-06-07T16:00:00.000Z'
    },
    {
      id: 'audit-4',
      entityType: 'quotation',
      entityId: 'qt-4',
      action: 'SEND',
      actorName: 'Ton A.',
      detail: 'ส่งใบเสนอราคาให้ลูกค้าทางอีเมล',
      createdAt: '2026-06-04T10:10:00.000Z'
    },
    {
      id: 'audit-5',
      entityType: 'quotation',
      entityId: 'qt-6',
      action: 'REJECT',
      actorName: 'Customer Board',
      detail: 'ลูกค้าเลือกคู่แข่งเนื่องจากราคา',
      createdAt: '2026-06-08T18:00:00.000Z'
    }
  ],
  sequences: [
    {
      id: 'seq-1',
      documentType: 'enquiry',
      prefix: 'ENQ',
      period: '2606',
      branchId: 'bkk',
      currentNumber: 8,
      paddingLength: 3
    },
    {
      id: 'seq-2',
      documentType: 'quotation',
      prefix: 'QT',
      period: '2606',
      branchId: 'bkk',
      currentNumber: 9,
      paddingLength: 3
    },
    {
      id: 'seq-3',
      documentType: 'quotation_revision',
      prefix: 'QT',
      period: '2606',
      branchId: 'bkk',
      currentNumber: 1,
      paddingLength: 2
    }
  ],
  masterOptions: [
    { id: 'mo-1', group: 'status', code: 'new', label: 'New', active: true },
    {
      id: 'mo-2',
      group: 'status',
      code: 'pending_approval',
      label: 'Pending Approval',
      active: true
    },
    { id: 'mo-3', group: 'product_type', code: 'crane', label: 'Crane', active: true },
    { id: 'mo-4', group: 'product_type', code: 'dockdoor', label: 'Dock Door', active: true },
    { id: 'mo-5', group: 'product_type', code: 'solarcell', label: 'Solar Cell', active: true },
    { id: 'mo-6', group: 'payment_term', code: '40_50_10', label: '40/50/10', active: true },
    { id: 'mo-7', group: 'currency', code: 'THB', label: 'Thai Baht', active: true },
    { id: 'mo-8', group: 'tax_rate', code: 'VAT7', label: 'VAT 7%', active: true }
  ],
  templates: [
    {
      id: 'tpl-1',
      name: 'Standard Commercial Proposal',
      version: 'v1.2',
      branchId: 'bkk',
      description: 'Template for standard equipment quotation.',
      mappings: [
        {
          id: 'tpl-1-map-1',
          key: 'customer_name',
          placeholder: '{{customer_name}}',
          sourceField: 'customer.name'
        },
        {
          id: 'tpl-1-map-2',
          key: 'project_name',
          placeholder: '{{project_name}}',
          sourceField: 'quotation.project'
        },
        {
          id: 'tpl-1-map-3',
          key: 'quotation_price',
          placeholder: '{{quotation_price}}',
          sourceField: 'quotation.totalAmount'
        }
      ]
    },
    {
      id: 'tpl-2',
      name: 'Solar EPC Proposal',
      version: 'v0.9',
      branchId: 'chn',
      description: 'Template for solar EPC quotation preview.',
      mappings: [
        {
          id: 'tpl-2-map-1',
          key: 'site_location',
          placeholder: '{{site_location}}',
          sourceField: 'quotation.siteLocation'
        },
        {
          id: 'tpl-2-map-2',
          key: 'approver_names',
          placeholder: '{{approver_names}}',
          sourceField: 'quotation.approvalSteps[].approverName'
        }
      ]
    }
  ]
};
