Creates ShippingProfileService & ShippingOptionService (#30)

Adds ShippingProfiles:

With Shipping Profiles store operators can group products together and select which shipping options can fulfill the products. The shipping profiles are region agnostic, but for products to be shippable to a given region the shipping profile must have a shipping option associated that ships to this region.

Adds Shipping Options:

Shipping Options represents a way that the customer can have their order shipped. The shipping option has a fulfillment provider associated to determine who fulfills orders with the given shipping method. If a fulfillment provider has multiple ways that they can ship a shipping option for each of the fulfillment provider's shipping options can be created.
This commit is contained in:
Sebastian Rindom
2020-04-07 16:35:27 +02:00
committed by GitHub
parent aff1ec3390
commit ea4185eddd
72 changed files with 3658 additions and 370 deletions

View File

@@ -0,0 +1,12 @@
{
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-instanceof"
],
"presets": ["@babel/preset-env"],
"env": {
"test": {
"plugins": ["@babel/plugin-transform-runtime"]
}
}
}

View File

@@ -0,0 +1,13 @@
/lib
node_modules
.DS_store
.env*
/*.js
!index.js
yarn.lock
/api
/services
/models
/subscribers

View File

@@ -0,0 +1,9 @@
/lib
node_modules
.DS_store
.env*
/*.js
!index.js
yarn.lock

View File

@@ -0,0 +1 @@
// noop

View File

@@ -0,0 +1,33 @@
{
"name": "medusa-fulfillment-manual",
"version": "0.1.27-alpha.0",
"description": "A manual fulfillment provider for Medusa",
"main": "index.js",
"repository": {
"type": "git",
"url": "https://github.com/medusajs/medusa",
"directory": "packages/medusa-fulfillment-manual"
},
"author": "Sebastian Rindom",
"license": "AGPL-3.0-or-later",
"devDependencies": {
"@babel/cli": "^7.7.5",
"@babel/core": "^7.7.5",
"@babel/plugin-proposal-class-properties": "^7.7.4",
"@babel/plugin-transform-runtime": "^7.7.6",
"@babel/preset-env": "^7.7.5",
"client-sessions": "^0.8.0",
"cross-env": "^5.2.1",
"eslint": "^6.8.0"
},
"scripts": {
"build": "babel src --out-dir . --ignore **/__tests__",
"prepare": "cross-env NODE_ENV=production npm run build",
"watch": "babel -w src --out-dir . --ignore **/__tests__"
},
"dependencies": {
"@babel/runtime": "^7.7.6",
"express": "^4.17.1",
"medusa-interfaces": "^0.1.27-alpha.0"
}
}

View File

@@ -0,0 +1,42 @@
import { FulfillmentService } from "medusa-interfaces"
class ManualFulfillmentService extends FulfillmentService {
static identifier = "manual"
constructor() {
super()
}
getFulfillmentOptions() {
return [{
id: "manual-fulfillment"
}]
}
validateFulfillmentData(data, cart) {
return data
}
validateOption(data) {
if (data.id === "manual-fulfillment") {
return true
}
return false
}
canCalculate() {
return false
}
calculatePrice() {
throw Error("Manual Fulfillment service cannot calculatePrice")
}
createOrder() {
// No data is being sent anywhere
return
}
}
export default ManualFulfillmentService