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) + "'.")
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))
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) + "'.")
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) + "'.")
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) + "'.")
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) + '.')
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)
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))