Menu
SuiteCRM Pull Request Party hosted by SalesAgility
Welcome, Guest
Username: Password: Remember me

TOPIC: Desenvolvimento de plugin

Desenvolvimento de plugin 5 months 2 weeks ago #75030

  • pgr
  • pgr's Avatar
  • Offline
  • Administrator
  • Posts: 9858
  • Thank you received: 1469
  • Karma: 349
Todo o material que temos está no site docs.suitecrm.com

Deve haver documentação antiga do SugarCRM CE 6.5 que ainda se aplica quase totalmente.

My SuiteCRM In-depth blog.
Thank you for always stating your SuiteCRM version, checking your logs, reading the Docs, and searching before you ask!
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 2 weeks ago #75122

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Essa documentação inclui o desenvolvimento de Plugin?
Bem, a minha ideia é ao terminar o sistema de integração, torna-lo um pacote de atualização, instalação, algo assim. Pra que caso futuramente eu venha a instalar o SuiteCRM em outro servidor, eu simplesmente possa instala-lo no SuiteCRM. Sem a necessidade de verificar quais arquivos eu deva adicionar manualmente sabe.

Tem alguma ideia? O que me sugere fazer?
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 2 weeks ago #75129

  • pgr
  • pgr's Avatar
  • Offline
  • Administrator
  • Posts: 9858
  • Thank you received: 1469
  • Karma: 349
Eu só utilizaria esse tipo de pacotes (módulos, ou plug-ins) para enviar código para outros utilizadores.

Para uso próprio eu preferiria (mas é questão de gosto pessoal) simplesmente copiar ficheiros da pasta "custom".

Para algo mais evoluído faria com source control git. Assim posso manter cada costumização separada num branch próprio, e é fácil aplicar as mudanças noutro servidor. Mas exige aquela aprendizagem do git, que é #$"#! ao início, mas depois compensa :)

My SuiteCRM In-depth blog.
Thank you for always stating your SuiteCRM version, checking your logs, reading the Docs, and searching before you ask!
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 2 weeks ago #75130

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Ta, deixa eu ver se entendi: Crio só os entrypoint na pasta Custom, vou trabalhando com eles no git e é isso...

Seria esses arquivos o meu plugin/add-on?
Last Edit: 5 months 2 weeks ago by tadeu.
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 2 weeks ago #75170

  • pgr
  • pgr's Avatar
  • Offline
  • Administrator
  • Posts: 9858
  • Thank you received: 1469
  • Karma: 349
Não sei quanto você já conhece git? Tem muito para aprender, e eu também estou longe de saber tudo...

Essencialmente no git você começa um "branch" e faz lá todas as alterações. Ele automaticamente observa quaquer mudança que você faça nos ficheiros.

Quando faz "commit" esse conjunto de mudanças fica gravado. Mais tarde pode reverter, ou aplicar o mesmo commit noutro branch diferente (que será o equivalente a "instalar" essas alterações).

My SuiteCRM In-depth blog.
Thank you for always stating your SuiteCRM version, checking your logs, reading the Docs, and searching before you ask!
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 2 weeks ago #75187

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Quanto ao git acredito que será tranquilo, mexo com git há um bom tempo.

Mas tenho uma dúvida. vou versionar apenas o conteúdo da pasta Custom ou adiciono todo o projeto do SuiteCRM no repositório e versiono a pasta custom a partir daí?
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 2 weeks ago #75191

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Digo, versionar a pasta Custom.
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 2 weeks ago #75223

  • pgr
  • pgr's Avatar
  • Offline
  • Administrator
  • Posts: 9858
  • Thank you received: 1469
  • Karma: 349
Acho que se pode versionar tudo. O projecto quando se faz "clone" do GitHub já traz um .gitignore com as opções adequadas.

Normalmente só se muda coisas em "custom", mas se se mudar em algum outro sítio, é melhor que também fique registado.

My SuiteCRM In-depth blog.
Thank you for always stating your SuiteCRM version, checking your logs, reading the Docs, and searching before you ask!
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 1 week ago #75271

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Entendi.
Me surgiu uma dúvida aqui.

Criei um Entrypoint, fui na administração do CRM e reparei pra que meu entrypoint pudesse ser executado.
Depois disso executei a url correspondente ao meu entrypoint e deu certo, apareceu o que deveria aparecer.

Em seguida criei outro entrypoint (em outro arquivo) e refiz o processo acima. Quando executei esse segundo entrypoint, o código do primeiro também foi executado.

Após procurar encontrei um arquivo que contém todos os pontos de entrada criado. Esse arquivo é o: entry_point_registry.ext.php

Lá está o código dos dois entrypoint que criei. Cada Url não deveria executar apenas o código que refere a si? Tipo, se eu executar o segundo entrypoint, não deveria executar apenas o código referente a ele?

Meus Entrypoinit coloquei aqui: C:\xampp\htdocs\crmAlpha\custom\Extension\application\Ext\EntryPointRegistry

O arquivo que falei acima (entry_point_registry.ext.php) se encontra aqui: C:\xampp\htdocs\crmAlpha\custom\application\Ext\EntryPointRegistry

Estou fazendo algo errado?
Last Edit: 5 months 1 week ago by tadeu.
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 1 week ago #75291

  • pgr
  • pgr's Avatar
  • Offline
  • Administrator
  • Posts: 9858
  • Thank you received: 1469
  • Karma: 349
Qual é o conteúdo dos ficheiros em custom\Extension\application\Ext\EntryPointRegistry ?

My SuiteCRM In-depth blog.
Thank you for always stating your SuiteCRM version, checking your logs, reading the Docs, and searching before you ask!
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 1 week ago #75304

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Dois arquivos, cada um é um Entrypoint que criei.
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 1 week ago #75336

  • pgr
  • pgr's Avatar
  • Offline
  • Administrator
  • Posts: 9858
  • Thank you received: 1469
  • Karma: 349
Eu pedi o conteúdo deles pois nestas questões de código não é possível ajudar sem ver exactamente como as coisas estão definidas. Pode ser apenas um ponto e víguel a mais ou a menos...

My SuiteCRM In-depth blog.
Thank you for always stating your SuiteCRM version, checking your logs, reading the Docs, and searching before you ask!
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 1 week ago #75373

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Me desculpa, estava na correria e não li direito.

O primeiro faz a captura de informação do RD quando ocorre algum evento no RD.

Segue o código

$entry_point_registry = array(
'file' => 'custom/Extension/application/Ext/EntryPointRegistry/MyTimeEntryPoint.php',
'auth' => false,
);

header("Content-Type: application/json");
$dadosRd = json_decode(stripslashes(file_get_contents("php://input")));



$accountBean = BeanFactory::newBean('Accounts');

//$accountBean->name = $dadosRd->leads[0]->custom_fields->Vendedor;
$accountBean->name = $dadosRd->leads[0]->name;
//$accountBean->description = json_encode($dadosRd->leads[0]);
$accountBean->email1 = $dadosRd->leads[0]->email;
$accountBean->billing_address_postalcode = 12345;
$accountBean->save();


O segundo faz a leitura de algum dado do SuiteCrm utilizando Beans e os envia ao RD Station..
Segue o código

$entry_point_registry = array(
'file' => 'custom/Extension/application/Ext/EntryPointRegistry/UpdateRdEntryPoint.php',
'auth' => false,
);

class UpdateRdEntryPoint
{
private $publicToken;
private $privateToken;
private $rdAPI;

public function __construct()
{
$this->publicToken = "";
$this->privateToken = "";
$this->rdAPI = new RDStationAPI($this->privateToken, $this->publicToken);
}
/*
*
* RESPONSÁVEL POR RETORNAR UMA LISTA CONTENDO TODAS AS OPORTUNIDADES ORIGINADAS DO RD STATION.
*/
public function GetListOpportunitySourceRd()
{
$bean = BeanFactory::newBean('Opportunities');
$a = $bean->get_list('name', "opportunities.date_entered = '2017-03-14 14:03:39'");
$a = $this->RemoveFieldNameMap($a);

return $a;
}
/*
* RESPONSÁVEL POR REMOVER O ESQUEMA MOSTRA OS DETALHES DE TODOS OS ATRIBUTOS REFERENTE AO OBJETO.
*
* $opportunities -> Lista de oportunidades carregadas.
*/
public function RemoveFieldNameMap($opportunities)
{
for($i = 0; $i < count($opportunities); $i++)
unset($opportunities[$i]->field_name_map);
return $opportunities;
}

public function SendSaleToRdStation($opportunity = null)
{
if($opportunity != null)
$return = $this->rdAPI->updateLeadStageAndOpportunity(This email address is being protected from spambots. You need JavaScript enabled to view it.", 'won', 20);
}
}

$up = new UpdateRdEntryPoint();
$up->SendSaleToRdStation();


São apenas testes, o primeiro, como pode ver é executado apenas quando ocorre algum evento no RD e o segundo eu executo manualmente para enviar
dados ao RD Station. (obs.: Removi os tokens para postar aqui)

Os códigos estão funcionando, a questão é que quando executo um entrypoint, o outro também é executado.

Outra coisa que também observei foi que quando eu acesso a página inicial do SuiteCRM com login de administrador (fiz esse teste só com usuário de administrador) os dois entrypoint são executados também.
Last Edit: 5 months 1 week ago by tadeu.
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 1 week ago #75396

  • pgr
  • pgr's Avatar
  • Offline
  • Administrator
  • Posts: 9858
  • Thank you received: 1469
  • Karma: 349
Só os ficheiros de definição devem estar em custom/Extension/application/Ext/EntryPointRegistry (os que preenchem o array $entry_point_registry).

Os outros ficheiros com as funções para executar, devem estar noutro lugar (por exemplo, apenas "custom/"). Naturalmente que tem de ajustar as definições de $entry_point_registry para buscar na nova localização.

Isto porque todos os ficheiros PHP em custom/Extension/application/Ext/EntryPointRegistry são executados automaticamente em várias ocasiões para aplicar as definições. Se têm apenas definições, não tem problema de aplicar mais de uma vez. Mas não deve ter ali outro código.

My SuiteCRM In-depth blog.
Thank you for always stating your SuiteCRM version, checking your logs, reading the Docs, and searching before you ask!
The administrator has disabled public write access.

Desenvolvimento de plugin 5 months 1 week ago #75449

  • tadeu
  • tadeu's Avatar
  • Offline
  • Senior Member
  • Posts: 44
  • Karma: 0
Bem, consegui. Agora deu certo.

Nisso me surgiu outra dúvida. Supomos que eu queira marcar como venda um determinado lead no RD (Tem a API do RD pra isso e já estou conseguindo fazer a comunicação). Mas o que quero fazer é: quando o campo chamado Fase da venda no formulário de criar oportunidade estiver com o status Pedido recebido e o usuário clicar em salvar, então enviar ao RD uma venda para aquele lead em questão. Como posso fazer isso? Há alguma forma de programar ações com base em determinados eventos a partir do CRM? Há uma outra maneira de fazer?
The administrator has disabled public write access.
Time to create page: 0.052 seconds
Powered by Kunena Forum