 Okay. Let's start. This session is Drupal Commerce Contributed Models Overview. I'm going to basically throw like 50 models to you. And let's start because I have a lot of things to say. So this is me. I'm Pedro Canberra. I work with Commerce Guys. And I'm an hyperactive member of the Spanish-speaking community. I organize Drupal local events in Barcelona and in Spain. And if you are interested in developing with Drupal, we are throwing a Greek one in June. So feel free to ask me. And okay. I totally stole this slide from Ryan's presentation this morning about the vision of Commerce Guys, about Drupal Commerce. Like ruling the world and stuff like that. And we are putting a lot of effort both in commerce model but also in the country universe. And this presentation is, I'm going to try to show you which models you can use now for your commerce sites and which ones are ready and how to keep up to date, which is not easy. And I will not do any demo because we won't have enough time. But I booked both right after this one, 3.45 in room 206. So I'll demo whatever you want or unsolved questions here. And before I start with what I call the essentials, please feel free to ask questions at whatever point of the presentation. If you are in the front row, raise your hand and I'll repeat the questions. And if you are like down in the room, you can go to the mic there and just ask. Because if not, it's going to be 45 minutes of me talking. So please ask me questions. So first thing first, Drupal Commerce is a framework as it is now and it ships with many core features but we have some things that we left in the country universe such as shipping. You say that you need shipping for your online store but not for every store. So shipping is a country model. It's one of the essentials ones and it provides technically, provides a line item type and it takes care of the checkout process. So you can select the shipping there and it's really rules based. So you can decide or you can manage all your shipping behaviors through rules. As it is now, I think that the tool branch has no shipping method, right? So it's pluggable and extendable because if not, you won't have any shipping at all. So there is support for flat rate UPS. Any other one? Remarkable? Canada post? Okay. So you can, if you don't find one you, one model that fits your needs is really, is really friendly to extend and you can see examples there. The other essential, it looks really nicer in my screen. Sorry for the blank thing here. It's the stock thing. The commerce stock is, okay, it's a way to maintain and track stock for products. Yeah. And as normally the online stores manage stock as they want, nobody manages stock the same way, it's rules based. So you can decide when you decrease the stock and when you increase it again, if your order is canceled or not or I don't know. So it's really flexible. And it also has a 2.0 version that is the one you should be using. And this version supports things like decimal stocks, so litters and things like that. Yeah, you can create your own rules for stock behaviors, even for service stock or crazy stuff like that. So the next category of countries is import and export. So the main models for getting the stuff into commerce from other sources are feeds and migrate. We have integrations with commerce feeds and comment from the grade. And both are ways to import products. Feeds actually support customer profiles and recently coupons. And the way it works is that it allows you to import the products, but also the references. So you can import products and displays and link them together in the process. The migrate approach uses the migrate model and it's slightly different, but it also has a uber card to commerce submodel. So you can import uber card stores into commerce directly using the submodel from commerce migrate. And another stuff for import and export is kind of different, but we have features integration with you by using the commerce features model. And it currently supports Perl types, customer profiles, line item types and other stuff in there. So you can stage your structure between installations. There are a couple more. There is an XML export for products and displays, but you probably may want to use views for that. And this one is the order FTP exports XML and sends it over FTP. So I know this is a really, really specific use case, but it's there. There is also a commerce service model, but again, as the XML, you may want to use views for that, some views data source or one of these models to export things. Okay, so physical products. For those of you pretending to sell physical stuff, I mean, maybe it's not that trendy, but we have a solution for that. Commerce physical uses the physical field model for three dimensions and weight in many, many measurement units. So it's a great way to store dimensions and weight the proper way. So this allows you to calculate shipping costs. I think that the UPS model does that. So you can track your shipping costs with the physical thing. Okay, so most more interesting stuff are the non-physical products. Non-physical products are like subscriptions, file downloads, or whatever you don't ship to your clients or your customers. Let's start with commerce file. So commerce file is a way to sell file access to the files. Yeah, it's a good name, right? So it's rules-based as all the models with commerce because we have a really strong rules integration. So it allows you to limit the number of downloads, the access to the files through rules. And there is also a commerce downloads install profile that includes this model preconfigured and ready to use. If you want to test it quickly, you can check that install profile. Yeah, and it's ready to sell like e-books or music or whatever you don't use access to through the file system. Okay, this is a slightly different one. It's a product key. It generates product keys or voice shares that you can associate to your products. So normally it's used to unlock software like keys for apps or something like that. So you can sell these through commerce and you get a final order with a key and you can assign it or unassign it to your product types. So again, it's rules-based so you can track it and control stock and all this cool stuff. More things to sell or to manage non-physical products are the commerce crates and commerce user points. Our two ways of reaching the same point, the commerce crates provides a way to buy or win crates to your users and it has an expiration feature so they can expire and I know you can use this for retiring customers like giving them crates for each purchase so they can get stuff for free or something like that. The commerce user points that has been released quite recently, it's a bridge between commerce and user points and provides a way to get user points through your commerce purchase. So it's not a payment gateway at all, it's just that you can use a number of your previous user points already earned to pay some part of the price you're buying. Okay, subscriptions. It's not that it's a final solution for subscriptions but you have a couple of options out there. The commerce subscription one is entity type that allows you to solve roles and I think it only works with PayPal right now. Is that right? Okay, so I mean it's just a specific use case but you can use it and the second one is commerce SP or I think that's the product name. It's a feature that uses rules schedule so you can sell subscriptions via products. Okay, check out face. Any questions out there? Yeah, so I think it attach the subscriptions to a product. Is that you buy a product that is a subscription that represents a subscription? I think that. There are two different ones. I mean the first one is a subscription entity that is fillable and I think that the second one uses a prototype for doing subscriptions. Yeah. Couple of questions. I think so. I think that the question is that the first one, the commerce subscription is only using PayPal because that's the only recurring subscription method that is like easy to implement and it's not a good thing. Yeah, I think that's. It's a stuff thing and they use PayPal already so they will probably implement something more in the future but I think they are good with this and you probably can implement your own based on this one. Can you reach the mic? Thank you. Would the supplies module be appropriate for like a membership of a person to an association? Which one? The supplies one. Supplies? Yeah, the commerce subscription supplies module. The supplies is not the name of the module, it's just the verb, sorry. So are any of these appropriate then for managing an association membership, i.e. pay my annual dues? Yeah, but you need more than this to do that. But probably you need a way to do the recurring payments and that's the options out there at the moment would be more. Yeah, you need more and I will show you other things in the next slides. Yeah. Creates a much more older module. User points has a release like I don't know since one month or so. So it wasn't really ready for use before. So you have to evaluate if you don't have user points and you need a simple approach, you probably need, you probably used to create. Yeah, it's the same thing. The same thing. None of them are payment method. It's just a discount thing. More questions from this? No? Okay, next. Check out. Okay. This is one of the most important modules. I was going to put it in the essentials, but it's not that essential as shipping or stock. It's the feel good pains. What are they in pains? Feel good pains? You can, if you know the fill group module, it used to be in CCK and now it's a separate project. It allows you to place different fills into a group. So you can export those into the order entity and you can ask for the user to the customer in the checkout phase for these information such as order comments or whatever fill you want to expose there. It's really useful to a registration website where you can feel more information about your users in the checkout such as, I don't know, additional address or we've used in this for the Spanish association website and we ask for the Drupal orc username in the registration so they can pay their quota. Yeah, the way to do that is to duplicate in the field both in the order entity and the user entity and you can do that, you can assign information with a rule in the checkout completing event. So you can save extra information in whatever entity you're using. You just need to duplicate the fields and it will be, you create the rule and it will be copied there. Yeah, yeah, absolutely. And it's in the order so you can expose it in views or whatever you need. So more, okay. I get fancy with the structure because if not this is really boring. So more checkout thing. The commerce extra pain, sorry for the bad joke, it allows you to expose notes in the checkout process and it has a sub-model for the terms of service so you can expose a checkbox there. You can have the same functionality with the field world pains like exposing and I agree to the terms and conditions in the checkout but this one has a solution out of the box and you can assign a note to that. Commerce checkout login provides a checkout pain to request information about the login so you can login in the checkout. Instead of allowing anonymous user orders you can expose the login form so it's a different approach. Okay, checkout progress. This provides a block and a list of the checkout. This is really common. You are in the checkout phase, you are in the review, you are in the payment so the user knows where is the, in each moment of the process. This only works if you have a multi-page checkout obviously. If you are using a one-page checkout you don't need this one but if you have a multi-page one it's useful to show the user where is. Hey, checkout pages. Without this module you need to code to create new checkout pages and this one provides a UI for creating these pages so you can assign pains to them if you need to have extra checkout pages because commerce ships with the checkout one, the review, the payment and the complete. Is that right? If you need an extra one and you don't know how to code you can use this one to create new pages. Okay, more. Payment methods. I have mono slides categories because I'm not reviewing the tone of payment methods, models that are off there. We have the major ones like PayPal, authorize, and there is a number, huge number of local payment methods for normally they are country based. If you are in a country that doesn't have a payment method, please create one and you get a lot of examples because there are literally hundreds of them. Also, there are other payment methods available like the bank transfer code or check or there are many, many of manual payment methods that you can use. Next one. Product management. I don't know if you hear this, but yeah. Yes, so it was a question about payment methods. We did this in UberCard. We sell a lot to big companies that customarily buy on purchase orders, but they wanted the convenience of checking out through an online store. Obviously we have to do things like decide who we are going to accept purchase orders from, but this I think would be a desirable payment method is for approved users, possibly users with a certain role, that there is a payment method called purchase order that lets them enter a purchase order number and some details and then check out. Yeah, I think there is a, yeah, thank you. Yeah, if you can go to the mic, he's... So there is in fact a commerce purchase order payment method. It's pretty basic, just pops up a field that allows them to put in. But one question I have about payment, is there going to be a way to open payment methods by role or because it looks like from, as soon as you enable a payment method, it's available to anyone who can check out. Is that the case or is there an extendable module? No, there is an event provided by rules in the commerce rules integration that is select, I think it's called select eligible payment methods. So you can throw conditions there and you can, not only by the customer role, but whatever condition you can think of that is rules based, you can filter out payment methods. Okay, so you have to do it through the rules interface, it's not like a permission setting or whatever. All right, thank you. Yeah. And I think there's quite new manual payment method that is like, I think it allows you to create several fields and name in, so it's a more generic approach like having one of these ones. But you can check, I will show the page with resources where you can check more models because I'm not showing all of them here. Yeah. Yeah, yeah, all of them are rules based. Yeah, it is. But I wanted to say that you can throw conditions and on each payment method you can, sorry, you can select the conditions that you want to be active or not. Okay, so product management. I don't know if you guys already know this but we have a separation between product display and products. Yeah, we have that. I don't know if we still have that. Yeah. So there's a couple of models that can help you. We have the display manager, commerce product display manager that provides an alternative interface for relating products and product displays. It's like for assigning the products to nodes. And the inline product form I think is the future that we are currently developing. It will include the product form inside of the product display creation form. Probably the first model will help you a lot if you have a limited set of products but try it out and see how it works for you because it's just an alternative interface for the commerce product manager. And also if you want to manage products in bulk, we have the commerce bulk product creation that will help you creating products in a massive way. So it will expose the product attributes and you can create the combinations for the products and will create a bunch of products that you need. And also if you need to delete them afterwards, you can use the VVO integration. I think it provides VVO views alternatives to most of the commerce screens so you can manage products, customer profiles orders with the VVO operations. Okay, pricing. Not important in commerce, right? Here are a bunch of models that may help you. Price table is really useful for retailers, retailer stores or well, all of the products stores that sell products and the price depend on the quantity that the user is purchasing so it will expose price table basically. And if you select, if you buy more than whatever quantity, the price changes and it stores and it replaces it in the card face and it works. And another one if you are working with several currencies is the commerce multi currency model. It's a really great model. It provides two ways to manage multi currency. The first one is with an automatic rate exchange provided by an external service. I think that the default is the European central bank but you can provide your own or you have a manual way to do it with manual exchange rates and it also provides two fields or a field per currency so you can go even more manual than that. More. Extra price for matters and price savings for matters are two models that expose a different pricing display. The second one is really useful if you have discounts because you can display the normal price and the discounted price and the saving that the customer is getting. And the first one has more or less the same functionality but also other, other for matters. There are a bunch of them there. Yeah. Yeah, two questions. And I'm kind of referencing the UberCard multi price module which handles multiple currencies for UberCard. And it has some capabilities that we view as real important that I didn't see in that previous slide on multi currency. There are certainly a lot of people who just offer the same product at the same sort of worldwide price just with exchange rate conversion. Some people do that but lots and lots of other people set prices by currency or set prices by country. Yeah. Right. So you have a published price list in euros and a published price list in dollars and so on. Yeah, it's the second way that the multi currency model works. Okay. You have the automated exchange rate but it also, if you don't want the automatic exchange rate, you can select that it creates a field, a price field per currency. Okay. So you can set the price in euros, the price in dollars, the price in whatever currency you have. Okay. And then you have to do a little of extra work replacing the price in the, in the, in rules so you can get, you get the correct currency always. Right. Yeah. You need to know. And there there's a couple of issues of first picking up a default price for a new visitor or a new customer which you can do with IP address, look up in that sort of thing, pick up the right default price and currency. And then the other thing is setting a price and currency for a user at when you, once they've purchased. So they don't come back and see a different price the next time. Then there's another issue here which also appears in Uber cards multi price fairly recently. It was updated in the last, you know, year. But it's the, there's a common situation where, okay. So the general notion is you have price levels, right? You have different prices for different classes of customers. Yeah. I think that some of them are, some customers by country is one case of this. But another case like for us, we have academic prices and we have commercial user prices and we have government prices and so on. So how, how can you have this in Drupal commerce? Yeah. You have all the price calculation is based in rules or you have a, you have a rules even to change the price calculation. So you can decide in, with some conditions which price are you showing or with, or how are you modifying the price? Okay. So I understand there is that general mechanism and that's very useful, but this is the contrib module section, right? So I'm kind of looking to see if there is a contrib module that has handled this case. Just for example, pricing by role is an example. Yeah. But you have, you can manage that with the general, general approach. You can check the role of the current customer. Okay. So right now I would have to, I'd have to write that contrib module if I wanted it, right, to price by role. You can use the, the fault rules set when the price is calculated, check the role and modify the price, but you can also, yeah, you can also write your own set of rules or whatever integration to easy these, these operations, but you should be able to do it by, by, by out of the box really. Okay. Okay. If you have further things with this, we can discuss it later, right? Okay. So next things. Okay. Price history is, displays the, the change of the price in the history of a product. And price by components is a way to split the price components into rules and into views. So you can display price without taxes or price without discounts in some, in some environments or, or some situations. The embracing part is kind of funny because we have like four different models that have four different approaches. So you have to choose whatever it fits for you. Commerce invoice create an invoice entity. Commerce order invoice craze and invoice state for the order entity. Commerce invoice receipt creates an invoice display for the order entity. And then you have the PDF thing. Okay. So you can choose, you, you should choose whatever fits for you because these are really different approaches. Utilities is Miss Alania. I, I couldn't figure a category for these ones. The address book should be really in the essentials. It just got a 2.0 release. And it basically allows you to, allows the customer to select a previous address, enter it in the system and also provides a checkbox to copy the address between the different customer profiles that you, you can expose in the checkout. Yeah. I think so. Yeah. I think so. We can try that, but I think that is only with registered users. I mean the, the copy thing, no, the copy thing works with everything, but the, the select previous address is just for registered users. Yeah. Sorry. The shipping model provides a shipping customer profile. So yeah. Yeah. I mean the commerce provides a default billing profile and shipping provides a shipping profile. So the copy will, will work because there are the same thing and you should, the, the, the select the previous address should work as well. Does that answer your question? More or less? Okay. Coupons. Next one. No, sorry. Okay. Coupons is a coupon functionality is in, I would say that is in heavy development. I want to say that in front, but it creates a coupon line item so you can have a coupon like functionality with commerce and there is a support for percentage and fixed amount and mass generation. So it's a lot of coverage and it will get a stable release soon. Next one. Commerce card Ajax provides an Ajax functionality for the card so you, when you do remove, remove, you don't reload the page and also for the card. And there is the commerce add to card extras that provides a quantity field for the, for views so you can build your own listings and provide an add to card button and quantity in the same row so you can have a list of pros and a way to add them to the card. More. There are many, many more. So an email that replaces the default one with an email configurable system, a reorder model that is one feature in the commerce model test this week and a wish list, wish list functionality as well with views integration. So yeah. So yeah. It's not more robust in core because the tokens and stuff aren't really in place in core to have the full like pretty HTML email. Okay, the question was why use commerce email if commerce has a base, a base source for support for this. And the answer from Brian was that commerce email provides a way to get more beautiful emails in HTML and tokens. Sorry. Just token support. Yeah. Okay. Thanks. Other. This is live could be a lot longer but you can check these ones. Really interesting that two last ones, commerce, devil and commerce examples. If you are developing with commerce, commerce devil provides devil integration with commerce and it supplies a way to get more detailed errors and also devil must generate. And commerce examples is examples on how to build things with commerce. There are a bunch of examples there that you can base on. Last word about install profiles. Sorry. Sorry. This will be published in the website and all these are links in all the slides. Okay. Okay. Last word on install profiles and distributions. Install profiles, I'll say that commerce kickstart is the recommended install profile. It's on 1.0 right now and we have a roadmap for getting the 2.0. And there is above to discuss this tomorrow. Tomorrow at 2.15. So if you're interested in what will get into commerce kickstart 2.0, you should go to the both. And commerce downloads is a file prepared, this install profile to sell files such as ebooks or music. And a couple of already existing distributions. There will be many more in the future. Mark plug is ready to use Drupal commerce distribution with a beautiful omega HTML5 theme. And open deals is daily deals, group-on-like distribution. There will be many more. Okay. So general resources. The Drupal commerce.org website and we have a country listing there. It's wiki, it's community maintained. The project of Drupal commerce, commerce kickstart, the Twitter account. We are doing the commerce model every Thursday. Feature 1 country model that is interesting for you to use. And resource about commerce guys. If you have any questions about commerce guys and general commerce questions, you can drop by the booth that we have in the sponsor site and ask us whatever you want. And just a reminder, just after this session in half an hour, if you want to discuss some of the countries and you want to see a demo of one of them or solve further questions, I'll be in the room 206 in half an hour to solve of these. So I think if we are, we have been solving questions, but you have any final question? Yeah. Sorry? Discounting? Yeah. Yeah. But discounting is commerce core feature and it's all rules based. The pricing system is all based in rules. Okay. Yeah. I'm a simple pay. I don't really know. I don't know. It's probably, we can search for it later if you want and see if there's something already. Okay. Fits? Fits is? At the moment there are only support for customers and products. Yeah. Yeah, you can mass import them with commerce feeds or commerce migrate. No, it's feeds. So you can synchronize. That's the point of using feeds that you can synchronize based on the global ID. So you can assign the global ID normally if you are using products, normally to the SKU. So you can upload initial file and then update the products that you already have. Okay. Yeah. Yeah. No, I think it's just a way to send more beautiful mails to the user, token basis so you can replace the default rule that sends the email to the user by another thing. Okay. So I think we're out of time. I don't know. So if you have any further question, I'll be happy to answer it in the both next to this. And thank you all for coming.