vtiger 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +6 -1
- data/lib/vtiger/base.rb +15 -2
- data/lib/vtiger/commands.rb +27 -21
- data/test/test_vtiger.rb +41 -2
- metadata +4 -4
data/README.rdoc
CHANGED
data/lib/vtiger/base.rb
CHANGED
@@ -68,14 +68,27 @@ module Vtiger
|
|
68
68
|
# puts "url path is #{url.path}"
|
69
69
|
http.request(req)
|
70
70
|
}
|
71
|
-
|
71
|
+
# puts "HTTP_ASK_GET" + resp.body.to_s
|
72
72
|
|
73
73
|
|
74
74
|
# puts "resp: " + resp
|
75
75
|
self.json_parse resp.body
|
76
76
|
# r
|
77
77
|
end
|
78
|
-
|
78
|
+
def add_object(object_map,hashv,element)
|
79
|
+
object_map=object_map.merge hashv
|
80
|
+
# 'tsipid'=>"1234"
|
81
|
+
tmp=self.json_please(object_map)
|
82
|
+
input_array ={'operation'=>'create','elementType'=>"#{element}",'sessionName'=>"#{self.session_name}", 'element'=>tmp} # removed the true
|
83
|
+
puts "input array:" + input_array.to_s #&username=#{self.username}&accessKey=#{self.md5}
|
84
|
+
# scott not working -- JSON.generate(input_array,{'array_nl'=>'true'})
|
85
|
+
result = http_crm_post("operation=create",input_array)
|
86
|
+
# self.session_name=result["result"]["sessionName"]
|
87
|
+
# puts JSON.pretty_generate(result)
|
88
|
+
success=result['success']
|
89
|
+
id =result["result"]['id'] if success
|
90
|
+
return success,id
|
91
|
+
end
|
79
92
|
def login(options)
|
80
93
|
# puts "in login"
|
81
94
|
input_array ={'operation'=>'login', 'username'=>self.username, 'accessKey'=>self.md5} # removed the true
|
data/lib/vtiger/commands.rb
CHANGED
@@ -22,33 +22,23 @@ module Vtiger
|
|
22
22
|
def addlead(options,ln,co,hashv)
|
23
23
|
puts "in addobject"
|
24
24
|
object_map= { 'assigned_user_id'=>"#{self.userid}",'lastname'=>"#{ln}", 'company'=>"#{co}"}
|
25
|
-
object_map
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
25
|
+
add_object(object_map,hashv,'Leads')
|
26
|
+
end
|
27
|
+
def add_contact(options,ln,email,hashv)
|
28
|
+
puts "in contact"
|
29
|
+
object_map= { 'assigned_user_id'=>"#{self.userid}",'lastname'=>"#{ln}", 'email'=>"#{email}"}
|
30
|
+
add_object(object_map,hashv,'Contacts')
|
31
|
+
end
|
32
|
+
def find_contact_by_email_or_add(options,ln,email,hashv)
|
33
|
+
success,id = query_element_by_email(email,"Contacts")
|
34
|
+
success,id =add_contact(options,ln,email,hashv) if !success
|
35
35
|
end
|
36
36
|
def add_trouble_ticket(options,status,title,hashv)
|
37
37
|
puts "in add trouble ticket"
|
38
38
|
object_map= { 'assigned_user_id'=>"#{self.userid}",'ticketstatus'=>"#{status}", 'ticket_title'=>"#{title}"}
|
39
39
|
object_map=object_map.merge hashv
|
40
40
|
# 'tsipid'=>"1234"
|
41
|
-
|
42
|
-
input_array ={'operation'=>'create','elementType'=>"HelpDesk",'sessionName'=>"#{self.session_name}", 'element'=>tmp} # removed the true
|
43
|
-
puts "input array:" + input_array.to_s #&username=#{self.username}&accessKey=#{self.md5}
|
44
|
-
# scott not working -- JSON.generate(input_array,{'array_nl'=>'true'})
|
45
|
-
result = http_crm_post("operation=create",input_array)
|
46
|
-
puts "#{result.inspect}"
|
47
|
-
# self.session_name=result["result"]["sessionName"]
|
48
|
-
# puts JSON.pretty_generate(result)
|
49
|
-
ttnumber="invalid"
|
50
|
-
ttnumber =result["result"]["ticket_no"] if result["success"]
|
51
|
-
return result["success"],ttnumber
|
41
|
+
add_object(object_map,hashv,'HelpDesk')
|
52
42
|
end
|
53
43
|
def action(options)
|
54
44
|
puts "in action"
|
@@ -119,6 +109,22 @@ module Vtiger
|
|
119
109
|
# self.new_quantity = self.qty_in_stock.to_i + options[:quantity].to_i
|
120
110
|
# updateobject(options,{'qtyinstock'=> "#{self.new_quantity}","productname"=>"#{options[:productname]}"})
|
121
111
|
end
|
112
|
+
def query_element_by_email(email,element)
|
113
|
+
puts "in query contact"
|
114
|
+
action_string=ERB::Util.url_encode("select id from #{element} where email like '#{email}';")
|
115
|
+
puts "action string:" +action_string
|
116
|
+
res = http_ask_get(self.endpoint_url+"operation=query&sessionName=#{self.session_name}&query="+action_string)
|
117
|
+
values=res["result"][0] if res["success"]==true #comes back as array
|
118
|
+
#puts values.inspect
|
119
|
+
# return the account id
|
120
|
+
self.object_id = 'failed'
|
121
|
+
if values!= nil
|
122
|
+
self.object_id=values["id"]
|
123
|
+
self.account_name=values["accountname"]
|
124
|
+
end
|
125
|
+
return res["success"],self.object_id
|
126
|
+
|
127
|
+
end
|
122
128
|
def query_product_inventory(options)
|
123
129
|
puts "in query product count"
|
124
130
|
#&username=#{self.username}&accessKey=#{self.md5}
|
data/test/test_vtiger.rb
CHANGED
@@ -46,6 +46,20 @@ class TestVtiger < Test::Unit::TestCase
|
|
46
46
|
assert challenge,"challenge is false"
|
47
47
|
assert login,"login is false"
|
48
48
|
end
|
49
|
+
|
50
|
+
def test_find_or_add_contact
|
51
|
+
cmd = Vtiger::Commands.new()
|
52
|
+
@options[:username]='admin'
|
53
|
+
challenge=cmd.challenge(@options)
|
54
|
+
login=cmd.login(@options)
|
55
|
+
success,id=cmd.find_contact_by_email_or_add(@options,'sproule','scott.sproule@gmail.com',{})
|
56
|
+
assert challenge,"challenge is false "
|
57
|
+
assert login,"login should succeed"
|
58
|
+
assert success,"find contact should success"
|
59
|
+
assert id=='4x173', "id is #{id}"
|
60
|
+
puts "id is #{id}"
|
61
|
+
|
62
|
+
end
|
49
63
|
def test_bad_login
|
50
64
|
cmd = Vtiger::Commands.new()
|
51
65
|
@options[:username]='test'
|
@@ -54,17 +68,42 @@ class TestVtiger < Test::Unit::TestCase
|
|
54
68
|
assert challenge,"challenge is false "
|
55
69
|
assert !login,"login should not succeed"
|
56
70
|
end
|
71
|
+
def test_query_contact
|
72
|
+
cmd = Vtiger::Commands.new()
|
73
|
+
@options[:username]='admin'
|
74
|
+
challenge=cmd.challenge(@options)
|
75
|
+
login=cmd.login(@options)
|
76
|
+
success,id=cmd.query_element_by_email("scott.sproule@gmail.com","Contacts")
|
77
|
+
assert challenge,"challenge is false "
|
78
|
+
assert login,"login should succeed"
|
79
|
+
assert success,"find contact should success"
|
80
|
+
puts "id is #{id}"
|
81
|
+
|
82
|
+
end
|
57
83
|
def test_add_lead
|
58
84
|
cmd = Vtiger::Commands.new()
|
59
85
|
challenge=cmd.challenge(@options)
|
60
86
|
login=cmd.login(@options)
|
61
87
|
hv={}
|
62
88
|
hv[:firstname]='test'
|
63
|
-
|
89
|
+
success,id=cmd.addlead(@options,"testlastname","testco",hv)
|
64
90
|
assert challenge,"challenge is false "
|
65
91
|
assert login,"login should succeed"
|
66
|
-
assert
|
92
|
+
assert success,"lead should succeed"
|
93
|
+
puts "id is #{id}"
|
67
94
|
end
|
95
|
+
def test_add_contact
|
96
|
+
cmd = Vtiger::Commands.new()
|
97
|
+
challenge=cmd.challenge(@options)
|
98
|
+
login=cmd.login(@options)
|
99
|
+
hv={}
|
100
|
+
hv[:firstname]='test'
|
101
|
+
success,id=cmd.add_contact(@options,"testlastname","scott.sproule@gmail.com",hv)
|
102
|
+
assert challenge,"challenge is false "
|
103
|
+
assert login,"login should succeed"
|
104
|
+
assert success,"add should succeed"
|
105
|
+
puts "id is #{id}"
|
106
|
+
end
|
68
107
|
|
69
108
|
def test_add_trouble_ticket
|
70
109
|
cmd = Vtiger::Commands.new()
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vtiger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 7
|
10
|
+
version: 0.3.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Scott Sproule
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-06-
|
18
|
+
date: 2010-06-24 00:00:00 +08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|