Fórum
Ver pergunta

Gerar 2 PDF’s de documentos em simultâneo através dos Motores – V10   

134 visualizações
0
0

Tenho um projecto ASP.NET Web API que integro com o Primavera 10. Segui um dos exemplos do GitHub

Um dos endpoints da minha API permite ao utilizador fazer o download das faturas no formato PDF.

Tudo funciona correctamente até outro utilizador fazer um pedido antes do primeiro terminar.

Ou seja, quando um utilizador faz o download do PDF, o motor vai gerar o PDF e esse processo demora alguns segundos. Se nesse intervalo de tempo outro utilizador também fizer o mesmo pedido para gerar PDF, ambos os pedidos dão erro.

A resposta destes pedidos tem a propriedade Status = “ERROR”, o que quer dizer que a função ImprimeDocumento devolveu false mas não lançou exceção…

O código que estou a utilizar:

[HttpPost]
[ActionName("pdf")]
public PdfResponse Pdf(PdfArgs args)
{
    PdfResponse response = new PdfResponse();
    response.Status = "OK";

    StdPlatBS Plataforma = new StdPlatBS();
    ErpBS Motor = new ErpBS();

    try
    {
        EnumTipoPlataforma tipoPlat = EnumTipoPlataforma.tpProfissional;
        StdBSConfApl objAplConf = new StdBSConfApl();
        objAplConf.Instancia = "Default";
        objAplConf.AbvtApl = "ERP";
        objAplConf.PwdUtilizador = password;
        objAplConf.Utilizador = username;
        objAplConf.LicVersaoMinima = "10.00";
        StdBETransaccao objStdTransac = new StdBETransaccao();
        Plataforma.AbrePlataformaEmpresa(empresa, objStdTransac, objAplConf, tipoPlat);
        if (Plataforma.Inicializada)
        {
            Motor.AbreEmpresaTrabalho(tipoPlat, empresa, username, password, objStdTransac, "DEFAULT");
            int numDoc = int.Parse(args.Documento.NumDoc);
            string filename = string.Format("{0}_{1}_{2}.pdf", args.Documento.Serie, args.Documento.TipoDoc, args.Documento.NumDoc);
            string destinoPdf = string.Format("C:\\DOCS\\{0}", filename);
            bool printed = Motor.Vendas.Documentos.ImprimeDocumento(args.Documento.TipoDoc, args.Documento.Serie, numDoc, filial, DestinoPDF: destinoPdf);
            if (!printed)
            {
                response.Status = "ERROR";
            }
            response.Message = destinoPdf;
        }
    }
    catch (Exception ex)
    {
        response.Status = "NOK";
        response.Message = ex.Message.ToString();
        response.Trace = ex.StackTrace.ToString();
    }
    finally
    {
        Motor?.FechaEmpresaTrabalho();
        Plataforma?.FechaPlataformaEmpresa();
    }

    return response;
}
Faça login para poder traduzir
Integração
V10
Marcado como spam
Criado há 6 anos e 6 dias pedro-loureiro
Comentários
@pedro-loureiro Viste este exemplo https://github.com/PrimaverabssDeveloper/Community?
6 anos e 5 dias
sergiosereno