diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index fa49e0b22..c2860aed7 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -4818,6 +4818,27 @@ + + federal_tax_applicable + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + jobline false @@ -4860,6 +4881,27 @@ + + local_tax_applicable + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + retail false @@ -4881,6 +4923,27 @@ + + state_tax_applicable + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + @@ -5352,6 +5415,111 @@ + + discrepancy + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + entered_total + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + federal_tax + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + invoice_total + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + local_tax + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + new false @@ -5373,6 +5541,48 @@ + + state_tax + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + subtotal + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + diff --git a/client/package.json b/client/package.json index 2a557a369..e92b2fc26 100644 --- a/client/package.json +++ b/client/package.json @@ -7,7 +7,7 @@ "@nivo/pie": "^0.61.1", "@tinymce/tinymce-react": "^3.5.0", "aamva": "^1.2.0", - "antd": "^4.1.4", + "antd": "^4.2.0", "apollo-boost": "^0.4.4", "apollo-link-context": "^1.0.20", "apollo-link-error": "^1.1.13", @@ -17,24 +17,24 @@ "axios": "^0.19.2", "dinero.js": "^1.8.1", "dotenv": "^8.2.0", - "firebase": "^7.14.1", + "firebase": "^7.14.2", "graphql": "^15.0.0", - "i18next": "^19.4.3", + "i18next": "^19.4.4", "i18next-browser-languagedetector": "^4.1.1", "logrocket": "^1.0.7", - "node-sass": "^4.13.1", + "node-sass": "^4.14.1", "phone": "^2.4.10", "query-string": "^6.12.1", "react": "^16.13.1", "react-apollo": "^3.1.5", "react-barcode": "^1.4.0", - "react-big-calendar": "^0.24.5", + "react-big-calendar": "^0.24.6", "react-dom": "^16.13.1", "react-drag-listview": "^0.1.6", "react-ga": "^2.7.0", "react-grid-gallery": "^0.5.5", "react-grid-layout": "^0.18.3", - "react-i18next": "^11.3.5", + "react-i18next": "^11.4.0", "react-icons": "^3.10.0", "react-image-file-resizer": "^0.2.3", "react-moment": "^0.9.7", diff --git a/client/src/components/invoice-detail-edit/invoice-detail-edit.container.jsx b/client/src/components/invoice-detail-edit/invoice-detail-edit.container.jsx index 32add3dc6..7fb1a4682 100644 --- a/client/src/components/invoice-detail-edit/invoice-detail-edit.container.jsx +++ b/client/src/components/invoice-detail-edit/invoice-detail-edit.container.jsx @@ -46,10 +46,22 @@ export function InvoiceDetailEditContainer({ bodyshop }) { data ? { ...data.invoices_by_pk, + invoicelines: data.invoices_by_pk.invoicelines.map((i) => { return { ...i, joblineid: !!i.joblineid ? i.joblineid : "noline", + applicable_taxes: { + federal: + (i.applicable_taxes && i.applicable_taxes.federal) || + false, + state: + (i.applicable_taxes && i.applicable_taxes.state) || + false, + local: + (i.applicable_taxes && i.applicable_taxes.local) || + false, + }, }; }), date: data.invoices_by_pk diff --git a/client/src/components/invoice-form/invoice-form.component.jsx b/client/src/components/invoice-form/invoice-form.component.jsx index 9f0d3e800..59d8621ed 100644 --- a/client/src/components/invoice-form/invoice-form.component.jsx +++ b/client/src/components/invoice-form/invoice-form.component.jsx @@ -1,12 +1,13 @@ -import { DatePicker, Form, Input, Switch } from "antd"; -import React, { useState } from "react"; +import { DatePicker, Form, Input, Statistic, Switch } from "antd"; +import React, { useState, useEffect } from "react"; import { useTranslation } from "react-i18next"; import DocumentsUploadContainer from "../documents-upload/documents-upload.container"; import CurrencyInput from "../form-items-formatted/currency-form-item.component"; import JobSearchSelect from "../job-search-select/job-search-select.component"; import VendorSearchSelect from "../vendor-search-select/vendor-search-select.component"; import InvoiceFormLines from "./invoice-form.lines.component"; -import Dinero from "dinero.js"; +import { CalculateInvoiceTotal } from "./invoice-form.totals.utility"; +import "./invoice-form.styles.scss"; export default function InvoiceFormComponent({ form, @@ -25,9 +26,22 @@ export default function InvoiceFormComponent({ setDiscount(opt.discount); }; + //TODO: Test this further. Required to set discount when viewing an invoice. + useEffect(() => { + if (form.getFieldValue("vendorid") && vendorAutoCompleteOptions) { + const vendorId = form.getFieldValue("vendorid"); + const matchingVendors = vendorAutoCompleteOptions.filter( + (v) => v.id === vendorId + ); + if (matchingVendors.length === 1) { + setDiscount(matchingVendors[0].discount); + } + } + }, [form, setDiscount, vendorAutoCompleteOptions]); + return ( -
-
+
+
-
+
{() => { - return ( -
- {JSON.stringify(form.getFieldsValue(["invoicelines", "total"]))} -
+ const totals = CalculateInvoiceTotal( + form.getFieldsValue([ + "invoicelines", + "total", + "federal_tax_rate", + "state_tax_rate", + "local_tax_rate", + ]) ); + if (!!totals) + return ( +
+ + + + + + + +
+ ); + return null; }}
- -
); } diff --git a/client/src/components/invoice-form/invoice-form.lines.component.jsx b/client/src/components/invoice-form/invoice-form.lines.component.jsx index 9e0ce992a..1efc76ff7 100644 --- a/client/src/components/invoice-form/invoice-form.lines.component.jsx +++ b/client/src/components/invoice-form/invoice-form.lines.component.jsx @@ -4,6 +4,7 @@ import React from "react"; import { useTranslation } from "react-i18next"; import CurrencyInput from "../form-items-formatted/currency-form-item.component"; import InvoiceLineSearchSelect from "../invoice-line-search-select/invoice-line-search-select.component"; +import { WarningOutlined } from "@ant-design/icons"; export default function InvoiceEnterModalLinesComponent({ lineData, @@ -18,10 +19,10 @@ export default function InvoiceEnterModalLinesComponent({ {(fields, { add, remove }) => { return ( -
+
{fields.map((field, index) => ( -
+
+ + {() => { + const line = getFieldsValue(["invoicelines"]) + .invoicelines[index]; + if (!!!line) return null; + const lineDiscount = +( + 1 - + Math.round( + (line.actual_cost / line.actual_price) * 100 + ) / + 100 + ).toFixed(2); + + if (lineDiscount === discount) return null; + return ; + }} + @@ -149,7 +167,7 @@ export default function InvoiceEnterModalLinesComponent({ name={[field.name, "applicable_taxes", "state"]} > - {" "} + * { + padding: 5px; + } +} + +.invoice-form-invoice-details { + display: flex; + align-items: flex-start; + flex-wrap: wrap; + & > * { + padding: 5px; + } +} + +.invoice-form-lines-wrapper { + border: 3px ridge rgba(28, 110, 164, 0.24); + border-radius: 4px; +} + +.invoice-form-line { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + justify-content: space-around; + border-bottom: 2px dashed rgba(7, 7, 7, 0.4); + F & > * { + margin: 5px; + } +} diff --git a/client/src/components/invoice-form/invoice-form.totals.utility.js b/client/src/components/invoice-form/invoice-form.totals.utility.js new file mode 100644 index 000000000..13dbdb551 --- /dev/null +++ b/client/src/components/invoice-form/invoice-form.totals.utility.js @@ -0,0 +1,49 @@ +import Dinero from "dinero.js"; + +export const CalculateInvoiceTotal = (invoice) => { + const { + total, + invoicelines, + federal_tax_rate, + local_tax_rate, + state_tax_rate, + } = invoice; + + let subtotal = Dinero({ amount: 0 }); + let federalTax = Dinero({ amount: 0 }); + let stateTax = Dinero({ amount: 0 }); + let localTax = Dinero({ amount: 0 }); + if (!!!invoicelines) return null; + invoicelines.map((i) => { + if (!!i) { + const itemTotal = Dinero({ amount: i.actual_cost * 100 || 0 }).multiply( + i.quantity || 1 + ); + subtotal = subtotal.add(itemTotal); + if (i.applicable_taxes.federal) { + console.log("Adding fed tax."); + federalTax = federalTax.add( + itemTotal.percentage(federal_tax_rate || 0) + ); + } + if (i.applicable_taxes.state) + stateTax = stateTax.add(itemTotal.percentage(state_tax_rate || 0)); + if (i.applicable_taxes.local) + localTax = localTax.add(itemTotal.percentage(local_tax_rate || 0)); + } + }); + + const invoiceTotal = Dinero({ amount: total * 100 || 0 }); + const enteredTotal = subtotal.add(federalTax).add(stateTax).add(localTax); + const discrepancy = enteredTotal.subtract(invoiceTotal); + + return { + subtotal, + federalTax, + stateTax, + localTax, + enteredTotal, + invoiceTotal, + discrepancy, + }; +}; diff --git a/client/src/graphql/invoices.queries.js b/client/src/graphql/invoices.queries.js index 3f747d611..58b1d5eb8 100644 --- a/client/src/graphql/invoices.queries.js +++ b/client/src/graphql/invoices.queries.js @@ -27,6 +27,7 @@ export const QUERY_ALL_INVOICES_PAGINATED = gql` } invoicelines { actual_price + quantity actual_cost cost_center id @@ -49,6 +50,7 @@ export const QUERY_INVOICES_BY_JOBID = gql` date invoicelines { actual_price + quantity actual_cost cost_center id @@ -101,6 +103,7 @@ export const QUERY_INVOICE_BY_PK = gql` actual_price actual_cost cost_center + quantity joblineid applicable_taxes } diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 4369212fa..786cfa273 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -336,9 +336,12 @@ "actual": "Actual", "actual_cost": "Actual Cost", "cost_center": "Cost Center", + "federal_tax_applicable": "Fed. Tax?", "jobline": "Job Line", "line_desc": "Invoice Line Description", - "retail": "Retail" + "local_tax_applicable": "Loc. Tax?", + "retail": "Retail", + "state_tax_applicable": "St. Tax?" }, "labels": { "entered": "Entered", @@ -372,7 +375,14 @@ }, "labels": { "actions": "Actions", - "new": "New Invoice" + "discrepancy": "Discrepancy", + "entered_total": "Total of Entered Lines", + "federal_tax": "Federal Tax", + "invoice_total": "Invoice Total Amount", + "local_tax": "Local Tax", + "new": "New Invoice", + "state_tax": "State Tax", + "subtotal": "Subtotal" }, "successes": { "created": "Invoice added successfully." diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 1a47653d9..1d785339e 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -336,9 +336,12 @@ "actual": "", "actual_cost": "", "cost_center": "", + "federal_tax_applicable": "", "jobline": "", "line_desc": "", - "retail": "" + "local_tax_applicable": "", + "retail": "", + "state_tax_applicable": "" }, "labels": { "entered": "", @@ -372,7 +375,14 @@ }, "labels": { "actions": "", - "new": "" + "discrepancy": "", + "entered_total": "", + "federal_tax": "", + "invoice_total": "", + "local_tax": "", + "new": "", + "state_tax": "", + "subtotal": "" }, "successes": { "created": "" diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 38fb8d442..f702fff46 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -336,9 +336,12 @@ "actual": "", "actual_cost": "", "cost_center": "", + "federal_tax_applicable": "", "jobline": "", "line_desc": "", - "retail": "" + "local_tax_applicable": "", + "retail": "", + "state_tax_applicable": "" }, "labels": { "entered": "", @@ -372,7 +375,14 @@ }, "labels": { "actions": "", - "new": "" + "discrepancy": "", + "entered_total": "", + "federal_tax": "", + "invoice_total": "", + "local_tax": "", + "new": "", + "state_tax": "", + "subtotal": "" }, "successes": { "created": "" diff --git a/client/yarn.lock b/client/yarn.lock index d438634d5..0c0c441a5 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -14,10 +14,10 @@ resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.0.0.tgz#6683db0df97c0c6900bb28a280faf391522ec734" integrity sha512-Nai+cd3XUrv/z50gSk1FI08j6rENZ1e93rhKeLTBGwa5WrmHvhn2vowa5+voZW2qkXJn1btS6tdvTEDB90M0Pw== -"@ant-design/icons@^4.0.0": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.0.3.tgz#ba2fd8160cb1a51ba31979319355a47c5d7b5376" - integrity sha512-vWzmt1QsWpnmOfT/wtAIeKTheN61Mo8KtaLm0yosd6vVUEVdc5E/pmcrd8lIp2CmuRT7qCU6e9x/RMffv0hOJg== +"@ant-design/icons@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.1.0.tgz#444edcc3822d5b43b2b038d6f893cd7f7dfcc48d" + integrity sha512-R1aIPJboGq4nVYwW7s0v/V2g6yiY27Kec5ldfK3mWHskw7bihPOKwxkHbITuSJcVNJsSvA6LNMlKZoY1u8DIKQ== dependencies: "@ant-design/colors" "^3.1.0" "@ant-design/icons-svg" "^4.0.0" @@ -1443,10 +1443,10 @@ resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.0.tgz#9403633e723336055fad4bbf5e4c9fe3c55f8d3f" integrity sha512-VuW7c+RAk3AYPU0Hxmun3RzXn7fbJDdjQbxvvpRMnQ9zrhk8mH42cY466M0n4e/UGQ+0smlx5BqZII8aYQ5XPg== -"@firebase/auth@0.14.3": - version "0.14.3" - resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.14.3.tgz#858d01bb11fc7840c927f8f49ae8d138e6b19a91" - integrity sha512-XPB3Mf3PwHibv2HbvqOol02ACCuwAKSY9HAtq70w3K3OwSDX4opDdrNOhoer7Nrq3xvX58b+c+oVGxD9mbo/qQ== +"@firebase/auth@0.14.4": + version "0.14.4" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.14.4.tgz#f7f411ba13961b1b84be8db73e32506d96a12693" + integrity sha512-cjYdSZQZ73jiI8De8Vw4L4LooXanc7HaYu4pEbq81Aag8fNy3oitfi0qTcrGLB7a/VLEAt1RtWo+lWotwCU2Ow== dependencies: "@firebase/auth-types" "0.10.0" @@ -1483,10 +1483,10 @@ resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-1.10.1.tgz#bf018f9c495f470592de745389474dc1c2960d3f" integrity sha512-vyKdm+AYUFT8XeUX62IOqaqPFCs/mAMoSEsqIz9HnSVsqCw/IocNjtjSa+3M80kRw4V8fI7JI+Xz6Wg5VJXLqA== -"@firebase/firestore@1.14.1": - version "1.14.1" - resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.14.1.tgz#36eb7dd4d9ee34d9d89d055b334b94669ab149b6" - integrity sha512-6wu+Oh00O8NPWyetr8BVZ9Y3Z7PrBZpoJjam2jjB0RVOaksvC1VTmjIOK6cLczt9hD0JRtb5wy+ME7E70N0ruA== +"@firebase/firestore@1.14.2": + version "1.14.2" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-1.14.2.tgz#c31123079cbc9a03228ea193081b2f1c217c2993" + integrity sha512-gUTQHiR1LN/g+iHfPZS+GJgDHK866xtAXcodSAOU4dt7k4B0oXllwuQmhjwQP0Gh7Lc/m+cK7dw/bmoHI6oWqQ== dependencies: "@firebase/component" "0.1.10" "@firebase/firestore-types" "1.10.1" @@ -1502,10 +1502,10 @@ resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.3.16.tgz#be0362d7f61648fdf36a7d95de239eddee88f931" integrity sha512-kHhBvSYiY2prY4vNQCALYs1+OruTdylvGemHG6G6Bs/rj3qw7ui3WysBsDU/rInJitHIcsZ35qrtanoJeQUIXQ== -"@firebase/functions@0.4.41": - version "0.4.41" - resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.4.41.tgz#ec3d533b90e5e1beb550018165956c55a6bfcf3e" - integrity sha512-S7fYjzoCSWoTUpTvYRXHYByXdNIP7TYFkfBGvy/ca1WT/6AnBOkdFuxPLilEaKWKlERMbYUQgxyNq52nUPRhCw== +"@firebase/functions@0.4.42": + version "0.4.42" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.4.42.tgz#a54622b757f98ea08c43880706cfcd4b1a527c84" + integrity sha512-7L2l0NvWCL1z2vWqvxE7srQ64XCIzgMTIM2uANPT1yh+bMcZPxl3SuP4LoDhXbfmLtpzGKTygsxP4WKt5z7ctg== dependencies: "@firebase/component" "0.1.10" "@firebase/functions-types" "0.3.16" @@ -1539,10 +1539,10 @@ resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.4.4.tgz#bef66157bdd3ddaafd6d48f1c5ee973fdc385f84" integrity sha512-JGtkr+1A1Dw7+yCqQigqBfGKtq0gTCruFScBD4MVjqZHiqGIYpnQisWnpGbkzPR6aOt6iQxgwxUhHG1ulUQGeg== -"@firebase/messaging@0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.6.13.tgz#e7df57b0f3652bc5bdfdc4c0c5dcae10a3c006bb" - integrity sha512-QfC1H88q+YYjqzrmplzRwUsVfDJpVB+AaUnv6SPBoh12Eh/Wutu+ot8h6rpEc1b0B69EGYD/Pu2+bnixYVhlUA== +"@firebase/messaging@0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.6.14.tgz#c0b57eaef8d114d40c43749023a5556b8d389d94" + integrity sha512-OuXbSGrNxhWYuHTGAjM55uTUMwsxd+S+fxj6OOyY26ezBOGj0tdPAHnAq+9wFwaItgAx8RUMjJF98Cc08PQqPA== dependencies: "@firebase/component" "0.1.10" "@firebase/installations" "0.4.8" @@ -1556,10 +1556,10 @@ resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.12.tgz#15fa79e296b502e21054a66c9e7ded59398fd8a7" integrity sha512-eIDF7CHetOE5sc+hCaUebEn/2Aiaju7UkgZDTl7lNQHz5fK9wJ/11HaE8WdnDr//ngS3lQAGC2RB4lAZeEWraA== -"@firebase/performance@0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.3.1.tgz#6580eb2a225d7e90a5c9677782debd7782fd86dc" - integrity sha512-YBs3iIGNZM39Yas4AU9BFZS4na1J/yoARVUGsL0Vcvw6TaPN57KiqKdfbjxz84WSuC3xrDa6Hirxh9S1sS0zbQ== +"@firebase/performance@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.3.2.tgz#1366df21fefc246b0e8e1eaac35565c1951149e2" + integrity sha512-awtqXas+Z0aud73pjvf1fAXMYe8Q+TSKNKnwyeMLqAWwHMwoywKGgksqGvOeg5hGQl5H7lzcnFHJ0HybMy1b9w== dependencies: "@firebase/component" "0.1.10" "@firebase/installations" "0.4.8" @@ -2660,12 +2660,12 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -antd@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/antd/-/antd-4.1.4.tgz#ea86d9e6742d8d01c7e84e423bb4d31403bec02e" - integrity sha512-YRF/nrAq4R+olKRJxEDqeO4xkTvx+U6ovIQjGew1JDiEHMMhSftpvpYg2Iu5hRdFL66uxQk6VYngMttBpuYm9Q== +antd@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.2.0.tgz#1b6c9cb1d534b33e83a24052d9a7ccbaba19d138" + integrity sha512-QEVhf2ESoBGD4Ef5UHVqHtKiiGEARQZuYLx+qcHbfZf3bLwsRHABgArIK0xsJyyoIts0dgwEBl5d8iI1+TVaVg== dependencies: - "@ant-design/icons" "^4.0.0" + "@ant-design/icons" "^4.1.0" "@ant-design/react-slick" "~0.25.5" array-tree-filter "^2.1.0" classnames "~2.2.6" @@ -2676,34 +2676,34 @@ antd@^4.1.4: omit.js "^1.0.2" prop-types "^15.7.2" raf "^3.4.1" - rc-animate "~2.10.2" + rc-animate "~2.11.0" rc-cascader "~1.0.0" rc-checkbox "~2.2.0" rc-collapse "~1.11.3" rc-dialog "~7.6.0" rc-drawer "~3.1.1" rc-dropdown "~3.0.0" - rc-field-form "~1.1.0" - rc-input-number "~4.5.4" + rc-field-form "~1.2.0" + rc-input-number "~4.6.1" rc-mentions "~1.1.0" rc-menu "~8.0.1" rc-notification "~4.0.0" rc-pagination "~2.2.0" rc-picker "~1.4.0" rc-progress "~2.5.0" - rc-rate "~2.5.1" + rc-rate "~2.6.0" rc-resize-observer "^0.2.0" rc-select "~10.2.0" rc-slider "~9.2.3" rc-steps "~3.5.0" rc-switch "~1.9.0" - rc-table "~7.4.2" + rc-table "~7.5.2" rc-tabs "~10.1.1" rc-tooltip "~4.0.2" rc-tree "~3.1.0" rc-tree-select "~3.1.0" rc-trigger "~4.0.0" - rc-upload "~3.0.0" + rc-upload "~3.0.4" rc-util "^4.20.0" rc-virtual-list "^1.1.0" resize-observer-polyfill "^1.5.1" @@ -3734,11 +3734,6 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -3929,15 +3924,6 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -4750,7 +4736,7 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -5923,21 +5909,21 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -firebase@^7.14.1: - version "7.14.1" - resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.14.1.tgz#62326774e9d82b0a7ac2763f6c644f5799b8b8a5" - integrity sha512-2lgBgWuFOd9wnwgOQEKmqqxuWf2Cp2xw08Nwar8/fD5gtoMngn7JY2PE86VUSu7XVTyhVFLfAIAMyZLDaRRTOg== +firebase@^7.14.2: + version "7.14.2" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-7.14.2.tgz#869013ce7ed1b44f1e85521d27863481f1358d6f" + integrity sha512-B06h1sXe9ODcoHv0EjF4+CEcm2Gl+8eSL35iAYn8ZRi5Qzivlge312iSROLwGeIIO2QOA+2ap9D6/X52eLIAOg== dependencies: "@firebase/analytics" "0.3.3" "@firebase/app" "0.6.2" "@firebase/app-types" "0.6.0" - "@firebase/auth" "0.14.3" + "@firebase/auth" "0.14.4" "@firebase/database" "0.6.1" - "@firebase/firestore" "1.14.1" - "@firebase/functions" "0.4.41" + "@firebase/firestore" "1.14.2" + "@firebase/functions" "0.4.42" "@firebase/installations" "0.4.8" - "@firebase/messaging" "0.6.13" - "@firebase/performance" "0.3.1" + "@firebase/messaging" "0.6.14" + "@firebase/performance" "0.3.2" "@firebase/polyfill" "0.3.34" "@firebase/remote-config" "0.1.19" "@firebase/storage" "0.3.32" @@ -6683,10 +6669,10 @@ i18next-browser-languagedetector@^4.1.1: dependencies: "@babel/runtime" "^7.5.5" -i18next@^19.4.3: - version "19.4.3" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.4.3.tgz#8eac368daa424e649d9b6d1dd9ab2d2695670738" - integrity sha512-mqjfrYnvoqh9s2yVnzUjMfELCOoRuiKbRYzICZozaHYZMpUx17MpWDCW6zC+E42CaveIet/Zh07j22GAo4CFqQ== +i18next@^19.4.4: + version "19.4.4" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.4.4.tgz#c0a18bc2f2be554da636e67bfbf5200c7948b60d" + integrity sha512-ofaHtdsDdX3A5nYur1HWblB7J4hIcjr2ACdnwTAJgc8hTfPbyzZfGX0hVkKpI3vzDIgO6Uzc4v1ffW2W6gG6zw== dependencies: "@babel/runtime" "^7.3.1" @@ -6902,11 +6888,6 @@ invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" @@ -8001,13 +7982,6 @@ lazy-cache@^1.0.3: resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -8812,10 +8786,10 @@ node-releases@^1.1.52: dependencies: semver "^6.3.0" -node-sass@^4.13.1: - version "4.13.1" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" - integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== +node-sass@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -8831,7 +8805,7 @@ node-sass@^4.13.1: node-gyp "^3.8.0" npmlog "^4.0.0" request "^2.88.0" - sass-graph "^2.2.4" + sass-graph "2.2.5" stdout-stream "^1.4.0" "true-case-path" "^1.0.2" @@ -9134,13 +9108,6 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -10543,7 +10510,7 @@ rc-align@^3.0.0-rc.0: rc-util "^4.12.0" resize-observer-polyfill "^1.5.1" -rc-animate@2.x, rc-animate@^2.10.0, rc-animate@^2.10.1, rc-animate@^2.10.2, rc-animate@^2.9.2, rc-animate@~2.10.2: +rc-animate@2.x, rc-animate@^2.10.0, rc-animate@^2.10.1, rc-animate@^2.10.2, rc-animate@^2.9.2: version "2.10.3" resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.10.3.tgz#163d5e29281a4ff82d53ee7918eeeac856b756f9" integrity sha512-A9qQ5Y8BLlM7EhuCO3fWb/dChndlbWtY/P5QvPqBU7h4r5Q2QsvsbpTGgdYZATRDZbTRnJXXfVk9UtlyS7MBLg== @@ -10556,6 +10523,19 @@ rc-animate@2.x, rc-animate@^2.10.0, rc-animate@^2.10.1, rc-animate@^2.10.2, rc-a rc-util "^4.15.3" react-lifecycles-compat "^3.0.4" +rc-animate@~2.11.0: + version "2.11.1" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c" + integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + css-animation "^1.3.2" + prop-types "15.x" + raf "^3.4.0" + rc-util "^4.15.3" + react-lifecycles-compat "^3.0.4" + rc-cascader@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.0.1.tgz#770de1e1fa7bd559aabd4d59e525819b8bc809b7" @@ -10614,15 +10594,14 @@ rc-dropdown@~3.0.0: classnames "^2.2.6" rc-trigger "^4.0.0" -rc-field-form@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.1.1.tgz#73f6a2d414005453bb70240abf39247a35b6ae18" - integrity sha512-nS/4BZ+Ikzk5/AYRZn3iGsJKJMBa/IQbe4bxYd/u1u5GMs630tHnKimxRJ5U/emdC1ZbVG3YahlSRin+1hKikA== +rc-field-form@~1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.2.2.tgz#186ca18bb9b8df7eb4118d938374b52cf5890fd6" + integrity sha512-i5GMWOZsmZT75eNPzGJVVF7SmWo/wLI//PqEI2ShbI9hPdBK0Rsjd16C3K+FHQ9Wnc2ODHqqmT783fowu1m8zw== dependencies: "@babel/runtime" "^7.8.4" async-validator "^3.0.3" - rc-util "^4.17.0" - warning "^4.0.3" + rc-util "^4.20.3" rc-hammerjs@~0.6.0: version "0.6.9" @@ -10633,16 +10612,14 @@ rc-hammerjs@~0.6.0: hammerjs "^2.0.8" prop-types "^15.5.9" -rc-input-number@~4.5.4: - version "4.5.6" - resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-4.5.6.tgz#0d52762b0ac39432256e2c6c5c836102f9797c46" - integrity sha512-AXbL4gtQ1mSQnu6v/JtMv3UbGRCzLvQznmf0a7U/SAtZ8+dCEAqD4JpJhkjv73Wog53eRYhw4l7ApdXflc9ymg== +rc-input-number@~4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-4.6.1.tgz#2216d644c78857cc18411f0d3b6c14dba9a0ce7f" + integrity sha512-9PhGJia3lZTdkfrILmLf8AAUY5KqFSJxQ6ZccCFfhrA2T4ZPV7cxc5+iPCuXx0FQ/CPcLpEN7D3l32w+qdpp8g== dependencies: babel-runtime "6.x" classnames "^2.2.0" - prop-types "^15.5.7" rc-util "^4.5.1" - rmc-feedback "^2.0.0" rc-mentions@~1.1.0: version "1.1.0" @@ -10703,15 +10680,13 @@ rc-progress@~2.5.0: babel-runtime "6.x" prop-types "^15.5.8" -rc-rate@~2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.5.1.tgz#55fc5fd23ea9dcc72250b9a889803479f4842961" - integrity sha512-3iJkNJT8xlHklPCdeZtUZmJmRVUbr6AHRlfSsztfYTXVlHrv2TcPn3XkHsH+12j812WVB7gvilS2j3+ffjUHXg== +rc-rate@~2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.6.0.tgz#3990f1b0c7f0da91465c12af3612c03dd836703d" + integrity sha512-g6gXZDQfd+kLK7AmoPPWjZ5nlM6ckwQy4RU1xcaFL8AEDx10qbC6Vi6oEhruBbYiPlbAacYcsMA5EbFXhD5x8A== dependencies: classnames "^2.2.5" - prop-types "^15.5.8" - rc-util "^4.3.0" - react-lifecycles-compat "^3.0.4" + rc-util "^4.20.1" rc-resize-observer@^0.2.0: version "0.2.1" @@ -10777,10 +10752,10 @@ rc-switch@~1.9.0: prop-types "^15.5.6" react-lifecycles-compat "^3.0.4" -rc-table@~7.4.2: - version "7.4.5" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.4.5.tgz#4bff2eaba3aed8a2c7242dcb62a49bf51e0114dc" - integrity sha512-lQS9izhGmgyCVK05imUrl32lBS9g2f3hB8LOKOof19JWCULKuYL5D3lLpaZSpCTecRYfONYNpgR7mZs7FOnYSQ== +rc-table@~7.5.2: + version "7.5.3" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.5.3.tgz#1e706049540f3aaeaf1986101283b696ea03e1e3" + integrity sha512-eQ+dyD66Rc/QEPSagkzkTtx6+unbIEf6zLPlKfP4iUgxTiXF7sLlmYQyQqbuFQZKE+qD1qow4HLPkY3xpUUqGg== dependencies: classnames "^2.2.5" component-classes "^1.2.6" @@ -10844,15 +10819,15 @@ rc-trigger@^4.0.0, rc-trigger@~4.0.0: rc-animate "^2.10.2" rc-util "^4.20.0" -rc-upload@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.0.0.tgz#1365a77405b2df82749e55bcc475ee0de9424370" - integrity sha512-GTmLJ2Habrgon26xwtF8nx1FBxu8KUjRC6QW/7a+NVZ6qXIo+s7HnjqwseuG42kz6xGCoSLNpHgIoHW55EwpxA== +rc-upload@~3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.0.4.tgz#5fd8ba9eefc1e466225240ae997404693d86fa09" + integrity sha512-dTCvj1iHxjHG0qo5UyN2ZmtueG9GG3xrOhOwnjsehaoOvl0TOjLbHkUIPPqLZk+wHb57Ue4KB7c3+IMgkDoBvw== dependencies: babel-runtime "6.x" classnames "^2.2.5" -rc-util@^4.0.4, rc-util@^4.11.0, rc-util@^4.12.0, rc-util@^4.13.0, rc-util@^4.15.3, rc-util@^4.16.1, rc-util@^4.17.0, rc-util@^4.20.0, rc-util@^4.20.1, rc-util@^4.3.0, rc-util@^4.5.1, rc-util@^4.6.0, rc-util@^4.8.0, rc-util@^4.9.0: +rc-util@^4.0.4, rc-util@^4.11.0, rc-util@^4.12.0, rc-util@^4.13.0, rc-util@^4.15.3, rc-util@^4.16.1, rc-util@^4.17.0, rc-util@^4.20.0, rc-util@^4.20.1, rc-util@^4.5.1, rc-util@^4.6.0, rc-util@^4.8.0, rc-util@^4.9.0: version "4.20.1" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.1.tgz#a5976eabfc3198ed9b8e79ffb8c53c231db36e77" integrity sha512-EGlDg9KPN0POzmAR2hk9ZyFc3DmJIrXwlC8NoDxJguX2LTINnVqwadLIVauLfYgYISMiFYFrSHiFW+cqUhZ5dA== @@ -10875,6 +10850,17 @@ rc-util@^4.14.0: react-lifecycles-compat "^3.0.4" shallowequal "^1.1.0" +rc-util@^4.20.3: + version "4.20.5" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.5.tgz#f7c77569e971ae6a8ad56f899cadd22275398325" + integrity sha512-f67s4Dt1quBYhrVPq5QMKmK3eS2hN1NNIAyhaiG0HmvqiGYAXMQ7SP2AlGqv750vnzhJs38JklbkWT1/wjhFPg== + dependencies: + add-dom-event-listener "^1.1.0" + prop-types "^15.5.10" + react-is "^16.12.0" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + rc-virtual-list@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-1.1.1.tgz#824a2c210729ca738e041b8da9e3347cc6650e40" @@ -10923,10 +10909,10 @@ react-barcode@^1.4.0: jsbarcode "^3.8.0" prop-types "^15.6.2" -react-big-calendar@^0.24.5: - version "0.24.5" - resolved "https://registry.yarnpkg.com/react-big-calendar/-/react-big-calendar-0.24.5.tgz#c6b988b25967e483163e24f157b0ffd595c35d83" - integrity sha512-ukKxDK8MFBuiooJBoxrhsUgEAIZE4kBY6A+7jtKxUwmkPCRtETcm1E3tRbJapiWmYYxghfIxcem8cBGI5iBoUg== +react-big-calendar@^0.24.6: + version "0.24.6" + resolved "https://registry.yarnpkg.com/react-big-calendar/-/react-big-calendar-0.24.6.tgz#7c131709b5ea9918d0bae1d8574d64c2f4d98e48" + integrity sha512-3t+FSqmaNQr3sAvOcIue+VmNjBV7PNOiGLUidwG0mN6LRPuprO8+poZBq3QM6OqZPu69HY50tCZN8P3BslRUbw== dependencies: "@babel/runtime" "^7.1.5" clsx "^1.0.4" @@ -11028,10 +11014,10 @@ react-grid-layout@^0.18.3: react-draggable "^4.0.0" react-resizable "^1.9.0" -react-i18next@^11.3.5: - version "11.3.5" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.3.5.tgz#9cd5273f752a241db65b3118e3075f895f5fbf65" - integrity sha512-x1dgM7UU/jKQ72/q3p9kkYz0C8fqAfMlUlx+SxqBUcRMTs/09HfnOUZFry1+GBpUcDHAg8R/vmPqL9rRzFO0UQ== +react-i18next@^11.4.0: + version "11.4.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.4.0.tgz#dde6bf3a695910af7a4270fea2e111bc331cf151" + integrity sha512-lyOZSSQkif4H9HnHN3iEKVkryLI+WkdZSEw3VAZzinZLopfYRMHVY5YxCopdkXPLEHs6S5GjKYPh3+j0j336Fg== dependencies: "@babel/runtime" "^7.3.1" html-parse-stringify2 "2.0.1" @@ -11851,14 +11837,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rmc-feedback@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/rmc-feedback/-/rmc-feedback-2.0.0.tgz#cbc6cb3ae63c7a635eef0e25e4fbaf5ac366eeaa" - integrity sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ== - dependencies: - babel-runtime "6.x" - classnames "^2.2.5" - rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" @@ -11935,15 +11913,15 @@ sanitize.css@^10.0.0: resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== -sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== dependencies: glob "^7.0.0" lodash "^4.0.0" scss-tokenizer "^0.2.3" - yargs "^7.0.0" + yargs "^13.3.2" sass-loader@8.0.2: version "8.0.2" @@ -12566,7 +12544,7 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -13631,11 +13609,6 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -13904,11 +13877,6 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -13952,6 +13920,14 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^18.1.1: version "18.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" @@ -13960,13 +13936,6 @@ yargs-parser@^18.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs@12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -14001,6 +13970,22 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@^15.3.1: version "15.3.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" @@ -14018,25 +14003,6 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.1" -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - zen-observable-ts@^0.8.20: version "0.8.20" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz#44091e335d3fcbc97f6497e63e7f57d5b516b163" diff --git a/hasura/migrations/1588713434755_alter_table_public_invoicelines_add_column_quantity/down.yaml b/hasura/migrations/1588713434755_alter_table_public_invoicelines_add_column_quantity/down.yaml new file mode 100644 index 000000000..4db9dac2f --- /dev/null +++ b/hasura/migrations/1588713434755_alter_table_public_invoicelines_add_column_quantity/down.yaml @@ -0,0 +1,5 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."invoicelines" DROP COLUMN "quantity"; + type: run_sql diff --git a/hasura/migrations/1588713434755_alter_table_public_invoicelines_add_column_quantity/up.yaml b/hasura/migrations/1588713434755_alter_table_public_invoicelines_add_column_quantity/up.yaml new file mode 100644 index 000000000..925355596 --- /dev/null +++ b/hasura/migrations/1588713434755_alter_table_public_invoicelines_add_column_quantity/up.yaml @@ -0,0 +1,6 @@ +- args: + cascade: false + read_only: false + sql: ALTER TABLE "public"."invoicelines" ADD COLUMN "quantity" integer NOT NULL + DEFAULT 1; + type: run_sql diff --git a/hasura/migrations/1588713453362_update_permission_user_public_table_invoicelines/down.yaml b/hasura/migrations/1588713453362_update_permission_user_public_table_invoicelines/down.yaml new file mode 100644 index 000000000..c168c6100 --- /dev/null +++ b/hasura/migrations/1588713453362_update_permission_user_public_table_invoicelines/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_insert_permission +- args: + permission: + check: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_cost + - actual_price + - applicable_taxes + - cost_center + - created_at + - id + - invoiceid + - joblineid + - line_desc + - updated_at + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoicelines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1588713453362_update_permission_user_public_table_invoicelines/up.yaml b/hasura/migrations/1588713453362_update_permission_user_public_table_invoicelines/up.yaml new file mode 100644 index 000000000..cfdd74ff3 --- /dev/null +++ b/hasura/migrations/1588713453362_update_permission_user_public_table_invoicelines/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_insert_permission +- args: + permission: + check: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - actual_cost + - actual_price + - applicable_taxes + - cost_center + - created_at + - id + - invoiceid + - joblineid + - line_desc + - quantity + - updated_at + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoicelines + schema: public + type: create_insert_permission diff --git a/hasura/migrations/1588713460636_update_permission_user_public_table_invoicelines/down.yaml b/hasura/migrations/1588713460636_update_permission_user_public_table_invoicelines/down.yaml new file mode 100644 index 000000000..1415d9617 --- /dev/null +++ b/hasura/migrations/1588713460636_update_permission_user_public_table_invoicelines/down.yaml @@ -0,0 +1,37 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_cost + - actual_price + - applicable_taxes + - cost_center + - created_at + - id + - invoiceid + - joblineid + - line_desc + - updated_at + computed_fields: [] + filter: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: invoicelines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1588713460636_update_permission_user_public_table_invoicelines/up.yaml b/hasura/migrations/1588713460636_update_permission_user_public_table_invoicelines/up.yaml new file mode 100644 index 000000000..f54972998 --- /dev/null +++ b/hasura/migrations/1588713460636_update_permission_user_public_table_invoicelines/up.yaml @@ -0,0 +1,38 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_select_permission +- args: + permission: + allow_aggregations: false + columns: + - actual_cost + - actual_price + - applicable_taxes + - cost_center + - created_at + - id + - invoiceid + - joblineid + - line_desc + - quantity + - updated_at + computed_fields: [] + filter: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + role: user + table: + name: invoicelines + schema: public + type: create_select_permission diff --git a/hasura/migrations/1588713469291_update_permission_user_public_table_invoicelines/down.yaml b/hasura/migrations/1588713469291_update_permission_user_public_table_invoicelines/down.yaml new file mode 100644 index 000000000..5dca3857f --- /dev/null +++ b/hasura/migrations/1588713469291_update_permission_user_public_table_invoicelines/down.yaml @@ -0,0 +1,39 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_cost + - actual_price + - applicable_taxes + - cost_center + - created_at + - id + - invoiceid + - joblineid + - line_desc + - updated_at + filter: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoicelines + schema: public + type: create_update_permission diff --git a/hasura/migrations/1588713469291_update_permission_user_public_table_invoicelines/up.yaml b/hasura/migrations/1588713469291_update_permission_user_public_table_invoicelines/up.yaml new file mode 100644 index 000000000..af16d5b8b --- /dev/null +++ b/hasura/migrations/1588713469291_update_permission_user_public_table_invoicelines/up.yaml @@ -0,0 +1,40 @@ +- args: + role: user + table: + name: invoicelines + schema: public + type: drop_update_permission +- args: + permission: + columns: + - actual_cost + - actual_price + - applicable_taxes + - cost_center + - created_at + - id + - invoiceid + - joblineid + - line_desc + - quantity + - updated_at + filter: + invoice: + job: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + localPresets: + - key: "" + value: "" + set: {} + role: user + table: + name: invoicelines + schema: public + type: create_update_permission