void ReportSectionDetailGroup::buildXML(QDomDocument & doc, QDomElement & section) const
{
    QDomElement grp = doc.createElement("report:group");

    grp.setAttribute("report:group-column", column());
    if (pageBreak() == ReportSectionDetailGroup::BreakAfterGroupFooter) {
        grp.setAttribute("report:group-page-break", "after-footer");
    } else if (pageBreak() == ReportSectionDetailGroup::BreakBeforeGroupHeader) {
        grp.setAttribute("report:group-page-break", "before-header");
    }

    if (m_sort == Qt::AscendingOrder) {
        grp.setAttribute("report:group-sort", "ascending");
    }
    else {
        grp.setAttribute("report:group-sort", "descending");
    }

    //group head
    if (groupHeaderVisible()) {
        QDomElement gheader = doc.createElement("report:section");
        gheader.setAttribute("report:section-type", "group-header");
        groupHeader()->buildXML(doc, gheader);
        grp.appendChild(gheader);
    }
    // group foot
    if (groupFooterVisible()) {
        QDomElement gfooter = doc.createElement("report:section");
        gfooter.setAttribute("report:section-type", "group-footer");
        groupFooter()->buildXML(doc, gfooter);
        grp.appendChild(gfooter);
    }
    section.appendChild(grp);
}
Exemplo n.º 2
0
void ReportSectionDetail::buildXML(QDomDocument & doc, QDomElement & section)
{
    if (pageBreak() != ReportSectionDetail::BreakNone) {
        QDomElement spagebreak = doc.createElement("pagebreak");
        if (pageBreak() == ReportSectionDetail::BreakAtEnd)
            spagebreak.setAttribute("when", "at end");
        section.appendChild(spagebreak);
    }

    foreach(ReportSectionDetailGroup* rsdg, groupList) {
        rsdg->buildXML(doc, section);
    }
Exemplo n.º 3
0
void MeasureBase::cleanupLayoutBreaks(bool undo)
      {
      // remove unneeded layout breaks
      std::vector<Element*> toDelete;
      for (Element* e : el()) {
            if (e->isLayoutBreak()) {
                  switch (toLayoutBreak(e)->layoutBreakType()) {
                        case LayoutBreak::LINE:
                              if (!lineBreak())
                                    toDelete.push_back(e);
                              break;
                        case LayoutBreak::PAGE:
                              if (!pageBreak())
                                    toDelete.push_back(e);
                              break;
                        case LayoutBreak::SECTION:
                              if (!sectionBreak())
                                    toDelete.push_back(e);
                              break;
                        case LayoutBreak::NOBREAK:
                              if (!noBreak())
                                    toDelete.push_back(e);
                              break;
                        }
                  }
            }
      for (Element* e : toDelete) {
            if (undo)
                  score()->undoRemoveElement(e);
            else
                  _el.remove(e);
            }
      }
Exemplo n.º 4
0
bool MeasureBase::readProperties(XmlReader& e)
      {
      const QStringRef& tag(e.name());
      if (tag == "LayoutBreak") {
            LayoutBreak* lb = new LayoutBreak(score());
            lb->read(e);
            bool doAdd = true;
            switch (lb->layoutBreakType()) {
                  case LayoutBreak::LINE:
                        if (lineBreak())
                              doAdd = false;
                        break;
                  case LayoutBreak::PAGE:
                        if (pageBreak())
                              doAdd = false;
                        break;
                  case LayoutBreak::SECTION:
                        if (sectionBreak())
                              doAdd = false;
                        break;
                  case LayoutBreak::NOBREAK:
                        if (noBreak())
                              doAdd = false;
                        break;
                  }
            if (doAdd) {
                  add(lb);
                  cleanupLayoutBreaks(false);
                  }
            else
                  delete lb;
            }
      else if (tag == "StaffTypeChange") {
            StaffTypeChange* stc = new StaffTypeChange(score());
            stc->setTrack(e.track());
            stc->setParent(this);
            stc->read(e);
            add(stc);
            }
      else if (Element::readProperties(e))
            ;
      else
            return false;
      return true;
      }
Exemplo n.º 5
0
void MeasureBase::undoSetBreak(bool v, LayoutBreak::Type type)
      {
      switch (type) {
            case LayoutBreak::LINE:
                  if (lineBreak() == v)
                        return;
                  setLineBreak(v);
                  break;
            case LayoutBreak::PAGE:
                  if (pageBreak() == v)
                        return;
                  if (v && lineBreak())
                        setLineBreak(false);
                  setPageBreak(v);
                  break;
            case LayoutBreak::SECTION:
                  if (sectionBreak() == v)
                        return;
                  if (v && lineBreak())
                        setLineBreak(false);
                  setSectionBreak(v);
                  break;
            case LayoutBreak::NOBREAK:
                  if (noBreak() == v)
                        return;
                  if (v) {
                        setLineBreak(false);
                        setPageBreak(false);
                        setSectionBreak(false);
                        }
                  setNoBreak(v);
                  break;
            }

      if (v) {
            LayoutBreak* lb = new LayoutBreak(score());
            lb->setLayoutBreakType(type);
            lb->setTrack(-1);       // this are system elements
            lb->setParent(this);
            score()->undoAddElement(lb);
            }
      cleanupLayoutBreaks(true);
      }
Exemplo n.º 6
0
void ORGraphicsSectionDetail::buildXML(QDomDocument & doc, QDomElement & section)
{
  // name/title
  QDomElement name = doc.createElement("name");
  name.appendChild(doc.createTextNode(getTitle()));
  section.appendChild(name);

  if(pageBreak() != ORGraphicsSectionDetail::BreakNone)
  {
    QDomElement spagebreak = doc.createElement("pagebreak");
    if(pageBreak() == ORGraphicsSectionDetail::BreakAtEnd)
      spagebreak.setAttribute("when", "at end");
    section.appendChild(spagebreak);
  }

  for(int i = 0; i < groupList.count(); i++)
  {
    ORGraphicsSectionDetailGroup * rsdg = groupList.at(i);
    QDomNode grp = doc.createElement("group");

    QDomNode gname = doc.createElement("name");
    gname.appendChild(doc.createTextNode(rsdg->getTitle()));
    grp.appendChild(gname);

    QDomNode gcol = doc.createElement("column");
    gcol.appendChild(doc.createTextNode(rsdg->column()));
    grp.appendChild(gcol);

    if(rsdg->pageBreak() != ORGraphicsSectionDetailGroup::BreakNone)
    {
      QDomElement pagebreak = doc.createElement("pagebreak");
      if(rsdg->pageBreak() == ORGraphicsSectionDetailGroup::BreakAfterGroupFooter)
        pagebreak.setAttribute("when", "after foot");
      grp.appendChild(pagebreak);
    }

    //group head
    if(rsdg->isGroupHeadShowing())
    {
      QDomElement ghead = doc.createElement("head");
      rsdg->getGroupHead()->buildXML(doc,ghead);
      grp.appendChild(ghead);
    }
    // group foot
    if(rsdg->isGroupFootShowing())
    {
      QDomElement gfoot = doc.createElement("foot");
      rsdg->getGroupFoot()->buildXML(doc,gfoot);
      grp.appendChild(gfoot);
    }

    section.appendChild(grp);
  }

  // detail section
  QDomElement gdetail = doc.createElement("detail");
  QDomElement key = doc.createElement("key");
  QDomElement kquery = doc.createElement("query");
  kquery.appendChild(doc.createTextNode(query()));
  key.appendChild(kquery);
  gdetail.appendChild(key);
  _detail->buildXML(doc,gdetail);
  section.appendChild(gdetail);
}
Exemplo n.º 7
0
void Importer::parse()
{
    QFile file(inputFile);

    if (!file.open(QFile::ReadOnly))
        return;
    QTextStream in(&file);
    in.setCodec("IBM 866");

    numberDoc = 1;
    while (!in.atEnd())
    {
        QString line;
        in.readLine(); // шапка
        in.readLine(); //
        in.readLine();
        in.readLine(); // Код формы по КНД 1151078

        parsePriznak(in.readLine()); // Признак

        parseTitle(in.readLine()); // Строка с датой и номером справки
        in.readLine(); //
        in.readLine(); // п. 1
        parseINNCPP(in.readLine());  // п. 1.1
        parseOrgname(in.readLine()); // п. 1.2
        if (params[QString::number(numberDoc) + "_Orgname"].isEmpty())
                parseOrgname(in.readLine(), 1);
        in.readLine();
        parseOKATOTEL(in.readLine()); // п. 1.3 п. 1.4
        in.readLine(); // п. 2
        parseINN(in.readLine()); // п. 2.1
        in.readLine();
        parseFIOTBN(in.readLine()); // п. 2.2
        parseStatusDrGr(in.readLine()); // п. 2.3 - п. 2.5
        parseCodeDocSeriesNum(in.readLine()); // п. 2.6 - п. 2.7
        in.readLine(); // п. 2.8
        parseIndexRegCode(in.readLine());

        fillAddress();
        line = in.readLine();
        while (!line.contains(WINtoUnicode("Дом")))
        {                        
            if (line.contains(WINtoUnicode("Город")))
                parseCity(line);
            else if (line.contains(WINtoUnicode("Улица")))
                parseStreet(line);
            else if (line.contains(WINtoUnicode("Населенный пункт")))
                parseLocality(line);
            line = in.readLine();
        }
        parseHomeFlat(line);

        in.readLine();
        fillPara29();
        line = in.readLine();
        if (line.left(3) == "2.9")
        {
            parseCoutryCode(line);
            parseAddress(in.readLine());
            in.readLine();
            line = in.readLine();
        }
        parseTax(line); // п. 3
        in.readLine();
        in.readLine();
        in.readLine();
        in.readLine();
        in.readLine();

        line = in.readLine();
        QChar sym(0x2514);

        int incomeTableRowsCount = 1;
        while (line[0] != sym)
        {          
            parseIncomeTable(QString::number(incomeTableRowsCount++), line);
            line = in.readLine();           
        }
        addParametr("incomeTableRowsCount", QString::number(incomeTableRowsCount));

        in.readLine();

        fillPara4();
        line = in.readLine(); // п. 4

        while (line.left(3) != " 5.")
        {
            QString para = line.left(3);
            if (para == "")
            {
            }
            else if (para == "4. ")
            {
            }
            else if (para == "4.1")
            {
                in.readLine();
                line = in.readLine();
                parseTaxDeductions(line);
            }
            else if (para == "4.2")
            {
                parsePara42(line);
            }
            else if ((para == "4.3") || (para == "4.4"))
            {
                parsePara43_44(line);
            }           
            else if (para == "4.5")
            {
                parsePara45(line);
            }
            else if (para == "4.6")
            {
                parsePara46(line);
            }
            line = in.readLine();
        }

        //in.readLine(); // п. 5       
        fillPara5();
        line = in.readLine();
        while (line[0] != sym)
        {
            QString para = line.mid(1, 4);

            if (para == "5.1.")
                parseAmountIncome(line);   // п. 5.1
            else if (para == "5.2.")
                parseTaxableAmountIncome(line); // п. 5.2
            else if (para == "5.3.")
                parseAmountOfTaxCalculated(line); // п. 5.3
            else if (para == "5.4.")
                parseAmountOfTaxWithheld(line); // п. 5.4
            else if (para == "5.5.")
                parsePara55Sum(line);  // п. 5.5
            else if (para == "5.6.")
                parsePara56Sum(line);  // п. 5.6
            else if (para == "5.7.")
                parsePara57Sum(line);  // п. 5.7
            else if (para == "5.8.")
                parsePara58Sum(line);  // п. 5.8
            else if (para == "5.9.")
                parsePara59Sum(line);  // п. 5.9
            else if (para == "5.10")
                parsePara510Sum(line);  // п. 5.10
            line = in.readLine();
        }

        in.readLine();
        in.readLine();
        parseBottom(in.readLine());

        QChar pageBreak(0x0C);
        line = in.readLine();
        while (!in.atEnd() && line != pageBreak)        
            line = in.readLine();

        numberDoc++;
    }
    file.close();

}