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 void LabPhysicalInventory::init() 00011 { 00012 productsTable->setLeftMargin( 0 ) ; 00013 productsTable->setFilter( "recid='-1'" ) ; 00014 productsTable->setColumnStretchable( 0, TRUE ) ; 00015 productsTable->setColumnStretchable( 1, TRUE ) ; 00016 productsTable->setColumnStretchable( 2, TRUE ) ; 00017 productsTable->setColumnStretchable( 3, TRUE ) ; 00018 productsTable->setColumnWidth( 0, 150 ) ; 00019 productsTable->setColumnWidth( 1, 350 ) ; 00020 productsTable->setColumnWidth( 2, 150 ) ; 00021 productsTable->setColumnWidth( 3, 150 ) ; 00022 productsTable->refresh( QDataTable::RefreshAll ) ; 00023 partsTable->setLeftMargin( 0 ) ; 00024 partsTable->setFilter( "recid='-1'" ) ; 00025 partsTable->setColumnStretchable( 0, TRUE ) ; 00026 partsTable->setColumnStretchable( 1, TRUE ) ; 00027 partsTable->setColumnStretchable( 2, TRUE ) ; 00028 partsTable->setColumnStretchable( 3, TRUE ) ; 00029 partsTable->setColumnStretchable( 4, TRUE ) ; 00030 partsTable->setColumnStretchable( 5, TRUE ) ; 00031 partsTable->setColumnWidth( 0, 150 ) ; 00032 partsTable->setColumnWidth( 1, 70 ) ; 00033 partsTable->setColumnWidth( 2, 150 ) ; 00034 partsTable->setColumnWidth( 3, 150 ) ; 00035 partsTable->setColumnWidth( 4, 150 ) ; 00036 partsTable->setColumnWidth( 5, 100 ) ; 00037 00038 partsTable->refresh( QDataTable::RefreshAll ) ; 00039 } 00040 00041 void LabPhysicalInventory::showHelp() 00042 { 00043 00044 } 00045 00046 00047 void LabPhysicalInventory::findProduct() 00048 { 00049 QString want = refBarcodeEdit->text().stripWhiteSpace() ; 00050 if ( !want.isEmpty() ) { 00051 QSqlCursor * t = new QSqlCursor( "Inv_parts", TRUE ) ; 00052 if ( want.left( 3 ) == "378" ) { 00053 // press... 00054 t->setFilter( QString( "serial LIKE '%1%'" ).arg( want.left( 8 ) ) ) ; 00055 } else { 00056 t->setFilter( QString( "serial='%1'" ).arg( want ) ) ; 00057 } 00058 t->select() ; 00059 if ( t->next() ) { 00060 QSqlCursor * u = new QSqlCursor( "Inv_products", TRUE ) ; 00061 u->setFilter( QString( "recid='%1'" ).arg( t->value( "prodid" ).toString() ) ) ; 00062 u->select() ; 00063 if ( u->next() ) { 00064 want = u->value( "prod_ref" ).toString() ; 00065 } 00066 } 00067 productsTable->setFilter( QString( "prod_ref LIKE '%1%'" ).arg( want ) ) ; 00068 productsTable->refresh() ; 00069 if ( productsTable->numRows() > 0 ) { 00070 productsTable->selectRow( 0 ) ; 00071 } else { 00072 // Unknown product. Must Create 00073 00074 } 00075 } 00076 } 00077 00078 00079 void LabPhysicalInventory::productChanged( QSqlRecord * buffer ) 00080 { 00081 partsTable->setFilter( QString( "prodid='%1'" ).arg( buffer->value( "recid" ).toString() ) ) ; 00082 partsTable->refresh() ; 00083 partsTable->selectRow( 0 ) ; 00084 } 00085 00086 00087 void LabPhysicalInventory::beforeUpdatePart( QSqlRecord * buffer ) 00088 { 00089 QSqlCursor * t = new QSqlCursor( "Inv_products", TRUE ) ; 00090 t->setFilter( QString( "recid='%1'" ).arg( buffer->value( "prodid" ).toString() ) ) ; 00091 t->select() ; 00092 if ( t->next() ) { 00093 int qty = buffer->value( "stock" ).toInt() * buffer->value( "qty_unit" ).toInt() ; 00094 for ( int i = 0; i < partsTable->numRows(); i++ ) { 00095 if ( partsTable->text( i, 0 ) != buffer->value( "serial" ).toString() ) { 00096 qty += partsTable->text( i, 1 ).toInt() * partsTable->text( i, 5 ).toInt() ; 00097 } 00098 } 00099 QSqlQuery q( QString( "UPDATE Inv_products SET available='%1' WHERE recid='%2' ;" ).arg( qty ).arg( t->value( "recid" ).toString() ) ) ; 00100 productsTable->update() ; 00101 productsTable->refresh() ; 00102 } 00103 }