예제 #1
0
  def test_get_invoice_by_id(self):
    from penelophant.helpers.invoice import get_invoice_by_id, get_invoice_by_id_or_abort

    self.assertIsNone(get_invoice_by_id(999))
    self.assertEqual(get_invoice_by_id(self.invoice.id), self.invoice)
    with self.assertRaises(NotFound):
      get_invoice_by_id_or_abort(999)

    self.assertEqual(get_invoice_by_id_or_abort(self.invoice.id), self.invoice)
예제 #2
0
  def put(self, invoice_id):
    """ User pays an invoice """

    parser = reqparse.RequestParser()
    parser.add_argument('ccId', type=str, required=True, location='args')
    args = parser.parse_args()

    invoice = get_invoice_by_id_or_abort(invoice_id)

    if invoice.paid:
      raise InvoiceAlreadyPaid

    card = balanced.Card.fetch('/cards/%s' % args.ccId)
    debit = card.debit(
      appears_on_statement_as=app.config['STATEMENT_MSG'],
      amount=int(invoice.amount*100),
      description="Invoice for invoice #%s" % (invoice.id),
      meta={
        'invoice_id': invoice.id,
        'bid_id': invoice.bid.id,
        'auction_id': invoice.bid.auction.id,
        'payer': invoice.payer.id,
        'payee': invoice.payee.id
      }
    )

    invoice.provider = "balanced"
    invoice.provider_details = debit.id
    invoice.paid = True
    crud.save()

    return marshal(invoice, invoice_fields), 200
예제 #3
0
  def get(self, invoice_id):
    """ View a specific invoice """
    invoice = get_invoice_by_id_or_abort(invoice_id)

    return marshal(invoice, invoice_fields), 200