xml_laborabrechnungsdaten 0.1.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.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +58 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +8 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/lib/xml_laborabrechnungsdaten/member_container.rb +68 -0
- data/lib/xml_laborabrechnungsdaten/mwst_gruppe.rb +47 -0
- data/lib/xml_laborabrechnungsdaten/position.rb +40 -0
- data/lib/xml_laborabrechnungsdaten/rechnung.rb +98 -0
- data/lib/xml_laborabrechnungsdaten/version.rb +5 -0
- data/lib/xml_laborabrechnungsdaten.rb +43 -0
- data/sig/vdds_laborabrechnungsdaten_xml.rbs +4 -0
- data/xml_laborabrechnungsdaten.gemspec +33 -0
- metadata +93 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 41b9e7d17b5ec659b793af6c9ea49ba9c618772382f29ef69a624c364bfe5122
|
4
|
+
data.tar.gz: 33f498a934edce0ee79095cefe442f9a9ac8df5b7f24e1046acec18b2e8d68d8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bea3aa8536de5573e90148f45434d5053ae139e6c313d6cfd0e868abc38b3e3e4c0c636dbb1f3d33a7fa9a48e2b504512f96ce0b47d49c613444ce7bd49935e0
|
7
|
+
data.tar.gz: 3cb6b16977b4f10e47b293fa5101b9d979e3eed4496e1c88080de5e67861b97f60a8599eecb1a2f8fd2bee506a06c5e79a3794b85e920935b0dbe6682f4e1aa9
|
data/.rspec
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.3.6
|
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
xml_laborabrechnungsdaten (0.1.0)
|
5
|
+
builder (~> 3.2)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
builder (3.3.0)
|
11
|
+
date (3.4.1)
|
12
|
+
debug (1.10.0)
|
13
|
+
irb (~> 1.10)
|
14
|
+
reline (>= 0.3.8)
|
15
|
+
diff-lcs (1.6.1)
|
16
|
+
io-console (0.8.0)
|
17
|
+
irb (1.15.2)
|
18
|
+
pp (>= 0.6.0)
|
19
|
+
rdoc (>= 4.0.0)
|
20
|
+
reline (>= 0.4.2)
|
21
|
+
pp (0.6.2)
|
22
|
+
prettyprint
|
23
|
+
prettyprint (0.2.0)
|
24
|
+
psych (5.2.4)
|
25
|
+
date
|
26
|
+
stringio
|
27
|
+
rake (13.2.1)
|
28
|
+
rdoc (6.13.1)
|
29
|
+
psych (>= 4.0.0)
|
30
|
+
reline (0.6.1)
|
31
|
+
io-console (~> 0.5)
|
32
|
+
rspec (3.13.0)
|
33
|
+
rspec-core (~> 3.13.0)
|
34
|
+
rspec-expectations (~> 3.13.0)
|
35
|
+
rspec-mocks (~> 3.13.0)
|
36
|
+
rspec-core (3.13.3)
|
37
|
+
rspec-support (~> 3.13.0)
|
38
|
+
rspec-expectations (3.13.4)
|
39
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
40
|
+
rspec-support (~> 3.13.0)
|
41
|
+
rspec-mocks (3.13.4)
|
42
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
43
|
+
rspec-support (~> 3.13.0)
|
44
|
+
rspec-support (3.13.3)
|
45
|
+
stringio (3.1.7)
|
46
|
+
|
47
|
+
PLATFORMS
|
48
|
+
arm64-darwin-23
|
49
|
+
ruby
|
50
|
+
|
51
|
+
DEPENDENCIES
|
52
|
+
debug (>= 1.0.0)
|
53
|
+
rake (~> 13.0)
|
54
|
+
rspec (~> 3.0)
|
55
|
+
xml_laborabrechnungsdaten!
|
56
|
+
|
57
|
+
BUNDLED WITH
|
58
|
+
2.5.22
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2025 florian2
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# XML Laborabrechnungsdaten
|
2
|
+
|
3
|
+
This gem is a ruby implementation of the XML interface for data exchange between dental laboratories and dental practices. It's use for patients with public health insurance has been part of dental billing since January 1, 2012. The interface is maintained and further developed in cooperation between the KZBV, the VDZI, and the VDDS. The goal of their collaboration is to ensure stable and effective processes in dental laboratories and dental practices.
|
4
|
+
|
5
|
+
This gem and or the author are in no way associated with VDDS, KZBV or VDZI.
|
6
|
+
|
7
|
+
For more information see https://www.vdds.de/schnittstellen/labor/
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'xml_laborabrechnungsdaten'
|
15
|
+
```
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
$ bundle install
|
20
|
+
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install xml_laborabrechnungsdaten
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
See rspec test case for a usage example.
|
28
|
+
|
29
|
+
## Development
|
30
|
+
|
31
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
32
|
+
|
33
|
+
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).
|
34
|
+
|
35
|
+
## Contributing
|
36
|
+
|
37
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/florian2/xml_laborabrechnungsdaten
|
38
|
+
|
39
|
+
## License
|
40
|
+
|
41
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "bundler/setup"
|
5
|
+
require "xml_laborabrechnungsdaten"
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require "irb"
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
module XmlLaborabrechnungsdaten
|
2
|
+
module MemberContainer
|
3
|
+
def self.included(base)
|
4
|
+
base.instance_variable_set :@members, {}
|
5
|
+
base.extend ClassMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(**kwargs)
|
9
|
+
self.class.after_initialize.each do |block|
|
10
|
+
instance_eval(&block)
|
11
|
+
end
|
12
|
+
|
13
|
+
kwargs.each do |k, v|
|
14
|
+
self[k] = v
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def members
|
19
|
+
self.class.instance_variable_get :@members
|
20
|
+
end
|
21
|
+
|
22
|
+
def [](key)
|
23
|
+
send(key)
|
24
|
+
end
|
25
|
+
|
26
|
+
def []=(key, value)
|
27
|
+
send(members[key].fetch(:setter_name), value)
|
28
|
+
end
|
29
|
+
|
30
|
+
module ClassMethods
|
31
|
+
# @param [String] member_name
|
32
|
+
# @param [Array<Class>, Class] type
|
33
|
+
# @param [Object] default
|
34
|
+
# @param [TrueClass, FalseClass] optional When true, omits tag rather than rendering an empty tag on nil
|
35
|
+
# @param [Proc] transform_value A Proc which is called with the input value to perform type conversion.
|
36
|
+
def member(member_name, type: nil, default: nil, optional: false, transform_value: nil)
|
37
|
+
attr_reader member_name
|
38
|
+
setter_name = :"#{member_name}="
|
39
|
+
@members[member_name] = { optional: optional, setter_name: setter_name }
|
40
|
+
|
41
|
+
if default
|
42
|
+
after_initialize do
|
43
|
+
send(setter_name, default)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
define_method setter_name do |in_value|
|
48
|
+
in_value = transform_value.call(in_value) if transform_value
|
49
|
+
|
50
|
+
if type && !in_value.nil? && Array(type).none? { |t| in_value.is_a?(t) }
|
51
|
+
raise ArgumentError, "expected #{type} for :#{member_name}, got: #{in_value.class}"
|
52
|
+
end
|
53
|
+
|
54
|
+
instance_variable_set :"@#{member_name}", in_value
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def after_initialize(&block)
|
59
|
+
@after_initialize_blocks ||= []
|
60
|
+
if block
|
61
|
+
@after_initialize_blocks << block
|
62
|
+
else
|
63
|
+
@after_initialize_blocks
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module XmlLaborabrechnungsdaten
|
2
|
+
class MwstGruppe
|
3
|
+
include MemberContainer
|
4
|
+
|
5
|
+
# @!attribute zwischensumme_netto
|
6
|
+
# @return [String] Net subtotal amount
|
7
|
+
member :zwischensumme_netto, type: String
|
8
|
+
|
9
|
+
# @!attribute mehrwertsteuersatz
|
10
|
+
# @return [String] VAT rate
|
11
|
+
member :mehrwertsteuersatz, type: String
|
12
|
+
|
13
|
+
# @!attribute mehrwertsteuerbetrag
|
14
|
+
# @return [String] VAT amount
|
15
|
+
member :mehrwertsteuerbetrag, type: String
|
16
|
+
|
17
|
+
# @!attribute positionen
|
18
|
+
# @return [Array<Position>] List of positions in this VAT group
|
19
|
+
member :positionen, type: Array, default: []
|
20
|
+
|
21
|
+
# Adds a position to the VAT group
|
22
|
+
# @param position [Position] Position to add
|
23
|
+
# @return [Array<Position>] Updated list of positions
|
24
|
+
def add_position(position)
|
25
|
+
positionen << position
|
26
|
+
positionen
|
27
|
+
end
|
28
|
+
|
29
|
+
# Generates XML representation of the VAT group
|
30
|
+
# @param xml [Builder::XmlMarkup] XML builder instance
|
31
|
+
# @return [void]
|
32
|
+
def to_xml(xml)
|
33
|
+
attributes = {
|
34
|
+
Zwischensumme_netto: zwischensumme_netto,
|
35
|
+
Mehrwertsteuersatz: mehrwertsteuersatz,
|
36
|
+
Mehrwertsteuerbetrag: mehrwertsteuerbetrag
|
37
|
+
}.compact # Removes nil values
|
38
|
+
|
39
|
+
xml.tag!(:"MWST-Gruppe", attributes) do
|
40
|
+
# Add all positions as child elements
|
41
|
+
positionen.each do |position|
|
42
|
+
position.to_xml(xml)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module XmlLaborabrechnungsdaten
|
2
|
+
class Position
|
3
|
+
include MemberContainer
|
4
|
+
|
5
|
+
# @!attribute art
|
6
|
+
# @return [String] Type of the position (e.g., "BEL")
|
7
|
+
member :art, type: String
|
8
|
+
|
9
|
+
# @!attribute nummer
|
10
|
+
# @return [String] Number/identifier of the position
|
11
|
+
member :nummer, type: String
|
12
|
+
|
13
|
+
# @!attribute beschreibung
|
14
|
+
# @return [String] Description of the position
|
15
|
+
member :beschreibung, type: String
|
16
|
+
|
17
|
+
# @!attribute einzelpreis
|
18
|
+
# @return [String] Unit price
|
19
|
+
member :einzelpreis, type: String
|
20
|
+
|
21
|
+
# @!attribute menge
|
22
|
+
# @return [String] Quantity
|
23
|
+
member :menge, type: String
|
24
|
+
|
25
|
+
# Generates XML representation of the position
|
26
|
+
# @param xml [Builder::XmlMarkup] XML builder instance
|
27
|
+
# @return [void]
|
28
|
+
def to_xml(xml)
|
29
|
+
attributes = {
|
30
|
+
Art: art,
|
31
|
+
Nummer: nummer,
|
32
|
+
Beschreibung: beschreibung,
|
33
|
+
Einzelpreis: einzelpreis,
|
34
|
+
Menge: menge
|
35
|
+
}.compact # Removes nil values
|
36
|
+
|
37
|
+
xml.Position(attributes)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module XmlLaborabrechnungsdaten
|
2
|
+
class Rechnung
|
3
|
+
include MemberContainer
|
4
|
+
|
5
|
+
# @!attribute laborname
|
6
|
+
# @return [String]
|
7
|
+
member :laborname, type: String
|
8
|
+
|
9
|
+
# @!attribute labor_id
|
10
|
+
# @return [String]
|
11
|
+
member :labor_id, type: String
|
12
|
+
|
13
|
+
# @!attribute herstellungsort
|
14
|
+
# @return [String]
|
15
|
+
member :herstellungsort, type: String
|
16
|
+
|
17
|
+
# @!attribute abrechnungsbereich
|
18
|
+
# @return [String]
|
19
|
+
member :abrechnungsbereich, type: String
|
20
|
+
|
21
|
+
# @!attribute laborlieferdatum
|
22
|
+
# @return [String]
|
23
|
+
member :laborlieferdatum, type: String
|
24
|
+
|
25
|
+
# @!attribute laborrechnungsnummer
|
26
|
+
# @return [String]
|
27
|
+
member :laborrechnungsnummer, type: String
|
28
|
+
|
29
|
+
# @!attribute auftragsnummer
|
30
|
+
# @return [String]
|
31
|
+
member :auftragsnummer, type: String
|
32
|
+
|
33
|
+
# @!attribute gesamtbetrag_netto
|
34
|
+
# @return [String]
|
35
|
+
member :gesamtbetrag_netto, type: String
|
36
|
+
|
37
|
+
# @!attribute mehrwertsteuer_gesamt
|
38
|
+
# @return [String]
|
39
|
+
member :mehrwertsteuer_gesamt, type: String
|
40
|
+
|
41
|
+
# @!attribute gesamtbetrag_brutto
|
42
|
+
# @return [String]
|
43
|
+
member :gesamtbetrag_brutto, type: String
|
44
|
+
|
45
|
+
# @!attribute laborsoftwarehersteller
|
46
|
+
# @return [String]
|
47
|
+
member :laborsoftwarehersteller, type: String
|
48
|
+
|
49
|
+
# @!attribute laborsoftware
|
50
|
+
# @return [String]
|
51
|
+
member :laborsoftware, type: String
|
52
|
+
|
53
|
+
# @!attribute laborsoftwareversion
|
54
|
+
# @return [String]
|
55
|
+
member :laborsoftwareversion, type: String
|
56
|
+
|
57
|
+
# @!attribute mwst_gruppen
|
58
|
+
# @return [Array<MwstGruppe>] List of VAT groups in this invoice
|
59
|
+
member :mwst_gruppen, type: Array, default: []
|
60
|
+
|
61
|
+
# Adds a VAT group to the invoice
|
62
|
+
# @param mwst_gruppe [MwstGruppe] VAT group to add
|
63
|
+
# @return [Array<MwstGruppe>] Updated list of VAT groups
|
64
|
+
def add_mwst_gruppe(mwst_gruppe)
|
65
|
+
@mwst_gruppen ||= []
|
66
|
+
@mwst_gruppen << mwst_gruppe
|
67
|
+
@mwst_gruppen
|
68
|
+
end
|
69
|
+
|
70
|
+
# Generates XML representation of the invoice
|
71
|
+
# @param xml [Builder::XmlMarkup] XML builder instance
|
72
|
+
# @return [void]
|
73
|
+
def to_xml(xml)
|
74
|
+
attributes = {
|
75
|
+
Laborsoftwarehersteller: laborsoftwarehersteller,
|
76
|
+
Laborsoftware: laborsoftware,
|
77
|
+
Laborsoftwareversion: laborsoftwareversion,
|
78
|
+
Laborname: laborname,
|
79
|
+
"Labor-ID": labor_id,
|
80
|
+
Herstellungsort: herstellungsort,
|
81
|
+
Abrechnungsbereich: abrechnungsbereich,
|
82
|
+
Laborlieferdatum: laborlieferdatum,
|
83
|
+
Laborrechnungsnummer: laborrechnungsnummer,
|
84
|
+
Auftragsnummer: auftragsnummer,
|
85
|
+
Gesamtbetrag_netto: gesamtbetrag_netto,
|
86
|
+
Mehrwertsteuer_gesamt: mehrwertsteuer_gesamt,
|
87
|
+
Gesamtbetrag_brutto: gesamtbetrag_brutto
|
88
|
+
}.compact # Removes nil values
|
89
|
+
|
90
|
+
xml.Rechnung(attributes) do
|
91
|
+
# Add all VAT groups as child elements
|
92
|
+
mwst_gruppen.each do |mwst_gruppe|
|
93
|
+
mwst_gruppe.to_xml(xml)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative "xml_laborabrechnungsdaten/version"
|
2
|
+
require_relative "xml_laborabrechnungsdaten/member_container"
|
3
|
+
require_relative "xml_laborabrechnungsdaten/rechnung"
|
4
|
+
require_relative "xml_laborabrechnungsdaten/mwst_gruppe"
|
5
|
+
require_relative "xml_laborabrechnungsdaten/position"
|
6
|
+
require "builder"
|
7
|
+
|
8
|
+
module XmlLaborabrechnungsdaten
|
9
|
+
class Error < StandardError; end
|
10
|
+
|
11
|
+
class Document
|
12
|
+
include MemberContainer
|
13
|
+
|
14
|
+
# @!attribute version
|
15
|
+
# @return [String] Version of the XML schema
|
16
|
+
member :version, type: String, default: "4.5"
|
17
|
+
|
18
|
+
# @!attribute rechnung
|
19
|
+
# @return [Rechnung] The invoice details
|
20
|
+
member :rechnung, type: Rechnung
|
21
|
+
|
22
|
+
# Generates the complete XML document
|
23
|
+
# @param indent [Integer] Indentation level for pretty printing
|
24
|
+
# @param target [String, IO] The output target
|
25
|
+
# @return [String] The generated XML
|
26
|
+
def to_xml(indent: 2, target: "")
|
27
|
+
xml = Builder::XmlMarkup.new(indent: indent, target: target)
|
28
|
+
xml.instruct! :xml, version: "1.0", encoding: "UTF-8"
|
29
|
+
|
30
|
+
# Root element with namespaces and schema location
|
31
|
+
xml.Laborabrechnung(
|
32
|
+
"xsi:noNamespaceSchemaLocation" => "Laborabrechnungsdaten_(KZBV-VDZI-VDDS)_(V4-5).xsd",
|
33
|
+
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
|
34
|
+
"Version" => version
|
35
|
+
) do
|
36
|
+
# Add the invoice if it exists
|
37
|
+
rechnung&.to_xml(xml)
|
38
|
+
end
|
39
|
+
|
40
|
+
target
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/xml_laborabrechnungsdaten/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "xml_laborabrechnungsdaten"
|
7
|
+
spec.version = XmlLaborabrechnungsdaten::VERSION
|
8
|
+
spec.authors = ["Florian Görsdorf"]
|
9
|
+
spec.email = ["florian.goersdorf@dentatool.de"]
|
10
|
+
|
11
|
+
spec.summary = "Library to create XML invoice representations of dental labs invoices following the german VDDS XML exchange standart between dental practices and dental labs"
|
12
|
+
spec.description = "A ruby gem to generate XML for invoice exchange between dental lab and dentist practices following the standard from VDDS, KZBV and VDZI."
|
13
|
+
spec.homepage = "https://github.com/florian2/xml_laborabrechnungsdaten"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = ">= 2.6.0"
|
16
|
+
|
17
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
18
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
19
|
+
|
20
|
+
# Specify which files should be added to the gem when it is released.
|
21
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
22
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
23
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
24
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
spec.bindir = "exe"
|
28
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
29
|
+
spec.require_paths = ["lib"]
|
30
|
+
|
31
|
+
spec.add_dependency "builder", "~> 3.2"
|
32
|
+
spec.add_development_dependency "debug", ">= 1.0.0"
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xml_laborabrechnungsdaten
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Florian Görsdorf
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2025-05-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: builder
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: debug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.0
|
41
|
+
description: A ruby gem to generate XML for invoice exchange between dental lab and
|
42
|
+
dentist practices following the standard from VDDS, KZBV and VDZI.
|
43
|
+
email:
|
44
|
+
- florian.goersdorf@dentatool.de
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- ".rspec"
|
50
|
+
- ".ruby-version"
|
51
|
+
- CHANGELOG.md
|
52
|
+
- Gemfile
|
53
|
+
- Gemfile.lock
|
54
|
+
- LICENSE.txt
|
55
|
+
- README.md
|
56
|
+
- Rakefile
|
57
|
+
- bin/console
|
58
|
+
- bin/setup
|
59
|
+
- lib/xml_laborabrechnungsdaten.rb
|
60
|
+
- lib/xml_laborabrechnungsdaten/member_container.rb
|
61
|
+
- lib/xml_laborabrechnungsdaten/mwst_gruppe.rb
|
62
|
+
- lib/xml_laborabrechnungsdaten/position.rb
|
63
|
+
- lib/xml_laborabrechnungsdaten/rechnung.rb
|
64
|
+
- lib/xml_laborabrechnungsdaten/version.rb
|
65
|
+
- sig/vdds_laborabrechnungsdaten_xml.rbs
|
66
|
+
- xml_laborabrechnungsdaten.gemspec
|
67
|
+
homepage: https://github.com/florian2/xml_laborabrechnungsdaten
|
68
|
+
licenses:
|
69
|
+
- MIT
|
70
|
+
metadata:
|
71
|
+
homepage_uri: https://github.com/florian2/xml_laborabrechnungsdaten
|
72
|
+
source_code_uri: https://github.com/florian2/xml_laborabrechnungsdaten
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 2.6.0
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubygems_version: 3.5.22
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: Library to create XML invoice representations of dental labs invoices following
|
92
|
+
the german VDDS XML exchange standart between dental practices and dental labs
|
93
|
+
test_files: []
|