Merged in release/2023-02-17 (pull request #678)
Release/2023 02 17 Approved-by: Patrick Fic
This commit is contained in:
13
README.MD
13
README.MD
@@ -1,14 +1,3 @@
|
|||||||
Yarn Dependency Management:
|
|
||||||
To force upgrades for some packages:
|
|
||||||
yarn upgrade-interactive --latest
|
|
||||||
|
|
||||||
To Start Hasura CLI:
|
|
||||||
npx hasura console
|
|
||||||
|
|
||||||
Migrating to Staging:
|
|
||||||
npx hasura migrate apply --endpoint https://db.imex.online/ --admin-secret 'Production-ImEXOnline!@#'
|
|
||||||
npx hasura migrate apply --endpoint https://db.test.bodyshop.app/ --admin-secret 'Test-ImEXOnlineBySnaptSoftware!'
|
|
||||||
|
|
||||||
NGROK TEsting:
|
NGROK TEsting:
|
||||||
./ngrok.exe http http://localhost:4000 -host-header="localhost:4000"
|
./ngrok.exe http http://localhost:4000 -host-header="localhost:4000"
|
||||||
|
|
||||||
@@ -21,4 +10,4 @@ hasura migrate apply --version "1620771761757" --skip-execution --endpoint https
|
|||||||
hasura migrate status --endpoint https://db.imex.online/ --admin-secret 'Production-ImEXOnline!@#'
|
hasura migrate status --endpoint https://db.imex.online/ --admin-secret 'Production-ImEXOnline!@#'
|
||||||
|
|
||||||
Generate the license file:
|
Generate the license file:
|
||||||
$ generate-license-file --input package.json --output third-party-licenses.txt --overwrite
|
$ generate-license-file --input package.json --output third-party-licenses.txt --overwrite
|
||||||
@@ -44,7 +44,7 @@ function JobLinesUpsertModalContainer({
|
|||||||
...UndefinedToNull({
|
...UndefinedToNull({
|
||||||
...values,
|
...values,
|
||||||
prt_dsmk_m: Dinero({
|
prt_dsmk_m: Dinero({
|
||||||
amount: Math.round(values.act_price * 100),
|
amount: Math.round((values.act_price || 0) * 100),
|
||||||
})
|
})
|
||||||
.percentage(Math.abs(values.prt_dsmk_p || 0))
|
.percentage(Math.abs(values.prt_dsmk_p || 0))
|
||||||
.multiply(values.prt_dsmk_p >= 0 ? 1 : -1)
|
.multiply(values.prt_dsmk_p >= 0 ? 1 : -1)
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ export function JobsDetailGeneral({ bodyshop, jobRO, job, form }) {
|
|||||||
</FormRow>
|
</FormRow>
|
||||||
<FormRow header={t("jobs.forms.other")}>
|
<FormRow header={t("jobs.forms.other")}>
|
||||||
<Form.Item label={t("jobs.fields.category")} name="category">
|
<Form.Item label={t("jobs.fields.category")} name="category">
|
||||||
<Select disabled={jobRO}>
|
<Select disabled={jobRO} allowClear>
|
||||||
{bodyshop.md_categories.map((s) => (
|
{bodyshop.md_categories.map((s) => (
|
||||||
<Select.Option key={s} value={s}>
|
<Select.Option key={s} value={s}>
|
||||||
{s}
|
{s}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ import JobAuditTrail from "../../components/job-audit-trail/job-audit-trail.comp
|
|||||||
import AuditTrailMapping from "../../utils/AuditTrailMappings";
|
import AuditTrailMapping from "../../utils/AuditTrailMappings";
|
||||||
import { insertAuditTrail } from "../../redux/application/application.actions";
|
import { insertAuditTrail } from "../../redux/application/application.actions";
|
||||||
import JobsDocumentsLocalGallery from "../../components/jobs-documents-local-gallery/jobs-documents-local-gallery.container";
|
import JobsDocumentsLocalGallery from "../../components/jobs-documents-local-gallery/jobs-documents-local-gallery.container";
|
||||||
|
import UndefinedToNull from "../../utils/undefinedtonull";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
@@ -96,7 +97,7 @@ export function JobsDetailPage({
|
|||||||
variables: {
|
variables: {
|
||||||
jobId: job.id,
|
jobId: job.id,
|
||||||
job: {
|
job: {
|
||||||
...values,
|
...UndefinedToNull(values, ["alt_transport", "category", "referral_source"]),
|
||||||
parts_tax_rates: {
|
parts_tax_rates: {
|
||||||
...job.parts_tax_rates,
|
...job.parts_tax_rates,
|
||||||
...values.parts_tax_rates,
|
...values.parts_tax_rates,
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
export default function UndefinedToNull(obj) {
|
export default function UndefinedToNull(obj, keys) {
|
||||||
Object.keys(obj).forEach((key) => {
|
Object.keys(obj).forEach((key) => {
|
||||||
|
if (keys && keys.indexOf(key) >= 0) {
|
||||||
|
if (obj[key] === undefined) obj[key] = null;
|
||||||
|
} else {
|
||||||
if (obj[key] === undefined) obj[key] = null;
|
if (obj[key] === undefined) obj[key] = null;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|||||||
11
hasura/migrations/1676337846761_run_sql_migration/down.sql
Normal file
11
hasura/migrations/1676337846761_run_sql_migration/down.sql
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
-- Could not auto-generate a down migration.
|
||||||
|
-- Please write an appropriate down migration for the SQL below:
|
||||||
|
-- CREATE INDEX idx_phonebook_firstname ON public.phonebook USING gin (firstname public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_phonebook_lastname ON public.phonebook USING gin (lastname public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_phonebook_company ON public.phonebook USING gin (company public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_phonebook_address1 ON public.phonebook USING gin (address1 public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_phonebook_phone1 ON public.phonebook USING gin (phone1 public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_phonebook_phone2 ON public.phonebook USING gin (phone2 public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_phonebook_email ON public.phonebook USING gin (email public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_phonebook_category ON public.phonebook USING gin (category public.gin_trgm_ops);
|
||||||
|
-- CREATE INDEX idx_vendor_name ON public.vendors USING gin (name public.gin_trgm_ops);
|
||||||
9
hasura/migrations/1676337846761_run_sql_migration/up.sql
Normal file
9
hasura/migrations/1676337846761_run_sql_migration/up.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
CREATE INDEX idx_phonebook_firstname ON public.phonebook USING gin (firstname public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_phonebook_lastname ON public.phonebook USING gin (lastname public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_phonebook_company ON public.phonebook USING gin (company public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_phonebook_address1 ON public.phonebook USING gin (address1 public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_phonebook_phone1 ON public.phonebook USING gin (phone1 public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_phonebook_phone2 ON public.phonebook USING gin (phone2 public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_phonebook_email ON public.phonebook USING gin (email public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_phonebook_category ON public.phonebook USING gin (category public.gin_trgm_ops);
|
||||||
|
CREATE INDEX idx_vendor_name ON public.vendors USING gin (name public.gin_trgm_ops);
|
||||||
@@ -28,7 +28,7 @@ exports.sendServerEmail = async function ({ subject, text }) {
|
|||||||
transporter.sendMail(
|
transporter.sendMail(
|
||||||
{
|
{
|
||||||
from: `ImEX Online API - ${process.env.NODE_ENV} <noreply@imex.online>`,
|
from: `ImEX Online API - ${process.env.NODE_ENV} <noreply@imex.online>`,
|
||||||
to: ["patrick@snapt.ca"],
|
to: ["patrick@imexsystems.ca"],
|
||||||
subject: subject,
|
subject: subject,
|
||||||
text: text,
|
text: text,
|
||||||
ses: {
|
ses: {
|
||||||
|
|||||||
Reference in New Issue
Block a user