int BfBuscarReferencia_on_mui_abrirtodo_clicked_Post ( BfBuscarReferencia *ref ) { QString SQLQuery = "SELECT * FROM factura WHERE reffactura = '" + ref->mui_referencia->text() + "'"; BlDbRecordSet *cur = ref->mainCompany() ->loadQuery ( SQLQuery ); while ( !cur->eof() ) { FacturaView * bud = new FacturaView ( ( BfCompany * ) ref->mainCompany(), NULL ); ref->mainCompany() ->m_pWorkspace->addSubWindow ( bud ); bud->load ( cur->value( "idfactura" ) ); bud->show(); cur->nextRecord(); } // end while delete cur; return 0; }// end if
void ImpQToolButton::click() { BL_FUNC_DEBUG QString res = ""; if ( m_albaranClienteList != NULL ) { m_companyact = ( BfCompany * ) m_albaranClienteList->mainCompany(); BlSubForm *sub = m_albaranClienteList->mui_list; /// Creamos la factura /// Como estamos en un plugin buscamos nuevas formas de creacion de objetos. int resur = g_plugins->run ( "SNewFacturaView", m_companyact ); if ( !resur ) { blMsgInfo ( "no se pudo crear instancia de factura" ); return; } // end if FacturaView *fac = ( FacturaView * ) g_plugParams; m_companyact->m_pWorkspace->addSubWindow ( fac ); /// Cargamos un elemento que no existe para inicializar bien la clase. fac->load ( "0" ); /// Reseteamos los valores for ( int i = 0; i < sub->rowCount(); i++ ) { BlDbSubFormRecord *rec = sub->lineaat ( i ); rec->refresh(); QString val = rec->dbValue ( "selector" ); if ( val == "TRUE" ) { QString id = rec->dbValue ( "idalbaran" ); /// Como estamos en un plugin buscamos nuevas formas de creacion de objetos. int resur = g_plugins->run ( "SNewAlbaranClienteView", m_companyact ); if ( !resur ) { blMsgInfo ( "no se pudo crear instancia de albaran" ); return; } // end if AlbaranClienteView *pres = ( AlbaranClienteView * ) g_plugParams; pres->load ( id ); if ( pres->mui_procesadoalbaran->isChecked() ) { pres->close(); return; } // end if m_companyact->pWorkspace() ->addSubWindow ( pres ); m_companyact->insertWindow ( pres->windowTitle(), pres, FALSE ); pres->show(); // El calculo de descuentos es complejo BlFixed descgen1 = pres->getlistadescuentos() ->sumarCampo ( "proporciondalbaran" ); BlFixed descgen = BlFixed ( "1.000" ) - descgen1 / BlFixed ( "100" ); /// Agregamos a comentarios que albaran se corresponde. QString comm = fac->dbValue ( "comentfactura" ) + "(" + _ ( "ALBARAN: Num " ) + pres->dbValue ( "numalbaran" ) + _ ( "Ref:" ) + " " + pres->dbValue ( "refalbaran" ) + _ ( "Fecha:" ) + " " + pres->dbValue ( "fechaalbaran" ) + ")\n"; fac->setDbValue ( "comentfactura", comm ); fac->setDbValue ( "idforma_pago", pres->dbValue ( "idforma_pago" ) ); fac->setDbValue ( "reffactura", pres->dbValue ( "refalbaran" ) ); fac->setDbValue ( "idcliente", pres->dbValue ( "idcliente" ) ); fac->setDbValue ( "idalmacen", pres->dbValue ( "idalmacen" ) ); QString l; BlDbSubFormRecord *linea, *linea1; for ( int i = 0; i < pres->getlistalineas() ->rowCount(); ++i ) { linea = pres->getlistalineas() ->lineaat ( i ); if ( linea->dbValue ( "idarticulo" ) != "" ) { linea1 = fac->getlistalineas() ->lineaat ( fac->getlistalineas() ->rowCount() - 1 ); /// Haciendo el nuevo registro antes nos evitamos problemas de foco. fac->getlistalineas() ->newRecord(); fac->getlistalineas() ->setProcesarCambios ( FALSE ); linea1->setDbValue ( "codigocompletoarticulo", linea->dbValue ( "codigocompletoarticulo" ) ); linea1->setDbValue ( "desclfactura", linea->dbValue ( "desclalbaran" ) ); linea1->setDbValue ( "cantlfactura", linea->dbValue ( "cantlalbaran" ) ); linea1->setDbValue ( "pvplfactura", linea->dbValue ( "pvplalbaran" ) ); linea1->setDbValue ( "ivalfactura", linea->dbValue ( "ivalalbaran" ) ); BlFixed descpar1 = BlFixed ( linea->dbValue ( "descuentolalbaran" ) ); BlFixed descpar = BlFixed ( "1.000" ) - descpar1 / BlFixed ( "100" ); BlFixed desc = ( BlFixed ( "1.00" ) - descpar * descgen ) * BlFixed ( "100.00" ); linea1->setDbValue ( "descuentolfactura", desc.toQString ( '.' ) ); linea1->setDbValue ( "idarticulo", linea->dbValue ( "idarticulo" ) ); linea1->setDbValue ( "nomarticulo", linea->dbValue ( "nomarticulo" ) ); fac->getlistalineas() ->setProcesarCambios ( TRUE ); linea1->refresh(); } // end if } // end for pres->mui_procesadoalbaran->setChecked ( TRUE ); } // end if } // end for fac->calculaypintatotales(); fac->pintar(); fac->show(); } // end if }