@senior-gestao-pessoas/payroll-core 9.7.0-develop-83cda3e2 → 9.7.0-feature-hcmgdp-11851-0d47b4a9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js +151 -14
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
- package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +7 -1
- package/components/utils/cnpj-validator.d.ts +5 -0
- package/components/utils/format-utils/format-utils.service.d.ts +3 -2
- package/components/utils/generic-validators.d.ts +6 -0
- package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +21 -6
- package/esm2015/components/utils/cnpj-validator.js +54 -1
- package/esm2015/components/utils/format-utils/format-utils.service.js +23 -10
- package/esm2015/components/utils/generic-validators.js +57 -1
- package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +21 -6
- package/esm5/components/utils/cnpj-validator.js +54 -1
- package/esm5/components/utils/format-utils/format-utils.service.js +23 -10
- package/esm5/components/utils/generic-validators.js +57 -1
- package/fesm2015/senior-gestao-pessoas-payroll-core.js +151 -14
- package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/fesm5/senior-gestao-pessoas-payroll-core.js +151 -14
- package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/package.json +1 -1
- package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
|
@@ -142,6 +142,62 @@ var GenericValidator = /** @class */ (function () {
|
|
|
142
142
|
}
|
|
143
143
|
return null;
|
|
144
144
|
};
|
|
145
|
+
/**
|
|
146
|
+
* Valida se o CNPJ Alfanumérico é valido. Deve-se ser informado o cpf sem máscara.
|
|
147
|
+
*/
|
|
148
|
+
GenericValidator.isValidCnpjAlphanumeric = function (control) {
|
|
149
|
+
var cnpj = control.value;
|
|
150
|
+
if (cnpj) {
|
|
151
|
+
cnpj = cnpj.replace(/[^\dA-Za-z]/g, '').toUpperCase();
|
|
152
|
+
if (cnpj.length !== 14) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
// Valida que dígitos verificadores são numéricos
|
|
156
|
+
if (!/^\d$/.test(cnpj.charAt(12)) || !/^\d$/.test(cnpj.charAt(13))) {
|
|
157
|
+
return { cnpjNotValid: true };
|
|
158
|
+
}
|
|
159
|
+
// Elimina CNPJs invalidos conhecidos
|
|
160
|
+
if (cnpj === '00000000000000' ||
|
|
161
|
+
cnpj === '11111111111111' ||
|
|
162
|
+
cnpj === '22222222222222' ||
|
|
163
|
+
cnpj === '33333333333333' ||
|
|
164
|
+
cnpj === '44444444444444' ||
|
|
165
|
+
cnpj === '55555555555555' ||
|
|
166
|
+
cnpj === '66666666666666' ||
|
|
167
|
+
cnpj === '77777777777777' ||
|
|
168
|
+
cnpj === '88888888888888' ||
|
|
169
|
+
cnpj === '99999999999999') {
|
|
170
|
+
return { cnpjNotValid: true };
|
|
171
|
+
}
|
|
172
|
+
// Valida DVs
|
|
173
|
+
var size = cnpj.length - 2;
|
|
174
|
+
var digits = cnpj.substring(size);
|
|
175
|
+
if (!GenericValidator.validateCnpjDigit(cnpj, size, Number(digits.charAt(0)))) {
|
|
176
|
+
return { cnpjNotValid: true };
|
|
177
|
+
}
|
|
178
|
+
if (!GenericValidator.validateCnpjDigit(cnpj, size + 1, Number(digits.charAt(1)))) {
|
|
179
|
+
return { cnpjNotValid: true };
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
};
|
|
185
|
+
GenericValidator.validateCnpjDigit = function (cnpj, size, digit) {
|
|
186
|
+
var numbers = cnpj.substring(0, size);
|
|
187
|
+
var sum = 0;
|
|
188
|
+
var pos = size - 7;
|
|
189
|
+
for (var i = size; i >= 1; i--) {
|
|
190
|
+
sum += this.convertToAsciiMinus48(numbers.charAt(size - i)) * pos--;
|
|
191
|
+
if (pos < 2) {
|
|
192
|
+
pos = 9;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
var result = sum % 11 < 2 ? 0 : 11 - (sum % 11);
|
|
196
|
+
return result === digit;
|
|
197
|
+
};
|
|
198
|
+
GenericValidator.convertToAsciiMinus48 = function (input) {
|
|
199
|
+
return input.charCodeAt(0) - 48;
|
|
200
|
+
};
|
|
145
201
|
/**
|
|
146
202
|
* Válida o número de telefone da chave PIX.
|
|
147
203
|
*/
|
|
@@ -164,4 +220,4 @@ var GenericValidator = /** @class */ (function () {
|
|
|
164
220
|
return GenericValidator;
|
|
165
221
|
}());
|
|
166
222
|
export { GenericValidator };
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtJQUNJO0lBQWdCLENBQUM7SUFFakI7O09BRUc7SUFDSSwyQkFBVSxHQUFqQixVQUFrQixPQUF3QjtRQUN0QyxJQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7YUFDakIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QyxJQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUN2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLElBQ0ksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFO1lBQ2pCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBRXJCLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDM0I7WUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6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SUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNJLDZCQUFZLEdBQW5CLFVBQW9CLE9BQXdCO1FBQ3hDLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBTSxlQUFlLEdBQUcsc0NBQXNDLENBQUM7UUFFL0QsSUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBQ0wsdUJBQUM7QUFBRCxDQUFDLEFBeExELElBd0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmljVmFsaWRhdG9yIHtcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhIG8gQ0VJIChDYWRhc3RybyBlc3BlY8OtZmljbyBkZSBJTlNTKSBkaWdpdGFkby5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZENlaShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JzIHtcbiAgICAgICAgY29uc3QgY2VpID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoIWNlaSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGVsc2UgaWYgKGNlaS5sZW5ndGggIT0gMTEpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IG11bHRpcGxpY2Fkb3JCYXNlID0gXCIzMjk4NzY1NDMyXCI7XG4gICAgICAgIGxldCB0b3RhbCA9IDA7XG4gICAgICAgIGxldCByZXN0byA9IDA7XG4gICAgICAgIGxldCBtdWx0aXBsaWNhbmRvID0gMDtcbiAgICAgICAgbGV0IG11bHRpcGxpY2Fkb3IgPSAwO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNlaS5sZW5ndGggIT09IDExIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiMDAwMDAwMDAwMDBcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjExMTExMTExMTExXCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCIyMjIyMjIyMjIyMlwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiMzMzMzMzMzMzMzNcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjQ0NDQ0NDQ0NDQ0XCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI1NTU1NTU1NTU1NVwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiNjY2NjY2NjY2NjZcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjc3Nzc3Nzc3Nzc3XCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI4ODg4ODg4ODg4OFwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiOTk5OTk5OTk5OTlcIlxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4geyBpbnZhbGlkQ2VpOiB0cnVlIH07XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGljYW5kbyA9IHBhcnNlSW50KGNlaS5zdWJzdHJpbmcoaSwgaSArIDEpLCAxMCk7XG4gICAgICAgICAgICAgICAgbXVsdGlwbGljYWRvciA9IHBhcnNlSW50KG11bHRpcGxpY2Fkb3JCYXNlLnN1YnN0cmluZyhpLCBpICsgMSksIDEwKTtcbiAgICAgICAgICAgICAgICB0b3RhbCArPSBtdWx0aXBsaWNhbmRvICogbXVsdGlwbGljYWRvcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdG8gPSAxMSAtICh0b3RhbCAlIDExKTtcbiAgICAgICAgICAgIHJlc3RvID0gcmVzdG8gPT09IDEwIHx8IHJlc3RvID09PSAxMSA/IDAgOiByZXN0bztcblxuICAgICAgICAgICAgY29uc3QgZGlnaXRvID0gcGFyc2VJbnQoXCJcIiArIGNlaS5jaGFyQXQoMTApLCAxMCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdG8gPT09IGRpZ2l0byA/IG51bGwgOiB7IGludmFsaWRDZWk6IHRydWUgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYSBzZSBvIENQRiDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNwZiBzZW0gbcOhc2NhcmEuXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRDcGYoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGNvbnN0IGNwZiA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgIGlmIChjcGYpIHtcbiAgICAgICAgICAgIGxldCBudW1iZXJzLCBkaWdpdHMsIHN1bSwgaSwgcmVzdWx0LCBlcXVhbERpZ2l0cztcbiAgICAgICAgICAgIGVxdWFsRGlnaXRzID0gMTtcbiAgICAgICAgICAgIGlmIChjcGYubGVuZ3RoIDwgMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNwZi5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY3BmLmNoYXJBdChpKSAhPT0gY3BmLmNoYXJBdChpICsgMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxEaWdpdHMgPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWVxdWFsRGlnaXRzKSB7XG4gICAgICAgICAgICAgICAgbnVtYmVycyA9IGNwZi5zdWJzdHJpbmcoMCwgOSk7XG4gICAgICAgICAgICAgICAgZGlnaXRzID0gY3BmLnN1YnN0cmluZyg5KTtcbiAgICAgICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEwOyBpID4gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdCgxMCAtIGkpICogaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgY3BmTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbnVtYmVycyA9IGNwZi5zdWJzdHJpbmcoMCwgMTApO1xuICAgICAgICAgICAgICAgIHN1bSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMTE7IGkgPiAxOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KDExIC0gaSkgKiBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IE51bWJlcihkaWdpdHMuY2hhckF0KDEpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBjcGZOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY3BmTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgc2UgbyBDTlBKIMOpIHZhbGlkby4gRGV2ZS1zZSBzZXIgaW5mb3JtYWRvIG8gY3BmIHNlbSBtw6FzY2FyYS5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZENucGooY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGxldCBjbnBqID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgbGV0IHNpemUsIG51bWJlcnMsIGRpZ2l0cywgc3VtLCBwb3MsIHJlc3VsdDtcbiAgICAgICAgICAgIGNucGogPSBjbnBqLnJlcGxhY2UoL1teXFxkXSsvZywgJycpO1xuXG4gICAgICAgICAgICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsaW1pbmEgQ05QSnMgaW52YWxpZG9zIGNvbmhlY2lkb3NcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMDAwMDAwMDAwMDAwMDAnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzExMTExMTExMTExMTExJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcyMjIyMjIyMjIyMjIyMicgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMzMzMzMzMzMzMzMzMzMnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzQ0NDQ0NDQ0NDQ0NDQ0JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc1NTU1NTU1NTU1NTU1NScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNjY2NjY2NjY2NjY2NjYnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzc3Nzc3Nzc3Nzc3Nzc3JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc4ODg4ODg4ODg4ODg4OCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnOTk5OTk5OTk5OTk5OTknXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVmFsaWRhIERWc1xuICAgICAgICAgICAgc2l6ZSA9IGNucGoubGVuZ3RoIC0gMjtcbiAgICAgICAgICAgIG51bWJlcnMgPSBjbnBqLnN1YnN0cmluZygwLCBzaXplKTtcbiAgICAgICAgICAgIGRpZ2l0cyA9IGNucGouc3Vic3RyaW5nKHNpemUpO1xuICAgICAgICAgICAgc3VtID0gMDtcbiAgICAgICAgICAgIHBvcyA9IHNpemUgLSA3O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNpemU7IGkgPj0gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KHNpemUgLSBpKSAqIHBvcy0tO1xuICAgICAgICAgICAgICAgIGlmIChwb3MgPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IDk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IE51bWJlcihkaWdpdHMuY2hhckF0KDApKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzaXplID0gc2l6ZSArIDE7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgcG9zID0gc2l6ZSAtIDc7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc2l6ZTsgaSA+PSAxOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBzdW0gKz0gbnVtYmVycy5jaGFyQXQoc2l6ZSAtIGkpICogcG9zLS07XG4gICAgICAgICAgICAgICAgaWYgKHBvcyA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zID0gOTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSAoc3VtICUgMTEpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY25wak5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFbDoWxpZGEgbyBuw7ptZXJvIGRlIHRlbGVmb25lIGRhIGNoYXZlIFBJWC5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFBob25lTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBsZXQgY2VsbFBob25lS2V5ID0gY29udHJvbC52YWx1ZSB8fCAnJztcbiAgICAgICAgY2VsbFBob25lS2V5ID0gY2VsbFBob25lS2V5LnJlcGxhY2UoL1tcXHMoKS1dL2csICcnKTtcbiAgICAgICAgY29uc3QgcmVnZXhOdW1iZXJUZWxlcGhvbmUgPSAvXlsxLTldW1xcZF17MSwyfVxcZHs4LDEwfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPSByZWdleE51bWJlclRlbGVwaG9uZS50ZXN0KGNlbGxQaG9uZUtleSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPyBudWxsIDogeyBpbnZhbGlkUGhvbmVOdW1iZXI6IHRydWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgbyBlbWFpbCBkYSBjaGF2ZSBQSVguXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRFbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JzIHtcbiAgICAgICAgY29uc3QgZW1haWxLZXkgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBjb25zdCByZWdleFZhbGlkRW1haWwgPSAvXltcXHctXFwuXStAW1xcdy1dKyhcXC5bXFx3LV17Miw0fSl7MSwyfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWRFbWFpbCA9IHJlZ2V4VmFsaWRFbWFpbC50ZXN0KGVtYWlsS2V5KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZEVtYWlsID8gbnVsbCA6IHsgaW52YWxpZEVtYWlsOiB0cnVlIH07XG4gICAgfVxufVxuIl19
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy12YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTtJQUNJO0lBQWdCLENBQUM7SUFFakI7O09BRUc7SUFDSSwyQkFBVSxHQUFqQixVQUFrQixPQUF3QjtRQUN0QyxJQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7YUFDakIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QyxJQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztRQUN2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRXRCLElBQ0ksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFO1lBQ2pCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBQ3JCLEdBQUcsS0FBSyxhQUFhO1lBRXJCLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDM0I7WUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6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RUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFNLG9CQUFvQixHQUFHLDBCQUEwQixDQUFDO1FBRXhELElBQU0sc0JBQXNCLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZFLE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSw2QkFBWSxHQUFuQixVQUFvQixPQUF3QjtRQUN4QyxJQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQU0sZUFBZSxHQUFHLHNDQUFzQyxDQUFDO1FBRS9ELElBQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFcEQsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUNMLHVCQUFDO0FBQUQsQ0FBQyxBQTdQRCxJQTZQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvcnMsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgY2xhc3MgR2VuZXJpY1ZhbGlkYXRvciB7XG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYSBvIENFSSAoQ2FkYXN0cm8gZXNwZWPDrWZpY28gZGUgSU5TUykgZGlnaXRhZG8uXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRDZWkoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGNvbnN0IGNlaSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKCFjZWkpIHJldHVybiBudWxsO1xuICAgICAgICBlbHNlIGlmIChjZWkubGVuZ3RoICE9IDExKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBtdWx0aXBsaWNhZG9yQmFzZSA9IFwiMzI5ODc2NTQzMlwiO1xuICAgICAgICBsZXQgdG90YWwgPSAwO1xuICAgICAgICBsZXQgcmVzdG8gPSAwO1xuICAgICAgICBsZXQgbXVsdGlwbGljYW5kbyA9IDA7XG4gICAgICAgIGxldCBtdWx0aXBsaWNhZG9yID0gMDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjZWkubGVuZ3RoICE9PSAxMSB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjAwMDAwMDAwMDAwXCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCIxMTExMTExMTExMVwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiMjIyMjIyMjIyMjJcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjMzMzMzMzMzMzMzXCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI0NDQ0NDQ0NDQ0NFwiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiNTU1NTU1NTU1NTVcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjY2NjY2NjY2NjY2XCIgfHxcbiAgICAgICAgICAgIGNlaSA9PT0gXCI3Nzc3Nzc3Nzc3N1wiIHx8XG4gICAgICAgICAgICBjZWkgPT09IFwiODg4ODg4ODg4ODhcIiB8fFxuICAgICAgICAgICAgY2VpID09PSBcIjk5OTk5OTk5OTk5XCJcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZENlaTogdHJ1ZSB9O1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bHRpcGxpY2FuZG8gPSBwYXJzZUludChjZWkuc3Vic3RyaW5nKGksIGkgKyAxKSwgMTApO1xuICAgICAgICAgICAgICAgIG11bHRpcGxpY2Fkb3IgPSBwYXJzZUludChtdWx0aXBsaWNhZG9yQmFzZS5zdWJzdHJpbmcoaSwgaSArIDEpLCAxMCk7XG4gICAgICAgICAgICAgICAgdG90YWwgKz0gbXVsdGlwbGljYW5kbyAqIG11bHRpcGxpY2Fkb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3RvID0gMTEgLSAodG90YWwgJSAxMSk7XG4gICAgICAgICAgICByZXN0byA9IHJlc3RvID09PSAxMCB8fCByZXN0byA9PT0gMTEgPyAwIDogcmVzdG87XG5cbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0byA9IHBhcnNlSW50KFwiXCIgKyBjZWkuY2hhckF0KDEwKSwgMTApO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3RvID09PSBkaWdpdG8gPyBudWxsIDogeyBpbnZhbGlkQ2VpOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgc2UgbyBDUEYgw6kgdmFsaWRvLiBEZXZlLXNlIHNlciBpbmZvcm1hZG8gbyBjcGYgc2VtIG3DoXNjYXJhLlxuICAgICAqL1xuICAgIHN0YXRpYyBpc1ZhbGlkQ3BmKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBjb25zdCBjcGYgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBpZiAoY3BmKSB7XG4gICAgICAgICAgICBsZXQgbnVtYmVycywgZGlnaXRzLCBzdW0sIGksIHJlc3VsdCwgZXF1YWxEaWdpdHM7XG4gICAgICAgICAgICBlcXVhbERpZ2l0cyA9IDE7XG4gICAgICAgICAgICBpZiAoY3BmLmxlbmd0aCA8IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjcGYubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNwZi5jaGFyQXQoaSkgIT09IGNwZi5jaGFyQXQoaSArIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVxdWFsRGlnaXRzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFlcXVhbERpZ2l0cykge1xuICAgICAgICAgICAgICAgIG51bWJlcnMgPSBjcGYuc3Vic3RyaW5nKDAsIDkpO1xuICAgICAgICAgICAgICAgIGRpZ2l0cyA9IGNwZi5zdWJzdHJpbmcoOSk7XG4gICAgICAgICAgICAgICAgc3VtID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxMDsgaSA+IDE7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gbnVtYmVycy5jaGFyQXQoMTAgLSBpKSAqIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1bSAlIDExIDwgMiA/IDAgOiAxMSAtIChzdW0gJSAxMSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGNwZk5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG51bWJlcnMgPSBjcGYuc3Vic3RyaW5nKDAsIDEwKTtcbiAgICAgICAgICAgICAgICBzdW0gPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDExOyBpID4gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdCgxMSAtIGkpICogaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgY3BmTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNwZk5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhIHNlIG8gQ05QSiDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNwZiBzZW0gbcOhc2NhcmEuXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRDbnBqKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBsZXQgY25waiA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgaWYgKGNucGopIHtcbiAgICAgICAgICAgIGxldCBzaXplLCBudW1iZXJzLCBkaWdpdHMsIHN1bSwgcG9zLCByZXN1bHQ7XG4gICAgICAgICAgICBjbnBqID0gY25wai5yZXBsYWNlKC9bXlxcZF0rL2csICcnKTtcblxuICAgICAgICAgICAgaWYgKGNucGoubGVuZ3RoICE9PSAxNCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFbGltaW5hIENOUEpzIGludmFsaWRvcyBjb25oZWNpZG9zXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzAwMDAwMDAwMDAwMDAwJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcxMTExMTExMTExMTExMScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMjIyMjIyMjIyMjIyMjInIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzMzMzMzMzMzMzMzMzMzJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc0NDQ0NDQ0NDQ0NDQ0NCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNTU1NTU1NTU1NTU1NTUnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzY2NjY2NjY2NjY2NjY2JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc3Nzc3Nzc3Nzc3Nzc3NycgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnODg4ODg4ODg4ODg4ODgnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzk5OTk5OTk5OTk5OTk5J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY25wak5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYSBEVnNcbiAgICAgICAgICAgIHNpemUgPSBjbnBqLmxlbmd0aCAtIDI7XG4gICAgICAgICAgICBudW1iZXJzID0gY25wai5zdWJzdHJpbmcoMCwgc2l6ZSk7XG4gICAgICAgICAgICBkaWdpdHMgPSBjbnBqLnN1YnN0cmluZyhzaXplKTtcbiAgICAgICAgICAgIHN1bSA9IDA7XG4gICAgICAgICAgICBwb3MgPSBzaXplIC0gNztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzaXplOyBpID49IDE7IGktLSkge1xuICAgICAgICAgICAgICAgIHN1bSArPSBudW1iZXJzLmNoYXJBdChzaXplIC0gaSkgKiBwb3MtLTtcbiAgICAgICAgICAgICAgICBpZiAocG9zIDwgMikge1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSA5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IHN1bSAlIDExIDwgMiA/IDAgOiAxMSAtIChzdW0gJSAxMSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBOdW1iZXIoZGlnaXRzLmNoYXJBdCgwKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2l6ZSA9IHNpemUgKyAxO1xuICAgICAgICAgICAgbnVtYmVycyA9IGNucGouc3Vic3RyaW5nKDAsIHNpemUpO1xuICAgICAgICAgICAgc3VtID0gMDtcbiAgICAgICAgICAgIHBvcyA9IHNpemUgLSA3O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNpemU7IGkgPj0gMTsgaS0tKSB7XG4gICAgICAgICAgICAgICAgc3VtICs9IG51bWJlcnMuY2hhckF0KHNpemUgLSBpKSAqIHBvcy0tO1xuICAgICAgICAgICAgICAgIGlmIChwb3MgPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcyA9IDk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IE51bWJlcihkaWdpdHMuY2hhckF0KDEpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFZhbGlkYSBzZSBvIENOUEogQWxmYW51bcOpcmljbyDDqSB2YWxpZG8uIERldmUtc2Ugc2VyIGluZm9ybWFkbyBvIGNwZiBzZW0gbcOhc2NhcmEuXG4gICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZENucGpBbHBoYW51bWVyaWMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyB7XG4gICAgICAgIGxldCBjbnBqID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoY25waikge1xuICAgICAgICAgICAgY25waiA9IGNucGoucmVwbGFjZSgvW15cXGRBLVphLXpdL2csICcnKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoY25wai5sZW5ndGggIT09IDE0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFZhbGlkYSBxdWUgZMOtZ2l0b3MgdmVyaWZpY2Fkb3JlcyBzw6NvIG51bcOpcmljb3NcbiAgICAgICAgICAgIGlmICghL15cXGQkLy50ZXN0KGNucGouY2hhckF0KDEyKSkgfHwgIS9eXFxkJC8udGVzdChjbnBqLmNoYXJBdCgxMykpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgY25wak5vdFZhbGlkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsaW1pbmEgQ05QSnMgaW52YWxpZG9zIGNvbmhlY2lkb3NcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMDAwMDAwMDAwMDAwMDAnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzExMTExMTExMTExMTExJyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICcyMjIyMjIyMjIyMjIyMicgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnMzMzMzMzMzMzMzMzMzMnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzQ0NDQ0NDQ0NDQ0NDQ0JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc1NTU1NTU1NTU1NTU1NScgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnNjY2NjY2NjY2NjY2NjYnIHx8XG4gICAgICAgICAgICAgICAgY25waiA9PT0gJzc3Nzc3Nzc3Nzc3Nzc3JyB8fFxuICAgICAgICAgICAgICAgIGNucGogPT09ICc4ODg4ODg4ODg4ODg4OCcgfHxcbiAgICAgICAgICAgICAgICBjbnBqID09PSAnOTk5OTk5OTk5OTk5OTknXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVmFsaWRhIERWc1xuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IGNucGoubGVuZ3RoIC0gMjtcbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0cyA9IGNucGouc3Vic3RyaW5nKHNpemUpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoIUdlbmVyaWNWYWxpZGF0b3IudmFsaWRhdGVDbnBqRGlnaXQoY25waiwgc2l6ZSwgTnVtYmVyKGRpZ2l0cy5jaGFyQXQoMCkpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNucGpOb3RWYWxpZDogdHJ1ZSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIUdlbmVyaWNWYWxpZGF0b3IudmFsaWRhdGVDbnBqRGlnaXQoY25waiwgc2l6ZSArIDEsIE51bWJlcihkaWdpdHMuY2hhckF0KDEpKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBjbnBqTm90VmFsaWQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVDbnBqRGlnaXQoY25wajogc3RyaW5nLCBzaXplOiBudW1iZXIsIGRpZ2l0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IGNucGouc3Vic3RyaW5nKDAsIHNpemUpO1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgbGV0IHBvcyA9IHNpemUgLSA3O1xuICAgICAgICBmb3IgKGxldCBpID0gc2l6ZTsgaSA+PSAxOyBpLS0pIHtcbiAgICAgICAgICAgIHN1bSArPSB0aGlzLmNvbnZlcnRUb0FzY2lpTWludXM0OChudW1iZXJzLmNoYXJBdChzaXplIC0gaSkpICogcG9zLS07XG4gICAgICAgICAgICBpZiAocG9zIDwgMikge1xuICAgICAgICAgICAgICAgIHBvcyA9IDk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gc3VtICUgMTEgPCAyID8gMCA6IDExIC0gKHN1bSAlIDExKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gZGlnaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29udmVydFRvQXNjaWlNaW51czQ4KGlucHV0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5wdXQuY2hhckNvZGVBdCgwKSAtIDQ4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFbDoWxpZGEgbyBuw7ptZXJvIGRlIHRlbGVmb25lIGRhIGNoYXZlIFBJWC5cbiAgICAgKi9cbiAgICBzdGF0aWMgaXNWYWxpZFBob25lTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRvcnMge1xuICAgICAgICBsZXQgY2VsbFBob25lS2V5ID0gY29udHJvbC52YWx1ZSB8fCAnJztcbiAgICAgICAgY2VsbFBob25lS2V5ID0gY2VsbFBob25lS2V5LnJlcGxhY2UoL1tcXHMoKS1dL2csICcnKTtcbiAgICAgICAgY29uc3QgcmVnZXhOdW1iZXJUZWxlcGhvbmUgPSAvXlsxLTldW1xcZF17MSwyfVxcZHs4LDEwfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPSByZWdleE51bWJlclRlbGVwaG9uZS50ZXN0KGNlbGxQaG9uZUtleSk7XG5cbiAgICAgICAgcmV0dXJuIGlzVmFsaWROdW1iZXJUZWxlcGhvbmUgPyBudWxsIDogeyBpbnZhbGlkUGhvbmVOdW1iZXI6IHRydWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGEgbyBlbWFpbCBkYSBjaGF2ZSBQSVguXG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRFbWFpbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JzIHtcbiAgICAgICAgY29uc3QgZW1haWxLZXkgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICBjb25zdCByZWdleFZhbGlkRW1haWwgPSAvXltcXHctXFwuXStAW1xcdy1dKyhcXC5bXFx3LV17Miw0fSl7MSwyfSQvO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWRFbWFpbCA9IHJlZ2V4VmFsaWRFbWFpbC50ZXN0KGVtYWlsS2V5KTtcblxuICAgICAgICByZXR1cm4gaXNWYWxpZEVtYWlsID8gbnVsbCA6IHsgaW52YWxpZEVtYWlsOiB0cnVlIH07XG4gICAgfVxufVxuIl19
|
|
@@ -141,6 +141,59 @@ class CNPJValidator {
|
|
|
141
141
|
}
|
|
142
142
|
return true;
|
|
143
143
|
}
|
|
144
|
+
checkCNPJAlphanumeric(value) {
|
|
145
|
+
let cnpj = value;
|
|
146
|
+
if (cnpj) {
|
|
147
|
+
cnpj = cnpj.replace(/[^\dA-Za-z]/g, '').toUpperCase();
|
|
148
|
+
if (cnpj.length !== 14) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
// Valida que dígitos verificadores são numéricos
|
|
152
|
+
if (!/^\d$/.test(cnpj.charAt(12)) || !/^\d$/.test(cnpj.charAt(13))) {
|
|
153
|
+
return { cnpjNotValid: true };
|
|
154
|
+
}
|
|
155
|
+
// Elimina CNPJs invalidos conhecidos
|
|
156
|
+
if (cnpj === '00000000000000' ||
|
|
157
|
+
cnpj === '11111111111111' ||
|
|
158
|
+
cnpj === '22222222222222' ||
|
|
159
|
+
cnpj === '33333333333333' ||
|
|
160
|
+
cnpj === '44444444444444' ||
|
|
161
|
+
cnpj === '55555555555555' ||
|
|
162
|
+
cnpj === '66666666666666' ||
|
|
163
|
+
cnpj === '77777777777777' ||
|
|
164
|
+
cnpj === '88888888888888' ||
|
|
165
|
+
cnpj === '99999999999999') {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
// Valida DVs
|
|
169
|
+
const size = cnpj.length - 2;
|
|
170
|
+
const digits = cnpj.substring(size);
|
|
171
|
+
if (!this.validateCnpjDigit(cnpj, size, Number(digits.charAt(0)))) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
if (!this.validateCnpjDigit(cnpj, size + 1, Number(digits.charAt(1)))) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
validateCnpjDigit(cnpj, size, digit) {
|
|
182
|
+
let numbers = cnpj.substring(0, size);
|
|
183
|
+
let sum = 0;
|
|
184
|
+
let pos = size - 7;
|
|
185
|
+
for (let i = size; i >= 1; i--) {
|
|
186
|
+
sum += this.convertToAsciiMinus48(numbers.charAt(size - i)) * pos--;
|
|
187
|
+
if (pos < 2) {
|
|
188
|
+
pos = 9;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const result = sum % 11 < 2 ? 0 : 11 - (sum % 11);
|
|
192
|
+
return result === digit;
|
|
193
|
+
}
|
|
194
|
+
convertToAsciiMinus48(input) {
|
|
195
|
+
return input.charCodeAt(0) - 48;
|
|
196
|
+
}
|
|
144
197
|
}
|
|
145
198
|
const cnpjValidator = new CNPJValidator();
|
|
146
199
|
|
|
@@ -8456,27 +8509,40 @@ class FormatUtilsService {
|
|
|
8456
8509
|
* Retorna o CNPJ formatado
|
|
8457
8510
|
* @param cnpj CNPJ
|
|
8458
8511
|
*/
|
|
8459
|
-
static getFormattedCnpj(cnpj) {
|
|
8512
|
+
static getFormattedCnpj(cnpj, isAlphanumericCNPJ) {
|
|
8460
8513
|
if (cnpj) {
|
|
8461
|
-
|
|
8462
|
-
|
|
8463
|
-
.replace(/
|
|
8464
|
-
.
|
|
8465
|
-
|
|
8466
|
-
|
|
8514
|
+
if (isAlphanumericCNPJ) {
|
|
8515
|
+
// Remove caracteres especiais mantendo letras e números, e converte para maiúsculas
|
|
8516
|
+
const cleanCnpj = cnpj.replace(/[^a-zA-Z0-9]/g, '').toUpperCase();
|
|
8517
|
+
// Aplica formatação: AA.BBB.CCC/DDDD-EE
|
|
8518
|
+
return cleanCnpj
|
|
8519
|
+
.replace(/^([A-Z0-9]{2})([A-Z0-9])/, '$1.$2')
|
|
8520
|
+
.replace(/^([A-Z0-9]{2}\.)([A-Z0-9]{3})([A-Z0-9])/, '$1$2.$3')
|
|
8521
|
+
.replace(/^([A-Z0-9]{2}\.[A-Z0-9]{3}\.)([A-Z0-9]{3})([A-Z0-9])/, '$1$2/$3')
|
|
8522
|
+
.replace(/^([A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/)([A-Z0-9]{4})([0-9])/, '$1$2-$3');
|
|
8523
|
+
}
|
|
8524
|
+
else {
|
|
8525
|
+
return cnpj
|
|
8526
|
+
.replace(/\D/g, "")
|
|
8527
|
+
.replace(/(\d{2})(\d)/, "$1.$2")
|
|
8528
|
+
.replace(/(\d{3})(\d)/, "$1.$2")
|
|
8529
|
+
.replace(/(\d{3})(\d)/, "$1/$2")
|
|
8530
|
+
.replace(/(\d{4})(\d)/, "$1-$2");
|
|
8531
|
+
}
|
|
8467
8532
|
}
|
|
8468
8533
|
return null;
|
|
8469
8534
|
}
|
|
8470
8535
|
/**
|
|
8471
8536
|
* Retorna a mascara do CPF/CNPJ
|
|
8472
8537
|
* @param key Valores possíveis são CPF ou CNPJ
|
|
8538
|
+
* @param isAlphanumericCNPJ Define se o CNPJ pode ser alfanumérico.
|
|
8473
8539
|
*/
|
|
8474
|
-
static getCpfCnpjMask(key) {
|
|
8540
|
+
static getCpfCnpjMask(key, isAlphanumericCNPJ) {
|
|
8475
8541
|
switch (key) {
|
|
8476
8542
|
case "CPF":
|
|
8477
8543
|
return "999.999.999-99";
|
|
8478
8544
|
case "CNPJ":
|
|
8479
|
-
return "99.999.999/9999-99";
|
|
8545
|
+
return isAlphanumericCNPJ ? "**.***.***/****-99" : "99.999.999/9999-99";
|
|
8480
8546
|
default:
|
|
8481
8547
|
return "";
|
|
8482
8548
|
}
|
|
@@ -8676,6 +8742,62 @@ class GenericValidator {
|
|
|
8676
8742
|
}
|
|
8677
8743
|
return null;
|
|
8678
8744
|
}
|
|
8745
|
+
/**
|
|
8746
|
+
* Valida se o CNPJ Alfanumérico é valido. Deve-se ser informado o cpf sem máscara.
|
|
8747
|
+
*/
|
|
8748
|
+
static isValidCnpjAlphanumeric(control) {
|
|
8749
|
+
let cnpj = control.value;
|
|
8750
|
+
if (cnpj) {
|
|
8751
|
+
cnpj = cnpj.replace(/[^\dA-Za-z]/g, '').toUpperCase();
|
|
8752
|
+
if (cnpj.length !== 14) {
|
|
8753
|
+
return null;
|
|
8754
|
+
}
|
|
8755
|
+
// Valida que dígitos verificadores são numéricos
|
|
8756
|
+
if (!/^\d$/.test(cnpj.charAt(12)) || !/^\d$/.test(cnpj.charAt(13))) {
|
|
8757
|
+
return { cnpjNotValid: true };
|
|
8758
|
+
}
|
|
8759
|
+
// Elimina CNPJs invalidos conhecidos
|
|
8760
|
+
if (cnpj === '00000000000000' ||
|
|
8761
|
+
cnpj === '11111111111111' ||
|
|
8762
|
+
cnpj === '22222222222222' ||
|
|
8763
|
+
cnpj === '33333333333333' ||
|
|
8764
|
+
cnpj === '44444444444444' ||
|
|
8765
|
+
cnpj === '55555555555555' ||
|
|
8766
|
+
cnpj === '66666666666666' ||
|
|
8767
|
+
cnpj === '77777777777777' ||
|
|
8768
|
+
cnpj === '88888888888888' ||
|
|
8769
|
+
cnpj === '99999999999999') {
|
|
8770
|
+
return { cnpjNotValid: true };
|
|
8771
|
+
}
|
|
8772
|
+
// Valida DVs
|
|
8773
|
+
const size = cnpj.length - 2;
|
|
8774
|
+
const digits = cnpj.substring(size);
|
|
8775
|
+
if (!GenericValidator.validateCnpjDigit(cnpj, size, Number(digits.charAt(0)))) {
|
|
8776
|
+
return { cnpjNotValid: true };
|
|
8777
|
+
}
|
|
8778
|
+
if (!GenericValidator.validateCnpjDigit(cnpj, size + 1, Number(digits.charAt(1)))) {
|
|
8779
|
+
return { cnpjNotValid: true };
|
|
8780
|
+
}
|
|
8781
|
+
return null;
|
|
8782
|
+
}
|
|
8783
|
+
return null;
|
|
8784
|
+
}
|
|
8785
|
+
static validateCnpjDigit(cnpj, size, digit) {
|
|
8786
|
+
const numbers = cnpj.substring(0, size);
|
|
8787
|
+
let sum = 0;
|
|
8788
|
+
let pos = size - 7;
|
|
8789
|
+
for (let i = size; i >= 1; i--) {
|
|
8790
|
+
sum += this.convertToAsciiMinus48(numbers.charAt(size - i)) * pos--;
|
|
8791
|
+
if (pos < 2) {
|
|
8792
|
+
pos = 9;
|
|
8793
|
+
}
|
|
8794
|
+
}
|
|
8795
|
+
const result = sum % 11 < 2 ? 0 : 11 - (sum % 11);
|
|
8796
|
+
return result === digit;
|
|
8797
|
+
}
|
|
8798
|
+
static convertToAsciiMinus48(input) {
|
|
8799
|
+
return input.charCodeAt(0) - 48;
|
|
8800
|
+
}
|
|
8679
8801
|
/**
|
|
8680
8802
|
* Válida o número de telefone da chave PIX.
|
|
8681
8803
|
*/
|
|
@@ -8898,7 +9020,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
8898
9020
|
/**
|
|
8899
9021
|
* Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.
|
|
8900
9022
|
*/
|
|
8901
|
-
setPixKeyValidators(isEditMode) {
|
|
9023
|
+
setPixKeyValidators(isEditMode, isAlphanumericCNPJ) {
|
|
8902
9024
|
const genericPixKey = this.pixAccountFormGroup.get("pixKey");
|
|
8903
9025
|
if (this.pixKeyType) {
|
|
8904
9026
|
switch (this.pixKeyType) {
|
|
@@ -8918,9 +9040,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
8918
9040
|
]));
|
|
8919
9041
|
break;
|
|
8920
9042
|
case "CNPJ":
|
|
8921
|
-
|
|
8922
|
-
Validators.required, GenericValidator.isValidCnpj,
|
|
8923
|
-
]));
|
|
9043
|
+
this.configureCnpjKeyValidators(isAlphanumericCNPJ, genericPixKey);
|
|
8924
9044
|
break;
|
|
8925
9045
|
case "RANDOM_KEY":
|
|
8926
9046
|
genericPixKey.setValidators(Validators.required);
|
|
@@ -8935,6 +9055,23 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
|
|
|
8935
9055
|
genericPixKey.updateValueAndValidity();
|
|
8936
9056
|
}
|
|
8937
9057
|
}
|
|
9058
|
+
/**
|
|
9059
|
+
* Escolhe o validator do CNPJ conforme a feature toggle alphanumericCNPJFeature.
|
|
9060
|
+
* @param isAlphanumericCNPJ Feature toggle que define se o CNPJ pode ser alfanumérico.
|
|
9061
|
+
* @param genericPixKey Tipo AbstractControl do campo pixKey.
|
|
9062
|
+
*/
|
|
9063
|
+
configureCnpjKeyValidators(isAlphanumericCNPJ, genericPixKey) {
|
|
9064
|
+
if (isAlphanumericCNPJ) {
|
|
9065
|
+
genericPixKey.setValidators(Validators.compose([
|
|
9066
|
+
Validators.required, GenericValidator.isValidCnpjAlphanumeric,
|
|
9067
|
+
]));
|
|
9068
|
+
}
|
|
9069
|
+
else {
|
|
9070
|
+
genericPixKey.setValidators(Validators.compose([
|
|
9071
|
+
Validators.required, GenericValidator.isValidCnpj,
|
|
9072
|
+
]));
|
|
9073
|
+
}
|
|
9074
|
+
}
|
|
8938
9075
|
/**
|
|
8939
9076
|
* Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em
|
|
8940
9077
|
* 100% na validação do campo "percentage" como um novo maxValue;
|
|
@@ -9059,7 +9196,7 @@ __decorate([
|
|
|
9059
9196
|
HistoricalPixAccountFormComponent = __decorate([
|
|
9060
9197
|
Component({
|
|
9061
9198
|
selector: "pix-account",
|
|
9062
|
-
template: "<div id=\"main\">\n <form [formGroup]=\"pixAccountFormGroup\" autocomplete=\"off\">\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <!-- Tipo de chave -->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label>{{'hcm.payroll.employees_addition_pix_key_type'|translate}}</label>\n <input-rest-auto-complete-enum [dropdown]=\"true\" server=\"payroll\"\n enumeration=\"PixKeyType\"\n placeholder=\"{{'hcm.payroll.select' | translate}}\"\n name=\"pixKeyType\" [form]=\"pixAccountFormGroup\"\n (onSelect)=\"onChangePixKeyType($event)\"\n (onClear)=\"onClearPixKeyType()\"\n id=\"ta-pixKeyType\"></input-rest-auto-complete-enum>\n <s-control-errors [control]=\"pixAccountFormGroup.get('pixKeyType')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n pixKeyTypeBankAccountDuplicate: 'hcm.payroll.historical_pix_key_type_bank_account_duplicate' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Chave Pix-->\n <div class=\"ui-md-6 ui-sm-12\" [ngClass]=\"{'required': pixKeyType !== 'BANK_ACCOUNT'}\">\n <label>{{'hcm.payroll.employees_addition_pix_key' | translate}}</label>\n <ng-container [ngSwitch]=\"pixKeyType\">\n <input *ngSwitchCase=\"'TELEPHONE'\" only-number\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n (keyup)=\"phoneMask($event)\" maxlength=\"15\"\n placeholder=\"(__) ____-____\">\n <p-inputMask *ngSwitchCase=\"'CPF'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"___.___.___-__\"\n mask=\"999.999.999-99\" [unmask]=\"true\"></p-inputMask>\n <p-inputMask *ngSwitchCase=\"'CNPJ'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"__.___.___/____-__\"\n mask=\"99
|
|
9199
|
+
template: "<div id=\"main\">\n <form [formGroup]=\"pixAccountFormGroup\" autocomplete=\"off\">\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <!-- Tipo de chave -->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label>{{'hcm.payroll.employees_addition_pix_key_type'|translate}}</label>\n <input-rest-auto-complete-enum [dropdown]=\"true\" server=\"payroll\"\n enumeration=\"PixKeyType\"\n placeholder=\"{{'hcm.payroll.select' | translate}}\"\n name=\"pixKeyType\" [form]=\"pixAccountFormGroup\"\n (onSelect)=\"onChangePixKeyType($event)\"\n (onClear)=\"onClearPixKeyType()\"\n id=\"ta-pixKeyType\"></input-rest-auto-complete-enum>\n <s-control-errors [control]=\"pixAccountFormGroup.get('pixKeyType')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n pixKeyTypeBankAccountDuplicate: 'hcm.payroll.historical_pix_key_type_bank_account_duplicate' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Chave Pix-->\n <div class=\"ui-md-6 ui-sm-12\" [ngClass]=\"{'required': pixKeyType !== 'BANK_ACCOUNT'}\">\n <label>{{'hcm.payroll.employees_addition_pix_key' | translate}}</label>\n <ng-container [ngSwitch]=\"pixKeyType\">\n <input *ngSwitchCase=\"'TELEPHONE'\" only-number\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n (keyup)=\"phoneMask($event)\" maxlength=\"15\"\n placeholder=\"(__) ____-____\">\n <p-inputMask *ngSwitchCase=\"'CPF'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"___.___.___-__\"\n mask=\"999.999.999-99\" [unmask]=\"true\"></p-inputMask>\n <p-inputMask *ngSwitchCase=\"'CNPJ'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"__.___.___/____-__\"\n mask=\"**.***.***/****-99\" [unmask]=\"true\"></p-inputMask>\n <input *ngSwitchCase=\"'EMAIL'\"\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"{{'hcm.payroll.employees_addition_email'|translate}}\"/>\n <input *ngSwitchCase=\"'BANK_ACCOUNT'\" disabled\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"/>\n <input *ngSwitchDefault\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\" maxlength=\"100\" />\n </ng-container>\n <s-control-errors *ngIf=\"isShowPixKeyFieldValidatorMessage\" id=\"er-pix-key\"\n [control]=\"pixAccountFormGroup.get('pixKey')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n invalidPhoneNumber: 'hcm.payroll.employees_addition_invalid_phone_number' | translate: { value: pixAccountFormGroup.get('pixKey').value },\n invalidEmail: 'hcm.payroll.employees_addition_email_invalid' | translate,\n cpfNotValid: 'hcm.payroll.employees_addition_cpf_error' | translate,\n cnpjNotValid: 'hcm.payroll.employees_addition_cnpj_error' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Percentual-->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label id=\"lb-percentage\"\n for=\"ff-percentage\">{{ 'hcm.payroll.historical_bank_account_label_percentage' | translate }}</label>\n <div class=\"ui-inputgroup\">\n <span class=\"ui-inputgroup-addon\">%</span>\n <input pInputText id=\"ff-percentage\" name=\"percentage\"\n formControlName=\"percentage\"\n currencyMask\n [options]=\"optionsPercentage\"\n [placeholder]=\"percentagePlaceholder\"/>\n </div>\n <s-control-errors [control]=\"pixAccountFormGroup.get('percentage')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n maxlength: 'hcm.payroll.error_max_length' | translate: { value: '6' },\n max: 'hcm.payroll.error_max_value_number' | translate: { value: maxValuePercentage },\n min: 'hcm.payroll.error_min_value_number' | translate: { value: '0,01' }\n }\">\n </s-control-errors>\n </div>\n <div class=\"ui-g-12\">\n <p-fieldset\n legend=\"{{ 'hcm.payroll.custom_fields' | translate }}\"\n [attr.data-hidden]=\"!customFields || !customFields.fields.length\"\n >\n <s-custom-fields\n domain=\"hcm\"\n service=\"{{customService}}\"\n entity=\"{{customEntity}}\"\n formControlName=\"customFields\"\n [invalidErrorLabel]=\"'hcm.payroll.employees_invalid_field' | translate\"\n >\n </s-custom-fields>\n </p-fieldset>\n </div>\n </div>\n </div>\n </form>\n\n <div [ngClass]=\"withSideBar ? 'footer' : 'footer-s-border'\">\n <div class=\"form-group\">\n <s-button id=\"btn-save\" label=\"{{ labelBtnAdd | translate}}\" priority=\"primary\"\n (onClick)=\"addItem()\" *ngIf=\"visibleBtnSave && !this.isView\"></s-button>\n <s-button *ngIf=\"withSideBar\" id=\"btn-close\" label=\"{{'hcm.payroll.cancel'|translate}}\" priority=\"secondary\"\n priority=\"link\" (onClick)=\"close()\"></s-button>\n </div>\n </div>\n</div>\n",
|
|
9063
9200
|
styles: [".refresh{width:100%!important}#table-annuity .col-default-s{width:10%}#table-annuity .col-default-m{width:12%}#table-annuity .col-default-l{width:16%}#table-annuity .col-action{width:10%}#table-annuity .icon-warning{text-align:center!important;color:#ff6d00c7!important}@media screen and (max-width:612px){#table-annuity .col-default-1,#table-annuity .col-default-2{width:16%}#table-annuity .col-default-3{width:26%}#table-annuity .col-icon{width:10%}#table-annuity .col-action{width:27%}}#main{display:-webkit-box;display:flex;height:100%;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#main form{height:100%}#main .footer{border-top:1px solid #ccc;padding-top:15px;margin-top:15px;flex-shrink:0;margin-bottom:-18px}#main .footer-s-border{padding-left:7px;flex-shrink:0;margin-bottom:-18px}"]
|
|
9064
9201
|
})
|
|
9065
9202
|
], HistoricalPixAccountFormComponent);
|