Fórum
Ver pergunta

Integraçao python com primavera v9   

90 visualizações
0
0

Olá,

estou a tentar desenvolver uma aplicacao para leitura e classificação de faturas, e depois inseri las no primavera. Gostaria de saber qual a melhor forma de o fazer. Estou a utilizar uma livraria “pythonnet” para conseguir importar as DLL do primavera e aceder as funcções do mesmo, mas no entanto nao sei se estaé a melhor forma de fazer o que pretendo, e mesmo continuando com este metodo precisava de documentação sobre as funcoes. Tambem pensei em escrever diretamente na BD mas essa forma deve ser ainda mais complicada, pois nao tenho conhecimento da estrutura da BD.

Eu consegui fazer isto até agora:

clr.AddReference(r'dll\SG900\Interop.RhpBE900')

from Interop.RhpBE900 import RhpBEFuncionario

funcionario = RhpBEFuncionario()

teste_func = {
"Funcionario" : 1,
"Nome" : "zeq",
"DataAdmissao": "2020-01-01",
"Situacao": "empregado",
"Instrumento": "Idk",
"Estabelecimento" : "acb",
"SegurancaSocial": "123546789",
}

func = RhpBEFuncionario(teste_func)

mas devovle me o seguinte erro:

TypeError: object does not implement RhpBEFuncionario

tambem tentei criar um dicionario de c#

from System.Collections.Generic import Dictionary
from System import String
from System import Object

func2 = Dictionary[String, Object]()
func2["Nome"] = "Ze"
func2["Funcionario"] = "999"
func2["DataAdmissao"] = "2020-01-01"
func2["Situacao"] = "Teste"
func2["Instrumento"] = "Teste"
func2["Estabelecimento"] = "Teste"
func2["SegurancaSocial"] = "123456789"

mas o erro é o mesmo

Update:

Penso que consigo usar a dll mas agora estou com um erro estranho no regedit

motor().AbreEmpresaTrabalho("2", "TESTE", "Primavera", "Primavera.123")
... 
Traceback (most recent call last):
  File "<input>", line 1, in <module>
System.Runtime.InteropServices.COMException: REGISTO: Entrada HKEY_LOCAL_MACHINE\Software\PRIMAVERA\SGS900\DEFAULT\ADM não encontrada.
   em Interop.ErpBS900.ErpBSClass.AbreEmpresaTrabalho(EnumTipoPlataforma& enuTipoPlataforma, String& strCodEmp, String& strUtilizador, String& strPassword, StdBETransaccao& objTrans, String& strInstancia, Boolean& blnModoPrimario)

 

cpts.

 

Faça login para poder traduzir
Integração
Marcado como spam
Criado há 5 anos e 6 meses patrickarsenio
p
patrickarsenio Iniciante
1 respostas
0
Resposta privada

O teu problema está o targetCPU do teu projeto em relação à arquitectura da tua maquina, isto é, a tua maquina deve ser de 64bits e o teu ptojeto está com targetCPU de 32bit (x86). Assim a aplicação está a procurar à procura de uma entrada de registo que está em HKEY_LOCAL_MACHINESOFTWAREWOW6432NodePRIMAVERA

Faça login para poder traduzir
Marcado como spam
Criado há 5 anos e 6 meses sergiosereno
sergiosereno Most Valuable Professional
    Comentários
    Olá, Sim está correto (tenho maquina 64bits e estou a trabalhar com python32bits), as DLL do primavera a que tenho acesso estão todas compiladas como 32 bits, e não sei como posso fazer para mudar isto. Tentei criar manualmente as chaves no regedit mas o erro continua a aparecer.
    5 anos e 6 meses
    patrickarsenio
      Ola, tenho o primavera instlaado num amaquina ed 32 bits e agora quando tento chamar a funcao AbreEmpresaTrabalho tenho outro erro, IndexError: tuple assignment index out of range The above exception was the direct cause of the following exception: Traceback (most recent call last): File "", line 1, in SystemError: returned a result with an error set eu tive de registar as DLL manualmente no regedit, pois ao instalar o primavera ele criar no regedit a chaves SGP900, mas quando vou usar a DLL ela pede me o caminho SGS900.
      5 anos e 6 meses
      patrickarsenio