@@ -1,3 +1,4 @@
|
||||
import { useTreatments } from "@splitsoftware/splitio-react";
|
||||
import { CardElement } from "@stripe/react-stripe-js";
|
||||
import { Checkbox, Form, Input, Radio, Select } from "antd";
|
||||
import React from "react";
|
||||
@@ -23,6 +24,11 @@ export function PaymentFormComponent({
|
||||
disabled,
|
||||
}) {
|
||||
const [stripeState, setStripeState] = stripeStateArr;
|
||||
const { Qb_Multi_Ar } = useTreatments(
|
||||
["Qb_Multi_Ar"],
|
||||
{},
|
||||
bodyshop && bodyshop.imexshopid
|
||||
);
|
||||
|
||||
const { t } = useTranslation();
|
||||
const handleStripeChange = (e) => {
|
||||
@@ -106,9 +112,21 @@ export function PaymentFormComponent({
|
||||
<Select.Option value={t("payments.labels.customer")}>
|
||||
{t("payments.labels.customer")}
|
||||
</Select.Option>
|
||||
<Select.Option value={t("payments.labels.insurance")}>
|
||||
{t("payments.labels.insurance")}
|
||||
</Select.Option>
|
||||
{Qb_Multi_Ar.treatment === "on" ? (
|
||||
<>
|
||||
<Select.OptGroup label={t("payments.labels.external")}>
|
||||
{bodyshop.md_ins_cos.map((i, idx) => (
|
||||
<Select.Option key={idx} value={i.name}>
|
||||
{i.name}
|
||||
</Select.Option>
|
||||
))}
|
||||
</Select.OptGroup>
|
||||
</>
|
||||
) : (
|
||||
<Select.Option value={t("payments.labels.insurance")}>
|
||||
{t("payments.labels.insurance")}
|
||||
</Select.Option>
|
||||
)}
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader }) {
|
||||
let job = Object.assign(
|
||||
{},
|
||||
values,
|
||||
{ date_open: new Date() },
|
||||
{
|
||||
vehicle:
|
||||
state.vehicle.selectedid || state.vehicle.none
|
||||
|
||||
@@ -73,11 +73,19 @@ exports.default = async (req, res) => {
|
||||
|
||||
for (const payment of payments) {
|
||||
try {
|
||||
const isThreeTier = bodyshop.accountingconfig.tiers === 3;
|
||||
const twoTierPref = bodyshop.accountingconfig.twotierpref;
|
||||
let isThreeTier = bodyshop.accountingconfig.tiers === 3;
|
||||
let twoTierPref = bodyshop.accountingconfig.twotierpref;
|
||||
|
||||
//Replace this with a for-each loop to check every single Job that's included in the list.
|
||||
|
||||
//QB Multi AR - If it is in this scenario, overwrite whatever defaults are set since multi AR
|
||||
//will always go Source => RO
|
||||
if (payment.payer !== "Customer") {
|
||||
payment.job.ins_co_nm = payment.payer;
|
||||
twoTierPref = "source";
|
||||
isThreeTier = false;
|
||||
}
|
||||
|
||||
let insCoCustomerTier, ownerCustomerTier, jobTier;
|
||||
if (isThreeTier || (!isThreeTier && twoTierPref === "source")) {
|
||||
//Insert the insurance company tier.
|
||||
@@ -106,7 +114,9 @@ exports.default = async (req, res) => {
|
||||
oauthClient,
|
||||
qbo_realmId,
|
||||
req,
|
||||
payment.job
|
||||
payment.job,
|
||||
isThreeTier,
|
||||
insCoCustomerTier
|
||||
);
|
||||
//Query for the owner itself.
|
||||
if (!ownerCustomerTier) {
|
||||
@@ -122,7 +132,17 @@ exports.default = async (req, res) => {
|
||||
}
|
||||
|
||||
//Query for the Job or Create it.
|
||||
jobTier = await QueryJob(oauthClient, qbo_realmId, req, payment.job);
|
||||
jobTier = await QueryJob(
|
||||
oauthClient,
|
||||
qbo_realmId,
|
||||
req,
|
||||
payment.job,
|
||||
isThreeTier
|
||||
? ownerCustomerTier
|
||||
: twoTierPref === "source"
|
||||
? insCoCustomerTier
|
||||
: ownerCustomerTier
|
||||
);
|
||||
|
||||
// Need to validate that the job tier is associated to the right individual?
|
||||
|
||||
@@ -237,7 +257,8 @@ async function InsertPayment(
|
||||
qbo_realmId,
|
||||
req,
|
||||
payment.job.ro_number,
|
||||
false
|
||||
false,
|
||||
parentRef
|
||||
);
|
||||
|
||||
if (invoices && invoices.length !== 1) {
|
||||
@@ -260,7 +281,7 @@ async function InsertPayment(
|
||||
PaymentMethodRef: {
|
||||
value: paymentMethods[payment.type],
|
||||
},
|
||||
...(invoices && invoices.length === 1
|
||||
...(invoices && invoices.length === 1 && invoices[0]
|
||||
? {
|
||||
Line: [
|
||||
{
|
||||
@@ -305,13 +326,14 @@ async function QueryMetaData(
|
||||
qbo_realmId,
|
||||
req,
|
||||
ro_number,
|
||||
isCreditMemo
|
||||
isCreditMemo,
|
||||
parentTierRef
|
||||
) {
|
||||
const invoice = await oauthClient.makeApiCall({
|
||||
url: urlBuilder(
|
||||
qbo_realmId,
|
||||
"query",
|
||||
`select * From Invoice where DocNumber = '${ro_number}'`
|
||||
`select * From Invoice where DocNumber like '${ro_number}%'`
|
||||
),
|
||||
method: "POST",
|
||||
headers: {
|
||||
@@ -407,7 +429,13 @@ async function QueryMetaData(
|
||||
invoices:
|
||||
invoice.json &&
|
||||
invoice.json.QueryResponse &&
|
||||
invoice.json.QueryResponse.Invoice,
|
||||
(parentTierRef
|
||||
? [
|
||||
invoice.json.QueryResponse.Invoice.find(
|
||||
(x) => x.CustomerRef.value === parentTierRef.Id
|
||||
),
|
||||
]
|
||||
: [invoice.json.QueryResponse.Invoice[0]]),
|
||||
};
|
||||
}
|
||||
async function InsertCreditMemo(
|
||||
@@ -423,7 +451,8 @@ async function InsertCreditMemo(
|
||||
qbo_realmId,
|
||||
req,
|
||||
payment.job.ro_number,
|
||||
true
|
||||
true,
|
||||
parentRef
|
||||
);
|
||||
|
||||
if (invoices && invoices.length !== 1) {
|
||||
|
||||
@@ -57,7 +57,7 @@ exports.default = async (req, res) => {
|
||||
bodyshopid: bodyshop.id,
|
||||
start: start
|
||||
? moment(start).startOf("day")
|
||||
: moment().subtract(3, "days").startOf("day"),
|
||||
: moment().subtract(5, "days").startOf("day"),
|
||||
...(end && { end: moment(end).startOf("day") }),
|
||||
}
|
||||
);
|
||||
@@ -316,6 +316,10 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
||||
moment(job.date_open)
|
||||
.tz(job.bodyshop.timezone)
|
||||
.format(AhDateFormat)) ||
|
||||
(job.created_at &&
|
||||
moment(job.created_at)
|
||||
.tz(job.bodyshop.timezone)
|
||||
.format(AhDateFormat)) ||
|
||||
"",
|
||||
ScheduledArrivalDate:
|
||||
(job.scheduled_in &&
|
||||
|
||||
@@ -623,6 +623,7 @@ exports.AUTOHOUSE_QUERY = `query AUTOHOUSE_EXPORT($start: timestamptz, $bodyshop
|
||||
}
|
||||
jobs(where: {_and: [{converted: {_eq: true}}, {updated_at: {_gt: $start}}, {updated_at: {_lte: $end}}, {shopid: {_eq: $bodyshopid}}]}) {
|
||||
id
|
||||
created_at
|
||||
ro_number
|
||||
status
|
||||
est_ct_fn
|
||||
|
||||
Reference in New Issue
Block a user