0, 'message' => 'Unknown action'])); } if (empty($data['items'])) { exit(json_encode(['success' => 0, 'message' => 'At least one item is required'])); } try { $new_id = null; dbTransaction($pdo2, function($pdo) use ($data, $action, $company_id, $logging, &$new_id) { $order = new OrderManager($pdo, $company_id); if ($action === 'create') { $data['source'] = 'revenue'; $data['source_id'] = 0; } else { $id = (int)($data['id'] ?? 0); if (!$id) { throw new Exception('Order ID required.'); } $order->assertRevenueOrderEditable($id); } $new_id = $order->saveOrder($data, $logging); }); $answer['success'] = 1; $answer['message'] = $action === 'create' ? 'Sales order created' : 'Sales order updated'; if ($new_id) { $answer['new_id'] = $new_id; } } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; http_response_code(500); } catch (Exception $e) { $answer['message'] = $e->getMessage(); http_response_code(400); } exit(json_encode($answer)); ?>