mindee 3.11.0 → 3.13.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 +4 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +27 -0
- data/README.md +23 -23
- data/Rakefile +5 -0
- data/bin/mindee.rb +7 -1
- data/docs/bank_account_details_v2.md +5 -1
- data/docs/bank_check_v1.md +6 -2
- data/docs/bank_statement_fr_v1.md +3 -0
- data/docs/barcode_reader_v1.md +5 -1
- data/docs/bill_of_lading_v1.md +202 -0
- data/docs/carte_grise_v1.md +5 -1
- data/docs/carte_vitale_v1.md +5 -1
- data/docs/code_samples/bill_of_lading_v1_async.txt +19 -0
- data/docs/code_samples/energy_bill_fra_v1_async.txt +19 -0
- data/docs/code_samples/financial_document_v1_async.txt +19 -0
- data/docs/code_samples/invoices_v4_async.txt +19 -0
- data/docs/code_samples/nutrition_facts_v1_async.txt +19 -0
- data/docs/code_samples/payslip_fra_v2_async.txt +19 -0
- data/docs/code_samples/us_healthcare_cards_v1_async.txt +19 -0
- data/docs/cropper_v1.md +6 -2
- data/docs/custom_v1.md +5 -3
- data/docs/energy_bill_fra_v1.md +249 -0
- data/docs/eu_driver_license_v1.md +6 -2
- data/docs/expense_receipts_v5.md +38 -11
- data/docs/financial_document_v1.md +80 -23
- data/docs/generated_v1.md +3 -0
- data/docs/getting_started.md +3 -0
- data/docs/idcard_fr_v2.md +15 -2
- data/docs/international_id_v2.md +13 -1
- data/docs/invoice_splitter_v1.md +16 -13
- data/docs/invoices_v4.md +57 -23
- data/docs/license_plates_v1.md +5 -1
- data/docs/multi_receipts_detector_v1.md +5 -1
- data/docs/nutrition_facts_v1.md +295 -0
- data/docs/passport_v1.md +5 -1
- data/docs/payslip_fra_v2.md +218 -0
- data/docs/proof_of_address_v1.md +5 -1
- data/docs/resume_v1.md +24 -1
- data/docs/us_driver_license_v1.md +6 -2
- data/docs/us_healthcare_cards_v1.md +208 -0
- data/docs/us_mail_v2.md +5 -1
- data/docs/us_w9_v1.md +6 -2
- data/examples/auto_invoice_splitter_extraction.rb +43 -0
- data/lib/mindee/client.rb +20 -8
- data/lib/mindee/extraction/common/extracted_image.rb +73 -0
- data/lib/mindee/extraction/common/image_extractor.rb +189 -0
- data/lib/mindee/extraction/common.rb +4 -0
- data/lib/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.rb +26 -0
- data/lib/mindee/extraction/multi_receipts_extractor.rb +3 -0
- data/lib/mindee/extraction/pdf_extractor/extracted_pdf.rb +55 -0
- data/lib/mindee/extraction/pdf_extractor/pdf_extractor.rb +111 -0
- data/lib/mindee/extraction/pdf_extractor.rb +4 -0
- data/lib/mindee/extraction/tax_extractor/tax_extractor.rb +322 -0
- data/lib/mindee/extraction/tax_extractor.rb +1 -320
- data/lib/mindee/extraction.rb +3 -0
- data/lib/mindee/http/endpoint.rb +18 -6
- data/lib/mindee/input/sources.rb +8 -0
- data/lib/mindee/parsing/common/api_response.rb +1 -1
- data/lib/mindee/parsing/common/document.rb +31 -1
- data/lib/mindee/parsing/common/extras/cropper_extra.rb +29 -0
- data/lib/mindee/parsing/common/extras/extras.rb +50 -0
- data/lib/mindee/parsing/common/extras/full_text_ocr_extra.rb +32 -0
- data/lib/mindee/parsing/common/extras.rb +5 -0
- data/lib/mindee/parsing/common/page.rb +5 -0
- data/lib/mindee/parsing/standard/base_field.rb +1 -0
- data/lib/mindee/parsing/standard/company_registration_field.rb +17 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1.rb +39 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_carrier.rb +52 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_carrier_item.rb +95 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_consignee.rb +58 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_document.rb +136 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_notify_party.rb +58 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_page.rb +32 -0
- data/lib/mindee/product/bill_of_lading/bill_of_lading_v1_shipper.rb +58 -0
- data/lib/mindee/product/financial_document/financial_document_v1_document.rb +3 -1
- data/lib/mindee/product/financial_document/financial_document_v1_line_item.rb +22 -1
- data/lib/mindee/product/financial_document/financial_document_v1_page.rb +1 -1
- data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.rb +4 -15
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1.rb +41 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_document.rb +235 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_consumer.rb +48 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_supplier.rb +48 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_energy_usage.rb +97 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_meter_detail.rb +54 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_page.rb +34 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_subscription.rb +97 -0
- data/lib/mindee/product/fr/energy_bill/energy_bill_v1_taxes_and_contribution.rb +97 -0
- data/lib/mindee/product/fr/payslip/payslip_v2.rb +41 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_bank_account_detail.rb +54 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_document.rb +128 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_employee.rb +78 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_employer.rb +78 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_employment.rb +72 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_page.rb +34 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_pay_detail.rb +100 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_pay_period.rb +66 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_pto.rb +56 -0
- data/lib/mindee/product/fr/payslip/payslip_v2_salary_detail.rb +81 -0
- data/lib/mindee/product/international_id/international_id_v2_document.rb +1 -1
- data/lib/mindee/product/international_id/international_id_v2_page.rb +1 -1
- data/lib/mindee/product/invoice/invoice_v4_document.rb +3 -1
- data/lib/mindee/product/invoice/invoice_v4_line_item.rb +22 -1
- data/lib/mindee/product/invoice/invoice_v4_page.rb +1 -1
- data/lib/mindee/product/invoice_splitter/invoice_splitter_v1_document.rb +1 -1
- data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rb +1 -1
- data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rb +1 -1
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1.rb +39 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_added_sugar.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_calorie.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_cholesterol.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_dietary_fiber.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_document.rb +173 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_nutrient.rb +87 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_page.rb +32 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_protein.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_saturated_fat.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_serving_size.rb +46 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_sodium.rb +58 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_carbohydrate.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_fat.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_total_sugar.rb +52 -0
- data/lib/mindee/product/nutrition_facts_label/nutrition_facts_label_v1_trans_fat.rb +52 -0
- data/lib/mindee/product/receipt/receipt_v5_document.rb +1 -1
- data/lib/mindee/product/receipt/receipt_v5_line_item.rb +11 -1
- data/lib/mindee/product/receipt/receipt_v5_page.rb +1 -1
- data/lib/mindee/product/resume/resume_v1_certificate.rb +11 -1
- data/lib/mindee/product/resume/resume_v1_education.rb +14 -1
- data/lib/mindee/product/resume/resume_v1_language.rb +9 -1
- data/lib/mindee/product/resume/resume_v1_professional_experience.rb +15 -1
- data/lib/mindee/product/resume/resume_v1_social_networks_url.rb +9 -1
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1.rb +41 -0
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1_copay.rb +65 -0
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1_document.rb +127 -0
- data/lib/mindee/product/us/healthcare_card/healthcare_card_v1_page.rb +34 -0
- data/lib/mindee/product/us/us_mail/us_mail_v2_recipient_address.rb +14 -1
- data/lib/mindee/product/us/us_mail/us_mail_v2_sender_address.rb +5 -17
- data/lib/mindee/product.rb +6 -1
- data/lib/mindee/version.rb +1 -1
- data/mindee.gemspec +1 -0
- metadata +91 -3
- /data/lib/mindee/extraction/{ocr_extractor.rb → tax_extractor/ocr_extractor.rb} +0 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Product
|
7
|
+
module FR
|
8
|
+
module EnergyBill
|
9
|
+
# Details of Taxes and Contributions.
|
10
|
+
class EnergyBillV1TaxesAndContribution < Mindee::Parsing::Standard::FeatureField
|
11
|
+
include Mindee::Parsing::Standard
|
12
|
+
# Description or details of the Taxes and Contributions.
|
13
|
+
# @return [String]
|
14
|
+
attr_reader :description
|
15
|
+
# The end date of the Taxes and Contributions.
|
16
|
+
# @return [String]
|
17
|
+
attr_reader :end_date
|
18
|
+
# The start date of the Taxes and Contributions.
|
19
|
+
# @return [String]
|
20
|
+
attr_reader :start_date
|
21
|
+
# The rate of tax applied to the total cost.
|
22
|
+
# @return [Float]
|
23
|
+
attr_reader :tax_rate
|
24
|
+
# The total cost of Taxes and Contributions.
|
25
|
+
# @return [Float]
|
26
|
+
attr_reader :total
|
27
|
+
# The price per unit of Taxes and Contributions.
|
28
|
+
# @return [Float]
|
29
|
+
attr_reader :unit_price
|
30
|
+
|
31
|
+
# @param prediction [Hash]
|
32
|
+
# @param page_id [Integer, nil]
|
33
|
+
def initialize(prediction, page_id)
|
34
|
+
super(prediction, page_id)
|
35
|
+
@description = prediction['description']
|
36
|
+
@end_date = prediction['end_date']
|
37
|
+
@start_date = prediction['start_date']
|
38
|
+
@tax_rate = prediction['tax_rate']
|
39
|
+
@total = prediction['total']
|
40
|
+
@unit_price = prediction['unit_price']
|
41
|
+
@page_id = page_id
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [Hash]
|
45
|
+
def printable_values
|
46
|
+
printable = {}
|
47
|
+
printable[:description] = format_for_display(@description)
|
48
|
+
printable[:end_date] = format_for_display(@end_date)
|
49
|
+
printable[:start_date] = format_for_display(@start_date)
|
50
|
+
printable[:tax_rate] = @tax_rate.nil? ? '' : Field.float_to_string(@tax_rate)
|
51
|
+
printable[:total] = @total.nil? ? '' : Field.float_to_string(@total)
|
52
|
+
printable[:unit_price] = @unit_price.nil? ? '' : Field.float_to_string(@unit_price)
|
53
|
+
printable
|
54
|
+
end
|
55
|
+
|
56
|
+
# @return [Hash]
|
57
|
+
def table_printable_values
|
58
|
+
printable = {}
|
59
|
+
printable[:description] = format_for_display(@description, 36)
|
60
|
+
printable[:end_date] = format_for_display(@end_date, 10)
|
61
|
+
printable[:start_date] = format_for_display(@start_date, nil)
|
62
|
+
printable[:tax_rate] = @tax_rate.nil? ? '' : Field.float_to_string(@tax_rate)
|
63
|
+
printable[:total] = @total.nil? ? '' : Field.float_to_string(@total)
|
64
|
+
printable[:unit_price] = @unit_price.nil? ? '' : Field.float_to_string(@unit_price)
|
65
|
+
printable
|
66
|
+
end
|
67
|
+
|
68
|
+
# @return [String]
|
69
|
+
def to_table_line
|
70
|
+
printable = table_printable_values
|
71
|
+
out_str = String.new
|
72
|
+
out_str << format('| %- 37s', printable[:description])
|
73
|
+
out_str << format('| %- 11s', printable[:end_date])
|
74
|
+
out_str << format('| %- 11s', printable[:start_date])
|
75
|
+
out_str << format('| %- 9s', printable[:tax_rate])
|
76
|
+
out_str << format('| %- 10s', printable[:total])
|
77
|
+
out_str << format('| %- 11s', printable[:unit_price])
|
78
|
+
out_str << '|'
|
79
|
+
end
|
80
|
+
|
81
|
+
# @return [String]
|
82
|
+
def to_s
|
83
|
+
printable = printable_values
|
84
|
+
out_str = String.new
|
85
|
+
out_str << "\n :Description: #{printable[:description]}"
|
86
|
+
out_str << "\n :End Date: #{printable[:end_date]}"
|
87
|
+
out_str << "\n :Start Date: #{printable[:start_date]}"
|
88
|
+
out_str << "\n :Tax Rate: #{printable[:tax_rate]}"
|
89
|
+
out_str << "\n :Total: #{printable[:total]}"
|
90
|
+
out_str << "\n :Unit Price: #{printable[:unit_price]}"
|
91
|
+
out_str
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
require_relative 'payslip_v2_document'
|
5
|
+
require_relative 'payslip_v2_page'
|
6
|
+
|
7
|
+
module Mindee
|
8
|
+
module Product
|
9
|
+
module FR
|
10
|
+
# Payslip module.
|
11
|
+
module Payslip
|
12
|
+
# Payslip API version 2 inference prediction.
|
13
|
+
class PayslipV2 < Mindee::Parsing::Common::Inference
|
14
|
+
@endpoint_name = 'payslip_fra'
|
15
|
+
@endpoint_version = '2'
|
16
|
+
|
17
|
+
# @param prediction [Hash]
|
18
|
+
def initialize(prediction)
|
19
|
+
super
|
20
|
+
@prediction = PayslipV2Document.new(prediction['prediction'], nil)
|
21
|
+
@pages = []
|
22
|
+
prediction['pages'].each do |page|
|
23
|
+
if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
|
24
|
+
@pages.push(PayslipV2Page.new(page))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class << self
|
30
|
+
# Name of the endpoint for this product.
|
31
|
+
# @return [String]
|
32
|
+
attr_reader :endpoint_name
|
33
|
+
# Version for this product.
|
34
|
+
# @return [String]
|
35
|
+
attr_reader :endpoint_version
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Product
|
7
|
+
module FR
|
8
|
+
module Payslip
|
9
|
+
# Information about the employee's bank account.
|
10
|
+
class PayslipV2BankAccountDetail < Mindee::Parsing::Standard::FeatureField
|
11
|
+
include Mindee::Parsing::Standard
|
12
|
+
# The name of the bank.
|
13
|
+
# @return [String]
|
14
|
+
attr_reader :bank_name
|
15
|
+
# The IBAN of the bank account.
|
16
|
+
# @return [String]
|
17
|
+
attr_reader :iban
|
18
|
+
# The SWIFT code of the bank.
|
19
|
+
# @return [String]
|
20
|
+
attr_reader :swift
|
21
|
+
|
22
|
+
# @param prediction [Hash]
|
23
|
+
# @param page_id [Integer, nil]
|
24
|
+
def initialize(prediction, page_id)
|
25
|
+
super(prediction, page_id)
|
26
|
+
@bank_name = prediction['bank_name']
|
27
|
+
@iban = prediction['iban']
|
28
|
+
@swift = prediction['swift']
|
29
|
+
@page_id = page_id
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [Hash]
|
33
|
+
def printable_values
|
34
|
+
printable = {}
|
35
|
+
printable[:bank_name] = format_for_display(@bank_name)
|
36
|
+
printable[:iban] = format_for_display(@iban)
|
37
|
+
printable[:swift] = format_for_display(@swift)
|
38
|
+
printable
|
39
|
+
end
|
40
|
+
|
41
|
+
# @return [String]
|
42
|
+
def to_s
|
43
|
+
printable = printable_values
|
44
|
+
out_str = String.new
|
45
|
+
out_str << "\n :Bank Name: #{printable[:bank_name]}"
|
46
|
+
out_str << "\n :IBAN: #{printable[:iban]}"
|
47
|
+
out_str << "\n :SWIFT: #{printable[:swift]}"
|
48
|
+
out_str
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
require_relative 'payslip_v2_employee'
|
5
|
+
require_relative 'payslip_v2_employer'
|
6
|
+
require_relative 'payslip_v2_bank_account_detail'
|
7
|
+
require_relative 'payslip_v2_employment'
|
8
|
+
require_relative 'payslip_v2_salary_detail'
|
9
|
+
require_relative 'payslip_v2_pay_detail'
|
10
|
+
require_relative 'payslip_v2_pto'
|
11
|
+
require_relative 'payslip_v2_pay_period'
|
12
|
+
|
13
|
+
module Mindee
|
14
|
+
module Product
|
15
|
+
module FR
|
16
|
+
module Payslip
|
17
|
+
# Payslip API version 2.0 document data.
|
18
|
+
class PayslipV2Document < Mindee::Parsing::Common::Prediction
|
19
|
+
include Mindee::Parsing::Standard
|
20
|
+
# Information about the employee's bank account.
|
21
|
+
# @return [Mindee::Product::FR::Payslip::PayslipV2BankAccountDetail]
|
22
|
+
attr_reader :bank_account_details
|
23
|
+
# Information about the employee.
|
24
|
+
# @return [Mindee::Product::FR::Payslip::PayslipV2Employee]
|
25
|
+
attr_reader :employee
|
26
|
+
# Information about the employer.
|
27
|
+
# @return [Mindee::Product::FR::Payslip::PayslipV2Employer]
|
28
|
+
attr_reader :employer
|
29
|
+
# Information about the employment.
|
30
|
+
# @return [Mindee::Product::FR::Payslip::PayslipV2Employment]
|
31
|
+
attr_reader :employment
|
32
|
+
# Detailed information about the pay.
|
33
|
+
# @return [Mindee::Product::FR::Payslip::PayslipV2PayDetail]
|
34
|
+
attr_reader :pay_detail
|
35
|
+
# Information about the pay period.
|
36
|
+
# @return [Mindee::Product::FR::Payslip::PayslipV2PayPeriod]
|
37
|
+
attr_reader :pay_period
|
38
|
+
# Information about paid time off.
|
39
|
+
# @return [Mindee::Product::FR::Payslip::PayslipV2Pto]
|
40
|
+
attr_reader :pto
|
41
|
+
# Detailed information about the earnings.
|
42
|
+
# @return [Array<Mindee::Product::FR::Payslip::PayslipV2SalaryDetail>]
|
43
|
+
attr_reader :salary_details
|
44
|
+
|
45
|
+
# @param prediction [Hash]
|
46
|
+
# @param page_id [Integer, nil]
|
47
|
+
def initialize(prediction, page_id)
|
48
|
+
super()
|
49
|
+
@bank_account_details = PayslipV2BankAccountDetail.new(prediction['bank_account_details'], page_id)
|
50
|
+
@employee = PayslipV2Employee.new(prediction['employee'], page_id)
|
51
|
+
@employer = PayslipV2Employer.new(prediction['employer'], page_id)
|
52
|
+
@employment = PayslipV2Employment.new(prediction['employment'], page_id)
|
53
|
+
@pay_detail = PayslipV2PayDetail.new(prediction['pay_detail'], page_id)
|
54
|
+
@pay_period = PayslipV2PayPeriod.new(prediction['pay_period'], page_id)
|
55
|
+
@pto = PayslipV2Pto.new(prediction['pto'], page_id)
|
56
|
+
@salary_details = []
|
57
|
+
prediction['salary_details'].each do |item|
|
58
|
+
@salary_details.push(PayslipV2SalaryDetail.new(item, page_id))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [String]
|
63
|
+
def to_s
|
64
|
+
employee = @employee.to_s
|
65
|
+
employer = @employer.to_s
|
66
|
+
bank_account_details = @bank_account_details.to_s
|
67
|
+
employment = @employment.to_s
|
68
|
+
salary_details = salary_details_to_s
|
69
|
+
pay_detail = @pay_detail.to_s
|
70
|
+
pto = @pto.to_s
|
71
|
+
pay_period = @pay_period.to_s
|
72
|
+
out_str = String.new
|
73
|
+
out_str << "\n:Employee:"
|
74
|
+
out_str << employee
|
75
|
+
out_str << "\n:Employer:"
|
76
|
+
out_str << employer
|
77
|
+
out_str << "\n:Bank Account Details:"
|
78
|
+
out_str << bank_account_details
|
79
|
+
out_str << "\n:Employment:"
|
80
|
+
out_str << employment
|
81
|
+
out_str << "\n:Salary Details:"
|
82
|
+
out_str << salary_details
|
83
|
+
out_str << "\n:Pay Detail:"
|
84
|
+
out_str << pay_detail
|
85
|
+
out_str << "\n:PTO:"
|
86
|
+
out_str << pto
|
87
|
+
out_str << "\n:Pay Period:"
|
88
|
+
out_str << pay_period
|
89
|
+
out_str[1..].to_s
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
# @param char [String]
|
95
|
+
# @return [String]
|
96
|
+
def salary_details_separator(char)
|
97
|
+
out_str = String.new
|
98
|
+
out_str << ' '
|
99
|
+
out_str << "+#{char * 14}"
|
100
|
+
out_str << "+#{char * 11}"
|
101
|
+
out_str << "+#{char * 38}"
|
102
|
+
out_str << "+#{char * 11}"
|
103
|
+
out_str << '+'
|
104
|
+
out_str
|
105
|
+
end
|
106
|
+
|
107
|
+
# @return [String]
|
108
|
+
def salary_details_to_s
|
109
|
+
return '' if @salary_details.empty?
|
110
|
+
|
111
|
+
line_items = @salary_details.map(&:to_table_line).join("\n#{salary_details_separator('-')}\n ")
|
112
|
+
out_str = String.new
|
113
|
+
out_str << "\n#{salary_details_separator('-')}"
|
114
|
+
out_str << "\n |"
|
115
|
+
out_str << ' Amount |'
|
116
|
+
out_str << ' Base |'
|
117
|
+
out_str << ' Description |'
|
118
|
+
out_str << ' Rate |'
|
119
|
+
out_str << "\n#{salary_details_separator('=')}"
|
120
|
+
out_str << "\n #{line_items}"
|
121
|
+
out_str << "\n#{salary_details_separator('-')}"
|
122
|
+
out_str
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Product
|
7
|
+
module FR
|
8
|
+
module Payslip
|
9
|
+
# Information about the employee.
|
10
|
+
class PayslipV2Employee < Mindee::Parsing::Standard::FeatureField
|
11
|
+
include Mindee::Parsing::Standard
|
12
|
+
# The address of the employee.
|
13
|
+
# @return [String]
|
14
|
+
attr_reader :address
|
15
|
+
# The date of birth of the employee.
|
16
|
+
# @return [String]
|
17
|
+
attr_reader :date_of_birth
|
18
|
+
# The first name of the employee.
|
19
|
+
# @return [String]
|
20
|
+
attr_reader :first_name
|
21
|
+
# The last name of the employee.
|
22
|
+
# @return [String]
|
23
|
+
attr_reader :last_name
|
24
|
+
# The phone number of the employee.
|
25
|
+
# @return [String]
|
26
|
+
attr_reader :phone_number
|
27
|
+
# The registration number of the employee.
|
28
|
+
# @return [String]
|
29
|
+
attr_reader :registration_number
|
30
|
+
# The social security number of the employee.
|
31
|
+
# @return [String]
|
32
|
+
attr_reader :social_security_number
|
33
|
+
|
34
|
+
# @param prediction [Hash]
|
35
|
+
# @param page_id [Integer, nil]
|
36
|
+
def initialize(prediction, page_id)
|
37
|
+
super(prediction, page_id)
|
38
|
+
@address = prediction['address']
|
39
|
+
@date_of_birth = prediction['date_of_birth']
|
40
|
+
@first_name = prediction['first_name']
|
41
|
+
@last_name = prediction['last_name']
|
42
|
+
@phone_number = prediction['phone_number']
|
43
|
+
@registration_number = prediction['registration_number']
|
44
|
+
@social_security_number = prediction['social_security_number']
|
45
|
+
@page_id = page_id
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [Hash]
|
49
|
+
def printable_values
|
50
|
+
printable = {}
|
51
|
+
printable[:address] = format_for_display(@address)
|
52
|
+
printable[:date_of_birth] = format_for_display(@date_of_birth)
|
53
|
+
printable[:first_name] = format_for_display(@first_name)
|
54
|
+
printable[:last_name] = format_for_display(@last_name)
|
55
|
+
printable[:phone_number] = format_for_display(@phone_number)
|
56
|
+
printable[:registration_number] = format_for_display(@registration_number)
|
57
|
+
printable[:social_security_number] = format_for_display(@social_security_number)
|
58
|
+
printable
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [String]
|
62
|
+
def to_s
|
63
|
+
printable = printable_values
|
64
|
+
out_str = String.new
|
65
|
+
out_str << "\n :Address: #{printable[:address]}"
|
66
|
+
out_str << "\n :Date of Birth: #{printable[:date_of_birth]}"
|
67
|
+
out_str << "\n :First Name: #{printable[:first_name]}"
|
68
|
+
out_str << "\n :Last Name: #{printable[:last_name]}"
|
69
|
+
out_str << "\n :Phone Number: #{printable[:phone_number]}"
|
70
|
+
out_str << "\n :Registration Number: #{printable[:registration_number]}"
|
71
|
+
out_str << "\n :Social Security Number: #{printable[:social_security_number]}"
|
72
|
+
out_str
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Product
|
7
|
+
module FR
|
8
|
+
module Payslip
|
9
|
+
# Information about the employer.
|
10
|
+
class PayslipV2Employer < Mindee::Parsing::Standard::FeatureField
|
11
|
+
include Mindee::Parsing::Standard
|
12
|
+
# The address of the employer.
|
13
|
+
# @return [String]
|
14
|
+
attr_reader :address
|
15
|
+
# The company ID of the employer.
|
16
|
+
# @return [String]
|
17
|
+
attr_reader :company_id
|
18
|
+
# The site of the company.
|
19
|
+
# @return [String]
|
20
|
+
attr_reader :company_site
|
21
|
+
# The NAF code of the employer.
|
22
|
+
# @return [String]
|
23
|
+
attr_reader :naf_code
|
24
|
+
# The name of the employer.
|
25
|
+
# @return [String]
|
26
|
+
attr_reader :name
|
27
|
+
# The phone number of the employer.
|
28
|
+
# @return [String]
|
29
|
+
attr_reader :phone_number
|
30
|
+
# The URSSAF number of the employer.
|
31
|
+
# @return [String]
|
32
|
+
attr_reader :urssaf_number
|
33
|
+
|
34
|
+
# @param prediction [Hash]
|
35
|
+
# @param page_id [Integer, nil]
|
36
|
+
def initialize(prediction, page_id)
|
37
|
+
super(prediction, page_id)
|
38
|
+
@address = prediction['address']
|
39
|
+
@company_id = prediction['company_id']
|
40
|
+
@company_site = prediction['company_site']
|
41
|
+
@naf_code = prediction['naf_code']
|
42
|
+
@name = prediction['name']
|
43
|
+
@phone_number = prediction['phone_number']
|
44
|
+
@urssaf_number = prediction['urssaf_number']
|
45
|
+
@page_id = page_id
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [Hash]
|
49
|
+
def printable_values
|
50
|
+
printable = {}
|
51
|
+
printable[:address] = format_for_display(@address)
|
52
|
+
printable[:company_id] = format_for_display(@company_id)
|
53
|
+
printable[:company_site] = format_for_display(@company_site)
|
54
|
+
printable[:naf_code] = format_for_display(@naf_code)
|
55
|
+
printable[:name] = format_for_display(@name)
|
56
|
+
printable[:phone_number] = format_for_display(@phone_number)
|
57
|
+
printable[:urssaf_number] = format_for_display(@urssaf_number)
|
58
|
+
printable
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [String]
|
62
|
+
def to_s
|
63
|
+
printable = printable_values
|
64
|
+
out_str = String.new
|
65
|
+
out_str << "\n :Address: #{printable[:address]}"
|
66
|
+
out_str << "\n :Company ID: #{printable[:company_id]}"
|
67
|
+
out_str << "\n :Company Site: #{printable[:company_site]}"
|
68
|
+
out_str << "\n :NAF Code: #{printable[:naf_code]}"
|
69
|
+
out_str << "\n :Name: #{printable[:name]}"
|
70
|
+
out_str << "\n :Phone Number: #{printable[:phone_number]}"
|
71
|
+
out_str << "\n :URSSAF Number: #{printable[:urssaf_number]}"
|
72
|
+
out_str
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Product
|
7
|
+
module FR
|
8
|
+
module Payslip
|
9
|
+
# Information about the employment.
|
10
|
+
class PayslipV2Employment < Mindee::Parsing::Standard::FeatureField
|
11
|
+
include Mindee::Parsing::Standard
|
12
|
+
# The category of the employment.
|
13
|
+
# @return [String]
|
14
|
+
attr_reader :category
|
15
|
+
# The coefficient of the employment.
|
16
|
+
# @return [Float]
|
17
|
+
attr_reader :coefficient
|
18
|
+
# The collective agreement of the employment.
|
19
|
+
# @return [String]
|
20
|
+
attr_reader :collective_agreement
|
21
|
+
# The job title of the employee.
|
22
|
+
# @return [String]
|
23
|
+
attr_reader :job_title
|
24
|
+
# The position level of the employment.
|
25
|
+
# @return [String]
|
26
|
+
attr_reader :position_level
|
27
|
+
# The start date of the employment.
|
28
|
+
# @return [String]
|
29
|
+
attr_reader :start_date
|
30
|
+
|
31
|
+
# @param prediction [Hash]
|
32
|
+
# @param page_id [Integer, nil]
|
33
|
+
def initialize(prediction, page_id)
|
34
|
+
super(prediction, page_id)
|
35
|
+
@category = prediction['category']
|
36
|
+
@coefficient = prediction['coefficient']
|
37
|
+
@collective_agreement = prediction['collective_agreement']
|
38
|
+
@job_title = prediction['job_title']
|
39
|
+
@position_level = prediction['position_level']
|
40
|
+
@start_date = prediction['start_date']
|
41
|
+
@page_id = page_id
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [Hash]
|
45
|
+
def printable_values
|
46
|
+
printable = {}
|
47
|
+
printable[:category] = format_for_display(@category)
|
48
|
+
printable[:coefficient] = @coefficient.nil? ? '' : Field.float_to_string(@coefficient)
|
49
|
+
printable[:collective_agreement] = format_for_display(@collective_agreement)
|
50
|
+
printable[:job_title] = format_for_display(@job_title)
|
51
|
+
printable[:position_level] = format_for_display(@position_level)
|
52
|
+
printable[:start_date] = format_for_display(@start_date)
|
53
|
+
printable
|
54
|
+
end
|
55
|
+
|
56
|
+
# @return [String]
|
57
|
+
def to_s
|
58
|
+
printable = printable_values
|
59
|
+
out_str = String.new
|
60
|
+
out_str << "\n :Category: #{printable[:category]}"
|
61
|
+
out_str << "\n :Coefficient: #{printable[:coefficient]}"
|
62
|
+
out_str << "\n :Collective Agreement: #{printable[:collective_agreement]}"
|
63
|
+
out_str << "\n :Job Title: #{printable[:job_title]}"
|
64
|
+
out_str << "\n :Position Level: #{printable[:position_level]}"
|
65
|
+
out_str << "\n :Start Date: #{printable[:start_date]}"
|
66
|
+
out_str
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
require_relative 'payslip_v2_document'
|
5
|
+
|
6
|
+
module Mindee
|
7
|
+
module Product
|
8
|
+
module FR
|
9
|
+
module Payslip
|
10
|
+
# Payslip API version 2.0 page data.
|
11
|
+
class PayslipV2Page < Mindee::Parsing::Common::Page
|
12
|
+
# @param prediction [Hash]
|
13
|
+
def initialize(prediction)
|
14
|
+
super(prediction)
|
15
|
+
@prediction = PayslipV2PagePrediction.new(
|
16
|
+
prediction['prediction'],
|
17
|
+
prediction['id']
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Payslip V2 page prediction.
|
23
|
+
class PayslipV2PagePrediction < PayslipV2Document
|
24
|
+
# @return [String]
|
25
|
+
def to_s
|
26
|
+
out_str = String.new
|
27
|
+
out_str << "\n#{super}"
|
28
|
+
out_str
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../../../parsing'
|
4
|
+
|
5
|
+
module Mindee
|
6
|
+
module Product
|
7
|
+
module FR
|
8
|
+
module Payslip
|
9
|
+
# Detailed information about the pay.
|
10
|
+
class PayslipV2PayDetail < Mindee::Parsing::Standard::FeatureField
|
11
|
+
include Mindee::Parsing::Standard
|
12
|
+
# The gross salary of the employee.
|
13
|
+
# @return [Float]
|
14
|
+
attr_reader :gross_salary
|
15
|
+
# The year-to-date gross salary of the employee.
|
16
|
+
# @return [Float]
|
17
|
+
attr_reader :gross_salary_ytd
|
18
|
+
# The income tax rate of the employee.
|
19
|
+
# @return [Float]
|
20
|
+
attr_reader :income_tax_rate
|
21
|
+
# The income tax withheld from the employee's pay.
|
22
|
+
# @return [Float]
|
23
|
+
attr_reader :income_tax_withheld
|
24
|
+
# The net paid amount of the employee.
|
25
|
+
# @return [Float]
|
26
|
+
attr_reader :net_paid
|
27
|
+
# The net paid amount before tax of the employee.
|
28
|
+
# @return [Float]
|
29
|
+
attr_reader :net_paid_before_tax
|
30
|
+
# The net taxable amount of the employee.
|
31
|
+
# @return [Float]
|
32
|
+
attr_reader :net_taxable
|
33
|
+
# The year-to-date net taxable amount of the employee.
|
34
|
+
# @return [Float]
|
35
|
+
attr_reader :net_taxable_ytd
|
36
|
+
# The total cost to the employer.
|
37
|
+
# @return [Float]
|
38
|
+
attr_reader :total_cost_employer
|
39
|
+
# The total taxes and deductions of the employee.
|
40
|
+
# @return [Float]
|
41
|
+
attr_reader :total_taxes_and_deductions
|
42
|
+
|
43
|
+
# @param prediction [Hash]
|
44
|
+
# @param page_id [Integer, nil]
|
45
|
+
def initialize(prediction, page_id)
|
46
|
+
super(prediction, page_id)
|
47
|
+
@gross_salary = prediction['gross_salary']
|
48
|
+
@gross_salary_ytd = prediction['gross_salary_ytd']
|
49
|
+
@income_tax_rate = prediction['income_tax_rate']
|
50
|
+
@income_tax_withheld = prediction['income_tax_withheld']
|
51
|
+
@net_paid = prediction['net_paid']
|
52
|
+
@net_paid_before_tax = prediction['net_paid_before_tax']
|
53
|
+
@net_taxable = prediction['net_taxable']
|
54
|
+
@net_taxable_ytd = prediction['net_taxable_ytd']
|
55
|
+
@total_cost_employer = prediction['total_cost_employer']
|
56
|
+
@total_taxes_and_deductions = prediction['total_taxes_and_deductions']
|
57
|
+
@page_id = page_id
|
58
|
+
end
|
59
|
+
|
60
|
+
# @return [Hash]
|
61
|
+
def printable_values
|
62
|
+
printable = {}
|
63
|
+
printable[:gross_salary] = @gross_salary.nil? ? '' : Field.float_to_string(@gross_salary)
|
64
|
+
printable[:gross_salary_ytd] = @gross_salary_ytd.nil? ? '' : Field.float_to_string(@gross_salary_ytd)
|
65
|
+
printable[:income_tax_rate] = @income_tax_rate.nil? ? '' : Field.float_to_string(@income_tax_rate)
|
66
|
+
printable[:income_tax_withheld] =
|
67
|
+
@income_tax_withheld.nil? ? '' : Field.float_to_string(@income_tax_withheld)
|
68
|
+
printable[:net_paid] = @net_paid.nil? ? '' : Field.float_to_string(@net_paid)
|
69
|
+
printable[:net_paid_before_tax] =
|
70
|
+
@net_paid_before_tax.nil? ? '' : Field.float_to_string(@net_paid_before_tax)
|
71
|
+
printable[:net_taxable] = @net_taxable.nil? ? '' : Field.float_to_string(@net_taxable)
|
72
|
+
printable[:net_taxable_ytd] = @net_taxable_ytd.nil? ? '' : Field.float_to_string(@net_taxable_ytd)
|
73
|
+
printable[:total_cost_employer] =
|
74
|
+
@total_cost_employer.nil? ? '' : Field.float_to_string(@total_cost_employer)
|
75
|
+
printable[:total_taxes_and_deductions] =
|
76
|
+
@total_taxes_and_deductions.nil? ? '' : Field.float_to_string(@total_taxes_and_deductions)
|
77
|
+
printable
|
78
|
+
end
|
79
|
+
|
80
|
+
# @return [String]
|
81
|
+
def to_s
|
82
|
+
printable = printable_values
|
83
|
+
out_str = String.new
|
84
|
+
out_str << "\n :Gross Salary: #{printable[:gross_salary]}"
|
85
|
+
out_str << "\n :Gross Salary YTD: #{printable[:gross_salary_ytd]}"
|
86
|
+
out_str << "\n :Income Tax Rate: #{printable[:income_tax_rate]}"
|
87
|
+
out_str << "\n :Income Tax Withheld: #{printable[:income_tax_withheld]}"
|
88
|
+
out_str << "\n :Net Paid: #{printable[:net_paid]}"
|
89
|
+
out_str << "\n :Net Paid Before Tax: #{printable[:net_paid_before_tax]}"
|
90
|
+
out_str << "\n :Net Taxable: #{printable[:net_taxable]}"
|
91
|
+
out_str << "\n :Net Taxable YTD: #{printable[:net_taxable_ytd]}"
|
92
|
+
out_str << "\n :Total Cost Employer: #{printable[:total_cost_employer]}"
|
93
|
+
out_str << "\n :Total Taxes and Deductions: #{printable[:total_taxes_and_deductions]}"
|
94
|
+
out_str
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|