diff --git a/components/questionnaire/forms/DigitalCertificates.js b/components/questionnaire/forms/DigitalCertificates.js index 746818b..165cfbe 100644 --- a/components/questionnaire/forms/DigitalCertificates.js +++ b/components/questionnaire/forms/DigitalCertificates.js @@ -86,7 +86,7 @@ export default class DigitalCertificates extends React.Component { if(head_person[fields[i]] !== null && head_person[fields[i]] !== "") { - if(cert_owner.indexOf(head_person[fields[i]].toUpperCase()) < 0) + if(cert_owner.indexOf(head_person[fields[i]].toUpperCase().trim()) < 0) { owner_valid = false; } @@ -267,16 +267,16 @@ export default class DigitalCertificates extends React.Component return ( { certificates_error === "NOT_INSTALLED" && ( - Плагин КриптоПРО не установлен, посмотрите инструкцию как установить плагин КриптоПРО. }/> + Плагин КриптоПРО не установлен, посмотрите инструкцию как установить плагин КриптоПРО. }/> ) } { certificates_error === "CERTIFICATES" && ( - Плагин КриптоПРО не активирован, пожалуйста, обновите страницу и подтвердите разрешение для сайта на доступ к списку сертификатов. }/> + Плагин КриптоПРО не активирован, пожалуйста, обновите страницу и подтвердите разрешение для сайта на доступ к списку сертификатов. }/> ) } { certificates_error === "ISSUED" && ( - Отсутствует действующий сертификат. ИНН: { company.inn }. ФИО: { head_person.lastname } { head_person.firstname } { head_person.middlename } }/> + Анкету необходимо подписать по ЭЦП сертификатом юридического лица с ИНН: { company.inn }, выданного: { head_person.lastname } { head_person.firstname } { head_person.middlename }. Такой сертификат не найден. }/> ) } { certificates_error === "MISMATCH" && ( - Подписант не соответствует указанному подписанту в анкете. }/> + Подписант не соответствует указанному подписанту в анкете. }/> ) } diff --git a/components/questionnaire/forms/DigitalSignaturesList.js b/components/questionnaire/forms/DigitalSignaturesList.js index ec10de8..89c04cd 100644 --- a/components/questionnaire/forms/DigitalSignaturesList.js +++ b/components/questionnaire/forms/DigitalSignaturesList.js @@ -219,31 +219,48 @@ export default class DigitalSignaturesList extends React.Component else { return ( -
- - - + <> { certificates_error === "NOT_INSTALLED" && ( -

Ошибка - Плагин КриптоПРО не установлен, посмотрите инструкцию как установить плагин КриптоПРО. -

+
+ + + +

Внимание + Плагин КриптоПРО не установлен, посмотрите инструкцию как установить плагин КриптоПРО. +

+
) } { certificates_error === "OTHER" && ( -

Ошибка - Плагин КриптоПРО не активирован, пожалуйста, обновите страницу и подтвердите разрешение для сайта на доступ к списку сертификатов. -

+
+ + + +

Ошибка + Плагин КриптоПРО не активирован, пожалуйста, обновите страницу и подтвердите разрешение для сайта на доступ к списку сертификатов. +

+
) } { certificates_error === "ISSUED" && ( -

Ошибка - Отсутствуют действующие сертификаты. -

+
+ + + +

Ошибка + Отсутствуют действующие сертификаты. +

+
) } { certificates_error === "MISMATCH" && ( -

Ошибка - Подписант не соответствует указанному подписанту в анкете. -

+
+ + + +

Ошибка + Подписант не соответствует указанному подписанту в анкете. +

+
) } -
+ ) } } diff --git a/components/questionnaire/forms/Form_1_Main/index.js b/components/questionnaire/forms/Form_1_Main/index.js index 1099353..8fa98f4 100644 --- a/components/questionnaire/forms/Form_1_Main/index.js +++ b/components/questionnaire/forms/Form_1_Main/index.js @@ -303,7 +303,7 @@ class Form_1_Main extends QuestionnaireForm
- -1 ? "error" : "" } id="main.financial_loan" name="main.financial_loan" @@ -318,7 +318,7 @@ class Form_1_Main extends QuestionnaireForm onValueChange={ (value, name) => { this._removeError(name); this._handle_onTextFieldChange(name, value); } } required={ true } disabled={ checking } - /> + />

сумма текущих ежемесячных платежей по действующим кредитам/договорам лизинга

diff --git a/components/questionnaire/forms/Form_2_Contacts/index.js b/components/questionnaire/forms/Form_2_Contacts/index.js index 6ef1df7..ea7f57e 100644 --- a/components/questionnaire/forms/Form_2_Contacts/index.js +++ b/components/questionnaire/forms/Form_2_Contacts/index.js @@ -134,7 +134,7 @@ class Form_2_Contacts extends QuestionnaireForm

для юр.диц - заполняется, если отличается от указанного в ЕГРЮЛ; для ИП - заполняется всегда

-

Прошу оригиналы счетов-фактур и актов отказанных услуг по заключенному договору лизинга направлять:

+

Прошу оригиналы счетов-фактур и актов оказанных услуг по заключенному договору лизинга направлять:

diff --git a/components/questionnaire/forms/Form_4_Shareholders/index.js b/components/questionnaire/forms/Form_4_Shareholders/index.js index c92ab65..c540277 100644 --- a/components/questionnaire/forms/Form_4_Shareholders/index.js +++ b/components/questionnaire/forms/Form_4_Shareholders/index.js @@ -10,6 +10,9 @@ import Select from 'react-select'; import { connect } from "react-redux"; import { withRouter } from 'next/router'; import { get as _get, slice } from 'lodash'; +import InputMask from 'react-input-mask'; +import CurrencyInput from 'react-currency-input-field'; +import moment from "moment"; import QuestionnaireForm from "../QuestionnaireForm"; import CalendarDatePicker from '../../../CalendarDatePicker'; @@ -17,12 +20,10 @@ import citizenships from "../../../../lib/citizenships.json"; import doctypes_personal from "../../../../lib/doctypes_personal.json"; import { reduxWrapper } from '../../../../store'; import AddressSuggests from "../../AddressSuggests"; -import InputMask from 'react-input-mask'; import { getCitizenshipTitleByCode } from "../../../../utils/citizenship"; import { checkDocumentData, saveQuestionnaire } from "../../../../actions"; import SuggestsInput from "../../SuggestsInput"; import DocumentIssuerSuggestsInput from "../../DocumentIssuerSuggestsInput"; -import moment from "moment"; import FormMessage from "../FormMessage"; class ShareholderForm extends React.Component @@ -45,6 +46,44 @@ class ShareholderForm extends React.Component }); } + _handle_onFloatFieldChange = (name, value) => + { + let float = parseFloat(value); + let val = value; + + if(isNaN(float)) + { + val = ""; + } + else if(float > 100) + { + val = 100; + } + else + { + //float = float.toFixed(2); + } + this._handle_onTextFieldChange(name, val); + } + + _renderFloat = (value) => + { + if(this._checkStrValue(value) !== "") + { + const float = parseFloat(value); + if(!isNaN(float)) + { + return float.toFixed(2); + } + else + { + return null; + } + } + + return null; + } + render() { const { index, shareholder, checking, errors } = this.props; @@ -316,20 +355,41 @@ class ShareholderForm extends React.Component
{ index === 0 && errors.indexOf("founder_part_total") > -1 && ( - + ) }
+ {/*} -1 ? "error" : "" } - mask='999' - formatChars={{ '9': '[0-9]', }} + mask={ [ /[0-9]/, /[0-9]/, /./, /[0-9]/, /[0-9]/ ] } + maskPlaceholder="-" +// formatChars={{ '9': '[0-9]', }} id={ `founder_persons[${ index }].founder_part` } name={ `founder_persons[${ index }].founder_part` } value={ this._checkStrValue(shareholder.founder_part) } placeholder="Укажите размер доли" - onChange={ (event) => { this._removeError("founder_part"); this._handle_onTextFieldChange(event.target.name, parseInt(event.target.value, 10) > 100 ? 100 : parseInt(event.target.value, 10)); } } + onChange={ (event) => { this._removeError("founder_part"); this._handle_onFloatFieldChange(event.target.name, event.target.value); } } + required={ true } + disabled={ checking } + /> + {*/} + -1 ? "error" : "" } + id={ `founder_persons[${ index }].founder_part` } + name={ `founder_persons[${ index }].founder_part` } +// value={ this._renderFloat(shareholder.founder_part) } + value={ this._checkStrValue(shareholder.founder_part) !== "" && parseFloat(shareholder.founder_part) > 0 ? this._checkStrValue(shareholder.founder_part) : null } +// decimalsLimit={ 2 } + //selectAllOnFocus={ true } + placeholder="Укажите сумму" + decimalSeparator="." + groupSeparator=" " + //suffix=" ₽" + maxLength={ 5 } +// fixedDecimalLength={ 1 } + onValueChange={ (value, name) => { this._removeError(name); this._handle_onFloatFieldChange(name, value); } } required={ true } disabled={ checking } /> @@ -720,9 +780,9 @@ class Form_4_Shareholders extends QuestionnaireForm } else if(check[i] === "founder_part") { - if(v !== "" && v !== null && !isNaN(parseInt(v, 10))) + if(v !== "" && v !== null && !isNaN(parseFloat(v))) { - total_parts = total_parts + parseInt(v, 10) + total_parts = total_parts + parseFloat(v) } else { @@ -738,11 +798,6 @@ class Form_4_Shareholders extends QuestionnaireForm } } - if(total_parts > 100) - { - errors[0].push(`founder_part_total`); - } - if(parseInt(_get(founder_persons[f], "identity_document.doctype"), 10) === 100000000 && errors.indexOf("identity_document.seria") < 0 && errors.indexOf("identity_document.docnumber") < 0) { const founder_document_check_response = await checkDocumentData({ @@ -759,6 +814,11 @@ class Form_4_Shareholders extends QuestionnaireForm } } + if(parseInt(total_parts, 10) !== 100) + { + errors[0].push(`founder_part_total`); + } + this.setState({ errors, loading: false }, () => { window.scroll(0, 0); diff --git a/lib/ubuntu_mono_regular.ttf b/lib/ubuntu_mono_regular.ttf new file mode 100644 index 0000000..4977028 Binary files /dev/null and b/lib/ubuntu_mono_regular.ttf differ diff --git a/pages/api/questionnaire/download.js b/pages/api/questionnaire/download.js index e331b63..bec8028 100644 --- a/pages/api/questionnaire/download.js +++ b/pages/api/questionnaire/download.js @@ -144,7 +144,7 @@ export default async function handler(req, res) console.log("API", "download", "__dirname", __dirname); const formPdfBytes = fs.readFileSync(`${ __dirname }/../../../../../lib/evo_anketa_v2_empty_licenses.pdf`); - const fontBytes = fs.readFileSync(`${ __dirname }/../../../../../lib/roboto.ttf`); + const fontBytes = fs.readFileSync(`${ __dirname }/../../../../../lib/ubuntu_mono_regular.ttf`); const pdfDoc = await PDFDocument.load(formPdfBytes); pdfDoc.registerFontkit(fontkit); @@ -207,9 +207,39 @@ export default async function handler(req, res) const { registration_address, } = questionnaire[group][p].identity_document; if(good(registration_address.name)) { + let field_text_value = registration_address.name.toString().toUpperCase(); + /* + let field_text_value = ""; + for(let a = 0; a < 7; a++) + { + for(let b = 0; b < 10; b++) + { + field_text_value = field_text_value + b; + if(b === 5) + { + field_text_value = field_text_value + " "; + } + } + } + */ + //const rx = new RegExp(/(\S)-(\S)/gim); + //field_text_value = field_text_value.replace(rx, "$1- $2"); + fields[group][p][field].bind = form.getTextField(fields[group][p][field].name); + console.log(`${ group }_${ p }_${ field }`, { is_scrollable: fields[group][p][field].bind.isScrollable() }); + if(fields[group][p][field].size !== undefined) { fields[group][p][field].bind.setFontSize(fields[group][p][field].size); } - fields[group][p][field].bind.setText(registration_address.name.toString().toUpperCase()); + + /* + if(field_text_value.length < 70) + { + } + else if(field_text_value.length < 14) + { + } + */ + + fields[group][p][field].bind.setText(field_text_value); } } else diff --git a/reducers/questionnaireReducer.js b/reducers/questionnaireReducer.js index 510c236..f35870e 100644 --- a/reducers/questionnaireReducer.js +++ b/reducers/questionnaireReducer.js @@ -19,10 +19,12 @@ const questionnaireReducer = (state = initialState.questionnaire, action) => case actionTypes.QUESTIONNAIRE_UPDATE: { + /* console.log("actionTypes.QUESTIONNAIRE_UPDATE", { ...state, ...action.data.questionnaire, }); + */ return { ...state,