dorsale 2.4.3 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,9 +29,18 @@ describe ::Dorsale::BillingMachine::InvoiceMultipleVatPdf, pdfs: true do
29
29
  }
30
30
 
31
31
  it "should not display global vat rate" do
32
- expect(content).to_not include "TVA 19,60 %"
32
+ expect(content).to_not include "TVA 19,60 %"
33
33
  expect(content).to include "MONTANT TVA"
34
34
  expect(content).to include "TVA %"
35
35
  end
36
36
 
37
+ it "should work with empty invoice" do
38
+ id_card = Dorsale::BillingMachine::IdCard.new
39
+ invoice = ::Dorsale::BillingMachine::Invoice.new(id_card: id_card)
40
+
41
+ expect {
42
+ invoice.pdf.render
43
+ }.to_not raise_error
44
+ end
45
+
37
46
  end
@@ -5,60 +5,15 @@ describe ::Dorsale::BillingMachine::InvoiceSingleVatPdf, pdfs: true do
5
5
  ::Dorsale::BillingMachine.vat_mode = :single
6
6
  end
7
7
 
8
- let(:customer) {
9
- create(:customer_vault_corporation)
10
- }
11
-
12
- let(:id_card) { create(:billing_machine_id_card,
13
- entity_name: "HEYHO",
14
- registration_city: 'RCS MARSEILLE',
15
- registration_number: '000 000 000',
16
- siret: '000 000 000 00000',
17
- ape_naf: '0000A',
18
- legal_form: 'SARL',
19
- capital: 1_000_000_000,
20
- intracommunity_vat: 'FR 00 000 000 000 000 00',
21
- address1: '42 Avenue de Ruby', zip: '13004',
22
- city: 'Marseille',
23
- contact_full_name: 'Jane Doe',
24
- contact_phone: '+33.6.00.00.00.00',
25
- contact_fax: '+33.9.00.00.00.00',
26
- contact_email: 'email@example.org',
27
- iban: 'FR76 0000 0000 0000 0000 0000 000',
28
- bic_swift: 'PSSTTHEGAME',
29
- custom_info_1: "Tout retard de règlement donnera lieu de plein droit et sans qu’aucune mise en demeure ne soit nécessaire au paiement de " +
30
- 'pénalités de retard sur la base du taux BCE majoré de dix (10) points et au paiement d’une indemnité forfaitaire pour frais de ' +
31
- 'recouvrement d’un montant de 999999€'
32
- ) }
33
-
34
8
  let(:invoice) {
35
-
36
- i = create(:billing_machine_invoice,
37
- date: '16/04/2014',
38
- id_card: id_card,
39
- customer: customer,
40
- commercial_discount: 100.23,
41
- advance: 1.79,
42
- )
9
+ i = create(:billing_machine_invoice)
43
10
 
44
11
  create(:billing_machine_invoice_line,
45
- invoice: i,
46
- quantity: 3.14,
47
- unit: 'heures',
48
- unit_price: 2.54,
49
- vat_rate: 19.6,
50
- total: 7.98)
51
-
52
- create(:billing_machine_invoice_line,
53
- invoice: i,
54
- label: 'Truc',
55
- quantity: 42.42,
56
- unit: 'nuts',
57
- unit_price: 42.54,
58
- vat_rate: 19.6,
59
- total: 1804.55)
12
+ :invoice => i,
13
+ :vat_rate => 19.6,
14
+ )
60
15
 
61
- i.reload
16
+ i
62
17
  }
63
18
 
64
19
  let(:pdf) {
@@ -71,174 +26,20 @@ describe ::Dorsale::BillingMachine::InvoiceSingleVatPdf, pdfs: true do
71
26
  tempfile.write(pdf.render)
72
27
  tempfile.flush
73
28
  Yomu.new(tempfile.path).text
74
- }
75
-
76
- describe "#initialize" do
77
- it 'inherits from Prawn::Document' do
78
- expect(pdf).to be_kind_of(Prawn::Document)
79
- end
80
-
81
- it 'should assign @main_document' do
82
- expect(pdf.main_document).to eq invoice
83
- end
84
- end
85
-
86
- describe 'when the id card is empty' do
87
- let(:id_card) {
88
- ::Dorsale::BillingMachine::IdCard.create(id_card_name: 'default')
89
- }
90
- it 'should not crash' do
91
- pdf.build
92
- end
93
- end
94
-
95
- describe 'Id card informations' do
96
- it 'is expected to print the right information' do
97
- expect(content).to include 'HEYHO'
98
- expect(content).to include 'SIRET 000 000 000 00000 '
99
- expect(content).to include 'SARL au capital de 1.000.000.000 €'
100
- expect(content).to include 'RCS MARSEILLE 000 000 000'
101
- expect(content).to include 'TVA FR 00 000 000 000 000 00'
102
- expect(content).to include '42 Avenue de Ruby'
103
- expect(content).to include '13004 Marseille'
104
- end
105
- end
106
-
107
- describe 'Header' do
108
- it "should write invoice tracking id" do
109
- expect(content).to include 'Facture'
110
- expect(content).to include 'n°'
111
- expect(content).to include invoice.tracking_id
112
- end
113
-
114
- it "is expected to print invoice date" do
115
- expect(content).to include 'Date : ' + '16/04/2014'
116
- end
117
-
118
- it 'is expected to print contact informations' do
119
- expect(content).to include 'Jane Doe'
120
- expect(content).to include 'Téléphone :'
121
- expect(content).to include ' +33.6.00.00.00.00'
122
- expect(content).to include 'Fax :'
123
- expect(content).to include ' +33.9.00.00.00.00'
124
- expect(content).to include 'Email :'
125
- expect(content).to include ' email@example.org'
126
- end
127
- end
128
-
129
- describe 'customer information' do
130
- it "should write customer name" do
131
- expect(content).to include invoice.customer.name
132
- end
133
-
134
- it "is expected to print customer address" do
135
- expect(content).to include invoice.customer.address.street
136
- expect(content).to include invoice.customer.address.street_bis
137
- end
138
-
139
- it "is expected to print customer zip and city" do
140
- expect(content).to include invoice.customer.address.zip.to_s +
141
- ' ' + invoice.customer.address.city.to_s
142
- end
143
-
144
- it "is expected to print 'Objet :' and invoice label" do
145
- expect(content).to include 'Objet : '
146
- expect(content).to include invoice.label
147
- end
148
- end
149
-
150
- describe "product table" do
151
- it "is expected to print the header" do
152
- expect(content).to include 'DÉSIGNATION'
153
- expect(content).to include 'QTITÉ'
154
- expect(content).to include 'UNITÉ'
155
- expect(content).to include 'P.U €HT'
156
- expect(content).to include 'TOTAL €HT'
157
- end
158
- it 'is expected to print invoice line label of each invoice line' do
159
- invoice.lines.each do |line|
160
- expect(content).to include line.label
161
- end
162
- end
163
-
164
- it 'is expected to print invoice line quantity of each line' do
165
- expect(content).to include '3,14'
166
- expect(content).to include '42,42'
167
- end
168
-
169
- it 'is expected to print invoice line unit_price of each line' do
170
- expect(content).to include '2,54 €'.gsub(" ", "\u00A0")
171
- expect(content).to include '42,54 €'.gsub(" ", "\u00A0")
172
- end
173
-
174
- it 'is expected to print invoice line total of each line' do
175
- expect(content).to include '7,98 €'.gsub(" ", "\u00A0")
176
- expect(content).to include '1 804,55 €'.gsub(" ", "\u00A0")
177
- end
178
- end
179
-
180
- describe 'Total table' do
181
- it 'is expected to print all the invoice synthesis' do
182
- expect(content).to include 'REMISE'
183
- expect(content).to include '- '+'100,23 €'.gsub(" ", "\u00A0")
184
- expect(content).to include 'TOTAL HT'
185
- expect(content).to include '1 712,29 €'.gsub(" ", "\u00A0")
186
- expect(content).to include 'TVA 19,60 %'
187
- expect(content).to include '335,61 €'.gsub(" ", "\u00A0")
188
- expect(content).to include 'ACOMPTE'
189
- expect(content).to include '1,79 €'.gsub(" ", "\u00A0")
190
- expect(content).to include 'TOTAL TTC'
191
- expect(content).to include '2 046,11 €'.gsub(" ", "\u00A0")
192
- end
193
- end
194
-
195
-
196
- describe 'Footer' do
197
- it 'is expected to print invoice payment term' do
198
- expect(content).to include 'Conditions de paiement :'
199
- expect(content).to include invoice.payment_term.label
200
- end
201
-
202
- it 'is expected to print current and total page number' do
203
- expect(content).to include 'page 1/1'
204
- end
29
+ }
205
30
 
206
- it 'is expected to print invoice legals and banks' do
207
- expect(content).to include 'IBAN : FR76 0000 0000 0000 0000 0000 000'
208
- expect(content).to include 'BIC / SWIFT : PSSTTHEGAME'
209
- expect(content).to include 'Tout retard de règlement donnera lieu de plein droit et sans qu’aucune mise en demeure ne soit nécessaire au paiement de'
210
- expect(content).to include 'pénalités de retard sur la base du taux BCE majoré de dix (10) points et au paiement d’une indemnité forfaitaire pour frais de'
211
- expect(content).to include 'recouvrement d’un montant de 999999€'
212
- end
31
+ it "should display global vat rate" do
32
+ expect(content).to include "TVA 19,60 %"
33
+ expect(content).to_not include "MONTANT TVA"
34
+ expect(content).to_not include "TVA %"
213
35
  end
214
36
 
215
- describe 'incomplete invoice' do
216
- before(:each) do
217
- invoice_incomplete=create(:billing_machine_invoice,
218
- advance: 0,
219
- customer: customer,
220
- date: '2014-04-16',
221
- id_card: id_card,
222
- )
223
- pdf_incomplete = invoice_incomplete.pdf
224
- pdf_incomplete.build
225
- tempfile = Tempfile.new("pdf")
226
- tempfile.binmode
227
- tempfile.write(pdf_incomplete.render)
228
- tempfile.flush
229
- @incomplete_content = Yomu.new(tempfile.path).text
230
- end
231
-
232
- it 'is expected not to print ACOMPTE' do
233
- expect(@incomplete_content).to_not include 'ACOMPTE'
234
- end
235
-
236
- it 'is expected not to print REMISE' do
237
- expect(@incomplete_content).to_not include 'REMISE'
238
- end
37
+ it "should work with empty invoice" do
38
+ id_card = Dorsale::BillingMachine::IdCard.new
39
+ invoice = ::Dorsale::BillingMachine::Invoice.new(id_card: id_card)
239
40
 
240
- it 'is expected to print TOTAL TTC' do
241
- expect(@incomplete_content).to include 'TOTAL TTC'
242
- end
41
+ expect {
42
+ invoice.pdf.render
43
+ }.to_not raise_error
243
44
  end
244
45
  end
@@ -29,9 +29,18 @@ describe ::Dorsale::BillingMachine::QuotationMultipleVatPdf, pdfs: true do
29
29
  }
30
30
 
31
31
  it "should not display global vat rate" do
32
- expect(content).to_not include "TVA 19,60 %"
32
+ expect(content).to_not include "TVA 19,60 %"
33
33
  expect(content).to include "MONTANT TVA"
34
34
  expect(content).to include "TVA %"
35
35
  end
36
36
 
37
+ it "should work with empty quotation" do
38
+ id_card = Dorsale::BillingMachine::IdCard.new
39
+ quotation = ::Dorsale::BillingMachine::Quotation.new(id_card: id_card)
40
+
41
+ expect {
42
+ quotation.pdf.render
43
+ }.to_not raise_error
44
+ end
45
+
37
46
  end
@@ -5,59 +5,15 @@ describe ::Dorsale::BillingMachine::QuotationSingleVatPdf, pdfs: true do
5
5
  ::Dorsale::BillingMachine.vat_mode = :single
6
6
  end
7
7
 
8
- let(:customer) {
9
- create(:customer_vault_corporation)
10
- }
11
-
12
- let(:id_card) { create(:billing_machine_id_card,
13
- entity_name: "HEYHO",
14
- registration_city: 'RCS MARSEILLE',
15
- registration_number: '000 000 000',
16
- siret: '000 000 000 00000',
17
- ape_naf: '0000A',
18
- legal_form: 'SARL',
19
- capital: 1_000_000_000,
20
- intracommunity_vat: 'FR 00 000 000 000 000 00',
21
- address1: '42 Avenue de Ruby', zip: '13004',
22
- city: 'Marseille',
23
- contact_full_name: 'Jane Doe',
24
- contact_phone: '+33.6.00.00.00.00',
25
- contact_fax: '+33.9.00.00.00.00',
26
- contact_email: 'email@example.org',
27
- iban: 'FR76 0000 0000 0000 0000 0000 000',
28
- bic_swift: 'PSSTTHEGAME',
29
- custom_info_1: "Tout retard de règlement donnera lieu de plein droit et sans qu’aucune mise en demeure ne soit nécessaire au paiement de " +
30
- 'pénalités de retard sur la base du taux BCE majoré de dix (10) points et au paiement d’une indemnité forfaitaire pour frais de ' +
31
- 'recouvrement d’un montant de 999999€'
32
- ) }
33
-
34
8
  let(:quotation) {
35
-
36
- q = create(:billing_machine_quotation,
37
- date: '16/04/2014',
38
- id_card: id_card,
39
- customer: customer,
40
- commercial_discount: 100.23,
41
- comments: 'this is the quotation comment')
9
+ q = create(:billing_machine_quotation)
42
10
 
43
11
  create(:billing_machine_quotation_line,
44
- quotation: q,
45
- quantity: 3.14,
46
- unit: 'heures',
47
- unit_price: 2.54,
48
- vat_rate: 19.6,
49
- total: 7.98)
12
+ :quotation => q,
13
+ :vat_rate => 19.6,
14
+ )
50
15
 
51
- create(:billing_machine_quotation_line,
52
- quotation: q,
53
- label: 'Truc',
54
- quantity: 42.42,
55
- unit: 'nuts',
56
- unit_price: 42.54,
57
- vat_rate: 19.6,
58
- total: 1804.55)
59
-
60
- q.reload
16
+ q
61
17
  }
62
18
 
63
19
  let(:pdf) {
@@ -70,173 +26,21 @@ describe ::Dorsale::BillingMachine::QuotationSingleVatPdf, pdfs: true do
70
26
  tempfile.write(pdf.render)
71
27
  tempfile.flush
72
28
  Yomu.new(tempfile.path).text
73
- }
74
-
75
- describe "#initialize" do
76
- it 'inherits from Prawn::Document' do
77
- expect(pdf).to be_kind_of(Prawn::Document)
78
- end
79
-
80
- it 'should assign @main_document' do
81
- expect(pdf.main_document).to eq quotation
82
- end
83
- end
84
-
85
- describe 'when the id card is empty' do
86
- let(:id_card) {
87
- ::Dorsale::BillingMachine::IdCard.create(id_card_name: 'default')
88
- }
89
- it 'should not crash' do
90
- pdf.build
91
- end
92
- end
93
-
94
- describe 'Id card informations' do
95
- it 'is expected to print the right information' do
96
- expect(content).to include 'HEYHO'
97
- expect(content).to include 'SIRET 000 000 000 00000 '
98
- expect(content).to include 'SARL au capital de 1.000.000.000 €'
99
- expect(content).to include 'RCS MARSEILLE 000 000 000'
100
- expect(content).to include 'TVA FR 00 000 000 000 000 00'
101
- expect(content).to include '42 Avenue de Ruby'
102
- expect(content).to include '13004 Marseille'
103
- end
104
- end
105
-
106
- describe 'Header' do
107
- it "should write invoice tracking id" do
108
- expect(content).to include 'Devis'
109
- expect(content).to include 'n°'
110
- expect(content).to include quotation.tracking_id
111
- end
112
-
113
- it "is expected to print invoice date" do
114
- expect(content).to include 'Date : ' + '16/04/2014'
115
- end
116
-
117
- it 'is expected to print contact informations' do
118
- expect(content).to include 'Jane Doe'
119
- expect(content).to include 'Téléphone :'
120
- expect(content).to include ' +33.6.00.00.00.00'
121
- expect(content).to include 'Fax :'
122
- expect(content).to include ' +33.9.00.00.00.00'
123
- expect(content).to include 'Email :'
124
- expect(content).to include ' email@example.org'
125
- end
126
- end
127
-
128
- describe 'customer information' do
129
- it "should write customer name" do
130
- expect(content).to include quotation.customer.name
131
- end
132
-
133
- it "is expected to print customer address" do
134
- expect(content).to include quotation.customer.address.street
135
- expect(content).to include quotation.customer.address.street_bis
136
- end
137
-
138
- it "is expected to print customer zip and city" do
139
- expect(content).to include quotation.customer.address.zip.to_s +
140
- ' ' + quotation.customer.address.city.to_s
141
- end
142
-
143
- it "is expected to print 'Objet :' and invoice label" do
144
- expect(content).to include 'Objet : '
145
- expect(content).to include quotation.label
146
- end
147
- end
148
-
149
- describe "product table" do
150
- it "is expected to print the header" do
151
- expect(content).to include 'DÉSIGNATION'
152
- expect(content).to include 'QTITÉ'
153
- expect(content).to include 'UNITÉ'
154
- expect(content).to include 'P.U €HT'
155
- expect(content).to include 'TOTAL €HT'
156
- end
157
- it 'is expected to print invoice line label of each invoice line' do
158
- quotation.lines.each do |line|
159
- expect(content).to include line.label
160
- end
161
- end
162
-
163
- it 'is expected to print invoice line quantity of each line' do
164
- expect(content).to include '3,14'
165
- expect(content).to include '42,42'
166
- end
167
-
168
- it 'is expected to print invoice line unit_price of each line' do
169
- expect(content).to include '2,54 €'.gsub(" ", "\u00A0")
170
- expect(content).to include '42,54 €'.gsub(" ", "\u00A0")
171
- end
172
-
173
- it 'is expected to print invoice line total of each line' do
174
- expect(content).to include '7,98 €'.gsub(" ", "\u00A0")
175
- expect(content).to include '1 804,55 €'.gsub(" ", "\u00A0")
176
- end
177
- end
178
-
179
- describe 'Total table' do
180
- it 'is expected to print all the invoice synthesis' do
181
- expect(content).to include 'REMISE'
182
- expect(content).to include '- '+'100,23 €'.gsub(" ", "\u00A0")
183
- expect(content).to include 'TOTAL HT'
184
- expect(content).to include '1 712,29 €'.gsub(" ", "\u00A0")
185
- expect(content).to include 'TVA 19,60 %'
186
- expect(content).to include '335,61 €'.gsub(" ", "\u00A0")
187
- expect(content).to_not include 'ACOMPTE'
188
- expect(content).to include 'TOTAL TTC'
189
- expect(content).to include '2 047,90 €'.gsub(" ", "\u00A0")
190
- end
191
- end
192
-
193
-
194
- describe 'Footer' do
195
- it 'is expected to print invoice payment term' do
196
- expect(content).to include 'Conditions de paiement :'
197
- expect(content).to include quotation.payment_term.label
198
- end
199
-
200
- it 'is expected to print current and total page number' do
201
- expect(content).to include 'page 1/1'
202
- end
203
-
204
- it 'is expected to print current and total page number' do
205
- expect(content).to include quotation.comments
206
- end
29
+ }
207
30
 
208
- it 'is expected to print invoice legals and banks' do
209
- expect(content).to_not include 'IBAN : FR76 0000 0000 0000 0000 0000 000'
210
- expect(content).to_not include 'BIC / SWIFT : PSSTTHEGAME'
211
- expect(content).to include 'Tout retard de règlement donnera lieu de plein droit et sans qu’aucune mise en demeure ne soit nécessaire au paiement de'
212
- expect(content).to include 'pénalités de retard sur la base du taux BCE majoré de dix (10) points et au paiement d’une indemnité forfaitaire pour frais de'
213
- expect(content).to include 'recouvrement d’un montant de 999999€'
214
- end
31
+ it "should display global vat rate" do
32
+ expect(content).to include "TVA 19,60 %"
33
+ expect(content).to_not include "MONTANT TVA"
34
+ expect(content).to_not include "TVA %"
215
35
  end
216
36
 
217
- describe 'incomplete invoice' do
218
- before(:each) do
219
- quotation_incomplete = create(:billing_machine_quotation, customer: customer, date: '2014-04-16', id_card: id_card)
220
- pdf_incomplete = quotation_incomplete.pdf
221
- pdf_incomplete.build
222
- tempfile = Tempfile.new("pdf")
223
- tempfile.binmode
224
- tempfile.write(pdf_incomplete.render)
225
- tempfile.flush
226
- @incomplete_content = Yomu.new(tempfile.path).text
227
- end
228
-
229
- it 'is expected not to print ACOMPTE' do
230
- expect(@incomplete_content).to_not include 'ACOMPTE'
231
- end
37
+ it "should work with empty quotation" do
38
+ id_card = Dorsale::BillingMachine::IdCard.new
39
+ quotation = ::Dorsale::BillingMachine::Quotation.new(id_card: id_card)
232
40
 
233
- it 'is expected not to print REMISE' do
234
- expect(@incomplete_content).to_not include 'REMISE'
235
- end
236
-
237
- it 'is expected to print TOTAL TTC' do
238
- expect(@incomplete_content).to include 'TOTAL TTC'
239
- end
41
+ expect {
42
+ quotation.pdf.render
43
+ }.to_not raise_error
240
44
  end
241
45
 
242
46
  describe "attachment" do
@@ -251,6 +55,7 @@ describe ::Dorsale::BillingMachine::QuotationSingleVatPdf, pdfs: true do
251
55
  expect(text).to include "page 2"
252
56
  end
253
57
  end
58
+
254
59
  end
255
60
 
256
61