b2m-utils 0.0.306 → 0.0.307

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.
@@ -3,6 +3,7 @@ import { RatecardLaneFeeWithFeeResult } from "../filterSiblingFees";
3
3
  /**
4
4
  * Calcula todas as fees do tipo TOTAL_PERCENTAGE de forma iterativa
5
5
  * para resolver a interdependência entre elas (ex: TRT e GAC)
6
- * @param preCalculatedValues - Opcional: Map de feeId -> valor calculado (para valores alterados manualmente)
6
+ * @param currentValues - Opcional: Map de feeId -> valor atual (para usar valores calculados/editados)
7
+ * @param manuallyEditedFeeIds - Opcional: Set de feeIds que foram editadas manualmente e não devem ser recalculadas
7
8
  */
8
- export declare const calculateTotalPercentageFees: (allFees: RatecardLaneFee[], cte: Cte, allFeesForCalc?: RatecardLaneFee[], preCalculatedValues?: Map<number, number>) => Map<number, RatecardLaneFeeWithFeeResult>;
9
+ export declare const calculateTotalPercentageFees: (allFees: RatecardLaneFee[], cte: Cte, allFeesForCalc?: RatecardLaneFee[], currentValues?: Map<number, number>, manuallyEditedFeeIds?: Set<number>) => Map<number, RatecardLaneFeeWithFeeResult>;
@@ -970,9 +970,10 @@ var calculateFee = function (ratecardLaneFee, cte, allFees, debug, allFeesForCal
970
970
  /**
971
971
  * Calcula todas as fees do tipo TOTAL_PERCENTAGE de forma iterativa
972
972
  * para resolver a interdependência entre elas (ex: TRT e GAC)
973
- * @param preCalculatedValues - Opcional: Map de feeId -> valor calculado (para valores alterados manualmente)
973
+ * @param currentValues - Opcional: Map de feeId -> valor atual (para usar valores calculados/editados)
974
+ * @param manuallyEditedFeeIds - Opcional: Set de feeIds que foram editadas manualmente e não devem ser recalculadas
974
975
  */
975
- var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCalculatedValues) {
976
+ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, currentValues, manuallyEditedFeeIds) {
976
977
  var results = new Map();
977
978
  // Separar fees em dois grupos
978
979
  // IMPORTANTE: ICMS não deve ser calculado aqui, ele tem tratamento especial no calculateFee
@@ -990,13 +991,20 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
990
991
  if (percentageFees.length === 0) {
991
992
  return results;
992
993
  }
994
+ // Calcular base das fees não-percentuais
995
+ // Se temos currentValues, usar eles; senão calcular normalmente
993
996
  var baseNonPercentage = 0;
994
- // Se temos valores pré-calculados, usar eles ao invés de recalcular
995
- if (preCalculatedValues) {
997
+ if (currentValues) {
998
+ // Usar valores atuais das fees não-percentuais
996
999
  baseNonPercentage = nonPercentageFees.reduce(function (sum, fee) {
997
1000
  var _a;
998
- var value = ((_a = fee.fee) === null || _a === void 0 ? void 0 : _a.id) ? preCalculatedValues.get(fee.fee.id) : undefined;
999
- return sum + (value !== undefined ? value : 0);
1001
+ var value = ((_a = fee.fee) === null || _a === void 0 ? void 0 : _a.id) ? currentValues.get(fee.fee.id) : undefined;
1002
+ if (value !== undefined) {
1003
+ return sum + value;
1004
+ }
1005
+ // Se não tem valor atual, calcular
1006
+ var calculated = calculateFee(fee, cte, allFees, false, allFeesForCalc);
1007
+ return sum + ((calculated === null || calculated === void 0 ? void 0 : calculated.totalToCalc) || 0);
1000
1008
  }, 0);
1001
1009
  }
1002
1010
  else {
@@ -1009,23 +1017,21 @@ var calculateTotalPercentageFees = function (allFees, cte, allFeesForCalc, preCa
1009
1017
  // Calcular fees percentuais iterativamente até convergir
1010
1018
  var maxIterations = 10;
1011
1019
  var tolerance = 0.01; // Tolerância de 1 centavo
1012
- // Inicializar com valores zerados ou pré-calculados
1020
+ // Inicializar com valores atuais ou zerados
1013
1021
  var previousValues = new Map();
1014
1022
  percentageFees.forEach(function (pf) {
1015
- // Se existe valor pré-calculado (editado manualmente), usar ele
1016
- var preCalcValue = preCalculatedValues === null || preCalculatedValues === void 0 ? void 0 : preCalculatedValues.get(pf.fee.id);
1017
- previousValues.set(pf.fee.id, preCalcValue !== undefined ? preCalcValue : 0);
1023
+ var currentValue = currentValues === null || currentValues === void 0 ? void 0 : currentValues.get(pf.fee.id);
1024
+ previousValues.set(pf.fee.id, currentValue !== undefined ? currentValue : 0);
1018
1025
  });
1019
1026
  var _loop_1 = function (iteration) {
1020
1027
  // Calcular cada fee percentual com base nos valores atuais das outras
1021
1028
  percentageFees.forEach(function (pf) {
1022
- // Se esta fee tem valor pré-calculado (foi editada manualmente), não recalcular
1023
- var preCalcValue = preCalculatedValues === null || preCalculatedValues === void 0 ? void 0 : preCalculatedValues.get(pf.fee.id);
1024
- if (preCalcValue !== undefined) {
1025
- // Manter o valor editado manualmente
1026
- previousValues.set(pf.fee.id, preCalcValue);
1029
+ // Se esta fee foi editada manualmente, não recalcular
1030
+ if (manuallyEditedFeeIds === null || manuallyEditedFeeIds === void 0 ? void 0 : manuallyEditedFeeIds.has(pf.fee.id)) {
1031
+ var manualValue = (currentValues === null || currentValues === void 0 ? void 0 : currentValues.get(pf.fee.id)) || 0;
1032
+ previousValues.set(pf.fee.id, manualValue);
1027
1033
  // Armazenar resultado com valor editado
1028
- results.set(pf.fee.id, __assign(__assign({}, pf), { totalFee: preCalcValue, totalToCalc: preCalcValue, resultFee: "".concat(convertNumberToCurrency(preCalcValue, 'pt-br'), " (editado manualmente)") }));
1034
+ results.set(pf.fee.id, __assign(__assign({}, pf), { totalFee: manualValue, totalToCalc: manualValue, resultFee: "".concat(convertNumberToCurrency(manualValue, 'pt-br'), " (editado manualmente)") }));
1029
1035
  return;
1030
1036
  }
1031
1037
  // Calcular base: fees não-percentuais + outras fees percentuais (exceto ela mesma)
Binary file