diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 000000000..868fb3aa4
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,180 @@
+version: 2.1
+orbs:
+ #snyk: snyk/snyk@0.0.8
+ #cypress: cypress-io/cypress@1.23.0
+ aws-s3: circleci/aws-s3@2.0.0
+ eb: circleci/aws-elastic-beanstalk@1.0.2
+ jira: circleci/jira@1.3.1
+jobs:
+ api-deploy:
+ docker:
+ - image: "cimg/base:stable"
+ steps:
+ - checkout
+ - eb/setup
+ - run:
+ command: |
+ eb init imex-online-production-api -r ca-central-1 -p "Node.js 16 running on 64bit Amazon Linux 2"
+ eb status --verbose
+ eb deploy
+ eb status
+ - jira/notify
+
+ hasura-migrate:
+ docker:
+ - image: cimg/node:16.15.0
+ parameters:
+ secret:
+ type: string
+ default: $HASURA_PROD_SECRET
+ working_directory: ~/repo/hasura
+ steps:
+ - checkout:
+ path: ~/repo
+ - run:
+ name: Execute migration
+ command: |
+ npm install hasura-cli -g
+ hasura migrate apply --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
+ hasura metadata apply --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
+ hasura metadata reload --endpoint https://db.imex.online/ --admin-secret << parameters.secret >>
+
+ app-build:
+ docker:
+ - image: cimg/node:16.15.0
+
+ working_directory: ~/repo/client
+
+ steps:
+ - checkout:
+ path: ~/repo
+
+ - restore_cache:
+ name: Restore Yarn Package Cache
+ keys:
+ - yarn-packages-{{ checksum "yarn.lock" }}
+ - run:
+ name: Install Dependencies
+ command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
+ - save_cache:
+ name: Save Yarn Package Cache
+ key: yarn-packages-{{ checksum "yarn.lock" }}
+ paths:
+ - ~/.cache/yarn
+
+ - run: yarn run build
+
+ - aws-s3/sync:
+ from: build
+ to: "s3://imex-online-production/"
+ - jira/notify
+
+ test-hasura-migrate:
+ docker:
+ - image: cimg/node:16.15.0
+ parameters:
+ secret:
+ type: string
+ default: $HASURA_TEST_SECRET
+ working_directory: ~/repo/hasura
+ steps:
+ - checkout:
+ path: ~/repo
+ - run:
+ name: Execute migration
+ command: |
+ npm install hasura-cli -g
+ echo ${HASURA_TEST_SECRET}
+ hasura migrate apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
+ hasura metadata apply --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
+ hasura metadata reload --endpoint https://db.test.bodyshop.app/ --admin-secret << parameters.secret >>
+
+ test-app-build:
+ docker:
+ - image: cimg/node:16.15.0
+
+ working_directory: ~/repo/client
+
+ steps:
+ - checkout:
+ path: ~/repo
+
+ - restore_cache:
+ name: Restore Yarn Package Cache
+ keys:
+ - yarn-packages-{{ checksum "yarn.lock" }}
+ - run:
+ name: Install Dependencies
+ command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
+ - save_cache:
+ name: Save Yarn Package Cache
+ key: yarn-packages-{{ checksum "yarn.lock" }}
+ paths:
+ - ~/.cache/yarn
+
+ - run: yarn run build:test
+
+ - aws-s3/sync:
+ from: build
+ to: "s3://imex-online-test/"
+ - jira/notify
+
+ admin-app-build:
+ docker:
+ - image: cimg/node:16.15.0
+
+ working_directory: ~/repo/admin
+
+ steps:
+ - checkout:
+ path: ~/repo
+
+ - restore_cache:
+ keys:
+ - v1-dependencies-{{ checksum "package.json" }}
+ # fallback to using the latest cache if no exact match is found
+ - v1-dependencies-
+ - run: npm i
+
+ - save_cache:
+ paths:
+ - node_modules
+ - ~/.npm
+ - ~/.cache
+ key: v1-dependencies-{{ checksum "package.json" }}
+
+ - run: npm run build
+
+ - aws-s3/sync:
+ from: build
+ to: "s3://adm.imex.online/"
+
+workflows:
+ deploy_and_build:
+ jobs:
+ - api-deploy:
+ filters:
+ branches:
+ only: master
+ - app-build:
+ filters:
+ branches:
+ only: master
+ - hasura-migrate:
+ secret: ${HASURA_PROD_SECRET}
+ filters:
+ branches:
+ only: master
+ - test-app-build:
+ filters:
+ branches:
+ only: test
+ - test-hasura-migrate:
+ secret: ${HASURA_TEST_SECRET}
+ filters:
+ branches:
+ only: test
+ #- admin-app-build:
+ #filters:
+ #branches:
+ #only: master
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 3fbb87926..0a72a8159 100644
--- a/.gitignore
+++ b/.gitignore
@@ -115,4 +115,6 @@ firebase/.env
logs/oAuthClient-log.log
-.node-persist/**
\ No newline at end of file
+.node-persist/**
+
+/*.env.*
\ No newline at end of file
diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel
index 999c45344..f311d7e00 100644
--- a/bodyshop_translations.babel
+++ b/bodyshop_translations.babel
@@ -40455,6 +40455,27 @@
+
+ cycle_time_analysis
+ false
+
+
+
+
+
+ en-US
+ false
+
+
+ es-MX
+ false
+
+
+ fr-CA
+ false
+
+
+
estimates_written_converted
false
diff --git a/client/.env.development b/client/.env.development
new file mode 100644
index 000000000..900d02994
--- /dev/null
+++ b/client/.env.development
@@ -0,0 +1,13 @@
+REACT_APP_GRAPHQL_ENDPOINT=https://db.dev.bodyshop.app/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.dev.bodyshop.app/v1/graphql
+REACT_APP_GA_CODE=231099835
+REACT_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc","authDomain":"imex-dev.firebaseapp.com","databaseURL":"https://imex-dev.firebaseio.com","projectId":"imex-dev","storageBucket":"imex-dev.appspot.com","messagingSenderId":"759548147434","appId":"1:759548147434:web:e8239868a48ceb36700993","measurementId":"G-K5XRBVVB4S"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/io-test
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/io-test
+REACT_APP_CLOUDINARY_API_KEY=957865933348715
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BG3tzU7L2BXlGZ_3VLK4PNaRceoEXEnmHfxcVbRMF5o5g05ejslhVPki9kBM9cBBT-08Ad9kN3HSpS6JmrWD6h4'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=https://api.imex.online/
+REACT_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
\ No newline at end of file
diff --git a/client/.env.production b/client/.env.production
new file mode 100644
index 000000000..7a58e4591
--- /dev/null
+++ b/client/.env.production
@@ -0,0 +1,13 @@
+REACT_APP_GRAPHQL_ENDPOINT=https://db.imex.online/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.imex.online/v1/graphql
+REACT_APP_GA_CODE=231103507
+REACT_APP_FIREBASE_CONFIG={"apiKey":"AIzaSyDSezy-jGJreo7ulgpLdlpOwAOrgcaEkhU","authDomain":"imex-prod.firebaseapp.com","databaseURL":"https://imex-prod.firebaseio.com","projectId":"imex-prod","storageBucket":"imex-prod.appspot.com","messagingSenderId":"253497221485","appId":"1:253497221485:web:3c81c483b94db84b227a64","measurementId":"G-NTWBKG2L0M"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
+REACT_APP_CLOUDINARY_API_KEY=473322739956866
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BMgZT1NZztW2DsJl8Mg2L04hgY9FzAg6b8fbzgNAfww2VDzH3VE63Ot9EaP_U7KWS2JT-7HPHaw0T_Tw_5vkZc8'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=https://api.imex.online/
+REACT_APP_REPORTS_SERVER_URL=https://reports.imex.online
+REACT_APP_SPLIT_API=et9pjkik6bn67he5evpmpr1agoo7gactphgk
\ No newline at end of file
diff --git a/client/.env.test b/client/.env.test
new file mode 100644
index 000000000..c6403dee6
--- /dev/null
+++ b/client/.env.test
@@ -0,0 +1,14 @@
+REACT_APP_GRAPHQL_ENDPOINT=https://db.test.bodyshop.app/v1/graphql
+REACT_APP_GRAPHQL_ENDPOINT_WS=wss://db.test.bodyshop.app/v1/graphql
+REACT_APP_GA_CODE=231099835
+REACT_APP_FIREBASE_CONFIG={ "apiKey":"AIzaSyBw7_GTy7GtQyfkIRPVrWHEGKfcqeyXw0c", "authDomain":"imex-test.firebaseapp.com", "projectId":"imex-test", "storageBucket":"imex-test.appspot.com", "messagingSenderId":"991923618608", "appId":"1:991923618608:web:633437569cdad78299bef5", "measurementId":"G-TW0XLZEH18"}
+REACT_APP_CLOUDINARY_ENDPOINT_API=https://api.cloudinary.com/v1_1/bodyshop
+REACT_APP_CLOUDINARY_ENDPOINT=https://res.cloudinary.com/bodyshop
+REACT_APP_CLOUDINARY_API_KEY=473322739956866
+REACT_APP_CLOUDINARY_THUMB_TRANSFORMATIONS=c_fill,h_250,w_250
+REACT_APP_FIREBASE_PUBLIC_VAPID_KEY='BN2GcDPjipR5MTEosO5dT4CfQ3cmrdBIsI4juoOQrRijn_5aRiHlwj1mlq0W145mOusx6xynEKl_tvYJhpCc9lo'
+REACT_APP_STRIPE_PUBLIC_KEY=pk_test_51GqB4TJl3nQjrZ0wCQWAxAhlNF8jKe0tipIa6ExBaxwJGitwvFsIZUEua4dUzaMIAuXp4qwYHXx7lgjyQSwP0Pe900vzm38C7g
+REACT_APP_AXIOS_BASE_API_URL=https://api.test.imex.online/
+REACT_APP_REPORTS_SERVER_URL=https://reports3.test.imex.online
+REACT_APP_IS_TEST=true
+REACT_APP_SPLIT_API=ts615lqgnmk84thn72uk18uu5pgce6e0l4rc
\ No newline at end of file
diff --git a/client/src/components/ca-bc-etf-table-modal/ca-bc-etf-table-modal.container.jsx b/client/src/components/ca-bc-etf-table-modal/ca-bc-etf-table-modal.container.jsx
index 8f97a3008..872d2aec3 100644
--- a/client/src/components/ca-bc-etf-table-modal/ca-bc-etf-table-modal.container.jsx
+++ b/client/src/components/ca-bc-etf-table-modal/ca-bc-etf-table-modal.container.jsx
@@ -39,7 +39,13 @@ export function ContractsFindModalContainer({
if (!claim || !shortclaim) return;
const trimmedShortClaim = shortclaim.trim();
// const trimmedClaim = claim.trim();
- claimNumbers.push({ claim: trimmedShortClaim, amount });
+ if (amount.slice(-1) === "-") {
+ }
+
+ claimNumbers.push({
+ claim: trimmedShortClaim,
+ amount: amount.slice(-1) === "-" ? parseFloat(amount) * -1 : amount,
+ });
});
await GenerateDocument(
diff --git a/client/src/components/dms-allocations-summary-ap/dms-allocations-summary-ap.component.jsx b/client/src/components/dms-allocations-summary-ap/dms-allocations-summary-ap.component.jsx
index 21281aa93..1da53e3ba 100644
--- a/client/src/components/dms-allocations-summary-ap/dms-allocations-summary-ap.component.jsx
+++ b/client/src/components/dms-allocations-summary-ap/dms-allocations-summary-ap.component.jsx
@@ -140,7 +140,10 @@ export function DmsAllocationsSummaryAp({ socket, bodyshop, billids, title }) {
>
-