stockor 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 (259) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/Gemfile +11 -0
  4. data/Gemfile.lock +220 -0
  5. data/Guardfile +13 -0
  6. data/README.md +7 -0
  7. data/Rakefile +7 -0
  8. data/client/skr/Extension.coffee +12 -0
  9. data/client/skr/components/.gitkeep +0 -0
  10. data/client/skr/components/address/Address.coffee +21 -0
  11. data/client/skr/components/address/address.html +20 -0
  12. data/client/skr/index.js +21 -0
  13. data/client/skr/models/Address.coffee +17 -0
  14. data/client/skr/models/Base.coffee +8 -0
  15. data/client/skr/models/Customer.coffee +26 -0
  16. data/client/skr/models/GlAccount.coffee +10 -0
  17. data/client/skr/models/GlManualEntry.coffee +11 -0
  18. data/client/skr/models/GlPeriod.coffee +10 -0
  19. data/client/skr/models/GlPosting.coffee +15 -0
  20. data/client/skr/models/GlTransaction.coffee +16 -0
  21. data/client/skr/models/IaLine.coffee +19 -0
  22. data/client/skr/models/IaReason.coffee +12 -0
  23. data/client/skr/models/InvLine.coffee +27 -0
  24. data/client/skr/models/InventoryAdjustment.coffee +17 -0
  25. data/client/skr/models/Invoice.coffee +31 -0
  26. data/client/skr/models/Location.coffee +15 -0
  27. data/client/skr/models/PaymentTerm.coffee +11 -0
  28. data/client/skr/models/PickTicket.coffee +19 -0
  29. data/client/skr/models/PoLine.coffee +27 -0
  30. data/client/skr/models/PoReceipt.coffee +20 -0
  31. data/client/skr/models/PorLine.coffee +26 -0
  32. data/client/skr/models/PtLine.coffee +27 -0
  33. data/client/skr/models/PurchaseOrder.coffee +23 -0
  34. data/client/skr/models/SalesOrder.coffee +32 -0
  35. data/client/skr/models/Sku.coffee +21 -0
  36. data/client/skr/models/SkuLoc.coffee +21 -0
  37. data/client/skr/models/SkuTran.coffee +23 -0
  38. data/client/skr/models/SkuVendor.coffee +19 -0
  39. data/client/skr/models/SoLine.coffee +27 -0
  40. data/client/skr/models/Uom.coffee +17 -0
  41. data/client/skr/models/Vendor.coffee +28 -0
  42. data/client/skr/models/VoLine.coffee +23 -0
  43. data/client/skr/models/Voucher.coffee +22 -0
  44. data/client/skr/models/mixins/CodeField.coffee +5 -0
  45. data/client/skr/screens/.gitkeep +0 -0
  46. data/client/skr/screens/Base.coffee +3 -0
  47. data/client/skr/screens/base/index.js +5 -0
  48. data/client/skr/screens/base/index.scss +9 -0
  49. data/client/skr/screens/base/layout.html +3 -0
  50. data/client/skr/screens/customer-maint/CustomerMaint.coffee +49 -0
  51. data/client/skr/screens/customer-maint/index.js +5 -0
  52. data/client/skr/screens/customer-maint/index.scss +9 -0
  53. data/client/skr/screens/customer-maint/layout.html +32 -0
  54. data/client/skr/styles.scss +1 -0
  55. data/client/skr/views/.gitkeep +0 -0
  56. data/client/skr/views/Base.coffee +5 -0
  57. data/config/database.yml +9 -0
  58. data/config/lanes.rb +7 -0
  59. data/config/routes.rb +39 -0
  60. data/config/screens.rb +17 -0
  61. data/config.ru +5 -0
  62. data/db/.gitkeep +0 -0
  63. data/db/migrate/20120110142845_create_skr_sequential_ids.rb +35 -0
  64. data/db/migrate/20140202185309_create_skr_gl_accounts.rb +15 -0
  65. data/db/migrate/20140202193316_create_skr_gl_periods.rb +16 -0
  66. data/db/migrate/20140202193318_create_skr_gl_transactions.rb +14 -0
  67. data/db/migrate/20140202193319_create_skr_gl_postings.rb +16 -0
  68. data/db/migrate/20140202193700_create_skr_gl_manual_entries.rb +13 -0
  69. data/db/migrate/20140213040608_create_skr_payment_terms.rb +16 -0
  70. data/db/migrate/20140220031700_create_skr_addresses.rb +19 -0
  71. data/db/migrate/20140220031800_create_skr_locations.rb +19 -0
  72. data/db/migrate/20140220190836_create_skr_vendors.rb +22 -0
  73. data/db/migrate/20140220203029_create_skr_customers.rb +22 -0
  74. data/db/migrate/20140224034759_create_skr_skus.rb +22 -0
  75. data/db/migrate/20140225032853_create_skr_sku_locs.rb +21 -0
  76. data/db/migrate/20140320030501_create_skr_uoms.rb +19 -0
  77. data/db/migrate/20140321031604_create_skr_sku_vendors.rb +18 -0
  78. data/db/migrate/20140322012143_create_skr_ia_reasons.rb +14 -0
  79. data/db/migrate/20140322014401_create_skr_inventory_adjustments.rb +16 -0
  80. data/db/migrate/20140322023453_create_skr_ia_lines.rb +18 -0
  81. data/db/migrate/20140322035024_create_skr_sku_trans.rb +21 -0
  82. data/db/migrate/20140322223912_create_skr_sales_orders.rb +27 -0
  83. data/db/migrate/20140322223920_create_skr_so_lines.rb +25 -0
  84. data/db/migrate/20140323001446_create_so_details_view.rb +81 -0
  85. data/db/migrate/20140327202102_create_skr_purchase_orders.rb +20 -0
  86. data/db/migrate/20140327202107_create_skr_po_lines.rb +25 -0
  87. data/db/migrate/20140327202207_create_skr_pick_tickets.rb +16 -0
  88. data/db/migrate/20140327202209_create_skr_pt_lines.rb +23 -0
  89. data/db/migrate/20140327224000_create_skr_invoices.rb +25 -0
  90. data/db/migrate/20140327224002_create_skr_inv_lines.rb +23 -0
  91. data/db/migrate/20140330232808_create_skr_sku_loc_details_view.rb +31 -0
  92. data/db/migrate/20140330232810_create_skr_sku_qty_details_view.rb +48 -0
  93. data/db/migrate/20140400164729_create_skr_vouchers.rb +22 -0
  94. data/db/migrate/20140400164733_create_skr_vo_lines.rb +21 -0
  95. data/db/migrate/20140401164729_create_skr_po_receipt.rb +16 -0
  96. data/db/migrate/20140401164740_create_skr_por_line.rb +21 -0
  97. data/db/migrate/20140422024010_create_skr_inv_details_view.rb +42 -0
  98. data/db/schema.sql +2662 -0
  99. data/db/seed/chart_of_accounts.yml +168 -0
  100. data/db/seed/payment_terms.yml +60 -0
  101. data/db/seed.rb +29 -0
  102. data/lib/skr/access_roles.rb +28 -0
  103. data/lib/skr/concerns/acts_as_uom.rb +47 -0
  104. data/lib/skr/concerns/code_identifier.rb +43 -0
  105. data/lib/skr/concerns/gl_tran_extensions.rb +18 -0
  106. data/lib/skr/concerns/has_gl_transaction.rb +67 -0
  107. data/lib/skr/concerns/has_sku_loc_lines.rb +47 -0
  108. data/lib/skr/concerns/immutable_model.rb +32 -0
  109. data/lib/skr/concerns/inv_extensions.rb +24 -0
  110. data/lib/skr/concerns/is_order_like.rb +47 -0
  111. data/lib/skr/concerns/is_sku_loc_line.rb +65 -0
  112. data/lib/skr/concerns/locked_fields.rb +84 -0
  113. data/lib/skr/concerns/pt_extensions.rb +22 -0
  114. data/lib/skr/concerns/random_hash_code.rb +40 -0
  115. data/lib/skr/concerns/so_extensions.rb +30 -0
  116. data/lib/skr/concerns/state_machine.rb +61 -0
  117. data/lib/skr/concerns/visible_id_identifier.rb +53 -0
  118. data/lib/skr/configuration.rb +68 -0
  119. data/lib/skr/db/migration_helpers.rb +178 -0
  120. data/lib/skr/extension.rb +23 -0
  121. data/lib/skr/model.rb +19 -0
  122. data/lib/skr/models/address.rb +97 -0
  123. data/lib/skr/models/business_entity.rb +29 -0
  124. data/lib/skr/models/customer.rb +35 -0
  125. data/lib/skr/models/gl_account.rb +56 -0
  126. data/lib/skr/models/gl_manual_entry.rb +31 -0
  127. data/lib/skr/models/gl_period.rb +13 -0
  128. data/lib/skr/models/gl_posting.rb +54 -0
  129. data/lib/skr/models/gl_transaction.rb +175 -0
  130. data/lib/skr/models/ia_line.rb +129 -0
  131. data/lib/skr/models/ia_reason.rb +16 -0
  132. data/lib/skr/models/inv_line.rb +90 -0
  133. data/lib/skr/models/inventory_adjustment.rb +60 -0
  134. data/lib/skr/models/invoice.rb +159 -0
  135. data/lib/skr/models/location.rb +31 -0
  136. data/lib/skr/models/payment_term.rb +30 -0
  137. data/lib/skr/models/pick_ticket.rb +71 -0
  138. data/lib/skr/models/po_line.rb +69 -0
  139. data/lib/skr/models/po_receipt.rb +51 -0
  140. data/lib/skr/models/por_line.rb +80 -0
  141. data/lib/skr/models/pt_line.rb +74 -0
  142. data/lib/skr/models/purchase_order.rb +112 -0
  143. data/lib/skr/models/sales_order.rb +159 -0
  144. data/lib/skr/models/sequential_id.rb +23 -0
  145. data/lib/skr/models/sku.rb +99 -0
  146. data/lib/skr/models/sku_loc.rb +94 -0
  147. data/lib/skr/models/sku_tran.rb +111 -0
  148. data/lib/skr/models/sku_vendor.rb +26 -0
  149. data/lib/skr/models/so_line.rb +159 -0
  150. data/lib/skr/models/uom.rb +63 -0
  151. data/lib/skr/models/user_proxy.rb +60 -0
  152. data/lib/skr/models/vendor.rb +33 -0
  153. data/lib/skr/models/vo_line.rb +35 -0
  154. data/lib/skr/models/voucher.rb +119 -0
  155. data/lib/skr/standard_pricing_provider.rb +14 -0
  156. data/lib/skr/version.rb +3 -0
  157. data/lib/skr.rb +18 -0
  158. data/lib/stockor.rb +4 -0
  159. data/lib/tasks/debug-activity.rake +58 -0
  160. data/log/test.log +0 -0
  161. data/spec/fixtures/skr/address.yml +2 -0
  162. data/spec/fixtures/skr/customer.yml +2 -0
  163. data/spec/fixtures/skr/gl_account.yml +2 -0
  164. data/spec/fixtures/skr/gl_manual_entry.yml +2 -0
  165. data/spec/fixtures/skr/gl_period.yml +2 -0
  166. data/spec/fixtures/skr/gl_posting.yml +2 -0
  167. data/spec/fixtures/skr/gl_transaction.yml +2 -0
  168. data/spec/fixtures/skr/ia_line.yml +2 -0
  169. data/spec/fixtures/skr/ia_reason.yml +2 -0
  170. data/spec/fixtures/skr/inv_line.yml +2 -0
  171. data/spec/fixtures/skr/inventory_adjustment.yml +2 -0
  172. data/spec/fixtures/skr/invoice.yml +2 -0
  173. data/spec/fixtures/skr/location.yml +2 -0
  174. data/spec/fixtures/skr/payment_term.yml +2 -0
  175. data/spec/fixtures/skr/pick_ticket.yml +2 -0
  176. data/spec/fixtures/skr/po_line.yml +2 -0
  177. data/spec/fixtures/skr/po_receipt.yml +2 -0
  178. data/spec/fixtures/skr/por_line.yml +2 -0
  179. data/spec/fixtures/skr/pt_line.yml +2 -0
  180. data/spec/fixtures/skr/purchase_order.yml +2 -0
  181. data/spec/fixtures/skr/sales_order.yml +2 -0
  182. data/spec/fixtures/skr/sku.yml +2 -0
  183. data/spec/fixtures/skr/sku_loc.yml +2 -0
  184. data/spec/fixtures/skr/sku_tran.yml +2 -0
  185. data/spec/fixtures/skr/sku_vendor.yml +2 -0
  186. data/spec/fixtures/skr/so_line.yml +2 -0
  187. data/spec/fixtures/skr/uom.yml +2 -0
  188. data/spec/fixtures/skr/vendor.yml +2 -0
  189. data/spec/fixtures/skr/vo_line.yml +2 -0
  190. data/spec/fixtures/skr/voucher.yml +2 -0
  191. data/spec/skr/address.rb +10 -0
  192. data/spec/skr/concerns/code_identifier_spec.rb +45 -0
  193. data/spec/skr/customer.rb +10 -0
  194. data/spec/skr/gl_account.rb +10 -0
  195. data/spec/skr/gl_manual_entry.rb +10 -0
  196. data/spec/skr/gl_period.rb +10 -0
  197. data/spec/skr/gl_posting.rb +10 -0
  198. data/spec/skr/gl_transaction.rb +10 -0
  199. data/spec/skr/ia_line.rb +10 -0
  200. data/spec/skr/ia_reason.rb +10 -0
  201. data/spec/skr/inv_line.rb +10 -0
  202. data/spec/skr/inventory_adjustment.rb +10 -0
  203. data/spec/skr/invoice.rb +10 -0
  204. data/spec/skr/location.rb +10 -0
  205. data/spec/skr/models/AddressSpec.coffee +5 -0
  206. data/spec/skr/models/CustomerSpec.coffee +5 -0
  207. data/spec/skr/models/GlAccountSpec.coffee +5 -0
  208. data/spec/skr/models/GlManualEntrySpec.coffee +5 -0
  209. data/spec/skr/models/GlPeriodSpec.coffee +5 -0
  210. data/spec/skr/models/GlPostingSpec.coffee +5 -0
  211. data/spec/skr/models/GlTransactionSpec.coffee +5 -0
  212. data/spec/skr/models/IaLineSpec.coffee +5 -0
  213. data/spec/skr/models/IaReasonSpec.coffee +5 -0
  214. data/spec/skr/models/InvLineSpec.coffee +5 -0
  215. data/spec/skr/models/InventoryAdjustmentSpec.coffee +5 -0
  216. data/spec/skr/models/InvoiceSpec.coffee +5 -0
  217. data/spec/skr/models/LocationSpec.coffee +5 -0
  218. data/spec/skr/models/PaymentTermSpec.coffee +5 -0
  219. data/spec/skr/models/PickTicketSpec.coffee +5 -0
  220. data/spec/skr/models/PoLineSpec.coffee +5 -0
  221. data/spec/skr/models/PoReceiptSpec.coffee +5 -0
  222. data/spec/skr/models/PorLineSpec.coffee +5 -0
  223. data/spec/skr/models/PtLineSpec.coffee +5 -0
  224. data/spec/skr/models/PurchaseOrderSpec.coffee +5 -0
  225. data/spec/skr/models/SalesOrderSpec.coffee +5 -0
  226. data/spec/skr/models/SkuLocSpec.coffee +5 -0
  227. data/spec/skr/models/SkuSpec.coffee +5 -0
  228. data/spec/skr/models/SkuTranSpec.coffee +5 -0
  229. data/spec/skr/models/SkuVendorSpec.coffee +5 -0
  230. data/spec/skr/models/SoLineSpec.coffee +5 -0
  231. data/spec/skr/models/UomSpec.coffee +5 -0
  232. data/spec/skr/models/VendorSpec.coffee +5 -0
  233. data/spec/skr/models/VoLineSpec.coffee +5 -0
  234. data/spec/skr/models/VoucherSpec.coffee +5 -0
  235. data/spec/skr/payment_term.rb +10 -0
  236. data/spec/skr/pick_ticket.rb +10 -0
  237. data/spec/skr/po_line.rb +10 -0
  238. data/spec/skr/po_receipt.rb +10 -0
  239. data/spec/skr/por_line.rb +10 -0
  240. data/spec/skr/pt_line.rb +10 -0
  241. data/spec/skr/purchase_order.rb +10 -0
  242. data/spec/skr/sales_order.rb +10 -0
  243. data/spec/skr/screens/Base.coffee +7 -0
  244. data/spec/skr/screens/CustomerMaint.coffee +7 -0
  245. data/spec/skr/screens/vendor-maint/VendorMaintSpec.coffee +5 -0
  246. data/spec/skr/sku.rb +10 -0
  247. data/spec/skr/sku_loc.rb +10 -0
  248. data/spec/skr/sku_tran.rb +10 -0
  249. data/spec/skr/sku_vendor.rb +10 -0
  250. data/spec/skr/so_line.rb +10 -0
  251. data/spec/skr/spec_helper.rb +26 -0
  252. data/spec/skr/uom.rb +10 -0
  253. data/spec/skr/vendor.rb +10 -0
  254. data/spec/skr/views/AddressSpec.coffee +5 -0
  255. data/spec/skr/vo_line.rb +10 -0
  256. data/spec/skr/voucher.rb +10 -0
  257. data/stockor.gemspec +38 -0
  258. data/tmp/.gitkeep +0 -0
  259. metadata +414 -0
@@ -0,0 +1,23 @@
1
+ require 'skr/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/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/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
@@ -0,0 +1,22 @@
1
+ require 'skr/db/migration_helpers'
2
+
3
+ class CreateSkrVouchers < ActiveRecord::Migration
4
+ def change
5
+
6
+ create_skr_table "vouchers" do |t|
7
+ t.skr_visible_id
8
+
9
+ t.skr_reference :vendor, single: true, null: false
10
+ t.skr_reference :purchase_order, single: true, null: true
11
+
12
+ t.skr_reference :terms, to_table: 'payment_terms'
13
+
14
+ t.string "state", null: false
15
+ t.string "refno"
16
+
17
+ t.date "confirmation_date", null: true # starts out as non-confirmed
18
+ t.skr_track_modifications
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ require 'skr/db/migration_helpers'
2
+
3
+ class CreateSkrVoLines < ActiveRecord::Migration
4
+ def change
5
+ create_skr_table "vo_lines" do |t|
6
+ t.skr_reference :voucher, null: false, single: true
7
+ t.skr_reference :sku_vendor, null: false, single: true
8
+ t.skr_reference :po_line, null: true, single: true
9
+ t.string "sku_code", null: false
10
+ t.string "part_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.skr_currency "price", null: false
17
+ t.skr_track_modifications
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ require 'skr/db/migration_helpers'
2
+
3
+ class CreateSkrPoReceipt < ActiveRecord::Migration
4
+ def change
5
+ create_skr_table "po_receipts" do |t|
6
+ t.skr_visible_id
7
+ t.skr_reference :location, single: true
8
+ t.skr_currency :freight, null: false, default: 0.0
9
+ t.skr_reference :purchase_order, single: true, null: false
10
+ t.skr_reference :vendor, single: true, null: false
11
+ t.skr_reference :voucher, single: true, null: true
12
+ t.string :refno
13
+ t.skr_track_modifications create_only: true
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+ require 'skr/db/migration_helpers'
2
+
3
+ class CreateSkrPorLine < ActiveRecord::Migration
4
+ def change
5
+ create_skr_table "por_lines" do |t|
6
+ t.skr_reference :po_receipt, null: false, to_table: 'po_receipts'
7
+ t.skr_reference :po_line, null: true, single: true
8
+ t.skr_reference :sku_loc, null: false, single: true
9
+ t.skr_reference :sku_vendor, null: true, single: true
10
+ t.string "sku_code", null: false
11
+ t.string "part_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.skr_currency "price", null: false
18
+ t.skr_track_modifications create_only: true
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,42 @@
1
+ require 'skr/db/migration_helpers'
2
+
3
+ class CreateSkrInvDetailsView < ActiveRecord::Migration
4
+
5
+ def up
6
+ execute <<-EOS.squish
7
+ create view #{skr_prefix}inv_details as
8
+ select
9
+ inv.id as invoice_id,
10
+ so.visible_id as sales_order_visible_id,
11
+ pt.id as pick_ticket_id,
12
+ to_char(so.created_at,'YYYY-MM-DD') as string_order_date,
13
+ to_char(inv.created_at,'YYYY-MM-DD') as string_invoice_date,
14
+ cust.code as customer_code, cust.name as customer_name,
15
+ ba.name as bill_addr_name,
16
+ coalesce( ttls.total,0.0 ) as total,
17
+ coalesce( ttls.num_lines, 0 ) as num_lines,
18
+ coalesce( ttls.other_charge_total, 0 ) as total_other_charge_amount,
19
+ coalesce( ttls.total,0.0 ) - coalesce( ttls.other_charge_total, 0.0 ) as subtotal_amount
20
+ from #{skr_prefix}invoices inv
21
+ join #{skr_prefix}customers cust on cust.id = inv.customer_id
22
+ left join #{skr_prefix}addresses ba on ba.id = inv.billing_address_id
23
+ left join #{skr_prefix}sales_orders so on so.id = inv.sales_order_id
24
+ left join #{skr_prefix}pick_tickets pt on pt.id = inv.pick_ticket_id
25
+ left join (
26
+ select
27
+ invoice_id,
28
+ sum(ivl.qty*ivl.price) as total,
29
+ sum( case when s.is_other_charge then ivl.qty*ivl.price else 0 end ) as other_charge_total,
30
+ count(ivl.*) as num_lines
31
+ from #{skr_prefix}inv_lines ivl
32
+ join #{skr_prefix}sku_locs sl on sl.id = ivl.sku_loc_id
33
+ join #{skr_prefix}skus s on s.id = sl.sku_id
34
+ group by invoice_id
35
+ ) ttls on ttls.invoice_id = inv.id
36
+ EOS
37
+ end
38
+
39
+ def down
40
+ execute "drop view #{skr_prefix}inv_details"
41
+ end
42
+ end