https://github.com/wilmerm/alanube-python
  
  
    Python library to establish connections with the Alanube API. 
    https://github.com/wilmerm/alanube-python
  
alanube dgii dominican-republic facturacion-electronica invoice library python script
        Last synced: 4 days ago 
        JSON representation
    
Python library to establish connections with the Alanube API.
- Host: GitHub
- URL: https://github.com/wilmerm/alanube-python
- Owner: wilmerm
- Created: 2023-08-17T09:21:29.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-09T13:15:24.000Z (about 1 year ago)
- Last Synced: 2024-12-30T12:45:30.810Z (10 months ago)
- Topics: alanube, dgii, dominican-republic, facturacion-electronica, invoice, library, python, script
- Language: Python
- Homepage: https://pypi.org/project/alanube/
- Size: 96.7 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
- 
            Metadata Files:
            - Readme: README.md
- License: LICENSE
 
Awesome Lists containing this project
README
          # Alanube Python API
A lightweight Python client for connecting to the Alanube e-invoicing API across multiple countries.
[](https://pypi.org/project/alanube/)
[](LICENSE)
[](#running-the-tests)
## 📚 Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [Contents](#contents)
- [Developers](#developers)
- [Testing](#running-the-tests)
- [Build & Publish](#building-and-publishing-the-library)
- [Credits](#credits)
- [License](#licence)
- [Contribute](#contribution-💗)
## Instalation
To install the Alanube library, you can use pip:
```sh
pip install alanube
```
## Usage
```py
# Import the Alanube class specific to the country,
# in this case from `alanube.do` for the Dominican Republic
from alanube.do import Alanube
# Connect to the API
Alanube.connect("[TOKEN]")
payload = {...}
data = Alanube.send_document(encf_type=31, payload)
```
Now you can easily and efficiently use the Alanube API with this Python library!
### Dominican Republic API Methods
| Method | Description |
|--------|-------------|
| `create_company` | Create a new company. |
| `update_company` | Update company information. |
| `get_company` | Retrieve company info. |
| `send_fiscal_invoice` | Issue Fiscal Credit Invoice (31). |
| `get_fiscal_invoice` | Get status of a Fiscal Credit Invoice. |
| `get_fiscal_invoices` | List Fiscal Credit Invoices. |
| `send_invoice` | Issue Consumption Invoice (32). |
| `get_invoice` | Get status of a Consumption Invoice. |
| `get_invoices` | List Consumption Invoices. |
| `send_debit_note` | Issue Debit Note (33). |
| `get_debit_note` | Get status of a Debit Note. |
| `get_debit_notes` | List Debit Notes. |
| `send_credit_note` | Issue Credit Note (34). |
| `get_credit_note` | Get status of a Credit Note. |
| `get_credit_notes` | List Credit Notes. |
| `send_purchase` | Issue Purchase Document (41). |
| `get_purchase` | Get status of a Purchase Document. |
| `get_purchases` | List Purchase Documents. |
| `send_minor_expense` | Issue Minor Expense Document (43). |
| `get_minor_expense` | Get status of a Minor Expense Document. |
| `get_minor_expenses` | List Minor Expense Documents. |
| `send_special_regime` | Issue Special Regime Document (44). |
| `get_special_regime` | Get status of a Special Regime Document. |
| `get_special_regimes` | List Special Regime Documents. |
| `send_gubernamental` | Issue Government Document (45). |
| `get_gubernamental` | Get status of a Government Document. |
| `get_gubernamentals` | List Government Documents. |
| `send_export_support` | Issue Export Support Document (46). |
| `get_export_support` | Get status of an Export Support Document. |
| `get_export_supports` | List Export Support Documents. |
| `send_payment_abroad_support` | Issue Payment Abroad Support Document (47). |
| `get_payment_abroad_support` | Get status of a Payment Abroad Support Document. |
| `get_payment_abroad_supports` | List Payment Abroad Support Documents. |
| `send_cancellation` | Issue a cancellation document. |
| `get_cancellation` | Get status of a cancellation. |
| `get_cancellations` | List cancellations. |
| `get_received_document` | Retrieve a received document. |
| `get_received_documents` | List received documents. |
| `check_directory` | Check active companies in directory. |
| `check_dgii_status` | Check DGII service status and maintenance. |
| `get_report_companies_documents_total` | Get total documents issued by a company. |
| `get_report_users_documents_total` | Get total documents issued by the authenticated user. |
| `get_report_company_emitted_documents` | Get total documents emitted by a company. |
| `get_report_company_emitted_documents_monthly` | Monthly totals of emitted documents (12 months). |
| `get_report_company_emitted_documents_15_days` | Daily totals of emitted documents (last 15 days). |
| `get_report_company_accepted_documents` | Total documents accepted by DGII for a company. |
| `get_report_company_accepted_documents_monthly` | Monthly totals of accepted documents (12 months). |
| `get_report_company_accepted_documents_15_days` | Daily totals of accepted documents (last 15 days). |
## Contents
- `do`: Fully implemented for the Dominican Republic (DGII).
- `pa`, `cr`, `pe`, `bo`: Planned support. Follow the structure of the `do` module.
For the missing countries, you can use the `do` directory as a reference to build the required implementations, adapting the logic to meet the specific local requirements of each country.
### Links
* [Alanube Official Website](https://www.alanube.co/)
* [Alanube Documentation](https://developer.alanube.co/)
## Roadmap
- [x] 🇩🇴 Dominican Republic
- [ ] 🇵🇦 Panama
- [ ] 🇨🇷 Costa Rica
- [ ] 🇵🇪 Peru
- [ ] 🇧🇴 Bolivia
## Used by
This library is trusted and used in production by:
  
    
      
        
        Unolet
      
      
      ERP and electronic invoicing platform for SMEs.
    
  
If your company uses this library and would like to be listed here, feel free to [open a pull request](https://github.com/wilmerm/alanube-python/pulls) or [create an issue](https://github.com/wilmerm/alanube-python/issues).
## Developers
If you're contributing to the development of this library, here are the steps to set up your environment and run the tests:
### Setting Up the Environment
1. Clone the repository:
    ```sh
    git clone https://github.com/wilmerm/alanube-python.git
    cd alanube-python
    ```
2. Create a virtual environment (optional but recommended):
    ```sh
    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    ```
3. Install the required dependencies:
    ```sh
    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    ```
4. Install the library in editable mode:
    ```sh
    pip install -e .
    ```
5. **Code Style**. We follow PEP 8 for coding standards. Please ensure your code is formatted accordingly before submitting a pull request.
    ```sh
    flake8 alanube
    ```
### Running the Tests
1. Navigate to the project root directory.
2. Execute the tests with unittest:
    ```sh
    python -m unittest discover -s alanube/tests -p "*.py"
    ```
    * -s: Specifies the directory to look for tests (tests folder).
    * -p: Defines the pattern for test file names (e.g., *.py).
### Building and Publishing the Library
To compile and upload the library to PyPI, follow these steps:
1. Ensure you have the necessary dependencies:
    ```sh
    pip install build twine
    ```
2. Build the package:
    ```sh
    python -m build
    ```
3. (Optional) Verify the package:
    ```sh
    twine check dist/*
    ```
4. Upload the package to PyPI:
    ```sh
    python -m twine upload dist/*
    ```
## Credits
    
        
            
                
                Wilmer Martinez
            
            
Author & Maintainer
        
        
            
                
                Oriku Precious
            
            
Documentation Contributor
        
    
If you contributed to this project and would like to be listed here, feel free to open a pull request adding yourself to the credits section.
## Licence
This project is licensed under the MIT License.
## Proyect Status
✅ This project is in production and actively maintained.
## Contributing
We welcome pull requests and suggestions. Please open an issue or submit a PR.
## Support 💗
If you find this useful, consider supporting.
Your generosity helps us to continue improving and maintaining this project. We appreciate every contribution, however small. Thanks for being part of our community!