26 |
# NOTES: |
# NOTES: |
27 |
# |
# |
28 |
|
|
29 |
import os, sys |
import os, sys, types |
30 |
|
|
31 |
from gnue.common.apps import GDebug |
from gnue.common.apps import GDebug |
32 |
from gnue.common.apps import GConfig |
from gnue.common.apps import GConfig |
47 |
self.__loggedin = 0 |
self.__loggedin = 0 |
48 |
self.__quantityRequestedFlag = 0 |
self.__quantityRequestedFlag = 0 |
49 |
self.__ticket = 0 |
self.__ticket = 0 |
50 |
|
self.__quantity = 1 |
|
self.__taxTotal = 0 |
|
|
self.__subTotal = 0 |
|
|
self.__payments = 0 |
|
|
self.__taxExempt = 0 |
|
|
self.__layaway = 0 |
|
51 |
|
|
52 |
self.registerEventListeners( { |
self.registerEventListeners( { |
53 |
'BeginTicket': self._BeginTicket, |
'BeginTicket': self._BeginTicket, |
62 |
'PasswordEntered': self._PasswordEntered, |
'PasswordEntered': self._PasswordEntered, |
63 |
'SKUEntered': self._SKUEntered, |
'SKUEntered': self._SKUEntered, |
64 |
'QuantityEntered': self._QuantityEntered, |
'QuantityEntered': self._QuantityEntered, |
65 |
|
'CancelItemEntered': self._CancelItemEntered, |
66 |
|
|
67 |
'RequestLogin': self._RequestLogin, |
'RequestLogin': self._RequestLogin, |
68 |
'RequestPassword': self._RequestPassword, |
'RequestPassword': self._RequestPassword, |
75 |
'RequestPriceLookup': self._RequestPriceLookup, |
'RequestPriceLookup': self._RequestPriceLookup, |
76 |
'RequestTender': self._RequestTender, |
'RequestTender': self._RequestTender, |
77 |
'RequestRemoveItem': self._RequestRemoveItem, |
'RequestRemoveItem': self._RequestRemoveItem, |
78 |
'RequestCancelLastItem': self._RequestCancelLastItem, |
'RequestCancelItem': self._RequestCancelItem, |
79 |
'RequestDuplicateLastItem': self._RequestDuplicateLastItem, |
'RequestDuplicateLastItem': self._RequestDuplicateLastItem, |
80 |
'RequestDiscount': self._RequestDiscount, |
'RequestDiscount': self._RequestDiscount, |
81 |
'RequestLogOut': self._RequestLogOut, |
'RequestLogOut': self._RequestLogOut, |
108 |
response="PasswordEntered") |
response="PasswordEntered") |
109 |
|
|
110 |
def _PasswordEntered(self, event): |
def _PasswordEntered(self, event): |
111 |
|
rs = self.dispatchEvent('VerifyLogin', login=self.__login, password=event.value) |
112 |
|
if rs: |
113 |
|
self.dispatchEvent('RequestLogin') |
114 |
|
return |
115 |
self.__loggedin = 1 |
self.__loggedin = 1 |
116 |
self.dispatchEvent('RequestSKU') |
self.dispatchEvent('RequestSKU') |
117 |
|
|
|
def _SKUEntered(self, event): |
|
|
self.__quantityRequestedFlag = 0 |
|
118 |
|
|
119 |
|
def _SKUEntered(self, event): |
120 |
if not hasattr(event,'next'): |
if not hasattr(event,'next'): |
121 |
event.next = 'RequestSKU' |
event.next = 'RequestSKU' |
122 |
|
|
123 |
print event.next |
if event.next == 'RequestQuantity': |
124 |
|
rs = 0 |
125 |
|
if not self.__ticket: |
126 |
|
self.dispatchEvent('RequestBeginTicket') |
127 |
|
self.dispatchEvent('RequestQuantity') |
128 |
|
|
129 |
if event.value: |
elif event.value: |
130 |
if not self.__ticket: |
if not self.__ticket: |
131 |
self.dispatchEvent('RequestBeginTicket') |
self.dispatchEvent('RequestBeginTicket') |
132 |
rs = self.dispatchEvent('ProcessSKU', sku=event.value, origEvent=event) |
rs = self.dispatchEvent('ProcessSKU', sku=event.value, origEvent=event, quantity=self.__quantity) |
133 |
else: |
else: |
134 |
if not self.__ticket and event.next in ('RequestTaxExemption',): |
if not self.__ticket and event.next in ('RequestTaxExemption',): |
135 |
self.dispatchEvent('RequestBeginTicket') |
self.dispatchEvent('RequestBeginTicket') |
141 |
|
|
142 |
|
|
143 |
def _QuantityEntered(self, event): |
def _QuantityEntered(self, event): |
144 |
self.__loggedin = 1 |
if not event.value: |
145 |
self.__quantityRequestedFlag = 1 |
self.dispatchEvent('RequestSKU') |
|
self.dispatchEvent('UpdateQuantity', quantity=float(event.value)) |
|
146 |
try: |
try: |
147 |
self.__quantity = float(event.value) |
self.__quantity = float(event.value) |
148 |
|
self.dispatchEvent('RequestSKU') |
149 |
except ValueError: |
except ValueError: |
150 |
self.dispatchEvent('RequestQuantity') |
self.dispatchEvent('RequestQuantity') |
151 |
|
|
152 |
|
def _CancelItemEntered(self, event): |
153 |
|
if not event.value: |
154 |
|
self.dispatchEvent('RequestSKU') |
155 |
|
return |
156 |
|
v = int(event.value) - 1 |
157 |
|
if v >= len(self.__items): |
158 |
|
self.dispatchEvent('RequestCancelItem') |
159 |
|
elif not hasattr(self.__items[v],'CANCELED'): |
160 |
|
attrs = {} |
161 |
|
for attr, value in event.__dict__.items(): |
162 |
|
if attr[0] != '_' and type(value) != types.MethodType: |
163 |
|
attrs[attr] = value |
164 |
|
attrs['origlineitem'] = v + 1 |
165 |
|
attrs['lineitem'] = len(self.__items) |
166 |
|
attrs['extended'] *= -1 |
167 |
|
attrs['each'] *= -1 |
168 |
|
self.__items[v].CANCELED = 1 |
169 |
|
self.dispatchEvent('CancelItem', **attrs) |
170 |
|
|
171 |
|
|
172 |
def _BeginManualItem(self, event): |
def _BeginManualItem(self, event): |
173 |
self.__manualSKU = event.sku |
self.__manualSKU = event.sku |
174 |
if self.__ManualItemSKUisDepartment: |
if self.__ManualItemSKUisDepartment: |
219 |
|
|
220 |
|
|
221 |
def _RequestSKU(self, event): |
def _RequestSKU(self, event): |
222 |
self.dispatchEvent('Prompt', label='Enter %s:' % gConfig('SKULabel'), response='SKUEntered', |
endingEvents = [ 'RequestQuantity', |
223 |
endingEvents=('RequestQuantity', |
'RequestPriceLookup', |
224 |
'RequestSuspendTicket', |
'RequestResumeTicket', |
225 |
'RequestResumeTicket', |
'RequestTaxExemption', |
226 |
|
'RequestLogOut', |
227 |
|
'RequestExit' ] |
228 |
|
|
229 |
|
if self.__ticket: |
230 |
|
endingEvents += ['RequestSuspendTicket', |
231 |
'RequestCancelTicket', |
'RequestCancelTicket', |
|
'RequestPriceLookup', |
|
232 |
'RequestTender', |
'RequestTender', |
233 |
'RequestRemoveItem', |
'RequestRemoveItem', |
234 |
'RequestCancelLastItem', |
'RequestCancelItem', |
235 |
'RequestDuplicateLastItem', |
'RequestDuplicateLastItem', |
236 |
'RequestDiscount', |
'RequestDiscount'] |
237 |
'RequestTaxExemption', |
|
238 |
'RequestLogOut', |
self.dispatchEvent('Prompt', label='Enter %s:' % gConfig('SKULabel'), response='SKUEntered', |
239 |
'RequestExit')) |
endingEvents=endingEvents) |
240 |
|
|
241 |
def _RequestQuantity(self, event): |
def _RequestQuantity(self, event): |
242 |
self.dispatchEvent('Prompt', response='QuantityEntered', label='Enter Quantity:') |
self.dispatchEvent('Prompt', response='QuantityEntered', label='Enter Quantity:') |
259 |
def _RequestRemoveItem(self, event): |
def _RequestRemoveItem(self, event): |
260 |
pass |
pass |
261 |
|
|
262 |
def _RequestCancelLastItem(self, event): |
def _RequestCancelItem(self, event): |
263 |
pass |
self.dispatchEvent('Prompt', response='CancelItemEntered', label='Enter Line # to Cancel:', default=len(self.__items)) |
264 |
|
|
265 |
def _RequestDuplicateLastItem(self, event): |
def _RequestDuplicateLastItem(self, event): |
266 |
pass |
pass |
288 |
self.dispatchEvent('Prompt', label='Enter Base Price:', response='ManualBasePriceEntered') |
self.dispatchEvent('Prompt', label='Enter Base Price:', response='ManualBasePriceEntered') |
289 |
|
|
290 |
def _RequestManualPrice(self, event): |
def _RequestManualPrice(self, event): |
291 |
self.dispatchEvent('Prompt', label='Enter Sales Price:', response='ManualPriceEntered') |
if hasattr(event,'default'): |
292 |
|
self.dispatchEvent('Prompt', label='Enter Sales Price:', response='ManualPriceEntered', default=event.default) |
293 |
|
else: |
294 |
|
self.dispatchEvent('Prompt', label='Enter Sales Price:', response='ManualPriceEntered') |
295 |
|
|
296 |
|
|
297 |
def _RequestEndManualItem(self, event): |
def _RequestEndManualItem(self, event): |
298 |
self.dispatchEvent('EndManualItem', sku=self.__manualSKU, |
self.dispatchEvent('EndManualItem', sku=self.__manualSKU, |
299 |
description=self.__manualDescription, |
description=self.__manualDescription, |
300 |
department=self.__manualDepartment, |
department=self.__manualDepartment, |
301 |
baseprice=self.__manualBasePrice, |
baseprice=self.__manualBasePrice, |
302 |
|
quantity=self.__quantity, |
303 |
price=self.__manualPrice, |
price=self.__manualPrice, |
304 |
taxable=1) |
taxable=1) |
305 |
|
|
306 |
self.dispatchEvent('AddTicketItem', department=self.__manualDepartment, |
self.dispatchEvent('AddTicketItem', department=self.__manualDepartment, |
307 |
sku=self.__manualSKU, |
sku=self.__manualSKU, |
308 |
quantity=1, |
quantity=self.__quantity, |
309 |
description=self.__manualDescription, |
description=self.__manualDescription, |
310 |
base=self.__manualBasePrice, |
base=self.__manualBasePrice, |
311 |
each=self.__manualPrice, |
each=self.__manualPrice, |
312 |
extended=self.__manualPrice, |
extended=round(self.__manualPrice * self.__quantity,2), |
313 |
taxable=1) |
taxable=1, |
314 |
|
lineitem=len(self.__items)+1) |
315 |
|
self.__quantity = 1 |
316 |
self.dispatchEvent('RequestSKU') |
self.dispatchEvent('RequestSKU') |
317 |
|
|
318 |
def _BeginTicket(self, event): |
def _BeginTicket(self, event): |
322 |
self.__payments = 0 |
self.__payments = 0 |
323 |
self.__taxExempt = 0 |
self.__taxExempt = 0 |
324 |
self.__layaway = 0 |
self.__layaway = 0 |
325 |
|
self.__items = [] |
326 |
self.dispatchEvent('UpdateTotal', field="subtotal", amount=0.0) |
self.dispatchEvent('UpdateTotal', field="subtotal", amount=0.0) |
327 |
self.dispatchEvent('UpdateTotal', field="tax", amount=0.0) |
self.dispatchEvent('UpdateTotal', field="tax", amount=0.0) |
328 |
self.dispatchEvent('UpdateTotal', field="total", amount=0.0) |
self.dispatchEvent('UpdateTotal', field="total", amount=0.0) |
339 |
self.__subTotal += event.extended |
self.__subTotal += event.extended |
340 |
if event.taxable: |
if event.taxable: |
341 |
self.__taxTotal += event.extended |
self.__taxTotal += event.extended |
342 |
|
self.__items.append(event) |
343 |
self._updateTotals() |
self._updateTotals() |
344 |
|
|
345 |
def _CancelTicketItem(self, event): |
def _CancelTicketItem(self, event): |