Skip to content

bahyali/ed-netsuite-leave-management

Repository files navigation

NetSuite Wrapper

A wrapper for speedy development on NetSuite.

Features

  • Model & Query Builder inspired by Eloquent and ActiveRecord.
  • Error Handling & Logging
  • Seamless integration with Suitescript 2.0 (You can just import Suitescript Modules)

Included Examples

Technologies:

Key Concepts:

Getting Started

High level use

  1. Create a new Record on Netsuite
  2. Create a new Model extending BaseModel
  3. Map Column Types
  4. Build Relations

Example

import {LeaveBalance} from '../LeaveBalance/LeaveBalance';
import {BaseModel, ColumnType} from '../../Core/Model/BaseModel';


export class Employee extends BaseModel {
    
    recordType = 'employee';

    typeMap = {
        'jobtitle': ColumnType.STRING,
        'subsidiary': ColumnType.LIST,
        'supervisor': ColumnType.LIST,
        'department': ColumnType.LIST,
    };

    // Default columns
    columns: string[] = ['jobtitle'];

    relations = {
        vacationBalance: (model, year) => {
            // Access SuiteScript Record with ._record
            let idField = model._record.getValue('id');
            return new LeaveBalance()
                .where('emp_name', '==', idField)
                .where('year', '==', year);
        }
    }
    
    // validation
    validation = {
      'jobtitle': ['isNotEmpty'],
      'supervisor': [(field, model) => { return true }]
    }
    

Transpile Project

npm transpile

OR

tsc

Testing

Run tests

npm test

Testing Resources

Please check these repos for more details about these packages