dorsale 2.4.3 → 2.5.0

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.
@@ -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