Disva / DMSLite

7 stars 0 forks source link

Receipt Generation #53

Closed pmiri closed 7 years ago

pmiri commented 8 years ago

Users should be able to generate receipts based off of closed batches to be distributed to donors for tax purposes.

-Story Points (13) -Priority (1) -Risk: Medium -Ideal time:

Add "generate receipt" command in API.ai (1 hour)

Navigate and validate closed batch and accept (3 hour)

Navigate donor and accept (3 hour)

Write unit tests (1 hour)

TODO: Link all commits, arch diagrams, summaries of discussions, etc Write your unit tests Write the demo steps Get customer signoff

Demo steps (part 1, pre-feedback)

Demo Steps (part 2)

dsvoid commented 7 years ago

The branch Issue53-ReceiptGenetation is using the PdfSharp library over its most likely alternative, iTextSharp. Why?

dsvoid commented 7 years ago

Going to /Receipt/Test generates a "Hello World!" PDF. Loath as I am to admit it, this was made possible thanks to this StackOverflow answer.

dsvoid commented 7 years ago

receipt

Data can be fetched, but now some more requirements need to be extracted for receipts. I have some assumptions about the process of making receipts that I need checked:

Also, a few questions:

Feel free to contribute anything else on your mind.

Bradleyo commented 7 years ago

http://www.cra-arc.gc.ca/chrts-gvng/chrts/pbs/rcpts-eng.html

http://www.cra-arc.gc.ca/chrts-gvng/chrts/prtng/rcpts/whtnf-eng.html

dsvoid commented 7 years ago

image

The ReceiptForm method takes in a ReceiptFormModel object (a list of donors and batches), then outputs a zip file containing individual PDF receipts per donor. Each PDF receipt contains the donations for those batches that the donor made. A donor who made no donations to any of the selected batches gets no receipt as output.

There is no UI for the feature yet, but its behaviour can be manually tested on branch Issue53-ReceiptGeneration Receipt/ReceiptForm URL after building. Right now, it's set to return receipts from all donors for all closed batches.

dsvoid commented 7 years ago

A basic modal was set up using a multiple-selection select2 box. Submission and validation only boils down to not letting the user select "Make Receipts" for now. What remains is making an API.ai call to make receipts, adding proper validation checks for the form, writing tests for receipt generation, and finally removing my cutesy "test receipt generation!" button.

dsvoid commented 7 years ago

capture

Tests pass. Of course the UI could use further work (like date range selection), but until then, have some

Demo Steps

Bradleyo commented 7 years ago

Some changes to the process here. -1 Each specific donation line should only be receiptable once, and should have the receipt associated to that donation record for cross reference purposes. -2 Some options to add a. receipt for a specific donor or a batch for all donors b. All non-receipted donations (Across donors and batches) -3 Receipts need a serial number which is unique per organization

scott-brereton commented 7 years ago

Priority (1) related to Brad's feedback

dsvoid commented 7 years ago

Each donation is now only receiptable once, and each receipt has a unique ID. The UI options to receipt all donors for a batch or all batches for a donor have proven larger than expected and have been carried over into another issue (#300).

Demo Steps

scott-brereton commented 7 years ago

Confirmed but the process is difficult and not intuitive. Also worth noting that searching for batches, accounts and donors is having trouble with upper and lower-case letter (e.g. "stan" shows Stan Lee, but "stan lee" does not).

dsvoid commented 7 years ago

Added comment to #300.