Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

productdetaildialog.ui.h

00001 /****************************************************************************
00002 ** ui.h extension file, included from the uic-generated form implementation.
00003 **
00004 ** If you wish to add, delete or rename functions or slots use
00005 ** Qt Designer which will update this file, preserving your code. Create an
00006 ** init() function in place of a constructor, and a destroy() function in
00007 ** place of a destructor.
00008 *****************************************************************************/
00009 
00010 
00011 void productDetailDialog::init()
00012 {
00013         prodsCurs = new QSqlCursor( "Inv_products", TRUE ) ;
00014         partsCurs = new QSqlCursor( "Inv_parts", TRUE ) ;
00015         taxes = new QSqlCursor( "System_taxrates", TRUE ) ;
00016         taxes->setFilter( "" ) ;
00017         taxes->index( "recid" ) ;
00018         taxes->select() ;
00019         while ( taxes->next() ) {
00020                 vatCombo->insertItem( taxes->value( "tax_name" ).toString() ) ;
00021         }
00022         partsTable->setLeftMargin( 0 ) ;
00023 }
00024 
00025 void productDetailDialog::changeCategory()
00026 {
00027         QlabCategorySelector * dialog = new QlabCategorySelector( this, "CatSel" ) ;
00028         dialog->setType( "inv" ) ;
00029         if ( dialog->exec() == QDialog::Accepted ) {
00030                 buffer->setValue( "main_category", dialog->getID() ) ;
00031         }
00032 }
00033 
00034 
00035 void productDetailDialog::checkRef()
00036 {
00037         QString wid = QObject::sender()->name() ;
00038         if ( !inInit ) {
00039                 inInit = TRUE ;
00040                 QString value = ( (QLineEdit *)QObject::sender() )->text().upper().stripWhiteSpace() ;
00041                 buffer->setValue( wid, value ) ;
00042                 ( (QLineEdit *)QObject::sender() )->setText( value ) ;
00043                 inInit = FALSE ;
00044         }
00045 }
00046 
00047 
00048 void productDetailDialog::setField( const QString & val )
00049 {
00050         QString wid = QObject::sender()->name() ;
00051         buffer->setValue( wid, val ) ;
00052 }
00053 
00054 
00055 void productDetailDialog::recalc()
00056 {
00057         if ( !inInit ) {
00058                 inInit = TRUE ;
00059                 QString wid = QObject::sender()->name() ;
00060                 if ( wid == "vatCombo" ) {
00061                         setVat( vatCombo->currentText() ) ;
00062                         buffer->setValue( "prod_base_retail", buffer->value( "base_sell_price" ).toDouble() +
00063                                                           ( buffer->value( "base_sell_price" ).toDouble() * curr_tax / 100 ) ) ;
00064                         prod_base_retail->setText( QString( "" ).number( buffer->value( "prod_base_retail" ).toDouble(), 'f', 2 ) ) ;
00065                 } else if ( wid == "quick_rate" ) {
00066                         buffer->setValue( "quick_rate", quick_rate->text().toDouble() ) ;
00067                         buffer->setValue( "base_sell_price", buffer->value( "base_buy_price" ).toDouble() *
00068                                                           buffer->value( "quick_rate" ).toDouble() ) ;
00069                         buffer->setValue( "prod_base_retail", buffer->value( "base_sell_price" ).toDouble() +
00070                                                           ( buffer->value( "base_sell_price" ).toDouble() * curr_tax / 100 ) ) ;
00071                         quick_rate->setText( QString( "" ).number( buffer->value( "quick_rate" ).toDouble(), 'f', 3 ) ) ;
00072                         base_sell_price->setText( QString( "" ).number( buffer->value( "base_sell_price" ).toDouble(), 'f', 2 ) ) ;
00073                         prod_base_retail->setText( QString( "" ).number( buffer->value( "prod_base_retail" ).toDouble(), 'f', 2 ) ) ;
00074                 } else if ( wid == "base_buy_price" ) {
00075                         buffer->setValue( "base_buy_price", base_buy_price->text().toDouble() ) ;
00076                         buffer->setValue( "base_sell_price", base_buy_price->text().toDouble() *
00077                                                           buffer->value( "quick_rate" ).toDouble() ) ;
00078                         buffer->setValue( "quick_rate", buffer->value( "base_sell_price" ).toDouble() /
00079                                                           buffer->value( "base_buy_price" ).toDouble() ) ;
00080                         buffer->setValue( "prod_base_retail", buffer->value( "base_sell_price" ).toDouble() +
00081                                                           ( buffer->value( "base_sell_price" ).toDouble() * curr_tax / 100 ) ) ;
00082                         quick_rate->setText( QString( "" ).number( buffer->value( "quick_rate" ).toDouble(), 'f', 3 ) ) ;
00083                         base_buy_price->setText( QString( "" ).number( buffer->value( "base_buy_price" ).toDouble(), 'f', 2 ) ) ;
00084                         base_sell_price->setText( QString( "" ).number( buffer->value( "base_sell_price" ).toDouble(), 'f', 2 ) ) ;
00085                         prod_base_retail->setText( QString( "" ).number( buffer->value( "prod_base_retail" ).toDouble(), 'f', 2 ) ) ;
00086 
00087                 } else if ( wid == "base_sell_price" ) {
00088                         buffer->setValue( "base_sell_price", base_sell_price->text().toDouble() ) ;
00089                         if ( buffer->value( "base_buy_price" ).toDouble() > 0.0 ) {
00090                                 buffer->setValue( "quick_rate", buffer->value( "base_sell_price" ).toDouble() /
00091                                                                   buffer->value( "base_buy_price" ).toDouble() ) ;
00092                         } else {
00093                                 buffer->setValue( "base_buy_price", buffer->value( "base_sell_price" ).toDouble() /
00094                                                                   buffer->value( "quick_rate" ).toDouble() ) ;
00095                         }
00096                         buffer->setValue( "prod_base_retail", buffer->value( "base_sell_price" ).toDouble() +
00097                                                           ( buffer->value( "base_sell_price" ).toDouble() * curr_tax / 100 ) ) ;
00098                         quick_rate->setText( QString( "" ).number( buffer->value( "quick_rate" ).toDouble(), 'f', 3 ) ) ;
00099                         base_sell_price->setText( QString( "" ).number( buffer->value( "base_sell_price" ).toDouble(), 'f', 2 ) ) ;
00100                         prod_base_retail->setText( QString( "" ).number( buffer->value( "prod_base_retail" ).toDouble(), 'f', 2 ) ) ;
00101                 } else if ( wid == "prod_base_retail" ) {
00102                         buffer->setValue( "prod_base_retail", prod_base_retail->text().toDouble() ) ;
00103                         buffer->setValue( "base_sell_price", prod_base_retail->text().toDouble() -
00104                                                           ( prod_base_retail->text().toDouble() * curr_tax / 100 ) ) ;
00105                         buffer->setValue( "quick_rate", buffer->value( "base_sell_price" ).toDouble() /
00106                                                           buffer->value( "base_buy_price" ).toDouble() ) ;
00107                         quick_rate->setText( QString( "" ).number( buffer->value( "quick_rate" ).toDouble(), 'f', 3 ) ) ;
00108                         base_sell_price->setText( QString( "" ).number( buffer->value( "base_sell_price" ).toDouble(), 'f', 2 ) ) ;
00109                         prod_base_retail->setText( QString( "" ).number( buffer->value( "prod_base_retail" ).toDouble(), 'f', 2 ) ) ;
00110                 }
00111                 inInit = FALSE ;
00112         }
00113 }
00114 
00115 
00116 void productDetailDialog::printProd()
00117 {
00118 
00119 }
00120 
00121 
00122 void productDetailDialog::partAdd()
00123 {
00124         QlabPartEditor * dialog = new QlabPartEditor( this, "PartEdit", TRUE ) ;
00125         partsCurs->setFilter( "" ) ;
00126         partsCurs->select() ;
00127         partsCurs->next() ;
00128         QSqlRecord * pbuff = partsCurs->primeInsert() ;
00129         dialog->setProduct( prod_name->text() ) ;
00130         dialog->setDefaultRate( quick_rate->text() ) ;
00131         pbuff->setValue( "recid", 0 ) ;
00132         pbuff->setValue( "isstd_buy_unit", 0 ) ;
00133         pbuff->setValue( "savings", 0 ) ;
00134         pbuff->setValue( "Taxid", buffer->value( "tax_id" ).toInt() ) ;
00135         pbuff->setValue( "costupdate", QDateTime::currentDateTime() ) ;
00136         pbuff->setValue( "priceupdate", QDateTime::currentDateTime() ) ;
00137         pbuff->setValue( "created", QDateTime::currentDateTime() ) ;
00138         pbuff->setValue( "lastchanged", QDateTime::currentDateTime() ) ;
00139         pbuff->setValue( "lastchangedID", LabUser->value( "recid" ).toInt() ) ;
00140         pbuff->setValue( "lastchangedreason", tr( "Creation" ) ) ;
00141 
00142         dialog->setBuffer( pbuff ) ;
00143         if ( dialog->exec() == QDialog::Accepted ) {
00144                 pbuff->setValue( "recid", SequenceGetNextValue( "Inv_parts" ).toInt() ) ;
00145                 pbuff->setValue( "prodid", buffer->value( "recid" ).toInt() ) ;
00146                 QSqlCursor * cats = new QSqlCursor( "System_categories", TRUE ) ;
00147                 int actcat ;
00148                 cats->setFilter( QString( "recid='%1'" ).arg( buffer->value( "main_category" ).toString() ) ) ;
00149                 cats->select() ;
00150                 cats->next() ;
00151                 pbuff->setValue( "main_cat", cats->value( "recid" ).toString() ) ;
00152                 actcat = cats->value( "cat_parent" ).toInt() ;
00153                 while ( actcat > 0 ) {
00154                         cats->setFilter( QString( "recid='%1'" ).arg( actcat ) ) ;
00155                         cats->select() ;
00156                         cats->next() ;
00157                         actcat = cats->value( "cat_parent" ).toInt() ;
00158                         pbuff->setValue( "main_cat", cats->value( "recid" ).toString() ) ;
00159                 }
00160                 partsCurs->insert() ;
00161                 partsTable->refresh() ;
00162         }
00163         delete dialog ;
00164 
00165         editPart->setEnabled( partsTable->numRows() > 0 ) ;
00166         delPart->setEnabled( partsTable->numRows() > 0 ) ;
00167 }
00168 
00169 
00170 void productDetailDialog::partEdit()
00171 {
00172         QlabPartEditor * dialog = new QlabPartEditor( this, "PartEdit", TRUE ) ;
00173         qDebug( "Grabbing info" ) ;
00174         QSqlRecord * b = partsTable->currentRecord() ;
00175         qDebug( "Grabbing product" ) ;
00176         partsCurs->setFilter( QString( "recid='%1'" ).arg( b->value( "recid" ).toString() ) ) ;
00177         partsCurs->select() ;
00178         qDebug( partsCurs->lastQuery() ) ;
00179         partsCurs->next() ;
00180         QSqlRecord * pbuff = partsCurs->primeUpdate() ;
00181         dialog->setProduct( prod_name->text() ) ;
00182         dialog->setDefaultRate( quick_rate->text() ) ;
00183         dialog->setBuffer( pbuff ) ;
00184         if ( dialog->exec() == QDialog::Accepted ) {
00185                 pbuff->setValue( "lastchanged", QDateTime::currentDateTime() ) ;
00186                 pbuff->setValue( "laschangedID", LabUser->value( "recid" ).toInt() ) ;
00187                 partsCurs->update() ;
00188                 partsTable->refresh() ;
00189         }
00190         delete dialog ;
00191 }
00192 
00193 
00194 void productDetailDialog::partDel()
00195 {
00196         if ( QMessageBox::question( this, tr( "Delete Part?" ),
00197                                                                 tr( "You asked for a record deletion\n"
00198                                                                         "This action will disable this record and all "
00199                                                                         "associated values.\n"
00200                                                                         "Are you really sure you want to doo this?" ),
00201                                                                 tr( "No" ), tr( "Yes" ), 0, 0, 0 ) == 1 ) {
00202                 QSqlRecord * pbuff = partsTable->currentRecord() ;
00203                 QSqlQuery q( QString( "UPDATE Inv_parts SET active=0 WHERE recid='%1' ;" )
00204                                          .arg( pbuff->value( "recid" ).toString() ) ) ;
00205                 partsTable->refresh() ;
00206         }
00207         editPart->setEnabled( partsTable->numRows() > 0 ) ;
00208         delPart->setEnabled( partsTable->numRows() > 0 ) ;
00209 }
00210 
00211 
00212 void productDetailDialog::setBuffer( QSqlRecord * buff )
00213 {
00214         buffer = buff ;
00215         inInit = TRUE ;
00216         taxes->setFilter( QString( "recid='%1'" ).arg( buffer->value( "tax_id" ).toString() ) ) ;
00217         taxes->select() ;
00218         taxes->next() ;
00219         curr_tax= taxes->value( "tax_rate" ).toDouble() ;
00220         catPath->setText( BuildCategoryPath( buffer->value( "main_category" ).toString() ) ) ;
00221         prod_ref->setText( buffer->value( "prod_ref" ).toString() ) ;
00222         prod_vendor_ref->setText( buffer->value( "prod_vendor_ref" ).toString() ) ;
00223         prod_name->setText( buffer->value( "prod_name" ).toString() ) ;
00224         prod_description->setText( buffer->value( "prod_description" ).toString() ) ;
00225         vendorCombo->setActive( buffer->value( "vendor_id" ).toInt() ) ;
00226         vatCombo->setCurrentText( taxes->value( "tax_name" ).toString() ) ;
00227         quick_rate->setText( QString( "" ).number( buffer->value( "quick_rate" ).toDouble(), 'f', 3 ) ) ;
00228         base_buy_price->setText( QString( "" ).number( buffer->value( "base_buy_price" ).toDouble(), 'f', 3 ) ) ;
00229         base_sell_price->setText( QString( "" ).number( buffer->value( "base_sell_price" ).toDouble(), 'f', 3 ) ) ;
00230         prod_base_retail->setText( QString( "" ).number( buffer->value( "prod_base_retail" ).toDouble(), 'f', 3 ) ) ;
00231         partsTable->setFilter( QString( "prodid='%1 AND active=1'" ).arg( buffer->value( "recid" ).toString() ) ) ;
00232         partsTable->refresh() ;
00233         editPart->setEnabled( partsTable->numRows() > 0 ) ;
00234         delPart->setEnabled( partsTable->numRows() > 0 ) ;
00235         inInit = FALSE ;
00236 }
00237 
00238 
00239 
00240 void productDetailDialog::saveDescription()
00241 {
00242         if ( !inInit ) {
00243                 buffer->setValue( "prod_description", prod_description->text() ) ;
00244         }
00245 }
00246 
00247 
00248 void productDetailDialog::setVendor( int vnd )
00249 {
00250         if ( !inInit ) {
00251                 buffer->setValue( "vendor_id", vnd ) ;
00252         }
00253 }
00254 
00255 
00256 void productDetailDialog::setVat( const QString & vatc )
00257 {
00258         if ( !inInit ) {
00259                 taxes->setFilter( QString( "tax_name='%1'" ).arg( vatc ) ) ;
00260                 taxes->select() ;
00261                 taxes->next() ;
00262                 buffer->setValue( "tax_id", taxes->value( "recid" ).toInt() ) ;
00263                 curr_tax = taxes->value( "tax_rate" ).toDouble() ;
00264                 recalc() ;
00265         }
00266 }
00267 

 

L.A.B. Project © 2001-2004 LAB Project & DJ Anubis