Commit b0dddc7fb9aa1f149d5875243baf70ae39bd2178
1 parent
d9177f32
change from sorqbs to sorqry; add parser; tests passing
Showing
10 changed files
with
253 additions
and
74 deletions
Show diff stats
lib/syspro.rb
@@ -25,12 +25,14 @@ require 'syspro/api_operations/query' | @@ -25,12 +25,14 @@ require 'syspro/api_operations/query' | ||
25 | require 'syspro/business_objects/combrw' | 25 | require 'syspro/business_objects/combrw' |
26 | require 'syspro/business_objects/comfch' | 26 | require 'syspro/business_objects/comfch' |
27 | require 'syspro/business_objects/comfnd' | 27 | require 'syspro/business_objects/comfnd' |
28 | -require 'syspro/business_objects/sorqbs' | 28 | +require 'syspro/business_objects/sorqry' |
29 | + | ||
30 | +require 'syspro/business_objects/models/sor_detail' | ||
29 | 31 | ||
30 | require 'syspro/business_objects/parsers/combrw_parser' | 32 | require 'syspro/business_objects/parsers/combrw_parser' |
31 | require 'syspro/business_objects/parsers/comfch_parser' | 33 | require 'syspro/business_objects/parsers/comfch_parser' |
32 | require 'syspro/business_objects/parsers/comfnd_parser' | 34 | require 'syspro/business_objects/parsers/comfnd_parser' |
33 | -require 'syspro/business_objects/parsers/sorqbs_parser' | 35 | +require 'syspro/business_objects/parsers/sorqry_parser' |
34 | 36 | ||
35 | # Main Module | 37 | # Main Module |
36 | module Syspro | 38 | module Syspro |
1 | +module Syspro | ||
2 | + module BusinessObjects | ||
3 | + module Models | ||
4 | + class SorDetail | ||
5 | + attr_accessor :sales_order, :document_type, :document_type_desc, :inter_branch_transfer, :inter_wh_sale, | ||
6 | + :source_warehouse, :target_warehouse, :gtr_reference, :customer, :customer_name, :tax_status_code, | ||
7 | + :tax_status, :gst_tax_status_code, :gst_tax_status, :eu_flag, :eu_flag_desc, :sold_to_name, | ||
8 | + :sold_addr_1, :sold_addr_2, :sold_addr_3, :sold_addr_3_locality, :sold_addr_4, :sold_addr_5, | ||
9 | + :sold_postal_code, :sold_gps_lat, :sold_gps_long, :salesperson, :scheduled_ord_flag, :disc_pct_1, | ||
10 | + :disc_pct_2, :disc_pct_3, :salsls_name, :order_status, :order_status_desc, :customer_po_number, | ||
11 | + :order_date, :git_reference, :req_ship_date, :shipping_instrs, :shipping_instrs_cod, :special_instrs, | ||
12 | + :inv_terms_override, :delivery_note, :last_del_note, :time_del_prted_hh, :time_del_prted_mm, :last_invoice, | ||
13 | + :date_last_inv_prt, :time_inv_prt_hh, :time_inv_prt_mm, :tblart_description, :branch, :salbrn_description, | ||
14 | + :ent_invoice, :order_type, :area, :salare_description, :tax_exempt_number, :gst_exempt_number, :currency, | ||
15 | + :tblcur_description, :ship_address_1, :ship_address_2, :ship_address_3, :ship_address_3_locality, | ||
16 | + :ship_address_4, :ship_address_5, :ship_postal_code, :ship_gps_lat, :ship_gps_long, :ship_complete, | ||
17 | + :email, :fix_exchange_rate, :exchange_rate, :edited_exchange_rate, :mul_div, :consolidated_order, | ||
18 | + :gst_deduction, :credited_inv_date, :job, :serialized_flag, :counter_sales_flag, :nationality, | ||
19 | + :delivery_terms, :shipping_location, :transaction_nature, :transport_mode, :process_flag, | ||
20 | + :jobs_exist_flag, :alternate_key, :hierarchy_flag, :deposit_flag, :edi_source, :mult_ship_code, | ||
21 | + :company_tax_no, :last_operator, :operator, :state, :county_zip, :extended_tax_code, :web_created, | ||
22 | + :quote, :dispatches_made, :live_disp_exist, :num_dispatches, :include_in_mrp, :header_text, | ||
23 | + :header_notes, :commissions | ||
24 | + end | ||
25 | + end | ||
26 | + end | ||
27 | +end | ||
28 | + |
lib/syspro/business_objects/parsers/sorqbs_parser.rb deleted
1 | -# frozen_string_literal: true | ||
2 | - | ||
3 | -module Syspro | ||
4 | - module BusinessObjects | ||
5 | - module Parsers | ||
6 | - class SorQbs | ||
7 | - attr_reader :doc | ||
8 | - | ||
9 | - def initialize(doc) | ||
10 | - @doc = doc | ||
11 | - end | ||
12 | - | ||
13 | - def parse | ||
14 | - binding.pry | ||
15 | - sor = Syspro::BusinessObjects::Models::Sor.new() | ||
16 | - end | ||
17 | - end | ||
18 | - end | ||
19 | - end | ||
20 | -end | ||
21 | - |
lib/syspro/business_objects/parsers/sorqry_parser.rb
0 → 100644
1 | +# frozen_string_literal: true | ||
2 | + | ||
3 | +module Syspro | ||
4 | + module BusinessObjects | ||
5 | + module Parsers | ||
6 | + class SorQryParser | ||
7 | + attr_reader :doc | ||
8 | + | ||
9 | + def initialize(doc) | ||
10 | + @doc = doc | ||
11 | + end | ||
12 | + | ||
13 | + def parse | ||
14 | + sor = Syspro::BusinessObjects::Models::SorDetail.new() | ||
15 | + sor.sales_order = doc.first_element_child.xpath("SalesOrder").text | ||
16 | + sor.document_type = doc.first_element_child.xpath("DocumentType").text | ||
17 | + sor.document_type_desc = doc.first_element_child.xpath("DocumentTypeDesc").text | ||
18 | + sor.inter_branch_transfer = doc.first_element_child.xpath("InterBranchTransfer").text | ||
19 | + sor.inter_wh_sale = doc.first_element_child.xpath("InterWhSale").text | ||
20 | + sor.source_warehouse = doc.first_element_child.xpath("SourceWarehouse").text | ||
21 | + sor.target_warehouse = doc.first_element_child.xpath("TargetWarehouse").text | ||
22 | + sor.gtr_reference = doc.first_element_child.xpath("GtrReference").text | ||
23 | + sor.customer = doc.first_element_child.xpath("Customer").text | ||
24 | + sor.customer_name = doc.first_element_child.xpath("CustomerName").text | ||
25 | + sor.tax_status_code = doc.first_element_child.xpath("TaxStatusCode").text | ||
26 | + sor.tax_status = doc.first_element_child.xpath("TaxStatus").text | ||
27 | + sor.gst_tax_status_code = doc.first_element_child.xpath("GstTaxStatusCode").text | ||
28 | + sor.gst_tax_status = doc.first_element_child.xpath("GstTaxStatus").text | ||
29 | + sor.eu_flag = doc.first_element_child.xpath("EuFlag").text | ||
30 | + sor.eu_flag_desc = doc.first_element_child.xpath("EuFlagDesc").text | ||
31 | + sor.sold_to_name = doc.first_element_child.xpath("SoldToName").text | ||
32 | + sor.sold_addr_1 = doc.first_element_child.xpath("SoldAddr1").text | ||
33 | + sor.sold_addr_2 = doc.first_element_child.xpath("SoldAddr2").text | ||
34 | + sor.sold_addr_3 = doc.first_element_child.xpath("SoldAddr3").text | ||
35 | + sor.sold_addr_3_locality = doc.first_element_child.xpath("SoldAddr3Locality").text | ||
36 | + sor.sold_addr_4 = doc.first_element_child.xpath("SoldAddr4").text | ||
37 | + sor.sold_addr_5 = doc.first_element_child.xpath("SoldAddr5").text | ||
38 | + sor.sold_postal_code = doc.first_element_child.xpath("SoldPostalCode").text | ||
39 | + sor.sold_gps_lat = doc.first_element_child.xpath("SoldGpsLat").text | ||
40 | + sor.sold_gps_long = doc.first_element_child.xpath("SoldGpsLong").text | ||
41 | + sor.salesperson = doc.first_element_child.xpath("Salesperson").text | ||
42 | + sor.scheduled_ord_flag = doc.first_element_child.xpath("ScheduledOrdFlag").text | ||
43 | + sor.disc_pct_1 = doc.first_element_child.xpath("DiscPct1").text | ||
44 | + sor.disc_pct_2 = doc.first_element_child.xpath("DiscPct2").text | ||
45 | + sor.disc_pct_3 = doc.first_element_child.xpath("DiscPct3").text | ||
46 | + sor.salsls_name = doc.first_element_child.at_xpath('//SALSLS:Name').children.text | ||
47 | + sor.order_status = doc.first_element_child.xpath("OrderStatus").text | ||
48 | + sor.order_status_desc = doc.first_element_child.xpath("OrderStatusDesc").text | ||
49 | + sor.customer_po_number = doc.first_element_child.xpath("CustomerPoNumber").text | ||
50 | + sor.order_date = doc.first_element_child.xpath("OrderDate").text | ||
51 | + sor.git_reference = doc.first_element_child.xpath("GITReference").text | ||
52 | + sor.req_ship_date = doc.first_element_child.xpath("ReqShipDate").text | ||
53 | + sor.shipping_instrs = doc.first_element_child.xpath("ShippingInstrs").text | ||
54 | + sor.shipping_instrs_cod = doc.first_element_child.xpath("ShippingInstrsCod").text | ||
55 | + sor.special_instrs = doc.first_element_child.xpath("SpecialInstrs").text | ||
56 | + sor.inv_terms_override = doc.first_element_child.xpath("InvTermsOverride").text | ||
57 | + sor.delivery_note = doc.first_element_child.xpath("DeliveryNote").text | ||
58 | + sor.last_del_note = doc.first_element_child.xpath("LastDelNote").text | ||
59 | + sor.time_del_prted_hh = doc.first_element_child.xpath("TimeDelPrtedHh").text | ||
60 | + sor.time_del_prted_mm = doc.first_element_child.xpath("TimeDelPrtedMm").text | ||
61 | + sor.last_invoice = doc.first_element_child.xpath("LastInvoice").text | ||
62 | + sor.date_last_inv_prt = doc.first_element_child.xpath("DateLastInvPrt").text | ||
63 | + sor.time_inv_prt_hh = doc.first_element_child.xpath("TimeInvPrtHh").text | ||
64 | + sor.time_inv_prt_mm = doc.first_element_child.xpath("TimeInvPrtMm").text | ||
65 | + sor.tblart_description = doc.first_element_child.xpath("//TBLART:Description").children.text | ||
66 | + sor.branch = doc.first_element_child.xpath("Branch").text | ||
67 | + sor.salbrn_description = doc.first_element_child.xpath("//SALBRN:Description").children.text | ||
68 | + sor.ent_invoice = doc.first_element_child.xpath("EntInvoice").text | ||
69 | + sor.order_type = doc.first_element_child.xpath("OrderType").text | ||
70 | + sor.area = doc.first_element_child.xpath("Area").text | ||
71 | + sor.salare_description = doc.first_element_child.xpath("//SALARE:Description").children.text | ||
72 | + sor.tax_exempt_number = doc.first_element_child.xpath("TaxExemptNumber").text | ||
73 | + sor.gst_exempt_number = doc.first_element_child.xpath("GstExemptNumber").text | ||
74 | + sor.currency = doc.first_element_child.xpath("Currency").text | ||
75 | + sor.tblcur_description = doc.first_element_child.xpath("//TBLCUR:Description").children.text | ||
76 | + sor.ship_address_1 = doc.first_element_child.xpath("ShipAddress1").text | ||
77 | + sor.ship_address_2 = doc.first_element_child.xpath("ShipAddress2").text | ||
78 | + sor.ship_address_3 = doc.first_element_child.xpath("ShipAddress3").text | ||
79 | + sor.ship_address_3_locality = doc.first_element_child.xpath("ShipAddress3Locality").text | ||
80 | + sor.ship_address_4 = doc.first_element_child.xpath("ShipAddress4").text | ||
81 | + sor.ship_address_5 = doc.first_element_child.xpath("ShipAddress5").text | ||
82 | + sor.ship_postal_code = doc.first_element_child.xpath("ShipPostalCode").text | ||
83 | + sor.ship_gps_lat = doc.first_element_child.xpath("ShipGpsLat").text | ||
84 | + sor.ship_gps_long = doc.first_element_child.xpath("ShipGpsLong").text | ||
85 | + sor.ship_complete = doc.first_element_child.xpath("ShipComplete").text | ||
86 | + sor.email = doc.first_element_child.xpath("Email").text | ||
87 | + sor.fix_exchange_rate = doc.first_element_child.xpath("FixExchangeRate").text | ||
88 | + sor.exchange_rate = doc.first_element_child.xpath("ExchangeRate").text | ||
89 | + sor.edited_exchange_rate = doc.first_element_child.xpath("EditedExchangeRate").text | ||
90 | + sor.mul_div = doc.first_element_child.xpath("MulDiv").text | ||
91 | + sor.consolidated_order = doc.first_element_child.xpath("ConsolidatedOrder").text | ||
92 | + sor.gst_deduction = doc.first_element_child.xpath("GstDeduction").text | ||
93 | + sor.credited_inv_date = doc.first_element_child.xpath("CreditedInvDate").text | ||
94 | + sor.job = doc.first_element_child.xpath("Job").text | ||
95 | + sor.serialized_flag = doc.first_element_child.xpath("SerializedFlag").text | ||
96 | + sor.counter_sales_flag = doc.first_element_child.xpath("CounterSalesFlag").text | ||
97 | + sor.nationality = doc.first_element_child.xpath("Nationality").text | ||
98 | + sor.delivery_terms = doc.first_element_child.xpath("DeliveryTerms").text | ||
99 | + sor.shipping_location = doc.first_element_child.xpath("ShippingLocation").text | ||
100 | + sor.transaction_nature = doc.first_element_child.xpath("TransactionNature").text | ||
101 | + sor.transport_mode = doc.first_element_child.xpath("TransportMode").text | ||
102 | + sor.process_flag = doc.first_element_child.xpath("ProcessFlag").text | ||
103 | + sor.jobs_exist_flag = doc.first_element_child.xpath("JobsExistFlag").text | ||
104 | + sor.alternate_key = doc.first_element_child.xpath("AlternateKey").text | ||
105 | + sor.hierarchy_flag = doc.first_element_child.xpath("HierarchyFlag").text | ||
106 | + sor.deposit_flag = doc.first_element_child.xpath("DepositFlag").text | ||
107 | + sor.edi_source = doc.first_element_child.xpath("EdiSource").text | ||
108 | + sor.mult_ship_code = doc.first_element_child.xpath("MultShipCode").text | ||
109 | + sor.company_tax_no = doc.first_element_child.xpath("CompanyTaxNo").text | ||
110 | + sor.last_operator = doc.first_element_child.xpath("LastOperator").text | ||
111 | + sor.operator = doc.first_element_child.xpath("Operator").text | ||
112 | + sor.state = doc.first_element_child.xpath("State").text | ||
113 | + sor.county_zip = doc.first_element_child.xpath("CountyZip").text | ||
114 | + sor.extended_tax_code = doc.first_element_child.xpath("ExtendedTaxCode").text | ||
115 | + sor.web_created = doc.first_element_child.xpath("WebCreated").text | ||
116 | + sor.quote = doc.first_element_child.xpath("Quote").text | ||
117 | + sor.dispatches_made = doc.first_element_child.xpath("DispatchesMade").text | ||
118 | + sor.live_disp_exist = doc.first_element_child.xpath("LiveDispExist").text | ||
119 | + sor.num_dispatches = doc.first_element_child.xpath("NumDispatches").text | ||
120 | + sor.include_in_mrp = doc.first_element_child.xpath("IncludeInMrp").text | ||
121 | + sor.header_text = doc.first_element_child.xpath("HeaderText").text | ||
122 | + sor.header_notes = doc.first_element_child.xpath("HeaderNotes").text | ||
123 | + | ||
124 | + commissions = doc.first_element_child.xpath("Commissions") | ||
125 | + commissions_obj = commissions.children.map do |el| | ||
126 | + next if el.name == "text" | ||
127 | + { | ||
128 | + name: el.name, | ||
129 | + text: el.text | ||
130 | + } | ||
131 | + end.compact | ||
132 | + sor.commissions = commissions_obj | ||
133 | + | ||
134 | + sor | ||
135 | + end | ||
136 | + end | ||
137 | + end | ||
138 | + end | ||
139 | +end | ||
140 | + |
lib/syspro/business_objects/schemas/sorqbs.xml.erb deleted
1 | -<?xml version="1.0" encoding="Windows-1252"?> | ||
2 | -<Query xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORQBS.XSD"> | ||
3 | - <Option> | ||
4 | - <IncludeSalesOrderDetails><%= @include_sales_order_details %></IncludeSalesOrderDetails> | ||
5 | - <IncludeContractDetails><%= @include_contact_details %></IncludeContractDetails> | ||
6 | - <IncludeDeliveryHistory><%= @include_delivery_history %></IncludeDeliveryHistory> | ||
7 | - <IncludeUnconfirmedReleases><%= @include_unconfirmed_releases %></IncludeUnconfirmedReleases> | ||
8 | - <IncludeConfirmedReleases><%= @include_confirmed_releases %></IncludeConfirmedReleases> | ||
9 | - <IncludeReleaseDetails><%= @include_release_details %></IncludeReleaseDetails> | ||
10 | - <IncludeReleaseHistory><%= @include_release_history %></IncludeReleaseHistory> | ||
11 | - </Option> | ||
12 | - <% unless @filters.empty? %> | ||
13 | - <Filter> | ||
14 | - <% for filter in @filters %> | ||
15 | - <<%= filter[:name] %> FilterType="<% filter[:type] %>" FilterValue="<% filter[:value] %>"/> | ||
16 | - <% end %> | ||
17 | - </Filter> | ||
18 | - <% end %> | ||
19 | -</Query> | ||
20 | - |
1 | +<?xml version="1.0" encoding="Windows-1252"?> | ||
2 | +<Query xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORQRY.XSD"> | ||
3 | + <Key> | ||
4 | + <SalesOrder><%= @sales_order %></SalesOrder> | ||
5 | + <% unless @invoice.nil? %> | ||
6 | + <Invoice><%= @invoice %></Invoice> | ||
7 | + <% end %> | ||
8 | + </Key> | ||
9 | + <Option> | ||
10 | + <IncludeStockedLines><%= @stocked_lines ? "N" : "Y" %></IncludeStockedLines> | ||
11 | + <IncludeNonStockedLines><%= @non_stocked_lines ? "N" : "Y" %></IncludeNonStockedLines> | ||
12 | + <IncludeFreightLines><%= @freight_lines ? "N" : "Y" %></IncludeFreightLines> | ||
13 | + <IncludeMiscLines><%= @misc_lines ? "N" : "Y" %></IncludeMiscLines> | ||
14 | + <IncludeCommentLines><%= @comment_lines ? "N" : "Y" %></IncludeCommentLines> | ||
15 | + <IncludeCompletedLines><%= @completed_lines ? "N" : "Y" %></IncludeCompletedLines> | ||
16 | + <IncludeSerials><%= @serials ? "N" : "Y" %></IncludeSerials> | ||
17 | + <IncludeLots><%= @lots ? "N" : "Y" %></IncludeLots> | ||
18 | + <IncludeBins><%= @bins ? "N" : "Y" %></IncludeBins> | ||
19 | + <IncludeAttachedItems><%= @attached_items ? "N" : "Y" %></IncludeAttachedItems> | ||
20 | + <IncludeCustomForms><%= @custom_forms ? "N" : "Y" %></IncludeCustomForms> | ||
21 | + <IncludeDetailLineCustomForms><%= @detail_line_custom_forms ? "N" : "Y" %></IncludeDetailLineCustomForms> | ||
22 | + <IncludeValues><%= @values ? "N" : "Y" %></IncludeValues> | ||
23 | + <ReturnLineShipDate><%= @line_ship_date ? "N" : "Y" %></ReturnLineShipDate> | ||
24 | + <XslStylesheet/> | ||
25 | + </Option> | ||
26 | +</Query> | ||
27 | + |
lib/syspro/business_objects/sorqbs.rb renamed to lib/syspro/business_objects/sorqry.rb
1 | # frozen_string_literal: true | 1 | # frozen_string_literal: true |
2 | 2 | ||
3 | -require 'syspro/business_objects/parsers/sorqbs_parser' | 3 | +require 'syspro/business_objects/parsers/sorqry_parser' |
4 | require 'erb' | 4 | require 'erb' |
5 | 5 | ||
6 | module Syspro | 6 | module Syspro |
7 | module BusinessObjects | 7 | module BusinessObjects |
8 | - class SorQbs < ApiResource | 8 | + class SorQry < ApiResource |
9 | include Syspro::ApiOperations::Query | 9 | include Syspro::ApiOperations::Query |
10 | include Syspro::BusinessObjects::Parsers | 10 | include Syspro::BusinessObjects::Parsers |
11 | 11 | ||
12 | - attr_accessor :include_sales_order_details, :include_contact_details, :include_delivery_history, | ||
13 | - :include_unconfirmed_releases, :include_confirmed_releases, :include_release_details, | ||
14 | - :include_release_history, :filters | 12 | + attr_accessor :sales_order, :invoice, :stocked_lines, :non_stocked_lines, :freight_lines, |
13 | + :misc_lines, :comment_lines, :completed_lines, :serials, :lots, :bins, | ||
14 | + :attached_items, :custom_forms, :detail_line_custom_forms, :values, :line_ship_date | ||
15 | 15 | ||
16 | def call(user_id) | 16 | def call(user_id) |
17 | xml_in = template.result(binding) | 17 | xml_in = template.result(binding) |
18 | - business_object = 'SORQBS' | 18 | + business_object = 'SORQRY' |
19 | params = { 'UserId' => user_id, 'BusinessObject' => business_object, 'XmlIn' => xml_in } | 19 | params = { 'UserId' => user_id, 'BusinessObject' => business_object, 'XmlIn' => xml_in } |
20 | - resp = SorQbs.query(params) | 20 | + resp = SorQry.query(params) |
21 | + | ||
21 | parse_response(resp) | 22 | parse_response(resp) |
22 | end | 23 | end |
23 | 24 | ||
24 | def template | 25 | def template |
25 | - ERB.new File.read(File.expand_path('schemas/sorqbs.xml.erb', File.dirname(__FILE__))), nil, '%' | 26 | + ERB.new File.read(File.expand_path('schemas/sorqry.xml.erb', File.dirname(__FILE__))), nil, '%' |
26 | end | 27 | end |
27 | 28 | ||
28 | def parse_response(resp) | 29 | def parse_response(resp) |
29 | handle_errors(resp) | 30 | handle_errors(resp) |
30 | - parser = SorQbsParser.new(respo[0].data) | 31 | + parser = SorQryParser.new(resp[0].data) |
31 | parser.parse | 32 | parser.parse |
32 | end | 33 | end |
33 | 34 |
lib/syspro/get_logon_profile.rb
@@ -18,7 +18,7 @@ module Syspro | @@ -18,7 +18,7 @@ module Syspro | ||
18 | OpenStruct.new( | 18 | OpenStruct.new( |
19 | company_name: doc.xpath('//CompanyName').text, | 19 | company_name: doc.xpath('//CompanyName').text, |
20 | operator_code: doc.xpath('//OperatorCode').text, | 20 | operator_code: doc.xpath('//OperatorCode').text, |
21 | - operator_code: doc.xpath('//OperatorGroup').text, | 21 | + operator_group: doc.xpath('//OperatorGroup').text, |
22 | operator_email_address: doc.xpath('//OperatorEmailAddress').text, | 22 | operator_email_address: doc.xpath('//OperatorEmailAddress').text, |
23 | operator_location: doc.xpath('//OperatorLocation').text, | 23 | operator_location: doc.xpath('//OperatorLocation').text, |
24 | operator_language_code: doc.xpath('//OperatorLanguageCode').text, | 24 | operator_language_code: doc.xpath('//OperatorLanguageCode').text, |
test/cassettes/test_sor_query.yml
@@ -27,15 +27,15 @@ http_interactions: | @@ -27,15 +27,15 @@ http_interactions: | ||
27 | Server: | 27 | Server: |
28 | - Microsoft-HTTPAPI/2.0 | 28 | - Microsoft-HTTPAPI/2.0 |
29 | Date: | 29 | Date: |
30 | - - Wed, 11 Apr 2018 19:00:49 GMT | 30 | + - Thu, 26 Apr 2018 19:08:08 GMT |
31 | body: | 31 | body: |
32 | encoding: UTF-8 | 32 | encoding: UTF-8 |
33 | - string: 'E621DED6B5E98C4783D130230F6B29E700 ' | 33 | + string: 'E3333B82C68A4F4893184E2DE8C42E4A00 ' |
34 | http_version: | 34 | http_version: |
35 | - recorded_at: Wed, 11 Apr 2018 19:00:49 GMT | 35 | + recorded_at: Thu, 26 Apr 2018 19:08:09 GMT |
36 | - request: | 36 | - request: |
37 | method: get | 37 | method: get |
38 | - uri: http://syspro.wildlandlabs.com:90/SYSPROWCFService/Rest/Query/Query?BusinessObject=SORQBS&UserId=E621DED6B5E98C4783D130230F6B29E700%20%20&XmlIn=%3C?xml%20version=%221.0%22%20encoding=%22Windows-1252%22?%3E%0A%3CQuery%20xmlns:xsd=%22http://www.w3.org/2001/XMLSchema-instance%22%20xsd:noNamespaceSchemaLocation=%22SORQBS.XSD%22%3E%0A%20%20%3COption%3E%0A%20%20%20%20%3CIncludeSalesOrderDetails%3Etrue%3C/IncludeSalesOrderDetails%3E%0A%20%20%20%20%3CIncludeContractDetails%3Etrue%3C/IncludeContractDetails%3E%0A%20%20%20%20%3CIncludeDeliveryHistory%3Etrue%3C/IncludeDeliveryHistory%3E%0A%20%20%20%20%3CIncludeUnconfirmedReleases%3Etrue%3C/IncludeUnconfirmedReleases%3E%0A%20%20%20%20%3CIncludeConfirmedReleases%3Etrue%3C/IncludeConfirmedReleases%3E%0A%20%20%20%20%3CIncludeReleaseDetails%3Etrue%3C/IncludeReleaseDetails%3E%0A%20%20%20%20%3CIncludeReleaseHistory%3Etrue%3C/IncludeReleaseHistory%3E%0A%20%20%3C/Option%3E%0A%20%20%20%0A%20%20%20%20%3CFilter%3E%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%3CCustomer%20FilterType=%22%22%20FilterValue=%22%22/%3E%0A%20%20%20%20%20%20%0A%20%20%20%20%3C/Filter%3E%0A%20%20%0A%3C/Query%3E%0A%0A | 38 | + uri: http://syspro.wildlandlabs.com:90/SYSPROWCFService/Rest/Query/Query?BusinessObject=SORQRY&UserId=E3333B82C68A4F4893184E2DE8C42E4A00%20%20&XmlIn=%3C?xml%20version=%221.0%22%20encoding=%22Windows-1252%22?%3E%0A%3CQuery%20xmlns:xsd=%22http://www.w3.org/2001/XMLSchema-instance%22%20xsd:noNamespaceSchemaLocation=%22SORQRY.XSD%22%3E%0A%20%20%3CKey%3E%0A%20%20%20%20%3CSalesOrder%3E16R069%3C/SalesOrder%3E%0A%20%20%20%20%0A%20%20%3C/Key%3E%0A%20%20%3COption%3E%0A%20%20%20%20%3CIncludeStockedLines%3EN%3C/IncludeStockedLines%3E%0A%20%20%20%20%20%20%3CIncludeNonStockedLines%3EN%3C/IncludeNonStockedLines%3E%0A%20%20%20%20%20%20%3CIncludeFreightLines%3EN%3C/IncludeFreightLines%3E%0A%20%20%20%20%20%20%3CIncludeMiscLines%3EN%3C/IncludeMiscLines%3E%0A%20%20%20%20%20%20%3CIncludeCommentLines%3EN%3C/IncludeCommentLines%3E%0A%20%20%20%20%20%20%3CIncludeCompletedLines%3EN%3C/IncludeCompletedLines%3E%0A%20%20%20%20%20%20%3CIncludeSerials%3EN%3C/IncludeSerials%3E%0A%20%20%20%20%20%20%3CIncludeLots%3EN%3C/IncludeLots%3E%0A%20%20%20%20%20%20%3CIncludeBins%3EN%3C/IncludeBins%3E%0A%20%20%20%20%20%20%3CIncludeAttachedItems%3EN%3C/IncludeAttachedItems%3E%0A%20%20%20%20%20%20%3CIncludeCustomForms%3EN%3C/IncludeCustomForms%3E%0A%20%20%20%20%20%20%3CIncludeDetailLineCustomForms%3EN%3C/IncludeDetailLineCustomForms%3E%0A%20%20%20%20%20%20%3CIncludeValues%3EN%3C/IncludeValues%3E%0A%20%20%20%20%20%20%3CReturnLineShipDate%3EN%3C/ReturnLineShipDate%3E%0A%20%20%20%20%20%20%3CXslStylesheet/%3E%0A%20%20%3C/Option%3E%0A%3C/Query%3E%0A%0A |
39 | body: | 39 | body: |
40 | encoding: US-ASCII | 40 | encoding: US-ASCII |
41 | string: '' | 41 | string: '' |
@@ -54,17 +54,33 @@ http_interactions: | @@ -54,17 +54,33 @@ http_interactions: | ||
54 | message: OK | 54 | message: OK |
55 | headers: | 55 | headers: |
56 | Content-Length: | 56 | Content-Length: |
57 | - - '102' | 57 | + - '3812' |
58 | Content-Type: | 58 | Content-Type: |
59 | - application/octet-stream | 59 | - application/octet-stream |
60 | Server: | 60 | Server: |
61 | - Microsoft-HTTPAPI/2.0 | 61 | - Microsoft-HTTPAPI/2.0 |
62 | Date: | 62 | Date: |
63 | - - Wed, 11 Apr 2018 19:00:53 GMT | 63 | + - Thu, 26 Apr 2018 19:08:15 GMT |
64 | body: | 64 | body: |
65 | encoding: UTF-8 | 65 | encoding: UTF-8 |
66 | - string: 'ERROR: Access denied to Functional Area ''SorBlanketSo'' for operator | ||
67 | - ''WLAND'' (Business Object ''SORQBS'')' | 66 | + string: "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\n<SorDetail Language='05' |
67 | + Language2='EN' CssStyle='' DecFormat='1' DateFormat='01' Role='01' Version='7.0.047' | ||
68 | + OperatorPrimaryRole=' ' xmlns:SALARE=\"SALARE\" xmlns:SALSLS=\"SALSLS\" | ||
69 | + xmlns:TBLART=\"TBLART\" xmlns:SALBRN=\"SALBRN\" xmlns:TBLCUR=\"TBLCUR\" >\n<SalesOrder>16R069</SalesOrder>\n<DocumentType>O</DocumentType>\n<DocumentTypeDesc>Order</DocumentTypeDesc>\n<InterBranchTransfer/>\n<InterWhSale/>\n<SourceWarehouse/>\n<TargetWarehouse/>\n<GtrReference/>\n<Customer>SYM000</Customer>\n<CustomerName>SYMRISE | ||
70 | + GLOBAL</CustomerName>\n<TaxStatusCode>E</TaxStatusCode>\n<TaxStatus>Exempt | ||
71 | + from tax</TaxStatus>\n<GSTTaxStatusCode>E</GSTTaxStatusCode>\n<GSTTaxStatus>Exempt | ||
72 | + from tax</GSTTaxStatus>\n<EUFlag>N</EUFlag>\n<EUFlagDesc>EU</EUFlagDesc>\n<SoldToName>SYMRISE | ||
73 | + GLOBAL</SoldToName>\n<SoldAddr1>FR KREDITOREN</SoldAddr1>\n<SoldAddr2>POSTFACH | ||
74 | + 1253</SoldAddr2>\n<SoldAddr3>D-37601 HOLZMINDEN</SoldAddr3>\n<SoldAddr3Locality/>\n<SoldAddr4>GERMANY</SoldAddr4>\n<SoldAddr5/>\n<SoldPostalCode/>\n<SoldGpsLat> | ||
75 | + \ 0.000000</SoldGpsLat>\n<SoldGpsLong> 0.000000</SoldGpsLong>\n<Salesperson>DAL</Salesperson>\n<ScheduledOrdFlag/>\n<DiscPct1>0.00</DiscPct1>\n<DiscPct2>0.00</DiscPct2>\n<DiscPct3>0.00</DiscPct3>\n<Commissions>\n<Salesperson>DAL</Salesperson>\n<CommissionSales1>0.00</CommissionSales1>\n<Edited_CommissionSales1>0.00</Edited_CommissionSales1>\n<Salesperson2/>\n<CommissionSales2>0.00</CommissionSales2>\n<Edited_CommissionSales2>0.00</Edited_CommissionSales2>\n<Salesperson3/>\n<CommissionSales3>0.00</CommissionSales3>\n<Edited_CommissionSales3>0.00</Edited_CommissionSales3>\n<Salesperson4/>\n<CommissionSales4>0.00</CommissionSales4>\n<Edited_CommissionSales4>0.00</Edited_CommissionSales4>\n</Commissions>\n<SALSLS:Name>DAN | ||
76 | + A LABBEE</SALSLS:Name>\n<OrderStatus>*</OrderStatus>\n<OrderStatusDesc>Cancelled | ||
77 | + during entry</OrderStatusDesc>\n<CustomerPoNumber/>\n<OrderDate>2014-08-13</OrderDate>\n<GITReference/>\n<ReqShipDate>2017-05-31</ReqShipDate>\n<ShippingInstrs/>\n<ShippingInstrsCod/>\n<SpecialInstrs/>\n<InvTermsOverride>3</InvTermsOverride>\n<DeliveryNote/>\n<LastDelNote/>\n<TimeDelPrtedHh>00</TimeDelPrtedHh>\n<TimeDelPrtedMm>00</TimeDelPrtedMm>\n<LastInvoice/>\n<DateLastInvPrt/>\n<TimeInvPrtedHh>00</TimeInvPrtedHh>\n<TimeInvPrtedMm>00</TimeInvPrtedMm>\n<TBLART:Description>NET | ||
78 | + 30 DAYS</TBLART:Description>\n<Branch>HQ</Branch>\n<SALBRN:Description>HARRAH, | ||
79 | + WASHINGTON RECEIVABLES</SALBRN:Description>\n<EntInvoice/>\n<OrderType/>\n<Area>FG</Area>\n<SALARE:Description>FOREIGN</SALARE:Description>\n<TaxExemptNumber/>\n<GstExemptNum/>\n<Currency>$</Currency>\n<TBLCUR:Description>DOLLAR</TBLCUR:Description>\n<ShipAddress1>IMPORTANT</ShipAddress1>\n<ShipAddress2>THIS | ||
80 | + IS A GLOBAL ACCOUNT</ShipAddress2>\n<ShipAddress3>USED TO HOLD</ShipAddress3>\n<ShipAddress3Locality/>\n<ShipAddress4>SCHEDULED | ||
81 | + ORDERS ON CONTRACTS</ShipAddress4>\n<ShipAddress5>DO NOT SHIP FROM GLOBAL</ShipAddress5>\n<ShipPostalCode/>\n<ShipGpsLat> | ||
82 | + \ 0.000000</ShipGpsLat>\n<ShipGpsLong> 0.000000</ShipGpsLong>\n<ShipComplete>N</ShipComplete>\n<Email/>\n<FixExchangeRate>N</FixExchangeRate>\n<ExchangeRate> | ||
83 | + \ 1.000000</ExchangeRate>\n<Edited_ExchangeRate>1.000000</Edited_ExchangeRate>\n<MulDiv>M</MulDiv>\n<ConsolidatedOrder/>\n<GstDeduction>I</GstDeduction>\n<CreditedInvDate/>\n<Job/>\n<SerialisedFlag/>\n<CounterSalesFlag/>\n<Nationality/>\n<DeliveryTerms/>\n<ShippingLocation/>\n<TransactionNature>000</TransactionNature>\n<TransportMode>00</TransportMode>\n<ProcessFlag>0</ProcessFlag>\n<JobsExistFlag/>\n<AlternateKey/>\n<HierarchyFlag/>\n<DepositFlag/>\n<EdiSource/>\n<MultShipCode/>\n<CompanyTaxNo/>\n<LastOperator>MATTB</LastOperator>\n<Operator/>\n<State/>\n<CountyZip/>\n<ExtendedTaxCode/>\n<WebCreated/>\n<Quote/>\n<DispatchesMade/>\n<LiveDispExist/>\n<NumDispatches>0</NumDispatches>\n<IncludeInMrp>Y</IncludeInMrp>\n<HeaderText>\n</HeaderText>\n<HeaderNotes>\n</HeaderNotes>\n</SorDetail>\n " | ||
68 | http_version: | 84 | http_version: |
69 | - recorded_at: Wed, 11 Apr 2018 19:00:53 GMT | 85 | + recorded_at: Thu, 26 Apr 2018 19:08:15 GMT |
70 | recorded_with: VCR 4.0.0 | 86 | recorded_with: VCR 4.0.0 |
test/sor_test.rb
@@ -16,21 +16,27 @@ class SorTest < Minitest::Test | @@ -16,21 +16,27 @@ class SorTest < Minitest::Test | ||
16 | end | 16 | end |
17 | 17 | ||
18 | def test_sor_query | 18 | def test_sor_query |
19 | - sorqbs = Syspro::BusinessObjects::SorQbs.new | 19 | + sorqbs = Syspro::BusinessObjects::SorQry.new |
20 | 20 | ||
21 | - sorqbs.include_sales_order_details = true | ||
22 | - sorqbs.include_contact_details = true | ||
23 | - sorqbs.include_delivery_history = true | ||
24 | - sorqbs.include_unconfirmed_releases = true | ||
25 | - sorqbs.include_confirmed_releases = true | ||
26 | - sorqbs.include_release_details = true | ||
27 | - sorqbs.include_release_history = true | ||
28 | - sorqbs.filters = [ | ||
29 | - { name: 'Customer', type: 'A', value: 'JJJ001' } | ||
30 | - ] | 21 | + sorqbs.sales_order = '16R069' |
22 | + sorqbs.invoice = nil | ||
23 | + sorqbs.stocked_lines = true | ||
24 | + sorqbs.non_stocked_lines = true | ||
25 | + sorqbs.freight_lines = true | ||
26 | + sorqbs.misc_lines = true | ||
27 | + sorqbs.comment_lines = true | ||
28 | + sorqbs.completed_lines = true | ||
29 | + sorqbs.serials = true | ||
30 | + sorqbs.lots = true | ||
31 | + sorqbs.bins = true | ||
32 | + sorqbs.attached_items = true | ||
33 | + sorqbs.custom_forms = true | ||
34 | + sorqbs.detail_line_custom_forms = true | ||
35 | + sorqbs.values = true | ||
36 | + sorqbs.line_ship_date = true | ||
31 | 37 | ||
32 | sor_result = sorqbs.call(user_id.guid) | 38 | sor_result = sorqbs.call(user_id.guid) |
33 | - refute_nil sor_result | 39 | + assert_kind_of Syspro::BusinessObjects::Models::SorDetail, sor_result |
34 | end | 40 | end |
35 | end | 41 | end |
36 | 42 |