@@ -22,9 +22,20 @@ export function JoblinePresetButton({ bodyshop, form }) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const menu = (
|
const menu = (
|
||||||
<Menu>
|
<Menu
|
||||||
|
style={{
|
||||||
|
columnCount: Math.max(
|
||||||
|
Math.floor(bodyshop.md_jobline_presets.length / 15),
|
||||||
|
1
|
||||||
|
),
|
||||||
|
}}
|
||||||
|
>
|
||||||
{bodyshop.md_jobline_presets.map((i, idx) => (
|
{bodyshop.md_jobline_presets.map((i, idx) => (
|
||||||
<Menu.Item onClick={() => handleSelect(i)} key={idx}>
|
<Menu.Item
|
||||||
|
onClick={() => handleSelect(i)}
|
||||||
|
key={idx}
|
||||||
|
style={{ breakInside: "avoid" }}
|
||||||
|
>
|
||||||
{i.label}
|
{i.label}
|
||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ function OwnerDetailJobsComponent({ bodyshop, owner }) {
|
|||||||
render: (text, record) =>
|
render: (text, record) =>
|
||||||
record.vehicleid ? (
|
record.vehicleid ? (
|
||||||
<Link to={`/manage/vehicles/${record.vehicleid}`}>
|
<Link to={`/manage/vehicles/${record.vehicleid}`}>
|
||||||
{`${record.v_model_yr} ${record.v_make_desc} ${record.v_model_desc}`}
|
{`${record.v_model_yr || ""} ${record.v_make_desc || ""} ${
|
||||||
|
record.v_model_desc || ""
|
||||||
|
}`.trim()}
|
||||||
</Link>
|
</Link>
|
||||||
) : (
|
) : (
|
||||||
t("jobs.errors.novehicle")
|
t("jobs.errors.novehicle")
|
||||||
|
|||||||
@@ -39,9 +39,11 @@ export function VehicleDetailContainer({
|
|||||||
document.title = t("titles.vehicledetail", {
|
document.title = t("titles.vehicledetail", {
|
||||||
vehicle:
|
vehicle:
|
||||||
data && data.vehicles_by_pk
|
data && data.vehicles_by_pk
|
||||||
? `${data.vehicles_by_pk && data.vehicles_by_pk.v_model_yr} ${
|
? `${(data.vehicles_by_pk && data.vehicles_by_pk.v_model_yr) || ""} ${
|
||||||
data.vehicles_by_pk && data.vehicles_by_pk.v_make_desc
|
(data.vehicles_by_pk && data.vehicles_by_pk.v_make_desc) || ""
|
||||||
} ${data.vehicles_by_pk && data.vehicles_by_pk.v_model_desc}`
|
} ${
|
||||||
|
(data.vehicles_by_pk && data.vehicles_by_pk.v_model_desc) || ""
|
||||||
|
}`
|
||||||
: "",
|
: "",
|
||||||
});
|
});
|
||||||
setSelectedHeader("vehicles");
|
setSelectedHeader("vehicles");
|
||||||
@@ -53,7 +55,14 @@ export function VehicleDetailContainer({
|
|||||||
label: t("titles.bc.vehicle-details", {
|
label: t("titles.bc.vehicle-details", {
|
||||||
vehicle:
|
vehicle:
|
||||||
data && data.vehicles_by_pk
|
data && data.vehicles_by_pk
|
||||||
? `${data.vehicles_by_pk.v_model_yr} ${data.vehicles_by_pk.v_make_desc} ${data.vehicles_by_pk.v_model_desc}`
|
? `${
|
||||||
|
(data.vehicles_by_pk && data.vehicles_by_pk.v_model_yr) || ""
|
||||||
|
} ${
|
||||||
|
(data.vehicles_by_pk && data.vehicles_by_pk.v_make_desc) || ""
|
||||||
|
} ${
|
||||||
|
(data.vehicles_by_pk && data.vehicles_by_pk.v_model_desc) ||
|
||||||
|
""
|
||||||
|
}`
|
||||||
: "",
|
: "",
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
@@ -64,7 +73,11 @@ export function VehicleDetailContainer({
|
|||||||
CreateRecentItem(
|
CreateRecentItem(
|
||||||
vehId,
|
vehId,
|
||||||
"vehicle",
|
"vehicle",
|
||||||
`${data.vehicles_by_pk.v_vin} | ${data.vehicles_by_pk.v_model_yr} ${data.vehicles_by_pk.v_make_desc} ${data.vehicles_by_pk.v_model_desc}`,
|
`${data.vehicles_by_pk.v_vin || "N/A"} | ${
|
||||||
|
data.vehicles_by_pk.v_model_yr || ""
|
||||||
|
} ${data.vehicles_by_pk.v_make_desc || ""} ${
|
||||||
|
data.vehicles_by_pk.v_model_desc || ""
|
||||||
|
}`.trim(),
|
||||||
`/manage/vehicles/${vehId}`
|
`/manage/vehicles/${vehId}`
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2486,6 +2486,8 @@
|
|||||||
"production_by_technician": "Production by Technician",
|
"production_by_technician": "Production by Technician",
|
||||||
"production_by_technician_one": "Production filtered by Technician",
|
"production_by_technician_one": "Production filtered by Technician",
|
||||||
"psr_by_make": "Percent of Sales by Vehicle Make",
|
"psr_by_make": "Percent of Sales by Vehicle Make",
|
||||||
|
"purchase_return_ratio_grouped_by_vendor_detail": "Purchase & Return Ratio by Vendor (Detail)",
|
||||||
|
"purchase_return_ratio_grouped_by_vendor_summary": "Purchase & Return Ratio by Vendor (Summary)",
|
||||||
"purchases_by_cost_center_detail": "Purchases by Cost Center (Detail)",
|
"purchases_by_cost_center_detail": "Purchases by Cost Center (Detail)",
|
||||||
"purchases_by_cost_center_summary": "Purchases by Cost Center (Summary)",
|
"purchases_by_cost_center_summary": "Purchases by Cost Center (Summary)",
|
||||||
"purchases_by_date_range_detail": "Purchases by Date - Detail",
|
"purchases_by_date_range_detail": "Purchases by Date - Detail",
|
||||||
|
|||||||
@@ -2486,6 +2486,8 @@
|
|||||||
"production_by_technician": "",
|
"production_by_technician": "",
|
||||||
"production_by_technician_one": "",
|
"production_by_technician_one": "",
|
||||||
"psr_by_make": "",
|
"psr_by_make": "",
|
||||||
|
"purchase_return_ratio_grouped_by_vendor_detail": "",
|
||||||
|
"purchase_return_ratio_grouped_by_vendor_summary": "",
|
||||||
"purchases_by_cost_center_detail": "",
|
"purchases_by_cost_center_detail": "",
|
||||||
"purchases_by_cost_center_summary": "",
|
"purchases_by_cost_center_summary": "",
|
||||||
"purchases_by_date_range_detail": "",
|
"purchases_by_date_range_detail": "",
|
||||||
|
|||||||
@@ -2486,6 +2486,8 @@
|
|||||||
"production_by_technician": "",
|
"production_by_technician": "",
|
||||||
"production_by_technician_one": "",
|
"production_by_technician_one": "",
|
||||||
"psr_by_make": "",
|
"psr_by_make": "",
|
||||||
|
"purchase_return_ratio_grouped_by_vendor_detail": "",
|
||||||
|
"purchase_return_ratio_grouped_by_vendor_summary": "",
|
||||||
"purchases_by_cost_center_detail": "",
|
"purchases_by_cost_center_detail": "",
|
||||||
"purchases_by_cost_center_summary": "",
|
"purchases_by_cost_center_summary": "",
|
||||||
"purchases_by_date_range_detail": "",
|
"purchases_by_date_range_detail": "",
|
||||||
|
|||||||
@@ -1813,6 +1813,34 @@ export const TemplateList = (type, context) => {
|
|||||||
},
|
},
|
||||||
group: "jobs",
|
group: "jobs",
|
||||||
},
|
},
|
||||||
|
purchase_return_ratio_grouped_by_vendor_detail: {
|
||||||
|
title: i18n.t("reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail"),
|
||||||
|
subject: i18n.t(
|
||||||
|
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_detail"
|
||||||
|
),
|
||||||
|
key: "purchase_return_ratio_grouped_by_vendor_detail",
|
||||||
|
//idtype: "vendor",
|
||||||
|
disabled: false,
|
||||||
|
rangeFilter: {
|
||||||
|
object: i18n.t("reportcenter.labels.objects.bills"),
|
||||||
|
field: i18n.t("bills.fields.date"),
|
||||||
|
},
|
||||||
|
group: "purchases",
|
||||||
|
},
|
||||||
|
purchase_return_ratio_grouped_by_vendor_summary: {
|
||||||
|
title: i18n.t("reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary"),
|
||||||
|
subject: i18n.t(
|
||||||
|
"reportcenter.templates.purchase_return_ratio_grouped_by_vendor_summary"
|
||||||
|
),
|
||||||
|
key: "purchase_return_ratio_grouped_by_vendor_summary",
|
||||||
|
//idtype: "vendor",
|
||||||
|
disabled: false,
|
||||||
|
rangeFilter: {
|
||||||
|
object: i18n.t("reportcenter.labels.objects.bills"),
|
||||||
|
field: i18n.t("bills.fields.date"),
|
||||||
|
},
|
||||||
|
group: "purchases",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
: {}),
|
: {}),
|
||||||
...(!type || type === "courtesycarcontract"
|
...(!type || type === "courtesycarcontract"
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
DROP INDEX IF EXISTS "public"."exportlog_billid";
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
CREATE INDEX "exportlog_billid" on
|
||||||
|
"public"."exportlog" using btree ("billid");
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
DROP INDEX IF EXISTS "public"."exportlog_jobid";
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
CREATE INDEX "exportlog_jobid" on
|
||||||
|
"public"."exportlog" using btree ("jobid");
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
DROP INDEX IF EXISTS "public"."exportlog_payments";
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
CREATE INDEX "exportlog_payments" on
|
||||||
|
"public"."exportlog" using btree ("paymentid");
|
||||||
Reference in New Issue
Block a user