Replaced null coalescence. Updated dates components.
This commit is contained in:
@@ -5,4 +5,4 @@
|
|||||||
1. Get a presigned URL by hitting our own express server with a unique key.
|
1. Get a presigned URL by hitting our own express server with a unique key.
|
||||||
2. Use this presigned URL to upload an individual file.
|
2. Use this presigned URL to upload an individual file.
|
||||||
3. Store the key + the bucket name to the documents record.
|
3. Store the key + the bucket name to the documents record.
|
||||||
4. ???Figure out how to add thumbnails.
|
4.
|
||||||
@@ -484,6 +484,27 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>nodates</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>nojobselected</name>
|
<name>nojobselected</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -615,6 +636,69 @@
|
|||||||
<folder_node>
|
<folder_node>
|
||||||
<name>fields</name>
|
<name>fields</name>
|
||||||
<children>
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>actual_completion</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>actual_delivery</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>actual_in</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>claim_total</name>
|
<name>claim_total</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -678,6 +762,132 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>date_closed</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>date_estimated</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>date_exported</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>date_invoiced</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>date_open</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>date_scheduled</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>deductible</name>
|
<name>deductible</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -846,6 +1056,69 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</translations>
|
</translations>
|
||||||
</concept_node>
|
</concept_node>
|
||||||
|
<concept_node>
|
||||||
|
<name>scheduled_completion</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>scheduled_delivery</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>scheduled_in</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>status</name>
|
<name>status</name>
|
||||||
<definition_loaded>false</definition_loaded>
|
<definition_loaded>false</definition_loaded>
|
||||||
@@ -1886,6 +2159,37 @@
|
|||||||
</concept_node>
|
</concept_node>
|
||||||
</children>
|
</children>
|
||||||
</folder_node>
|
</folder_node>
|
||||||
|
<folder_node>
|
||||||
|
<name>user</name>
|
||||||
|
<children>
|
||||||
|
<folder_node>
|
||||||
|
<name>actions</name>
|
||||||
|
<children>
|
||||||
|
<concept_node>
|
||||||
|
<name>signout</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>vehicles</name>
|
<name>vehicles</name>
|
||||||
<children>
|
<children>
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ export default () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
//Run the auth code only on the first render.
|
//Run the auth code only on the first render.
|
||||||
const unsubscribeFromAuth = auth.onAuthStateChanged(async user => {
|
const unsubscribeFromAuth = auth.onAuthStateChanged(async user => {
|
||||||
|
console.log("Auth State Changed.")
|
||||||
if (user) {
|
if (user) {
|
||||||
let token;
|
let token;
|
||||||
token = await user.getIdToken();
|
token = await user.getIdToken();
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ export default function CurrentUserDropdown() {
|
|||||||
</Col>
|
</Col>
|
||||||
<Col span={16}>
|
<Col span={16}>
|
||||||
<Link to='/manage/profile'>
|
<Link to='/manage/profile'>
|
||||||
{currentUser?.displayName ?? t("general.labels.unknown")}
|
{currentUser?.displayName || t("general.labels.unknown")}
|
||||||
</Link>
|
</Link>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
|||||||
@@ -1,26 +1,24 @@
|
|||||||
import React, { useState } from "react";
|
|
||||||
import { Link } from "react-router-dom";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { useQuery } from "@apollo/react-hooks";
|
import { useQuery } from "@apollo/react-hooks";
|
||||||
import AlertComponent from "../alert/alert.component";
|
import { Button, Icon, PageHeader, Tag } from "antd";
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
import { QUERY_JOB_CARD_DETAILS } from "../../graphql/jobs.queries";
|
import { QUERY_JOB_CARD_DETAILS } from "../../graphql/jobs.queries";
|
||||||
import { PageHeader, Button, Descriptions, Tag, Icon } from "antd";
|
import AlertComponent from "../alert/alert.component";
|
||||||
|
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
||||||
|
import NoteUpsertModal from "../note-upsert-modal/note-upsert-modal.container";
|
||||||
//import JobDetailCardsHeaderComponent from "./job-detail-cards.header.component";
|
//import JobDetailCardsHeaderComponent from "./job-detail-cards.header.component";
|
||||||
import JobDetailCardsCustomerComponent from "./job-detail-cards.customer.component";
|
import JobDetailCardsCustomerComponent from "./job-detail-cards.customer.component";
|
||||||
import JobDetailCardsVehicleComponent from "./job-detail-cards.vehicle.component";
|
|
||||||
import JobDetailCardsInsuranceComponent from "./job-detail-cards.insurance.component";
|
|
||||||
import JobDetailCardsDatesComponent from "./job-detail-cards.dates.component";
|
|
||||||
import JobDetailCardsPartsComponent from "./job-detail-cards.parts.component";
|
|
||||||
import JobDetailCardsNotesComponent from "./job-detail-cards.notes.component";
|
|
||||||
import JobDetailCardsDamageComponent from "./job-detail-cards.damage.component";
|
import JobDetailCardsDamageComponent from "./job-detail-cards.damage.component";
|
||||||
import JobDetailCardsTotalsComponent from "./job-detail-cards.totals.component";
|
import JobDetailCardsDatesComponent from "./job-detail-cards.dates.component";
|
||||||
import JobDetailCardsDocumentsComponent from "./job-detail-cards.documents.component";
|
import JobDetailCardsDocumentsComponent from "./job-detail-cards.documents.component";
|
||||||
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
|
import JobDetailCardsInsuranceComponent from "./job-detail-cards.insurance.component";
|
||||||
|
import JobDetailCardsNotesComponent from "./job-detail-cards.notes.component";
|
||||||
|
import JobDetailCardsPartsComponent from "./job-detail-cards.parts.component";
|
||||||
import "./job-detail-cards.styles.scss";
|
import "./job-detail-cards.styles.scss";
|
||||||
import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
|
import JobDetailCardsTotalsComponent from "./job-detail-cards.totals.component";
|
||||||
import NoteUpsertModal from "../note-upsert-modal/note-upsert-modal.container";
|
|
||||||
|
|
||||||
|
|
||||||
export default function JobDetailCards({ selectedJob }) {
|
export default function JobDetailCards({ selectedJob }) {
|
||||||
const { loading, error, data, refetch } = useQuery(QUERY_JOB_CARD_DETAILS, {
|
const { loading, error, data, refetch } = useQuery(QUERY_JOB_CARD_DETAILS, {
|
||||||
@@ -95,33 +93,38 @@ export default function JobDetailCards({ selectedJob }) {
|
|||||||
{t("jobs.actions.postInvoices")}
|
{t("jobs.actions.postInvoices")}
|
||||||
</Button>
|
</Button>
|
||||||
]}>
|
]}>
|
||||||
{loading ? (
|
{
|
||||||
<LoadingSkeleton />
|
// loading ? (
|
||||||
) : (
|
// <LoadingSkeleton />
|
||||||
<Descriptions size='small' column={3}>
|
// ) : (
|
||||||
<Descriptions.Item label='Created'>Lili Qu</Descriptions.Item>
|
// <Descriptions size='small' column={3}>
|
||||||
<Descriptions.Item label='Association'>421421</Descriptions.Item>
|
// <Descriptions.Item label='Created'>Lili Qu</Descriptions.Item>
|
||||||
<Descriptions.Item label='Creation Time'>
|
// <Descriptions.Item label='Association'>421421</Descriptions.Item>
|
||||||
2017-01-10
|
// <Descriptions.Item label='Creation Time'>
|
||||||
</Descriptions.Item>
|
// 2017-01-10
|
||||||
<Descriptions.Item label='Effective Time'>
|
// </Descriptions.Item>
|
||||||
2017-10-10
|
// <Descriptions.Item label='Effective Time'>
|
||||||
</Descriptions.Item>
|
// 2017-10-10
|
||||||
<Descriptions.Item label='Remarks'>
|
// </Descriptions.Item>
|
||||||
Gonghu Road, Xihu District, Hangzhou, Zhejiang, China
|
// <Descriptions.Item label='Remarks'>
|
||||||
</Descriptions.Item>
|
// Gonghu Road, Xihu District, Hangzhou, Zhejiang, China
|
||||||
</Descriptions>
|
// </Descriptions.Item>
|
||||||
)}
|
// </Descriptions>
|
||||||
|
// )
|
||||||
|
}
|
||||||
|
|
||||||
<section className='job-cards'>
|
<section className='job-cards'>
|
||||||
<JobDetailCardsCustomerComponent
|
<JobDetailCardsCustomerComponent
|
||||||
loading={loading}
|
loading={loading}
|
||||||
data={data ? data.jobs_by_pk : null}
|
data={data ? data.jobs_by_pk : null}
|
||||||
/>
|
/>
|
||||||
<JobDetailCardsVehicleComponent
|
{
|
||||||
loading={loading}
|
// <JobDetailCardsVehicleComponent
|
||||||
data={data ? data.jobs_by_pk : null}
|
// loading={loading}
|
||||||
/>
|
// data={data ? data.jobs_by_pk : null}
|
||||||
|
// />
|
||||||
|
}
|
||||||
|
|
||||||
<JobDetailCardsInsuranceComponent
|
<JobDetailCardsInsuranceComponent
|
||||||
loading={loading}
|
loading={loading}
|
||||||
data={data ? data.jobs_by_pk : null}
|
data={data ? data.jobs_by_pk : null}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import CardTemplate from "./job-detail-cards.template.component";
|
import { Link } from "react-router-dom";
|
||||||
import PhoneFormatter from "../../utils/PhoneFormatter";
|
import PhoneFormatter from "../../utils/PhoneFormatter";
|
||||||
|
import CardTemplate from "./job-detail-cards.template.component";
|
||||||
|
|
||||||
export default function JobDetailCardsCustomerComponent({ loading, data }) {
|
export default function JobDetailCardsCustomerComponent({ loading, data }) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@@ -10,28 +11,34 @@ export default function JobDetailCardsCustomerComponent({ loading, data }) {
|
|||||||
<CardTemplate
|
<CardTemplate
|
||||||
loading={loading}
|
loading={loading}
|
||||||
title={t("jobs.labels.cards.customer")}
|
title={t("jobs.labels.cards.customer")}
|
||||||
extraLink={data?.owner ? `/manage/owners/${data?.owner?.id}` : null}>
|
extraLink={data && data.owner ? `/manage/owners/${data.owner.id}` : null}>
|
||||||
{data ? (
|
{data ? (
|
||||||
<span>
|
<span>
|
||||||
<div>{`${data?.ownr_fn ?? ""} ${data.ownr_ln ?? ""}`}</div>
|
<div>{`${data.ownr_fn || ""} ${data.ownr_ln || ""}`}</div>
|
||||||
<div>
|
<div>
|
||||||
{t("jobs.fields.phoneshort")}:
|
{t("jobs.fields.phoneshort")}:
|
||||||
<PhoneFormatter>{`${data?.ownr_ph1 ??
|
<PhoneFormatter>{`${data.ownr_ph1 ||
|
||||||
t("general.labels.na")}`}</PhoneFormatter>
|
t("general.labels.na")}`}</PhoneFormatter>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{t("jobs.fields.ownr_ea")}:
|
{t("jobs.fields.ownr_ea")}:
|
||||||
{data?.ownr_ea ? (
|
{data.ownr_ea ? (
|
||||||
<a href={`mailto:${data.ownr_ea}`}>
|
<a href={`mailto:${data.ownr_ea}`}>
|
||||||
<span>{`${data?.ownr_ea ?? ""}`}</span>
|
<span>{`${data.ownr_ea || ""}`}</span>
|
||||||
</a>
|
</a>
|
||||||
) : (
|
) : (
|
||||||
t("general.labels.na")
|
t("general.labels.na")
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
<div>{`${(data.owner && data.owner.preferred_contact) || ""}`}</div>
|
||||||
<div>{`${data?.owner?.preferred_contact ?? ""}`}</div>
|
{data.vehicle ? (
|
||||||
|
<Link to={`/manage/vehicles/${data.vehicle.id}`}>
|
||||||
|
{`${data.vehicle.v_model_yr || ""} ${data.vehicle.v_make_desc ||
|
||||||
|
""} ${data.vehicle.v_model_desc || ""}`}
|
||||||
|
</Link>
|
||||||
|
) : (
|
||||||
|
<span>{t("jobs.errors.novehicle")}</span>
|
||||||
|
)}
|
||||||
</span>
|
</span>
|
||||||
) : null}
|
) : null}
|
||||||
</CardTemplate>
|
</CardTemplate>
|
||||||
|
|||||||
@@ -11,13 +11,112 @@ export default function JobDetailCardsDatesComponent({ loading, data }) {
|
|||||||
<CardTemplate loading={loading} title={t("jobs.labels.cards.dates")}>
|
<CardTemplate loading={loading} title={t("jobs.labels.cards.dates")}>
|
||||||
{data ? (
|
{data ? (
|
||||||
<Timeline>
|
<Timeline>
|
||||||
<Timeline.Item>
|
{!(
|
||||||
Actual In <Moment format='MM/DD/YYYY'>{data?.actual_in}</Moment>
|
data.actual_in ||
|
||||||
</Timeline.Item>
|
data.scheduled_completion ||
|
||||||
<Timeline.Item>
|
data.scheduled_in ||
|
||||||
Scheduled Completion
|
data.actual_completion ||
|
||||||
<Moment format='MM/DD/YYYY'>{data?.scheduled_completion}</Moment>
|
data.scheduled_delivery ||
|
||||||
</Timeline.Item>
|
data.actual_delivery ||
|
||||||
|
data.date_estimated ||
|
||||||
|
data.date_open ||
|
||||||
|
data.date_scheduled ||
|
||||||
|
data.date_invoiced ||
|
||||||
|
data.date_closed ||
|
||||||
|
data.date_exported
|
||||||
|
) ? (
|
||||||
|
<div>{t("jobs.errors.nodates")}</div>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.actual_in ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.actual_in")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.actual_in || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.scheduled_completion ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.scheduled_completion")}
|
||||||
|
<Moment format='MM/DD/YYYY'>
|
||||||
|
{data.scheduled_completion || ""}
|
||||||
|
</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.scheduled_in ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.scheduled_in")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.scheduled_in || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.actual_completion ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.actual_completion")}
|
||||||
|
<Moment format='MM/DD/YYYY'>
|
||||||
|
{data.actual_completion || ""}
|
||||||
|
</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.scheduled_delivery ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.scheduled_delivery")}
|
||||||
|
<Moment format='MM/DD/YYYY'>
|
||||||
|
{data.scheduled_delivery || ""}
|
||||||
|
</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.actual_delivery ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.actual_delivery")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.actual_delivery || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.date_estimated ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.date_estimated")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.date_estimated || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.date_open ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.date_open")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.date_open || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.date_scheduled ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.date_scheduled")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.date_scheduled || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.date_invoiced ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.date_invoiced")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.date_invoiced || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.date_closed ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.date_closed")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.date_closed || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
|
|
||||||
|
{data.date_exported ? (
|
||||||
|
<Timeline.Item>
|
||||||
|
{t("jobs.fields.date_exported")}
|
||||||
|
<Moment format='MM/DD/YYYY'>{data.date_exported || ""}</Moment>
|
||||||
|
</Timeline.Item>
|
||||||
|
) : null}
|
||||||
</Timeline>
|
</Timeline>
|
||||||
) : null}
|
) : null}
|
||||||
</CardTemplate>
|
</CardTemplate>
|
||||||
|
|||||||
@@ -10,16 +10,16 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) {
|
|||||||
<CardTemplate loading={loading} title={t("jobs.labels.cards.insurance")}>
|
<CardTemplate loading={loading} title={t("jobs.labels.cards.insurance")}>
|
||||||
{data ? (
|
{data ? (
|
||||||
<span>
|
<span>
|
||||||
<div>{data?.ins_co_nm ?? t("general.labels.unknown")}</div>
|
<div>{data?.ins_co_nm || t("general.labels.unknown")}</div>
|
||||||
<div>{data?.clm_no ?? t("general.labels.unknown")}</div>
|
<div>{data?.clm_no || t("general.labels.unknown")}</div>
|
||||||
<div>
|
<div>
|
||||||
{t("jobs.labels.cards.filehandler")}
|
{t("jobs.labels.cards.filehandler")}
|
||||||
{data?.ins_ea ? (
|
{data?.ins_ea ? (
|
||||||
<a href={`mailto:${data.ins_ea}`}>
|
<a href={`mailto:${data.ins_ea}`}>
|
||||||
<div>{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}</div>
|
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
|
||||||
</a>
|
</a>
|
||||||
) : (
|
) : (
|
||||||
<div>{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}</div>
|
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
|
||||||
)}
|
)}
|
||||||
{data?.ins_ph1 ? (
|
{data?.ins_ph1 ? (
|
||||||
<PhoneFormatter>{data?.ins_ph1}</PhoneFormatter>
|
<PhoneFormatter>{data?.ins_ph1}</PhoneFormatter>
|
||||||
@@ -31,10 +31,10 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) {
|
|||||||
{t("jobs.labels.cards.appraiser")}
|
{t("jobs.labels.cards.appraiser")}
|
||||||
{data?.est_ea ? (
|
{data?.est_ea ? (
|
||||||
<a href={`mailto:${data.est_ea}`}>
|
<a href={`mailto:${data.est_ea}`}>
|
||||||
<div>{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}</div>
|
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
|
||||||
</a>
|
</a>
|
||||||
) : (
|
) : (
|
||||||
<div>{`${data?.ins_ct_fn ?? ""} ${data?.ins_ct_ln ?? ""}`}</div>
|
<div>{`${data?.ins_ct_fn || ""} ${data?.ins_ct_ln || ""}`}</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -42,10 +42,10 @@ export default function JobDetailCardsInsuranceComponent({ loading, data }) {
|
|||||||
{t("jobs.labels.cards.estimator")}
|
{t("jobs.labels.cards.estimator")}
|
||||||
{data?.est_ea ? (
|
{data?.est_ea ? (
|
||||||
<a href={`mailto:${data.est_ea}`}>
|
<a href={`mailto:${data.est_ea}`}>
|
||||||
<div>{`${data?.est_ct_fn ?? ""} ${data?.est_ct_ln ?? ""}`}</div>
|
<div>{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}</div>
|
||||||
</a>
|
</a>
|
||||||
) : (
|
) : (
|
||||||
<div>{`${data?.est_ct_fn ?? ""} ${data?.est_ct_ln ?? ""}`}</div>
|
<div>{`${data?.est_ct_fn || ""} ${data?.est_ct_ln || ""}`}</div>
|
||||||
)}
|
)}
|
||||||
{data?.est_ph1 ? (
|
{data?.est_ph1 ? (
|
||||||
<PhoneFormatter>{data?.est_ph1}</PhoneFormatter>
|
<PhoneFormatter>{data?.est_ph1}</PhoneFormatter>
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ export default function JobDetailCardsVehicleComponent({ loading, data }) {
|
|||||||
>
|
>
|
||||||
{data ? (
|
{data ? (
|
||||||
<span>
|
<span>
|
||||||
{data.vehicle?.v_model_yr ?? t("general.labels.na")}{" "}
|
{data.vehicle?.v_model_yr || t("general.labels.na")}{" "}
|
||||||
{data.vehicle?.v_make_desc ?? t("general.labels.na")}{" "}
|
{data.vehicle?.v_make_desc || t("general.labels.na")}{" "}
|
||||||
{data.vehicle?.v_model_desc ?? t("general.labels.na")}
|
{data.vehicle?.v_model_desc || t("general.labels.na")}
|
||||||
</span>
|
</span>
|
||||||
) : null}
|
) : null}
|
||||||
</CardTemplate>
|
</CardTemplate>
|
||||||
|
|||||||
@@ -91,9 +91,9 @@ function JobTombstone({ job, ...otherProps }) {
|
|||||||
title={tombstoneTitle}
|
title={tombstoneTitle}
|
||||||
subTitle={
|
subTitle={
|
||||||
jobContext.owner
|
jobContext.owner
|
||||||
? (jobContext.owner?.first_name ?? "") +
|
? (jobContext.owner?.first_name || "") +
|
||||||
" " +
|
" " +
|
||||||
(jobContext.owner?.last_name ?? "")
|
(jobContext.owner?.last_name || "")
|
||||||
: t("jobs.errors.noowner")
|
: t("jobs.errors.noowner")
|
||||||
}
|
}
|
||||||
tags={
|
tags={
|
||||||
@@ -133,10 +133,10 @@ function JobTombstone({ job, ...otherProps }) {
|
|||||||
<Descriptions size='small' column={5}>
|
<Descriptions size='small' column={5}>
|
||||||
<Descriptions.Item label={t("jobs.fields.vehicle")}>
|
<Descriptions.Item label={t("jobs.fields.vehicle")}>
|
||||||
<Link to={`/manage/vehicles/${jobContext.vehicle?.id}`}>
|
<Link to={`/manage/vehicles/${jobContext.vehicle?.id}`}>
|
||||||
{jobContext.vehicle?.v_model_yr ?? t("general.labels.na")}{" "}
|
{jobContext.vehicle?.v_model_yr || t("general.labels.na")}{" "}
|
||||||
{jobContext.vehicle?.v_make_desc ?? t("general.labels.na")}{" "}
|
{jobContext.vehicle?.v_make_desc || t("general.labels.na")}{" "}
|
||||||
{jobContext.vehicle?.v_model_desc ?? t("general.labels.na")} |{" "}
|
{jobContext.vehicle?.v_model_desc || t("general.labels.na")} |{" "}
|
||||||
{jobContext.vehicle?.plate_no ?? t("general.labels.na")}
|
{jobContext.vehicle?.plate_no || t("general.labels.na")}
|
||||||
</Link>
|
</Link>
|
||||||
</Descriptions.Item>
|
</Descriptions.Item>
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ export default withRouter(function JobsList({
|
|||||||
sortOrder:
|
sortOrder:
|
||||||
state.sortedInfo.columnKey === "status" && state.sortedInfo.order,
|
state.sortedInfo.columnKey === "status" && state.sortedInfo.order,
|
||||||
render: (text, record) => {
|
render: (text, record) => {
|
||||||
return record.job_status?.name ?? t("general.labels.na");
|
return record.job_status?.name || t("general.labels.na");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,5 @@ export default function SignoutComponent() {
|
|||||||
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
return (
|
return <div onClick={signOut}>{t("user.actions.signout")}</div>;
|
||||||
<div>
|
|
||||||
{this.renderRedirect()}
|
|
||||||
<div onClick={signOut}>{t("user.actions.signout")}</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,11 +63,11 @@ export default function WhiteBoardCard({ metadata }) {
|
|||||||
<div>
|
<div>
|
||||||
<Card
|
<Card
|
||||||
title={
|
title={
|
||||||
(metadata.ro_number ?? metadata.est_number) +
|
(metadata.ro_number || metadata.est_number) +
|
||||||
" | " +
|
" | " +
|
||||||
(metadata.owner?.first_name ?? "") +
|
(metadata.owner?.first_name || "") +
|
||||||
" " +
|
" " +
|
||||||
(metadata.owner?.last_name ?? "")
|
(metadata.owner?.last_name || "")
|
||||||
}
|
}
|
||||||
style={{ width: 300, marginTop: 10 }}
|
style={{ width: 300, marginTop: 10 }}
|
||||||
bodyStyle={{ padding: 10 }}
|
bodyStyle={{ padding: 10 }}
|
||||||
@@ -87,15 +87,15 @@ export default function WhiteBoardCard({ metadata }) {
|
|||||||
<Col span={18}>
|
<Col span={18}>
|
||||||
<Row>
|
<Row>
|
||||||
<WrappedSpan>
|
<WrappedSpan>
|
||||||
{metadata.vehicle?.v_model_yr ?? t("general.labels.na")}{" "}
|
{metadata.vehicle?.v_model_yr || t("general.labels.na")}{" "}
|
||||||
{metadata.vehicle?.v_make_desc ?? t("general.labels.na")}{" "}
|
{metadata.vehicle?.v_make_desc || t("general.labels.na")}{" "}
|
||||||
{metadata.vehicle?.v_model_desc ?? t("general.labels.na")}
|
{metadata.vehicle?.v_model_desc || t("general.labels.na")}
|
||||||
</WrappedSpan>
|
</WrappedSpan>
|
||||||
</Row>
|
</Row>
|
||||||
{metadata.vehicle?.v_vin ? (
|
{metadata.vehicle?.v_vin ? (
|
||||||
<Row>
|
<Row>
|
||||||
<WrappedSpan>
|
<WrappedSpan>
|
||||||
VIN: {metadata.vehicle?.v_vin ?? t("general.labels.na")}
|
VIN: {metadata.vehicle?.v_vin || t("general.labels.na")}
|
||||||
</WrappedSpan>
|
</WrappedSpan>
|
||||||
</Row>
|
</Row>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { onError } from "apollo-link-error";
|
import { onError } from "apollo-link-error";
|
||||||
import { Observable } from "apollo-link";
|
//import { Observable } from "apollo-link";
|
||||||
import { auth } from "../firebase/firebase.utils";
|
import { auth } from "../firebase/firebase.utils";
|
||||||
//https://stackoverflow.com/questions/57163454/refreshing-a-token-with-apollo-client-firebase-auth
|
//https://stackoverflow.com/questions/57163454/refreshing-a-token-with-apollo-client-firebase-auth
|
||||||
const errorLink = onError(
|
const errorLink = onError(
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"noaccess": "This job does not exist or you do not have access to it.",
|
"noaccess": "This job does not exist or you do not have access to it.",
|
||||||
|
"nodates": "No dates specified for this job.",
|
||||||
"nojobselected": "No job is selected.",
|
"nojobselected": "No job is selected.",
|
||||||
"noowner": "No owner associated.",
|
"noowner": "No owner associated.",
|
||||||
"novehicle": "No vehicle associated.",
|
"novehicle": "No vehicle associated.",
|
||||||
@@ -46,9 +47,18 @@
|
|||||||
"validationtitle": "Validation Error"
|
"validationtitle": "Validation Error"
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
|
"actual_completion": "Actual Completion",
|
||||||
|
"actual_delivery": "Actual Delivery",
|
||||||
|
"actual_in": "Actual In",
|
||||||
"claim_total": "Claim Total",
|
"claim_total": "Claim Total",
|
||||||
"clm_no": "Claim #",
|
"clm_no": "Claim #",
|
||||||
"clm_total": "Claim Total",
|
"clm_total": "Claim Total",
|
||||||
|
"date_closed": "Closed",
|
||||||
|
"date_estimated": "Date Estimated",
|
||||||
|
"date_exported": "Exported",
|
||||||
|
"date_invoiced": "Invoiced",
|
||||||
|
"date_open": "Open",
|
||||||
|
"date_scheduled": "Scheduled",
|
||||||
"deductible": "Deductible",
|
"deductible": "Deductible",
|
||||||
"est_number": "Estimate Number",
|
"est_number": "Estimate Number",
|
||||||
"owner": "Owner",
|
"owner": "Owner",
|
||||||
@@ -57,6 +67,9 @@
|
|||||||
"phone1": "Phone 1",
|
"phone1": "Phone 1",
|
||||||
"phoneshort": "PH",
|
"phoneshort": "PH",
|
||||||
"ro_number": "RO #",
|
"ro_number": "RO #",
|
||||||
|
"scheduled_completion": "Scheduled Completion",
|
||||||
|
"scheduled_delivery": "Scheduled Delivery",
|
||||||
|
"scheduled_in": "Scheduled In",
|
||||||
"status": "Job Status",
|
"status": "Job Status",
|
||||||
"vehicle": "Vehicle"
|
"vehicle": "Vehicle"
|
||||||
},
|
},
|
||||||
@@ -133,6 +146,11 @@
|
|||||||
"jobsdocuments": "Job Documents {{ro_number}} | $t(titles.app)",
|
"jobsdocuments": "Job Documents {{ro_number}} | $t(titles.app)",
|
||||||
"profile": "My Profile | $t(titles.app)"
|
"profile": "My Profile | $t(titles.app)"
|
||||||
},
|
},
|
||||||
|
"user": {
|
||||||
|
"actions": {
|
||||||
|
"signout": "Sign Out"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vehicles": {
|
"vehicles": {
|
||||||
"fields": {
|
"fields": {
|
||||||
"plate_no": "License Plate"
|
"plate_no": "License Plate"
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"noaccess": "Este trabajo no existe o no tiene acceso a él.",
|
"noaccess": "Este trabajo no existe o no tiene acceso a él.",
|
||||||
|
"nodates": "No hay fechas especificadas para este trabajo.",
|
||||||
"nojobselected": "No hay trabajo seleccionado.",
|
"nojobselected": "No hay trabajo seleccionado.",
|
||||||
"noowner": "Ningún propietario asociado.",
|
"noowner": "Ningún propietario asociado.",
|
||||||
"novehicle": "No hay vehículo asociado.",
|
"novehicle": "No hay vehículo asociado.",
|
||||||
@@ -46,9 +47,18 @@
|
|||||||
"validationtitle": "Error de validacion"
|
"validationtitle": "Error de validacion"
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
|
"actual_completion": "Realización real",
|
||||||
|
"actual_delivery": "Entrega real",
|
||||||
|
"actual_in": "Real en",
|
||||||
"claim_total": "Reclamar total",
|
"claim_total": "Reclamar total",
|
||||||
"clm_no": "Reclamación #",
|
"clm_no": "Reclamación #",
|
||||||
"clm_total": "Reclamar total",
|
"clm_total": "Reclamar total",
|
||||||
|
"date_closed": "Cerrado",
|
||||||
|
"date_estimated": "Fecha estimada",
|
||||||
|
"date_exported": "Exportado",
|
||||||
|
"date_invoiced": "Facturado",
|
||||||
|
"date_open": "Abierto",
|
||||||
|
"date_scheduled": "Programado",
|
||||||
"deductible": "Deducible",
|
"deductible": "Deducible",
|
||||||
"est_number": "Numero Estimado",
|
"est_number": "Numero Estimado",
|
||||||
"owner": "Propietario",
|
"owner": "Propietario",
|
||||||
@@ -57,6 +67,9 @@
|
|||||||
"phone1": "Teléfono 1",
|
"phone1": "Teléfono 1",
|
||||||
"phoneshort": "PH",
|
"phoneshort": "PH",
|
||||||
"ro_number": "RO #",
|
"ro_number": "RO #",
|
||||||
|
"scheduled_completion": "Finalización programada",
|
||||||
|
"scheduled_delivery": "Entrega programada",
|
||||||
|
"scheduled_in": "Programado en",
|
||||||
"status": "Estado del trabajo",
|
"status": "Estado del trabajo",
|
||||||
"vehicle": "Vehículo"
|
"vehicle": "Vehículo"
|
||||||
},
|
},
|
||||||
@@ -133,6 +146,11 @@
|
|||||||
"jobsdocuments": "Documentos de trabajo {{ro_number}} | $ t (títulos.app)",
|
"jobsdocuments": "Documentos de trabajo {{ro_number}} | $ t (títulos.app)",
|
||||||
"profile": "Mi perfil | $t(titles.app)"
|
"profile": "Mi perfil | $t(titles.app)"
|
||||||
},
|
},
|
||||||
|
"user": {
|
||||||
|
"actions": {
|
||||||
|
"signout": "desconectar"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vehicles": {
|
"vehicles": {
|
||||||
"fields": {
|
"fields": {
|
||||||
"plate_no": "Placa"
|
"plate_no": "Placa"
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"noaccess": "Ce travail n'existe pas ou vous n'y avez pas accès.",
|
"noaccess": "Ce travail n'existe pas ou vous n'y avez pas accès.",
|
||||||
|
"nodates": "Aucune date spécifiée pour ce travail.",
|
||||||
"nojobselected": "Aucun travail n'est sélectionné.",
|
"nojobselected": "Aucun travail n'est sélectionné.",
|
||||||
"noowner": "Aucun propriétaire associé.",
|
"noowner": "Aucun propriétaire associé.",
|
||||||
"novehicle": "Aucun véhicule associé.",
|
"novehicle": "Aucun véhicule associé.",
|
||||||
@@ -46,9 +47,18 @@
|
|||||||
"validationtitle": "Erreur de validation"
|
"validationtitle": "Erreur de validation"
|
||||||
},
|
},
|
||||||
"fields": {
|
"fields": {
|
||||||
|
"actual_completion": "Achèvement réel",
|
||||||
|
"actual_delivery": "Livraison réelle",
|
||||||
|
"actual_in": "En réel",
|
||||||
"claim_total": "Total réclamation",
|
"claim_total": "Total réclamation",
|
||||||
"clm_no": "Prétendre #",
|
"clm_no": "Prétendre #",
|
||||||
"clm_total": "Total réclamation",
|
"clm_total": "Total réclamation",
|
||||||
|
"date_closed": "Fermé",
|
||||||
|
"date_estimated": "Date estimée",
|
||||||
|
"date_exported": "Exportés",
|
||||||
|
"date_invoiced": "Facturé",
|
||||||
|
"date_open": "Ouvrir",
|
||||||
|
"date_scheduled": "Prévu",
|
||||||
"deductible": "Déductible",
|
"deductible": "Déductible",
|
||||||
"est_number": "Numéro d'estimation",
|
"est_number": "Numéro d'estimation",
|
||||||
"owner": "Propriétaire",
|
"owner": "Propriétaire",
|
||||||
@@ -57,6 +67,9 @@
|
|||||||
"phone1": "Téléphone 1",
|
"phone1": "Téléphone 1",
|
||||||
"phoneshort": "PH",
|
"phoneshort": "PH",
|
||||||
"ro_number": "RO #",
|
"ro_number": "RO #",
|
||||||
|
"scheduled_completion": "Achèvement planifié",
|
||||||
|
"scheduled_delivery": "Livraison programmée",
|
||||||
|
"scheduled_in": "Planifié dans",
|
||||||
"status": "Statut de l'emploi",
|
"status": "Statut de l'emploi",
|
||||||
"vehicle": "Véhicule"
|
"vehicle": "Véhicule"
|
||||||
},
|
},
|
||||||
@@ -133,6 +146,11 @@
|
|||||||
"jobsdocuments": "Documents de travail {{ro_number}} | $ t (titres.app)",
|
"jobsdocuments": "Documents de travail {{ro_number}} | $ t (titres.app)",
|
||||||
"profile": "Mon profil | $t(titles.app)"
|
"profile": "Mon profil | $t(titles.app)"
|
||||||
},
|
},
|
||||||
|
"user": {
|
||||||
|
"actions": {
|
||||||
|
"signout": "Déconnexion"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vehicles": {
|
"vehicles": {
|
||||||
"fields": {
|
"fields": {
|
||||||
"plate_no": "Plaque d'immatriculation"
|
"plate_no": "Plaque d'immatriculation"
|
||||||
|
|||||||
Reference in New Issue
Block a user