31 |
|
|
32 |
from gnue.common.events.EventAware import EventAware |
from gnue.common.events.EventAware import EventAware |
33 |
|
|
34 |
|
dollarFormat = '$%.02f' |
35 |
|
|
36 |
class Driver(EventAware): |
class Driver(EventAware): |
37 |
|
|
38 |
########################################################## |
########################################################## |
47 |
# |
# |
48 |
# |
# |
49 |
|
|
50 |
def __init__(self, instance): |
def __init__(self, instance, params): |
51 |
EventAware.__init__(self, instance, params) |
EventAware.__init__(self, instance) |
52 |
self.instance = instance |
self.instance = instance |
53 |
self.params = params |
self.__dict__.update(params) |
54 |
|
self.output = None |
55 |
|
|
56 |
|
self.totalFields = ( ('subtotal',_('Subtotal')), |
57 |
|
('mstax','MS Sales Tax (7%)'), |
58 |
|
('total',_('Total')) ) |
59 |
|
|
60 |
|
self.receiptColumns = ( ('department',_('Dept'), '%s', 0), |
61 |
|
('sku',_('Code'), '%s', 0), |
62 |
|
('quantity',_('Units'), '%s', 0), |
63 |
|
('description',_('Description'), '%s', 0), |
64 |
|
('each',_('Price/Unit'), dollarFormat, 1), |
65 |
|
('extended',_('Extended'), dollarFormat, 1) ) |
66 |
|
|
67 |
|
self.totalFieldMapping = {} |
68 |
|
|
69 |
|
self.registerEventListeners( { |
70 |
|
'BeginTicket': self._BeginTicket, |
71 |
|
'EndTicket': self._EndTicket, |
72 |
|
'CancelTicket': self._CancelTicket, |
73 |
|
'AddTicketItem': self._AddTicketItem, |
74 |
|
'CancelTicketItem': self._CancelTicketItem, |
75 |
|
'UpdateTotal': self._UpdateTotal } ) |
76 |
|
|
77 |
self.init() |
self.init() |
78 |
|
|
79 |
|
def _BeginTicket(self, event): |
80 |
|
self.output = open(self.port,'w') |
81 |
|
self.totals = {} |
82 |
|
self.output.write(""" |
83 |
|
------------------------------ |
84 |
|
Company Header |
85 |
|
123 N Main St |
86 |
|
Yourtown, TN 38011 |
87 |
|
(662) 555-1234 |
88 |
|
------------------------------ |
89 |
|
|
90 |
|
Receipt # %s |
91 |
|
%s %s %s |
92 |
|
|
93 |
|
""" % (event.serial, '06/23/03','12:13pm','Jason')) |
94 |
|
|
95 |
|
def _CancelTicket(self, event): |
96 |
|
self.output.write('\n**** CANCELED ****\n\n\n') |
97 |
|
self.output.close() |
98 |
|
self.output = None |
99 |
|
|
100 |
|
def _EndTicket(self, event): |
101 |
|
self.output.write('\n\n') |
102 |
|
for field, display in self.totalFields: |
103 |
|
try: |
104 |
|
self.output.write(display+': '+dollarFormat % self.totals[field]+'\n') |
105 |
|
except KeyError: |
106 |
|
self.output.write(display+': '+dollarFormat % 0+'\n') |
107 |
|
self.output.write('\n\n\n') |
108 |
|
self.output.close() |
109 |
|
self.output = None |
110 |
|
|
111 |
|
def _AddTicketItem(self, event): |
112 |
|
# TODO |
113 |
|
for field, foo, format, bar in self.receiptColumns: |
114 |
|
try: |
115 |
|
self.output.write(format % event.__dict__[field]+' ') |
116 |
|
except KeyError: |
117 |
|
pass |
118 |
|
self.output.write("\n") |
119 |
|
|
120 |
|
|
121 |
|
def _CancelTicketItem(self, event): |
122 |
|
pass |
123 |
|
|
124 |
|
def _UpdateTotal(self, event): |
125 |
|
self.totals[event.field] = event.amount |
126 |
|
|