Fórum
Ver pergunta

Como fazer a impressão de documentos de compra por API?   

Fechada
173 visualizações
0
0
Fechada.

This question was closed because it isn't clear or needs more details. To improve it, please check our FAQs.

Boa tarde a todos,

Estou a utilizar os motores da V10, e pretendo imprimir para ficheiro um documento de contra tendo por base o id do mesmo.

Estou a executar o seguinte codigo:

  public static RespIntPrint ImprimeDocs(string IdDoc, string Tdoc, string emp)
        {
            var res = new RespIntPrint();
            var cam = @"C:\PrimaveraAPI\API\API\TempFiles\" + IdDoc + ".pdf";
            try
            {
                PriEngine.CreatContext(emp, UserERP, Passerp, "Default");

                if (PriEngine.EngineStatus)
                {
                    StringBuilder status = new StringBuilder();

                    status.Append("Company: " + PriEngine.Platform.Contexto.Empresa.CodEmp + " | ");
                    status.Append("Company Name: " + PriEngine.Platform.Contexto.Empresa.IDNome + " | ");
                    status.Append("Currency: " + PriEngine.Platform.Contexto.Empresa.MoedaBase);

                }
            }
            catch (Exception ex)
            {
                res.status = ex.Message;
                return res;
            }
           
            bool okmapa = new bool();

         if (PriEngine.Engine.Compras.TabCompras.Existe(Tdoc))
            {
                ICmpBEDocumentoCompra docfin = PriEngine.Engine.Compras.Documentos.EditaID(IdDoc);
                okmapa = PriEngine.Engine.Compras.Documentos.ImprimeDocumento(docfin.Tipodoc, docfin.Serie, docfin.NumDoc, docfin.Filial, 0, "GCPILS02", false, cam);
            }
            if (okmapa)
            {
                res.status = "OK";
                res.caminho = cam;
            }
            else
            {
                res.status = "Erro";
                res.caminho = "Não foi possivel imprimir o documento pedido.";
            }
            return res;
        }

Passa bem pela abertura dos motores, valida que o Tdoc existe na tabela e quando tento abrir o documento pelo metodo editaid da o seguinte erro:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderInternalCompilerException: ‘An unexpected exception occurred while binding a dynamic operation’

Já tentei passar o id desta forma: {E4882C04-AFE6-11EA-AE44-9C5A44262BFE} e E4882C04-AFE6-11EA-AE44-9C5A44262BFE

O que será que estou a fazer de errado?

Cumprimentos,

LS

Faça login para poder traduzir
V10
Marcado como spam
Criado há 5 anos e 8 meses luissoares
l
luissoares Iniciante
1 respostas
0
Resposta privada

Bom dia,

Na continuação do mesmo post, no mesmo codigo tenho a impressão dos documentos de venda, que neste caso, vai buscar o documento de forma correta, no entanto ao imprimir retorna sempre falso. Vou colocar aqui todo o codigo.

 public static RespIntPrint ImprimeDocs(string IdDoc, string Tdoc, string emp) /* erro nos metodos de impressão. colocado no forum */
        {
            var res = new RespIntPrint();
            var cam = @"C:Program Files (x86)PrimaveraV10SG100DadosLEANEXOS" + IdDoc + ".pdf";
            try
            {
                PriEngine.CreatContext(emp, UserERP, Passerp, "Default");

                if (PriEngine.EngineStatus)
                {
                    StringBuilder status = new StringBuilder();

                    status.Append("Company: " + PriEngine.Platform.Contexto.Empresa.CodEmp + " | ");
                    status.Append("Company Name: " + PriEngine.Platform.Contexto.Empresa.IDNome + " | ");
                    status.Append("Currency: " + PriEngine.Platform.Contexto.Empresa.MoedaBase);

                }
            }
            catch (Exception ex)
            {
                res.status = ex.Message;
                return res;
            }
           
            bool okmapa = new bool();

       if (PriEngine.Engine.Compras.TabCompras.Existe(Tdoc))
            {
                var docfin = PriEngine.Engine.Compras.Documentos.EditaID(IdDoc);
                okmapa = PriEngine.Engine.Compras.Documentos.ImprimeDocumento(docfin.Tipodoc, docfin.Serie, docfin.NumDoc, docfin.Filial, 0, "GCPCLS02", false, cam);
            }
            else if (PriEngine.Engine.Vendas.TabVendas.Existe(Tdoc))
            {
                var docfin = PriEngine.Engine.Vendas.Documentos.EditaID(IdDoc);
                okmapa = PriEngine.Engine.Vendas.Documentos.ImprimeDocumento(docfin.Tipodoc, docfin.Serie, docfin.NumDoc, docfin.Filial,1,"GCPVLS06",false,cam);
            }
            if (okmapa)
            {
                res.status = "OK";
                res.caminho = cam;
            }
            else
            {
                res.status = "Erro";
                res.caminho = "Não foi possivel imprimir o documento pedido.";
            }
            return res;
        }

Não estou a entender o que se passa.

Na realidade estou a converter código de motores V9 para V10, toda esta função em VB net funciona bem para a V9.

O que será que estou a fazer mal?!

Agradeço o vosso feedback.

Faça login para poder traduzir
Marcado como spam
Criado há 5 anos e 8 meses luissoares
l
luissoares Iniciante
    Comentários
    @luissoares A questão foi fechada porque viola regra do site. Uma questão deve ser só sobre um tema, respostas como questão também é uma pratica invalida. Se reformular as questões ela será reaberta e terá a ajuda.
    5 anos e 8 meses
    sergiosereno