Skip to main content

πŸ“‹ SIMANTRA - WEB

Aplikasi: SIMANTRA
Perusahaan: PT Sanghiang Perkasa
Tipe Project: .NET Web Application & Flutter Application
Tim Product Terkait: Hendi Hendrasta & Adhi Rizaldi
Tanggal Dokumentasi: Januari 2026


πŸ“‹ Daftar Isi​


πŸ”— Akses Aplikasi​

Berikut adalah alamat akses cepat untuk environment aplikasi:

EnvironmentURL AksesDeskripsi
πŸš€ Productionhttps://svnet.kalbenutritionals.comEnvironment utama pengguna
πŸ§ͺ Developmenthttps://svnetdev.kalbenutritionals.web.idTesting & staging area

🎯 Pendahuluan​

Tentang SIMANTRA (Sistem Manajemen Transportasi)​

SIMANTRA adalah sistem manajemen transportasi yang terintegrasi dengan sistem B2B Kalbe Nutritionals. Sistem ini mengelola seluruh proses transportasi mulai dari perencanaan order, loading, tracking, unloading, hingga reporting.

Tujuan Dokumentasi​

Dokumentasi ini dibuat untuk memudahkan proses handover dan membantu tim developer baru memahami struktur, komponen, dan cara kerja modul SMT/SIMANTRA.

Lingkup Sistem​

  • Manajemen Order & Planning Order
  • Proses Loading & Unloading
  • Tracking & Timeline Pengiriman
  • Dashboard & Reporting
  • Auto GRN (Goods Receipt Note)
  • Integrasi dengan Oracle APPS
  • Mobile Apps API

πŸ—οΈ Arsitektur Sistem​

Pola Arsitektur​

Sistem menggunakan N-Layer Architecture dengan pemisahan concerns:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Presentation Layer (API) β”‚
β”‚ KN2019_B2B.App.SMT.Api β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Business Logic Layer β”‚
β”‚ KN2018_B2B.Transaction.SMT.Logic β”‚
β”‚ KN2018_B2B.Master.SMT.Logic β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Data Access Layer (DAL) β”‚
β”‚ KN2018_B2B.Transaction.SMT.DataAccessβ”‚
β”‚ KN2018_B2B.Master.SMT.DataAccess β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Models & ViewModels β”‚
β”‚ KN2018_B2B.Transaction.SMT.Models β”‚
β”‚ KN2018_B2B.Master.SMT.Models β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Integrasi Sistem​

  • Oracle EBS (APPS): Integrasi untuk master data dan transaksi
  • Global API: Integrasi dengan sistem global Kalbe
  • Mobile Apps: API untuk aplikasi mobile transporter
  • Scheduler Jobs: Background process untuk sinkronisasi dan blast order

πŸ“‚ Struktur Project​

1. KN2018_B2B.Master.SMT.DataAccess​

Fungsi: Data Access Layer untuk Master Data SMT

β”œβ”€β”€ Context/              # Database Context
β”œβ”€β”€ Edmx/ # Entity Data Model
β”œβ”€β”€ Properties/ # Assembly Info
β”œβ”€β”€ App.Config # Configuration
└── packages.config # NuGet Packages

Teknologi:

  • Entity Framework 6
  • Oracle.ManagedDataAccess
  • LINQ to Entities

2. KN2018_B2B.Master.SMT.Logic​

Fungsi: Business Logic untuk Master Data SMT

β”œβ”€β”€ Logic/               # Business Logic Classes
β”œβ”€β”€ Properties/ # Assembly Info
β”œβ”€β”€ app.config # Configuration
└── packages.config # NuGet Packages

Komponen Utama:

  • Master data processing
  • Validation rules
  • Business rules implementation

3. KN2018_B2B.Master.SMT.Models​

Fungsi: Data Models untuk Master SMT

β”œβ”€β”€ Models/             # Entity Models
β”œβ”€β”€ ModelsAPPS/ # Oracle APPS Models
β”œβ”€β”€ ViewModel/ # View Models
β”œβ”€β”€ Properties/ # Assembly Info
└── packages.config # NuGet Packages

Jenis Models:

  • Entity Models: Mapping dari database tables
  • View Models: Data transfer objects untuk UI/API
  • APPS Models: Integration models dengan Oracle APPS

4. KN2018_B2B.Transaction.SMT.DataAccess​

Fungsi: Data Access Layer untuk Transaksi SMT

β”œβ”€β”€ Context/            # Database Context
β”œβ”€β”€ Dal/ # Data Access Layer Classes
β”‚ β”œβ”€β”€ DalAutoGrn.cs
β”‚ β”œβ”€β”€ DALChecker.cs
β”‚ β”œβ”€β”€ DALLoading.cs
β”‚ β”œβ”€β”€ DALSecurity.cs
β”‚ β”œβ”€β”€ DalSMTTransaction.cs
β”‚ β”œβ”€β”€ DalSmtTScheduler.cs
β”‚ └── DALUnloading.cs
β”œβ”€β”€ Edmx/ # Entity Data Model
β”œβ”€β”€ SMTOracleADO.cs # Oracle ADO.NET Helper
β”œβ”€β”€ App.Config # Configuration
└── packages.config # NuGet Packages

DAL Classes:

  • DalAutoGrn: Auto Goods Receipt Note processing
  • DALChecker: Checker/security guard operations
  • DALLoading: Loading process data access
  • DALSecurity: Security & authentication
  • DalSMTTransaction: General SMT transactions
  • DalSmtTScheduler: Scheduler operations
  • DALUnloading: Unloading process data access

5. KN2018_B2B.Transaction.SMT.Logic​

Fungsi: Business Logic untuk Transaksi SMT

β”œβ”€β”€ clsEmail/          # Email notification classes
β”œβ”€β”€ Logic/ # Business Logic Classes
β”‚ β”œβ”€β”€ SMT_AutoGRNLogic.cs
β”‚ β”œβ”€β”€ SMT_DashboardLogic.cs
β”‚ β”œβ”€β”€ SMT_ExpeditionLogic.cs
β”‚ β”œβ”€β”€ SMT_FillLogic.cs
β”‚ β”œβ”€β”€ SMT_OrderLogic.cs
β”‚ β”œβ”€β”€ SMT_PlanningOrderLogic.cs
β”‚ β”œβ”€β”€ SMT_ReportingLogic.cs
β”‚ β”œβ”€β”€ SMT_SchedulerLogic.cs
β”‚ β”œβ”€β”€ SMT_SIMONS.cs
β”‚ β”œβ”€β”€ SMT_SPMLogic.cs
β”‚ └── SMT_TimelineLogic.cs
β”œβ”€β”€ Properties/ # Assembly Info
β”œβ”€β”€ App.config # Configuration
└── packages.config # NuGet Packages

Logic Classes:

  • SMT_AutoGRNLogic: Automatic GRN creation & processing
  • SMT_DashboardLogic: Dashboard data aggregation
  • SMT_ExpeditionLogic: Expedition management
  • SMT_FillLogic: Data filling operations
  • SMT_OrderLogic: Order management
  • SMT_PlanningOrderLogic: Order planning & scheduling
  • SMT_ReportingLogic: Report generation
  • SMT_SchedulerLogic: Background scheduler operations
  • SMT_SIMONS: Integration dengan SIMONS system
  • SMT_SPMLogic: SPM (Supplier Performance Management)
  • SMT_TimelineLogic: Timeline tracking & monitoring

6. KN2018_B2B.Transaction.SMT.Models​

Fungsi: Models & ViewModels untuk Transaksi SMT

β”œβ”€β”€ Auto_GRN_Enhancement/     # Auto GRN enhancement models
β”œβ”€β”€ Constant/ # Constants & enumerations
β”œβ”€β”€ Models/ # Entity Models
β”œβ”€β”€ request_vm/ # Request ViewModels
β”œβ”€β”€ response_vm/ # Response ViewModels
β”œβ”€β”€ scheduler/ # Scheduler models
β”œβ”€β”€ smt_enhancement_2023/ # Enhancement 2023 models
β”œβ”€β”€ ViewModels/ # General ViewModels
β”œβ”€β”€ SMTTransactionUtilFunc.cs # Utility functions
β”œβ”€β”€ app.config # Configuration
└── packages.config # NuGet Packages

Jenis Models:

  • Request ViewModels: Input models untuk API
  • Response ViewModels: Output models dari API
  • Entity Models: Database entity mapping
  • Scheduler Models: Background job models
  • Enhancement Models: New features models

7. KN2019_B2B.App.SMT.Api ⭐ (Main API Project)​

Fungsi: RESTful API untuk SIMANTRA

β”œβ”€β”€ ActionFilter/      # Custom action filters
β”œβ”€β”€ App_Data/ # Application data files
β”œβ”€β”€ App_Start/ # Application startup configs
β”‚ β”œβ”€β”€ WebApiConfig.cs
β”‚ β”œβ”€β”€ RouteConfig.cs
β”‚ β”œβ”€β”€ FilterConfig.cs
β”‚ β”œβ”€β”€ BundleConfig.cs
β”‚ └── AutoMapperConfig.cs
β”œβ”€β”€ Areas/ # MVC Areas
β”œβ”€β”€ Common/ # Common utilities
β”œβ”€β”€ Content/ # CSS, images, etc.
β”œβ”€β”€ Controllers/ # API Controllers
β”‚ β”œβ”€β”€ Simantra/ # SMT-specific controllers
β”‚ β”‚ β”œβ”€β”€ SMTAuthController.cs
β”‚ β”‚ β”œβ”€β”€ SMTBaseController.cs
β”‚ β”‚ β”œβ”€β”€ SMTCheckerController.cs
β”‚ β”‚ β”œβ”€β”€ SMTLoadingController.cs
β”‚ β”‚ β”œβ”€β”€ SMTMosTransController.cs
β”‚ β”‚ β”œβ”€β”€ SMTNCBACController.cs
β”‚ β”‚ β”œβ”€β”€ SMTScanRouteController.cs
β”‚ β”‚ β”œβ”€β”€ SMTSecurityController.cs
β”‚ β”‚ β”œβ”€β”€ SMTUnloadingController.cs
β”‚ β”‚ └── SMTV2MasterController.cs
β”‚ β”œβ”€β”€ HomeController.cs
β”‚ β”œβ”€β”€ LogController.cs
β”‚ β”œβ”€β”€ MasterController.cs
β”‚ └── TransactionsController.cs
β”œβ”€β”€ Data/ # Data files
β”œβ”€β”€ DataUpload/ # Upload storage
β”œβ”€β”€ Models/ # API models
β”œβ”€β”€ Providers/ # Custom providers
β”œβ”€β”€ Reports/ # Report templates
β”œβ”€β”€ Results/ # Result files
β”œβ”€β”€ Scripts/ # JavaScript files
β”œβ”€β”€ USER_DATA/ # User uploaded data
β”œβ”€β”€ Views/ # MVC Views
β”œβ”€β”€ Global.asax # Application entry point
β”œβ”€β”€ Startup.cs # OWIN startup
β”œβ”€β”€ Web.config # Web configuration
└── packages.config # NuGet packages

API Controllers (Simantra):

  • SMTAuthController: Authentication & authorization
  • SMTBaseController: Base controller dengan common functions
  • SMTCheckerController: Checker operations (security guard)
  • SMTLoadingController: Loading process API
  • SMTMosTransController: MOS transaction
  • SMTNCBACController: NCBAC operations
  • SMTScanRouteController: Route scanning
  • SMTSecurityController: Security operations
  • SMTUnloadingController: Unloading process API
  • SMTV2MasterController: Master data v2

8. KN2023_B2B.SMTTransporter.Scheduler​

Fungsi: Background Scheduler untuk SMT Transporter

β”œβ”€β”€ SMTTransporter.BlastOrder.Scheduler/
β”‚ β”œβ”€β”€ Program.cs
β”‚ β”œβ”€β”€ App.config
β”‚ β”œβ”€β”€ Properties/
β”‚ └── packages.config
└── SMTTransporter.SyncOracle.Scheduler/
β”œβ”€β”€ Program.cs
β”œβ”€β”€ App.config
β”œβ”€β”€ Properties/
└── packages.config

Scheduler Jobs:

  • BlastOrder.Scheduler: Blast order otomatis ke transporter
  • SyncOracle.Scheduler: Sinkronisasi data dengan Oracle APPS

πŸ’» Teknologi & Framework​

Backend​

  • .NET Framework 4.7.2+
  • ASP.NET Web API 2
  • ASP.NET MVC 5
  • Entity Framework 6
  • LINQ

Database​

  • Oracle Database (Primary)
    • Oracle EBS (APPS)
    • Custom SIMANTRA tables
  • SQL Server (Logging & Monitoring)

Libraries & Packages​

  • AutoMapper: Object-to-object mapping
  • Newtonsoft.Json: JSON serialization
  • Oracle.ManagedDataAccess: Oracle database connectivity
  • Elmah: Error logging
  • BotDetect: Captcha implementation
  • Hangfire: Background job scheduling (if used)

Authentication​

  • OAuth 2.0
  • Bearer Token Authentication
  • Custom Authorization Provider

πŸ—„οΈ Database & Koneksi​

Connection Strings​

Connection strings didefinisikan di Web.config:

<!-- Master & Transaction Entities -->
<add name="MasterEntities"
connectionString="..."
providerName="System.Data.EntityClient" />

<add name="SystemsEntities"
connectionString="..."
providerName="System.Data.EntityClient" />

<add name="TransactionEntities"
connectionString="..."
providerName="System.Data.EntityClient" />

Database Servers​

Development:

  • Service: SHPDEV2
  • Schema: APPS

Production:

  • (Update sesuai environment production)

Entity Framework Context​

  • MasterEntities: Master data context
  • SystemsEntities: System configuration context
  • TransactionEntities: Transaction data context

πŸ”Œ API Endpoints​

Base URL​

  • Development: http://localhost:[port]/api/
  • Production: https://appgw.kalbenutritionals.com/api/simantra/

Authentication Endpoints​

POST   /api/Simantra/SMTAuth/Login
POST /api/Simantra/SMTAuth/Logout
POST /api/Simantra/SMTAuth/RefreshToken
GET /api/Simantra/SMTAuth/ValidateToken

Master Data Endpoints​

GET    /api/Simantra/SMTV2Master/GetMasterData
GET /api/Simantra/SMTV2Master/GetVehicles
GET /api/Simantra/SMTV2Master/GetDrivers
GET /api/Simantra/SMTV2Master/GetRoutes
POST /api/Simantra/SMTV2Master/UpdateMasterData

Loading Endpoints​

GET    /api/Simantra/SMTLoading/GetLoadingList
GET /api/Simantra/SMTLoading/GetLoadingDetail/{id}
POST /api/Simantra/SMTLoading/StartLoading
POST /api/Simantra/SMTLoading/CompleteLoading
POST /api/Simantra/SMTLoading/ScanItem
PUT /api/Simantra/SMTLoading/UpdateLoadingStatus

Unloading Endpoints​

GET    /api/Simantra/SMTUnloading/GetUnloadingList
GET /api/Simantra/SMTUnloading/GetUnloadingDetail/{id}
POST /api/Simantra/SMTUnloading/StartUnloading
POST /api/Simantra/SMTUnloading/CompleteUnloading
POST /api/Simantra/SMTUnloading/ScanItem
PUT /api/Simantra/SMTUnloading/UpdateUnloadingStatus

Checker/Security Endpoints​

GET    /api/Simantra/SMTChecker/GetCheckpointList
POST /api/Simantra/SMTChecker/CheckIn
POST /api/Simantra/SMTChecker/CheckOut
GET /api/Simantra/SMTSecurity/GetSecurityCheckList
POST /api/Simantra/SMTSecurity/ValidateSecurity

Tracking & Monitoring​

GET    /api/Simantra/SMTScanRoute/GetCurrentLocation
POST /api/Simantra/SMTScanRoute/UpdateLocation
GET /api/Simantra/SMTScanRoute/GetRouteHistory

MOS Transaction​

GET    /api/Simantra/SMTMosTrans/GetMOSList
POST /api/Simantra/SMTMosTrans/CreateMOS
PUT /api/Simantra/SMTMosTrans/UpdateMOS
DELETE /api/Simantra/SMTMosTrans/DeleteMOS

βš™οΈ Scheduler & Background Jobs​

1. SMTTransporter.BlastOrder.Scheduler​

Fungsi: Mengirim blast order secara otomatis ke transporter

Proses:

  1. Membaca order yang ready untuk di-blast
  2. Memfilter berdasarkan kriteria blast
  3. Mengirim notifikasi ke transporter
  4. Update status order

Schedule: Setiap 30 menit (configurable)

Configuration (App.config):

<appSettings>
<add key="BlastOrderInterval" value="30" />
<add key="EnableBlastOrder" value="true" />
</appSettings>

2. SMTTransporter.SyncOracle.Scheduler​

Fungsi: Sinkronisasi data dengan Oracle APPS

Proses:

  1. Pull data master dari Oracle APPS
  2. Update local database
  3. Push transaction data ke Oracle
  4. Logging & error handling

Schedule: Setiap 1 jam (configurable)

Configuration (App.config):

<appSettings>
<add key="SyncOracleInterval" value="60" />
<add key="EnableSyncOracle" value="true" />
</appSettings>

Running Scheduler​

Development:

# Run dari Visual Studio atau Console
cd KN2023_B2B.SMTTransporter.Scheduler\SMTTransporter.BlastOrder.Scheduler
dotnet run

Production:

  • Deploy sebagai Windows Service
  • Atau gunakan Task Scheduler
  • Monitoring melalui logs

πŸš€ Deployment​

Prerequisites​

  1. .NET Framework 4.7.2+ installed di server
  2. IIS 8.5+ untuk Web API
  3. Oracle Client installed & configured
  4. SQL Server untuk logging (optional)

Deploy Web API (KN2019_B2B.App.SMT.Api)​

Step 1: Build Project​

# Di Visual Studio
1. Right-click project > Publish
2. Pilih profile atau buat baru
3. Target: File System / IIS / Azure
4. Configuration: Release
5. Klik Publish

Step 2: IIS Configuration​

1. Buka IIS Manager
2. Create New Application Pool
- Name: SMT_API_Pool
- .NET CLR Version: v4.0
- Managed Pipeline: Integrated
3. Create New Website/Application
- Site Name: SIMANTRA_API
- Application Pool: SMT_API_Pool
- Physical Path: [Published folder path]
- Binding: http/*:80 atau https
4. Set Permissions
- App Pool Identity: Read & Execute
- Network Service: Full Control (jika diperlukan)

Step 3: Web.config Settings​

Update connection strings & app settings untuk production:

<appSettings>
<add key="txtImosApi_Url" value="https://appgw.kalbenutritionals.com/api/simantra/" />
<!-- Update production URLs -->
</appSettings>

Deploy Scheduler (KN2023_B2B.SMTTransporter.Scheduler)​

Option 1: Windows Service​

# Install sebagai Windows Service
sc create "SMT Blast Order Scheduler" binPath= "[path]\SMTTransporter.BlastOrder.Scheduler.exe"
sc create "SMT Sync Oracle Scheduler" binPath= "[path]\SMTTransporter.SyncOracle.Scheduler.exe"

# Start services
sc start "SMT Blast Order Scheduler"
sc start "SMT Sync Oracle Scheduler"

Option 2: Task Scheduler​

1. Buka Task Scheduler
2. Create Basic Task
3. Trigger: Schedule (sesuai kebutuhan)
4. Action: Start a Program
5. Program: [path]\SMTTransporter.BlastOrder.Scheduler.exe
6. Ulangi untuk SyncOracle.Scheduler

Logging & Monitoring​

Elmah Error Logging​

// View errors
https://[your-domain]/elmah.axd

// Log custom errors
ErrorSignal.FromCurrentContext().Raise(new Exception("Error message"));

Application Logs​

  • Location: App_Data/Logs/ atau database
  • Review untuk troubleshooting
  • Monitor error patterns

πŸ“ Notes & Best Practices​

Coding Standards​

  1. Follow C# naming conventions
  2. Use async/await untuk I/O operations
  3. Implement proper error handling
  4. Add XML documentation comments
  5. Write unit tests untuk business logic

Security Guidelines​

  1. Validate all user inputs
  2. Use parameterized queries
  3. Implement rate limiting
  4. Enable HTTPS only (production)
  5. Regular security audits
  6. Keep dependencies updated

Performance Tips​

  1. Use .AsNoTracking() untuk read-only queries
  2. Implement caching strategy
  3. Optimize database indexes
  4. Use pagination
  5. Compress responses (gzip)
  6. Minimize API calls

Database Best Practices​

  1. Use transactions untuk multi-step operations
  2. Implement proper indexing
  3. Regular database maintenance
  4. Monitor query performance
  5. Backup strategy

πŸ”„ Version History​

VersionDateDescriptionAuthor
1.02023Initial SIMANTRA implementation-
1.12023Enhancement 2023 features-
2.02024V2 Master Controller & API improvements-
2.12025Current version-

πŸ“„ Appendix​

A. Database Schema Overview​

  • Lihat diagram ER di dokumentasi database terpisah
  • Table naming convention: SMT_[Module]_[Entity]
  • Stored procedures: SP_SMT_[Operation]

B. API Response Format​

{
"success": true,
"message": "Operation successful",
"data": {},
"errors": [],
"timestamp": "2025-01-06T10:30:00Z"
}

D. Useful SQL Queries​

-- Check active orders
SELECT * FROM SMT_ORDER WHERE STATUS = 'ACTIVE';

-- View loading status
SELECT * FROM SMT_LOADING WHERE LOADING_DATE = TRUNC(SYSDATE);

-- Monitor scheduler jobs
SELECT * FROM SMT_SCHEDULER_LOG
WHERE LOG_DATE >= TRUNC(SYSDATE);

πŸ“š Referensi​


Dokumentasi ini dibuat pada: 6 Januari 2026
Untuk Project: KN2018_B2B SIMANTRA Module
Maintenance: Update dokumentasi ini saat ada perubahan signifikan