Browse Source

feat(server): Add currencyCode to Channel entity

Relates to #57
Michael Bromley 7 years ago
parent
commit
3977e4a461

File diff suppressed because it is too large
+ 0 - 0
schema.json


+ 2 - 0
server/mock-data/mock-data.service.ts

@@ -35,6 +35,7 @@ import {
     CreateShippingMethod,
     CreateTaxRate,
     CreateZone,
+    CurrencyCode,
     GenerateProductVariants,
     GetChannels,
     LanguageCode,
@@ -73,6 +74,7 @@ export class MockDataService {
                         code,
                         pricesIncludeTax: true,
                         token: `${code}_token`,
+                        currencyCode: CurrencyCode.USD,
                         defaultLanguageCode: LanguageCode.en,
                     },
                 },

+ 317 - 0
server/src/common/types/currency-code.graphql

@@ -0,0 +1,317 @@
+"ISO 4217 currency code"
+enum CurrencyCode {
+    "United Arab Emirates dirham"
+    AED
+    "Afghan afghani"
+    AFN
+    "Albanian lek"
+    ALL
+    "Armenian dram"
+    AMD
+    "Netherlands Antillean guilder"
+    ANG
+    "Angolan kwanza"
+    AOA
+    "Argentine peso"
+    ARS
+    "Australian dollar"
+    AUD
+    "Aruban florin"
+    AWG
+    "Azerbaijani manat"
+    AZN
+    "Bosnia and Herzegovina convertible mark"
+    BAM
+    "Barbados dollar"
+    BBD
+    "Bangladeshi taka"
+    BDT
+    "Bulgarian lev"
+    BGN
+    "Bahraini dinar"
+    BHD
+    "Burundian franc"
+    BIF
+    "Bermudian dollar"
+    BMD
+    "Brunei dollar"
+    BND
+    "Boliviano"
+    BOB
+    "Brazilian real"
+    BRL
+    "Bahamian dollar"
+    BSD
+    "Bhutanese ngultrum"
+    BTN
+    "Botswana pula"
+    BWP
+    "Belarusian ruble"
+    BYN
+    "Belize dollar"
+    BZD
+    "Canadian dollar"
+    CAD
+    "Congolese franc"
+    CHE
+    "Swiss franc"
+    CHW
+    "Chilean peso"
+    CLP
+    "Renminbi (Chinese) yuan"
+    CNY
+    "Colombian peso"
+    COP
+    "Costa Rican colon"
+    CRC
+    "Cuban convertible peso"
+    CUC
+    "Cuban peso"
+    CUP
+    "Cape Verde escudo"
+    CVE
+    "Czech koruna"
+    CZK
+    "Djiboutian franc"
+    DJF
+    "Danish krone"
+    DKK
+    "Dominican peso"
+    DOP
+    "Algerian dinar"
+    DZD
+    "Egyptian pound"
+    EGP
+    "Eritrean nakfa"
+    ERN
+    "Ethiopian birr"
+    ETB
+    "Euro"
+    EUR
+    "Fiji dollar"
+    FJD
+    "Falkland Islands pound"
+    FKP
+    "Pound sterling"
+    GBP
+    "Georgian lari"
+    GEL
+    "Ghanaian cedi"
+    GHS
+    "Gibraltar pound"
+    GIP
+    "Gambian dalasi"
+    GMD
+    "Guinean franc"
+    GNF
+    "Guatemalan quetzal"
+    GTQ
+    "Guyanese dollar"
+    GYD
+    "Hong Kong dollar"
+    HKD
+    "Honduran lempira"
+    HNL
+    "Croatian kuna"
+    HRK
+    "Haitian gourde"
+    HTG
+    "Hungarian forint"
+    HUF
+    "Indonesian rupiah"
+    IDR
+    "Israeli new shekel"
+    ILS
+    "Indian rupee"
+    INR
+    "Iraqi dinar"
+    IQD
+    "Iranian rial"
+    IRR
+    "Icelandic króna"
+    ISK
+    "Jamaican dollar"
+    JMD
+    "Jordanian dinar"
+    JOD
+    "Japanese yen"
+    JPY
+    "Kenyan shilling"
+    KES
+    "Kyrgyzstani som"
+    KGS
+    "Cambodian riel"
+    KHR
+    "Comoro franc"
+    KMF
+    "North Korean won"
+    KPW
+    "South Korean won"
+    KRW
+    "Kuwaiti dinar"
+    KWD
+    "Cayman Islands dollar"
+    KYD
+    "Kazakhstani tenge"
+    KZT
+    "Lao kip"
+    LAK
+    "Lebanese pound"
+    LBP
+    "Sri Lankan rupee"
+    LKR
+    "Liberian dollar"
+    LRD
+    "Lesotho loti"
+    LSL
+    "Libyan dinar"
+    LYD
+    "Moroccan dirham"
+    MAD
+    "Moldovan leu"
+    MDL
+    "Malagasy ariary"
+    MGA
+    "Macedonian denar"
+    MKD
+    "Myanmar kyat"
+    MMK
+    "Mongolian tögrög"
+    MNT
+    "Macanese pataca"
+    MOP
+    "Mauritanian ouguiya"
+    MRU
+    "Mauritian rupee"
+    MUR
+    "Maldivian rufiyaa"
+    MVR
+    "Malawian kwacha"
+    MWK
+    "Mexican peso"
+    MXN
+    "Malaysian ringgit"
+    MYR
+    "Mozambican metical"
+    MZN
+    "Namibian dollar"
+    NAD
+    "Nigerian naira"
+    NGN
+    "Nicaraguan córdoba"
+    NIO
+    "Norwegian krone"
+    NOK
+    "Nepalese rupee"
+    NPR
+    "New Zealand dollar"
+    NZD
+    "Omani rial"
+    OMR
+    "Panamanian balboa"
+    PAB
+    "Peruvian sol"
+    PEN
+    "Papua New Guinean kina"
+    PGK
+    "Philippine peso"
+    PHP
+    "Pakistani rupee"
+    PKR
+    "Polish złoty"
+    PLN
+    "Paraguayan guaraní"
+    PYG
+    "Qatari riyal"
+    QAR
+    "Romanian leu"
+    RON
+    "Serbian dinar"
+    RSD
+    "Russian ruble"
+    RUB
+    "Rwandan franc"
+    RWF
+    "Saudi riyal"
+    SAR
+    "Solomon Islands dollar"
+    SBD
+    "Seychelles rupee"
+    SCR
+    "Sudanese pound"
+    SDG
+    "Swedish krona/kronor"
+    SEK
+    "Singapore dollar"
+    SGD
+    "Saint Helena pound"
+    SHP
+    "Sierra Leonean leone"
+    SLL
+    "Somali shilling"
+    SOS
+    "Surinamese dollar"
+    SRD
+    "South Sudanese pound"
+    SSP
+    "São Tomé and Príncipe dobra"
+    STN
+    "Salvadoran colón"
+    SVC
+    "Syrian pound"
+    SYP
+    "Swazi lilangeni"
+    SZL
+    "Thai baht"
+    THB
+    "Tajikistani somoni"
+    TJS
+    "Turkmenistan manat"
+    TMT
+    "Tunisian dinar"
+    TND
+    "Tongan paʻanga"
+    TOP
+    "Turkish lira"
+    TRY
+    "Trinidad and Tobago dollar"
+    TTD
+    "New Taiwan dollar"
+    TWD
+    "Tanzanian shilling"
+    TZS
+    "Ukrainian hryvnia"
+    UAH
+    "Ugandan shilling"
+    UGX
+    "United States dollar"
+    USD
+    "Uruguayan peso"
+    UYU
+    "Uzbekistan som"
+    UZS
+    "Venezuelan bolívar soberano"
+    VES
+    "Vietnamese đồng"
+    VND
+    "Vanuatu vatu"
+    VUV
+    "Samoan tala"
+    WST
+    "CFA franc BEAC"
+    XAF
+    "East Caribbean dollar"
+    XCD
+    "CFA franc BCEAO"
+    XOF
+    "CFP franc (franc Pacifique)"
+    XPF
+    "Yemeni rial"
+    YER
+    "South African rand"
+    ZAR
+    "Zambian kwacha"
+    ZMW
+    "Zimbabwean dollar"
+    ZWL
+}

+ 4 - 1
server/src/entity/channel/channel.entity.ts

@@ -1,6 +1,6 @@
 import { Column, Entity, ManyToOne } from 'typeorm';
 
-import { LanguageCode } from '../../../../shared/generated-types';
+import { CurrencyCode, LanguageCode } from '../../../../shared/generated-types';
 import { DeepPartial } from '../../../../shared/shared-types';
 import { VendureEntity } from '../base/base.entity';
 import { Zone } from '../zone/zone.entity';
@@ -28,6 +28,9 @@ export class Channel extends VendureEntity {
     @ManyToOne(type => Zone)
     defaultShippingZone: Zone;
 
+    @Column('varchar')
+    currencyCode: CurrencyCode;
+
     @Column() pricesIncludeTax: boolean;
 
     private generateToken(): string {

+ 3 - 0
server/src/entity/channel/channel.graphql

@@ -7,6 +7,7 @@ type Channel implements Node {
     defaultTaxZone: Zone
     defaultShippingZone: Zone
     defaultLanguageCode: LanguageCode!
+    currencyCode: CurrencyCode!
     pricesIncludeTax: Boolean!
 }
 
@@ -15,6 +16,7 @@ input CreateChannelInput {
     token: String!
     defaultLanguageCode: LanguageCode!
     pricesIncludeTax: Boolean!
+    currencyCode: CurrencyCode!
     defaultTaxZoneId: ID
     defaultShippingZoneId: ID
 }
@@ -25,6 +27,7 @@ input UpdateChannelInput {
     token: String
     defaultLanguageCode: LanguageCode
     pricesIncludeTax: Boolean
+    currencyCode: CurrencyCode
     defaultTaxZoneId: ID
     defaultShippingZoneId: ID
 }

+ 2 - 1
server/src/service/services/channel.service.ts

@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
-import { CreateChannelInput, UpdateChannelInput } from '../../../../shared/generated-types';
+import { CreateChannelInput, CurrencyCode, UpdateChannelInput } from '../../../../shared/generated-types';
 import { DEFAULT_CHANNEL_CODE } from '../../../../shared/shared-constants';
 import { ID } from '../../../../shared/shared-types';
 import { unique } from '../../../../shared/unique';
@@ -136,6 +136,7 @@ export class ChannelService {
                 code: DEFAULT_CHANNEL_CODE,
                 defaultLanguageCode: DEFAULT_LANGUAGE_CODE,
                 pricesIncludeTax: false,
+                currencyCode: CurrencyCode.USD,
                 token: defaultChannelToken,
             });
             await this.connection.manager.save(newDefaultChannel);

+ 178 - 0
shared/generated-types.ts

@@ -140,6 +140,7 @@ export interface Channel extends Node {
     defaultTaxZone?: Zone | null;
     defaultShippingZone?: Zone | null;
     defaultLanguageCode: LanguageCode;
+    currencyCode: CurrencyCode;
     pricesIncludeTax: boolean;
 }
 
@@ -357,6 +358,7 @@ export interface ProductVariant extends Node {
     featuredAsset?: Asset | null;
     assets: Asset[];
     price: number;
+    currencyCode: CurrencyCode;
     priceIncludesTax: boolean;
     priceWithTax: number;
     taxRateApplied: TaxRate;
@@ -1078,6 +1080,7 @@ export interface CreateChannelInput {
     token: string;
     defaultLanguageCode: LanguageCode;
     pricesIncludeTax: boolean;
+    currencyCode: CurrencyCode;
     defaultTaxZoneId?: string | null;
     defaultShippingZoneId?: string | null;
 }
@@ -1088,6 +1091,7 @@ export interface UpdateChannelInput {
     token?: string | null;
     defaultLanguageCode?: LanguageCode | null;
     pricesIncludeTax?: boolean | null;
+    currencyCode?: CurrencyCode | null;
     defaultTaxZoneId?: string | null;
     defaultShippingZoneId?: string | null;
 }
@@ -1989,6 +1993,166 @@ export enum LanguageCode {
     zu = 'zu',
 }
 
+export enum CurrencyCode {
+    AED = 'AED',
+    AFN = 'AFN',
+    ALL = 'ALL',
+    AMD = 'AMD',
+    ANG = 'ANG',
+    AOA = 'AOA',
+    ARS = 'ARS',
+    AUD = 'AUD',
+    AWG = 'AWG',
+    AZN = 'AZN',
+    BAM = 'BAM',
+    BBD = 'BBD',
+    BDT = 'BDT',
+    BGN = 'BGN',
+    BHD = 'BHD',
+    BIF = 'BIF',
+    BMD = 'BMD',
+    BND = 'BND',
+    BOB = 'BOB',
+    BRL = 'BRL',
+    BSD = 'BSD',
+    BTN = 'BTN',
+    BWP = 'BWP',
+    BYN = 'BYN',
+    BZD = 'BZD',
+    CAD = 'CAD',
+    CHE = 'CHE',
+    CHW = 'CHW',
+    CLP = 'CLP',
+    CNY = 'CNY',
+    COP = 'COP',
+    CRC = 'CRC',
+    CUC = 'CUC',
+    CUP = 'CUP',
+    CVE = 'CVE',
+    CZK = 'CZK',
+    DJF = 'DJF',
+    DKK = 'DKK',
+    DOP = 'DOP',
+    DZD = 'DZD',
+    EGP = 'EGP',
+    ERN = 'ERN',
+    ETB = 'ETB',
+    EUR = 'EUR',
+    FJD = 'FJD',
+    FKP = 'FKP',
+    GBP = 'GBP',
+    GEL = 'GEL',
+    GHS = 'GHS',
+    GIP = 'GIP',
+    GMD = 'GMD',
+    GNF = 'GNF',
+    GTQ = 'GTQ',
+    GYD = 'GYD',
+    HKD = 'HKD',
+    HNL = 'HNL',
+    HRK = 'HRK',
+    HTG = 'HTG',
+    HUF = 'HUF',
+    IDR = 'IDR',
+    ILS = 'ILS',
+    INR = 'INR',
+    IQD = 'IQD',
+    IRR = 'IRR',
+    ISK = 'ISK',
+    JMD = 'JMD',
+    JOD = 'JOD',
+    JPY = 'JPY',
+    KES = 'KES',
+    KGS = 'KGS',
+    KHR = 'KHR',
+    KMF = 'KMF',
+    KPW = 'KPW',
+    KRW = 'KRW',
+    KWD = 'KWD',
+    KYD = 'KYD',
+    KZT = 'KZT',
+    LAK = 'LAK',
+    LBP = 'LBP',
+    LKR = 'LKR',
+    LRD = 'LRD',
+    LSL = 'LSL',
+    LYD = 'LYD',
+    MAD = 'MAD',
+    MDL = 'MDL',
+    MGA = 'MGA',
+    MKD = 'MKD',
+    MMK = 'MMK',
+    MNT = 'MNT',
+    MOP = 'MOP',
+    MRU = 'MRU',
+    MUR = 'MUR',
+    MVR = 'MVR',
+    MWK = 'MWK',
+    MXN = 'MXN',
+    MYR = 'MYR',
+    MZN = 'MZN',
+    NAD = 'NAD',
+    NGN = 'NGN',
+    NIO = 'NIO',
+    NOK = 'NOK',
+    NPR = 'NPR',
+    NZD = 'NZD',
+    OMR = 'OMR',
+    PAB = 'PAB',
+    PEN = 'PEN',
+    PGK = 'PGK',
+    PHP = 'PHP',
+    PKR = 'PKR',
+    PLN = 'PLN',
+    PYG = 'PYG',
+    QAR = 'QAR',
+    RON = 'RON',
+    RSD = 'RSD',
+    RUB = 'RUB',
+    RWF = 'RWF',
+    SAR = 'SAR',
+    SBD = 'SBD',
+    SCR = 'SCR',
+    SDG = 'SDG',
+    SEK = 'SEK',
+    SGD = 'SGD',
+    SHP = 'SHP',
+    SLL = 'SLL',
+    SOS = 'SOS',
+    SRD = 'SRD',
+    SSP = 'SSP',
+    STN = 'STN',
+    SVC = 'SVC',
+    SYP = 'SYP',
+    SZL = 'SZL',
+    THB = 'THB',
+    TJS = 'TJS',
+    TMT = 'TMT',
+    TND = 'TND',
+    TOP = 'TOP',
+    TRY = 'TRY',
+    TTD = 'TTD',
+    TWD = 'TWD',
+    TZS = 'TZS',
+    UAH = 'UAH',
+    UGX = 'UGX',
+    USD = 'USD',
+    UYU = 'UYU',
+    UZS = 'UZS',
+    VES = 'VES',
+    VND = 'VND',
+    VUV = 'VUV',
+    WST = 'WST',
+    XAF = 'XAF',
+    XCD = 'XCD',
+    XOF = 'XOF',
+    XPF = 'XPF',
+    YER = 'YER',
+    ZAR = 'ZAR',
+    ZMW = 'ZMW',
+    ZWL = 'ZWL',
+}
+
 export enum AssetType {
     IMAGE = 'IMAGE',
     VIDEO = 'VIDEO',
@@ -2590,6 +2754,7 @@ export namespace ChannelResolvers {
         defaultTaxZone?: DefaultTaxZoneResolver<Zone | null, any, Context>;
         defaultShippingZone?: DefaultShippingZoneResolver<Zone | null, any, Context>;
         defaultLanguageCode?: DefaultLanguageCodeResolver<LanguageCode, any, Context>;
+        currencyCode?: CurrencyCodeResolver<CurrencyCode, any, Context>;
         pricesIncludeTax?: PricesIncludeTaxResolver<boolean, any, Context>;
     }
 
@@ -2613,6 +2778,11 @@ export namespace ChannelResolvers {
         Parent,
         Context
     >;
+    export type CurrencyCodeResolver<R = CurrencyCode, Parent = any, Context = any> = Resolver<
+        R,
+        Parent,
+        Context
+    >;
     export type PricesIncludeTaxResolver<R = boolean, Parent = any, Context = any> = Resolver<
         R,
         Parent,
@@ -3259,6 +3429,7 @@ export namespace ProductVariantResolvers {
         featuredAsset?: FeaturedAssetResolver<Asset | null, any, Context>;
         assets?: AssetsResolver<Asset[], any, Context>;
         price?: PriceResolver<number, any, Context>;
+        currencyCode?: CurrencyCodeResolver<CurrencyCode, any, Context>;
         priceIncludesTax?: PriceIncludesTaxResolver<boolean, any, Context>;
         priceWithTax?: PriceWithTaxResolver<number, any, Context>;
         taxRateApplied?: TaxRateAppliedResolver<TaxRate, any, Context>;
@@ -3286,6 +3457,11 @@ export namespace ProductVariantResolvers {
     >;
     export type AssetsResolver<R = Asset[], Parent = any, Context = any> = Resolver<R, Parent, Context>;
     export type PriceResolver<R = number, Parent = any, Context = any> = Resolver<R, Parent, Context>;
+    export type CurrencyCodeResolver<R = CurrencyCode, Parent = any, Context = any> = Resolver<
+        R,
+        Parent,
+        Context
+    >;
     export type PriceIncludesTaxResolver<R = boolean, Parent = any, Context = any> = Resolver<
         R,
         Parent,
@@ -6486,6 +6662,7 @@ export namespace ProductVariant {
         languageCode: LanguageCode;
         name: string;
         price: number;
+        currencyCode: CurrencyCode;
         priceIncludesTax: boolean;
         priceWithTax: number;
         taxRateApplied: TaxRateApplied;
@@ -6784,6 +6961,7 @@ export namespace Channel {
         code: string;
         token: string;
         pricesIncludeTax: boolean;
+        currencyCode: CurrencyCode;
         defaultLanguageCode: LanguageCode;
         defaultShippingZone?: DefaultShippingZone | null;
         defaultTaxZone?: DefaultTaxZone | null;

Some files were not shown because too many files changed in this diff