V10 RecursosReferência
RecursosReferência
Referência
Voltar | Lista de artigos

Integração de documentos certificados e assinados por aplicações terceiras

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

O Despacho n.º 8632/2014, de 3 de julho, introduz implicações legais no âmbito da certificação de software, nomeadamente um ERP que integre documentos provenientes de aplicações terceiras e sujeitos a certificação e assinatura, não deverá aplicar qualquer tipo de cálculo sobre os documentos.

Assim, foi criado um método (CalculoManual) que inibe a aplicação de cálculos na integração de documentos.

Aquando da integração deste tipo de documentos, estes devem ser integrados em séries especificas para o efeito, ou seja, a série deverá estar configurada como sendo uma série em que o "Emissor/origem" é uma "Aplicação terceira".

No código, deverá ativar o parâmetro de cálculo manual -> "objDocVenda.CalculoManual = True"

Exemplo

Para o efeito apenas demonstrativo de exemplo de uma integração onde é aplicado este procedimento, é utilizado o método "PreencheDadosRelacionados" que preenche os dados do documento mediante as configurações da entidade. Esses dados deverão ser alterados com os dados provenientes da aplicação terceira.

using BasBE100;
using Primavera.Extensibility.BusinessEntities.ExtensibilityService.EventArgs;
using Primavera.Extensibility.Sales.Editors;
using VndBE100;

public class IntegraVendas
{
    public void GravaDocumento()
    {
        BasBEResumoIva objResumoIva = new BasBEResumoIva();
        VndBEDocumentoVenda objDocVenda = new VndBEDocumentoVenda();
        VndBELinhaDocumentoVenda objLinhaDocVenda = new VndBELinhaDocumentoVenda();

        // Preenchimento dados de cabeçalho
        objDocVenda.TipoDoc = "FA";
        objDocVenda.Serie = "E";
        objDocVenda.TipoEntidade = "C";
        objDocVenda.Entidade = "SOFRIO";
        objDocVenda.CalculoManual = true;
        objDocVenda.DescEntidade = 10;
        objDocVenda.DescFinanceiro = 0;
        objDocVenda.Assinatura = "AS0014651654135";
        objDocVenda.VersaoAssinatura = 1;
        objDocVenda.Certificado = "0033";

        // Trata dados do documento. 
        // No caso de integração de sistemas terceiros devem ser colocados os dados provenientes da aplicação original
        BSO.Vendas.Documentos.PreencheDadosRelacionados(objDocVenda);
        BSO.Vendas.Documentos.AdicionaLinha(objDocVenda, "A0001", 1, "A1", "A1.A.1.001", 1000);

        objLinhaDocVenda = objDocVenda.Linhas(objDocVenda.Linhas.NumItens);

        objLinhaDocVenda.Descricao = "Pentium D925 Dual Core";
        objLinhaDocVenda.Unidade = "UN";
        objLinhaDocVenda.Desconto1 = 0;
        objLinhaDocVenda.Desconto2 = 0;
        objLinhaDocVenda.Desconto3 = 0;
        objLinhaDocVenda.CodIva = "23";
        objLinhaDocVenda.TaxaIva = 23;
        objLinhaDocVenda.TotalIva = 207;
        objLinhaDocVenda.PrecoLiquido = 900;
        objLinhaDocVenda.FactorConv = 1;
        objLinhaDocVenda.TotalIliquido = 1000;

        BSO.Vendas.Documentos.AdicionaLinha(objDocVenda, "A0003", 1, "A1", "A1.A.5.001", 1000);

        objLinhaDocVenda = new VndBELinhaDocumentoVenda();
        objLinhaDocVenda = objDocVenda.Linhas(objDocVenda.Linhas.NumItens);

        objLinhaDocVenda.Descricao = "Computador Pentium III 1GHz";
        objLinhaDocVenda.Unidade = "UN";
        objLinhaDocVenda.Desconto1 = 0;
        objLinhaDocVenda.Desconto2 = 0;
        objLinhaDocVenda.Desconto3 = 0;
        objLinhaDocVenda.CodIva = "23";
        objLinhaDocVenda.TaxaIva = 23;
        objLinhaDocVenda.TotalIva = 207;
        objLinhaDocVenda.PrecoLiquido = 900;
        objLinhaDocVenda.FactorConv = 1;
        objLinhaDocVenda.TotalIliquido = 1000;

        BSO.Vendas.Documentos.AdicionaLinhaEspecial(objDocVenda, BasBETiposGcp.vdTipoLinhaEspecial.vdLinha_Acerto, 40, "Acerto");

        objLinhaDocVenda = new VndBELinhaDocumentoVenda();

        objLinhaDocVenda = objDocVenda.Linhas(objDocVenda.Linhas.NumItens);

        objLinhaDocVenda.PrecoLiquido = 40;
        objLinhaDocVenda.TotalIliquido = 40;

        BSO.Vendas.Documentos.AdicionaLinhaEspecial(objDocVenda, BasBETiposGcp.vdTipoLinhaEspecial.vdLinha_Acerto, 100, "Portes");

        objLinhaDocVenda = new VndBELinhaDocumentoVenda();

        objLinhaDocVenda = objDocVenda.Linhas(objDocVenda.Linhas.NumItens);

        objLinhaDocVenda.CodIva = "23";
        objLinhaDocVenda.TaxaIva = 23;
        objLinhaDocVenda.TotalIva = 23;
        objLinhaDocVenda.PrecoLiquido = 100;
        objLinhaDocVenda.TotalIliquido = 100;

        // Preenchimento do resumo de IVA
        objResumoIva.Modulo = "V";
        objResumoIva.TipoDoc = objDocVenda.TipoDoc;
        objResumoIva.NumDoc = objDocVenda.NumDoc;
        objResumoIva.Serie = objDocVenda.Serie;
        objResumoIva.Filial = 0;
        objResumoIva.CodIva = "23";
        objResumoIva.TaxaIva = 23;
        objResumoIva.Incidencia = 1900;
        objResumoIva.Valor = 437;

        // Adiciona à coleção.
        // Devem ser criadas tantas linhas quantas as incidencias de IVA (0,6,13,23)
        objDocVenda.ResumoIva.Insere(objResumoIva);

        // Preenche totais do documento
        objDocVenda.TotalMerc = 2000;
        objDocVenda.TotalDesc = 200;
        objDocVenda.TotalIva = 437;
        objDocVenda.TotalEcotaxa = 0;
        objDocVenda.TotalIEC = 0;
        // TotalOutros = linhas de outros - linhas de acerto
        objDocVenda.TotalOutros = 60;
        objDocVenda.TotalDocumento = 2297;

        BSO.Vendas.Documentos.Actualiza(objDocVenda);
    }
}
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
Características das entidades e serviços Conceito de integração Conceito de extensibilidade Como registar projetos de extensibilidade? Boas práticas de organização de projetos de integração