Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/update readme #43

Merged
merged 2 commits into from
Nov 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 88 additions & 13 deletions README.EN.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ open_producten (PoC)

:Version: 0.1.0
:Source: https://github.com/maykinmedia/open-producten
:Keywords: ``<keywords>``

|docs| |docker|
:Keywords: ``products``

Place for municipalities to manage product types and products to be able to use them in other applications.
(`Nederlandse versie`_)
Expand All @@ -18,10 +16,84 @@ Introduction
============

Open Producten is an application where product types and products can be managed in a single place.
Other applications like Open Inwoner and Open Formulieren can integrate Open Producten using its REST API to show product type information, create products or to get the current price for a product type.
Other applications like Open Inwoner and Open Formulieren can integrate Open Producten using its REST API to for example show product type information, create products or to get the current price for a product type.

This Project is a proof of concept at the moment.

The data model of the Open Producten PoC is based on the model from Open Inwoner with a few changes for integrations with Open Inwoner en Open Formulieren.

Open Producten can store Product types and products, A product type is for example a parking permit and contains all relevant information such as what the rules are and how different parking zones work etc.
A product in this example is a parking permit of a person and contains in this instance the license plate and personal information.

Integrations
============

Open Inwoner
------------

The integration with Open Inwoner consists of a management command that syncs all product types from Open Producten. This process also syncs all data that is linked to product type
such as:

* conditions
* questions
* categories
* files
* tags
* price options
* fields
* locations
* organisations
* contacts

The integration can be found `here <https://github.com/Floris272/open-inwoner>`_ .

setup:

#. Open Inwoner dashboard -> Data koppelingen -> Open Producten configuration.
#. Add a service.
#. enter a api token.

Open Formulieren
----------------

The following models are added to Open Producten for the integration with Open Formulieren

.. list-table::

* - .. image:: docs/price-model.png

- .. image:: docs/form-generation-model.png


A product in Open Formulieren only has a static price at the moment. This has been expanded in Open Producten with the models in the left image.
A Product type can have multiple prices that are active from a specific day, THis way a pricing change can be added in advance.
In addition a price consists of multiple options, for example a passport has a normal and a "spoed" option that has a higher price.
In Open Forms the "ProductPrice" component has been added. This component is a radio component filled with the price options of the product (type) that is linked to the form.

The models in the right image link fields to a product type, the most important thing about a field is the type. This type corresponds to a FormIO component in Open Forms.
from the fields of a product type. This is done from the product admin page in Open Inwoner via the "Generate form" action.
This action retrieves the fields of a product type and creates a form. This form must then be configured further by an employee.

To load the prices from Open Products into Open Forms, the same method is used as for the integration into Open Inwoner.

De integration can be found `here <https://github.com/Floris272/open-forms>`_.

setup:

#. Open Formulieren dashboard -> Miscellaneous -> Open Producten configuration.
#. Add a service.
#. enter a api token.

Flow
====

.. image:: docs/flow-en.png

In Open Producten the product type “parking permit” has been added. If a resident wants to apply for a parking permit, he goes to Open Inwoner where he can find all the information about a parking permit. This information originally comes from Open Producten.
On the parking permit page there will be a link to apply for the product. Via this link the resident is referred to the parking permit form.
After the resident has filled in and completed the form, a parking permit application case will be created in Open Zaak. After this application has been processed, a product will be saved in Open Producten.
This product is the parking permit of the resident on his specified license plate.

API specification
=================

Expand All @@ -34,20 +106,31 @@ latest n/a `ReDoc <https://redocly.github.io/redoc/?url=htt
`Swagger <https://petstore.swagger.io/?url=https://raw.githubusercontent.com/maykinmedia/open-producten/main/src/open_producten/api/openapi.yaml>`_
============== ============== =============================

Een api token can be created in Open Producten admin -> Users -> Tokens.


See: `All versions and changes <https://github.com/maykinmedia/open-producten/blob/main/CHANGELOG.rst>`_


Developers
==========

|build-status| |coverage| |black| |docker| |python-versions|
|build-status| |coverage| |black| |python-versions|

This repository contains the source code for open_producten. To quickly
get started, we recommend using the Docker image. You can also build the
project from the source code. For this, please look at
`INSTALL.rst <INSTALL.rst>`_.

Open producten consists of three apps:

* product types
* products
* locations (& organisations)


The data model of Open Producten can be found `here <https://raw.githubusercontent.com/maykinmedia/open-producten/main/docs/data-model.png>`_.

Quickstart
----------

Expand Down Expand Up @@ -92,10 +175,6 @@ Licensed under the EUPL_
:alt: Build status
:target: https://github.com/maykinmedia/open-producten/actions?query=workflow%3Aci

.. |docs| image:: https://readthedocs.org/projects/open-producten/badge/?version=latest
:target: https://open-producten.readthedocs.io/
:alt: Documentation Status

.. |coverage| image:: https://codecov.io/github/maykinmedia/open-roducten/branch/main/graphs/badge.svg?branch=main
:alt: Coverage
:target: https://codecov.io/gh/maykinmedia/open-producten
Expand All @@ -104,10 +183,6 @@ Licensed under the EUPL_
:alt: Code style
:target: https://github.com/psf/black

.. |docker| image:: https://img.shields.io/docker/v/maykinmedia/open-producten?sort=semver
:alt: Docker image
:target: https://hub.docker.com/r/maykinmedia/open-producten

.. |python-versions| image:: https://img.shields.io/badge/python-3.11%2B-blue.svg
:alt: Supported Python version

Expand Down
104 changes: 89 additions & 15 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ open_producten (PoC)

:Version: 0.1.0
:Source: https://github.com/maykinmedia/open-producten
:Keywords: ``<keywords>``

|docs| |docker|
:Keywords: ``producten``

Plek voor gemeenten om product-typen en producten te beheren om ze te gebruiken in andere applicaties.
(`English version`_)
Expand All @@ -18,11 +16,86 @@ Introductie
===========

Open Producten is een applicatie waarin product typen en producten op een enkele plek kunnen worden beheerd.
Andere applicaties zoals Open Inwoner en Open Formulieren kunnen met Open Producten via een REST API integreren om product typen informatie te tonen, producten aan te maken of om de actuele prijs van een product type op te halen.
Andere applicaties zoals Open Inwoner en Open Formulieren kunnen met Open Producten via een REST API integreren om bijvoorbeeld product typen informatie te tonen, producten aan te maken of om de actuele prijs van een product type op te halen.

Dit project is op dit moment een proof of concept.

Het data model van het Open Producten PoC is gebaseerd op dat van Open Inwoner met een aantal wijzigingen voor integraties met Open Inwoner en Open Formulieren.

In Open Producten worden product typen en producten opgeslagen. Een product type is bijvoorbeeld een parkeervergunning en bevat alle relevante informatie zoals wat de regels zijn, hoe verschillende zones werken enz.
Een product is in dit voorbeeld een parkeervergunning van een persoon en bevat in dit geval het kenteken en de persoonsgegevens.


Integraties
===========

Open Inwoner
------------

De integratie met Open Inwoner bestaat uit een management command dat alle product typen uit Open Producten ophaalt en in Open Inwoner aanmaakt/aanpast.
Hierdoor worden de product typen als het ware "gesynced". Hieronder valt ook alle data dat aan een product type is gelinkt zoals:

* condities
* vragen
* categorieën
* bestanden
* tags
* prijs opties
* velden
* locaties
* organisaties
* contacten

De integratie is `hier <https://github.com/Floris272/open-inwoner>`_ te vinden.


setup:

#. Open Inwoner dashboard -> Data koppelingen -> Open Producten configuration.
#. Voeg een service toe.
#. Vul de api token in.


Open Formulieren
----------------

Voor de integratie met Open Formulieren zijn de volgende modellen toegevoegd aan Open Producten.

.. list-table::

* - .. image:: docs/price-model.png

- .. image:: docs/form-generation-model.png


In Open Formulieren heeft een product op dit moment een enkele static prijs. In Open Producten is dat via de modellen in de linker afbeelding uitgebreid.
Een Product type kan meerdere prijzen hebben die vanaf een bepaalde dag gelden, zo kan een prijswijziging al van te voren worden ingevoerd.
Daarnaast bestaat een prijs uit meerdere opties, een paspoort heeft bijvoorbeeld een normale en een spoed optie die iets duurder is.
In Open formulieren is het "ProductPrice" component toegevoegd. Dit component is een radio component gevuld met de prijs opties van het product (type) dat is gelinkt aan het formulier.

Met de modellen in de rechter afbeelding worden velden aan een producttype gelinkt, het belangrijkste van een veld is het type. Dit type komt overeen met een FormIO component in Open Formulieren.
vanuit de velden van een product type. Dit wordt gedaan vanaf de product admin pagina in Open Inwoner via de "Generate form" action.
Deze actie haalt de velden van een product type op maakt een formulier aan. Dit formulier moet daarna verder worden geconfigureerd door een medewerker.

Om de prijzen uit Open Producten in Open Formulieren te laden wordt er gebruik gemaakt van dezelfde methode als bij de integratie naar open inwoner.

De integratie is `hier <https://github.com/Floris272/open-forms>`_ te vinden.

setup:

#. Open Formulieren dashboard -> Miscellaneous -> Open Producten configuration.
#. Voeg een service toe.
#. Vul de api token in.

Flow
====

.. image:: docs/flow-nl.png

In Open Producten is het product type “parkeervergunning” toegevoegd. Als een inwoner een parkeervergunning wil aanvragen gaat hij naar Open Inwoner waar hij alle informatie over een parkeervergunning kan vinden. Deze informatie komt dus oorspronkelijk uit Open Producten.
Op de parkeervergunning pagina zal een link staan om het product aan te vragen. Via deze link wordt de inwoner doorverwezen naar het parkeervergunning formulier.
Nadat de inwoner het formulier heeft ingevuld en heeft afgerond zal er een parkeervergunning aanvraag zaak worden aangemaakt in Open Zaak. Nadat deze aanvraag is afgehandeld zal er een product in Open Producten worden opgeslagen.
Dit product is de parkeervergunning van de inwoner op zijn opgegeven kenteken.

API specificatie
================
Expand All @@ -36,16 +109,27 @@ latest n/a `ReDoc <https://redocly.github.io/redoc/?url=htt
`Swagger <https://petstore.swagger.io/?url=https://raw.githubusercontent.com/maykinmedia/open-producten/main/src/openapi.yaml>`_
============== ============== =============================

Een api token kan worden aangemaakt in Open Producten admin -> Users -> Tokens.

Ontwikkelaars
=============

|build-status| |coverage| |black| |docker| |python-versions|
|build-status| |coverage| |black| |python-versions|

Deze repository bevat de broncode voor open_producten. Om snel aan de slag
te gaan, raden we aan om de Docker image te gebruiken. Uiteraard kan je ook
het project zelf bouwen van de broncode. Zie hiervoor
`INSTALL.rst <INSTALL.rst>`_.

Open producten bestaat uit drie apps:

* product types
* products
* locations (& organisations)


Het data model van Open Producten is `hier <https://raw.githubusercontent.com/maykinmedia/open-producten/main/docs/data-model.png>`_ te vinden.

Quickstart
----------

Expand All @@ -65,11 +149,9 @@ Quickstart
Links
=====

* `Documentatie <https://TODO>`_
* `Docker image <https://hub.docker.com/r/maykinmedia/open-producten>`_
* `Issues <https://github.com/maykinmedia/open-producten/issues>`_
* `Code <https://github.com/maykinmedia/open-producten>`_
* `Community <https://TODO>`_


Licentie
Expand All @@ -92,10 +174,6 @@ Licensed under the EUPL_
:alt: Build status
:target: https://github.com/maykinmedia/open-producten/actions?query=workflow%3Aci

.. |docs| image:: https://readthedocs.org/projects/open_producten-and-objecttypes-api/badge/?version=latest
:target: https://open_producten-and-objecttypes-api.readthedocs.io/
:alt: Documentation Status

.. |coverage| image:: https://codecov.io/github/maykinmedia/open-producten/branch/main/graphs/badge.svg?branch=main
:alt: Coverage
:target: https://codecov.io/gh/maykinmedia/open-producten
Expand All @@ -104,10 +182,6 @@ Licensed under the EUPL_
:alt: Code style
:target: https://github.com/psf/black

.. |docker| image:: https://img.shields.io/docker/v/maykinmedia/open-producten?sort=semver
:alt: Docker image
:target: https://hub.docker.com/r/maykinmedia/open-producten

.. |python-versions| image:: https://img.shields.io/badge/python-3.11%2B-blue.svg
:alt: Supported Python version

Expand Down
Binary file added docs/data-model.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/flow-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/flow-nl.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/form-generation-model.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/price-model.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading