Service - Sell Offer Standard: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
No edit summary
Line 37: Line 37:
</syntaxhighlight>
</syntaxhighlight>


== LogicalResults ==
== SellOfferSettings ==


Stores results for any requests to perform logical searches on sell offer data
Handler specific settings for each SellOffer


<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
{
{
resultId: xxx // eg: filterMainId for a single logical element
sellOfferId
dataId: xxx // one sellofferId
sellOfferPriceId
}
}
</syntaxhighlight>
</syntaxhighlight>


* partition key: resultId
* partition key: sellOfferId
* sort key: dataId
* sort key: (none)
 
== LogicalResultsMain ==
[[Standard LogicalResults Per Service|LogicalResultsMain]]
 
== LogicalResultsData ==
[[Standard LogicalResults Per Service|LogicalResultsData]]


= Graph database =  
= Graph database =  

Revision as of 02:33, 6 February 2022

Overview

Handler service for the standard sell offer type.

Repository

https://bitbucket.org/izara-market-products/izara-market-products-sell-offer-standard/src/master/

DynamoDB tables

Standard Config Table Per Service

Configuration tags

{
	configTag: "SellOfferHandlerServiceNameTag"
	configKey: "SellOfferHandlerServiceNameTag"
	configValue: xxx // this own services ServiceNameTag, eg "SellOfferStandard"
}
{
	configTag: "ProductGraphServiceName"
	configKey: "ProductGraphServiceName"
	configValue: xxx // eg: "ProductGraph"
}
{
	configTag: "SellOfferManagerServiceName"
	configKey: "SellOfferManagerServiceName"
	configValue: xxx // eg: "SellOfferManager"
}

SellOfferSettings

Handler specific settings for each SellOffer

{
	sellOfferId
	sellOfferPriceId
}
  • partition key: sellOfferId
  • sort key: (none)

LogicalResultsMain

LogicalResultsMain

LogicalResultsData

LogicalResultsData

Graph database

Service - Products Graph

Nodes

{
	nodeLabel: "{SellOfferStandardLib.SELL_OFFER_GRAPH_NODE_LABEL}",
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			sellOfferId: {
				identifier: true, //(random uuid)
			},
			productId: {
				immutable: true,
			},
			sellOfferHandlerServiceNameTag: {
				immutable: true,
			},
			currencyId: {
				immutable: true, // matches the sellOfferPlan's currencyId
			},
		},
	}
}

Relationships

{
	relationshipType: "{SellOfferStandardLib.createHasSellOfferGraphRelationshipType()}", //"has_sellOffer"
	schema: {
		elementCanBeRemoved: true,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
{
	relationshipType: "{SellOfferStandardLib.createDisabledSellOfferGraphRelationshipType()}", //"disabled_sellOffer"
	schema: {
		elementCanBeRemoved: true,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
  • SellOffer relationship links the sell offer with it's parent product, the sell offer can be enabled (hasSellOffer) or disabled (disabledSellOffer)
  • when enabling/disabling we remove the old relationship and replace it with the new setting
{
	relationshipType: "{SellOfferPlanLib.createUsesSellOfferPlanGraphRelationshipType()}", // "uses_sellOfferPlan"
	schema: {
		elementCanBeRemoved: true,
		allPropertiesImmutable: true,
		restrictProperties: true,
		properties: {
			originTimestamp: //timestamp the request to create/change this relationship was sent
		},
	}
}
  • links a sell offer to a sell offer plan
  • a sell offer has only one sell offer plan

Basic node schemas

{
	nodeLabel: "{SellOfferStandardLib.SELL_OFFER_GRAPH_NODE_LABEL}",
	schema: {
		identifier: true,
		restrictProperties: true,
		restrictRelationships: true,
		properties: {
			sellOfferId: {
				identifier: true,
			},
			sellOfferHandlerServiceNameTag: {
				immutable: true,
			},
		},
	}
}

Complex Filter requests

// Not sure if moving all to sellOfferManager
{
	filterType: "sellOffer" //unique id is sellOfferId
	type: "group",
	elements:
	[
		// ...
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "sellOfferPlan",
				// see [[Service - Sell Offer Plan|Complex Filter requests]]
			}
		},		
		{
			type: "complexFilter",
			complexFilter: {
				filterType: "sellOfferTermLink",
				// see [[Service - Sell Offer Terms|Complex Filter requests]]
			}
		},		
		...
	]
}

SellOffer currency

  • When creating a sellOffer it's currency will be set to the same as the sellOfferPlan chosen
  • All deliveryMethods added to the sellOfferPlan must be the same currency as the sellOfferPlan, so total price can be calculated accurately
  • paymentMethod does not need to match the sellOfferPlan currency, seller can have sellOfferTerms to explain currency conversion when making payment

Working documents

Sell Offer Standard