/[gnue]/gnue-pos/src/Handler.py
ViewVC logotype

Diff of /gnue-pos/src/Handler.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by jcater, Mon Jul 7 05:29:13 2003 UTC revision 1.7 by jcater, Thu Jul 17 05:16:43 2003 UTC
# Line 38  class Handler(events.EventAware): Line 38  class Handler(events.EventAware):
38    def __init__(self, client):    def __init__(self, client):
39      events.EventAware.__init__(self, client)      events.EventAware.__init__(self, client)
40    
41      self.__ManualItemSKUisDepartment = gConfig('ManualItemSKUisDepartment')      self._ManualItemSKUisDepartment = gConfig('ManualItemSKUisDepartment')
42      self.__ManualItemRequestBasePrice = gConfig('ManualItemRequestBasePrice')      self._ManualItemRequestBasePrice = gConfig('ManualItemRequestBasePrice')
43      self.__TaxRate = float(gConfig('TaxRate'))/100      self._TaxRate = float(gConfig('TaxRate'))/100
44    
45      self.__loggedin = 0      self._loggedin = 0
46      self.__quantityRequestedFlag = 0      self._quantityRequestedFlag = 0
47      self.__ticket = 0      self._ticket = 0
48      self.__quantity = 1      self._quantity = 1
49    
50      self.registerEventListeners( {      self.registerEventListeners( {
51              'BeginTicket': self._BeginTicket,              'BeginTicket': self._BeginTicket,
# Line 105  class Handler(events.EventAware): Line 105  class Handler(events.EventAware):
105    
106    
107    def _LoginEntered(self, event):    def _LoginEntered(self, event):
108      self.__login = event.value      self._login = event.value
109      self.dispatchEvent('RequestPassword')      self.dispatchEvent('RequestPassword')
110    
111    def _RequestPassword(self, event):    def _RequestPassword(self, event):
# Line 115  class Handler(events.EventAware): Line 115  class Handler(events.EventAware):
115                         response="PasswordEntered")                         response="PasswordEntered")
116    
117    def _PasswordEntered(self, event):    def _PasswordEntered(self, event):
118      rs = self.dispatchEvent('VerifyLogin', login=self.__login, password=event.value)      rs = self.dispatchEvent('VerifyLogin', login=self._login, password=event.value)
119      if rs:      if rs:
120        self.dispatchEvent('RequestLogin')        self.dispatchEvent('RequestLogin')
121        return        return
122      self.__loggedin = 1      self._loggedin = 1
123      self.dispatchEvent('RequestSKU')      self.dispatchEvent('RequestSKU')
124    
125    
# Line 129  class Handler(events.EventAware): Line 129  class Handler(events.EventAware):
129    
130      if event.next == 'RequestQuantity':      if event.next == 'RequestQuantity':
131        rs = 0        rs = 0
132        if not self.__ticket:        if not self._ticket:
133          self.dispatchEvent('RequestBeginTicket')          self.dispatchEvent('RequestBeginTicket')
134        self.dispatchEvent('RequestQuantity')        self.dispatchEvent('RequestQuantity')
135    
136      elif event.value:      elif event.value:
137        if not self.__ticket:        if not self._ticket:
138          self.dispatchEvent('RequestBeginTicket')          self.dispatchEvent('RequestBeginTicket')
139        rs = self.dispatchEvent('ProcessSKU', sku=event.value, origEvent=event, quantity=self.__quantity)        rs = self.dispatchEvent('ProcessSKU', sku=event.value, origEvent=event, quantity=self._quantity)
140      else:      else:
141        if not self.__ticket and event.next in ('RequestTaxExemption',):        if not self._ticket and event.next in ('RequestTaxExemption',):
142          self.dispatchEvent('RequestBeginTicket')          self.dispatchEvent('RequestBeginTicket')
143    
144        rs = 1        rs = 1
# Line 152  class Handler(events.EventAware): Line 152  class Handler(events.EventAware):
152        self.dispatchEvent('RequestSKU')        self.dispatchEvent('RequestSKU')
153    
154      try:      try:
155        self.__quantity = float(event.value)        self._quantity = float(event.value)
156        if self.__quantity < 0:        if self._quantity < 0:
157          raise ValueError          raise ValueError
158        self.dispatchEvent('RequestSKU')        self.dispatchEvent('RequestSKU')
159      except ValueError:      except ValueError:
# Line 166  class Handler(events.EventAware): Line 166  class Handler(events.EventAware):
166        self.dispatchEvent('RequestSKU')        self.dispatchEvent('RequestSKU')
167        return        return
168      v = int(event.value) - 1      v = int(event.value) - 1
169      if v >= len(self.__items):      if v >= len(self._items):
170        self.dispatchEvent('RequestCancelItem')        self.dispatchEvent('RequestCancelItem')
171      elif not hasattr(self.__items[v],'CANCELED'):      elif not hasattr(self._items[v],'CANCELED'):
172        attrs = {}        attrs = {}
173        for attr, value in event.__dict__.items():        for attr, value in event.__dict__.items():
174          if attr[0] != '_' and type(value) != types.MethodType:          if attr[0] != '_' and type(value) != types.MethodType:
175            attrs[attr] = value            attrs[attr] = value
176        attrs['origlineitem'] = v + 1        attrs['origlineitem'] = v + 1
177        attrs['lineitem'] = len(self.__items)        attrs['lineitem'] = len(self._items)
178        attrs['extended'] *= -1        attrs['extended'] *= -1
179        attrs['each'] *= -1        attrs['each'] *= -1
180        self.__items[v].CANCELED = 1        self._items[v].CANCELED = 1
181      self.dispatchEvent('CancelItem', **attrs)      self.dispatchEvent('CancelItem', **attrs)
182    
183    
184    def _BeginManualItem(self, event):    def _BeginManualItem(self, event):
185      self.__manualSKU = event.sku      self._manualSKU = event.sku
186      if self.__ManualItemSKUisDepartment:      if self._ManualItemSKUisDepartment:
187        self.__manualDepartment = event.sku        self._manualDepartment = event.sku
188        self.__manualEvents = ['RequestManualDescription']        self._manualEvents = ['RequestManualDescription']
189      else:      else:
190        self.__manualEvents = ['RequestManualDepartment','RequestManualDescription']        self._manualEvents = ['RequestManualDepartment','RequestManualDescription']
191    
192      if self.__ManualItemRequestBasePrice:      if self._ManualItemRequestBasePrice:
193        self.__manualEvents += ['RequestManualBasePrice','RequestManualPrice']        self._manualEvents += ['RequestManualBasePrice','RequestManualPrice']
194        self.__manualBasePrice = 0        self._manualBasePrice = 0
195      else:      else:
196        self.__manualEvents += ['RequestManualPrice']        self._manualEvents += ['RequestManualPrice']
197    
198      self.__manualEvents.append('RequestEndManualItem')      self._manualEvents.append('RequestEndManualItem')
199    
200      event.dispatchAfter(self.__manualEvents.pop(0))      event.dispatchAfter(self._manualEvents.pop(0))
201    
202    def _ManualDepartmentEntered(self, event):    def _ManualDepartmentEntered(self, event):
203      if not len(event.value):      if not len(event.value):
204        self.dispatchEvent('Warning',message='Department must be entered')        self.dispatchEvent('Warning',message='Department must be entered')
205        self.dispatchEvent('RequestManualDepartment')        self.dispatchEvent('RequestManualDepartment')
206        return        return
207      self.__manualDepartment = event.value      self._manualDepartment = event.value
208      self.dispatchEvent(self.__manualEvents.pop(0))      self.dispatchEvent(self._manualEvents.pop(0))
209    
210    def _ManualDescriptionEntered(self, event):    def _ManualDescriptionEntered(self, event):
211      if not len(event.value):      if not len(event.value):
212        self.dispatchEvent('Warning',message='Description must be entered')        self.dispatchEvent('Warning',message='Description must be entered')
213        self.dispatchEvent('RequestManualDescription')        self.dispatchEvent('RequestManualDescription')
214        return        return
215      self.__manualDescription = event.value      self._manualDescription = event.value
216      self.dispatchEvent(self.__manualEvents.pop(0))      self.dispatchEvent(self._manualEvents.pop(0))
217    
218    def _ManualBasePriceEntered(self, event):    def _ManualBasePriceEntered(self, event):
219      try:      try:
220        self.__manualBasePrice = float(event.value)        self._manualBasePrice = float(event.value)
221        if self.__manualBasePrice < 0:        if self._manualBasePrice < 0:
222          raise ValueError          raise ValueError
223      except ValueError:      except ValueError:
224        self.dispatchEvent('Warning',message='Base price must be entered')        self.dispatchEvent('Warning',message='Base price must be entered')
225        self.dispatchEvent('RequestManualBasePrice')        self.dispatchEvent('RequestManualBasePrice')
226        return        return
227    
228      v = self.__manualEvents.pop(0)      v = self._manualEvents.pop(0)
229      if v == 'RequestManualPrice':      if v == 'RequestManualPrice':
230        self.dispatchEvent(v, default=self.__manualBasePrice)        self.dispatchEvent(v, default=self._manualBasePrice)
231      else:      else:
232        self.dispatchEvent(v)        self.dispatchEvent(v)
233    
234    def _ManualPriceEntered(self, event):    def _ManualPriceEntered(self, event):
235      try:      try:
236        self.__manualPrice = float(event.value)        self._manualPrice = float(event.value)
237        if self.__manualPrice < 0:        if self._manualPrice < 0:
238          raise ValueError          raise ValueError
239      except ValueError:      except ValueError:
240        self.dispatchEvent('Warning',message='Item price must be entered')        self.dispatchEvent('Warning',message='Item price must be entered')
241        self.dispatchEvent('RequestManualPrice')        self.dispatchEvent('RequestManualPrice')
242        return        return
243    
244      self.dispatchEvent(self.__manualEvents.pop(0))      self.dispatchEvent(self._manualEvents.pop(0))
245    
246    
247    def _RequestBeginLayaway(self, event):    def _RequestBeginLayaway(self, event):
# Line 269  class Handler(events.EventAware): Line 269  class Handler(events.EventAware):
269                       'RequestLogOut',                       'RequestLogOut',
270                       'RequestExit' ]                       'RequestExit' ]
271    
272      if self.__ticket:      if self._ticket:
273        endingEvents += ['RequestSuspendTicket',        endingEvents += ['RequestSuspendTicket',
274                         'RequestCancelTicket',                         'RequestCancelTicket',
275                         'RequestTender',                         'RequestTender',
# Line 303  class Handler(events.EventAware): Line 303  class Handler(events.EventAware):
303      pass      pass
304    
305    def _RequestCancelItem(self, event):    def _RequestCancelItem(self, event):
306      self.dispatchEvent('Prompt', response='CancelItemEntered', label='Enter Line # to Cancel:', default=len(self.__items))      self.dispatchEvent('Prompt', response='CancelItemEntered', label='Enter Line # to Cancel:', default=len(self._items))
307    
308    def _RequestDuplicateLastItem(self, event):    def _RequestDuplicateLastItem(self, event):
309      pass      pass
# Line 338  class Handler(events.EventAware): Line 338  class Handler(events.EventAware):
338    
339    
340    def _RequestEndManualItem(self, event):    def _RequestEndManualItem(self, event):
341      self.dispatchEvent('EndManualItem', sku=self.__manualSKU,      self.dispatchEvent('EndManualItem', sku=self._manualSKU,
342                         description=self.__manualDescription,                         description=self._manualDescription,
343                         department=self.__manualDepartment,                         department=self._manualDepartment,
344                         baseprice=self.__manualBasePrice,                         baseprice=self._manualBasePrice,
345                         quantity=self.__quantity,                         quantity=self._quantity,
346                         price=self.__manualPrice,                         price=self._manualPrice,
347                           extended = self._quantity * self._manualPrice,
348                         taxable=1)                         taxable=1)
349    
350      self.dispatchEvent('AddTicketItem', department=self.__manualDepartment,      self.dispatchEvent('AddTicketItem', department=self._manualDepartment,
351                             sku=self.__manualSKU,                             sku=self._manualSKU,
352                             quantity=self.__quantity,                             quantity=self._quantity,
353                             description=self.__manualDescription,                             description=self._manualDescription,
354                             base=self.__manualBasePrice,                             base=self._manualBasePrice,
355                             each=self.__manualPrice,                             each=self._manualPrice,
356                             extended=round(self.__manualPrice * self.__quantity,2),                             extended=round(self._manualPrice * self._quantity,2),
357                             taxable=1,                             taxable=1,
358                             lineitem=len(self.__items)+1)                             lineitem=len(self._items))
359      self.__quantity = 1      self._quantity = 1
360      self.dispatchEvent('RequestSKU')      self.dispatchEvent('RequestSKU')
361    
362    def _BeginTicket(self, event):    def _BeginTicket(self, event):
363      self.__ticket = event.serial      self._ticket = event.serial
364      self.__taxTotal = 0      self._taxTotal = 0
365      self.__subTotal = 0      self._subTotal = 0
366      self.__payments = 0      self._payments = 0
367      self.__taxExempt = 0      self._taxExempt = 0
368      self.__layaway = 0      self._layaway = 0
369      self.__items = []      self._items = []
370      self.dispatchEvent('UpdateTotal', field="subtotal", amount=0.0)      self.dispatchEvent('UpdateTotal', field="subtotal", amount=0.0)
371      self.dispatchEvent('UpdateTotal', field="tax", amount=0.0)      self.dispatchEvent('UpdateTotal', field="tax", amount=0.0)
372      self.dispatchEvent('UpdateTotal', field="total", amount=0.0)      self.dispatchEvent('UpdateTotal', field="total", amount=0.0)
# Line 375  class Handler(events.EventAware): Line 376  class Handler(events.EventAware):
376      event.dispatchAfter('RequestSKU')      event.dispatchAfter('RequestSKU')
377    
378    def _CancelTicket(self, event):    def _CancelTicket(self, event):
379      self.__ticket = 0      self._ticket = 0
380      event.dispatchAfter('RequestSKU')      event.dispatchAfter('RequestSKU')
381    
382    def _AddTicketItem(self, event):    def _AddTicketItem(self, event):
383      self.__subTotal += event.extended      self._subTotal += event.extended
384      if event.taxable:      if event.taxable:
385        self.__taxTotal += event.extended        self._taxTotal += event.extended
386      self.__items.append(event)      self._items.append(event)
387      event.lineitem=len(self.__items)+1      event.lineitem=len(self._items)+1
388      self._updateTotals()      self._updateTotals()
389    
390    def _BeginLayaway(self, event):    def _BeginLayaway(self, event):
391      self.__layaway = 1      self._layaway = 1
392    
393    def _EndLayaway(self, event):    def _EndLayaway(self, event):
394      self.__layaway = 0      self._layaway = 0
395      self.dispatchEvent('EndTicket')      self.dispatchEvent('EndTicket')
396    
397    def _AddTender(self, event):    def _AddTender(self, event):
# Line 407  class Handler(events.EventAware): Line 408  class Handler(events.EventAware):
408    
409    def _TaxExemptionEntered(self, event):    def _TaxExemptionEntered(self, event):
410      if event.value:      if event.value:
411        self.__taxExempt = 1        self._taxExempt = 1
412      else:      else:
413        self.__taxExempt = 0        self._taxExempt = 0
414      self._updateTotals()      self._updateTotals()
415      self.dispatchEvent('RequestSKU')      self.dispatchEvent('RequestSKU')
416    
417    
418    def _updateTotals(self):    def _updateTotals(self):
419      tax = round(self.__taxTotal* self.__TaxRate,2) * (self.__taxExempt == 0)      tax = round(self._taxTotal* self._TaxRate,2) * (self._taxExempt == 0)
420      self.dispatchEvent('UpdateTotal', field="subtotal", amount=self.__subTotal)      self.dispatchEvent('UpdateTotal', field="subtotal", amount=self._subTotal)
421      self.dispatchEvent('UpdateTotal', field="tax", amount=tax)      self.dispatchEvent('UpdateTotal', field="tax", amount=tax)
422      self.dispatchEvent('UpdateTotal', field="total", amount=self.__subTotal + tax)      self.dispatchEvent('UpdateTotal', field="total", amount=self._subTotal + tax)
423      self.dispatchEvent('UpdateTotal', field="balance", amount=self.__subTotal + tax - self.__payments)      self.dispatchEvent('UpdateTotal', field="balance", amount=self._subTotal + tax - self._payments)
424      tax = round(self.__taxTotal* self.__TaxRate,2)      tax = round(self._taxTotal* self._TaxRate,2)
425    
426    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26