Merged in release/2022-01-28 (pull request #360)

release/2022-01-28

Approved-by: Patrick Fic
This commit is contained in:
Patrick Fic
2022-01-27 22:35:43 +00:00
9 changed files with 85 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
<babeledit_project be_version="2.7.1" version="1.2"> <babeledit_project version="1.2" be_version="2.7.1">
<!-- <!--
BabelEdit project file BabelEdit project file
@@ -38091,6 +38091,27 @@
</translation> </translation>
</translations> </translations>
</concept_node> </concept_node>
<concept_node>
<name>production_by_category_one</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>production_by_csr</name> <name>production_by_csr</name>
<definition_loaded>false</definition_loaded> <definition_loaded>false</definition_loaded>

View File

@@ -45,14 +45,14 @@ function ChatSendMessageComponent({
const { t } = useTranslation(); const { t } = useTranslation();
const handleEnter = () => { const handleEnter = () => {
if (message === "" || !message) return;
logImEXEvent("messaging_send_message");
const selectedImages = selectedMedia.filter((i) => i.isSelected); const selectedImages = selectedMedia.filter((i) => i.isSelected);
if ((message === "" || !message) && selectedImages.length === 0) return;
logImEXEvent("messaging_send_message");
if (selectedImages.length < 11) { if (selectedImages.length < 11) {
sendMessage({ sendMessage({
to: conversation.phone_num, to: conversation.phone_num,
body: message, body: message || "",
messagingServiceSid: bodyshop.messagingservicesid, messagingServiceSid: bodyshop.messagingservicesid,
conversationid: conversation.id, conversationid: conversation.id,
selectedMedia: selectedImages, selectedMedia: selectedImages,
@@ -93,7 +93,7 @@ function ChatSendMessageComponent({
</span> </span>
<SendOutlined <SendOutlined
className="imex-flex-row__margin" className="imex-flex-row__margin"
disabled={message === "" || !message} // disabled={message === "" || !message}
onClick={handleEnter} onClick={handleEnter}
/> />
<Spin <Spin

View File

@@ -84,12 +84,12 @@ export function DmsPostForm({ bodyshop, socket, job, logsRef }) {
ro_number: job.ro_number, ro_number: job.ro_number,
ownr_nm: `${job.ownr_fn || ""} ${job.ownr_ln || ""} ${ ownr_nm: `${job.ownr_fn || ""} ${job.ownr_ln || ""} ${
job.ownr_co_nm || "" job.ownr_co_nm || ""
}`, }`.trim(),
ins_co_nm: job.ins_co_nm || "N/A", ins_co_nm: job.ins_co_nm || "N/A",
clm_po: `${job.clm_no ? `${job.clm_no} ` : ""}${ clm_po: `${job.clm_no ? `${job.clm_no} ` : ""}${
job.po_number || "" job.po_number || ""
}`, }`,
})}.${ }).trim()}.${
job.area_of_damage && job.area_of_damage.impact1 job.area_of_damage && job.area_of_damage.impact1
? " " + ? " " +
t("jobs.labels.dms.damageto", { t("jobs.labels.dms.damageto", {

View File

@@ -8,7 +8,8 @@ import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
const ProdTemplates = TemplateList("production"); const ProdTemplates = TemplateList("production");
const ProductionByTech = TemplateList("special").production_by_technician_one; const { production_by_technician_one, production_by_category_one } =
TemplateList("special");
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -58,7 +59,7 @@ export function ProductionListPrint({ bodyshop }) {
setLoading(true); setLoading(true);
await GenerateDocument( await GenerateDocument(
{ {
name: ProductionByTech.key, name: production_by_technician_one.key,
variables: { id: e.id }, variables: { id: e.id },
}, },
{}, {},
@@ -71,6 +72,29 @@ export function ProductionListPrint({ bodyshop }) {
</Menu.Item> </Menu.Item>
))} ))}
</Menu.SubMenu> </Menu.SubMenu>
<Menu.SubMenu
title={t("reportcenter.templates.production_by_category_one")}
>
{bodyshop.md_categories.map((e) => (
<Menu.Item
key={e}
onClick={async () => {
setLoading(true);
await GenerateDocument(
{
name: production_by_category_one.key,
variables: { category: e },
},
{},
"p"
);
setLoading(false);
}}
>
{e}
</Menu.Item>
))}
</Menu.SubMenu>
</Menu> </Menu>
} }
> >

View File

@@ -1507,7 +1507,7 @@
"diskscan": "Scan Disk for Estimates", "diskscan": "Scan Disk for Estimates",
"dms": { "dms": {
"damageto": "Damage to $t(jobs.fields.area_of_damage_impact.{{area_of_damage}}).", "damageto": "Damage to $t(jobs.fields.area_of_damage_impact.{{area_of_damage}}).",
"defaultstory": "B/S RO: {{ro_number}}. Owner: {{ownr_nm}}. Insurance Co: {{ins_co_nm}}. Claim/PO #: {{clm_po}}", "defaultstory": "B/S RO: {{ro_number}}. Owner: {{ownr_nm}}. Insurance Co: {{ins_co_nm}}. Claim/PO #: {{clm_po}}",
"invoicedatefuture": "Invoice date must be today or in the future for CDK posting.", "invoicedatefuture": "Invoice date must be today or in the future for CDK posting.",
"kmoutnotgreaterthankmin": "Mileage out must be greater than mileage in.", "kmoutnotgreaterthankmin": "Mileage out must be greater than mileage in.",
"logs": "Logs", "logs": "Logs",
@@ -2264,6 +2264,7 @@
"payments_by_date": "Payments by Date", "payments_by_date": "Payments by Date",
"payments_by_date_type": "Payments by Date and Type", "payments_by_date_type": "Payments by Date and Type",
"production_by_category": "Production by Category", "production_by_category": "Production by Category",
"production_by_category_one": "Production filtered by Category",
"production_by_csr": "Production by CSR", "production_by_csr": "Production by CSR",
"production_by_last_name": "Production by Last Name", "production_by_last_name": "Production by Last Name",
"production_by_repair_status": "Production by Status", "production_by_repair_status": "Production by Status",

View File

@@ -2264,6 +2264,7 @@
"payments_by_date": "", "payments_by_date": "",
"payments_by_date_type": "", "payments_by_date_type": "",
"production_by_category": "", "production_by_category": "",
"production_by_category_one": "",
"production_by_csr": "", "production_by_csr": "",
"production_by_last_name": "", "production_by_last_name": "",
"production_by_repair_status": "", "production_by_repair_status": "",

View File

@@ -2264,6 +2264,7 @@
"payments_by_date": "", "payments_by_date": "",
"payments_by_date_type": "", "payments_by_date_type": "",
"production_by_category": "", "production_by_category": "",
"production_by_category_one": "",
"production_by_csr": "", "production_by_csr": "",
"production_by_last_name": "", "production_by_last_name": "",
"production_by_repair_status": "", "production_by_repair_status": "",

View File

@@ -1647,6 +1647,16 @@ export const TemplateList = (type, context) => {
//idtype: "vendor", //idtype: "vendor",
disabled: false, disabled: false,
}, },
production_by_category_one: {
title: i18n.t("reportcenter.templates.production_by_category_one"),
description: "",
subject: i18n.t(
"reportcenter.templates.production_by_category_one"
),
key: "production_by_category_one",
//idtype: "vendor",
disabled: false,
},
} }
: {}), : {}),
}; };

View File

@@ -13,13 +13,20 @@ const logger = require("../utils/logger");
const client = twilio( const client = twilio(
process.env.TWILIO_AUTH_TOKEN, process.env.TWILIO_AUTH_TOKEN,
process.env.TWILIO_AUTH_KEY process.env.TWILIO_AUTH_KEY
);const { admin } = require("../firebase/firebase-handler"); );
const { admin } = require("../firebase/firebase-handler");
const gqlClient = require("../graphql-client/graphql-client").client; const gqlClient = require("../graphql-client/graphql-client").client;
exports.send = (req, res) => { exports.send = (req, res) => {
const { to, messagingServiceSid, body, conversationid, selectedMedia, imexshopid } = const {
req.body; to,
messagingServiceSid,
body,
conversationid,
selectedMedia,
imexshopid,
} = req.body;
logger.log("sms-outbound", "DEBUG", req.user.email, null, { logger.log("sms-outbound", "DEBUG", req.user.email, null, {
messagingServiceSid: messagingServiceSid, messagingServiceSid: messagingServiceSid,
@@ -34,7 +41,12 @@ exports.send = (req, res) => {
req.body.selectedMedia.length > 0 ? selectedMedia.map((i) => i.src) : [], req.body.selectedMedia.length > 0 ? selectedMedia.map((i) => i.src) : [],
}); });
if (!!to && !!messagingServiceSid && !!body && !!conversationid) { if (
!!to &&
!!messagingServiceSid &&
(!!body || !!selectedMedia.length > 0) &&
!!conversationid
) {
client.messages client.messages
.create({ .create({
body: body, body: body,
@@ -67,10 +79,9 @@ exports.send = (req, res) => {
const data = { const data = {
type: "messaging-outbound", type: "messaging-outbound",
conversationid: newMessage.conversationid || "", conversationid: newMessage.conversationid || "",
}; };
admin.messaging().send({ admin.messaging().send({
topic: `${imexshopid}-messaging`, topic: `${imexshopid}-messaging`,
data, data,
}); });