72 lines
2.3 KiB
PHP
72 lines
2.3 KiB
PHP
<?php
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Services\Google;
|
|
|
|
use App\Core\DB;
|
|
use PDO;
|
|
|
|
class GoogleExportService
|
|
{
|
|
public function exportTaskById(int $taskId): bool
|
|
{
|
|
$pdo = DB::connection();
|
|
|
|
$stmt = $pdo->prepare("
|
|
SELECT t.*, b.code AS board_code
|
|
FROM tasks t
|
|
LEFT JOIN boards b ON b.id = t.board_id
|
|
WHERE t.id = ?
|
|
LIMIT 1
|
|
");
|
|
$stmt->execute([$taskId]);
|
|
$task = $stmt->fetch();
|
|
|
|
if (!$task) {
|
|
return false;
|
|
}
|
|
|
|
// Пока экспортируем только задачи доски снабжения
|
|
if (($task['board_code'] ?? '') !== 'supply') {
|
|
return false;
|
|
}
|
|
|
|
$sheets = new GoogleSheetsService();
|
|
|
|
$row = [
|
|
$task['name'] ?? '', // A Наименование
|
|
$task['quantity'] ?? '', // B кол-во, шт
|
|
$task['balance_tn'] ?? '', // C Остаток, тн
|
|
$task['order_number'] ?? '', // D Заказ, №
|
|
$task['order_amount'] ?? '', // E Сумма заказа
|
|
$task['applicant'] ?? '', // F Фамилия
|
|
$task['request_date'] ?? '', // G дата заявки
|
|
$task['transport_company'] ?? '', // H ТК
|
|
$task['supplier'] ?? '', // I Поставщик
|
|
$task['invoice_number'] ?? '', // J № счета
|
|
$task['payment_date'] ?? '', // K Дата оплаты
|
|
$task['delivery_date'] ?? '', // L дата поставки
|
|
$task['received_by'] ?? '', // M Груз получил
|
|
((int)($task['completed_flag'] ?? 0) === 1) ? 'TRUE' : 'FALSE', // N Выполнено
|
|
];
|
|
|
|
$rowNumber = $sheets->findFirstEmptyRow();
|
|
$sheets->updateRow($rowNumber, $row);
|
|
|
|
if ($rowNumber > 0) {
|
|
$stmt = $pdo->prepare("
|
|
UPDATE tasks
|
|
SET
|
|
google_row_id = ?,
|
|
source_type = 'google',
|
|
updated_at = NOW()
|
|
WHERE id = ?
|
|
");
|
|
$stmt->execute([(string)$rowNumber, $taskId]);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
} |