| 419 | |
| 420 | |
| 421 | class Ifc5DOdsWriter(Ifc5Dwriter): |
| 422 | def write(self) -> None: |
| 423 | from odf.number import CurrencyStyle, CurrencySymbol, Number |
| 424 | from odf.opendocument import OpenDocumentSpreadsheet |
| 425 | from odf.style import Style, TableCellProperties |
| 426 | |
| 427 | super().write() |
| 428 | |
| 429 | self.doc = OpenDocumentSpreadsheet() |
| 430 | |
| 431 | for value in self.colours.values(): |
| 432 | style = Style(name=value, family="table-cell") |
| 433 | bg_color = TableCellProperties(backgroundcolor="#" + value) |
| 434 | style.addElement(bg_color) |
| 435 | self.doc.styles.addElement(style) |
| 436 | |
| 437 | ns1 = CurrencyStyle(name="positive-AUD", volatile="true") |
| 438 | ns1.addElement(CurrencySymbol(language="en", country="AU", text="$")) |
| 439 | ns1.addElement(Number(decimalplaces="2", minintegerdigits="1", grouping="true")) |
| 440 | self.doc.styles.addElement(ns1) |
| 441 | |
| 442 | os.makedirs(self.output, exist_ok=True) |
| 443 | file_name = "" |
| 444 | for cost_schedule in self.cost_schedules: |
| 445 | if file_name: |
| 446 | file_name += "_" + cost_schedule.Name or "" |
| 447 | else: |
| 448 | file_name += cost_schedule.Name or "" |
| 449 | self.write_table(cost_schedule) |
| 450 | self.doc.save(os.path.join(self.output, file_name), True) |
| 451 | |
| 452 | def write_table(self, cost_schedule): |
| 453 | from odf.number import CurrencySymbol, Number |
| 454 | from odf.table import Table, TableCell, TableRow |
| 455 | from odf.text import P |
| 456 | |
| 457 | def row(): |
| 458 | return TableRow() |
| 459 | |
| 460 | def add_cell(type, value=None, row=None, style=None): |
| 461 | if type == "currency": |
| 462 | cell = TableCell(valuetype="currency", stylename=style) |
| 463 | cell.addElement(Number(numberstyle="Currency", value=value)) |
| 464 | cell.addElement(CurrencySymbol(currency="USD")) |
| 465 | cell.setAttribute("number:currency-style", "USD") |
| 466 | elif type == "number": |
| 467 | cell = TableCell(valuetype="float", stylename=style) |
| 468 | cell.addElement(Number(numberstyle="Number", value=value)) |
| 469 | elif type == "text": |
| 470 | cell = TableCell(valuetype="string", stylename=style) |
| 471 | cell.addElement(P(text=value)) |
| 472 | elif type == "formula": |
| 473 | cell = TableCell(formula=value, stylename=style) |
| 474 | row.addElement(cell) |
| 475 | |
| 476 | def add_cost_item_rows(table, cost_data): |
| 477 | row = TableRow() |
| 478 | self.row_count += 1 |
no outgoing calls
no test coverage detected