Example #1
0
def commandCompositeAdd(args, session):
  invoice = beginRowCommand(args, session)
  row = CompositeRow()
  row.index = getNextRowIndex(invoice)
  row.invoice = invoice
  row.title = args.title
  if args.vat:
    row.vat = args.vat
  else:
    row.vat = getSetting(session, 'default-vat')
    dieIf(not row.vat, "default-vat is not set and no VAT was provided.")
  if args.note:
    row.note = args.note
  if args.external_source:
    row.external_source = args.external_source
  if args.external_id:
    row.external_id = args.external_id

  if args.external_source and args.external_id:
    query = (session.query(Row)
             .filter_by(external_source=args.external_source)
             .filter_by(external_id=args.external_id))
    dieIf(query.first(), 'External id already exists.')
  
  session.add(row)
  session.commit()

  if args.json:
    jsonPrintRow(row)
  else:
    print("Added row '" + str(row.index) + "'.")
Example #2
0
File: subrow.py Project: Jasu/Lokki
def commandSubrowGet(args, session):
    invoice = beginRowCommand(args, session)
    row = findRow(args, invoice, session, CompositeRow)
    subrow = findSubrow(row, args.subrow_index)
    dieIf(not hasattr(subrow, args.setting_name), 
          "Setting '" + args.setting_name + "' not found.")
    print(getattr(subrow, args.setting_name))
Example #3
0
File: subrow.py Project: Jasu/Lokki
def commandSubrowAdd(args, session):
    invoice = beginRowCommand(args, session)
    subrow = Subrow()
    subrow.row = findRow(args, invoice, session, type=CompositeRow)
    # Note: Indexing starts from one here. Setting subrow.row in the previous
    # statement causes its insertion in subrow.row.subrows.
    subrow.index = len(subrow.row.subrows) 
    subrow.title = args.title
    subrow.num_units = args.num_units
    subrow.price_per_unit = args.price_per_unit
    if args.note:
        subrow.note = args.note
    if args.external_source:
        subrow.external_source = args.external_source
    if args.external_id:
        subrow.external_id = args.external_id
    if args.external_source and args.external_id:
        query = (session.query(Subrow)
                 .filter_by(external_source=args.external_source)
                 .filter_by(external_id=args.external_id))
        dieIf(query.first(), 'External id already exists.')

    session.add(subrow)
    session.commit()

    print("Added subrow '" + str(subrow.index) + "'.")
Example #4
0
def commandCompositeRemove(args, session):
  invoice = beginRowCommand(args, session)
  row = findRow(args, invoice, session, CompositeRow)

  session.delete(row)

  session.commit()

  print("Deleted row '" + str(row.index) + "'.")
Example #5
0
File: subrow.py Project: Jasu/Lokki
def commandSubrowRemove(args, session):
    invoice = beginRowCommand(args, session)
    row = findRow(args, invoice, session, CompositeRow)
    subrow = findSubrow(row, args.subrow_index)
  
    session.delete(subrow)
    session.commit()
  
    print("Deleted subrow '" + str(subrow.index) + "'.")
Example #6
0
File: row.py Project: Jasu/Lokki
def commandRowSet(args, session):
  invoice = beginRowCommand(args, session)
  row = findRow(args, invoice, session, type=None)
  dieIf(not hasattr(row, args.setting_name), 
    "Setting '" + args.setting_name + "' does not exist.")

  setattr(row, args.setting_name, args.setting_value)

  session.commit()

  print("Updated row '" + str(row.index) + "'.")
Example #7
0
File: subrow.py Project: Jasu/Lokki
def commandSubrowSet(args, session):
    invoice = beginRowCommand(args, session)
    row = findRow(args, invoice, session, CompositeRow)
    subrow = findSubrow(row, args.subrow_index)
    dieIf(not hasattr(subrow, args.setting_name), 
          "Setting '" + args.setting_name + "' not found.")
    setattr(subrow, args.setting_name, args.setting_value)
    session.commit()
  
    print('Updated subrow ' + str(subrow.index)
          + ' of row ' + str(row.index)
          + ' of invoice ' + str(invoice.invoice_number) + '.')
Example #8
0
def commandCompositeShow(args, session):
  invoice = beginRowCommand(args, session)
  row = findRow(args, invoice, session, CompositeRow)
  table = PrettyTable(['N', 'Title', 'Price per unit', 'Num units', 'Total'])

  for subrow in row.subrows:
    table.add_row([
      subrow.index,
      subrow.title,
      subrow.price_per_unit,
      subrow.num_units,
      Decimal(subrow.price_per_unit) * Decimal(subrow.num_units),
    ])

  print(table)
Example #9
0
File: subrow.py Project: Jasu/Lokki
def commandSubrowMv(args, session):
    invoice = beginRowCommand(args, session)
    srcRow = invoice.rows[int(args.src_row_index) - 1]
    dstRow = invoice.rows[int(args.dst_row_index) - 1]

    if srcRow == dstRow:
        print('Source and destination are the same row.')
        print('Nothing done.')
        return 

    subrow = findSubrow(srcRow, args.subrow_index)

    subrow.row_id = dstRow.id
    subrow.index = len(dstRow.subrows) + 1
    session.commit()

    compressIndices(session, Subrow, row_id=srcRow.id)

    session.commit()
Example #10
0
def commandCompositeMerge(args, session):
    invoice = beginRowCommand(args, session)
    sourceRow = invoice.rows[int(args.source_index) - 1] 
    targetRow = invoice.rows[int(args.target_index) - 1] 
    dieIf(not isinstance(sourceRow, CompositeRow), 
          "Source row is not a composite row.");
    dieIf(not isinstance(targetRow, CompositeRow), 
          "Target row is not a composite row.");
    dieIf(sourceRow == targetRow, 
          "Source and target rows cannot be the same row.")

    subrows = sourceRow.subrows[:]
    for subrow in subrows:
        subrow.row = targetRow

    session.delete(sourceRow);

    session.commit();

    compressIndices(session, Subrow, row_id=targetRow.id)
    compressIndices(session, Row, invoice_id=invoice.id)

    session.commit();
Example #11
0
File: row.py Project: Jasu/Lokki
def commandRowGet(args, session):
  invoice = beginRowCommand(args, session, readonly=True)
  row = findRow(args, invoice, session, type=None)
  dieIf(not hasattr(row, args.setting_name), 
    "Setting '" + args.setting_name + "' does not exist.")
  print(getattr(row, args.setting_name))