IO-3446 Kaizen Datapump Extension
Signed-off-by: Allan Carr <allan@imexsystems.ca>
This commit is contained in:
@@ -219,8 +219,6 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const repairCosts = CreateCosts(job);
|
const repairCosts = CreateCosts(job);
|
||||||
const jobline = CreateJobLines(job.joblines);
|
|
||||||
const timeticket = CreateTimeTickets(job.timetickets);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const ret = {
|
const ret = {
|
||||||
@@ -290,8 +288,100 @@ const CreateRepairOrderTag = (job, errorCallback) => {
|
|||||||
(job.date_exported && moment(job.date_exported).tz(job.bodyshop.timezone).format(DateFormat)) || "",
|
(job.date_exported && moment(job.date_exported).tz(job.bodyshop.timezone).format(DateFormat)) || "",
|
||||||
DateVoid: (job.date_void && moment(job.date_void).tz(job.bodyshop.timezone).format(DateFormat)) || ""
|
DateVoid: (job.date_void && moment(job.date_void).tz(job.bodyshop.timezone).format(DateFormat)) || ""
|
||||||
},
|
},
|
||||||
JobLineDetails: { jobline },
|
JobLineDetails: (function () {
|
||||||
TimeTicketDetails: { timeticket },
|
const joblineSource = Array.isArray(job.joblines) ? job.joblines : job.joblines ? [job.joblines] : [];
|
||||||
|
if (joblineSource.length === 0) return { jobline: [] };
|
||||||
|
return {
|
||||||
|
jobline: joblineSource.map((jl = {}) => ({
|
||||||
|
line_description: jl.line_desc || jl.line_description || "",
|
||||||
|
oem_part_no: jl.oem_partno || jl.oem_part_no || "",
|
||||||
|
alt_part_no: jl.alt_partno || jl.alt_part_no || "",
|
||||||
|
op_code_desc: jl.op_code_desc || "",
|
||||||
|
part_type: jl.part_type || "",
|
||||||
|
part_qty: jl.part_qty ?? jl.quantity ?? 0,
|
||||||
|
part_price: jl.act_price ?? jl.part_price ?? 0,
|
||||||
|
labor_type: jl.mod_lbr_ty || jl.labor_type || "",
|
||||||
|
labor_hours: jl.mod_lb_hrs ?? jl.labor_hours ?? 0,
|
||||||
|
labor_sale: jl.lbr_amt ?? jl.labor_sale ?? 0
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
})(),
|
||||||
|
BillsDetails: (function () {
|
||||||
|
const billsSource = Array.isArray(job.bills) ? job.bills : job.bills ? [job.bills] : [];
|
||||||
|
if (billsSource.length === 0) return { BillDetails: [] };
|
||||||
|
return {
|
||||||
|
BillDetails: billsSource.map(
|
||||||
|
({
|
||||||
|
billlines = [],
|
||||||
|
date = "",
|
||||||
|
is_credit_memo = false,
|
||||||
|
invoice_number = "",
|
||||||
|
isinhouse = false,
|
||||||
|
vendor = {}
|
||||||
|
} = {}) => ({
|
||||||
|
BillLines: {
|
||||||
|
BillLine: billlines.map((bl = {}) => ({
|
||||||
|
line_description: bl.line_desc || bl.line_description || "",
|
||||||
|
part_price: bl.actual_price ?? bl.part_price ?? bl.act_price ?? 0,
|
||||||
|
actual_cost: bl.actual_cost ?? 0,
|
||||||
|
cost_center: bl.cost_center || "",
|
||||||
|
deductedfromlbr: bl.deductedfromlbr || false,
|
||||||
|
part_qty: bl.quantity ?? bl.part_qty ?? 0,
|
||||||
|
oem_part_no: bl.oem_partno || bl.oem_part_no || "",
|
||||||
|
alt_part_no: bl.alt_partno || bl.alt_part_no || ""
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
date,
|
||||||
|
is_credit_memo,
|
||||||
|
invoice_number,
|
||||||
|
isinhouse,
|
||||||
|
vendorName: vendor.name || ""
|
||||||
|
})
|
||||||
|
)
|
||||||
|
};
|
||||||
|
})(),
|
||||||
|
JobNotes: (function () {
|
||||||
|
const notesSource = Array.isArray(job.notes) ? job.notes : job.notes ? [job.notes] : [];
|
||||||
|
if (notesSource.length === 0) return { JobNote: [] };
|
||||||
|
return {
|
||||||
|
JobNote: notesSource.map((note = {}) => ({
|
||||||
|
created_at: note.created_at || "",
|
||||||
|
created_by: note.created_by || "",
|
||||||
|
critical: note.critical || false,
|
||||||
|
private: note.private || false,
|
||||||
|
text: note.text || "",
|
||||||
|
type: note.type || ""
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
})(),
|
||||||
|
TimeTicketDetails: (function () {
|
||||||
|
const ticketSource = Array.isArray(job.timetickets)
|
||||||
|
? job.timetickets
|
||||||
|
: job.timetickets
|
||||||
|
? [job.timetickets]
|
||||||
|
: [];
|
||||||
|
if (ticketSource.length === 0) return { timeticket: [] };
|
||||||
|
return {
|
||||||
|
timeticket: ticketSource.map((ticket = {}) => ({
|
||||||
|
date: ticket.date || "",
|
||||||
|
employee:
|
||||||
|
ticket.employee && ticket.employee.employee_number
|
||||||
|
? ticket.employee.employee_number
|
||||||
|
.trim()
|
||||||
|
.concat(" - ", ticket.employee.first_name.trim(), " ", ticket.employee.last_name.trim())
|
||||||
|
.trim()
|
||||||
|
: "",
|
||||||
|
productive_hrs: ticket.productivehrs ?? 0,
|
||||||
|
actual_hrs: ticket.actualhrs ?? 0,
|
||||||
|
cost_center: ticket.cost_center || "",
|
||||||
|
flat_rate: ticket.flat_rate || false,
|
||||||
|
rate: ticket.rate ?? 0,
|
||||||
|
ticket_cost: ticket.flat_rate
|
||||||
|
? ticket.rate * (ticket.productivehrs || 0)
|
||||||
|
: ticket.rate * (ticket.actualhrs || 0)
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
})(),
|
||||||
Sales: {
|
Sales: {
|
||||||
Labour: {
|
Labour: {
|
||||||
Aluminum: Dinero(job.job_totals.rates.laa.total).toFormat(DineroFormat),
|
Aluminum: Dinero(job.job_totals.rates.laa.total).toFormat(DineroFormat),
|
||||||
@@ -636,42 +726,3 @@ const CreateCosts = (job) => {
|
|||||||
}, 0)
|
}, 0)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const CreateJobLines = (joblines) => {
|
|
||||||
const repairLines = [];
|
|
||||||
joblines.forEach((jobline) => {
|
|
||||||
repairLines.push({
|
|
||||||
line_description: jobline.line_desc,
|
|
||||||
oem_part_no: jobline.oem_partno,
|
|
||||||
alt_part_no: jobline.alt_partno,
|
|
||||||
op_code_desc: jobline.op_code_desc,
|
|
||||||
part_type: jobline.part_type,
|
|
||||||
part_qty: jobline.part_qty,
|
|
||||||
part_price: jobline.act_price,
|
|
||||||
labor_type: jobline.mod_lbr_ty,
|
|
||||||
labor_hours: jobline.mod_lb_hrs,
|
|
||||||
labor_sale: jobline.lbr_amt
|
|
||||||
});
|
|
||||||
});
|
|
||||||
return repairLines;
|
|
||||||
};
|
|
||||||
|
|
||||||
const CreateTimeTickets = (timetickets) => {
|
|
||||||
const timeTickets = [];
|
|
||||||
timetickets.forEach((ticket) => {
|
|
||||||
timeTickets.push({
|
|
||||||
date: ticket.date,
|
|
||||||
employee: ticket.employee.employee_number
|
|
||||||
.trim()
|
|
||||||
.concat(" - ", ticket.employee.first_name.trim(), " ", ticket.employee.last_name.trim())
|
|
||||||
.trim(),
|
|
||||||
productive_hrs: ticket.productivehrs,
|
|
||||||
actual_hrs: ticket.actualhrs,
|
|
||||||
cost_center: ticket.cost_center,
|
|
||||||
flat_rate: ticket.flat_rate,
|
|
||||||
rate: ticket.rate,
|
|
||||||
ticket_cost: ticket.flat_rate ? ticket.rate * ticket.productive_hrs : ticket.rate * ticket.actual_hrs
|
|
||||||
});
|
|
||||||
});
|
|
||||||
return timeTickets;
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -1219,7 +1219,7 @@ query ENTEGRAL_EXPORT($bodyshopid: uuid!) {
|
|||||||
}`;
|
}`;
|
||||||
|
|
||||||
exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uuid!, $end: timestamptz) {
|
exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uuid!, $end: timestamptz) {
|
||||||
bodyshops_by_pk(id: $bodyshopid){
|
bodyshops_by_pk(id: $bodyshopid) {
|
||||||
id
|
id
|
||||||
shopname
|
shopname
|
||||||
address1
|
address1
|
||||||
@@ -1246,15 +1246,24 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
|
|||||||
bills {
|
bills {
|
||||||
billlines {
|
billlines {
|
||||||
actual_cost
|
actual_cost
|
||||||
|
actual_price
|
||||||
cost_center
|
cost_center
|
||||||
|
deductedfromlbr
|
||||||
id
|
id
|
||||||
|
line_desc
|
||||||
quantity
|
quantity
|
||||||
}
|
}
|
||||||
|
date
|
||||||
federal_tax_rate
|
federal_tax_rate
|
||||||
id
|
id
|
||||||
is_credit_memo
|
is_credit_memo
|
||||||
|
invoice_number
|
||||||
|
isinhouse
|
||||||
local_tax_rate
|
local_tax_rate
|
||||||
state_tax_rate
|
state_tax_rate
|
||||||
|
vendor {
|
||||||
|
name
|
||||||
|
}
|
||||||
}
|
}
|
||||||
created_at
|
created_at
|
||||||
clm_no
|
clm_no
|
||||||
@@ -1296,7 +1305,7 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
|
|||||||
joblines(where: {removed: {_eq: false}}) {
|
joblines(where: {removed: {_eq: false}}) {
|
||||||
act_price
|
act_price
|
||||||
alt_partno
|
alt_partno
|
||||||
billlines(order_by: {bill: {date: desc_nulls_last}} limit: 1) {
|
billlines(order_by: {bill: {date: desc_nulls_last}}, limit: 1) {
|
||||||
actual_cost
|
actual_cost
|
||||||
actual_price
|
actual_price
|
||||||
quantity
|
quantity
|
||||||
@@ -1319,8 +1328,8 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
|
|||||||
mod_lbr_ty
|
mod_lbr_ty
|
||||||
oem_partno
|
oem_partno
|
||||||
op_code_desc
|
op_code_desc
|
||||||
parts_order_lines(order_by: {parts_order: {order_date: desc_nulls_last}} limit: 1){
|
parts_order_lines(order_by: {parts_order: {order_date: desc_nulls_last}}, limit: 1) {
|
||||||
parts_order{
|
parts_order {
|
||||||
id
|
id
|
||||||
order_date
|
order_date
|
||||||
}
|
}
|
||||||
@@ -1339,6 +1348,14 @@ exports.KAIZEN_QUERY = `query KAIZEN_EXPORT($start: timestamptz, $bodyshopid: uu
|
|||||||
jobid
|
jobid
|
||||||
totalliquidcost
|
totalliquidcost
|
||||||
}
|
}
|
||||||
|
notes {
|
||||||
|
created_at
|
||||||
|
created_by
|
||||||
|
critical
|
||||||
|
private
|
||||||
|
text
|
||||||
|
type
|
||||||
|
}
|
||||||
ownr_addr1
|
ownr_addr1
|
||||||
ownr_addr2
|
ownr_addr2
|
||||||
ownr_city
|
ownr_city
|
||||||
@@ -2204,16 +2221,18 @@ exports.UPDATE_OLD_TRANSITION = `mutation UPDATE_OLD_TRANSITION($jobid: uuid!, $
|
|||||||
|
|
||||||
exports.INSERT_NEW_TRANSITION = (
|
exports.INSERT_NEW_TRANSITION = (
|
||||||
includeOldTransition
|
includeOldTransition
|
||||||
) => `mutation INSERT_NEW_TRANSITION($newTransition: transitions_insert_input!, ${includeOldTransition ? `$oldTransitionId: uuid!, $duration: numeric` : ""
|
) => `mutation INSERT_NEW_TRANSITION($newTransition: transitions_insert_input!, ${
|
||||||
}) {
|
includeOldTransition ? `$oldTransitionId: uuid!, $duration: numeric` : ""
|
||||||
|
}) {
|
||||||
insert_transitions_one(object: $newTransition) {
|
insert_transitions_one(object: $newTransition) {
|
||||||
id
|
id
|
||||||
}
|
}
|
||||||
${includeOldTransition
|
${
|
||||||
? `update_transitions(where: {id: {_eq: $oldTransitionId}}, _set: {duration: $duration}) {
|
includeOldTransition
|
||||||
|
? `update_transitions(where: {id: {_eq: $oldTransitionId}}, _set: {duration: $duration}) {
|
||||||
affected_rows
|
affected_rows
|
||||||
}`
|
}`
|
||||||
: ""
|
: ""
|
||||||
}
|
}
|
||||||
}`;
|
}`;
|
||||||
|
|
||||||
@@ -3152,11 +3171,10 @@ exports.DELETE_PHONE_NUMBER_OPT_OUT = `
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
||||||
exports.INSERT_MEDIA_ANALYTICS = `
|
exports.INSERT_MEDIA_ANALYTICS = `
|
||||||
mutation INSERT_MEDIA_ANALYTICS($mediaObject: media_analytics_insert_input!) {
|
mutation INSERT_MEDIA_ANALYTICS($mediaObject: media_analytics_insert_input!) {
|
||||||
insert_media_analytics_one(object: $mediaObject) {
|
insert_media_analytics_one(object: $mediaObject) {
|
||||||
id
|
id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`;
|
||||||
|
|||||||
Reference in New Issue
Block a user