[ 'sales_records' => [ [ "id" => "sale_001", "customer_name" => "대박 식당", "program_id" => "prog_pro", "contract_date" => "2024-10-15", "duration_months" => 84, "join_fee" => 2000000, "subscription_fee" => 100000, "total_amount" => 2000000, "status" => "Active", "dates" => [ "contract" => "2024-10-15", "join_fee" => "2024-10-16", "service_start" => "2024-11-01", "subscription_fee" => "2024-11-25", "product_modified" => "2024-10-15" ], "history" => [ [ "date" => "2024-10-15", "type" => "New Contract", "program_id" => "prog_pro", "description" => "Initial contract signed (Pro Plan)" ] ] ], [ "id" => "sale_002", "customer_name" => "강남 카페", "program_id" => "prog_premium", "contract_date" => "2024-11-05", "duration_months" => 84, "join_fee" => 3000000, "subscription_fee" => 150000, "total_amount" => 3000000, "status" => "Active", "dates" => [ "contract" => "2024-11-05", "join_fee" => "2024-11-06", "service_start" => "2024-12-01", "subscription_fee" => "2024-12-25", "product_modified" => "2024-11-05" ], "history" => [ [ "date" => "2024-11-05", "type" => "New Contract", "program_id" => "prog_premium", "description" => "Initial contract signed (Premium Plan)" ] ] ], [ "id" => "sale_003", "customer_name" => "성수 팩토리", "program_id" => "prog_basic", "contract_date" => "2024-11-20", "duration_months" => 84, "join_fee" => 1000000, "subscription_fee" => 50000, "total_amount" => 1000000, "status" => "Pending", "dates" => [ "contract" => "2024-11-20", "join_fee" => null, "service_start" => null, "subscription_fee" => null, "product_modified" => "2024-11-20" ], "history" => [ [ "date" => "2024-11-20", "type" => "New Contract", "program_id" => "prog_basic", "description" => "Contract drafted (Basic Plan)" ] ] ] ], 'current_user' => [ "id" => "user_A", "name" => "김관리 팀장", "role" => "1차영업담당", "sub_managers" => [ [ "id" => "user_B", "name" => "이하위 대리", "role" => "Sub-Manager", "total_sales" => 50000000, "active_contracts" => 5, "performance_grade" => "A" ], [ "id" => "user_C", "name" => "박신입 사원", "role" => "Seller", "total_sales" => 12000000, "active_contracts" => 2, "performance_grade" => "B" ], [ "id" => "user_D", "name" => "최열정 인턴", "role" => "Seller", "total_sales" => 0, "active_contracts" => 0, "performance_grade" => "C" ] ] ] ], '운영자' => [ 'sales_records' => [ [ "id" => "sale_001", "customer_name" => "대박 식당", "program_id" => "prog_pro", "contract_date" => "2024-10-15", "duration_months" => 84, "join_fee" => 2000000, "subscription_fee" => 100000, "total_amount" => 2000000, "status" => "Active", "dates" => [ "contract" => "2024-10-15", "join_fee" => "2024-10-16", "service_start" => "2024-11-01", "subscription_fee" => "2024-11-25", "product_modified" => "2024-10-15" ], "history" => [ [ "date" => "2024-10-15", "type" => "New Contract", "program_id" => "prog_pro", "description" => "Initial contract signed (Pro Plan)" ] ] ] ], 'current_user' => [ "id" => "user_admin", "name" => "운영자", "role" => "운영자", "sub_managers" => [] ] ], '영업관리' => [ 'sales_records' => [ [ "id" => "sale_201", "customer_name" => "서초 IT센터", "program_id" => "prog_pro", "contract_date" => "2024-09-10", "duration_months" => 84, "join_fee" => 2000000, "subscription_fee" => 100000, "total_amount" => 2000000, "status" => "Active", "dates" => [ "contract" => "2024-09-10", "join_fee" => "2024-09-11", "service_start" => "2024-10-01", "subscription_fee" => "2024-10-25", "product_modified" => "2024-09-10" ], "history" => [ [ "date" => "2024-09-10", "type" => "New Contract", "program_id" => "prog_pro", "description" => "Initial contract signed (Pro Plan)" ] ] ] ], 'current_user' => [ "id" => "user_sales_admin", "name" => "영업파트너", "role" => "영업관리", "sub_managers" => [ [ "id" => "user_2B", "name" => "한성실 대리", "role" => "Sub-Manager", "total_sales" => 35000000, "active_contracts" => 4, "performance_grade" => "A" ] ] ] ], '매니저' => [ 'sales_records' => [ [ "id" => "sale_301", "customer_name" => "잠실 마트", "program_id" => "prog_basic", "contract_date" => "2024-08-15", "duration_months" => 84, "join_fee" => 1000000, "subscription_fee" => 50000, "total_amount" => 1000000, "status" => "Active", "dates" => [ "contract" => "2024-08-15", "join_fee" => "2024-08-16", "service_start" => "2024-09-01", "subscription_fee" => "2024-09-25", "product_modified" => "2024-08-15" ], "history" => [ [ "date" => "2024-08-15", "type" => "New Contract", "program_id" => "prog_basic", "description" => "Initial contract signed (Basic Plan)" ] ] ] ], 'current_user' => [ "id" => "user_manager", "name" => "매니저", "role" => "매니저", "sub_managers" => [] ] ], '2차영업담당' => [ 'sales_records' => [ [ "id" => "sale_201", "customer_name" => "서초 IT센터", "program_id" => "prog_pro", "contract_date" => "2024-09-10", "duration_months" => 84, "join_fee" => 2000000, "subscription_fee" => 100000, "total_amount" => 2000000, "status" => "Active", "dates" => [ "contract" => "2024-09-10", "join_fee" => "2024-09-11", "service_start" => "2024-10-01", "subscription_fee" => "2024-10-25", "product_modified" => "2024-09-10" ], "history" => [ [ "date" => "2024-09-10", "type" => "New Contract", "program_id" => "prog_pro", "description" => "Initial contract signed (Pro Plan)" ] ] ], [ "id" => "sale_202", "customer_name" => "홍대 레스토랑", "program_id" => "prog_basic", "contract_date" => "2024-10-22", "duration_months" => 84, "join_fee" => 1000000, "subscription_fee" => 50000, "total_amount" => 1000000, "status" => "Active", "dates" => [ "contract" => "2024-10-22", "join_fee" => "2024-10-23", "service_start" => "2024-11-01", "subscription_fee" => "2024-11-25", "product_modified" => "2024-10-22" ], "history" => [ [ "date" => "2024-10-22", "type" => "New Contract", "program_id" => "prog_basic", "description" => "Initial contract signed (Basic Plan)" ] ] ], [ "id" => "sale_203", "customer_name" => "판교 스타트업", "program_id" => "prog_premium", "contract_date" => "2024-11-18", "duration_months" => 84, "join_fee" => 3000000, "subscription_fee" => 150000, "total_amount" => 3000000, "status" => "Active", "dates" => [ "contract" => "2024-11-18", "join_fee" => "2024-11-19", "service_start" => "2024-12-01", "subscription_fee" => "2024-12-25", "product_modified" => "2024-11-18" ], "history" => [ [ "date" => "2024-11-18", "type" => "New Contract", "program_id" => "prog_premium", "description" => "Initial contract signed (Premium Plan)" ] ] ], [ "id" => "sale_204", "customer_name" => "이태원 바", "program_id" => "prog_basic", "contract_date" => "2024-11-25", "duration_months" => 84, "join_fee" => 1000000, "subscription_fee" => 50000, "total_amount" => 1000000, "status" => "Pending", "dates" => [ "contract" => "2024-11-25", "join_fee" => null, "service_start" => null, "subscription_fee" => null, "product_modified" => "2024-11-25" ], "history" => [ [ "date" => "2024-11-25", "type" => "New Contract", "program_id" => "prog_basic", "description" => "Contract drafted (Basic Plan)" ] ] ] ], 'current_user' => [ "id" => "user_2A", "name" => "정영업 과장", "role" => "2차영업담당", "sub_managers" => [ [ "id" => "user_2B", "name" => "한성실 대리", "role" => "Sub-Manager", "total_sales" => 35000000, "active_contracts" => 4, "performance_grade" => "A" ], [ "id" => "user_2C", "name" => "윤열심 주임", "role" => "Seller", "total_sales" => 18000000, "active_contracts" => 3, "performance_grade" => "B" ], [ "id" => "user_2D", "name" => "강신규 사원", "role" => "Seller", "total_sales" => 5000000, "active_contracts" => 1, "performance_grade" => "C" ] ] ] ], '3차영업담당' => [ 'sales_records' => [ [ "id" => "sale_301", "customer_name" => "잠실 마트", "program_id" => "prog_basic", "contract_date" => "2024-08-15", "duration_months" => 84, "join_fee" => 1000000, "subscription_fee" => 50000, "total_amount" => 1000000, "status" => "Active", "dates" => [ "contract" => "2024-08-15", "join_fee" => "2024-08-16", "service_start" => "2024-09-01", "subscription_fee" => "2024-09-25", "product_modified" => "2024-08-15" ], "history" => [ [ "date" => "2024-08-15", "type" => "New Contract", "program_id" => "prog_basic", "description" => "Initial contract signed (Basic Plan)" ] ] ], [ "id" => "sale_302", "customer_name" => "송파 병원", "program_id" => "prog_pro", "contract_date" => "2024-10-08", "duration_months" => 84, "join_fee" => 2000000, "subscription_fee" => 100000, "total_amount" => 2000000, "status" => "Active", "dates" => [ "contract" => "2024-10-08", "join_fee" => "2024-10-09", "service_start" => "2024-11-01", "subscription_fee" => "2024-11-25", "product_modified" => "2024-10-08" ], "history" => [ [ "date" => "2024-10-08", "type" => "New Contract", "program_id" => "prog_pro", "description" => "Initial contract signed (Pro Plan)" ] ] ], [ "id" => "sale_303", "customer_name" => "강동 학원", "program_id" => "prog_basic", "contract_date" => "2024-11-12", "duration_months" => 84, "join_fee" => 1000000, "subscription_fee" => 50000, "total_amount" => 1000000, "status" => "Active", "dates" => [ "contract" => "2024-11-12", "join_fee" => "2024-11-13", "service_start" => "2024-12-01", "subscription_fee" => "2024-12-25", "product_modified" => "2024-11-12" ], "history" => [ [ "date" => "2024-11-12", "type" => "New Contract", "program_id" => "prog_basic", "description" => "Initial contract signed (Basic Plan)" ] ] ] ], 'current_user' => [ "id" => "user_3A", "name" => "오영업 대리", "role" => "3차영업담당", "sub_managers" => [ [ "id" => "user_3B", "name" => "신성실 주임", "role" => "Sub-Manager", "total_sales" => 25000000, "active_contracts" => 3, "performance_grade" => "A" ], [ "id" => "user_3C", "name" => "조근면 사원", "role" => "Seller", "total_sales" => 8000000, "active_contracts" => 2, "performance_grade" => "B" ], [ "id" => "user_3D", "name" => "임신입 인턴", "role" => "Seller", "total_sales" => 2000000, "active_contracts" => 1, "performance_grade" => "C" ] ] ] ] ]; // 기본 데이터 구조 $response = [ "company_info" => [ "id" => "comp_001", "name" => "건축자재(주)", "logo_url" => "https://via.placeholder.com/150x50?text=Company+Logo", // Placeholder "currency" => "KRW" ], "sales_config" => [ "programs" => [ [ "id" => "prog_basic", "name" => "Basic Plan", "join_fee" => 1000000, "subscription_fee" => 50000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "prog_pro", "name" => "Pro Plan", "join_fee" => 2000000, "subscription_fee" => 100000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "prog_premium", "name" => "Premium Plan", "join_fee" => 3000000, "subscription_fee" => 150000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ] ], "default_contract_period" => 84, "package_types" => [ [ "id" => "select_models", "name" => "선택모델", "type" => "checkbox", "models" => [ [ "id" => "model_qr", "name" => "QR코드", "sub_name" => "설비관리/장비 점검", "join_fee" => 10200000, "subscription_fee" => 50000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "model_photo", "name" => "사진 - 출하", "sub_name" => "사진 관리", "join_fee" => 19200000, "subscription_fee" => 100000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "model_inspection", "name" => "검사 / 토큰 적용", "sub_name" => "계산서 발행", "join_fee" => 10200000, "subscription_fee" => 50000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "model_account", "name" => "이카운트 / 거래처대장", "sub_name" => "서류관리", "join_fee" => 19200000, "subscription_fee" => 100000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "model_iso", "name" => "ISO, 인정서류 / 토큰 적용", "sub_name" => "서류관리", "join_fee" => 10200000, "subscription_fee" => 50000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "model_inventory", "name" => "적정 재고 표기", "sub_name" => "재고 관리", "join_fee" => 19200000, "subscription_fee" => 100000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "model_manufacturing", "name" => "제조 관리", "sub_name" => "제작지시, 발주", "join_fee" => 19200000, "subscription_fee" => 100000, "commission_rates" => [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ] ] ], [ "id" => "construction_management", "name" => "공사관리", "type" => "package", "join_fee" => 40000000, "subscription_fee" => 200000, "commission_rates" => [ "seller" => ["join" => 0.25, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ], [ "id" => "process_government", "name" => "공정/정부지원사업", "type" => "package", "join_fee" => 80000000, "subscription_fee" => 400000, "commission_rates" => [ "seller" => ["join" => 0.25, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ] ] ] ], "sales_records" => isset($roleData[$role]['sales_records']) ? $roleData[$role]['sales_records'] : [], "current_user" => isset($roleData[$role]['current_user']) ? $roleData[$role]['current_user'] : [ "id" => "user_default", "name" => "기본 사용자", "role" => $role, "sub_managers" => [] ] ]; // DB에서 동적 모델 및 패키지 데이터 로드 시도 (package_pricing 테이블 사용) require_once __DIR__ . '/../../lib/mydb.php'; try { $pdo = db_connect(); // 테이블 존재 확인 및 데이터 조회 $check = $pdo->query("SHOW TABLES LIKE 'package_pricing'"); if ($check->rowCount() > 0) { $stmt = $pdo->prepare("SELECT * FROM package_pricing WHERE is_active = 1 ORDER BY id ASC"); $stmt->execute(); $dbItems = $stmt->fetchAll(PDO::FETCH_ASSOC); if (!empty($dbItems)) { $dynamicModels = []; $dynamicPackages = []; foreach ($dbItems as $row) { // commission_rates JSON 파싱 $rates = json_decode($row['commission_rates'] ?? '{}', true); if (empty($rates)) { $rates = [ "seller" => ["join" => 0.2, "sub" => 0.5], "manager" => ["join" => 0.05, "sub" => 0.3], "educator" => ["join" => 0.03, "sub" => 0.2] ]; } $item = [ "id" => $row['item_id'], "name" => $row['item_name'], "sub_name" => $row['sub_name'], "join_fee" => (int)$row['join_fee'], "subscription_fee" => (int)$row['subscription_fee'], "total_amount" => (int)$row['total_amount'], "discretion_allowed" => (bool)$row['allow_flexible_pricing'], "commission_rates" => $rates ]; if ($row['item_type'] === 'model') { $dynamicModels[] = $item; } else if ($row['item_type'] === 'package') { $item['type'] = 'package'; $dynamicPackages[] = $item; } } // 새로운 package_types 구성 $newPackageTypes = []; // 1. 선택 모델 추가 $newPackageTypes[] = [ "id" => "select_models", "name" => "선택모델", "type" => "checkbox", "models" => $dynamicModels ]; // 2. 패키지 항목들 추가 foreach ($dynamicPackages as $pkg) { $newPackageTypes[] = $pkg; } $response['sales_config']['package_types'] = $newPackageTypes; } } } catch (Exception $e) { // DB 연결 실패 시 기본 하드코딩 데이터 사용 (무시) } echo json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); ?>