@senior-gestao-empresarial/erpx-components 4.10.0 → 4.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-gestao-empresarial-erpx-components.umd.js +109 -53
- package/bundles/senior-gestao-empresarial-erpx-components.umd.js.map +1 -1
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js +1 -1
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js.map +1 -1
- package/components/rateio-editor/erp-rateio-editor.component.d.ts +31 -9
- package/esm2015/components/rateio-editor/erp-rateio-editor.component.js +90 -48
- package/esm5/components/rateio-editor/erp-rateio-editor.component.js +110 -54
- package/fesm2015/senior-gestao-empresarial-erpx-components.js +89 -47
- package/fesm2015/senior-gestao-empresarial-erpx-components.js.map +1 -1
- package/fesm5/senior-gestao-empresarial-erpx-components.js +109 -53
- package/fesm5/senior-gestao-empresarial-erpx-components.js.map +1 -1
- package/package.json +1 -1
- package/senior-gestao-empresarial-erpx-components.metadata.json +1 -1
|
@@ -33403,10 +33403,6 @@
|
|
|
33403
33403
|
this.editingCCContaIndex = null;
|
|
33404
33404
|
this.editingCCIndex = null;
|
|
33405
33405
|
this.ngUnsubscribe = new rxjs.Subject();
|
|
33406
|
-
/** Cache de opções de menu por conta (referência estável evita loop de change detection). */
|
|
33407
|
-
this.contaMenuOptionsCache = new Map();
|
|
33408
|
-
/** Cache de opções de menu por centro de custo (referência estável). */
|
|
33409
|
-
this.ccMenuOptionsCache = new Map();
|
|
33410
33406
|
this.formGroup = this.fb.group({
|
|
33411
33407
|
contas: this.fb.array([])
|
|
33412
33408
|
});
|
|
@@ -33431,6 +33427,20 @@
|
|
|
33431
33427
|
enumerable: true,
|
|
33432
33428
|
configurable: true
|
|
33433
33429
|
});
|
|
33430
|
+
Object.defineProperty(ErpRateioEditorComponent.prototype, "requiresCentroCusto", {
|
|
33431
|
+
/**
|
|
33432
|
+
* Indica se o critério de rateio exige distribuição por centro de custo.
|
|
33433
|
+
* O critério 'V5' (Nenhum) não distribui por C. Custos; os demais exigem
|
|
33434
|
+
* ao menos um centro de custo por conta financeira.
|
|
33435
|
+
*/
|
|
33436
|
+
get: function () {
|
|
33437
|
+
var _a, _b;
|
|
33438
|
+
var criterio = (_b = (_a = this.loadedContext) === null || _a === void 0 ? void 0 : _a.criRat) !== null && _b !== void 0 ? _b : this.criRat;
|
|
33439
|
+
return criterio !== ErpRateioEditorComponent_1.CRITERIO_SEM_CENTRO_CUSTO;
|
|
33440
|
+
},
|
|
33441
|
+
enumerable: true,
|
|
33442
|
+
configurable: true
|
|
33443
|
+
});
|
|
33434
33444
|
Object.defineProperty(ErpRateioEditorComponent.prototype, "valorBase", {
|
|
33435
33445
|
get: function () {
|
|
33436
33446
|
var _a, _b;
|
|
@@ -33457,6 +33467,42 @@
|
|
|
33457
33467
|
enumerable: true,
|
|
33458
33468
|
configurable: true
|
|
33459
33469
|
});
|
|
33470
|
+
Object.defineProperty(ErpRateioEditorComponent.prototype, "valorRestanteDisplay", {
|
|
33471
|
+
/**
|
|
33472
|
+
* Valor restante a ser exibido nos cards de resumo.
|
|
33473
|
+
* Quando o critério exige centro de custo, considera o total já distribuído
|
|
33474
|
+
* nos CCs de todas as contas em vez do total das contas financeiras.
|
|
33475
|
+
* Assim o card reflete a distribuição real ponta-a-ponta.
|
|
33476
|
+
*/
|
|
33477
|
+
get: function () {
|
|
33478
|
+
var _a;
|
|
33479
|
+
if (!this.requiresCentroCusto) {
|
|
33480
|
+
return this.valorRestante;
|
|
33481
|
+
}
|
|
33482
|
+
var totalCC = this.contasDataSource.reduce(function (acc, conta) { return acc + (conta.rateiosCCusto || []).reduce(function (ccAcc, cc) { return ccAcc + (cc.valor || 0); }, 0); }, 0);
|
|
33483
|
+
return +(this.valorBase - totalCC).toFixed((_a = this.config.currencyScale) !== null && _a !== void 0 ? _a : 2);
|
|
33484
|
+
},
|
|
33485
|
+
enumerable: true,
|
|
33486
|
+
configurable: true
|
|
33487
|
+
});
|
|
33488
|
+
Object.defineProperty(ErpRateioEditorComponent.prototype, "percentualRestanteDisplay", {
|
|
33489
|
+
/**
|
|
33490
|
+
* Percentual restante a ser exibido nos cards de resumo.
|
|
33491
|
+
* Derivado de `valorRestanteDisplay` para manter consistência com o valor.
|
|
33492
|
+
*/
|
|
33493
|
+
get: function () {
|
|
33494
|
+
var _a;
|
|
33495
|
+
if (!this.requiresCentroCusto) {
|
|
33496
|
+
return this.percentualRestante;
|
|
33497
|
+
}
|
|
33498
|
+
if (!this.valorBase) {
|
|
33499
|
+
return 0;
|
|
33500
|
+
}
|
|
33501
|
+
return +(this.valorRestanteDisplay / this.valorBase * 100).toFixed((_a = this.config.percentageScale) !== null && _a !== void 0 ? _a : 4);
|
|
33502
|
+
},
|
|
33503
|
+
enumerable: true,
|
|
33504
|
+
configurable: true
|
|
33505
|
+
});
|
|
33460
33506
|
Object.defineProperty(ErpRateioEditorComponent.prototype, "numberFormatOptions", {
|
|
33461
33507
|
get: function () {
|
|
33462
33508
|
var _a, _b;
|
|
@@ -33536,6 +33582,16 @@
|
|
|
33536
33582
|
if (this.effectiveReadOnly) {
|
|
33537
33583
|
return;
|
|
33538
33584
|
}
|
|
33585
|
+
if (this.requiresCentroCusto && this.hasContaSemCentroCusto()) {
|
|
33586
|
+
var message = this.translate.instant('erpx.rateio_editor.erro_centro_custo_obrigatorio');
|
|
33587
|
+
this.messageService.add({
|
|
33588
|
+
severity: 'error',
|
|
33589
|
+
summary: this.translate.instant('erpx.rateio_editor.erro_titulo'),
|
|
33590
|
+
detail: message
|
|
33591
|
+
});
|
|
33592
|
+
this.error.emit({ operacao: 'save', message: message });
|
|
33593
|
+
return;
|
|
33594
|
+
}
|
|
33539
33595
|
if (!this.isDistribuicaoCompleta()) {
|
|
33540
33596
|
var message = this.translate.instant('erpx.rateio_editor.erro_distribuicao_incompleta');
|
|
33541
33597
|
this.messageService.add({
|
|
@@ -33659,11 +33715,14 @@
|
|
|
33659
33715
|
var remainingPct = this.editingContaIndex != null
|
|
33660
33716
|
? this.percentualRestante + this.contasDataSource[this.editingContaIndex].percentual
|
|
33661
33717
|
: this.percentualRestante;
|
|
33718
|
+
// Usa o valor restante real em vez de recalcular via percentual, evitando
|
|
33719
|
+
// diferenças de arredondamento acumuladas nas entradas anteriores.
|
|
33720
|
+
var remainingValor = this.editingContaIndex != null
|
|
33721
|
+
? +(this.valorRestante + this.contasDataSource[this.editingContaIndex].valorRateadoConta).toFixed((_a = this.config.currencyScale) !== null && _a !== void 0 ? _a : 2)
|
|
33722
|
+
: this.valorRestante;
|
|
33662
33723
|
var contaValue = null;
|
|
33663
33724
|
var percentualValue = remainingPct > 0 ? remainingPct : null;
|
|
33664
|
-
var valorValue = percentualValue != null
|
|
33665
|
-
? +((percentualValue / 100) * this.valorBase).toFixed((_a = this.config.currencyScale) !== null && _a !== void 0 ? _a : 2)
|
|
33666
|
-
: null;
|
|
33725
|
+
var valorValue = percentualValue != null ? remainingValor : null;
|
|
33667
33726
|
if (this.editingContaIndex != null) {
|
|
33668
33727
|
var conta = this.contasDataSource[this.editingContaIndex];
|
|
33669
33728
|
contaValue = { id: conta.idContaFinanceira, label: conta.contaFinanceira };
|
|
@@ -33738,25 +33797,32 @@
|
|
|
33738
33797
|
this.editingCCIndex = editCCIndex != null ? editCCIndex : null;
|
|
33739
33798
|
var conta = this.contasDataSource[contaIndex];
|
|
33740
33799
|
var ccList = conta.rateiosCCusto || [];
|
|
33741
|
-
var somaCC = ccList.reduce(function (acc, cc, i) { return acc + (i === _this.editingCCIndex ? 0 : (cc.percentual || 0)); }, 0);
|
|
33742
|
-
var remainingPct = +(100 - somaCC).toFixed((_a = this.config.percentageScale) !== null && _a !== void 0 ? _a : 4);
|
|
33743
33800
|
var valorBaseCC = conta.valorRateadoConta || 0;
|
|
33801
|
+
// Calcula o restante excluindo o item em edição (para que edição possa manter o próprio valor)
|
|
33802
|
+
var somaCCPct = ccList.reduce(function (acc, cc, i) { return acc + (i === _this.editingCCIndex ? 0 : (cc.percentual || 0)); }, 0);
|
|
33803
|
+
var somaCCValor = ccList.reduce(function (acc, cc, i) { return acc + (i === _this.editingCCIndex ? 0 : (cc.valor || 0)); }, 0);
|
|
33804
|
+
var remainingPct = +(100 - somaCCPct).toFixed((_a = this.config.percentageScale) !== null && _a !== void 0 ? _a : 4);
|
|
33805
|
+
var remainingValor = +(valorBaseCC - somaCCValor).toFixed((_b = this.config.currencyScale) !== null && _b !== void 0 ? _b : 2);
|
|
33744
33806
|
var ccValue = null;
|
|
33745
33807
|
var percentualValue = remainingPct > 0 ? remainingPct : null;
|
|
33746
|
-
|
|
33747
|
-
|
|
33748
|
-
|
|
33808
|
+
// Usa o valor restante real (já calculado acima) em vez de recalcular via percentual,
|
|
33809
|
+
// evitando diferenças de arredondamento acumuladas nos CCs anteriores.
|
|
33810
|
+
var valorValue = percentualValue != null ? remainingValor : null;
|
|
33749
33811
|
if (this.editingCCIndex != null) {
|
|
33750
33812
|
var cc = ccList[this.editingCCIndex];
|
|
33751
33813
|
ccValue = { id: cc.idCentroCusto, label: cc.descCCusto || cc.idCentroCusto };
|
|
33752
33814
|
percentualValue = cc.percentual;
|
|
33753
33815
|
valorValue = cc.valor;
|
|
33754
33816
|
}
|
|
33817
|
+
// maxPct: percentual máximo que este CC pode ter (não pode ultrapassar o restante da conta)
|
|
33818
|
+
var maxPct = remainingPct;
|
|
33819
|
+
// maxValor: valor máximo que este CC pode ter (não pode ultrapassar o restante em dinheiro)
|
|
33820
|
+
var maxValor = remainingValor;
|
|
33755
33821
|
this.selectedCC = ccValue;
|
|
33756
33822
|
this.ccDialogFormGroup = this.fb.group({
|
|
33757
33823
|
centroCusto: [{ value: ccValue, disabled: this.editingCCIndex != null }, forms.Validators.required],
|
|
33758
|
-
percentual: [{ value: percentualValue, disabled: false }, forms.Validators.required],
|
|
33759
|
-
valor: [{ value: valorValue, disabled: false }, [forms.Validators.required, forms.Validators.max(
|
|
33824
|
+
percentual: [{ value: percentualValue, disabled: false }, [forms.Validators.required, forms.Validators.max(maxPct)]],
|
|
33825
|
+
valor: [{ value: valorValue, disabled: false }, [forms.Validators.required, forms.Validators.max(maxValor)]]
|
|
33760
33826
|
});
|
|
33761
33827
|
this.ccDialogFormGroup.get('centroCusto').valueChanges
|
|
33762
33828
|
.pipe(operators.takeUntil(this.ngUnsubscribe))
|
|
@@ -33851,34 +33917,6 @@
|
|
|
33851
33917
|
this.contasDataSource = __spread(this.contasDataSource);
|
|
33852
33918
|
this.emitChange();
|
|
33853
33919
|
};
|
|
33854
|
-
ErpRateioEditorComponent.prototype.getMenuOptionsPerRow = function (rowData) {
|
|
33855
|
-
var _this = this;
|
|
33856
|
-
var id = rowData.idContaFinanceira;
|
|
33857
|
-
var options = this.contaMenuOptionsCache.get(id);
|
|
33858
|
-
if (!options) {
|
|
33859
|
-
options = [
|
|
33860
|
-
{ label: this.translate.instant('erpx.rateio_editor.editar'), command: function () { return _this.openContaDialog(_this.getContaIndex(rowData)); } },
|
|
33861
|
-
{ label: this.translate.instant('erpx.rateio_editor.adicionar_centro_custo'), command: function () { return _this.openCCDialog(_this.getContaIndex(rowData)); } },
|
|
33862
|
-
{ label: this.translate.instant('erpx.rateio_editor.remover_centro_custo'), command: function () { return _this.onDeleteSelectedCC(rowData); } },
|
|
33863
|
-
{ label: this.translate.instant('erpx.rateio_editor.excluir'), command: function () { return _this.removerConta(_this.getContaIndex(rowData)); } }
|
|
33864
|
-
];
|
|
33865
|
-
this.contaMenuOptionsCache.set(id, options);
|
|
33866
|
-
}
|
|
33867
|
-
return options;
|
|
33868
|
-
};
|
|
33869
|
-
ErpRateioEditorComponent.prototype.getCCMenuOptions = function (conta, cc) {
|
|
33870
|
-
var _this = this;
|
|
33871
|
-
var key = conta.idContaFinanceira + "::" + cc.idCentroCusto;
|
|
33872
|
-
var options = this.ccMenuOptionsCache.get(key);
|
|
33873
|
-
if (!options) {
|
|
33874
|
-
options = [
|
|
33875
|
-
{ label: this.translate.instant('erpx.rateio_editor.editar'), command: function () { return _this.openCCDialog(_this.getContaIndex(conta), _this.getCCIndex(conta, cc)); } },
|
|
33876
|
-
{ label: this.translate.instant('erpx.rateio_editor.excluir'), command: function () { return _this.removerCentroCusto(_this.getContaIndex(conta), _this.getCCIndex(conta, cc)); } }
|
|
33877
|
-
];
|
|
33878
|
-
this.ccMenuOptionsCache.set(key, options);
|
|
33879
|
-
}
|
|
33880
|
-
return options;
|
|
33881
|
-
};
|
|
33882
33920
|
ErpRateioEditorComponent.prototype.getContaIndex = function (rowData) {
|
|
33883
33921
|
return this.contasDataSource.indexOf(rowData);
|
|
33884
33922
|
};
|
|
@@ -33915,26 +33953,41 @@
|
|
|
33915
33953
|
var _this = this;
|
|
33916
33954
|
this.contasDataSource = __spread(rateios);
|
|
33917
33955
|
this.ccSelection = {};
|
|
33918
|
-
this.contaMenuOptionsCache.clear();
|
|
33919
|
-
this.ccMenuOptionsCache.clear();
|
|
33920
33956
|
this.contasDataSource.forEach(function (conta) {
|
|
33921
33957
|
_this.ccSelection[conta.idContaFinanceira] = [];
|
|
33922
33958
|
});
|
|
33923
33959
|
};
|
|
33924
|
-
|
|
33960
|
+
Object.defineProperty(ErpRateioEditorComponent.prototype, "distribuicaoCompleta", {
|
|
33961
|
+
/**
|
|
33962
|
+
* Distribuição completa: restantes globais e de cada conta iguais a zero.
|
|
33963
|
+
* Exposto publicamente para que o template possa reagir ao estado real de
|
|
33964
|
+
* completude (contas + centros de custo).
|
|
33965
|
+
*/
|
|
33966
|
+
get: function () {
|
|
33967
|
+
var _this = this;
|
|
33968
|
+
if (this.percentualRestante !== 0 || this.valorRestante !== 0) {
|
|
33969
|
+
return false;
|
|
33970
|
+
}
|
|
33971
|
+
return this.contasDataSource.every(function (conta) { return _this.isContaCCCompleta(conta); });
|
|
33972
|
+
},
|
|
33973
|
+
enumerable: true,
|
|
33974
|
+
configurable: true
|
|
33975
|
+
});
|
|
33976
|
+
/** @deprecated Usar o getter `distribuicaoCompleta`. Mantido para compatibilidade interna. */
|
|
33925
33977
|
ErpRateioEditorComponent.prototype.isDistribuicaoCompleta = function () {
|
|
33926
|
-
|
|
33927
|
-
|
|
33928
|
-
|
|
33929
|
-
|
|
33930
|
-
return this.contasDataSource.
|
|
33978
|
+
return this.distribuicaoCompleta;
|
|
33979
|
+
};
|
|
33980
|
+
/** Indica se há ao menos uma conta financeira sem nenhum centro de custo vinculado. */
|
|
33981
|
+
ErpRateioEditorComponent.prototype.hasContaSemCentroCusto = function () {
|
|
33982
|
+
return this.contasDataSource.some(function (conta) { return (conta.rateiosCCusto || []).length === 0; });
|
|
33931
33983
|
};
|
|
33932
33984
|
/** Restante de % e de valor dos centros de custo de uma conta igual a zero. */
|
|
33933
33985
|
ErpRateioEditorComponent.prototype.isContaCCCompleta = function (conta) {
|
|
33934
33986
|
var _a, _b;
|
|
33935
33987
|
var ccs = conta.rateiosCCusto || [];
|
|
33936
33988
|
if (ccs.length === 0) {
|
|
33937
|
-
|
|
33989
|
+
// Sem centro de custo só é válido quando o critério não exige rateio por C. Custos.
|
|
33990
|
+
return !this.requiresCentroCusto;
|
|
33938
33991
|
}
|
|
33939
33992
|
var somaPct = ccs.reduce(function (acc, cc) { return acc + (cc.percentual || 0); }, 0);
|
|
33940
33993
|
var somaValor = ccs.reduce(function (acc, cc) { return acc + (cc.valor || 0); }, 0);
|
|
@@ -34059,13 +34112,15 @@
|
|
|
34059
34112
|
ErpRateioEditorComponent.prototype.emitChange = function () {
|
|
34060
34113
|
this.change.emit({
|
|
34061
34114
|
isDirty: true,
|
|
34062
|
-
isValid: this.
|
|
34115
|
+
isValid: this.isDistribuicaoCompleta(),
|
|
34063
34116
|
rateios: this.contasDataSource
|
|
34064
34117
|
});
|
|
34065
34118
|
};
|
|
34066
34119
|
var ErpRateioEditorComponent_1;
|
|
34067
34120
|
/** Valor de anaSin que indica registro sintético (não analítico). */
|
|
34068
34121
|
ErpRateioEditorComponent.ANA_SIN_SINTETICO = 'VS';
|
|
34122
|
+
/** Critério de rateio que não distribui por centro de custo (Nenhum). */
|
|
34123
|
+
ErpRateioEditorComponent.CRITERIO_SEM_CENTRO_CUSTO = 'V5';
|
|
34069
34124
|
ErpRateioEditorComponent.ctorParameters = function () { return [
|
|
34070
34125
|
{ type: forms.FormBuilder },
|
|
34071
34126
|
{ type: ErpRateioEditorService },
|
|
@@ -34149,7 +34204,8 @@
|
|
|
34149
34204
|
ErpRateioEditorComponent = ErpRateioEditorComponent_1 = __decorate([
|
|
34150
34205
|
core.Component({
|
|
34151
34206
|
selector: 'erp-rateio-editor',
|
|
34152
|
-
template: "<s-loading-state [loading]=\"loading\" [blockWindow]=\"true\">\n <!-- Se\u00E7\u00E3o 1: Informa\u00E7\u00F5es do movimento -->\n <div class=\"sds-section-title\" *ngIf=\"isReady\">\n {{ 'erpx.rateio_editor.titulo' | translate }}\n </div>\n\n <div class=\"ui-g custom-stats\" *ngIf=\"isReady\">\n <div class=\"ui-sm-12 ui-md-4\">\n <s-stats-card\n [animateNumbers]=\"true\"\n color=\"#0C9348\"\n [lightMode]=\"true\"\n [lightVersion]=\"true\"\n iconClass=\"far fa-dollar-sign\"\n [label]=\"'erpx.rateio_editor.valor_base' | translate\"\n [value]=\"valorBase | numeric:numberFormatOptions | async\"\n ></s-stats-card>\n </div>\n <div class=\"ui-sm-12 ui-md-4\">\n <s-stats-card\n [animateNumbers]=\"true\"\n color=\"#428BCA\"\n [lightMode]=\"true\"\n [lightVersion]=\"true\"\n iconClass=\"far fa-percent\"\n [label]=\"'erpx.rateio_editor.percentual_restante' | translate\"\n [value]=\"percentualRestante + '%'\"\n ></s-stats-card>\n </div>\n <div class=\"ui-sm-12 ui-md-4\">\n <s-stats-card\n [animateNumbers]=\"true\"\n [color]=\"valorRestante === 0 ? '#0C9348' : '#C13018'\"\n [lightMode]=\"true\"\n [lightVersion]=\"true\"\n iconClass=\"far fa-dollar-sign\"\n [label]=\"'erpx.rateio_editor.valor_restante' | translate\"\n [value]=\"valorRestante | numeric:numberFormatOptions | async\"\n ></s-stats-card>\n </div>\n </div>\n\n <!-- Se\u00E7\u00E3o 2: Tabela de rateios -->\n <div class=\"sds-section-title\" *ngIf=\"isReady\">\n {{ 'erpx.rateio_editor.lista_rateios' | translate }}\n </div>\n\n <s-empty-state\n *ngIf=\"isReady && contasDataSource?.length === 0\"\n iconClass=\"far fa-dollar-sign\"\n [title]=\"'erpx.rateio_editor.sem_rateios_titulo' | translate\"\n [description]=\"'erpx.rateio_editor.sem_rateios_descricao' | translate\"\n ></s-empty-state>\n\n <div class=\"ui-g\" *ngIf=\"isReady && contasDataSource?.length > 0\">\n <div class=\"ui-g-12\" *ngIf=\"!effectiveReadOnly\">\n <s-button\n [label]=\"'erpx.rateio_editor.adicionar_conta' | translate\"\n iconClass=\"fa fa-plus\"\n (onClick)=\"openContaDialog()\"\n ></s-button>\n <s-button\n *ngIf=\"showSugestaoButton\"\n [label]=\"'erpx.rateio_editor.sugerir_rateio' | translate\"\n [priority]=\"ButtonPriority.Secondary\"\n iconClass=\"fa fa-magic\"\n (onClick)=\"onSugerir()\"\n ></s-button>\n <s-button\n [label]=\"'erpx.rateio_editor.remover_conta' | translate\"\n [priority]=\"ButtonPriority.Secondary\"\n (onClick)=\"onDeleteSelected()\"\n [disabled]=\"!selection.length\"\n ></s-button>\n </div>\n <div class=\"ui-g-12\">\n <p-table\n #tableRateio\n [value]=\"contasDataSource\"\n [columns]=\"gridColumns\"\n dataKey=\"idContaFinanceira\"\n [resizableColumns]=\"true\"\n [totalRecords]=\"contasDataSource.length\"\n [(selection)]=\"selection\"\n [paginator]=\"false\"\n [rows]=\"10\"\n >\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th scope=\"col\" style=\"width: 3em\"></th>\n <th scope=\"col\" class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableHeaderCheckbox *ngIf=\"!effectiveReadOnly\"></p-tableHeaderCheckbox>\n </th>\n <th *ngFor=\"let col of columns\" scope=\"col\" pResizableColumn>\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n </div>\n </th>\n <th scope=\"col\" *ngIf=\"!effectiveReadOnly\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ 'erpx.rateio_editor.acoes' | translate }}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td style=\"width: 3em; text-align: center\">\n <a *ngIf=\"rowData.rateiosCCusto?.length\" [pRowToggler]=\"rowData\" role=\"button\" tabindex=\"0\">\n <i [class]=\"expanded ? 'fa fa-minus' : 'fa fa-plus'\"></i>\n </a>\n </td>\n <td class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableCheckbox *ngIf=\"!effectiveReadOnly\" [value]=\"rowData\"></p-tableCheckbox>\n </td>\n <td>{{ rowData.contaFinanceira || rowData.idContaFinanceira }}</td>\n <td style=\"text-align: right\">{{ rowData.percentual }}</td>\n <td style=\"text-align: right\">{{ rowData.valorRateadoConta | numeric:numberFormatOptions | async }}</td>\n <td *ngIf=\"!effectiveReadOnly\">\n <s-button\n [auxiliary]=\"true\"\n [priority]=\"ButtonPriority.Default\"\n [size]=\"ButtonSize.Small\"\n [label]=\"'erpx.rateio_editor.acoes' | translate\"\n [menuOptions]=\"getMenuOptionsPerRow(rowData)\"\n ></s-button>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData let-rowIndex=\"rowIndex\">\n <tr>\n <td [attr.colspan]=\"effectiveReadOnly ? gridColumns.length + 2 : gridColumns.length + 3\">\n <div class=\"ui-g\" style=\"padding: 8px 16px\">\n <p-table\n [value]=\"rowData.rateiosCCusto\"\n dataKey=\"idCentroCusto\"\n [(selection)]=\"ccSelection[rowData.idContaFinanceira]\"\n [responsive]=\"true\"\n >\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"col\" class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableHeaderCheckbox *ngIf=\"!effectiveReadOnly\"></p-tableHeaderCheckbox>\n </th>\n <th scope=\"col\">{{ 'erpx.rateio_editor.centro_custo' | translate }}</th>\n <th scope=\"col\">{{ 'erpx.rateio_editor.percentual' | translate }}</th>\n <th scope=\"col\">{{ 'erpx.rateio_editor.valor' | translate }}</th>\n <th scope=\"col\" *ngIf=\"!effectiveReadOnly\">{{ 'erpx.rateio_editor.acoes' | translate }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-cc let-ccIndex=\"rowIndex\">\n <tr>\n <td class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableCheckbox *ngIf=\"!effectiveReadOnly\" [value]=\"cc\"></p-tableCheckbox>\n </td>\n <td>{{ cc.descCCusto || cc.idCentroCusto }}</td>\n <td style=\"text-align: right\">{{ cc.percentual }}</td>\n <td style=\"text-align: right\">{{ cc.valor | numeric:numberFormatOptions | async }}</td>\n <td *ngIf=\"!effectiveReadOnly\">\n <s-button\n [auxiliary]=\"true\"\n [priority]=\"ButtonPriority.Default\"\n [size]=\"ButtonSize.Small\"\n [label]=\"'erpx.rateio_editor.acoes' | translate\"\n [menuOptions]=\"getCCMenuOptions(rowData, cc)\"\n ></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"effectiveReadOnly ? 3 : 5\">\n {{ 'erpx.rateio_editor.sem_centros_custo' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n <!-- Bot\u00F5es de a\u00E7\u00E3o -->\n <div *ngIf=\"isReady\" class=\"ui-g rateio-editor-actions\">\n <div class=\"ui-g-12\">\n <div *ngIf=\"!effectiveReadOnly && contasDataSource?.length === 0\" style=\"margin-bottom: 8px\">\n <s-button\n [label]=\"'erpx.rateio_editor.adicionar_conta' | translate\"\n iconClass=\"fa fa-plus\"\n (onClick)=\"openContaDialog()\"\n ></s-button>\n <s-button\n *ngIf=\"showSugestaoButton\"\n [label]=\"'erpx.rateio_editor.sugerir_rateio' | translate\"\n [priority]=\"ButtonPriority.Secondary\"\n iconClass=\"fa fa-magic\"\n (onClick)=\"onSugerir()\"\n ></s-button>\n </div>\n <s-button\n *ngIf=\"!effectiveReadOnly && !isStandalone\"\n priority=\"primary\"\n iconClass=\"fa fa-check\"\n [label]=\"'erpx.rateio_editor.salvar' | translate\"\n (onClick)=\"onSalvar()\"\n ></s-button>\n </div>\n </div>\n</s-loading-state>\n\n<!-- Modal: Adicionar/Editar Conta Financeira -->\n<p-dialog\n [header]=\"'erpx.rateio_editor.adicionar_conta' | translate\"\n appendTo=\"body\"\n [modal]=\"true\"\n [(visible)]=\"displayContaDialog\"\n (onHide)=\"onHideContaDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"false\"\n styleClass=\"custom-dialog\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [style]=\"{width: '40%'}\"\n>\n <form *ngIf=\"contaDialogFormGroup\" [formGroup]=\"contaDialogFormGroup\" (ngSubmit)=\"onSaveContaDialog()\">\n <div class=\"ui-fluid\">\n <s-dynamic-form\n [fields]=\"contaDialogFields\"\n [form]=\"contaDialogFormGroup\"\n [errorMessages]=\"{\n required: ('erpx.rateio_editor.erro_obrigatorio' | translate),\n duplicate: ('erpx.rateio_editor.conta_duplicada' | translate),\n contaSintetica: ('erpx.rateio_editor.erro_conta_sintetica' | translate),\n max: ('erpx.rateio_editor.erro_valor_maximo_conta' | translate)\n }\"\n ></s-dynamic-form>\n </div>\n </form>\n <p-footer>\n <s-button\n id=\"dialog-conta-save\"\n type=\"button\"\n priority=\"primary\"\n [label]=\"'erpx.rateio_editor.salvar' | translate\"\n (onClick)=\"onSaveContaDialog()\"\n ></s-button>\n <s-button\n id=\"dialog-conta-cancel\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"'erpx.rateio_editor.cancelar' | translate\"\n (onClick)=\"onHideContaDialog()\"\n ></s-button>\n </p-footer>\n</p-dialog>\n\n<!-- Modal: Adicionar/Editar Centro de Custo -->\n<p-dialog\n [header]=\"'erpx.rateio_editor.adicionar_centro_custo' | translate\"\n appendTo=\"body\"\n [modal]=\"true\"\n [(visible)]=\"displayCCDialog\"\n (onHide)=\"onHideCCDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"false\"\n styleClass=\"custom-dialog\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [style]=\"{width: '40%'}\"\n>\n <form *ngIf=\"ccDialogFormGroup\" [formGroup]=\"ccDialogFormGroup\" (ngSubmit)=\"onSaveCCDialog()\">\n <div class=\"ui-fluid\">\n <s-dynamic-form\n [fields]=\"ccDialogFields\"\n [form]=\"ccDialogFormGroup\"\n [errorMessages]=\"{\n required: ('erpx.rateio_editor.erro_obrigatorio' | translate),\n duplicate: ('erpx.rateio_editor.centro_custo_duplicado' | translate),\n centroCustoInvalido: ('erpx.rateio_editor.erro_centro_custo_invalido' | translate),\n max: ('erpx.rateio_editor.erro_valor_maximo_centro_custo' | translate)\n }\"\n ></s-dynamic-form>\n </div>\n </form>\n <p-footer>\n <s-button\n id=\"dialog-cc-save\"\n type=\"button\"\n priority=\"primary\"\n [label]=\"'erpx.rateio_editor.salvar' | translate\"\n (onClick)=\"onSaveCCDialog()\"\n ></s-button>\n <s-button\n id=\"dialog-cc-cancel\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"'erpx.rateio_editor.cancelar' | translate\"\n (onClick)=\"onHideCCDialog()\"\n ></s-button>\n </p-footer>\n</p-dialog>\n"
|
|
34207
|
+
template: "<s-loading-state [loading]=\"loading\" [blockWindow]=\"true\">\n <!-- Se\u00E7\u00E3o 1: Informa\u00E7\u00F5es do movimento -->\n <div class=\"sds-section-title\" *ngIf=\"isReady\">\n {{ 'erpx.rateio_editor.titulo' | translate }}\n </div>\n\n <div class=\"ui-g custom-stats\" *ngIf=\"isReady\">\n <div class=\"ui-sm-12 ui-md-4\">\n <s-stats-card\n [animateNumbers]=\"true\"\n color=\"#0C9348\"\n [lightMode]=\"true\"\n [lightVersion]=\"true\"\n iconClass=\"far fa-dollar-sign\"\n [label]=\"'erpx.rateio_editor.valor_base' | translate\"\n [value]=\"valorBase | numeric:numberFormatOptions | async\"\n ></s-stats-card>\n </div>\n <div class=\"ui-sm-12 ui-md-4\">\n <s-stats-card\n [animateNumbers]=\"true\"\n color=\"#428BCA\"\n [lightMode]=\"true\"\n [lightVersion]=\"true\"\n iconClass=\"far fa-percent\"\n [label]=\"'erpx.rateio_editor.percentual_restante' | translate\"\n [value]=\"percentualRestanteDisplay + '%'\"\n ></s-stats-card>\n </div>\n <div class=\"ui-sm-12 ui-md-4\">\n <s-stats-card\n [animateNumbers]=\"true\"\n [color]=\"distribuicaoCompleta ? '#0C9348' : '#C13018'\"\n [lightMode]=\"true\"\n [lightVersion]=\"true\"\n iconClass=\"far fa-dollar-sign\"\n [label]=\"'erpx.rateio_editor.valor_restante' | translate\"\n [value]=\"valorRestanteDisplay | numeric:numberFormatOptions | async\"\n ></s-stats-card>\n </div>\n </div>\n\n <!-- Se\u00E7\u00E3o 2: Tabela de rateios -->\n <div class=\"sds-section-title\" *ngIf=\"isReady\">\n {{ 'erpx.rateio_editor.lista_rateios' | translate }}\n </div>\n\n <s-empty-state\n *ngIf=\"isReady && contasDataSource?.length === 0\"\n iconClass=\"far fa-dollar-sign\"\n [title]=\"'erpx.rateio_editor.sem_rateios_titulo' | translate\"\n [description]=\"'erpx.rateio_editor.sem_rateios_descricao' | translate\"\n [showPrimaryAction]=\"!effectiveReadOnly\"\n [primaryActionLabel]=\"'erpx.rateio_editor.adicionar_conta' | translate\"\n (primaryAction)=\"openContaDialog()\"\n [showSecondaryAction]=\"!effectiveReadOnly && showSugestaoButton\"\n [secondaryActionLabel]=\"'erpx.rateio_editor.sugerir_rateio' | translate\"\n (secondaryAction)=\"onSugerir()\"\n ></s-empty-state>\n\n <div class=\"ui-g\" *ngIf=\"isReady && contasDataSource?.length > 0\">\n <div class=\"ui-g-12\" *ngIf=\"!effectiveReadOnly\">\n <s-button\n [label]=\"'erpx.rateio_editor.adicionar_conta' | translate\"\n iconClass=\"fa fa-plus\"\n (onClick)=\"openContaDialog()\"\n ></s-button>\n <s-button\n *ngIf=\"showSugestaoButton\"\n [label]=\"'erpx.rateio_editor.sugerir_rateio' | translate\"\n [priority]=\"ButtonPriority.Secondary\"\n iconClass=\"fa fa-magic\"\n (onClick)=\"onSugerir()\"\n ></s-button>\n <s-button\n [label]=\"'erpx.rateio_editor.remover_conta' | translate\"\n [priority]=\"ButtonPriority.Secondary\"\n (onClick)=\"onDeleteSelected()\"\n [disabled]=\"!selection.length\"\n ></s-button>\n </div>\n\n <div class=\"ui-g-12\">\n <p-table\n #tableRateio\n [value]=\"contasDataSource\"\n [columns]=\"gridColumns\"\n dataKey=\"idContaFinanceira\"\n [resizableColumns]=\"true\"\n [totalRecords]=\"contasDataSource.length\"\n [(selection)]=\"selection\"\n [paginator]=\"false\"\n [rows]=\"10\"\n >\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th scope=\"col\" style=\"width: 3em\"></th>\n <th scope=\"col\" class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableHeaderCheckbox *ngIf=\"!effectiveReadOnly\"></p-tableHeaderCheckbox>\n </th>\n <th *ngFor=\"let col of columns\" scope=\"col\" pResizableColumn>\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n </div>\n </th>\n <th scope=\"col\" *ngIf=\"!effectiveReadOnly\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ 'erpx.rateio_editor.acoes' | translate }}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\" let-expanded=\"expanded\">\n <tr>\n <td style=\"width: 3em; text-align: center\">\n <a *ngIf=\"rowData.rateiosCCusto?.length || (!effectiveReadOnly && requiresCentroCusto)\" [pRowToggler]=\"rowData\" role=\"button\" tabindex=\"0\">\n <i [class]=\"expanded ? 'fa fa-minus' : 'fa fa-plus'\"></i>\n </a>\n </td>\n <td class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableCheckbox *ngIf=\"!effectiveReadOnly\" [value]=\"rowData\"></p-tableCheckbox>\n </td>\n <td>{{ rowData.contaFinanceira || rowData.idContaFinanceira }}</td>\n <td style=\"text-align: right\">{{ rowData.percentual }}</td>\n <td style=\"text-align: right\">{{ rowData.valorRateadoConta | numeric:numberFormatOptions | async }}</td>\n <td *ngIf=\"!effectiveReadOnly\">\n <s-button\n [auxiliary]=\"true\"\n [priority]=\"ButtonPriority.Default\"\n [size]=\"ButtonSize.Small\"\n iconClass=\"fa fa-pencil\"\n [label]=\"'erpx.rateio_editor.editar' | translate\"\n (onClick)=\"openContaDialog(getContaIndex(rowData))\"\n ></s-button>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData let-rowIndex=\"rowIndex\">\n <tr>\n <td [attr.colspan]=\"effectiveReadOnly ? gridColumns.length + 2 : gridColumns.length + 3\">\n <div class=\"ui-g\" style=\"padding: 8px 16px\">\n <div class=\"ui-g-12 rateio-cc-toolbar\" *ngIf=\"!effectiveReadOnly\">\n <s-button\n [label]=\"'erpx.rateio_editor.adicionar_centro_custo' | translate\"\n iconClass=\"fa fa-plus\"\n (onClick)=\"openCCDialog(getContaIndex(rowData))\"\n ></s-button>\n <s-button\n [label]=\"'erpx.rateio_editor.remover_centro_custo' | translate\"\n [priority]=\"ButtonPriority.Secondary\"\n (onClick)=\"onDeleteSelectedCC(rowData)\"\n [disabled]=\"!(ccSelection[rowData.idContaFinanceira]?.length)\"\n ></s-button>\n </div>\n <div class=\"ui-g-12\">\n <p-table\n [value]=\"rowData.rateiosCCusto\"\n dataKey=\"idCentroCusto\"\n [(selection)]=\"ccSelection[rowData.idContaFinanceira]\"\n [responsive]=\"true\"\n >\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"col\" class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableHeaderCheckbox *ngIf=\"!effectiveReadOnly\"></p-tableHeaderCheckbox>\n </th>\n <th scope=\"col\">{{ 'erpx.rateio_editor.centro_custo' | translate }}</th>\n <th scope=\"col\">{{ 'erpx.rateio_editor.percentual' | translate }}</th>\n <th scope=\"col\">{{ 'erpx.rateio_editor.valor' | translate }}</th>\n <th scope=\"col\" *ngIf=\"!effectiveReadOnly\">{{ 'erpx.rateio_editor.acoes' | translate }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-cc let-ccIndex=\"rowIndex\">\n <tr>\n <td class=\"col-checkbox\" style=\"width: 50px\">\n <p-tableCheckbox *ngIf=\"!effectiveReadOnly\" [value]=\"cc\"></p-tableCheckbox>\n </td>\n <td>{{ cc.descCCusto || cc.idCentroCusto }}</td>\n <td style=\"text-align: right\">{{ cc.percentual }}</td>\n <td style=\"text-align: right\">{{ cc.valor | numeric:numberFormatOptions | async }}</td>\n <td *ngIf=\"!effectiveReadOnly\">\n <s-button\n [auxiliary]=\"true\"\n [priority]=\"ButtonPriority.Default\"\n [size]=\"ButtonSize.Small\"\n iconClass=\"fa fa-pencil\"\n [label]=\"'erpx.rateio_editor.editar' | translate\"\n (onClick)=\"openCCDialog(getContaIndex(rowData), getCCIndex(rowData, cc))\"\n ></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"effectiveReadOnly ? 3 : 5\">\n {{ 'erpx.rateio_editor.sem_centros_custo' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n <!-- Bot\u00F5es de a\u00E7\u00E3o -->\n <div *ngIf=\"isReady\" class=\"ui-g rateio-editor-actions\">\n <div class=\"ui-g-12\">\n <s-button\n *ngIf=\"!effectiveReadOnly && !isStandalone\"\n priority=\"primary\"\n iconClass=\"fa fa-check\"\n [label]=\"'erpx.rateio_editor.salvar' | translate\"\n (onClick)=\"onSalvar()\"\n ></s-button>\n </div>\n </div>\n</s-loading-state>\n\n<!-- Modal: Adicionar/Editar Conta Financeira -->\n<p-dialog\n [header]=\"'erpx.rateio_editor.adicionar_conta' | translate\"\n appendTo=\"body\"\n [modal]=\"true\"\n [(visible)]=\"displayContaDialog\"\n (onHide)=\"onHideContaDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"false\"\n styleClass=\"custom-dialog\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [style]=\"{width: '40%'}\"\n>\n <form *ngIf=\"contaDialogFormGroup\" [formGroup]=\"contaDialogFormGroup\" (ngSubmit)=\"onSaveContaDialog()\">\n <div class=\"ui-fluid\">\n <s-dynamic-form\n [fields]=\"contaDialogFields\"\n [form]=\"contaDialogFormGroup\"\n [errorMessages]=\"{\n required: ('erpx.rateio_editor.erro_obrigatorio' | translate),\n duplicate: ('erpx.rateio_editor.conta_duplicada' | translate),\n contaSintetica: ('erpx.rateio_editor.erro_conta_sintetica' | translate),\n max: ('erpx.rateio_editor.erro_valor_maximo_conta' | translate)\n }\"\n ></s-dynamic-form>\n </div>\n </form>\n <p-footer>\n <s-button\n id=\"dialog-conta-save\"\n type=\"button\"\n priority=\"primary\"\n [label]=\"'erpx.rateio_editor.salvar' | translate\"\n (onClick)=\"onSaveContaDialog()\"\n ></s-button>\n <s-button\n id=\"dialog-conta-cancel\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"'erpx.rateio_editor.cancelar' | translate\"\n (onClick)=\"onHideContaDialog()\"\n ></s-button>\n </p-footer>\n</p-dialog>\n\n<!-- Modal: Adicionar/Editar Centro de Custo -->\n<p-dialog\n [header]=\"'erpx.rateio_editor.adicionar_centro_custo' | translate\"\n appendTo=\"body\"\n [modal]=\"true\"\n [(visible)]=\"displayCCDialog\"\n (onHide)=\"onHideCCDialog()\"\n [blockScroll]=\"true\"\n [focusOnShow]=\"false\"\n styleClass=\"custom-dialog\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [style]=\"{width: '40%'}\"\n>\n <form *ngIf=\"ccDialogFormGroup\" [formGroup]=\"ccDialogFormGroup\" (ngSubmit)=\"onSaveCCDialog()\">\n <div class=\"ui-fluid\">\n <s-dynamic-form\n [fields]=\"ccDialogFields\"\n [form]=\"ccDialogFormGroup\"\n [errorMessages]=\"{\n required: ('erpx.rateio_editor.erro_obrigatorio' | translate),\n duplicate: ('erpx.rateio_editor.centro_custo_duplicado' | translate),\n centroCustoInvalido: ('erpx.rateio_editor.erro_centro_custo_invalido' | translate),\n max: ('erpx.rateio_editor.erro_maximo_centro_custo' | translate)\n }\"\n ></s-dynamic-form>\n </div>\n </form>\n <p-footer>\n <s-button\n id=\"dialog-cc-save\"\n type=\"button\"\n priority=\"primary\"\n [label]=\"'erpx.rateio_editor.salvar' | translate\"\n (onClick)=\"onSaveCCDialog()\"\n ></s-button>\n <s-button\n id=\"dialog-cc-cancel\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"'erpx.rateio_editor.cancelar' | translate\"\n (onClick)=\"onHideCCDialog()\"\n ></s-button>\n </p-footer>\n</p-dialog>\n",
|
|
34208
|
+
styles: [":host ::ng-deep .rateio-cc-toolbar .s-button-text{overflow:visible;-ms-flex-pack:start;justify-content:flex-start}"]
|
|
34153
34209
|
})
|
|
34154
34210
|
], ErpRateioEditorComponent);
|
|
34155
34211
|
return ErpRateioEditorComponent;
|