Merged in feature/america (pull request #791)

feature/america

Approved-by: Patrick Fic
This commit is contained in:
Patrick Fic
2023-05-17 20:49:37 +00:00
15 changed files with 892 additions and 56 deletions

View File

@@ -1009,6 +1009,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>smspaymentreminder</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>suggesteddates</name> <name>suggesteddates</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -1516,6 +1537,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>failedpayment</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>jobassignmentchange</name> <name>jobassignmentchange</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -8389,6 +8431,27 @@
<folder_node> <folder_node>
<name>ssbuckets</name> <name>ssbuckets</name>
<children> <children>
<concept_node>
<name>color</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>gte</name> <name>gte</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -18947,6 +19010,325 @@
</folder_node> </folder_node>
</children> </children>
</folder_node> </folder_node>
<folder_node>
<name>job_payments</name>
<children>
<folder_node>
<name>buttons</name>
<children>
<concept_node>
<name>goback</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>
<name>proceedtopayment</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>
<name>refundpayment</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>
</folder_node>
<folder_node>
<name>notifications</name>
<children>
<folder_node>
<name>error</name>
<children>
<concept_node>
<name>description</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>
<name>title</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>
</folder_node>
</children>
</folder_node>
<folder_node>
<name>titles</name>
<children>
<concept_node>
<name>amount</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>
<name>dateOfPayment</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>
<name>descriptions</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>
<name>payer</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>
<name>payername</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>
<name>paymentid</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>
<name>paymenttype</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>
<name>refundamount</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>
<name>transactionid</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>
</folder_node>
</children>
</folder_node>
<folder_node> <folder_node>
<name>joblines</name> <name>joblines</name>
<children> <children>
@@ -32119,6 +32501,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>entercardpayment</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>enterpayment</name> <name>enterpayment</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -32350,6 +32753,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>paymentremindersms</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>phonebook</name> <name>phonebook</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -34158,6 +34582,179 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>type</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>
<folder_node>
<name>types</name>
<children>
<concept_node>
<name>customer</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>
<name>general</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>
<name>office</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>
<name>paint</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>
<name>parts</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>
<name>shop</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>
<name>supplement</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>
</folder_node>
<concept_node> <concept_node>
<name>updatedat</name> <name>updatedat</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -40461,6 +41058,27 @@
</folder_node> </folder_node>
</children> </children>
</folder_node> </folder_node>
<concept_node>
<name>cardcolor</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>cardsettings</name> <name>cardsettings</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>
@@ -40671,6 +41289,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>legend</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>note</name> <name>note</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -219,13 +219,15 @@ export function JobsConvertButton({
</Select> </Select>
</Form.Item> </Form.Item>
)} )}
<Form.Item {bodyshop.region_config.toLowerCase().startsWith("ca") && (
label={t("jobs.fields.ca_gst_registrant")} <Form.Item
name="ca_gst_registrant" label={t("jobs.fields.ca_gst_registrant")}
valuePropName="checked" name="ca_gst_registrant"
> valuePropName="checked"
<Switch /> >
</Form.Item> <Switch />
</Form.Item>
)}
<Form.Item <Form.Item
label={t("jobs.fields.driveable")} label={t("jobs.fields.driveable")}
name="driveable" name="driveable"

View File

@@ -224,13 +224,15 @@ export function JobsCreateJobsInfo({ bodyshop, form, selected }) {
> >
<CurrencyInput /> <CurrencyInput />
</Form.Item> </Form.Item>
<Form.Item {bodyshop.region_config.toLowerCase().startsWith("ca") && (
label={t("jobs.fields.ca_gst_registrant")} <Form.Item
name="ca_gst_registrant" label={t("jobs.fields.ca_gst_registrant")}
valuePropName="checked" name="ca_gst_registrant"
> valuePropName="checked"
<Switch /> >
</Form.Item> <Switch />
</Form.Item>
)}
<Form.Item <Form.Item
label={t("jobs.fields.other_amount_payable")} label={t("jobs.fields.other_amount_payable")}
name="other_amount_payable" name="other_amount_payable"

View File

@@ -40,24 +40,26 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
> >
<CurrencyInput disabled={jobRO} min={0} /> <CurrencyInput disabled={jobRO} min={0} />
</Form.Item> </Form.Item>
<Tooltip title={t("jobs.labels.ca_gst_all_if_null")}> {bodyshop.region_config.toLowerCase().startsWith("ca") && (
<Form.Item <Tooltip title={t("jobs.labels.ca_gst_all_if_null")}>
label={t("jobs.fields.ca_customer_gst")} <Form.Item
name="ca_customer_gst" label={t("jobs.fields.ca_customer_gst")}
> name="ca_customer_gst"
<CurrencyInput >
disabled={jobRO} <CurrencyInput
min={0} disabled={jobRO}
max={ min={0}
Math.round( max={
(job.job_totals && Math.round(
job.job_totals.totals.federal_tax.amount) || (job.job_totals &&
0 job.job_totals.totals.federal_tax.amount) ||
) / 100 0
} ) / 100
/> }
</Form.Item> />
</Tooltip> </Form.Item>
</Tooltip>
)}
<Form.Item <Form.Item
label={t("jobs.fields.other_amount_payable")} label={t("jobs.fields.other_amount_payable")}
name="other_amount_payable" name="other_amount_payable"
@@ -82,12 +84,14 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
> >
<CurrencyInput disabled={jobRO || bodyshop.cdk_dealerid} /> <CurrencyInput disabled={jobRO || bodyshop.cdk_dealerid} />
</Form.Item> </Form.Item>
<Space align="center"> {bodyshop.region_config === "CA_BC" && (
<Form.Item label={t("jobs.fields.ca_bc_pvrt")} name="ca_bc_pvrt"> <Space align="center">
<CurrencyInput disabled={jobRO} min={0} /> <Form.Item label={t("jobs.fields.ca_bc_pvrt")} name="ca_bc_pvrt">
</Form.Item> <CurrencyInput disabled={jobRO} min={0} />
<CABCpvrtCalculator form={form} disabled={jobRO} /> </Form.Item>
</Space> <CABCpvrtCalculator form={form} disabled={jobRO} />
</Space>
)}
<Form.Item <Form.Item
label={t("jobs.fields.auto_add_ats")} label={t("jobs.fields.auto_add_ats")}
name="auto_add_ats" name="auto_add_ats"
@@ -141,13 +145,15 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
> >
<InputNumber min={0} max={1} precision={2} disabled={jobRO} /> <InputNumber min={0} max={1} precision={2} disabled={jobRO} />
</Form.Item> </Form.Item>
<Form.Item {bodyshop.region_config.toLowerCase().startsWith("ca") && (
label={t("jobs.fields.ca_gst_registrant")} <Form.Item
name="ca_gst_registrant" label={t("jobs.fields.ca_gst_registrant")}
valuePropName="checked" name="ca_gst_registrant"
> valuePropName="checked"
<Switch disabled={jobRO} /> >
</Form.Item> <Switch disabled={jobRO} />
</Form.Item>
)}
</FormRow> </FormRow>
<Divider <Divider
orientation="left" orientation="left"

View File

@@ -75,6 +75,27 @@ export function JobNotesComponent({
</span> </span>
), ),
}, },
{
title: t("notes.fields.type"),
dataIndex: "type",
key: "type",
width: 120,
filteredValue: filter?.type || null,
filters: [
{ value: "general", text: t("notes.fields.types.general") },
{ value: "customer", text: t("notes.fields.types.customer") },
{ value: "shop", text: t("notes.fields.types.shop") },
{ value: "office", text: t("notes.fields.types.office") },
{ value: "parts", text: t("notes.fields.types.parts") },
{ value: "paint", text: t("notes.fields.types.paint") },
{
value: "supplement",
text: t("notes.fields.types.supplement"),
},
],
onFilter: (value, record) => value.includes(record.type),
render: (text, record) => t(`notes.fields.types.${record.type}`),
},
{ {
title: t("notes.fields.text"), title: t("notes.fields.text"),
dataIndex: "text", dataIndex: "text",
@@ -106,7 +127,7 @@ export function JobNotesComponent({
title: t("notes.actions.actions"), title: t("notes.actions.actions"),
dataIndex: "actions", dataIndex: "actions",
key: "actions", key: "actions",
width: 150, width: 200,
render: (text, record) => ( render: (text, record) => (
<Space wrap> <Space wrap>
<Button <Button

View File

@@ -207,7 +207,7 @@ export function LaborAllocationsTable({
<Card title={t("jobs.labels.laborallocations")}> <Card title={t("jobs.labels.laborallocations")}>
<Table <Table
columns={columns} columns={columns}
rowKey="cost_center" rowKey={(record) => `${record.cost_center} ${record.mod_lbr_ty}`}
pagination={false} pagination={false}
onChange={handleTableChange} onChange={handleTableChange}
dataSource={totals} dataSource={totals}

View File

@@ -1,4 +1,14 @@
import { Checkbox, Col, Form, Input, Row, Space, Switch, Tag } from "antd"; import {
Checkbox,
Col,
Form,
Input,
Row,
Select,
Space,
Switch,
Tag,
} from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
@@ -46,6 +56,28 @@ export function NoteUpsertModalComponent({ form, noteUpsertModal }) {
<Switch /> <Switch />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={8}>
<Form.Item
label={t("notes.fields.type")}
name="type"
initialValue="general"
>
<Select
options={[
{ value: "general", label: t("notes.fields.types.general") },
{ value: "customer", label: t("notes.fields.types.customer") },
{ value: "shop", label: t("notes.fields.types.shop") },
{ value: "office", label: t("notes.fields.types.office") },
{ value: "parts", label: t("notes.fields.types.parts") },
{ value: "paint", label: t("notes.fields.types.paint") },
{
value: "supplement",
label: t("notes.fields.types.supplement"),
},
]}
/>
</Form.Item>
</Col>
<Col span={8}> <Col span={8}>
<NotesPresetButton form={form} /> <NotesPresetButton form={form} />
</Col> </Col>

View File

@@ -13,6 +13,7 @@ export const INSERT_NEW_NOTE = gql`
text text
updated_at updated_at
audit audit
type
} }
} }
} }
@@ -41,6 +42,7 @@ export const QUERY_NOTES_BY_JOB_PK = gql`
text text
updated_at updated_at
audit audit
type
} }
} }
} }
@@ -60,6 +62,7 @@ export const UPDATE_NOTE = gql`
text text
updated_at updated_at
audit audit
type
} }
} }
} }

View File

@@ -63,6 +63,7 @@
"scheduledfor": "Scheduled appointment for: ", "scheduledfor": "Scheduled appointment for: ",
"severalerrorsfound": "Several jobs have issues which may prevent accurate smart scheduling. Click to expand.", "severalerrorsfound": "Several jobs have issues which may prevent accurate smart scheduling. Click to expand.",
"smartscheduling": "Smart Scheduling", "smartscheduling": "Smart Scheduling",
"smspaymentreminder": "This is {{shopname}} reminding you about your remaining balance of {{amount}}. To pay for the said balance click the link {{payment_link}}.",
"suggesteddates": "Suggested Dates" "suggesteddates": "Suggested Dates"
}, },
"successes": { "successes": {
@@ -103,6 +104,7 @@
"admin_jobunvoid": "ADMIN: Job has been unvoided.", "admin_jobunvoid": "ADMIN: Job has been unvoided.",
"billposted": "Bill with invoice number {{invoice_number}} posted.", "billposted": "Bill with invoice number {{invoice_number}} posted.",
"billupdated": "Bill with invoice number {{invoice_number}} updated.", "billupdated": "Bill with invoice number {{invoice_number}} updated.",
"failedpayment": "Failed payment attempt.",
"jobassignmentchange": "Employee {{name}} assigned to {{operation}}", "jobassignmentchange": "Employee {{name}} assigned to {{operation}}",
"jobassignmentremoved": "Employee assignment removed for {{operation}}", "jobassignmentremoved": "Employee assignment removed for {{operation}}",
"jobchecklist": "Checklist type \"{{type}}\" completed. In production set to {{inproduction}}. Status set to {{status}}.", "jobchecklist": "Checklist type \"{{type}}\" completed. In production set to {{inproduction}}. Status set to {{status}}.",
@@ -521,12 +523,12 @@
"dailyhrslimit": "Daily Incoming Hours Limit" "dailyhrslimit": "Daily Incoming Hours Limit"
}, },
"ssbuckets": { "ssbuckets": {
"color": "Job Color",
"gte": "Greater Than/Equal to (hrs)", "gte": "Greater Than/Equal to (hrs)",
"id": "ID", "id": "ID",
"label": "Label", "label": "Label",
"lt": "Less than (hrs)", "lt": "Less than (hrs)",
"target": "Target (count)", "target": "Target (count)"
"color": "Job Color"
}, },
"state": "Province/State", "state": "Province/State",
"state_tax_id": "Provincial/State Tax ID (PST, QST)", "state_tax_id": "Provincial/State Tax ID (PST, QST)",
@@ -1179,6 +1181,30 @@
"updated": "Inventory line updated." "updated": "Inventory line updated."
} }
}, },
"job_payments": {
"buttons": {
"goback": "Cancel",
"proceedtopayment": "Proceed to Payment",
"refundpayment": "Refund Payment"
},
"notifications": {
"error": {
"description": "Please try again. Make sure the refund amount does not exceeds the payment amount.",
"title": "Error Refunding Payment"
}
},
"titles": {
"amount": "Amount",
"dateOfPayment": "Date",
"descriptions": "Description",
"payer": "Payer",
"payername": "Payer Name",
"paymentid": "Payment ID",
"paymenttype": "Type",
"refundamount": "Refund Amount",
"transactionid": "Transaction ID"
}
},
"joblines": { "joblines": {
"actions": { "actions": {
"converttolabor": "Convert amount to Labor.", "converttolabor": "Convert amount to Labor.",
@@ -1289,7 +1315,7 @@
"addpayer": "Add Payer", "addpayer": "Add Payer",
"createnewcustomer": "Create New Customer", "createnewcustomer": "Create New Customer",
"findmakemodelcode": "Find Make/Model Code", "findmakemodelcode": "Find Make/Model Code",
"getmakes": "", "getmakes": "Get Makes",
"labels": { "labels": {
"refreshallocations": "Refresh this component to see the DMS allocations." "refreshallocations": "Refresh this component to see the DMS allocations."
}, },
@@ -1411,7 +1437,7 @@
"ded_amt": "Deductible", "ded_amt": "Deductible",
"ded_note": "Deductible Note", "ded_note": "Deductible Note",
"ded_status": "Deductible Status", "ded_status": "Deductible Status",
"depreciation_taxes": "Depreciation/Taxes", "depreciation_taxes": "Betterment/Depreciation/Taxes",
"dms": { "dms": {
"address": "Customer Address", "address": "Customer Address",
"amount": "Amount", "amount": "Amount",
@@ -1889,6 +1915,7 @@
"customers": "Customers", "customers": "Customers",
"dashboard": "Dashboard", "dashboard": "Dashboard",
"enterbills": "Enter Bills", "enterbills": "Enter Bills",
"entercardpayment": "Enter Card Payments",
"enterpayment": "Enter Payments", "enterpayment": "Enter Payments",
"entertimeticket": "Enter Time Tickets", "entertimeticket": "Enter Time Tickets",
"export": "Export", "export": "Export",
@@ -1900,6 +1927,7 @@
"newjob": "Create New Job", "newjob": "Create New Job",
"owners": "Owners", "owners": "Owners",
"parts-queue": "Parts Queue", "parts-queue": "Parts Queue",
"paymentremindersms": "Send Payment Reminder via SMS",
"phonebook": "Phonebook", "phonebook": "Phonebook",
"productionboard": "Production Board - Visual", "productionboard": "Production Board - Visual",
"productionlist": "Production Board - List", "productionlist": "Production Board - List",
@@ -2009,6 +2037,16 @@
"critical": "Critical", "critical": "Critical",
"private": "Private", "private": "Private",
"text": "Contents", "text": "Contents",
"type": "Type",
"types": {
"customer": "Customer",
"general": "General",
"office": "Office",
"paint": "Paint",
"parts": "Parts",
"shop": "Shop",
"supplement": "Supplement"
},
"updatedat": "Updated At" "updatedat": "Updated At"
}, },
"labels": { "labels": {
@@ -2399,6 +2437,7 @@
"qbo_usa": "QBO USA" "qbo_usa": "QBO USA"
} }
}, },
"cardcolor": "Card Colors",
"cardsettings": "Card Settings", "cardsettings": "Card Settings",
"clm_no": "Claim Number", "clm_no": "Claim Number",
"comment": "Comment", "comment": "Comment",
@@ -2409,6 +2448,7 @@
"ins_co_nm": "Insurance Company Name", "ins_co_nm": "Insurance Company Name",
"jobdetail": "Job Details", "jobdetail": "Job Details",
"laborhrs": "Labor Hours", "laborhrs": "Labor Hours",
"legend": "Legend:",
"note": "Production Note", "note": "Production Note",
"ownr_nm": "Owner Name", "ownr_nm": "Owner Name",
"paintpriority": "P/P", "paintpriority": "P/P",
@@ -2421,9 +2461,7 @@
"sublets": "Sublets", "sublets": "Sublets",
"totalhours": "Total Hrs ", "totalhours": "Total Hrs ",
"touchtime": "T/T", "touchtime": "T/T",
"viewname": "View Name", "viewname": "View Name"
"legend": "Legend:",
"cardcolor": "Card Colors"
}, },
"successes": { "successes": {
"removed": "Job removed from production." "removed": "Job removed from production."

View File

@@ -63,6 +63,7 @@
"scheduledfor": "Cita programada para:", "scheduledfor": "Cita programada para:",
"severalerrorsfound": "", "severalerrorsfound": "",
"smartscheduling": "", "smartscheduling": "",
"smspaymentreminder": "",
"suggesteddates": "" "suggesteddates": ""
}, },
"successes": { "successes": {
@@ -103,6 +104,7 @@
"admin_jobunvoid": "", "admin_jobunvoid": "",
"billposted": "", "billposted": "",
"billupdated": "", "billupdated": "",
"failedpayment": "",
"jobassignmentchange": "", "jobassignmentchange": "",
"jobassignmentremoved": "", "jobassignmentremoved": "",
"jobchecklist": "", "jobchecklist": "",
@@ -521,6 +523,7 @@
"dailyhrslimit": "" "dailyhrslimit": ""
}, },
"ssbuckets": { "ssbuckets": {
"color": "",
"gte": "", "gte": "",
"id": "", "id": "",
"label": "", "label": "",
@@ -1178,6 +1181,30 @@
"updated": "" "updated": ""
} }
}, },
"job_payments": {
"buttons": {
"goback": "",
"proceedtopayment": "",
"refundpayment": ""
},
"notifications": {
"error": {
"description": "",
"title": ""
}
},
"titles": {
"amount": "",
"dateOfPayment": "",
"descriptions": "",
"payer": "",
"payername": "",
"paymentid": "",
"paymenttype": "",
"refundamount": "",
"transactionid": ""
}
},
"joblines": { "joblines": {
"actions": { "actions": {
"converttolabor": "", "converttolabor": "",
@@ -1888,6 +1915,7 @@
"customers": "Clientes", "customers": "Clientes",
"dashboard": "", "dashboard": "",
"enterbills": "", "enterbills": "",
"entercardpayment": "",
"enterpayment": "", "enterpayment": "",
"entertimeticket": "", "entertimeticket": "",
"export": "", "export": "",
@@ -1899,6 +1927,7 @@
"newjob": "", "newjob": "",
"owners": "propietarios", "owners": "propietarios",
"parts-queue": "", "parts-queue": "",
"paymentremindersms": "",
"phonebook": "", "phonebook": "",
"productionboard": "", "productionboard": "",
"productionlist": "", "productionlist": "",
@@ -2008,6 +2037,16 @@
"critical": "Crítico", "critical": "Crítico",
"private": "Privado", "private": "Privado",
"text": "Contenido", "text": "Contenido",
"type": "",
"types": {
"customer": "",
"general": "",
"office": "",
"paint": "",
"parts": "",
"shop": "",
"supplement": ""
},
"updatedat": "Actualizado en" "updatedat": "Actualizado en"
}, },
"labels": { "labels": {
@@ -2398,6 +2437,7 @@
"qbo_usa": "" "qbo_usa": ""
} }
}, },
"cardcolor": "",
"cardsettings": "", "cardsettings": "",
"clm_no": "", "clm_no": "",
"comment": "", "comment": "",
@@ -2408,6 +2448,7 @@
"ins_co_nm": "", "ins_co_nm": "",
"jobdetail": "", "jobdetail": "",
"laborhrs": "", "laborhrs": "",
"legend": "",
"note": "", "note": "",
"ownr_nm": "", "ownr_nm": "",
"paintpriority": "", "paintpriority": "",

View File

@@ -63,6 +63,7 @@
"scheduledfor": "Rendez-vous prévu pour:", "scheduledfor": "Rendez-vous prévu pour:",
"severalerrorsfound": "", "severalerrorsfound": "",
"smartscheduling": "", "smartscheduling": "",
"smspaymentreminder": "",
"suggesteddates": "" "suggesteddates": ""
}, },
"successes": { "successes": {
@@ -103,6 +104,7 @@
"admin_jobunvoid": "", "admin_jobunvoid": "",
"billposted": "", "billposted": "",
"billupdated": "", "billupdated": "",
"failedpayment": "",
"jobassignmentchange": "", "jobassignmentchange": "",
"jobassignmentremoved": "", "jobassignmentremoved": "",
"jobchecklist": "", "jobchecklist": "",
@@ -521,6 +523,7 @@
"dailyhrslimit": "" "dailyhrslimit": ""
}, },
"ssbuckets": { "ssbuckets": {
"color": "",
"gte": "", "gte": "",
"id": "", "id": "",
"label": "", "label": "",
@@ -1178,6 +1181,30 @@
"updated": "" "updated": ""
} }
}, },
"job_payments": {
"buttons": {
"goback": "",
"proceedtopayment": "",
"refundpayment": ""
},
"notifications": {
"error": {
"description": "",
"title": ""
}
},
"titles": {
"amount": "",
"dateOfPayment": "",
"descriptions": "",
"payer": "",
"payername": "",
"paymentid": "",
"paymenttype": "",
"refundamount": "",
"transactionid": ""
}
},
"joblines": { "joblines": {
"actions": { "actions": {
"converttolabor": "", "converttolabor": "",
@@ -1888,6 +1915,7 @@
"customers": "Les clients", "customers": "Les clients",
"dashboard": "", "dashboard": "",
"enterbills": "", "enterbills": "",
"entercardpayment": "",
"enterpayment": "", "enterpayment": "",
"entertimeticket": "", "entertimeticket": "",
"export": "", "export": "",
@@ -1899,6 +1927,7 @@
"newjob": "", "newjob": "",
"owners": "Propriétaires", "owners": "Propriétaires",
"parts-queue": "", "parts-queue": "",
"paymentremindersms": "",
"phonebook": "", "phonebook": "",
"productionboard": "", "productionboard": "",
"productionlist": "", "productionlist": "",
@@ -2008,6 +2037,16 @@
"critical": "Critique", "critical": "Critique",
"private": "privé", "private": "privé",
"text": "Contenu", "text": "Contenu",
"type": "",
"types": {
"customer": "",
"general": "",
"office": "",
"paint": "",
"parts": "",
"shop": "",
"supplement": ""
},
"updatedat": "Mis à jour à" "updatedat": "Mis à jour à"
}, },
"labels": { "labels": {
@@ -2398,6 +2437,7 @@
"qbo_usa": "" "qbo_usa": ""
} }
}, },
"cardcolor": "",
"cardsettings": "", "cardsettings": "",
"clm_no": "", "clm_no": "",
"comment": "", "comment": "",
@@ -2408,6 +2448,7 @@
"ins_co_nm": "", "ins_co_nm": "",
"jobdetail": "", "jobdetail": "",
"laborhrs": "", "laborhrs": "",
"legend": "",
"note": "", "note": "",
"ownr_nm": "", "ownr_nm": "",
"paintpriority": "", "paintpriority": "",

View File

@@ -4333,6 +4333,7 @@
- jobid - jobid
- private - private
- text - text
- type
- updated_at - updated_at
select_permissions: select_permissions:
- role: user - role: user
@@ -4346,6 +4347,7 @@
- jobid - jobid
- private - private
- text - text
- type
- updated_at - updated_at
filter: filter:
job: job:
@@ -4369,6 +4371,7 @@
- jobid - jobid
- private - private
- text - text
- type
- updated_at - updated_at
filter: filter:
job: job:

View File

@@ -0,0 +1,4 @@
-- Could not auto-generate a down migration.
-- Please write an appropriate down migration for the SQL below:
-- alter table "public"."notes" add column "type" text
-- not null default 'general';

View File

@@ -0,0 +1,2 @@
alter table "public"."notes" add column "type" text
not null default 'general';

View File

@@ -840,7 +840,9 @@ function GenerateCostingData(job) {
//Push adjustments to bottom line. //Push adjustments to bottom line.
if (job.adjustment_bottom_line) { if (job.adjustment_bottom_line) {
//Add to totals. //Add to totals.
const Adjustment = Dinero({ amount: job.adjustment_bottom_line * 100 }); //Need to invert, since this is being assigned as a cost. const Adjustment = Dinero({
amount: Math.round(job.adjustment_bottom_line * 100),
}); //Need to invert, since this is being assigned as a cost.
summaryData.totalLaborSales = summaryData.totalLaborSales.add(Adjustment); summaryData.totalLaborSales = summaryData.totalLaborSales.add(Adjustment);
summaryData.totalSales = summaryData.totalSales.add(Adjustment); summaryData.totalSales = summaryData.totalSales.add(Adjustment);
//Add to lines. //Add to lines.