IO-1846 add prior succesful export indicator.

This commit is contained in:
Patrick Fic
2022-04-26 15:25:51 -07:00
parent 39b7280595
commit 15cdcdfbea
8 changed files with 64 additions and 19 deletions

View File

@@ -14493,6 +14493,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>priorsuccesfulexport</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> </children>
</folder_node> </folder_node>
</children> </children>

View File

@@ -13,6 +13,7 @@ import QboAuthorizeComponent from "../qbo-authorize/qbo-authorize.component";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import ExportLogsCountDisplay from "../export-logs-count-display/export-logs-count-display.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -131,11 +132,9 @@ export function AccountingPayablesTableComponent({ bodyshop, loading, bills }) {
dataIndex: "attempts", dataIndex: "attempts",
key: "attempts", key: "attempts",
render: (text, record) => { render: (text, record) => (
const success = record.exportlogs.filter((e) => e.successful).length; <ExportLogsCountDisplay logs={record.exportlogs} />
const attempts = record.exportlogs.length; ),
return `${success}/${attempts}`;
},
}, },
{ {
title: t("general.labels.actions"), title: t("general.labels.actions"),

View File

@@ -13,6 +13,7 @@ import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component"; import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
import ExportLogsCountDisplay from "../export-logs-count-display/export-logs-count-display.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -130,11 +131,9 @@ export function AccountingPayablesTableComponent({
dataIndex: "attempts", dataIndex: "attempts",
key: "attempts", key: "attempts",
render: (text, record) => { render: (text, record) => (
const success = record.exportlogs.filter((e) => e.successful).length; <ExportLogsCountDisplay logs={record.exportlogs} />
const attempts = record.exportlogs.length; ),
return `${success}/${attempts}`;
},
}, },
{ {
title: t("general.labels.actions"), title: t("general.labels.actions"),

View File

@@ -14,6 +14,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors";
import QboAuthorizeComponent from "../qbo-authorize/qbo-authorize.component"; import QboAuthorizeComponent from "../qbo-authorize/qbo-authorize.component";
import { DateFormatter } from "../../utils/DateFormatter"; import { DateFormatter } from "../../utils/DateFormatter";
import OwnerNameDisplay from "../owner-name-display/owner-name-display.component"; import OwnerNameDisplay from "../owner-name-display/owner-name-display.component";
import ExportLogsCountDisplay from "../export-logs-count-display/export-logs-count-display.component";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -139,12 +140,9 @@ export function AccountingReceivablesTableComponent({
title: t("exportlogs.labels.attempts"), title: t("exportlogs.labels.attempts"),
dataIndex: "attempts", dataIndex: "attempts",
key: "attempts", key: "attempts",
render: (text, record) => (
render: (text, record) => { <ExportLogsCountDisplay logs={record.exportlogs} />
const success = record.exportlogs.filter((e) => e.successful).length; ),
const attempts = record.exportlogs.length;
return `${success}/${attempts}`;
},
}, },
{ {
title: t("general.labels.actions"), title: t("general.labels.actions"),

View File

@@ -0,0 +1,25 @@
import React from "react";
import { WarningOutlined } from "@ant-design/icons";
import { Space, Tooltip } from "antd";
import { useTranslation } from "react-i18next";
const style = {
fontWeight: "bold",
color: "green",
};
export default function ExportLogsCountDisplay({ logs }) {
const success = logs.filter((e) => e.successful).length;
const attempts = logs.length;
const { t } = useTranslation();
return (
<Space style={success > 0 ? style : {}}>
{`${success}/${attempts}`}
{success > 0 && (
<Tooltip title={t("exportlogs.labels.priorsuccesfulexport")}>
<WarningOutlined />
</Tooltip>
)}
</Space>
);
}

View File

@@ -912,7 +912,8 @@
"createdat": "Created At" "createdat": "Created At"
}, },
"labels": { "labels": {
"attempts": "Export Attempts" "attempts": "Export Attempts",
"priorsuccesfulexport": "This record has previously been exported successfully. Please make sure it has already been deleted in the target system."
} }
}, },
"general": { "general": {

View File

@@ -912,7 +912,8 @@
"createdat": "" "createdat": ""
}, },
"labels": { "labels": {
"attempts": "" "attempts": "",
"priorsuccesfulexport": ""
} }
}, },
"general": { "general": {

View File

@@ -912,7 +912,8 @@
"createdat": "" "createdat": ""
}, },
"labels": { "labels": {
"attempts": "" "attempts": "",
"priorsuccesfulexport": ""
} }
}, },
"general": { "general": {