Checking a voucher code on a Demandware online store - salesforce

I'm working for a startup and we have a customer who uses Demandware for their online store.
Our company provides vouchers which are worth a specific amount of money. So customers on the retail site can enter the voucher number near the end of the checkout experience and if it's worth, say, 10 dollars, their shopping cart is updated (-10).
I have the CTO saying we just need to "drop a few lines of javascript" onto the retailer online store. But I think this requires a Demandware plugin (especially updating a shopping cart), which involves signing up for a developer or partnership account (which takes some time), learning Demand Script and building the plugin, then releasing it to Saleforce's app store. Am I correct? Is this the only way to achieve this?
Just to be clear, the functionality is: the voucher code box needs to take a voucher number, an API request is made to our service to check what it's worth, then update the cart.

That's a pretty broad question but I'll try to explain.
First off, Demandware has gone all JavaScript.
But yeah, it has a huge API so the process sounds about right the way you've described it.
Ask your client whether they have a service integrator they're working with, because that would be their job. Your job would be to provide an API so that Demandware can check whether the voucher code is valid.
Demandware is a closed community so it's unlikely to learn it unless you're working in a company that is doing Demandware development.
Oh, and if it somehow ends up being your job to develop this, a tip from me - you probably need to get access to their site's files and use the LineItemCtnr class to createPriceAdjustment() :)

The first tip from me is that Demandware got bought by Salesforce and is now branded as Salesforce Commerce Cloud, so if you hear either, they are the same thing.
You are right that you are going to have to work with Salesforce to get going. They are a cloud provider and there is no self-hosted version of the platform, so in order to do any development, you need to have a relationship with them.
So then it depends on how you get access. If the client has any sandbox environments they are willing to share with you, you could do this as a custom build working in their environment, modifying cart code to make the service call as you ask and as the previous response suggests. But then (depending on the terms you have with the client) your company may or may not be able to reuse that code for other clients. You will also have to work with them to get that integrated into their existing site, get it deployed through their processes, etc.
If you want to write something that other Commerce Cloud clients could use, then you should set up your own partner relationship with Salesforce and get a software package they call a cartridge to what they call their LINK marketplace, which is basically a big clearinghouse of integrations like yours.
Technology-wise, the platform has gone through some changes recently, going from an XML-based GUI tool to specify business logic to using CommonJS scripts to define them. If your client is a new client within the last year or two they probably have this new fully javascript implementation, but if they are an older client than that they may be using the old way, which has a steeper (read: more proprietary) learning curve.

Related

Can Bonitasoft (BPM) be used to build an ERP system?

I have gone through the documentations of Bonita and read a book about it. I have also watched almost all the tutorials offered by bonita on YouTube. However, the software limitations are not clear to me yet.
The company that I work for, a consultancy company, wants to use bonitasoft to manage its enterprise resources.
Examples of tasks that we want to implement :
Vacation planning for our employees (This a task so it is easy to
implement with Bonita)
Finance management and generating bills. (This is not a task. I need
to link a consultant to a contract and a client. Finally, generate a
bill at the end of each month)
Manage how bonuses are attributed to different consultants. This
depends on their performance. (Not a task)
Consultants should be able to see their history and how long they
worked for a given client and how much money they have brought in.
(Not a task)
Managing job applications. (Applications and uploaded files like C.Vs
and cover letters).
I was not able to find any demo website made by bonita to see if people tried to build an ERP system based on bonitasoft. Is this possible?
I think that it should be possible to create a form and modify it using JavaScript to implement a non-task functionality.
Is this considered as hack?
Are other people using bonita this way or not?
Also is implementing non-taskfunctionality possible using widgets (HTML, JAVASCRIPT and maybe an external webservice)?
Bonita BPM is a process-based application platform. I'm highlighting the process part of it here as this is a key concept in the platform.
Basically, the business logic part of any Bonita application is designed using a BPM (Business Process Management) approach. You design a process that represent your business logic and implement its behavior by coding business rules, data processing, integration with third-party systems and so on.
Then once, the business logic is implemented, you can build reports that will display to the end-user the data resulting from the execution of the different processes.
If we take the examples you gave:
Vacation planning for our employees (This a task so it is easy to implement with Bonita)
Typically handle by a process.
Finance management and generating bills. (This is not a task. I need to link a consultant to a contract and a client. Finally, generate a bill at the end of each month)
Can be handle by a process. The finance manager will have initiate the generation of a new bill from the application. But really, in the backend, it will trigger a new case (process instance), then follow all the steps down to the generation of the bill.
Manage how bonuses are attributed to different consultants. This depends on their performance. (Not a task)
You're right, not typically process based. Maybe just entering the bonuses value in a DB. If there are business rules associated to the calculation of the bonuses, it could be handled by a process.
Consultants should be able to see their history and how long they worked for a given client and how much money they have brought in. (Not a task)
Should be a report pulling data from an external DB or the Bonita DB.
Managing job applications. (Applications and uploaded files like C.Vs and cover letters).
Typically process-based.
So the short answer is yes, Bonita can be used to build this kind of application.

Right approach to building SAAS in Laravel 4

Ok, so about a year ago I wrote a web app that helps organize appointments for my dads company. He now "couldn't do business without it". I have decided that I want to build a SAAS subscription model out of it and open it up to the public.
It's currently built on codeigniter and php which I do not think is a good fit for a SAAS version. I am planning on rebuiling it from scratch in laravel 4 and using stripe as a payment gateway.
My concern is how best to handle the database / application structure for more than one client. Currently, it just serves the one business and is very un-abstract and is specific to my dads companies needs. I need it to be able to handle different data depending on what the business who uses it does.
I have looked into multi-tenancy but i'm not sure this is right for this. I am thinking that a 'gmail' style approach would be better. One app / domain that after login the user will see their customised dashboard and only their data.
Before I get stuck in with the coding I need to work out how best to handle multiple 'accounts' on the one database. I do not want to create a table for each user, nor a database for each user.
I guess my question is can anybody point me in the right direction for how best to handle a monthly payment subscription in Laravel? It's not so much the code that I'm stuggling with, rather what exactly I would need to build to handle charging the customer each month and denying them access if billing failed etc.
Thanks
You are in for a lot of reading and a ton of work!
First of all, let's completely ignore the billing aspect of this for now — at the end of the day that portion of the application is really fairly trivial. Take a page out of 37signals Rework (page 93 and 94) and launch your product with a 30 day free trial before you even begin implementing it (you should know how to implement it by then).
Second, why do you think that "gmail" doesn't use multi-tenancy, URI structure tells nothing about the underlying database structure. I'm fairly confident they aren't cloning a database schema for every one of their customers. Therefore you've probably answered your own question — you want to implement multi-tenancy.
You're going to want to abstract your database (and application architecture), and honestly there is no better resource to help you on your way to doing that than Taylor Otwell's (creator of Laravel) book Laravel: From Apprentice To Artisan. His book is not for beginners, and by the time you're done reading it you should probably be able to answer this question for yourself.
You are not going to be creating a table or a database for each user, you aren't even going to be creating one for each organization. Instead you'll be creating abstract database structure in code, which will pull your users data out of the database.
Think about checking for permission to access an organization as another layer of user authentication. On every request you'll be checking to see if that user can access a particular organization. You'll likely also check to ensure that organization is still active (did it expire because they didn't pay?) this will again happen on every request and likely with a filter within laravel.
This really leads to the next very important factor of developing a SaaS application.
I don't know about you, but I'm paranoid, and I couldn't sleep well at night if I wasn't sure that user number 4506 couldn't see the data of an organization that he doesn't belong to. The only really good way to ensure this is through unit testing, which I'd highly suggest learning if you haven't already.
The best way to do this within Laravel 4 is to read Jeffrey Way's book Laravel Testing Decoded. This book is extremely advanced, but still easy to understand if you have a good grasp of the fundamentals.
Last but not least, the number one thing is get involved in the community — the easiest way I'd suggest doing that is idling on the #laravel IRC channel (freenode). Ask some questions, maybe answer some questions, everyone in the channel is very nice and responsive.
You are definitely in for an adventure, don't be afraid to ask questions and make mistakes. Good luck.
As a rough overview, I would have a clients table, and a subscriptions table. Any other data that needs storing such as contacts, or appointments, can be associated using foreign keys to the client table.
In laravel, you can use the ORM to get the currently logged in client, and then through a relationship, fetch appointments and contacts belonging to them.
There are some useful tools for laravel at cartalyst.com, including sentry and sentry-social for user auth, and integrating user accounts with facebook/google/twitter, etc.
Stripe will allow you to configure recurring payments, and will notify you via web hooks each time there is a payment attempt. you can log these in the payments table, and associate them with a user/client. you can use this to keep track of who has paid, and how recently.
Also, bear in mind that you may not want to cancel the account immediately on failed payment.
Stripe will reattempt, and it may be that your best response is after it is two or three days late, or you get an invalid card notification,to get in touch with the client and prompt them to update their payment details.
It may also be an opportunity to check when they last logged in.
If it was over a month ago you can credit them with a free month, and remind them of how much your app can do for them.
By doing this, you may be able to get people to continue using (and paying) for something they had forgotten they had subscribed to.

Core understanding f what salesforce is

firstly I apologise if this is a ridiculously simple question to answer but it has been bothering me for a while.
I am trying to understand what salesforce actually is, I mean in technical terms. I have read the websites documentation and the wikipedia page but I am trying to understand what's behind all this fluffy terminology.
My understanding is that salesforce is a cloud based database which stores a very high volume of information and all salesforce apps consists of scripts that query this database and model them in different ways depending on the intended application, is this correct?
Thanks !
Software as a Service (SaaS)
To get program you need to download it, install, configure and so on. If your system have a lot of users it's very hard to configure ans support single user installation.
Imagine that you improved application, new release for example. You need update every instance.
With SaaS model you have a shared web application, that do the same thing as old downloadable one. But it's much easier to support it, because ideally there is just one instance of it.
Salesforce is a company that provides its own system by SaaS model, but not only. It is also a platform for developing new applications.

understanding salesforce licensing for development and deployment [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am trying to understand the licensing issues on I would come across on Force.com for developing an application that will have its own data source and will also be pulling data from SalesForce.com via api/service. I have spent over a day researching this from various sites but most of them keep throwing up new things which don't really answer my questions and have got me more confused. IF anyone here has any insight into this that can help me understand the cost of development and maintaining a site using Force.com, so I can compare it with building an application ground up on say .Net or Java and hosting it on a different cloud provider, then please help me out. My questions are:
If I have 5 developers working on an application called XYZ using the Force.com platform, how many Force.Com licenses would I need to purchase for such development work and of what type should those licenses be?
Would I also need to buy separate SalesForce licenses if those developers need to fetch data from the SalesForce database through code written on Force.com?
If I already have a SalesForce license then will my access to SalesForce be suspended if I convert that license to access Force.com for doing development work?
Can I reuse those same licenses for the testing phase later or should I buy separate licenses for testing?
Once development is complete and people create accounts for themselves on my XYZ web application, will they need a salesforce login to access the salesforce related data from their company network or can they still access it without?
If my XYZ web application doesn't access SalesForce's data then will my XYZ web application's users still need a salesforce or Force.com license to login into XYZ?
If I dont use Force.com as my development platform, and I still need to access SalesForce data, how many licenses would I need to have? One per login created on my XYZ application or just one will do?
Thanks.
You might be better off asking this at salesforce.stackexchange.com (beta). Seems like quite a lot of experts there have done some cool integrations, managed packages etc or even are ISVs. so they might have more experience in the matter. They'll maybe even point you to database.com.
Or just go and talk to SF sales rep.
Also I think you don't understand that you don't simply "buy a Salesforce license". You buy licenses bound to particular production organisation (an instance if you prefer). You can't transfer them between organisations and the fact that your web app will talk to specific Salesforce instance doesn't mean you can use same license too connect to different instance. So if this is what you mean by
I have spent over a day researching this from various sites but most
of them keep throwing up new things which don't really answer my
questions and have got me more confused.
then you'll have hard time...
I think for such question you'll need to eventually ask your lawyer, don't trust people on the internet :) Safe harbor, blah blah, don't sue me...
To kick off the development you don't have to pay anything. Sign up for Developer Edition and hack away. (each developer can do it, you can synchronize between them using SVN etc - it's definitely enough for quick start). If you already have a "production" (for example Enterprise Edition") then I think up to 4 simultaneous logins are allowed for each active user. This counts for different channels (so for example developer who would both click through app's UI and work in Eclipse IDE counts as 2) so you can try to do some cost cutting here... But I'd recommend 5 full Salesforce licenses.
No, will be sufficient.
I don't think you can convert licenses ;) You'd simply buy licenses of different type and contact them to reduce the count of licenses of type you don't need. You can kind of convert users by assigning them license of different type (and this might lead to change of Profile). As a result you for example downgrade a full System Administrator (on Salesforce license) to say user who can see only Chatter and loses access to Accounts etc.
You can use same licenses. Even to say deactivate developer user accounts and use the freed licenses to create some test users.
Depends how many features of SF you'd want to use (in terms of data ownership, visibility etc.). You will have to provide "some" credentials of an active user in your Salesforce. So you might be fine with having just 1 "integration user" account that would see all data and then do all filtering etc on your webapp.
I don't understand that one so I'm going to say "no" ;) If you don't need to connect to SF and get the data - don't? Unless you have some kind of Single Sign On solution there.
If you need to access Salesforce from external app you need to authenticate. Username + password, Oauth,sessionId, single-sign-on... whatever the means - SF needs something to say that this user is active, he can see this data. So it kind of goes back to answer #5.

Credit card payment getway in cakephp

I am developing a project in cakephp. And the requirement is to integrate all types of payment getway for donet. I dont know how to integrate credit card like master card, visa, american express etc. into my project in cakephp format.
Please help me. I am very grateful to you.
CakePHP is a programming framework not a banking service.
If you need to do financial transactions, you will need to contact service providers that do this. Major banks mostly provide credit card transactions as a service. They have their own APIs and workflows, mostly something RESTlike.
See for yourself on PayPal for example:
https://merchant.paypal.com/cgi-bin/marketingweb?cmd=_render-content&content_ID=merchant/home
https://www.paypal.com/hu/cgi-bin/webscr?cmd=_merchant-outside
Cake will be a good friend implementing it, though.
Depending on which country you are conducting business in, there may be regulations to adhere to. These usually revolve around confidentiality and security, i.e. card data.
It is far easier to use third party gateways or the APIs provided by banks through their merchant accounts as you transfer the responsibility for that data to them. PayPal is the obvious one - and there are other similar payment mechanisms, but it isn't an ideal solution in every situation.
If transactions need to go straight into a business account, discuss it with your bank. Most banks have their own or a franchised solution.
We build shops with ZenCart and use SagePay as a payment solution, but I doubt it would be available outside of the UK.
Money being money, it makes money every time it is moved and a lot of people want a piece of that. As a result there are a plethora of options to choose from.
If it was a personal / non-business site, I'd use PayPal for ease. What I wouldn't do is try to build my own gateway.
Don't forget, Cake is just PHP and as such is as easy to deal with as any other PHP website. Choose your gateway provider, study its API and everything will become clear.

Resources