00001
00002
00003
00004
00005
00006
00007
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
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
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 }