Class: EdiInvoicesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/edi_invoices_controller.rb

Instance Method Summary collapse

Methods included from AuthentificationHelper

#accessible_company_ids_from_tenant_and_user, #application_mode_from_hostname, #current_company_id_from_accessible_company_ids, #current_tenant_from_user, #current_user_and_locale_from_token

Instance Method Details

#countsObject



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'app/controllers/edi_invoices_controller.rb', line 116

def counts
  edi_invoice_id = params[:edi_invoice_id]
  invoice = EdiInvoice.where(edi_invoice_id: edi_invoice_id, company_id: current_company_id)
  if invoice.exists?
    count_of_names = EdiInvoiceName.where(edi_invoice_id: edi_invoice_id).count
    count_of_lines = EdiInvoiceLine.where(edi_invoice_id: edi_invoice_id, company_id: current_company_id).count
    render json: {
      invoice_no: invoice.first.invoice_no,
      count_of_edi_invoice_lines: count_of_lines,
      count_of_edi_invoice_names: count_of_names
    }
  else
    render json: { error: I18n.t('edi_invoices.edi_invoice_not_found') }, status: :not_found
  end
end

#indexObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/controllers/edi_invoices_controller.rb', line 10

def index
  display_length = params[:limit] || 10
  search_value = params[:query] || ''
  display_start_from_page_no = params[:offset] || 1
  order_by = params[:order_by] || 'invoice_date'
  order_direction = params[:order_direction] || 'DESC'
  grouping = "#{order_by} #{order_direction}"
  company_id = current_company_id
  edi_partner_id = params[:edi_partner_id]

  result = EdiInvoice.edi_invoices_by_page(
    display_length: display_length,
    search_value: search_value,
    display_start_from_page_no: display_start_from_page_no,
    grouping: grouping,
    company_id: company_id,
    edi_partner_id: edi_partner_id
  )
  render json: {
    data: result[:data].as_json(
      methods: [:type_description]
    ),
    metadata: result[:metadata]
  }
end

#invoice_linesObject



93
94
95
96
97
# File 'app/controllers/edi_invoices_controller.rb', line 93

def invoice_lines
  edi_invoice_id = params[:edi_invoice_id]
  results = EdiInvoiceLine.where(edi_invoice_id: edi_invoice_id, company_id: current_company_id)
  render json: results
end

#invoice_namesObject



82
83
84
85
86
87
88
89
90
91
# File 'app/controllers/edi_invoices_controller.rb', line 82

def invoice_names
  edi_invoice_id = params[:edi_invoice_id]
  invoice = EdiInvoice.where(edi_invoice_id: edi_invoice_id, company_id: current_company_id)
  if invoice.exists?
    results = EdiInvoiceName.where(edi_invoice_id: edi_invoice_id)
    render json: results
  else
    render json: { error: I18n.t('edi_invoices.edi_invoice_not_found') }, status: :not_found
  end
end

#showObject



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'app/controllers/edi_invoices_controller.rb', line 99

def show
  edi_invoice_id = params[:id]
  company_id = current_company_id
  edi_invoice = EdiInvoice.find_by(edi_invoice_id: edi_invoice_id, company_id: company_id)
  edi_invoice_lines = EdiInvoiceLine.where(edi_invoice_id: edi_invoice_id, company_id: company_id)
  if edi_invoice
    render json: {
      invoice: edi_invoice.as_json(
        methods: [:type_description]
      ),
      edi_invoice_lines: edi_invoice_lines
    }
  else
    render json: { error: I18n.t('edi_invoices.edi_invoice_not_found') }, status: :not_found
  end
end

#update_edi_210Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'app/controllers/edi_invoices_controller.rb', line 36

def update_edi_210
  edi_invoice_id = params[:id]

  begin
    edi_invoice = EdiInvoice.find_by!(edi_invoice_id: edi_invoice_id, company_id: current_company_id)

    updated_invoice = EdiInvoice.update_edi_invoice(
      edi_invoice_id: edi_invoice_id,
      purchase_order_no: params[:purchase_order_no],
      shipment_identification_no: params[:shipment_identification_no]
    )

    render json: {
      invoice: updated_invoice.as_json(
        methods: [:type_description]
      ),
      message: I18n.t('edi_invoices.invoice_updated_successfully')
    }
  rescue ActiveRecord::RecordNotFound
    render json: { error: I18n.t('edi_invoices.edi_invoice_not_found') }, status: :not_found
  end
end

#update_edi_210_rate_chargeObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'app/controllers/edi_invoices_controller.rb', line 59

def update_edi_210_rate_charge
  edi_line_item_rate_charge_id = params[:edi_line_item_rate_charge_id]
  edi_invoice_line_id = params[:edi_invoice_line_id]

  begin
    # First check if the invoice line belongs to the company
    invoice_line = EdiInvoiceLine.find_by!(edi_invoice_line_id: edi_invoice_line_id, company_id: current_company_id)

    updated_rate_charge = EdiInvoiceLine.update_edi_210_rate_charge(
      edi_line_item_rate_charge_id: edi_line_item_rate_charge_id,
      edi_invoice_line_id: edi_invoice_line_id,
      charge_indicator: params[:charge_indicator]
    )

    render json: {
      rate_charge: updated_rate_charge,
      message: I18n.t('edi_invoices.charge_indicator_updated_successfully')
    }
  rescue ActiveRecord::RecordNotFound
    render json: { error: I18n.t('edi_invoices.edi_invoice_line_not_found') }, status: :not_found
  end
end