accounting workflows

This commit is contained in:
Thanakorn S
2026-05-20 10:17:02 +07:00
parent 04a683bd02
commit 7396db6ffc
199 changed files with 23539 additions and 5345 deletions
@@ -0,0 +1,56 @@
<?php
class BatchActionManager
{
private PDO $pdo;
private int $companyId;
private int $userId;
public function __construct(PDO $pdo, int $company_id, int $user_id)
{
$this->pdo = $pdo;
$this->companyId = $company_id;
$this->userId = $user_id;
}
public function log(array $data): void
{
$type = trim((string)($data['type'] ?? ''));
$doc_type = trim((string)($data['doc_type'] ?? ''));
$total = (int)($data['total'] ?? 0);
$succeeded = (int)($data['succeeded'] ?? 0);
$failed = (int)($data['failed'] ?? 0);
$failed_ids = $this->normalizeFailedIds($data['failed_ids'] ?? '[]');
if ($type === '') {
throw new Exception('type is required.');
}
$this->pdo->prepare(
"INSERT INTO td_batch_action
(company_id, type, doc_type, total, succeeded, failed, failed_ids, user_id, created_at)
VALUES
(:company_id, :type, :doc_type, :total, :succeeded, :failed, :failed_ids, :user_id, :created_at)"
)->execute([
':company_id' => $this->companyId,
':type' => $type,
':doc_type' => $doc_type,
':total' => $total,
':succeeded' => $succeeded,
':failed' => $failed,
':failed_ids' => $failed_ids,
':user_id' => $this->userId,
':created_at' => date('Y-m-d H:i:s'),
]);
}
private function normalizeFailedIds(mixed $failed_ids): string
{
if (!is_string($failed_ids)) {
return json_encode([]);
}
$decoded = json_decode($failed_ids, true);
return json_encode(is_array($decoded) ? $decoded : []);
}
}
?>