00001 #ifndef QLABCASHBOX_H
00002 #define QLABCASHBOX_H
00003
00004 #include <qobject.h>
00005 #include <qvariant.h>
00006
00007 class QlabPrinterDriver ;
00008 class QSqlCursor ;
00009 class QDateTime ;
00010 class QStringList ;
00011 class ticketLine ;
00012 class ticketInfo ;
00013
00014 class Q_EXPORT QlabCashbox : public QObject
00015 {
00016 Q_OBJECT
00017
00018 Q_ENUMS( BoxStatus )
00019 Q_ENUMS( LineTypes )
00020 Q_ENUMS( MasterConversation )
00021 Q_ENUMS( PayStrategies )
00022 Q_ENUMS( PayDialog )
00023 Q_ENUMS( ActionCodes )
00024 Q_ENUMS( TElements )
00025
00026
00027 public :
00028 QlabCashbox( QObject * parent = 0, const char * name = 0 ) ;
00029 ~QlabCashbox() ;
00030
00031
00032 enum BoxStatus { Closed, Opened, Paused, Waiting, InPay } ;
00033 enum LineTypes { Header, Footer, Line, Subtotal, Total, Rebate, Tax,
00034 Refund, Cashin, Cheque, CreditCard, Moneo,
00035 PrivateCard, Delayed, Coupons, InternalCoupons } ;
00036 enum MasterConversation { TicketEnd, CountOpening, CountClose,
00037 CountRedrawal, CountInsertion, Cancelation,
00038 Anomality } ;
00039 enum PayStrategies { PayCash, PayCheck, PayCreditCard, PayMoneo, PayPrivateCard,
00040 PayServiceVoucher, PayPrivateVoucher, PayTicketVoucher,
00041 PayVoucher, PayInstituteVoucher, PayDelayed, PayCustomerAccount, PayNone } ;
00042 enum PayDialog { GetCashValue, FullPartial, GetVoucher, GetCustomer, UnknownMode } ;
00043 enum ActionCodes { Ready, Searching, Payment,
00044 BegSubTotal, BegTotal, BegImmediateCancel,
00045 BegTicketCancel, BegTransactionCancel } ;
00046
00047 enum TElements { TProdid, TSerial, TProdName, TRetail, TQty, TRebate,
00048 TTotal, TGrandTotal, TTotalItems } ;
00049
00050
00051 QString prevSerial() ;
00052
00053 public slots :
00054 void setValue( const QString & fld, const QString & value ) ;
00055 QString createTicket() ;
00056 void insertLine( LineTypes lt ) ;
00057 bool cancelLast() ;
00058 bool cancelLastTicket() ;
00059 bool getTicketList() ;
00060 bool cancelTicket( const QString & num ) ;
00061 void informMaster( MasterConversation mc ) ;
00062 bool printLine( const QString & line ) ;
00063 double getGrandTotal() const ;
00064 void setStatus( BoxStatus newStatus ) ;
00065 ActionCodes actionCode() ;
00066 void setActionCode( ActionCodes act ) ;
00067 PayStrategies payStrategy() ;
00068 PayDialog setPayStrategy( const QString & strat ) ;
00069 BoxStatus status() ;
00070 bool countDone() ;
00071 void setCountDone( bool cd ) ;
00072 QStringList getProgrammableButtons() ;
00073 bool findPart( const QString & part ) ;
00074 QVariant getElement( TElements elem ) ;
00075 void clearLine() ;
00076
00077 private :
00078 QString getTicketIdent() ;
00079 LineTypes stringToType( const QString & tp ) ;
00080 QString typeToString( LineTypes tp ) ;
00081 PayStrategies stringToPay( const QString & pay ) ;
00082 void saveLine() ;
00083
00084 ticketLine * currLine ;
00085 ticketInfo * currTicket ;
00086 BoxStatus currentStatus ;
00087 bool countdone ;
00088 QSqlCursor * cashOptions ;
00089 QSqlCursor * partsTable ;
00090 QSqlCursor * ticketTable ;
00091 QSqlCursor * ticketList ;
00092 QSqlCursor * prodDef ;
00093 QlabPrinterDriver * printer ;
00094 uint subTotals ;
00095 double currentTotal ;
00096 int itemQty ;
00097
00098 ActionCodes action ;
00099 PayStrategies paymode ;
00100 } ;
00101
00102
00103 #endif