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,