Add support for marking invoices as paid
This commit is contained in:
parent
a6dc3beff2
commit
8388a21b0f
|
@ -4,6 +4,7 @@ This Python script extracts data from Openbravo to generate a JSON invoice to su
|
||||||
to the Banqup API of Unifiedpost.
|
to the Banqup API of Unifiedpost.
|
||||||
|
|
||||||
**Requirements**
|
**Requirements**
|
||||||
|
|
||||||
* Python installed on the machine running this application.
|
* Python installed on the machine running this application.
|
||||||
* Credentials for accessing an Openbravo 3+ instance running with the REST API enabled.
|
* Credentials for accessing an Openbravo 3+ instance running with the REST API enabled.
|
||||||
* The role in Openbravo used for the extraction/integration must have read access to 'Sales Invoices' and 'Product' via web services.
|
* The role in Openbravo used for the extraction/integration must have read access to 'Sales Invoices' and 'Product' via web services.
|
||||||
|
@ -29,6 +30,12 @@ to the Banqup API of Unifiedpost.
|
||||||
* Fetch the invoice in Banqup to verify its existence in the portal and retrieve its id in Banqup.
|
* Fetch the invoice in Banqup to verify its existence in the portal and retrieve its id in Banqup.
|
||||||
* Post a request to the Banqup API to confirm the invoice and send it to the customer.
|
* Post a request to the Banqup API to confirm the invoice and send it to the customer.
|
||||||
* Display the response from the Banqup API, confirming the success or failure of the request.
|
* Display the response from the Banqup API, confirming the success or failure of the request.
|
||||||
|
* Run `python3 paid_invoice.py <documentNo>`, where `<documentNo>` is the human readable invoice number in Openbravo, to confirm an invoice in Banqup portal and send it to the customer via the API.
|
||||||
|
- The application will do the following:
|
||||||
|
- Authenticate with Banqup using OAuth2, for which it will launch a webbrowser to complete the authentication. The browser will receive the response from the Banqup server including the authentication token. The user will need to 'Copy' and 'Paste' this response at the corresponding prompt in the terminal.
|
||||||
|
- Fetch the invoice in Banqup to verify its existence in the portal and retrieve its id in Banqup.
|
||||||
|
- Post a request to the Banqup API to mark the invoice as 'Paid'.
|
||||||
|
- Display the response from the Banqup API, confirming the success or failure of the request.
|
||||||
|
|
||||||
**Credits**
|
**Credits**
|
||||||
|
|
||||||
|
|
37
paid_invoice.py
Normal file
37
paid_invoice.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import requests
|
||||||
|
from requests_oauthlib import OAuth2Session
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
import webbrowser
|
||||||
|
from config import *
|
||||||
|
from cachehandler import CacheHandler
|
||||||
|
from authhandler import AuthHandler
|
||||||
|
from api import OpenbravoToBanqupAPI
|
||||||
|
from datetime import timedelta, date
|
||||||
|
|
||||||
|
def paid_invoice(document):
|
||||||
|
|
||||||
|
api = OpenbravoToBanqupAPI(bq_client_id,bq_client_secret)
|
||||||
|
authUrl = api.authHandler.getAuthURL(bq_redirect_uri)
|
||||||
|
webbrowser.open(authUrl)
|
||||||
|
response = input('Paste response: ')
|
||||||
|
token = api.authHandler.retrieveToken(response, redirectUri=bq_redirect_uri)
|
||||||
|
#print(token)
|
||||||
|
invoice_list = api.get('sales-invoices?client_id='+banqup_client_id+'&sales_invoice_number='+document,None,None)
|
||||||
|
if not invoice_list[2]['results']:
|
||||||
|
print('***********************')
|
||||||
|
print('The invoice number provided does not exist in the Banqup portal.')
|
||||||
|
print('Please verify and try again.')
|
||||||
|
print('***********************')
|
||||||
|
return
|
||||||
|
invoice_id = str(invoice_list[2]['results'][0]['id'])
|
||||||
|
#print(invoice_id)
|
||||||
|
payload = json.dumps({
|
||||||
|
"type": "MARK_AS_PAID"
|
||||||
|
})
|
||||||
|
invoice_action = api.post('sales-invoices/'+invoice_id+'/action',json.loads(payload),None,None)
|
||||||
|
print(invoice_action)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
paid_invoice(str(sys.argv[1]))
|
Loading…
Reference in a new issue