Service - Ledger: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 60: Line 60:
== Relationships ==
== Relationships ==


=== hasOrganization ===
=== hasChildLedger ===
 
// .......


<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
hasOrganization: {
hasChildLedger: {
storageResources: {
storageResources: {
myGraph: {
myGraph: {
Line 73: Line 71:
}
}
},
},
canChangeToRelTypes: [
{
serviceTag:"Organization",
relationshipTag: "removedOrganization"
},
],
links: [
links: [
{
{
storageResourceTags: ["myGraph"],
storageResourceTags: ["myGraph"],
canDelete: true,
from: {
from: {
objType: {
objType: {
serviceTag: "User",
serviceTag: "Ledger",
objectType: "user"
objectType: "ledger"
},
},
linkType: "one",
linkType: "many",
},
},
to: {
to: {
objType: {
objType: {
serviceTag: "Organization",
serviceTag: "Ledger",
objectType: "organization"
objectType: "ledger"
},
},
linkType: "many"
linkType: "many"
Line 102: Line 95:
</syntaxhighlight>
</syntaxhighlight>


=== removedOrganization ===
* creates ledger heirachy
* validate no infinite link loops
 
=== includesAccount ===


<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
removedOrganization: {
includesAccount: {
storageResources: {
storageResources: {
myGraph: {
myGraph: {
Line 113: Line 109:
}
}
},
},
canChangeToRelTypes: [
{
serviceTag:"Organization",
relationshipTag: "hasOrganization"
},
],
links: [
links: [
{
{
storageResourceTags: ["myGraph"],
storageResourceTags: ["myGraph"],
canDelete: true,
from: {
from: {
objType: {
objType: {
serviceTag: "User",
serviceTag: "Ledger",
objectType: "user"
objectType: "ledger"
},
},
linkType: "one",
linkType: "many",
},
},
to: {
to: {
objType: {
objType: {
serviceTag: "Organization",
serviceTag: "AccountManager",
objectType: "organization"
objectType: "account"
},
},
linkType: "many"
linkType: "many"
Line 142: Line 133:
</syntaxhighlight>
</syntaxhighlight>


* links a user to the organization they manage
* Accounts that are included in a ledger
* does not convey ownership, each organization is a standalone organization that has it's own RBAC
* this allows for simple transfer of ownership of data


= Working documents =
= Working documents =

Revision as of 11:35, 22 February 2026

Overview

A ledger can be used to generate a report such as the general ledger, each ledger specifies which Accounts are it's top level ledger accounts and which rollup in the generated report.

Repository

...

Object Schemas

Additional Information
Per Service Schemas

ledger

{
	objectType: "ledger",
	canDelete: false,
	belongTo: {
		serviceTag: "Organization",
		objectType: "organization"
	},
	addOnDataStructure: [
		{
			type:"versionedData",
			versionedDataLabel: "ledgerDetail",
			storageResourceTag : "myGraph",
			fieldNames: {
				"xxx":{
					type: "string",
					requiredOnCreate: true,
					canUpdate: true,
					userCanUpdate: true,
				},
			}
		},
	],
	storageResources: {
		myGraph: {
			storageType: "graph",
			graphServerTag: "GraphHandler"
		},
		//.. dynamo for flows
    },
    fieldNames: {
		ledgerId: {
			type: "string",
			randomOnCreate: true,
			storageResourceTags: ['myGraph']
		},
    },
    identifiers: [
		{
			type: "identifier",
			fieldName: "ledgerId"
		}
    ]
}

Relationships

hasChildLedger

{
	hasChildLedger: {
		storageResources: {
			myGraph: {
				storageType: "graph",
				graphServerTag: "GraphHandler"			
			}
		},
		links: [
			{
				storageResourceTags: ["myGraph"],
				canDelete: true,
				from: {
					objType: {
						serviceTag: "Ledger",
						objectType: "ledger"
					},
					linkType: "many",
				},
				to: {
					objType: {
						serviceTag: "Ledger",
						objectType: "ledger"
					},
					linkType: "many"
				}
			},
		]
	}
}
  • creates ledger heirachy
  • validate no infinite link loops

includesAccount

{
	includesAccount: {
		storageResources: {
			myGraph: {
				storageType: "graph",
				graphServerTag: "GraphHandler"			
			}
		},
		links: [
			{
				storageResourceTags: ["myGraph"],
				canDelete: true,
				from: {
					objType: {
						serviceTag: "Ledger",
						objectType: "ledger"
					},
					linkType: "many",
				},
				to: {
					objType: {
						serviceTag: "AccountManager",
						objectType: "account"
					},
					linkType: "many"
				}
			},
		]
	}
}
  • Accounts that are included in a ledger

Working documents

Ledger