print_clerk 0.3 → 0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd127ac877c6aedccca3cd97e6c93b132b72908f
4
- data.tar.gz: fcac71cc428a4a017c2a9d7b40907d1ac602509a
3
+ metadata.gz: a817456208ff0bfc79c7844bbe262bce961e72aa
4
+ data.tar.gz: 8e15e1eec039783d9d35696f21ba46e72335fe4e
5
5
  SHA512:
6
- metadata.gz: 8b28e843970f928393219bb707bd0b1236b42be45ca1341a9fb4e65c9c882138ce62856ca388e37a023cfd6a4faf9f570f82f5ae01290110ff2fa38351e6c16e
7
- data.tar.gz: 6972fbd701f3ab16d75816f5d51e0d6aa30a9ac736b089f7772da63b7c7f1aca37f5114cc941db13e96efd1e2ab2154d454a4add3f7bf930a07d6e0f766da341
6
+ metadata.gz: 517f34477fe53141cae866d4a6b82389b4d10822983753adf3c83b63abdc5d129ee6ab5a040cee2d7d88109174c9b87b1139ade118080530eed924af748a07ef
7
+ data.tar.gz: 20e90ed180a8cf0de0bf104bf0690ac3cac9996f30c37ba32388eaf776a6e3f022f7cd66752b5637753f712d9fa89796d58e26472b92957c5de263ed747906e1
data/README.md CHANGED
@@ -1,7 +1,12 @@
1
+ [![Build Status](https://travis-ci.org/rubyclerks/print_clerk.svg?branch=master)](https://travis-ci.org/rubyclerks/print_clerk)
2
+ [![Gem Version](https://badge.fury.io/rb/print_clerk.svg)](http://badge.fury.io/rb/print_clerk)
3
+ [![Code Climate](https://codeclimate.com/github/rubyclerks/print_clerk/badges/gpa.svg)](https://codeclimate.com/github/rubyclerks/print_clerk)
4
+ [![Test Coverage](https://codeclimate.com/github/rubyclerks/print_clerk/badges/coverage.svg)](https://codeclimate.com/github/rubyclerks/print_clerk)
5
+
1
6
  SUMMARY
2
7
  =======
3
8
 
4
- This extension provides a "Print Invoice" button on the Orders view screen which opens a printable html page with the order details.
9
+ This extension provides a "Print Invoice" button on the Orders view screen which opens a printable html page with the order details. Actually sevaral stypes are supported and it is easy to add more or edit existing.
5
10
 
6
11
  You have to set up your computer for printing, or PDF generation. Off course, if you cave a mac that is as easy as pressing the print + save as pdf buttons.
7
12
 
@@ -10,8 +15,8 @@ INSTALLATION
10
15
 
11
16
  1. To install you need to add the following lines to your Gemfile (no external dependencies)
12
17
 
13
- gem 'print_clerk' , :git => 'https://github.com/rubyclerks/print_clerk.git'
14
-
18
+ gem 'print_clerk'
19
+
15
20
  2. run bundler
16
21
 
17
22
  bundle
@@ -26,9 +31,9 @@ Configuration
26
31
 
27
32
  The templates are split into quite small chunks that you can just replace with your own.
28
33
 
29
- Some texts are stored in locale files say print.yml
34
+ Texts are stored in locale files
30
35
 
31
- 1. Set the logo path preference to include your store / company logo.
36
+ 1. Set the logo path preference to include your store / company logo in locales/config.yml
32
37
 
33
38
  invoice_logo_path: "company-logo.png"
34
39
 
@@ -36,12 +41,13 @@ Some texts are stored in locale files say print.yml
36
41
 
37
42
  2. Override any of the partial templates. they are address, footer, totals, header, thanks , and the items. The whole tanks is wrapped in a thanks hook, so replace or add at will.
38
43
 
39
- 4. Enable packaging slips, by setting
44
+ 4. Disable any styles by changing the config.yml to suit
40
45
 
41
- print_buttons: "invoice,slip"
46
+ print_styles: "receipt slip invoice reminder"
42
47
 
43
- Use above feature for your own template if you want. For each button_name, define a subsection with header, print, and thanks, in your locale.
48
+ For each style there will be a button on the order/show page
44
49
 
50
+ 5. Go through the templates and see what you need to change.
45
51
 
46
52
  Extra
47
53
  =====
@@ -0,0 +1,11 @@
1
+ if gon.order_id
2
+ jQuery.ajax(url: "/orders/" + gon.order_id + "/button_list.html").done (html) ->
3
+ $(".order_show_back").append html
4
+
5
+ if gon.product_id
6
+ jQuery.ajax(url: "/products/" + gon.product_id + "/barcode_button.html").done (html) ->
7
+ $(".product_show_row_end").append html
8
+
9
+ if gon.basket_id
10
+ jQuery.ajax(url: "/baskets/" + gon.basket_id + "/button_list.html").done (html) ->
11
+ $(".basket_show_end").append html
@@ -0,0 +1,169 @@
1
+ @page {
2
+ margin-left:8mm;
3
+ margin-right:8mm;
4
+ margin-top:8mm;
5
+ margin-bottom:8mm;
6
+ }
7
+
8
+ .receipt {
9
+ font-family:"Trebuchet MS";
10
+ font-size:32px;
11
+ color:#000000;
12
+ width: 700px;
13
+ }
14
+
15
+
16
+ div#receipt-header {
17
+ text-align: center;
18
+ padding: 6px;
19
+ line-height: 1.3;
20
+ width: 700px;
21
+ }
22
+
23
+ #receipt-header img {
24
+ max-width: 670px;
25
+ }
26
+
27
+ .receipt-shop { font-weight: bold; font-size: 40px; line-height: 1.2;}
28
+ .receipt-info { padding: 6px; font-size: 30px; text-align: center; line-height: 1.3; width: 700px;}
29
+
30
+ .receipt-line_items {
31
+ width: 700px;
32
+ }
33
+
34
+ div.receipt-wrapper {
35
+ width: 700px;
36
+ padding-top: 48px;
37
+ text-align: left;
38
+ }
39
+
40
+ div.receipt-totals {
41
+ margin-bottom: 20px;
42
+ padding: 6px;
43
+ }
44
+
45
+ table.receipt-totals {
46
+ width: 700px;
47
+ }
48
+
49
+
50
+ .receipt-cell.receipt-total {
51
+ text-align: right;
52
+ }
53
+
54
+ .receipt-cel1 {
55
+ width: 200px;
56
+ }
57
+
58
+ .receipt-cel2 {
59
+ width: 80px;
60
+ }
61
+
62
+
63
+ div.receipt-footer {
64
+ width: 700px;
65
+ padding: 6px;
66
+ text-align: center;
67
+ }
68
+
69
+ .receipt-footer .bold {
70
+ width: 100px;
71
+ }
72
+ .receipt-footer .receipt-cell {
73
+ width: 220px;
74
+ }
75
+
76
+ .invoice {
77
+ font-size: 12px; }
78
+
79
+
80
+ .invoice .sender {
81
+ margin-left: 28px;
82
+ margin-bottom: 5px;
83
+ }
84
+
85
+ .invoice img#logo {
86
+ width: 300px; }
87
+
88
+
89
+
90
+
91
+ .invoice .address {
92
+ border-top:1px dotted grey;
93
+ margin-bottom: 10px;
94
+ padding: 6px;
95
+ }
96
+
97
+ .invoice table {
98
+ background: none;
99
+ }
100
+
101
+ .invoice .wrapper {
102
+ min-height: 540px;
103
+ border-top:1px dotted grey;
104
+ padding: 6px;
105
+ margin-top: 20px;
106
+ padding-top: 20px;
107
+ }
108
+
109
+ .invoice .items td {
110
+ padding-right: 15px;
111
+ }
112
+
113
+ .invoice .items .sku {
114
+ width: 120px;
115
+ }
116
+ .invoice .items .desc {
117
+ width: 330px;
118
+ }
119
+ .invoice .items .price, .total {
120
+ width: 100px;
121
+ }
122
+ .invoice .items .qty {
123
+ width: 60px;
124
+ }
125
+
126
+
127
+ .invoice .totals {
128
+ margin-bottom: 20px;
129
+ float: right;
130
+ margin-right: 15px;
131
+
132
+ }
133
+
134
+ .invoice .totals .cel1 {
135
+ width: 100px;
136
+ }
137
+ .invoice .totals .cel2 {
138
+ width: 130px;
139
+ }
140
+
141
+ .invoice .thanks {
142
+ margin-top: 20px;
143
+ margin-bottom: 20px;
144
+ }
145
+
146
+ .invoice .footer {
147
+ border-top:1px dotted grey;
148
+ padding-top: 8px;
149
+ font-size: 11px;
150
+ .col-xs-4 { padding-left: 0px; }
151
+ }
152
+
153
+ .invoice .footer .bold {
154
+ width: 100px;
155
+ }
156
+
157
+ .invoice .title { font-weight: bold; color: #FF9933; font-size: 18px; }
158
+ .invoice .bold { font-weight: bold; }
159
+
160
+
161
+
162
+ @media screen {
163
+ .invoice {max-width: 690px;}
164
+
165
+
166
+ }
167
+
168
+
169
+
@@ -0,0 +1,7 @@
1
+ # encoding : utf-8
2
+ BasketsController.class_eval do
3
+ def button_list
4
+ load_basket
5
+ render :layout => false
6
+ end
7
+ end
@@ -1,30 +1,35 @@
1
1
  # encoding : utf-8
2
2
  OrdersController.class_eval do
3
3
 
4
- def invoice
4
+ def button_list
5
5
  load_order
6
- @invoice = true
7
- @template = "invoice"
8
6
  render :layout => false
9
7
  end
10
8
 
11
9
  def receipt
12
10
  load_order
13
- render :layout => false
14
11
  end
15
-
12
+
13
+ def invoice
14
+ load_order
15
+ @invoice = true
16
+ @template = "invoice"
17
+ end
18
+
19
+ # slip is an invoice without prices
16
20
  def slip
17
21
  load_order
18
22
  @slip = true
19
- @template = "slip"
20
- render "invoice" , :layout => false
23
+ @template = "invoice"
24
+ render @template
21
25
  end
22
26
 
27
+ # reminder is an invoice with an extra text to kindly pay up
23
28
  def reminder
24
29
  load_order
25
30
  @reminder = true
26
- @template = "reminder"
27
- render "invoice" , :layout => false
31
+ @template = "invoice"
32
+ render @template
28
33
  end
29
34
 
30
35
  end
@@ -0,0 +1,44 @@
1
+ # coding: UTF-8
2
+ require 'barby'
3
+ require 'prawn'
4
+ require 'prawn/measurement_extensions'
5
+ require 'barby/barcode/code_128'
6
+ require 'barby/barcode/ean_13'
7
+ require 'barby/outputter/png_outputter'
8
+
9
+ ProductsController.class_eval do
10
+ # loads of ways to create barcodes nowadays, this is a bit older.
11
+ # Used to be html but moved to pdf for better layout control
12
+ def barcode
13
+ load_product
14
+ code = @product.ean
15
+ code = @product.name if code.blank?
16
+ if code.length == 12
17
+ aBarcode = ::Barby::EAN13.new( code )
18
+ else
19
+ aBarcode = ::Barby::Code128B.new( code )
20
+ end
21
+ pdf = create_pdf
22
+ pdf.image( StringIO.new( aBarcode.to_png(:xdim => 5)) , :width => 50.mm ,
23
+ :height => 10.mm , :at => [ 0 , 10.mm])
24
+ send_data pdf.render , :type => "application/pdf" , :filename => "#{@product.full_name}.pdf"
25
+ end
26
+
27
+ def barcode_button
28
+ load_product
29
+ if @product.line?
30
+ render :nothing => true
31
+ else
32
+ render :layout => false
33
+ end
34
+ end
35
+ private
36
+
37
+ def create_pdf
38
+ pdf = Prawn::Document.new( :page_size => [ 54.mm , 25.mm ] , :margin => 2.mm )
39
+ pdf.text( @product.full_name , :align => :left )
40
+ pdf.text( "#{@product.price} € " , :align => :right , :padding => 5.mm)
41
+ pdf
42
+ end
43
+
44
+ end
@@ -0,0 +1,8 @@
1
+ OrdersHelper.module_eval do
2
+ def print_styles
3
+ OfficeClerk.config(:print_styles).split
4
+ end
5
+ def print_path style
6
+ eval("office.#{style}_order_path(@order)")
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ = link_to t(:print_order), receipt_order_path(@basket.kori) , :target => "_blank" , :class => "btn btn-primary print_order" if @basket.isa(:order)
@@ -1,14 +1,14 @@
1
- - addresses = [ @order.name , @order.street, @order.city , @order.phone ]
1
+ .row.address
2
+ - addresses = [ @order.name , @order.street, @order.city , @order.phone ]
2
3
 
3
- %table.address
4
- %tr
5
- %td.billing_header.bold{:width => "45%"}= I18n.t(:address)
6
- %td{:width => "17%"}
7
- %td.shiping_header.bold{:width => "45%"}
8
- - addresses.each do |row|
4
+ %table
9
5
  %tr
10
- %td.cell{:height => "15px", :width => "45%"}
11
- = row
12
6
  %td{:width => "17%"}
13
- %td.cell{:height => "15px", :width => "45%"}
14
- = " "
7
+ %td.shipping_header.bold{:width => "45%"}
8
+ - addresses.each do |row|
9
+ %tr
10
+ %td.cell{:height => "15px", :width => "45%"}
11
+ = row
12
+ %td{:width => "17%"}
13
+ %td.cell{:height => "15px", :width => "45%"}
14
+ = " "
@@ -1,7 +1,12 @@
1
- %table.footer
2
- %tr
3
- %td.cel1.bold{:valign => "top"}= raw I18n.t(:footer_left)
4
- %td.cel2.cell{:valign => "top"}= raw I18n.t(:footer_left2)
5
- %td.cel3.bold{:valign => "top"}
6
- = raw I18n.t(:footer_right)
7
- %td.cel4.cell{:valign => "top"}= raw I18n.t(:footer_right2)
1
+ .row.footer
2
+ .col-xs-4
3
+ %b= raw I18n.t(:footer_left)
4
+ %br
5
+ = raw I18n.t(:footer_left2)
6
+
7
+ .col-xs-4
8
+ = raw I18n.t(:footer_center)
9
+
10
+ .col-xs-4
11
+ = raw I18n.t(:footer_right)
12
+
@@ -1,9 +1,11 @@
1
- %table
2
- %tr
3
- %td{:width => "345"}= image_tag t(:invoice_logo_path) , :id => "logo"
4
- %td{:width => "345"}
5
- %div{:align => "right"}
6
- %p.title= I18n.t("#{@template}.header")
7
- %p.bold= I18n.t(:order_number).to_s + " " + @order.number
8
- %p.bold
9
- = I18n.l(@order.ordered_on.to_date) if @order.ordered_on
1
+ .row.header
2
+ .col-xs-6
3
+ = image_tag "kauppa/invoice-logo.gif", :id => "logo"
4
+ .sender
5
+ = raw I18n.t(:kauppa_osoite)
6
+ %br
7
+ .col-xs-6.text-right
8
+ %p.title= I18n.t("#{@template}.header")
9
+ %b= I18n.t(:order_number).to_s + " " + @order.number
10
+  / 
11
+ = I18n.l(@order.ordered_on.to_date) if @order.ordered_on
@@ -1,17 +1,11 @@
1
1
  %table.items
2
- %colgroup
3
- %col/
4
- %col/
5
- %col.price/
6
- %col.qty/
7
- %col.total/
8
2
  %tr
9
3
  %td.sku.bold= t(:ean) unless @receipt
10
4
  %td.desc.bold= t(:description)
11
- %td.price.bold= t(:price) unless @receipt
12
- %td.qty.bold
5
+ %td.price.bold.text-right= t(:price) unless @receipt
6
+ %td.qty.bold.text-right
13
7
  = t(:qty)
14
- %td.total.bold= t(:total)
8
+ %td.total.bold.text-right= t(:total)
15
9
  - @order.basket.items.each do |item|
16
10
  %tr
17
11
  %td.cell= item.product.ean unless @receipt
@@ -19,6 +13,6 @@
19
13
  = item.product.fullname rescue item.product.name
20
14
  - if item.discount > 0
21
15
  (#{-item.discount}%)
22
- %td.cell.price= number_to_currency(item.price) unless @receipt
23
- %td.cell.qty= item.quantity
24
- %td.cell.total= number_to_currency(item.price * item.quantity)
16
+ %td.cell.price.text-right= number_to_currency(item.price) unless @receipt
17
+ %td.cell.qty.text-right= item.quantity
18
+ %td.cell.total.text-right= number_to_currency(item.price * item.quantity)
@@ -1,18 +1,7 @@
1
1
  - base = @order.number[1 .. -1]
2
2
  - viite = open("http://www1.nordea.fi/P636V/H636VTXT.asp?action=tekstiLista&lkm=1&alkuViite=#{base}&L=1").read[/\d+ \d+/]
3
3
  - unless @slip
4
- %table
5
- %tr
6
- %td{:colspan => "2"}
7
- \ 
8
- %tr
9
- %td{:colspan => "2"}
10
- Maksaessasi käytä viitenumeroa: #{viite}
11
- %table.thanks_table
12
- %tr
13
- %td.cell{:cellspan => "2"}
14
- %td.cell  
15
- %tr
16
- %td.thanks.cell{:cellspan => "2"}
17
- = raw t("#{@template}.thanks" )
18
- %td.cell  
4
+ Maksaessasi käytä viitenumeroa: #{viite}
5
+ %br
6
+ %b
7
+ = raw t("#{@template}.thanks" )
@@ -3,7 +3,7 @@
3
3
  %td.cel1.bold
4
4
  = t(:item_total)
5
5
  \:
6
- %td.cel2.bold.cell{:align => "right"}= number_to_currency @order.total_price
6
+ %td.cel2.bold{:align => "right"}= number_to_currency @order.total_price
7
7
  - @order.taxes.each do |tax , value|
8
8
  %tr
9
9
  %td.cel1.bold
@@ -4,3 +4,5 @@ www.auringostaitaan.fi
4
4
  info@www.auringostaitaan.fi
5
5
  %br/
6
6
  puh 09- 621 7001
7
+ .receipt-info
8
+ Lightning Raisa & Torsten Oy | Y-tunnus 2380478-1
@@ -1,9 +1,9 @@
1
- = image_tag "receipt-logo.gif"
1
+ = image_tag "receipt-logo.gif" , :width => 700
2
2
  %br/
3
3
  %br/
4
- .shop
4
+ .receipt-shop
5
5
  Auringosta Itään, Kuusta Länteen
6
- .info
6
+ .receipt-info
7
7
  Fredrikinkatu 19 (Viiskulma)
8
8
  %br/
9
9
  00120 Helsinki
@@ -0,0 +1,2 @@
1
+ - print_styles.each do |style|
2
+ = link_to t("#{style}.header") , print_path(style), :class => "btn btn-primary"
@@ -1,23 +1,20 @@
1
- !!!
2
- %html{:xmlns => "http://www.w3.org/1999/xhtml"}
3
- %head
4
- %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}
5
- = stylesheet_link_tag "print-invoice.css" , :media => "all"
6
- %title= t("#{@template}.header")
7
- %body
8
- .a4
9
- #header
10
- = render :partial => "orders/invoice_header"
11
- .address
12
- = render :partial => "orders/invoice_address"
13
- .wrapper
14
- .items
15
- = render :partial => "orders/#{@template}_items"
16
- .thanks
17
- = render :partial => "orders/invoice_thanks"
18
- .spacer
19
- \ 
20
- .totals
21
- = render :partial => "orders/invoice_totals" unless @slip
22
- .footer
23
- = render :partial => "orders/invoice_footer"
1
+ .invoice
2
+ = render :partial => "orders/invoice_header"
3
+
4
+
5
+ = render :partial => "orders/invoice_address"
6
+
7
+
8
+ .row.wrapper
9
+ .items
10
+ = render :partial => "orders/#{@template}_items"
11
+ .spacer
12
+ \ 
13
+ .row
14
+ .totals
15
+ = render :partial => "orders/invoice_totals" unless @slip
16
+ .thanks
17
+ = render :partial => "orders/invoice_thanks"
18
+
19
+ = render :partial => "orders/invoice_footer"
20
+
@@ -1,52 +1,45 @@
1
- !!!
2
- %html
3
- %head
4
- %meta{:charset => "utf-8"}
5
- %title= t("receipt.header")
6
- = stylesheet_link_tag "print-receipt", :media => "all"
7
- %body{onload: "self.print()"}
8
- .receipt
9
- #header
10
- = render :partial => "orders/receipt_header"
11
- .info
12
- - date = @order.ordered_on || @order.ordered_on
13
- =l(date.to_date)
14
- /
15
- =t(:order)
16
- =@order.number
17
- %br/
18
- .wrapper
19
- .line_items
20
- %table.line_items
21
- %thead
22
- %tr
23
- %th Tuote
24
- %th Määrä
25
- %th Loppusumma
26
- %tbody
27
- - @order.basket.items.each do |i|
28
- %tr
29
- %td.cell= i.product.full_name
30
- %td.cell.qty= i.quantity
31
- %td.cell.total= euros i.total
32
- .spacer
33
-  
34
- .totals
35
- %table.totals
36
- %tbody
37
- %tr
38
- %td.cel1.bold
39
- %strong= t(:order_total)
40
- %td.cel2.cell{align: "right"}
41
- %strong
42
- %span#summary-order-total= euros @order.total_price
43
- %tr
44
- %td.cel1
45
- %td.cel2
46
- -@order.taxes.each do |tax_rate , amount|
47
- %tr.total
48
- %td.cel1.bold
49
- = t(:vat) + " " + tax_rate.to_s + " % "
50
- %td.cel2.cell{align: "right"}= euros amount
51
- .footer
52
- = render :partial => "orders/receipt_footer"
1
+ .receipt
2
+ #receipt-header
3
+ = render :partial => "orders/receipt_header"
4
+ .receipt-info
5
+ - date = @order.ordered_on || @order.ordered_on
6
+ =l(date.to_date)
7
+ /
8
+ =t(:order)
9
+ =@order.number
10
+ %br/
11
+ .receipt-wrapper
12
+ .receipt-line_items
13
+ %table.receipt-line_items
14
+ %thead
15
+ %tr
16
+ %th Tuote
17
+ %th Määrä
18
+ %th Loppusumma
19
+ %tbody
20
+ - @order.basket.items.each do |i|
21
+ %tr
22
+ %td.receipt-cell= i.product.full_name
23
+ %td.receipt-cell.receipt-qty= i.quantity
24
+ %td.receipt-cell.receipt-total= euros i.total
25
+ .spacer
26
+  
27
+ .receipt-totals
28
+ %table.receipt-totals
29
+ %tbody
30
+ %tr
31
+ %td.receipt-cel1.bold
32
+ %strong= t(:order_total)
33
+ %td.receipt-cel2.cell{align: "right"}
34
+ %strong
35
+ %span#receipt-summary-order-total= euros @order.total_price
36
+ %tr
37
+ %td.receipt-cel1
38
+ %td.receipt-cel2
39
+ -@order.taxes.each do |tax_rate , amount|
40
+ %tr.receipt-total
41
+ %td.receipt-cel1.bold
42
+ = t(:vat) + " " + tax_rate.to_s + " % "
43
+ %td.receipt-cel2.receipt-cell{align: "right"}= euros amount
44
+ .receipt-footer
45
+ = render :partial => "orders/receipt_footer"
@@ -0,0 +1,2 @@
1
+ .col-md-2
2
+ = link_to t(:barcode) , barcode_product_path( @product), :class => "btn btn-primary"
data/config/routes.rb CHANGED
@@ -1,10 +1,22 @@
1
1
  OfficeClerk::Engine.routes.append do
2
2
  resources :orders do
3
3
  member do
4
+ get :button_list
4
5
  get :invoice
5
6
  get :receipt
6
7
  get :slip
7
8
  get :reminder
8
9
  end
9
10
  end
11
+ resources :baskets do
12
+ member do
13
+ get :button_list
14
+ end
15
+ end
16
+ resources :products do
17
+ member do
18
+ get :barcode #print the barcode and price on a 50x25 mm area
19
+ get :barcode_button
20
+ end
21
+ end
10
22
  end
data/lib/print_clerk.rb CHANGED
@@ -2,23 +2,28 @@ module PrintClerk
2
2
  class Engine < Rails::Engine
3
3
  engine_name 'print_clerk'
4
4
 
5
+ # indicate that we have stylesheet/js stuff to be added to office, with the given name
6
+ # files (css + js) must exist in asset path
7
+ def office_assets
8
+ "print_office"
9
+ end
10
+
5
11
  config.autoload_paths += %W(#{config.root}/lib)
6
12
 
7
13
  initializer "print_invoice.assets.precompile", :after => "clerk.assets.precompile" do |app|
8
- app.config.assets.precompile += [ "print-invoice.css", "print-receipt.css" ]
14
+ app.config.assets.precompile += [ "print_office.js" , "print_office.css"]
9
15
  end
10
16
 
11
17
  def self.activate
12
18
  Dir.glob(File.join(File.dirname(__FILE__), '../app/**/*_decorator.rb')) do |c|
13
19
  Rails.configuration.cache_classes ? require(c) : load(c)
14
20
  end
15
-
16
- Dir.glob(File.join(File.dirname(__FILE__), '../app/overrides/*.rb')) do |c|
17
- Rails.configuration.cache_classes ? require(c) : load(c)
18
- end
19
21
  end
20
22
 
21
23
  config.to_prepare &method(:activate).to_proc
22
24
  end
23
25
  end
24
26
 
27
+ require "prawn"
28
+ require "barby"
29
+ require "chunky_png"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: print_clerk
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Torsten Ruger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-17 00:00:00.000000000 Z
11
+ date: 2014-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: office_clerk
@@ -16,16 +16,61 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
19
+ version: '0.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.1'
27
- description:
28
- email:
26
+ version: '0.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: barby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: chunky_png
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: prawn
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ description: Html based, ie client side, printing for orders. Different styles are
70
+ invoice, packing slip and receipt (for receipt printer in shop). Easy to configure
71
+ and adapt
72
+ email:
73
+ - torsten@villataika.fi
29
74
  executables: []
30
75
  extensions: []
31
76
  extra_rdoc_files: []
@@ -33,10 +78,14 @@ files:
33
78
  - README.md
34
79
  - app/assets/images/invoice_logo.jpg
35
80
  - app/assets/images/receipt-logo.gif
36
- - app/assets/stylesheets/print-invoice.css
37
- - app/assets/stylesheets/print-receipt.css.scss
81
+ - app/assets/javascripts/print_office.js.coffee
82
+ - app/assets/stylesheets/print_office.css
83
+ - app/controllers/baskets_controller_decorator.rb
38
84
  - app/controllers/orders_decorator.rb
85
+ - app/controllers/product_controller_decorator.rb
86
+ - app/helpers/orders_helper_decorator.rb
39
87
  - app/overrides/add_html_invoice_buttons.rb
88
+ - app/views/baskets/button_list.haml
40
89
  - app/views/orders/_html_buttons.haml
41
90
  - app/views/orders/_invoice_address.haml
42
91
  - app/views/orders/_invoice_footer.haml
@@ -48,12 +97,15 @@ files:
48
97
  - app/views/orders/_receipt_header.haml
49
98
  - app/views/orders/_reminder_items.haml
50
99
  - app/views/orders/_slip_items.haml
100
+ - app/views/orders/button_list.haml
51
101
  - app/views/orders/invoice.haml
52
102
  - app/views/orders/receipt.haml
103
+ - app/views/products/barcode_button.haml
53
104
  - config/routes.rb
54
105
  - lib/print_clerk.rb
55
- homepage:
56
- licenses: []
106
+ homepage: https://github.com/rubyclerks/print_clerk
107
+ licenses:
108
+ - MIT
57
109
  metadata: {}
58
110
  post_install_message:
59
111
  rdoc_options: []
@@ -75,5 +127,5 @@ rubyforge_project:
75
127
  rubygems_version: 2.2.2
76
128
  signing_key:
77
129
  specification_version: 4
78
- summary: Print invoices from an order
130
+ summary: Print invoices for a rubyclerk order
79
131
  test_files: []
@@ -1,140 +0,0 @@
1
- div.a4 {
2
- width: 620px;
3
- font-size: 12px;
4
- font-family: helvetica, verdana, serif;
5
-
6
- }
7
-
8
- img#logo {
9
- width: 280px;
10
- padding-bottom: 12px;
11
- }
12
-
13
- div.header {
14
- width: 620px;
15
- height: 100px;
16
- }
17
-
18
- div.address {
19
- width: 620px;
20
- border-top:1px solid grey;
21
- margin-bottom: 10px;
22
- padding: 6px;
23
-
24
- }
25
- .items {
26
- width: 620px;
27
- }
28
-
29
- .items .price, .items .total {
30
- text-align: right;
31
- }
32
-
33
- .items .qty {
34
- text-align: center;
35
- }
36
-
37
- div.wrapper {
38
- width: 620px;
39
- height: 540px;
40
- border-top:1px solid grey;
41
- padding: 6px;
42
-
43
- }
44
-
45
- div.thanks {
46
- width: 620px;
47
- margin-top: 20px;
48
- margin-bottom: 20px;
49
- line-height: 10px;
50
- }
51
- div.spacer {
52
- width: 620px;
53
- }
54
- div.totals {
55
- height: 100px;
56
- margin-bottom: 20px;
57
- float: right;
58
- }
59
-
60
- .totals .cell {
61
- width: 130px;
62
- }
63
-
64
- div.footer {
65
- width: 620px;
66
- border-top:1px solid grey;
67
- padding: 6px;
68
- }
69
-
70
- .footer .bold {
71
- width: 100px;
72
- }
73
- .footer .cell {
74
- width: 220px;
75
- }
76
-
77
-
78
- .title { font-weight: bold; color: #FF9933; font-size: 18px; }
79
- .bold { font-weight: bold; }
80
- .price { width: 80px ; }
81
-
82
- table.address{
83
- width: 620px;
84
- }
85
- table.index th {
86
- background: #cdcdcd top left repeat-x;
87
- padding: 7px 10px;
88
- border-left: 1px solid #ddd;
89
- border-top: 1px solid #ddd;
90
- border-right: 1px solid #aaa;
91
- border-bottom: 1px solid #aaa;
92
- text-shadow: #efefef 1px 1px 0px; }
93
- table.index th .right {
94
- float:right;
95
- font-weight:normal;
96
- }
97
- table.index th.id-col {
98
- text-align: center; }
99
- table.index td {
100
- border-bottom:1px solid #ddd;
101
- padding: 3px 10px;
102
- }
103
- table.index td.lbl-col {
104
- width: 12%; }
105
- table.index td.val-col {
106
- width: 38%; }
107
- table.index tr.alt td {
108
- background-color: #efefef; }
109
- table.index.green th {
110
- background: #cfefa7 top left repeat-x;
111
- border-left: 1px solid #E4FDB4;
112
- border-top: 1px solid #E4FDB4;
113
- border-right: 1px solid #B7CB90;
114
- border-bottom: 1px solid #B7CB90; }
115
- table.index.green td {
116
- background-color: #efe; }
117
- table.index.order-summary {
118
- clear: both; }
119
- table.index.order-summary tr.totals th {
120
- background: transparent;
121
- text-align: right;
122
- border: none; }
123
- table.index td.actions {text-align:right;}
124
-
125
- table.footer td{
126
- line-height: 16px;
127
- padding-bottom: 3px;
128
- }
129
-
130
-
131
- div.cod {
132
- float: left;
133
- background: black;
134
- color: white;
135
- font-size: 16px;
136
- padding: 5px;
137
- font-weight: bold;
138
- }
139
-
140
-
@@ -1,77 +0,0 @@
1
- @page {
2
- margin-left:8mm;
3
- margin-right:8mm;
4
- margin-top:8mm;
5
- margin-bottom:8mm;
6
- }
7
-
8
- body {
9
- font-family:"Trebuchet MS";
10
- font-size:32px;
11
- color:#000000;
12
- width: 700px;
13
- }
14
-
15
-
16
- div#header {
17
- text-align: center;
18
- padding: 6px;
19
- line-height: 1.3;
20
- width: 700px;
21
- }
22
-
23
- #header img {
24
- max-width: 670px;
25
- }
26
-
27
- .shop { font-weight: bold; font-size: 40px; line-height: 1.2;}
28
- .info { padding: 6px; font-size: 30px; text-align: center; line-height: 1.3; width: 700px;}
29
-
30
- .line_items {
31
- width: 700px;
32
- }
33
-
34
- div.wrapper {
35
- width: 700px;
36
- padding-top: 48px;
37
- text-align: left;
38
- }
39
-
40
- div.totals {
41
- margin-bottom: 20px;
42
- padding: 6px;
43
- }
44
-
45
- table.totals {
46
- width: 700px;
47
- }
48
-
49
-
50
- .cell.total {
51
- text-align: right;
52
- }
53
-
54
- .cel1 {
55
- width: 200px;
56
- }
57
-
58
- .cel2 {
59
- width: 80px;
60
- }
61
-
62
-
63
- div.footer {
64
- width: 700px;
65
- padding: 6px;
66
- text-align: center;
67
- }
68
-
69
- .footer .bold {
70
- width: 100px;
71
- }
72
- .footer .cell {
73
- width: 220px;
74
- }
75
-
76
-
77
-