Integración de documentos certificados y firmados por aplicaciones de terceros
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" 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.Ejemplo
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);
}
}