How to Create Invoice programmatically in Magento 2?

Generate an Auto Invoice Programmatically from Magento 2 required an order id. Based on the Order Id, You can fetch Order Object.

Given code, a snippet is used to generate an Invoice in Magento, After generating an invoice automatically sends the invoice mail to a customer who has placed the order.

I have just given a demo to create an invoice with the specified order id, Continue reading “How to Create Invoice programmatically in Magento 2?”

Get orders collection between a date range in magento 2.

We just need to pass start date and end date to get collection between Specific time in Magento 2. We need to filter created_at field using addAttributeToFilter(). Create Block file.
By default created_at field in  sales_order table represent the time of order creation in Magento 2.

<?php
namespace Rbj\Order\Block;

class OrderRange extends \Magento\Framework\View\Element\Template
{
    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory,
        array $data = []
    ) {
        $this->orderCollectionFactory = $orderCollectionFactory;
        parent::__construct($context, $data);
    }

    /* Order collection between start and end date */
    public function getOrderCollectionByDateRange(){
        $startDate = date("Y-m-d h:i:s",strtotime('2018-1-1')); // start date
        $endDate = strtotime("Y-m-d h:i:s", strtotime('2018-10-1')); // end date

        $orders = $this->orderCollectionFactory->create()
            ->addAttributeToFilter('created_at', array('from'=>$startDate, 'to'=>$endDate));
        return $orders;
    }
?>

Call Function from template file,

$orders = $block->getOrderCollectionByDateRange();

if($orders->getTotalCount() > 0) { 
    foreach($orders as $_order) {
        $orderId = $_order['increment_id'];
        echo "<pre>";print_r($_order);
    }
}

You can get Order collection by date range by the above tricks.

Setup upgrade Error, Invalid Document Element ‘resource’: The attribute ‘title’ is required but missing Magento 2

When we run php bin/magento setup:upgrade command through the command line, Sometimes error will throw like, Invalid Document Element ‘resource’: The attribute ‘title’ is required but missing.

This issue coming to Magento 2.2.* version when you run upgrade command.
This issue is related to acl.xml file. You missing the title attribute to <resource> tag. You must declare all the resource tag in acl.xml file with title attribute except all the resource tag which start with id=”Magento_Backend::”.

Check error code,

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
    <acl>
        <resources>
            <resource id="Magento_Backend::admin">
                <resource id="Rbj_CustomForm::rbj">
                    <resource id="Rbj_CustomForm::customform" title="Customform Main" sortOrder="10">
                        <resource id="Rbj_CustomForm::manage_customform" title="Manage Customform" sortOrder="10" />
                    </resource>
                </resource>
            </resource>
        </resources>
    </acl>
</config>

<resource id=”Rbj_CustomForm::rbj”> this tag with title attribute is missing, So you must set tag with title=”title name”.

Right code,

<?xml version="1.0" ?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
    <acl>
        <resources>
            <resource id="Magento_Backend::admin">
                <resource id="Rbj_CustomForm::rbj" title="Customform">
                    <resource id="Rbj_CustomForm::customform" title="Customform Slider" sortOrder="10">
                        <resource id="Rbj_CustomForm::manage_customform" title="Manage Customform" sortOrder="10" />
                    </resource>
                </resource>
            </resource>
        </resources>
    </acl>
</config>

Run   Setup upgrade command and your error will be wiped out.

php magento setup:upgrade