diff --git a/lib/syspro.rb b/lib/syspro.rb
index 70de608..ee4cc4e 100644
--- a/lib/syspro.rb
+++ b/lib/syspro.rb
@@ -34,11 +34,12 @@ require 'syspro/business_objects/portor'
require 'syspro/business_objects/portoi'
require 'syspro/business_objects/porqry'
require 'syspro/business_objects/comsfm'
+require 'syspro/business_objects/invqry'
require 'syspro/business_objects/models/sor'
require 'syspro/business_objects/models/sor_detail'
require 'syspro/business_objects/models/por_detail'
-
+require 'syspro/business_objects/models/inv_qry_options'
require 'syspro/business_objects/models/purchase_order'
require 'syspro/business_objects/models/purchase_orders/header'
require 'syspro/business_objects/models/purchase_orders/order_details'
@@ -46,8 +47,8 @@ require 'syspro/business_objects/models/purchase_orders/stock_line'
require 'syspro/business_objects/models/purchase_orders/freight_line'
require 'syspro/business_objects/models/purchase_orders/misc_charge_line'
require 'syspro/business_objects/models/purchase_orders/comment_line'
-
require 'syspro/business_objects/models/comsfm_item'
+require 'syspro/business_objects/models/inv'
require 'syspro/business_objects/parsers/combrw_parser'
require 'syspro/business_objects/parsers/comfch_parser'
@@ -56,6 +57,7 @@ require 'syspro/business_objects/parsers/sorqry_parser'
require 'syspro/business_objects/parsers/portor_parser'
require 'syspro/business_objects/parsers/portoi_parser'
require 'syspro/business_objects/parsers/comsfm_parser'
+require 'syspro/business_objects/parsers/invqry_parser'
# Main Module
module Syspro
diff --git a/lib/syspro/business_objects/invqry.rb b/lib/syspro/business_objects/invqry.rb
new file mode 100644
index 0000000..00c5222
--- /dev/null
+++ b/lib/syspro/business_objects/invqry.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+require 'syspro/business_objects/parsers/invqry_parser'
+require 'erb'
+
+module Syspro
+ module BusinessObjects
+ class InvQry < ApiResource
+ include Syspro::ApiOperations::Query
+ include Syspro::BusinessObjects::Parsers
+
+ attr_accessor :key_stock_code,
+ :filter_warehouse_list, # seperated by commas
+ :option
+
+ def call(user_id)
+ xml_in = template.result(binding)
+ business_object = 'INVQRY'
+ params = { 'UserId' => user_id, 'BusinessObject' => business_object, 'XmlIn' => xml_in }
+ resp = InvQry.query(params)
+
+ parse_response(resp)
+ end
+
+ def template
+ ERB.new File.read(File.expand_path('schemas/invqry.xml.erb', File.dirname(__FILE__))), nil, '%'
+ end
+
+ def parse_response(resp)
+ handle_errors(resp)
+ parser = InvQryParser.new(resp[0].data)
+ parser.parse
+ end
+
+ def render_xml(inner_text, dflt_value = "")
+ inner_text ? inner_text.to_s : dflt_value
+ end
+ end
+ end
+end
diff --git a/lib/syspro/business_objects/models/inv.rb b/lib/syspro/business_objects/models/inv.rb
new file mode 100644
index 0000000..b66d33e
--- /dev/null
+++ b/lib/syspro/business_objects/models/inv.rb
@@ -0,0 +1,83 @@
+module Syspro
+ module BusinessObjects
+ module Models
+ class Inv
+ attr_accessor :warehouse_totals,
+ :warehouse_items,
+ :stock_item,
+ :system_information
+
+ def initialize
+ @warehouse_totals = WarehouseTotals.new
+ @warehouse_items = []
+ @stock_item = StockItem.new
+ @system_information = SystemInformation.new
+ end
+
+ def addWarehouseItem(new_hash)
+ w = WarehouseItem.new
+
+ # copy hash items that match into new warehouse item
+ new_hash.keys.each do |k|
+ w.send("#{k.to_s}=", new_hash[k]) if w.methods.include? k
+ end
+
+ @warehouse_items.push(w)
+ end
+ end
+
+ class WarehouseTotals
+ attr_accessor :qty_on_hand,
+ :available_qty
+
+ # Not all xml parsed, see https://infozone.syspro.com/Support/businessobjectslibrary/INVQRYOUT.XML
+ end
+
+ class WarehouseItem
+ attr_accessor :warehouse,
+ :description,
+ :qty_on_hand,
+ :available_qty,
+ :qty_on_order,
+ :qty_in_inspection,
+ :minimum_qty,
+ :maximum_qty,
+ :qty_on_back_order,
+ :qty_allocated,
+ :mtd_qty_received,
+ :mtd_qty_adjusted,
+ :mtd_qty_issued,
+ :ytd_qty_sold,
+ :prev_year_qty_sold,
+ :qty_in_transit,
+ :qty_allocated_wip,
+ :wip_qty_reserved,
+ :mtd_qty_sold,
+ :mtd_qty_trf,
+ :user_field1,
+ :user_field2,
+ :user_field3,
+ :default_bin,
+ :unit_cost,
+ :future_free,
+ :quantity_dispatch_not_invoiced
+ end
+
+ class StockItem
+ attr_accessor :stock_code,
+ :description,
+ :long_desc
+ # Not all xml parsed, see https://infozone.syspro.com/Support/businessobjectslibrary/INVQRYOUT.XML
+ end
+
+ class SystemInformation
+ attr_accessor :css_style,
+ :language,
+ :company_id,
+ :company_name
+ # Not all xml parsed, see https://infozone.syspro.com/Support/businessobjectslibrary/INVQRYOUT.XML
+ end
+ end
+ end
+end
+
diff --git a/lib/syspro/business_objects/models/inv_qry_options.rb b/lib/syspro/business_objects/models/inv_qry_options.rb
new file mode 100644
index 0000000..3196029
--- /dev/null
+++ b/lib/syspro/business_objects/models/inv_qry_options.rb
@@ -0,0 +1,35 @@
+module Syspro
+ module BusinessObjects
+ module Models
+ class InvQryOptions
+ attr_accessor :multi_media_image_type,
+ :include_history,
+ :include_bins,
+ :include_lots,
+ :include_serials,
+ :include_movements,
+ :movement_date_sequence,
+ :movement_start_date,
+ :max_number_movements,
+ :include_custom_forms,
+ :include_movement_issues,
+ :include_movement_transfers,
+ :include_movement_receipts,
+ :include_movement_physical,
+ :include_movement_adjustments,
+ :include_movement_cost_changes,
+ :include_movement_cost_mods,
+ :include_movement_invoices,
+ :include_movement_credit_notes,
+ :include_movement_debit_notes,
+ :include_movement_dispatch_notes,
+ :include_ecc,
+ :xsl_stylesheet
+
+ end
+ end
+ end
+end
+
+
+
diff --git a/lib/syspro/business_objects/parsers/invqry_parser.rb b/lib/syspro/business_objects/parsers/invqry_parser.rb
new file mode 100644
index 0000000..a47ea8b
--- /dev/null
+++ b/lib/syspro/business_objects/parsers/invqry_parser.rb
@@ -0,0 +1,75 @@
+# frozen_string_literal: true
+
+module Syspro
+ module BusinessObjects
+ module Parsers
+ class InvQryParser
+ attr_reader :doc
+
+ def initialize(doc)
+ @calculated_weight = 0
+ @doc = doc
+ end
+
+ def parse
+ parsed_inv = Syspro::BusinessObjects::Models::Inv.new
+
+ doc.xpath("//WarehouseItem").each do |wh|
+ parsed_inv.addWarehouseItem({
+ "warehouse": wh.xpath("Warehouse").text,
+ "description": wh.xpath("Description").text,
+ "qty_on_hand": wh.xpath("QtyOnHand").text,
+ "available_qty": wh.xpath("AvailableQty").text,
+ "qty_on_order": wh.xpath("QtyOnOrder").text,
+ "qty_in_inspection": wh.xpath("QtyInInspection").text,
+ "minimum_qty": wh.xpath("MinimumQty").text,
+ "maximum_qty": wh.xpath("MaximumQty").text,
+ "qty_on_back_order": wh.xpath("QtyOnBackOrder").text,
+ "qty_allocated": wh.xpath("QtyAllocated").text,
+ "mtd_qty_received": wh.xpath("MtdQtyReceived").text,
+ "mtd_qty_adjusted": wh.xpath("MtdQtyAdjusted").text,
+ "mtd_qty_issued": wh.xpath("MtdQtyIssued").text,
+ "ytd_qty_sold": wh.xpath("YtdQtySold").text,
+ "prev_year_qty_sold": wh.xpath("PrevYearQtySold").text,
+ "qty_in_transit": wh.xpath("QtyInTransit").text,
+ "qty_allocated_wip": wh.xpath("QtyAllocatedWip").text,
+ "wip_qty_reserved": wh.xpath("WipQtyReserved").text,
+ "mtd_qty_sold": wh.xpath("MtdQtySold").text,
+ "mtd_qty_trf": wh.xpath("MtdQtyTrf").text,
+ "user_field1": wh.xpath("UserField1").text,
+ "user_field2": wh.xpath("UserField2").text,
+ "user_field3": wh.xpath("UserField3").text,
+ "default_bin": wh.xpath("DefaultBin").text,
+ "unit_cost": wh.xpath("UnitCost").text,
+ "future_free": wh.xpath("FutureFree").text,
+ "quantity_dispatch_not_invoiced": wh.xpath("QuantityDispatchNotInvoiced").text
+ })
+ end
+
+ si = doc.xpath("InvQuery/SystemInformation").first
+ if si
+ parsed_inv.system_information.css_style = si.xpath("CssStyle").text
+ parsed_inv.system_information.language = si.xpath("Language").text
+ parsed_inv.system_information.company_id = si.xpath("CompanyId").text
+ parsed_inv.system_information.company_name = si.xpath("CompanyName").text
+ end
+
+ st = doc.xpath("InvQuery/StockItem").first
+ if st
+ parsed_inv.stock_item.stock_code = st.xpath("StockCode").text
+ parsed_inv.stock_item.description = st.xpath("Description").text
+ parsed_inv.stock_item.long_desc = st.xpath("LongDesc").text
+ end
+
+ wt = doc.xpath("InvQuery/WarehouseTotals").first
+ if wt
+ parsed_inv.warehouse_totals.qty_on_hand = wt.xpath("QtyOnHand").text
+ parsed_inv.warehouse_totals.available_qty = wt.xpath("AvailableQty").text
+ end
+
+ parsed_inv
+ end
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/lib/syspro/business_objects/schemas/comsfm.xml.erb b/lib/syspro/business_objects/schemas/comsfm.xml.erb
index 8f21bc5..a59a60c 100644
--- a/lib/syspro/business_objects/schemas/comsfm.xml.erb
+++ b/lib/syspro/business_objects/schemas/comsfm.xml.erb
@@ -1,5 +1,5 @@
- <%= @validate_only ? "Y" : "N" %>
+ <%= @validate_only ? @validate_only : "N" %>
\ No newline at end of file
diff --git a/lib/syspro/business_objects/schemas/invqry.xml.erb b/lib/syspro/business_objects/schemas/invqry.xml.erb
new file mode 100644
index 0000000..b91212b
--- /dev/null
+++ b/lib/syspro/business_objects/schemas/invqry.xml.erb
@@ -0,0 +1,38 @@
+
+
+ <% if @key_stock_code %>
+
+ <%= @key_stock_code%>
+
+ <% end %>
+ <% if @option %>
+
+ <% end %>
+
+
+
+
\ No newline at end of file
diff --git a/test/cassettes/test_int_query.yml b/test/cassettes/test_int_query.yml
new file mode 100644
index 0000000..a126c67
--- /dev/null
+++ b/test/cassettes/test_int_query.yml
@@ -0,0 +1,180 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: http://syspro.wildlandlabs.com:90/SYSPROWCFService/Rest/logon?CompanyId=&CompanyPassword=&Operator=&OperatorPassword=
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ User-Agent:
+ - Syspro/7 RubyBindings/1.0.0.alpha.2
+ Content-Type:
+ - application/x-www-form-urlencoded
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Content-Type:
+ - application/octet-stream
+ Server:
+ - Microsoft-HTTPAPI/2.0
+ Date:
+ - Wed, 16 Jan 2019 12:31:24 GMT
+ Content-ength:
+ - '36'
+ body:
+ encoding: UTF-8
+ string: '84301CEF7CD018459F8CF02873A278A000 '
+ http_version:
+ recorded_at: Wed, 16 Jan 2019 12:31:23 GMT
+- request:
+ method: get
+ 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/XMSchema-instance%22%20xsd:noNamespaceSchemaocation=%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%3CIncludeots%3EY%3C/Includeots%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%22%20FilterValue=%22P0%22/%3E%0A%20%20%3C/Filter%3E%0A%3C/Query%3E
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ User-Agent:
+ - Syspro/7 RubyBindings/1.0.0.alpha.2
+ Content-Type:
+ - application/x-www-form-urlencoded
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Content-Type:
+ - application/octet-stream
+ Server:
+ - Microsoft-HTTPAPI/2.0
+ Date:
+ - Wed, 16 Jan 2019 12:31:25 GMT
+ Content-ength:
+ - '13919'
+ body:
+ encoding: UTF-8
+ string: "\nanguage='05'
+ anguage2='EN' CssStyle='' DecFormat='1' DateFormat='01' Role='01'
+ Version='7.0.042' OperatorPrimaryRole=' '>\n\n1003\nMWN
+ MIX\n<ongDesc>MIDWEST NATIVE SPEARMINT MIXongDesc>\n
+ \ 3\n\n\n\n\nB\nKG\n
+ \ 2.204620\nM\nDR\n
+ \ 400.000000\nM\nB\n
+ \ 1.000000\nM\nN\nM\nMade-in\n\nSMWN\nMIDWEST
+ NATIVE SPEARMINT\n\n\n\n\nT\nTraceable
+ item\nN\nNon-MPS item\n\n\n\n00000\nYes\n<abourCost>
+ \ 0.00000abourCost>\nabourCost>0.000abourCost>\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n$\n
+ \ 400.000000\nI\nIncluded\n\n
+ \ 400.000000\n400.000\n
+ \ 0\neadTime> 0eadTime>\n\n\n
+ \ 0.00000\n\n\n\n<eadTime>
+ \ 0eadTime>\nH1\nHARRAH-ABBEEMINT
+ OWNED\n 0.00\n0.00\nA\nNO
+ TAX\nN\n
+ \ 0\nifeInDays> 0ifeInDays>\nN\n\n\n\n\n\n\nA\not
+ for lot\n 1\nEBQ
+ Quantity\n 0.000000\n0.000\n100\n<owevelCode>
+ 0owevelCode>\n\n2006-03-21\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n
+ \ 0.00000\n0.000\n
+ 0.0000\n0.00\n
+ \ 1.000000\n 0.000000\nA\nC\nCoded\n
+ 0\nA\nNO TAX\n\n\n<istPriceCode>AistPriceCode>\nN\nNone\nN\nNot
+ applicable\nN\nNone\n\nY\nN\nY\nN\nB\n
+ \ 0.00000\n\n\n0.000\n$\n
+ \ 0.000\n\n\n\n\n\n\n\n\n\n\nP0\nPORTAGE-GROWER
+ OWNED\n 747.800000\n747.800\n
+ \ 747.800000\n747.800\n
+ \ 806.730000\n806.730\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\nastSale/>\nastCostChange/>\nastCostEntered/>\n\n\n\nP0\n
+ \ 0.00000\n 1554.530000\n1,554.530\n
+ \ 0.000000\n0.000\n\nevel>
+ \ 0.000000evel>\nevel>0.000evel>\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\nocation>P0ocation>\n\n\n<andedCostMultiplier>
+ \ 1.000000andedCostMultiplier>\nandedCostMultiplier>1.000andedCostMultiplier>\n\n\nFIFO\n<astCostEntered>
+ \ 0.00000astCostEntered>\n 0.00000\n<astNonMerchandise>
+ \ 0.00000astNonMerchandise>\n\n\n
+ \ 0.00\n\n\n
+ \ 0.00\n 0.00\n
+ \ 0.00\n 0.00\n\n<astActivityDates>\nastStockMovement>2017/08/02astStockMovement>\nastPurchase>2017/08/02astPurchase>\nastCount/>\n2006/03/21\nastActivityDates>\n<otItem>\n<otJob>064017otJob>\n\n\n064017\n\n\n
+ \ 283.200000\n283.200\n
+ \ 283.200000\n283.200\n\n<otHoldFlag/>\n\notItem>\n<otItem>\n<otJob>064020otJob>\n\n\n064020\n\n\n
+ \ 148.000000\n148.000\n
+ \ 148.000000\n148.000\n\n<otHoldFlag/>\n\notItem>\n<otItem>\n<otJob>064042otJob>\n\n\n064042\n\n\n
+ \ 25.600000\n25.600\n
+ \ 25.600000\n25.600\n\n<otHoldFlag/>\n\notItem>\n<otItem>\n<otJob>064064otJob>\n\n\n064064\n\n\n
+ \ 291.000000\n291.000\n
+ \ 291.000000\n291.000\n\n<otHoldFlag/>\n\notItem>\n\n\n
+ \ 747.800000\n747.800\n
+ \ 747.800000\n747.800\n
+ \ 806.730000\n806.730\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.00000\n 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\n\nevel>
+ \ 0.000000evel>\nevel>0.000evel>\n
+ \ 0.000000\n0.000\n
+ \ 0.000000\n0.000\nocation>P0ocation>\n\n\n<andedCostMultiplier>
+ \ 1.000000andedCostMultiplier>\nandedCostMultiplier>1.000andedCostMultiplier>\n\n\nFIFO\n<astCostEntered>
+ \ 0.00000astCostEntered>\n 0.00000\n<astNonMerchandise>
+ \ 0.00000astNonMerchandise>\n\n\n
+ \ 0.00\n\n\n
+ \ 0.00\n 0.00\n
+ \ 0.00\n 0.00\n\n\n\n "
+ http_version:
+ recorded_at: Wed, 16 Jan 2019 12:31:24 GMT
+recorded_with: VCR 4.0.0
diff --git a/test/cassettes/test_logon.yml b/test/cassettes/test_logon.yml
index e914747..f29d75f 100644
--- a/test/cassettes/test_logon.yml
+++ b/test/cassettes/test_logon.yml
@@ -25,12 +25,12 @@ http_interactions:
Server:
- Microsoft-HTTPAPI/2.0
Date:
- - Wed, 09 Jan 2019 22:58:07 GMT
+ - Mon, 14 Jan 2019 22:56:14 GMT
Content-ength:
- - '36'
+ - '32'
body:
encoding: UTF-8
- string: '8513E1BCC242674D9F3CC6CD27658BFA00 '
+ string: 'ERROR: Invalid operator password'
http_version:
- recorded_at: Wed, 09 Jan 2019 22:58:05 GMT
+ recorded_at: Mon, 14 Jan 2019 22:56:14 GMT
recorded_with: VCR 4.0.0
diff --git a/test/invqry_test.rb b/test/invqry_test.rb
new file mode 100644
index 0000000..800ad83
--- /dev/null
+++ b/test/invqry_test.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+require 'test_helper'
+
+class InvQryTest < Minitest::Test
+ extend Minitest::Spec::DSL
+ before { VCR.insert_cassette name }
+ after { VCR.eject_cassette }
+
+ let(:username) { ENV['SYSPRO_USERNAME'] }
+ let(:password) { ENV['SYSPRO_PASSWORD'] }
+ let(:company) { ENV['SYSPRO_COMPANY'] }
+ let(:company_password) { '' }
+
+ let(:user_id) do
+ Syspro::Logon.logon(username, password, company, company_password)
+ end
+
+ def test_int_query
+ invqry_req = Syspro::BusinessObjects::InvQry.new
+
+ invqry_req.key_stock_code = '1003'
+ invqry_req.filter_warehouse_list = 'P0'
+ invqry_req.option = Syspro::BusinessObjects::Models::InvQryOptions.new
+ invqry_req.option.include_lots = "Y"
+
+ invqry_rsp = invqry_req.call(user_id.guid)
+
+ assert_kind_of Syspro::BusinessObjects::Models::Inv, invqry_rsp
+ end
+end
\ No newline at end of file
diff --git a/test/portoi_test.rb b/test/portoi_test.rb
index 6daad24..3ddf648 100644
--- a/test/portoi_test.rb
+++ b/test/portoi_test.rb
@@ -69,7 +69,6 @@ class PorToiTest < Minitest::Test
po.order_details = Syspro::BusinessObjects::Models::PurchaseOrders::OrderDetails.new
po.order_details.stock_lines = [line1]
- binding.pry
syspro_po = po.call(user_id.guid)
--
libgit2 0.21.4