@senior-agronegocio/angular-components 0.0.88 → 0.0.90

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 (62) hide show
  1. package/bundles/senior-agronegocio-angular-components.umd.js +370 -357
  2. package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
  5. package/common/agro-platform-utils.class.d.ts +9 -0
  6. package/common/agro-string-utils.class.d.ts +46 -146
  7. package/common/colors.class.d.ts +2 -0
  8. package/components/cancel-event-dialog/cancel-event-dialog.component.d.ts +2 -2
  9. package/components/event-control-board/common/event-operation.d.ts +0 -1
  10. package/components/event-control-board/common/event-origin.d.ts +0 -1
  11. package/enums/agro-numbers.enum.d.ts +3 -2
  12. package/esm2015/common/agro-cookie-utils.class.js +7 -3
  13. package/esm2015/common/agro-date-utils.class.js +7 -3
  14. package/esm2015/common/agro-logics.class.js +22 -20
  15. package/esm2015/common/agro-name-utils.class.js +5 -4
  16. package/esm2015/common/agro-number-utils.class.js +20 -10
  17. package/esm2015/common/agro-object-utils.class.js +9 -7
  18. package/esm2015/common/agro-platform-utils.class.js +46 -50
  19. package/esm2015/common/agro-string-utils.class.js +217 -215
  20. package/esm2015/common/colors.class.js +3 -1
  21. package/esm2015/components/cancel-event-dialog/cancel-event-dialog.component.js +8 -8
  22. package/esm2015/components/event-control-board/common/event-control-constants.js +1 -6
  23. package/esm2015/components/event-control-board/common/event-operation.js +1 -2
  24. package/esm2015/components/event-control-board/common/event-origin.js +1 -2
  25. package/esm2015/components/event-control-board/event-control-board.component.js +3 -4
  26. package/esm2015/components/event-steps/index.js +1 -1
  27. package/esm2015/enums/agro-numbers.enum.js +3 -2
  28. package/esm2015/services/i18n/en-US.js +9 -3
  29. package/esm2015/services/i18n/es-CO.js +9 -3
  30. package/esm2015/services/i18n/pt-BR.js +9 -3
  31. package/esm2015/services/websocket/websocket.service.js +2 -2
  32. package/esm5/common/agro-cookie-utils.class.js +7 -3
  33. package/esm5/common/agro-date-utils.class.js +7 -3
  34. package/esm5/common/agro-logics.class.js +34 -42
  35. package/esm5/common/agro-name-utils.class.js +5 -4
  36. package/esm5/common/agro-number-utils.class.js +20 -10
  37. package/esm5/common/agro-object-utils.class.js +9 -7
  38. package/esm5/common/agro-platform-utils.class.js +46 -50
  39. package/esm5/common/agro-string-utils.class.js +217 -215
  40. package/esm5/common/colors.class.js +3 -1
  41. package/esm5/components/cancel-event-dialog/cancel-event-dialog.component.js +8 -8
  42. package/esm5/components/event-control-board/common/event-control-constants.js +1 -6
  43. package/esm5/components/event-control-board/common/event-operation.js +1 -2
  44. package/esm5/components/event-control-board/common/event-origin.js +1 -2
  45. package/esm5/components/event-control-board/event-control-board.component.js +3 -4
  46. package/esm5/components/event-steps/index.js +1 -1
  47. package/esm5/enums/agro-numbers.enum.js +3 -2
  48. package/esm5/services/i18n/en-US.js +9 -3
  49. package/esm5/services/i18n/es-CO.js +9 -3
  50. package/esm5/services/i18n/pt-BR.js +9 -3
  51. package/esm5/services/websocket/websocket.service.js +2 -2
  52. package/fesm2015/senior-agronegocio-angular-components.js +359 -336
  53. package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
  54. package/fesm5/senior-agronegocio-angular-components.js +370 -357
  55. package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
  56. package/package.json +1 -1
  57. package/services/i18n/en-US.d.ts +8 -2
  58. package/services/i18n/es-CO.d.ts +8 -2
  59. package/services/i18n/pt-BR.d.ts +8 -2
  60. package/common/numbers.d.ts +0 -6
  61. package/esm2015/common/numbers.js +0 -8
  62. package/esm5/common/numbers.js +0 -8
@@ -206,7 +206,7 @@ var AgroEntityStatus;
206
206
  var AGRO_NUMBERS;
207
207
  (function (AGRO_NUMBERS) {
208
208
  AGRO_NUMBERS[AGRO_NUMBERS["MINIMUM_WEIGHT"] = 0.001] = "MINIMUM_WEIGHT";
209
- AGRO_NUMBERS[AGRO_NUMBERS["MINUSONE"] = -1] = "MINUSONE";
209
+ AGRO_NUMBERS[AGRO_NUMBERS["MINUS_ONE"] = -1] = "MINUS_ONE";
210
210
  AGRO_NUMBERS[AGRO_NUMBERS["EIGHT"] = 8] = "EIGHT";
211
211
  AGRO_NUMBERS[AGRO_NUMBERS["EIGHT_HUNDRED"] = 800] = "EIGHT_HUNDRED";
212
212
  AGRO_NUMBERS[AGRO_NUMBERS["EIGHT_HUNDRED_AND_EIGHT"] = 808] = "EIGHT_HUNDRED_AND_EIGHT";
@@ -1209,6 +1209,7 @@ var AGRO_NUMBERS;
1209
1209
  AGRO_NUMBERS[AGRO_NUMBERS["TWO_HUNDRED_AND_TWO"] = 202] = "TWO_HUNDRED_AND_TWO";
1210
1210
  AGRO_NUMBERS[AGRO_NUMBERS["ZERO"] = 0] = "ZERO";
1211
1211
  AGRO_NUMBERS[AGRO_NUMBERS["FIVE_SECONDS"] = 5000] = "FIVE_SECONDS";
1212
+ AGRO_NUMBERS[AGRO_NUMBERS["MS_PER_DAY"] = 86400000] = "MS_PER_DAY";
1212
1213
  })(AGRO_NUMBERS || (AGRO_NUMBERS = {}));
1213
1214
 
1214
1215
  var AgroStringMasks;
@@ -1412,10 +1413,7 @@ class AgroObjectUtils {
1412
1413
  * @returns True se os objetos forem iguais, false caso contrário.
1413
1414
  */
1414
1415
  static isEqual(obj1, obj2) {
1415
- if (JSON.stringify(obj1) === JSON.stringify(obj2)) {
1416
- return true;
1417
- }
1418
- return false;
1416
+ return JSON.stringify(obj1) === JSON.stringify(obj2);
1419
1417
  }
1420
1418
  /**
1421
1419
  * Verifica se um objeto é nulo.
@@ -1450,7 +1448,7 @@ class AgroObjectUtils {
1450
1448
  if (!AgroObjectUtils.isObject(obj)) {
1451
1449
  return false;
1452
1450
  }
1453
- return Object.keys(obj).length !== 0;
1451
+ return Object.keys(obj).length !== AGRO_NUMBERS.ZERO;
1454
1452
  }
1455
1453
  /**
1456
1454
  * Verifica se um objeto é vazio.
@@ -1528,7 +1526,12 @@ class AgroObjectUtils {
1528
1526
  * @param value
1529
1527
  */
1530
1528
  static fromString(value) {
1531
- return JSON.parse(value) || undefined;
1529
+ try {
1530
+ return JSON.parse(value);
1531
+ }
1532
+ catch (e) {
1533
+ return undefined;
1534
+ }
1532
1535
  }
1533
1536
  }
1534
1537
 
@@ -1882,13 +1885,17 @@ class AgroCookieUtils {
1882
1885
  }
1883
1886
  }
1884
1887
  static setCookie(name, value, days) {
1888
+ if (days < AGRO_NUMBERS.ZERO) {
1889
+ throw new Error("O número de dias não pode ser negativo.");
1890
+ }
1885
1891
  const date = new Date();
1886
- date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
1892
+ date.setTime(date.getTime() + (days * AGRO_NUMBERS.MS_PER_DAY));
1887
1893
  const expires = 'expires=' + date.toUTCString();
1888
- document.cookie = name + '=' + value + ';' + expires + ';path=/';
1894
+ document.cookie = `${name}=${value};${expires};path=/`;
1889
1895
  }
1890
1896
  }
1891
1897
 
1898
+ const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY';
1892
1899
  class AgroDateUtils {
1893
1900
  /**
1894
1901
  * Verifica se uma data é nula ou indefinida.
@@ -1991,7 +1998,7 @@ class AgroDateUtils {
1991
1998
  * @param format
1992
1999
  * @returns
1993
2000
  */
1994
- static formatDate(date, format = 'DD/MM/YYYY') {
2001
+ static formatDate(date, format = DEFAULT_DATE_FORMAT) {
1995
2002
  const moment$1 = moment;
1996
2003
  return moment$1(date).utc().format(format);
1997
2004
  }
@@ -2001,7 +2008,10 @@ class AgroDateUtils {
2001
2008
  * @returns
2002
2009
  */
2003
2010
  static padZero(value) {
2004
- return value < AGRO_NUMBERS.TEN ? '0' + value : value.toString();
2011
+ if (value < AGRO_NUMBERS.TEN) {
2012
+ return '0' + value;
2013
+ }
2014
+ return value.toString();
2005
2015
  }
2006
2016
  }
2007
2017
 
@@ -2009,130 +2019,202 @@ class AgroDateUtils {
2009
2019
  * Classe utilitária para operações de string.
2010
2020
  */
2011
2021
  class AgroStringUtils {
2022
+ /** Retorna true se a string contém apenas letras */
2023
+ static isOnlyLetters(str) {
2024
+ if (!str) {
2025
+ return false;
2026
+ }
2027
+ return /^[A-Za-z]+$/.test(str);
2028
+ }
2029
+ /** Retorna true se a string contém pelo menos uma letra */
2030
+ static hasLetters(str) {
2031
+ if (!str) {
2032
+ return false;
2033
+ }
2034
+ return /[A-Za-z]/.test(str);
2035
+ }
2036
+ /** Retorna true se a string contém apenas números */
2037
+ static isOnlyNumbers(str) {
2038
+ if (!str) {
2039
+ return false;
2040
+ }
2041
+ return /^\d+$/.test(str);
2042
+ }
2043
+ /** Retorna true se a string contém pelo menos um número */
2044
+ static hasNumbers(str) {
2045
+ if (!str) {
2046
+ return false;
2047
+ }
2048
+ return /\d/.test(str);
2049
+ }
2012
2050
  /**
2013
- * Verifica se uma string está vazia ou consiste apenas de caracteres de espaço em branco.
2014
- * @param str - A string a ser verificada.
2015
- * @returns True se a string estiver vazia ou consistir apenas de caracteres de espaço em branco, false caso contrário.
2051
+ * Verifica se a string está vazia.
2016
2052
  */
2017
2053
  static isEmpty(str) {
2018
2054
  var _a;
2019
2055
  return !str || ((_a = str.trim()) === null || _a === void 0 ? void 0 : _a.length) === AGRO_NUMBERS.ZERO;
2020
2056
  }
2021
2057
  /**
2022
- * Verifica se uma string não está vazia e não consiste apenas de caracteres de espaço em branco.
2023
- * @param str - A string a ser verificada.
2024
- * @returns True se a string não estiver vazia e não consistir apenas de caracteres de espaço em branco, false caso contrário.
2058
+ * Verifica se a string não está vazia.
2025
2059
  */
2026
2060
  static isNotEmpty(str) {
2027
2061
  return !AgroStringUtils.isEmpty(str);
2028
2062
  }
2029
- /**
2030
- * Verifica se uma string está vazia, consiste apenas de caracteres de espaço em branco ou é nula.
2031
- * @param str - A string a ser verificada.
2032
- * @returns True se a string estiver vazia, consistir apenas de caracteres de espaço em branco ou for nula, false caso contrário.
2033
- */
2063
+ /** Verifica se a string é nula, indefinida ou contém apenas espaços em branco */
2034
2064
  static isBlank(str) {
2035
2065
  return !str || AGRO_REGEX.onlyBlankSpaces.test(str);
2036
2066
  }
2037
- /**
2038
- * Verifica se uma string não está vazia, não consiste apenas de caracteres de espaço em branco e não é nula.
2039
- * @param str - A string a ser verificada.
2040
- * @returns True se a string não estiver vazia, não consistir apenas de caracteres de espaço em branco e não for nula, false caso contrário.
2041
- */
2067
+ /** Verifica se a string não é nula, indefinida ou contém apenas espaços em branco */
2042
2068
  static isNotBlank(str) {
2043
2069
  return !AgroStringUtils.isBlank(str);
2044
2070
  }
2045
2071
  /**
2046
- * Remove os espaços em branco de uma string e retorna null se a string resultante estiver vazia, caso contrário retorna a string sem espaços em branco.
2047
- * @param str - A string a ser removidos os espaços em branco.
2048
- * @returns A string sem espaços em branco ou null se a string resultante estiver vazia.
2072
+ * Remove espaços em branco do início e do fim da string.
2049
2073
  */
2050
2074
  static trimToNull(str) {
2051
- if (!str)
2075
+ if (!str) {
2052
2076
  return null;
2077
+ }
2053
2078
  const trimmed = str.trim();
2054
2079
  return trimmed === "" ? null : trimmed;
2055
2080
  }
2056
2081
  /**
2057
- * Verifica se duas strings são iguais, ignorando maiúsculas e minúsculas.
2058
- * @param str1 - A primeira string a ser comparada.
2059
- * @param str2 - A segunda string a ser comparada.
2060
- * @returns True se as strings forem iguais, ignorando maiúsculas e minúsculas, false caso contrário.
2082
+ * Compara duas strings ignorando diferenças entre maiúsculas e minúsculas.
2061
2083
  */
2062
2084
  static equalsIgnoreCase(str1, str2) {
2063
2085
  return (str1 === null || str1 === void 0 ? void 0 : str1.toLowerCase()) === (str2 === null || str2 === void 0 ? void 0 : str2.toLowerCase());
2064
2086
  }
2065
2087
  /**
2066
- * Verifica se duas strings são iguais.
2067
- * @param str1
2068
- * @param str2
2069
- * @returns
2088
+ * Compara duas strings considerando diferenças entre maiúsculas e minúsculas.
2070
2089
  */
2071
2090
  static equals(str1, str2) {
2072
2091
  return str1 === str2;
2073
2092
  }
2074
- /**
2075
- * Inverte os caracteres de uma string.
2076
- * @param str - A string a ser invertida.
2077
- * @returns A string invertida.
2078
- */
2079
2093
  static reverse(str) {
2080
2094
  return str.split("").reverse().join("");
2081
2095
  }
2082
- /**
2083
- * Verifica se a string é um e-mail.
2084
- * @param str - A string a ser testada
2085
- * @returns - True se a string for um e-mail, false caso contrário.
2086
- */
2087
2096
  static isEmail(str) {
2088
2097
  return AGRO_REGEX.isEmail.test(str);
2089
2098
  }
2090
- /**
2091
- * Verifica se a string é um número inteiro positivo.
2092
- * @param str - A string a ser testada
2093
- * @returns - True se a string for um número inteiro positivo, false caso contrário.
2094
- */
2095
2099
  static isPositiveInteger(str) {
2096
2100
  return AGRO_REGEX.positiveInteger.test(str);
2097
2101
  }
2098
- /**
2099
- * Verifica se a string é um número decimal positivo.
2100
- * @param str - A string a ser testada
2101
- * @returns - True se a string for um número decimal positivo, false caso contrário.
2102
- */
2102
+ /** Retorna true se a string é uma string válida (não null, não undefined, não vazia) */
2103
+ static isString(value) {
2104
+ return typeof value === "string" && value.trim().length > AGRO_NUMBERS.ZERO;
2105
+ }
2103
2106
  static isPositiveDecimal(str) {
2104
2107
  return AGRO_REGEX.positiveDecimal.test(str);
2105
2108
  }
2106
- /**
2107
- * Verifica se a string é um CEP (Código Postal).
2108
- * @param str - A string a ser testada
2109
- * @returns - True se a string for um CEP, false caso contrário.
2110
- */
2111
2109
  static isZipCode(str) {
2112
2110
  return AGRO_REGEX.zipCode.test(str);
2113
2111
  }
2114
- /**
2115
- * Verifica se a string é um UUID.
2116
- * @param str - A string a ser testada
2117
- * @returns - True se a string for um UUID, false caso contrário.
2118
- */
2119
2112
  static isUUID(str) {
2120
2113
  return AGRO_REGEX.isUUID.test(str);
2121
2114
  }
2122
- /**
2123
- * Verifica se a string é um número.
2124
- * @param str - A string a ser testada
2125
- * @returns - True se a string for um número, false caso contrário.
2126
- */
2127
2115
  static isNumber(str) {
2128
2116
  return AGRO_REGEX.isNumber.test(str);
2129
2117
  }
2118
+ static validateCPF(cpf) {
2119
+ cpf = cpf.replace(/\D/g, "");
2120
+ if (cpf.length !== AGRO_NUMBERS.ELEVEN || /^(\d)\1+$/.test(cpf)) {
2121
+ return false;
2122
+ }
2123
+ const calcVerifier = (cpf, length) => {
2124
+ let sum = AGRO_NUMBERS.ZERO;
2125
+ for (let i = AGRO_NUMBERS.ZERO; i < length; i++) {
2126
+ sum += parseInt(cpf[i], AGRO_NUMBERS.TEN) * (length + AGRO_NUMBERS.ONE - i);
2127
+ }
2128
+ const result = sum % AGRO_NUMBERS.ELEVEN;
2129
+ return result < AGRO_NUMBERS.TWO ? AGRO_NUMBERS.ZERO : AGRO_NUMBERS.ELEVEN - result;
2130
+ };
2131
+ const digit1 = calcVerifier(cpf, AGRO_NUMBERS.NINE);
2132
+ const digit2 = calcVerifier(cpf, AGRO_NUMBERS.TEN);
2133
+ return digit1 === parseInt(cpf[AGRO_NUMBERS.NINE], AGRO_NUMBERS.TEN) && digit2 === parseInt(cpf[AGRO_NUMBERS.TEN], AGRO_NUMBERS.TEN);
2134
+ }
2130
2135
  /**
2131
- * Retorna a diferença entre duas strings.
2132
- * @param str1
2133
- * @param str2
2134
- * @returns
2136
+ * Detecta automaticamente se é CNPJ antigo ou novo formato.
2137
+ */
2138
+ static validateCNPJ(cnpj) {
2139
+ if (!cnpj) {
2140
+ return false;
2141
+ }
2142
+ cnpj = cnpj.trim();
2143
+ // Se contém letras → valida formato alfanumérico
2144
+ if (AgroStringUtils.hasLetters(cnpj)) {
2145
+ return AgroStringUtils.validateCNPJAlfanumerico(cnpj);
2146
+ }
2147
+ // Caso contrário, valida como CNPJ tradicional
2148
+ return AgroStringUtils.validateCNPJAntigo(cnpj);
2149
+ }
2150
+ /**
2151
+ * Valida o CNPJ tradicional (somente números)
2135
2152
  */
2153
+ static validateCNPJAntigo(cnpj) {
2154
+ cnpj = cnpj.replace(/\D/g, "");
2155
+ if (!AgroStringUtils.isOnlyNumbers(cnpj)) {
2156
+ return false;
2157
+ }
2158
+ if (cnpj.length !== AGRO_NUMBERS.FOURTEEN) {
2159
+ return false;
2160
+ }
2161
+ if (/^(\d)\1{13}$/.test(cnpj)) {
2162
+ return false;
2163
+ }
2164
+ let soma = AGRO_NUMBERS.ZERO;
2165
+ for (let i = AGRO_NUMBERS.ZERO; i < AGRO_NUMBERS.TWELVE; i++) {
2166
+ soma += parseInt(cnpj.charAt(i), AGRO_NUMBERS.TEN) * AgroStringUtils.CNPJ_TRADICIONAL_PESOS_1[i];
2167
+ }
2168
+ let resto = soma % AGRO_NUMBERS.ELEVEN;
2169
+ const digito1 = resto < AGRO_NUMBERS.TWO ? AGRO_NUMBERS.ZERO : AGRO_NUMBERS.ELEVEN - resto;
2170
+ soma = AGRO_NUMBERS.ZERO;
2171
+ for (let i = AGRO_NUMBERS.ZERO; i < AGRO_NUMBERS.THIRTEEN; i++) {
2172
+ soma += parseInt(cnpj.charAt(i), AGRO_NUMBERS.TEN) * AgroStringUtils.CNPJ_TRADICIONAL_PESOS_2[i];
2173
+ }
2174
+ resto = soma % AGRO_NUMBERS.ELEVEN;
2175
+ const digito2 = resto < AGRO_NUMBERS.TWO ? AGRO_NUMBERS.ZERO : AGRO_NUMBERS.ELEVEN - resto;
2176
+ return parseInt(cnpj.charAt(AGRO_NUMBERS.TWELVE), AGRO_NUMBERS.TEN) === digito1 && parseInt(cnpj.charAt(AGRO_NUMBERS.THIRTEEN), AGRO_NUMBERS.TEN) === digito2;
2177
+ }
2178
+ /**
2179
+ * Valida o CNPJ em formato alfanumérico (padrão 2026)
2180
+ */
2181
+ static validateCNPJAlfanumerico(cnpj) {
2182
+ if (!AgroStringUtils.isString(cnpj)) {
2183
+ return false;
2184
+ }
2185
+ // Remove caracteres especiais (pontos, barra, traço, espaços)
2186
+ const clean = cnpj.replace(/[^A-Za-z0-9]/g, "").toUpperCase();
2187
+ // O CNPJ deve ter exatamente 14 posições
2188
+ if (clean.length !== AGRO_NUMBERS.FOURTEEN) {
2189
+ return false;
2190
+ }
2191
+ // Verifica se há pelo menos uma letra e um número
2192
+ if (!AgroStringUtils.hasLetters(clean) || !AgroStringUtils.hasNumbers(clean)) {
2193
+ return false;
2194
+ }
2195
+ // Calcula o primeiro dígito verificador
2196
+ const pesos1 = AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_1;
2197
+ const pesos2 = AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_2;
2198
+ // Pega os 12 primeiros caracteres
2199
+ const base = clean.substring(AGRO_NUMBERS.ZERO, AGRO_NUMBERS.TWELVE);
2200
+ const dvInformado = clean.substring(AGRO_NUMBERS.TWELVE, AGRO_NUMBERS.FOURTEEN);
2201
+ const calculaDV = (str, pesos) => {
2202
+ let soma = AGRO_NUMBERS.ZERO;
2203
+ for (let i = AGRO_NUMBERS.ZERO; i < pesos.length; i++) {
2204
+ const char = str.charAt(i);
2205
+ const asciiValue = char.charCodeAt(0) - AGRO_NUMBERS.FORTY_EIGHT; // conforme documento (48 = '0')
2206
+ soma += asciiValue * pesos[i]; // asciiValue já calculado a partir do enum FORTY_EIGHT
2207
+ }
2208
+ const resto = soma % AGRO_NUMBERS.ELEVEN;
2209
+ const digito = AGRO_NUMBERS.ELEVEN - resto;
2210
+ return digito > AGRO_NUMBERS.NINE ? AGRO_NUMBERS.ZERO : digito; // segue mesma regra do CNPJ tradicional
2211
+ };
2212
+ const dv1 = calculaDV(base, pesos1);
2213
+ const dv2 = calculaDV(base + dv1.toString(), pesos2);
2214
+ const dvCalculado = `${dv1}${dv2}`;
2215
+ return dvCalculado === dvInformado;
2216
+ }
2217
+ /** Calcula a diferença entre duas strings em termos de número de caracteres diferentes */
2136
2218
  static difference(str1, str2) {
2137
2219
  const len1 = str1.length;
2138
2220
  const len2 = str2.length;
@@ -2144,179 +2226,66 @@ class AgroStringUtils {
2144
2226
  }
2145
2227
  return diff;
2146
2228
  }
2147
- /**
2148
- * Retorna se a string termina com a string fornecida.
2149
- * @param str1
2150
- * @param str2
2151
- * @returns
2152
- */
2229
+ /** Verifica se str1 termina com str2 */
2153
2230
  static endsWith(str1, str2) {
2154
2231
  return str1.endsWith(str2);
2155
2232
  }
2156
- /**
2157
- * Retorna se a string começa com a string fornecida.
2158
- * @param str1
2159
- * @param str2
2160
- * @returns
2161
- */
2233
+ /** Verifica se str1 começa com str2 */
2162
2234
  static startsWith(str1, str2) {
2163
2235
  return str1.startsWith(str2);
2164
2236
  }
2165
- /**
2166
- * Retorna se a string contém a string fornecida.
2167
- * @param str1
2168
- * @param str2
2169
- * @returns
2170
- */
2237
+ /** Verifica se str1 contém str2 */
2171
2238
  static contains(str1, str2) {
2172
2239
  return str1.includes(str2);
2173
2240
  }
2174
- /**
2175
- * Retorna se a string começa com a string fornecida ignorando maiúsculas e minúsculas.
2176
- * @param str1
2177
- * @param str2
2178
- * @returns
2179
- */
2241
+ /** Verifica se str1 começa com str2, ignorando maiúsculas e minúsculas */
2180
2242
  static startsWithIgnoreCase(str1, str2) {
2181
2243
  return str1.toLowerCase().startsWith(str2.toLowerCase());
2182
2244
  }
2183
- /**
2184
- * Retorna se a string termina com a string fornecida ignorando maiúsculas e minúsculas.
2185
- * @param str1
2186
- * @param str2
2187
- * @returns
2188
- */
2245
+ /** Verifica se str1 termina com str2, ignorando maiúsculas e minúsculas */
2189
2246
  static endsWithIgnoreCase(str1, str2) {
2190
2247
  return str1.toLowerCase().endsWith(str2.toLowerCase());
2191
2248
  }
2192
- /**
2193
- * Converte uma string para letras maiúsculas.
2194
- * @param str - A string a ser convertida.
2195
- * @returns A string convertida para letras maiúsculas.
2196
- */
2197
- static toUpperCase(str) {
2198
- return str.toUpperCase();
2199
- }
2200
- /**
2201
- * Converte uma string para letras minúsculas.
2202
- * @param str - A string a ser convertida.
2203
- * @returns A string convertida para letras minúsculas.
2204
- */
2205
- static toLowerCase(str) {
2206
- return str.toLowerCase();
2207
- }
2208
- /**
2209
- * Inverte o caso das letras em uma string.
2210
- * @param str - A string a ser convertida.
2211
- * @returns A string com o caso das letras invertido.
2212
- */
2249
+ /** Inverte o caso de cada letra na string */
2213
2250
  static swapCase(str) {
2214
2251
  let swapped = "";
2215
2252
  for (let i = AGRO_NUMBERS.ZERO; i < str.length; i++) {
2216
2253
  const char = str[i];
2217
- if (char === char.toUpperCase()) {
2218
- swapped += char.toLowerCase();
2219
- }
2220
- else {
2221
- swapped += char.toUpperCase();
2222
- }
2254
+ swapped += char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase();
2223
2255
  }
2224
2256
  return swapped;
2225
2257
  }
2226
- /**
2227
- * Converte a primeira letra de uma string para maiúscula.
2228
- * @param str - A string a ser convertida.
2229
- * @returns A string com a primeira letra em maiúscula.
2230
- */
2258
+ /** Coloca a primeira letra da string em maiúsculo */
2231
2259
  static capitalize(str) {
2232
2260
  return str.charAt(AGRO_NUMBERS.ZERO).toUpperCase() + str.slice(1);
2233
2261
  }
2234
- /**
2235
- * Converte a primeira letra de uma string para minúscula.
2236
- * @param str - A string a ser convertida.
2237
- * @returns A string com a primeira letra em minúscula.
2238
- */
2262
+ /** Coloca a primeira letra da string em minúsculo */
2239
2263
  static uncapitalize(str) {
2240
2264
  return str.charAt(AGRO_NUMBERS.ZERO).toLowerCase() + str.slice(1);
2241
2265
  }
2242
- /**
2243
- * Conta o número de ocorrências de uma substring em uma string.
2244
- * @param str - A string onde a contagem será realizada.
2245
- * @param substring - A substring a ser contada.
2246
- * @returns O número de ocorrências da substring na string.
2247
- */
2266
+ /** Conta o número de ocorrências de uma substring dentro de uma string */
2248
2267
  static countMatches(str, substring) {
2249
2268
  const regex = new RegExp(substring, "g");
2250
- const matches = [];
2251
- let match;
2252
- while ((match = regex.exec(str)) !== null) {
2253
- matches.push(match[0]);
2254
- }
2269
+ const matches = str.match(regex);
2255
2270
  return matches ? matches.length : AGRO_NUMBERS.ZERO;
2256
2271
  }
2257
- static validateCPF(cpf) {
2258
- cpf = cpf.replace(/\D/g, "");
2259
- if (cpf.length !== 11 || /^(\d)\1+$/.test(cpf)) {
2260
- return false;
2261
- }
2262
- const calcVerifier = (cpf, length) => {
2263
- let sum = 0;
2264
- for (let i = 0; i < length; i++) {
2265
- sum += parseInt(cpf[i]) * (length + 1 - i);
2266
- }
2267
- let result = sum % 11;
2268
- return result < 2 ? 0 : 11 - result;
2269
- };
2270
- const digit1 = calcVerifier(cpf, 9);
2271
- const digit2 = calcVerifier(cpf, 10);
2272
- return digit1 === parseInt(cpf[9]) && digit2 === parseInt(cpf[10]);
2273
- }
2274
- static validateCNPJ(cnpj) {
2275
- // Remove todos os caracteres não numéricos
2276
- cnpj = cnpj.replace(/\D/g, "");
2277
- // Verifica se tem 14 dígitos
2278
- if (cnpj.length !== 14)
2279
- return false;
2280
- // Verifica se o CNPJ é uma sequência repetida (ex: 11111111111111, 22222222222222, etc.)
2281
- if (/^(\d)\1{13}$/.test(cnpj))
2282
- return false;
2283
- // Cálculo do primeiro dígito verificador
2284
- let soma = 0;
2285
- let pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
2286
- for (let i = 0; i < 12; i++) {
2287
- soma += parseInt(cnpj.charAt(i)) * pesos1[i];
2288
- }
2289
- let resto = soma % 11;
2290
- let digito1 = resto < 2 ? 0 : 11 - resto;
2291
- // Cálculo do segundo dígito verificador
2292
- soma = 0;
2293
- let pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
2294
- for (let i = 0; i < 13; i++) {
2295
- soma += parseInt(cnpj.charAt(i)) * pesos2[i];
2296
- }
2297
- resto = soma % 11;
2298
- let digito2 = resto < 2 ? 0 : 11 - resto;
2299
- // Verifica se os dígitos verificadores são válidos
2300
- return parseInt(cnpj.charAt(12)) === digito1 && parseInt(cnpj.charAt(13)) === digito2;
2301
- }
2302
2272
  /**
2303
- * Método para aplicar uma máscara em uma string. Considere a máscara com valores 9 para aplicação
2304
- * @example AgroStringUtils.applyMask('12345678901', '999.999.999-99') => '123.456.789-01'
2305
- * @param value
2306
- * @param mask
2307
- * @returns
2273
+ * Aplica uma máscara simples à string fornecida.O padrão de máscaras é definido pelo enum AgroStringMasks ou
2274
+ * pode ser uma string personalizada onde '9' representa um dígito a ser substituído pelo caractere correspondente
2275
+ * da string.
2308
2276
  */
2309
2277
  static applyMask(value, mask) {
2310
2278
  const valueChars = value.toString().split("");
2311
2279
  const maskChars = mask.split("");
2312
2280
  let maskedValue = "";
2313
- let j = 0;
2281
+ let j = AGRO_NUMBERS.ZERO;
2314
2282
  for (const maskChar of maskChars) {
2315
2283
  if (j >= valueChars.length) {
2316
2284
  break;
2317
2285
  }
2318
2286
  if (maskChar === "9") {
2319
- maskedValue += valueChars[j++];
2287
+ maskedValue += valueChars[j];
2288
+ j += AGRO_NUMBERS.ONE; // increment extracted per Sonar recommendation
2320
2289
  }
2321
2290
  else {
2322
2291
  maskedValue += maskChar;
@@ -2324,30 +2293,77 @@ class AgroStringUtils {
2324
2293
  }
2325
2294
  return maskedValue;
2326
2295
  }
2327
- /**
2328
- * Verifica se uma string é válida.
2329
- * @param str - A string a ser verificada.
2330
- * @returns True se a string for válida, false caso contrário.
2331
- */
2332
2296
  static isValid(str) {
2333
- if (typeof str === "undefined" || str === null) {
2334
- return false;
2335
- }
2336
- if (AgroStringUtils.isNotEmpty(str)) {
2337
- return true;
2338
- }
2339
- return false;
2297
+ return typeof str !== "undefined" && str !== null && this.isNotEmpty(str);
2340
2298
  }
2341
- /**
2342
- * Verifica se uma string é inválida.
2343
- * @param str - A string a ser verificada.
2344
- * @returns True se a string for inválida, false caso contrário.
2345
- */
2346
2299
  static isInvalid(str) {
2347
2300
  return !AgroStringUtils.isValid(str);
2348
2301
  }
2349
- }
2302
+ }
2303
+ AgroStringUtils.CNPJ_TRADICIONAL_PESOS_1 = [
2304
+ AGRO_NUMBERS.FIVE,
2305
+ AGRO_NUMBERS.FOUR,
2306
+ AGRO_NUMBERS.THREE,
2307
+ AGRO_NUMBERS.TWO,
2308
+ AGRO_NUMBERS.NINE,
2309
+ AGRO_NUMBERS.EIGHT,
2310
+ AGRO_NUMBERS.SEVEN,
2311
+ AGRO_NUMBERS.SIX,
2312
+ AGRO_NUMBERS.FIVE,
2313
+ AGRO_NUMBERS.FOUR,
2314
+ AGRO_NUMBERS.THREE,
2315
+ AGRO_NUMBERS.TWO
2316
+ ];
2317
+ AgroStringUtils.CNPJ_TRADICIONAL_PESOS_2 = [
2318
+ AGRO_NUMBERS.SIX,
2319
+ AGRO_NUMBERS.FIVE,
2320
+ AGRO_NUMBERS.FOUR,
2321
+ AGRO_NUMBERS.THREE,
2322
+ AGRO_NUMBERS.TWO,
2323
+ AGRO_NUMBERS.NINE,
2324
+ AGRO_NUMBERS.EIGHT,
2325
+ AGRO_NUMBERS.SEVEN,
2326
+ AGRO_NUMBERS.SIX,
2327
+ AGRO_NUMBERS.FIVE,
2328
+ AGRO_NUMBERS.FOUR,
2329
+ AGRO_NUMBERS.THREE,
2330
+ AGRO_NUMBERS.TWO
2331
+ ];
2332
+ // Pesos utilizados para cálculo de dígitos verificadores do CNPJ alfanumérico (2026)
2333
+ AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_1 = [
2334
+ AGRO_NUMBERS.FIVE,
2335
+ AGRO_NUMBERS.FOUR,
2336
+ AGRO_NUMBERS.THREE,
2337
+ AGRO_NUMBERS.TWO,
2338
+ AGRO_NUMBERS.NINE,
2339
+ AGRO_NUMBERS.EIGHT,
2340
+ AGRO_NUMBERS.SEVEN,
2341
+ AGRO_NUMBERS.SIX,
2342
+ AGRO_NUMBERS.FIVE,
2343
+ AGRO_NUMBERS.FOUR,
2344
+ AGRO_NUMBERS.THREE,
2345
+ AGRO_NUMBERS.TWO
2346
+ ];
2347
+ AgroStringUtils.CNPJ_ALFANUMERICO_PESOS_2 = [
2348
+ AGRO_NUMBERS.SIX,
2349
+ AGRO_NUMBERS.FIVE,
2350
+ AGRO_NUMBERS.FOUR,
2351
+ AGRO_NUMBERS.THREE,
2352
+ AGRO_NUMBERS.TWO,
2353
+ AGRO_NUMBERS.NINE,
2354
+ AGRO_NUMBERS.EIGHT,
2355
+ AGRO_NUMBERS.SEVEN,
2356
+ AGRO_NUMBERS.SIX,
2357
+ AGRO_NUMBERS.FIVE,
2358
+ AGRO_NUMBERS.FOUR,
2359
+ AGRO_NUMBERS.THREE,
2360
+ AGRO_NUMBERS.TWO
2361
+ ];
2350
2362
 
2363
+ // Cookie name constants
2364
+ const COOKIE_TOKEN = 'com.senior.token';
2365
+ const COOKIE_BASE_URL = 'com.senior.base.url';
2366
+ const COOKIE_SERVICES_URL = 'com.senior.services.url';
2351
2367
  class AgroPlatformUtils {
2352
2368
  /**
2353
2369
  * Retorna o tenant atual
@@ -2355,31 +2371,30 @@ class AgroPlatformUtils {
2355
2371
  * @returns
2356
2372
  */
2357
2373
  static getCurrentTenant() {
2358
- var _a;
2359
- const cookie = AgroCookieUtils.getCookie('com.senior.token', true);
2360
- if (cookie) {
2361
- const str = (_a = AgroObjectUtils.fromString(cookie)) === null || _a === void 0 ? void 0 : _a.tenantName;
2362
- if (str) {
2363
- return str;
2364
- }
2374
+ const tenant = AgroPlatformUtils.getTokenField('tenantName');
2375
+ if (tenant) {
2376
+ return tenant;
2365
2377
  }
2366
- throw new Error('Cookie: "com.senior.token" não encontrado.');
2378
+ throw new Error(`Cookie: "${COOKIE_TOKEN}" não encontrado.`);
2367
2379
  }
2368
2380
  /**
2369
2381
  * Retorna o locale do tenant atual
2370
2382
  *
2371
2383
  * @returns
2372
2384
  */
2373
- static getCurrenTenantLocale() {
2374
- var _a;
2375
- const cookie = AgroCookieUtils.getCookie('com.senior.token', true);
2376
- if (cookie) {
2377
- const str = (_a = AgroObjectUtils.fromString(cookie)) === null || _a === void 0 ? void 0 : _a.locale;
2378
- if (str) {
2379
- return str;
2380
- }
2385
+ static getCurrentTenantLocale() {
2386
+ const locale = AgroPlatformUtils.getTokenField('locale');
2387
+ if (locale) {
2388
+ return locale;
2381
2389
  }
2382
- throw new Error('Cookie: "com.senior.token" não encontrado.');
2390
+ throw new Error(`Cookie: "${COOKIE_TOKEN}" não encontrado.`);
2391
+ }
2392
+ /**
2393
+ * @deprecated Use getCurrentTenantLocale()
2394
+ * Mantido por compatibilidade retroativa.
2395
+ */
2396
+ static getCurrenTenantLocale() {
2397
+ return AgroPlatformUtils.getCurrentTenantLocale();
2383
2398
  }
2384
2399
  /**
2385
2400
  * Retorna o usuário logado
@@ -2387,15 +2402,8 @@ class AgroPlatformUtils {
2387
2402
  * @returns string || null
2388
2403
  */
2389
2404
  static getCurrentUserName() {
2390
- var _a;
2391
- const cookie = AgroCookieUtils.getCookie('com.senior.token');
2392
- if (cookie) {
2393
- const str = (_a = AgroCookieUtils.parseCookieToObject(cookie, true)) === null || _a === void 0 ? void 0 : _a.fullName;
2394
- if (str) {
2395
- return str;
2396
- }
2397
- }
2398
- return null;
2405
+ const name = AgroPlatformUtils.getTokenField('fullName');
2406
+ return name || null;
2399
2407
  }
2400
2408
  /**
2401
2409
  * Retorna o e-mail do usuário logado
@@ -2403,16 +2411,11 @@ class AgroPlatformUtils {
2403
2411
  * @returns string
2404
2412
  */
2405
2413
  static getCurrentUserEmail() {
2406
- var _a;
2407
- const cookie = AgroCookieUtils.getCookie('com.senior.token');
2408
- if (cookie) {
2409
- const str = (_a = AgroCookieUtils.parseCookieToObject(cookie, true)) === null || _a === void 0 ? void 0 : _a.email;
2410
- if (str) {
2411
- return str;
2412
- }
2414
+ const email = AgroPlatformUtils.getTokenField('email');
2415
+ if (!email) {
2416
+ console.info(`Cookie: "${COOKIE_TOKEN}" não encontrado.`);
2413
2417
  }
2414
- console.error('Cookie: "com.senior.token" não encontrado.');
2415
- return null;
2418
+ return email || null;
2416
2419
  }
2417
2420
  /**
2418
2421
  * Retorna uma string com a baseURL atual
@@ -2420,11 +2423,11 @@ class AgroPlatformUtils {
2420
2423
  * @example "https://cloud-leaf.senior.com.br" || "https://platform.senior.com.br"
2421
2424
  */
2422
2425
  static getBaseURL() {
2423
- const cookie = AgroCookieUtils.getCookie('com.senior.base.url');
2426
+ const cookie = AgroCookieUtils.getCookie(COOKIE_BASE_URL);
2424
2427
  if (cookie) {
2425
2428
  return decodeURIComponent(cookie);
2426
2429
  }
2427
- throw new Error('Cookie: "com.senior.base.url" não encontrado.');
2430
+ throw new Error(`Cookie: "${COOKIE_BASE_URL}" não encontrado.`);
2428
2431
  }
2429
2432
  /**
2430
2433
  * Retorna uma string com a URL dos serviços
@@ -2432,27 +2435,33 @@ class AgroPlatformUtils {
2432
2435
  * @example "https://cloud-leaf.senior.com.br/t/senior.com.br/bridge/1.0/"
2433
2436
  */
2434
2437
  static getServicesURL() {
2435
- const cookie = AgroCookieUtils.getCookie('com.senior.services.url');
2438
+ const cookie = AgroCookieUtils.getCookie(COOKIE_SERVICES_URL);
2436
2439
  if (AgroStringUtils.isNotEmpty(cookie)) {
2437
2440
  return decodeURIComponent(cookie);
2438
2441
  }
2439
- throw new Error('Cookie: "com.senior.services.url" não encontrado.');
2442
+ throw new Error(`Cookie: "${COOKIE_SERVICES_URL}" não encontrado.`);
2440
2443
  }
2441
2444
  /**
2442
2445
  * Retorna uma string com o token de acesso atual
2443
2446
  * Caso contrário, retorna uma instância de Error
2444
2447
  */
2445
2448
  static getCurrentAccessToken() {
2446
- var _a;
2447
- const cookie = AgroCookieUtils.getCookie('com.senior.token');
2448
- if (cookie) {
2449
- const str = (_a = AgroCookieUtils.parseCookieToObject(cookie, true)) === null || _a === void 0 ? void 0 : _a.access_token;
2450
- if (str) {
2451
- return str;
2452
- }
2449
+ const token = AgroPlatformUtils.getTokenField('access_token');
2450
+ if (!token) {
2451
+ console.info(`Cookie: "${COOKIE_TOKEN}" não encontrado.`);
2453
2452
  }
2454
- console.error('Cookie: "com.senior.token" não encontrado.');
2455
- return null;
2453
+ return token || null;
2454
+ }
2455
+ /**
2456
+ * Helper para extrair um campo do cookie de token.
2457
+ */
2458
+ static getTokenField(field) {
2459
+ const cookie = AgroCookieUtils.getCookie(COOKIE_TOKEN);
2460
+ if (!cookie) {
2461
+ return undefined;
2462
+ }
2463
+ const obj = AgroCookieUtils.parseCookieToObject(cookie, true);
2464
+ return obj[field];
2456
2465
  }
2457
2466
  }
2458
2467
 
@@ -2483,7 +2492,7 @@ class AgroNumberUtils {
2483
2492
  * @returns True se for par, false caso contrário.
2484
2493
  */
2485
2494
  static isEven(value) {
2486
- return value % 2 === 0;
2495
+ return value % AGRO_NUMBERS.TWO === AGRO_NUMBERS.ZERO;
2487
2496
  }
2488
2497
  /**
2489
2498
  * Verifica se um número é ímpar.
@@ -2492,7 +2501,7 @@ class AgroNumberUtils {
2492
2501
  * @returns True se for ímpar, false caso contrário.
2493
2502
  */
2494
2503
  static isOdd(value) {
2495
- return value % 2 !== 0;
2504
+ return value % AGRO_NUMBERS.TWO !== AGRO_NUMBERS.ZERO;
2496
2505
  }
2497
2506
  /**
2498
2507
  * Calcula a porcentagem de um valor em relação a um total.
@@ -2502,9 +2511,10 @@ class AgroNumberUtils {
2502
2511
  * @returns A porcentagem calculada.
2503
2512
  */
2504
2513
  static percentage(partial, total) {
2505
- if (total === 0)
2514
+ if (total === AGRO_NUMBERS.ZERO) {
2506
2515
  throw new Error("O total não pode ser zero.");
2507
- return (partial / total) * 100;
2516
+ }
2517
+ return (partial / total) * AGRO_NUMBERS.ONE_HUNDRED;
2508
2518
  }
2509
2519
  /**
2510
2520
  * Formata um número para o formato monetário.
@@ -2528,6 +2538,9 @@ class AgroNumberUtils {
2528
2538
  * @returns Um número aleatório no intervalo.
2529
2539
  */
2530
2540
  static randomInRange(min, max) {
2541
+ if (max <= min) {
2542
+ throw new Error("O valor máximo deve ser maior que o mínimo.");
2543
+ }
2531
2544
  return Math.random() * (max - min) + min;
2532
2545
  }
2533
2546
  /**
@@ -2537,11 +2550,13 @@ class AgroNumberUtils {
2537
2550
  * @returns True se for primo, false caso contrário.
2538
2551
  */
2539
2552
  static isPrime(value) {
2540
- if (value <= 1)
2553
+ if (value <= AGRO_NUMBERS.ONE) {
2541
2554
  return false;
2542
- for (let i = 2; i <= Math.sqrt(value); i++) {
2543
- if (value % i === 0)
2555
+ }
2556
+ for (let i = AGRO_NUMBERS.TWO; i <= Math.sqrt(value); i++) {
2557
+ if (value % i === AGRO_NUMBERS.ZERO) {
2544
2558
  return false;
2559
+ }
2545
2560
  }
2546
2561
  return true;
2547
2562
  }
@@ -2552,8 +2567,11 @@ class AgroNumberUtils {
2552
2567
  * @param decimals O número de casas decimais (padrão: 2).
2553
2568
  * @returns O número arredondado.
2554
2569
  */
2555
- static roundTo(value, decimals = 2) {
2556
- const factor = Math.pow(10, decimals);
2570
+ static roundTo(value, decimals = AGRO_NUMBERS.TWO) {
2571
+ if (decimals < AGRO_NUMBERS.ZERO) {
2572
+ throw new Error("O número de casas decimais não pode ser negativo.");
2573
+ }
2574
+ const factor = Math.pow(AGRO_NUMBERS.TEN, decimals);
2557
2575
  return Math.round(value * factor) / factor;
2558
2576
  }
2559
2577
  }
@@ -2587,6 +2605,8 @@ Colors.GRAY_SCALE = {
2587
2605
  SECONDARY_RGB: "153, 153, 153",
2588
2606
  PRIMAEY_DISABLED: "#CCCCCC",
2589
2607
  PRIMAEY_DISABLED_RGB: "204, 204, 204",
2608
+ PRIMARY_DISABLED: "#CCCCCC",
2609
+ PRIMARY_DISABLED_RGB: "204, 204, 204",
2590
2610
  SECONDARY_DISABLED: "#D8D8D8",
2591
2611
  SECONDARY_DISABLED_RGB: "216, 216, 216",
2592
2612
  BLACK_HAZE: "#E5EAEA",
@@ -2646,8 +2666,7 @@ class AgroNameUtils {
2646
2666
  return null;
2647
2667
  }
2648
2668
  const parts = fullName.trim().split(/\s+/);
2649
- // Verifica se pelo menos duas partes no nome
2650
- if (parts.length < 2) {
2669
+ if (parts.length < AGRO_NUMBERS.TWO) {
2651
2670
  return fullName; // Retorna o nome original se não puder ser abreviado
2652
2671
  }
2653
2672
  const firstName = parts[0]; // Primeiro nome completo
@@ -2666,8 +2685,9 @@ class AgroNameUtils {
2666
2685
  return null;
2667
2686
  }
2668
2687
  const parts = fullName.trim().split(/\s+/);
2669
- if (parts.length < 2)
2688
+ if (parts.length < AGRO_NUMBERS.TWO) {
2670
2689
  return fullName;
2690
+ }
2671
2691
  const firstName = parts[0];
2672
2692
  const abbreviatedLastNames = parts
2673
2693
  .slice(1)
@@ -2761,34 +2781,35 @@ class AgroLogics {
2761
2781
  static entityDistributionStats(data, keys) {
2762
2782
  const total = data.length;
2763
2783
  const map = new Map();
2764
- for (const item of data) {
2765
- const uniqueKey = JSON.stringify(keys.map((c) => {
2766
- const parts = c.split(".");
2767
- let value = item;
2768
- for (const p of parts) {
2769
- value = value === null || value === void 0 ? void 0 : value[p];
2784
+ const resolvePath = (source, path) => {
2785
+ const parts = path.split(".");
2786
+ let value = source;
2787
+ for (const p of parts) {
2788
+ if (value == null) {
2789
+ return undefined;
2770
2790
  }
2771
- return value;
2772
- }));
2791
+ value = value[p];
2792
+ }
2793
+ return value;
2794
+ };
2795
+ for (const item of data) {
2796
+ const keyValues = keys.map(k => resolvePath(item, k));
2797
+ const uniqueKey = JSON.stringify(keyValues);
2773
2798
  if (!map.has(uniqueKey)) {
2774
2799
  const groupedData = {};
2775
- for (const c of keys) {
2776
- const parts = c.split(".");
2777
- let value = item;
2778
- for (const p of parts) {
2779
- value = value === null || value === void 0 ? void 0 : value[p];
2780
- }
2781
- // add the full entity (not only its ID)
2782
- groupedData[c.toString().split(".")[0]] = value;
2800
+ for (const k of keys) {
2801
+ const rootName = k.toString().split(".")[0];
2802
+ groupedData[rootName] = resolvePath(item, k);
2783
2803
  }
2784
2804
  map.set(uniqueKey, { data: groupedData, count: 0 });
2785
2805
  }
2786
- map.get(uniqueKey).count++;
2806
+ const entry = map.get(uniqueKey);
2807
+ entry.count += AGRO_NUMBERS.ONE;
2787
2808
  }
2788
- const result = Array.from(map.values()).map((entry) => ({
2809
+ const result = Array.from(map.values()).map(entry => ({
2789
2810
  data: entry.data,
2790
2811
  samplingQuantity: entry.count,
2791
- samplingSuccess: Math.round((entry.count / total) * 100),
2812
+ samplingSuccess: Math.round((entry.count / total) * AGRO_NUMBERS.ONE_HUNDRED),
2792
2813
  }));
2793
2814
  result.sort((a, b) => b.samplingSuccess - a.samplingSuccess);
2794
2815
  return result;
@@ -3142,7 +3163,7 @@ let WebsocketService = class WebsocketService {
3142
3163
  this.handleError('WebSocketError', data);
3143
3164
  }
3144
3165
  handleError(origin, data) {
3145
- console.error(origin, data);
3166
+ console.info(origin, data);
3146
3167
  this.error$.next(data);
3147
3168
  }
3148
3169
  handleReconnection() {
@@ -3259,7 +3280,6 @@ const ptBR = {
3259
3280
  "agro.angular_components.change_request_event_summary": "Alteração de \nPesagem",
3260
3281
  "agro.angular_components.ticket_maintenance_header": "Manutenção de ticket",
3261
3282
  "agro.angular_components.invoice_creating_event": "Emissão de NF",
3262
- "agro.angular_components.invoice_close_event": "Fechamento de NF",
3263
3283
  "agro.angular_components.balance_entry_control_event": "Entrada/saída balança",
3264
3284
  "agro.angular_components.event_origin_label": "Origem do evento",
3265
3285
  "agro.angular_components.event_details_header": "Detalhes do Evento",
@@ -3476,7 +3496,6 @@ const ptBR = {
3476
3496
  "agro.angular_components.CREATE_INVOICE_FIXATION": "Emissão de NF",
3477
3497
  "agro.angular_components.CANCEL_INVOICE_FIXATION": "Cancelamento de NF",
3478
3498
  "agro.angular_components.ORIGINATION_CREATE_INVOICE": "Emissão de NF",
3479
- "agro.angular_components.INVOICE_CLOSE_INVOICE": "Fechamento de NF",
3480
3499
  "agro.angular_components.ORIGINATION_CREATE_EFFECTIVE_BALANCE": "Emissão de saldo efetivo",
3481
3500
  "agro.angular_components.PRODUCER_NET_VALUE_EFFECTIVE_BALANCE_CONFIRMATION": "Confirmação de saldo efetivo",
3482
3501
  "agro.angular_components.CLOSE_INVOICE_FIXATION": "Fechamento de NF",
@@ -3489,6 +3508,14 @@ const ptBR = {
3489
3508
  "agro.angular_components.TRANSFER_CREATE_SERVICE_INVOICE": "Emissão NF de serviço",
3490
3509
  "agro.angular_components.TRANSFER_CANCEL_SERVICE_INVOICE": "Cancelamento de NF de serviço",
3491
3510
  "agro.angular_components.REOPEN_INVOICE_FIXATION": "Reabertura da NF",
3511
+ "agro.angular_components.CIDASC_INTEGRATION": "Envio ao Cidasc",
3512
+ "agro.angular_components.CIDASC_CANCELLATION": "Cancelamento do Receituário",
3513
+ "agro.angular_components.CIDASC_DATA_LOAD_CULTURE": "Carga Cidasc - Cultura",
3514
+ "agro.angular_components.CIDASC_DATA_LOAD_PEST": "Carga Cidasc - Praga",
3515
+ "agro.angular_components.CIDASC_DATA_LOAD_PRODUCT": "Carga Cidasc - Produto",
3516
+ "agro.angular_components.CIDASC_DATA_LOAD_MEASURE_UNIT": "Carga Cidasc - Unidade de medida",
3517
+ "agro.angular_components.CIDASC_DATA_LOAD_COMPOSED_MEASURE_UNIT": "Carga Cidasc - Medida por hectare",
3518
+ "agro.angular_components.agronomic_prescription_origin_event": "Receituário Agronômico",
3492
3519
  };
3493
3520
 
3494
3521
  const enUS = {
@@ -3514,7 +3541,6 @@ const enUS = {
3514
3541
  "agro.angular_components.change_request_event_summary": "Weight Change",
3515
3542
  "agro.angular_components.ticket_maintenance_header": "Ticket Maintenance",
3516
3543
  "agro.angular_components.invoice_creating_event": "Invoice Issuance",
3517
- "agro.angular_components.invoice_close_event": "Invoice Closing",
3518
3544
  "agro.angular_components.balance_entry_control_event": "Balance Entry/Exit",
3519
3545
  "agro.angular_components.event_origin_label": "Event origin",
3520
3546
  "agro.angular_components.event_details_header": "Event Details",
@@ -3731,13 +3757,20 @@ const enUS = {
3731
3757
  "agro.angular_components.ORIGINATION_CREATE_EFFECTIVE_CONFIRMATION": "Effective confirmation",
3732
3758
  "agro.angular_components.ORIGINATION_CREATE_PROVISIONAL_BALANCE": "Provisional balance",
3733
3759
  "agro.angular_components.CLOSE_INVOICE_TRANSFER": "Close transfer invoice",
3734
- "agro.angular_components.INVOICE_CLOSE_INVOICE": "Invoice closing",
3735
3760
  "agro.angular_components.REOPEN_INVOICE_TRANSFER": "Reopen transfer invoice",
3736
3761
  "agro.angular_components.TRANSFER_CREATE_FINANCIAL_TITLE": "Financial title creation",
3737
3762
  "agro.angular_components.TRANSFER_CANCEL_FINANCIAL_TITLE": "Financial title cancellation",
3738
3763
  "agro.angular_components.TRANSFER_CREATE_SERVICE_INVOICE": "Service invoice issuance",
3739
3764
  "agro.angular_components.TRANSFER_CANCEL_SERVICE_INVOICE": "Service invoice cancellation",
3740
3765
  "agro.angular_components.REOPEN_INVOICE_FIXATION": "Reopen invoice fixation",
3766
+ "agro.angular_components.CIDASC_INTEGRATION": "Send to Cidasc",
3767
+ "agro.angular_components.CIDASC_CANCELLATION": "Prescription Cancellation",
3768
+ "agro.angular_components.CIDASC_DATA_LOAD_CULTURE": "Cidasc Load - Culture",
3769
+ "agro.angular_components.CIDASC_DATA_LOAD_PEST": "Cidasc Load - Pest",
3770
+ "agro.angular_components.CIDASC_DATA_LOAD_PRODUCT": "Cidasc Load - Product",
3771
+ "agro.angular_components.CIDASC_DATA_LOAD_MEASURE_UNIT": "Cidasc Load - Unit of measure",
3772
+ "agro.angular_components.CIDASC_DATA_LOAD_COMPOSED_MEASURE_UNIT": "Cidasc Load - Measure per hectare",
3773
+ "agro.angular_components.agronomic_prescription_origin_event": "Agronomic Prescription",
3741
3774
  };
3742
3775
 
3743
3776
  const esCO = {
@@ -3763,7 +3796,6 @@ const esCO = {
3763
3796
  "agro.angular_components.change_request_event_summary": "Cambio de \nPesaje",
3764
3797
  "agro.angular_components.ticket_maintenance_header": "Mantenimiento de ticket",
3765
3798
  "agro.angular_components.invoice_creating_event": "Emisión de Factura",
3766
- "agro.angular_components.invoice_close_event": "Cierre de Factura",
3767
3799
  "agro.angular_components.balance_entry_control_event": "Entrada/salida balanza",
3768
3800
  "agro.angular_components.event_origin_label": "Origen del evento",
3769
3801
  "agro.angular_components.event_details_header": "Detalles del Evento",
@@ -3980,13 +4012,20 @@ const esCO = {
3980
4012
  "agro.angular_components.ORIGINATION_CREATE_EFFECTIVE_CONFIRMATION": "Confirmación efectiva",
3981
4013
  "agro.angular_components.ORIGINATION_CREATE_PROVISIONAL_BALANCE": "Saldo provisional",
3982
4014
  "agro.angular_components.CLOSE_INVOICE_TRANSFER": "Cierre de factura",
3983
- "agro.angular_components.INVOICE_CLOSE_INVOICE": "Cierre de factura",
3984
4015
  "agro.angular_components.REOPEN_INVOICE_TRANSFER": "Reapertura de factura",
3985
4016
  "agro.angular_components.TRANSFER_CREATE_FINANCIAL_TITLE": "Creación de título financiero",
3986
4017
  "agro.angular_components.TRANSFER_CANCEL_FINANCIAL_TITLE": "Cancelación de título financiero",
3987
4018
  "agro.angular_components.TRANSFER_CREATE_SERVICE_INVOICE": "Emisión de NF de servicio",
3988
4019
  "agro.angular_components.TRANSFER_CANCEL_SERVICE_INVOICE": "Cancelación de NF de servicio",
3989
4020
  "agro.angular_components.REOPEN_INVOICE_FIXATION": "Reapertura de factura",
4021
+ "agro.angular_components.CIDASC_INTEGRATION": "Envío a Cidasc",
4022
+ "agro.angular_components.CIDASC_CANCELLATION": "Cancelación de Receta",
4023
+ "agro.angular_components.CIDASC_DATA_LOAD_CULTURE": "Carga Cidasc - Cultivo",
4024
+ "agro.angular_components.CIDASC_DATA_LOAD_PEST": "Carga Cidasc - Plaga",
4025
+ "agro.angular_components.CIDASC_DATA_LOAD_PRODUCT": "Carga Cidasc - Producto",
4026
+ "agro.angular_components.CIDASC_DATA_LOAD_MEASURE_UNIT": "Carga Cidasc - Unidad de medida",
4027
+ "agro.angular_components.CIDASC_DATA_LOAD_COMPOSED_MEASURE_UNIT": "Carga Cidasc - Medida por hectárea",
4028
+ "agro.angular_components.agronomic_prescription_origin_event": "Recetario Agronómico",
3990
4029
  };
3991
4030
 
3992
4031
  let LibTranslationService = class LibTranslationService {
@@ -4038,14 +4077,6 @@ LibTranslationService = __decorate([
4038
4077
  })
4039
4078
  ], LibTranslationService);
4040
4079
 
4041
- var NUMBERS;
4042
- (function (NUMBERS) {
4043
- NUMBERS[NUMBERS["ZERO"] = 0] = "ZERO";
4044
- NUMBERS[NUMBERS["TWELVE"] = 12] = "TWELVE";
4045
- NUMBERS[NUMBERS["FIFTEEN"] = 15] = "FIFTEEN";
4046
- NUMBERS[NUMBERS["HUNDRED"] = 100] = "HUNDRED";
4047
- })(NUMBERS || (NUMBERS = {}));
4048
-
4049
4080
  let CancelEventDialogComponent = class CancelEventDialogComponent {
4050
4081
  constructor(formBuilder, config, ref, translate) {
4051
4082
  this.formBuilder = formBuilder;
@@ -4053,13 +4084,13 @@ let CancelEventDialogComponent = class CancelEventDialogComponent {
4053
4084
  this.ref = ref;
4054
4085
  this.translate = translate;
4055
4086
  this.loading = false;
4056
- this.reasonMinLength = NUMBERS.FIFTEEN;
4087
+ this.reasonMinLength = AGRO_NUMBERS.FIFTEEN;
4057
4088
  this.ngUnsubscribe = new Subject();
4058
4089
  this.cpSize = {
4059
4090
  sm: 12,
4060
- md: NUMBERS.TWELVE,
4061
- lg: NUMBERS.TWELVE,
4062
- xl: NUMBERS.TWELVE,
4091
+ md: AGRO_NUMBERS.TWELVE,
4092
+ lg: AGRO_NUMBERS.TWELVE,
4093
+ xl: AGRO_NUMBERS.TWELVE,
4063
4094
  };
4064
4095
  this.priority = ButtonPriority;
4065
4096
  }
@@ -4087,14 +4118,14 @@ let CancelEventDialogComponent = class CancelEventDialogComponent {
4087
4118
  multiple: false,
4088
4119
  required: () => true,
4089
4120
  size: this.cpSize,
4090
- maxLength: NUMBERS.HUNDRED,
4121
+ maxLength: AGRO_NUMBERS.ONE_HUNDRED,
4091
4122
  }),
4092
4123
  ];
4093
4124
  }
4094
4125
  setDataConfigDialog() {
4095
4126
  var _a, _b, _c, _d;
4096
4127
  this.cancelEventDialogConfig = (_b = (_a = this.config.data) === null || _a === void 0 ? void 0 : _a.cancelEventDialogConfig) !== null && _b !== void 0 ? _b : {};
4097
- this.reasonMinLength = (_d = (_c = this.cancelEventDialogConfig) === null || _c === void 0 ? void 0 : _c.reasonMinLength) !== null && _d !== void 0 ? _d : NUMBERS.FIFTEEN;
4128
+ this.reasonMinLength = (_d = (_c = this.cancelEventDialogConfig) === null || _c === void 0 ? void 0 : _c.reasonMinLength) !== null && _d !== void 0 ? _d : AGRO_NUMBERS.FIFTEEN;
4098
4129
  }
4099
4130
  setTranslations() {
4100
4131
  this.translations = {
@@ -4160,7 +4191,6 @@ var EventOperation;
4160
4191
  EventOperation["EFFECTIVE"] = "EFFECTIVE";
4161
4192
  EventOperation["TICKET"] = "TICKET";
4162
4193
  EventOperation["CREATE_INVOICE"] = "CREATE_INVOICE";
4163
- EventOperation["INVOICE_CLOSE_INVOICE"] = "INVOICE_CLOSE_INVOICE";
4164
4194
  EventOperation["EFFECTIVE_CONFIRMATION"] = "EFFECTIVE_CONFIRMATION";
4165
4195
  EventOperation["REMOVE_PROVISIONAL"] = "REMOVE_PROVISIONAL";
4166
4196
  EventOperation["CHANGE_REQUEST"] = "CHANGE_REQUEST";
@@ -4223,11 +4253,6 @@ const eventItem = [
4223
4253
  value: EventOperation.CANCEL_INVOICE,
4224
4254
  subLabelField: InputFields.AGRO_INVOICE_TYPE,
4225
4255
  },
4226
- {
4227
- label: `agro.angular_components.${EventOperation.INVOICE_CLOSE_INVOICE}`,
4228
- value: EventOperation.INVOICE_CLOSE_INVOICE,
4229
- subLabelField: InputFields.AGRO_INVOICE_TYPE,
4230
- },
4231
4256
  { label: `agro.angular_components.${EventOperation.REPROCESS_INVOICE}`, value: EventOperation.REPROCESS_INVOICE },
4232
4257
  { label: `agro.angular_components.${EventOperation.EFFECTIVE_CONFIRMATION}`, value: EventOperation.EFFECTIVE_CONFIRMATION },
4233
4258
  { label: `agro.angular_components.${EventOperation.CHANGE_REQUEST}`, value: EventOperation.CHANGE_REQUEST },
@@ -4333,7 +4358,6 @@ var EventOrigin;
4333
4358
  EventOrigin["TRANSFER"] = "TRANSFER";
4334
4359
  EventOrigin["CHANGE_REQUEST"] = "CHANGE_REQUEST";
4335
4360
  EventOrigin["CREATE_INVOICE"] = "CREATE_INVOICE";
4336
- EventOrigin["CLOSE_INVOICE"] = "CLOSE_INVOICE";
4337
4361
  EventOrigin["FIXATION"] = "FIXATION";
4338
4362
  EventOrigin["CANCEL_FIXATION"] = "CANCEL_FIXATION";
4339
4363
  EventOrigin["TRANSFER_CANCELLATION"] = "TRANSFER_CANCELLATION";
@@ -4936,7 +4960,7 @@ let EventControlBoardComponent = class EventControlBoardComponent {
4936
4960
  return keys.reduce((acc, key) => acc && acc[key], parsedJson);
4937
4961
  }
4938
4962
  catch (error) {
4939
- console.error("Erro ao acessar o objeto pelo path: " + path, error);
4963
+ console.info("Erro ao acessar o objeto pelo path: " + path, error);
4940
4964
  return null;
4941
4965
  }
4942
4966
  }
@@ -5072,7 +5096,6 @@ let EventControlBoardComponent = class EventControlBoardComponent {
5072
5096
  case EventOrigin.TICKET:
5073
5097
  case EventOrigin.INVOICE:
5074
5098
  case EventOrigin.CREATE_INVOICE:
5075
- case EventOrigin.CLOSE_INVOICE:
5076
5099
  this.sidebarLoading = true;
5077
5100
  {
5078
5101
  const param = JSON.parse(this.selectedStep.item.input);
@@ -5220,7 +5243,7 @@ __decorate([
5220
5243
  EventControlBoardComponent = __decorate([
5221
5244
  Component({
5222
5245
  selector: "event-control-board",
5223
- template: "<ng-container *sLoadingState=\"gridLoading\">\r\n <p-panel>\r\n <p-header>\r\n {{ \"agro.angular_components.event_control_header\" | libTranslate }}\r\n </p-header>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12\">\r\n <s-button\r\n id=\"refresh-button\"\r\n [priority]=\"ButtonPriority.Primary\"\r\n iconClass=\"fa fa-refresh\"\r\n [label]=\"'agro.angular_components.refresh' | libTranslate\"\r\n (click)=\"onSearch()\"\r\n >\r\n </s-button>\r\n <s-button\r\n *ngIf=\"standalone && showCancelButton\"\r\n id=\"cancel-button-agro-events-lib\"\r\n iconClass=\"fa fa-times\"\r\n [label]=\"'agro.angular_components.cancel' | libTranslate\"\r\n (click)=\"openCancelModal()\"\r\n >\r\n </s-button>\r\n </div>\r\n </div>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12 ui-md-12\" *ngIf=\"!gridData || gridData?.length === 0\">\r\n <s-empty-state\r\n iconClass=\"fa fa-exclamation-triangle\"\r\n title=\"{{ 'agro.angular_components.nothing_found' | libTranslate }}\"\r\n [showPrimaryAction]=\"false\"\r\n description=\"{{ 'agro.angular_components.table_empty_description' | libTranslate }}\"\r\n >\r\n </s-empty-state>\r\n </div>\r\n <ng-container *ngIf=\"gridData?.length > 0\">\r\n <p-table\r\n stylelass=\"custom-table\"\r\n #eventControlTable\r\n [value]=\"gridDataResolved\"\r\n [columns]=\"gridColumns\"\r\n dataKey=\"id\"\r\n [lazy]=\"true\"\r\n [scrollable]=\"true\"\r\n [resizableColumns]=\"true\"\r\n [paginator]=\"!standalone\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [rows]=\"10\"\r\n [responsive]=\"true\"\r\n (onLazyLoad)=\"onGridChange($event)\"\r\n [sortOrder]=\"getSortOrder()\"\r\n [first]=\"getRowIndex()\"\r\n [lazyLoadOnInit]=\"false\"\r\n sortMode=\"multiple\"\r\n [rows]=\"getPageSize()\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <ng-container *ngIf=\"!standalone\">\r\n <th\r\n *ngFor=\"let col of columns\"\r\n class=\"ui-lg-1 ui-md-1\"\r\n [pSortableColumn]=\"col.field\"\r\n scope=\"col\"\r\n >\r\n <div class=\"senior-header\">\r\n <span class=\"senior-header-title\">{{\r\n col.header\r\n }}</span>\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <th class=\"ui-lg-8 ui-md-7\" scope=\"col\">\r\n {{ \"agro.angular_components.panel_title_events_events\" | libTranslate }}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData>\r\n <tr>\r\n <ng-container *ngIf=\"!standalone\">\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n {{ rowData.e070emp?.nomEmp }}\r\n </td>\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n {{ rowData.e070fil?.nomFil }}\r\n </td>\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n <ng-container [ngSwitch]=\"rowData.eventOrigin\">\r\n <span *ngSwitchCase=\"'BALANCE_ENTRY_CONTROL'\">\r\n {{\r\n \"agro.angular_components.balance_entry_control_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'TICKET'\">\r\n {{\r\n \"agro.angular_components.ticket_maintenance_header\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'TRANSFER'\">\r\n {{\r\n \"agro.angular_components.transfer_origin_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'INVOICE'\">\r\n {{\r\n \"agro.angular_components.invoice_creating_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'CHANGE_REQUEST'\">\r\n {{\r\n \"agro.angular_components.change_request_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'FIXATION'\">\r\n {{\r\n \"agro.angular_components.fixation_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'CANCEL_FIXATION'\">\r\n {{\r\n \"agro.angular_components.cancel_fixation_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n <span *ngSwitchCase=\"'TRANSFER_CANCELLATION'\">\r\n {{\r\n \"agro.angular_components.transfer_cancellation_event\"\r\n | libTranslate\r\n }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <td class=\"ui-lg-1 ui ui-md-1\">\r\n {{ rowData.controlCode || \"\" }}\r\n </td>\r\n </ng-container>\r\n <td class=\"ui-lg-8 ui-md-7\">\r\n <ng-container *ngFor=\"let group of rowData.groups\">\r\n <s-event-steps\r\n [steps]=\"group.steps || []\"\r\n [activeIndex]=\"group.activeIndex\"\r\n (stepSelected)=\"stepSelected($event)\"\r\n >\r\n </s-event-steps>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n *ngIf=\"!standalone\"\r\n pTemplate=\"paginatorright\"\r\n class=\"custom-table\"\r\n >\r\n <span>\r\n {{\r\n \"agro.angular_components.registers_found\"\r\n | libTranslate : { total: gridTotalRecords }\r\n }}\r\n </span>\r\n </ng-template>\r\n </p-table>\r\n </ng-container>\r\n </div>\r\n </p-panel>\r\n</ng-container>\r\n<s-sidebar [visible]=\"showSidebar\" (visibleChange)=\"closeSidebar()\" header=\"{{ 'agro.angular_components.event_details_header' | libTranslate }}\">\r\n <div class=\"ui-fluid\">\r\n <p-fieldset [legend]=\"sidebarTitle\" [toggleable]=\"false\">\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{\r\n \"agro.angular_components.event_origin_label\" | libTranslate\r\n }}</strong></span\r\n >\r\n <ng-container [ngSwitch]=\"selectedStep?.eventType\">\r\n <p *ngSwitchCase=\"'BALANCE_ENTRY_CONTROL'\">\r\n {{ \"agro.angular_components.balance_entry_control_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'TICKET'\">\r\n {{ \"agro.angular_components.ticket_maintenance_header\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'TRANSFER'\">\r\n {{ \"agro.angular_components.transfer_origin_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'INVOICE'\">\r\n {{ \"agro.angular_components.invoice_creating_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'CHANGE_REQUEST'\">\r\n {{ \"agro.angular_components.change_request_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'FIXATION'\">\r\n {{ \"agro.angular_components.fixation_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'CANCEL_FIXATION'\">\r\n {{ \"agro.angular_components.cancel_fixation_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'TRANSFER_CANCELLATION'\">\r\n {{ \"agro.angular_components.transfer_cancellation_event\" | libTranslate }}\r\n </p>\r\n </ng-container>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"producerInvoice?.producerBalanceEntryControl.producer.e001pes.nomPes\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.supplier\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ producerInvoice?.producerBalanceEntryControl.producer.e001pes.nomPes }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"producerInvoice?.producerBalanceEntryControl.ruralEstate.name\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.rural_estate\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ producerInvoice?.producerBalanceEntryControl.ruralEstate.name }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"selectedStep?.controlCode\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.control_code\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ selectedStep?.controlCode }}</p>\r\n </div>\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.status_label\" | libTranslate }}</strong></span\r\n >\r\n <ng-container [ngSwitch]=\"selectedStep?.item.status\">\r\n <p *ngSwitchCase=\"'SUCCESS'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Green\"\r\n text=\"{{\r\n 'agro.angular_components.panel_title_events_completed_successfully'\r\n | libTranslate\r\n }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'PROCESSING'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Orange\"\r\n text=\"{{ 'agro.angular_components.processing' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'FAILED'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Red\"\r\n text=\"{{\r\n 'agro.angular_components.panel_title_events_ended_with_error'\r\n | libTranslate\r\n }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'PENDING'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Gray\"\r\n text=\"{{ 'agro.angular_components.pending' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n </ng-container>\r\n </div>\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{\r\n \"agro.angular_components.last_update_date\" | libTranslate\r\n }}</strong></span\r\n >\r\n <p>{{ selectedStep?.item.lastModifiedDate | date : \"dd/MM/yyyy HH:mm:ss\" }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"selectedStep?.item.status === 'FAILED'\">\r\n <span\r\n ><strong>{{\r\n \"agro.angular_components.event_error_message\" | libTranslate\r\n }}</strong></span\r\n >\r\n <p>{{ selectedStep?.item.message || \"-\" }}</p>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n <s-footer>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12 width-fit\">\r\n <s-button\r\n id=\"sidebar-close-button\"\r\n [priority]=\"ButtonPriority.Primary\"\r\n [label]=\"'agro.angular_components.events_close' | libTranslate\"\r\n [auxiliary]=\"false\"\r\n (click)=\"closeSidebar()\"\r\n >\r\n </s-button>\r\n <s-button\r\n *ngIf=\"showReprocessButton\"\r\n id=\"sidebar-reprocess-button\"\r\n [priority]=\"ButtonPriority.Secondary\"\r\n iconClass=\"fa fa-refresh\"\r\n [label]=\"'agro.angular_components.reprocess_event' | libTranslate\"\r\n [auxiliary]=\"false\"\r\n (click)=\"openModal()\"\r\n >\r\n </s-button>\r\n </div>\r\n </div>\r\n </s-footer>\r\n</s-sidebar>\r\n\r\n<p-dialog [header]=\"'agro.angular_components.event_modal_title' | libTranslate\" [(visible)]=\"displayModal\" [modal]=\"true\" class=\"dialog\">\r\n <div class=\"event-modal-text\">{{ \"agro.angular_components.event_modal\" | libTranslate }}</div>\r\n <p-footer>\r\n <div class=\"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\">\r\n <button\r\n id=\"modal-yes\"\r\n type=\"button\"\r\n pButton\r\n icon=\"fa fa-check\"\r\n (click)=\"confirmModal()\"\r\n label=\"{{ 'agro.angular_components.yes' | libTranslate }}\"\r\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only\"\r\n ></button>\r\n <button\r\n id=\"modal-no\"\r\n type=\"button\"\r\n pButton\r\n icon=\"fa fa-close\"\r\n (click)=\"cancelModal()\"\r\n label=\"{{ 'agro.angular_components.no' | libTranslate }}\"\r\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only\"\r\n ></button>\r\n </div>\r\n </p-footer>\r\n</p-dialog>\r\n",
5246
+ template: "<ng-container *sLoadingState=\"gridLoading\">\r\n <p-panel>\r\n <p-header>\r\n {{ \"agro.angular_components.event_control_header\" | libTranslate }}\r\n </p-header>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12\">\r\n <s-button\r\n id=\"refresh-button\"\r\n [priority]=\"ButtonPriority.Primary\"\r\n iconClass=\"fa fa-refresh\"\r\n [label]=\"'agro.angular_components.refresh' | libTranslate\"\r\n (click)=\"onSearch()\"\r\n >\r\n </s-button>\r\n <s-button\r\n *ngIf=\"standalone && showCancelButton\"\r\n id=\"cancel-button-agro-events-lib\"\r\n iconClass=\"fa fa-times\"\r\n [label]=\"'agro.angular_components.cancel' | libTranslate\"\r\n (click)=\"openCancelModal()\"\r\n >\r\n </s-button>\r\n </div>\r\n </div>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12 ui-md-12\" *ngIf=\"!gridData || gridData?.length === 0\">\r\n <s-empty-state\r\n iconClass=\"fa fa-exclamation-triangle\"\r\n title=\"{{ 'agro.angular_components.nothing_found' | libTranslate }}\"\r\n [showPrimaryAction]=\"false\"\r\n description=\"{{ 'agro.angular_components.table_empty_description' | libTranslate }}\"\r\n >\r\n </s-empty-state>\r\n </div>\r\n <ng-container *ngIf=\"gridData?.length > 0\">\r\n <p-table\r\n stylelass=\"custom-table\"\r\n #eventControlTable\r\n [value]=\"gridDataResolved\"\r\n [columns]=\"gridColumns\"\r\n dataKey=\"id\"\r\n [lazy]=\"true\"\r\n [scrollable]=\"true\"\r\n [resizableColumns]=\"true\"\r\n [paginator]=\"!standalone\"\r\n [totalRecords]=\"gridTotalRecords\"\r\n [rows]=\"10\"\r\n [responsive]=\"true\"\r\n (onLazyLoad)=\"onGridChange($event)\"\r\n [sortOrder]=\"getSortOrder()\"\r\n [first]=\"getRowIndex()\"\r\n [lazyLoadOnInit]=\"false\"\r\n sortMode=\"multiple\"\r\n [rows]=\"getPageSize()\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <ng-container *ngIf=\"!standalone\">\r\n <th *ngFor=\"let col of columns\" class=\"ui-lg-1 ui-md-1\" [pSortableColumn]=\"col.field\" scope=\"col\">\r\n <div class=\"senior-header\">\r\n <span class=\"senior-header-title\">{{ col.header }}</span>\r\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <th class=\"ui-lg-8 ui-md-7\" scope=\"col\">\r\n {{ \"agro.angular_components.panel_title_events_events\" | libTranslate }}\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData>\r\n <tr>\r\n <ng-container *ngIf=\"!standalone\">\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n {{ rowData.e070emp?.nomEmp }}\r\n </td>\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n {{ rowData.e070fil?.nomFil }}\r\n </td>\r\n <td class=\"ui-lg-1 ui-md-1\">\r\n <ng-container [ngSwitch]=\"rowData.eventOrigin\">\r\n <span *ngSwitchCase=\"'BALANCE_ENTRY_CONTROL'\">\r\n {{ \"agro.angular_components.balance_entry_control_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'TICKET'\">\r\n {{ \"agro.angular_components.ticket_maintenance_header\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'TRANSFER'\">\r\n {{ \"agro.angular_components.transfer_origin_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'INVOICE'\">\r\n {{ \"agro.angular_components.invoice_creating_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'CHANGE_REQUEST'\">\r\n {{ \"agro.angular_components.change_request_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'FIXATION'\">\r\n {{ \"agro.angular_components.fixation_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'CANCEL_FIXATION'\">\r\n {{ \"agro.angular_components.cancel_fixation_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'TRANSFER_CANCELLATION'\">\r\n {{ \"agro.angular_components.transfer_cancellation_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'AGRONOMIC_PRESCRIPTION'\">\r\n {{ \"agro.angular_components.agronomic_prescription_origin_event\" | libTranslate }}\r\n </span>\r\n <span *ngSwitchCase=\"'PRESCRIPTION_INTEGRATION_HUB'\">\r\n {{ \"agro.angular_components.agronomic_prescription_origin_event\" | libTranslate }}\r\n </span>\r\n </ng-container>\r\n </td>\r\n <td class=\"ui-lg-1 ui ui-md-1\">\r\n {{ rowData.controlCode || \"\" }}\r\n </td>\r\n </ng-container>\r\n <td class=\"ui-lg-8 ui-md-7\">\r\n <ng-container *ngFor=\"let group of rowData.groups\">\r\n <s-event-steps\r\n [steps]=\"group.steps || []\"\r\n [activeIndex]=\"group.activeIndex\"\r\n (stepSelected)=\"stepSelected($event)\"\r\n >\r\n </s-event-steps>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template *ngIf=\"!standalone\" pTemplate=\"paginatorright\" class=\"custom-table\">\r\n <span>\r\n {{ \"agro.angular_components.registers_found\" | libTranslate: { total: gridTotalRecords } }}\r\n </span>\r\n </ng-template>\r\n </p-table>\r\n </ng-container>\r\n </div>\r\n </p-panel>\r\n</ng-container>\r\n<s-sidebar\r\n [visible]=\"showSidebar\"\r\n (visibleChange)=\"closeSidebar()\"\r\n header=\"{{ 'agro.angular_components.event_details_header' | libTranslate }}\"\r\n>\r\n <div class=\"ui-fluid\">\r\n <p-fieldset [legend]=\"sidebarTitle\" [toggleable]=\"false\">\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.event_origin_label\" | libTranslate }}</strong></span\r\n >\r\n <ng-container [ngSwitch]=\"selectedStep?.eventType\">\r\n <p *ngSwitchCase=\"'BALANCE_ENTRY_CONTROL'\">\r\n {{ \"agro.angular_components.balance_entry_control_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'TICKET'\">\r\n {{ \"agro.angular_components.ticket_maintenance_header\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'TRANSFER'\">\r\n {{ \"agro.angular_components.transfer_origin_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'INVOICE'\">\r\n {{ \"agro.angular_components.invoice_creating_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'CHANGE_REQUEST'\">\r\n {{ \"agro.angular_components.change_request_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'FIXATION'\">\r\n {{ \"agro.angular_components.fixation_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'CANCEL_FIXATION'\">\r\n {{ \"agro.angular_components.cancel_fixation_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'TRANSFER_CANCELLATION'\">\r\n {{ \"agro.angular_components.transfer_cancellation_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'AGRONOMIC_PRESCRIPTION'\">\r\n {{ \"agro.angular_components.agronomic_prescription_origin_event\" | libTranslate }}\r\n </p>\r\n <p *ngSwitchCase=\"'PRESCRIPTION_INTEGRATION_HUB'\">\r\n {{ \"agro.angular_components.agronomic_prescription_origin_event\" | libTranslate }}\r\n </p>\r\n </ng-container>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"producerInvoice?.producerBalanceEntryControl.producer.e001pes.nomPes\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.supplier\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ producerInvoice?.producerBalanceEntryControl.producer.e001pes.nomPes }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"producerInvoice?.producerBalanceEntryControl.ruralEstate.name\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.rural_estate\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ producerInvoice?.producerBalanceEntryControl.ruralEstate.name }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"selectedStep?.controlCode\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.control_code\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ selectedStep?.controlCode }}</p>\r\n </div>\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.status_label\" | libTranslate }}</strong></span\r\n >\r\n <ng-container [ngSwitch]=\"selectedStep?.item.status\">\r\n <p *ngSwitchCase=\"'SUCCESS'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Green\"\r\n text=\"{{ 'agro.angular_components.panel_title_events_completed_successfully' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'PROCESSING'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Orange\"\r\n text=\"{{ 'agro.angular_components.processing' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'FAILED'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Red\"\r\n text=\"{{ 'agro.angular_components.panel_title_events_ended_with_error' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n <p *ngSwitchCase=\"'PENDING'\">\r\n <s-badge\r\n [color]=\"BadgeColors.Gray\"\r\n text=\"{{ 'agro.angular_components.pending' | libTranslate }}\"\r\n [selectable]=\"false\"\r\n >\r\n </s-badge>\r\n </p>\r\n </ng-container>\r\n </div>\r\n <div class=\"ui-g-4\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.last_update_date\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ selectedStep?.item.lastModifiedDate | date: \"dd/MM/yyyy HH:mm:ss\" }}</p>\r\n </div>\r\n <div class=\"ui-g-4\" *ngIf=\"selectedStep?.item.status === 'FAILED'\">\r\n <span\r\n ><strong>{{ \"agro.angular_components.event_error_message\" | libTranslate }}</strong></span\r\n >\r\n <p>{{ selectedStep?.item.message || \"-\" }}</p>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n </div>\r\n <s-footer>\r\n <div class=\"ui-g\">\r\n <div class=\"ui-g-12 width-fit\">\r\n <s-button\r\n id=\"sidebar-close-button\"\r\n [priority]=\"ButtonPriority.Primary\"\r\n [label]=\"'agro.angular_components.events_close' | libTranslate\"\r\n [auxiliary]=\"false\"\r\n (click)=\"closeSidebar()\"\r\n >\r\n </s-button>\r\n <s-button\r\n *ngIf=\"showReprocessButton\"\r\n id=\"sidebar-reprocess-button\"\r\n [priority]=\"ButtonPriority.Secondary\"\r\n iconClass=\"fa fa-refresh\"\r\n [label]=\"'agro.angular_components.reprocess_event' | libTranslate\"\r\n [auxiliary]=\"false\"\r\n (click)=\"openModal()\"\r\n >\r\n </s-button>\r\n </div>\r\n </div>\r\n </s-footer>\r\n</s-sidebar>\r\n\r\n<p-dialog [header]=\"'agro.angular_components.event_modal_title' | libTranslate\" [(visible)]=\"displayModal\" [modal]=\"true\" class=\"dialog\">\r\n <div class=\"event-modal-text\">{{ \"agro.angular_components.event_modal\" | libTranslate }}</div>\r\n <p-footer>\r\n <div class=\"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\">\r\n <button\r\n id=\"modal-yes\"\r\n type=\"button\"\r\n pButton\r\n icon=\"fa fa-check\"\r\n (click)=\"confirmModal()\"\r\n label=\"{{ 'agro.angular_components.yes' | libTranslate }}\"\r\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only\"\r\n ></button>\r\n <button\r\n id=\"modal-no\"\r\n type=\"button\"\r\n pButton\r\n icon=\"fa fa-close\"\r\n (click)=\"cancelModal()\"\r\n label=\"{{ 'agro.angular_components.no' | libTranslate }}\"\r\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only\"\r\n ></button>\r\n </div>\r\n </p-footer>\r\n</p-dialog>\r\n",
5224
5247
  providers: [{ provide: LOCALE_ID, useValue: "pt-BR" }],
5225
5248
  styles: [".frozen{border-left:2px solid #ddd}.dialog{width:\"600px\";height:\"300px\";z-index:100000}:host ::ng-deep #cancel-button-agro-events-lib{background-color:#9c3a3a!important;border-color:#9c3a3a!important}:host ::ng-deep #cancel-button-agro-events-lib:hover{background-color:#642525!important}"]
5226
5249
  })