Skip to content

Commit 7bb35b2

Browse files
committed
Add feature: automatic cancel unpaid orders
1 parent 604ec90 commit 7bb35b2

5 files changed

Lines changed: 75 additions & 11 deletions

File tree

README.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Método de pago para Redsys para Magento compatible con SHA-256 y parche SUPEE-6
2525
* Envió de factura al cliente
2626
* Guardar transacciones
2727
* Envio de correo a cliente (si esta habilitado esta config.) y admin si ha habido una cancelación / error en la pasarela de pago
28-
28+
* Cancelación de pedidos no pagados, transcurrido un tiempo determinado (indicado en configuración)
2929

3030
### Requisitos
3131

@@ -39,14 +39,6 @@ Método de pago para Redsys para Magento compatible con SHA-256 y parche SUPEE-6
3939

4040
* [Documentación](https://github.com/DevopensourceTeam/Devopensource_Redsys/wiki/Configuraci%C3%B3n-admin-Magento)
4141

42-
### Histórico de cambios (changelog)
43-
44-
* [Acceder al enlace para ver resumen de cambios](https://github.com/DevopensourceTeam/Devopensource_Redsys/wiki/Cambios-y-Mejoras)
45-
46-
### Próximos cambios (Backlog)
47-
48-
* [Acceder al enlace para ver resumen de cambios](https://github.com/DevopensourceTeam/Devopensource_Redsys/wiki/Cambios-y-Mejoras)
49-
5042
### Soporte técnico
5143

5244
* Principal canal para notificar errores o dudas: [https://github.com/DevopensourceTeam/Devopensource_Redsys/issues](https://github.com/DevopensourceTeam/Devopensource_Redsys/issues)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
class Devopensource_Redsys_Model_Cron {
4+
5+
public function cancelUnpaidOrders(){
6+
7+
$enable = Mage::getStoreConfig('payment/redsys/cancel_unpaid_orders', Mage::app()->getStore());
8+
9+
if(!$enable){
10+
return;
11+
}
12+
13+
$orders = Mage::getModel('sales/order')->getCollection()
14+
->addFieldToFilter('status', array('in' => array('pending')))
15+
->setOrder('created_at', 'desc');
16+
17+
foreach ($orders as $_order){
18+
19+
$_paymentMethod = $_order->getPayment()->getMethod();
20+
21+
if($_paymentMethod != Devopensource_Redsys_Model_Redsys::CODE){
22+
continue;
23+
}
24+
25+
$_format = 'Y-m-d H:i:s';
26+
$_dateCreatedAt = date($_format, Mage::getModel('core/date')->timestamp($_order->getCreatedAt()));
27+
$_dateToday = Mage::getModel('core/date')->date($_format);
28+
$_dateToCancel = date($_format, strtotime( $_dateCreatedAt. ' + '.Mage::getStoreConfig('payment/redsys/cancel_unpaid_orders_min', Mage::app()->getStore()).' minutes'));
29+
30+
if( $_dateToday > $_dateToCancel){
31+
32+
$_order->cancel()->save();
33+
}
34+
35+
}
36+
}
37+
}

app/code/community/Devopensource/Redsys/Model/Redsys.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
class Devopensource_Redsys_Model_Redsys extends Mage_Payment_Model_Method_Abstract
44
{
55

6-
protected $_code = 'redsys';
6+
CONST CODE = 'redsys';
7+
protected $_code = 'redsys';
78

89
protected $_isGateway = true;
910
protected $_canAuthorize = true;

app/code/community/Devopensource/Redsys/etc/config.xml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<config>
33
<modules>
44
<Devopensource_Redsys>
5-
<version>0.2.1</version>
5+
<version>0.2.2</version>
66
</Devopensource_Redsys>
77
</modules>
88
<global>
@@ -71,6 +71,18 @@
7171
</modules>
7272
</translate>
7373
</adminhtml>
74+
<crontab>
75+
<jobs>
76+
<redsys_cancel_unpaid_orders>
77+
<schedule>
78+
<cron_expr>*/5 * * * *</cron_expr>
79+
</schedule>
80+
<run>
81+
<model>redsys/cron::cancelUnpaidOrders</model>
82+
</run>
83+
</redsys_cancel_unpaid_orders>
84+
</jobs>
85+
</crontab>
7486
<default>
7587
<payment>
7688
<redsys>
@@ -93,6 +105,8 @@
93105
<recover_cart>1</recover_cart>
94106
<transaction>0</transaction>
95107
<callback>0</callback>
108+
<cancel_unpaid_orders>0</cancel_unpaid_orders>
109+
<cancel_unpaid_orders_min>30</cancel_unpaid_orders_min>
96110
</redsys>
97111
</payment>
98112
</default>

app/code/community/Devopensource/Redsys/etc/system.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,26 @@
238238
<validate>required-entry</validate>
239239
<depends><callback>2</callback></depends>
240240
</callbackurl>
241+
<cancel_unpaid_orders translate="label comment">
242+
<label>Cancel Unpaid Orders</label>
243+
<frontend_type>select</frontend_type>
244+
<source_model>adminhtml/system_config_source_yesno</source_model>
245+
<sort_order>195</sort_order>
246+
<comment><![CDATA[Automatically cancel orders paid elapsed time indicated in the field below]]></comment>
247+
<show_in_default>1</show_in_default>
248+
<show_in_website>1</show_in_website>
249+
<show_in_store>1</show_in_store>
250+
</cancel_unpaid_orders>
251+
<cancel_unpaid_orders_min translate="label comment">
252+
<label>Time to Cancel Unpaid Orders</label>
253+
<frontend_type>text</frontend_type>
254+
<sort_order>200</sort_order>
255+
<comment><![CDATA[Minutes to cancel order]]></comment>
256+
<show_in_default>1</show_in_default>
257+
<show_in_website>1</show_in_website>
258+
<show_in_store>1</show_in_store>
259+
<depends><cancel_unpaid_orders>1</cancel_unpaid_orders></depends>
260+
</cancel_unpaid_orders_min>
241261
</fields>
242262
</redsys>
243263
</groups>

0 commit comments

Comments
 (0)