TỔNG QUAN

Tài liệu hướng dẫn tích hợp, truyền - nhận dữ liệu với hệ thống Quản trị doanh nghiệp BRAVO ERP.
Tài liệu mang tính chất tham khảo, có thể có sự thay đổi khác nhau theo từng đơn vị. Vui lòng liên hệ trực tiếp CBNV kỹ thuật để được hỗ trợ thêm.

NHẬT KÝ SỬA ĐỔI


Endpoints

1. oAuth

Lấy mã xác thực truy cập (token). Một phản hồi thành công chứa thông tin Token. Token là bắt buộc truyền kèm khi thực thi các hàm tiếp theo để tương tác với hệ thống BRAVO ERP.

Info

Method: POST
URL: /connect/token

TrườngKiểu dữ liệuBắt buộcMô tả
Content-Typestringxapplication/x-www-form-urlencoded (mặc định)
Body (urlencoded)
TrườngKiểu dữ liệuBắt buộcMô tả
client_idstringx(Thông tin được cung cấp bởi BRAVO)
client_secretstringx(Thông tin được cung cấp bởi BRAVO)
grant_typestringxclient_credentials (mặc định)
Success Response
TrườngKiểu dữ liệuBắt buộcMô tả
access_tokenstringxMã xác thực truy cập (token)
expires_instringxSố giây còn lại kể từ thời điểm yêu cầu, trước khi token hết hạn
token_typestringxLoại token, thường chỉ là chuỗi Bearer
scopestringPhạm vi áp dụng, thông số này là không bắt buộc

Example

{

    “access_token”: “eyJhbGciOiJSUzI1NiIsImtpZCI6IkIzMEIxNTFGNjg3MUVFREMzMTdCMTQ4QUQ3Q0YzNDA0OUJCNDQwRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6InN3c1ZIMmh4N3R3eGV4U0sxODgwQkp1MFFQTSJ9.eyJuYmYiOjE3NTc0MTE4NjMsImV4cCI6MTc1NzQxMzY2MywiaXNzIjoiaHR0cHM6Ly93cy1kbi5icmF2by5jb20udm46NTExNSIsImNsaWVudF9pZCI6IjYyYWVkM2E1LTE1MjAtNGE4ZC1hYWM3LThiNTc3Y2YyOGFjOCIsImNsaWVudF9uYW1lIjoiRXh0ZXJuYWwiLCJqdGkiOiI5Qjg2QzU0NTc4MTVBMjk3MEI5RThERTIxOURDNEMzOCIsImlhdCI6MTc1NzQxMTg2Mywic2NvcGUiOlsiQXBpR2F0ZXdheSJdfQ.KC-a4Ef3d0kF2otdeL8gSa9ftDmJJjUx_TMveTfBYd_qTX95U1-_eKRgOzoCYgUCgbgKK0RDmpubDtm0JppBlnwIoFIC_9zXpVOfpEnnZc-lBHTyetdr1XItODfSov0jWdKPz_w48xYtk9SH5Aewvca9Jhy0qXilGQoMGVCuVOS1ZJgrmp7E7ZBnzW0n9goGeYnd-Rbml8SsxuqPzNS4yhfkGFAzUtgVpxokhfDL7wbSAbrhTLZURO9tTnmvLMc2t9GIIUgy2mAvhswkjrTLXVbLLqeZQq2I9hdqM-sBs2H1hDkXVfne_nd0fDupBexDi9tQQOprN70kHKkiEGGfSg”,
    “expires_in”: 1800,
    “token_type”: “Bearer”,
    “scope”: “ApiGateway”
}

Error Response
TrườngKiểu dữ liệuBắt buộcMô tả
errorstringMã lỗi hoặc một mô tả ngắn thông tin về lỗi

Example

{
  "error": "invalid_client"
}

2. Execute

Sử dụng để thực thi tất cả các chức năng khi tương tác với hệ thống BRAVO ERP. Tuy nhiên, cấu trúc dữ liệu trong Data[] sẽ khác nhau ở mỗi nghiệp vụ. Dựa vào thông tin Partner và Type hệ thống BRAVO sẽ xác định và xử lý dữ liệu tương ứng.

Info

Method: POST
URL: /api/v1.0/External/WebExternal/Execute

Header
TrườngKiểu dữ liệuBắt buộcMô tả
Content-Typestringxapplication/json (mặc định)
AuthorizationstringxBearer {access_token}
Body (JSON)
TrườngKiểu dữ liệuBắt buộcMô tả
PartnerstringxMã định danh đối tác (Thông tin được cung cấp bởi BRAVO)
TypestringxHành động cần thực thi
Dataarray[]xDữ liệu truyền nhận với định dạng JSON

Example

{

    “Partner”: “BMES-DAINAM”,
    “Type”: “OperationLog”,
    “Data”: []
}

2.1 OperationLog

Thực hiện nhận & xử lý dữ liệu kết quả của lệnh trộn (nhật ký vận hành) từ hệ thống trạm trộn. Chương trình dựa vào key orderId để nhận biết thực hiện Thêm mới hay Cập nhật (nếu trường hợp chưa tồn tại orderId BRAVO ERP sẽ tực hiện Thêm mới).

Example

{

    “Partner”: “BMES-DAINAM”,
    “Type”: “OperationLog”,
    “Data”: [
        {
            “date”: “2025-09-09T00:00:00”,
            “stationId”: “7166e47a-3735-49e1-be5b-0b1c73ffd0bd”,
            “orderId”: “8166e47a-3735-49e1-be5b-0b1c73ffd0bd”,
            “orderNo”: “LSX000001”,
            “customerId”: “c883ce0a-50d8-4228-9c2f-11f2c4277b62”,
            “constructionId”: “840f5e23-f261-4ce8-91e9-89c9c1bca23e”,
            “vehicleId”: “8b42b67b-a72a-4ba8-ac28-6d1eba7fff37”,
            “licensePlate”: “60K-73774”,
            “driverId”: “177c079c-f04a-47ef-875d-c83aaa8495f7”,
            “driverName”: “Văn Khắc Thắng”,
            “bomId”: “2f78dd92-b389-4102-848e-33e9a45287cf”,
            “gradeId”: “d4020297-d1f9-4834-865b-fab1c35f3066”,
            “gradeCode”: “C45”,
            “concreteCuringTimeId”: “03b89730-0fd6-4398-8d9c-9c471f7fd56b”,
            “concreteCuringTimeCode”: “R3”,
            “slumpId”: “2adf9c5c-fb21-49ee-b079-dcb23cf567e2”,
            “slumpCode”: “3+/-1”,
            “batch”: “1”,
            “quantity”: 100,
            “startTime”: “2025-09-09T09:30:00”,
            “endTime”: “2025-09-09T10:45:30”,
            “note”: "",
            “materials”: [
                {
                    “materialId”: “9dfc3ed5-719a-48fb-940e-40b1ec86c196”,
                    “unit”: “Kg”,
                    “silo”: “1”,
                    “normQuantity”: 5,
                    “standardQuantity”: 500,
                    “actualQuantity”: 500.05
                },
                {
                    “materialId”: “9dfc3ed5-719a-48fb-940e-40b1ec86c196”,
                    “unit”: “Kg”,
                    “silo”: “2”,
                    “normQuantity”: 2,
                    “standardQuantity”: 200,
                    “actualQuantity”: 188.25
                },
                {
                    “materialId”: “9dfc3ed5-719a-48fb-940e-40b1ec86c196”,
                    “unit”: “Kg”,
                    “silo”: “1”,
                    “normQuantity”: 1,
                    “standardQuantity”: 100,
                    “actualQuantity”: 100
                }
            ]
        }
    ]
}

TrườngKiểu dữ liệuBắt buộcMô tả
datestringxNgày lệnh trộn.
stationIdstringxID trạm trộn (liên kết với danh mục trạm trộn)
orderIdstringxID lệnh sản xuất, lệnh trộn
orderNostringxSố lệnh sản xuất, lệnh trộn
customerIdstringxID khách hàng (liên kết với danh mục khách hàng)
constructionIdstringxID công trình (liên kết với danh mục công trình)
vehicleIdstringxID xe (liên kết danh mục xe)
licensePlatestringxBiển số xe
driverIdstringxID tài xế (liên kết với danh mục tài xế)
driverNamestringxTên tài xế
bomIdstringxID cấp phôi (liên kết với danh mục cấp phối)
bomCodestringxMã cấp phối
gradeIdstringxID mác bê tông (liên kết với danh mục mác bê tông)
gradeCodestringxMã mác bê tông
concreteCuringTimeIdstringxID tuổi bê tông (liên kết với danh mục tuổi bê tông)
concreteCuringTimeCodestringxMã tuổi bê tông
slumpIdstringxĐộ sụt (liên kết với danh mục độ sụt)
slumpCodestringxMã độ sụt
batchintegerxSố mẻ
quantityfloatxKhối lượng thành phẩm
startTimestringxThời gian bắt đầu trộn
(Yêu cầu định dạng yyyy-MM-ddTHH:mm:ss)
endTimestringxThời gian hoàn thành trộn
(Yêu cầu định dạng yyyy-MM-ddTHH:mm:ss)
notestringGhi chú
materialIdstringxID nguyên vật liệu (liên kết với danh mục vật tư)
unitstringxĐơn vị tính
silostringxMã SILO chứa nguyên vật liệu
normQuantityfloatxSố lượng định mức tiêu hao
standardQuantityfloatxSố lượng tiêu hao chuẩn (Khối lượng thành phẩm * Số lượng định mức tiêu hao)
actualQuantityfloatxSố lượng thực tế tiêu hao
Success Response

Example

{

    “result”: “true”,
    “data”: null,
    “message”: “Success”,
    “error”: 0
}

Error Response
TrườngKiểu dữ liệuBắt buộcMô tả
resultstringxKết quả của yêu cầu, thường chỉ là false
datastringxDữ liệu của yêu cầu, thường sẽ null
messagestringxMô tả thông tin lỗi bằng một diễn giải ngắn, tổng quát
errorstringxMã lỗi

Example

 

{
    “result”: “false”,
    “data”: null,
    “message”: “Sorry, something is missing. Please check and try again.”,
    “error”: 101
}