Programa customizável

Olá!

Preciso desenvolver um programa, em que seus componentes não sejam ?engessados? na tela, mas sim, o usuário possa escolher os campos que quer que sejam exibidos e ainda, criar novos campos, radiobuttons, etc…

Tentarei explicar melhor:

Um programa de vendas para lojistas, onde temos diversos tipos de cartões de crédito pelo Brasil inteiro, diversas formas de pagamento, etc. Se eu engessar o programa, terei sempre que alterar cada programa de acordo com a loja.

Exemplo:
Loja 1 trabalha com os cartões Visa e Master.
Loja 2 apenas com American Express.
Loja 3 trabalha com Visa, Master e American Express.
Loja 4 trabalha com Master, mas deseja no futuro, trabalhar com o Visa também.

Teria que sempre alterar o programa para se adaptar em cada loja, e ainda, no exemplo da loja 4, no futuro teria que adicionar outra opção de cartão.
Minha ideia seria criar um programa totalmente customizável, onde o próprio lojista pudesse personalizar seu programa, adicionando cartões, tipos de pagamento de cada cartão e etc, de acordo com a sua loja.

Minha dúvida: como fazer isso? Heheheheheheheh

Qualquer tipo de ajuda será bem-vindo!

Agradeço desde já!

Cara, até entendo a tua forma de querer fazer o software “customizável”, porém, analise:

  • Se tu queres que em cada loja o cliente selecione o seu cartão, você terá que disponibilizar as devidas funcionalidades para o mesmo, para que quando ele escolhe, de fato funcione.

De qualquer forma, tu terás que codificar as funcionalidades, então sendo assim, o trabalho de fazê-lo costomizável, ou todos disponíveis para todas as lojas, é o mesmo.
Agora, na segunda opção seria mais rápido…

Desktop, com certeza, não? Afinal, a legislação exige.
Neste caso é mais complexo, visto que a renderização de componentes é mais chata que na web.
Neste caso eu criaria uma classe para representar cada bandeira e, para colocar na tela, criaria uma lista, a partir de um factory.

Uma duvida, o que vc ta querendo fazer é q o lojista cadastre uma forma de pagamento, por exemplo, cartão visa. Dessa forma o sistema trabalharia com essa forma de pagamento? ou seja, usaria o sistema de pagamento visa e bla bla bla? ou o q vc ta querendo é apenas um campo pra informar q o estabelecimento trabalha com aquela forma de pagamento, mas que não implementasse de fato a forma de pagamento.

Fui bem claro?? hehehe

[quote=drsmachado]Desktop, com certeza, não? Afinal, a legislação exige.
Neste caso é mais complexo, visto que a renderização de componentes é mais chata que na web.
Neste caso eu criaria uma classe para representar cada bandeira e, para colocar na tela, criaria uma lista, a partir de um factory.[/quote]
Sim. Desktop.
Mas criar uma classe para cada bandeira, teria que fazer na “mão” para cada cartão que a loja trabalhe, e assim ficar variando de loja para loja. A ideia é que um programa sirva para todas, ou para a grande maioria…

[quote=marcos4ft]Uma duvida, o que vc ta querendo fazer é q o lojista cadastre uma forma de pagamento, por exemplo, cartão visa. Dessa forma o sistema trabalharia com essa forma de pagamento? ou seja, usaria o sistema de pagamento visa e bla bla bla? ou o q vc ta querendo é apenas um campo pra informar q o estabelecimento trabalha com aquela forma de pagamento, mas que não implementasse de fato a forma de pagamento.

Fui bem claro?? hehehe[/quote]
Sim… Definitivamente é a primeira opção que você citou. O cliente escolhe com quais cartões o programa vai trabalhar, podendo alterá-lo futuramente, adicionando e removendo de acordo com a política atual da loja.


Pessoal, sei que não é coisa simples, mas mesmo assim gostaria de ao menos tentar…
Mas nesse primeiro momento não estou nem conseguindo imaginar por onde começar… hehehehehhe :lol:

Leia as opções de um arquivo de configuração ou da base de dados. Desabilite os botões e opções de menu (ou não os mostre) que correspondem a bandeiras que não são usadas ou outros recursos não usados.

que tal utilizar algum padrão de projeto?

[quote=dinho1903][quote=drsmachado]Desktop, com certeza, não? Afinal, a legislação exige.
Neste caso é mais complexo, visto que a renderização de componentes é mais chata que na web.
Neste caso eu criaria uma classe para representar cada bandeira e, para colocar na tela, criaria uma lista, a partir de um factory.[/quote]
Sim. Desktop.
Mas criar uma classe para cada bandeira, teria que fazer na “mão” para cada cartão que a loja trabalhe, e assim ficar variando de loja para loja. A ideia é que um programa sirva para todas, ou para a grande maioria…

[quote=marcos4ft]Uma duvida, o que vc ta querendo fazer é q o lojista cadastre uma forma de pagamento, por exemplo, cartão visa. Dessa forma o sistema trabalharia com essa forma de pagamento? ou seja, usaria o sistema de pagamento visa e bla bla bla? ou o q vc ta querendo é apenas um campo pra informar q o estabelecimento trabalha com aquela forma de pagamento, mas que não implementasse de fato a forma de pagamento.

Fui bem claro?? hehehe[/quote]
Sim… Definitivamente é a primeira opção que você citou. O cliente escolhe com quais cartões o programa vai trabalhar, podendo alterá-lo futuramente, adicionando e removendo de acordo com a política atual da loja.


Pessoal, sei que não é coisa simples, mas mesmo assim gostaria de ao menos tentar…
Mas nesse primeiro momento não estou nem conseguindo imaginar por onde começar… hehehehehhe :lol:

[/quote]
Camarada, você entendeu errado.
A idéia de uma classe é justamente evitar essa repetição.
Uma classe representa um conjunto de objetos de mesma natureza, com métodos e atributos semelhantes.
Cielo, Master, Amex são bandeiras, possuem várias coisas em comum.
Portanto, seria fácil criar uma lista com todas que são disponibilizadas como opção pela loja.

Caso alguma fosse inserida ou removida, não haveria problema, o sistema estará pronto para trabalhar com as que estão ali.

[quote=entanglement]
Leia as opções de um arquivo de configuração ou da base de dados. Desabilite os botões e opções de menu (ou não os mostre) que correspondem a bandeiras que não são usadas ou outros recursos não usados. [/quote]
Pensei nisso também, mas ficaria engessado e o usuário não poderia adicionar um novo cartão que não esteja na lista que eu criei. Apenas teria o controle de exibir/ocultar tais cartões.

Algum material, exemplo ou coisa parecida para que possa ler a respeito?

Realmente havia entendido errado.
Compreendi a sua ideia, teria algum exemplo ou material que seja semelhante ao que você disse, como dispor os cartões na tela com um factory?

Obrigado a ajuda de todos!!