Commit fb4108062a78cde13572d3d1c7d4b79d9da0814f
Committed by
GitHub
1 parent
d9a9cb5d
Add INVQRY business object (#13)
* WIP * Added InvQry Partial complete, not all data is parsed out of result XML Current project does not need the result yet
Showing
11 changed files
with
491 additions
and
8 deletions
Show diff stats
lib/syspro.rb
... | ... | @@ -34,11 +34,12 @@ require 'syspro/business_objects/portor' |
34 | 34 | require 'syspro/business_objects/portoi' |
35 | 35 | require 'syspro/business_objects/porqry' |
36 | 36 | require 'syspro/business_objects/comsfm' |
37 | +require 'syspro/business_objects/invqry' | |
37 | 38 | |
38 | 39 | require 'syspro/business_objects/models/sor' |
39 | 40 | require 'syspro/business_objects/models/sor_detail' |
40 | 41 | require 'syspro/business_objects/models/por_detail' |
41 | - | |
42 | +require 'syspro/business_objects/models/inv_qry_options' | |
42 | 43 | require 'syspro/business_objects/models/purchase_order' |
43 | 44 | require 'syspro/business_objects/models/purchase_orders/header' |
44 | 45 | require 'syspro/business_objects/models/purchase_orders/order_details' |
... | ... | @@ -46,8 +47,8 @@ require 'syspro/business_objects/models/purchase_orders/stock_line' |
46 | 47 | require 'syspro/business_objects/models/purchase_orders/freight_line' |
47 | 48 | require 'syspro/business_objects/models/purchase_orders/misc_charge_line' |
48 | 49 | require 'syspro/business_objects/models/purchase_orders/comment_line' |
49 | - | |
50 | 50 | require 'syspro/business_objects/models/comsfm_item' |
51 | +require 'syspro/business_objects/models/inv' | |
51 | 52 | |
52 | 53 | require 'syspro/business_objects/parsers/combrw_parser' |
53 | 54 | require 'syspro/business_objects/parsers/comfch_parser' |
... | ... | @@ -56,6 +57,7 @@ require 'syspro/business_objects/parsers/sorqry_parser' |
56 | 57 | require 'syspro/business_objects/parsers/portor_parser' |
57 | 58 | require 'syspro/business_objects/parsers/portoi_parser' |
58 | 59 | require 'syspro/business_objects/parsers/comsfm_parser' |
60 | +require 'syspro/business_objects/parsers/invqry_parser' | |
59 | 61 | |
60 | 62 | # Main Module |
61 | 63 | module Syspro | ... | ... |
1 | +# frozen_string_literal: true | |
2 | + | |
3 | +require 'syspro/business_objects/parsers/invqry_parser' | |
4 | +require 'erb' | |
5 | + | |
6 | +module Syspro | |
7 | + module BusinessObjects | |
8 | + class InvQry < ApiResource | |
9 | + include Syspro::ApiOperations::Query | |
10 | + include Syspro::BusinessObjects::Parsers | |
11 | + | |
12 | + attr_accessor :key_stock_code, | |
13 | + :filter_warehouse_list, # seperated by commas | |
14 | + :option | |
15 | + | |
16 | + def call(user_id) | |
17 | + xml_in = template.result(binding) | |
18 | + business_object = 'INVQRY' | |
19 | + params = { 'UserId' => user_id, 'BusinessObject' => business_object, 'XmlIn' => xml_in } | |
20 | + resp = InvQry.query(params) | |
21 | + | |
22 | + parse_response(resp) | |
23 | + end | |
24 | + | |
25 | + def template | |
26 | + ERB.new File.read(File.expand_path('schemas/invqry.xml.erb', File.dirname(__FILE__))), nil, '%' | |
27 | + end | |
28 | + | |
29 | + def parse_response(resp) | |
30 | + handle_errors(resp) | |
31 | + parser = InvQryParser.new(resp[0].data) | |
32 | + parser.parse | |
33 | + end | |
34 | + | |
35 | + def render_xml(inner_text, dflt_value = "") | |
36 | + inner_text ? inner_text.to_s : dflt_value | |
37 | + end | |
38 | + end | |
39 | + end | |
40 | +end | ... | ... |
1 | +module Syspro | |
2 | + module BusinessObjects | |
3 | + module Models | |
4 | + class Inv | |
5 | + attr_accessor :warehouse_totals, | |
6 | + :warehouse_items, | |
7 | + :stock_item, | |
8 | + :system_information | |
9 | + | |
10 | + def initialize | |
11 | + @warehouse_totals = WarehouseTotals.new | |
12 | + @warehouse_items = [] | |
13 | + @stock_item = StockItem.new | |
14 | + @system_information = SystemInformation.new | |
15 | + end | |
16 | + | |
17 | + def addWarehouseItem(new_hash) | |
18 | + w = WarehouseItem.new | |
19 | + | |
20 | + # copy hash items that match into new warehouse item | |
21 | + new_hash.keys.each do |k| | |
22 | + w.send("#{k.to_s}=", new_hash[k]) if w.methods.include? k | |
23 | + end | |
24 | + | |
25 | + @warehouse_items.push(w) | |
26 | + end | |
27 | + end | |
28 | + | |
29 | + class WarehouseTotals | |
30 | + attr_accessor :qty_on_hand, | |
31 | + :available_qty | |
32 | + | |
33 | + # Not all xml parsed, see https://infozone.syspro.com/Support/businessobjectslibrary/INVQRYOUT.XML | |
34 | + end | |
35 | + | |
36 | + class WarehouseItem | |
37 | + attr_accessor :warehouse, | |
38 | + :description, | |
39 | + :qty_on_hand, | |
40 | + :available_qty, | |
41 | + :qty_on_order, | |
42 | + :qty_in_inspection, | |
43 | + :minimum_qty, | |
44 | + :maximum_qty, | |
45 | + :qty_on_back_order, | |
46 | + :qty_allocated, | |
47 | + :mtd_qty_received, | |
48 | + :mtd_qty_adjusted, | |
49 | + :mtd_qty_issued, | |
50 | + :ytd_qty_sold, | |
51 | + :prev_year_qty_sold, | |
52 | + :qty_in_transit, | |
53 | + :qty_allocated_wip, | |
54 | + :wip_qty_reserved, | |
55 | + :mtd_qty_sold, | |
56 | + :mtd_qty_trf, | |
57 | + :user_field1, | |
58 | + :user_field2, | |
59 | + :user_field3, | |
60 | + :default_bin, | |
61 | + :unit_cost, | |
62 | + :future_free, | |
63 | + :quantity_dispatch_not_invoiced | |
64 | + end | |
65 | + | |
66 | + class StockItem | |
67 | + attr_accessor :stock_code, | |
68 | + :description, | |
69 | + :long_desc | |
70 | + # Not all xml parsed, see https://infozone.syspro.com/Support/businessobjectslibrary/INVQRYOUT.XML | |
71 | + end | |
72 | + | |
73 | + class SystemInformation | |
74 | + attr_accessor :css_style, | |
75 | + :language, | |
76 | + :company_id, | |
77 | + :company_name | |
78 | + # Not all xml parsed, see https://infozone.syspro.com/Support/businessobjectslibrary/INVQRYOUT.XML | |
79 | + end | |
80 | + end | |
81 | + end | |
82 | +end | |
83 | + | ... | ... |
lib/syspro/business_objects/models/inv_qry_options.rb
0 โ 100644
1 | +module Syspro | |
2 | + module BusinessObjects | |
3 | + module Models | |
4 | + class InvQryOptions | |
5 | + attr_accessor :multi_media_image_type, | |
6 | + :include_history, | |
7 | + :include_bins, | |
8 | + :include_lots, | |
9 | + :include_serials, | |
10 | + :include_movements, | |
11 | + :movement_date_sequence, | |
12 | + :movement_start_date, | |
13 | + :max_number_movements, | |
14 | + :include_custom_forms, | |
15 | + :include_movement_issues, | |
16 | + :include_movement_transfers, | |
17 | + :include_movement_receipts, | |
18 | + :include_movement_physical, | |
19 | + :include_movement_adjustments, | |
20 | + :include_movement_cost_changes, | |
21 | + :include_movement_cost_mods, | |
22 | + :include_movement_invoices, | |
23 | + :include_movement_credit_notes, | |
24 | + :include_movement_debit_notes, | |
25 | + :include_movement_dispatch_notes, | |
26 | + :include_ecc, | |
27 | + :xsl_stylesheet | |
28 | + | |
29 | + end | |
30 | + end | |
31 | + end | |
32 | +end | |
33 | + | |
34 | + | |
35 | + | ... | ... |
lib/syspro/business_objects/parsers/invqry_parser.rb
0 โ 100644
1 | +# frozen_string_literal: true | |
2 | + | |
3 | +module Syspro | |
4 | + module BusinessObjects | |
5 | + module Parsers | |
6 | + class InvQryParser | |
7 | + attr_reader :doc | |
8 | + | |
9 | + def initialize(doc) | |
10 | + @calculated_weight = 0 | |
11 | + @doc = doc | |
12 | + end | |
13 | + | |
14 | + def parse | |
15 | + parsed_inv = Syspro::BusinessObjects::Models::Inv.new | |
16 | + | |
17 | + doc.xpath("//WarehouseItem").each do |wh| | |
18 | + parsed_inv.addWarehouseItem({ | |
19 | + "warehouse": wh.xpath("Warehouse").text, | |
20 | + "description": wh.xpath("Description").text, | |
21 | + "qty_on_hand": wh.xpath("QtyOnHand").text, | |
22 | + "available_qty": wh.xpath("AvailableQty").text, | |
23 | + "qty_on_order": wh.xpath("QtyOnOrder").text, | |
24 | + "qty_in_inspection": wh.xpath("QtyInInspection").text, | |
25 | + "minimum_qty": wh.xpath("MinimumQty").text, | |
26 | + "maximum_qty": wh.xpath("MaximumQty").text, | |
27 | + "qty_on_back_order": wh.xpath("QtyOnBackOrder").text, | |
28 | + "qty_allocated": wh.xpath("QtyAllocated").text, | |
29 | + "mtd_qty_received": wh.xpath("MtdQtyReceived").text, | |
30 | + "mtd_qty_adjusted": wh.xpath("MtdQtyAdjusted").text, | |
31 | + "mtd_qty_issued": wh.xpath("MtdQtyIssued").text, | |
32 | + "ytd_qty_sold": wh.xpath("YtdQtySold").text, | |
33 | + "prev_year_qty_sold": wh.xpath("PrevYearQtySold").text, | |
34 | + "qty_in_transit": wh.xpath("QtyInTransit").text, | |
35 | + "qty_allocated_wip": wh.xpath("QtyAllocatedWip").text, | |
36 | + "wip_qty_reserved": wh.xpath("WipQtyReserved").text, | |
37 | + "mtd_qty_sold": wh.xpath("MtdQtySold").text, | |
38 | + "mtd_qty_trf": wh.xpath("MtdQtyTrf").text, | |
39 | + "user_field1": wh.xpath("UserField1").text, | |
40 | + "user_field2": wh.xpath("UserField2").text, | |
41 | + "user_field3": wh.xpath("UserField3").text, | |
42 | + "default_bin": wh.xpath("DefaultBin").text, | |
43 | + "unit_cost": wh.xpath("UnitCost").text, | |
44 | + "future_free": wh.xpath("FutureFree").text, | |
45 | + "quantity_dispatch_not_invoiced": wh.xpath("QuantityDispatchNotInvoiced").text | |
46 | + }) | |
47 | + end | |
48 | + | |
49 | + si = doc.xpath("InvQuery/SystemInformation").first | |
50 | + if si | |
51 | + parsed_inv.system_information.css_style = si.xpath("CssStyle").text | |
52 | + parsed_inv.system_information.language = si.xpath("Language").text | |
53 | + parsed_inv.system_information.company_id = si.xpath("CompanyId").text | |
54 | + parsed_inv.system_information.company_name = si.xpath("CompanyName").text | |
55 | + end | |
56 | + | |
57 | + st = doc.xpath("InvQuery/StockItem").first | |
58 | + if st | |
59 | + parsed_inv.stock_item.stock_code = st.xpath("StockCode").text | |
60 | + parsed_inv.stock_item.description = st.xpath("Description").text | |
61 | + parsed_inv.stock_item.long_desc = st.xpath("LongDesc").text | |
62 | + end | |
63 | + | |
64 | + wt = doc.xpath("InvQuery/WarehouseTotals").first | |
65 | + if wt | |
66 | + parsed_inv.warehouse_totals.qty_on_hand = wt.xpath("QtyOnHand").text | |
67 | + parsed_inv.warehouse_totals.available_qty = wt.xpath("AvailableQty").text | |
68 | + end | |
69 | + | |
70 | + parsed_inv | |
71 | + end | |
72 | + end | |
73 | + end | |
74 | + end | |
75 | +end | |
0 | 76 | \ No newline at end of file | ... | ... |
lib/syspro/business_objects/schemas/comsfm.xml.erb
1 | 1 | <SetupCustomForm xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="COMSFM.XSD"> |
2 | 2 | <Parameters> |
3 | - <ValidateOnly><%= @validate_only ? "Y" : "N" %></ValidateOnly> | |
3 | + <ValidateOnly><%= @validate_only ? @validate_only : "N" %></ValidateOnly> | |
4 | 4 | </Parameters> |
5 | 5 | </SetupCustomForm> |
6 | 6 | \ No newline at end of file | ... | ... |
lib/syspro/business_objects/schemas/invqry.xml.erb
0 โ 100644
1 | +<?xml version="1.0" encoding="Windows-1252"?> | |
2 | +<Query xmlns:xsd="http://www.w3.org/2000/10/XMLSchema-instance" xsd:noNamespaceSchemaLocation="INVQRY.XSD"> | |
3 | + <% if @key_stock_code %> | |
4 | + <Key> | |
5 | + <StockCode><%= @key_stock_code%></StockCode> | |
6 | + </Key> | |
7 | + <% end %> | |
8 | + <% if @option %> | |
9 | + <Option> | |
10 | + <MultiMediaImageType><%= render_xml(@option.multi_media_image_type, "GIF") %></MultiMediaImageType> | |
11 | + <IncludeHistory><%= render_xml(@option.include_history, "N") %></IncludeHistory> | |
12 | + <IncludeBins><%= render_xml(@option.include_bins, "N") %></IncludeBins> | |
13 | + <IncludeLots><%= render_xml(@option.include_lots, "N") %></IncludeLots> | |
14 | + <IncludeSerials><%= render_xml(@option.include_serials, "N") %></IncludeSerials> | |
15 | + <IncludeMovements><%= render_xml(@option.include_movements, "N") %></IncludeMovements> | |
16 | + <MovementDateSequence><%= render_xml(@option.movement_date_sequence, "A") %></MovementDateSequence> | |
17 | + <MovementStartDate><%= render_xml(@option.movement_start_date, "2001-01-12") %></MovementStartDate> | |
18 | + <MaxNumberMovements><%= render_xml(@option.max_number_movements, "100") %></MaxNumberMovements> | |
19 | + <IncludeCustomForms><%= render_xml(@option.include_custom_forms, "N") %></IncludeCustomForms> | |
20 | + <IncludeMovementIssues><%= render_xml(@option.include_movement_issues, "N") %></IncludeMovementIssues> | |
21 | + <IncludeMovementTransfers><%= render_xml(@option.include_movement_transfers, "N") %></IncludeMovementTransfers> | |
22 | + <IncludeMovementReceipts><%= render_xml(@option.include_movement_receipts, "N") %></IncludeMovementReceipts> | |
23 | + <IncludeMovementPhysical><%= render_xml(@option.include_movement_physical, "N") %></IncludeMovementPhysical> | |
24 | + <IncludeMovementAdjustments><%= render_xml(@option.include_movement_adjustments, "N") %></IncludeMovementAdjustments> | |
25 | + <IncludeMovementCostChanges><%= render_xml(@option.include_movement_cost_changes, "N") %></IncludeMovementCostChanges> | |
26 | + <IncludeMovementCostMods><%= render_xml(@option.include_movement_cost_mods, "N") %></IncludeMovementCostMods> | |
27 | + <IncludeMovementInvoices><%= render_xml(@option.include_movement_invoices, "N") %></IncludeMovementInvoices> | |
28 | + <IncludeMovementCreditNotes><%= render_xml(@option.include_movement_credit_notes, "N") %></IncludeMovementCreditNotes> | |
29 | + <IncludeMovementDebitNotes><%= render_xml(@option.include_movement_debit_notes, "N") %></IncludeMovementDebitNotes> | |
30 | + <IncludeMovementDispatchNotes><%= render_xml(@option.include_movement_dispatch_notes, "N") %></IncludeMovementDispatchNotes> | |
31 | + <IncludeEcc><%= render_xml(@option.include_ecc, "N") %></IncludeEcc> | |
32 | + <XslStylesheet><%= render_xml(@option.xsl_stylesheet, "") %></XslStylesheet> | |
33 | + </Option> | |
34 | + <% end %> | |
35 | + <Filter> | |
36 | + <Warehouse FilterType="L" FilterValue="<%= @filter_warehouse_list %>"/> | |
37 | + </Filter> | |
38 | +</Query> | |
0 | 39 | \ No newline at end of file | ... | ... |
1 | +--- | |
2 | +http_interactions: | |
3 | +- request: | |
4 | + method: get | |
5 | + uri: http://syspro.wildlandlabs.com:90/SYSPROWCFService/Rest/logon?CompanyId=<syspro_company>&CompanyPassword=&Operator=<syspro_username>&OperatorPassword=<syspro_password> | |
6 | + body: | |
7 | + encoding: US-ASCII | |
8 | + string: '' | |
9 | + headers: | |
10 | + User-Agent: | |
11 | + - Syspro/7 RubyBindings/1.0.0.alpha.2 | |
12 | + Content-Type: | |
13 | + - application/x-www-form-urlencoded | |
14 | + Accept-Encoding: | |
15 | + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 | |
16 | + Accept: | |
17 | + - "*/*" | |
18 | + response: | |
19 | + status: | |
20 | + code: 200 | |
21 | + message: OK | |
22 | + headers: | |
23 | + Content-Type: | |
24 | + - application/octet-stream | |
25 | + Server: | |
26 | + - Microsoft-HTTPAPI/2.0 | |
27 | + Date: | |
28 | + - Wed, 16 Jan 2019 12:31:24 GMT | |
29 | + Content-<syspro_company>ength: | |
30 | + - '36' | |
31 | + body: | |
32 | + encoding: UTF-8 | |
33 | + string: '84301CEF7CD018459F8CF02873A278A000 ' | |
34 | + http_version: | |
35 | + recorded_at: Wed, 16 Jan 2019 12:31:23 GMT | |
36 | +- request: | |
37 | + method: get | |
38 | + uri: http://syspro.wildlandlabs.com:90/SYSPROWCFService/Rest/Query/Query?BusinessObject=INVQRY&UserId=84301CEF7CD018459F8CF02873A278A000%20%20&XmlIn=%3C?xml%20version=%221.0%22%20encoding=%22Windows-1252%22?%3E%0A%3CQuery%20xmlns:xsd=%22http://www.w3.org/2000/10/XM<syspro_company>Schema-instance%22%20xsd:noNamespaceSchema<syspro_company>ocation=%22INVQRY.XSD%22%3E%0A%20%20%0A%20%20%3CKey%3E%0A%20%20%20%20%3CStockCode%3E1003%3C/StockCode%3E%0A%20%20%3C/Key%3E%0A%20%20%0A%20%20%0A%20%20%3COption%3E%0A%20%20%20%20%3CMultiMediaImageType%3EGIF%3C/MultiMediaImageType%3E%0A%20%20%20%20%3CIncludeHistory%3EN%3C/IncludeHistory%3E%0A%20%20%20%20%3CIncludeBins%3EN%3C/IncludeBins%3E%0A%20%20%20%20%3CInclude<syspro_company>ots%3EY%3C/Include<syspro_company>ots%3E%0A%20%20%20%20%3CIncludeSerials%3EN%3C/IncludeSerials%3E%0A%20%20%20%20%3CIncludeMovements%3EN%3C/IncludeMovements%3E%0A%20%20%20%20%3CMovementDateSequence%3EA%3C/MovementDateSequence%3E%0A%20%20%20%20%3CMovementStartDate%3E2001-01-12%3C/MovementStartDate%3E%0A%20%20%20%20%3CMaxNumberMovements%3E100%3C/MaxNumberMovements%3E%0A%20%20%20%20%3CIncludeCustomForms%3EN%3C/IncludeCustomForms%3E%0A%20%20%20%20%3CIncludeMovementIssues%3EN%3C/IncludeMovementIssues%3E%0A%20%20%20%20%3CIncludeMovementTransfers%3EN%3C/IncludeMovementTransfers%3E%0A%20%20%20%20%3CIncludeMovementReceipts%3EN%3C/IncludeMovementReceipts%3E%0A%20%20%20%20%3CIncludeMovementPhysical%3EN%3C/IncludeMovementPhysical%3E%0A%20%20%20%20%3CIncludeMovementAdjustments%3EN%3C/IncludeMovementAdjustments%3E%0A%20%20%20%20%3CIncludeMovementCostChanges%3EN%3C/IncludeMovementCostChanges%3E%0A%20%20%20%20%3CIncludeMovementCostMods%3EN%3C/IncludeMovementCostMods%3E%0A%20%20%20%20%3CIncludeMovementInvoices%3EN%3C/IncludeMovementInvoices%3E%0A%20%20%20%20%3CIncludeMovementCreditNotes%3EN%3C/IncludeMovementCreditNotes%3E%0A%20%20%20%20%3CIncludeMovementDebitNotes%3EN%3C/IncludeMovementDebitNotes%3E%0A%20%20%20%20%3CIncludeMovementDispatchNotes%3EN%3C/IncludeMovementDispatchNotes%3E%0A%20%20%20%20%3CIncludeEcc%3EN%3C/IncludeEcc%3E%0A%20%20%20%20%3CXslStylesheet%3E%3C/XslStylesheet%3E%0A%20%20%3C/Option%3E%0A%20%20%0A%20%20%3CFilter%3E%0A%20%20%20%20%3CWarehouse%20FilterType=%22<syspro_company>%22%20FilterValue=%22P0%22/%3E%0A%20%20%3C/Filter%3E%0A%3C/Query%3E | |
39 | + body: | |
40 | + encoding: US-ASCII | |
41 | + string: '' | |
42 | + headers: | |
43 | + User-Agent: | |
44 | + - Syspro/7 RubyBindings/1.0.0.alpha.2 | |
45 | + Content-Type: | |
46 | + - application/x-www-form-urlencoded | |
47 | + Accept-Encoding: | |
48 | + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 | |
49 | + Accept: | |
50 | + - "*/*" | |
51 | + response: | |
52 | + status: | |
53 | + code: 200 | |
54 | + message: OK | |
55 | + headers: | |
56 | + Content-Type: | |
57 | + - application/octet-stream | |
58 | + Server: | |
59 | + - Microsoft-HTTPAPI/2.0 | |
60 | + Date: | |
61 | + - Wed, 16 Jan 2019 12:31:25 GMT | |
62 | + Content-<syspro_company>ength: | |
63 | + - '13919' | |
64 | + body: | |
65 | + encoding: UTF-8 | |
66 | + string: "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\n<InvQuery <syspro_company>anguage='05' | |
67 | + <syspro_company>anguage2='EN' CssStyle='' DecFormat='1' DateFormat='01' Role='01' | |
68 | + Version='7.0.042' OperatorPrimaryRole=' '>\n<StockItem>\n<StockCode>1003</StockCode>\n<Description>MWN | |
69 | + MIX</Description>\n<<syspro_company>ongDesc>MIDWEST NATIVE SPEARMINT MIX</<syspro_company>ongDesc>\n<Decimals> | |
70 | + \ 3</Decimals>\n<AlternateKey1/>\n<AlternateKey2/>\n<Version/>\n<Release/>\n<StockUom><syspro_company>B</StockUom>\n<AlternateUom>KG</AlternateUom>\n<ConvFactAltUom> | |
71 | + \ 2.204620</ConvFactAltUom>\n<ConvMulDiv>M</ConvMulDiv>\n<OtherUom>DR</OtherUom>\n<ConvFactOthUom> | |
72 | + \ 400.000000</ConvFactOthUom>\n<MulDiv>M</MulDiv>\n<ManufactureUom><syspro_company>B</ManufactureUom>\n<ConvFactMuM> | |
73 | + \ 1.000000</ConvFactMuM>\n<ManMulDiv>M</ManMulDiv>\n<StockAndAltUm>N</StockAndAltUm>\n<PartCategory>M</PartCategory>\n<PartCategoryDesc>Made-in</PartCategoryDesc>\n<Supplier/>\n<ProductClass>SMWN</ProductClass>\n<ProductClassDesc>MIDWEST | |
74 | + NATIVE SPEARMINT</ProductClassDesc>\n<Buyer/>\n<BuyerDesc/>\n<Planner/>\n<PlannerDesc/>\n<TraceableType>T</TraceableType>\n<TraceableTypeDesc>Traceable | |
75 | + item</TraceableTypeDesc>\n<MpsFlag>N</MpsFlag>\n<MpsFlagDesc>Non-MPS item</MpsFlagDesc>\n<SupercessionDate/>\n<ResourceCode/>\n<ResourceCodeDesc/>\n<ComponentCount>00000</ComponentCount>\n<InclInStrValid>Yes</InclInStrValid>\n<<syspro_company>abourCost> | |
76 | + \ 0.00000</<syspro_company>abourCost>\n<Edited_<syspro_company>abourCost>0.000</Edited_<syspro_company>abourCost>\n<MaterialCost> | |
77 | + \ 0.00000</MaterialCost>\n<Edited_MaterialCost>0.000</Edited_MaterialCost>\n<FixedOverhead> | |
78 | + \ 0.00000</FixedOverhead>\n<Edited_FixedOverhead>0.000</Edited_FixedOverhead>\n<VariableOverhead> | |
79 | + \ 0.00000</VariableOverhead>\n<Edited_VariableOverhead>0.000</Edited_VariableOverhead>\n<SubContractCost> | |
80 | + \ 0.00000</SubContractCost>\n<Edited_SubContractCost>0.000</Edited_SubContractCost>\n<TotalCost> | |
81 | + \ 0.00000</TotalCost>\n<Edited_TotalCost>0.000</Edited_TotalCost>\n<CostPriceCurrency>$</CostPriceCurrency>\n<EbqNumeric> | |
82 | + \ 400.000000</EbqNumeric>\n<GrossReqRule>I</GrossReqRule>\n<GrossReqRuleDesc>Included</GrossReqRuleDesc>\n<DrawOfficeNum/>\n<Ebq> | |
83 | + \ 400.000000</Ebq>\n<Edited_Ebq>400.000</Edited_Ebq>\n<DockToStock> | |
84 | + \ 0</DockToStock>\n<Manuf<syspro_company>eadTime> 0</Manuf<syspro_company>eadTime>\n<TariffCode/>\n<UserField1/>\n<UserField2> | |
85 | + \ 0.00000</UserField2>\n<UserField3/>\n<UserField4/>\n<UserField5/>\n<<syspro_company>eadTime> | |
86 | + \ 0</<syspro_company>eadTime>\n<WarehouseToUse>H1</WarehouseToUse>\n<WarehouseToUseDesc>HARRAH-<syspro_company>ABBEEMINT | |
87 | + OWNED</WarehouseToUseDesc>\n<MinimumPricePctAboveCost> 0.00</MinimumPricePctAboveCost>\n<Edited_MinimumPricePctAboveCost>0.00</Edited_MinimumPricePctAboveCost>\n<GstTaxCode>A</GstTaxCode>\n<GstTaxCodeDesc>NO | |
88 | + TAX</GstTaxCodeDesc>\n<GstIncludedInPrice>N</GstIncludedInPrice>\n<DemandTimeFenceInDays> | |
89 | + \ 0</DemandTimeFenceInDays>\n<Shelf<syspro_company>ifeInDays> 0</Shelf<syspro_company>ifeInDays>\n<MakeToOrderFlag>N</MakeToOrderFlag>\n<DistributionWarehouseToUse/>\n<DistributionWarehouseToUseDesc/>\n<CountryOfOrigin/>\n<CountryOfOriginDesc/>\n<EccUser/>\n<EccUserDesc/>\n<BuyingRule>A</BuyingRule>\n<BuyingRuleDesc><syspro_company>ot | |
90 | + for lot</BuyingRuleDesc>\n<FixedTimeDaysForRuleC> 1</FixedTimeDaysForRuleC>\n<EbqPan>EBQ | |
91 | + Quantity</EbqPan>\n<PanSize> 0.000000</PanSize>\n<Edited_PanSize>0.000</Edited_PanSize>\n<PercentageYield>100</PercentageYield>\n<<syspro_company>ow<syspro_company>evelCode> | |
92 | + 0</<syspro_company>ow<syspro_company>evelCode>\n<WipCtlGlCode/>\n<DateStockAdded>2006-03-21</DateStockAdded>\n<AbcPreProd> | |
93 | + \ 0.00000</AbcPreProd>\n<Edited_AbcPreProd>0.000</Edited_AbcPreProd>\n<AbcManufacturing> | |
94 | + \ 0.00000</AbcManufacturing>\n<Edited_AbcManufacturing>0.000</Edited_AbcManufacturing>\n<AbcSales> | |
95 | + \ 0.00000</AbcSales>\n<Edited_AbcSales>0.000</Edited_AbcSales>\n<AbcCumPreProd> | |
96 | + \ 0.00000</AbcCumPreProd>\n<Edited_AbcCumPreProd>0.000</Edited_AbcCumPreProd>\n<AbcCumManuf> | |
97 | + \ 0.00000</AbcCumManuf>\n<Edited_AbcCumManuf>0.000</Edited_AbcCumManuf>\n<SpecificGravity> | |
98 | + 0.0000</SpecificGravity>\n<Edited_SpecificGravity>0.00</Edited_SpecificGravity>\n<Mass> | |
99 | + \ 1.000000</Mass>\n<Volume> 0.000000</Volume>\n<PriceCategory>A</PriceCategory>\n<PriceMethod>C</PriceMethod>\n<PriceMethodDesc>Coded</PriceMethodDesc>\n<CycleCount> | |
100 | + 0</CycleCount>\n<TaxCode>A</TaxCode>\n<TaxCodeDesc>NO TAX</TaxCodeDesc>\n<OtherTaxCode/>\n<OtherTaxCodeDesc/>\n<<syspro_company>istPriceCode>A</<syspro_company>istPriceCode>\n<SerialMethod>N</SerialMethod>\n<SerialMethodDesc>None</SerialMethodDesc>\n<KitType>N</KitType>\n<KitTypeDesc>Not | |
101 | + applicable</KitTypeDesc>\n<BulkIssueFlag>N</BulkIssueFlag>\n<BulkIssueFlagDesc>None</BulkIssueFlagDesc>\n<AbcClass/>\n<StockMovementReq>Y</StockMovementReq>\n<ClearingFlag>N</ClearingFlag>\n<AbcAnalysisReq>Y</AbcAnalysisReq>\n<AbcCostingReq>N</AbcCostingReq>\n<CostUom><syspro_company>B</CostUom>\n<SellingPrice> | |
102 | + \ 0.00000</SellingPrice>\n<PriceBasis/>\n<PriceBasisDesc/>\n<Edited_SellingPrice>0.000</Edited_SellingPrice>\n<SellingPriceCurrency>$</SellingPriceCurrency>\n<GrossProfitPct> | |
103 | + \ 0.000</GrossProfitPct>\n<StockOnHold/>\n<StockOnHoldDesc/>\n<StockOnHoldReason/>\n<StockOnHoldReasonDesc/>\n<ApprovedManufactures>\n</ApprovedManufactures>\n<Narrations>\n</Narrations>\n</StockItem>\n<WarehouseItem>\n<Warehouse>P0</Warehouse>\n<Description>PORTAGE-GROWER | |
104 | + OWNED</Description>\n<QtyOnHand> 747.800000</QtyOnHand>\n<Edited_QtyOnHand>747.800</Edited_QtyOnHand>\n<AvailableQty> | |
105 | + \ 747.800000</AvailableQty>\n<Edited_AvailableQty>747.800</Edited_AvailableQty>\n<QtyOnOrder> | |
106 | + \ 806.730000</QtyOnOrder>\n<Edited_QtyOnOrder>806.730</Edited_QtyOnOrder>\n<QtyInInspection> | |
107 | + \ 0.000000</QtyInInspection>\n<Edited_QtyInInspection>0.000</Edited_QtyInInspection>\n<MinimumQty> | |
108 | + \ 0.000000</MinimumQty>\n<Edited_MinimumQty>0.000</Edited_MinimumQty>\n<MaximumQty> | |
109 | + \ 0.000000</MaximumQty>\n<Edited_MaximumQty>0.000</Edited_MaximumQty>\n<QtyOnBackOrder> | |
110 | + \ 0.000000</QtyOnBackOrder>\n<Edited_QtyOnBackOrder>0.000</Edited_QtyOnBackOrder>\n<QtyAllocated> | |
111 | + \ 0.000000</QtyAllocated>\n<Edited_QtyAllocated>0.000</Edited_QtyAllocated>\n<MtdQtyReceived> | |
112 | + \ 0.000000</MtdQtyReceived>\n<Edited_MtdQtyReceived>0.000</Edited_MtdQtyReceived>\n<MtdQtyAdjusted> | |
113 | + \ 0.000000</MtdQtyAdjusted>\n<Edited_MtdQtyAdjusted>0.000</Edited_MtdQtyAdjusted>\n<MtdQtyIssued> | |
114 | + \ 0.000000</MtdQtyIssued>\n<Edited_MtdQtyIssued>0.000</Edited_MtdQtyIssued>\n<YtdQtySold> | |
115 | + \ 0.000000</YtdQtySold>\n<Edited_YtdQtySold>0.000</Edited_YtdQtySold>\n<PrevYearQtySold> | |
116 | + \ 0.000000</PrevYearQtySold>\n<Edited_PrevYearQtySold>0.000</Edited_PrevYearQtySold>\n<QtyInTransit> | |
117 | + \ 0.000000</QtyInTransit>\n<Edited_QtyInTransit>0.000</Edited_QtyInTransit>\n<QtyAllocatedWip> | |
118 | + \ 0.000000</QtyAllocatedWip>\n<Edited_QtyAllocatedWip>0.000</Edited_QtyAllocatedWip>\n<Edited_WipQtyReserved>0.000</Edited_WipQtyReserved>\n<MtdQtySold> | |
119 | + \ 0.000000</MtdQtySold>\n<Edited_MtdQtySold>0.000</Edited_MtdQtySold>\n<MtdQtyTrf> | |
120 | + \ 0.000000</MtdQtyTrf>\n<Edited_MtdQtyTrf>0.000</Edited_MtdQtyTrf>\n<Date<syspro_company>astSale/>\n<Date<syspro_company>astCostChange/>\n<Date<syspro_company>astCostEntered/>\n<UserField1/>\n<UserField2/>\n<UserField3/>\n<DefaultBin>P0</DefaultBin>\n<UnitCost> | |
121 | + \ 0.00000</UnitCost>\n<FutureFree> 1554.530000</FutureFree>\n<Edited_FutureFree>1,554.530</Edited_FutureFree>\n<QuantityDispatchNotInvoiced> | |
122 | + \ 0.000000</QuantityDispatchNotInvoiced>\n<Edited_QuantityDispatchNotInvoiced>0.000</Edited_QuantityDispatchNotInvoiced>\n<Parameters>\n<SafetyStock<syspro_company>evel> | |
123 | + \ 0.000000</SafetyStock<syspro_company>evel>\n<Edited_SafetyStock<syspro_company>evel>0.000</Edited_SafetyStock<syspro_company>evel>\n<ReOrderQuantity> | |
124 | + \ 0.000000</ReOrderQuantity>\n<Edited_ReOrderQuantity>0.000</Edited_ReOrderQuantity>\n<PalletQuantity> | |
125 | + \ 0.000000</PalletQuantity>\n<Edited_PalletQuantity>0.000</Edited_PalletQuantity>\n<DefaultBin<syspro_company>ocation>P0</DefaultBin<syspro_company>ocation>\n<ABCclassification/>\n<RequisitionsInProgress/>\n<<syspro_company>andedCostMultiplier> | |
126 | + \ 1.000000</<syspro_company>andedCostMultiplier>\n<Edited_<syspro_company>andedCostMultiplier>1.000</Edited_<syspro_company>andedCostMultiplier>\n</Parameters>\n<Costs>\n<Method>FIFO</Method>\n<<syspro_company>astCostEntered> | |
127 | + \ 0.00000</<syspro_company>astCostEntered>\n<Current> 0.00000</Current>\n<<syspro_company>astNonMerchandise> | |
128 | + \ 0.00000</<syspro_company>astNonMerchandise>\n</Costs>\n<MTDValues>\n<MTDSalesValue> | |
129 | + \ 0.00</MTDSalesValue>\n</MTDValues>\n<YTDValues>\n<YTDQtyIssued> | |
130 | + \ 0.00</YTDQtyIssued>\n<YTDSalesValue> 0.00</YTDSalesValue>\n<YTDUsageValue> | |
131 | + \ 0.00</YTDUsageValue>\n<PYSalesValue> 0.00</PYSalesValue>\n</YTDValues>\n<<syspro_company>astActivityDates>\n<Date<syspro_company>astStockMovement>2017/08/02</Date<syspro_company>astStockMovement>\n<DateOf<syspro_company>astPurchase>2017/08/02</DateOf<syspro_company>astPurchase>\n<DateOf<syspro_company>astCount/>\n<DateWarehouseAdded>2006/03/21</DateWarehouseAdded>\n</<syspro_company>astActivityDates>\n<<syspro_company>otItem>\n<<syspro_company>otJob>064017</<syspro_company>otJob>\n<DrawingNum/>\n<DrawingNumDesc/>\n<Bin>064017</Bin>\n<Version/>\n<Release/>\n<QtyOnHand> | |
132 | + \ 283.200000</QtyOnHand>\n<Edited_QtyOnHand>283.200</Edited_QtyOnHand>\n<AvailableQty> | |
133 | + \ 283.200000</AvailableQty>\n<Edited_AvailableQty>283.200</Edited_AvailableQty>\n<Note/>\n<<syspro_company>otHoldFlag/>\n<ExpiryDate/>\n</<syspro_company>otItem>\n<<syspro_company>otItem>\n<<syspro_company>otJob>064020</<syspro_company>otJob>\n<DrawingNum/>\n<DrawingNumDesc/>\n<Bin>064020</Bin>\n<Version/>\n<Release/>\n<QtyOnHand> | |
134 | + \ 148.000000</QtyOnHand>\n<Edited_QtyOnHand>148.000</Edited_QtyOnHand>\n<AvailableQty> | |
135 | + \ 148.000000</AvailableQty>\n<Edited_AvailableQty>148.000</Edited_AvailableQty>\n<Note/>\n<<syspro_company>otHoldFlag/>\n<ExpiryDate/>\n</<syspro_company>otItem>\n<<syspro_company>otItem>\n<<syspro_company>otJob>064042</<syspro_company>otJob>\n<DrawingNum/>\n<DrawingNumDesc/>\n<Bin>064042</Bin>\n<Version/>\n<Release/>\n<QtyOnHand> | |
136 | + \ 25.600000</QtyOnHand>\n<Edited_QtyOnHand>25.600</Edited_QtyOnHand>\n<AvailableQty> | |
137 | + \ 25.600000</AvailableQty>\n<Edited_AvailableQty>25.600</Edited_AvailableQty>\n<Note/>\n<<syspro_company>otHoldFlag/>\n<ExpiryDate/>\n</<syspro_company>otItem>\n<<syspro_company>otItem>\n<<syspro_company>otJob>064064</<syspro_company>otJob>\n<DrawingNum/>\n<DrawingNumDesc/>\n<Bin>064064</Bin>\n<Version/>\n<Release/>\n<QtyOnHand> | |
138 | + \ 291.000000</QtyOnHand>\n<Edited_QtyOnHand>291.000</Edited_QtyOnHand>\n<AvailableQty> | |
139 | + \ 291.000000</AvailableQty>\n<Edited_AvailableQty>291.000</Edited_AvailableQty>\n<Note/>\n<<syspro_company>otHoldFlag/>\n<ExpiryDate/>\n</<syspro_company>otItem>\n</WarehouseItem>\n<WarehouseTotals>\n<QtyOnHand> | |
140 | + \ 747.800000</QtyOnHand>\n<Edited_QtyOnHand>747.800</Edited_QtyOnHand>\n<AvailableQty> | |
141 | + \ 747.800000</AvailableQty>\n<Edited_AvailableQty>747.800</Edited_AvailableQty>\n<QtyOnOrder> | |
142 | + \ 806.730000</QtyOnOrder>\n<Edited_QtyOnOrder>806.730</Edited_QtyOnOrder>\n<QtyInInspection> | |
143 | + \ 0.000000</QtyInInspection>\n<Edited_QtyInInspection>0.000</Edited_QtyInInspection>\n<MinimumQty> | |
144 | + \ 0.000000</MinimumQty>\n<Edited_MinimumQty>0.000</Edited_MinimumQty>\n<MaximumQty> | |
145 | + \ 0.000000</MaximumQty>\n<Edited_MaximumQty>0.000</Edited_MaximumQty>\n<QtyOnBackOrder> | |
146 | + \ 0.000000</QtyOnBackOrder>\n<Edited_QtyOnBackOrder>0.000</Edited_QtyOnBackOrder>\n<QtyAllocated> | |
147 | + \ 0.000000</QtyAllocated>\n<Edited_QtyAllocated>0.000</Edited_QtyAllocated>\n<MtdQtyReceived> | |
148 | + \ 0.000000</MtdQtyReceived>\n<Edited_MtdQtyReceived>0.000</Edited_MtdQtyReceived>\n<MtdQtyAdjusted> | |
149 | + \ 0.000000</MtdQtyAdjusted>\n<Edited_MtdQtyAdjusted>0.000</Edited_MtdQtyAdjusted>\n<MtdQtyIssued> | |
150 | + \ 0.000000</MtdQtyIssued>\n<Edited_MtdQtyIssued>0.000</Edited_MtdQtyIssued>\n<MtdQtySold> | |
151 | + \ 0.000000</MtdQtySold>\n<Edited_MtdQtySold>0.000</Edited_MtdQtySold>\n<YtdQtySold> | |
152 | + \ 0.000000</YtdQtySold>\n<Edited_YtdQtySold>0.000</Edited_YtdQtySold>\n<PrevYearQtySold> | |
153 | + \ 0.000000</PrevYearQtySold>\n<Edited_PrevYearQtySold>0.000</Edited_PrevYearQtySold>\n<QtyInTransit> | |
154 | + \ 0.000000</QtyInTransit>\n<Edited_QtyInTransit>0.000</Edited_QtyInTransit>\n<QtyAllocatedWip> | |
155 | + \ 0.000000</QtyAllocatedWip>\n<Edited_QtyAllocatedWip>0.000</Edited_QtyAllocatedWip>\n<MtdQtyTrf> | |
156 | + \ 0.000000</MtdQtyTrf>\n<Edited_MtdQtyTrf>0.000</Edited_MtdQtyTrf>\n<UnitCost> | |
157 | + \ 0.00000</UnitCost>\n<SalesQtyTot1> 0.000000</SalesQtyTot1>\n<Edited_SalesQtyTot1>0.000</Edited_SalesQtyTot1>\n<SalesQtyTot2> | |
158 | + \ 0.000000</SalesQtyTot2>\n<Edited_SalesQtyTot2>0.000</Edited_SalesQtyTot2>\n<SalesQtyTot3> | |
159 | + \ 0.000000</SalesQtyTot3>\n<Edited_SalesQtyTot3>0.000</Edited_SalesQtyTot3>\n<SalesQtyTot4> | |
160 | + \ 0.000000</SalesQtyTot4>\n<Edited_SalesQtyTot4>0.000</Edited_SalesQtyTot4>\n<SalesQtyTot5> | |
161 | + \ 0.000000</SalesQtyTot5>\n<Edited_SalesQtyTot5>0.000</Edited_SalesQtyTot5>\n<SalesQtyTot6> | |
162 | + \ 0.000000</SalesQtyTot6>\n<Edited_SalesQtyTot6>0.000</Edited_SalesQtyTot6>\n<SalesQtyTot7> | |
163 | + \ 0.000000</SalesQtyTot7>\n<Edited_SalesQtyTot7>0.000</Edited_SalesQtyTot7>\n<SalesQtyTot8> | |
164 | + \ 0.000000</SalesQtyTot8>\n<Edited_SalesQtyTot8>0.000</Edited_SalesQtyTot8>\n<SalesQtyTot9> | |
165 | + \ 0.000000</SalesQtyTot9>\n<Edited_SalesQtyTot9>0.000</Edited_SalesQtyTot9>\n<SalesQtyTot10> | |
166 | + \ 0.000000</SalesQtyTot10>\n<Edited_SalesQtyTot10>0.000</Edited_SalesQtyTot10>\n<SalesQtyTot11> | |
167 | + \ 0.000000</SalesQtyTot11>\n<Edited_SalesQtyTot11>0.000</Edited_SalesQtyTot11>\n<SalesQtyTot12> | |
168 | + \ 0.000000</SalesQtyTot12>\n<Edited_SalesQtyTot12>0.000</Edited_SalesQtyTot12>\n<Parameters>\n<SafetyStock<syspro_company>evel> | |
169 | + \ 0.000000</SafetyStock<syspro_company>evel>\n<Edited_SafetyStock<syspro_company>evel>0.000</Edited_SafetyStock<syspro_company>evel>\n<ReOrderQuantity> | |
170 | + \ 0.000000</ReOrderQuantity>\n<Edited_ReOrderQuantity>0.000</Edited_ReOrderQuantity>\n<PalletQuantity> | |
171 | + \ 0.000000</PalletQuantity>\n<Edited_PalletQuantity>0.000</Edited_PalletQuantity>\n<DefaultBin<syspro_company>ocation>P0</DefaultBin<syspro_company>ocation>\n<ABCclassification/>\n<RequisitionsInProgress/>\n<<syspro_company>andedCostMultiplier> | |
172 | + \ 1.000000</<syspro_company>andedCostMultiplier>\n<Edited_<syspro_company>andedCostMultiplier>1.000</Edited_<syspro_company>andedCostMultiplier>\n</Parameters>\n<Costs>\n<Method>FIFO</Method>\n<<syspro_company>astCostEntered> | |
173 | + \ 0.00000</<syspro_company>astCostEntered>\n<Current> 0.00000</Current>\n<<syspro_company>astNonMerchandise> | |
174 | + \ 0.00000</<syspro_company>astNonMerchandise>\n</Costs>\n<MTDValues>\n<MTDSalesValue> | |
175 | + \ 0.00</MTDSalesValue>\n</MTDValues>\n<YTDValues>\n<YTDQtyIssued> | |
176 | + \ 0.00</YTDQtyIssued>\n<YTDSalesValue> 0.00</YTDSalesValue>\n<YTDUsageValue> | |
177 | + \ 0.00</YTDUsageValue>\n<PYSalesValue> 0.00</PYSalesValue>\n</YTDValues>\n</WarehouseTotals>\n</InvQuery>\n " | |
178 | + http_version: | |
179 | + recorded_at: Wed, 16 Jan 2019 12:31:24 GMT | |
180 | +recorded_with: VCR 4.0.0 | ... | ... |
test/cassettes/test_logon.yml
... | ... | @@ -25,12 +25,12 @@ http_interactions: |
25 | 25 | Server: |
26 | 26 | - Microsoft-HTTPAPI/2.0 |
27 | 27 | Date: |
28 | - - Wed, 09 Jan 2019 22:58:07 GMT | |
28 | + - Mon, 14 Jan 2019 22:56:14 GMT | |
29 | 29 | Content-<syspro_company>ength: |
30 | - - '36' | |
30 | + - '32' | |
31 | 31 | body: |
32 | 32 | encoding: UTF-8 |
33 | - string: '8513E1BCC242674D9F3CC6CD27658BFA00 ' | |
33 | + string: 'ERROR: Invalid operator password' | |
34 | 34 | http_version: |
35 | - recorded_at: Wed, 09 Jan 2019 22:58:05 GMT | |
35 | + recorded_at: Mon, 14 Jan 2019 22:56:14 GMT | |
36 | 36 | recorded_with: VCR 4.0.0 | ... | ... |
1 | +# frozen_string_literal: true | |
2 | + | |
3 | +require 'test_helper' | |
4 | + | |
5 | +class InvQryTest < Minitest::Test | |
6 | + extend Minitest::Spec::DSL | |
7 | + before { VCR.insert_cassette name } | |
8 | + after { VCR.eject_cassette } | |
9 | + | |
10 | + let(:username) { ENV['SYSPRO_USERNAME'] } | |
11 | + let(:password) { ENV['SYSPRO_PASSWORD'] } | |
12 | + let(:company) { ENV['SYSPRO_COMPANY'] } | |
13 | + let(:company_password) { '' } | |
14 | + | |
15 | + let(:user_id) do | |
16 | + Syspro::Logon.logon(username, password, company, company_password) | |
17 | + end | |
18 | + | |
19 | + def test_int_query | |
20 | + invqry_req = Syspro::BusinessObjects::InvQry.new | |
21 | + | |
22 | + invqry_req.key_stock_code = '1003' | |
23 | + invqry_req.filter_warehouse_list = 'P0' | |
24 | + invqry_req.option = Syspro::BusinessObjects::Models::InvQryOptions.new | |
25 | + invqry_req.option.include_lots = "Y" | |
26 | + | |
27 | + invqry_rsp = invqry_req.call(user_id.guid) | |
28 | + | |
29 | + assert_kind_of Syspro::BusinessObjects::Models::Inv, invqry_rsp | |
30 | + end | |
31 | +end | |
0 | 32 | \ No newline at end of file | ... | ... |
test/portoi_test.rb