V10 ResourcesReference
ResourcesReference
Reference
Back | List of Articles

Integration of documents certified and signed by third party applications

Last changed in 02/07/2020

The Portuguese Decree "Despacho n.º 8632/2014", from July 3rd, introduces legal implications in the scope of software certification, namely, an ERP that integrates documents originated from third-party applications and subject to certification and signature. It should not apply any type of calculation on the documents.

Thus, a method (CalculoManual) was created to prevent the application of calculations when integrating documents.

When integrating this type of documents, they should be integrated in specific series, that is, the series should be configured as a series in which the "Issuer/source" is a "Third-party application".

In the code, you should activate the manual calculation parameter -> "objDocVenda.CalculoManual = True"

Example

As an example of an integration, the method "PreencheDadosRelacionados" is used, filling in the document data according to the entity configurations. This data should be changed with the data originated from the third-party application.

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();

        // Filling in header data
        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";

        // Handles document data. 
        // In case of third-party system integration, the data from the original data should be applied
        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;

        // Filling in VAT summary
        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;

        // Adds to the collection.
        // You should create as many rows as there are VAT taxable values (0,6,13,23)
        objDocVenda.ResumoIva.Insere(objResumoIva);

        // Fills in document totals
        objDocVenda.TotalMerc = 2000;
        objDocVenda.TotalDesc = 200;
        objDocVenda.TotalIva = 437;
        objDocVenda.TotalEcotaxa = 0;
        objDocVenda.TotalIEC = 0;
        // TotalOutros = other rows - adjustment rows
        objDocVenda.TotalOutros = 60;
        objDocVenda.TotalDocumento = 2297;

        BSO.Vendas.Documentos.Actualiza(objDocVenda);
    }
}
Bookmark or share this article
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
Últimos Artigos Vistos
How to retrieve inventory values using SQL statements?