Indianic_Couponimpexport - Version 1.0.0.1

Version Notes

Coupon Import-Export Extension

Download this release

Release Info

Developer Sanjay
Extension Indianic_Couponimpexport
Version 1.0.0.1
Comparing to
See all releases


Version 1.0.0.1

app/code/local/Indianic/Couponimpexport/Model/Convert/Adapter/Couponimpexport.php ADDED
@@ -0,0 +1,181 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Indianic_Couponimpexport_Model_Convert_Adapter_Couponimpexport extends Mage_Catalog_Model_Convert_Adapter_Product
3
+
4
+ {
5
+ public function saveRow( array $data )
6
+ {
7
+ $code = $data['coupon'];
8
+ $customer= $data['customer'];
9
+ $amt = $data['amount'];
10
+
11
+ if($data['fromdate']){
12
+ $fromDate = strtotime($data['fromdate']);
13
+ } else {
14
+ $fromdate = date('d-m-Y');
15
+ }
16
+
17
+ $toDate = strtotime($data['todate']);
18
+ $description = $data['description'];
19
+ $skuStr = $data['sku'];
20
+
21
+ $deleteId = $this->isExistcode($code);
22
+
23
+ if($code != '' && $amt != ''){
24
+ if($deleteId) {
25
+ $this->deleteRule($deleteId); //delete existing coupon code
26
+ $this->generateRule($code,$customer,$amt,$fromDate,$toDate,$description,$sortOrder,$skuStr);
27
+ } else {
28
+ $this->generateRule($code,$customer,$amt,$fromDate,$toDate,$description,$sortOrder,$skuStr);
29
+ }
30
+
31
+ }
32
+
33
+
34
+ }
35
+
36
+ public function isExistcode($singlecode)
37
+ {
38
+ $allCode = $rule = Mage::getModel('salesrule/rule')->getCollection();
39
+ $codes = array();
40
+ foreach ($allCode as $row) {
41
+ $codes[$row->rule_id] = $row->code;
42
+ }
43
+ return array_search($singlecode, $codes);
44
+ }
45
+
46
+ public function deleteRule($id) {
47
+ $rule = Mage::getModel('salesrule/rule');
48
+ $rule->load($id);
49
+ $rule->delete();
50
+ }
51
+
52
+ public function generateRule($code,$customer_name,$disAmt,$fromDate,$toDate,$description,$sortOrder,$skuStr){
53
+
54
+ $rule = Mage::getModel('salesrule/rule');
55
+ $rule->setName($customer_name);
56
+ $rule->setDescription($description);
57
+ if($fromDate) {
58
+ $rule->setFromDate($fromDate);//starting today
59
+ } else {
60
+ $rule->setFromDate(date('d-m-Y'));//starting today
61
+ }
62
+
63
+ if($toDate != '') {
64
+ $rule->setToDate($toDate);//if you need an expiration date
65
+ }
66
+ $rule->setCouponType(2); //specific counpon
67
+ $rule->setCouponCode($code);
68
+ $rule->setUsesPerCoupon(1);//number of allowed uses for this coupon
69
+ $rule->setUsesPerCustomer(1);//number of allowed uses for this coupon for each customer
70
+ $rule->setCustomerGroupIds($this->getAllCustomerGroups());//if you want only certain groups replace getAllCustomerGroups() with an array of desired ids
71
+ $rule->setIsActive(1);
72
+ $rule->setStopRulesProcessing(0);//set to 1 if you want all other rules after this to not be processed
73
+ $rule->setIsRss(1);//set to 1 if you want this rule to be public in rss
74
+ $rule->setIsAdvanced(1);
75
+
76
+ $rule->setProductIds('');
77
+
78
+ if($sortOrder) {
79
+ $rule->setSortOrder($sortOrder);// order in which the rules will be applied
80
+ } else {
81
+ $rule->setSortOrder(0);// order in which the rules will be applied
82
+ }
83
+
84
+
85
+ $rule->setSimpleAction('by_percent');
86
+ //all available discount types
87
+ //by_percent - Percent of product price discount
88
+ //by_fixed - Fixed amount discount
89
+ //cart_fixed - Fixed amount discount for whole cart
90
+ //buy_x_get_y - Buy X get Y free (discount amount is Y)
91
+
92
+ $rule->setDiscountAmount($disAmt);//the discount amount/percent. if SimpleAction is by_percent this value must be <= 100
93
+ $rule->setDiscountQty(0);//Maximum Qty Discount is Applied to
94
+ $rule->setDiscountStep(0);//used for buy_x_get_y; This is X
95
+ $rule->setSimpleFreeShipping(0);//set to 1 for Free shipping
96
+ $rule->setApplyToShipping(1);//set to 0 if you don't want the rule to be applied to shipping
97
+ $rule->setWebsiteIds($this->getAllWbsites());//if you want only certain websites replace getAllWbsites() with an array of desired ids
98
+
99
+ $conditions = array();
100
+ $conditions[1] = array(
101
+ 'type' => 'salesrule/rule_condition_combine',
102
+ 'aggregator' => 'all',
103
+ 'value' => "1", //[UPDATE] added quotes on the value(If ALL of these conditions are TRUE) set 0 for FALSE.
104
+ 'new_child' => ''
105
+ );
106
+ //the conditions above are for 'if all of these conditions are true'
107
+ //for if any one of the conditions is true set 'aggregator' to 'any'
108
+ //for if all of the conditions are false set 'value' to 0.
109
+ //for if any one of the conditions is false set 'aggregator' to 'any' and 'value' to 0
110
+ /*$conditions['1--1'] = Array
111
+ (
112
+ 'type' => 'salesrule/rule_condition_address',
113
+ 'attribute' => 'base_subtotal',
114
+ 'operator' => '>=',
115
+ 'value' => 200
116
+ ); */
117
+
118
+ //the constraints above are for 'Subtotal is equal or grater than 200'
119
+ //for 'equal or less than' set 'operator' to '<='... You get the idea other operators for numbers: '==', '!=', '>', '<'
120
+ //for 'is one of' set operator to '()';
121
+ //for 'is not one of' set operator to '!()';
122
+ //in this example the constraint is on the subtotal
123
+ //for other attributes you can change the value for 'attribute' to: 'total_qty', 'weight', 'payment_method', 'shipping_method', 'postcode', 'region', 'region_id', 'country_id'
124
+
125
+ //to add an other constraint on product attributes (not cart attributes like above) uncomment and change the following:
126
+ if($skuStr){
127
+
128
+ $conditions['1--2'] = array
129
+ (
130
+ 'type' => 'salesrule/rule_condition_product_found',//-> means 'if all of the following are true' - same rules as above for 'aggregator' and 'value'
131
+ //other values for type: 'salesrule/rule_condition_product_subselect' 'salesrule/rule_condition_combine'
132
+ 'value' => 1, //set 0 for not Found,1 is for Found
133
+ 'aggregator' => 'all',
134
+ 'new_child' => '',
135
+ );
136
+
137
+
138
+ $conditions['1--2--1'] = array
139
+ (
140
+ 'type' => 'salesrule/rule_condition_product',
141
+ 'attribute' => 'sku',
142
+ 'operator' => '()',
143
+ 'value' => $skuStr,
144
+ );
145
+
146
+ }
147
+
148
+ //$conditions['1--2--1'] means sku equals 12. For other constraints change 'attribute', 'operator'(see list above), 'value'
149
+
150
+ $rule->setData('conditions',$conditions);
151
+ $rule->loadPost($rule->getData());
152
+ $rule->save();
153
+
154
+ //[UPDATE]if you work with Mangento EE and you want to link banners to your rule uncomment the line of code below
155
+ //Mage::getResourceModel('enterprise_banner/banner')->bindBannersToSalesRule($rule->getId(), array(1,2));//the array(1,2, ...) is the array with all the banners you want to link to the rule.
156
+ //[/UPDATE]
157
+ }
158
+
159
+ public function getAllCustomerGroups(){
160
+ //get all customer groups
161
+ $customerGroups = Mage::getModel('customer/group')->getCollection();
162
+ $groups = array();
163
+ foreach ($customerGroups as $group){
164
+ $groups[] = $group->getId();
165
+ }
166
+ return $groups;
167
+ }
168
+
169
+
170
+ public function getAllWbsites(){
171
+ //get all wabsites
172
+ $websites = Mage::getModel('core/website')->getCollection();
173
+ $websiteIds = array();
174
+ foreach ($websites as $website){
175
+ $websiteIds[] = $website->getId();
176
+ }
177
+ return $websiteIds;
178
+ }
179
+
180
+ }
181
+
app/code/local/Indianic/Couponimpexport/Model/Convert/Parser/Couponimpexport.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Indianic_Couponimpexport_Model_Convert_Parser_Couponimpexport extends Mage_Eav_Model_Convert_Parser_Abstract
4
+ {
5
+ const MULTI_DELIMITER = ' , ';
6
+
7
+ public function unparse()
8
+ {
9
+ $salesRules = Mage::getModel('salesrule/rule')->getCollection();
10
+ $csv_fields = array();
11
+
12
+ $i = 1;
13
+
14
+ if($salesRules) {
15
+ foreach ($salesRules as $rules) {
16
+ $rule = Mage::getModel('salesrule/rule')->load($rules->getRuleId());
17
+ if($rules->getCode() != ''){
18
+ $conditionsCol = unserialize($rules->getConditionsSerialized());
19
+ $conditions = $conditionsCol['conditions'];
20
+ for ($i=0; $i< count($conditions); $i++){
21
+ if(isset($conditions[$i]['conditions'])){
22
+ $getProductsku = $conditions[$i]['conditions'];
23
+ for ($j=0;$j<count($getProductsku);$j++){
24
+ if($getProductsku[$j]['attribute'] == 'sku'){
25
+ $productSku = $getProductsku[$j]['value'];
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ $csv_fields['Code'] = $rule->getCouponCode();
32
+ $csv_fields['Customer'] = $rule->getName();
33
+ $csv_fields['Amount'] = $rule->getDiscountAmount();
34
+ $csv_fields['Fromdate'] = $rule->getFromDate();
35
+ $csv_fields['Todate'] = $rule->getToDate();
36
+ $csv_fields['Description'] = $rule->getDescription();
37
+ $csv_fields['Sku'] = $productSku;
38
+
39
+ $batchExport = $this->getBatchExportModel()
40
+ ->setId(null)
41
+ ->setBatchId($this->getBatchModel()->getId())
42
+ ->setBatchData($csv_fields)
43
+ ->setStatus(1)
44
+ ->save();
45
+
46
+ }
47
+ }
48
+
49
+ return $this;
50
+ }
51
+ public function parse()
52
+ {
53
+
54
+ }
55
+ }
app/code/local/Indianic/Couponimpexport/Model/Couponimpexport.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Indianic_Couponimpexport_Model_Review extends Mage_Core_Model_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('couponimpexport/couponimpexport');
9
+ }
10
+ }
app/code/local/Indianic/Couponimpexport/etc/config.xml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category Indianic
5
+ * @package Indianic_Review
6
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
7
+ */
8
+ -->
9
+ <config>
10
+ <modules>
11
+ <Indianic_Couponimpexport>
12
+ <version>0.1.0</version>
13
+ </Indianic_Couponimpexport>
14
+ </modules>
15
+
16
+
17
+ <global>
18
+ <models>
19
+ <Couponimpexport>
20
+ <class>Indianic_Couponimpexport_Model</class>
21
+ <resourceModel>couponimpexport_mysql4</resourceModel>
22
+ </Couponimpexport>
23
+
24
+ </models>
25
+ </global>
26
+ </config>
app/etc/modules/Indianic_Couponimpexport.xml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category Indianic
5
+ * @package Indianic_Review
6
+ * @author ModuleCreator
7
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
8
+ */
9
+ -->
10
+ <config>
11
+ <modules>
12
+ <Indianic_Couponimpexport>
13
+ <active>true</active>
14
+ <codePool>local</codePool>
15
+ </Indianic_Couponimpexport>
16
+ </modules>
17
+ </config>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Indianic_Couponimpexport</name>
4
+ <version>1.0.0.1</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://www.opensource.org/licenses/osl-3.0.php">v3.0</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>This module allows you to import and export your Shopping Cart Price Rules data such as code, customer name,from date, todate...etc..</summary>
10
+ <description>This module allows you to import and export your Shopping Cart Price Rules data such as code, customer name,from date, todate...etc..</description>
11
+ <notes>Coupon Import-Export Extension</notes>
12
+ <authors><author><name>Sanjay</name><user>sanju_patolia</user><email>sanjay.patolia@indianic.com</email></author></authors>
13
+ <date>2013-04-19</date>
14
+ <time>12:13:36</time>
15
+ <contents><target name="magelocal"><dir name="Indianic"><dir name="Couponimpexport"><dir name="Model"><dir name="Convert"><dir name="Adapter"><file name="Couponimpexport.php" hash="06c0247ec5de16aed0005e08cc39795a"/></dir><dir name="Parser"><file name="Couponimpexport.php" hash="869cc74fbb6829e2de2ad7a683365556"/></dir></dir><file name="Couponimpexport.php" hash="d4785c0014b45b0462cc713aa23c9bab"/></dir><dir name="etc"><file name="config.xml" hash="7a15664f09e938375423915bcbaf0235"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Indianic_Couponimpexport.xml" hash="b17ea9b4d7d04c65728a3678899c1348"/></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>