V10 RecursosReferencia
RecursosReferencia
Referencia
Años | Lista de Artículos

Integración de documentos certificados y firmados por aplicaciones de terceros

Última modificación el 03/05/2024

La Orden n.º 8632/2014, de 3 de julio, introduce implicaciones legales para la certificación de software; por ejemplo, un ERP que integre documentos procedentes de aplicaciones de terceros que estén sujetos a certificación y firma no debe aplicar ningún tipo de cálculo a los documentos..

Por ello, se ha creado un método (CalculoManual) para evitar la aplicación de cálculos al integrar documentos.

Si se integran este tipo de documentos, debe hacerse en series específicas para ello, es decir, la serie debe configurarse como una en la que el "Emisor/origen" sea una "Aplicación de terceros".

En el código, debe activar el parámetro de cálculo manual -> "objDocVenda.CalculoManual = True"

Ejemplo

Con el único propósito de demostrar un ejemplo de integración en el que se aplica este procedimiento, se utiliza el método "PreencheDadosRelacionados", que rellena los datos del documento utilizando la configuración de la entidad. Estos datos deben modificarse con los datos procedentes de la aplicación de terceros.

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);
    }
}
Bookmark or share this article
Esta página foi útil?
Obrigado pelo seu voto.
Artículos Relacionados
Características de las entidades y servicios Concepto de integración Concepto de extensibilidad ¿Cómo registrar proyectos de extensibilidad? Buenas prácticas de organización de proyectos de integración