stockor-core 0.2

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 (221) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/Gemfile +6 -0
  4. data/Guardfile +13 -0
  5. data/LICENSE.txt +674 -0
  6. data/README.md +88 -0
  7. data/Rakefile +58 -0
  8. data/config/database.yml +9 -0
  9. data/db/migrate/20120110142845_create_skr_sequential_ids.rb +35 -0
  10. data/db/migrate/20140202185309_create_skr_gl_accounts.rb +15 -0
  11. data/db/migrate/20140202193316_create_skr_gl_periods.rb +16 -0
  12. data/db/migrate/20140202193318_create_skr_gl_transactions.rb +14 -0
  13. data/db/migrate/20140202193319_create_skr_gl_postings.rb +16 -0
  14. data/db/migrate/20140202193700_create_skr_gl_manual_entries.rb +13 -0
  15. data/db/migrate/20140213040608_create_skr_payment_terms.rb +16 -0
  16. data/db/migrate/20140220031700_create_skr_addresses.rb +19 -0
  17. data/db/migrate/20140220031800_create_skr_locations.rb +19 -0
  18. data/db/migrate/20140220190836_create_skr_vendors.rb +22 -0
  19. data/db/migrate/20140220203029_create_skr_customers.rb +22 -0
  20. data/db/migrate/20140224034759_create_skr_skus.rb +22 -0
  21. data/db/migrate/20140225032853_create_skr_sku_locs.rb +21 -0
  22. data/db/migrate/20140320030501_create_skr_uoms.rb +19 -0
  23. data/db/migrate/20140321031604_create_skr_sku_vendors.rb +18 -0
  24. data/db/migrate/20140322012143_create_skr_ia_reasons.rb +14 -0
  25. data/db/migrate/20140322014401_create_skr_inventory_adjustments.rb +16 -0
  26. data/db/migrate/20140322023453_create_skr_ia_lines.rb +18 -0
  27. data/db/migrate/20140322035024_create_skr_sku_trans.rb +21 -0
  28. data/db/migrate/20140322223912_create_skr_sales_orders.rb +27 -0
  29. data/db/migrate/20140322223920_create_skr_so_lines.rb +25 -0
  30. data/db/migrate/20140323001446_create_so_details_view.rb +81 -0
  31. data/db/migrate/20140327202102_create_skr_purchase_orders.rb +20 -0
  32. data/db/migrate/20140327202107_create_skr_po_lines.rb +25 -0
  33. data/db/migrate/20140327202207_create_skr_pick_tickets.rb +16 -0
  34. data/db/migrate/20140327202209_create_skr_pt_lines.rb +23 -0
  35. data/db/migrate/20140327224000_create_skr_invoices.rb +25 -0
  36. data/db/migrate/20140327224002_create_skr_inv_lines.rb +23 -0
  37. data/db/migrate/20140330232808_create_skr_sku_loc_details_view.rb +31 -0
  38. data/db/migrate/20140330232810_create_skr_sku_qty_details_view.rb +48 -0
  39. data/db/migrate/20140400164729_create_skr_vouchers.rb +22 -0
  40. data/db/migrate/20140400164733_create_skr_vo_lines.rb +21 -0
  41. data/db/migrate/20140401164729_create_skr_po_receipt.rb +16 -0
  42. data/db/migrate/20140401164740_create_skr_por_line.rb +21 -0
  43. data/db/migrate/20140422024010_create_skr_inv_details_view.rb +42 -0
  44. data/lib/generators/stockor/migrations/install_generator.rb +42 -0
  45. data/lib/skr/address.rb +97 -0
  46. data/lib/skr/business_entity.rb +25 -0
  47. data/lib/skr/concerns/acts_as_uom.rb +47 -0
  48. data/lib/skr/concerns/all.rb +30 -0
  49. data/lib/skr/concerns/association_extensions.rb +85 -0
  50. data/lib/skr/concerns/attr_accessor_with_default.rb +54 -0
  51. data/lib/skr/concerns/code_identifier.rb +43 -0
  52. data/lib/skr/concerns/export_associations.rb +52 -0
  53. data/lib/skr/concerns/export_join_tables.rb +39 -0
  54. data/lib/skr/concerns/export_methods.rb +104 -0
  55. data/lib/skr/concerns/export_scope.rb +66 -0
  56. data/lib/skr/concerns/exported_limit_evaluator.rb +17 -0
  57. data/lib/skr/concerns/gl_tran_extensions.rb +18 -0
  58. data/lib/skr/concerns/has_gl_transaction.rb +67 -0
  59. data/lib/skr/concerns/has_sku_loc_lines.rb +47 -0
  60. data/lib/skr/concerns/immutable_model.rb +32 -0
  61. data/lib/skr/concerns/inv_extensions.rb +24 -0
  62. data/lib/skr/concerns/is_order_like.rb +47 -0
  63. data/lib/skr/concerns/is_sku_loc_line.rb +65 -0
  64. data/lib/skr/concerns/json_attribute_access.rb +55 -0
  65. data/lib/skr/concerns/locked_fields.rb +84 -0
  66. data/lib/skr/concerns/pt_extensions.rb +22 -0
  67. data/lib/skr/concerns/pub_sub.rb +105 -0
  68. data/lib/skr/concerns/queries.rb +20 -0
  69. data/lib/skr/concerns/random_hash_code.rb +40 -0
  70. data/lib/skr/concerns/sanitize_json.rb +49 -0
  71. data/lib/skr/concerns/sku_extensions.rb +52 -0
  72. data/lib/skr/concerns/so_extensions.rb +30 -0
  73. data/lib/skr/concerns/state_machine.rb +62 -0
  74. data/lib/skr/concerns/track_modifications.rb +48 -0
  75. data/lib/skr/concerns/visible_id_identifier.rb +53 -0
  76. data/lib/skr/core.rb +30 -0
  77. data/lib/skr/core/configuration.rb +87 -0
  78. data/lib/skr/core/db.rb +82 -0
  79. data/lib/skr/core/db/migration_helpers.rb +178 -0
  80. data/lib/skr/core/db/migrations.rb +15 -0
  81. data/lib/skr/core/db/seed.rb +46 -0
  82. data/lib/skr/core/db/seed/chart_of_accounts.yml +168 -0
  83. data/lib/skr/core/db/seed/payment_terms.yml +60 -0
  84. data/lib/skr/core/logger.rb +36 -0
  85. data/lib/skr/core/numbers.rb +71 -0
  86. data/lib/skr/core/rails_engine.rb +5 -0
  87. data/lib/skr/core/standard_pricing_provider.rb +15 -0
  88. data/lib/skr/core/strings.rb +57 -0
  89. data/lib/skr/core/testing.rb +11 -0
  90. data/lib/skr/core/testing/assertions.rb +44 -0
  91. data/lib/skr/core/testing/fixtures.rb +25 -0
  92. data/lib/skr/core/testing/fixtures/skr/addresses.yml +53 -0
  93. data/lib/skr/core/testing/fixtures/skr/customers.yml +43 -0
  94. data/lib/skr/core/testing/fixtures/skr/gl_accounts.yml +86 -0
  95. data/lib/skr/core/testing/fixtures/skr/gl_manual_entries.yml +4 -0
  96. data/lib/skr/core/testing/fixtures/skr/gl_periods.yml +26 -0
  97. data/lib/skr/core/testing/fixtures/skr/gl_postings.yml +88 -0
  98. data/lib/skr/core/testing/fixtures/skr/gl_transactions.yml +35 -0
  99. data/lib/skr/core/testing/fixtures/skr/ia_lines.yml +7 -0
  100. data/lib/skr/core/testing/fixtures/skr/ia_reasons.yml +15 -0
  101. data/lib/skr/core/testing/fixtures/skr/inv_lines.yml +22 -0
  102. data/lib/skr/core/testing/fixtures/skr/inventory_adjustments.yml +6 -0
  103. data/lib/skr/core/testing/fixtures/skr/invoices.yml +10 -0
  104. data/lib/skr/core/testing/fixtures/skr/locations.yml +24 -0
  105. data/lib/skr/core/testing/fixtures/skr/payment_terms.yml +42 -0
  106. data/lib/skr/core/testing/fixtures/skr/pick_tickets.yml +4 -0
  107. data/lib/skr/core/testing/fixtures/skr/po_lines.yml +44 -0
  108. data/lib/skr/core/testing/fixtures/skr/po_receipts.yml +5 -0
  109. data/lib/skr/core/testing/fixtures/skr/por_lines.yml +13 -0
  110. data/lib/skr/core/testing/fixtures/skr/pt_lines.yml +12 -0
  111. data/lib/skr/core/testing/fixtures/skr/purchase_orders.yml +16 -0
  112. data/lib/skr/core/testing/fixtures/skr/sales_orders.yml +32 -0
  113. data/lib/skr/core/testing/fixtures/skr/sku_locs.yml +78 -0
  114. data/lib/skr/core/testing/fixtures/skr/sku_trans.yml +9 -0
  115. data/lib/skr/core/testing/fixtures/skr/sku_vendors.yml +35 -0
  116. data/lib/skr/core/testing/fixtures/skr/skus.yml +50 -0
  117. data/lib/skr/core/testing/fixtures/skr/so_lines.yml +71 -0
  118. data/lib/skr/core/testing/fixtures/skr/uoms.yml +61 -0
  119. data/lib/skr/core/testing/fixtures/skr/vendors.yml +48 -0
  120. data/lib/skr/core/testing/fixtures/skr/vo_lines.yml +12 -0
  121. data/lib/skr/core/testing/fixtures/skr/vouchers.yml +8 -0
  122. data/lib/skr/core/testing/helper.rb +18 -0
  123. data/lib/skr/core/testing/test_case.rb +17 -0
  124. data/lib/skr/core/version.rb +5 -0
  125. data/lib/skr/customer.rb +34 -0
  126. data/lib/skr/gl_account.rb +56 -0
  127. data/lib/skr/gl_manual_entry.rb +31 -0
  128. data/lib/skr/gl_period.rb +13 -0
  129. data/lib/skr/gl_posting.rb +54 -0
  130. data/lib/skr/gl_transaction.rb +174 -0
  131. data/lib/skr/ia_line.rb +129 -0
  132. data/lib/skr/ia_reason.rb +16 -0
  133. data/lib/skr/inv_line.rb +90 -0
  134. data/lib/skr/inventory_adjustment.rb +60 -0
  135. data/lib/skr/invoice.rb +159 -0
  136. data/lib/skr/location.rb +31 -0
  137. data/lib/skr/model.rb +37 -0
  138. data/lib/skr/null_user.rb +30 -0
  139. data/lib/skr/payment_term.rb +30 -0
  140. data/lib/skr/pick_ticket.rb +71 -0
  141. data/lib/skr/po_line.rb +69 -0
  142. data/lib/skr/po_receipt.rb +51 -0
  143. data/lib/skr/por_line.rb +80 -0
  144. data/lib/skr/pt_line.rb +74 -0
  145. data/lib/skr/purchase_order.rb +112 -0
  146. data/lib/skr/sales_order.rb +159 -0
  147. data/lib/skr/sequential_id.rb +23 -0
  148. data/lib/skr/sku.rb +99 -0
  149. data/lib/skr/sku_loc.rb +94 -0
  150. data/lib/skr/sku_tran.rb +111 -0
  151. data/lib/skr/sku_vendor.rb +26 -0
  152. data/lib/skr/so_line.rb +159 -0
  153. data/lib/skr/uom.rb +63 -0
  154. data/lib/skr/user_proxy.rb +60 -0
  155. data/lib/skr/validators/all.rb +2 -0
  156. data/lib/skr/validators/email.rb +17 -0
  157. data/lib/skr/validators/set.rb +18 -0
  158. data/lib/skr/vendor.rb +33 -0
  159. data/lib/skr/vo_line.rb +35 -0
  160. data/lib/skr/voucher.rb +119 -0
  161. data/lib/stockor/core.rb +9 -0
  162. data/stockor-core.gemspec +37 -0
  163. data/tasks/migrations.rake +23 -0
  164. data/tasks/publish.rake +8 -0
  165. data/test/address_test.rb +57 -0
  166. data/test/concerns/attr_with_default_test.rb +45 -0
  167. data/test/concerns/code_identifier_test.rb +46 -0
  168. data/test/concerns/export_associations_test.rb +7 -0
  169. data/test/concerns/export_methods_test.rb +31 -0
  170. data/test/concerns/export_scope_test.rb +16 -0
  171. data/test/concerns/exported_limits_test.rb +47 -0
  172. data/test/concerns/json_attribute_access_test.rb +27 -0
  173. data/test/concerns/pub_sub_test.rb +83 -0
  174. data/test/concerns/sanitize_json_test.rb +47 -0
  175. data/test/core/configuration_test.rb +24 -0
  176. data/test/core/numbers_test.rb +26 -0
  177. data/test/core/strings_test.rb +41 -0
  178. data/test/customer_test.rb +34 -0
  179. data/test/gl_account_test.rb +23 -0
  180. data/test/gl_manual_entry_test.rb +17 -0
  181. data/test/gl_period_test.rb +12 -0
  182. data/test/gl_posting_test.rb +39 -0
  183. data/test/gl_transaction_test.rb +58 -0
  184. data/test/ia_line_test.rb +68 -0
  185. data/test/ia_reason_test.rb +11 -0
  186. data/test/inv_line_test.rb +58 -0
  187. data/test/inventory_adjustment_test.rb +72 -0
  188. data/test/invoice_test.rb +63 -0
  189. data/test/location_test.rb +10 -0
  190. data/test/payment_term_test.rb +25 -0
  191. data/test/pick_ticket_test.rb +27 -0
  192. data/test/po_line_test.rb +36 -0
  193. data/test/po_receipt_test.rb +93 -0
  194. data/test/por_line_test.rb +79 -0
  195. data/test/pt_line_test.rb +29 -0
  196. data/test/purchase_order_test.rb +44 -0
  197. data/test/sales_order_test.rb +74 -0
  198. data/test/sku_loc_test.rb +50 -0
  199. data/test/sku_test.rb +45 -0
  200. data/test/sku_tran_test.rb +21 -0
  201. data/test/sku_vendor_test.rb +13 -0
  202. data/test/so_line_test.rb +89 -0
  203. data/test/test_helper.rb +1 -0
  204. data/test/uom_test.rb +14 -0
  205. data/test/vendor_test.rb +35 -0
  206. data/test/vo_line_test.rb +20 -0
  207. data/test/voucher_test.rb +35 -0
  208. data/yard_ext/all.rb +9 -0
  209. data/yard_ext/code_identifier_handler.rb +33 -0
  210. data/yard_ext/concern_meta_methods.rb +60 -0
  211. data/yard_ext/config_options.rb +27 -0
  212. data/yard_ext/exported_scope.rb +4 -0
  213. data/yard_ext/immutable_handler.rb +17 -0
  214. data/yard_ext/json_attr_accessor.rb +22 -0
  215. data/yard_ext/locked_fields_handler.rb +21 -0
  216. data/yard_ext/templates/default/layout/html/layout.erb +20 -0
  217. data/yard_ext/templates/default/method_details/html/github_link.erb +1 -0
  218. data/yard_ext/templates/default/method_details/setup.rb +3 -0
  219. data/yard_ext/validators.rb +1 -0
  220. data/yard_ext/visible_id_handler.rb +38 -0
  221. metadata +448 -0
@@ -0,0 +1,18 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrSkuVendors < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "sku_vendors" do |t|
7
+ t.skr_reference :sku, null: false, single: true
8
+ t.skr_reference :vendor, null: false, single: true
9
+ t.skr_currency "list_price", null: false, precision: 15, scale: 2
10
+ t.string "part_code", null: false
11
+ t.boolean "is_active", null: false, default: true
12
+ t.integer "uom_size", null: false, default: 1
13
+ t.string "uom_code", null: false, default: 'EA'
14
+ t.decimal "cost", null: false, precision: 15, scale: 2
15
+ t.skr_track_modifications
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrIaReasons < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "ia_reasons" do |t|
7
+ t.skr_reference :gl_account, null: false, single: true
8
+ t.string "code", null: false
9
+ t.string "description", null: false
10
+ t.skr_track_modifications
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrInventoryAdjustments < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "inventory_adjustments" do |t|
7
+ t.skr_visible_id
8
+ t.skr_reference :location, null: false, single: true
9
+ t.skr_reference :reason, null: false, to_table: 'ia_reasons'
10
+ t.string "state", null: false
11
+ t.text "description", null: false
12
+ t.skr_track_modifications
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrIaLines < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "ia_lines" do |t|
7
+ t.skr_reference :inventory_adjustment, null: false, single: true
8
+ t.skr_reference :sku_loc, null: false, single: true
9
+ t.integer "qty", null: false, default: 1
10
+ t.string "uom_code", null: false, default: 'EA'
11
+ t.integer "uom_size", null: false, default: 1, limit: 2
12
+ t.skr_currency "cost", precision: 15, scale: 2 # n.b. the cost may be left null
13
+ t.boolean "cost_was_set", null: false, default: false
14
+ t.skr_track_modifications
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrSkuTrans < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "sku_trans" do |t|
7
+ t.references :origin, :polymorphic => true
8
+ t.skr_reference :sku_loc, null: false, single: true
9
+ t.skr_currency "cost", null: false
10
+ t.string "origin_description", null: false
11
+ t.integer "prior_qty", null: false
12
+ t.decimal "mac", null: false, precision: 15, scale: 4
13
+ t.decimal "prior_mac", null: false, precision: 15, scale: 4
14
+ t.integer "qty", null: false, default: 0
15
+ t.string "uom_code", null: false, default: 'EA'
16
+ t.integer "uom_size", null: false, default: 1
17
+ t.skr_track_modifications create_only: true # sku_tran can only be created
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrSalesOrders < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "sales_orders" do |t|
7
+ t.skr_visible_id
8
+ t.skr_reference :customer, single: true
9
+ t.skr_reference :location, single: true
10
+ t.skr_reference :shipping_address, to_table: 'addresses'
11
+ t.skr_reference :billing_address, to_table: 'addresses'
12
+ t.skr_reference :terms, to_table: 'payment_terms'
13
+ t.date "order_date", null: false
14
+ t.string "state", null: false
15
+ t.boolean "is_revised", null: false, default: false
16
+ t.string "hash_code", null: false
17
+ t.boolean "ship_partial", null: false, default: false
18
+ t.boolean "is_complete", null: false, default: false
19
+ t.string "po_num"
20
+ t.text "notes"
21
+ t.hstore "options", default: {}
22
+ t.skr_track_modifications
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,25 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrSoLines < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "so_lines" do |t|
7
+ t.skr_reference :sales_order, null: false, single: true
8
+ t.skr_reference :sku_loc, null: false, single: true
9
+ t.skr_currency "price", null: false
10
+ t.string "sku_code", null: false
11
+ t.string "description", null: false
12
+ t.string "uom_code", null: false
13
+ t.integer "uom_size", null: false, limit: 2
14
+ t.integer "position", null: false, limit: 2
15
+ t.integer "qty", null: false, default: 0
16
+ t.integer "qty_allocated", null: false, default: 0
17
+ t.integer "qty_picking", null: false, default: 0
18
+ t.integer "qty_invoiced", null: false, default: 0
19
+ t.integer "qty_canceled", null: false, default: 0
20
+ t.boolean "is_revised", null: false, default: false
21
+ t.skr_track_modifications
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,81 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSoDetailsView < ActiveRecord::Migration
4
+ def up
5
+ execute <<-EOS.squish
6
+ create view #{skr_prefix}so_amount_details as
7
+ select so.id as sales_order_id,
8
+ to_char(so.order_date,'YYYY-MM-DD') as string_order_date,
9
+ cust.code as customer_code, cust.name as customer_name,
10
+ addr.name as bill_addr_name,
11
+ coalesce( ttls.total,0.0 ) as total,
12
+ coalesce( ttls.num_lines, 0 ) as num_lines,
13
+ coalesce( ttls.other_charge_total, 0 ) as total_other_charge_amount,
14
+ coalesce( ttls.tax_charge_total, 0 ) as total_tax_amount,
15
+ coalesce( ttls.shipping_charge_total, 0 ) as total_shipping_amount,
16
+ coalesce( ttls.total,0.0 ) - coalesce( ttls.other_charge_total, 0.0 ) as subtotal_amount
17
+ from #{skr_prefix}sales_orders so
18
+ join #{skr_prefix}customers cust on cust.id = so.customer_id
19
+ join #{skr_prefix}addresses addr on addr.id = so.billing_address_id
20
+ left join (
21
+ select
22
+ sales_order_id,
23
+ sum(sol.qty*sol.price) as total,
24
+ sum( case when s.is_other_charge then sol.qty*sol.price else 0 end ) as other_charge_total,
25
+ sum( case when sol.sku_code = '#{Skr::Core.config.ship_sku_code}' then sol.qty*sol.price else 0 end )
26
+ as shipping_charge_total,
27
+ sum( case when sol.sku_code = '#{Skr::Core.config.tax_sku_code}' then sol.qty*sol.price else 0 end )
28
+ as tax_charge_total,
29
+ count(sol.*) as num_lines
30
+ from #{skr_prefix}so_lines sol
31
+ join #{skr_prefix}sku_locs sl on sl.id = sol.sku_loc_id
32
+ join #{skr_prefix}skus s on s.id = sl.sku_id
33
+ group by sales_order_id
34
+ ) ttls on ttls.sales_order_id = so.id
35
+ EOS
36
+
37
+ execute <<-EOS.squish
38
+ create view #{skr_prefix}so_allocation_details as
39
+ select sales_order_id, count(*) as number_of_lines, sum(sol.qty_allocated*price) as allocated_total,
40
+ sum( case when sol.qty_allocated - sol.qty_canceled - sol.qty_picking > 0 then 1 else 0 end )
41
+ as number_of_lines_allocated,
42
+ sum( case when sol.qty_allocated = (sol.qty - sol.qty_canceled - sol.qty_picking)
43
+ then 1 else 0 end )
44
+ as number_of_lines_fully_allocated
45
+ from #{skr_prefix}so_lines sol
46
+ join #{skr_prefix}sku_locs sl on sl.id = sol.sku_loc_id
47
+ join #{skr_prefix}skus s on s.id = sl.sku_id and s.is_other_charge='f'
48
+ group by sales_order_id having ( sum ( case when
49
+ sol.qty_allocated - sol.qty_canceled - sol.qty_picking > 0 then 1 else 0 end
50
+ ) ) > 0
51
+ EOS
52
+
53
+ execute <<-EOS.squish
54
+ create view #{skr_prefix}so_dailly_sales_history as
55
+ select
56
+ days_ago,
57
+ date_trunc('day', (current_date - days_ago)) as day,
58
+ coalesce( ttls.order_count, 0 ) as order_count,
59
+ coalesce( ttls.line_count, 0 ) as line_count,
60
+ coalesce(ttls.total,0.0) as total
61
+ from generate_series(0, 120, 1) as days_ago
62
+ left join (
63
+ select
64
+ count(distinct(sales_order_id)) as order_count,
65
+ count(*) as line_count,
66
+ sum(sol.price*sol.qty) as total,
67
+ date_trunc('day', so.created_at ) as so_date
68
+ from #{skr_prefix}so_lines sol
69
+ join #{skr_prefix}sales_orders so on sol.sales_order_id = so.id
70
+ group by date_trunc('day', so.created_at )
71
+ ) ttls on ttls.so_date = date_trunc('day', (current_date - days_ago))
72
+ order by day desc
73
+ EOS
74
+ end
75
+
76
+ def down
77
+ execute "drop view #{skr_prefix}so_amount_details"
78
+ execute "drop view #{skr_prefix}so_allocation_details"
79
+ execute "drop view #{skr_prefix}so_dailly_sales_history"
80
+ end
81
+ end
@@ -0,0 +1,20 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrPurchaseOrders < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "purchase_orders" do |t|
7
+ t.skr_visible_id
8
+ t.skr_reference :vendor, single: true
9
+ t.skr_reference :location, single: true
10
+ t.skr_reference :ship_addr, to_table: 'addresses'
11
+ t.skr_reference :terms, to_table: 'payment_terms'
12
+ t.string "state", null: false
13
+ t.boolean "is_revised", null: false, default: false
14
+ t.date "order_date", null: false
15
+ t.datetime "receiving_completed_at"
16
+ t.skr_track_modifications
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrPoLines < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "po_lines" do |t|
7
+ t.skr_reference :purchase_order, null: false, single: true
8
+ t.skr_reference :sku_loc, null: false, single: true
9
+ t.skr_reference :sku_vendor, null: false, single: true
10
+ t.string "part_code", null: false
11
+ t.string "sku_code", null: false
12
+ t.string "description", null: false
13
+ t.string "uom_code", null: false
14
+ t.integer "uom_size", null: false, limit: 2
15
+ t.integer "position", null: false, limit: 2
16
+ t.integer "qty", null: false, default: 0
17
+ t.integer "qty_received", null: false, default: 0
18
+ t.integer "qty_canceled", null: false, default: 0
19
+ t.skr_currency "price", null: false
20
+ t.boolean "is_revised", null: false, default: false
21
+ t.skr_track_modifications
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrPickTickets < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "pick_tickets" do |t|
7
+ t.skr_visible_id
8
+ t.skr_reference :sales_order, single: true
9
+ t.skr_reference :location, single: true
10
+ t.date "shipped_at"
11
+ t.boolean "is_complete", default: false
12
+ t.skr_track_modifications
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrPtLines < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "pt_lines" do |t|
7
+ t.skr_reference :pick_ticket, single: true
8
+ t.skr_reference :so_line, single: true
9
+ t.skr_reference :sku_loc, single: true
10
+ t.skr_currency "price", null: false
11
+ t.string "sku_code", null: false
12
+ t.string "description", null: false
13
+ t.string "uom_code", null: false
14
+ t.string "bin", null: true
15
+ t.integer "uom_size", null: false, limit: 2
16
+ t.integer "position", null: false, limit: 2
17
+ t.integer "qty", null: false, default: 0
18
+ t.integer "qty_invoiced", null: false, default: 0
19
+ t.boolean "is_complete", null: false, default: false
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrInvoices < ActiveRecord::Migration
4
+
5
+ def change
6
+ create_skr_table "invoices" do |t|
7
+ t.skr_visible_id
8
+ t.skr_reference :terms, to_table: 'payment_terms'
9
+ t.skr_reference :customer, single: true
10
+ t.skr_reference :location, single: true
11
+ t.skr_reference :sales_order, single: true, null: true
12
+ t.skr_reference :pick_ticket, single: true, null: true
13
+ t.skr_reference :shipping_address, to_table: 'addresses'
14
+ t.skr_reference :billing_address, to_table: 'addresses'
15
+ t.skr_currency :amount_paid, null: false, default: 0.0
16
+ t.string "state", null: false
17
+ t.string "hash_code", null: false
18
+ t.date "invoice_date", null: false
19
+ t.string "po_num"
20
+ t.hstore "options", default: {}
21
+ t.skr_track_modifications
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,23 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrInvLines < ActiveRecord::Migration
4
+
5
+ def change
6
+ create_skr_table "inv_lines" do |t|
7
+ t.skr_reference :invoice, null: false, single: true
8
+ t.skr_reference :sku_loc, null: false, single: true
9
+ t.skr_reference :pt_line, null: true, single: true
10
+ t.skr_reference :so_line, null: true, single: true
11
+ t.skr_currency :price, null: false
12
+ t.string "sku_code", null: false
13
+ t.string "description", null: false
14
+ t.string "uom_code", null: false
15
+ t.integer "uom_size", null: false, limit: 2
16
+ t.integer "position", null: false, limit: 2
17
+ t.integer "qty", null: false
18
+ t.boolean "is_revised", null: false, default: false
19
+ t.skr_track_modifications
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,31 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrSkuLocDetailsView < ActiveRecord::Migration
4
+ def up
5
+
6
+ execute <<-EOS
7
+ create view #{skr_prefix}sku_loc_details as
8
+ select
9
+ sl.id as sku_loc_id,
10
+ s.code as sku_code,
11
+ s.description as sku_description,
12
+ s.default_uom_code,
13
+ uom.id as default_uom_id,
14
+ coalesce( uom.size, 1) as default_uom_size,
15
+ coalesce(uom.price, 0.0) as default_price,
16
+ v.code as vendor_code, v.name as vendor_name,
17
+ sv.part_code as vendor_part_code,
18
+ sv.cost as purchase_cost
19
+ from #{skr_prefix}sku_locs sl
20
+ join #{skr_prefix}skus s on s.id=sl.sku_id
21
+ left join #{skr_prefix}uoms uom on uom.sku_id = s.id and uom.code = s.default_uom_code
22
+ join #{skr_prefix}vendors v on s.default_vendor_id = v.id
23
+ join #{skr_prefix}sku_vendors sv on sv.vendor_id = v.id and sv.sku_id=s.id
24
+ EOS
25
+ end
26
+
27
+ def down
28
+ execute "drop view #{skr_prefix}sku_loc_details"
29
+ end
30
+
31
+ end
@@ -0,0 +1,48 @@
1
+ require 'skr/core/db/migration_helpers'
2
+
3
+ class CreateSkrSkuQtyDetailsView < ActiveRecord::Migration
4
+ def up
5
+ execute <<-EOS
6
+ create view #{skr_prefix}sku_qty_details as
7
+ select
8
+ s.id as sku_id,
9
+ sl_ttl.qty as qty_on_hand,
10
+ coalesce( sol_ttl.qty, 0 ) as qty_on_orders,
11
+ coalesce( pol_ttl.qty, 0 ) as qty_incoming
12
+ from #{skr_prefix}skus s
13
+ join (
14
+ select sum(qty) as qty, sku_id
15
+ from #{skr_prefix}sku_locs sl group by sku_id
16
+ ) sl_ttl on sl_ttl.sku_id = s.id
17
+
18
+ left join (
19
+ select
20
+ s.id as sku_id,
21
+ sum( ( sol.qty - sol.qty_canceled ) * sol.uom_size ) as qty
22
+ from #{skr_prefix}so_lines sol
23
+ join #{skr_prefix}sales_orders so on so.id = sol.sales_order_id
24
+ and state not in ('canceled', 'complete')
25
+ join #{skr_prefix}sku_locs sl on sl.id = sol.sku_loc_id
26
+ join #{skr_prefix}skus s on s.id = sl.sku_id
27
+ group by s.id
28
+ ) sol_ttl on sol_ttl.sku_id = s.id
29
+
30
+ left join (
31
+ select
32
+ s.id as sku_id,
33
+ sum( ( pol.qty - pol.qty_canceled ) * pol.uom_size ) as qty
34
+ from #{skr_prefix}po_lines pol
35
+ join #{skr_prefix}purchase_orders po on po.id = pol.purchase_order_id
36
+ and state not in ('canceled', 'complete')
37
+ join #{skr_prefix}sku_locs sl on sl.id = pol.sku_loc_id
38
+ join #{skr_prefix}skus s on s.id = sl.sku_id
39
+ group by s.id
40
+ ) pol_ttl on pol_ttl.sku_id = s.id
41
+
42
+ EOS
43
+ end
44
+
45
+ def down
46
+ execute "drop view #{skr_prefix}sku_qty_details"
47
+ end
48
+ end