Service - CommerceAccounting Purchase: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
 
(2 intermediate revisions by one other user not shown)
Line 48: Line 48:
{
{
objectType: "comAccPurchase",
objectType: "comAccPurchase",
canDelete: false, addOnDataStructure: [],
canDelete: false,
    addOnDataStructure: [],
storageResources: {
storageResources: {
"dynamo": {
"dynamo": {
Line 131: Line 132:
purchaseId: "",
purchaseId: "",
vendorId: "",
vendorId: "",
    timestamp: 1111111,
purchaseCurrencyId: "",
purchaseCurrencyId: "",
inventoryLocationId: "", // required if have any inventory/?assets
inventoryLocationId: "", // required if have any inventory/?assets

Latest revision as of 11:58, 4 May 2026

Overview

Handle links between purchases and Accounting records.

Repository

...

Object Schemas

Additional Information
Per Service Schemas

comAccPurchaseLink

{
	objectType: "comAccPurchaseLink",
	canDelete: false,
	addOnDataStructure: [],
	storageResources: {
		"dynamo": {
			"storageType": "dynamoDB",
			"tableName": "comAccPurchaseLink",
		}
    },
    fieldNames: {
		// businessId,
		// accountLinkTag // type of link: inputVAT|..
		// accountId
    },
    identifiers: [
		{
			type: "partitionKey",
			fieldName: "businessId",
		},
		{
			type: "sortKey",
			fieldName: "accountLinkTag"
		},
    ]
}
  • sets which Accounting accountId journal entries are added to

comAccPurchase

{
	objectType: "comAccPurchase",
	canDelete: false,	
    addOnDataStructure: [],
	storageResources: {
		"dynamo": {
			"storageType": "dynamoDB",
			"tableName": "comAccPurchase",
		}
    },
    fieldNames: {
		// businessId,
		// purchaseId,
		inputVatJournalId: {
			type: "string",
			optionalOnCreate: true,
			canUpdate: true,
			storageResourceTags: ["dynamo"],
		},

    },
    identifiers: [
		{
			type: "partitionKey",
			fieldName: "businessId",
		},
		{
			type: "sortKey",
			fieldName: "purchaseId"
		},
    ]
}

comAccPurchaseLineItem

{
	objectType: "comAccPurchaseLineItem",
	canDelete: false,
	addOnDataStructure: [],
	storageResources: {
		"dynamo": {
			"storageType": "dynamoDB",
			"tableName": "comAccPurchaseLineItem",
		}
    },
    fieldNames: {
		// purchaseId,
		// purchaseLineItemId,
		// journalId
    },
    identifiers: [
		{
			type: "partitionKey",
			fieldName: "purchaseId"
		},
		{
			type: "sortKey",
			fieldName: "purchaseLineItemId"
		},
    ]
}

Relationships

...

flowSchemas

createPurchase

  • when creating a purchase, iterate purchaseLineItems to decide which journal entries are created
  • accountsPayable accountId comes from Service - CommerceAccounting Vendor
  • each purchaseLineItem checks it's type then finds accountId from coresponding comAcc service

Example request param from Commerce

{
	belongToIdentifiers: {
	  businessId: "xxx"
	},
	purchaseId: "",
	vendorId: "",
    timestamp: 1111111,
	purchaseCurrencyId: "",
	inventoryLocationId: "", // required if have any inventory/?assets
	purchaseLineItems: {
		{purchaseLineItemId}: {
            inventoryId: "",
            inventoryTemplateId: "",
			type: "", // inventory|expense|services|freight|salesTax|vatTax|other
			subType: "", // inventory: goods|intangibleGoods|rawMaterial|asset|intangibleAsset, expense: pointInTime|overTime, services: pointInTime|overTime, freight: standard, order: standard
			lineItemQuantity: 1,
			lineItemUnitPrice: "2.00"
		},
		//...
	}
}

updatePurchase

  • make adjustment to journal entries when purchaseLineItemId changes
  • handle removal of purchase/journal entries, or creation of new entries
  • basically re-calculate all entries and check against existing
  • each journalId must check Accounting that it's period/s are not locked, if locked return error, cannot make update

Working documents

CommerceAccounting Purchase