|
8 | 8 | * @author Tran Ngoc Duc <ductn@diepxuan.com> |
9 | 9 | * @author Tran Ngoc Duc <caothu91@gmail.com> |
10 | 10 | * |
11 | | - * @lastupdate 2026-02-25 15:32:11 |
| 11 | + * @lastupdate 2026-04-06 08:15:17 |
12 | 12 | */ |
13 | 13 |
|
14 | 14 | namespace Diepxuan\Simba\StoredProcedures; |
15 | 15 |
|
| 16 | +use Diepxuan\Simba\Helper\ParamHelper; |
16 | 17 | use Diepxuan\Simba\SModel\SModel; |
17 | 18 | use Illuminate\Support\Collection; |
18 | | -use Diepxuan\Simba\Helper\ParamHelper; |
| 19 | + |
19 | 20 | /** |
20 | 21 | * Class AsCADelCT1. |
21 | 22 | * |
|
24 | 25 | * Procedure thực hiện xóa các bản ghi trong bảng CACT1 thỏa mãn điều kiện mã công ty và stt_rec. |
25 | 26 | * Trả về kết quả qua output parameter @pRet: 0 nếu xóa thành công, khác 0 nếu có lỗi (mã lỗi SQL). |
26 | 27 | * |
27 | | - * Tham số: |
28 | | - * - @pMa_cty (string, bắt buộc): Mã công ty (3 ký tự). |
29 | | - * - @pStt_rec (string, bắt buộc): Số thứ tự record (20 ký tự). Khóa chính của bảng CACT1. |
30 | | - * - @pRet (int, output): Kết quả trả về. 0 thành công, khác 0 lỗi. |
| 28 | + * Tham số (theo định nghĩa thực tế trong SQL Server): |
| 29 | + * - @pMa_cty (nvarchar(3)): Mã công ty. Bắt buộc. |
| 30 | + * - @pStt_rec (nvarchar(20)): Số thứ tự record (stt_rec). Khóa chính của bảng CACT1. Bắt buộc. |
| 31 | + * - @pRet (int, OUTPUT): Tham số đầu ra chứa mã lỗi (@@error). |
| 32 | + * - 0: Thành công. |
| 33 | + * - Khác 0: Mã lỗi SQL Server. |
31 | 34 | * |
32 | 35 | * Giá trị trả về: |
33 | | - * - Procedure không trả về resultset, chỉ thiết lập giá trị output parameter @pRet. |
34 | | - * - Cần đọc giá trị @pRet sau khi gọi để kiểm tra lỗi. |
| 36 | + * - Procedure không trả về result set. |
| 37 | + * - Kết quả được trả về qua output parameter @pRet. |
| 38 | + * - Để lấy giá trị @pRet, cần đọc từ result của ProcedureCaller (có SELECT @pRet). |
35 | 39 | * |
36 | 40 | * Ví dụ gọi: |
37 | 41 | * ```php |
38 | 42 | * $result = AsCADelCT1::call([ |
39 | 43 | * 'pMa_cty' => '001', |
40 | | - * 'pStt_rec' => 'CT202500001', |
| 44 | + * 'pStt_rec' => '001wCT10000000676668', |
41 | 45 | * ]); |
| 46 | + * |
42 | 47 | * // Lấy giá trị output parameter |
43 | | - * $ret = $result['pRet'] ?? null; |
| 48 | + * $ret = $result->first()->pRet ?? null; |
44 | 49 | * if ($ret === 0) { |
45 | 50 | * // Xóa thành công |
46 | 51 | * } else { |
47 | | - * // Có lỗi xảy ra |
| 52 | + * // Có lỗi xảy ra, $ret chứa mã lỗi |
48 | 53 | * } |
49 | 54 | * ``` |
50 | 55 | * |
51 | 56 | * Lưu ý: |
52 | 57 | * - Bảng CACT1 lưu trữ chi tiết chứng từ loại 1 trong module Cost Accounting. |
53 | 58 | * - Procedure này thường được gọi khi hủy một chứng từ chi phí. |
| 59 | + * - Output parameter @pRet được xử lý tự động bởi ProcedureCaller. |
| 60 | + * |
| 61 | + * @see AsCAGetCT1::call() - Kiểm tra chứng từ tồn tại trước khi xóa |
54 | 62 | */ |
55 | 63 | class AsCADelCT1 |
56 | 64 | { |
57 | 65 | /** |
58 | 66 | * Gọi stored procedure asCADelCT1. |
59 | 67 | * |
60 | | - * @param array $params mảng tham số với các khóa tương ứng tên tham số (có thể có tiền tố '@' hoặc không) |
| 68 | + * @param array $params Mảng tham số với các khóa tương ứng tên tham số. |
| 69 | + * Các parameters có thể thiếu, sẽ dùng giá trị default. |
61 | 70 | * |
62 | | - * @return mixed kết quả trả về từ procedure (có thể chứa output parameter) |
| 71 | + * @return Collection kết quả từ procedure (chứa output parameter pRet) |
63 | 72 | */ |
64 | 73 | public static function call(array $params): Collection |
65 | 74 | { |
66 | | - $paramObj = ParamHelper::fromArray($params); |
| 75 | + $paramObj = ParamHelper::fromArray($params); |
67 | 76 | $connection = (new SModel())->getConnectionName(); |
68 | 77 |
|
69 | 78 | return ProcedureCaller::call('asCADelCT1', [ |
70 | 79 | 'pMa_cty' => $paramObj->pMa_cty ?? null, |
71 | 80 | 'pStt_rec' => $paramObj->pStt_rec ?? null, |
| 81 | + 'pRet' => ['type' => 'INT', 'output' => true], |
72 | 82 | ], $connection); |
73 | 83 | } |
| 84 | + |
| 85 | + /** |
| 86 | + * Call stored procedure asCADelCT1 with named parameters (helper method). |
| 87 | + * |
| 88 | + * @param null|string $Ma_cty Mã công ty |
| 89 | + * @param null|string $Stt_rec Số tham chiếu |
| 90 | + * |
| 91 | + * @return Collection Kết quả từ procedure |
| 92 | + */ |
| 93 | + public static function callWithParams( |
| 94 | + ?string $Ma_cty = null, |
| 95 | + ?string $Stt_rec = null, |
| 96 | + ): Collection { |
| 97 | + return self::call([ |
| 98 | + 'pMa_cty' => $Ma_cty, |
| 99 | + 'pStt_rec' => $Stt_rec, |
| 100 | + ]); |
| 101 | + } |
74 | 102 | } |
0 commit comments