Added memo to time ticket IO-485
This commit is contained in:
@@ -18940,6 +18940,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>discrepancy</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>
|
||||||
<concept_node>
|
<concept_node>
|
||||||
<name>joblinestotal</name>
|
<name>joblinestotal</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
|
|||||||
@@ -46,51 +46,63 @@ export default function JobReconciliationTotals({
|
|||||||
}, [billLines, jobLines, selectedBillLines, selectedJobLines]);
|
}, [billLines, jobLines, selectedBillLines, selectedJobLines]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div style={{ display: "inline-block" }}>
|
||||||
<Space direction="horizontal">
|
<div>
|
||||||
<Statistic
|
<Space>
|
||||||
title={t("jobs.labels.reconciliation.joblinestotal")}
|
<Statistic
|
||||||
value={totals.joblinesTotal.toFormat()}
|
title={t("jobs.labels.reconciliation.joblinestotal")}
|
||||||
/>
|
value={totals.joblinesTotal.toFormat()}
|
||||||
<Statistic
|
/>
|
||||||
title={t("jobs.labels.reconciliation.billlinestotal")}
|
<Statistic
|
||||||
value={totals.billLinesTotal.toFormat()}
|
title={t("jobs.labels.reconciliation.billlinestotal")}
|
||||||
/>
|
value={totals.billLinesTotal.toFormat()}
|
||||||
<Button
|
/>
|
||||||
onClick={() =>
|
<Statistic
|
||||||
reconcileByAssocLine(
|
title={t("jobs.labels.reconciliation.discrepancy")}
|
||||||
jobLines,
|
value={totals.joblinesTotal
|
||||||
jobLineState,
|
.subtract(totals.billLinesTotal)
|
||||||
billLines,
|
.toFormat()}
|
||||||
billLineState,
|
/>
|
||||||
setErrors
|
</Space>
|
||||||
)
|
</div>
|
||||||
}
|
<div>
|
||||||
>
|
<Space direction="horizontal">
|
||||||
{t("jobs.labels.reconciliation.byassoc")}
|
<Button
|
||||||
</Button>
|
onClick={() =>
|
||||||
<Button
|
reconcileByAssocLine(
|
||||||
onClick={() =>
|
jobLines,
|
||||||
reconcileByPrice(
|
jobLineState,
|
||||||
jobLines,
|
billLines,
|
||||||
jobLineState,
|
billLineState,
|
||||||
billLines,
|
setErrors
|
||||||
billLineState,
|
)
|
||||||
setErrors
|
}
|
||||||
)
|
>
|
||||||
}
|
{t("jobs.labels.reconciliation.byassoc")}
|
||||||
>
|
</Button>
|
||||||
{t("jobs.labels.reconciliation.byprice")}
|
<Button
|
||||||
</Button>
|
onClick={() =>
|
||||||
<Button
|
reconcileByPrice(
|
||||||
onClick={() => {
|
jobLines,
|
||||||
jobLineState[1]([]);
|
jobLineState,
|
||||||
billLineState[1]([]);
|
billLines,
|
||||||
}}
|
billLineState,
|
||||||
>
|
setErrors
|
||||||
{t("jobs.labels.reconciliation.clear")}
|
)
|
||||||
</Button>
|
}
|
||||||
</Space>
|
>
|
||||||
|
{t("jobs.labels.reconciliation.byprice")}
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
onClick={() => {
|
||||||
|
jobLineState[1]([]);
|
||||||
|
billLineState[1]([]);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{t("jobs.labels.reconciliation.clear")}
|
||||||
|
</Button>
|
||||||
|
</Space>
|
||||||
|
</div>
|
||||||
{errors.length > 0 && (
|
{errors.length > 0 && (
|
||||||
<div>
|
<div>
|
||||||
{t("general.labels.errors")}
|
{t("general.labels.errors")}
|
||||||
|
|||||||
@@ -98,6 +98,14 @@ export default function TimeTicketList({
|
|||||||
sortOrder:
|
sortOrder:
|
||||||
state.sortedInfo.columnKey === "actualhrs" && state.sortedInfo.order,
|
state.sortedInfo.columnKey === "actualhrs" && state.sortedInfo.order,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: t("timetickets.fields.memo"),
|
||||||
|
dataIndex: "memo",
|
||||||
|
key: "memo",
|
||||||
|
sorter: (a, b) => a.memo - b.memo,
|
||||||
|
sortOrder:
|
||||||
|
state.sortedInfo.columnKey === "memo" && state.sortedInfo.order,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: t("timetickets.fields.clockon"),
|
title: t("timetickets.fields.clockon"),
|
||||||
dataIndex: "clockon",
|
dataIndex: "clockon",
|
||||||
|
|||||||
@@ -124,6 +124,10 @@ export default function TimeTicketModalComponent({
|
|||||||
<InputNumber min={0} precision={1} />
|
<InputNumber min={0} precision={1} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
|
<Form.Item label={t("timetickets.fields.memo")} name="memo">
|
||||||
|
<Input />
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="ciecacode"
|
name="ciecacode"
|
||||||
label={t("timetickets.fields.ciecacode")}
|
label={t("timetickets.fields.ciecacode")}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export const QUERY_TICKETS_BY_JOBID = gql`
|
|||||||
rate
|
rate
|
||||||
productivehrs
|
productivehrs
|
||||||
id
|
id
|
||||||
|
memo
|
||||||
employee {
|
employee {
|
||||||
employee_number
|
employee_number
|
||||||
first_name
|
first_name
|
||||||
@@ -66,6 +67,7 @@ export const INSERT_NEW_TIME_TICKET = gql`
|
|||||||
actualhrs
|
actualhrs
|
||||||
ciecacode
|
ciecacode
|
||||||
date
|
date
|
||||||
|
memo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,6 +94,7 @@ export const UPDATE_TIME_TICKET = gql`
|
|||||||
updated_at
|
updated_at
|
||||||
jobid
|
jobid
|
||||||
date
|
date
|
||||||
|
memo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1145,6 +1145,7 @@
|
|||||||
"byassoc": "By Line Association",
|
"byassoc": "By Line Association",
|
||||||
"byprice": "By Price",
|
"byprice": "By Price",
|
||||||
"clear": "Clear All",
|
"clear": "Clear All",
|
||||||
|
"discrepancy": "Discrepancy",
|
||||||
"joblinestotal": "Job Lines Total",
|
"joblinestotal": "Job Lines Total",
|
||||||
"multipleactprices": "${{act_price}} is the price for multiple job lines.",
|
"multipleactprices": "${{act_price}} is the price for multiple job lines.",
|
||||||
"multiplebilllines": "{{line_desc}} has 2 or more bill lines associated to it.",
|
"multiplebilllines": "{{line_desc}} has 2 or more bill lines associated to it.",
|
||||||
|
|||||||
@@ -1145,6 +1145,7 @@
|
|||||||
"byassoc": "",
|
"byassoc": "",
|
||||||
"byprice": "",
|
"byprice": "",
|
||||||
"clear": "",
|
"clear": "",
|
||||||
|
"discrepancy": "",
|
||||||
"joblinestotal": "",
|
"joblinestotal": "",
|
||||||
"multipleactprices": "",
|
"multipleactprices": "",
|
||||||
"multiplebilllines": "",
|
"multiplebilllines": "",
|
||||||
|
|||||||
@@ -1145,6 +1145,7 @@
|
|||||||
"byassoc": "",
|
"byassoc": "",
|
||||||
"byprice": "",
|
"byprice": "",
|
||||||
"clear": "",
|
"clear": "",
|
||||||
|
"discrepancy": "",
|
||||||
"joblinestotal": "",
|
"joblinestotal": "",
|
||||||
"multipleactprices": "",
|
"multipleactprices": "",
|
||||||
"multiplebilllines": "",
|
"multiplebilllines": "",
|
||||||
|
|||||||
Reference in New Issue
Block a user