papierkram_api_client 0.3.1 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop +2 -1
- data/.rubocop.yml +5 -5
- data/CHANGELOG.md +23 -0
- data/Gemfile +5 -5
- data/Gemfile.lock +36 -32
- data/README.md +462 -19
- data/UPGRADING.md +10 -0
- data/lib/papierkram_api/client.rb +9 -0
- data/lib/papierkram_api/v1/business_intelligence/base.rb +9 -0
- data/lib/papierkram_api/v1/endpoints/contact/companies.rb +54 -3
- data/lib/papierkram_api/v1/endpoints/contact/companies_persons.rb +35 -3
- data/lib/papierkram_api/v1/endpoints/expense/vouchers.rb +150 -0
- data/lib/papierkram_api/v1/endpoints/income/invoices.rb +154 -8
- data/lib/papierkram_api/v1/endpoints/income/payment_terms.rb +30 -0
- data/lib/papierkram_api/v1/endpoints/income/propositions.rb +23 -7
- data/lib/papierkram_api/v1/endpoints/projects.rb +32 -3
- data/lib/papierkram_api/v1/endpoints/tracker/tasks.rb +63 -0
- data/lib/papierkram_api/v1/endpoints/tracker/time_entries.rb +59 -0
- data/lib/papierkram_api_client/version.rb +1 -1
- data/lib/papierkram_api_client.rb +2 -0
- metadata +19 -4
data/README.md
CHANGED
@@ -10,9 +10,8 @@ Der erste ~~illegale~~ inoffizielle API Client in [Ruby](https://www.ruby-lang.o
|
|
10
10
|
|
11
11
|
---
|
12
12
|
|
13
|
-
**
|
14
|
-
|
15
|
-
Das Gleiche, nur in grün, also für [NodeJS](https://github.com/simonneutert/papierkram-api-client). Und als Mega-Baustelle 😬
|
13
|
+
**Aufruf zur Mitarbeit für NodeJS/JavaScript 🫠**
|
14
|
+
Das Gleiche, nur in grün, also für [NodeJS ein Papierkram Api Client](https://github.com/simonneutert/papierkram-api-client) 😬
|
16
15
|
|
17
16
|
---
|
18
17
|
|
@@ -26,6 +25,9 @@ Schau in [UPGRADING.md](UPGRADING.md), 💃🕺!
|
|
26
25
|
Hier geht es zu den [offiziellen API Docs](https://demo.papierkram.de/api/v1/api-docs/index.html).
|
27
26
|
Schau bitte dort um alle Rückgabefelder/-werte zu checken, bis ich (oder du mit deiner Zeit und Hingabe) die Dokumentation hier komplett habe.
|
28
27
|
|
28
|
+
**WENN DU PROBLEME HAST,** bitte ich dich erstmal die [offiziellen API Docs](https://demo.papierkram.de/api/v1/api-docs/index.html) zu durchstöbern. Dann lohnt es sich hier die Beispiele (weiter unten) zu lesen und von dort sowohl mal in die Methoden im Code zu springen, oder noch besser in die Tests schauen.
|
29
|
+
Wenn du dann immer noch nicht weiterkommst, kannst du gerne einen Issue erstellen. Poste dabei so viele Informationen wie möglich, damit ich dir bestmöglich weiterhelfen kann. Achte dabei bitte darauf, dass du keine privaten Daten postest. 🙏
|
30
|
+
|
29
31
|
---
|
30
32
|
|
31
33
|
## Aktuell unterstützte Endpunkte der Papierkram API (V1)<!-- omit in toc -->
|
@@ -37,11 +39,14 @@ Schau bitte dort um alle Rückgabefelder/-werte zu checken, bis ich (oder du mit
|
|
37
39
|
- [x] Expense::Voucher (Ausgabe Belege)
|
38
40
|
- [x] Income::Estimate (Angebote)
|
39
41
|
- [x] Income::Invoice (Rechnungen)
|
42
|
+
- [x] Income::PaymentTerms (Zahlungsbedingungen)
|
40
43
|
- [x] Income::Proposition (Waren / Dienstleistungen)
|
41
44
|
- [x] Info
|
45
|
+
- [ ] Settings::CustomAttribute (Datenfelder)
|
42
46
|
- [x] Project (Projekte)
|
43
47
|
- [x] Tracker::Task (Aufgaben)
|
44
48
|
- [x] Tracker::TimeEntry (Zeiterfassung)
|
49
|
+
- [ ] User
|
45
50
|
|
46
51
|
## Was, wie, warum?<!-- omit in toc -->
|
47
52
|
|
@@ -82,6 +87,16 @@ Ziele:
|
|
82
87
|
- [alle Ausgabe Belege](#alle-ausgabe-belege)
|
83
88
|
- [einen Ausgabe Beleg](#einen-ausgabe-beleg)
|
84
89
|
- [einen Ausgabe Beleg als PDF](#einen-ausgabe-beleg-als-pdf)
|
90
|
+
- [einen Ausgabe Beleg erstellen](#einen-ausgabe-beleg-erstellen)
|
91
|
+
- [einen Ausgabe Beleg aktualisieren](#einen-ausgabe-beleg-aktualisieren)
|
92
|
+
- [einen Ausgabe Beleg löschen](#einen-ausgabe-beleg-löschen)
|
93
|
+
- [einen Ausgabe Beleg archivieren](#einen-ausgabe-beleg-archivieren)
|
94
|
+
- [einen Ausgabe Beleg unarchivieren](#einen-ausgabe-beleg-unarchivieren)
|
95
|
+
- [einen Ausgabe Beleg stornieren](#einen-ausgabe-beleg-stornieren)
|
96
|
+
- [einen Ausgabe Beleg rückwirkend stornieren](#einen-ausgabe-beleg-rückwirkend-stornieren)
|
97
|
+
- [einen Ausgabe Beleg als bezahlt markieren](#einen-ausgabe-beleg-als-bezahlt-markieren)
|
98
|
+
- [einem Ausgabe Beleg ein Dokument hinzufügen](#einem-ausgabe-beleg-ein-dokument-hinzufügen)
|
99
|
+
- [einem Ausgabe Beleg ein Dokument entfernen](#einem-ausgabe-beleg-ein-dokument-entfernen)
|
85
100
|
- [Income::Estimate (Angebot)](#incomeestimate-angebot)
|
86
101
|
- [alle Angebote](#alle-angebote)
|
87
102
|
- [ein Angebot](#ein-angebot)
|
@@ -90,6 +105,16 @@ Ziele:
|
|
90
105
|
- [alle Rechnungen](#alle-rechnungen)
|
91
106
|
- [eine Rechnung](#eine-rechnung)
|
92
107
|
- [eine Rechnung als PDF](#eine-rechnung-als-pdf)
|
108
|
+
- [eine Rechnung erstellen](#eine-rechnung-erstellen)
|
109
|
+
- [eine Rechnung aktualisieren](#eine-rechnung-aktualisieren)
|
110
|
+
- [eine Rechnung löschen](#eine-rechnung-löschen)
|
111
|
+
- [eine Rechnung archivieren](#eine-rechnung-archivieren)
|
112
|
+
- [eine Rechnung unarchivieren](#eine-rechnung-unarchivieren)
|
113
|
+
- [eine Rechnung stornieren](#eine-rechnung-stornieren)
|
114
|
+
- [eine Rechnung verschicken](#eine-rechnung-verschicken)
|
115
|
+
- [Income::PaymentTerms (Zahlungsbedingungen)](#incomepaymentterms-zahlungsbedingungen)
|
116
|
+
- [eine Zahlungsbedingung](#eine-zahlungsbedingung)
|
117
|
+
- [alle Zahlungsbedingungen](#alle-zahlungsbedingungen)
|
93
118
|
- [Income::Proposition (Waren / Dienstleistungen)](#incomeproposition-waren--dienstleistungen)
|
94
119
|
- [alle Waren / Dienstleistungen](#alle-waren--dienstleistungen)
|
95
120
|
- [eine Ware / Dienstleistung](#eine-ware--dienstleistung)
|
@@ -110,9 +135,19 @@ Ziele:
|
|
110
135
|
- [Tracker::Task (Aufgabe)](#trackertask-aufgabe)
|
111
136
|
- [alle Aufgaben](#alle-aufgaben)
|
112
137
|
- [eine Aufgabe](#eine-aufgabe)
|
138
|
+
- [erstelle eine Aufgabe](#erstelle-eine-aufgabe)
|
139
|
+
- [aktualisiere eine Aufgabe](#aktualisiere-eine-aufgabe)
|
140
|
+
- [lösche eine Aufgabe](#lösche-eine-aufgabe)
|
141
|
+
- [archiviere eine Aufgabe](#archiviere-eine-aufgabe)
|
142
|
+
- [unarchiviere eine Aufgabe](#unarchiviere-eine-aufgabe)
|
113
143
|
- [Tracker::TimeEntry (Zeiteintrag)](#trackertimeentry-zeiteintrag)
|
114
144
|
- [alle Zeiteinträge](#alle-zeiteinträge)
|
115
145
|
- [einen Zeiteintrag](#einen-zeiteintrag)
|
146
|
+
- [erstelle einen Zeiteintrag](#erstelle-einen-zeiteintrag)
|
147
|
+
- [aktualisiere einen Zeiteintrag](#aktualisiere-einen-zeiteintrag)
|
148
|
+
- [lösche einen Zeiteintrag](#lösche-einen-zeiteintrag)
|
149
|
+
- [archiviere einen Zeiteintrag](#archiviere-einen-zeiteintrag)
|
150
|
+
- [unarchiviere einen Zeiteintrag](#unarchiviere-einen-zeiteintrag)
|
116
151
|
- [Verbleibendes Quota](#verbleibendes-quota)
|
117
152
|
- [Business Intelligence](#business-intelligence)
|
118
153
|
- [Business::Intelligence (BI) ExpenseByCategory (Ausgaben nach Kategorie)](#businessintelligence-bi-expensebycategory-ausgaben-nach-kategorie)
|
@@ -120,7 +155,8 @@ Ziele:
|
|
120
155
|
- [alle Ausgaben eines Monats nach Kategorie gefiltert nach Steuersatz](#alle-ausgaben-eines-monats-nach-kategorie-gefiltert-nach-steuersatz)
|
121
156
|
- [Helpers](#helpers)
|
122
157
|
- [Generiere ein PDF aus Response](#generiere-ein-pdf-aus-response)
|
123
|
-
- [Development](#development)
|
158
|
+
- [Development / Mitentwickeln](#development--mitentwickeln)
|
159
|
+
- [Localhost 3000! 🤫](#localhost-3000-)
|
124
160
|
- [Contributing](#contributing)
|
125
161
|
- [License](#license)
|
126
162
|
|
@@ -325,8 +361,10 @@ Siehe [Companies#create_customer](lib/papierkram_api/v1/endpoints/contact/compan
|
|
325
361
|
#### aktualisiere ein Unternehmen
|
326
362
|
|
327
363
|
```ruby
|
328
|
-
company = client.contact_companies
|
329
|
-
|
364
|
+
company = client.contact_companies.update_by(
|
365
|
+
id: 1,
|
366
|
+
name: 'Test GmbH'
|
367
|
+
)
|
330
368
|
puts company.headers
|
331
369
|
puts company.body
|
332
370
|
```
|
@@ -381,11 +419,9 @@ puts company.body
|
|
381
419
|
|
382
420
|
```ruby
|
383
421
|
company = client.contact_companies_persons.create(
|
384
|
-
company_id: 1,
|
385
|
-
|
386
|
-
|
387
|
-
last_name: 'Mustermann'
|
388
|
-
}
|
422
|
+
company_id: 1,
|
423
|
+
first_name: 'Max',
|
424
|
+
last_name: 'Mustermann'
|
389
425
|
)
|
390
426
|
puts company.headers
|
391
427
|
puts company.body
|
@@ -396,8 +432,11 @@ Siehe [CompaniesPersons#create](lib/papierkram_api/v1/endpoints/contact/companie
|
|
396
432
|
#### aktualisiere eine Kontaktperson (eines Unternehmens)
|
397
433
|
|
398
434
|
```ruby
|
399
|
-
company = client.contact_companies_persons
|
400
|
-
|
435
|
+
company = client.contact_companies_persons.update_by(
|
436
|
+
id: 1,
|
437
|
+
company_id: 1,
|
438
|
+
first_name: 'Moritz'
|
439
|
+
)
|
401
440
|
puts company.headers
|
402
441
|
puts company.body
|
403
442
|
```
|
@@ -442,6 +481,142 @@ puts PapierkramApi::V1::Helpers::PdfFromResponse.new(voucher).to_pdf
|
|
442
481
|
# => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'}
|
443
482
|
```
|
444
483
|
|
484
|
+
#### einen Ausgabe Beleg erstellen
|
485
|
+
|
486
|
+
Siehe [Vouchers#create](lib/papierkram_api/v1/endpoints/expense/vouchers.rb) für mögliche Parameter.
|
487
|
+
|
488
|
+
```ruby
|
489
|
+
voucher = client.expense_vouchers.create(
|
490
|
+
name: "Restaurant visit",
|
491
|
+
due_date: "2020-06-30",
|
492
|
+
document_date: "2020-06-14",
|
493
|
+
description: "Took customer for dinner.",
|
494
|
+
entertainment_reason: "sales meeting",
|
495
|
+
flagged: true,
|
496
|
+
provenance: "domestic",
|
497
|
+
entertainment_persons: [
|
498
|
+
"Carl Customer"
|
499
|
+
],
|
500
|
+
creditor_id: 85,
|
501
|
+
line_items: [
|
502
|
+
{
|
503
|
+
amount: 150.8,
|
504
|
+
name: "restaurant bill",
|
505
|
+
vat_rate: "19%",
|
506
|
+
category: "Bewirtungskosten"
|
507
|
+
},
|
508
|
+
{
|
509
|
+
amount: 15,
|
510
|
+
name: "tip",
|
511
|
+
vat_rate: "19%",
|
512
|
+
category: "Bewirtungskosten"
|
513
|
+
}
|
514
|
+
]
|
515
|
+
)
|
516
|
+
```
|
517
|
+
|
518
|
+
#### einen Ausgabe Beleg aktualisieren
|
519
|
+
|
520
|
+
Siehe [Vouchers#update_by](lib/papierkram_api/v1/endpoints/expense/vouchers.rb) für mögliche Parameter.
|
521
|
+
|
522
|
+
```ruby
|
523
|
+
voucher = client.expense_vouchers.update_by(
|
524
|
+
id: 1,
|
525
|
+
document_date: "2020-06-13",
|
526
|
+
creditor_id: 102,
|
527
|
+
line_items: [
|
528
|
+
{
|
529
|
+
amount: 170.8,
|
530
|
+
name: "restaurant bill",
|
531
|
+
vat_rate: "19%",
|
532
|
+
category: "Bewirtungskosten",
|
533
|
+
billing: null,
|
534
|
+
depreciation: null
|
535
|
+
},
|
536
|
+
{
|
537
|
+
amount: 15,
|
538
|
+
name: "tip",
|
539
|
+
vat_rate: "19%",
|
540
|
+
category: "Bewirtungskosten"
|
541
|
+
}
|
542
|
+
]
|
543
|
+
)
|
544
|
+
```
|
545
|
+
|
546
|
+
#### einen Ausgabe Beleg löschen
|
547
|
+
|
548
|
+
```ruby
|
549
|
+
voucher = client.expense_vouchers.delete_by(id: 1)
|
550
|
+
```
|
551
|
+
|
552
|
+
#### einen Ausgabe Beleg archivieren
|
553
|
+
|
554
|
+
```ruby
|
555
|
+
voucher = client.expense_vouchers.archive_by(id: 1)
|
556
|
+
```
|
557
|
+
|
558
|
+
#### einen Ausgabe Beleg unarchivieren
|
559
|
+
|
560
|
+
```ruby
|
561
|
+
voucher = client.expense_vouchers.unarchive_by(id: 1)
|
562
|
+
```
|
563
|
+
|
564
|
+
#### einen Ausgabe Beleg stornieren
|
565
|
+
|
566
|
+
```ruby
|
567
|
+
voucher = client.expense_vouchers.cancel_by(id: 1)
|
568
|
+
```
|
569
|
+
|
570
|
+
#### einen Ausgabe Beleg rückwirkend stornieren
|
571
|
+
|
572
|
+
```ruby
|
573
|
+
voucher = client.expense_vouchers.cancel_with_reverse_entry_by(id: 1)
|
574
|
+
```
|
575
|
+
|
576
|
+
#### einen Ausgabe Beleg als bezahlt markieren
|
577
|
+
|
578
|
+
Siehe [Vouchers#mark_as_paid_by](lib/papierkram_api/v1/endpoints/expense/vouchers.rb) für mögliche Parameter.
|
579
|
+
|
580
|
+
```ruby
|
581
|
+
voucher = client.expense_vouchers.mark_as_paid_by(
|
582
|
+
id: 1,
|
583
|
+
value: 119.0
|
584
|
+
)
|
585
|
+
```
|
586
|
+
|
587
|
+
#### einem Ausgabe Beleg ein Dokument hinzufügen
|
588
|
+
|
589
|
+
Siehe [Vouchers#add_document_by](lib/papierkram_api/v1/endpoints/expense/vouchers.rb) für mögliche Parameter.
|
590
|
+
|
591
|
+
Um ein PDF hinzuzufügen:
|
592
|
+
|
593
|
+
```ruby
|
594
|
+
voucher = client.expense_vouchers.add_document_by(
|
595
|
+
id: 1,
|
596
|
+
path_to_file: 'path/to/file.pdf',
|
597
|
+
file_type: 'application/pdf'
|
598
|
+
)
|
599
|
+
```
|
600
|
+
|
601
|
+
oder mit einem Bild im jpeg Format
|
602
|
+
|
603
|
+
```ruby
|
604
|
+
voucher = client.expense_vouchers.add_document_by(
|
605
|
+
id: 1,
|
606
|
+
path_to_file: 'path/to/file.jpeg',
|
607
|
+
file_type: 'image/jpeg'
|
608
|
+
)
|
609
|
+
```
|
610
|
+
|
611
|
+
#### einem Ausgabe Beleg ein Dokument entfernen
|
612
|
+
|
613
|
+
```ruby
|
614
|
+
voucher = client.expense_vouchers.delete_document_by(
|
615
|
+
id: 1,
|
616
|
+
document_id: 1
|
617
|
+
)
|
618
|
+
```
|
619
|
+
|
445
620
|
### Income::Estimate (Angebot)
|
446
621
|
|
447
622
|
Der Endpunkt `/papierkram_api/v1/endpoints/income/estimates` liefert Informationen über die Angebote. Die Informationen werden als `Faraday::Response` zurückgegeben.
|
@@ -502,6 +677,163 @@ puts PapierkramApi::V1::Helpers::PdfFromResponse.new(invoice).to_pdf
|
|
502
677
|
# => {response: Faraday::Response, path_to_pdf_file: 'path/to/tempfile_pdf.pdf'}
|
503
678
|
```
|
504
679
|
|
680
|
+
#### eine Rechnung erstellen
|
681
|
+
|
682
|
+
Siehe [Invoices#create](lib/papierkram_api/v1/endpoints/income/invoices.rb) für mögliche Parameter.
|
683
|
+
|
684
|
+
```ruby
|
685
|
+
invoice = client.income_invoices.create(
|
686
|
+
name: 'Neuausstattung des Büros',
|
687
|
+
supply_date: '01.01.2024 - 14.01.2024',
|
688
|
+
document_date: '2024-01-15',
|
689
|
+
payment_term_id: 46,
|
690
|
+
customer_id: 3,
|
691
|
+
project_id: 15,
|
692
|
+
line_items: [
|
693
|
+
{
|
694
|
+
name: 'Anlieferung',
|
695
|
+
description: 'Anlieferung der neuen Möbel',
|
696
|
+
quantity: 1.25,
|
697
|
+
unit: 'Stunden',
|
698
|
+
vat_rate: '19%',
|
699
|
+
price: 100
|
700
|
+
},
|
701
|
+
{
|
702
|
+
name: 'Bestuhlung',
|
703
|
+
description: 'Bestuhlung des Bürogebäudes',
|
704
|
+
quantity: 1.25,
|
705
|
+
unit: 'Arbeitstage',
|
706
|
+
vat_rate: '19%',
|
707
|
+
price: 800
|
708
|
+
},
|
709
|
+
{
|
710
|
+
name: 'Büroartikel',
|
711
|
+
description: 'Neue Bürostühle',
|
712
|
+
quantity: 200,
|
713
|
+
unit: 'Stühle',
|
714
|
+
vat_rate: '19%',
|
715
|
+
price: 125
|
716
|
+
}
|
717
|
+
]
|
718
|
+
)
|
719
|
+
```
|
720
|
+
|
721
|
+
#### eine Rechnung aktualisieren
|
722
|
+
|
723
|
+
Siehe [Invoices#update_by](lib/papierkram_api/v1/endpoints/income/invoices.rb) für mögliche Parameter.
|
724
|
+
|
725
|
+
```ruby
|
726
|
+
response = client.income_invoices.update_by(
|
727
|
+
id: 9,
|
728
|
+
name: 'Neuausstattung eines Büros',
|
729
|
+
line_items: [
|
730
|
+
{
|
731
|
+
name: 'Anlieferung',
|
732
|
+
description: 'Anlieferung der neuen Möbel',
|
733
|
+
quantity: 1.5,
|
734
|
+
unit: 'Stunden',
|
735
|
+
vat_rate: '19%',
|
736
|
+
price: 100
|
737
|
+
},
|
738
|
+
{
|
739
|
+
name: 'Bestuhlung',
|
740
|
+
description: 'Bestuhlung des Bürogebäudes',
|
741
|
+
quantity: 1.5,
|
742
|
+
unit: 'Arbeitstage',
|
743
|
+
vat_rate: '19%',
|
744
|
+
price: 800
|
745
|
+
},
|
746
|
+
{
|
747
|
+
name: 'Büroartikel',
|
748
|
+
description: 'Neue Bürostühle',
|
749
|
+
quantity: 200,
|
750
|
+
unit: 'Stühle',
|
751
|
+
vat_rate: '19%',
|
752
|
+
price: 125
|
753
|
+
}
|
754
|
+
]
|
755
|
+
)
|
756
|
+
```
|
757
|
+
|
758
|
+
#### eine Rechnung löschen
|
759
|
+
|
760
|
+
Siehe [Invoices#delete_by](lib/papierkram_api/v1/endpoints/income/invoices.rb) für mögliche Parameter.
|
761
|
+
|
762
|
+
```ruby
|
763
|
+
invoice = client.income_invoices.delete_by(id: 1)
|
764
|
+
```
|
765
|
+
|
766
|
+
#### eine Rechnung archivieren
|
767
|
+
|
768
|
+
Siehe [Invoices#archive_by](lib/papierkram_api/v1/endpoints/income/invoices.rb) für mögliche Parameter.
|
769
|
+
|
770
|
+
```ruby
|
771
|
+
invoice = client.income_invoices.archive_by(id: 1)
|
772
|
+
```
|
773
|
+
|
774
|
+
#### eine Rechnung unarchivieren
|
775
|
+
|
776
|
+
Siehe [Invoices#unarchive_by](lib/papierkram_api/v1/endpoints/income/invoices.rb) für mögliche Parameter.
|
777
|
+
|
778
|
+
```ruby
|
779
|
+
invoice = client.income_invoices.unarchive_by(id: 1)
|
780
|
+
```
|
781
|
+
|
782
|
+
#### eine Rechnung stornieren
|
783
|
+
|
784
|
+
Siehe [Invoices#cancel_by](lib/papierkram_api/v1/endpoints/income/invoices.rb) für mögliche Parameter.
|
785
|
+
|
786
|
+
```ruby
|
787
|
+
invoice = client.income_invoices.cancel_by(id: 1)
|
788
|
+
```
|
789
|
+
|
790
|
+
#### eine Rechnung verschicken
|
791
|
+
|
792
|
+
Siehe [Invoices#send_by](lib/papierkram_api/v1/endpoints/income/invoices.rb) für mögliche Parameter.
|
793
|
+
|
794
|
+
Per E-Mail:
|
795
|
+
|
796
|
+
```ruby
|
797
|
+
invoice = client.income_invoices.deliver_by(
|
798
|
+
id: 1,
|
799
|
+
send_via: 'email',
|
800
|
+
email_recipient: "test@test.test",
|
801
|
+
email_subject: "Ich verkaufe was du brauchst",
|
802
|
+
email_body: "Sag einfach was du brauchst und ich verkaufe es dir.",
|
803
|
+
)
|
804
|
+
```
|
805
|
+
|
806
|
+
Per PDF:
|
807
|
+
|
808
|
+
```ruby
|
809
|
+
invoice = client.income_invoices.deliver_by(
|
810
|
+
id: 1,
|
811
|
+
send_via: 'pdf'
|
812
|
+
)
|
813
|
+
```
|
814
|
+
|
815
|
+
### Income::PaymentTerms (Zahlungsbedingungen)
|
816
|
+
|
817
|
+
Der Endpunkt `/papierkram_api/v1/endpoints/income/payment_terms` liefert Informationen über die Zahlungsbedingungen. Die Informationen werden als `Faraday::Response` zurückgegeben.
|
818
|
+
|
819
|
+
#### eine Zahlungsbedingung
|
820
|
+
|
821
|
+
```ruby
|
822
|
+
payment_term = client.income_payment_terms.find_by(id: 1)
|
823
|
+
puts payment_term.headers
|
824
|
+
puts payment_term.body
|
825
|
+
```
|
826
|
+
|
827
|
+
#### alle Zahlungsbedingungen
|
828
|
+
|
829
|
+
Siehe [PaymentTerms](lib/papierkram_api/v1/endpoints/income/payment_terms.rb) für mögliche Parameter.
|
830
|
+
|
831
|
+
```ruby
|
832
|
+
payment_terms = client.income_payment_terms.all
|
833
|
+
puts payment_terms.headers
|
834
|
+
puts payment_terms.body
|
835
|
+
```
|
836
|
+
|
505
837
|
### Income::Proposition (Waren / Dienstleistungen)
|
506
838
|
|
507
839
|
Der Endpunkt `/papierkram_api/v1/endpoints/income/propositions` liefert Informationen über die Waren / Dienstleistungen. Die Informationen werden als `Faraday::Response` zurückgegeben.
|
@@ -547,10 +879,8 @@ Siehe [Propositions#create](lib/papierkram_api/v1/endpoints/income/propositions.
|
|
547
879
|
```ruby
|
548
880
|
client.income_propositions.update_by(
|
549
881
|
id: 1,
|
550
|
-
|
551
|
-
|
552
|
-
vat_rate: '19%' # verpflichtend bei Änderung
|
553
|
-
}
|
882
|
+
name: 'Software design',
|
883
|
+
vat_rate: '19%' # verpflichtend bei Änderung
|
554
884
|
)
|
555
885
|
```
|
556
886
|
|
@@ -621,7 +951,10 @@ Siehe [Projects](lib/papierkram_api/v1/endpoints/projects.rb) für mögliche Par
|
|
621
951
|
#### aktualisiere ein Projekt
|
622
952
|
|
623
953
|
```ruby
|
624
|
-
project = client.projects.update_by(
|
954
|
+
project = client.projects.update_by(
|
955
|
+
id: 1,
|
956
|
+
name: 'Projekt 2'
|
957
|
+
)
|
625
958
|
puts project.headers
|
626
959
|
puts project.body
|
627
960
|
```
|
@@ -674,6 +1007,50 @@ puts task.headers
|
|
674
1007
|
puts task.body
|
675
1008
|
```
|
676
1009
|
|
1010
|
+
#### erstelle eine Aufgabe
|
1011
|
+
|
1012
|
+
Siehe [Tasks#create](lib/papierkram_api/v1/endpoints/tracker/tasks.rb) für mögliche Parameter.
|
1013
|
+
|
1014
|
+
```ruby
|
1015
|
+
task = client.tracker_tasks.create(name: 'Aufgabe 1')
|
1016
|
+
puts task.headers
|
1017
|
+
puts task.body
|
1018
|
+
```
|
1019
|
+
|
1020
|
+
#### aktualisiere eine Aufgabe
|
1021
|
+
|
1022
|
+
Siehe [Tasks#update_by](lib/papierkram_api/v1/endpoints/tracker/tasks.rb) für mögliche Parameter.
|
1023
|
+
|
1024
|
+
```ruby
|
1025
|
+
task = client.tracker_tasks.update_by(id: 1, name: 'Aufgabe 2' )
|
1026
|
+
puts task.headers
|
1027
|
+
puts task.body
|
1028
|
+
```
|
1029
|
+
|
1030
|
+
#### lösche eine Aufgabe
|
1031
|
+
|
1032
|
+
```ruby
|
1033
|
+
task = client.tracker_tasks.delete_by(id: 1)
|
1034
|
+
puts task.headers
|
1035
|
+
puts task.body
|
1036
|
+
```
|
1037
|
+
|
1038
|
+
#### archiviere eine Aufgabe
|
1039
|
+
|
1040
|
+
```ruby
|
1041
|
+
task = client.tracker_tasks.archive_by(id: 1)
|
1042
|
+
puts task.headers
|
1043
|
+
puts task.body
|
1044
|
+
```
|
1045
|
+
|
1046
|
+
#### unarchiviere eine Aufgabe
|
1047
|
+
|
1048
|
+
```ruby
|
1049
|
+
task = client.tracker_tasks.unarchive_by(id: 1)
|
1050
|
+
puts task.headers
|
1051
|
+
puts task.body
|
1052
|
+
```
|
1053
|
+
|
677
1054
|
### Tracker::TimeEntry (Zeiteintrag)
|
678
1055
|
|
679
1056
|
Der Endpunkt `/papierkram_api/v1/tracker/time_entries` liefert Informationen über die Zeiteinträge. Die Informationen werden als `Faraday::Response` zurückgegeben.
|
@@ -682,6 +1059,8 @@ Der Endpunkt `/papierkram_api/v1/tracker/time_entries` liefert Informationen üb
|
|
682
1059
|
|
683
1060
|
#### alle Zeiteinträge
|
684
1061
|
|
1062
|
+
Siehe [TimeEntries](lib/papierkram_api/v1/endpoints/tracker/time_entries.rb) für mögliche Parameter.
|
1063
|
+
|
685
1064
|
```ruby
|
686
1065
|
time_entries = client.tracker_time_entries.all
|
687
1066
|
puts time_entries.headers
|
@@ -696,6 +1075,58 @@ puts time_entry.headers
|
|
696
1075
|
puts time_entry.body
|
697
1076
|
```
|
698
1077
|
|
1078
|
+
#### erstelle einen Zeiteintrag
|
1079
|
+
|
1080
|
+
Siehe [TimeEntries](lib/papierkram_api/v1/endpoints/tracker/time_entries.rb) für mögliche Parameter.
|
1081
|
+
|
1082
|
+
```ruby
|
1083
|
+
time_entry = client.tracker_time_entries.create(
|
1084
|
+
task_id: 1,
|
1085
|
+
date: '2020-01-01',
|
1086
|
+
duration: 60,
|
1087
|
+
description: 'Test'
|
1088
|
+
)
|
1089
|
+
puts time_entry.headers
|
1090
|
+
puts time_entry.body
|
1091
|
+
```
|
1092
|
+
|
1093
|
+
#### aktualisiere einen Zeiteintrag
|
1094
|
+
|
1095
|
+
Siehe [TimeEntries](lib/papierkram_api/v1/endpoints/tracker/time_entries.rb) für mögliche Parameter.
|
1096
|
+
|
1097
|
+
```ruby
|
1098
|
+
time_entry = client.tracker_time_entries.update_by(
|
1099
|
+
id: 1,
|
1100
|
+
comments: 'Test'
|
1101
|
+
)
|
1102
|
+
puts time_entry.headers
|
1103
|
+
puts time_entry.body
|
1104
|
+
```
|
1105
|
+
|
1106
|
+
#### lösche einen Zeiteintrag
|
1107
|
+
|
1108
|
+
```ruby
|
1109
|
+
time_entry = client.tracker_time_entries.delete_by(id: 1)
|
1110
|
+
puts time_entry.headers
|
1111
|
+
puts time_entry.body
|
1112
|
+
```
|
1113
|
+
|
1114
|
+
#### archiviere einen Zeiteintrag
|
1115
|
+
|
1116
|
+
```ruby
|
1117
|
+
time_entry = client.tracker_time_entries.archive_by(id: 1)
|
1118
|
+
puts time_entry.headers
|
1119
|
+
puts time_entry.body
|
1120
|
+
```
|
1121
|
+
|
1122
|
+
#### unarchiviere einen Zeiteintrag
|
1123
|
+
|
1124
|
+
```ruby
|
1125
|
+
time_entry = client.tracker_time_entries.unarchive_by(id: 1)
|
1126
|
+
puts time_entry.headers
|
1127
|
+
puts time_entry.body
|
1128
|
+
```
|
1129
|
+
|
699
1130
|
### Verbleibendes Quota
|
700
1131
|
|
701
1132
|
Jede API Anfrage "kostet" 1 Quota. Das Quota wird bei jedem Request aktualisiert. Um das verbleibende Quota zu erhalten, kann die Methode `remaining_quota` aufgerufen werden.
|
@@ -714,6 +1145,8 @@ quota = client.info.remaining_quota(response)
|
|
714
1145
|
|
715
1146
|
## Business Intelligence
|
716
1147
|
|
1148
|
+
> **DEPRECATED** Bitte verwende dieses Modul nicht mehr, es wird in Zukunft entfernt werden.
|
1149
|
+
|
717
1150
|
Ich lasse diesen ersten Ausflug in Auswertungen erstmal hier im Gem. Aber sollte ich die Zeit finden und weitere KPIs wichtig finden, dann gehören die Auswertungen eigentlich in ein eigenes Package.
|
718
1151
|
|
719
1152
|
TODO ergänzen wie man `SmartQueries` erstellt und verwendet.
|
@@ -722,6 +1155,8 @@ TODO ergänzen wie die Rückgabewerte von `SmartQueries` gestaltet werden sollte
|
|
722
1155
|
|
723
1156
|
### Business::Intelligence (BI) ExpenseByCategory (Ausgaben nach Kategorie)
|
724
1157
|
|
1158
|
+
> **DEPRECATED** Bitte verwende dieses Modul nicht mehr, es wird in Zukunft entfernt werden.
|
1159
|
+
|
725
1160
|
Der Endpunkt `/papierkram_api/v1/business_intelligence/expense_by_categories` liefert Informationen über die Ausgaben nach Kategorie. Die Informationen werden als `Hash` zurückgegeben.
|
726
1161
|
|
727
1162
|
#### alle Ausgaben eines Monats nach Kategorie
|
@@ -819,12 +1254,20 @@ puts pdf
|
|
819
1254
|
}
|
820
1255
|
```
|
821
1256
|
|
822
|
-
## Development
|
1257
|
+
## Development / Mitentwickeln
|
823
1258
|
|
824
1259
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
825
1260
|
|
826
1261
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
827
1262
|
|
1263
|
+
### Localhost 3000! 🤫
|
1264
|
+
|
1265
|
+
`DEBUG_LOCALHOST=true bin/console`
|
1266
|
+
|
1267
|
+
OR to make it stick:
|
1268
|
+
- Set `export DEBUG_LOCALHOST=true` in your `.env` or `.envrc` file.
|
1269
|
+
- Enjoy the magic: `bin/setup && bin/console` 🎉
|
1270
|
+
|
828
1271
|
## Contributing
|
829
1272
|
|
830
1273
|
Bug reports and pull requests are welcome on GitHub at https://github.com/simonneutert/papierkram_api_client.
|
data/UPGRADING.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## From 0.3 to 0.4
|
2
|
+
|
3
|
+
Some endpoints are calling `update` have changed. Instead of `update_by(id: 123, attributes: { ... })` you now use keywords e.g. `update_by(id: 123, name: 'New name')`.
|
4
|
+
|
5
|
+
Please check the [CHANGELOG](CHANGELOG.md) for more details.
|
6
|
+
|
7
|
+
- Income::Propositions
|
8
|
+
- Projects
|
9
|
+
- Contact::Companies
|
10
|
+
|
1
11
|
## From 0.2 to 0.3
|
2
12
|
|
3
13
|
Finding specific records has changed. Instead of `by(id: 123)` you now use `find_by(id: 123)`.
|
@@ -23,8 +23,10 @@ module PapierkramApi
|
|
23
23
|
def build_client!
|
24
24
|
@client = Faraday.new(url: @base_url) do |config|
|
25
25
|
config.request :authorization, 'Bearer', @api_key
|
26
|
+
config.request :multipart
|
26
27
|
config.request :json
|
27
28
|
config.response :json
|
29
|
+
|
28
30
|
config.adapter :httpx
|
29
31
|
yield(config) if block_given?
|
30
32
|
end
|
@@ -70,6 +72,11 @@ module PapierkramApi
|
|
70
72
|
PapierkramApi::V1::Endpoints::Income::Invoices.new(@client)
|
71
73
|
end
|
72
74
|
|
75
|
+
def income_payment_terms
|
76
|
+
@income_payment_terms ||=
|
77
|
+
PapierkramApi::V1::Endpoints::Income::PaymentTerms.new(@client)
|
78
|
+
end
|
79
|
+
|
73
80
|
def income_propositions
|
74
81
|
@income_propositions ||=
|
75
82
|
PapierkramApi::V1::Endpoints::Income::Propositions.new(@client)
|
@@ -98,6 +105,8 @@ module PapierkramApi
|
|
98
105
|
private
|
99
106
|
|
100
107
|
def base_url_env
|
108
|
+
return 'http://localhost:3000' if ENV.fetch('DEBUG_LOCALHOST', false).to_s == 'true'
|
109
|
+
|
101
110
|
"https://#{@subdomain}.papierkram.de"
|
102
111
|
end
|
103
112
|
end
|
@@ -15,6 +15,15 @@ module PapierkramApi
|
|
15
15
|
#
|
16
16
|
class Base
|
17
17
|
def expenses_by_category
|
18
|
+
warning = <<~MSG
|
19
|
+
[DEPRECATION] `expenses_by_category` is deprecated. #{' '}
|
20
|
+
It will be removed in a version after 0.4.0, most probably in 0.5.0.
|
21
|
+
|
22
|
+
[DEPRECATION] Support for RUBY 2.7 will be dropped#{' '}
|
23
|
+
in a version after 0.4.0, most probably in 0.5.0.
|
24
|
+
MSG
|
25
|
+
warn(warning)
|
26
|
+
|
18
27
|
@expenses_by_category ||= PapierkramApi::V1::BusinessIntelligence::ExpensesByCategory.new
|
19
28
|
end
|
20
29
|
end
|