Integração de documentos certificados e assinados por aplicações terceiras
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" 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.Exemplo
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);
}
}
login para deixar a sua opinião.