Tuesday, January 17, 2017

Magento 2 Basic Theme Development

Magento 2 Theme development and customization can be categorised in different level depending on the different developer’s skills. Different level of customisation are:
  • If a developer just wants to change the colour, images or other small changes on his website, then it can be achieved only with the knowledge of CSS. Developer can use Magento default CSS and make his required changes in it.
  • If a developer wants to make some more changes other than CSS, like some changes in the HTML generated through PHTML file. Then the developer can achieve it if he has a little knowledge of PHP and HTML.
  • If a developer wants to make changes in the website structure, like: placing one block to another place, adding new block or completing moving a block to a different page. This can be achieved if the developer also have the knowledge of XML.
  • Finally, if the developer have complete knowledge as mentioned in above three points, then developer can design his own theme.

Pre requisites

  • Previous Magento coding experience
  • Some knowledge of Magento 2
  • Magento 2 fully installed and running smoothly, access to the frontend & admin.

Theme Development:

Similar to the Magento 1, themes are stored inside app/design/frontend directory. Inside this we need to create Vendor directory with your Vendor_name and inside vendor directory we need to create a new directory which your Theme_name. Both name should not have space between them. So after this the structure will be:
app/design/frontend/Vendor_name/theme_name
Now your structure is in place, you need to declare your theme so that Magento knows it exists and you can set it as an active theme in the admin. Create a theme.xml file within the theme folder, on the root. You can use the code inside of the Blank or Luma theme folders. You can also use the code below. Just insert the name of your theme in the <title> tags. You can also specify a parent theme for fallback purposes.
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
<title>INSERT THEME NAME</title>
<parent>Magento/blank</parent>
</theme>
This is the minimum code you need, but you can also declare a theme image. This is a thumbnail image which shows in the admin on your theme page so you can see a preview of what your theme looks like. To add one of these, add the code below in-between the XML nodes, underneath the theme declaration.
<media> <preview_image>media/theme-screenshot.jpg </preview_image> </media>
Change the name of the thumbnail image to that of your filename. Place the image in the following location:
/app/design/frontend/Vendor_name/theme_name/media/theme-screenshot.jpg
If you don’t have this file in the correct location when you visit your theme page in the admin, you’ll get an error – so make sure your image is in the right place and named correctly.

Theme Registration File:

The last part in declaring your theme is to add a registration.php file to your theme’s root.
/app/design/frontend/Vendor_name/theme_name/registration.php
Add below code in your registration file:

<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/vendor_name/theme_name,
__DIR__
);


Theme Basic Structure:

In a design, there are many static files such as javascript, css, images and fonts. They are stored in separate directories in web of theme package. In Magneto 2, there is no skin directory as Magento 1. So all this static files are kept in web folder inside theme root directory. Here are the structure
app/design/frontend/Vendor_name/theme_name/
├── etc/view.xml
├── web/
│ ├── css/
│ │ ├── source/
│ ├── fonts/
│ ├── images/
│ ├── js/
The etc/view.xml file is where you can configure the Magento Catalog image sizes and other things. Copy the etc/view.xml file from one of the default theme’s and edit as necessary.

The last thing you can do before activating your theme, is to add you logo and declare it. The image file can be added to the web/images folder which you created not long ago. This can be whatever file type you like, in this case I’ve used an svg. So to actually tell the theme to use your logo, you create the Magento_Theme/layout folders and add the following code to a default.xml file. Edit to match your requirements.
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="logo">
<arguments>
<argument name="logo_file" xsi:type="string">images/logo.svg <argument name="logo_img_width" xsi:type="number">300 <argument name="logo_img_height" xsi:type="number">300 </arguments>
</referenceBlock>
</body>
</page>


Composer File:

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

To distribute your theme as a package, add a composer.json file to the theme directory and register the package on a packaging server. { "name": "vendor_name/theme_nameultimate",
"description": "N/A",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/theme-frontend-blank": "100.0.*",
"magento/framework": "100.0.*"
},
"type": "magento2-theme",
"version": "100.0.1",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [
"registration.php"
]
}
}


Activate your Theme

Now everything is in place for you to activate your theme. Browse to the admin of your Magento 2 store, and go to Content > Design > Themes. Make sure your theme appears in this list – if it doesn’t, it hasn’t been declared correctly.
When you can see your theme in the path above, browse to Stores > Configuration > Design. Select the right store scope and then change the theme to your newly created theme.

Monday, January 16, 2017

Odoo 8 – Email Reminders To Vendors


Pragmatic Techsoft Pvt. Ltd. has comeup with new module “pragmatic_email_reminders” to send reminder emails to vendor. There are following email notifications categories involved :
  • Delayed Quotation Submission Against RFQ
  • Delayed Incoming Shipments
  • Partial Incoming Shipments
All above mentioned are the reminder emails to the vendors.

This modules has follwoing configuration available


1. Configurations in Odoo is available in Purchase section :


  • This will allow user to set initital delay to shoot email reminders to vendors for delayed quotes submission.
  • Initial delay is considered from the date of Order itself
  • User can setup frequency schedular with interval unit and type
  • max. no. of reminders for vendor per RFQ can be set up

2. RFQ Reminder Configuration

  • This will allow user to set initital delay to shoot email reminders to vendors for delayed quotes submission from a date of order

3. Delay Incoming Shipments

  • This email reminder is used to notify vendor if none of the product received on a scheduled dated in PO. The initial delay considered for this is on and above on the “Scheduled Date” mentioned for a Shipment.
  • User can update new expected date of shipment in Picking if conveyed by vendor.

4. Partial Incoming Shipments

  • This email reminder is used to notify vendor if full quantities in picking are not received.

Thursday, January 5, 2017

Magento 2 Module Development




Here we are going to learn, how to develop a simple module in magento 2 and what are the pre requirements to develop a module. Here, we assume that you have successfully installed Magento 2 in your development environment.

After you have successfully installed Magento 2.0 in your development environment and it functions properly, there are two things which we recommend you to do:

Disable the System Cache:
  • Login to Magento admin section.
  • Goto System > Cache Management.
  • Select all types of caches available there.
  • Select Disable option from the dropdown on top left corner of table.
  • Click on submit button. It will disable all the cache in magento system.

Switch your Magento to Developer Mode:
  • Open your development environment terminal.
  • Move to the root location of your magento instance.
  • Run this command: php bin/magento deploy:mode:set developer.

All this information will help you to understand the new structure more easily. Now we will start to learn the module development step by step.

STEP 1: Create a module folder and necessary files to register the module.
In Magento 1.x, we have learned that module folder is created inside one of the code pools inside app/code/(community, core or local). But in Magento 2, no more code pools are available. Now , the module folder will be:

app/code/Pragmatic
app/code/Pragmatic/Helloworld

The Pragmatic folder is the module’s namespace, and Helloworld is the module’s name.
Note: If you don’t have the code folder in your app directory, create it manually.
After module folder we will create module.xml file inside app/code/Pragmatic/Helloworld/etc folder.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Pragmatic_Helloworld" setup_version="1.0.0">
</module>
</config>


And now we will create a registration.php file to register our module in Magento:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Pragmatic_Helloworld',
__DIR__
);


Now, Open your terminal and go to the Magento 2 root. Run the following command from terminal:

php bin/magento setup:upgrade


Now if you want to confirm that your module is registered in magento or not, login to magento admin and move to Stores → Configuration → Advanced → Advanced. Here you can see the list of all enabled module in Magento. One more place where you can check that your module is registered or not is app/etc/config.php. Check the array for the ‘Inchoo_Helloworld’ key, whose value should be set to 1.

STEP 2 : Create Router & Controller
Firstly we will define router by creating a routes.xml file inside app/code/Pragmatic/Helloworld/etc/frontend folder with following code:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="hello" frontName="helloworld">
<module name="Pragmatic_Helloworld" />
</route>
</router>
</config>


Here we’re defining our frontend router and route with an id “helloworld”.The frontName attribute is going to be the first part of our URL.
In Magento 2 URL’s are constructed this way:

<frontName>/<controler_folder_name>/<controller_class_name>


So in our example, the final URL will look like this: helloworld/index/index

Create index.php controller file inside app/code/Pragmatic/Helloworld/Controller/Index folder with following code:

<?php
namespace Pragmatic\Helloworld\Controller\Index;
use Magento\Framework\App\Action\Context;
class Index extends \Magento\Framework\App\Action\Action
{
protected $_resultPageFactory;
public function __construct(Context $context, \Magento\Framework\View\Result\PageFactory $resultPageFactory)
{
$this->_resultPageFactory = $resultPageFactory;
parent::__construct($context);
}
public function execute()
{
$resultPage = $this->_resultPageFactory->create();
return $resultPage;
}
}


In Magento 1 each controller can have multiple actions, but in Magento 2 this is not the case. In Magento 2 every action has its own class which implements the execute() method.

STEP 3 : Create Block Here, we will create a simple Helloworld.php block file inside
app/code/Pragmatic/Helloworld/Block folderwith following code:

<?php
namespace Pragmatic\Helloworld\Block;
class Helloworld extends \Magento\Framework\View\Element\Template
{
public function getMessage()
{
return 'Hello World!';
}
}


In this block file, we have created a getMassage() method which will return a message ‘Hello World!’.

STEP 4 : Create Layout and Template file
We have seen in Magento 1.x layout file and template files are placed in a separate app/design/ folder, but in Magento 2 it is placed inside a new view folder which is placed in module folder only. Inside this we can have three folders namely: adminhtml, base or frontend.

The adminhtml folder is used for admin, the frontend folder is used for frontend and the base folder is used for both, admin & frontend files.

Here we will first create a helloworld_index_index.xml layout file inside app/code/Pragmatic/Helloworld/view/frontend/layout folder with following code:

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd" layout="1column">
<body>
<referenceContainer name="content">
<block class="Pragmatic\Helloworld\Block\Helloworld"
name="helloworld" template="helloworld.phtml" />
</referenceContainer>
</body>
</page>


In our layout file, we have created a block inside content container and set the template file as helloworld.phtml file. Now we will create a template file inside
app/code/Pragmatic/Helloworld/view/frontend/template folder with following code:

<h1><?php echo $this->getMessage(); ?></h1>


$this variable is referencing our block class and we are calling the method getMessage() which is returning the string ‘Hello world!’.

Now, open your browser. Hit your yourdomain.com/helloworld/index/index. You can see the message as below:

article

Tuesday, January 3, 2017

Magento 2 Improvements over Magento 1

Magento is one of the top leading Open-Source Digital Commerce Platform for an online store. Magento is used by both small scale industries and large scale industries to open their online store and handle their store. Magento is the best Content Management System(CMS) to develop an ecommerce website and manage their store. Magento is getting improved day by day, because of the hard work and high level analysis of magento team and thousands of developers who are showing their interest in it and developing more functional & innovative extensions and themes to make magento more easy to use.

Now, magento has released a complete new version which they named as Magento 2. Magento 2 is totally different from magento in terms of new features, structure flow, coding, view and many more. In magento 2, team has tried to improve all the complaints of developers who are facing issues in magento previous version. The Key features that are improved in magento 2 are:

Improved Performance:

Performance was the major issue which a developer faces when it comes time to deploy a heavy ecommerce website using magento. Because the performance of magento (till 1.9.x) was slow. But in Magento 2 they have worked a lot in it and improved the performance of Magento 2 by an average of 20%. Additions on Magento 2:
  • Magento 2 fully supports PHP 5.6 and PHP 7. PHP 7 is now released with completely new performance and much faster executions.
  • Nginx has been developed with three core principles in mind: high performance, high concurrency, and low usage of memory. Thus, it significantly increases the speed, and Magento 2 will fully support it.
  • Redis is an advanced key-value cache which provides top notch performance and offers other features. It incorporates several use cases for in-memory datasets, which are the reason of high performance results.
  • Full page caching is so powerful due to the ability to store the full page output in a cache. As a result, subsequent page loads do not require much server load. Thus, full page caching is mandatory for high-traffic websites, and Magento 2 will fully support it.

User-friendly Checkout:

Checkout is one of the most important part of an ecommerce website. If the checkout process is not good then the stores have more chances to move their products to abandon cart which reduces the store’s sales. Instead of an accordion layout that’s used in older versions of Magento, the steps are now located across the top. The overall design is much clearer and concise, and easier to navigate through. Customers need to have a stress-free and efficient checkout experience, and Magento 2 provides just that.
  • Reduced the number of checkout steps and also reduce the information details to be filled by customers.
  • Integration with popular payment gateways (PayPal, Braintree, Authorize.net, WorldPay (Enterprise Edition), CyberSource (Enterprise Edition)) that weren’t previously supported. Variety of payment options provide better checkout UX for your customers.
  • Automatic guest checkout.
  • Order summary with thumbnail.
  • Receiving shipping rates once information is provided.


User-friendly Administration Panel:

The main administration panel has been redesigned and is now displayed vertically on the left hand side of the admin. The menu icons are very prominent and this is because the entire navigation is touch friendly and responsive. This improvement should be welcomed and should definitely help those merchants who spend their days running around with an iPad in hand. Changes in administration panel are:

  • UI enhancements providing responsive and touch friendly navigation. Let the good times roll for merchants who works with CMS via iPads or tablet.
  • Features are well categorised and managed under the menu in comparison to previous magento version.
  • Grid view is made configurable, so that admin can select the attributes to be shown in it. Before, we need to hard to add any new column in grid.


  • Addition of new menu element “Marketing”. All the marketing related features are listed inside this menu.


Easy Product Creation and Configuration:

In previous magento version, product creation was a long process specially for configurable products. Now, product creation becomes more easier and more customizable from one place.Enhancement are:
  • The product creation process in Magento 2 has been streamlined and it becomes more easier to create any type of product.
  • Product attribute set has been modified. We can choose an attribute set while creating product and we can change it on from the same place.
  • Now, you can add video as product images and in description.


  • We can show the configurable options with its value. Eg: we can show the actual color in place of dropdown.


Quarterly Platform Updates:

Magento 2 will release new features for both Community and Enterprise Editions every three months.


Conclusion:

Magento 2 maintains the flexibility for which magento is known in ecommerce development. Businesses will move from magento 1 to magento 2 and from other ecommerce platform to magento 2, because of all the improvements which are mentioned above and other improvements. Experts believes that business will grow more with all the additional and improved functionalities of Magento 2 like: better performance, small and streamlined checkout process which make customers to come back to your store.

Magento 1 will be officially supported for the next 3 years from Magento 2 launching (Dec 2015), so you may take your time to migrate your Magento store to Magento 2. If you have a middle-sized store don’t hurry up to update. Just wait while the usual extensions for payment gateways and delivery options are being tested on larger scale retailers.

Although Magento 2 have better UI experience for customers & admin and have many advantages and disadvantages, but it definitely will be expensive to setup and need more expertise to setup this platform.

If you need any kind of assistance or development for Magento 2, We have a team of Magento developers. Contact us with your requirements.

Friday, December 9, 2016

InstaPics - Instagram Magento Extension

InstaPics is a magento extension to showcase instagram images in your online store. It will help you to fetch instagram images to your online by using #hashtag or by #UserDetails.

Social commerce is one of the biggest commerce trends from last few years. Nowadays, social media is the biggest part of everyone's day-to-day life. And Instagram is one of the most popular social media among all age groups especially among the youngster. One can increase the market value of their products by advertising the use of their products by their customers. This will surely increase the customer’s interest for your products and in some ways it will also help your customers to learn more about the ways to use the products.

Instagram images can be displayed anywhere throughout the website in a complete responsive layout. Images can be shown in either of the two fashions. They are:
  • Grid Layout: In this layout you can configure the number of images to show in a grid, size of the grid, how to fetch the images(Either by #hashtag or by #UserDetails), etc.
    Product_slider Grid View.jpg
  • Slider Layout: In this layout you can configure the complete slider - no. of images, blocks to show in one slide, pagination, movement, margin, how to fetch the images (Either by #hashtag or by #UserDetails), etc.

    Product_slider.jpg
One can insert their instagram images in any block or section or page of the their website. It will be fully responsive and can be mould in required size according to its container. It can be inserted in either ways:

Selection_025.png

Tuesday, November 22, 2016

Pragmatic has provided a connection with the social feeds of Facebook and Twitter In Odoo


With Odoo 9 Social Feed module, Pragmatic has provided a connection with the social feeds of Facebook and Twitter. The feeds from both the sites are combined and made available to the user in chronological order. Also, there is a facility of custom odoo posts which can be added to them.
  • Before starting with this module, the user needs to specify the account names in the configuration from which the feeds are to be fetched.
  • Feeds from multiple accounts can also be fetched.
  • The feeds related to the specified accounts of both facebook and twitter are fetched and then arranged in the ascending order of time elapsed and displayed to the user.
Facebook Feeds
  • To identify that a particular post is from facebook, a facebook icon is shown on top of that post.
  • Name of the account from which that post is fetched is also shown beside the icon. This can be helpful in case multiple accounts are specified.
Twitter Feeds
  • Similarly, to identify that a particular post is from twitter, a twitter icon is shown on top of that post.
  • Name of the account from which that post is fetched is also shown beside the icon. This can be helpful in case multiple accounts are specified.
Custom Feeds
  • There is also a facility to send custom feeds (posted by the odoo users).
  • The users can post the company related feeds, best wishes, or any other newsfeeds internally which will be available to other odoo users.
  • Internal posts are to be written in the textbox given at the bottom of the page.
  • Also, you can attach an image to the text message, which will be describing your message.
  • The image icon beside the textbox allows you to select the images available on your local machine.
  • User has to upload the image, which will then get added in the textbox.
  • After the message is completed, click on the Post button.
  • Once, clicked on the Post button, the message will be posted above along with the time ago tag.
Source page of the feed
  • Complete feed of facebook and twitter are not displayed here as it may occupy lots of space. Hence, the 'read more..' option is provided.
  • The 'read more..' option is given at the end of every feed for viewing the it in detail.
  • On click of the link the user will be redirected to the source page of that feed.

Sunday, November 13, 2016

Odoo 10 Community Edition on AWS Marketplace


Pragmatic has launched Odoo 10 on the Amazon Cloud Marketptace, With a click on a button you can launch an instance of Odoo 10 Community Edition


Odoo 10 Community Edition Features

Event

  • Event Barcode
  • Email Schedule : Easy to Followup

Account

HR

  • HR Attendance (Kiosk Mode)
  • Print Employee Badge
  • Sign In/Out authenticate using Pin
  • Timesheet Apps : usability Improvement

POS

  • POS Serial Number
  • POS Default Cash Control
  • POS Restaurant : Transfer order from one table to another

Stock

  • Option in Payment Gateway to auto confirm SO
  • Out of stock warning in option
  • Delivery : choose the package when clicking on put in pack
  • Inventory : Can apply Quality control on picking
  • Serial Number Upstream Tracebility
  • Delivery Order : Add margin in % to cover lost
  • Picking : Up/Down Tracebility

Website/ Ecommerce:

  • B2B/B2C
  • New checkout design for address selection
  • Ecommerce : Add multiple images of products
  • Improved Portal Frotend view
  • Easy to set website Favicon
  • Ecommerce insight: Save, manage, and reuse credit cards. Authorize amount at checkout and capture at shipping.
  • Ecommerce user can pay through stored card
  • Easy to trace Website Orders, Invoices

Expense :

  • Accountant can direct pay the Expense
  • Email Alias to direct record Expense (based on expense internal reference, system identify product and create expense accordingly)

General / Discuss :

  • history of chatter clickable (source document)
  • The debug mode does not split the web assets by default
  • Keyboard shortcuts detailed on the top right menu from the home page
  • Easy to maintain user access (set default access to default user)
  • Search date ranges quickly with the new in-between operator.
  • Canned responses and /commands in discuss
  • Create in one click
  • Company setting of apps moved to Apps > Setting
  • Any HTML type report easily edit in app view => https://drive.google.com/file/d/0B21cUNlAdZ6gWHl5NUE4b0lqc0k/view?usp=drivesdk

Studio:

  • Easy to Create new Apps
  • Easy to add new field in either form view or tree view
  • Channge string, help message, views, reports,....

Purchase :

  • Editable PO: Easy to edit confirmed PO
  • Purchase Teander : Blanket order Type

Project:

  • Project : project dashboard is now based on user's favorite
  • Project : Easy to maintain Sub-Task
  • Forecast : Grid : By User, By Project

Subscription:

  • Subscription dashboard by company, Tag, Contract
  • Subscription : New Cohort Analysis

Helpdesk Management:

Easy to assign tickets by different Assignation Method
  • Randomly
  • Manually
  • Balanced
Generate Tickets
  • Email Alias
  • Live Chat
  • Ticket Form
  • External API
Performance
  • SLA Pollicies
  • Rating
  • Canned Response
Self-Service
  • Forum- Help Center
  • Slides- eLearning

MRP

  • PLM
  • MPS
  • Maintenance
  • Quality
  • Easy to know "Overall Equipement Effectivness"
  • Unbuild Order , Scrap Products