V10 RecursosGuias
RecursosGuias
Guias
Voltar | Lista de artigos

Como criar e integrar os processos de execução de documentos de compra na contabilidade? (Public Sector)

Última alteração a 29/09/2021

Os orçamentos da despesa são particularmente importantes para as organizações públicas, pelo que é crucial uma correta integração dos documentos de compra na contabilidade, assim como dos processos de execução.

A partir da versão 10 deixa de ser necessário o tratamento orçamental na criação e integração de documentos de compra, estando essa lógica implementada tanto na gravação dos documentos de compra, na descodificação do token passado nas linhas dos documentos, como na integração contabilística do documento de compra, com a criação, preenchimento e gravação do respetivo processo de execução.

Este artigo tem o objetivo de demonstrar a criação e integração de um documento de compra inicial ao fluxo e a sua transformação num documento posterior, utilizando os motores, através dos seguintes passos:

Passo 1 - Adicionar referências:

  1. CmpBE100;
  2. CmpBS100;
  3. BasBE100;
  4. IBasBS100;
  5. CblBE100;
  6. ICblBS100;
  7. ConstantesPrimavera100.

Passo 2 - Criar o documento de compra inicial ao fluxo:

As linhas devem conter o token "" na propriedade "ProcessoCBL" para que seja criado um novo processo de execução:

//Criação do documento de compra
CmpBE100.CmpBEDocumentoCompra objDoc = new CmpBE100.CmpBEDocumentoCompra
{
    Tipodoc = "PRC",
    Serie = "2020",
    TipoEntidade = "F",
    Entidade = "F0001",
    NumDocExterno = "1"
};

//Preenchimento dos dados relacionados do cabeçalho do documento
BSO.Compras.Documentos.PreencheDadosRelacionados(objDoc);

//Criação de uma linha
BSO.Compras.Documentos.AdicionaLinha(objDoc, "A0001");
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).PrecUnit = 10;
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).ProcessoCBL = ""; 

//Classificações orçamentais da linha, em função dos planos orçamentados
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).ClassEconCBL = "01020210";
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).OrganicaCBL = "010403";
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).FonteCBL = "000";
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).ActividadeCBL = "000";
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).ProgMedidaCBL = "000000";
objDoc.Linhas.GetEdita(objDoc.Linhas.NumItens).ContaCBL = "621311";

//Gravação do documento de compra – inclui a descodificação do token 
BSO.Compras.Documentos.Actualiza(objDoc);

Passo 3 - Efetuar a integração na contabilidade e criar o respetivo processo de execução:

try
{
    BSO.Base.LigacaoCBL.IntegraDocumentoLogCBL(ConstantesPrimavera100.Modulos.Compras, objDoc.Tipodoc, objDoc.Serie, objDoc.NumDoc, objDoc.Filial);
}
catch(Exception exIntCbl)
{
    CblBE100.CblBECnfDocExercicioLigCBL objConfigDoc = BSO.Contabilidade.ConfiguracaoDocCBL.EditaExercicio("C", objDoc.Tipodoc, objDoc.DataDoc.Year);

    //No caso de documento com ligação orçamental (para criação do processo de execução), mas sem contas para descodificar, a integração na contabilidade vai devolver erro de documento vazio.
    //Nesses casos, deve ser ignorada a exceção, porque é suposto que não integre - a criação do processo sucede.
    if(objConfigDoc.PlanosDeContas.NumItens>0)
    {
        throw exIntCbl;
    }
}

Passo 4 - Criar documento seguinte por transformação:

//Criação do documento de compra seguinte
CmpBE100.CmpBEDocumentoCompra objDocT = new CmpBE100.CmpBEDocumentoCompra
{
    Tipodoc = "COM",
    Serie = "2020",
    TipoEntidade = "F",
    Entidade = "F0001",
    NumDocExterno = "1"
};

//Preenchimento dos dados relacionados do cabeçalho do documento
BSO.Compras.Documentos.PreencheDadosRelacionados(objDocT);

//Adição de uma linha, por transformação
BSO.Compras.Documentos.AdicionaLinhaTransformada(objDocT, objDoc.Tipodoc, objDoc.NumDoc, 1);

//Gravação do documento de compra
BSO.Compras.Documentos.Actualiza(objDocT);

//Integração contabilística
BSO.Base.LigacaoCBL.IntegraDocumentoLogCBL(ConstantesPrimavera100.Modulos.Compras, objDocT.Tipodoc, objDocT.Serie, objDocT.NumDoc, objDocT.Filial);
Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.

login para deixar a sua opinião.

Obrigado pelo seu feedback. Iremos analisá-lo para continuarmos a melhorar!
Artigos Relacionados
Começar a Usar Como criar um projeto de integração com Visual Studio? Como criar um projeto de extensibilidade de interface (PEX) com Visual Studio? Como criar um projeto de extensibilidade de API (Motor) com Visual Studio? Como criar separadores do utilizador com Visual Studio?