SUGARCRM plugin - webservice client with setup - sugarcrm

I have a task to develop plugin for SugarCRM. Plugin should be "hooked" to contacts, leads and/or targets.
After I add contact to SugarCRM plugin should send data (with some fileds) to specific webservice (method to insert new person into DB).
I did create logical hook to contacts and before save I send data to webservice.
My biggest problem are fields. SugarCRM admin should be able to make setup for plugin like this
Plugin gets list of fields from webservice
Admin maps fields from "SugarCRM contacts" to "webservice persons" fields
for example
SugarCRM contact | webservice person
"first_name" => "firstname"
"last_name" => "familyname"
"gender" => "mf"
....
So when contact is added to SugarCRM, plugin should be able to read this setup and match every field before sending to webservice.
Can someone give me tips how to start with this, is there something similar online?
Thanks

You could create a dropdown menu where the left value is the SugarCRM Field name and the right value is the Webservice field name. Then direct users/system administrator to modify this dropdown in the Dropdown Editor, which has a nice and easy interface.
The plugin can then access this menu as a key => value array with $GLOBALS['app_list_strings']['my_list_name']
Alternatively, you can create your own configuration page if you want to develop a custom interface for this. A starting point for that might be this article, although it was written with SugarCRM 6 in mind: http://www.profilingsolutions.com/archive/quick-configuration-pages/
The configuration page would write to the Configurator (stored in config_override.php), as Antonio Musarra pointed out.
Either way, a caveat you'll encounter is that users will mistype field names. You'll need some sort of validation in your webservice call to ensure that all fields actually exist within the web server and within SugarCRM.

Related

Custom POST/PUT route/endpoint based on meta value

I'm currently making a store which is receiving it's data from external sources. Being new to the world of editing/creating REST API, I've come across a problem. The problem is that the external source have no idea what ID the product gets in woocommerce so update/delete products is not possible with the current endpoints/routes. However, the external source does have it's own ID on it's product and I've stored this in a custom meta field in woo and I can see it and update it through api on Postman.
How can i create a new endpoint/route that uses the custom meta field called externalProductId and use this to update the product instead of the woocommerce ID?
What you can do, which I particularly did in my case ... Create a field id_product_woo in your external bank, the time you create the product in Woocommerce, it returns a JSON with the information of the product created, including the ID inside Woocommerce... When you create or update a product in Woocommerce, you then pass the id stored in the id_product_woo field of your external bank.
Apparently, this for me, worked perfectly.

Kentico - Customizing subscriber fields - email Marketing

I have a NewsletterSubscription Webpart on my website (Kentico 9). The fields used in this web part are the default ones. I would like to customize those by adding a required checkbox. So that people who want to subscribe have to check this checkbox.
I saw on Kentico Documentation (https://docs.kentico.com/k82/on-line-marketing-features/email-marketing/working-with-email-campaigns/managing-email-marketing-subscribers) that I can make fields changes in the Modules application.
My question is : if I made a change in the Newsletter - subscriber class (in module application) by adding this required checkbox, would it affect in any way the current subscribers of my newsletters ?
All subscribers from that specific class will have a new field with default value as you want. If you don't define default value it will be NULL. https://docs.kentico.com/k9/custom-development/editing-system-tables
Be sure to take a backup of the database first!

Add new category and custom page into Site Administration menu

I'm trying to add a new feature into site administration menu of moodle as part of a project that I am working on. Right now our customer only needs to integrate OnePay gateway into moodle. But in the future, they may require integration of other payment gateways (like PayPal) as well. So I need to create a category just for website administrators to input different types of payment. A new category should be somewhere in the "Advanced Features" menu (something like in the following screenshots)
Where to add new category
Example for onepay integration
With "Settings" page is a page that site administrator to input all necessary payment information (including customer's card number, access code, etc.). Right now I'm testing with using two of my testing pages for domestic and international payments.
Here is my code in file /lang/en/admin.php:
$string['payment'] = 'Payment';
$string['onepay'] = 'OnePay';
$string['test_onepay_domestic'] = 'Test Domestic Payment using OnePay';
$string['test_onepay_international'] = 'Test International Payment using OnePay';
In admin_custom directory, I created a path like this /payment/onepay/test/ and add 2 my testing pages into it. In folder /payment/, I added a file named menu.php. Here is my code in it.
<?php
$ADMIN->add('advancedfeatures', new admin_category('payment', get_string('payment', 'admin')));
$ADMIN->add('payment', new admin_category('payment', get_string('onepay', 'admin')));
//$domestic = new admin_settingpage('onepay', new lang_string('test_onepay_domestic', 'admin'), new moodle_url("/admin_custom/payment/onepay/test/domestic/index.php"));
//$international = new admin_settingpage('onepay', new lang_string('test_onepay_international', 'admin'), new moodle_url("/admin_custom/payment/onepay/test/international/index.php"));
$domestic = new admin_externalpage('test_onepay_domestic', get_string('test_onepay_domestic'), "$CFG->wwwroot/admin_custom/payment/onepay/test/domestic/index.php");
$international = new admin_externalpage('test_onepay_international', get_string('test_onepay_international'), "$CFG->wwwroot/admin_custom/payment/onepay/test/international/index.php");
$ADMIN->add('onepay', $domestic);
$ADMIN->add('onepay', $international);
I have attempted to include file menu.php in both files
/admin/settings/top.php
/admin/settings/server.php
But none of these works. Can anyone please tell me what should I do to get this works? Thank you very much. I really appreciate that.
Moodle doesn't have any sort of plugin type called 'payment', so by creating a hierarchy starting '/payment', you're already at odds with the way that Moodle works (as shown by needing to edit core files in order to add language strings and menu items).
I would recommend that you start again by creating an admin tool or a local plugin. Both of these types can have their own language strings and can add entries to the site admin menu (have a look at the settings.php inside any of the standard admin tool plugins or, for local plugins, an additional option is to create a local_MYPLUGIN_extend_settings_navigation() function). If you want to support multiple payment options, then your plugin could define a new subplugin type for each of the payment options.

Sitecore - WFFM : Link contact facet with user profile field

I'm working on a Sitecore 8 Update 2 site.
I'm also using the web forms for marketers.
I've set up a login and register form using WFFM. I was able to link fields on the form with the fields of the user profile ( the one used in User Management )
However when i want to make a "Update Contact Details" i can't link the fields on the form with the profile fields as before. Now i have to select a "contact facet". I added one of these and WFFM picked up on this, so now i can link the field on the form with a facet.
The last link i'm missing is linking this facet ( stored in Analytics - MongoDB ) to the profile field.
Does anyone know how to achieve this ?
Bonus: This started off as a slighty different question, you can read more about this issue here:
How to update sitecore user with webforms for marketers ( Update Contact Details )
First you need to add the Create User Save Action and setup the email address as the username.
Then you need to add the User login Save Action straight after that. This is because the Update Contact Details Save action only applies to logged in users.
Then you can use the Update Contact Details Save Action. This action will create data in MongoDB under the logged in user name - so if you go to the Identifiers collection MongoDB a new entry will be created (See screen shot below).
So in short the aspnet_membership data and the MongoDB data is linked via the username in WFFM. In aspnet_users - UserName and in MongoDB by way of an identifier. You can't mix the MongoDB and aspnet_profile data they belong in two separate places.
So once you have created this user in WFFM you could call up their details using the analytics API using the identifier:
Tracker.Current.Session.Identify(username);
var personalInfo = Tracker.Current.Contact.GetFacet<IContactPersonalInfo>("Personal");
Hope that makes sense :)

Drupal email users

I'm using Drupal 6.16: When a user creates an account on my site I have them select a category (ie children, youth, adult, etc). This is done with the select list box using the content_profile module. I have a content type that posts an announcement. In this content type is a check box that says 'email group'. Right now it does nothing, but what I would like for it to do is e-mail all the users that are associated with the group they chose when signing up for their account. If this will require extra code please be specific as I am not a strong php programmer.
Thanks for the help!!
msindle
There might be some module that do it exactly, but I don't think so.
I would have done it using few building blocks:
Retrieve the list of emails using Views - define a view that gives you the addresses according to a given group argument.
Use Rules module that will send an email notification after node is created.
Combine the two (this is the hard part) - insert the values from the view as the recipients for the email. You might be able to do it using PHP inside the Rule definition, plus view execution.
Try to accomplish it, and if you get into troubles, you are welcome to contact me via shushu.i#gmail.com
I would try http://drupal.org/project/subscriptions module + http://drupal.org/project/messaging module. You can set preferences for automatic subscribing to content type. Maybe Rules module can subscribe users automatically after creating or updating content_profile. Or maybe Rules can flag users after creating or updating content_profile and Subscription module could autosubscribe flagged users.