void ui_module_articulos::on_pushButton_eliminar_2_clicked()
{
   QModelIndexList  list = ui->tableView_articulos->selectionModel()->selectedRows();
    int filas = list.size();
   if(filas==0)
   {
       QMessageBox::information(this,"Error","Por favor, seleccione una fila para eliminar");
   }
   else
   {
       int rpta = QMessageBox::question(this,"ConfirmaciĆ³n","Esta seguro de eliminar "+QString::number(filas)+" articulos?","Aceptar","Cancelar");

       if(rpta==0)
       {
           bool ok = true;
           for(int i=0;i<filas;i++)
           {
               QSqlRelationalTableModel * model = (QSqlRelationalTableModel*)ui->tableView_articulos->model();
               QSqlRecord record = model->record(list.at(i).row());

               object_e_articulo obj;
               obj.mf_load(record.value(COD).toString());

               obj.mf_set_habilitado(C_NO_HABILITADO);

               //Si ocurre un error
              if (!obj.mf_update())
              {
                ok = false;
              }
           }


           if(!ok)
           {
               //Mostramos mensaje de error
               QMessageBox::information(this,"Error",C_ERROR_ELIMINAR_ARTICULO)        ;


           }
           else
           {
               //No ocurre ningun error
              update_table_articulos();
           }



       }

   }

}
void ui_module_articulos::on_pushButton_editar_2_clicked()
{

    QModelIndexList  list = ui->tableView_articulos->selectionModel()->selectedRows();
    int filas = list.size();


    if(filas>1)
    {
        QMessageBox::information(this,"Error","Solo se puede editar una fila a la vez");
    }
    else
    {
        if(filas==0)
        {
            QMessageBox::information(this,"Error","Por favor, seleccione una fila para editar");
        }
        else
        {
            object_e_articulo  articulo;

            QSqlRelationalTableModel * model = (QSqlRelationalTableModel*)ui->tableView_articulos->model();
            QSqlRecord record = model->record(list.at(0).row());



            articulo.mf_set_pk_articulo(record.value(COD).toString());
            articulo.mf_set_descripcion(record.value(DESCRIPCION).toString());
            articulo.mf_set_fk_marca(record.value(MARCA).toString());
            articulo.mf_set_fk_grupo(record.value(GRUPO).toString());
            articulo.mf_set_fk_medida(record.value(MEDIDA).toString());
            articulo.mf_set_precio_lista(record.value(PRECIO).toString());
            articulo.mf_set_stock(record.value(STOCK).toString());


            ui_edit_articulo  form_edit_articulos(&articulo) ;
            form_edit_articulos.exec();


            //Actualizamos la tabla de articulos
            update_table_articulos();
        }
    }

}
Example #3
0
void XTreeView::setRelations()
{
  if (DEBUG) qDebug("setRelations() entered with table  %s.%s",
                    qPrintable(_schemaName), qPrintable(_tableName));
  QSqlRelationalTableModel *model = qobject_cast<QSqlRelationalTableModel*>(&_model);
  if (! model)
    return;

  // _fkeymap is for cases where there's strict adherence to naming conventions:
  //    othertable[_qualifier]_basetable_id -> basetable_id
  // special cases are handled individually below
  // TODO: make _fkeymap static so it can be shared
  if (_fkeymap.size() == 0)
  {
    _fkeymap.insert("acalitem",    "acalitem_name");
    _fkeymap.insert("accnt",       "accnt_number");
    _fkeymap.insert("addr",        "addr_number");
    _fkeymap.insert("alarm",       "alarm_number");
    _fkeymap.insert("bankaccnt",   "bankaccnt_name");
    _fkeymap.insert("bankadjtype", "bankadjtype_name");
    _fkeymap.insert("budghead",    "budghead_name");
    _fkeymap.insert("calhead",     "calhead_name");
    _fkeymap.insert("carrier",     "carrier_name");
    _fkeymap.insert("char",        "char_name");
    _fkeymap.insert("checkhead",   "checkhead_number");
    _fkeymap.insert("classcode",   "classcode_code");
    _fkeymap.insert("cmd",         "cmd_title");
    _fkeymap.insert("cmdarg",      "cmdarg_arg");
    _fkeymap.insert("cmhead",      "cmhead_number");
    _fkeymap.insert("cmnttype",    "cmnttype_name");
    _fkeymap.insert("cntct",       "cntct_number");
    _fkeymap.insert("cntslip",     "cntslip_number");
    _fkeymap.insert("cohead",      "cohead_number");
    _fkeymap.insert("company",     "company_number");
    _fkeymap.insert("costcat",     "costcat_code");
    _fkeymap.insert("costelem",    "costelem_type");
    _fkeymap.insert("country",     "country_abbr");
    _fkeymap.insert("crmacct",     "crmacct_number");
    _fkeymap.insert("curr",        "curr_symbol");
    _fkeymap.insert("curr_symbol", "curr_abbr");
    _fkeymap.insert("custgrp",     "custgrp_name");
    _fkeymap.insert("custinfo",    "cust_number");
    _fkeymap.insert("custtype",    "custtype_code");
    _fkeymap.insert("dept",        "dept_number");
    _fkeymap.insert("destination", "destination_name");
    _fkeymap.insert("ediform",     "ediform_file");
    _fkeymap.insert("ediprofile",  "ediprofile_name");
    _fkeymap.insert("emp",         "emp_code");
    _fkeymap.insert("empgrp",      "empgrp_name");
    _fkeymap.insert("evnttype",    "evnttype_name");
    _fkeymap.insert("expcat",      "expcat_code");
    _fkeymap.insert("flhead",      "flhead_name");
    _fkeymap.insert("form",        "form_name");
    _fkeymap.insert("freightclass","freightclass_code");
    _fkeymap.insert("grp",         "grp_name");
    _fkeymap.insert("hnfc",        "hnfc_code");
    _fkeymap.insert("image",       "image_name");
    _fkeymap.insert("incdt",       "incdt_number");
    _fkeymap.insert("incdtcat",    "incdtcat_name");
    _fkeymap.insert("incdtpriority",  "incdtpriority_name");
    _fkeymap.insert("incdtresolution","incdtresolution_name");
    _fkeymap.insert("incdtseverity",  "incdtseverity_name");
    _fkeymap.insert("invchead",    "invchead_invcnumber");
    _fkeymap.insert("ipshead",     "ipshead_name");
    _fkeymap.insert("item",        "item_number");
    _fkeymap.insert("itemalias",   "itemalias_number");
    _fkeymap.insert("itemgrp",     "itemgrp_name");
    _fkeymap.insert("jrnluse",     "jrnluse_number");
    _fkeymap.insert("labelform",   "labelform_name");
    _fkeymap.insert("lang",        "lang_name");
    _fkeymap.insert("lbrrate",     "lbrrate_code");
    _fkeymap.insert("locale",      "locale_code");
    _fkeymap.insert("location",    "location_name");
    _fkeymap.insert("ls",          "ls_number");
    _fkeymap.insert("lsreg",       "lsreg_number");
    _fkeymap.insert("metric",      "metric_name");
    _fkeymap.insert("metricenc",   "metricenc_name");
    _fkeymap.insert("ophead",      "ophead_name");
    _fkeymap.insert("opsource",    "opsource_name");
    _fkeymap.insert("opstage",     "opstage_name");
    _fkeymap.insert("optype",      "optype_name");
    _fkeymap.insert("orderseq",    "orderseq_name");
    _fkeymap.insert("period",      "period_name");
    _fkeymap.insert("pkghead",     "pkghead_name");
    _fkeymap.insert("plancode",    "plancode_code");
    _fkeymap.insert("planord",     "planord_number");
    _fkeymap.insert("pohead",      "pohead_number");
    _fkeymap.insert("potype",      "potype_name");
    _fkeymap.insert("pr",          "pr_number");
    _fkeymap.insert("prftcntr",    "prftcntr_number");
    _fkeymap.insert("prj",         "prj_number");
    _fkeymap.insert("prjtask",     "prjtask_number");
    _fkeymap.insert("prodcat",     "prodcat_code");
    _fkeymap.insert("prospect",    "prospect_number");
    _fkeymap.insert("pschhead",    "pschhead_number");
    _fkeymap.insert("quhead",      "quhead_number");
    _fkeymap.insert("rahead",      "rahead_number");
    _fkeymap.insert("regtype",     "regtype_code");
    _fkeymap.insert("rev",         "rev_number");
    _fkeymap.insert("rjctcode",    "rjctcode_code");
    _fkeymap.insert("rsncode",     "rsncode_code");
    _fkeymap.insert("sale",        "sale_name");
    _fkeymap.insert("salehead",    "salehead_number");
    _fkeymap.insert("salescat",    "salescat_name");
    _fkeymap.insert("salesrep",    "salesrep_number");
    _fkeymap.insert("script",      "script_name");
    _fkeymap.insert("shift",       "shift_number");
    _fkeymap.insert("shipchrg",    "shipchrg_name");
    _fkeymap.insert("shipform",    "shipform_name");
    _fkeymap.insert("shiphead",    "shiphead_number");
    _fkeymap.insert("shiptoinfo",  "shipto_name");
    _fkeymap.insert("shipvia",     "shipvia_code");
    _fkeymap.insert("shipzone",    "shipzone_name");
    _fkeymap.insert("sitetype",    "sitetype_name");
    _fkeymap.insert("stdjrnl",     "stdjrnl_name");
    _fkeymap.insert("stdjrnlgrp",  "stdjrnlgrp_name");
    _fkeymap.insert("stdopn",      "stdopn_number");
    _fkeymap.insert("subaccnt",    "subaccnt_number");
    _fkeymap.insert("subaccnttype","subaccnttype_code");
    _fkeymap.insert("tax",         "tax_code");
    _fkeymap.insert("taxauth",     "taxauth_code");
    _fkeymap.insert("taxreg",      "taxreg_number");
    _fkeymap.insert("taxtype",     "taxtype_name");
    _fkeymap.insert("terminal",    "terminal_number");
    _fkeymap.insert("terms",       "terms_code");
    _fkeymap.insert("todoitem",    "todoitem_name");
    _fkeymap.insert("tohead",      "tohead_number");
    _fkeymap.insert("uiform",      "uiform_name");
    _fkeymap.insert("uom",         "uom_name");
    _fkeymap.insert("uomtype",     "uomtype_name");
    _fkeymap.insert("url",         "url_url");
    _fkeymap.insert("usr",         "usr_username");
    _fkeymap.insert("vendaddrinfo","vendaddr_code");
    _fkeymap.insert("vendinfo",    "vend_number");
    _fkeymap.insert("vendtype",    "vendtype_code");
    _fkeymap.insert("vohead",      "vohead_number");
    _fkeymap.insert("whsezone",    "whsezone_name");
    _fkeymap.insert("whsinfo",     "warehous_code");
    _fkeymap.insert("wo",          "wo_number");
    _fkeymap.insert("wrkcnt",      "wrkcnt_code");
    _fkeymap.insert("xsltmap",     "xsltmap_name");
    _fkeymap.insert("yearperiod",  "yearperiod_start");
  }

  for (int i = 0; i < model->record().count(); i++)
  {
    QString colname = model->record().field(i).name();
    if (DEBUG) qDebug("looking for fkey to %s", qPrintable(colname));

    if (colname.endsWith("curr_id"))
      model->setRelation(i, QSqlRelation("curr_symbol", "curr_id", "curr_abbr"));
    else if (colname.endsWith("cust_id"))
      model->setRelation(i, QSqlRelation("custinfo", "cust_id", "cust_number"));
    else if (colname.endsWith("shipto_id"))
      model->setRelation(i, QSqlRelation("shiptoinfo","shipto_id","shipto_name"));
    else if (colname.endsWith("vend_id"))
      model->setRelation(i, QSqlRelation("vendinfo", "vend_id", "vend_number"));
    else if (colname.endsWith("vendaddr_id"))
      model->setRelation(i, QSqlRelation("vendaddrinfo","vendaddr_id","vendaddr_code"));
    else if (colname.endsWith("warehous_id"))
      model->setRelation(i, QSqlRelation("whsinfo", "warehous_id", "warehous_code"));
    else if (colname.endsWith("_id"))
    {
      colname.replace(QRegExp(".*_([^_]+)_id$"), "\\1");

      if (DEBUG) qDebug("%s is an id", qPrintable(colname));
      if (! _fkeymap.value(colname, QString()).isEmpty())
      {
        if (DEBUG) qDebug("setting relation(%s, %s, %s)",
                          qPrintable(colname), qPrintable(colname + "_id"),
                          qPrintable(_fkeymap.value(colname)));
        model->setRelation(i, QSqlRelation(colname, colname + "_id",
                                           _fkeymap.value(colname)));
      }
    }
  }
}