tree 738dd6de8acacf3c453f5163d708332ace16fd17
parent 1906cadd94d51a476cc233053a03e3ce27e9ea94
author tundebabzy <tundebabzy@gmail.com> 1526450501 +0100
committer Rushabh Mehta <rmehta@gmail.com> 1526450501 +0530

Ability to hold payment for disputed invoices #12048 (#13298)

* add new fields to Supplier Master:
- on_hold: To signal the Customer is blocked from completing certain transactions
- hold_type: 3 options - All, invoices and payments

* sanitize `on_hold` field input

* show hold status in list view

* add `release_date` field to Supplier Master:
- specifies the date when transaction restraint will be removed

* reset release date if supplier is not on hold

* add validation to stop transactions when Supplier is blocked

* add test cases

* return empty list for outstanding references if supplier is blocked

* block make button:payment if supplier is blocked

* adjust test cases

* PEP 8 clean up

* more tests

* adds new fields to Purchase Invoice:
- release_date: once set, invoice will be on hold until set date
- hold_comment: so user can add comment pertaining to why invoice is on hold

* implement individual purchase invoice on hold logic

* allow user to change release date

* update manual

* final cleanup including more validation and tests

* update supplier manual

* make default for release_date argument todays date

* remove Auto Repeat added by mistake

* add on_hold_field to purchase invoice

* add 'On Hold' or 'Temporarily on Hold' status for purchase invoice in list view

* implement explicit payment hold in purchase invoice

* update manual

* add dialog for saving comment

* bug fix, refactor, clean up

* more test cases
