@senior-gestao-empresarial/erpx-components 4.8.0 → 4.9.1-develop-8091f47a

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.
@@ -20,6 +20,11 @@ export var fallback = {
20
20
  "erpx.rateio_editor.error_soma_valor_invalida": "A soma dos valores deve ser igual ao valor base",
21
21
  "erpx.rateio_editor.sem_parametrizacao": "Não há parametrização de rateio cadastrada para este movimento",
22
22
  "erpx.rateio_editor.salvo_com_sucesso_titulo": "Rateio salvo",
23
- "erpx.rateio_editor.salvo_com_sucesso_detalhe": "A distribuição foi gravada com sucesso"
23
+ "erpx.rateio_editor.salvo_com_sucesso_detalhe": "A distribuição foi gravada com sucesso",
24
+ "erpx.rateio_editor.erro_titulo": "Erro",
25
+ "erpx.rateio_editor.erro_salvar": "Erro ao salvar rateio",
26
+ "erpx.rateio_editor.erro_contexto_incompleto": "Não foi possível salvar: o contexto do rateio (filial e critério) não foi informado.",
27
+ "erpx.rateio_editor.erro_sugerir": "Erro ao sugerir rateio",
28
+ "erpx.rateio_editor.erro_carregar": "Erro ao carregar rateio"
24
29
  };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2suanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9lcnB4LWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJsb2NhbGUvZmFsbGJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUFHO0lBQ3BCLG1FQUFtRSxFQUFFLHNEQUFzRDtJQUMzSCxpRUFBaUUsRUFBRSx3Q0FBd0M7SUFDM0csZ0VBQWdFLEVBQUUsMENBQTBDO0lBQzVHLHlEQUF5RCxFQUFFLGdCQUFnQjtJQUMzRSw2REFBNkQsRUFBRSxvQkFBb0I7SUFDbkYsc0VBQXNFLEVBQUUsNkJBQTZCO0lBQ3JHLDJCQUEyQixFQUFFLGtCQUFrQjtJQUMvQywrQkFBK0IsRUFBRSxZQUFZO0lBQzdDLG1DQUFtQyxFQUFFLGdCQUFnQjtJQUNyRCx3Q0FBd0MsRUFBRSxxQkFBcUI7SUFDL0Qsb0NBQW9DLEVBQUUsNEJBQTRCO0lBQ2xFLGtDQUFrQyxFQUFFLGVBQWU7SUFDbkQsMkNBQTJDLEVBQUUsMkJBQTJCO0lBQ3hFLHlDQUF5QyxFQUFFLHlCQUF5QjtJQUNwRSxtQ0FBbUMsRUFBRSxnQkFBZ0I7SUFDckQsMkJBQTJCLEVBQUUsUUFBUTtJQUNyQyw2QkFBNkIsRUFBRSxVQUFVO0lBQ3pDLG1EQUFtRCxFQUFFLHNDQUFzQztJQUMzRiw4Q0FBOEMsRUFBRSxpREFBaUQ7SUFDakcsdUNBQXVDLEVBQUUsZ0VBQWdFO0lBQ3pHLDZDQUE2QyxFQUFFLGNBQWM7SUFDN0QsOENBQThDLEVBQUUsd0NBQXdDO0NBQzNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZmFsbGJhY2sgPSB7XG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2NhbGN1bGFkb1wiOiBcIlZhbG9yIGNhbGN1bGFkbyBwZWxvIHNpc3RlbWEgY29uZm9ybWUgcmVncmFzIGZpc2NhaXNcIixcbiAgICBcImVycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfaGVyZGFkb1wiOiBcIlZhbG9yIGdlcmFkbyBwb3IgdW0gcHJvY2Vzc28gZGUgb3JpZ2VtXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbFwiOiBcIlZhbG9yIGluZm9ybWFkbyBtYW51YWxtZW50ZSBwZWxvIHVzdcOhcmlvXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsXCI6IFwiQ8OhbGN1bG8gbWFudWFsXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fYXV0b21hdGljb1wiOiBcIkPDoWxjdWxvIGF1dG9tw6F0aWNvXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fZ2VyYWRvX3ZpYV9wcm9jZXNzb1wiOiBcIkPDoWxjdWxvIGdlcmFkbyB2aWEgcHJvY2Vzc29cIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci50aXR1bG9cIjogXCJFZGnDp8OjbyBkZSBSYXRlaW9cIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci52YWxvcl9iYXNlXCI6IFwiVmFsb3IgYmFzZVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnZhbG9yX3Jlc3RhbnRlXCI6IFwiVmFsb3IgcmVzdGFudGVcIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci5wZXJjZW50dWFsX3Jlc3RhbnRlXCI6IFwiUGVyY2VudHVhbCByZXN0YW50ZVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLmFkaWNpb25hcl9jb250YVwiOiBcIkFkaWNpb25hciBjb250YSBmaW5hbmNlaXJhXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3IucmVtb3Zlcl9jb250YVwiOiBcIlJlbW92ZXIgY29udGFcIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci5hZGljaW9uYXJfY2VudHJvX2N1c3RvXCI6IFwiQWRpY2lvbmFyIGNlbnRybyBkZSBjdXN0b1wiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnJlbW92ZXJfY2VudHJvX2N1c3RvXCI6IFwiUmVtb3ZlciBjZW50cm8gZGUgY3VzdG9cIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci5zdWdlcmlyX3JhdGVpb1wiOiBcIlN1Z2VyaXIgcmF0ZWlvXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3Iuc2FsdmFyXCI6IFwiU2FsdmFyXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3IuY2FuY2VsYXJcIjogXCJDYW5jZWxhclwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLmVycm9yX3NvbWFfcGVyY2VudHVhbF9pbnZhbGlkYVwiOiBcIkEgc29tYSBkb3MgcGVyY2VudHVhaXMgZGV2ZSBzZXIgMTAwJVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLmVycm9yX3NvbWFfdmFsb3JfaW52YWxpZGFcIjogXCJBIHNvbWEgZG9zIHZhbG9yZXMgZGV2ZSBzZXIgaWd1YWwgYW8gdmFsb3IgYmFzZVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnNlbV9wYXJhbWV0cml6YWNhb1wiOiBcIk7Do28gaMOhIHBhcmFtZXRyaXphw6fDo28gZGUgcmF0ZWlvIGNhZGFzdHJhZGEgcGFyYSBlc3RlIG1vdmltZW50b1wiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnNhbHZvX2NvbV9zdWNlc3NvX3RpdHVsb1wiOiBcIlJhdGVpbyBzYWx2b1wiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnNhbHZvX2NvbV9zdWNlc3NvX2RldGFsaGVcIjogXCJBIGRpc3RyaWJ1acOnw6NvIGZvaSBncmF2YWRhIGNvbSBzdWNlc3NvXCJcbn07XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2suanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9lcnB4LWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJsb2NhbGUvZmFsbGJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUFHO0lBQ3BCLG1FQUFtRSxFQUFFLHNEQUFzRDtJQUMzSCxpRUFBaUUsRUFBRSx3Q0FBd0M7SUFDM0csZ0VBQWdFLEVBQUUsMENBQTBDO0lBQzVHLHlEQUF5RCxFQUFFLGdCQUFnQjtJQUMzRSw2REFBNkQsRUFBRSxvQkFBb0I7SUFDbkYsc0VBQXNFLEVBQUUsNkJBQTZCO0lBQ3JHLDJCQUEyQixFQUFFLGtCQUFrQjtJQUMvQywrQkFBK0IsRUFBRSxZQUFZO0lBQzdDLG1DQUFtQyxFQUFFLGdCQUFnQjtJQUNyRCx3Q0FBd0MsRUFBRSxxQkFBcUI7SUFDL0Qsb0NBQW9DLEVBQUUsNEJBQTRCO0lBQ2xFLGtDQUFrQyxFQUFFLGVBQWU7SUFDbkQsMkNBQTJDLEVBQUUsMkJBQTJCO0lBQ3hFLHlDQUF5QyxFQUFFLHlCQUF5QjtJQUNwRSxtQ0FBbUMsRUFBRSxnQkFBZ0I7SUFDckQsMkJBQTJCLEVBQUUsUUFBUTtJQUNyQyw2QkFBNkIsRUFBRSxVQUFVO0lBQ3pDLG1EQUFtRCxFQUFFLHNDQUFzQztJQUMzRiw4Q0FBOEMsRUFBRSxpREFBaUQ7SUFDakcsdUNBQXVDLEVBQUUsZ0VBQWdFO0lBQ3pHLDZDQUE2QyxFQUFFLGNBQWM7SUFDN0QsOENBQThDLEVBQUUsd0NBQXdDO0lBQ3hGLGdDQUFnQyxFQUFFLE1BQU07SUFDeEMsZ0NBQWdDLEVBQUUsdUJBQXVCO0lBQ3pELDZDQUE2QyxFQUFFLHNGQUFzRjtJQUNySSxpQ0FBaUMsRUFBRSx3QkFBd0I7SUFDM0Qsa0NBQWtDLEVBQUUseUJBQXlCO0NBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZmFsbGJhY2sgPSB7XG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X2NhbGN1bGFkb1wiOiBcIlZhbG9yIGNhbGN1bGFkbyBwZWxvIHNpc3RlbWEgY29uZm9ybWUgcmVncmFzIGZpc2NhaXNcIixcbiAgICBcImVycHgudHJpYnV0b3MuYmFkZ2VfdGlwb19jYWxjdWxvX2ltcG9zdG9faW5mb19zaWduX3RleHRfaGVyZGFkb1wiOiBcIlZhbG9yIGdlcmFkbyBwb3IgdW0gcHJvY2Vzc28gZGUgb3JpZ2VtXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2luZm9fc2lnbl90ZXh0X21hbnVhbFwiOiBcIlZhbG9yIGluZm9ybWFkbyBtYW51YWxtZW50ZSBwZWxvIHVzdcOhcmlvXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fbWFudWFsXCI6IFwiQ8OhbGN1bG8gbWFudWFsXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fYXV0b21hdGljb1wiOiBcIkPDoWxjdWxvIGF1dG9tw6F0aWNvXCIsXG4gICAgXCJlcnB4LnRyaWJ1dG9zLmJhZGdlX3RpcG9fY2FsY3Vsb19pbXBvc3RvX2NhbGN1bG9fZ2VyYWRvX3ZpYV9wcm9jZXNzb1wiOiBcIkPDoWxjdWxvIGdlcmFkbyB2aWEgcHJvY2Vzc29cIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci50aXR1bG9cIjogXCJFZGnDp8OjbyBkZSBSYXRlaW9cIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci52YWxvcl9iYXNlXCI6IFwiVmFsb3IgYmFzZVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnZhbG9yX3Jlc3RhbnRlXCI6IFwiVmFsb3IgcmVzdGFudGVcIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci5wZXJjZW50dWFsX3Jlc3RhbnRlXCI6IFwiUGVyY2VudHVhbCByZXN0YW50ZVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLmFkaWNpb25hcl9jb250YVwiOiBcIkFkaWNpb25hciBjb250YSBmaW5hbmNlaXJhXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3IucmVtb3Zlcl9jb250YVwiOiBcIlJlbW92ZXIgY29udGFcIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci5hZGljaW9uYXJfY2VudHJvX2N1c3RvXCI6IFwiQWRpY2lvbmFyIGNlbnRybyBkZSBjdXN0b1wiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnJlbW92ZXJfY2VudHJvX2N1c3RvXCI6IFwiUmVtb3ZlciBjZW50cm8gZGUgY3VzdG9cIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci5zdWdlcmlyX3JhdGVpb1wiOiBcIlN1Z2VyaXIgcmF0ZWlvXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3Iuc2FsdmFyXCI6IFwiU2FsdmFyXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3IuY2FuY2VsYXJcIjogXCJDYW5jZWxhclwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLmVycm9yX3NvbWFfcGVyY2VudHVhbF9pbnZhbGlkYVwiOiBcIkEgc29tYSBkb3MgcGVyY2VudHVhaXMgZGV2ZSBzZXIgMTAwJVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLmVycm9yX3NvbWFfdmFsb3JfaW52YWxpZGFcIjogXCJBIHNvbWEgZG9zIHZhbG9yZXMgZGV2ZSBzZXIgaWd1YWwgYW8gdmFsb3IgYmFzZVwiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnNlbV9wYXJhbWV0cml6YWNhb1wiOiBcIk7Do28gaMOhIHBhcmFtZXRyaXphw6fDo28gZGUgcmF0ZWlvIGNhZGFzdHJhZGEgcGFyYSBlc3RlIG1vdmltZW50b1wiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnNhbHZvX2NvbV9zdWNlc3NvX3RpdHVsb1wiOiBcIlJhdGVpbyBzYWx2b1wiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLnNhbHZvX2NvbV9zdWNlc3NvX2RldGFsaGVcIjogXCJBIGRpc3RyaWJ1acOnw6NvIGZvaSBncmF2YWRhIGNvbSBzdWNlc3NvXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3IuZXJyb190aXR1bG9cIjogXCJFcnJvXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3IuZXJyb19zYWx2YXJcIjogXCJFcnJvIGFvIHNhbHZhciByYXRlaW9cIixcbiAgICBcImVycHgucmF0ZWlvX2VkaXRvci5lcnJvX2NvbnRleHRvX2luY29tcGxldG9cIjogXCJOw6NvIGZvaSBwb3Nzw612ZWwgc2FsdmFyOiBvIGNvbnRleHRvIGRvIHJhdGVpbyAoZmlsaWFsIGUgY3JpdMOpcmlvKSBuw6NvIGZvaSBpbmZvcm1hZG8uXCIsXG4gICAgXCJlcnB4LnJhdGVpb19lZGl0b3IuZXJyb19zdWdlcmlyXCI6IFwiRXJybyBhbyBzdWdlcmlyIHJhdGVpb1wiLFxuICAgIFwiZXJweC5yYXRlaW9fZWRpdG9yLmVycm9fY2FycmVnYXJcIjogXCJFcnJvIGFvIGNhcnJlZ2FyIHJhdGVpb1wiXG59O1xuIl19
@@ -32255,6 +32255,16 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32255
32255
  this.messageService = messageService;
32256
32256
  this.readOnly = false;
32257
32257
  this.showSugestaoButton = true;
32258
+ /**
32259
+ * Controla se o rateio deve ser carregado automaticamente via API quando
32260
+ * idMovimento está presente (modo conectado). Default: true.
32261
+ *
32262
+ * Defina como false para restaurar um rateio que o usuário já distribuiu e que
32263
+ * ainda não foi persistido no backend de rateio: o componente popula a grid a
32264
+ * partir de initialContext/initialRateios e mantém o botão Salvar e a gravação
32265
+ * vinculada ao movimento.
32266
+ */
32267
+ this.loadFromApi = true;
32258
32268
  /**
32259
32269
  * Critério de rateio padrão usado pela API de sugestão.
32260
32270
  * Default: 'V3' (Despesas — Conta X C. Custos).
@@ -32330,13 +32340,13 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32330
32340
  }
32331
32341
  ngOnChanges(changes) {
32332
32342
  const movimentoChanged = changes.idMovimento || changes.tipoMovimento;
32333
- if (movimentoChanged && this.idMovimento && this.tipoMovimento) {
32334
- // Modo conectado: carrega via API
32343
+ if (movimentoChanged && this.idMovimento && this.tipoMovimento && this.loadFromApi) {
32344
+ // Modo conectado com carga via API
32335
32345
  this.carregarRateio();
32336
32346
  }
32337
- else if (this.isStandalone && (changes.initialContext || changes.initialRateios || movimentoChanged)) {
32338
- // Modo standalone: usa inputs diretos (mesmo que vazios)
32339
- this.inicializarStandalone();
32347
+ else if (this.isInputDriven && (changes.initialContext || changes.initialRateios || changes.loadFromApi || movimentoChanged)) {
32348
+ // Alimentado por inputs: modo standalone OU conectado sem carga via API
32349
+ this.inicializarPorInputs();
32340
32350
  }
32341
32351
  }
32342
32352
  /** Retorna o conteúdo atual da grid (uso standalone — quem consome lê os rateios daqui). */
@@ -32347,9 +32357,16 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32347
32357
  get isStandalone() {
32348
32358
  return !this.idMovimento;
32349
32359
  }
32350
- /** Indica se o componente está pronto para exibir UI (modo conectado carregou OU modo standalone inicializado). */
32360
+ /**
32361
+ * Indica se o componente é alimentado por inputs em vez da API:
32362
+ * modo standalone (sem idMovimento) OU modo conectado com loadFromApi = false.
32363
+ */
32364
+ get isInputDriven() {
32365
+ return this.isStandalone || !this.loadFromApi;
32366
+ }
32367
+ /** Indica se o componente está pronto para exibir UI (carregou via API OU foi inicializado por inputs). */
32351
32368
  get isReady() {
32352
- return !!this.loadedContext || this.isStandalone;
32369
+ return !!this.loadedContext || this.isInputDriven;
32353
32370
  }
32354
32371
  ngOnDestroy() {
32355
32372
  this.ngUnsubscribe.next();
@@ -32357,10 +32374,21 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32357
32374
  }
32358
32375
  // === AÇÕES PÚBLICAS ===
32359
32376
  onSalvar() {
32377
+ var _a;
32360
32378
  if (this.effectiveReadOnly) {
32361
32379
  return;
32362
32380
  }
32363
32381
  const ctx = this.loadedContext;
32382
+ if (!((_a = ctx === null || ctx === void 0 ? void 0 : ctx.e070fil) === null || _a === void 0 ? void 0 : _a.id) || !(ctx === null || ctx === void 0 ? void 0 : ctx.criRat)) {
32383
+ const message = this.translate.instant('erpx.rateio_editor.erro_contexto_incompleto');
32384
+ this.messageService.add({
32385
+ severity: 'error',
32386
+ summary: this.translate.instant('erpx.rateio_editor.erro_titulo'),
32387
+ detail: message
32388
+ });
32389
+ this.error.emit({ operacao: 'save', message });
32390
+ return;
32391
+ }
32364
32392
  const input = {
32365
32393
  idMovimento: this.idMovimento,
32366
32394
  tipoMovimento: this.tipoMovimento,
@@ -32382,13 +32410,14 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32382
32410
  });
32383
32411
  this.save.emit({ idMovimento: this.idMovimento, tipoMovimento: this.tipoMovimento, rateios: this.contasDataSource });
32384
32412
  }, (err) => {
32385
- var _a, _b;
32413
+ var _a;
32414
+ const detail = ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) || (err === null || err === void 0 ? void 0 : err.message) || this.translate.instant('erpx.rateio_editor.erro_salvar');
32386
32415
  this.messageService.add({
32387
32416
  severity: 'error',
32388
- summary: this.translate.instant('erpx.rateio_editor.erro_titulo') || 'Erro',
32389
- detail: ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) || (err === null || err === void 0 ? void 0 : err.message) || 'Erro ao salvar rateio'
32417
+ summary: this.translate.instant('erpx.rateio_editor.erro_titulo'),
32418
+ detail
32390
32419
  });
32391
- this.error.emit({ operacao: 'save', message: ((_b = err === null || err === void 0 ? void 0 : err.error) === null || _b === void 0 ? void 0 : _b.message) || (err === null || err === void 0 ? void 0 : err.message) || 'Erro ao salvar rateio', originalError: err });
32420
+ this.error.emit({ operacao: 'save', message: detail, originalError: err });
32392
32421
  });
32393
32422
  }
32394
32423
  onSugerir() {
@@ -32430,7 +32459,7 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32430
32459
  }
32431
32460
  this.popularComRateios(rateio);
32432
32461
  this.emitChange();
32433
- }, (err) => { var _a; return this.error.emit({ operacao: 'suggest', message: ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) || (err === null || err === void 0 ? void 0 : err.message) || 'Erro ao sugerir rateio', originalError: err }); });
32462
+ }, (err) => { var _a; return this.error.emit({ operacao: 'suggest', message: ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) || (err === null || err === void 0 ? void 0 : err.message) || this.translate.instant('erpx.rateio_editor.erro_sugerir'), originalError: err }); });
32434
32463
  }
32435
32464
  // === MODAL CONTA FINANCEIRA ===
32436
32465
  openContaDialog(editIndex) {
@@ -32599,8 +32628,8 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32599
32628
  return this.contasDataSource.indexOf(rowData);
32600
32629
  }
32601
32630
  // === PRIVADOS ===
32602
- /** Inicializa o componente em modo standalone (sem chamada à API). */
32603
- inicializarStandalone() {
32631
+ /** Inicializa o componente a partir dos inputs (sem chamada à API de carga). */
32632
+ inicializarPorInputs() {
32604
32633
  var _a, _b, _c;
32605
32634
  this.loadedContext = (this.initialContext || {});
32606
32635
  this.popularComRateios(this.initialRateios || []);
@@ -32621,7 +32650,7 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32621
32650
  this.empresaId = output.e070fil.e070emp.id;
32622
32651
  }
32623
32652
  this.gridColumns = this.getGridColumns();
32624
- }, (err) => { var _a; return this.error.emit({ operacao: 'load', message: ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) || (err === null || err === void 0 ? void 0 : err.message) || 'Erro ao carregar rateio', originalError: err }); });
32653
+ }, (err) => { var _a; return this.error.emit({ operacao: 'load', message: ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) || (err === null || err === void 0 ? void 0 : err.message) || this.translate.instant('erpx.rateio_editor.erro_carregar'), originalError: err }); });
32625
32654
  }
32626
32655
  popularComRateios(rateios) {
32627
32656
  this.contasDataSource = [...rateios];
@@ -32634,6 +32663,7 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32634
32663
  formGroup: 'contaFinanceira',
32635
32664
  defaultFilter: [
32636
32665
  { field: 'excluido', operator: EnumLogicalOperator.Eq, values: ['false'] },
32666
+ { field: 'sitFin', operator: EnumLogicalOperator.Eq, values: ['VA'] },
32637
32667
  { field: 'e070emp', operator: EnumLogicalOperator.Eq, values: [this.empresaId] }
32638
32668
  ]
32639
32669
  })), { size: { sm: 12, md: 12, lg: 12, xl: 12 }, required: () => true })),
@@ -32667,6 +32697,7 @@ let ErpRateioEditorComponent = class ErpRateioEditorComponent {
32667
32697
  formGroup: 'centroCusto',
32668
32698
  defaultFilter: [
32669
32699
  { field: 'excluido', operator: EnumLogicalOperator.Eq, values: ['false'] },
32700
+ { field: 'sitCcu', operator: EnumLogicalOperator.Eq, values: ['VA'] },
32670
32701
  { field: 'e070emp', operator: EnumLogicalOperator.Eq, values: [this.empresaId] }
32671
32702
  ]
32672
32703
  })), { size: { sm: 12, md: 12, lg: 12, xl: 12 }, required: () => true })),
@@ -32771,6 +32802,9 @@ __decorate([
32771
32802
  __decorate([
32772
32803
  Input()
32773
32804
  ], ErpRateioEditorComponent.prototype, "initialRateios", void 0);
32805
+ __decorate([
32806
+ Input()
32807
+ ], ErpRateioEditorComponent.prototype, "loadFromApi", void 0);
32774
32808
  __decorate([
32775
32809
  Input()
32776
32810
  ], ErpRateioEditorComponent.prototype, "empresaId", void 0);
@@ -32801,7 +32835,7 @@ __decorate([
32801
32835
  ErpRateioEditorComponent = __decorate([
32802
32836
  Component({
32803
32837
  selector: 'erp-rateio-editor',
32804
- template: "<s-loading-state [loading]=\"loading\" [blockWindow]=\"true\">\n<p-panel styleClass=\"form-group\" [toggleable]=\"false\">\n\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\">\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\">\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, rowIndex)\"\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 [value]=\"rowData.rateiosCCusto\" [responsive]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\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>{{ 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(getContaIndex(rowData), ccIndex)\"\n ></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"effectiveReadOnly ? 3 : 4\">\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\n</p-panel>\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 }\"\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 }\"\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"
32838
+ 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, rowIndex)\"\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 [value]=\"rowData.rateiosCCusto\" [responsive]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\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>{{ 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(getContaIndex(rowData), ccIndex)\"\n ></s-button>\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"effectiveReadOnly ? 3 : 4\">\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 }\"\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 }\"\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"
32805
32839
  })
32806
32840
  ], ErpRateioEditorComponent);
32807
32841
 
@@ -32906,7 +32940,12 @@ const fallback = {
32906
32940
  "erpx.rateio_editor.error_soma_valor_invalida": "A soma dos valores deve ser igual ao valor base",
32907
32941
  "erpx.rateio_editor.sem_parametrizacao": "Não há parametrização de rateio cadastrada para este movimento",
32908
32942
  "erpx.rateio_editor.salvo_com_sucesso_titulo": "Rateio salvo",
32909
- "erpx.rateio_editor.salvo_com_sucesso_detalhe": "A distribuição foi gravada com sucesso"
32943
+ "erpx.rateio_editor.salvo_com_sucesso_detalhe": "A distribuição foi gravada com sucesso",
32944
+ "erpx.rateio_editor.erro_titulo": "Erro",
32945
+ "erpx.rateio_editor.erro_salvar": "Erro ao salvar rateio",
32946
+ "erpx.rateio_editor.erro_contexto_incompleto": "Não foi possível salvar: o contexto do rateio (filial e critério) não foi informado.",
32947
+ "erpx.rateio_editor.erro_sugerir": "Erro ao sugerir rateio",
32948
+ "erpx.rateio_editor.erro_carregar": "Erro ao carregar rateio"
32910
32949
  };
32911
32950
 
32912
32951
  /**