Class: OLE_QA::Framework::OLEFS::Line_Item

Inherits:
Line_Object show all
Defined in:
lib/olefs/objects/line_item.rb

Overview

A single Line Item in an OLE Financial System PURAP E-Document.

Instance Attribute Summary

Attributes inherited from Line_Object

#line_number, #sublines

Attributes inherited from Common_Object

#elements, #functions, #ole

Instance Method Summary collapse

Methods inherited from Line_Object

#initialize, #line_id, #set_subline

Methods inherited from Common_Object

#initialize, #set_functions

Methods included from Helpers

#browser, #load_yml, #set_element, #set_function

Constructor Details

This class inherits a constructor from OLE_QA::Framework::Line_Object

Instance Method Details

#set_elementsObject

Set line item elements.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/olefs/objects/line_item.rb', line 26

def set_elements
  super
  # Fields
  element(:copies_field)                      {b.text_field(:id => "document.item[#{line_id}].oleItemQuantity")}
  element(:parts_field)                       {b.text_field(:id => "document.item[#{line_id}].itemNoOfParts")}
  element(:list_price_field)                  {b.text_field(:id => "document.item[#{line_id}].itemListPrice")}
  element(:discount_field)                    {b.text_field(:id => "document.item[#{line_id}].itemDiscount")}
  element(:description_field)                 {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[1]/td[2]")}
  element(:item_type_field)                   {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[1]/td[3]")}
  element(:extended_cost_field)               {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[2]/td[3]")}
  element(:receipt_status_field)              {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[3]/td[1]")}
  # Selectors
  element(:item_price_source_selector)        {b.select_list(:id => "document.item[#{line_id}].itemPriceSourceId")}
  element(:request_source_selector)           {b.select_list(:id => "document.item[#{line_id}].requestSourceId")}
  element(:item_type_selector)                {b.select_list(:id => "document.item[#{line_id}].itemTypeDescription")}
  element(:format_selector)                   {b.select_list(:id => "document.item[#{line_id}].formatTypeId")}
  element(:category_selector)                 {b.select_list(:id => "document.item[#{line_id}].categoryId")}
  element(:discount_type_selector)            {b.select_list(:id => "document.item[#{line_id}].itemDiscountType")}
  element(:location_selector)                 {b.select_list(:id => "document.item[#{line_id}].itemLocation")}
  # Buttons, Checkboxes, Etc.
  element(:delete_button)                     {b.input(:title => "Delete Item #{@line_number}")}
  element(:route_to_requestor_checkbox)       {b.checkbox(:id => "document.item[#{line_id}].itemRouteToRequestor")}
  element(:public_view_checkbox)              {b.checkbox(:id => "document.item[#{line_id}].itemPublicViewIndicator")}
  # Readonly Elements
  # Use these for closed, uneditable fields as with a pre-existing line item on a purchase order.
  element(:closed_description_field)          {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[1]/td[2]")}
  element(:closed_item_type_field)            {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[1]/td[3]")}
  element(:closed_extended_cost_field)        {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[2]/td[3]")}
  element(:closed_list_price_field)           {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[2]/td[4]")}
  element(:closed_copies_field)               {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[2]/td[1]")}
  element(:closed_parts_field)                {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[2]/td[2]")}
  element(:closed_receipt_status_field)       {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[3]/td[1]")}
  element(:closed_copies_received_field)      {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[3]/td[2]")}
  element(:closed_parts_received_field)       {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[3]/td[3]")}
  element(:closed_item_price_source_field)    {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[3]/td[4]")}
  element(:closed_request_source_field)       {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[3]/td[5]")}
  element(:closed_format_field)               {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[4]/td[1]")}
  element(:closed_category_field)             {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[4]/td[2]")}
  element(:closed_vendor_item_id_field)       {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[4]/td[3]")}
  element(:closed_requestor_field)            {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[4]/td[4]")}
  element(:closed_route_to_requestor_field)   {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[4]/td[5]")}
  element(:closed_unit_cost_field)            {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[5]/td[1]")}
  element(:closed_discount_field)             {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[5]/td[2]")}
  element(:closed_discount_type_field)        {b.td(:xpath => "//tr[td[@class='tab-subhead'][contains(text(),'Item #{@line_number}')]]/following-sibling::tr[5]/td[4]")}
  # Subtab Toggle Buttons                   # Matches all of type, then selects by index = line_id (i.e. if @line_num is 1, index is 0)
  element(:accounting_lines_toggle)           {b.input(:id => /tab-AccountingLines[0-9]+-imageToggle/, :index => line_id)}
  element(:notes_toggle)                      {b.input(:id => /tab-Notes[0-9]+-imageToggle/, :index => line_id)}
  element(:copies_toggle)                     {b.input(:id => /tab-Copies[0-9]+-imageToggle/, :index => line_id)}
  # New Accounting Line Elements
  element(:account_number_field)              {b.text_field(:id => "document.item[#{line_id}].newSourceLine.accountNumber")}
  element(:chart_selector)                    {b.select_list(:id => "document.item[#{line_id}].newSourceLine.chartOfAccountsCode")}
  element(:sub_account_number_field)          {b.text_field(:id => "document.item[#{line_id}].newSourceLine.subAccountNumber")}
  element(:object_field)                      {b.text_field(:id => "document.item[#{line_id}].newSourceLine.financialObjectCode")}
  element(:sub_object_field)                  {b.text_field(:id => "document.item[#{line_id}].newSourceLine.financialSubObjectCode")}
  element(:project_field)                     {b.text_field(:id => "document.item[#{line_id}].newSourceLine.projectCode")}
  element(:org_ref_id_field)                  {b.text_field(:id => "document.item[#{line_id}].newSourceLine.organizationReferenceId")}
  element(:dollar_field)                      {b.text_field(:id => "document.item[#{line_id}].newSourceLine.amount")}
  element(:percent_field)                     {b.text_field(:id => "document.item[#{line_id}].newSourceLine.accountLinePercent")}
  element(:add_account_button)                {b.input(:name => "methodToCall.insertSourceLine.line#{line_id}.anchoraccountingSourceAnchor")}
  # New Notes Line Elements
  element(:note_type_selector)                {b.select_list(:id => "document.item[#{line_id}].noteTypeId")}
  element(:note_field)                        {b.text_field(:id => "document.item[#{line_id}].note")}
  element(:add_note_button)                   {b.input(:name => "methodToCall.addNote.line#{line_id}")}
  # New Copies Line Elements
  element(:copies_line_copies_field)          {b.text_field(:id => "document.item[#{line_id}].itemCopies")}
  element(:location_copies_selector)          {b.select_list(:id => "document.item[#{line_id}].locationCopies")}
  element(:starting_copy_field)               {b.text_field(:id => "document.item[#{line_id}].startingCopyNumber")}
  element(:caption_field)                     {b.text_field(:id => "document.item[#{line_id}].caption")}
  element(:volume_number_field)               {b.text_field(:id => "document.item[#{line_id}].volumeNumber")}
  element(:add_copy_button)                   {b.input(:name => "methodToCall.addCopy.line#{line_id}")}
end

#set_sublinesObject

Create accessor methods for subline objects.



19
20
21
22
23
# File 'lib/olefs/objects/line_item.rb', line 19

def set_sublines
  set_subline(:accounting_line, OLE_QA::Framework::OLEFS::Accounting_Line)
  set_subline(:notes_line, OLE_QA::Framework::OLEFS::Notes_Line)
  set_subline(:copies_line, OLE_QA::Framework::OLEFS::Copies_Line)
end