本文整理汇总了C++中BlDbRecordSet::nextRecord方法的典型用法代码示例。如果您正苦于以下问题:C++ BlDbRecordSet::nextRecord方法的具体用法?C++ BlDbRecordSet::nextRecord怎么用?C++ BlDbRecordSet::nextRecord使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BlDbRecordSet
的用法示例。
在下文中一共展示了BlDbRecordSet::nextRecord方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: categoryArticleXML
QString ServerLight::categoryArticleXML()
{
QString textoXML = "";
QString query;
BlDbRecordSet *familias;
BlDbRecordSet *articulos;
query = "SELECT idfamilia, codigocompletofamilia, nombrefamilia FROM familia ORDER BY nombrefamilia";
familias = mainCompany()->loadQuery(query);
while (!familias->eof()) {
textoXML += "<CATEGORIA>\\\n";
textoXML += "<CODCATEGORIA>";
textoXML += familias->value("codigocompletofamilia");
textoXML += "</CODCATEGORIA>\\\n";
textoXML += "<NOMCATEGORIA>";
textoXML += familias->value("nombrefamilia");
textoXML += "</NOMCATEGORIA>\\\n";
query = "SELECT idarticulo, nomarticulo, pvpivaincarticulo FROM articulo WHERE idfamilia = " + familias->value("idfamilia") + "ORDER BY nomarticulo";
articulos = mainCompany()->loadQuery(query);
if (articulos->numregistros() > 0) {
while (!articulos->eof()) {
textoXML += "<ARTICULO>\\\n";
textoXML += "<IDARTICULO>";
textoXML += articulos->value("idarticulo");
textoXML += "</IDARTICULO>\\\n";
textoXML += "<NOMARTICULO>";
textoXML += articulos->value("nomarticulo");
textoXML += "</NOMARTICULO>\\\n";
textoXML += "<PVPARTICULO>";
textoXML += articulos->value("pvpivaincarticulo");
textoXML += "</PVPARTICULO>\\\n";
textoXML += "</ARTICULO>\\\n";
articulos->nextRecord();
} // end while
} // end if
textoXML += "</CATEGORIA>\\\n\\\n\\\n";
familias->nextRecord();
} // end while
return textoXML;
}
示例2: on_mui_veralbaranes_clicked
void FacturaView::on_mui_veralbaranes_clicked()
{
BL_FUNC_DEBUG
AlbaranClienteView *bud = NULL;
BlDbRecordSet *cur = NULL;
try {
QString SQLQuery = "SELECT * FROM albaran WHERE refalbaran = '" + dbValue ( "reffactura" ) + "'";
cur = mainCompany() ->loadQuery ( SQLQuery );
if ( !cur->eof() ) {
while ( !cur->eof() ) {
/// Como estamos en un plugin buscamos nuevas formas de creacion de objetos.
int resur = g_plugins->run ( "SNewAlbaranClienteView", mainCompany() );
if ( !resur ) {
blMsgInfo ( _ ( "No se pudo crear instancia de albaran" ) );
return;
} // end if
bud = ( AlbaranClienteView * ) g_plugParams;
mainCompany() ->m_pWorkspace->addSubWindow ( bud );
bud->load ( cur->value( "idalbaran" ) );
bud->show();
cur->nextRecord();
} // end while
} else {
blMsgInfo ( _ ( "No hay albaranes con esta referencia" ), this );
} // end if
delete cur;
} catch ( ... ) {
blMsgInfo ( _ ( "Error inesperado" ), this );
if ( cur ) delete cur;
if ( bud ) delete bud;
} // end try
}
示例3: QDialog
Trabajadores::Trabajadores ( BlMainCompany *emp, QWidget *parent, bool deleteOnClose ) : QDialog ( parent ), BlMainCompanyPointer ( emp )
{
setupUi ( this );
connect (this, SIGNAL(rejected()), this, SLOT(closeDialog()) );
mui_password->setFocus(Qt::OtherFocusReason);
installEventFilter(this);
m_validUser = false;
m_deleteOnClose = deleteOnClose;
BlDbRecordSet *cur = mainCompany() ->loadQuery ( "SELECT * FROM trabajador" );
while ( !cur->eof() ) {
QPushButton * toolbutton = new QPushButton ( mui_frame );
toolbutton->setText ( cur->value( "nomtrabajador" ) + " " + cur->value( "apellidostrabajador" ) );
toolbutton->setMaximumHeight(200);
QVBoxLayout *m_hboxLayout1 = mui_frame->findChild<QVBoxLayout *> ( "hboxLayout1" );
if ( !m_hboxLayout1 ) {
m_hboxLayout1 = new QVBoxLayout ( mui_frame );
m_hboxLayout1->setSpacing ( 0 );
m_hboxLayout1->setMargin ( 0 );
m_hboxLayout1->setObjectName ( QString::fromUtf8 ( "hboxLayout1" ) );
} // end if
m_hboxLayout1->addWidget ( toolbutton );
connect ( toolbutton, SIGNAL ( clicked() ), this, SLOT ( trabajadorClicked() ) );
cur->nextRecord();
} // end while
delete cur;
}
示例4: BcForm
/**
\param emp
\param parent
**/
BalanceView::BalanceView ( BcCompany *emp, QWidget *parent, int )
: BcForm ( emp, parent )
{
BL_FUNC_DEBUG
setupUi ( this );
setAttribute(Qt::WA_DeleteOnClose);
setTitleName ( _ ( "Balance" ) );
/// Establezco cual es la tabla en la que basarse para el sistema de permisos.
setDbTableName ( "asiento" );
/// Para imprimir usaremos la plantilla balance
setTemplateName("balance");
mui_cuentaInicial->setMainCompany ( emp );
/// Arreglamos la cuenta.
mui_cuentaInicial->setLabel ( _ ( "Cuenta inicial:" ) );
mui_cuentaInicial->setTableName ( "cuenta" );
mui_cuentaInicial->setFieldId("idcuenta");
mui_cuentaInicial->m_valores["descripcion"] = "";
mui_cuentaInicial->m_valores["codigo"] = "";
mui_cuentaInicial->hideLabel();
mui_cuentaFinal->setMainCompany ( emp );
/// Arreglamos la cuenta.
mui_cuentaFinal->setLabel ( _ ( "Cuenta final:" ) );
mui_cuentaFinal->setTableName ( "cuenta" );
mui_cuentaFinal->setFieldId("idcuenta");
mui_cuentaFinal->m_valores["descripcion"] = "";
mui_cuentaFinal->m_valores["codigo"] = "";
mui_cuentaFinal->hideLabel();
QString query = "SELECT DISTINCT length(codigo) AS orden FROM cuenta ORDER BY orden DESC";
BlDbRecordSet *niveles = NULL;
/// Primero, averiguaremos la cantidad de ramas iniciales que nacen de la raíz
/// (tantas como número de cuentas de nivel 2) y las vamos creando.
niveles = mainCompany() ->loadQuery ( query );
while ( !niveles->eof() ) {
mui_nivel->insertItem ( 0, niveles->value("orden") );
niveles->nextRecord();
} // end while
delete niveles;
/// Iniciamos los componentes de la fecha para que al principio aparezcan
/// como el año inicial.
QString cadena;
cadena.sprintf ( "%2.2d/%2.2d/%4.4d", 1, 1, QDate::currentDate().year() );
mui_fechaInicial->setText ( cadena );
cadena.sprintf ( "%2.2d/%2.2d/%4.4d", 31, 12, QDate::currentDate().year() );
mui_fechaFinal->setText ( cadena );
mainCompany() ->insertWindow ( windowTitle(), this );
/// Llamamos a los scripts
blScript(this);
}
示例5: click
void TicketQToolButton::click()
{
BL_FUNC_DEBUG
QString txt = "";
/// Copiamos el archivo.
QString archivo = g_confpr->value( CONF_DIR_OPENREPORTS ) + "etiquetas.rml";
QString archivod = g_confpr->value( CONF_DIR_USER ) + "etiquetas.rml";
blCopyFile(archivo,archivod);
BlFile file;
file.setFileName ( archivod );
file.open ( QIODevice::ReadOnly );
QTextStream stream ( &file );
QString buff = stream.readAll();
file.close();
QString fitxersortidatxt = "";
/// Hacemos el texto de las etiquetas.
m_companyact = m_albaranProveedorView->mainCompany();
QString query = "SELECT * , ceil(cantlalbaranp) AS cantidad FROM lalbaranp NATURAL LEFT JOIN articulo WHERE idalbaranp = " + m_albaranProveedorView->dbValue ( "idalbaranp" );
BlDbRecordSet *cur = m_companyact->loadQuery ( query );
while ( !cur->eof() ) {
int i = 0;
while ( i < cur->value( "cantidad" ).toInt() ) {
fitxersortidatxt += "<blockTable><tr><td>";
fitxersortidatxt += "<para><font face=\"Helvetica\" size=\"4\">" + cur->value( "nomarticulo" ) + "</font></para>\n";
fitxersortidatxt += "<barCode code=\"code128\" height=\"0.60cm\">" + cur->value( "codigocompletoarticulo" ) + "</barCode>\n";
fitxersortidatxt += "<para><font face=\"Helvetica\" size=\"4\">" + cur->value( "codigocompletoarticulo" ) + " - (" + m_albaranProveedorView->dbValue ( "fechaalbaranp" ).left ( 10 ) + ")</font></para>\n";
// if (cur->numcampo("lotelalbaranp") != -1)
// fitxersortidatxt += "<para><font face=\"Helvetica\" size=\"4\"> Lote: " + cur->value("lotelalbaranp") + "</font></para>\n";
fitxersortidatxt += "</td></tr></blockTable>";
fitxersortidatxt += "<spacer length=\"0.5cm\"/>\n";
i++;
} // end while
cur->nextRecord();
} // end while
delete cur;
buff.replace ( "[story]", fitxersortidatxt );
if ( file.open ( QIODevice::WriteOnly ) ) {
QTextStream stream ( &file );
stream << buff;
file.close();
} // end if
blCreateAndLoadPDF ( "etiquetas" );
}
示例6: BfBuscarReferencia_on_mui_abrirtodo_clicked_Post
int BfBuscarReferencia_on_mui_abrirtodo_clicked_Post ( BfBuscarReferencia *ref )
{
QString SQLQuery = "SELECT * FROM facturap WHERE reffacturap = '" + ref->mui_referencia->text() + "'";
BlDbRecordSet *cur = ref->mainCompany() ->loadQuery ( SQLQuery );
while ( !cur->eof() ) {
FacturaProveedorView * bud = new FacturaProveedorView ( ( BfCompany * ) ref->mainCompany(), NULL );
ref->mainCompany() ->m_pWorkspace->addSubWindow ( bud );
bud->load ( cur->value( "idfacturap" ) );
bud->show();
cur->nextRecord();
} // end while
delete cur;
return 0;
}
示例7: on_mui_codigoarticulo_returnPressed
void Compra::on_mui_codigoarticulo_returnPressed()
{
QString texto = "<TABLE width=\"100%\">";
QString tventas = "0";
QString tcompras = "0";
QString bgcolor = "#FFFFFF";
texto += "<TR bgcolor=\"#BBBBBB\">";
texto += "<TD width=\"100\">Color</TD>";
texto += "<TD width=\"100\">Talla</TD>";
texto += "<TD width=\"100\">Comprados</TD>";
texto += "<TD width=\"100\">Vendidos</TD>";
texto += "<TD width=\"100\">Stock</TD>";
texto += "</TR>";
QString query = "SELECT * FROM articulo LEFT JOIN tc_articulo_alias AS t3 ON articulo.idarticulo = t3.idarticulo LEFT JOIN tc_talla AS t1 ON t3.idtc_talla = t1.idtc_talla LEFT JOIN tc_color AS t2 ON t3.idtc_color = t2.idtc_color WHERE t3.aliastc_articulo_tallacolor = '" + mui_codigoarticulo->text() + "' OR articulo.codigocompletoarticulo = '" + mui_codigoarticulo->text() + "' ORDER BY nomtc_color, nomtc_talla";
BlDbRecordSet *cur = mainCompany()->loadQuery ( query );
while ( ! cur->eof() ) {
QString query1 = "SELECT SUM(cantlalbaranp) AS suma FROM lalbaranp WHERE idarticulo=" + cur->value( "idarticulo" ) + " AND idtc_talla=" + cur->value( "idtc_talla" ) + " AND idtc_color=" + cur->value( "idtc_color" );
QString query2 = "SELECT SUM(cantlalbaran) AS suma FROM lalbaran WHERE idarticulo=" + cur->value( "idarticulo" ) + " AND idtc_talla=" + cur->value( "idtc_talla" ) + " AND idtc_color=" + cur->value( "idtc_color" );
BlDbRecordSet *cur1 = mainCompany()->loadQuery ( query1 );
BlDbRecordSet *cur2 = mainCompany()->loadQuery ( query2 );
if ( !cur2->eof() ) {
tventas = cur2->value( "suma" );
} // end if
if ( !cur1->eof() ) {
tcompras = cur1->value( "suma" );
} // end if
if ( !cur1->eof() ) {
texto += "<TR bgcolor=\"" + bgcolor + "\">";
texto += "<TD>" + cur->value( "nomtc_color" ) + "</TD>";
texto += "<TD>" + cur->value( "nomtc_talla" ) + "</TD>";
texto += "<TD align=\"right\">" + tcompras + "</TD>";
texto += "<TD align=\"right\">" + tventas + "</TD>";
texto += "<TD align=\"right\">" + QString::number ( tcompras.toFloat() - tventas.toFloat() ) + "</TD>";
texto += "</TR>";
} // end if
delete cur1;
delete cur2;
cur->nextRecord();
if ( bgcolor == "#FFFFFF" ) {
bgcolor = "#CCCCFF";
} else {
bgcolor = "#FFFFFF";
} // end if
} // end while
delete cur;
mui_subform->setText ( texto );
}
示例8: BcAsientoForm_guardaAsiento1_post
/**
\param as
\return
**/
int BcAsientoForm_guardaAsiento1_post ( BcAsientoForm *asientoForm )
{
BL_FUNC_DEBUG
BcCompany *companyact = asientoForm->company();
QString cuentas = "";
QString query = "SELECT valor FROM configuracion WHERE nombre = 'RegistroEmitida' OR nombre = 'RegistroSoportada'";
BlDbRecordSet *curvalor = companyact->loadQuery ( query );
while ( !curvalor->eof() ) {
/// Preparamos una expresión regular para usar en la consulta.
cuentas += curvalor->value( "valor" ) + "%|";
curvalor->nextRecord();
} // end while
delete curvalor;
/// Le quitamos el último '|' que nos sobra.
cuentas.truncate ( cuentas.length() - 1 );
/// Recorremos la tabla en busca de entradas de factura no introducidas y las
/// preguntamos antes de cerrar nada.
QString SQLQuery = "SELECT bcontrapartidaborr(idborrador) AS contra FROM borrador LEFT JOIN cuenta ON borrador.idcuenta = cuenta.idcuenta WHERE idasiento = " + asientoForm->dbValue ( "idasiento" ) + " AND codigo SIMILAR TO '" + companyact->sanearCadena ( cuentas.toAscii().constData() ) + "' GROUP BY contra";
BlDbRecordSet *cursborr = companyact->loadQuery ( SQLQuery );
while ( !cursborr->eof() ) {
int idborrador = cursborr->value( "contra" ).toInt();
RegistroIvaView *reg = new RegistroIvaView ( companyact, 0 );
reg->inicializa1 ( idborrador );
companyact->pWorkspace() ->addSubWindow ( reg );
reg->show();
cursborr->nextRecord();
} // end while
delete cursborr;
return 0;
}
示例9: on_mui_verpedidosproveedor_clicked
void AlbaranProveedorView::on_mui_verpedidosproveedor_clicked()
{
BL_FUNC_DEBUG
QString query = "SELECT * FROM pedidoproveedor WHERE refpedidoproveedor = '" + dbValue ( "refalbaranp" ) + "'";
BlDbRecordSet *cur = mainCompany() ->loadQuery ( query );
while ( !cur->eof() ) {
/// Como estamos en un plugin buscamos nuevas formas de creacion de objetos.
int resur = g_plugins->run ( "SNewPedidoProveedorView", ( BfCompany * ) mainCompany() );
if ( !resur ) {
blMsgInfo (_( "no se pudo crear instancia de pedido proveedor" ));
return;
} // end if
PedidoProveedorView * pedpro = ( PedidoProveedorView * ) g_plugParams;
pedpro->load ( cur->value( "idpedidoproveedor" ) );
mainCompany() ->m_pWorkspace->addSubWindow ( pedpro );
pedpro->show();
cur->nextRecord();
} // end while
delete cur;
}
示例10: QDialog
/**
\param parent
**/
BcModelo300Imprimir2PS::BcModelo300Imprimir2PS ( QWidget *parent ) : QDialog ( parent )
{
BL_FUNC_DEBUG
setupUi ( this );
QString query = "SELECT descripcion, bancoent_cuenta, codigo FROM cuenta WHERE codigo LIKE '572%%' AND codigo > 572";
BlPostgreSqlClient *metabase = new BlPostgreSqlClient();
metabase->inicializa ( "bulmages" ); ///[TODO] CAMBIAR!!!!
metabase->begin();
fprintf ( stderr, "%s\n", query.toAscii().constData() );
BlDbRecordSet *cur = metabase->loadQuery ( query, "bancos" );
int nTuples = cur->numregistros();
nombresccc = new QString[nTuples];
numerccc = new QString[nTuples];
for ( int i = 0; i < nTuples; i++ ) {
nombresccc[i] = cur->value( "descripcion" );
nombresccc[i] += " ";
nombresccc[i] += cur->value( "codigo" );
numerccc[i] = cur->value( "bancoent_cuenta" );
// cout << nombresccc[i].toAscii().constData() << "\t" << numerccc[i].toAscii().constData() << "\n";
combocuentas->addItem ( nombresccc[i] );
cur->nextRecord();
} // end for
delete cur;
delete metabase;
if ( nTuples == 0 ) { /// Si no tenemos ninguna cuenta de banco...
sincuentasbancarias = true;
personalButton->setChecked ( true );
personalButtonPressed();
cuentaButton->setDisabled ( true );
} // end if
}
示例11: generarVencimientos
void generarVencimientos (FacturaView *art) {
BlDbRecordSet *cur1 = art->mainCompany()->loadQuery("SELECT totalfactura FROM factura WHERE idfactura = " + art->dbValue("idfactura"));
blMsgInfo( _("El total de la factura es :") + cur1->value("totalfactura"));
BlFixed contado("0.00");
BlDbRecordSet *cur = art->mainCompany()->loadQuery("SELECT * FROM vencimientocliente WHERE idcliente = " + art->dbValue("idcliente"));
while (!cur->eof()) {
QString query = "SELECT ffactura + " + cur->value("diasvencimientocliente") + " AS fechav, totalfactura / 100 * "+cur->value("porcentajevencimientocliente")+" AS porcent FROM factura WHERE idfactura = " + art->dbValue("idfactura");
if (cur->isLastRecord()) {
query = "SELECT ffactura + " + cur->value("diasvencimientocliente") + " AS fechav, totalfactura - "+ contado.toQString('.') +" AS porcent FROM factura WHERE idfactura = " + art->dbValue("idfactura");
} //end if
BlDbRecordSet *cur2 = art->mainCompany()->loadQuery(query);
/// REALIZAMOS EL QUERY
query = "INSERT INTO vencimientoc (idfactura, fechavencimientoc, cantvencimientoc, idforma_pago, refvencimientoc, idcliente) VALUES ("+art->dbValue("idfactura")+",'"+cur2->value("fechav")+"',"+cur2->value("porcent")+","+cur->value("idforma_pago")+",'"+art->dbValue("reffactura")+"',"+art->dbValue("idcliente")+")";
contado = contado + BlFixed(cur2->value("porcent"));
art->mainCompany()->runQuery(query);
delete cur2;
cur->nextRecord();
} // end while
delete cur;
delete cur1;
}
示例12: BfForm
/**
\param emp
**/
BalancePrintView::BalancePrintView ( BfCompany *emp, QWidget *parent, int ) : BfForm(emp, parent)
// : QDialog ( 0 ), BlMainCompanyPointer ( emp )
{
BL_FUNC_DEBUG
setupUi ( this );
mui_cuentaInicial->setMainCompany ( emp );
mui_cuentaInicial->setLabel ( _ ( "Cuenta inicial:" ) );
mui_cuentaInicial->setTableName ( "cuenta" );
mui_cuentaInicial->setFieldId("idcuenta");
mui_cuentaInicial->m_valores["descripcion"] = "";
mui_cuentaInicial->m_valores["codigo"] = "";
mui_cuentaInicial->hideLabel();
mui_cuentaFinal->setMainCompany ( emp );
mui_cuentaFinal->setLabel ( _ ( "Cuenta final:" ) );
mui_cuentaFinal->setTableName ( "cuenta" );
mui_cuentaFinal->setFieldId("idcuenta");
mui_cuentaFinal->m_valores["descripcion"] = "";
mui_cuentaFinal->m_valores["codigo"] = "";
mui_cuentaFinal->hideLabel();
/// Buscamos los diferentes niveles que existen según existan en la tabla
/// de cuentas.
mainCompany() ->begin();
QString query = "SELECT nivel(codigo) FROM cuenta GROUP BY nivel ORDER BY nivel";
BlDbRecordSet *niveles = mainCompany() ->loadQuery ( query, "Niveles" );
int i = 0;
while ( !niveles->eof() ) {
/// Inicializamos la tabla de nivel.
mui_nivel->insertItem ( i, niveles->value( "nivel" ) );
niveles->nextRecord();
i++;
} // end while
mainCompany() ->commit();
delete niveles;
}
示例13: SintetizarRamas
/**
\param cuentas
\param ramas
**/
void BcPlanContableArbol::SintetizarRamas ( BlDbRecordSet **cuentas, tiporama **ramas )
{
BL_FUNC_DEBUG
tiporama *guia, *rama;
tipohoja *hoja;
int nivel;
BlDbRecordSet *ptrcuentas = *cuentas;
nivel = atoi ( ptrcuentas->value( "nivel" ).toAscii().constData() );
ptrcuentas->nextRecord();
guia = NULL;
while ( !ptrcuentas->eof() && ( atoi ( ptrcuentas->value( "nivel" ).toAscii().constData() ) > nivel ) ) {
/// Reservamos un huequecito de memoria para almacenar los datos de la rama.
rama = new tiporama;
if ( !guia ) {
*ramas = guia = rama;
} else {
guia->sgte = rama;
guia = guia->sgte;
} // end if
hoja = new tipohoja; /// Idem para una hojita.
hoja->idcuenta = atoi ( ptrcuentas->value( "idcuenta" ).toAscii().constData() );
hoja->codigo = ptrcuentas->value( "codigo" );
hoja->descripcion = ptrcuentas->value( "descripcion" );
hoja->saldoant = hoja->debe = hoja->haber = hoja->saldo = hoja->debeej = hoja->haberej = hoja->saldoej = BlFixed ( "0.00" );
hoja->numapuntes = 0;
hoja->ramas = NULL;
guia->hoja = hoja;
guia->sgte = NULL;
/// Pero aún puede haber más ramas que crezcan, en tal caso habrá
/// que sintetizarlas
SintetizarRamas ( &ptrcuentas, & ( hoja->ramas ) );
} // end while
}
示例14: on_mui_aceptar_clicked
/**
\return
**/
void BcCuentasAnualesImprimirView::on_mui_aceptar_clicked()
{
BL_FUNC_DEBUG
QString finicial = mui_fechainicial->text();
QString ffinal = mui_fechafinal->text();
QString finicial1 = mui_fechainicial1->text();
QString ffinal1 = mui_fechafinal1->text();
if ( finicial1 == "" ) {
finicial1 = finicial;
} // end if
if ( ffinal1 == "" ) {
ffinal1 = ffinal;
}
if ( finicial == "" || ffinal == "" ) {
return;
} // end if
/** Version sin ARBOL
/// Ponemos todos los valores de las cuentas. Hacemos la carga.
QDomNodeList lcuentas = m_doc.elementsByTagName("CUENTA");
for (int i = 0; i < lcuentas.count(); i++) {
QDomNode cuenta = lcuentas.item(i);
QDomElement e1 = cuenta.toElement(); /// try to convert the node to an element.
if( !e1.isNull() ) { /// the node was really an element.
/// Este es el cálculo de los saldos para la cuenta.
QString query = "SELECT saldototal('" + e1.text() + "','" + finicial + "','" + ffinal + "') AS valoract, saldototal('" + e1.text() + "','" + finicial1 + "','" + ffinal1 + "') AS valorant";
BlDbRecordSet *cur = mainCompany()->loadQuery(query);
if (!cur->eof()) {
QString valoract = cur->value("valoract");
QString valorant = cur->value("valorant");
QDomNode c = e1.parentNode();
agregaValores(c, valoract, valorant);
} // end if
delete cur;
} // end if
} // end for
**/
/** Version con ARBOL: mas rollo de codigo pero muuuucho mas eficiente **/
/// Vamos a crear un arbol en la memoria dinamica con
/// los distintos niveles de cuentas.
/// Primero, averiguaremos la cantidad de ramas iniciales (tantos como
/// numero de cuentas de nivel 2) y las vamos creando.
mainCompany() ->begin();
QString query = "SELECT *, nivel(codigo) AS nivel FROM cuenta ORDER BY codigo";
BlDbRecordSet *ramas;
ramas = mainCompany() ->loadQuery ( query, "Ramas" );
BcPlanContableArbol *arbolP1, *arbolP2; /// un arbol por cada periodo
arbolP1 = new BcPlanContableArbol;
arbolP2 = new BcPlanContableArbol;
while ( !ramas->eof() ) {
if ( atoi ( ramas->value( "nivel" ).toLatin1().constData() ) == 2 ) { /// Cuenta raíz.
arbolP1->nuevaRama ( ramas );
arbolP2->nuevaRama ( ramas );
} // end if
ramas->nextRecord();
} // end while
arbolP1->inicializa ( ramas );
arbolP2->inicializa ( ramas );
delete ramas;
mainCompany() ->commit();
QRegExp rx ( "^.*perdidas y ganancias.*$" ); /// filtro para saber si es el de perdidas y ganancias
rx.setCaseSensitivity ( Qt::CaseInsensitive );
QString asiento;
/// Discernimos entre Balances y Cuenta de Resultados
if ( rx.exactMatch ( m_doc.elementsByTagName ( "TITULO" ).item ( 0 ).toElement().text() ) )
/// Hay que excluir el asiento de Regularizacion para el calculo de beneficios o perdidas si existe ya en el periodo
asiento = "%Asiento de Regularizaci%";
else
asiento = "%Asiento de Cierre%"; /// No hay que tener en cuenta el asiento de cierre para obtener los saldos
/// OJO!! Antes de nada, hay que calcular el asiento de REGULARIZACION que nos guarda el resultado en la 129
BcAsientoView *asientoReg;
int resur = g_plugins->run ( "SNewBcAsientoView", (BcCompany *) mainCompany() );
if ( ! resur) {
blMsgInfo("No se pudo crear instancia de asientos");
return;
} // end if
asientoReg = (BcAsientoView *) g_plugParams;
// ( ( BcCompany * ) mainCompany() ) ->regularizaempresa ( finicial, ffinal );
asientoReg ->asientoRegularizacion ( finicial, ffinal );
/// Ahora, recopilamos todos los apuntes agrupados por cuenta para poder
/// establecer así los valores de cada cuenta para el periodo 1.
mainCompany() ->begin();
query = "SELECT cuenta.idcuenta, numapuntes, cuenta.codigo, saldoant, debe, haber, saldo, debeej, haberej, saldoej FROM (SELECT idcuenta, codigo FROM cuenta) AS cuenta NATURAL JOIN (SELECT idcuenta, count(idcuenta) AS numapuntes,sum(debe) AS debeej, sum(haber) AS haberej, (sum(debe)-sum(haber)) AS saldoej FROM apunte WHERE EXTRACT(year FROM fecha) = EXTRACT(year FROM timestamp '" + finicial + "') GROUP BY idcuenta) AS ejercicio LEFT OUTER JOIN (SELECT idcuenta,sum(debe) AS debe, sum(haber) AS haber, (sum(debe)-sum(haber)) AS saldo FROM apunte WHERE fecha >= '" + finicial + "' AND fecha <= '" + ffinal + "' AND conceptocontable NOT SIMILAR TO '" + asiento + "' GROUP BY idcuenta) AS periodo ON periodo.idcuenta=ejercicio.idcuenta LEFT OUTER JOIN (SELECT idcuenta, (sum(debe)-sum(haber)) AS saldoant FROM apunte WHERE fecha < '" + finicial + "' GROUP BY idcuenta) AS anterior ON cuenta.idcuenta=anterior.idcuenta ORDER BY codigo";
BlDbRecordSet *hojas;
hojas = mainCompany() ->loadQuery ( query, "Periodo1" );
/// Para cada cuenta con sus saldos calculados hay que actualizar hojas del árbol.
while ( !hojas->eof() ) {
//.........这里部分代码省略.........
示例15: on_mui_verpedidocliente_clicked
void AlbaranClienteView::on_mui_verpedidocliente_clicked()
{
BL_FUNC_DEBUG
PedidoClienteView *bud = NULL;
BlDbRecordSet *cur = NULL;
try {
/// Comprueba si disponemos de los datos mínimos. Si no se hace esta
/// comprobación la consulta a la base de datos será erronea y al hacer
/// el siguiente cur->eof() el programa fallará.
/// Comprobamos que existe el pedido con esos datos, y en caso afirmativo lo mostramos.
QString SQLQuery = "";
if ( dbValue ( "refalbaran" ).isEmpty() || dbValue ( "idcliente" ).isEmpty() ) {
/// El presupuesto no se ha guardado y no se dispone en la base de datos
/// de estos datos. Se utilizan en su lugar los del formulario.
/// Verifica que exista, por lo menos, un cliente seleccionado.
if ( mui_idcliente->id().isEmpty() ) {
blMsgInfo ( _ ( "Tiene que seleccionar un cliente" ), this );
return;
} else {
SQLQuery = "SELECT * FROM pedidocliente WHERE refpedidocliente = '" + mui_refalbaran->text() + "' AND idcliente = " + mui_idcliente->id();
} // end if
} else {
SQLQuery = "SELECT * FROM pedidocliente WHERE refpedidocliente = '" + dbValue ( "refalbaran" ) + "' AND idcliente = " + dbValue ( "idcliente" );
} // end if
cur = mainCompany() ->loadQuery ( SQLQuery );
if ( !cur->eof() ) {
while ( !cur->eof() ) {
/// Como estamos en un plugin buscamos nuevas formas de creacion de objetos.
int resur = g_plugins->run ( "SNewPedidoClienteView", ( BfCompany * ) mainCompany() );
if ( !resur ) {
blMsgInfo (_( "no se pudo crear instancia de pedido cliente" ));
return;
} // end if
bud = ( PedidoClienteView * ) g_plugParams;
mainCompany() ->m_pWorkspace->addSubWindow ( bud );
bud->load ( cur->value( "idpedidocliente" ) );
bud->show();
cur->nextRecord();
} // end while
} else {
blMsgInfo ( _ ( "No hay pedidos con la misma referencia." ), this );
BlDebug::blDebug ( Q_FUNC_INFO, 0, _("No hay pedidos con esta referencia.") );
} // end if
delete cur;
} catch ( ... ) {
blMsgInfo ( _ ( "Error inesperado" ), this );
if ( cur ) delete cur;
if ( bud ) delete bud;
} // end try
}