i'm trying write vb.net wpf program, add custom notes customer. intuit has me going in circles code examples, won't convert c# vb.net.
can show me simple sample shows adding customers name only? leave out error checking etc, can figure out. don't know how write connection quickbooks , send request. maybe simple form textbox , button, functionality put name in textbox, , click button add customer name.
i have long been disgusted @ poor code samples intuit quickbooks sdk. having said that, still use them; after fixing code quite useful.
you need add reference intuit quickbooks sdk qbfc7lib; might different depending on version.
here need make code useful (use edit > quick replace):
- replace
//
'
(comments) - remove
;
(semi-colons) - replace
==
=
- replace
for j = 0
for j integer = 0
- replace
responselist.getat(i)
responselist.getat(j)
- remove trailing
.
(dot) - replace
integerfor
integer
(next line)for
- replace
dataextret
dataextret.
(only when shows error) - check other errors
- delete stuff don't need
when run first time need have quickbooks open , ready give permissions quickbooks. here sample errors fixed.
imports qbfc7lib module qbsample public class customer public sub docustomeradd() dim sessionbegun boolean sessionbegun = false dim connectionopen boolean connectionopen = false dim sessionmanager qbsessionmanager sessionmanager = nothing try 'create session manager object sessionmanager = new qbsessionmanager 'create message set request object hold our request dim requestmsgset imsgsetrequest requestmsgset = sessionmanager.createmsgsetrequest("us", 7, 0) requestmsgset.attributes.onerror = enrqonerror.roecontinue buildcustomeraddrq(requestmsgset) 'connect quickbooks , begin session sessionmanager.openconnection("", "your application") connectionopen = true sessionmanager.beginsession("", enopenmode.omdontcare) sessionbegun = true 'send request , response quickbooks dim responsemsgset imsgsetresponse responsemsgset = sessionmanager.dorequests(requestmsgset) 'end session , close connection quickbooks sessionmanager.endsession() sessionbegun = false sessionmanager.closeconnection() connectionopen = false walkcustomeraddrs(responsemsgset) catch e exception messagebox.show(e.message, "error") if (sessionbegun) sessionmanager.endsession() end if if (connectionopen) sessionmanager.closeconnection() end if end try end sub private sub buildcustomeraddrq(byval requestmsgset imsgsetrequest) dim customeraddrq icustomeradd customeraddrq = requestmsgset.appendcustomeraddrq() 'set field value name customeraddrq.name.setvalue("test customer 2") 'set field value isactive customeraddrq.isactive.setvalue(true) 'set field value companyname customeraddrq.companyname.setvalue("ab") 'set field value salutation customeraddrq.salutation.setvalue("ab") 'set field value firstname customeraddrq.firstname.setvalue("ab") 'set field value middlename customeraddrq.middlename.setvalue("ab") 'set field value lastname customeraddrq.lastname.setvalue("ab") 'set field value addr1 customeraddrq.billaddress.addr1.setvalue("ab") 'set field value addr2 customeraddrq.billaddress.addr2.setvalue("ab") 'set field value addr3 customeraddrq.billaddress.addr3.setvalue("ab") 'set field value addr4 customeraddrq.billaddress.addr4.setvalue("ab") 'set field value phone customeraddrq.phone.setvalue("ab") 'set field value altphone customeraddrq.altphone.setvalue("ab") 'set field value fax customeraddrq.fax.setvalue("ab") 'set field value email customeraddrq.email.setvalue("ab") 'set field value contact customeraddrq.contact.setvalue("ab") 'set field value altcontact customeraddrq.altcontact.setvalue("ab") 'may create more 1 of these if needed customeraddrq.includeretelementlist.add("name") customeraddrq.includeretelementlist.add("listid") end sub private sub walkcustomeraddrs(byval responsemsgset imsgsetresponse) if (responsemsgset nothing) exit sub end if dim responselist iresponselist responselist = responsemsgset.responselist if (responselist nothing) exit sub end if 'if sent 1 request, there 1 response, we'll walk list sample j integer = 0 responselist.count - 1 dim response iresponse response = responselist.getat(j) 'check status code of response, 0=ok, >0 warning if (response.statuscode >= 0) 'the request-specific response in details, make sure have if (not response.detail nothing) 'make sure response type we're expecting dim responsetype enresponsetype responsetype = ctype(response.type.getvalue(), enresponsetype) if (responsetype = enresponsetype.rtcustomeraddrs) ''upcast more specific type here, safe because checked response.type check above dim customerret icustomerret customerret = ctype(response.detail, icustomerret) walkcustomerret(customerret) end if end if end if next j end sub private sub walkcustomerret(byval customerret icustomerret) if (customerret nothing) exit sub end if 'go through elements of icustomerret 'get value of listid dim listid1 string listid1 = customerret.listid.getvalue() 'get value of name dim name5 string name5 = customerret.name.getvalue() end sub end class end module
another problem see code jumping "retlist" "ret". happens queries e.g. receivepaymentquery. not problem docustomeradd. mention here reference when converting other methods.
the code osr:
public sub walkreceivepaymentret(byval receivepaymentret ireceivepaymentretlist) if (receivepaymentret nothing) exit sub end if
fix this:
public sub walkreceivepaymentret(byval receivepaymentretlist ireceivepaymentretlist) integer = 0 receivepaymentretlist.count - 1 dim receivepaymentret ireceivepaymentret receivepaymentret = receivepaymentretlist.getat(a) if (receivepaymentret nothing) exit sub end if
Comments
Post a Comment