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.
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
- **WERBUNG** (es ist ein Aufruf zur Mitarbeit 🫠)
14
- JETZT NEU! Ohne Lack und frei von Glamour!
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
- .update_by(id: 1, attributes: { name: 'Test GmbH' })
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
- attributes: {
386
- first_name: 'Max',
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
- .update_by(company_id: 1, id: 1, attributes: { first_name: 'Moritz' })
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
- attributes: {
551
- name: 'Software design',
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(id: 1, attributes: { name: 'Projekt 2' })
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