print_clerk 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.
- checksums.yaml +7 -0
- data/README.md +53 -0
- data/app/assets/images/invoice_logo.jpg +0 -0
- data/app/assets/images/receipt-logo.gif +0 -0
- data/app/assets/stylesheets/print-invoice.css +140 -0
- data/app/assets/stylesheets/print-receipt.css.scss +77 -0
- data/app/controllers/orders_decorator.rb +30 -0
- data/app/overrides/add_html_invoice_buttons.rb +5 -0
- data/app/views/orders/_html_buttons.haml +4 -0
- data/app/views/orders/_invoice_address.haml +14 -0
- data/app/views/orders/_invoice_footer.haml +7 -0
- data/app/views/orders/_invoice_header.haml +9 -0
- data/app/views/orders/_invoice_items.haml +24 -0
- data/app/views/orders/_invoice_thanks.haml +18 -0
- data/app/views/orders/_invoice_totals.haml +18 -0
- data/app/views/orders/_receipt_footer.haml +6 -0
- data/app/views/orders/_receipt_header.haml +9 -0
- data/app/views/orders/_reminder_items.haml +1 -0
- data/app/views/orders/_slip_items.haml +14 -0
- data/app/views/orders/invoice.haml +23 -0
- data/app/views/orders/receipt.haml +52 -0
- data/config/routes.rb +10 -0
- data/lib/print_clerk.rb +24 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ad9e7cf0f17dc36d825fc99fb43f8b53f163859f
|
4
|
+
data.tar.gz: d87357b5910bfb54c2f71aa5d9bfe092c0dda932
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c16b6dc8eb4715495c92b396e148fb67ae08f96a66fbf0bd93e50447c7ae8e83b4b8f6229f963280359b1887ad0d47661a93dca2efec08c4c289f4f03560a1ed
|
7
|
+
data.tar.gz: 14361cc2604235ad331f50a04d62534537c57cf8941ca3d3fa8a7ec2a19b98ff7d324148b2657c7572c7f78c2f1b435d200e162c3199b36d37e567cc7075f066
|
data/README.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
SUMMARY
|
2
|
+
=======
|
3
|
+
|
4
|
+
This extension provides a "Print Invoice" button on the Orders view screen which opens a printable html page with the order details.
|
5
|
+
|
6
|
+
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
|
+
|
8
|
+
INSTALLATION
|
9
|
+
============
|
10
|
+
|
11
|
+
1. To install you need to add the following lines to your Gemfile (no external dependencies)
|
12
|
+
|
13
|
+
gem 'print_clerk' , :git => 'https://github.com/rubyclerks/print_clerk.git'
|
14
|
+
|
15
|
+
2. run bundler
|
16
|
+
|
17
|
+
bundle
|
18
|
+
|
19
|
+
3. Configure your logo and footer text or more. It's easy as it's html.
|
20
|
+
|
21
|
+
4. Enjoy!
|
22
|
+
|
23
|
+
|
24
|
+
Configuration
|
25
|
+
==============
|
26
|
+
|
27
|
+
The templates are split into quite small chunks that you can just replace with your own.
|
28
|
+
|
29
|
+
Some texts are stored in locale files say print.yml
|
30
|
+
|
31
|
+
1. Set the logo path preference to include your store / company logo.
|
32
|
+
|
33
|
+
invoice_logo_path: "company-logo.png"
|
34
|
+
|
35
|
+
Somewhere in your asset path
|
36
|
+
|
37
|
+
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
|
+
|
39
|
+
4. Enable packaging slips, by setting
|
40
|
+
|
41
|
+
print_buttons: "invoice,slip"
|
42
|
+
|
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.
|
44
|
+
|
45
|
+
|
46
|
+
Extra
|
47
|
+
=====
|
48
|
+
|
49
|
+
There is now a receipt template, for a normal receipt printer (ie 70mm). This works for us, but what about you?
|
50
|
+
|
51
|
+
Contributions welcome
|
52
|
+
|
53
|
+
Torsten
|
Binary file
|
Binary file
|
@@ -0,0 +1,140 @@
|
|
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
|
+
|
@@ -0,0 +1,77 @@
|
|
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
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
OrdersController.class_eval do
|
3
|
+
|
4
|
+
def invoice
|
5
|
+
load_order
|
6
|
+
@invoice = true
|
7
|
+
@template = "invoice"
|
8
|
+
render :layout => false
|
9
|
+
end
|
10
|
+
|
11
|
+
def receipt
|
12
|
+
load_order
|
13
|
+
render :layout => false
|
14
|
+
end
|
15
|
+
|
16
|
+
def slip
|
17
|
+
load_order
|
18
|
+
@slip = true
|
19
|
+
@template = "slip"
|
20
|
+
render "invoice" , :layout => false
|
21
|
+
end
|
22
|
+
|
23
|
+
def reminder
|
24
|
+
load_order
|
25
|
+
@reminder = true
|
26
|
+
@template = "reminder"
|
27
|
+
render "invoice" , :layout => false
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
- addresses = [ @order.name , @order.street, @order.city , @order.phone ]
|
2
|
+
|
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|
|
9
|
+
%tr
|
10
|
+
%td.cell{:height => "15px", :width => "45%"}
|
11
|
+
= row
|
12
|
+
%td{:width => "17%"}
|
13
|
+
%td.cell{:height => "15px", :width => "45%"}
|
14
|
+
= " "
|
@@ -0,0 +1,9 @@
|
|
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
|
@@ -0,0 +1,24 @@
|
|
1
|
+
%table.items
|
2
|
+
%colgroup
|
3
|
+
%col/
|
4
|
+
%col/
|
5
|
+
%col.price/
|
6
|
+
%col.qty/
|
7
|
+
%col.total/
|
8
|
+
%tr
|
9
|
+
%td.sku.bold= t(:ean) unless @receipt
|
10
|
+
%td.desc.bold= t(:description)
|
11
|
+
%td.price.bold= t(:price) unless @receipt
|
12
|
+
%td.qty.bold
|
13
|
+
= t(:qty)
|
14
|
+
%td.total.bold= t(:total)
|
15
|
+
- @order.basket.items.each do |item|
|
16
|
+
%tr
|
17
|
+
%td.cell= item.product.ean unless @receipt
|
18
|
+
%td.cell
|
19
|
+
= item.product.fullname rescue item.product.name
|
20
|
+
- if item.discount > 0
|
21
|
+
(#{-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)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
- base = @order.number[1 .. -1]
|
2
|
+
- viite = open("http://www1.nordea.fi/P636V/H636VTXT.asp?action=tekstiLista&lkm=1&alkuViite=#{base}&L=1").read[/\d+ \d+/]
|
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
|
@@ -0,0 +1,18 @@
|
|
1
|
+
%table.totals
|
2
|
+
%tr
|
3
|
+
%td.cel1.bold
|
4
|
+
= t(:item_total)
|
5
|
+
\:
|
6
|
+
%td.cel2.bold.cell{:align => "right"}= number_to_currency @order.total_price
|
7
|
+
- @order.taxes.each do |tax , value|
|
8
|
+
%tr
|
9
|
+
%td.cel1.bold
|
10
|
+
= "#{t(:vat)} #{tax}:"
|
11
|
+
%td.cel2.cell{:align => "right"}= number_to_currency value
|
12
|
+
%tr
|
13
|
+
%td.cel1.bold
|
14
|
+
%strong
|
15
|
+
= "#{t(:order_total)}:"
|
16
|
+
%td.cel2.cell{:align => "right"}
|
17
|
+
%strong
|
18
|
+
%span#summary-order-total= number_to_currency @order.total_price
|
@@ -0,0 +1 @@
|
|
1
|
+
= render :partial => "orders/invoice_items"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
%table.items
|
2
|
+
%colgroup
|
3
|
+
%col/
|
4
|
+
%col/
|
5
|
+
%tr
|
6
|
+
%td.sku.bold= t(:ean) unless @receipt
|
7
|
+
%td.desc.bold= t(:description)
|
8
|
+
%td.qty.bold= t(:qty)
|
9
|
+
- @order.basket.items.each do |item|
|
10
|
+
%tr
|
11
|
+
%td.cell= item.product.ean unless @receipt
|
12
|
+
%td.cell
|
13
|
+
= item.product.fullname rescue item.product.name
|
14
|
+
%td.cell.qty= item.quantity
|
@@ -0,0 +1,23 @@
|
|
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"
|
@@ -0,0 +1,52 @@
|
|
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"
|
data/config/routes.rb
ADDED
data/lib/print_clerk.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module PrintClerk
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
engine_name 'print_clerk'
|
4
|
+
|
5
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
6
|
+
|
7
|
+
initializer "print_invoice.assets.precompile", :after => "clerk.assets.precompile" do |app|
|
8
|
+
app.config.assets.precompile += [ "print-invoice.css", "print-receipt.css" ]
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.activate
|
12
|
+
Dir.glob(File.join(File.dirname(__FILE__), '../app/**/*_decorator.rb')) do |c|
|
13
|
+
Rails.configuration.cache_classes ? require(c) : load(c)
|
14
|
+
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
|
+
end
|
20
|
+
|
21
|
+
config.to_prepare &method(:activate).to_proc
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: print_clerk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.2'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Torsten Ruger
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: office_clerk
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.1'
|
27
|
+
description:
|
28
|
+
email:
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- README.md
|
34
|
+
- app/assets/images/invoice_logo.jpg
|
35
|
+
- app/assets/images/receipt-logo.gif
|
36
|
+
- app/assets/stylesheets/print-invoice.css
|
37
|
+
- app/assets/stylesheets/print-receipt.css.scss
|
38
|
+
- app/controllers/orders_decorator.rb
|
39
|
+
- app/overrides/add_html_invoice_buttons.rb
|
40
|
+
- app/views/orders/_html_buttons.haml
|
41
|
+
- app/views/orders/_invoice_address.haml
|
42
|
+
- app/views/orders/_invoice_footer.haml
|
43
|
+
- app/views/orders/_invoice_header.haml
|
44
|
+
- app/views/orders/_invoice_items.haml
|
45
|
+
- app/views/orders/_invoice_thanks.haml
|
46
|
+
- app/views/orders/_invoice_totals.haml
|
47
|
+
- app/views/orders/_receipt_footer.haml
|
48
|
+
- app/views/orders/_receipt_header.haml
|
49
|
+
- app/views/orders/_reminder_items.haml
|
50
|
+
- app/views/orders/_slip_items.haml
|
51
|
+
- app/views/orders/invoice.haml
|
52
|
+
- app/views/orders/receipt.haml
|
53
|
+
- config/routes.rb
|
54
|
+
- lib/print_clerk.rb
|
55
|
+
homepage:
|
56
|
+
licenses: []
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 1.9.3
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements:
|
73
|
+
- none
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.2.2
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: Print invoices from an order
|
79
|
+
test_files: []
|