Forum
See question

AbreEmpresaTrabalho e ImprimeDocumento em várias empresas em simultâneo   

123 views
0
0

Boa tarde,

 

Tenho um formulário com uma datagridview com dados para lançar documentos de venda em várias empresas em simultâneo, na datagridview existe uma coluna com o código da empresa.

 

Vou percorrendo a datadridview e trocando de empresa com o método “AbreEmpresaTrabalho”, os documentos são criados no módulo de vendas corretamente em todas as empresas, no entanto, ao imprimir (logo após gravar cada documento) através do método “ImprimeDocumento” o pdf fica sempre com os dados da empresa de onde está a correr o formulário. A única coisa que fica correta é a numeração do documento ex: FA 2023/123.

 

Atualmente estou a fazer isto na v10 em c#. Tinha algo parecido em vba na v9 que funcionava a partir de um Excel e funcionava corretamente.

 

Já tentei forçar fechar a empresa antes de abrir a nova, mas não resolveu:

BSO.FechaEmpresaTrabalho();
BSO.AbreEmpresaTrabalho(objTipoPlataforma, pCodEmp, pUser, pPass, null, “Default”);

 

Tentei também fazer a impressão através de dois métodos distintos e ambos tiveram o mesmo comportamento:

BSO.Vendas.Documentos.ImprimeDocumento(
pObjDocVenda.Tipodoc,
pObjDocVenda.Serie,
pObjDocVenda.NumDoc,
pObjDocVenda.Filial,
numeroVias,
mapaImpressao,
false,
pdfFilename
);

BSO.Base.FuncoesGlobais.ImprimeDocumento(
“V”,
pObjDocVenda.Tipodoc,
pObjDocVenda.Serie,
pObjDocVenda.NumDoc,
pObjDocVenda.Filial,
numeroVias,
mapaImpressao,
false,
pdfFilename
);

 

Alguém já se deparou com isto ou estarei a fazer alguma coisa errada?

Obrigado

Faça login para poder traduzir
V10
Mapas e Relatórios
Marked as spam
Created 1 year and 2 months ago hldersilva
hldersilva Iniciante
2 answers
0
Private answer

Viva @brunosilvamarques,

Obrigado pelo comentário, não consegui dessa forma (que é similar à que tenho), mas entretanto consegui de outra forma com algum código que por aqui encontrei.

No entanto tive de acrescenter a linha "SetDataBaseConnection":

//Alterar esta selection formula.
var strSelFormula = $"{{CabecDoc.TipoDoc}}='{pObjDocVenda.Tipodoc}' and {{CabecDoc.Serie}} = '{pObjDocVenda.Serie}' AND {{CabecDoc.NumDoc}}={Convert.ToString(pObjDocVenda.NumDoc)}";
PSO.Mapas.Inicializar("VND");

var strFormula = new StringBuilder();
strFormula.Append($"StringVar Nome:='{BSO.Contexto.IDNome}';");
strFormula.Append($"StringVar Morada:='{BSO.Contexto.IDMorada}';");
strFormula.Append($"StringVar Localidade:='{BSO.Contexto.IDLocalidade}';");
strFormula.Append($"StringVar CodPostal:='{BSO.Contexto.IDCodPostal} {BSO.Contexto.IDCodPostalLocal}';");
strFormula.Append($"StringVar Telefone:='{BSO.Contexto.IDTelefone}';");
strFormula.Append($"StringVar Fax:='{BSO.Contexto.IDFax}';");
strFormula.Append($"StringVar Contribuinte:='{BSO.Contexto.IFNIF}';");
strFormula.Append($"StringVar CapitalSocial:='{BSO.Contexto.ICCapitalSocial}';");
strFormula.Append($"StringVar Conservatoria:='{BSO.Contexto.ICConservatoria}';");
strFormula.Append($"StringVar Matricula:='{BSO.Contexto.ICMatricula}';");
strFormula.Append($"StringVar MoedaCapitalSocial:='{BSO.Contexto.ICMoedaCapSocial}';");
PSO.Mapas.SetFormula("DadosEmpresa", strFormula.ToString());

//A existir parametros devem ir aqui
var strParametros = new StringBuilder();
strParametros.Append("NumberVar TipoDesc;");
strParametros.Append("NumberVar DecQde;");
strParametros.Append("NumberVar DecPrecUnit;");
strParametros.Append("StringVar MotivoIsencao;");
strParametros.Append("BooleanVar UltimaPag;");
strParametros.Append("StringVar PRI_TextoCertificacao;");
strParametros.Append("TipoDesc:= 0;");
strParametros.Append("DecQde:=0;");
strParametros.Append("UltimaPag:=False;");
strParametros.Append($"NumVia:='{i}';");
//strParametros.Append($"PRI_TextoCertificacao:='{PriEngine.Engine.Comercial.Vendas.DevolveTextoAssinaturaDoc(tipoDoc, serie, numDocm, "000")}';");
PSO.Mapas.SetFormula("InicializaParametros", strParametros.ToString());

PSO.Mapas.Destino = 0;
PSO.Mapas.SetFileProp(StdBSTipos.CRPEExportFormat.efPdf, pdfFilename);

PSO.Mapas.SetDataBaseConnection("server", "bd", "user", "senha");
PSO.Mapas.ImprimeListagem(mapaImpressao, "Invoice", "P", 1, "N", strSelFormula, 0, false, true);

 

Agora só me falta descobrir onde está o "DevolveTextoAssinaturaDoc"...

Faça login para poder traduzir
Marked as spam
Created 1 year and 2 months ago hldersilva
hldersilva Iniciante
    Comments
    BSO.Vendas.Documentos.DevolveTextoAssinaturaDoc()
    1 year and 2 months ago
    hldersilva
      0
      Private answer

      Viva Hélder existem várias situações que podes implementar para resolver.
      Como desconheço o teu código o melhor seria fazeres por exemplo o seguinte:

      Lançar os documentos e guardar os ids após gravação com sucesso e imprimir depois.
      Podes por exemplo usar a seguinte abordagem:

             public class DocumentoIntegrado
              {
                  public string idDoc{ get; set; }
                  public bool Sucesso { get; set; }
              }
      
      
              public IntegraDocumentos()
              {
                  Hashtable documentosIngrados = new Hashtable();
      
                  while (true) //Para cada rigisto
                  {
      
                      var id = "id_docummento"; //após integração
      
                      //codigoEpresa => Exemplo "DEMO"
                      if (!(documentosIngrados["codigoEpresa"] as List<DocumentoIntegrado>).Exists(d => d.idDoc.Equals(id)))
                          (documentosIngrados["codigoEpresa"] as List<DocumentoIntegrado>).Add(new DocumentoIntegrado() { idDoc = id, Sucesso = true });
                  }
      
                  //Para cada Empresa
                  foreach (var empresa in documentosIngrados.Keys)
                  {
                      //AbreEmpresa(empresa)
                      foreach (var documento in (documentosIngrados[empresa] as List<DocumentoIntegrado>)) 
                      {
                          //ImprimeDocumento(documento.idDoc)...
                          //...
                      }
                      //FechaEmpresa(empresa)
                  }
      
                  //...
          }

       

       

      Faça login para poder traduzir
      Marked as spam
      Created 1 year and 2 months ago brunosilvamarques