diff --git a/client/src/components/dms-cdk-makes/dms-cdk-makes.refetch.component.jsx b/client/src/components/dms-cdk-makes/dms-cdk-makes.refetch.component.jsx
index c0d1ee4d9..f24153a4d 100644
--- a/client/src/components/dms-cdk-makes/dms-cdk-makes.refetch.component.jsx
+++ b/client/src/components/dms-cdk-makes/dms-cdk-makes.refetch.component.jsx
@@ -1,10 +1,10 @@
import { Button } from "antd";
import axios from "axios";
import React, { useState } from "react";
+import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors";
-import { useTranslation } from "react-i18next";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
bodyshop: selectBodyshop,
@@ -19,7 +19,7 @@ export function DmsCdkMakesRefetch({ bodyshop, form, socket }) {
const { t } = useTranslation();
const handleRefetch = async () => {
setLoading(true);
- const response = await axios.post("/cdk/getvehicles", {
+ await axios.post("/cdk/getvehicles", {
cdk_dealerid: bodyshop.cdk_dealerid,
bodyshopid: bodyshop.id,
});
diff --git a/client/src/components/help-rescue/help-rescue.component.jsx b/client/src/components/help-rescue/help-rescue.component.jsx
index 9a0d18b1e..1c3dd5ba0 100644
--- a/client/src/components/help-rescue/help-rescue.component.jsx
+++ b/client/src/components/help-rescue/help-rescue.component.jsx
@@ -10,14 +10,11 @@ export default function HelpRescue() {
var bodyFormData = new FormData();
bodyFormData.append("Code", code);
bodyFormData.append("hostederrorhandling", 1);
- const res1 = await fetch(
- "https://secure.logmeinrescue.com/Customer/Code.aspx",
- {
- mode: "no-cors",
- method: "POST",
- body: bodyFormData,
- }
- );
+ await fetch("https://secure.logmeinrescue.com/Customer/Code.aspx", {
+ mode: "no-cors",
+ method: "POST",
+ body: bodyFormData,
+ });
};
return (
diff --git a/client/src/components/parts-order-modal/parts-order-modal.component.jsx b/client/src/components/parts-order-modal/parts-order-modal.component.jsx
index 08973075d..86fad8d3b 100644
--- a/client/src/components/parts-order-modal/parts-order-modal.component.jsx
+++ b/client/src/components/parts-order-modal/parts-order-modal.component.jsx
@@ -164,6 +164,7 @@ export default function PartsOrderModalComponent({
{t("general.labels.none")}
{t("parts_orders.labels.email")}
{t("parts_orders.labels.print")}
+ {t("parts_orders.labels.oec")}
);
diff --git a/client/src/components/parts-order-modal/parts-order-modal.container.jsx b/client/src/components/parts-order-modal/parts-order-modal.container.jsx
index ad9efeb72..61cba9406 100644
--- a/client/src/components/parts-order-modal/parts-order-modal.container.jsx
+++ b/client/src/components/parts-order-modal/parts-order-modal.container.jsx
@@ -1,13 +1,16 @@
-import { useMutation, useQuery } from "@apollo/client";
+import { useMutation, useQuery, useApolloClient } from "@apollo/client";
import { Form, Modal, notification } from "antd";
import moment from "moment";
import React, { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
-import { logImEXEvent } from "../../firebase/firebase.utils";
+import { logImEXEvent, auth } from "../../firebase/firebase.utils";
import { UPDATE_JOB_LINE_STATUS } from "../../graphql/jobs-lines.queries";
-import { INSERT_NEW_PARTS_ORDERS } from "../../graphql/parts-orders.queries";
+import {
+ INSERT_NEW_PARTS_ORDERS,
+ QUERY_PARTS_ORDER_OEC,
+} from "../../graphql/parts-orders.queries";
import { QUERY_ALL_VENDORS_FOR_ORDER } from "../../graphql/vendors.queries";
import { insertAuditTrail } from "../../redux/application/application.actions";
import { setEmailOptions } from "../../redux/email/email.actions";
@@ -26,6 +29,7 @@ import { TemplateList } from "../../utils/TemplateConstants";
import AlertComponent from "../alert/alert.component";
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
import PartsOrderModalComponent from "./parts-order-modal.component";
+import axios from "axios";
const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser,
@@ -52,7 +56,7 @@ export function PartsOrderModalContainer({
insertAuditTrail,
}) {
const { t } = useTranslation();
-
+ const client = useApolloClient();
const { visible, context, actions } = partsOrderModal;
const {
jobId,
@@ -175,7 +179,7 @@ export function PartsOrderModalContainer({
}
if (refetch) refetch();
- toggleModalVisible();
+
const Templates = TemplateList("partsorder", context);
if (sendType === "e") {
@@ -215,7 +219,44 @@ export function PartsOrderModalContainer({
{},
"p"
);
+ } else if (sendType === "oec") {
+ //Send to Partner OEC.
+ try {
+ const partsOrder = await client.query({
+ query: QUERY_PARTS_ORDER_OEC,
+ variables: {
+ id: insertResult.data.insert_parts_orders.returning[0].id,
+ },
+ });
+ console.log("🚀 ~ file: parts-order-modal.container.jsx ~ line 231 ~ handleFinish ~ partsOrder", partsOrder)
+
+ const oecResponse = await axios.post(
+ "http://localhost:1337/oec/",
+
+ partsOrder.data.parts_orders_by_pk,
+ {
+ headers: {
+ Authorization: `Bearer ${await auth.currentUser.getIdToken()}`,
+ },
+ }
+ );
+ console.log(
+ "🚀 ~ file: parts-order-modal.container.jsx ~ line 232 ~ handleFinish ~ oecResponse",
+ oecResponse
+ );
+ } catch (error) {
+ console.log("Error OEC.", error);
+ notification["error"]({
+ message: t("parts_orders.errors.oec", {
+ error: JSON.stringify(error.message),
+ }),
+ });
+
+ return;
+ }
}
+
+ toggleModalVisible();
};
const initialValues = {
diff --git a/client/src/graphql/parts-orders.queries.js b/client/src/graphql/parts-orders.queries.js
index 7cd4427c9..b0ef44f1e 100644
--- a/client/src/graphql/parts-orders.queries.js
+++ b/client/src/graphql/parts-orders.queries.js
@@ -11,6 +11,193 @@ export const INSERT_NEW_PARTS_ORDERS = gql`
}
`;
+export const QUERY_PARTS_ORDER_OEC = gql`
+query QUERY_PARTS_ORDER_OEC($id: uuid!) {
+ parts_orders_by_pk(id: $id) {
+ job {
+ ro_number
+ clm_no
+ asgn_date
+ asgn_no
+ asgn_type
+ ciecaid
+ clm_addr1
+ clm_city
+ clm_addr2
+ clm_ct_fn
+ clm_ct_ln
+ clm_ct_ph
+ clm_ct_phx
+ clm_ctry
+ clm_ea
+ clm_fax
+ clm_faxx
+ clm_ofc_id
+ clm_ofc_nm
+ clm_ph1
+ clm_ph1x
+ clm_ph2
+ clm_ph2x
+ clm_st
+ clm_title
+ clm_total
+ clm_zip
+ ded_amt
+ est_addr1
+ est_addr2
+ est_city
+ est_co_nm
+ est_ct_fn
+ est_ctry
+ est_ct_ln
+ est_ea
+ est_ph1
+ est_st
+ est_zip
+ g_bett_amt
+ id
+ ins_addr1
+ ins_city
+ ins_addr2
+ ins_co_id
+ ins_co_nm
+ ins_ct_fn
+ ins_ct_ln
+ ins_ct_ph
+ ins_ct_phx
+ ins_ctry
+ ins_ea
+ ins_fax
+ ins_faxx
+ ins_memo
+ ins_ph1
+ ins_ph1x
+ ins_ph2
+ ins_ph2x
+ ins_st
+ ins_title
+ ins_zip
+ insd_addr1
+ insd_addr2
+ insd_city
+ insd_co_nm
+ insd_ctry
+ insd_ea
+ insd_fax
+ insd_faxx
+ insd_fn
+ insd_ln
+ insd_ph1
+ insd_ph1x
+ insd_ph2
+ insd_ph2x
+ insd_st
+ insd_title
+ insd_zip
+ job_totals
+ loss_cat
+ loss_date
+ loss_desc
+ loss_of_use
+ loss_type
+ ownr_addr1
+ ownr_addr2
+ ownr_city
+ ownr_co_nm
+ ownr_ctry
+ ownr_ea
+ ownr_fax
+ ownr_faxx
+ ownr_ph1
+ ownr_fn
+ ownr_ln
+ ownr_ph1x
+ ownr_ph2
+ ownr_ph2x
+ ownr_st
+ ownr_title
+ ownr_zip
+ parts_tax_rates
+ pay_amt
+ pay_date
+ pay_type
+ pay_chknm
+ payee_nms
+ plate_no
+ plate_st
+ po_number
+ policy_no
+ tax_lbr_rt
+ tax_levies_rt
+ tax_paint_mat_rt
+ tax_predis
+ tax_prethr
+ tax_pstthr
+ tax_registration_number
+ tax_str_rt
+ tax_shop_mat_rt
+ tax_sub_rt
+ tax_thramt
+ tax_tow_rt
+ theft_ind
+ tlos_ind
+ towin
+ v_color
+ v_make_desc
+ v_model_desc
+ v_model_yr
+ v_vin
+ }
+ parts_order_lines {
+ jobline {
+ act_price
+ db_ref
+ db_price
+ db_hrs
+ glass_flag
+ id
+ lbr_amt
+ lbr_hrs_j
+ lbr_inc
+ lbr_op
+ lbr_op_j
+ lbr_tax
+ lbr_typ_j
+ line_desc
+ line_ind
+ line_no
+ line_ref
+ location
+ misc_amt
+ misc_sublt
+ misc_tax
+ mod_lb_hrs
+ mod_lbr_ty
+ oem_partno
+ op_code_desc
+ paint_stg
+ paint_tone
+ part_qty
+ part_type
+ price_inc
+ price_j
+ prt_dsmk_m
+ prt_dsmk_p
+ tax_part
+ unq_seq
+ }
+ act_price
+ id
+ db_price
+ line_desc
+ quantity
+ }
+ }
+}
+
+`;
+
+
export const DELETE_PARTS_ORDER = gql`
mutation DELETE_PARTS_ORDER($partsOrderId: uuid!) {
delete_parts_orders_by_pk(id: $partsOrderId) {
diff --git a/client/src/pages/mobile-payment/mobile-payment.component.jsx b/client/src/pages/mobile-payment/mobile-payment.component.jsx
index f353edbfd..2dff4b39f 100644
--- a/client/src/pages/mobile-payment/mobile-payment.component.jsx
+++ b/client/src/pages/mobile-payment/mobile-payment.component.jsx
@@ -1,6 +1,6 @@
import {
PaymentRequestButtonElement,
- useStripe,
+ useStripe
} from "@stripe/react-stripe-js";
import React, { useEffect, useState } from "react";
@@ -60,7 +60,8 @@ export default function MobilePaymentComponent() {
// it to close the browser payment method collection interface.
ev.complete("success");
// Let Stripe.js handle the rest of the payment flow.
- const { error, paymentIntent } = await stripe.confirmCardPayment(
+ const { error, //paymentIntent
+ } = await stripe.confirmCardPayment(
"clientSecret"
);
if (error) {
diff --git a/client/src/pages/mobile-payment/mobile-payment.container.jsx b/client/src/pages/mobile-payment/mobile-payment.container.jsx
index 18c36a1cb..7c44dd12d 100644
--- a/client/src/pages/mobile-payment/mobile-payment.container.jsx
+++ b/client/src/pages/mobile-payment/mobile-payment.container.jsx
@@ -1,7 +1,7 @@
-import React from "react";
-import MobilePaymentComponent from "./mobile-payment.component";
import { Elements } from "@stripe/react-stripe-js";
import { loadStripe } from "@stripe/stripe-js";
+import React from "react";
+import MobilePaymentComponent from "./mobile-payment.component";
const stripePromise = new Promise((resolve, reject) => {
resolve(