import React, { useState, useEffect } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Badge } from "@/components/ui/badge"; import { Switch } from "@/components/ui/switch"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Save, Loader2, Link2, Building2, FileText, Mail, CheckCircle, AlertCircle } from "lucide-react"; const ERP_SYSTEMS = [ { value: "None", label: "No ERP Integration" }, { value: "SAP Ariba", label: "SAP Ariba" }, { value: "Fieldglass", label: "SAP Fieldglass" }, { value: "CrunchTime", label: "CrunchTime" }, { value: "Coupa", label: "Coupa" }, { value: "Oracle NetSuite", label: "Oracle NetSuite" }, { value: "Workday", label: "Workday" }, { value: "Other", label: "Other" }, ]; const EDI_FORMATS = [ { value: "CSV", label: "CSV (Excel Compatible)" }, { value: "EDI 810", label: "EDI 810 (Standard Invoice)" }, { value: "cXML", label: "cXML (Ariba/Coupa)" }, { value: "JSON", label: "JSON (API Format)" }, { value: "Custom", label: "Custom Template" }, ]; export default function ERPSettingsTab({ business, onSave, isSaving }) { const [settings, setSettings] = useState({ erp_system: business?.erp_system || "None", erp_vendor_id: business?.erp_vendor_id || "", erp_cost_center: business?.erp_cost_center || "", edi_enabled: business?.edi_enabled || false, edi_format: business?.edi_format || "CSV", invoice_email: business?.invoice_email || "", po_required: business?.po_required || false, }); useEffect(() => { if (business) { setSettings({ erp_system: business.erp_system || "None", erp_vendor_id: business.erp_vendor_id || "", erp_cost_center: business.erp_cost_center || "", edi_enabled: business.edi_enabled || false, edi_format: business.edi_format || "CSV", invoice_email: business.invoice_email || "", po_required: business.po_required || false, }); } }, [business]); const handleChange = (field, value) => { setSettings(prev => ({ ...prev, [field]: value })); }; const handleSubmit = () => { onSave(settings); }; const isConfigured = settings.erp_system !== "None" && settings.erp_vendor_id; return (
{/* Status Card */}
{isConfigured ? ( ) : ( )}

{isConfigured ? 'ERP Integration Active' : 'ERP Integration Not Configured'}

{isConfigured ? `Connected to ${settings.erp_system} • Vendor ID: ${settings.erp_vendor_id}` : 'Configure ERP settings to enable automated invoice delivery'}

{/* ERP System Settings */} ERP System Configuration

Client's procurement or ERP system

handleChange('erp_vendor_id', e.target.value)} placeholder="e.g., VND-12345" className="border-slate-200" />

Your vendor identifier in client's system

handleChange('erp_cost_center', e.target.value)} placeholder="e.g., CC-1001" className="border-slate-200" />

Default cost center for invoice allocation

handleChange('invoice_email', e.target.value)} placeholder="ap@client.com" className="border-slate-200" />

Accounts payable email for invoice delivery

{/* EDI Settings */} EDI / Export Settings

Enable EDI Integration

Automatically format invoices for EDI transmission

handleChange('edi_enabled', checked)} />

Default format for invoice exports

PO Required

Require PO number on invoices

handleChange('po_required', checked)} />
{/* Format Info */}

Supported Formats

EDI 810 Standard
cXML Ariba/Coupa
CSV Excel
JSON API
{/* Save Button */}
); }