audit-tools


Nameaudit-tools JSON
Version 0.1.14 PyPI version JSON
download
home_pagehttps://github.com/JakePIXL/audit-tools
SummaryAuditing tools for Cova POS files
upload_time2022-05-14 07:22:48
maintainer
docs_urlNone
authorJakePIXL
requires_python>=3.8,<4.0
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Cova Dispensary POS Audit Tools
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/audit-tools)
[![PyPI](https://img.shields.io/pypi/v/audit-tools)](https://pypi.org/project/audit-tools/)
[![Testing](https://github.com/JakePIXL/audit-tools/actions/workflows/test.yml/badge.svg)](https://github.com/JakePIXL/audit-tools/actions/workflows/test.yml)
[![Python package](https://github.com/JakePIXL/audit-tools/actions/workflows/python-package.yml/badge.svg)](https://github.com/JakePIXL/audit-tools/actions/workflows/python-package.yml)

An inventory audit tool for speeding up inventory and avoiding errors that occur during processing. This tool will allow
users to complete inventory counts with a simple workflow that remedies user error.


Installation and Usage
-----
```bash
$ pypi install audit-tools
```

```python
from audit_tools.sessionmanager import SessionManager

with SessionManager() as session:  # invokes the session manager

  session.import_data("/path/to/file.xlsx")  # imports data from an excel, json or csv file

  session.count_product('F7X6A7', 20)  # Counts 20 F7X6A7's to the inventory
  session.increase_product('F7X6A7', 10)  # Increases F7X6A7 to 30 in the inventory
  session.reduce_product('F7X6A7', 3)  # Reduces F7X6A7 to 27 in the inventory

  print(session.get_product('F7X6A7'))  # Returns the row of product with SKU 'F7X6A7'

  session.parse_session_data()  # Updates session dataframes with accurate content

```

Session Manager
---------------
The session manager is the main class that manages the session. It is responsible for importing data,
counting products, and updating the session dataframes. It will take products when `SessionManager()` is
called or when the `import_data()` method is called.

Testing - will make sure that there is no output file

```python
from audit_tools.sessionmanager import SessionManager

with SessionManager('/path/to/file.xlsx', testing=True) as session:
  session.import_data('/path/to/file.xlsx')
```

Scanner
-------
Not working on it, do not use just there for testing and proof of concept

```python
from audit_tools.sessionmanager import SessionManager
from audit_tools.core.utils.scanner import Scanner

with SessionManager('/path/to/file.xlsx') as session:
  # Usage of the scanner is discouraged as it is not thread safe or efficient
  # Scanner is mostly for testing purposes
  # I do not update the code often in the scanner

  scanner = Scanner(session)  # Creates a scanner object

  scanner.start_count()  # Starts the count process

  scanner.shutdown()  # processes and saves session data to disk
```


Problems
--------
All the problems that we encounter while processing inventory data during an audit.

* Extremely slow
* Miscounts often occur
* Redundant item checks
* Manual data entry
* User error

Solutions
---------
Our ideas for solution implementations for fixing these problems so that an Audit can be completed successfully with
accuracy and speed.

- #### Session Manager
    - Allows users to start a new session with a products csv or xlsx file. The session manager will process all incoming
    products and append them to the sessions DataFrame, when you shut down the session manager will parse all the data in the session, complete variance calculations, raise any alerts, and save the session to the updated csv
    or xlsx file.


- #### Scan & Count
    - Allows users to scan a SKU and count the number of products to update the session file.


- #### Scan & Edit
    - Allows user to scan a SKU adn manage the data entry for a specified product in the session.


- #### Receipt Parser
    - Allows user to upload scan a receipt and the system will parse the receipt and update the session file.

Feature List
------------
This list will include all the features, current and future.

|    Features     | Working Status |
|:---------------:|:--------------:|
| Session Manager |    Working*    |
|  Scan & Count   | In Development |
|   Scan & Edit   |    Planned     |
| Receipt Parser  |    Planned     |



**Dev notes:**
If you come across this project, I am a newish developer, and I am not familiar with the 
python ecosystem especially poetry. If you are confused on the namings in this project, keep in mind
this package was created for a sole reason to help the creator at work, and will be used in tandem with
a handheld scanner.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/JakePIXL/audit-tools",
    "name": "audit-tools",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "JakePIXL",
    "author_email": "jakewjevans@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/08/47/5ec4ea953fab3844aca6a129913a0bf94ee429caae630d0db69f91ff2cc4/audit-tools-0.1.14.tar.gz",
    "platform": null,
    "description": "# Cova Dispensary POS Audit Tools\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/audit-tools)\n[![PyPI](https://img.shields.io/pypi/v/audit-tools)](https://pypi.org/project/audit-tools/)\n[![Testing](https://github.com/JakePIXL/audit-tools/actions/workflows/test.yml/badge.svg)](https://github.com/JakePIXL/audit-tools/actions/workflows/test.yml)\n[![Python package](https://github.com/JakePIXL/audit-tools/actions/workflows/python-package.yml/badge.svg)](https://github.com/JakePIXL/audit-tools/actions/workflows/python-package.yml)\n\nAn inventory audit tool for speeding up inventory and avoiding errors that occur during processing. This tool will allow\nusers to complete inventory counts with a simple workflow that remedies user error.\n\n\nInstallation and Usage\n-----\n```bash\n$ pypi install audit-tools\n```\n\n```python\nfrom audit_tools.sessionmanager import SessionManager\n\nwith SessionManager() as session:  # invokes the session manager\n\n  session.import_data(\"/path/to/file.xlsx\")  # imports data from an excel, json or csv file\n\n  session.count_product('F7X6A7', 20)  # Counts 20 F7X6A7's to the inventory\n  session.increase_product('F7X6A7', 10)  # Increases F7X6A7 to 30 in the inventory\n  session.reduce_product('F7X6A7', 3)  # Reduces F7X6A7 to 27 in the inventory\n\n  print(session.get_product('F7X6A7'))  # Returns the row of product with SKU 'F7X6A7'\n\n  session.parse_session_data()  # Updates session dataframes with accurate content\n\n```\n\nSession Manager\n---------------\nThe session manager is the main class that manages the session. It is responsible for importing data,\ncounting products, and updating the session dataframes. It will take products when `SessionManager()` is\ncalled or when the `import_data()` method is called.\n\nTesting - will make sure that there is no output file\n\n```python\nfrom audit_tools.sessionmanager import SessionManager\n\nwith SessionManager('/path/to/file.xlsx', testing=True) as session:\n  session.import_data('/path/to/file.xlsx')\n```\n\nScanner\n-------\nNot working on it, do not use just there for testing and proof of concept\n\n```python\nfrom audit_tools.sessionmanager import SessionManager\nfrom audit_tools.core.utils.scanner import Scanner\n\nwith SessionManager('/path/to/file.xlsx') as session:\n  # Usage of the scanner is discouraged as it is not thread safe or efficient\n  # Scanner is mostly for testing purposes\n  # I do not update the code often in the scanner\n\n  scanner = Scanner(session)  # Creates a scanner object\n\n  scanner.start_count()  # Starts the count process\n\n  scanner.shutdown()  # processes and saves session data to disk\n```\n\n\nProblems\n--------\nAll the problems that we encounter while processing inventory data during an audit.\n\n* Extremely slow\n* Miscounts often occur\n* Redundant item checks\n* Manual data entry\n* User error\n\nSolutions\n---------\nOur ideas for solution implementations for fixing these problems so that an Audit can be completed successfully with\naccuracy and speed.\n\n- #### Session Manager\n    - Allows users to start a new session with a products csv or xlsx file. The session manager will process all incoming\n    products and append them to the sessions DataFrame, when you shut down the session manager will parse all the data in the session, complete variance calculations, raise any alerts, and save the session to the updated csv\n    or xlsx file.\n\n\n- #### Scan & Count\n    - Allows users to scan a SKU and count the number of products to update the session file.\n\n\n- #### Scan & Edit\n    - Allows user to scan a SKU adn manage the data entry for a specified product in the session.\n\n\n- #### Receipt Parser\n    - Allows user to upload scan a receipt and the system will parse the receipt and update the session file.\n\nFeature List\n------------\nThis list will include all the features, current and future.\n\n|    Features     | Working Status |\n|:---------------:|:--------------:|\n| Session Manager |    Working*    |\n|  Scan & Count   | In Development |\n|   Scan & Edit   |    Planned     |\n| Receipt Parser  |    Planned     |\n\n\n\n**Dev notes:**\nIf you come across this project, I am a newish developer, and I am not familiar with the \npython ecosystem especially poetry. If you are confused on the namings in this project, keep in mind\nthis package was created for a sole reason to help the creator at work, and will be used in tandem with\na handheld scanner.\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Auditing tools for Cova POS files",
    "version": "0.1.14",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "c09aa3505523f7d43deeeb46fcc9bae3",
                "sha256": "a6b5621ba2abea205a9cd9daeb95da5fe5bbf743ad31f9e7722ca9cb1a35093d"
            },
            "downloads": -1,
            "filename": "audit_tools-0.1.14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c09aa3505523f7d43deeeb46fcc9bae3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 9276,
            "upload_time": "2022-05-14T07:22:50",
            "upload_time_iso_8601": "2022-05-14T07:22:50.691146Z",
            "url": "https://files.pythonhosted.org/packages/02/99/94e73a74b10157c2143573f7197953755b2553fc65aeb436ecdd44fd7428/audit_tools-0.1.14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "ba6f36227dfa1bdac6935b1074cb630d",
                "sha256": "3be6b415ffc95e0422ac8e5c8b3e288169e32fcf9d5c9245aeaf0bd3a76df6bf"
            },
            "downloads": -1,
            "filename": "audit-tools-0.1.14.tar.gz",
            "has_sig": false,
            "md5_digest": "ba6f36227dfa1bdac6935b1074cb630d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 14077,
            "upload_time": "2022-05-14T07:22:48",
            "upload_time_iso_8601": "2022-05-14T07:22:48.920317Z",
            "url": "https://files.pythonhosted.org/packages/08/47/5ec4ea953fab3844aca6a129913a0bf94ee429caae630d0db69f91ff2cc4/audit-tools-0.1.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-05-14 07:22:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "JakePIXL",
    "github_project": "audit-tools",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "audit-tools"
}
        
Elapsed time: 0.38879s