CopyOverview

LedgerSync leverages serialization and deserialization to convert resources into the necessary hash formats the ledger expects. Generally, each resource will have 1 serializer and 1 deserializer.

CopySerializers

Serializers take a Resource and output a hash. For example:

customer = LedgerSync::Ledgers::NetSuite::Customer.new(
  companyName: 'Test Company',
  external_id: 'ext_123'
)
serializer = LedgerSync::Ledgers::NetSuite::Customer::Serializer.new
serializer.serialize(resource: customer)
# Sample output:
# {
#   "companyName" => "Test Company",
#   "externalId" => "ext_123",
#   "email" => nil,
#   "phone" => nil,
#   "firstName" => nil,
#   "lastName" => nil,
#   "subsidiary" => nil
# }
end

CopyDeserializers

Deserializers take a hash and output a Resource. For example:

h = {
  "companyName" => "Test Company",
  "externalId" => "ext_123",
  "email" => nil,
  "id" => "987654321",
  "phone" => nil,
  "firstName" => nil,
  "lastName" => nil,
  "subsidiary" => nil
}

deserializer = LedgerSync::Ledgers::NetSuite::Customer::Deserializer.new
customer = deserializer.deserialize(hash: h, resource: LedgerSync::Ledgers::NetSuite::Customer.new)
customer.ledger_id # => "987654321"
customer.companyName # => "Test Company"

CopyHow to use

Serializers and deserializers are automatically inferred by each operation based on the naming convention. It is possible to create your own serializers. Please see Customization for more.


Related articles: