{"id":1116,"date":"2015-09-23T13:39:41","date_gmt":"2015-09-23T11:39:41","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1116"},"modified":"2015-09-24T09:54:09","modified_gmt":"2015-09-24T07:54:09","slug":"magento-annuler-et-supprimer-des-avoirs","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/","title":{"rendered":"Magento : Annuler et supprimer des avoirs"},"content":{"rendered":"<p>Par d\u00e9faut dans la solution magento, il n&rsquo;est pas possible d&rsquo;annuler ni de supprimer les avoirs. ( C&rsquo;est logique au niveau comptable )<br \/>\nCette fonctionnalit\u00e9 peut toutefois \u00eatre pratique dans le cas d&rsquo;une erreur de manipulation<\/p>\n<p>Nous allons donc voir comment faire pour ajouter cette fonctionnalit\u00e9 \u00e0 Magento en cr\u00e9ant un module.<br \/>\nCelui-ci va ajouter 2 boutons \u00ab\u00a0Annuler\u00a0\u00bb et \u00ab\u00a0Supprimer\u00a0\u00bb dans la page de gestion d&rsquo;un avoir.<\/p>\n<p><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/credit-memo-cancel-delete.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1125\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/credit-memo-cancel-delete.jpg\" alt=\"Credit Memo Cancel delete\" width=\"780\" height=\"92\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/credit-memo-cancel-delete.jpg 780w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/credit-memo-cancel-delete-300x35.jpg 300w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><\/a><\/p>\n<p>Je ne vais d\u00e9tailler ici que le fonctionnement logique du module.<br \/>\nVous pourrez trouver l&rsquo;int\u00e9gralit\u00e9 des sources et le module sur github : <a href=\"https:\/\/github.com\/nenes25\/magento_creditMemo\" target=\"_blank\">https:\/\/github.com\/nenes25\/magento_creditMemo<\/a><\/p>\n<p>L&rsquo;objectif de ce module \u00e9tant de ne pas r\u00e9aliser de surcharge, nous allons utiliser les observers.<br \/>\nCelui qui nous int\u00e9resse <strong>adminhtml_widget_container_html_before<\/strong><\/p>\n<p>Dans le fichier de configuration de notre module il faut donc ajouter un observer sur cet \u00e9v\u00e9nement via le code suivant<\/p>\n<pre lang=\"xml\" escaped=\"true\">&lt;global&gt;\r\n..\r\n\u00a0&lt;events&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;adminhtml_widget_container_html_before&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;observers&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;add_creditmemo_buttons&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;class&gt;hhennes_creditmemo\/observer&lt;\/class&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;method&gt;addCreditMemoButtons&lt;\/method&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/add_creditmemo_buttons&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/observers&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/adminhtml_widget_container_html_before&gt;\r\n\u00a0&lt;\/events&gt;\r\n...\r\n&lt;\/global&gt;\r\n<\/pre>\n<p>Passons au code de l&rsquo;observer, dans lequel nous allons ins\u00e9rer ces nouveaux boutons sur la page, et leur ajouter un lien vers le controller de notre module<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;?php\r\n\r\n\/**\r\n\u00a0* Hhennes_CreditMemo : Observer\r\n\u00a0*\/\r\nclass Hhennes_CreditMemo_Model_Observer\r\n{\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * Ajout de boutons pour Annuler et Supprimer les avoir\r\n\u00a0\u00a0\u00a0\u00a0 * @param Varien_Event_Obsever $observer\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public function addCreditMemoButtons($observer)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $container = $observer-&gt;getBlock();\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Ajout du boutons sur la page de visulalisation d'un avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ($container !== null &amp;&amp; $container-&gt;getType() == 'adminhtml\/sales_order_creditmemo_view') {\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Ajout du bouton d'annulation\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $cancelButtonsDatas = array(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'label' =&gt; Mage::helper('hhennes_creditmemo')-&gt;__('Cancel'),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'onclick' =&gt; 'setLocation(\\''.Mage::helper(\"adminhtml\")-&gt;getUrl('hhennes_creditmemo\/adminhtml_CreditMemo\/cancel\/',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 array('id' =&gt; Mage::app()-&gt;getRequest()-&gt;getParam('creditmemo_id'))).'\\')'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 );\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $container-&gt;addButton('creditmemo_cancel', $cancelButtonsDatas);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Ajout du bouton de suppression\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $deteleButtonsDatas = array(\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'label' =&gt; Mage::helper('hhennes_creditmemo')-&gt;__('Delete'),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'class' =&gt; 'delete',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'onclick' =&gt; 'deleteConfirm(\\''.Mage::helper('hhennes_creditmemo')-&gt;__('delete Credit Memo ?').'\\',\\''.Mage::helper(\"adminhtml\")-&gt;getUrl('hhennes_creditmemo\/adminhtml_CreditMemo\/delete\/',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 array('id' =&gt; Mage::app()-&gt;getRequest()-&gt;getParam('creditmemo_id'))).'\\')'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 );\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $container-&gt;addButton('creditmemo_delete', $deteleButtonsDatas);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\r\n}\r\n?&gt;\r\n<\/pre>\n<p>Pour finir voici le code du controller qui va se charger d&rsquo;annuler ou de supprimer notre avoir.<br \/>\nMais \u00e9galement de supprimer les informations relatives \u00e0 cet avoir de la commande.<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;?php\r\n\/**\r\n\u00a0* Hhennes_CreditMemo : Admin Controller\r\n\u00a0*\/\r\nclass Hhennes_CreditMemo_Adminhtml_CreditMemoController extends Mage_Adminhtml_Controller_Action\r\n{\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * Annulation d'un avoir\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public function cancelAction()\r\n\u00a0\u00a0\u00a0 {\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/R\u00e9cup\u00e9ration de l'avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemoId = $this-&gt;getRequest()-&gt;getParam('id');\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Chargement de l'avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemo = Mage::getModel('sales\/order_creditmemo')-&gt;load($creditMemoId);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Si l'avoir n'est pas encore annul\u00e9\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ( $creditMemo-&gt;getState() != 3) {\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemo-&gt;cancel(); \/\/Annulation des remboursements\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemo-&gt;setState(Mage_Sales_Model_Order_Creditmemo::STATE_CANCELED); \/\/Changement du statut de l'avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemo-&gt;save(); \/\/Sauvegarde de l'avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;_cancelRefundOrder($creditMemo-&gt;getOrder()); \/\/Annulation des donn\u00e9es de remboursement sur la commande\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } catch ( Exception $e) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Mage::getSingleton('adminhtml\/session')-&gt;addError($e-&gt;getMessage());\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;_redirect('adminhtml\/sales_creditmemo\/view',array('creditmemo_id'=&gt; $creditMemoId));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Mage::getSingleton('adminhtml\/session')-&gt;addSuccess($this-&gt;__('Credit Memo successfully cancel'));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Mage::getSingleton('adminhtml\/session')-&gt;addError($this-&gt;__('Credit Memo already cancel'));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;_redirect('adminhtml\/sales_creditmemo\/view',array('creditmemo_id'=&gt; $creditMemoId));\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * Suppression d'un avoir\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 public function deleteAction()\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/R\u00e9cup\u00e9ration de l'avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemoId = $this-&gt;getRequest()-&gt;getParam('id');\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/Chargement de l'avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemo = Mage::getModel('sales\/order_creditmemo')-&gt;load($creditMemoId);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/On annule l'avoir avant de le supprimer\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemo-&gt;cancel(); \/\/Annulation des remboursements\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;_cancelRefundOrder($creditMemo-&gt;getOrder()); \/\/Annulation des donn\u00e9es de remboursement sur la commande\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $creditMemo-&gt;delete(); \/\/Suppression de l'avoir\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } catch (Exception $e) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Mage::getSingleton('adminhtml\/session')-&gt;addError($e-&gt;getMessage());\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;_redirect('adminhtml\/sales_creditmemo', array('creditmemo_id' =&gt; $creditMemoId));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Mage::getSingleton('adminhtml\/session')-&gt;addSuccess($this-&gt;__('Credit Memo successfully deleted'));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $this-&gt;_redirect('adminhtml\/sales_creditmemo', array('creditmemo_id' =&gt; $creditMemoId));\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 \/**\r\n\u00a0\u00a0\u00a0\u00a0 * Annulation des remboursement de la commande\r\n\u00a0\u00a0\u00a0\u00a0 * @param type $order\r\n\u00a0\u00a0\u00a0\u00a0 *\/\r\n\u00a0\u00a0\u00a0 protected function _cancelRefundOrder($order)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/On mets tous les champs relatifs au remboursement \u00e0 NULL\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseDiscountRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseShippingTaxRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseSubtotalRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseTaxRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseTotalOfflineRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseTotalOnlineRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseTotalRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseHiddenTaxRefunded(NULL);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setDiscountRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setShippingTaxRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setSubtotalRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setTaxRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setTotalOfflineRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setTotalOnlineRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setTotalRefunded(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;setBaseHiddenTaxRefunded(NULL);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $order-&gt;save();\r\n\u00a0\u00a0\u00a0 }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Par d\u00e9faut dans la solution magento, il n&rsquo;est pas possible d&rsquo;annuler ni de supprimer les avoirs. ( C&rsquo;est logique au niveau comptable ) Cette fonctionnalit\u00e9 peut toutefois \u00eatre pratique dans le cas d&rsquo;une erreur de manipulation Nous allons donc voir comment faire pour ajouter cette fonctionnalit\u00e9 \u00e0 Magento en cr\u00e9ant un module. Celui-ci va ajouter [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[246],"tags":[380,262,381,150],"class_list":["post-1116","post","type-post","status-publish","format-standard","hentry","category-magento-2","tag-cancel","tag-credit-memo","tag-delete","tag-magento"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Cr\u00e9ation d&#039;un module Magento qui permets d&#039;annuler et de supprimer des avoirs\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"herve\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#article\",\"name\":\"Magento : Annuler et supprimer des avoirs | Herv\\u00e9 Hennes\",\"headline\":\"Magento : Annuler et supprimer des avoirs\",\"author\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/credit-memo-cancel-delete.jpg\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#articleImage\",\"width\":780,\"height\":92,\"caption\":\"Credit Memo Cancel delete\"},\"datePublished\":\"2015-09-23T13:39:41+02:00\",\"dateModified\":\"2015-09-24T09:54:09+02:00\",\"inLanguage\":\"fr-FR\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#webpage\"},\"articleSection\":\"Magento, cancel, credit memo, delete, magento\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/magento-2\\\/#listItem\",\"name\":\"Magento\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/magento-2\\\/#listItem\",\"position\":2,\"name\":\"Magento\",\"item\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/magento-2\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#listItem\",\"name\":\"Magento : Annuler et supprimer des avoirs\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#listItem\",\"position\":3,\"name\":\"Magento : Annuler et supprimer des avoirs\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/category\\\/magento-2\\\/#listItem\",\"name\":\"Magento\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\",\"name\":\"Herv\\u00e9 Hennes\",\"description\":\"D\\u00e9veloppeur e-commerce\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/\",\"name\":\"herve\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/248532c833c69e304668cc20fd20ec6ddc1808306f57d5d14e632059f50347a4?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"herve\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#webpage\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/\",\"name\":\"Magento : Annuler et supprimer des avoirs | Herv\\u00e9 Hennes\",\"description\":\"Cr\\u00e9ation d'un module Magento qui permets d'annuler et de supprimer des avoirs\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/2015\\\/09\\\/23\\\/magento-annuler-et-supprimer-des-avoirs\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/author\\\/herve\\\/#author\"},\"datePublished\":\"2015-09-23T13:39:41+02:00\",\"dateModified\":\"2015-09-24T09:54:09+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/\",\"name\":\"Herv\\u00e9 Hennes\",\"description\":\"D\\u00e9veloppeur e-commerce\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.h-hennes.fr\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Magento : Annuler et supprimer des avoirs | Herv\u00e9 Hennes","description":"Cr\u00e9ation d'un module Magento qui permets d'annuler et de supprimer des avoirs","canonical_url":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#article","name":"Magento : Annuler et supprimer des avoirs | Herv\u00e9 Hennes","headline":"Magento : Annuler et supprimer des avoirs","author":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"publisher":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/09\/credit-memo-cancel-delete.jpg","@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#articleImage","width":780,"height":92,"caption":"Credit Memo Cancel delete"},"datePublished":"2015-09-23T13:39:41+02:00","dateModified":"2015-09-24T09:54:09+02:00","inLanguage":"fr-FR","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#webpage"},"isPartOf":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#webpage"},"articleSection":"Magento, cancel, credit memo, delete, magento"},{"@type":"BreadcrumbList","@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.h-hennes.fr\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/magento-2\/#listItem","name":"Magento"}},{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/magento-2\/#listItem","position":2,"name":"Magento","item":"https:\/\/www.h-hennes.fr\/blog\/category\/magento-2\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#listItem","name":"Magento : Annuler et supprimer des avoirs"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#listItem","position":3,"name":"Magento : Annuler et supprimer des avoirs","previousItem":{"@type":"ListItem","@id":"https:\/\/www.h-hennes.fr\/blog\/category\/magento-2\/#listItem","name":"Magento"}}]},{"@type":"Organization","@id":"https:\/\/www.h-hennes.fr\/blog\/#organization","name":"Herv\u00e9 Hennes","description":"D\u00e9veloppeur e-commerce","url":"https:\/\/www.h-hennes.fr\/blog\/"},{"@type":"Person","@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author","url":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/","name":"herve","image":{"@type":"ImageObject","@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/248532c833c69e304668cc20fd20ec6ddc1808306f57d5d14e632059f50347a4?s=96&d=mm&r=g","width":96,"height":96,"caption":"herve"}},{"@type":"WebPage","@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#webpage","url":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/","name":"Magento : Annuler et supprimer des avoirs | Herv\u00e9 Hennes","description":"Cr\u00e9ation d'un module Magento qui permets d'annuler et de supprimer des avoirs","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/#breadcrumblist"},"author":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"creator":{"@id":"https:\/\/www.h-hennes.fr\/blog\/author\/herve\/#author"},"datePublished":"2015-09-23T13:39:41+02:00","dateModified":"2015-09-24T09:54:09+02:00"},{"@type":"WebSite","@id":"https:\/\/www.h-hennes.fr\/blog\/#website","url":"https:\/\/www.h-hennes.fr\/blog\/","name":"Herv\u00e9 Hennes","description":"D\u00e9veloppeur e-commerce","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.h-hennes.fr\/blog\/#organization"}}]}},"aioseo_meta_data":{"post_id":"1116","title":null,"description":"Cr\u00e9ation d'un module Magento qui permets d'annuler et de supprimer des avoirs","keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-29 16:38:24","updated":"2022-10-04 09:25:07","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.h-hennes.fr\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.h-hennes.fr\/blog\/category\/magento-2\/\" title=\"Magento\">Magento<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMagento : Annuler et supprimer des avoirs\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.h-hennes.fr\/blog"},{"label":"Magento","link":"https:\/\/www.h-hennes.fr\/blog\/category\/magento-2\/"},{"label":"Magento : Annuler et supprimer des avoirs","link":"https:\/\/www.h-hennes.fr\/blog\/2015\/09\/23\/magento-annuler-et-supprimer-des-avoirs\/"}],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1116"}],"version-history":[{"count":7,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1116\/revisions"}],"predecessor-version":[{"id":1131,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1116\/revisions\/1131"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1116"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}