stockor 0.1.9 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +254 -72
  4. data/Guardfile +1 -1
  5. data/README.md +24 -3
  6. data/app.json +28 -0
  7. data/client/skr/Extension.coffee +18 -0
  8. data/client/skr/components/BankAccountFinder.cjsx +34 -0
  9. data/client/skr/components/Currency.cjsx +19 -0
  10. data/client/skr/components/CustomerFinder.cjsx +37 -0
  11. data/client/skr/components/CustomerLink.cjsx +13 -0
  12. data/client/skr/components/CustomerProjectFinder.cjsx +49 -0
  13. data/client/skr/components/GlAccountChooser.cjsx +38 -0
  14. data/client/skr/components/InvoiceFinder.cjsx +37 -0
  15. data/client/skr/components/InvoiceLink.cjsx +13 -0
  16. data/client/skr/components/LocationChooser.cjsx +37 -0
  17. data/client/skr/components/PaymentCategoryFinder.cjsx +34 -0
  18. data/client/skr/components/PrintFormChooser.cjsx +29 -0
  19. data/client/skr/components/SalesOrderFinder.cjsx +38 -0
  20. data/client/skr/components/ScreenControls.cjsx +20 -0
  21. data/client/skr/components/SkuFinder.cjsx +30 -0
  22. data/client/skr/components/SkuLines.cjsx +76 -0
  23. data/client/skr/components/SystemSettings.cjsx +26 -0
  24. data/client/skr/components/TermsChooser.cjsx +40 -0
  25. data/client/skr/components/ToolbarButton.cjsx +7 -0
  26. data/client/skr/components/TotalsLine.cjsx +21 -0
  27. data/client/skr/components/TriStateIcon.cjsx +12 -0
  28. data/client/skr/components/UOMChooser.cjsx +24 -0
  29. data/client/skr/components/UserPreferences.cjsx +30 -0
  30. data/client/skr/components/VendorFinder.cjsx +40 -0
  31. data/client/skr/components/address/Address.cjsx +10 -10
  32. data/client/skr/components/styles.scss +16 -0
  33. data/client/skr/index.js +3 -1
  34. data/client/skr/models/Address.coffee +9 -1
  35. data/client/skr/models/BankAccount.coffee +17 -0
  36. data/client/skr/models/Base.coffee +6 -0
  37. data/client/skr/models/Customer.coffee +17 -10
  38. data/client/skr/models/CustomerProject.coffee +29 -0
  39. data/client/skr/models/GlAccount.coffee +22 -10
  40. data/client/skr/models/GlManualEntry.coffee +4 -2
  41. data/client/skr/models/GlPeriod.coffee +4 -6
  42. data/client/skr/models/GlPosting.coffee +7 -7
  43. data/client/skr/models/GlTransaction.coffee +3 -3
  44. data/client/skr/models/IaLine.coffee +9 -9
  45. data/client/skr/models/IaReason.coffee +4 -4
  46. data/client/skr/models/InvLine.coffee +30 -11
  47. data/client/skr/models/InventoryAdjustment.coffee +8 -6
  48. data/client/skr/models/Invoice.coffee +89 -18
  49. data/client/skr/models/Location.coffee +27 -6
  50. data/client/skr/models/Payment.coffee +36 -0
  51. data/client/skr/models/PaymentCategory.coffee +12 -0
  52. data/client/skr/models/PaymentTerm.coffee +17 -4
  53. data/client/skr/models/PickTicket.coffee +7 -5
  54. data/client/skr/models/PoLine.coffee +15 -15
  55. data/client/skr/models/PoReceipt.coffee +8 -6
  56. data/client/skr/models/PorLine.coffee +11 -11
  57. data/client/skr/models/PricingProvider.coffee +6 -0
  58. data/client/skr/models/PtLine.coffee +13 -13
  59. data/client/skr/models/PurchaseOrder.coffee +11 -9
  60. data/client/skr/models/SalesOrder.coffee +59 -22
  61. data/client/skr/models/Sku.coffee +17 -15
  62. data/client/skr/models/SkuLoc.coffee +14 -9
  63. data/client/skr/models/SkuTran.coffee +10 -10
  64. data/client/skr/models/SkuVendor.coffee +9 -9
  65. data/client/skr/models/SoLine.coffee +27 -20
  66. data/client/skr/models/TimeEntry.coffee +75 -0
  67. data/client/skr/models/Uom.coffee +27 -6
  68. data/client/skr/models/Vendor.coffee +14 -12
  69. data/client/skr/models/VoLine.coffee +11 -11
  70. data/client/skr/models/Voucher.coffee +7 -5
  71. data/client/skr/models/mixins/HasVisibleId.coffee +7 -0
  72. data/client/skr/models/mixins/PrintSupport.coffee +6 -0
  73. data/client/skr/models/mixins/SkuLine.coffee +61 -0
  74. data/client/skr/screens/Commands.coffee +29 -0
  75. data/client/skr/screens/bank-maint/BankMaint.cjsx +43 -0
  76. data/client/skr/screens/bank-maint/index.js +5 -0
  77. data/client/skr/screens/chart-of-accounts/ChartOfAccounts.cjsx +40 -0
  78. data/client/skr/screens/chart-of-accounts/index.js +1 -0
  79. data/client/skr/screens/chart-of-accounts/index.scss +12 -0
  80. data/client/skr/screens/customer-maint/CustomerMaint.cjsx +35 -36
  81. data/client/skr/screens/customer-projects/CustomerProjects.cjsx +70 -0
  82. data/client/skr/screens/customer-projects/index.js +5 -0
  83. data/client/skr/screens/customer-projects/index.scss +25 -0
  84. data/client/skr/screens/fresh-books-import/ApiInfo.cjsx +35 -0
  85. data/client/skr/screens/fresh-books-import/ChooseRecords.cjsx +116 -0
  86. data/client/skr/screens/fresh-books-import/FreshBooksImport.cjsx +31 -0
  87. data/client/skr/screens/fresh-books-import/Import.coffee +52 -0
  88. data/client/skr/screens/fresh-books-import/ViewRecords.cjsx +96 -0
  89. data/client/skr/screens/fresh-books-import/index.js +1 -0
  90. data/client/skr/screens/fresh-books-import/index.scss +39 -0
  91. data/client/skr/screens/gl-accounts/GlAccounts.cjsx +31 -0
  92. data/client/skr/screens/gl-accounts/index.js +5 -0
  93. data/client/skr/screens/gl-transactions/GlTransactions.cjsx +46 -0
  94. data/client/skr/screens/gl-transactions/index.js +1 -0
  95. data/client/skr/screens/gl-transactions/index.scss +12 -0
  96. data/client/skr/screens/invoice/Invoice.cjsx +92 -0
  97. data/client/skr/screens/invoice/Payment.cjsx +28 -0
  98. data/client/skr/screens/invoice/index.js +5 -0
  99. data/client/skr/screens/locations/Locations.cjsx +31 -0
  100. data/client/skr/screens/locations/index.js +5 -0
  101. data/client/skr/screens/payment-category/PaymentCategory.cjsx +28 -0
  102. data/client/skr/screens/payment-category/index.js +5 -0
  103. data/client/skr/screens/payment-category/index.scss +9 -0
  104. data/client/skr/screens/payment-terms/PaymentTerms.cjsx +28 -0
  105. data/client/skr/screens/payment-terms/index.js +5 -0
  106. data/client/skr/screens/payment-terms/index.scss +9 -0
  107. data/client/skr/screens/payments/Payments.cjsx +59 -0
  108. data/client/skr/screens/payments/index.js +5 -0
  109. data/client/skr/screens/sales-order/SalesOrder.cjsx +68 -0
  110. data/client/skr/screens/sales-order/index.js +1 -5
  111. data/client/skr/screens/sku-maint/SkuMaint.cjsx +53 -0
  112. data/client/skr/screens/sku-maint/SkuUomList.cjsx +209 -0
  113. data/client/skr/screens/sku-maint/index.js +2 -5
  114. data/client/skr/screens/sku-maint/index.scss +37 -6
  115. data/client/skr/screens/time-invoicing/TimeInvoicing.cjsx +156 -0
  116. data/client/skr/screens/time-invoicing/index.js +5 -0
  117. data/client/skr/screens/time-invoicing/index.scss +7 -0
  118. data/client/skr/screens/time-tracking/EditEntry.cjsx +54 -0
  119. data/client/skr/screens/time-tracking/Entries.coffee +132 -0
  120. data/client/skr/screens/time-tracking/Header.cjsx +71 -0
  121. data/client/skr/screens/time-tracking/Popover.cjsx +70 -0
  122. data/client/skr/screens/time-tracking/PopoverMiniControls.cjsx +25 -0
  123. data/client/skr/screens/time-tracking/TimeTracking.cjsx +63 -0
  124. data/client/skr/screens/time-tracking/WeekSummary.cjsx +16 -0
  125. data/client/skr/screens/time-tracking/index.js +1 -0
  126. data/client/skr/screens/time-tracking/index.scss +126 -0
  127. data/client/skr/screens/vendor-maint/VendorMaint.cjsx +45 -0
  128. data/client/skr/screens/vendor-maint/index.js +1 -5
  129. data/client/skr/styles.scss +1 -13
  130. data/config/puma.rb +4 -0
  131. data/config/routes.rb +21 -9
  132. data/config/screens.rb +147 -32
  133. data/db/migrate/20140202194700_create_skr_gl_transaction_details.rb +35 -0
  134. data/db/migrate/20140220031800_create_skr_locations.rb +2 -0
  135. data/db/migrate/20140220190836_create_skr_vendors.rb +1 -0
  136. data/db/migrate/20140220203029_create_skr_customers.rb +3 -2
  137. data/db/migrate/20140224034759_create_skr_skus.rb +2 -3
  138. data/db/migrate/20140322223912_create_skr_sales_orders.rb +4 -3
  139. data/db/migrate/20140322223920_create_skr_so_lines.rb +4 -5
  140. data/db/migrate/20140323001446_create_so_details_view.rb +7 -5
  141. data/db/migrate/20140327202209_create_skr_pt_lines.rb +2 -2
  142. data/db/migrate/20140327214000_create_customer_project.rb +16 -0
  143. data/db/migrate/20140327223002_create_time_entries.rb +17 -0
  144. data/db/migrate/20140327224000_create_skr_invoices.rb +5 -1
  145. data/db/migrate/20140327224002_create_skr_inv_lines.rb +3 -1
  146. data/db/migrate/20140422024010_create_skr_inv_details_view.rb +1 -1
  147. data/db/migrate/20151121211323_create_customer_project_details_views.rb +31 -0
  148. data/db/migrate/20160216142845_create_gl_account_balances_view.rb +20 -0
  149. data/db/migrate/20160229002044_create_bank_accounts.rb +18 -0
  150. data/db/migrate/20160229041711_create_payments.rb +33 -0
  151. data/db/migrate/20160307022705_create_create_combined_uom_views.rb +18 -0
  152. data/db/schema.sql +639 -140
  153. data/db/seed/chart_of_accounts.yml +8 -6
  154. data/db/seed/payment_categories.yml +12 -0
  155. data/db/seed/skus.yml +32 -0
  156. data/db/seed.rb +21 -0
  157. data/lib/skr/access_roles.rb +19 -6
  158. data/lib/skr/concerns/has_sku_loc_lines.rb +0 -16
  159. data/lib/skr/concerns/inv_extensions.rb +24 -0
  160. data/lib/skr/concerns/is_sku_loc_line.rb +3 -4
  161. data/lib/skr/concerns/so_extensions.rb +8 -0
  162. data/lib/skr/concerns/visible_id_identifier.rb +1 -1
  163. data/lib/skr/db/migration_helpers.rb +2 -4
  164. data/lib/skr/extension.rb +11 -4
  165. data/lib/skr/handlers/fresh_books_import.rb +20 -0
  166. data/lib/skr/handlers/invoice_from_time_entries.rb +49 -0
  167. data/lib/skr/jobs/fresh_books/base.rb +54 -0
  168. data/lib/skr/jobs/fresh_books/import.rb +151 -0
  169. data/lib/skr/jobs/fresh_books/retrieve.rb +62 -0
  170. data/lib/skr/model.rb +5 -0
  171. data/lib/skr/models/address.rb +1 -1
  172. data/lib/skr/models/bank_account.rb +13 -0
  173. data/lib/skr/models/business_entity.rb +3 -0
  174. data/lib/skr/models/customer.rb +1 -1
  175. data/lib/skr/models/customer_project.rb +22 -0
  176. data/lib/skr/models/gl_account.rb +13 -3
  177. data/lib/skr/models/gl_period.rb +6 -0
  178. data/lib/skr/models/gl_posting.rb +7 -4
  179. data/lib/skr/models/gl_transaction.rb +19 -33
  180. data/lib/skr/models/ia_line.rb +1 -1
  181. data/lib/skr/models/inv_line.rb +33 -15
  182. data/lib/skr/models/invoice.rb +47 -20
  183. data/lib/skr/models/location.rb +7 -1
  184. data/lib/skr/models/payment.rb +49 -0
  185. data/lib/skr/models/payment_category.rb +11 -0
  186. data/lib/skr/models/payment_term.rb +1 -1
  187. data/lib/skr/models/por_line.rb +1 -1
  188. data/lib/skr/models/pt_line.rb +1 -1
  189. data/lib/skr/models/sales_order.rb +9 -9
  190. data/lib/skr/models/sku_loc.rb +1 -1
  191. data/lib/skr/models/sku_tran.rb +6 -11
  192. data/lib/skr/models/so_line.rb +22 -12
  193. data/lib/skr/models/time_entry.rb +36 -0
  194. data/lib/skr/models/uom.rb +11 -10
  195. data/lib/skr/models/user_proxy.rb +1 -1
  196. data/lib/skr/number.rb +25 -0
  197. data/lib/skr/print/form.rb +46 -0
  198. data/lib/skr/print/template.rb +48 -0
  199. data/lib/skr/print.rb +11 -0
  200. data/lib/skr/string.rb +11 -0
  201. data/lib/skr/version.rb +1 -1
  202. data/lib/skr.rb +9 -0
  203. data/spec/fixtures/skr/address.yml +164 -4
  204. data/spec/fixtures/skr/bank_account.yml +8 -0
  205. data/spec/fixtures/skr/customer.yml +30 -4
  206. data/spec/fixtures/skr/customer_project.yml +20 -0
  207. data/spec/fixtures/skr/gl_account.yml +19 -1
  208. data/spec/fixtures/skr/gl_period.yml +3 -0
  209. data/spec/fixtures/skr/gl_posting.yml +22 -1
  210. data/spec/fixtures/skr/gl_transaction.yml +4 -1
  211. data/spec/fixtures/skr/inv_line.yml +35 -0
  212. data/spec/fixtures/skr/invoice.yml +13 -2
  213. data/spec/fixtures/skr/location.yml +5 -0
  214. data/spec/fixtures/skr/payment.yml +10 -0
  215. data/spec/fixtures/skr/payment_category.yml +8 -0
  216. data/spec/fixtures/skr/payment_term.yml +37 -3
  217. data/spec/fixtures/skr/sales_order.yml +12 -1
  218. data/spec/fixtures/skr/sku.yml +78 -1
  219. data/spec/fixtures/skr/sku_loc.yml +42 -1
  220. data/spec/fixtures/skr/sku_tran.yml +24 -1
  221. data/spec/fixtures/skr/so_line.yml +32 -0
  222. data/spec/fixtures/skr/time_entry.yml +82 -0
  223. data/spec/fixtures/skr/uom.yml +52 -1
  224. data/spec/fixtures/skr/vendor.yml +28 -1
  225. data/spec/fixtures/stockor.png +0 -0
  226. data/spec/server/bank_account_spec.rb +10 -0
  227. data/spec/server/customer_project_spec.rb +10 -0
  228. data/spec/server/handlers/invoice_from_time_entries_spec.rb +49 -0
  229. data/spec/server/jobs/fresh_books/import_spec.rb +69 -0
  230. data/spec/server/jobs/fresh_books/retrieve_spec.rb +37 -0
  231. data/spec/server/models/address_spec.rb +4 -3
  232. data/spec/server/models/gl_transaction_spec.rb +3 -3
  233. data/spec/server/models/inv_line_spec.rb +83 -3
  234. data/spec/server/models/invoice_spec.rb +32 -3
  235. data/spec/server/models/payment_spec.rb +40 -0
  236. data/spec/server/models/sales_order_spec.rb +1 -1
  237. data/spec/server/models/so_line_spec.rb +3 -3
  238. data/spec/server/models/spec_helper_spec.rb +1 -1
  239. data/spec/server/payment_spec.rb +10 -0
  240. data/spec/server/print/form_spec.rb +47 -0
  241. data/spec/server/print/template_spec.rb +36 -0
  242. data/spec/server/spec_helper.rb +14 -1
  243. data/spec/server/time_entry_spec.rb +10 -0
  244. data/spec/skr/components/SkuLinesSpec.coffee +61 -0
  245. data/spec/skr/models/BankAccountSpec.coffee +5 -0
  246. data/spec/skr/models/CustomerProjectSpec.coffee +5 -0
  247. data/spec/skr/models/CustomerSpec.coffee +2 -2
  248. data/spec/skr/models/PaymentSpec.coffee +5 -0
  249. data/spec/skr/models/SalesOrderSpec.coffee +21 -5
  250. data/spec/skr/models/SoLineSpec.coffee +7 -2
  251. data/spec/skr/models/TimeEntrySpec.coffee +5 -0
  252. data/spec/skr/screens/bank-maint/BankMaintSpec.coffee +5 -0
  253. data/spec/skr/screens/customer-projects/CustomerProjectsSpec.coffee +5 -0
  254. data/spec/skr/screens/fresh-books-import/FreshBooksImportSpec.coffee +1 -0
  255. data/spec/skr/screens/gl-accounts/GlAccountsSpec.coffee +5 -0
  256. data/spec/skr/screens/invoice/InvoiceSpec.coffee +5 -0
  257. data/spec/skr/screens/locations/LocationsSpec.coffee +5 -0
  258. data/spec/skr/screens/payment-category/PaymentCategorySpec.coffee +5 -0
  259. data/spec/skr/screens/payment-terms/PaymentTermsSpec.coffee +5 -0
  260. data/spec/skr/screens/payments/PaymentsSpec.coffee +5 -0
  261. data/spec/skr/screens/time-invoicing/TimeInvoicingSpec.coffee +5 -0
  262. data/spec/skr/screens/time-tracking/TimeTrackingSpec.coffee +14 -0
  263. data/spec/vcr/freshbooks.yml +698 -0
  264. data/stockor.gemspec +5 -1
  265. data/templates/print/fonts/GnuMICR.otf +0 -0
  266. data/templates/print/layout.tex.erb +39 -0
  267. data/templates/print/packages/booktabs.sty +182 -0
  268. data/templates/print/packages/fancybox.sty +966 -0
  269. data/templates/print/packages/fancyhdr.sty +485 -0
  270. data/templates/print/packages/graphbox.sty +129 -0
  271. data/templates/print/packages/lastpage.sty +283 -0
  272. data/templates/print/packages/lastpage209.sty +70 -0
  273. data/templates/print/packages/marginnote.sty +412 -0
  274. data/templates/print/packages/multirow.sty +159 -0
  275. data/templates/print/packages/rotating.sty +282 -0
  276. data/templates/print/packages/tabu.sty +2557 -0
  277. data/templates/print/packages/textpos.sty +361 -0
  278. data/templates/print/packages/varwidth.sty +318 -0
  279. data/templates/print/partials/address.tex.erb +6 -0
  280. data/templates/print/partials/bill_to_ship_to.tex.erb +13 -0
  281. data/templates/print/partials/header.tex.erb +13 -0
  282. data/templates/print/partials/invoice_paid_state.tex.erb +2 -0
  283. data/templates/print/partials/old/inv_lines_grouping.tex.erb +8 -0
  284. data/templates/print/partials/old/labor_lines_footer.tex.erb +18 -0
  285. data/templates/print/partials/skus_table.tex.erb +32 -0
  286. data/templates/print/partials/skus_table_col_hdr.tex.erb +8 -0
  287. data/templates/print/partials/skus_table_footer.tex.erb +5 -0
  288. data/templates/print/partials/skus_table_group_footer.tex.erb +4 -0
  289. data/templates/print/partials/skus_table_invoice_footer.tex.erb +25 -0
  290. data/templates/print/partials/skus_table_invoice_info_line.tex.erb +16 -0
  291. data/templates/print/partials/skus_table_labor_col_hdr.tex.erb +8 -0
  292. data/templates/print/partials/skus_table_labor_group_footer.tex.erb +7 -0
  293. data/templates/print/partials/skus_table_labor_line.tex.erb +11 -0
  294. data/templates/print/partials/skus_table_line.tex.erb +6 -0
  295. data/templates/print/partials/skus_table_other_charge_lines.tex.erb +7 -0
  296. data/templates/print/partials/so_info_line.tex.erb +14 -0
  297. data/templates/print/types/invoice/default.tex.erb +13 -0
  298. data/templates/print/types/invoice/labor.tex.erb +33 -0
  299. data/templates/print/types/payment/default.tex.erb +64 -0
  300. data/templates/print/types/sales-order/default.tex.erb +8 -0
  301. metadata +252 -15
  302. data/client/skr/components/address/address.html +0 -20
  303. data/client/skr/models/mixins/CodeField.coffee +0 -5
  304. data/client/skr/screens/customer-maint/index.scss +0 -11
  305. data/client/skr/screens/customer-maint/layout.html +0 -32
  306. data/client/skr/screens/sales-order/SalesOrder.coffee +0 -30
  307. data/client/skr/screens/sales-order/index.scss +0 -8
  308. data/client/skr/screens/sales-order/layout.html +0 -30
  309. data/client/skr/screens/sku-maint/SkuMaint.coffee +0 -18
  310. data/client/skr/screens/sku-maint/layout.html +0 -16
  311. data/client/skr/screens/vendor-maint/VendorMaint.coffee +0 -28
  312. data/client/skr/screens/vendor-maint/index.scss +0 -8
  313. data/client/skr/screens/vendor-maint/layout.html +0 -32
@@ -0,0 +1,283 @@
1
+ %%
2
+ %% This is file `lastpage.sty',
3
+ %% generated with the docstrip utility.
4
+ %%
5
+ %% The original source files were:
6
+ %%
7
+ %% lastpage.dtx (with options: `package')
8
+ %%
9
+ %% This is a generated file.
10
+ %%
11
+ %% Project: lastpage
12
+ %% Version: 2015/03/29 v1.2m
13
+ %%
14
+ %% Copyright (C) 2010 - 2015 by
15
+ %% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
16
+ %% Portions of code copyrighted by other people as marked.
17
+ %%
18
+ %% The usual disclaimer applies:
19
+ %% If it doesn't work right that's your problem.
20
+ %% (Nevertheless, send an e-mail to the maintainer
21
+ %% when you find an error in this package.)
22
+ %%
23
+ %% This work may be distributed and/or modified under the
24
+ %% conditions of the LaTeX Project Public License, either
25
+ %% version 1.3c of this license or (at your option) any later
26
+ %% version. This version of this license is in
27
+ %% http://www.latex-project.org/lppl/lppl-1-3c.txt
28
+ %% and the latest version of this license is in
29
+ %% http://www.latex-project.org/lppl.txt
30
+ %% and version 1.3c or later is part of all distributions of
31
+ %% LaTeX version 2005/12/01 or later.
32
+ %%
33
+ %% This work has the LPPL maintenance status "maintained".
34
+ %%
35
+ %% The Current Maintainer of this work is H.-Martin Muench.
36
+ %%
37
+ %% This package was invented by
38
+ %% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org).
39
+ %% I thought that a replacement was needed and therefore created the pageslts package,
40
+ %% https://www.ctan.org/pkg/pageslts
41
+ %% . Nevertheless, for compatibility with existing documents/packages as well as for
42
+ %% the low amount of resources needed by the lastpage package (no new counter!),
43
+ %% I updated this package.
44
+ %% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
45
+ %%
46
+ %% This work consists of the main source file lastpage.dtx,
47
+ %% the README, and the derived files
48
+ %% lastpage.sty, lastpage.pdf,
49
+ %% lastpage.ins, lastpage.drv,
50
+ %% lastpage-example.tex, lastpage-example.pdf.
51
+ %%
52
+ %% In memoriam
53
+ %% Claudia Simone Barth + 1996/01/30
54
+ %% Tommy Muench + 2014/01/02
55
+ %% Hans-Klaus Muench + 2014/08/24
56
+ %%
57
+ \NeedsTeXFormat{LaTeX2e}[2014/05/01]
58
+ \ProvidesPackage{lastpage}%
59
+ [2015/03/29 v1.2m Refers to last page's name (HMM; JPG)]%
60
+
61
+ %% lastpage may work with earlier versions of LaTeX,
62
+ %% but this was not tested. Please consider updating
63
+ %% your LaTeX (and packages) to the most recent version
64
+ %% (if it is/they are not already the most recent version).
65
+
66
+ %% Allows for things like
67
+ %% Page \thepage{} of \pageref{LastPage}
68
+ %% to get
69
+ %% 'Page 7 of 9'.
70
+ %% For LaTeX 2.09 use lastpage209.sty.
71
+ %% For LaTeX 2e maybe consider upgrading to the pageslts package.
72
+ %% lastpage may work with earlier versions of LaTeX2e,
73
+ %% but this was not tested. Please consider updating your LaTeX
74
+ %% contribution to the most recent version (if it is not already
75
+ %% the most recent version).
76
+
77
+ %% The recent version of the endfloat package is v2.5d as of 2011/12/25.
78
+ %% The lastpage package is not fully compatible with version 2.0
79
+ %% (and earlier) of the endfloat package, because those versions
80
+ %% redefined the \enddocument command.
81
+
82
+ \def\lastpage@one{1}
83
+ \gdef\lastpage@hyper{0}
84
+ \gdef\lastpage@nameref{0}
85
+ \gdef\lastpage@LTS{0}
86
+ \def\lastpage@firstpage{1}
87
+
88
+ \AtBeginDocument{%
89
+ \@ifpackageloaded{tikz}{\gdef\lastpage@tikz{1}}{}%
90
+ \@ifpackageloaded{hyperref}{\gdef\lastpage@hyper{1}}{}%
91
+ \@ifpackageloaded{nameref}{\gdef\lastpage@nameref{1}}{}%
92
+ \@ifpackageloaded{pageslts}{%
93
+ \PackageWarning{lastpage}{Package pageslts found.\MessageBreak%
94
+ Therefore the lastpage package is no longer\MessageBreak%
95
+ necessary.%
96
+ }%
97
+ \gdef\lastpage@LTS{1}%
98
+ }{\PackageInfo{lastpage}{%
99
+ Please have a look at the pageslts package at\MessageBreak%
100
+ https://www.ctan.org/pkg/pageslts\MessageBreak%
101
+ !}%
102
+ }%
103
+ \@ifpackageloaded{pagesLTS}{%
104
+ \PackageWarning{lastpage}{%
105
+ Outdated pagesLTS package found.\MessageBreak%
106
+ Please replace by a recent version of\MessageBreak%
107
+ pageslts package, see e.g. at\MessageBreak%
108
+ https://www.ctan.org/pkg/pageslts\MessageBreak%
109
+ !\MessageBreak%
110
+ With pagesLTS as well as pageslts package\MessageBreak%
111
+ the lastpage package is no longer necessary.\MessageBreak%
112
+ }%
113
+ \gdef\lastpage@LTS{1}%
114
+ }{}%
115
+ \gdef\lastpage@putlabel{\relax}%
116
+ }
117
+
118
+ \newcommand{\lastpage@putl@bel}{%
119
+ \@ifundefined{Hy@Warning}{% hyperref not loaded
120
+ }{\gdef\lastpage@hyper{1}% hyperref loaded
121
+ }%
122
+ \ifx\lastpage@LTS\lastpage@one%
123
+ \else%
124
+ \ifx\lastpage@hyper\lastpage@one%
125
+ \lastpage@putlabelhyper%
126
+ \else%
127
+ \ifx\lastpage@nameref\lastpage@one%
128
+ \lastpage@putlabelNR%
129
+ \else%
130
+ \begingroup%
131
+ \addtocounter{page}{-1}%
132
+ \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
133
+ \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
134
+ \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
135
+ \addtocounter{page}{+1}%
136
+ \endgroup%
137
+ \fi%
138
+ \fi%
139
+ \fi%
140
+ }
141
+
142
+ \newcommand{\lastpage@putlabelhyper}{%
143
+ \ifHy@pageanchor%
144
+ \else%
145
+ \PackageError{lastpage}{hyperref option pageanchor disabled}{%
146
+ The \string\pageref{LastPage} link doesn't work\MessageBreak%
147
+ using hyperref with disabled option `pageanchor'.\MessageBreak%
148
+ }%
149
+ \fi%
150
+ \begingroup%
151
+ \addtocounter{page}{-1}%
152
+ %% The following code is from the hyperref package %%
153
+ %% [2010/04/17 v6.80x; newer versions are available] %%
154
+ %% by Heiko Oberdiek (Big Thanks!). %%
155
+ \let\@number\@firstofone
156
+ \ifHy@pageanchor
157
+ \ifHy@hypertexnames
158
+ \ifHy@plainpages
159
+ \def\Hy@temp{\arabic{page}}%
160
+ \else
161
+ \Hy@unicodefalse
162
+ %% Code not from hyperref package: %%
163
+ %% The following lines are taken from the pageslts package, %%
164
+ %% which in turn got them from the hyperref package and %%
165
+ %% modified them. %%
166
+ %% Without the modification, after the first shipout "PD1" %%
167
+ %% is inserted each time |\pdfstringdef\Hy@temp{\thepage}| %%
168
+ %% is executed. %%
169
+ \ifnum \value{page}=1%
170
+ \ifx \lastpage@firstpage\lastpage@one
171
+ \def\Hy@temp{\thepage}%
172
+ \gdef\lastpage@firstpage{0}%
173
+ \else%
174
+ %% Code from hyperref package again: %%
175
+ \pdfstringdef\Hy@temp{\thepage}%
176
+ %% End of code from the hyperref package. %%
177
+ \fi%
178
+ %% The pageslts package would even check for fnsymbol page %%
179
+ %% numbering scheme and adapt the code correspondingly. %%
180
+ \else%
181
+ %% Code from hyperref package again: %%
182
+ \pdfstringdef\Hy@temp{\thepage}%
183
+ %% Code from pageslts package again: %%
184
+ \fi%
185
+ %% Code from hyperref package again: %%
186
+ \fi
187
+ \else
188
+ \def\Hy@temp{\the\Hy@pagecounter}%
189
+ \fi
190
+ \fi
191
+ \immediate\write\@auxout{%
192
+ \string\newlabel
193
+ {LastPage}{{}{\thepage}{}{%
194
+ \ifHy@pageanchor page.\Hy@temp\fi}{}}%
195
+ }%
196
+ %% End of code from the hyperref package. %%
197
+ \immediate\write\@auxout{%
198
+ \string\xdef\string\lastpage@lastpage{\thepage}}%
199
+ \ifHy@pageanchor%
200
+ \immediate\write\@auxout{%
201
+ \string\xdef\string\lastpage@lastpageHy{\Hy@temp}}%
202
+ \else%
203
+ \immediate\write\@auxout{%
204
+ \string\gdef\string\lastpage@lastpageHy{}}%
205
+ \fi%
206
+ \addtocounter{page}{+1}%
207
+ \endgroup%
208
+ }
209
+
210
+ \newcommand{\lastpage@putlabelNR}{%
211
+ \begingroup%
212
+ \addtocounter{page}{-1}%
213
+ \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
214
+ \immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
215
+ \immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
216
+ \addtocounter{page}{+1}%
217
+ \endgroup%
218
+ }
219
+
220
+ \newcommand{\lastpage@fileswtest}[2]{%
221
+ \edef\lastpage@testa{#1}%
222
+ \edef\lastpage@testb{#2}%
223
+ \ifx\lastpage@testa\lastpage@testb% OK
224
+ \else%
225
+ \ifx\lastpage@tikz\lastpage@one%
226
+ \PackageWarning{lastpage}%
227
+ {The lastpage package was not allowed to write to an\MessageBreak%
228
+ .aux file. This package does not work without access\MessageBreak%
229
+ to an .aux file.\MessageBreak%
230
+ It is OK if the .aux file was already updated\MessageBreak%
231
+ by a previouse compiler run\MessageBreak%
232
+ and would not have changed anyway.\MessageBreak%
233
+ }%
234
+ \else%
235
+ \PackageError{lastpage}{No auxiliary file allowed}%
236
+ {The lastpage package was not allowed to write to an .aux file.\MessageBreak%
237
+ This package does not work without access to an .aux file.\MessageBreak%
238
+ Press Ctrl+Z to exit.\MessageBreak%
239
+ }%
240
+ \fi%
241
+ \fi%
242
+ }
243
+ \newcommand{\lastpage@fileswtestHy}{%
244
+ \ifHy@pageanchor%
245
+ \lastpage@fileswtest{\Hy@temp}{\lastpage@lastpageHy}%
246
+ \else%
247
+ \lastpage@fileswtest{\empty}{\lastpage@lastpageHy}%
248
+ \fi%
249
+ }
250
+
251
+ \AtEndDocument{%
252
+ \gdef\lastpage@putlabel{\relax}%
253
+ \ifx\lastpage@LTS\lastpage@one%
254
+ \else%
255
+ \@ifundefined{lastpage@lastpage}%
256
+ {\gdef\lastpage@lastpage{LastpagePackageError}%
257
+ % If there really is a page numbered (!) "LastpagePackageError",
258
+ % you will get the rerun warning whether it is necessary or not.
259
+ \PackageWarning{lastpage}{Rerun to get the references right}%
260
+ }{% already defined, nothing to be done.
261
+ }%
262
+ \@ifundefined{lastpage@lastpageHy}%
263
+ {\gdef\lastpage@lastpageHy{LastpagePackageError}%
264
+ }{% already defined, nothing to be done.
265
+ }%
266
+ \fi%
267
+ \if@filesw%
268
+ \message{^^JAED: lastpage setting LastPage^^J}%
269
+ \clearpage\lastpage@putl@bel%
270
+ \else%
271
+ \ifx\lastpage@LTS\lastpage@one%
272
+ \else%
273
+ \lastpage@fileswtest{\thepage}{\lastpage@lastpage}%
274
+ \ifx\lastpage@hyper\lastpage@one%
275
+ \lastpage@fileswtestHy%
276
+ \fi%
277
+ \fi%
278
+ \fi%
279
+ }
280
+
281
+ \endinput
282
+ %%
283
+ %% End of file `lastpage.sty'.
@@ -0,0 +1,70 @@
1
+ %%
2
+ %% This is file `lastpage209.sty',
3
+ %% generated with the docstrip utility.
4
+ %%
5
+ %% The original source files were:
6
+ %%
7
+ %% lastpage.dtx (with options: `lastpage209')
8
+ %%
9
+ %% This is a generated file.
10
+ %%
11
+ %% Project: lastpage
12
+ %% Version: 2015/03/29 v1.2m
13
+ %%
14
+ %% Copyright (C) 2010 - 2015 by
15
+ %% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
16
+ %% Portions of code copyrighted by other people as marked.
17
+ %%
18
+ %% The usual disclaimer applies:
19
+ %% If it doesn't work right that's your problem.
20
+ %% (Nevertheless, send an e-mail to the maintainer
21
+ %% when you find an error in this package.)
22
+ %%
23
+ %% This work may be distributed and/or modified under the
24
+ %% conditions of the LaTeX Project Public License, either
25
+ %% version 1.3c of this license or (at your option) any later
26
+ %% version. This version of this license is in
27
+ %% http://www.latex-project.org/lppl/lppl-1-3c.txt
28
+ %% and the latest version of this license is in
29
+ %% http://www.latex-project.org/lppl.txt
30
+ %% and version 1.3c or later is part of all distributions of
31
+ %% LaTeX version 2005/12/01 or later.
32
+ %%
33
+ %% This work has the LPPL maintenance status "maintained".
34
+ %%
35
+ %% The Current Maintainer of this work is H.-Martin Muench.
36
+ %%
37
+ %% This package was invented by
38
+ %% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org).
39
+ %% I thought that a replacement was needed and therefore created the pageslts package,
40
+ %% https://www.ctan.org/pkg/pageslts
41
+ %% . Nevertheless, for compatibility with existing documents/packages as well as for
42
+ %% the low amount of resources needed by the lastpage package (no new counter!),
43
+ %% I updated this package.
44
+ %% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
45
+ %%
46
+ %% This work consists of the main source file lastpage.dtx,
47
+ %% the README, and the derived files
48
+ %% lastpage.sty, lastpage.pdf,
49
+ %% lastpage.ins, lastpage.drv,
50
+ %% lastpage-example.tex, lastpage-example.pdf.
51
+ %%
52
+ %% In memoriam
53
+ %% Claudia Simone Barth + 1996/01/30
54
+ %% Tommy Muench + 2014/01/02
55
+ %% Hans-Klaus Muench + 2014/08/24
56
+ %%
57
+ % FOR LaTeX 2.09 ONLY - FOR LaTeX 2e USE lastpage.sty OR pageslts.sty!
58
+ % This is lastpage209.sty invented by Jeffrey P. Goldberg
59
+ % (jeffrey+news at goldmark dot org), maintained by
60
+ % H.-Martin M\"{u}ench (Martin dot Muench at Uni-Bonn dot de).
61
+ \let\origenddocument=\enddocument%
62
+ \def\enddocument{\clearpage%
63
+ {\addtocounter{page}{-1}%
64
+ \immediate\write\@mainaux{\string\newlabel{LastPage}{{}{\thepage}}}}%
65
+ \addtocounter{page}{+1}%
66
+ \origenddocument%
67
+ }%
68
+ \endinput
69
+ %%
70
+ %% End of file `lastpage209.sty'.