@senior-gestao-empresarial/erpx-components 4.20.4 → 4.21.1

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.
@@ -29530,6 +29530,7 @@
29530
29530
  return 'cide';
29531
29531
  case exports.EnumTipoTributo.CBS:
29532
29532
  case exports.EnumTipoTributo.CBS_A_APROPRIAR:
29533
+ case exports.EnumTipoTributo.CBS_ALC_ZFM:
29533
29534
  case exports.EnumTipoTributo.CBS_DIFERIDO:
29534
29535
  case exports.EnumTipoTributo.CBS_CREDITO_PRESUMIDO:
29535
29536
  case exports.EnumTipoTributo.CBS_TRIBUTACAO_REGULAR:
@@ -37611,6 +37612,90 @@
37611
37612
  return ErpRateioEditorConverter;
37612
37613
  }());
37613
37614
 
37615
+ var CASAS_DECIMAIS_VALOR = 2;
37616
+ /**
37617
+ * Arredonda um valor para o número de casas decimais informado (default: 2).
37618
+ */
37619
+ function arredondar(valor, casas) {
37620
+ if (casas === void 0) { casas = CASAS_DECIMAIS_VALOR; }
37621
+ return +(valor || 0).toFixed(casas);
37622
+ }
37623
+ /**
37624
+ * Proporcionaliza um valor de acordo com o percentual informado, arredondando para
37625
+ * 2 casas decimais (percentual nulo é tratado como zero).
37626
+ */
37627
+ function proporcionaliza(valorTotal, percentual) {
37628
+ var percentualSeguro = percentual || 0;
37629
+ return arredondar(valorTotal * (percentualSeguro / 100));
37630
+ }
37631
+ /**
37632
+ * Recalcula o valor de cada centro de custo com base no valor da conta financeira.
37633
+ */
37634
+ function atualizaValorCentrosCusto(centrosCusto, valorConta) {
37635
+ if (!centrosCusto) {
37636
+ return;
37637
+ }
37638
+ centrosCusto.forEach(function (centroCusto) {
37639
+ centroCusto.valor = proporcionaliza(valorConta, centroCusto.percentual);
37640
+ });
37641
+ }
37642
+ /**
37643
+ * Distribui o valor total entre os centros de custo de acordo com os percentuais,
37644
+ * corrigindo diferenças de arredondamento no último centro.
37645
+ */
37646
+ function distribuirCentrosCusto(valorTotal, centrosCusto) {
37647
+ if (!centrosCusto || centrosCusto.length === 0) {
37648
+ return centrosCusto;
37649
+ }
37650
+ var valorTotalCentros = 0;
37651
+ var ultimo;
37652
+ var distribuicao = centrosCusto.map(function (centroCusto) {
37653
+ var distribuido = __assign(__assign({}, centroCusto), { valor: proporcionaliza(valorTotal, centroCusto.percentual) });
37654
+ valorTotalCentros += distribuido.valor;
37655
+ ultimo = distribuido;
37656
+ return distribuido;
37657
+ });
37658
+ var diferenca = arredondar(valorTotal - valorTotalCentros);
37659
+ if (ultimo && diferenca !== 0) {
37660
+ ultimo.valor = arredondar(ultimo.valor + diferenca);
37661
+ }
37662
+ return distribuicao;
37663
+ }
37664
+ /**
37665
+ * Constrói uma conta financeira já com o valor proporcionalizado e com os centros de
37666
+ * custo distribuídos.
37667
+ */
37668
+ function distribuirConta(valorTotal, conta) {
37669
+ var distribuida = __assign(__assign({}, conta), { valor: proporcionaliza(valorTotal, conta.percentual) });
37670
+ distribuida.centrosCusto = distribuirCentrosCusto(distribuida.valor, conta.centrosCusto);
37671
+ return distribuida;
37672
+ }
37673
+ /**
37674
+ * Distribui o valor total entre as contas financeiras de acordo com os percentuais,
37675
+ * corrigindo diferenças de arredondamento na última conta e cascateando o recálculo
37676
+ * para os centros de custo.
37677
+ */
37678
+ function atualizaValoresRateioManual(rateiosContasFinanceiras, valorTotal) {
37679
+ if (!rateiosContasFinanceiras || rateiosContasFinanceiras.length === 0) {
37680
+ return rateiosContasFinanceiras;
37681
+ }
37682
+ var valorTotalContasFinanceiras = 0;
37683
+ var ultima;
37684
+ var distribuicaoRateioFinal = rateiosContasFinanceiras.map(function (rateioContaFinanceira) {
37685
+ var distribuicao = distribuirConta(valorTotal, rateioContaFinanceira);
37686
+ valorTotalContasFinanceiras += distribuicao.valor;
37687
+ ultima = distribuicao;
37688
+ return distribuicao;
37689
+ });
37690
+ var diferencaValores = arredondar(valorTotal - valorTotalContasFinanceiras);
37691
+ // Corrige diferença de percentual e arredondamentos para a última conta financeira
37692
+ if (ultima && diferencaValores !== 0) {
37693
+ ultima.valor = arredondar(ultima.valor + diferencaValores);
37694
+ atualizaValorCentrosCusto(ultima.centrosCusto, ultima.valor);
37695
+ }
37696
+ return distribuicaoRateioFinal;
37697
+ }
37698
+
37614
37699
  var fallback = {
37615
37700
  "erpx.tributos.badge_tipo_calculo_imposto_info_sign_text_calculado": "Valor calculado pelo sistema conforme regras fiscais",
37616
37701
  "erpx.tributos.badge_tipo_calculo_imposto_info_sign_text_herdado": "Valor gerado por um processo de origem",
@@ -37679,6 +37764,7 @@
37679
37764
  exports.ErpTributosComponent = ErpTributosComponent;
37680
37765
  exports.ErpTributosModule = ErpTributosModule;
37681
37766
  exports.ExportUtils = ExportUtils;
37767
+ exports.atualizaValoresRateioManual = atualizaValoresRateioManual;
37682
37768
  exports.fallback = fallback;
37683
37769
  exports.isEmpty = isEmpty;
37684
37770
  exports.isNotEmpty = isNotEmpty;