<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div style="" class="markdown-here-wrapper" data-md-url="null">
      <p style="margin: 1.2em 0px ! important;">Hi everyone,</p>
      <p style="margin: 1.2em 0px ! important;">I know it’s been a
        little quiet on the list for a while, so I thought it would be
        good to share a progress update with you as soon as it made
        sense. And I think now it does: I just published a Git
        repository with my initial work on a <a
          href="https://k.sfconservancy.org/NPO-Accounting/civipay">CiviCRM
          extension for a payment system</a>.</p>
      <p style="margin: 1.2em 0px ! important;">This is pretty much the
        bare minimum interesting amount of code. All it does is set up
        the concept of a payment request (as a kind of “case” in
        CiviCRM), define who’s related to those cases (the
        “client”—requester in our parlance—and the bookkeeper), and the
        different states the request can be in. Combined with CiviCRM’s
        stock behavior, this already covers a number of our functional
        requirements around keeping track of state and notifying
        participants about state changes.</p>
      <p style="margin: 1.2em 0px ! important;">It’s not a lot. It took
        some time just to familiarize myself enough with CiviCRM (and
        PHP!) to get ready to start doing the development. But I thought
        this made sense as a starting point, before diving into the more
        development-heavy work of defining expenses of a request and
        their corresponding validations.</p>
      <p style="margin: 1.2em 0px ! important;">Please take a look, and
        let us know if you have any questions, ideas about next steps,
        or areas where you’d like to contribute.</p>
      <p style="margin: 1.2em 0px ! important;">Thanks,</p>
      <div
title="MDH:PHA+SGkgZXZlcnlvbmUsPC9wPjxwPjxicj48L3A+PHA+SSBrbm93IGl0J3MgYmVlbiBhIGxpdHRsZSBxdWlldCBvbiB0aGUgbGlzdCBmb3IgYSB3aGlsZSwgc28gSSB0aG91Z2h0IGl0IHdvdWxkIGJl
IGdvb2QgdG8gc2hhcmUgYSBwcm9ncmVzcyB1cGRhdGUgd2l0aCB5b3UgYXMgc29vbiBhcyBpdCBt
YWRlIHNlbnNlLiZuYnNwOyBBbmQgSSB0aGluayBub3cgaXQgZG9lczogSSBqdXN0IHB1Ymxpc2hl
ZCBhIEdpdCByZXBvc2l0b3J5IHdpdGggbXkgaW5pdGlhbCB3b3JrIG9uIGEgW0NpdmlDUk0gZXh0
ZW5zaW9uIGZvciBhIHBheW1lbnQgc3lzdGVtXShodHRwczovL2suc2Zjb25zZXJ2YW5jeS5vcmcv
TlBPLUFjY291bnRpbmcvY2l2aXBheSkuPC9wPjxwPjxicj48L3A+PHA+VGhpcyBpcyBwcmV0dHkg
bXVjaCB0aGUgYmFyZSBtaW5pbXVtIGludGVyZXN0aW5nIGFtb3VudCBvZiBjb2RlLiZuYnNwOyBB
bGwgaXQgZG9lcyBpcyBzZXQgdXAgdGhlIGNvbmNlcHQgb2YgYSBwYXltZW50IHJlcXVlc3QgKGFz
IGEga2luZCBvZiAiY2FzZSIgaW4gQ2l2aUNSTSksIGRlZmluZSB3aG8ncyByZWxhdGVkIHRvIHRo
b3NlIGNhc2VzICh0aGUgImNsaWVudCLigJRyZXF1ZXN0ZXIgaW4gb3VyIHBhcmxhbmNl4oCUYW5k
IHRoZSBib29ra2VlcGVyKSwgYW5kIHRoZSBkaWZmZXJlbnQgc3RhdGVzIHRoZSByZXF1ZXN0IGNh
biBiZSBpbi4mbmJzcDsgQ29tYmluZWQgd2l0aCBDaXZpQ1JNJ3Mgc3RvY2sgYmVoYXZpb3IsIHRo
aXMgYWxyZWFkeSBjb3ZlcnMgYSBudW1iZXIgb2Ygb3VyIGZ1bmN0aW9uYWwgcmVxdWlyZW1lbnRz
IGFyb3VuZCBrZWVwaW5nIHRyYWNrIG9mIHN0YXRlIGFuZCBub3RpZnlpbmcgcGFydGljaXBhbnRz
IGFib3V0IHN0YXRlIGNoYW5nZXMuPC9wPjxwPjxicj48L3A+PHA+SXQncyBub3QgYSBsb3QuJm5i
c3A7IEl0IHRvb2sgc29tZSB0aW1lIGp1c3QgdG8gZmFtaWxpYXJpemUgbXlzZWxmIGVub3VnaCB3
aXRoIENpdmlDUk0gKGFuZCBQSFAhKSB0byBnZXQgcmVhZHkgdG8gc3RhcnQgZG9pbmcgdGhlIGRl
dmVsb3BtZW50LiZuYnNwOyBCdXQgSSB0aG91Z2h0IHRoaXMgbWFkZSBzZW5zZSBhcyBhIHN0YXJ0
aW5nIHBvaW50LCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgZGV2ZWxvcG1lbnQtaGVhdnkg
d29yayBvZiBkZWZpbmluZyBleHBlbnNlcyBvZiBhIHJlcXVlc3QgYW5kIHRoZWlyIGNvcnJlc3Bv
bmRpbmcgdmFsaWRhdGlvbnMuPC9wPjxwPjxicj48L3A+PHA+UGxlYXNlIHRha2UgYSBsb29rLCBh
bmQgbGV0IHVzIGtub3cgaWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgaWRlYXMgYWJvdXQgbmV4
dCBzdGVwcywgb3IgYXJlYXMgd2hlcmUgeW91J2QgbGlrZSB0byBjb250cmlidXRlLjwvcD48cD48
        YnI+PC9wPjxwPlRoYW5rcyw8YnI+PC9wPjxicj4="
style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;">​</div>
    </div>
    <div class="moz-signature markdown-here-signature">-- <br>
      Brett Smith</div>
  </body>
</html>