IO-948 Vendor add to phonebook
This commit is contained in:
@@ -27022,6 +27022,53 @@
|
||||
</concept_node>
|
||||
</children>
|
||||
</folder_node>
|
||||
<folder_node>
|
||||
<name>errors</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>adding</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>saving</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>fields</name>
|
||||
<children>
|
||||
@@ -27300,9 +27347,77 @@
|
||||
</concept_node>
|
||||
</children>
|
||||
</folder_node>
|
||||
<folder_node>
|
||||
<name>labels</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>vendorcategory</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>successes</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>added</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>deleted</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>saved</name>
|
||||
<definition_loaded>false</definition_loaded>
|
||||
@@ -34534,6 +34649,27 @@
|
||||
<folder_node>
|
||||
<name>actions</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>addtophonebook</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>new</name>
|
||||
<definition_loaded>false</definition_loaded>
|
||||
|
||||
@@ -77,7 +77,7 @@ function PhonebookFormContainer({ refetch, bodyshop }) {
|
||||
|
||||
if (!result.errors) {
|
||||
notification["success"]({
|
||||
message: t("Phonebook.successes.saved"),
|
||||
message: t("phonebook.successes.saved"),
|
||||
});
|
||||
|
||||
if (refetch) await refetch();
|
||||
@@ -87,7 +87,9 @@ function PhonebookFormContainer({ refetch, bodyshop }) {
|
||||
setFormLoading(false);
|
||||
} else {
|
||||
notification["error"]({
|
||||
message: t("Phonebook.errors.saving"),
|
||||
message: t("phonebook.errors.saving", {
|
||||
error: JSON.stringify(result.errors),
|
||||
}),
|
||||
});
|
||||
|
||||
setFormLoading(false);
|
||||
|
||||
@@ -20,6 +20,7 @@ import PhoneFormItem, {
|
||||
PhoneItemFormatterValidation,
|
||||
} from "../form-items-formatted/phone-form-item.component";
|
||||
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
|
||||
import VendorsPhonebookAdd from "../vendors-phonebook-add/vendors-phonebook-add.component";
|
||||
export default function VendorsFormComponent({
|
||||
form,
|
||||
formLoading,
|
||||
@@ -53,6 +54,11 @@ export default function VendorsFormComponent({
|
||||
<Button type="danger" onClick={handleDelete} loading={formLoading}>
|
||||
{t("general.actions.delete")}
|
||||
</Button>
|
||||
|
||||
<VendorsPhonebookAdd
|
||||
form={form}
|
||||
disabled={form.isFieldsTouched()}
|
||||
/>
|
||||
</Space>
|
||||
}
|
||||
/>
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
import { Button, notification } from "antd";
|
||||
import React, { useState } from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { useMutation } from "@apollo/client";
|
||||
import { INSERT_NEW_PHONEBOOK } from "../../graphql/phonebook.queries";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
bodyshop: selectBodyshop,
|
||||
});
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
||||
});
|
||||
export default connect(
|
||||
mapStateToProps,
|
||||
mapDispatchToProps
|
||||
)(VendorsPhonebookAdd);
|
||||
|
||||
export function VendorsPhonebookAdd({ form, bodyshop, disabled }) {
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [insertPhonebook] = useMutation(INSERT_NEW_PHONEBOOK);
|
||||
const { t } = useTranslation();
|
||||
|
||||
const handleAdd = async () => {
|
||||
setLoading(true);
|
||||
|
||||
const VendorValues = form.getFieldsValue([
|
||||
"name",
|
||||
"email",
|
||||
"phone",
|
||||
"street1",
|
||||
"street2",
|
||||
"city",
|
||||
"state",
|
||||
"zip",
|
||||
"country",
|
||||
]);
|
||||
console.log(`VendorValues`, VendorValues);
|
||||
const result = await insertPhonebook({
|
||||
variables: {
|
||||
phonebook_entry: [
|
||||
{
|
||||
//The phonebook obj,
|
||||
bodyshopid: bodyshop.id,
|
||||
company: VendorValues.name,
|
||||
category: t("phonebook.labels.vendorcategory"),
|
||||
address1: VendorValues.street1,
|
||||
address2: VendorValues.street2,
|
||||
city: VendorValues.city,
|
||||
state: VendorValues.state,
|
||||
zip: VendorValues.zip,
|
||||
country: VendorValues.country,
|
||||
phone1: VendorValues.phone,
|
||||
email: VendorValues.email,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
if (result.errors) {
|
||||
notification.open({
|
||||
type: "error",
|
||||
message: t("phonebook.errors.adding", {
|
||||
error: JSON.stringify(result.errors),
|
||||
}),
|
||||
});
|
||||
} else {
|
||||
notification.open({
|
||||
type: "success",
|
||||
message: t("phonebook.successes.added"),
|
||||
});
|
||||
}
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
return (
|
||||
<Button onClick={handleAdd} loading={loading} disabled={disabled}>
|
||||
{t("vendors.actions.addtophonebook")}
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
@@ -1618,6 +1618,10 @@
|
||||
"actions": {
|
||||
"new": "New Phonebook Entry"
|
||||
},
|
||||
"errors": {
|
||||
"adding": "Error adding phonebook entry. {{error}}",
|
||||
"saving": "Error saving phonebook entry. {{error}}"
|
||||
},
|
||||
"fields": {
|
||||
"category": "Category",
|
||||
"city": "City",
|
||||
@@ -1633,8 +1637,13 @@
|
||||
"street1": "Street 1",
|
||||
"street2": "Street 2"
|
||||
},
|
||||
"labels": {
|
||||
"vendorcategory": "Vendor"
|
||||
},
|
||||
"successes": {
|
||||
"saved": ""
|
||||
"added": "Phonebook entry added successfully. ",
|
||||
"deleted": "Phonebook entry deleted successfully. ",
|
||||
"saved": "Phonebook entry saved successfully. "
|
||||
}
|
||||
},
|
||||
"printcenter": {
|
||||
@@ -2077,6 +2086,7 @@
|
||||
},
|
||||
"vendors": {
|
||||
"actions": {
|
||||
"addtophonebook": "Add to Phonebook",
|
||||
"new": "New Vendor",
|
||||
"newpreferredmake": "New Preferred Make"
|
||||
},
|
||||
|
||||
@@ -1618,6 +1618,10 @@
|
||||
"actions": {
|
||||
"new": ""
|
||||
},
|
||||
"errors": {
|
||||
"adding": "",
|
||||
"saving": ""
|
||||
},
|
||||
"fields": {
|
||||
"category": "",
|
||||
"city": "",
|
||||
@@ -1633,7 +1637,12 @@
|
||||
"street1": "",
|
||||
"street2": ""
|
||||
},
|
||||
"labels": {
|
||||
"vendorcategory": ""
|
||||
},
|
||||
"successes": {
|
||||
"added": "",
|
||||
"deleted": "",
|
||||
"saved": ""
|
||||
}
|
||||
},
|
||||
@@ -2077,6 +2086,7 @@
|
||||
},
|
||||
"vendors": {
|
||||
"actions": {
|
||||
"addtophonebook": "",
|
||||
"new": "Nuevo vendedor",
|
||||
"newpreferredmake": ""
|
||||
},
|
||||
|
||||
@@ -1618,6 +1618,10 @@
|
||||
"actions": {
|
||||
"new": ""
|
||||
},
|
||||
"errors": {
|
||||
"adding": "",
|
||||
"saving": ""
|
||||
},
|
||||
"fields": {
|
||||
"category": "",
|
||||
"city": "",
|
||||
@@ -1633,7 +1637,12 @@
|
||||
"street1": "",
|
||||
"street2": ""
|
||||
},
|
||||
"labels": {
|
||||
"vendorcategory": ""
|
||||
},
|
||||
"successes": {
|
||||
"added": "",
|
||||
"deleted": "",
|
||||
"saved": ""
|
||||
}
|
||||
},
|
||||
@@ -2077,6 +2086,7 @@
|
||||
},
|
||||
"vendors": {
|
||||
"actions": {
|
||||
"addtophonebook": "",
|
||||
"new": "Nouveau vendeur",
|
||||
"newpreferredmake": ""
|
||||
},
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
- args:
|
||||
role: user
|
||||
table:
|
||||
name: phonebook
|
||||
schema: public
|
||||
type: drop_delete_permission
|
||||
@@ -0,0 +1,17 @@
|
||||
- args:
|
||||
permission:
|
||||
backend_only: false
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
role: user
|
||||
table:
|
||||
name: phonebook
|
||||
schema: public
|
||||
type: create_delete_permission
|
||||
@@ -3886,6 +3886,18 @@ tables:
|
||||
- active:
|
||||
_eq: true
|
||||
check: null
|
||||
delete_permissions:
|
||||
- role: user
|
||||
permission:
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
_and:
|
||||
- user:
|
||||
authid:
|
||||
_eq: X-Hasura-User-Id
|
||||
- active:
|
||||
_eq: true
|
||||
- table:
|
||||
schema: public
|
||||
name: scoreboard
|
||||
|
||||
Reference in New Issue
Block a user