
// ========================================
// 📍 INTERFACE PRINCIPAL - ROUTE STOP
// ========================================

export interface RouteStep {
  // Identificação
  id: string;
  routeId: string;
  sequence: number; // Ordem da parada na rota (1, 2, 3...)
  
  // Classificação
  type: 'pickup' | 'delivery' | 'rest' | 'fuel';
  
  // Localização detalhada
  location: {
    address: string;
    coordinates: { lat: number; lng: number };
    contact?: string;
    phone?: string;
    cep?: string;
    city?: string;
    state?: string;
    country?: string;
    facility?: string; // Nome da instalação
    accessInstructions?: string; // Instruções de acesso
  };
  
  // Cronograma
  scheduledTime: Date;
  actualTime?: Date;
  estimatedDuration?: number; // em minutos
  actualDuration?: number; // em minutos
  
  // Status operacional
  status: 'pending' | 'completed' | 'failed' | 'skipped';
  
  // Dados de carga
  packages?: number;
  weight?: number; // em kg
  volume?: number; // em m³
  referenceNumber?: string; // Número de referência do cliente
  
  // 📄 DOCUMENTO FISCAL (NOVO REQUISITO)
  fiscalDocument?: FiscalDocument;
  
  // Evidências do app mobile
  photos?: string[];
  signature?: string;
  notes?: string;
  completionEvidence?: {
    photoPackage: string;
    photoReceipt: string;
    digitalSignature: string;
    recipientName: string;
    completionTime: Date;
    latitude?: number;
    longitude?: number;
  };
  
  // Performance e métricas
  attempts?: number; // Tentativas de entrega
  delayReason?: string; // Motivo do atraso
  temperature?: number; // Para produtos que requerem controle de temperatura
  
  // Metadados
  createdAt: Date;
  updatedAt: Date;
  createdBy: string;
  updatedBy?: string;
}

// ========================================
// 📄 INTERFACE DOCUMENTO FISCAL
// ========================================

export interface FiscalDocument {
  // Identificação única
  fiscalDocumentId: string;
  
  // Tipo de documento fiscal
  documentType: 'NFe' | 'NFCe';
  
  // Dados obrigatórios da nota fiscal
  documentNumber: string;     // Número da nota fiscal
  series: string | null;      // Série da nota (pode ser null para NFCe)
  accessKey: string | null;   // Chave de acesso de 44 dígitos (opcional)
  issueDate: Date;           // Data de emissão da nota
  totalValue: number;        // Valor total da nota fiscal
  
  // Classificação do produto transportado
  productType: string;       // Ex: "Medicamentos", "Eletrônicos", "Alimentos"
  
  // Status de validação
  status: 'pending' | 'validated' | 'error';
  validationError?: string;
  
  // Dados do emitente (quando disponível)
  emitter?: {
    cnpj: string;
    name: string;
    address?: string;
  };
  
  // Dados do destinatário (quando disponível)
  receiver?: {
    cpfCnpj: string;
    name: string;
    address?: string;
  };
  
  // Integração SEFAZ (implementação futura)
  sefazData?: {
    consultedAt: Date;
    situation: string;
    protocol: string;
    xml?: string; // XML da nota fiscal
  };
  
  // Observações e notas adicionais
  notes?: string;
  tags?: string[]; // Tags para categorização
  
  // Metadados
  createdAt: Date;
  updatedAt: Date;
  createdBy?: string;
  updatedBy?: string;
}

// ========================================
// 🔍 INTERFACES PARA FILTROS E BUSCA
// ========================================


export interface RouteStepsFilter {
  status?: string[];
  type?: string[];
  priority?: string[];
  dateRange?: {
    start: string;
    end: string;
  };
} 