dorsale 4.0.0 → 4.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 +4 -4
- data/CHANGELOG.md +9 -0
- data/app/controllers/dorsale/alexandrie/attachments_controller.rb +1 -1
- data/app/controllers/dorsale/application_controller.rb +1 -1
- data/app/controllers/dorsale/billing_machine/application_controller.rb +1 -1
- data/app/controllers/dorsale/billing_machine/invoices_controller.rb +1 -1
- data/app/controllers/dorsale/billing_machine/payment_terms_controller.rb +1 -1
- data/app/controllers/dorsale/billing_machine/quotations_controller.rb +1 -1
- data/app/controllers/dorsale/comments_controller.rb +1 -1
- data/app/controllers/dorsale/customer_vault/activity_types_controller.rb +1 -1
- data/app/controllers/dorsale/customer_vault/application_controller.rb +1 -1
- data/app/controllers/dorsale/customer_vault/events_controller.rb +1 -1
- data/app/controllers/dorsale/customer_vault/links_controller.rb +1 -1
- data/app/controllers/dorsale/customer_vault/origins_controller.rb +1 -1
- data/app/controllers/dorsale/customer_vault/people_controller.rb +1 -1
- data/app/controllers/dorsale/expense_gun/application_controller.rb +1 -1
- data/app/controllers/dorsale/expense_gun/categories_controller.rb +1 -1
- data/app/controllers/dorsale/flyboy/application_controller.rb +1 -1
- data/app/controllers/dorsale/flyboy/task_comments_controller.rb +1 -1
- data/app/controllers/dorsale/flyboy/tasks_controller.rb +1 -1
- data/app/controllers/dorsale/users_controller.rb +1 -1
- data/app/filters/dorsale/billing_machine/small_data/filter_for_invoices.rb +1 -1
- data/app/filters/dorsale/billing_machine/small_data/filter_for_quotations.rb +1 -1
- data/app/filters/dorsale/billing_machine/small_data/filter_strategy_by_customer.rb +1 -1
- data/app/filters/dorsale/billing_machine/small_data/filter_strategy_by_payment_status.rb +1 -1
- data/app/filters/dorsale/billing_machine/small_data/filter_strategy_by_state.rb +1 -1
- data/app/filters/dorsale/customer_vault/small_data/filter_for_events.rb +1 -1
- data/app/filters/dorsale/customer_vault/small_data/filter_for_people.rb +1 -1
- data/app/filters/dorsale/customer_vault/small_data/filter_strategy_by_activity_type.rb +1 -1
- data/app/filters/dorsale/expense_gun/small_data/filter_for_expenses.rb +1 -1
- data/app/filters/dorsale/flyboy/small_data/filter_for_tasks.rb +1 -1
- data/app/filters/dorsale/flyboy/small_data/filter_strategy_by_task_state.rb +2 -2
- data/app/mailers/dorsale/application_mailer.rb +1 -1
- data/app/mailers/dorsale/flyboy/task_mailer.rb +1 -1
- data/app/mailers/dorsale/user_mailer.rb +1 -1
- data/app/models/dorsale/address.rb +3 -3
- data/app/models/dorsale/alexandrie/attachment.rb +1 -1
- data/app/models/dorsale/alexandrie/attachment_type.rb +1 -1
- data/app/models/dorsale/billing_machine/invoice.rb +1 -1
- data/app/models/dorsale/billing_machine/invoice_line.rb +1 -1
- data/app/models/dorsale/billing_machine/payment_term.rb +1 -1
- data/app/models/dorsale/billing_machine/quotation.rb +2 -2
- data/app/models/dorsale/billing_machine/quotation_line.rb +1 -1
- data/app/models/dorsale/comment.rb +1 -1
- data/app/models/dorsale/customer_vault/activity_type.rb +1 -1
- data/app/models/dorsale/customer_vault/corporation.rb +2 -2
- data/app/models/dorsale/customer_vault/event.rb +3 -3
- data/app/models/dorsale/customer_vault/individual.rb +2 -2
- data/app/models/dorsale/customer_vault/link.rb +1 -1
- data/app/models/dorsale/customer_vault/origin.rb +1 -1
- data/app/models/dorsale/customer_vault/person.rb +5 -5
- data/app/models/dorsale/expense_gun/category.rb +1 -1
- data/app/models/dorsale/expense_gun/expense.rb +2 -2
- data/app/models/dorsale/expense_gun/expense_line.rb +1 -1
- data/app/models/dorsale/flyboy/task.rb +4 -4
- data/app/models/dorsale/flyboy/task_comment.rb +1 -1
- data/app/pdfs/dorsale/application_pdf.rb +1 -1
- data/app/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf.rb +13 -13
- data/app/pdfs/dorsale/billing_machine/invoice_single_vat_pdf.rb +13 -13
- data/app/pdfs/dorsale/billing_machine/quotation_multiple_vat_pdf.rb +1 -1
- data/app/pdfs/dorsale/billing_machine/quotation_single_vat_pdf.rb +1 -1
- data/app/pdfs/dorsale/expense_gun/expense_pdf.rb +2 -2
- data/app/pdfs/dorsale/prawn_helpers.rb +2 -2
- data/app/policies/dorsale/application_policy.rb +1 -1
- data/app/services/dorsale/billing_machine/invoice/copy.rb +1 -1
- data/app/services/dorsale/billing_machine/invoice/statistics.rb +2 -2
- data/app/services/dorsale/billing_machine/quotation/copy.rb +1 -1
- data/app/services/dorsale/billing_machine/quotation/statistics.rb +2 -2
- data/app/services/dorsale/billing_machine/quotation/to_invoice.rb +5 -5
- data/app/services/dorsale/expense_gun/expense/copy.rb +1 -1
- data/app/services/dorsale/flyboy/task/copy.rb +1 -1
- data/app/services/dorsale/flyboy/task/snoozer.rb +1 -1
- data/app/services/dorsale/service.rb +2 -2
- data/app/services/dorsale/tag_list_for_model.rb +1 -1
- data/app/uploaders/dorsale/alexandrie/file_uploader.rb +1 -1
- data/app/uploaders/dorsale/application_uploader.rb +1 -1
- data/app/uploaders/dorsale/avatar_uploader.rb +1 -1
- data/app/uploaders/dorsale/image_uploader.rb +2 -2
- data/app/uploaders/dorsale/pdf_uploader.rb +2 -2
- data/app/views/dorsale/customer_vault/people/index.xlsx.ruby +3 -3
- data/features/step_definitions/billing_machine_invoices_steps.rb +3 -3
- data/features/step_definitions/billing_machine_multiple_vat.rb +1 -1
- data/features/step_definitions/billing_machine_quotations_steps.rb +2 -2
- data/features/step_definitions/customer_vault_corporations_steps.rb +3 -3
- data/features/step_definitions/customer_vault_tasks_steps.rb +3 -3
- data/lib/dorsale/engine.rb +5 -5
- data/lib/dorsale/version.rb +1 -1
- data/spec/controllers/dorsale/alexandrie/attachments_controller_spec.rb +1 -1
- data/spec/controllers/dorsale/customer_vault/events_controller_spec.rb +1 -1
- data/spec/controllers/dorsale/customer_vault/people_controller_spec.rb +1 -1
- data/spec/controllers/dorsale/expense_gun/expenses_controller_spec.rb +1 -1
- data/spec/factories/alexandrie_attachment_types.rb +1 -1
- data/spec/factories/alexandrie_attachments.rb +1 -1
- data/spec/factories/billing_machine_invoice_lines.rb +1 -1
- data/spec/factories/billing_machine_invoices.rb +1 -1
- data/spec/factories/billing_machine_payment_terms.rb +1 -1
- data/spec/factories/billing_machine_quotation_lines.rb +1 -1
- data/spec/factories/billing_machine_quotations.rb +1 -1
- data/spec/factories/customer_vault_activity_types.rb +1 -1
- data/spec/factories/customer_vault_corporations.rb +1 -1
- data/spec/factories/customer_vault_event.rb +1 -1
- data/spec/factories/customer_vault_individuals.rb +1 -1
- data/spec/factories/customer_vault_links.rb +1 -1
- data/spec/factories/customer_vault_origins.rb +1 -1
- data/spec/factories/dorsale_addresses.rb +1 -1
- data/spec/factories/dorsale_comments.rb +1 -1
- data/spec/factories/expense_gun_categories.rb +1 -1
- data/spec/factories/expense_gun_expense_lines.rb +1 -1
- data/spec/factories/expense_gun_expenses.rb +1 -1
- data/spec/factories/flyboy_task_comments.rb +1 -1
- data/spec/factories/flyboy_tasks.rb +1 -1
- data/spec/mailers/user_mailer_spec.rb +2 -2
- data/spec/models/dorsale/alexandrie/attachment_spec.rb +1 -1
- data/spec/models/dorsale/alexandrie/attachment_type_spec.rb +1 -1
- data/spec/models/dorsale/billing_machine/invoice_spec.rb +5 -5
- data/spec/models/dorsale/billing_machine/quotation_line_spec.rb +1 -1
- data/spec/models/dorsale/billing_machine/quotation_spec.rb +4 -4
- data/spec/models/dorsale/billing_machine_spec.rb +1 -1
- data/spec/models/dorsale/customer_vault/activity_type_spec.rb +1 -1
- data/spec/models/dorsale/customer_vault/corporation_spec.rb +1 -1
- data/spec/models/dorsale/customer_vault/event_spec.rb +1 -1
- data/spec/models/dorsale/customer_vault/individual_spec.rb +1 -1
- data/spec/models/dorsale/customer_vault/link_spec.rb +1 -1
- data/spec/models/dorsale/customer_vault/origin_spec.rb +1 -1
- data/spec/models/dorsale/customer_vault/person_spec.rb +1 -1
- data/spec/models/dorsale/expense_gun/category_spec.rb +1 -1
- data/spec/models/dorsale/expense_gun/expense_line_spec.rb +1 -1
- data/spec/models/dorsale/flyboy/task_spec.rb +5 -5
- data/spec/models/dorsale/i18n_spec.rb +1 -1
- data/spec/pdfs/dorsale/billing_machine/invoice_multiple_vat_pdf_spec.rb +3 -3
- data/spec/pdfs/dorsale/billing_machine/invoice_single_vat_pdf_spec.rb +3 -3
- data/spec/pdfs/dorsale/billing_machine/quotation_multiple_vat_pdf_spec.rb +3 -3
- data/spec/pdfs/dorsale/billing_machine/quotation_single_vat_pdf_spec.rb +3 -3
- data/spec/rails_helper.rb +0 -3
- data/spec/routing/dorsale/billing_machine/invoices_routing_spec.rb +2 -2
- data/spec/routing/dorsale/billing_machine/quotations_routing_spec.rb +2 -2
- data/spec/routing/dorsale/customer_vault/activity_types_routing_spec.rb +2 -2
- data/spec/routing/dorsale/customer_vault/events_routing_spec.rb +2 -2
- data/spec/routing/dorsale/customer_vault/origins_routing_spec.rb +2 -2
- data/spec/routing/dorsale/customer_vault/people_routing_spec.rb +2 -2
- data/spec/routing/dorsale/expense_gun/expenses_routing_spec.rb +2 -2
- data/spec/routing/dorsale/flyboy/task_comments_routing_spec.rb +2 -2
- data/spec/routing/dorsale/flyboy/tasks_routing_spec.rb +2 -2
- data/spec/routing/dorsale/users_routing_spec.rb +2 -2
- data/spec/services/dorsale/expense_gun/expense/copy_spec.rb +2 -2
- metadata +48 -51
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cc2541a790ad9accc9357974989a05d31777d70f259049ec7c1683bdb2add396
|
|
4
|
+
data.tar.gz: 892004495e28a5f6cc6036a774cfd04bb30b50c1b2c05ba2a74290f8c6f9cd7e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 64919f579cf03f0d412dca7bd63b71ab0e6e53a304ab4309a6dc7b67add09d1068c1747221344429a8a8d173535edf8613f76de5a9cbac0b8e2fd8bd27c0acb7
|
|
7
|
+
data.tar.gz: dd5b5989add23e93c8c253d4538ffea84bb19e39714e80de21576f2741e853f96de1e10d7e851fe6409c34d109243b6d0b14a9e31d26736e14e6abffac322b19
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
## Next version
|
|
4
4
|
|
|
5
|
+
## 4.1.0
|
|
6
|
+
- Ruby 3.2 compatibility
|
|
7
|
+
- Rails 7.1 compatibility
|
|
8
|
+
- Ruby 3.3 compatibility
|
|
9
|
+
- Rails 7.2 compatibility
|
|
10
|
+
- Ruby 3.4 compatibility
|
|
11
|
+
- Rails 8.0 compatibility
|
|
12
|
+
- Rails 8.1 compatibility
|
|
13
|
+
|
|
5
14
|
## 4.0.0
|
|
6
15
|
- Ruby 3.1 required
|
|
7
16
|
- Rails 7.0
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::PaymentTermsController <
|
|
1
|
+
class Dorsale::BillingMachine::PaymentTermsController < Dorsale::BillingMachine::ApplicationController
|
|
2
2
|
before_action :set_objects, only: [:edit, :update]
|
|
3
3
|
|
|
4
4
|
def index
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::CustomerVault::ActivityTypesController <
|
|
1
|
+
class Dorsale::CustomerVault::ActivityTypesController < Dorsale::CustomerVault::ApplicationController
|
|
2
2
|
before_action :set_objects, only: [:edit, :update]
|
|
3
3
|
|
|
4
4
|
def index
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class Dorsale::CustomerVault::ApplicationController <
|
|
1
|
+
class Dorsale::CustomerVault::ApplicationController < Dorsale::ApplicationController
|
|
2
2
|
end
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class Dorsale::Flyboy::ApplicationController <
|
|
1
|
+
class Dorsale::Flyboy::ApplicationController < Dorsale::ApplicationController
|
|
2
2
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::SmallData::FilterForInvoices <
|
|
1
|
+
class Dorsale::BillingMachine::SmallData::FilterForInvoices < Agilibox::SmallData::Filter
|
|
2
2
|
STRATEGIES = {
|
|
3
3
|
"bm_time_period" => ::Agilibox::SmallData::FilterStrategyByDatePeriod.new(:date),
|
|
4
4
|
"bm_date_begin" => ::Agilibox::SmallData::FilterStrategyByDateBegin.new(:date),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::SmallData::FilterForQuotations <
|
|
1
|
+
class Dorsale::BillingMachine::SmallData::FilterForQuotations < Agilibox::SmallData::Filter
|
|
2
2
|
STRATEGIES = {
|
|
3
3
|
"bm_time_period" => ::Agilibox::SmallData::FilterStrategyByDatePeriod.new(:date),
|
|
4
4
|
"bm_date_begin" => ::Agilibox::SmallData::FilterStrategyByDateBegin.new(:date),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::SmallData::FilterStrategyByCustomer <
|
|
1
|
+
class Dorsale::BillingMachine::SmallData::FilterStrategyByCustomer < Agilibox::SmallData::FilterStrategy
|
|
2
2
|
def apply(query, value)
|
|
3
3
|
type, id = value.split("-", 2)
|
|
4
4
|
query.where(customer_type: type, customer_id: id)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::SmallData::FilterStrategyByPaymentStatus <
|
|
1
|
+
class Dorsale::BillingMachine::SmallData::FilterStrategyByPaymentStatus < Agilibox::SmallData::FilterStrategy
|
|
2
2
|
def apply(query, value)
|
|
3
3
|
table_name = query.model.table_name
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::SmallData::FilterStrategyByState <
|
|
1
|
+
class Dorsale::BillingMachine::SmallData::FilterStrategyByState < Agilibox::SmallData::FilterStrategy
|
|
2
2
|
def apply(query, value)
|
|
3
3
|
if (m = value.to_s.match(/not_(.+)/))
|
|
4
4
|
query.where.not(state: m[1])
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::CustomerVault::SmallData::FilterForEvents <
|
|
1
|
+
class Dorsale::CustomerVault::SmallData::FilterForEvents < Agilibox::SmallData::Filter
|
|
2
2
|
STRATEGIES = {
|
|
3
3
|
"event_action" => ::Agilibox::SmallData::FilterStrategyByKeyValues.new(:action),
|
|
4
4
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::CustomerVault::SmallData::FilterForPeople <
|
|
1
|
+
class Dorsale::CustomerVault::SmallData::FilterForPeople < Agilibox::SmallData::Filter
|
|
2
2
|
STRATEGIES = {
|
|
3
3
|
"person_type" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new(:type),
|
|
4
4
|
"person_tags" => ::Agilibox::SmallData::FilterStrategyByTags.new,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::CustomerVault::SmallData::FilterStrategyByActivityType <
|
|
1
|
+
class Dorsale::CustomerVault::SmallData::FilterStrategyByActivityType < Agilibox::SmallData::FilterStrategy
|
|
2
2
|
def apply(query, value)
|
|
3
3
|
corporations_id = query.where(activity_type_id: value).pluck(:id)
|
|
4
4
|
individuals_id = query.where(corporation_id: corporations_id).pluck(:id)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::ExpenseGun::SmallData::FilterForExpenses <
|
|
1
|
+
class Dorsale::ExpenseGun::SmallData::FilterForExpenses < Agilibox::SmallData::Filter
|
|
2
2
|
STRATEGIES = {
|
|
3
3
|
"expense_state" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new("state"),
|
|
4
4
|
"expense_user_id" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new("user_id"),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::Flyboy::SmallData::FilterForTasks <
|
|
1
|
+
class Dorsale::Flyboy::SmallData::FilterForTasks < Agilibox::SmallData::Filter
|
|
2
2
|
STRATEGIES = {
|
|
3
3
|
"fb_state" => ::Dorsale::Flyboy::SmallData::FilterStrategyByTaskState.new,
|
|
4
4
|
"fb_owner" => ::Agilibox::SmallData::FilterStrategyByKeyValue.new(:owner_id),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
class Dorsale::Flyboy::SmallData::FilterStrategyByTaskState <
|
|
2
|
-
STATES = Dorsale::Flyboy::Task::STATES + %w
|
|
1
|
+
class Dorsale::Flyboy::SmallData::FilterStrategyByTaskState < Agilibox::SmallData::FilterStrategy
|
|
2
|
+
STATES = Dorsale::Flyboy::Task::STATES + %w[on_warning_or_alert]
|
|
3
3
|
|
|
4
4
|
def apply(query, value)
|
|
5
5
|
if value.in?(STATES)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
class Dorsale::Address <
|
|
1
|
+
class Dorsale::Address < Dorsale::ApplicationRecord
|
|
2
2
|
belongs_to :addressable, polymorphic: true, inverse_of: :address
|
|
3
3
|
|
|
4
4
|
validates :addressable, presence: true
|
|
5
5
|
|
|
6
6
|
def one_line
|
|
7
|
-
zip_city = [zip, city].
|
|
8
|
-
[street, street_bis, zip_city, country].
|
|
7
|
+
zip_city = [zip, city].compact_blank.join(" ")
|
|
8
|
+
[street, street_bis, zip_city, country].compact_blank.join(", ")
|
|
9
9
|
end
|
|
10
10
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::Quotation <
|
|
1
|
+
class Dorsale::BillingMachine::Quotation < Dorsale::ApplicationRecord
|
|
2
2
|
self.table_name = "dorsale_billing_machine_quotations"
|
|
3
3
|
|
|
4
|
-
STATES = %w
|
|
4
|
+
STATES = %w[draft pending accepted refused canceled]
|
|
5
5
|
|
|
6
6
|
belongs_to :customer, polymorphic: true
|
|
7
7
|
belongs_to :payment_term
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class Dorsale::CustomerVault::Corporation < Dorsale::CustomerVault::Person
|
|
2
|
-
data_attributes = %i
|
|
2
|
+
data_attributes = %i[
|
|
3
3
|
legal_form
|
|
4
4
|
immatriculation_number
|
|
5
5
|
naf
|
|
@@ -8,7 +8,7 @@ class Dorsale::CustomerVault::Corporation < Dorsale::CustomerVault::Person
|
|
|
8
8
|
capital
|
|
9
9
|
revenue
|
|
10
10
|
number_of_employees
|
|
11
|
-
|
|
11
|
+
]
|
|
12
12
|
store :data, accessors: data_attributes, coder: JSON
|
|
13
13
|
|
|
14
14
|
validates :corporation_name, presence: true
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
class Dorsale::CustomerVault::Event <
|
|
1
|
+
class Dorsale::CustomerVault::Event < Dorsale::ApplicationRecord
|
|
2
2
|
self.table_name = :dorsale_customer_vault_events
|
|
3
3
|
|
|
4
|
-
ACTIONS = %w
|
|
5
|
-
CONTACT_TYPES = %w
|
|
4
|
+
ACTIONS = %w[create update comment]
|
|
5
|
+
CONTACT_TYPES = %w[contact r1 r2]
|
|
6
6
|
|
|
7
7
|
belongs_to :author, class_name: "User"
|
|
8
8
|
belongs_to :person, class_name: "Dorsale::CustomerVault::Person"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::CustomerVault::Person <
|
|
1
|
+
class Dorsale::CustomerVault::Person < Dorsale::ApplicationRecord
|
|
2
2
|
self.table_name = "dorsale_customer_vault_people"
|
|
3
3
|
|
|
4
4
|
extend Forwardable
|
|
@@ -57,7 +57,7 @@ class Dorsale::CustomerVault::Person < ::Dorsale::ApplicationRecord
|
|
|
57
57
|
|
|
58
58
|
def taken_emails
|
|
59
59
|
taken_emails = {}
|
|
60
|
-
([email] + secondary_emails).
|
|
60
|
+
([email] + secondary_emails).compact_blank.each do |e|
|
|
61
61
|
person = Dorsale::CustomerVault::Person.where.not(id:).having_email(e).first
|
|
62
62
|
taken_emails[e] = person if person.present?
|
|
63
63
|
end
|
|
@@ -71,7 +71,7 @@ class Dorsale::CustomerVault::Person < ::Dorsale::ApplicationRecord
|
|
|
71
71
|
errors.add(:email, :taken)
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
if
|
|
74
|
+
if taken_emails.keys.intersect?(secondary_emails)
|
|
75
75
|
errors.add(:secondary_emails, :taken)
|
|
76
76
|
errors.add(:secondary_emails_str, :taken)
|
|
77
77
|
end
|
|
@@ -101,8 +101,8 @@ class Dorsale::CustomerVault::Person < ::Dorsale::ApplicationRecord
|
|
|
101
101
|
person_type == :individual
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
-
def tags_on(*
|
|
105
|
-
super
|
|
104
|
+
def tags_on(*)
|
|
105
|
+
super.order(:name)
|
|
106
106
|
end
|
|
107
107
|
|
|
108
108
|
def links
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
class Dorsale::ExpenseGun::Expense <
|
|
1
|
+
class Dorsale::ExpenseGun::Expense < Dorsale::ApplicationRecord
|
|
2
2
|
self.table_name = "dorsale_expense_gun_expenses"
|
|
3
3
|
|
|
4
|
-
STATES = %w
|
|
4
|
+
STATES = %w[draft pending paid canceled]
|
|
5
5
|
|
|
6
6
|
has_many :expense_lines, inverse_of: :expense, dependent: :destroy, class_name: "Dorsale::ExpenseGun::ExpenseLine"
|
|
7
7
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
class Dorsale::Flyboy::Task <
|
|
1
|
+
class Dorsale::Flyboy::Task < Dorsale::ApplicationRecord
|
|
2
2
|
include ::Agilibox::Search
|
|
3
3
|
|
|
4
4
|
self.table_name = "dorsale_flyboy_tasks"
|
|
5
5
|
|
|
6
|
-
REMINDER_TYPES = %w
|
|
7
|
-
REMINDER_UNITS = %w
|
|
8
|
-
STATES = %w
|
|
6
|
+
REMINDER_TYPES = %w[duration custom]
|
|
7
|
+
REMINDER_UNITS = %w[days weeks months]
|
|
8
|
+
STATES = %w[done undone ontime onwarning onalert]
|
|
9
9
|
|
|
10
10
|
paginates_per 50
|
|
11
11
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Dorsale::BillingMachine::InvoiceMultipleVatPdf <
|
|
1
|
+
class Dorsale::BillingMachine::InvoiceMultipleVatPdf < Dorsale::BillingMachine::InvoiceSingleVatPdf
|
|
2
2
|
# rubocop:disable Style/SingleLineMethods
|
|
3
3
|
def first_column_width; 64.mm; end
|
|
4
4
|
def second_column_width; 22.mm; end
|
|
@@ -34,12 +34,12 @@ class Dorsale::BillingMachine::InvoiceMultipleVatPdf < ::Dorsale::BillingMachine
|
|
|
34
34
|
bb height: height do
|
|
35
35
|
table_products = [
|
|
36
36
|
[
|
|
37
|
-
main_document.t(:designation).
|
|
38
|
-
main_document.t(:quantity).
|
|
39
|
-
main_document.t(:unit).
|
|
40
|
-
main_document.t(:tax).
|
|
41
|
-
main_document.t(:unit_price).
|
|
42
|
-
main_document.t(:line_total).
|
|
37
|
+
main_document.t(:designation).upcase.to_s,
|
|
38
|
+
main_document.t(:quantity).upcase.to_s,
|
|
39
|
+
main_document.t(:unit).upcase.to_s,
|
|
40
|
+
main_document.t(:tax).upcase.to_s,
|
|
41
|
+
main_document.t(:unit_price).upcase.to_s,
|
|
42
|
+
main_document.t(:line_total).upcase.to_s,
|
|
43
43
|
],
|
|
44
44
|
]
|
|
45
45
|
|
|
@@ -83,34 +83,34 @@ class Dorsale::BillingMachine::InvoiceMultipleVatPdf < ::Dorsale::BillingMachine
|
|
|
83
83
|
|
|
84
84
|
if has_discount
|
|
85
85
|
table_totals.push [
|
|
86
|
-
main_document.t(:commercial_discount).
|
|
86
|
+
main_document.t(:commercial_discount).upcase.to_s,
|
|
87
87
|
bm_currency(-main_document.commercial_discount),
|
|
88
88
|
]
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
table_totals.push [
|
|
92
|
-
main_document.t(:total_excluding_taxes).
|
|
92
|
+
main_document.t(:total_excluding_taxes).upcase.to_s,
|
|
93
93
|
bm_currency(main_document.total_excluding_taxes),
|
|
94
94
|
]
|
|
95
95
|
|
|
96
96
|
table_totals.push [
|
|
97
|
-
main_document.t(:vat_amount).
|
|
97
|
+
main_document.t(:vat_amount).upcase.to_s,
|
|
98
98
|
bm_currency(main_document.vat_amount),
|
|
99
99
|
]
|
|
100
100
|
|
|
101
101
|
if has_advance
|
|
102
102
|
table_totals.push [
|
|
103
|
-
main_document.t(:advance).
|
|
103
|
+
main_document.t(:advance).upcase.to_s,
|
|
104
104
|
bm_currency(main_document.advance),
|
|
105
105
|
]
|
|
106
106
|
|
|
107
107
|
table_totals.push [
|
|
108
|
-
main_document.t(:total_including_taxes).
|
|
108
|
+
main_document.t(:total_including_taxes).upcase.to_s,
|
|
109
109
|
bm_currency(main_document.balance),
|
|
110
110
|
]
|
|
111
111
|
else
|
|
112
112
|
table_totals.push [
|
|
113
|
-
main_document.t(:total_including_taxes).
|
|
113
|
+
main_document.t(:total_including_taxes).upcase.to_s,
|
|
114
114
|
bm_currency(main_document.total_including_taxes),
|
|
115
115
|
]
|
|
116
116
|
end
|