← Desenvolvimento

Projecto de integração PHC e website com webservices

Lida 16850 vezes

Offline

cpdesign 
Membro
Mensagens 235 Gostos 1
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Penso que a solução reside em achar um compromisso ou fazer algumas cedências, tendo em conta as tecnologias e meios disponíveis (sem esquecer a segurança).

Existem diversos modos de se obter o efeito pretendido:
A) O ideal seria que as aplicações residissem no mesmo servidor ou possuissem IPs públicos para poderem comunicar directamente por exemplo por webservices
B) Criar uma aplicação intermediária (chamemos-lhe proxy) que efectue a sincronia entre ambos as aplicações (normalmente instalada na mesma rede ou máquina da aplicação local)
C) Criar importadores e exportadores de ficheiros para fazer o update entre ambas as aplicações em formato XLS, CSV ou factura electrónica.

Usando o ASP.NET e .Net Desenvolvi uma aplicação B2B  online que através de um proxy faz a sincronia com uma aplicação de gestão comercial em Oracle, que processa um grande volume de produtos, encomendas e stocks.

Em breve irei usar o mesmo sistema com uma aplicação PHC e ainda outra com bases de dados de instituições de dimensão nacional.
Offline

epsy 
Membro
Mensagens 552 Gostos 1
Feedback +1

Troféus totais: 25
Trófeus: (Ver todos)
Search Windows User Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1

Existem diversos modos de se obter o efeito pretendido:
A) O ideal seria que as aplicações residissem no mesmo servidor ou possuissem IPs públicos para poderem comunicar directamente por exemplo por webservices
Exacto, o ideal seria que todas as aplicações residissem no mesmo servidor, mas a realidade é diferente. O PHC vai estar no computador local de apoio à actividade do cliente e a  aplicação web vai estar num servidor remoto. E o computador local não possui IP´s públicos.

B) Criar uma aplicação intermediária (chamemos-lhe proxy) que efectue a sincronia entre ambos as aplicações (normalmente instalada na mesma rede ou máquina da aplicação local)
A ideia é mesmo essa: criar uma aplicação que efectue a troca de dados entre o PHC e a aplicação web (esta aplicação ficará instalada no computador do PHC).


C) Criar importadores e exportadores de ficheiros para fazer o update entre ambas as aplicações em formato XLS, CSV ou factura electrónica.
Como referi, o ideal seria que o PHC tivesse rotinas próprias de importação dos dados com origem no site (o formato poderia ser qualquer um desses: xml, csv, etc), mas a versão Corporate do PHC é muito limitada em termos de implementação de novas rotinas e funcionalidades.
Por essa razão, provavelmente será necessário que essa aplicação "middle man" tenha de ir ler / inserir dados directamente na BD do PHC.
Offline

BootSector 
Membro
Mensagens 155 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Level 5 Avatar Tenth year Anniversary Nineth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 4 Level 3

Boas. O que procuras já existem aplicações que fazem isso.
Eu tenho desenvolvido para interligar o PHC com o oscommerce e prestashop.

...
A ideia é mesmo essa: criar uma aplicação que efectue a troca de dados entre o PHC e a aplicação web (esta aplicação ficará instalada no computador do PHC).
...

uma vista de olhos: http://www.wrce.pt/lang-pt/produtos/desenvolvimento-de-software/integracao-software-phc.html


Viva Hugo,
Algum tempo depois cá estou eu de novo :)
Segui as tuas dicas e criei uma aplicação em C# que faz a sincronização entre o PHC e o website.
Para acabar só falta mesmo a parte das encomendas.
Tenho algumas dúvidas porque as encomendas não estão apenas centradas numa tabela.Por exemplo a maior parte dos dados da encomenda é introduzida na tabela BO ( Dossiers Internos ) mas depois o produto,por exemplo está na tabela BI. Ou seja,para colocar uma encomenda vou ter de mexer em mais do que uma tabela.
Sabes onde posso encontrar a enciclopédia PHC? Estou farto de ouvir falar mas não sei onde encontrar isso..lol

As encomendas lançam-se na BO, BI preservando o bostamp para as linhas, entre outros campos. Em relação à enciclopédia não vais lá encontrar este tipo de informação.


Senão estou em erro, o PHC Enterprise (topo de gama) tem uma framework de desenvolvimento que permite programar (em XBase) novas rotinas e funcionalidades.  Neste caso seria preferível implementar rotinas de importação / exportação de dados em ficheiros xml, csv, etc.

O problema é que a versão do PHC para a qual vamos fazer a implementação, é muito provavelmente a versão corporate (que ao que sei, não tem essa framework de programação), o que obriga a que a aplicação local externa tenha de se ligar directamente à base de dados do PHC ( que eu preferia evitar).

O Corporate tambem permite isso... tens os "Valores por Defeito" usando os eventos qdo grava ou actualiza, "Teclas do Utilizador", botões nos ecrans personalizados. Em todos eles podes configurar para correr uma expressão xbase... tambem é possível correr .net framework (dlls em vb.net, c#, etc) dentro do phc.. em xbase e COM objects e usar quando disparam esses eventos.

Cumprimentos
Offline

pluis3103 
Membro
Mensagens 19 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Seventh year Anniversary

Naaaaa. Ele até gosta :)

De qualquer forma já falei com ele e ficou de me enviar mais info assim que tenha acesso à net.
Atendendo a que está no Panamá... não sei quando vai ser :)

Sempre às ordens.

Lol, muito obrigado Hugo, vocês são 5 Estrelas.
Offline

pluis3103 
Membro
Mensagens 19 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Seventh year Anniversary

Nem de propósito, comentei o teu post há umas semanas e agora surgiu-me uma solução muito semelhante para desenvolver.

Concretamente, também vamos desenvolver uma solução que permita sincronizar dados entre o PHC e uma aplicação web.
Basicamente os requisitos são:

- importar (sincronizar) novos clientes e encomendas do website para o phc
- exportar  produtos / sincronizar stocks do phc para o website.

Do lado do site (em asp.net), provavelmente iremos optar por desenvolver um webservice,  que recebe os pedidos enviados pela aplicação local e implementa esses pedidos na base de dados do site.

Os pedidos que a aplicação fará ao webservice, serão deste género:
- Enviar  a ficha dos novos clientes que se registaram no site
- Enviar os dados das novas encomendas feitas no site
- Inserir / actualizar produtos na base de dados do site

Do lado do PHC, iremos desenvolver uma aplicação local que envia os pedidos ao webservice e faz as correspondentes actualizações na base de dados do PHC.

Senão estou em erro, o PHC Enterprise (topo de gama) tem uma framework de desenvolvimento que permite programar (em XBase) novas rotinas e funcionalidades.  Neste caso seria preferível implementar rotinas de importação / exportação de dados em ficheiros xml, csv, etc.

O problema é que a versão do PHC para a qual vamos fazer a implementação, é muito provavelmente a versão corporate (que ao que sei, não tem essa framework de programação), o que obriga a que a aplicação local externa tenha de se ligar directamente à base de dados do PHC ( que eu preferia evitar).


Podes-me dizer para qual é versão do phc da tua solução?. E quais as dificuldades principais que encontraste? Suponho que a complexidade do esquema da base de dados do PHC e os nomes estranhos que as tabelas têm, tenha sido uma delas.



Viva,
Eu fiz o seguinte:
Desenvolvi uma interface em c# que faz o trabalho todo de verificar se existem novas entradas (encomendas , clientes ) no website acedendo directamente à base de dados do website e faz a mesma coisa em relação à base de dados do PHC.
Por exemplo, no PHC para verificar se tens novos produtos para fazer upload podes usar 2 campos da bd. Um deles é a data de actualização do produto e o outro é a data de inserção do produto. Através destes 2 campos podes sempre verificar se existem produtos para actualizar no site.
Já com as encomendas e clientes tens de usar variaveis que podes por exemplo guardar em ficheiros de texto de forma a saberes o que há para importar para um ou outro lado.

Eles vão facultar-te algum acesso a um PHC? Eu tou a desenvolver para a versão corporate e se te facultarem um acesso podes consultar o dicionário de dados que existe na própria aplicação da PHC. Está mt bem feita, tens as tabelas todas e todos os campos, a maior parte com descrição do que faz.
Eu penso que isto não dá para exportar mas se não te derem acesso diz-me que vejo o que posso fazer em relação a isso .
Depois tens de perceber mt bem onde tens de introduzir o quê. Portanto, o recomendável é teres um PHC corporate para experimentares à medida que desenvolves.

Qualquer coisa que te possa ajuda é só dizeres.

Cumprimentos,

Paulo

Os pedidos que a aplicação fará ao webservice, serão deste género:
- Enviar  a ficha dos novos clientes que se registaram no site
- Enviar os dados das novas encomendas feitas no site
- Inserir / actualizar produtos na base de dados do site
Offline

appsc 
Membro
Mensagens 1 Gostos 0
Troféus totais: 14
Trófeus: (Ver todos)
Super Combination Combination Level 3 Level 2 Level 1 First Post Karma Seventh year Anniversary Sixth year Anniversary Fifth year Anniversary

Estou a gerir algumas lojas online, e uma delas é integrada ao nível de produtos, clientes e dossiers internos com o PHC. O projecto não foi programado por mim, mas sim por uma empresa do Porto chamada lvengine, eu apenas faço a gestão do site e alguma programação. Sei que eles fazem sincronizações de 15 em 15 minutos e instalaram um serviço no computador do meu cliente chamado Uplink, que de um modo resumido, passa algumas tabelas do SQL para a base de dados do lado da lvengine (O alojamento fica na LVengine).  Deixaram-me uma espécie de framework onde posso alterar o que quiser no site e mesmo até nos campos a sincronizar com o PHC.
Até agora tem funcionado bem, mas estou curioso em relação ao desenvolvimento que estás a fazer.

Offline

epsy 
Membro
Mensagens 552 Gostos 1
Feedback +1

Troféus totais: 25
Trófeus: (Ver todos)
Search Windows User Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1


Por exemplo, no PHC para verificar se tens novos produtos para fazer upload podes usar 2 campos da bd. Um deles é a data de actualização do produto e o outro é a data de inserção do produto. Através destes 2 campos podes sempre verificar se existem produtos para actualizar no site.
Já com as encomendas e clientes tens de usar variaveis que podes por exemplo guardar em ficheiros de texto de forma a saberes o que há para importar para um ou outro lado.

Eles vão facultar-te algum acesso a um PHC? Eu tou a desenvolver para a versão corporate e se te facultarem um acesso podes consultar o dicionário de dados que existe na própria aplicação da PHC. Está mt bem feita, tens as tabelas todas e todos os campos, a maior parte com descrição do que faz.
Eu penso que isto não dá para exportar mas se não te derem acesso diz-me que vejo o que posso fazer em relação a isso .
Depois tens de perceber mt bem onde tens de introduzir o quê. Portanto, o recomendável é teres um PHC corporate para experimentares à medida que desenvolves.



Viva, obrigado pelas dicas. Eu para já não tenho acesso ao PHC, mas como quero adiantar trabalho, consegui o dicionário de dados relativo a algumas tabelas.

Pelo que percebi, a tua aplicação grava dados directamente na base de dados do PHC. O contrato do PHC permite isso? Será que eles depois podem usar o argumento de que por haver aplicações externas que se ligam directamente à base de dados do PHC e que alteram dados, não garantem ou não dão a assistência contratada?
Offline

epsy 
Membro
Mensagens 552 Gostos 1
Feedback +1

Troféus totais: 25
Trófeus: (Ver todos)
Search Windows User Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1

Como disse no post anterior, neste momento não tenho acesso ao PHC de forma permanente, por isso venho pedir umas dicas ao pessoal que está familiarizado com base de dados do PHC.

Algumas questões:
1 - o PHC permite estruturar árvores (com hierarquias) de famílias por defeito?

Um exemplo de famílias e sub-familias:
Código: (div) [Seleccione]
Computadores
- Portáteis
- Desktop
Acessórios
- Ratos
- - Wireless
- - USB


2-  Qual a tabela e quais os campos que normalmente se usam para registar as famílias (categorias) de produtos de forma a conseguir ter uma estrutura hierarquizada?


3- Que campos da Tabela clientes (CL) é que sugerem que use  para identificar os clientes  com origem no site? (Será que posso usar o campo CL.SITE (Loja), ou este campo tem outra aplicação?)

4 - Uma questão semelhante à anterior, mas relativa à tabela de encomendas: poderei usar o campo BO.SITE para registar as encomendas com origem no site?

cumprimentos.

@bootsector
Obrigado pelas dicas sobre a possibilidade de correr rotinas em xbase, ou usando dlls .Net externas no corporate. Não fazia ideia.

@pluis3103
As tuas indicações relativas aos campos com as datas de actualização e inserção do produto, foram muito úteis (referias-te aos campos OPENDATA e UDATA, certo?).