IO-233 CDK Shop Config
This commit is contained in:
@@ -3575,6 +3575,53 @@
|
|||||||
</concept_node>
|
</concept_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>dms</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>dms_acctnumber</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>dms_wip_acctnumber</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>email</name>
|
<name>email</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -7458,6 +7505,53 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>dms</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>cdk_dealerid</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>title</name>
|
||||||
|
<definition_loaded>false</definition_loaded>
|
||||||
|
<description></description>
|
||||||
|
<comment></comment>
|
||||||
|
<default_text></default_text>
|
||||||
|
<translations>
|
||||||
|
<translation>
|
||||||
|
<language>en-US</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>es-MX</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
<translation>
|
||||||
|
<language>fr-CA</language>
|
||||||
|
<approved>false</approved>
|
||||||
|
</translation>
|
||||||
|
</translations>
|
||||||
|
</concept_node>
|
||||||
|
</children>
|
||||||
|
</folder_node>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>employees</name>
|
<name>employees</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export default function JobAdminDeleteIntake({ job }) {
|
|||||||
mutation DELETE_DELIVERY($jobId: uuid!) {
|
mutation DELETE_DELIVERY($jobId: uuid!) {
|
||||||
update_jobs_by_pk(
|
update_jobs_by_pk(
|
||||||
pk_columns: { id: $jobId }
|
pk_columns: { id: $jobId }
|
||||||
_set: { deliverychecklist: null }
|
_set: { deliverchecklist: null }
|
||||||
) {
|
) {
|
||||||
id
|
id
|
||||||
deliverychecklist
|
deliverychecklist
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
import { Button, Card, Tabs } from "antd";
|
import { Button, Card, Tabs } from "antd";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { connect } from "react-redux";
|
||||||
|
import { createStructuredSelector } from "reselect";
|
||||||
|
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||||
import ShopInfoGeneral from "./shop-info.general.component";
|
import ShopInfoGeneral from "./shop-info.general.component";
|
||||||
import ShopInfoIntakeChecklistComponent from "./shop-info.intake.component";
|
import ShopInfoIntakeChecklistComponent from "./shop-info.intake.component";
|
||||||
import ShopInfoLaborRates from "./shop-info.laborrates.component";
|
import ShopInfoLaborRates from "./shop-info.laborrates.component";
|
||||||
@@ -11,7 +14,15 @@ import ShopInfoROStatusComponent from "./shop-info.rostatus.component";
|
|||||||
import ShopInfoSchedulingComponent from "./shop-info.scheduling.component";
|
import ShopInfoSchedulingComponent from "./shop-info.scheduling.component";
|
||||||
import ShopInfoSpeedPrint from "./shop-info.speedprint.component";
|
import ShopInfoSpeedPrint from "./shop-info.speedprint.component";
|
||||||
|
|
||||||
export default function ShopInfoComponent({ form, saveLoading }) {
|
const mapStateToProps = createStructuredSelector({
|
||||||
|
bodyshop: selectBodyshop,
|
||||||
|
});
|
||||||
|
const mapDispatchToProps = (dispatch) => ({
|
||||||
|
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
||||||
|
});
|
||||||
|
export default connect(mapStateToProps, mapDispatchToProps)(ShopInfoComponent);
|
||||||
|
|
||||||
|
export function ShopInfoComponent({ bodyshop, form, saveLoading }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
return (
|
return (
|
||||||
<Card
|
<Card
|
||||||
@@ -53,6 +64,7 @@ export default function ShopInfoComponent({ form, saveLoading }) {
|
|||||||
>
|
>
|
||||||
<ShopInfoResponsibilityCenterComponent form={form} />
|
<ShopInfoResponsibilityCenterComponent form={form} />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
|
|
||||||
<Tabs.TabPane key="checklists" tab={t("bodyshop.labels.checklists")}>
|
<Tabs.TabPane key="checklists" tab={t("bodyshop.labels.checklists")}>
|
||||||
<ShopInfoIntakeChecklistComponent form={form} />
|
<ShopInfoIntakeChecklistComponent form={form} />
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -93,6 +93,7 @@ export const QUERY_BODYSHOP = gql`
|
|||||||
features
|
features
|
||||||
attach_pdf_to_email
|
attach_pdf_to_email
|
||||||
tt_allow_post_to_invoiced
|
tt_allow_post_to_invoiced
|
||||||
|
cdk_configuration
|
||||||
employees {
|
employees {
|
||||||
id
|
id
|
||||||
active
|
active
|
||||||
@@ -182,6 +183,7 @@ export const UPDATE_SHOP = gql`
|
|||||||
cdk_dealerid
|
cdk_dealerid
|
||||||
attach_pdf_to_email
|
attach_pdf_to_email
|
||||||
tt_allow_post_to_invoiced
|
tt_allow_post_to_invoiced
|
||||||
|
cdk_configuration
|
||||||
employees {
|
employees {
|
||||||
id
|
id
|
||||||
first_name
|
first_name
|
||||||
|
|||||||
@@ -231,6 +231,10 @@
|
|||||||
"deliver": {
|
"deliver": {
|
||||||
"templates": "Delivery Templates"
|
"templates": "Delivery Templates"
|
||||||
},
|
},
|
||||||
|
"dms": {
|
||||||
|
"dms_acctnumber": "DMS Account #",
|
||||||
|
"dms_wip_acctnumber": "DMS W.I.P. Account #"
|
||||||
|
},
|
||||||
"email": "General Shop Email",
|
"email": "General Shop Email",
|
||||||
"enforce_class": "Enforce Class on Conversion?",
|
"enforce_class": "Enforce Class on Conversion?",
|
||||||
"enforce_referral": "Enforce Referrals",
|
"enforce_referral": "Enforce Referrals",
|
||||||
@@ -467,6 +471,10 @@
|
|||||||
"defaultcostsmapping": "Default Costs Mapping",
|
"defaultcostsmapping": "Default Costs Mapping",
|
||||||
"defaultprofitsmapping": "Default Profits Mapping",
|
"defaultprofitsmapping": "Default Profits Mapping",
|
||||||
"deliverchecklist": "Delivery Checklist",
|
"deliverchecklist": "Delivery Checklist",
|
||||||
|
"dms": {
|
||||||
|
"cdk_dealerid": "CDK Dealer ID",
|
||||||
|
"title": "DMS"
|
||||||
|
},
|
||||||
"employees": "Employees",
|
"employees": "Employees",
|
||||||
"insurancecos": "Insurance Companies",
|
"insurancecos": "Insurance Companies",
|
||||||
"intakechecklist": "Intake Checklist",
|
"intakechecklist": "Intake Checklist",
|
||||||
|
|||||||
@@ -231,6 +231,10 @@
|
|||||||
"deliver": {
|
"deliver": {
|
||||||
"templates": ""
|
"templates": ""
|
||||||
},
|
},
|
||||||
|
"dms": {
|
||||||
|
"dms_acctnumber": "",
|
||||||
|
"dms_wip_acctnumber": ""
|
||||||
|
},
|
||||||
"email": "",
|
"email": "",
|
||||||
"enforce_class": "",
|
"enforce_class": "",
|
||||||
"enforce_referral": "",
|
"enforce_referral": "",
|
||||||
@@ -467,6 +471,10 @@
|
|||||||
"defaultcostsmapping": "",
|
"defaultcostsmapping": "",
|
||||||
"defaultprofitsmapping": "",
|
"defaultprofitsmapping": "",
|
||||||
"deliverchecklist": "",
|
"deliverchecklist": "",
|
||||||
|
"dms": {
|
||||||
|
"cdk_dealerid": "",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
"employees": "",
|
"employees": "",
|
||||||
"insurancecos": "",
|
"insurancecos": "",
|
||||||
"intakechecklist": "",
|
"intakechecklist": "",
|
||||||
|
|||||||
@@ -231,6 +231,10 @@
|
|||||||
"deliver": {
|
"deliver": {
|
||||||
"templates": ""
|
"templates": ""
|
||||||
},
|
},
|
||||||
|
"dms": {
|
||||||
|
"dms_acctnumber": "",
|
||||||
|
"dms_wip_acctnumber": ""
|
||||||
|
},
|
||||||
"email": "",
|
"email": "",
|
||||||
"enforce_class": "",
|
"enforce_class": "",
|
||||||
"enforce_referral": "",
|
"enforce_referral": "",
|
||||||
@@ -467,6 +471,10 @@
|
|||||||
"defaultcostsmapping": "",
|
"defaultcostsmapping": "",
|
||||||
"defaultprofitsmapping": "",
|
"defaultprofitsmapping": "",
|
||||||
"deliverchecklist": "",
|
"deliverchecklist": "",
|
||||||
|
"dms": {
|
||||||
|
"cdk_dealerid": "",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
"employees": "",
|
"employees": "",
|
||||||
"insurancecos": "",
|
"insurancecos": "",
|
||||||
"intakechecklist": "",
|
"intakechecklist": "",
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."bodyshops" DROP COLUMN "cdk_configuration";
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
- args:
|
||||||
|
cascade: false
|
||||||
|
read_only: false
|
||||||
|
sql: ALTER TABLE "public"."bodyshops" ADD COLUMN "cdk_configuration" jsonb NULL;
|
||||||
|
type: run_sql
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: drop_select_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
allow_aggregations: false
|
||||||
|
columns:
|
||||||
|
- accountingconfig
|
||||||
|
- address1
|
||||||
|
- address2
|
||||||
|
- appt_alt_transport
|
||||||
|
- appt_colors
|
||||||
|
- appt_length
|
||||||
|
- attach_pdf_to_email
|
||||||
|
- bill_tax_rates
|
||||||
|
- cdk_dealerid
|
||||||
|
- city
|
||||||
|
- country
|
||||||
|
- created_at
|
||||||
|
- default_adjustment_rate
|
||||||
|
- deliverchecklist
|
||||||
|
- email
|
||||||
|
- enforce_class
|
||||||
|
- enforce_referral
|
||||||
|
- features
|
||||||
|
- federal_tax_id
|
||||||
|
- id
|
||||||
|
- imexshopid
|
||||||
|
- inhousevendorid
|
||||||
|
- insurance_vendor_id
|
||||||
|
- intakechecklist
|
||||||
|
- jc_hourly_rates
|
||||||
|
- jobsizelimit
|
||||||
|
- logo_img_path
|
||||||
|
- md_categories
|
||||||
|
- md_ccc_rates
|
||||||
|
- md_classes
|
||||||
|
- md_hour_split
|
||||||
|
- md_ins_cos
|
||||||
|
- md_jobline_presets
|
||||||
|
- md_labor_rates
|
||||||
|
- md_messaging_presets
|
||||||
|
- md_notes_presets
|
||||||
|
- md_order_statuses
|
||||||
|
- md_parts_locations
|
||||||
|
- md_payment_types
|
||||||
|
- md_rbac
|
||||||
|
- md_referral_sources
|
||||||
|
- md_responsibility_centers
|
||||||
|
- md_ro_statuses
|
||||||
|
- messagingservicesid
|
||||||
|
- phone
|
||||||
|
- prodtargethrs
|
||||||
|
- production_config
|
||||||
|
- region_config
|
||||||
|
- schedule_end_time
|
||||||
|
- schedule_start_time
|
||||||
|
- scoreboard_target
|
||||||
|
- shopname
|
||||||
|
- shoprates
|
||||||
|
- speedprint
|
||||||
|
- ssbuckets
|
||||||
|
- state
|
||||||
|
- state_tax_id
|
||||||
|
- stripe_acct_id
|
||||||
|
- sub_status
|
||||||
|
- target_touchtime
|
||||||
|
- template_header
|
||||||
|
- textid
|
||||||
|
- tt_allow_post_to_invoiced
|
||||||
|
- updated_at
|
||||||
|
- use_fippa
|
||||||
|
- website
|
||||||
|
- workingdays
|
||||||
|
- zip_post
|
||||||
|
computed_fields: []
|
||||||
|
filter:
|
||||||
|
associations:
|
||||||
|
user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: create_select_permission
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: drop_select_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
allow_aggregations: false
|
||||||
|
columns:
|
||||||
|
- accountingconfig
|
||||||
|
- address1
|
||||||
|
- address2
|
||||||
|
- appt_alt_transport
|
||||||
|
- appt_colors
|
||||||
|
- appt_length
|
||||||
|
- attach_pdf_to_email
|
||||||
|
- bill_tax_rates
|
||||||
|
- cdk_configuration
|
||||||
|
- cdk_dealerid
|
||||||
|
- city
|
||||||
|
- country
|
||||||
|
- created_at
|
||||||
|
- default_adjustment_rate
|
||||||
|
- deliverchecklist
|
||||||
|
- email
|
||||||
|
- enforce_class
|
||||||
|
- enforce_referral
|
||||||
|
- features
|
||||||
|
- federal_tax_id
|
||||||
|
- id
|
||||||
|
- imexshopid
|
||||||
|
- inhousevendorid
|
||||||
|
- insurance_vendor_id
|
||||||
|
- intakechecklist
|
||||||
|
- jc_hourly_rates
|
||||||
|
- jobsizelimit
|
||||||
|
- logo_img_path
|
||||||
|
- md_categories
|
||||||
|
- md_ccc_rates
|
||||||
|
- md_classes
|
||||||
|
- md_hour_split
|
||||||
|
- md_ins_cos
|
||||||
|
- md_jobline_presets
|
||||||
|
- md_labor_rates
|
||||||
|
- md_messaging_presets
|
||||||
|
- md_notes_presets
|
||||||
|
- md_order_statuses
|
||||||
|
- md_parts_locations
|
||||||
|
- md_payment_types
|
||||||
|
- md_rbac
|
||||||
|
- md_referral_sources
|
||||||
|
- md_responsibility_centers
|
||||||
|
- md_ro_statuses
|
||||||
|
- messagingservicesid
|
||||||
|
- phone
|
||||||
|
- prodtargethrs
|
||||||
|
- production_config
|
||||||
|
- region_config
|
||||||
|
- schedule_end_time
|
||||||
|
- schedule_start_time
|
||||||
|
- scoreboard_target
|
||||||
|
- shopname
|
||||||
|
- shoprates
|
||||||
|
- speedprint
|
||||||
|
- ssbuckets
|
||||||
|
- state
|
||||||
|
- state_tax_id
|
||||||
|
- stripe_acct_id
|
||||||
|
- sub_status
|
||||||
|
- target_touchtime
|
||||||
|
- template_header
|
||||||
|
- textid
|
||||||
|
- tt_allow_post_to_invoiced
|
||||||
|
- updated_at
|
||||||
|
- use_fippa
|
||||||
|
- website
|
||||||
|
- workingdays
|
||||||
|
- zip_post
|
||||||
|
computed_fields: []
|
||||||
|
filter:
|
||||||
|
associations:
|
||||||
|
user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: create_select_permission
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: drop_update_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- accountingconfig
|
||||||
|
- address1
|
||||||
|
- address2
|
||||||
|
- appt_alt_transport
|
||||||
|
- appt_colors
|
||||||
|
- appt_length
|
||||||
|
- attach_pdf_to_email
|
||||||
|
- bill_tax_rates
|
||||||
|
- city
|
||||||
|
- country
|
||||||
|
- created_at
|
||||||
|
- default_adjustment_rate
|
||||||
|
- deliverchecklist
|
||||||
|
- email
|
||||||
|
- enforce_class
|
||||||
|
- enforce_referral
|
||||||
|
- federal_tax_id
|
||||||
|
- id
|
||||||
|
- inhousevendorid
|
||||||
|
- insurance_vendor_id
|
||||||
|
- intakechecklist
|
||||||
|
- jc_hourly_rates
|
||||||
|
- logo_img_path
|
||||||
|
- md_categories
|
||||||
|
- md_ccc_rates
|
||||||
|
- md_classes
|
||||||
|
- md_hour_split
|
||||||
|
- md_ins_cos
|
||||||
|
- md_jobline_presets
|
||||||
|
- md_labor_rates
|
||||||
|
- md_messaging_presets
|
||||||
|
- md_notes_presets
|
||||||
|
- md_order_statuses
|
||||||
|
- md_parts_locations
|
||||||
|
- md_payment_types
|
||||||
|
- md_rbac
|
||||||
|
- md_referral_sources
|
||||||
|
- md_responsibility_centers
|
||||||
|
- md_ro_statuses
|
||||||
|
- phone
|
||||||
|
- prodtargethrs
|
||||||
|
- production_config
|
||||||
|
- schedule_end_time
|
||||||
|
- schedule_start_time
|
||||||
|
- scoreboard_target
|
||||||
|
- shopname
|
||||||
|
- shoprates
|
||||||
|
- speedprint
|
||||||
|
- ssbuckets
|
||||||
|
- state
|
||||||
|
- state_tax_id
|
||||||
|
- target_touchtime
|
||||||
|
- tt_allow_post_to_invoiced
|
||||||
|
- updated_at
|
||||||
|
- use_fippa
|
||||||
|
- website
|
||||||
|
- workingdays
|
||||||
|
- zip_post
|
||||||
|
filter:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: create_update_permission
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
- args:
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: drop_update_permission
|
||||||
|
- args:
|
||||||
|
permission:
|
||||||
|
columns:
|
||||||
|
- accountingconfig
|
||||||
|
- address1
|
||||||
|
- address2
|
||||||
|
- appt_alt_transport
|
||||||
|
- appt_colors
|
||||||
|
- appt_length
|
||||||
|
- attach_pdf_to_email
|
||||||
|
- bill_tax_rates
|
||||||
|
- cdk_configuration
|
||||||
|
- city
|
||||||
|
- country
|
||||||
|
- created_at
|
||||||
|
- default_adjustment_rate
|
||||||
|
- deliverchecklist
|
||||||
|
- email
|
||||||
|
- enforce_class
|
||||||
|
- enforce_referral
|
||||||
|
- federal_tax_id
|
||||||
|
- id
|
||||||
|
- inhousevendorid
|
||||||
|
- insurance_vendor_id
|
||||||
|
- intakechecklist
|
||||||
|
- jc_hourly_rates
|
||||||
|
- logo_img_path
|
||||||
|
- md_categories
|
||||||
|
- md_ccc_rates
|
||||||
|
- md_classes
|
||||||
|
- md_hour_split
|
||||||
|
- md_ins_cos
|
||||||
|
- md_jobline_presets
|
||||||
|
- md_labor_rates
|
||||||
|
- md_messaging_presets
|
||||||
|
- md_notes_presets
|
||||||
|
- md_order_statuses
|
||||||
|
- md_parts_locations
|
||||||
|
- md_payment_types
|
||||||
|
- md_rbac
|
||||||
|
- md_referral_sources
|
||||||
|
- md_responsibility_centers
|
||||||
|
- md_ro_statuses
|
||||||
|
- phone
|
||||||
|
- prodtargethrs
|
||||||
|
- production_config
|
||||||
|
- schedule_end_time
|
||||||
|
- schedule_start_time
|
||||||
|
- scoreboard_target
|
||||||
|
- shopname
|
||||||
|
- shoprates
|
||||||
|
- speedprint
|
||||||
|
- ssbuckets
|
||||||
|
- state
|
||||||
|
- state_tax_id
|
||||||
|
- target_touchtime
|
||||||
|
- tt_allow_post_to_invoiced
|
||||||
|
- updated_at
|
||||||
|
- use_fippa
|
||||||
|
- website
|
||||||
|
- workingdays
|
||||||
|
- zip_post
|
||||||
|
filter:
|
||||||
|
associations:
|
||||||
|
_and:
|
||||||
|
- user:
|
||||||
|
authid:
|
||||||
|
_eq: X-Hasura-User-Id
|
||||||
|
- active:
|
||||||
|
_eq: true
|
||||||
|
set: {}
|
||||||
|
role: user
|
||||||
|
table:
|
||||||
|
name: bodyshops
|
||||||
|
schema: public
|
||||||
|
type: create_update_permission
|
||||||
@@ -796,6 +796,7 @@ tables:
|
|||||||
- appt_length
|
- appt_length
|
||||||
- attach_pdf_to_email
|
- attach_pdf_to_email
|
||||||
- bill_tax_rates
|
- bill_tax_rates
|
||||||
|
- cdk_configuration
|
||||||
- cdk_dealerid
|
- cdk_dealerid
|
||||||
- city
|
- city
|
||||||
- country
|
- country
|
||||||
@@ -873,6 +874,7 @@ tables:
|
|||||||
- appt_length
|
- appt_length
|
||||||
- attach_pdf_to_email
|
- attach_pdf_to_email
|
||||||
- bill_tax_rates
|
- bill_tax_rates
|
||||||
|
- cdk_configuration
|
||||||
- city
|
- city
|
||||||
- country
|
- country
|
||||||
- created_at
|
- created_at
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
"firebase-admin": "^9.11.0",
|
"firebase-admin": "^9.11.0",
|
||||||
"graphql": "^15.5.1",
|
"graphql": "^15.5.1",
|
||||||
"graphql-request": "^3.4.0",
|
"graphql-request": "^3.4.0",
|
||||||
|
"graylog2": "^0.2.1",
|
||||||
"inline-css": "^3.0.0",
|
"inline-css": "^3.0.0",
|
||||||
"intuit-oauth": "^4.0.0",
|
"intuit-oauth": "^4.0.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ const bodyParser = require("body-parser");
|
|||||||
const path = require("path");
|
const path = require("path");
|
||||||
const compression = require("compression");
|
const compression = require("compression");
|
||||||
const twilio = require("twilio");
|
const twilio = require("twilio");
|
||||||
|
const logger = require("./server/utils/logger");
|
||||||
global.fetch = require("node-fetch");
|
global.fetch = require("node-fetch");
|
||||||
var fb = require("./server/firebase/firebase-handler");
|
var fb = require("./server/firebase/firebase-handler");
|
||||||
|
|
||||||
@@ -33,7 +34,8 @@ app.post("/sendemail", fb.validateFirebaseIdToken, sendEmail.sendEmail);
|
|||||||
|
|
||||||
//Test route to ensure Express is responding.
|
//Test route to ensure Express is responding.
|
||||||
app.get("/test", async function (req, res) {
|
app.get("/test", async function (req, res) {
|
||||||
console.log("Incoming request verified.", req);
|
logger.log("test-api", null, null, null);
|
||||||
|
|
||||||
const Commit = require("child_process").execSync(
|
const Commit = require("child_process").execSync(
|
||||||
"git rev-parse --short HEAD"
|
"git rev-parse --short HEAD"
|
||||||
);
|
);
|
||||||
@@ -166,7 +168,7 @@ const io = new Server(server, {
|
|||||||
|
|
||||||
server.listen(port, (error) => {
|
server.listen(port, (error) => {
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
console.log(`[${process.env.NODE_ENV}] Server running on port ${port}`);
|
logger.log(`[${process.env.NODE_ENV}] Server running on port ${port}`);
|
||||||
});
|
});
|
||||||
exports.io = io;
|
exports.io = io;
|
||||||
require("./server/web-sockets/web-socket");
|
require("./server/web-sockets/web-socket");
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const Dinero = require("dinero.js");
|
|||||||
var builder = require("xmlbuilder2");
|
var builder = require("xmlbuilder2");
|
||||||
const QbXmlUtils = require("./qbxml-utils");
|
const QbXmlUtils = require("./qbxml-utils");
|
||||||
const moment = require("moment");
|
const moment = require("moment");
|
||||||
|
const logger = require("../../utils/logger");
|
||||||
|
|
||||||
require("dotenv").config({
|
require("dotenv").config({
|
||||||
path: path.resolve(
|
path: path.resolve(
|
||||||
@@ -45,7 +46,13 @@ exports.default = async (req, res) => {
|
|||||||
|
|
||||||
res.status(200).json(QbXmlToExecute);
|
res.status(200).json(QbXmlToExecute);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("error", error);
|
logger.log(
|
||||||
|
"qbxml-payable-error",
|
||||||
|
"error",
|
||||||
|
req.body.user,
|
||||||
|
req.body.billsToQuery,
|
||||||
|
error
|
||||||
|
);
|
||||||
res.status(400).send(JSON.stringify(error));
|
res.status(400).send(JSON.stringify(error));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -89,7 +96,6 @@ const generateBill = (bill) => {
|
|||||||
.end({ pretty: true });
|
.end({ pretty: true });
|
||||||
|
|
||||||
const billQbxml_Full = QbXmlUtils.addQbxmlHeader(billQbxml_partial);
|
const billQbxml_Full = QbXmlUtils.addQbxmlHeader(billQbxml_partial);
|
||||||
console.log("generateBill -> billQbxml_Full", billQbxml_Full);
|
|
||||||
|
|
||||||
return billQbxml_Full;
|
return billQbxml_Full;
|
||||||
};
|
};
|
||||||
@@ -131,7 +137,6 @@ const findTaxCode = (billLine, taxcode) => {
|
|||||||
!!t.federal === !!federal
|
!!t.federal === !!federal
|
||||||
);
|
);
|
||||||
if (t.length === 1) {
|
if (t.length === 1) {
|
||||||
console.log(t);
|
|
||||||
return t[0].code;
|
return t[0].code;
|
||||||
} else if (t.length > 1) {
|
} else if (t.length > 1) {
|
||||||
return "Multiple Tax Codes Match";
|
return "Multiple Tax Codes Match";
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ var builder = require("xmlbuilder2");
|
|||||||
const moment = require("moment");
|
const moment = require("moment");
|
||||||
const QbXmlUtils = require("./qbxml-utils");
|
const QbXmlUtils = require("./qbxml-utils");
|
||||||
const QbxmlReceivables = require("./qbxml-receivables");
|
const QbxmlReceivables = require("./qbxml-receivables");
|
||||||
|
const logger = require("../../utils/logger");
|
||||||
|
|
||||||
require("dotenv").config({
|
require("dotenv").config({
|
||||||
path: path.resolve(
|
path: path.resolve(
|
||||||
process.cwd(),
|
process.cwd(),
|
||||||
@@ -80,13 +82,18 @@ exports.default = async (req, res) => {
|
|||||||
|
|
||||||
res.status(200).json(QbXmlToExecute);
|
res.status(200).json(QbXmlToExecute);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("error", error);
|
logger.log(
|
||||||
|
"qbxml-payments-error",
|
||||||
|
"error",
|
||||||
|
req.body.user,
|
||||||
|
req.body.paymentsToQuery,
|
||||||
|
error
|
||||||
|
);
|
||||||
res.status(400).send(JSON.stringify(error));
|
res.status(400).send(JSON.stringify(error));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const generatePayment = (payment, isThreeTier, twoTierPref) => {
|
const generatePayment = (payment, isThreeTier, twoTierPref) => {
|
||||||
console.log("generatePayment -> payment", payment);
|
|
||||||
let paymentQbxmlObj;
|
let paymentQbxmlObj;
|
||||||
if (payment.amount > 0) {
|
if (payment.amount > 0) {
|
||||||
paymentQbxmlObj = {
|
paymentQbxmlObj = {
|
||||||
@@ -194,7 +201,6 @@ const generatePayment = (payment, isThreeTier, twoTierPref) => {
|
|||||||
.end({ pretty: true });
|
.end({ pretty: true });
|
||||||
|
|
||||||
const paymentQbxmlFull = QbXmlUtils.addQbxmlHeader(paymentQbxmlPartial);
|
const paymentQbxmlFull = QbXmlUtils.addQbxmlHeader(paymentQbxmlPartial);
|
||||||
console.log("generateBill -> paymentQbxmlFull", paymentQbxmlFull);
|
|
||||||
|
|
||||||
return paymentQbxmlFull;
|
return paymentQbxmlFull;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ const Dinero = require("dinero.js");
|
|||||||
const moment = require("moment");
|
const moment = require("moment");
|
||||||
var builder = require("xmlbuilder2");
|
var builder = require("xmlbuilder2");
|
||||||
const QbXmlUtils = require("./qbxml-utils");
|
const QbXmlUtils = require("./qbxml-utils");
|
||||||
|
const logger = require("../../utils/logger");
|
||||||
|
|
||||||
require("dotenv").config({
|
require("dotenv").config({
|
||||||
path: path.resolve(
|
path: path.resolve(
|
||||||
process.cwd(),
|
process.cwd(),
|
||||||
@@ -93,7 +95,13 @@ exports.default = async (req, res) => {
|
|||||||
|
|
||||||
res.status(200).json(QbXmlToExecute);
|
res.status(200).json(QbXmlToExecute);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("error", error);
|
logger.log(
|
||||||
|
"qbxml-payments-error",
|
||||||
|
"error",
|
||||||
|
req.body.user,
|
||||||
|
req.body.jobIds,
|
||||||
|
error
|
||||||
|
);
|
||||||
res.status(400).send(JSON.stringify(error));
|
res.status(400).send(JSON.stringify(error));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -220,7 +228,7 @@ const generateInvoiceQbxml = (
|
|||||||
}).multiply(jobline.part_qty || 1);
|
}).multiply(jobline.part_qty || 1);
|
||||||
|
|
||||||
if (jobline.prt_dsmk_p && jobline.prt_dsmk_p !== 0) {
|
if (jobline.prt_dsmk_p && jobline.prt_dsmk_p !== 0) {
|
||||||
console.log("Have a part discount", jobline);
|
// console.log("Have a part discount", jobline);
|
||||||
DineroAmount = DineroAmount.add(
|
DineroAmount = DineroAmount.add(
|
||||||
DineroAmount.percentage(jobline.prt_dsmk_p || 0)
|
DineroAmount.percentage(jobline.prt_dsmk_p || 0)
|
||||||
);
|
);
|
||||||
@@ -230,6 +238,13 @@ const generateInvoiceQbxml = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (!account) {
|
if (!account) {
|
||||||
|
logger.log(
|
||||||
|
"qbxml-receivables-no-account",
|
||||||
|
"warn",
|
||||||
|
null,
|
||||||
|
jobline.id,
|
||||||
|
null
|
||||||
|
);
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`A matching account does not exist for the part allocation. Center: ${jobline.profitcenter_part}`
|
`A matching account does not exist for the part allocation. Center: ${jobline.profitcenter_part}`
|
||||||
);
|
);
|
||||||
@@ -309,7 +324,7 @@ const generateInvoiceQbxml = (
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log("NO MAPA ACCOUNT FOUND!!");
|
//console.log("NO MAPA ACCOUNT FOUND!!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,14 @@ const soap = require("soap");
|
|||||||
const queries = require("../graphql-client/queries");
|
const queries = require("../graphql-client/queries");
|
||||||
const CdkBase = require("../web-sockets/web-socket");
|
const CdkBase = require("../web-sockets/web-socket");
|
||||||
const CdkWsdl = require("./cdk-wsdl").default;
|
const CdkWsdl = require("./cdk-wsdl").default;
|
||||||
|
const logger = require("../utils/logger");
|
||||||
|
|
||||||
const IMEX_CDK_USER = process.env.IMEX_CDK_USER,
|
const IMEX_CDK_USER = process.env.IMEX_CDK_USER,
|
||||||
IMEX_CDK_PASSWORD = process.env.IMEX_CDK_PASSWORD;
|
IMEX_CDK_PASSWORD = process.env.IMEX_CDK_PASSWORD;
|
||||||
|
|
||||||
exports.default = async function (socket, jobid) {
|
exports.default = async function (socket, jobid) {
|
||||||
socket.logEvents = [];
|
socket.logEvents = [];
|
||||||
|
socket.recordid = jobid;
|
||||||
try {
|
try {
|
||||||
CdkBase.createLogEvent(
|
CdkBase.createLogEvent(
|
||||||
socket,
|
socket,
|
||||||
@@ -24,7 +26,6 @@ exports.default = async function (socket, jobid) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const JobData = await QueryJobData(socket, jobid);
|
const JobData = await QueryJobData(socket, jobid);
|
||||||
console.log(JSON.stringify(JobData, null, 2));
|
|
||||||
const DealerId = JobData.bodyshop.cdk_dealerid;
|
const DealerId = JobData.bodyshop.cdk_dealerid;
|
||||||
|
|
||||||
CdkBase.createLogEvent(
|
CdkBase.createLogEvent(
|
||||||
|
|||||||
25
server/utils/logger.js
Normal file
25
server/utils/logger.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
const graylog2 = require("graylog2");
|
||||||
|
|
||||||
|
const logger = new graylog2.graylog({
|
||||||
|
servers: [{ host: "logs.bodyshop.app", port: 12201 }],
|
||||||
|
});
|
||||||
|
|
||||||
|
function log(message, type, user, record, object) {
|
||||||
|
console.log(message, {
|
||||||
|
type,
|
||||||
|
env: process.env.NODE_ENV,
|
||||||
|
user,
|
||||||
|
record,
|
||||||
|
...object,
|
||||||
|
});
|
||||||
|
logger.log(message, {
|
||||||
|
type,
|
||||||
|
env: process.env.NODE_ENV || "development",
|
||||||
|
user,
|
||||||
|
record,
|
||||||
|
...object,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { log };
|
||||||
|
//const logger = require("./server/utils/logger");
|
||||||
@@ -11,6 +11,7 @@ const { io } = require("../../server");
|
|||||||
const { admin } = require("../firebase/firebase-handler");
|
const { admin } = require("../firebase/firebase-handler");
|
||||||
const CdkJobExport = require("../cdk/cdk-job-export").default;
|
const CdkJobExport = require("../cdk/cdk-job-export").default;
|
||||||
const { isArray } = require("lodash");
|
const { isArray } = require("lodash");
|
||||||
|
const logger = require("../utils/logger");
|
||||||
|
|
||||||
io.use(function (socket, next) {
|
io.use(function (socket, next) {
|
||||||
try {
|
try {
|
||||||
@@ -30,6 +31,10 @@ io.use(function (socket, next) {
|
|||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("Uncaught connection error:::", error);
|
console.log("Uncaught connection error:::", error);
|
||||||
|
logger.log("websocket-connection-error", "error", null, null, {
|
||||||
|
token: socket.handshake.auth.token,
|
||||||
|
...error,
|
||||||
|
});
|
||||||
next(new Error(`Authentication error ${error}`));
|
next(new Error(`Authentication error ${error}`));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -55,7 +60,7 @@ io.on("connection", (socket) => {
|
|||||||
function createLogEvent(socket, level, message) {
|
function createLogEvent(socket, level, message) {
|
||||||
if (LogLevelHierarchy(socket.log_level) >= LogLevelHierarchy(level)) {
|
if (LogLevelHierarchy(socket.log_level) >= LogLevelHierarchy(level)) {
|
||||||
console.log(
|
console.log(
|
||||||
`[CDK LOG EVENT] ${level} - ${new Date()} - ${socket.user.email} - ${
|
`[WS LOG EVENT] ${level} - ${new Date()} - ${socket.user.email} - ${
|
||||||
socket.id
|
socket.id
|
||||||
} - ${message}`
|
} - ${message}`
|
||||||
);
|
);
|
||||||
@@ -65,6 +70,10 @@ function createLogEvent(socket, level, message) {
|
|||||||
message,
|
message,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
logger.log("ws-log-event", level, socket.user.email, socket.recordid, {
|
||||||
|
wsmessage: message,
|
||||||
|
});
|
||||||
|
|
||||||
if (socket.logEvents && isArray(socket.logEvents)) {
|
if (socket.logEvents && isArray(socket.logEvents)) {
|
||||||
socket.logEvents.push({
|
socket.logEvents.push({
|
||||||
timestamp: new Date(),
|
timestamp: new Date(),
|
||||||
|
|||||||
@@ -1901,6 +1901,11 @@ graphql@^15.5.1:
|
|||||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.1.tgz#f2f84415d8985e7b84731e7f3536f8bb9d383aad"
|
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.1.tgz#f2f84415d8985e7b84731e7f3536f8bb9d383aad"
|
||||||
integrity sha512-FeTRX67T3LoE3LWAxxOlW2K3Bz+rMYAC18rRguK4wgXaTZMiJwSUwDmPFo3UadAKbzirKIg5Qy+sNJXbpPRnQw==
|
integrity sha512-FeTRX67T3LoE3LWAxxOlW2K3Bz+rMYAC18rRguK4wgXaTZMiJwSUwDmPFo3UadAKbzirKIg5Qy+sNJXbpPRnQw==
|
||||||
|
|
||||||
|
graylog2@^0.2.1:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/graylog2/-/graylog2-0.2.1.tgz#fcb0775766fb6d7d6f5fef3ff873326b8b1d35a9"
|
||||||
|
integrity sha512-vjysakwOhrAqMeIvSK0WZcmzKvkpxY6pCfT9QqtdSVAidPFIynuin7adqbdFp9MCCTbTE402WIxvg8cph5OWTA==
|
||||||
|
|
||||||
gtoken@^5.0.4:
|
gtoken@^5.0.4:
|
||||||
version "5.2.1"
|
version "5.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.2.1.tgz#4dae1fea17270f457954b4a45234bba5fc796d16"
|
resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.2.1.tgz#4dae1fea17270f457954b4a45234bba5fc796d16"
|
||||||
|
|||||||
Reference in New Issue
Block a user