Mercurial > wow > itemauditor
comparison Modules/Events.lua @ 92:71053b1f6c1c
Fixed a bug where postage was being counted more than once if you send mail and then open mail in the same session.\nAdded a warning when sending items with value to characters on other accounts.
author | Asa Ayers <Asa.Ayers@Gmail.com> |
---|---|
date | Wed, 11 Aug 2010 21:09:59 -0700 |
parents | e2dab8e34b32 |
children | 028c02f1d47f |
comparison
equal
deleted
inserted
replaced
91:e2dab8e34b32 | 92:71053b1f6c1c |
---|---|
1 local ItemAuditor = select(2, ...) | 1 local ItemAuditor = select(2, ...) |
2 local Events = ItemAuditor:NewModule("Events", "AceEvent-3.0") | 2 local Events = ItemAuditor:NewModule("Events", "AceEvent-3.0") |
3 | |
4 local Utils = ItemAuditor:GetModule("Utils") | |
3 | 5 |
4 function ItemAuditor:OnEnable() | 6 function ItemAuditor:OnEnable() |
5 self:RegisterEvent("MAIL_SHOW") | 7 self:RegisterEvent("MAIL_SHOW") |
6 self:RegisterEvent("UNIT_SPELLCAST_START") | 8 self:RegisterEvent("UNIT_SPELLCAST_START") |
7 | 9 |
53 end | 55 end |
54 | 56 |
55 local attachedItems = {} | 57 local attachedItems = {} |
56 local Orig_SendMail = SendMail | 58 local Orig_SendMail = SendMail |
57 local skipCODTracking = false | 59 local skipCODTracking = false |
60 local skipCODCheck = false | |
58 | 61 |
59 StaticPopupDialogs["ItemAuditor_Send_COD_without_tracking_number"] = { | 62 StaticPopupDialogs["ItemAuditor_Send_COD_without_tracking_number"] = { |
60 text = "ItemAuditor cannot track COD mail with multiple item types attached. Do you want to send this mail without tracking?", | 63 text = "ItemAuditor cannot track COD mail with multiple item types attached. Do you want to send this mail without tracking?", |
61 button1 = "Yes", | 64 button1 = "Yes", |
62 button2 = "No", | 65 button2 = "No", |
66 timeout = 0, | 69 timeout = 0, |
67 whileDead = true, | 70 whileDead = true, |
68 hideOnEscape = true, | 71 hideOnEscape = true, |
69 } | 72 } |
70 | 73 |
74 StaticPopupDialogs["ItemAuditor_Insufficient_COD"] = { | |
75 text = "The COD on this mail is less than the value of items attached. Are you sure you want to send this?|nTotal value (including postage): %s", | |
76 button1 = "Yes", | |
77 button2 = "No", | |
78 OnAccept = function() | |
79 skipCODCheck = true | |
80 end, | |
81 timeout = 0, | |
82 whileDead = true, | |
83 hideOnEscape = true, | |
84 } | |
85 | |
71 function SendMail(recipient, subject, body, ...) | 86 function SendMail(recipient, subject, body, ...) |
72 local self = ItemAuditor | 87 local self = ItemAuditor |
73 self:GenerateBlankOutbox() | 88 self:GenerateBlankOutbox() |
74 | 89 |
75 self:Debug(format("[To: %s] [Subject: %s]", recipient, subject)) | 90 self:Debug(format("[To: %s] [Subject: %s]", recipient, subject)) |
76 | 91 |
77 self.mailOutbox.COD = GetSendMailCOD() | 92 self.mailOutbox.COD = GetSendMailCOD() |
78 | 93 |
79 attachedItems = {} | 94 wipe(attachedItems) |
80 local totalStacks = 0 | 95 local totalStacks = 0 |
81 local link | 96 local link |
82 for index = 1, ATTACHMENTS_MAX_SEND do | 97 for index = 1, ATTACHMENTS_MAX_SEND do |
83 local itemName, _, itemCount = GetSendMailItem(index) | 98 local itemName, _, itemCount = GetSendMailItem(index) |
84 local newLink = GetSendMailItemLink(index) | 99 local newLink = GetSendMailItemLink(index) |
90 attachedItems[newLink].stacks = attachedItems[newLink].stacks + 1 | 105 attachedItems[newLink].stacks = attachedItems[newLink].stacks + 1 |
91 attachedItems[newLink].count = attachedItems[newLink].count + itemCount | 106 attachedItems[newLink].count = attachedItems[newLink].count + itemCount |
92 attachedItems[newLink].price = 0 -- This is a placeholder for below. | 107 attachedItems[newLink].price = 0 -- This is a placeholder for below. |
93 end | 108 end |
94 end | 109 end |
110 local attachedValue = 0 | |
95 for link, data in pairs(attachedItems) do | 111 for link, data in pairs(attachedItems) do |
96 data.price = 30 * data.stacks | 112 data.price = 30 * data.stacks |
97 end | 113 attachedValue = attachedValue + data.price + (select(2, ItemAuditor:GetItemCost(link)) * data.stacks) |
98 | 114 end |
99 if self.mailOutbox.COD > 0 and skipCODTracking then | 115 |
116 local cross_account_mail = true | |
117 for name, _ in pairs(DataStore:GetCharacters()) do | |
118 if recipient == name then | |
119 cross_account_mail = false | |
120 break | |
121 end | |
122 end | |
123 if cross_account_mail and attachedValue > self.mailOutbox.COD and not skipCODCheck then | |
124 self:GenerateBlankOutbox() | |
125 skipCODCheck = false; | |
126 local vararg = ... | |
127 StaticPopupDialogs["ItemAuditor_Insufficient_COD"].OnAccept = function() | |
128 skipCODCheck = true | |
129 SendMail(recipient, subject, body, vararg) | |
130 skipCODCheck = false | |
131 end | |
132 StaticPopup_Show ("ItemAuditor_Insufficient_COD", Utils.FormatMoney(attachedValue)); | |
133 return | |
134 elseif self.mailOutbox.COD > 0 and skipCODTracking then | |
100 | 135 |
101 elseif self.mailOutbox.COD > 0 then | 136 elseif self.mailOutbox.COD > 0 then |
102 if self:tcount(attachedItems) > 1 then | 137 if self:tcount(attachedItems) > 1 then |
103 self:GenerateBlankOutbox() | 138 self:GenerateBlankOutbox() |
104 local vararg = ... | 139 local vararg = ... |
128 return Orig_SendMail(recipient, subject, body, ...) | 163 return Orig_SendMail(recipient, subject, body, ...) |
129 end | 164 end |
130 | 165 |
131 function ItemAuditor:MAIL_SUCCESS(event) | 166 function ItemAuditor:MAIL_SUCCESS(event) |
132 skipCODTracking = false | 167 skipCODTracking = false |
168 skipCODCheck = false | |
169 | |
133 for link, data in pairs(attachedItems) do | 170 for link, data in pairs(attachedItems) do |
134 self:SaveValue(link, data.price, data.count) | 171 self:SaveValue(link, data.price, data.count) |
135 end | 172 end |
136 if self.mailOutbox.COD > 0 then | 173 if self.mailOutbox.COD > 0 then |
137 self:Debug(format("MAIL_SUCCESS %d [To: %s] [Subject: %s] [COD: %s]", self.mailOutbox.key, self.mailOutbox.to, self.mailOutbox.subject, self.mailOutbox.COD)) | 174 self:Debug(format("MAIL_SUCCESS %d [To: %s] [Subject: %s] [COD: %s]", self.mailOutbox.key, self.mailOutbox.to, self.mailOutbox.subject, self.mailOutbox.COD)) |
138 | 175 |
139 self.mailOutbox.sent = time() | 176 self.mailOutbox.sent = time() |
140 self.db.factionrealm.outbound_cod[self.mailOutbox.key] = self.mailOutbox | 177 self.db.factionrealm.outbound_cod[self.mailOutbox.key] = self.mailOutbox |
141 end | 178 end |
142 | 179 |
143 | 180 wipe(attachedItems) |
144 self:GenerateBlankOutbox() | 181 self:GenerateBlankOutbox() |
145 end | 182 end |
146 | 183 |
147 function ItemAuditor:MAIL_CLOSED() | 184 function ItemAuditor:MAIL_CLOSED() |
148 self:Debug("MAIL_CLOSED") | 185 self:Debug("MAIL_CLOSED") |