Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Vo Van Khoa
/
M2OverrideCreateInvoice
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
9334978e
authored
2018-05-16 19:43:33 +0700
by
Vo Van Khoa
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Add all files
0 parents
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
249 additions
and
0 deletions
.gitignore
app/code/FGCT/OverrideCreateInvoice/Block/Adminhtml/Items/Renderer/DefaultRenderer.php
app/code/FGCT/OverrideCreateInvoice/Helper/Data.php
app/code/FGCT/OverrideCreateInvoice/Observer/OrderInvoiceSaveAfter.php
app/code/FGCT/OverrideCreateInvoice/Observer/OrderInvoiceSaveBefore.php
app/code/FGCT/OverrideCreateInvoice/etc/adminhtml/events.xml
app/code/FGCT/OverrideCreateInvoice/etc/di.xml
app/code/FGCT/OverrideCreateInvoice/etc/module.xml
app/code/FGCT/OverrideCreateInvoice/registration.php
app/code/FGCT/OverrideCreateInvoice/view/adminhtml/layout/sales_order_invoice_new.xml
app/code/FGCT/OverrideCreateInvoice/view/adminhtml/templates/order/invoice/create/items/renderer/default.phtml
modman
readme.md
.gitignore
0 → 100644
View file @
9334978
.vscode
.history
app/code/FGCT/OverrideCreateInvoice/Block/Adminhtml/Items/Renderer/DefaultRenderer.php
0 → 100644
View file @
9334978
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
namespace
FGCT\OverrideCreateInvoice\Block\Adminhtml\Items\Renderer
;
use
Magento\Sales\Model\Order\CreditMemo\Item
as
CreditMemoItem
;
use
Magento\Sales\Model\Order\Invoice\Item
as
InvoiceItem
;
use
Magento\Sales\Model\Order\Item
as
OrderItem
;
/**
* Order item render block
*
* @api
* @since 100.0.2
*/
class
DefaultRenderer
extends
\Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer
{
public
function
__construct
(
\Magento\Backend\Block\Template\Context
$context
,
\Magento\CatalogInventory\Api\StockRegistryInterface
$stockRegistry
,
\Magento\CatalogInventory\Api\StockConfigurationInterface
$stockConfiguration
,
\Magento\Framework\Registry
$registry
,
array
$data
=
[]
)
{
$this
->
_coreRegistry
=
$registry
;
parent
::
__construct
(
$context
,
$stockRegistry
,
$stockConfiguration
,
$registry
,
$data
);
}
public
function
getErrorOutStock
(
$productId
)
{
$productsId
=
explode
(
','
,
$this
->
getRequest
()
->
getParam
(
'productsId'
));
if
(
in_array
(
$productId
,
$productsId
))
{
$html
=
'<div id="messages"><div class="messages"><div class="message message-error error"><div data-ui-id="messages-message-error">This product is out of stock</div></div></div></div>'
;
return
$html
;
}
}
}
app/code/FGCT/OverrideCreateInvoice/Helper/Data.php
0 → 100755
View file @
9334978
<?php
namespace
FGCT\OverrideCreateInvoice\Helper
;
class
Data
extends
\Magento\Framework\App\Helper\AbstractHelper
{
protected
$_filesystem
;
protected
$_directory_list
;
protected
$_resource
;
protected
$_scopeConfig
;
public
function
__construct
(
\Magento\Framework\App\Helper\Context
$context
,
\Magento\Framework\Filesystem
$filesystem
,
\Magento\Framework\App\ResourceConnection
$resource
,
\Magento\Framework\App\Config\ScopeConfigInterface
$scopeConfig
,
\Magento\Framework\App\Filesystem\DirectoryList
$directory_list
)
{
parent
::
__construct
(
$context
);
$this
->
_filesystem
=
$filesystem
;
$this
->
_directory_list
=
$directory_list
;
$this
->
_resource
=
$resource
;
$this
->
_scopeConfig
=
$scopeConfig
;
}
}
app/code/FGCT/OverrideCreateInvoice/Observer/OrderInvoiceSaveAfter.php
0 → 100644
View file @
9334978
<?php
namespace
FGCT\OverrideCreateInvoice\Observer
;
use
Magento\Framework\Event\ObserverInterface
;
class
OrderInvoiceSaveAfter
implements
ObserverInterface
{
public
$_coreRegistry
;
protected
$_helper
;
public
function
__construct
(
\Magento\Framework\Registry
$coreRegistry
)
{
$this
->
_coreRegistry
=
$coreRegistry
;
}
public
function
execute
(
\Magento\Framework\Event\Observer
$observer
)
{
$objectManager
=
\Magento\Framework\App\ObjectManager
::
getInstance
();
$productsId
=
$this
->
_coreRegistry
->
registry
(
'fgct_overridecreateinvoice_products_out_stock'
)
?:
[];
if
(
count
(
$productsId
))
{
$msg
=
"Some of the products are out of stock"
;
//throw new \Exception($msg);
exit
(
'OrderInvoiceSaveAfter'
);
}
}
}
app/code/FGCT/OverrideCreateInvoice/Observer/OrderInvoiceSaveBefore.php
0 → 100755
View file @
9334978
<?php
namespace
FGCT\OverrideCreateInvoice\Observer
;
use
Magento\Framework\Event\Observer
;
use
Magento\Framework\Event\ObserverInterface
;
use
Magento\Framework\Controller\ResultFactory
;
class
OrderInvoiceSaveBefore
implements
ObserverInterface
{
public
$_coreRegistry
;
protected
$_helper
;
public
function
__construct
(
\Magento\Framework\Registry
$coreRegistry
,
\Magento\Framework\App\RequestInterface
$request
,
\Magento\Framework\App\ResponseFactory
$responseFactory
,
\Magento\Framework\Message\ManagerInterface
$messageManager
,
\Magento\CatalogInventory\Model\Stock\StockItemRepository
$stockItemRepository
,
\Magento\Framework\UrlInterface
$url
)
{
$this
->
_coreRegistry
=
$coreRegistry
;
$this
->
_request
=
$request
;
$this
->
responseFactory
=
$responseFactory
;
$this
->
url
=
$url
;
$this
->
_messageManager
=
$messageManager
;
$this
->
_stockItemRepository
=
$stockItemRepository
;
}
public
function
execute
(
\Magento\Framework\Event\Observer
$observer
)
{
$objectManager
=
\Magento\Framework\App\ObjectManager
::
getInstance
();
$orderId
=
$this
->
_request
->
getParam
(
'order_id'
);
$invoice
=
$observer
->
getEvent
()
->
getInvoice
();
$order
=
$invoice
->
getOrder
();
$productManager
=
$objectManager
->
create
(
'Magento\Catalog\Model\Product'
);
$productsOutStock
=
$productsNotEnoughQty
=
[];
foreach
(
$invoice
->
getAllItems
()
as
$item
)
{
$name
=
$item
->
getName
();
$type
=
$item
->
getSku
();
$productId
=
$item
->
getProductId
();
$qty
=
$item
->
getQty
();
$product
=
$productManager
->
load
(
$productId
);
$_productStock
=
$this
->
_stockItemRepository
->
get
(
$productId
);
// $_productStock->getQty();
if
(
!
$_productStock
->
getIsInStock
())
{
$productsOutStock
[
$productId
]
=
$name
;
}
if
(
$qty
>
$_productStock
->
getQty
())
{
$productsNotEnoughQty
[
$productId
]
=
$_productStock
->
getQty
();
}
}
if
(
count
(
$productsOutStock
))
{
$productsId
=
array_keys
(
$productsOutStock
);
$this
->
_coreRegistry
->
register
(
'fgct_overridecreateinvoice_products_out_stock'
,
$productsId
,
true
);
$this
->
_messageManager
->
addError
(
__
(
'Some of the products are out of stock'
));
$redirectionUrl
=
$this
->
url
->
getUrl
(
'sales/order_invoice/new/*/product/*/'
,
[
'order_id'
=>
$orderId
,
'productsId'
=>
implode
(
','
,
$productsId
)]);
$this
->
responseFactory
->
create
()
->
setRedirect
(
$redirectionUrl
)
->
sendResponse
();
return
$this
;
}
}
}
app/code/FGCT/OverrideCreateInvoice/etc/adminhtml/events.xml
0 → 100644
View file @
9334978
<?xml version="1.0"?>
<config
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"urn:magento:framework:Event/etc/events.xsd"
>
<event
name=
"sales_order_invoice_save_before"
>
<observer
name=
"fgc_sales_order_invoice_save_before"
instance=
"FGCT\OverrideCreateInvoice\Observer\OrderInvoiceSaveBefore"
/>
</event>
<event
name=
"sales_order_invoice_save_after"
>
<observer
name=
"fgc_sales_order_invoice_save_after"
instance=
"FGCT\OverrideCreateInvoice\Observer\OrderInvoiceSaveAfter"
/>
</event>
</config>
app/code/FGCT/OverrideCreateInvoice/etc/di.xml
0 → 100644
View file @
9334978
<?xml version="1.0"?>
<config
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"urn:magento:framework:ObjectManager/etc/config.xsd"
>
<preference
for=
"Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer"
type=
"FGCT\OverrideCreateInvoice\Block\Adminhtml\Items\Renderer\DefaultRenderer"
/>
</config>
app/code/FGCT/OverrideCreateInvoice/etc/module.xml
0 → 100644
View file @
9334978
<?xml version="1.0"?>
<config
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"
>
<module
name=
"FGCT_OverrideCreateInvoice"
setup_version=
"1.0.0"
></module>
</config>
app/code/FGCT/OverrideCreateInvoice/registration.php
0 → 100644
View file @
9334978
<?php
\Magento\Framework\Component\ComponentRegistrar
::
register
(
\Magento\Framework\Component\ComponentRegistrar
::
MODULE
,
'FGCT_OverrideCreateInvoice'
,
__DIR__
);
app/code/FGCT/OverrideCreateInvoice/view/adminhtml/layout/sales_order_invoice_new.xml
0 → 100644
View file @
9334978
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<page
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"urn:magento:framework:View/Layout/etc/page_configuration.xsd"
>
<update
handle=
"sales_invoice_item_price"
/>
<body>
<!-- <referenceBlock name="order_items.default" remove="true"/> -->
<!-- <referenceContainer name="content">
<block class="FGCT\OverrideCreateInvoice\Block\Adminhtml\Items\Renderer\FgcDefaultRenderer" name="order_items.default" template="FGCT_OverrideCreateInvoice::order/invoice/create/items/renderer/default.phtml"/>
</referenceContainer> -->
<referenceBlock
name=
"order_items.default"
>
<action
method=
"setTemplate"
>
<argument
name=
"template"
translate=
"true"
xsi:type=
"string"
>
FGCT_OverrideCreateInvoice::order/invoice/create/items/renderer/default.phtml
</argument>
</action>
</referenceBlock>
</body>
</page>
app/code/FGCT/OverrideCreateInvoice/view/adminhtml/templates/order/invoice/create/items/renderer/default.phtml
0 → 100644
View file @
9334978
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
// @codingStandardsIgnoreFile
?>
<?php
/** @var $block \Magento\Sales\Block\Adminhtml\Items\Renderer\DefaultRenderer */
?>
<?php
$_item
=
$block
->
getItem
()
?>
<?php
$block
->
setPriceDataObject
(
$_item
)
?>
<td
class=
"col-product"
>
<?=
$block
->
getColumnHtml
(
$_item
,
'name'
)
?>
<?=
$block
->
getErrorOutStock
(
$_item
->
getProductId
())
?>
</td>
<td
class=
"col-price"
>
<?=
$block
->
getColumnHtml
(
$_item
,
'price'
)
?>
</td>
<td
class=
"col-qty"
>
<?=
$block
->
getColumnHtml
(
$_item
,
'qty'
)
?>
</td>
<td
class=
"col-qty-invoice"
>
<?php
if
(
$block
->
canEditQty
())
:
?>
<input
type=
"text"
class=
"input-text admin__control-text qty-input"
name=
"invoice[items][
<?=
/* @escapeNotVerified */
$_item
->
getOrderItemId
()
?>
]"
value=
"
<?=
/* @escapeNotVerified */
$_item
->
getQty
()
*
1
?>
"
/>
<?php
else
:
?>
<?=
/* @escapeNotVerified */
$_item
->
getQty
()
*
1
?>
<?php
endif
;
?>
</td>
<td
class=
"col-subtotal"
>
<?=
$block
->
getColumnHtml
(
$_item
,
'subtotal'
)
?>
</td>
<td
class=
"col-tax"
>
<?=
/* @escapeNotVerified */
$block
->
displayPriceAttribute
(
'tax_amount'
)
?>
</td>
<td
class=
"col-discount"
>
<?=
/* @escapeNotVerified */
$block
->
displayPriceAttribute
(
'discount_amount'
)
?>
</td>
<td
class=
"col-total last"
>
<?=
$block
->
getColumnHtml
(
$_item
,
'total'
)
?>
</td>
modman
0 → 100644
View file @
9334978
app/code/FGCT/OverrideCreateInvoice app/code/FGCT/OverrideCreateInvoice
readme.md
0 → 100644
View file @
9334978
# GET EXTENSION
Use modman
[
Linux
](
https://github.com/colinmollenhour/modman
)
|
[
Windows
](
https://github.com/khoazero123/modman-php
)
:
cd magento_root/
modman clone http://fgit.fgct.net/vankhoa/M2OverrideCreateInvoice.git
modman deploy M2OverrideCreateInvoice
Use git:
git clone http://fgit.fgct.net/vankhoa/M2OverrideCreateInvoice.git
cp M2OverrideCreateInvoice/* magento_root/
# INSTALLATION
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:clean && bin/magento cache:flush
bin/magento setup:static-content:deploy
Please
register
or
sign in
to post a comment