spree_delhivery 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +175 -0
  3. data/Rakefile +21 -0
  4. data/app/assets/config/spree_delhivery_manifest.js +4 -0
  5. data/app/assets/images/integration_icons/delhivery.png +0 -0
  6. data/app/assets/images/payment_icons/delhivery.svg +12 -0
  7. data/app/assets/images/payment_icons/delhivery_cod.svg +12 -0
  8. data/app/controllers/spree/admin/delhivery_controller.rb +190 -0
  9. data/app/controllers/spree/admin/delhivery_returns_controller.rb +82 -0
  10. data/app/controllers/spree/admin/fulfillments_controller.rb +117 -0
  11. data/app/controllers/spree/admin/shipments_controller_decorator.rb +198 -0
  12. data/app/controllers/spree/admin/stock_locations_controller_decorator.rb +38 -0
  13. data/app/controllers/spree/api/v3/store/delhivery_controller.rb +126 -0
  14. data/app/jobs/spree_delhivery/base_job.rb +5 -0
  15. data/app/models/spree/calculator/shipping/delhivery.rb +97 -0
  16. data/app/models/spree/integrations/delhivery.rb +48 -0
  17. data/app/models/spree/order_decorator.rb +63 -0
  18. data/app/models/spree/page_blocks/products/delhivery_edd.rb +42 -0
  19. data/app/models/spree/page_sections/product_details_decorator.rb +26 -0
  20. data/app/models/spree/payment_method/delhivery_cod.rb +57 -0
  21. data/app/services/spree_delhivery/client.rb +281 -0
  22. data/app/services/spree_delhivery/pickup_service.rb +49 -0
  23. data/app/services/spree_delhivery/shipment_canceler.rb +59 -0
  24. data/app/services/spree_delhivery/shipment_sender.rb +210 -0
  25. data/app/services/spree_delhivery/shipment_tracker.rb +50 -0
  26. data/app/views/spree/admin/fulfillments/new.html.erb +118 -0
  27. data/app/views/spree/admin/integrations/forms/_delhivery.html.erb +51 -0
  28. data/app/views/spree/admin/orders/_shipment.html.erb +180 -0
  29. data/app/views/spree/admin/orders/return_authorizations/_return_authorization.html.erb +157 -0
  30. data/app/views/spree/admin/page_blocks/forms/_delhivery_edd.html.erb +157 -0
  31. data/app/views/spree/admin/payment_methods/configuration_guides/_delhivery_cod.html.erb +71 -0
  32. data/app/views/spree/admin/payment_methods/descriptions/_delhivery_cod.html.erb +7 -0
  33. data/app/views/spree/admin/return_authorizations/index.html.erb +143 -0
  34. data/app/views/spree/admin/shipments/edit.html.erb +40 -0
  35. data/app/views/spree/admin/stock_locations/_delhivery_fields.html.erb +19 -0
  36. data/app/views/spree/admin/stock_locations/_form.html.erb +184 -0
  37. data/app/views/spree/checkout/payment/_delhivery_cod.html.erb +9 -0
  38. data/app/views/spree/page_blocks/products/delhivery_edd/_delhivery_edd.html.erb +239 -0
  39. data/app/views/spree_delhivery/_head.html.erb +0 -0
  40. data/config/importmap.rb +6 -0
  41. data/config/initializers/spree.rb +15 -0
  42. data/config/initializers/spree_permitted_attributes.rb +4 -0
  43. data/config/locales/en.yml +36 -0
  44. data/config/routes.rb +42 -0
  45. data/db/migrate/20250101000001_add_delhivery_fields_to_shipments.rb +10 -0
  46. data/db/migrate/20250101000002_add_tracking_status_to_shipments.rb +13 -0
  47. data/db/migrate/20251227110851_add_delhivery_fields_to_spree_stock_locations.rb +5 -0
  48. data/db/migrate/20251227112401_add_geolocation_to_stock_locations.rb +9 -0
  49. data/db/migrate/20251227123158_add_missing_coordinates_to_stock_locations.rb +18 -0
  50. data/db/migrate/20251228081459_add_delhivery_to_return_authorizations.rb +8 -0
  51. data/lib/generators/spree_delhivery/install/install_generator.rb +139 -0
  52. data/lib/spree_delhivery/configuration.rb +13 -0
  53. data/lib/spree_delhivery/engine.rb +39 -0
  54. data/lib/spree_delhivery/factories.rb +6 -0
  55. data/lib/spree_delhivery/version.rb +7 -0
  56. data/lib/spree_delhivery.rb +13 -0
  57. data/lib/tasks/delhivery.rake +60 -0
  58. metadata +151 -0
@@ -0,0 +1,60 @@
1
+ namespace :delhivery do
2
+ desc "Fetch available Warehouses from Delhivery"
3
+ task fetch_warehouses: :environment do
4
+ require 'faraday'
5
+ require 'json'
6
+
7
+ # Load Integration
8
+ integration = Spree::Integrations::Delhivery.active.first
9
+ unless integration
10
+ puts "Error: Delhivery Integration is not active or configured."
11
+ exit
12
+ end
13
+
14
+ puts "Attempting to Register Warehouse for Token: #{integration.preferred_api_token[0..5]}..."
15
+
16
+ url = "#{integration.api_url}/api/backend/clientwarehouse/create/"
17
+
18
+ conn = Faraday.new(url: url) do |c|
19
+ c.headers['Authorization'] = "Token #{integration.preferred_api_token}"
20
+ c.headers['Content-Type'] = 'application/json'
21
+ c.headers['Accept'] = 'application/json'
22
+ c.adapter Faraday.default_adapter
23
+ end
24
+
25
+ # --- MANDATORY FIELDS ADDED ---
26
+ payload = {
27
+ name: integration.preferred_pickup_location_name,
28
+ address: "2-232/2/A Navrang Tile Studio, Rekurthy", # Using the address from your logs
29
+ pin: "505001",
30
+ phone: "9989147064",
31
+ city: "Karimnagar",
32
+ state: "Telangana",
33
+ country: "India",
34
+ email: "test@example.com", # Optional but good to have
35
+ # Return Address (Mandatory) - Can be same as pickup
36
+ return_address: "2-232/2/A Navrang Tile Studio, Rekurthy",
37
+ return_pin: "505001",
38
+ return_city: "Karimnagar",
39
+ return_state: "Telangana",
40
+ return_country: "India"
41
+ }
42
+
43
+ puts "Sending Payload: #{payload.to_json}"
44
+
45
+ response = conn.post('', payload.to_json)
46
+
47
+ puts "--------------------------------"
48
+ puts "Response Status: #{response.status}"
49
+ puts "Response Body: #{response.body}"
50
+ puts "--------------------------------"
51
+
52
+ json = JSON.parse(response.body)
53
+ if json['success'] || json['data']&.key?('name')
54
+ puts "✅ Warehouse '#{payload[:name]}' Registered Successfully!"
55
+ puts "👉 You can now go to Admin Panel and click 'Ship with Delhivery'"
56
+ else
57
+ puts "❌ Failed to register warehouse."
58
+ end
59
+ end
60
+ end
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_delhivery
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Your Name
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: spree_core
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 5.2.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 5.2.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: spree_extension
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: faraday
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: faraday_middleware
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ email:
69
+ - umeshravani98@gmail.com
70
+ executables: []
71
+ extensions: []
72
+ extra_rdoc_files: []
73
+ files:
74
+ - README.md
75
+ - Rakefile
76
+ - app/assets/config/spree_delhivery_manifest.js
77
+ - app/assets/images/integration_icons/delhivery.png
78
+ - app/assets/images/payment_icons/delhivery.svg
79
+ - app/assets/images/payment_icons/delhivery_cod.svg
80
+ - app/controllers/spree/admin/delhivery_controller.rb
81
+ - app/controllers/spree/admin/delhivery_returns_controller.rb
82
+ - app/controllers/spree/admin/fulfillments_controller.rb
83
+ - app/controllers/spree/admin/shipments_controller_decorator.rb
84
+ - app/controllers/spree/admin/stock_locations_controller_decorator.rb
85
+ - app/controllers/spree/api/v3/store/delhivery_controller.rb
86
+ - app/jobs/spree_delhivery/base_job.rb
87
+ - app/models/spree/calculator/shipping/delhivery.rb
88
+ - app/models/spree/integrations/delhivery.rb
89
+ - app/models/spree/order_decorator.rb
90
+ - app/models/spree/page_blocks/products/delhivery_edd.rb
91
+ - app/models/spree/page_sections/product_details_decorator.rb
92
+ - app/models/spree/payment_method/delhivery_cod.rb
93
+ - app/services/spree_delhivery/client.rb
94
+ - app/services/spree_delhivery/pickup_service.rb
95
+ - app/services/spree_delhivery/shipment_canceler.rb
96
+ - app/services/spree_delhivery/shipment_sender.rb
97
+ - app/services/spree_delhivery/shipment_tracker.rb
98
+ - app/views/spree/admin/fulfillments/new.html.erb
99
+ - app/views/spree/admin/integrations/forms/_delhivery.html.erb
100
+ - app/views/spree/admin/orders/_shipment.html.erb
101
+ - app/views/spree/admin/orders/return_authorizations/_return_authorization.html.erb
102
+ - app/views/spree/admin/page_blocks/forms/_delhivery_edd.html.erb
103
+ - app/views/spree/admin/payment_methods/configuration_guides/_delhivery_cod.html.erb
104
+ - app/views/spree/admin/payment_methods/descriptions/_delhivery_cod.html.erb
105
+ - app/views/spree/admin/return_authorizations/index.html.erb
106
+ - app/views/spree/admin/shipments/edit.html.erb
107
+ - app/views/spree/admin/stock_locations/_delhivery_fields.html.erb
108
+ - app/views/spree/admin/stock_locations/_form.html.erb
109
+ - app/views/spree/checkout/payment/_delhivery_cod.html.erb
110
+ - app/views/spree/page_blocks/products/delhivery_edd/_delhivery_edd.html.erb
111
+ - app/views/spree_delhivery/_head.html.erb
112
+ - config/importmap.rb
113
+ - config/initializers/spree.rb
114
+ - config/initializers/spree_permitted_attributes.rb
115
+ - config/locales/en.yml
116
+ - config/routes.rb
117
+ - db/migrate/20250101000001_add_delhivery_fields_to_shipments.rb
118
+ - db/migrate/20250101000002_add_tracking_status_to_shipments.rb
119
+ - db/migrate/20251227110851_add_delhivery_fields_to_spree_stock_locations.rb
120
+ - db/migrate/20251227112401_add_geolocation_to_stock_locations.rb
121
+ - db/migrate/20251227123158_add_missing_coordinates_to_stock_locations.rb
122
+ - db/migrate/20251228081459_add_delhivery_to_return_authorizations.rb
123
+ - lib/generators/spree_delhivery/install/install_generator.rb
124
+ - lib/spree_delhivery.rb
125
+ - lib/spree_delhivery/configuration.rb
126
+ - lib/spree_delhivery/engine.rb
127
+ - lib/spree_delhivery/factories.rb
128
+ - lib/spree_delhivery/version.rb
129
+ - lib/tasks/delhivery.rake
130
+ homepage: https://github.com/yourusername/spree_delhivery
131
+ licenses:
132
+ - BSD-3-Clause
133
+ metadata: {}
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ requirements: []
148
+ rubygems_version: 3.6.9
149
+ specification_version: 4
150
+ summary: Official Delhivery Integration for Spree 5.2+
151
+ test_files: []