Forum
See question

Qual a forma mais eficiente de lançar faturas?   

106 views
0
0

Boas,

 

estou a converter uma extensibilidade de v9 para v10 (VBA para C#). O código lança faturas em bulk através de dados (valores de campos) escritos num ficheiro .txt.

A forma como foi escrito para o v9 abre um documento de venda, preenche os campos, e lança-os. Tendo em conta que o ficheiro .txt pode conter pra lá de 2000 registos, o processo todo pode demorar algumas horas a acabar.

Há uma maneira mais eficiente de lançar as faturas do que fazer o Primavera criar documentos um a um desta forma?

 

Cumprimentos,

Ricardo Santos

Faça login para poder traduzir
V10
Marked as spam
Created 1 year and 11 months ago ricardogiro
ricardogiro Responsiveness Member
2 answers
0
Private answer

Via API é o melhor como diz o Sérgio Sereno.

Já fiz um par de coisas parecidas, com a diferença de não ser TXT, mas sim uma WebAPI.

Deixo aqui a ideia principal:

  1. carregar a informação da origem (txt ou outra) e guardar numa DataTable ou List<DadosXPTO>;
  2. criar uma List<Task<VndBEDocumentoVenda>>;
  3. para cada registo nos dados anteriormente gravados, adicionar uma Task<VndBEDocumentoVenda>;
  4. criar uma função que crie um documento de venda, cujos parâmetros são os dados do registo e retorne um VndBEDocumentoVenda após gravação;
  5. esperar que todas as Tasks acabem (Task.WhenAll(myPrettyListOfVendas)) .

Posso adiantar que num servidor "medio/fraco", já fiz a gravação de 350 documentos com 2 ou 3 linhas cada em 8 a 10 minutos e não há problema com a integridade dos dados.

 

Faça login para poder traduzir
Marked as spam
Created 1 year and 9 months ago ricardorodrigues
    1
    Private answer

    Olá, a melhor forma de lançar os documentos é através da API só assim consegues garantir integridade dos dados. O que podes fazer é paralelizar o lançamento de o poderes por exemplo fazer em series diferentes.

    Faça login para poder traduzir
    Marked as spam
    Created 1 year and 11 months ago sergiosereno
    sergiosereno Most Valuable Professional
      Comments
      Penso ter conseguido criar com sucesso um commit à BD através do BSO.IniciaTransaccao() e os outros métodos da mesma família. No entanto estou preso com um erro de ”Cadeia de caractéres de entrada no formato incorrecto” quando tento fazer correr o método AvaliaActualizacao do BSO e não consigo perceber pelo erro exactamente qual o problema.
      1 year and 11 months ago
      ricardogiro