Большое спасибо за ваше время. Я работаю над проектом, в котором я делаю синхронизацию между Podio и Freshbooks. Я использую API для того же. Когда я выполняю какое-либо действие на Podio, будет запущен хук, и то же действие будет выполнено автоматически на Freshbooks под капотом. При создании расписаний я получаю сообщение об ошибке
Ошибка расписания: пользователь «530235» не назначен проекту «102567».
Я использую электронную почту для отладки. Я не знаю, как назначить проект сотруднику. В API FreshBooks нет ничего, чтобы сделать это. Пожалуйста, дайте мне способ достичь этого. Я действительно ценю твою помощь.
Ниже я публикую свой код
$item = PodioItem::get($_POST['item_id']);
$podioFilteredData = getPodioFilteredData($item);
//All FB Projects data from db
$fbProjectsData = getAllProjectsData();
//All FB tasks data
$fbTasksData = getAllTasksData();
//All FB staffs data from db
$fbStaffsData = getAllStaffsData();
//print_r($podioFilteredData);
// Output the title of each item
foreach ($podioFilteredData as $k=>$item)
{
//Freshbook timesheet entry object created
$assignProject = new FreshBooks_Staff();
$assignProject->staffId =array_search($item['employee'], $fbStaffsData);
$assignProject->project = array_search($item['case'], $fbProjectsData);
if($assignProject->update()) {
sendTestMail("updateworking");
}
else {
sendTestMail("notworking");
}
$timesheet = new FreshBooks_TimeEntry();
//$timesheet->timeEntryId = $item['item_id'];
$timesheet->projectId = array_search($item['case'], $fbProjectsData);
$timesheet->taskId = array_search($item['work_role'], $fbTasksData);
$timesheet->staffId = array_search($item['employee'], $fbStaffsData);
$timesheet->date = $item['date'];
$timesheet->hours = $item['hours'];
$timesheet->notes = stripslashes($item['notes']);
$timesheet->create();
$timesheetEntry=0;
$timesheetLastError='NULL';
if($timesheetEntry == 0 || $timesheetLastError != 'NULL')
{
//START: Mail sending if the timesheet entry is not synced
$body = "<b>Podio Timesheet Entry Details</b>"."<br/><br/>";
$body .= "Project: ".$item['case_original']. "<br/>";
$body .= "Task: ".$item['work_role_original']."<br/>";
$body .= "Staff: ".$item['employee_original']."<br/>";
$body .= "Date: ".$item['date']."<br/>";
$body .= "Hours: ".$item['hours']."<br/>";
$body .= "Notes:".$item['notes']."<br/>";
$body .= "<br/><br/>";
$body .= "<b>Freshbook Timesheet Entry Details</b>"."<br/><br/>";
$body .= "Project: ".$timesheet->projectId. "<br/>";
$body .= "Task: ".$timesheet->taskId."<br/>";
$body .= "Staff: ".$timesheet->staffId."<br/>";
$body .= "Date: ".$timesheet->date."<br/>";
$body .= "Hours: ".$timesheet->hours."<br/>";
$body .= "Notes:".$timesheet->notes."<br/>";
$body .= "Timesheet Error:".$timesheet->lastError."<br/>"."</body>"."</html>";
$headers ='X-Mailer: PHP/' . phpversion();
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
//$headers = 'MIME-Version: 1.0' . "\r\n";
//$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Admin <[email protected]>'.$eol;
$headers .= 'Reply-To: Admin <[email protected]>'.$eol;
//$headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid spam-filters
$subject = "ERROR while SYNC from PODIO TO FRESHBOOK: ".date("Y-m-d h:i:s");
mail('[email protected]',$subject,$body, $headers);
//END: Mail sending if the timesheet entry is not synced
}
Задача ещё не решена.
Других решений пока нет …