ERP implementation is demanding information systems work. It involves sitting with warehouse managers, chief accountants, maintenance supervisors, and engineers to work through individual documents, transactions, and reconciliation procedures.
1. Handling Large Transaction Volumes at THACO
THACO operates across subsidiaries and branches throughout Vietnam. Its purchasing workflows handle thousands of purchase orders, component receipts, and invoices from international suppliers each day.
There, I learned an important lesson about concurrency. & Database Locks trong Microsoft SQL Server:
- At month-end, accountants ran stored procedures to aggregate payables while warehouse staff continued scanning parts in and out. The system encountered serious deadlocks.
- The underlying queries lacked suitable indexes and used transaction isolation settings that increased contention, leading to exclusive locks on transaction tables.
“A poorly written stored procedure can bring an expensive server to a standstill and disrupt an entire assembly operation.”
2. Loc Phuc Fine Jewelry: Precision in Every Gram
At THACO, the challenge centered on volume & and velocity. At Loc Phuc Jewelry, the priority was veracity: accurate, trustworthy data..
Gold and gemstones cannot be reconciled using rough estimates. In jewelry manufacturing:
- Raw gold is issued to artisans. Melting, rolling, casting, polishing, and stone-setting each introduce material losses that must be measured in fine units of weight.
- The ERP system must track standard material-loss allowances for each product and compare them with the gold actually recovered after a shift. Small discrepancies repeated across thousands of products can create substantial losses.
-- FIFO principles & Jewelry material-loss control in BRAVO ERP
SELECT
w.WorkOrderId,
w.ArtisanId,
w.GoldPurityCode,
w.IssuedWeight_Grams,
w.FinishedWeight_Grams,
w.ScrapRecovered_Grams,
(w.IssuedWeight_Grams - (w.FinishedWeight_Grams + w.ScrapRecovered_Grams)) AS ActualLoss_Grams,
m.StandardLossPercentage * w.IssuedWeight_Grams AS PermittedLoss_Grams
FROM dbo.WorkOrderDetails w
INNER JOIN dbo.MaterialStandards m ON w.ProductTypeId = m.ProductTypeId
WHERE (w.IssuedWeight_Grams - (w.FinishedWeight_Grams + w.ScrapRecovered_Grams)) > (m.StandardLossPercentage * w.IssuedWeight_Grams);
3. Three Principles I Took Away
Working with these two enterprises taught me three foundational lessons beyond the university curriculum:
DELETE or UPDATE to overwrite financial records without an audit trail. Changes should be tracked through append-only logs, deletion flags such as is_deleted, and historical models such as SCD Type 2.
From ERP Thinking to Modern Analytics Engineering
My experience implementing BRAVO ERP on SQL Server made the Modern Data Stack feel like a natural next step. Working with dbt Core, Snowflake, dlt, and Kimball star schemasallows me to carry the same care and reconciliation discipline into the data models I build today.