vyapari 0.1.5dev10 → 0.1.5

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 (181) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/vyapari/admin/base_controller.rb +0 -9
  3. data/app/controllers/vyapari/admin/countries_controller.rb +2 -2
  4. data/app/controllers/vyapari/admin/dashboard_controller.rb +1 -3
  5. data/app/controllers/vyapari/admin/exchange_rates_controller.rb +2 -2
  6. data/app/controllers/vyapari/admin/regions_controller.rb +1 -1
  7. data/app/controllers/vyapari/admin/resource_controller.rb +0 -1
  8. data/app/controllers/vyapari/admin/users_controller.rb +130 -0
  9. data/app/controllers/vyapari/application_controller.rb +0 -11
  10. data/app/models/brand.rb +19 -67
  11. data/app/models/category.rb +19 -63
  12. data/app/models/country.rb +7 -31
  13. data/app/models/exchange_rate.rb +7 -32
  14. data/app/models/product.rb +20 -75
  15. data/app/models/region.rb +20 -37
  16. data/app/models/vyapari/application_record.rb +0 -3
  17. data/app/views/layouts/kuppayam/_footer.html.erb +1 -1
  18. data/app/views/layouts/kuppayam/_sidebar.html.erb +44 -45
  19. data/app/views/vyapari/admin/countries/_index.html.erb +1 -1
  20. data/app/views/vyapari/admin/countries/index.html.erb +3 -19
  21. data/app/views/vyapari/admin/exchange_rates/_form.html.erb +4 -3
  22. data/app/views/vyapari/admin/exchange_rates/_index.html.erb +7 -7
  23. data/app/views/vyapari/admin/exchange_rates/_row.html.erb +3 -3
  24. data/app/views/vyapari/admin/exchange_rates/_show.html.erb +0 -1
  25. data/app/views/vyapari/admin/exchange_rates/index.html.erb +3 -19
  26. data/app/views/vyapari/admin/regions/_index.html.erb +1 -1
  27. data/app/views/vyapari/admin/regions/index.html.erb +3 -19
  28. data/app/views/vyapari/admin/users/_form.html.erb +39 -0
  29. data/app/views/vyapari/admin/users/_index.html.erb +101 -0
  30. data/app/views/vyapari/admin/users/_row.html.erb +72 -0
  31. data/app/views/vyapari/admin/users/_show.html.erb +199 -0
  32. data/app/views/vyapari/admin/{categories → users}/index.html.erb +24 -8
  33. data/config/routes.rb +5 -66
  34. data/db/migrate/20170000000200_create_exchange_rates.rb +2 -3
  35. data/lib/tasks/vyapari_tasks.rake +4 -0
  36. data/lib/vyapari/version.rb +1 -1
  37. metadata +15 -167
  38. data/app/assets/images/vyapari/sample_stock_bundle.csv +0 -1
  39. data/app/controllers/vyapari/admin/brands_controller.rb +0 -99
  40. data/app/controllers/vyapari/admin/categories_controller.rb +0 -115
  41. data/app/controllers/vyapari/admin/products_controller.rb +0 -79
  42. data/app/controllers/vyapari/admin/stores_controller.rb +0 -67
  43. data/app/controllers/vyapari/admin/suppliers_controller.rb +0 -67
  44. data/app/controllers/vyapari/admin/terminals_controller.rb +0 -150
  45. data/app/controllers/vyapari/store_manager/base_controller.rb +0 -33
  46. data/app/controllers/vyapari/store_manager/dashboard_controller.rb +0 -31
  47. data/app/controllers/vyapari/store_manager/reports/invoices_controller.rb +0 -249
  48. data/app/controllers/vyapari/store_manager/reports/sales_controller.rb +0 -299
  49. data/app/controllers/vyapari/store_manager/reports/stock_controller.rb +0 -132
  50. data/app/controllers/vyapari/store_manager/resource_controller.rb +0 -17
  51. data/app/controllers/vyapari/store_manager/stock_bundles_controller.rb +0 -206
  52. data/app/controllers/vyapari/store_manager/stock_entries_controller.rb +0 -161
  53. data/app/controllers/vyapari/terminal_staff/base_controller.rb +0 -38
  54. data/app/controllers/vyapari/terminal_staff/dashboard_controller.rb +0 -35
  55. data/app/controllers/vyapari/terminal_staff/invoices_controller.rb +0 -147
  56. data/app/controllers/vyapari/terminal_staff/line_items_controller.rb +0 -139
  57. data/app/controllers/vyapari/terminal_staff/resource_controller.rb +0 -17
  58. data/app/controllers/vyapari/user_dashboard_controller.rb +0 -31
  59. data/app/models/bank_account.rb +0 -44
  60. data/app/models/contact.rb +0 -72
  61. data/app/models/image/brand_image.rb +0 -3
  62. data/app/models/image/category_image.rb +0 -3
  63. data/app/models/image/product_image.rb +0 -3
  64. data/app/models/invoice.rb +0 -256
  65. data/app/models/line_item.rb +0 -207
  66. data/app/models/stock_bundle.rb +0 -249
  67. data/app/models/stock_entry.rb +0 -275
  68. data/app/models/store.rb +0 -302
  69. data/app/models/supplier.rb +0 -79
  70. data/app/models/terminal.rb +0 -158
  71. data/app/uploaders/brand_image_uploader.rb +0 -14
  72. data/app/uploaders/category_image_uploader.rb +0 -14
  73. data/app/uploaders/product_image_uploader.rb +0 -14
  74. data/app/uploaders/stock_bundle_uploader.rb +0 -10
  75. data/app/views/layouts/vyapari/_store_manager_menu.html.erb +0 -126
  76. data/app/views/layouts/vyapari/_terminal_staff_menu.html.erb +0 -106
  77. data/app/views/layouts/vyapari/store_manager.html.erb +0 -112
  78. data/app/views/layouts/vyapari/terminal_staff.html.erb +0 -116
  79. data/app/views/vyapari/admin/brands/_form.html.erb +0 -23
  80. data/app/views/vyapari/admin/brands/_index.html.erb +0 -89
  81. data/app/views/vyapari/admin/brands/_row.html.erb +0 -63
  82. data/app/views/vyapari/admin/brands/_show.html.erb +0 -104
  83. data/app/views/vyapari/admin/brands/index.html.erb +0 -48
  84. data/app/views/vyapari/admin/categories/_form.html.erb +0 -28
  85. data/app/views/vyapari/admin/categories/_index.html.erb +0 -101
  86. data/app/views/vyapari/admin/categories/_row.html.erb +0 -69
  87. data/app/views/vyapari/admin/categories/_show.html.erb +0 -115
  88. data/app/views/vyapari/admin/products/_form.html.erb +0 -32
  89. data/app/views/vyapari/admin/products/_index.html.erb +0 -58
  90. data/app/views/vyapari/admin/products/_row.html.erb +0 -30
  91. data/app/views/vyapari/admin/products/_show.html.erb +0 -81
  92. data/app/views/vyapari/admin/products/index.html.erb +0 -48
  93. data/app/views/vyapari/admin/stores/_form.html.erb +0 -37
  94. data/app/views/vyapari/admin/stores/_index.html.erb +0 -84
  95. data/app/views/vyapari/admin/stores/_row.html.erb +0 -55
  96. data/app/views/vyapari/admin/stores/_show.html.erb +0 -110
  97. data/app/views/vyapari/admin/stores/index.html.erb +0 -48
  98. data/app/views/vyapari/admin/suppliers/_form.html.erb +0 -32
  99. data/app/views/vyapari/admin/suppliers/_index.html.erb +0 -58
  100. data/app/views/vyapari/admin/suppliers/_row.html.erb +0 -30
  101. data/app/views/vyapari/admin/suppliers/_show.html.erb +0 -81
  102. data/app/views/vyapari/admin/suppliers/index.html.erb +0 -48
  103. data/app/views/vyapari/admin/terminals/_form.html.erb +0 -24
  104. data/app/views/vyapari/admin/terminals/_index.html.erb +0 -75
  105. data/app/views/vyapari/admin/terminals/_row.html.erb +0 -49
  106. data/app/views/vyapari/admin/terminals/_show.html.erb +0 -74
  107. data/app/views/vyapari/store_manager/dashboard/_sales_counts.html.erb +0 -90
  108. data/app/views/vyapari/store_manager/dashboard/_stock_counts.html.erb +0 -63
  109. data/app/views/vyapari/store_manager/dashboard/_terminals.html.erb +0 -23
  110. data/app/views/vyapari/store_manager/dashboard/index.html.erb +0 -64
  111. data/app/views/vyapari/store_manager/reports/invoices/_index.html.erb +0 -65
  112. data/app/views/vyapari/store_manager/reports/invoices/index.html.erb +0 -105
  113. data/app/views/vyapari/store_manager/reports/sales/_index.html.erb +0 -64
  114. data/app/views/vyapari/store_manager/reports/sales/index.html.erb +0 -105
  115. data/app/views/vyapari/store_manager/reports/stock/_index.html.erb +0 -72
  116. data/app/views/vyapari/store_manager/reports/stock/index.html.erb +0 -32
  117. data/app/views/vyapari/store_manager/stock_bundles/_form.html.erb +0 -99
  118. data/app/views/vyapari/store_manager/stock_bundles/_index.html.erb +0 -74
  119. data/app/views/vyapari/store_manager/stock_bundles/_row.html.erb +0 -44
  120. data/app/views/vyapari/store_manager/stock_bundles/_show.html.erb +0 -110
  121. data/app/views/vyapari/store_manager/stock_bundles/create.html.erb +0 -57
  122. data/app/views/vyapari/store_manager/stock_bundles/index.html.erb +0 -36
  123. data/app/views/vyapari/store_manager/stock_bundles/update.html.erb +0 -57
  124. data/app/views/vyapari/store_manager/stock_entries/_form.html.erb +0 -50
  125. data/app/views/vyapari/store_manager/stock_entries/_index.html.erb +0 -80
  126. data/app/views/vyapari/store_manager/stock_entries/_row.html.erb +0 -33
  127. data/app/views/vyapari/store_manager/stock_entries/_show.html.erb +0 -110
  128. data/app/views/vyapari/store_manager/stock_entries/_stock_bundle.html.erb +0 -61
  129. data/app/views/vyapari/store_manager/stock_entries/index.html.erb +0 -45
  130. data/app/views/vyapari/terminal_staff/dashboard/_counts.html.erb +0 -131
  131. data/app/views/vyapari/terminal_staff/dashboard/_invoices.html.erb +0 -44
  132. data/app/views/vyapari/terminal_staff/dashboard/_search_form.html.erb +0 -6
  133. data/app/views/vyapari/terminal_staff/dashboard/_search_results.html.erb +0 -24
  134. data/app/views/vyapari/terminal_staff/dashboard/index.html.erb +0 -56
  135. data/app/views/vyapari/terminal_staff/dashboard/search.js.erb +0 -12
  136. data/app/views/vyapari/terminal_staff/invoices/_draft.html.erb +0 -62
  137. data/app/views/vyapari/terminal_staff/invoices/_form.html.erb +0 -134
  138. data/app/views/vyapari/terminal_staff/invoices/_index.html.erb +0 -70
  139. data/app/views/vyapari/terminal_staff/invoices/_row.html.erb +0 -33
  140. data/app/views/vyapari/terminal_staff/invoices/_show.html.erb +0 -204
  141. data/app/views/vyapari/terminal_staff/invoices/index.html.erb +0 -35
  142. data/app/views/vyapari/terminal_staff/invoices/new.js.erb +0 -18
  143. data/app/views/vyapari/terminal_staff/invoices/show.html.erb +0 -1
  144. data/app/views/vyapari/terminal_staff/invoices/show.js.erb +0 -13
  145. data/app/views/vyapari/terminal_staff/line_items/_form.html.erb +0 -40
  146. data/app/views/vyapari/terminal_staff/line_items/_index.html.erb +0 -96
  147. data/app/views/vyapari/terminal_staff/line_items/create.js.erb +0 -34
  148. data/app/views/vyapari/terminal_staff/line_items/destroy.js.erb +0 -25
  149. data/app/views/vyapari/user_dashboard/index.html.erb +0 -51
  150. data/db/import_data/brands.csv +0 -7
  151. data/db/import_data/categories.csv +0 -12
  152. data/db/import_data/countries.csv +0 -1
  153. data/db/import_data/dummy/brands.csv +0 -7
  154. data/db/import_data/dummy/categories.csv +0 -12
  155. data/db/import_data/dummy/countries.csv +0 -1
  156. data/db/import_data/dummy/exchange_rates.csv +0 -5
  157. data/db/import_data/dummy/products-copy.csv +0 -1
  158. data/db/import_data/dummy/products.csv +0 -1
  159. data/db/import_data/dummy/products.xlsx +0 -0
  160. data/db/import_data/dummy/regions.csv +0 -13
  161. data/db/import_data/dummy/stores.csv +0 -10
  162. data/db/import_data/dummy/suppliers.csv +0 -14
  163. data/db/import_data/dummy/terminals.csv +0 -11
  164. data/db/import_data/exchange_rates.csv +0 -5
  165. data/db/import_data/regions.csv +0 -13
  166. data/db/import_data/stores.csv +0 -3
  167. data/db/import_data/suppliers.csv +0 -14
  168. data/db/import_data/terminals.csv +0 -3
  169. data/db/migrate/20170000000203_create_contacts.rb +0 -22
  170. data/db/migrate/20170000000204_create_bank_accounts.rb +0 -21
  171. data/db/migrate/20170000000205_create_suppliers.rb +0 -18
  172. data/db/migrate/20170000000206_create_stores.rb +0 -21
  173. data/db/migrate/20170000000207_create_terminals.rb +0 -18
  174. data/db/migrate/20170000000210_create_brands.rb +0 -14
  175. data/db/migrate/20170000000211_create_categories.rb +0 -22
  176. data/db/migrate/20170000000212_create_products.rb +0 -29
  177. data/db/migrate/20170000000213_create_invoices.rb +0 -61
  178. data/db/migrate/20170000000215_create_stock_bundles.rb +0 -17
  179. data/db/migrate/20170000000216_create_stock_entries.rb +0 -20
  180. data/db/sample_reports/products.xlsx +0 -0
  181. data/lib/tasks/vyapari/all.rake +0 -73
data/app/models/store.rb DELETED
@@ -1,302 +0,0 @@
1
- class Store < Vyapari::ApplicationRecord
2
-
3
- # Constants
4
- ACTIVE = "active"
5
- INACTIVE = "inactive"
6
- CLOSED = "closed"
7
-
8
- STATUS = {"Active" => ACTIVE, "Inactive" => INACTIVE, "Closed" => CLOSED}
9
- STATUS_REVERSE = {ACTIVE => "Active", INACTIVE => "Inactive", CLOSED => "Closed"}
10
-
11
- # Constants
12
- WAREHOUSE = "warehouse"
13
- POS_STORE = "pos_store"
14
-
15
- STORE_TYPES = {
16
- WAREHOUSE => "Warehouse",
17
- POS_STORE => "POS Store"
18
- }
19
-
20
- STORE_TYPES_REVERSE = {
21
- "Warehouse" => WAREHOUSE,
22
- "POS Store" => POS_STORE
23
- }
24
-
25
- # Validations
26
- validates :name, presence: true, length: {minimum: 2, maximum: 250}, allow_blank: false
27
- validates :code, presence: true, uniqueness: true, length: {minimum: 2, maximum: 24}, allow_blank: false
28
- validates :store_type, :presence => true, :inclusion => {:in => STORE_TYPES.keys, :presence_of => :store_type, :message => "%{value} is not a valid store type" }
29
- validates :status, :presence=> true, :inclusion => {:in => STATUS_REVERSE.keys, :presence_of => :status, :message => "%{value} is not a valid status" }
30
-
31
- # Associations
32
- belongs_to :region, optional: true
33
- belongs_to :country, optional: true
34
-
35
- has_many :terminals
36
- has_many :invoices
37
- has_many :stock_entries
38
- has_many :stock_bundles
39
- has_many :products, through: :stock_entries
40
-
41
-
42
- # ------------------
43
- # Class Methods
44
- # ------------------
45
-
46
- # return an active record relation object with the search query in its where clause
47
- # Return the ActiveRecord::Relation object
48
- # == Examples
49
- # >>> obj.search(query)
50
- # => ActiveRecord::Relation object
51
- scope :search, lambda {|query| joins(:country, :region).where("LOWER(name) LIKE LOWER('%#{query}%') OR
52
- LOWER(code) LIKE LOWER('%#{query}%') OR
53
- LOWER(store_type) LIKE LOWER('%#{query}%') OR
54
- LOWER(regions.name) LIKE LOWER('%#{query}%') OR
55
- LOWER(countries.name) LIKE LOWER('%#{query}%')")}
56
-
57
-
58
- scope :warehouse, -> { where(store_type: WAREHOUSE) }
59
- scope :pos_store, -> { where(store_type: POS_STORE) }
60
-
61
- scope :active, -> { where(status: ACTIVE) }
62
- scope :inactive, -> { where(status: INACTIVE) }
63
- scope :close, -> { where(status: CLOSED) }
64
-
65
- scope :active_and_inactive, -> { where(status: [ACTIVE, INACTIVE]) }
66
-
67
- def self.save_row_data(row)
68
-
69
- row.headers.each{ |cell| row[cell] = row[cell].to_s.strip }
70
-
71
- return if row[:name].blank?
72
-
73
- store = Store.find_by_code(row[:code]) || Store.new
74
-
75
- store.name = row[:name]
76
- store.code = row[:code]
77
-
78
- store.set_store_type(row[:store_type])
79
-
80
- store.region = Region.find_by_code(row[:region]) || Country.find_by_name(row[:country])
81
- store.country = Country.find_by_code(row[:country]) || Country.find_by_name(row[:country])
82
-
83
- # Initializing error hash for displaying all errors altogether
84
- error_object = Kuppayam::Importer::ErrorHash.new
85
-
86
- if store.valid?
87
- store.save!
88
- else
89
- summary = "Error while saving store: #{store.name}"
90
- details = "Error! #{store.errors.full_messages.to_sentence}"
91
- error_object.errors << { summary: summary, details: details }
92
- end
93
- return error_object
94
- end
95
-
96
- # ------------------
97
- # Instance Methods
98
- # ------------------
99
-
100
- def display_name
101
- #self.country ? "#{self.code_was}-#{self.name_was}, #{self.country.name}" : "#{self.code_was}-#{self.name_was}"
102
- "#{self.code_was}-#{self.name_was}"
103
- end
104
-
105
- def display_store_type
106
- STORE_TYPES[self.store_type]
107
- end
108
-
109
- def set_store_type(st)
110
- if STORE_TYPES.keys.include?(st)
111
- self.store_type = st
112
- elsif STORE_TYPES_REVERSE.keys.include?(st)
113
- self.store_type = STORE_TYPES_REVERSE[st]
114
- end
115
- end
116
-
117
- def slug
118
- self.name.parameterize
119
- end
120
-
121
- def to_param
122
- "#{id}-#{slug}"
123
- end
124
-
125
- def warehouse?
126
- self.store_type == WAREHOUSE
127
- end
128
-
129
- def pos_store?
130
- self.store_type == POS_STORE
131
- end
132
-
133
- def in_stock?(product)
134
- true
135
- end
136
-
137
- # Total Counts
138
-
139
- def total_quantity_of_products_in_stock
140
- self.stock_entries.active.sum(:quantity) - self.stock_entries.sold.sum(:quantity)
141
- end
142
-
143
- def total_no_of_products_in_stock
144
- self.stock_entries.active.count
145
- # - self.stock_entries.sold.count
146
- # self.stock_entries.active.count - self.stock_entries.sold.count
147
- #begin
148
- # result = Product.select("COUNT(products.id) as id, MAX(se.store_id) as store_id").
149
- # joins("LEFT JOIN stock_entries se ON se.product_id = products.id").
150
- # where("se.store_id = ?", self.id).
151
- # group("products.id")
152
- # return result.size.to_i
153
- #rescue
154
- #0
155
- #end
156
- end
157
-
158
- # Sold Items Count
159
-
160
- def sold_items_count(date=Date.today)
161
- self.stock_entries.dated(date).sold.sum(:quantity)
162
- end
163
-
164
- def sold_items_count_for_today
165
- self.stock_entries.today.sold.sum(:quantity)
166
- end
167
-
168
- def sold_items_count_for_this_month
169
- self.stock_entries.this_month.sold.sum(:quantity)
170
- end
171
-
172
- # Damaged Items Count
173
-
174
- def damaged_items_count(date=Date.today)
175
- self.stock_entries.dated(date).damaged.sum(:quantity)
176
- end
177
-
178
- def damaged_items_count_for_today
179
- self.stock_entries.today.damaged.sum(:quantity)
180
- end
181
-
182
- def damaged_items_count_for_this_month
183
- self.stock_entries.this_month.damaged.sum(:quantity)
184
- end
185
-
186
- # Returned Items Count
187
-
188
- def returned_items_count(date=Date.today)
189
- self.stock_entries.dated(date).returned.sum(:quantity)
190
- end
191
-
192
- def returned_items_count_for_today
193
- self.stock_entries.today.returned.sum(:quantity)
194
- end
195
-
196
- def returned_items_count_for_this_month
197
- self.stock_entries.this_month.returned.sum(:quantity)
198
- end
199
-
200
- # Reserved Items Count
201
-
202
- def reserved_items_count(date=Date.today)
203
- self.stock_entries.dated(date).reserved.sum(:quantity)
204
- end
205
-
206
- def reserved_items_count_for_today
207
- self.stock_entries.today.reserved.sum(:quantity)
208
- end
209
-
210
- def reserved_items_count_for_this_month
211
- self.stock_entries.this_month.reserved.sum(:quantity)
212
- end
213
-
214
-
215
-
216
-
217
-
218
-
219
- # * Return true if the brand is active, else false.
220
- # == Examples
221
- # >>> brand.active?
222
- # => true
223
- def active?
224
- (status == ACTIVE)
225
- end
226
-
227
- # * Return true if the brand is inactive, else false.
228
- # == Examples
229
- # >>> brand.inactive?
230
- # => true
231
- def inactive?
232
- (status == INACTIVE)
233
- end
234
-
235
- # * Return true if the brand is closed, else false.
236
- # == Examples
237
- # >>> brand.closed?
238
- # => true
239
- def closed?
240
- (status == CLOSED)
241
- end
242
-
243
- # change the status to :active
244
- # Return the status
245
- # == Examples
246
- # >>> brand.publish!
247
- # => "active"
248
- def activate!
249
- self.update_attribute(:status, ACTIVE)
250
- end
251
-
252
- # change the status to :inactive
253
- # Return the status
254
- # == Examples
255
- # >>> brand.publish!
256
- # => "inactive"
257
- def inactive!
258
- self.update_attribute(:status, INACTIVE)
259
- end
260
-
261
- # change the status to :closed
262
- # Return the status
263
- # == Examples
264
- # >>> brand.publish!
265
- # => "closed"
266
- def close!
267
- self.update_attribute(:status, CLOSED)
268
- end
269
-
270
- def can_be_activated?
271
- inactive? or closed?
272
- end
273
-
274
- def can_be_inactivated?
275
- active?
276
- end
277
-
278
- def can_be_closed?
279
- active? or inactive?
280
- end
281
-
282
- def can_be_edited?
283
- !closed?
284
- end
285
-
286
- def can_be_deleted?
287
- if self.terminals.any?
288
- #self.errors.add(:base, DELETE_MESSAGE)
289
- return false
290
- else
291
- return true
292
- end
293
- end
294
-
295
- def report_heading
296
- rh = []
297
- rh << self.company.try(:name) if self.company.name
298
- rh << self.display_name
299
- rh.join(", ")
300
- end
301
-
302
- end
@@ -1,79 +0,0 @@
1
- class Supplier < Vyapari::ApplicationRecord
2
-
3
- # Validations
4
- validates :name, presence: true, length: {minimum: 2, maximum: 250}, allow_blank: false
5
- validates :code, presence: true, uniqueness: true, length: {minimum: 2, maximum: 24}
6
- validates :address, length: {minimum: 6, maximum: 1024}
7
- validates :city, length: {minimum: 2, maximum: 56}
8
- validates :country, presence: true
9
-
10
- # Associations
11
- belongs_to :country
12
- has_many :stock_entries
13
- has_many :products, through: :stock_entries
14
-
15
- # ------------------
16
- # Class Methods
17
- # ------------------
18
-
19
- # return an active record relation object with the search query in its where clause
20
- # Return the ActiveRecord::Relation object
21
- # == Examples
22
- # >>> obj.search(query)
23
- # => ActiveRecord::Relation object
24
- scope :search, lambda {|query| joins(:country).where("LOWER(suppliers.name) LIKE LOWER('%#{query}%') OR
25
- LOWER(suppliers.code) LIKE LOWER('%#{query}%') OR
26
- LOWER(suppliers.address) LIKE LOWER('%#{query}%') OR
27
- LOWER(suppliers.city) LIKE LOWER('%#{query}%') OR
28
- LOWER(countries.name) LIKE LOWER('%#{query}%')")}
29
-
30
- # Import Methods
31
- # ---------------
32
-
33
- def self.save_row_data(row)
34
-
35
- row.headers.each{ |cell| row[cell] = row[cell].to_s.strip }
36
-
37
- return if row[:name].blank?
38
-
39
- supplier = Supplier.find_by_code(row[:code]) || Supplier.new
40
-
41
- supplier.name = row[:name]
42
- supplier.code = row[:code]
43
- supplier.address = row[:address]
44
- supplier.city = row[:city]
45
- supplier.country = Country.find_by_code(row[:country]) || Country.find_by_name(row[:country])
46
-
47
- # Initializing error hash for displaying all errors altogether
48
- error_object = Kuppayam::Importer::ErrorHash.new
49
-
50
- if supplier.valid?
51
- supplier.save!
52
- else
53
- summary = "Error while saving supplier: #{supplier.name}"
54
- details = "Error! #{supplier.errors.full_messages.to_sentence}"
55
- error_object.errors << { summary: summary, details: details }
56
- end
57
- return error_object
58
- end
59
-
60
- # ------------------
61
- # Instance Methods
62
- # ------------------
63
-
64
- def display_name
65
- "#{self.code_was}-#{self.name_was}"
66
- end
67
-
68
- def can_be_edited?
69
- true
70
- end
71
-
72
- def can_be_deleted?
73
- if self.stock_entries.any?
74
- return false
75
- else
76
- return true
77
- end
78
- end
79
- end
@@ -1,158 +0,0 @@
1
- class Terminal < Vyapari::ApplicationRecord
2
-
3
- # Constants
4
- ACTIVE = "active"
5
- INACTIVE = "inactive"
6
- CLOSED = "closed"
7
-
8
- STATUS = {"Active" => ACTIVE, "Inactive" => INACTIVE, "Closed" => CLOSED}
9
- STATUS_REVERSE = {ACTIVE => "Active", INACTIVE => "Inactive", CLOSED => "Closed"}
10
-
11
- # Validations
12
- validates :name, presence: true, length: {minimum: 2, maximum: 250}, allow_blank: false
13
- validates :code, presence: true, uniqueness: true, length: {minimum: 2, maximum: 24}, allow_blank: false
14
- validates :status, :presence=> true, :inclusion => {:in => STATUS_REVERSE.keys, :presence_of => :status, :message => "%{value} is not a valid status" }
15
-
16
- # Associations
17
- belongs_to :store
18
- has_many :invoices
19
-
20
- # ------------------
21
- # Class Methods
22
- # ------------------
23
-
24
- # return an active record relation object with the search query in its where clause
25
- # Return the ActiveRecord::Relation object
26
- # == Examples
27
- # >>> obj.search(query)
28
- # => ActiveRecord::Relation object
29
- scope :search, lambda {|query| where("LOWER(name) LIKE LOWER('%#{query}%') OR
30
- LOWER(code) LIKE LOWER('%#{query}%')")}
31
-
32
-
33
- scope :active, -> { where(status: ACTIVE) }
34
- scope :inactive, -> { where(status: INACTIVE) }
35
- scope :close, -> { where(status: CLOSED) }
36
-
37
- scope :active_and_inactive, -> { where(status: [ACTIVE, INACTIVE]) }
38
-
39
- def self.save_row_data(row)
40
-
41
- row.headers.each{ |cell| row[cell] = row[cell].to_s.strip }
42
-
43
- return if row[:name].blank?
44
-
45
- terminal = Terminal.find_by_code(row[:code]) || Terminal.new
46
-
47
- terminal.name = row[:name]
48
- terminal.code = row[:code]
49
-
50
- terminal.store = Store.find_by_code(row[:store])
51
-
52
- # Initializing error hash for displaying all errors altogether
53
- error_object = Kuppayam::Importer::ErrorHash.new
54
-
55
- if terminal.valid?
56
- terminal.save!
57
- else
58
- summary = "Error while saving terminal: #{terminal.name}"
59
- details = "Error! #{terminal.errors.full_messages.to_sentence}"
60
- error_object.errors << { summary: summary, details: details }
61
- end
62
-
63
- return error_object
64
- end
65
-
66
- # ------------------
67
- # Instance Methods
68
- # ------------------
69
-
70
- def display_name
71
- "#{self.code_was}-#{self.name_was}"
72
- end
73
-
74
- def slug
75
- self.name.parameterize
76
- end
77
-
78
- def to_param
79
- "#{id}-#{slug}"
80
- end
81
-
82
- # * Return true if the brand is active, else false.
83
- # == Examples
84
- # >>> brand.active?
85
- # => true
86
- def active?
87
- (status == ACTIVE)
88
- end
89
-
90
- # * Return true if the brand is inactive, else false.
91
- # == Examples
92
- # >>> brand.inactive?
93
- # => true
94
- def inactive?
95
- (status == INACTIVE)
96
- end
97
-
98
- # * Return true if the brand is closed, else false.
99
- # == Examples
100
- # >>> brand.closed?
101
- # => true
102
- def closed?
103
- (status == CLOSED)
104
- end
105
-
106
- # change the status to :active
107
- # Return the status
108
- # == Examples
109
- # >>> brand.publish!
110
- # => "active"
111
- def activate!
112
- self.update_attribute(:status, ACTIVE)
113
- end
114
-
115
- # change the status to :inactive
116
- # Return the status
117
- # == Examples
118
- # >>> brand.publish!
119
- # => "inactive"
120
- def inactive!
121
- self.update_attribute(:status, INACTIVE)
122
- end
123
-
124
- # change the status to :closed
125
- # Return the status
126
- # == Examples
127
- # >>> brand.publish!
128
- # => "closed"
129
- def close!
130
- self.update_attribute(:status, CLOSED)
131
- end
132
-
133
- def can_be_activated?
134
- inactive? or closed?
135
- end
136
-
137
- def can_be_inactivated?
138
- active?
139
- end
140
-
141
- def can_be_closed?
142
- active? or inactive?
143
- end
144
-
145
- def can_be_edited?
146
- !closed?
147
- end
148
-
149
- def can_be_deleted?
150
- if self.invoices.any?
151
- #self.errors.add(:base, DELETE_MESSAGE)
152
- return false
153
- else
154
- return true
155
- end
156
- end
157
-
158
- end