@senior-gestao-pessoas/payroll-core 9.6.1 → 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.
Files changed (25) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +160 -14
  2. package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
  3. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
  4. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
  5. package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +7 -1
  6. package/components/input-rest-auto-complete/input-rest-auto-complete.component.d.ts +1 -0
  7. package/components/utils/cnpj-validator.d.ts +5 -0
  8. package/components/utils/format-utils/format-utils.service.d.ts +3 -2
  9. package/components/utils/generic-validators.d.ts +6 -0
  10. package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +21 -6
  11. package/esm2015/components/input-rest-auto-complete/input-rest-auto-complete.component.js +10 -1
  12. package/esm2015/components/utils/cnpj-validator.js +54 -1
  13. package/esm2015/components/utils/format-utils/format-utils.service.js +23 -10
  14. package/esm2015/components/utils/generic-validators.js +57 -1
  15. package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +21 -6
  16. package/esm5/components/input-rest-auto-complete/input-rest-auto-complete.component.js +10 -1
  17. package/esm5/components/utils/cnpj-validator.js +54 -1
  18. package/esm5/components/utils/format-utils/format-utils.service.js +23 -10
  19. package/esm5/components/utils/generic-validators.js +57 -1
  20. package/fesm2015/senior-gestao-pessoas-payroll-core.js +160 -14
  21. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  22. package/fesm5/senior-gestao-pessoas-payroll-core.js +160 -14
  23. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  24. package/package.json +1 -1
  25. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
@@ -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
 
@@ -2642,6 +2695,12 @@ let InputRestAutoCompleteComponent = class InputRestAutoCompleteComponent {
2642
2695
  })
2643
2696
  .subscribe(payload => this.formaterResponce(payload.result));
2644
2697
  }
2698
+ else if (this.isSituationDefinition) {
2699
+ const params = { searchText: query };
2700
+ return this.service
2701
+ .query('autocompleteSituationDefinitionQuery', params, ServiceType.ORGANIZATION_REGISTER)
2702
+ .subscribe(payload => this.formaterResponce(payload.result));
2703
+ }
2645
2704
  else if (this.isWagetype) {
2646
2705
  const params = { searchText: query, companyId: this.companyId };
2647
2706
  return this.service
@@ -2862,6 +2921,9 @@ __decorate([
2862
2921
  __decorate([
2863
2922
  Input()
2864
2923
  ], InputRestAutoCompleteComponent.prototype, "isWagetype", void 0);
2924
+ __decorate([
2925
+ Input()
2926
+ ], InputRestAutoCompleteComponent.prototype, "isSituationDefinition", void 0);
2865
2927
  __decorate([
2866
2928
  Input()
2867
2929
  ], InputRestAutoCompleteComponent.prototype, "multiple", void 0);
@@ -8447,27 +8509,40 @@ class FormatUtilsService {
8447
8509
  * Retorna o CNPJ formatado
8448
8510
  * @param cnpj CNPJ
8449
8511
  */
8450
- static getFormattedCnpj(cnpj) {
8512
+ static getFormattedCnpj(cnpj, isAlphanumericCNPJ) {
8451
8513
  if (cnpj) {
8452
- return cnpj
8453
- .replace(/\D/g, "")
8454
- .replace(/(\d{2})(\d)/, "$1.$2")
8455
- .replace(/(\d{3})(\d)/, "$1.$2")
8456
- .replace(/(\d{3})(\d)/, "$1/$2")
8457
- .replace(/(\d{4})(\d)/, "$1-$2");
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
+ }
8458
8532
  }
8459
8533
  return null;
8460
8534
  }
8461
8535
  /**
8462
8536
  * Retorna a mascara do CPF/CNPJ
8463
8537
  * @param key Valores possíveis são CPF ou CNPJ
8538
+ * @param isAlphanumericCNPJ Define se o CNPJ pode ser alfanumérico.
8464
8539
  */
8465
- static getCpfCnpjMask(key) {
8540
+ static getCpfCnpjMask(key, isAlphanumericCNPJ) {
8466
8541
  switch (key) {
8467
8542
  case "CPF":
8468
8543
  return "999.999.999-99";
8469
8544
  case "CNPJ":
8470
- return "99.999.999/9999-99";
8545
+ return isAlphanumericCNPJ ? "**.***.***/****-99" : "99.999.999/9999-99";
8471
8546
  default:
8472
8547
  return "";
8473
8548
  }
@@ -8667,6 +8742,62 @@ class GenericValidator {
8667
8742
  }
8668
8743
  return null;
8669
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
+ }
8670
8801
  /**
8671
8802
  * Válida o número de telefone da chave PIX.
8672
8803
  */
@@ -8889,7 +9020,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
8889
9020
  /**
8890
9021
  * Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.
8891
9022
  */
8892
- setPixKeyValidators(isEditMode) {
9023
+ setPixKeyValidators(isEditMode, isAlphanumericCNPJ) {
8893
9024
  const genericPixKey = this.pixAccountFormGroup.get("pixKey");
8894
9025
  if (this.pixKeyType) {
8895
9026
  switch (this.pixKeyType) {
@@ -8909,9 +9040,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
8909
9040
  ]));
8910
9041
  break;
8911
9042
  case "CNPJ":
8912
- genericPixKey.setValidators(Validators.compose([
8913
- Validators.required, GenericValidator.isValidCnpj,
8914
- ]));
9043
+ this.configureCnpjKeyValidators(isAlphanumericCNPJ, genericPixKey);
8915
9044
  break;
8916
9045
  case "RANDOM_KEY":
8917
9046
  genericPixKey.setValidators(Validators.required);
@@ -8926,6 +9055,23 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
8926
9055
  genericPixKey.updateValueAndValidity();
8927
9056
  }
8928
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
+ }
8929
9075
  /**
8930
9076
  * Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em
8931
9077
  * 100% na validação do campo "percentage" como um novo maxValue;
@@ -9050,7 +9196,7 @@ __decorate([
9050
9196
  HistoricalPixAccountFormComponent = __decorate([
9051
9197
  Component({
9052
9198
  selector: "pix-account",
9053
- 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.999.999/9999-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",
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",
9054
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}"]
9055
9201
  })
9056
9202
  ], HistoricalPixAccountFormComponent);