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
示例#2
0
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

    
}