Author:
Fluent Commerce staff
Changed on:
13 Dec 2023
To enable Returns functionality in ServicePoint the following configuration is required:
1mutation CreateSetting($retailerId:Int!) {
2 returnOrchestrated: createSetting(input: {
3 name: "RETURN_ORCHESTRATED",
4 valueType: "BOOLEAN",
5 value: "TRUE",
6 context: "RETAILER",
7 contextId: $retailerId}) {
8 id
9 name
10 }
11 defaultReturnDestinationLocation: createSetting(input: {
12 name: "DEFAULT_RETURN_DESTINATION_LOCATION",
13 valueType: "STRING",
14 value: "{{rejectLocation}}",//needs to be set to the corresponding default return location
15 context: "RETAILER",
16 contextId: $retailerId}) {
17 id
18 name
19 }
20 returnOrderType: createSetting(input: {
21 name: "RETURN_ORDER_TYPE",
22 valueType: "STRING",
23 value: "DEFAULT",
24 context: "RETAILER",
25 contextId: $retailerId}) {
26 id
27 name
28 }
29 returnOrchestratedAccount: createSetting(input: {
30 name: "RETURN_ORCHESTRATED",
31 valueType: "BOOLEAN",
32 value: "TRUE",
33 context: "ACCOUNT",
34 contextId: 0}) {
35 id
36 name
37 }
38}
Language: graphqlschema
Name: Settings (GQL)
Description:
[Warning: empty required content area]1{{fluentApiHost}}/api/v4.1/settings/retailer/{{retailer_id}}/RETURN_REASON
2
3
Language: java
Name: a) RETURN_REASON ENDPOINT
Description:
[Warning: empty required content area]1{
2 ``"setting"``: {
3 ``"key"``: ``"RETURN_REASON"``,
4 ``"type"``: ``"JSON"``,
5 ``"value"``: [
6 ``{
7 ``"label"``: ``"Wrong Size"``,
8 ``"value"``: ``"WRONGSIZE"
9 ``},
10 ``{
11 ``"label"``: ``"Broken"``,
12 ``"value"``: ``"BROKEN"
13 ``}
14 ``]
15 ``}
16}
Language: java
Name: a) RETURN_REASON PAYLOAD
Description:
[Warning: empty required content area]1{{fluentApiHost}}/api/v4.1/settings/retailer/{{retailer_id}}/RETURN_CONDITION
Language: java
Name: b) RETURN_CONDITION ENDPOINT
Description:
[Warning: empty required content area]1{
2 ``"setting"``: {
3 ``"key"``: ``"RETURN_CONDITION"``,
4 ``"type"``: ``"JSON"``,
5 ``"value"``: [
6 ``{
7 ``"label"``: ``"Reusable"``,
8 ``"value"``: ``"GOOD"
9 ``},
10 ``{
11 ``"label"``: ``"Destroy"``,
12 ``"value"``: ``"BROKEN"
13 ``}
14 ``]
15 ``}
16}
Language: java
Name: b) RETURN_CONDITION PAYLOAD
Description:
[Warning: empty required content area]1mutation {
2 ``createRole(input: {name: ``"INSTORE_RETURNS"``,
3 ``permissions: [
4 ``{name: ``"ORDER_VIEW"``},
5 ``{name: ``"CUSTOMER_VIEW"``},
6 ``{name: ``"RETURN_VIEW"``},
7 ``{name: ``"ORDERITEM_VIEW"``},
8 ``{name: ``"PRODUCT_VIEW"``},
9 ``{name: ``"VARIANTPRODUCT_VIEW"``},
10 ``{name: ``"STANDARDPRODUCT_VIEW"``},
11 ``{name: ``"GROUPPRODUCT_VIEW"``},
12 ``{name: ``"CATEGORY_VIEW"``}
13 ``]
14 ``}) {
15 ``name
16 ``permissions {
17 ``name
18 ``}
19 ``}
20}
Language: graphqlschema
Name: a) Role Creation - INSTORE_RETURNS Role Creation
Description:
[Warning: empty required content area]1mutation updateUser(
2 ``$locationUserId:ID!
3 ``$retailerId:ID!
4){
5 ``updateUser(input:{
6 ``id:$locationUserId
7 ``roles:[
8 ``{
9 ``role:{
10 ``name:``"INSTORE_RETURNS"
11 ``}
12 ``contexts:[
13 ``{
14 ``contextId:$retailerId
15 ``contextType:``"RETAILER"
16 ``},
17 ``{
18 ``contextId:$locationUserId,
19 ``contextType:``"AGENT"
20 ``}
21 ``]
22 ``}
23 ``]
24 ``}){
25 ``id
26 ``}
27}
Language: graphqlschema
Name: b) Role Assignment
Description:
[Warning: empty required content area]For Returns there is some cross workflow communication occurring between the Order workflow and the Return Order workflow.
a) Order workflow The Order workflow requires 2 new rulesets (if not already present):
1{
2 "name": "ReturnOrder",
3 "description": "ReturnOrder",
4 "type": "ORDER",
5 "subtype": "CC",
6 "eventType": "NORMAL",
7 "rules": [
8 {
9 "name": "FLUENTRETAIL.base.ValidateReturnQty",
10 "props": null
11 },
12 {
13 "name": "FLUENTRETAIL.base.CreateReturnOrderFromOrder",
14 "props": null
15 },
16 {
17 "name": "FLUENTRETAIL.base.ChangeStateGQL",
18 "props": {
19 "status": "RETURN_CREATED"
20 }
21 }
22 ],
23 "triggers": [
24 {
25 "status": "BOOKED"
26 },
27 {
28 "status": "PICK_PACK"
29 },
30 {
31 "status": "COMPLETE"
32 },
33 {
34 "status": "RETURN_CREATED"
35 }
36 ],
37 "userActions": [
38 {
39 "context": [
40 {
41 "label": "Return",
42 "type": "PRIMARY",
43 "modules": [
44 "adminconsole"
45 ],
46 "confirm": false
47 }
48 ],
49 "attributes": [
50 {
51 "name": "returnItems",
52 "label": "Items",
53 "type": "RETURN_ITEMS",
54 "source": "",
55 "defaultValue": "",
56 "mandatory": false
57 },
58 {
59 "name": "pickupLocation",
60 "label": "Pickup Location",
61 "type": "ADDRESS",
62 "source": "",
63 "defaultValue": "",
64 "mandatory": false
65 },
66 {
67 "name": "lodgedLocation",
68 "label": "Lodged Location",
69 "type": "STRING",
70 "source": "",
71 "defaultValue": "",
72 "mandatory": false
73 },
74 {
75 "name": "type",
76 "label": "Return Type",
77 "type": "STRING",
78 "source": "",
79 "options": {
80 "active": [
81 {
82 "name": "Default",
83 "value": "DEFAULT"
84 }
85 ]
86 },
87 "defaultValue": "",
88 "mandatory": false
89 }
90 ]
91 }
92 ]
93}
Language: json
Name: Return Order
Description:
[Warning: empty required content area]1{
2 ``"name"``: ``"UpdateReturnableQty"``,
3 ``"description"``: ``"UpdateReturnableQty"``,
4 ``"type"``: ``"ORDER"``,
5 ``"eventType"``: ``"NORMAL"``,
6 ``"rules"``: [
7 ``{
8 ``"name"``: ``"FLUENTRETAIL.base.UpdateOrderItemAttribute"``,
9 ``"props"``: ``null
10 ``}
11 ``],
12 ``"triggers"``: [
13 ``{
14 ``"status"``: ``"RETURN_CREATED"
15 ``}
16 ``],
17 ``"userActions"``: []
18}
Language: java
Name: UpdateReturnableQty
Description:
[Warning: empty required content area]b) Return Order workflow (sample)
1{
2 ``"retailerId"``: ``"{{retailer_id}}"``,
3 ``"version"``: ``"1.0"``,
4 ``"entityType"``: ``"RETURN_ORDER"``,
5 ``"entitySubtype"``: ``"DEFAULT"``,
6 ``"description"``: ``"Basic workflow template"``,
7 ``"versionComment"``: ``"First version"``,
8 ``"name"``: ``"RETURN_ORDER::DEFAULT"``,
9 ``"rulesets"``: [
10 ``{
11 ``"name"``: ``"CREATE"``,
12 ``"description"``: ``"Create ReturnOrder"``,
13 ``"type"``: ``"RETURN_ORDER"``,
14 ``"subtype"``: ``"DEFAULT"``,
15 ``"eventType"``: ``"NORMAL"``,
16 ``"rules"``: [
17 ``{
18 ``"name"``: ``"FLUENTRETAIL.base.ChangeStateGQL"``,
19 ``"props"``: {
20 ``"status"``: ``"BOOKED"
21 ``}
22 ``},
23 ``{
24 ``"name"``: ``"FLUENTRETAIL.base.SendEventToReturns"``,
25 ``"props"``: {
26 ``"eventName"``: ``"FulfilReturn"
27 ``}
28 ``}
29 ``],
30 ``"triggers"``: [
31 ``{
32 ``"status"``: ``"CREATED"
33 ``}
34 ``],
35 ``"userActions"``: []
36 ``},
37 ``{
38 ``"name"``: ``"FulfilReturn"``,
39 ``"description"``: ``"ReturnOrder"``,
40 ``"type"``: ``"RETURN_ORDER"``,
41 ``"eventType"``: ``"NORMAL"``,
42 ``"rules"``: [
43 ``{
44 ``"name"``: ``"FLUENTRETAIL.base.CreateReturnFulfilment"``,
45 ``"props"``: ``null
46 ``},
47 ``{
48 ``"name"``: ``"FLUENTRETAIL.base.ChangeStateGQL"``,
49 ``"props"``: {
50 ``"status"``: ``"RETURNED"
51 ``}
52 ``},
53 ``{
54 ``"name"``: ``"FLUENTRETAIL.base.SendEventToUpdateOrderItemAttribute"``,
55 ``"props"``: {
56 ``"eventName"``: ``"UpdateReturnableQty"
57 ``}
58 ``}
59 ``],
60 ``"triggers"``: [
61 ``{
62 ``"status"``: ``"BOOKED"
63 ``},
64 ``{
65 ``"status"``: ``"CREATED"
66 ``}
Language: java
Name: Example
Description:
[Warning: empty required content area]Copyright © 2024 Fluent Retail Pty Ltd (trading as Fluent Commerce). All rights reserved. No materials on this docs.fluentcommerce.com site may be used in any way and/or for any purpose without prior written authorisation from Fluent Commerce. Current customers and partners shall use these materials strictly in accordance with the terms and conditions of their written agreements with Fluent Commerce or its affiliates.