Initial commit: OCA Edi packages (42 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:05 +02:00
commit df976c03db
2184 changed files with 571602 additions and 0 deletions

View file

@ -0,0 +1,45 @@
# Base WAMAS UBL
Odoo addon: base_wamas_ubl
## Installation
```bash
pip install odoo-bringout-oca-edi-framework-base_wamas_ubl
```
## Dependencies
This addon depends on:
- base_edi
- base_ubl
## Manifest Information
- **Name**: Base WAMAS UBL
- **Version**: 16.0.1.17.1
- **Category**: Hidden
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/edi-framework](https://github.com/OCA/edi-framework) branch 16.0, addon `base_wamas_ubl`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,89 @@
==============
Base WAMAS UBL
==============
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:f97ed074cb58c152474c9fa18dfea888a7c80aeb70fdf5a516ed2a84becdb1bc
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png
:target: https://odoo-community.org/page/development-status
:alt: Alpha
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fedi-lightgray.png?logo=github
:target: https://github.com/OCA/edi/tree/16.0/base_wamas_ubl
:alt: OCA/edi
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/edi-16-0/edi-16-0-base_wamas_ubl
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/edi&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module contains methods to parse between WAMAS file and UBL file.
.. IMPORTANT::
This is an alpha version, the data model and design can change at any time without warning.
Only for development or testing purpose, do not use in production.
`More details on development status <https://odoo-community.org/page/development-status>`_
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/edi/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/edi/issues/new?body=module:%20base_wamas_ubl%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Camptocamp
* BCIM
Contributors
~~~~~~~~~~~~
* Jacques-Etienne Baudoux <je@bcim.be>
* Tuan Tran <anhtuan@trobz.com>
* Telmo Santos <telmo.santos@camptocamp.com>
Other credits
~~~~~~~~~~~~~
The creation of this module was financially supported by Camptocamp.
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/edi <https://github.com/OCA/edi/tree/16.0/base_wamas_ubl>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import models
from . import wizards

View file

@ -0,0 +1,24 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# Copyright 2023 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Base WAMAS UBL",
"summary": """Base module to aggregate WAMAS - UBL features.""",
"version": "16.0.1.17.1",
"development_status": "Alpha",
"category": "Hidden",
"website": "https://github.com/OCA/edi",
"license": "AGPL-3",
"author": "Camptocamp,BCIM,Odoo Community Association (OCA)",
"depends": ["base_edi", "base_ubl"],
"external_dependencies": {
"python": ["xmltodict", "dotty-dict", "pytz"],
},
"data": [
"security/ir.model.access.csv",
"wizards/wamas_ubl_wiz_check.xml",
"wizards/wamas_ubl_wiz_simulate.xml",
"views/wamas_menu.xml",
],
}

View file

@ -0,0 +1,208 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_wamas_ubl
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_simulate.py:0
#, python-format
msgid "- Error: %s"
msgstr ""
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#, python-format
msgid ""
"- WAMAS Type: %(wamas_type)s\n"
"- Data: %(data)s"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Cancel"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_check_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_check_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check WAMAS File"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_check
msgid "Check WAMAS File Wizard"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_uid
msgid "Created by"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_date
msgid "Created on"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Data"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__display_name
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__display_name
msgid "Display Name"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__id
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__id
msgid "ID"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check____last_update
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate____last_update
msgid "Last Modified on"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_uid
msgid "Last Updated by"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_date
msgid "Last Updated on"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_base_wamas_ubl
msgid "Methods to convert WAMAS to UBL XML files and vice versa"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Only supports FROM telegram type TO telegram type(s) bellow:"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Only supports telegram type(s) bellow:"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__output
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output
msgid "Output"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_file
msgid "Output WAMAS File"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_filename
msgid "Output WAMAS Filename"
msgstr ""
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "Please define wamas message type (msg_type)."
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_simulate_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_simulate_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate WAMAS File"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_simulate
msgid "Simulate WAMAS File Wizard"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__supported_telegram
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__supported_telegram
msgid "Supported Telegram"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Telegram Type"
msgstr ""
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "The data is not valid."
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "This wizard will help you extract data of a WAMAS file into:"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid ""
"This wizard will help you generate (simulating) a new WAMAS file from an "
"existing WAMAS file."
msgstr ""
#. module: base_wamas_ubl
#: model:ir.ui.menu,name:base_wamas_ubl.menu_wamas_parent
msgid "WAMAS"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_file
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_file
msgid "WAMAS File"
msgstr ""
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_filename
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_filename
msgid "WAMAS Filename"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "WAMAS Type"
msgstr ""

View file

@ -0,0 +1,208 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_wamas_ubl
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_simulate.py:0
#, python-format
msgid "- Error: %s"
msgstr "- Greška: %s"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#, python-format
msgid ""
"- WAMAS Type: %(wamas_type)s\n"
"- Data: %(data)s"
msgstr ""
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Cancel"
msgstr "Otkaži"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check"
msgstr "Provjeri"
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_check_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_check_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check WAMAS File"
msgstr "Provjeri WAMAS datoteku"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_check
msgid "Check WAMAS File Wizard"
msgstr "Čarobnjak za provjeru WAMAS datoteke"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Data"
msgstr "Podaci"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__display_name
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__id
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__id
msgid "ID"
msgstr "ID"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check____last_update
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_base_wamas_ubl
msgid "Methods to convert WAMAS to UBL XML files and vice versa"
msgstr "Metode za konverziju WAMAS u UBL XML datoteke i obrnuto"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Only supports FROM telegram type TO telegram type(s) bellow:"
msgstr "Podržava samo OD tipa telegrama DO tipa(ova) telegrama ispod:"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Only supports telegram type(s) bellow:"
msgstr "Podržava samo tipove telegrama ispod:"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__output
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output
msgid "Output"
msgstr "Izlaz"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_file
msgid "Output WAMAS File"
msgstr "Izlazna WAMAS datoteka"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_filename
msgid "Output WAMAS Filename"
msgstr "Izlazni WAMAS naziv datoteke"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "Please define wamas message type (msg_type)."
msgstr "Molimo definirajte wamas tip poruke (msg_type)."
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate"
msgstr "Simuliraj"
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_simulate_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_simulate_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate WAMAS File"
msgstr "Simuliraj WAMAS datoteku"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_simulate
msgid "Simulate WAMAS File Wizard"
msgstr "Čarobnjak za simulaciju WAMAS datoteke"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__supported_telegram
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__supported_telegram
msgid "Supported Telegram"
msgstr "Podržani telegram"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Telegram Type"
msgstr "Tip telegrama"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "The data is not valid."
msgstr "Podaci nisu važeći."
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "This wizard will help you extract data of a WAMAS file into:"
msgstr "Ovaj čarobnjak će vam pomoći da izvučete podatke WAMAS datoteke u:"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid ""
"This wizard will help you generate (simulating) a new WAMAS file from an "
"existing WAMAS file."
msgstr ""
#. module: base_wamas_ubl
#: model:ir.ui.menu,name:base_wamas_ubl.menu_wamas_parent
msgid "WAMAS"
msgstr "WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_file
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_file
msgid "WAMAS File"
msgstr "WAMAS datoteka"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_filename
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_filename
msgid "WAMAS Filename"
msgstr "WAMAS naziv datoteke"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "WAMAS Type"
msgstr "WAMAS tip"

View file

@ -0,0 +1,238 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_wamas_ubl
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-02-15 21:35+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_simulate.py:0
#, python-format
msgid "- Error: %s"
msgstr "- Error: %s"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#, python-format
msgid ""
"- WAMAS Type: %(wamas_type)s\n"
"- Data: %(data)s"
msgstr ""
"- Tipo WAMAS: %(wamas_type)s\n"
"- Datos: %(data)s"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Cancel"
msgstr "Cancelar"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check"
msgstr "Comprobar"
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_check_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_check_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check WAMAS File"
msgstr "Comprobar el archivo WAMAS"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_check
msgid "Check WAMAS File Wizard"
msgstr "Comprobar el Asistente de Archivos WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_date
msgid "Created on"
msgstr "Creado el"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Data"
msgstr "Datos"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__display_name
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__display_name
msgid "Display Name"
msgstr "Mostrar Nombre"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__id
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__id
msgid "ID"
msgstr "ID"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check____last_update
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate____last_update
msgid "Last Modified on"
msgstr "Última Modificación el"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_uid
msgid "Last Updated by"
msgstr "Última Actualización por"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_date
msgid "Last Updated on"
msgstr "Última Actualización el"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_base_wamas_ubl
msgid "Methods to convert WAMAS to UBL XML files and vice versa"
msgstr "Métodos para convertir archivos WAMAS a UBL XML y viceversa"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Only supports FROM telegram type TO telegram type(s) bellow:"
msgstr ""
"Sólo admite el tipo de telegrama DESDE el tipo de telegrama HASTA el tipo o "
"tipos de telegrama(s) siguiente(s):"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Only supports telegram type(s) bellow:"
msgstr "Sólo admite los siguientes tipos de telegramas:"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__output
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output
msgid "Output"
msgstr "Salida"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_file
msgid "Output WAMAS File"
msgstr "Archivo WAMAS de Salida"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_filename
msgid "Output WAMAS Filename"
msgstr "Nombre del Archivo WAMAS de Salida"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "Please define wamas message type (msg_type)."
msgstr "Por favor, defina el tipo de mensaje wamas (msg_type)."
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate"
msgstr "Simular"
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_simulate_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_simulate_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate WAMAS File"
msgstr "Simular Fichero WAMAS"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_simulate
msgid "Simulate WAMAS File Wizard"
msgstr "Asistente de Simulación de Ficheros WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__supported_telegram
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__supported_telegram
msgid "Supported Telegram"
msgstr "Telegram Compatible"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Telegram Type"
msgstr "Tipo de Telegram"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "The data is not valid."
msgstr "Los datos no son válidos."
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "This wizard will help you extract data of a WAMAS file into:"
msgstr "Este asistente le ayudará a extraer los datos de un archivo WAMAS en:"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid ""
"This wizard will help you generate (simulating) a new WAMAS file from an "
"existing WAMAS file."
msgstr ""
"Este asistente le ayudará a generar (simular) un nuevo archivo WAMAS a "
"partir de un archivo WAMAS existente."
#. module: base_wamas_ubl
#: model:ir.ui.menu,name:base_wamas_ubl.menu_wamas_parent
msgid "WAMAS"
msgstr "WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_file
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_file
msgid "WAMAS File"
msgstr "Archivo WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_filename
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_filename
msgid "WAMAS Filename"
msgstr "Nombre de archivo WAMAS"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "WAMAS Type"
msgstr "Tipo WAMAS"
#, python-format
#~ msgid "- Error: Length of line does not match expected length"
#~ msgstr ""
#~ "- Error: La longitud de la línea no coincide con la longitud esperada"
#, python-format
#~ msgid ""
#~ "- WAMAS Type: %(wamas_type)s\n"
#~ "- Telegram Type: %(telegram_type)s\n"
#~ "- Data: %(data)s\n"
#~ " "
#~ msgstr ""
#~ "- Tipo WAMAS: %(wamas_type)s\n"
#~ "- Tipo de telegrama: %(telegram_type)s\n"
#~ "- Datos: %(data)s\n"
#~ " "
#, python-format
#~ msgid "Please define telegram_type."
#~ msgstr "Por favor, defina telegram_type."

View file

@ -0,0 +1,215 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_wamas_ubl
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-08-23 12:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_simulate.py:0
#, python-format
msgid "- Error: %s"
msgstr "- Errore: %s"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/wizards/wamas_ubl_wiz_check.py:0
#, python-format
msgid ""
"- WAMAS Type: %(wamas_type)s\n"
"- Data: %(data)s"
msgstr ""
"- Tipo WAMAS : %(wamas_type)s\n"
"- Dati: %(data)s"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Cancel"
msgstr "Annulla"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check"
msgstr "Controllo"
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_check_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_check_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Check WAMAS File"
msgstr "Controllo file WAMAS"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_check
msgid "Check WAMAS File Wizard"
msgstr "Procedura guidata controllo file WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__create_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__create_date
msgid "Created on"
msgstr "Creato il"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Data"
msgstr "Dati"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__display_name
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__id
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__id
msgid "ID"
msgstr "ID"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check____last_update
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_uid
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__write_date
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_base_wamas_ubl
msgid "Methods to convert WAMAS to UBL XML files and vice versa"
msgstr "Metodi per convertire WAMAS in file XML UBL e vice versa"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Only supports FROM telegram type TO telegram type(s) bellow:"
msgstr "Supporta solo DA tipo telegramma A tipo(i) telegramma sottostanti:"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Only supports telegram type(s) bellow:"
msgstr "Supporta solo tipo(i) telegramma sottostante:"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__output
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output
msgid "Output"
msgstr "Output"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_file
msgid "Output WAMAS File"
msgstr "File output WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__output_wamas_filename
msgid "Output WAMAS Filename"
msgstr "Nome file output WAMAS"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "Please define wamas message type (msg_type)."
msgstr "Definire il tipo messaggio WAMAS (msg_type)."
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate"
msgstr "Simula"
#. module: base_wamas_ubl
#: model:ir.actions.act_window,name:base_wamas_ubl.wamas_ubl_wiz_simulate_action
#: model:ir.ui.menu,name:base_wamas_ubl.wamas_ubl_wiz_simulate_menu
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid "Simulate WAMAS File"
msgstr "Simula file WAMAS"
#. module: base_wamas_ubl
#: model:ir.model,name:base_wamas_ubl.model_wamas_ubl_wiz_simulate
msgid "Simulate WAMAS File Wizard"
msgstr "Procedura guidata simulazione file WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__supported_telegram
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__supported_telegram
msgid "Supported Telegram"
msgstr "Telegramma supportato"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "Telegram Type"
msgstr "Tipo telegramma"
#. module: base_wamas_ubl
#. odoo-python
#: code:addons/base_wamas_ubl/models/base_wamas_ubl.py:0
#, python-format
msgid "The data is not valid."
msgstr "I dati non sono validi."
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "This wizard will help you extract data of a WAMAS file into:"
msgstr "Questa procedura guidata aiuta nell'estrarre dati di un file WAMAS in:"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_simulate_form
msgid ""
"This wizard will help you generate (simulating) a new WAMAS file from an "
"existing WAMAS file."
msgstr ""
"Questa procedura guidata aiuta a generare (simulando) un nuovo file WAMAS da "
"un file WAMAS esistente."
#. module: base_wamas_ubl
#: model:ir.ui.menu,name:base_wamas_ubl.menu_wamas_parent
msgid "WAMAS"
msgstr "WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_file
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_file
msgid "WAMAS File"
msgstr "File WAMAS"
#. module: base_wamas_ubl
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_check__wamas_filename
#: model:ir.model.fields,field_description:base_wamas_ubl.field_wamas_ubl_wiz_simulate__wamas_filename
msgid "WAMAS Filename"
msgstr "Nome file WAMAS"
#. module: base_wamas_ubl
#: model_terms:ir.ui.view,arch_db:base_wamas_ubl.wamas_ubl_wiz_check_form
msgid "WAMAS Type"
msgstr "Tipo WAMAS"

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.dict2wamas $*

View file

@ -0,0 +1,8 @@
#!/usr/bin/sh
./ubl2wamas ../tests/samples/UBL2WAMAS-SAMPLE_AUSK_AUSP-DESPATCH_ADVICE.xml -o ../tests/samples/UBL2WAMAS-SAMPLE_AUSK_AUSP.wamas -t Picking
./ubl2wamas ../tests/samples/UBL2WAMAS-SAMPLE_WEAK_WEAP-DESPATCH_ADVICE.xml -o ../tests/samples/UBL2WAMAS-SAMPLE_WEAK_WEAP.wamas -t Reception
./ubl2wamas ../tests/samples/UBL2WAMAS-SAMPLE_KRETK_KRETP-DESPATCH_ADVICE.xml -o ../tests/samples/UBL2WAMAS-SAMPLE_KRETK_KRETP.wamas -t Return
./wamas2ubl ../tests/samples/WAMAS2UBL-SAMPLE_AUSKQ_WATEKQ_WATEPQ.wamas -o ../tests/samples/WAMAS2UBL-SAMPLE_AUSKQ_WATEKQ_WATEPQ-DESPATCH_ADVICE.xml
./wamas2ubl ../tests/samples/WAMAS2UBL-SAMPLE_WEAKQ_WEAPQ.wamas -o ../tests/samples/WAMAS2UBL-SAMPLE_WEAKQ_WEAPQ-DESPATCH_ADVICE.xml
./wamas2ubl ../tests/samples/WAMAS2UBL-SAMPLE_KRETKQ_KRETPQ.wamas -o ../tests/samples/WAMAS2UBL-SAMPLE_KRETKQ_KRETPQ-DESPATCH_ADVICE.xml

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.tests.test_dict2wamas

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.tests.test_ubl2wamas

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.tests.test_utils

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.tests.test_wamas2dict

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.tests.test_wamas2ubl

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.tests.test_wamas2wamas

View file

@ -0,0 +1,2 @@
#!/usr/bin/sh
/usr/bin/env python3 -m wamas.ubl2wamas $*

View file

@ -0,0 +1,183 @@
from .wamas_grammar import (
art,
arte,
artean,
ausk,
auskq,
ausp,
auspq,
bkorr,
kretk,
kretkq,
kretp,
kretpq,
kst,
kstaus,
lba,
lbabq,
lbaeq,
lbamq,
lst,
watekq,
watepq,
weak,
weakq,
weap,
weapq,
)
##
# WAMAS CONST
##
DEFAULT_TIMEZONE = "Europe/Zurich"
SYSTEM_WAMAS = "WAMAS"
SYSTEM_ERP = "ODOO"
##
# WAMAS FORMAT SPECS
##
TELEGRAM_HEADER_GRAMMAR = {
"Telheader_Quelle": 10,
"Telheader_Ziel": 10,
"Telheader_TelSeq": 6,
"Telheader_AnlZeit": 14,
"Satzart": 9,
}
DICT_DETECT_WAMAS_TYPE = {
"ART": "Product",
"AUSK": "Picking",
"AUSKQ": "PickingResponse",
"AUSPQ": "PickingResponse",
"KRETK": "Return",
"KRETKQ": "ReturnResponse",
"KST": "Customer",
"LST": "Supplier",
"WATEKQ": "PickingResponse",
"WEAK": "Reception",
"WEAKQ": "ReceptionResponse",
"BKORR": "InventoryCorrection",
"LBABQ": "InventoryResponse",
"LBAMQ": "InventoryResponse",
}
##
# WAMAS GRAMMAR
##
DICT_WAMAS_GRAMMAR = {
"ART": art.grammar,
"ARTE": arte.grammar,
"ARTEAN": artean.grammar,
"AUSK": ausk.grammar,
"AUSP": ausp.grammar,
"BKORR": bkorr.grammar,
"KRETK": kretk.grammar,
"KRETP": kretp.grammar,
"WEAK": weak.grammar,
"WEAP": weap.grammar,
"AUSKQ": auskq.grammar,
"AUSPQ": auspq.grammar,
"KRETKQ": kretkq.grammar,
"KRETPQ": kretpq.grammar,
"KST": kst.grammar,
"KSTAUS": kstaus.grammar,
"LBA": lba.grammar,
"LBABQ": lbabq.grammar,
"LBAEQ": lbaeq.grammar,
"LBAMQ": lbamq.grammar,
"LST": lst.grammar,
"WATEKQ": watekq.grammar,
"WATEPQ": watepq.grammar,
"WEAKQ": weakq.grammar,
"WEAPQ": weapq.grammar,
}
##
# WAMAS TO UBL
##
LST_TELEGRAM_TYPE_IGNORE_W2D = ["TOURQ", "TAUSPQ"]
DICT_UBL_TEMPLATE = {
"ReceptionResponse": "ubl_template/reception.xml",
"ReturnResponse": "ubl_template/return.xml",
"PickingResponse": "ubl_template/picking.xml",
}
##
# DICT TO WAMAS
##
SUPPORTED_DICT_TO_WAMAS = {
"Product": ["ART"], # "ARTE", "ARTEAN"],
"Packaging": ["ARTE"],
"Barcode": ["ARTEAN"],
"Customer": ["KST"], # "KSTAUS"],
"CustomerDeliveryPreferences": ["KSTAUS"],
"Supplier": ["LST"],
}
##
# UBL TO WAMAS
##
SUPPORTED_UBL_TO_WAMAS = {
"Reception": ["WEAK", "WEAP"],
"Picking": ["AUSK", "AUSP"],
"Return": ["KRETK", "KRETP"],
}
LST_TELEGRAM_TYPE_SUPPORT_D2W = [
"ART",
"ARTE",
"ARTEAN",
"WEAK",
"WEAP",
"AUSK",
"AUSP",
"BKORR",
"KRETK",
"KRETP",
"KST",
"KSTAUS",
"LBA",
"LBABQ",
"LBAMQ",
"LBAEQ",
"LST",
]
##
# WAMAS TO WAMAS
##
LST_VALID_TELEGRAM_IN = [
"AUSK",
"AUSP",
"KRETK",
"KRETP",
"WATEK",
"WATEP",
"WEAK",
"WEAP",
]
DICT_CONVERT_WAMAS_TYPE = {
"AUSK": ["AUSKQ", "WATEKQ"],
"AUSP": ["AUSPQ", "WATEPQ"],
"KRETK": ["KRETKQ"],
"KRETP": ["KRETPQ"],
"WEAK": ["WEAKQ"],
"WEAP": ["WEAPQ"],
}
DICT_PARENT_KEY = {"WATEKQ": ["IvTek_TeId"]}
DICT_CHILD_KEY = {"WATEPQ": {"IvTep_TeId": "IvTek_TeId"}}

View file

@ -0,0 +1,102 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import argparse
import logging
from ast import literal_eval
from pprint import pformat
from freezegun import freeze_time
from . import const, utils
_logger = logging.getLogger("json2wamas")
SUPPORTED_TYPES = list(const.SUPPORTED_DICT_TO_WAMAS.keys())
def dict2list(dict_input, msg_type):
res = []
if msg_type not in SUPPORTED_TYPES:
raise Exception("Invalid document type: %s" % msg_type)
line_idx = 0
for telegram_type in const.SUPPORTED_DICT_TO_WAMAS[msg_type]:
grammar = const.DICT_WAMAS_GRAMMAR[telegram_type]
# Special case for `KSTAUS`
if telegram_type == "KSTAUS":
# 1 line for `KstAus_LagIdKom = kMEZ`
line_idx += 1
dict_input["picking_zone"] = "kMEZ"
line = utils.generate_wamas_dict(
dict_input,
grammar,
line_idx=line_idx,
)
res.append(line)
# 1 line for `KstAus_LagIdKom = kPAR`
line_idx += 1
dict_input["picking_zone"] = "kPAR"
line = utils.generate_wamas_dict(
dict_input,
grammar,
line_idx=line_idx,
)
res.append(line)
else:
line_idx += 1
line = utils.generate_wamas_dict(
dict_input,
grammar,
line_idx=line_idx,
)
res.append(line)
return res
def dict2wamas(dict_input, msg_type):
lst_of_wamas_dicts = dict2list(dict_input, msg_type)
wamas = "\n".join(utils.wamas_dict2line(d) for d in lst_of_wamas_dicts)
_logger.debug(lst_of_wamas_dicts)
return wamas
@freeze_time("2024-02-11 22:14:22")
def main():
parser = argparse.ArgumentParser(
description="Converts JSON document into message.",
)
parser.add_argument("-v", "--verbose", action="store_true", help="enable debug log")
parser.add_argument(
"-f",
"--format",
default="wamas",
choices=["dict", "wamas"],
help="result format",
)
parser.add_argument(
"-t", "--type", required=True, choices=SUPPORTED_TYPES, help="type of document"
)
parser.add_argument(
"-o", "--output", dest="outputfile", help="write result in this file"
)
parser.add_argument("inputfile", help="read message from this file")
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.DEBUG)
infile = utils.file_open(args.inputfile).read()
infile = literal_eval(infile)
if args.format == "dict":
res = pformat(dict2list(infile, args.type))
else:
res = dict2wamas(infile, args.type)
if args.outputfile:
fd = utils.file_open(args.outputfile, "w")
fd.write(res)
else:
print(res) # pylint: disable=print-used
if __name__ == "__main__":
main()

View file

@ -0,0 +1,231 @@
"""
Extracted from QWeb Framework v0.7
https://github.com/antonylesuisse/qweb/blob/master/qweb_python/qweb/qweb.py
License
-------
Public domain.
"""
import logging
import xml.dom
import xml.dom.minidom
_logger = logging.getLogger("miniqweb")
# ----------------------------------------------------------
# Qweb Xml t-raw t-if t-foreach t-set t-trim
# ----------------------------------------------------------
class QWebEval:
def __init__(self, data):
self.data = data
def __getitem__(self, expr):
if expr in self.data:
return self.data[expr]
r = None
try:
r = eval(expr, self.data) # pylint: disable=W0123
except NameError:
_logger.debug("qweb: name error")
except AttributeError:
_logger.debug("qweb: attribute error")
except Exception as e:
_logger.debug("qweb: expression error '%s' " % expr, e)
if "__builtins__" in self.data:
del self.data["__builtins__"]
return r
def eval_object(self, expr):
return self[expr]
def eval_str(self, expr):
if expr == "0":
return self.data[0]
return str(self[expr])
def eval_format(self, expr):
try:
return str(expr % self)
except Exception:
return "qweb: format error '%s' " % expr
def eval_bool(self, expr):
if self.eval_object(expr):
return 1
else:
return 0
class QWebXml:
"""QWeb Xml templating engine
The templating engine use a very simple syntax, "magic" xml attributes, to
produce any kind of texutal output (even non-xml).
QWebXml:
the template engine core implements the basic magic attributes:
t-att t-raw t-if t-foreach t-set t-trim
"""
def __init__(self, x=None):
self.node = xml.dom.Node
self._t = {}
self._render_tag = {}
prefix = "render_tag_"
for i in [j for j in dir(self) if j.startswith(prefix)]:
name = i[len(prefix) :].replace("_", "-")
self._render_tag[name] = getattr(self.__class__, i)
self._render_att = {}
prefix = "render_att_"
for i in [j for j in dir(self) if j.startswith(prefix)]:
name = i[len(prefix) :].replace("_", "-")
self._render_att[name] = getattr(self.__class__, i)
if x is not None:
self.add_template(x)
def register_tag(self, tag, func):
self._render_tag[tag] = func
def add_template(self, x):
dom = xml.dom.minidom.parseString(x)
self._t = dom
def eval_object(self, expr, v):
return QWebEval(v).eval_object(expr)
def eval_str(self, expr, v):
return QWebEval(v).eval_str(expr)
def eval_format(self, expr, v):
return QWebEval(v).eval_format(expr)
def eval_bool(self, expr, v):
return QWebEval(v).eval_bool(expr)
def render(self, v, out=None):
return self.render_node(self._t.childNodes[0], v)
def render_node(self, e, v):
r = ""
if (
e.nodeType == self.node.TEXT_NODE
or e.nodeType == self.node.CDATA_SECTION_NODE
):
r = e.data
elif e.nodeType == self.node.ELEMENT_NODE:
pre = ""
g_att = ""
t_render = None
t_att = {}
for an, av in e.attributes.items():
if an.startswith("t-"):
for i in self._render_att:
if an[2:].startswith(i):
g_att += self._render_att[i](self, e, an, av, v)
break
else:
if an[2:] in self._render_tag:
t_render = an[2:]
t_att[an[2:]] = av
else:
g_att += ' {}="{}"'.format(an, av)
if t_render:
if t_render in self._render_tag:
r = self._render_tag[t_render](self, e, t_att, g_att, v)
else:
r = self.render_element(e, g_att, v, pre, t_att.get("trim", 0))
return r
def render_element(self, e, g_att, v, pre="", trim=0):
g_inner = []
for n in e.childNodes:
g_inner.append(self.render_node(n, v))
name = str(e.nodeName)
inner = "".join(g_inner)
if trim == 0:
pass
elif trim == "left":
inner = inner.lstrip()
elif trim == "right":
inner = inner.rstrip()
elif trim == "both":
inner = inner.strip()
if name == "t":
return inner
elif len(inner):
return "<{}{}>{}{}</{}>".format(name, g_att, pre, inner, name)
else:
return "<{}{}/>".format(name, g_att)
# Attributes
def render_att_att(self, e, an, av, v):
if an.startswith("t-attf-"):
att, val = an[7:], self.eval_format(av, v)
elif an.startswith("t-att-"):
att, val = (an[6:], self.eval_str(av, v))
else:
att, val = self.eval_object(av, v)
return ' {}="{}"'.format(att, val)
# Tags
def render_tag_raw(self, e, t_att, g_att, v):
return self.eval_str(t_att["raw"], v)
def render_tag_rawf(self, e, t_att, g_att, v):
return self.eval_format(t_att["rawf"], v)
def render_tag_foreach(self, e, t_att, g_att, v):
expr = t_att["foreach"]
enum = self.eval_object(expr, v)
if enum is not None:
var = t_att.get("as", expr).replace(".", "_")
d = v.copy()
size = -1
if isinstance(enum, (list, tuple)):
size = len(enum)
elif hasattr(enum, "count"):
size = enum.count()
d["%s_size" % var] = size
d["%s_all" % var] = enum
index = 0
ru = []
for i in enum:
d["%s_value" % var] = i
d["%s_index" % var] = index
d["%s_first" % var] = index == 0
d["%s_even" % var] = index % 2
d["%s_odd" % var] = (index + 1) % 2
d["%s_last" % var] = index + 1 == size
if index % 2:
d["%s_parity" % var] = "odd"
else:
d["%s_parity" % var] = "even"
if isinstance(i, dict):
d.update(i)
else:
d[var] = i
ru.append(self.render_element(e, g_att, d))
index += 1
return "".join(ru)
else:
return "qweb: t-foreach %s not found." % expr
def render_tag_if(self, e, t_att, g_att, v):
if self.eval_bool(t_att["if"], v):
return self.render_element(e, g_att, v)
else:
return ""
def render_tag_set(self, e, t_att, g_att, v):
if "eval" in t_att:
v[t_att["set"]] = self.eval_object(t_att["eval"], v)
else:
v[t_att["set"]] = self.render_element(e, g_att, v)
return ""

View file

@ -0,0 +1,25 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
_logger = logging.getLogger("wamas")
class obj:
def __init__(self, d):
for k, v in d.items():
if isinstance(v, (list, tuple)):
setattr(self, k, [obj(x) if isinstance(x, dict) else x for x in v])
else:
setattr(self, k, obj(v) if isinstance(v, dict) else v)
class MappingDict(dict):
"""
A dict that returns the key if there's no corresponding value
"""
def __missing__(self, key):
_logger.debug("No mapping found for key: %s", key)
return key

View file

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>1673980/1700802</cbc:ID>
<cbc:Note/>
<cbc:IssueDate>2023-04-30</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>1700802</cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyName>
<cbc:Name></cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName></cbc:StreetName>
<cbc:CityName></cbc:CityName>
<cbc:PostalZone></cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode></cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
<cbc:TaxTypeCode></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name></cbc:Name>
<cbc:Telephone></cbc:Telephone>
<cbc:ElectronicMail></cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name>YourCompany</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>250 Executive Park Blvd, Suite 3400</cbc:StreetName>
<cbc:AdditionalStreetName>AdditionalStreetName_1</cbc:AdditionalStreetName>
<cbc:Department>Department_1</cbc:Department>
<cbc:CityName>San Francisco</cbc:CityName>
<cbc:PostalZone>94134</cbc:PostalZone>
<cbc:CountrySubentity>California</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>US</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
<cbc:TaxTypeCode></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name>Chester Reed</cbc:Name>
<cbc:Telephone>(979)-904-8902</cbc:Telephone>
<cbc:Telefax></cbc:Telefax>
<cbc:ElectronicMail>chester.reed79@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>GE 2/120185</cbc:ID>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2023-04-13</cbc:EndDate>
<cbc:EndTime>11:00:00</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
<cac:Despatch>
<cac:DespatchLocation>
<cbc:ID>Quai-22</cbc:ID>
</cac:DespatchLocation>
</cac:Despatch>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>10001</cbc:ID>
<cbc:DeliveredQuantity unitCode="XBO">1500</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>000011</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cac:SellersItemIdentification>
<cbc:ID>7076</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>WH/PICK/1700802</cbc:ID>
<cbc:Note/>
<cbc:IssueDate>2023-04-30</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>SO1700802</cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cac:Party>
<cac:PartyName>
<cbc:Name>YourCompany</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>250 Executive Park Blvd, Suite 3400</cbc:StreetName>
<cbc:CityName>San Francisco</cbc:CityName>
<cbc:PostalZone>94134</cbc:PostalZone>
<cbc:CountrySubentity>California</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>US</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
<cbc:TaxTypeCode></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name>Chester Reed</cbc:Name>
<cbc:Telephone>(979)-904-8902</cbc:Telephone>
<cbc:Telefax></cbc:Telefax>
<cbc:ElectronicMail>chester.reed79@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name>Name</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>StreetName</cbc:StreetName>
<cbc:Department>Department</cbc:Department>
<cbc:AdditionalStreetName>AdditionalStreetName</cbc:AdditionalStreetName>
<cbc:CityName>San Francisco</cbc:CityName>
<cbc:PostalZone>94134</cbc:PostalZone>
<cbc:CountrySubentity>California</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>US</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
<cbc:TaxTypeCode></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name></cbc:Name>
<cbc:Telephone>(979)-904-8902</cbc:Telephone>
<cbc:Telefax></cbc:Telefax>
<cbc:ElectronicMail>chester.reed79@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>GE 2/120185</cbc:ID>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2023-04-13</cbc:EndDate>
<cbc:EndTime>11:00:00</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
<cac:Despatch>
<cac:DespatchLocation>
<cbc:ID>Quai-22</cbc:ID>
</cac:DespatchLocation>
</cac:Despatch>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>10001</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET">1500</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:SellersItemIdentification>
<cbc:ID>7076</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>10002</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT">50</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:SellersItemIdentification>
<cbc:ID>5225</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,3 @@
ODOO WAMAS 00000120230501020000AUSK00056000WH/PICK/1700802 ODOO SO1700802 000 Name Department StreetName AdditionalStreetName 94134 San Francisco (979)-904-8902 Name Department StreetName AdditionalStreetName 94134 San Francisco California US (979)-904-8902 chester.reed79@example.com 20230413130000Quai-22 FRUEH FRUEHGE 2/120185 ODOO 00000000000000000000000000 CAM 001 ST Def_Strat
ODOO WAMAS 00000220230501020000AUSP00054000WH/PICK/1700802 ODOO 0100010007076 00000 DISPONIBLE 0000000000000000000000000000 000001500000PET 00000000000000 NN N 0000N
ODOO WAMAS 00000320230501020000AUSP00054000WH/PICK/1700802 ODOO 0100020005225 00000 DISPONIBLE 0000000000000000000000000000 000000050000BOUT 00000000000000 NN N 0000N

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>WH/IN-RET/000235</cbc:ID>
<cbc:Note/>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>SO001243</cbc:ID>
<cbc:IssueDate>2023-04-27</cbc:IssueDate>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID>1040</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name>MyCompany</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>StreetName</cbc:StreetName>
<cbc:Department>Department</cbc:Department>
<cbc:AdditionalStreetName>AdditionalStreetName</cbc:AdditionalStreetName>
<cbc:CityName>Turlock</cbc:CityName>
<cbc:PostalZone>95380</cbc:PostalZone>
<cbc:CountrySubentity>California</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>US</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone>(623)-853-7197</cbc:Telephone>
<cbc:Telefax></cbc:Telefax>
<cbc:ElectronicMail>wood.corner26@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name>YourCompany</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>250 Executive Park Blvd, Suite 3400</cbc:StreetName>
<cbc:AdditionalStreetName>AdditionalStreetName_1</cbc:AdditionalStreetName>
<cbc:Department>Department_1</cbc:Department>
<cbc:CityName>San Francisco</cbc:CityName>
<cbc:PostalZone>94134</cbc:PostalZone>
<cbc:CountrySubentity>California</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>US</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
<cbc:TaxTypeCode></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name>Chester Reed</cbc:Name>
<cbc:Telephone>(979)-904-8902</cbc:Telephone>
<cbc:Telefax></cbc:Telefax>
<cbc:ElectronicMail>chester.reed79@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>130377</cbc:ID>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2023-05-01</cbc:EndDate>
<cbc:EndTime>14:00:00</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>0001</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT">1536</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1151</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0002</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET">5184</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1156</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0003</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT">3840</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID>0003</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1160</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0004</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET">3072</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1162</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0005</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET">3024</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1176</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,6 @@
ODOO WAMAS 00000120230501020000KRETK0051000WH/IN-RET/000235 ODOO SO001243 RETCLI0001040 MyCompany Department StreetName AdditionalStreetName 95380 Turlock US (623)-853-7197 wood.corner26@example.com SF-EM-RETCLI 20230501160000
ODOO WAMAS 00000220230501020000KRETP0046000WH/IN-RET/000235 ODOO SO001243 0000010001151 00000DISPONIBLE 000001536000BOUT N
ODOO WAMAS 00000320230501020000KRETP0046000WH/IN-RET/000235 ODOO SO001243 0000020001156 00000DISPONIBLE 000005184000PET N
ODOO WAMAS 00000420230501020000KRETP0046000WH/IN-RET/000235 ODOO SO001243 0000030001160 00000DISPONIBLE 000003840000BOUT N
ODOO WAMAS 00000520230501020000KRETP0046000WH/IN-RET/000235 ODOO SO001243 0000040001162 00000DISPONIBLE 000003072000PET N
ODOO WAMAS 00000620230501020000KRETP0046000WH/IN-RET/000235 ODOO SO001243 0000050001176 00000DISPONIBLE 000003024000PET N

View file

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?>
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>WH/IN/000377</cbc:ID>
<cbc:Note/>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>PO001040</cbc:ID>
<cbc:IssueDate>2023-04-27</cbc:IssueDate>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID>1040</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name>MyCompany</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>StreetName</cbc:StreetName>
<cbc:Department>Department</cbc:Department>
<cbc:AdditionalStreetName>AdditionalStreetName</cbc:AdditionalStreetName>
<cbc:CityName>Turlock</cbc:CityName>
<cbc:PostalZone>95380</cbc:PostalZone>
<cbc:CountrySubentity>California</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>US</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone>(623)-853-7197</cbc:Telephone>
<cbc:Telefax></cbc:Telefax>
<cbc:ElectronicMail>wood.corner26@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name>YourCompany</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>250 Executive Park Blvd, Suite 3400</cbc:StreetName>
<cbc:CityName>San Francisco</cbc:CityName>
<cbc:PostalZone>94134</cbc:PostalZone>
<cbc:CountrySubentity>California</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>US</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID></cbc:ID>
<cbc:TaxTypeCode></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name>Chester Reed</cbc:Name>
<cbc:Telephone>(979)-904-8902</cbc:Telephone>
<cbc:Telefax></cbc:Telefax>
<cbc:ElectronicMail>chester.reed79@example.com</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>130377</cbc:ID>
<cac:Delivery>
<cac:PromiseDeliveryPeriod>
<cbc:EndDate>2023-05-02</cbc:EndDate>
<cbc:EndTime>15:00:00</cbc:EndTime>
</cac:PromiseDeliveryPeriod>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2023-05-01</cbc:EndDate>
<cbc:EndTime>14:00:00</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>0001</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT">1536</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1151</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>7910063</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0002</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET">5184</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1156</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>7910105</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0003</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT">3840</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1160</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>7910004</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0004</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET">3072</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1162</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>12156876</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
<cac:DespatchLine>
<cbc:ID>0005</cbc:ID>
<cbc:DeliveredQuantity unitCode="XBO">3024</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1176</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>7910044</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,6 @@
ODOO WAMAS 00000120230501020000WEAK00050000WH/IN/000377 ODOO PO001040 STDMAN0001040 MyCompany Department StreetName AdditionalStreetName 95380 Turlock US (623)-853-7197 wood.corner26@example.com 20230502170000
ODOO WAMAS 00000220230501020000WEAP00045000WH/IN/000377 ODOO PO001040 0000010001151 00000 NDISPONIBLE 000001536000BOUT NORMAL 20230501020000 202305011600007910063 NNLG
ODOO WAMAS 00000320230501020000WEAP00045000WH/IN/000377 ODOO PO001040 0000020001156 00000 NDISPONIBLE 000005184000PET NORMAL 20230501020000 202305011600007910105 NNLG
ODOO WAMAS 00000420230501020000WEAP00045000WH/IN/000377 ODOO PO001040 0000030001160 00000 NDISPONIBLE 000003840000BOUT NORMAL 20230501020000 202305011600007910004 NNLG
ODOO WAMAS 00000520230501020000WEAP00045000WH/IN/000377 ODOO PO001040 0000040001162 00000 NDISPONIBLE 000003072000PET NORMAL 20230501020000 2023050116000012156876 NNLG
ODOO WAMAS 00000620230501020000WEAP00045000WH/IN/000377 ODOO PO001040 0000050001176 00000 NDISPONIBLE 000003024000XBO NORMAL 20230501020000 202305011600007910044 NNLG

View file

@ -0,0 +1,162 @@
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>1673982/1701778</cbc:ID>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>1673982/1701778</cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID/>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID/>
<cac:TaxScheme>
<cbc:ID/>
<cbc:TaxTypeCode/>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name/>
<cbc:Telephone/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeName="ODOO:ID">4009542</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cbc:CountrySubentity/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID/>
<cac:TaxScheme>
<cbc:ID/>
<cbc:TaxTypeCode/>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name/>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID>GE 2/120185</cbc:ID>
</cac:Shipment>
<cac:DespatchLine>
<cac:Shipment>
<cac:TransportHandlingUnit>
<cac:ActualPackage>
<cbc:ID>376401426411929180</cbc:ID>
</cac:ActualPackage>
<cbc:TransportHandlingUnitTypeCode>PE</cbc:TransportHandlingUnitTypeCode>
</cac:TransportHandlingUnit>
<cac:GrossWeightMeasure>
<cbc:Measure>314.7</cbc:Measure>
</cac:GrossWeightMeasure>
</cac:Shipment>
<cbc:ID>101</cbc:ID>
<cbc:DeliveredQuantity unitCode="TETRA" unitCodeListAgencyName="WAMAS">
7.0
</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID/>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>
15455
</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cac:Shipment>
<cac:TransportHandlingUnit>
<cac:ActualPackage>
<cbc:ID>376401426411929180</cbc:ID>
</cac:ActualPackage>
<cbc:TransportHandlingUnitTypeCode>PE</cbc:TransportHandlingUnitTypeCode>
</cac:TransportHandlingUnit>
<cac:GrossWeightMeasure>
<cbc:Measure>314.7</cbc:Measure>
</cac:GrossWeightMeasure>
</cac:Shipment>
<cbc:ID>102</cbc:ID>
<cbc:DeliveredQuantity unitCode="TETRA" unitCodeListAgencyName="WAMAS">
8.0
</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID/>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>
15455
</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cac:Shipment>
<cac:TransportHandlingUnit>
<cac:ActualPackage>
<cbc:ID>376401426411929180</cbc:ID>
</cac:ActualPackage>
<cbc:TransportHandlingUnitTypeCode>PE</cbc:TransportHandlingUnitTypeCode>
</cac:TransportHandlingUnit>
<cac:GrossWeightMeasure>
<cbc:Measure>314.7</cbc:Measure>
</cac:GrossWeightMeasure>
</cac:Shipment>
<cbc:ID>103</cbc:ID>
<cbc:DeliveredQuantity unitCode="TETRA" unitCodeListAgencyName="WAMAS">
0.0
</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID/>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>
15455
</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,5 @@
WAMAS ODOO 00005620230413110200AUSKQ00520001673982/1701778 HOST 1673982/1701778 0004009542 202304140000002023041305252320230413110128GE 2/120185 HOST
WAMAS ODOO 00000120230413110200WATEKQ054376401426411929180QUAI-22 000000000000000000000000 0000GE 2/120185 HOST PE 000740ST9016000000314700
WAMAS ODOO 00000220230413110200WATEPQ050 20240413 12 eCAM 008610 NN20240413000001TETRA 0001673982/1701778 HOST 00010100015455 00000000000007000000000000000DISPONIBLE 376401426411929180
WAMAS ODOO 00000320230413110200WATEPQ050 20240413 12 eCAM 008610 NN20240413000001TETRA 0001673982/1701778 HOST 00010200015455 00000000000008000000000000000DISPONIBLE 376401426411929180
WAMAS ODOO 00000420230413110200WATEPQ050 20240413 12 eCAM 008610 NN20240413000001TETRA 0001673982/1701778 HOST 00010300015455 00000000000000000000000000000DISPONIBLE 376401426411929180

View file

@ -0,0 +1,169 @@
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>ABCDE/IN/00424</cbc:ID>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>000185</cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID>1069</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cbc:CountrySubentity/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID/>
<cac:TaxScheme>
<cbc:ID/>
<cbc:TaxTypeCode/>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name/>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID/>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2025-01-14</cbc:EndDate>
<cbc:EndTime>12:13:23</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>1</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT" unitCodeListAgencyName="WAMAS">100.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>99098 2</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>ABCDE/IN/00409</cbc:ID>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>000176</cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID>1069</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cbc:CountrySubentity/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID/>
<cac:TaxScheme>
<cbc:ID/>
<cbc:TaxTypeCode/>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name/>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID/>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2025-01-14</cbc:EndDate>
<cbc:EndTime>12:13:23</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>1</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT" unitCodeListAgencyName="WAMAS">114.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>12766</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>1</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT" unitCodeListAgencyName="WAMAS">115.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>12766</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,4 @@
WAMAS ODOO 00000720250114132733WEAKQ0051000212712 ODOO 20250114070918 19700101010000202501140710472025011413132320250114070939 0001069
WAMAS ODOO 00000820250114132733WEAPQ0050000212712 000ABCDE/IN/00424 ODOO 000185 0000019623 00099098 2 00000DISPONIBLE 000000100000000000000000 BOUT 19700101 12 eCAM 173980 N
WAMAS ODOO 00000920250114132733WEAPQ0050000212712 000ABCDE/IN/00409 ODOO 000176 0000019623 00012766 00000DISPONIBLE 000000114000000000000000 BOUT 19700101 12 eCAM 173970 N
WAMAS ODOO 00001020250114132733WEAPQ0050000212712 000ABCDE/IN/00409 ODOO 000176 0000019623 00012766 00000DISPONIBLE 000000115000000000000000 BOUT 19700101 12 eCAM 173970 N

View file

@ -0,0 +1,202 @@
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>1683399</cbc:ID>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>1712149</cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID>4026234</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cbc:CountrySubentity/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID/>
<cac:TaxScheme>
<cbc:ID/>
<cbc:TaxTypeCode/>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name/>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID/>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2023-05-10</cbc:EndDate>
<cbc:EndTime>09:54:47</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>10</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">108.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1172</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>20</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">36.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1272</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>30</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">48.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>16076</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>40</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">72.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>22876</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>50</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">60.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>25676</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>1683288</cbc:ID>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID>1711980</cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID>4007720</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cbc:CountrySubentity/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID/>
<cac:TaxScheme>
<cbc:ID/>
<cbc:TaxTypeCode/>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name/>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID/>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2023-05-10</cbc:EndDate>
<cbc:EndTime>09:57:14</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>10</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT" unitCodeListAgencyName="WAMAS">144.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>8060</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,8 @@
WAMAS ODOO 00000120230510115944KRETKQ0500001683399 HOST 1712149 0004026234 202305101026402023051011102920230510115447
WAMAS ODOO 00000220230510115944KRETPQ0500001683399 HOST 1712149 0000100001172 00000DISPONIBLE 000000108000000000000000 PET 19700101
WAMAS ODOO 00000320230510115944KRETPQ0500001683399 HOST 1712149 0000200001272 00000DISPONIBLE 000000036000000000000000 PET 19700101
WAMAS ODOO 00000420230510115944KRETPQ0500001683399 HOST 1712149 00003000016076 00000DISPONIBLE 000000048000000000000000 PET 19700101
WAMAS ODOO 00000520230510115944KRETPQ0500001683399 HOST 1712149 00004000022876 00000DISPONIBLE 000000072000000000000000 PET 19700101
WAMAS ODOO 00000620230510115944KRETPQ0500001683399 HOST 1712149 00005000025676 00000DISPONIBLE 000000060000000000000000 PET 19700101
WAMAS ODOO 00000720230510115944KRETKQ0500001683288 HOST 1711980 0004007720 202305100810092023051011562820230510115714
WAMAS ODOO 00000820230510115944KRETPQ0500001683288 HOST 1711980 0000100008060 00000DISPONIBLE 000000144000000000000000 BOUT 19700101

View file

@ -0,0 +1,123 @@
<DespatchAdvice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID>130377</cbc:ID>
<cbc:IssueDate>2023-05-01</cbc:IssueDate>
<cac:OrderReference>
<cbc:ID/>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID>1040</cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name/>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName/>
<cbc:CityName/>
<cbc:PostalZone/>
<cbc:CountrySubentity/>
<cac:Country>
<cbc:IdentificationCode/>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID/>
<cac:TaxScheme>
<cbc:ID/>
<cbc:TaxTypeCode/>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name/>
<cbc:Telephone/>
<cbc:Telefax/>
<cbc:ElectronicMail/>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID/>
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate>2023-05-01</cbc:EndDate>
<cbc:EndTime>04:43:39</cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine>
<cbc:ID>20</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT" unitCodeListAgencyName="WAMAS">1536.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1151</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>30</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">5184.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1156</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>40</cbc:ID>
<cbc:DeliveredQuantity unitCode="BOUT" unitCodeListAgencyName="WAMAS">3840.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1160</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>50</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">3072.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1162</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine><cac:DespatchLine>
<cbc:ID>60</cbc:ID>
<cbc:DeliveredQuantity unitCode="PET" unitCodeListAgencyName="WAMAS">3024.0</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID/>
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID>1176</cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,6 @@
WAMAS ODOO 00000120230501065723WEAKQ0051000196241 HOST 20230501060217 19700101010000202305010609112023050106433920230501060221 0001040
WAMAS ODOO 00000220230501065723WEAPQ0050000196241 000130377 HOST 00002045415 0001151 00000DISPONIBLE 000001536000000000000000 BOUT 19700101 12 eCAM 018090 N
WAMAS ODOO 00000320230501065723WEAPQ0050000196241 000130377 HOST 00003045415 0001156 00000DISPONIBLE 000005184000000000000000 PET 19700101 12 eCAM 018090 N
WAMAS ODOO 00000420230501065723WEAPQ0050000196241 000130377 HOST 00004045415 0001160 00000DISPONIBLE 000003840000000000000000 BOUT 19700101 12 eCAM 018090 N
WAMAS ODOO 00000520230501065723WEAPQ0050000196241 000130377 HOST 00005045415 0001162 00000DISPONIBLE 000003072000000000000000 PET 19700101 12 eCAM 018090 N
WAMAS ODOO 00000620230501065723WEAPQ0050000196241 000130377 HOST 00006045415 0001176 00000DISPONIBLE 000003024000000000000000 PET 19700101 12 eCAM 018090 N

View file

@ -0,0 +1,13 @@
{
"ref": "0001",
"name": "Adam Smith",
"street": "3273 Laurel Lane",
"street2": "",
"zip": "79782",
"city": "Sand Springs",
"state": "Texas",
"country_code": "US",
"phone": "432-393-1264",
"email": "aaa",
"street": "adam@dayrep.com",
}

View file

@ -0,0 +1,6 @@
{
"ref": "223224",
"wamas_code": "PE/PP/RO",
"priority_sequence": 0,
"game_identifier": "N",
}

View file

@ -0,0 +1 @@
ODOO WAMAS 00000120240211231422LST0000510000001 Adam Smith adam@dayrep.com 79782 Sand Springs Texas US 432-393-1264 aaa Standard 0N JStandard N

View file

@ -0,0 +1,2 @@
ODOO WAMAS 00000120240211231532KSTAUS050000223224 PE/PP/RO kMEZ 0 N
ODOO WAMAS 00000220240211231532KSTAUS050000223224 PE/PP/RO kPAR 0 N

View file

@ -0,0 +1,20 @@
{'WATEKQ': [OrderedDict([('Telheader_Quelle', 'WAMAS'),
('Telheader_Ziel', 'SYSLOG'),
('Telheader_TelSeq', 1),
('Telheader_AnlZeit', '20230413110200'),
('Satzart', 'WATEKQ054'),
('IvTek_TeId', '376401426411929180'),
('IvTek_Pos_FeldId', 'QUAI-22'),
('IvTek_Pos_Offs_L_X', 0),
('IvTek_Pos_Offs_L_Y', 0),
('IvTek_Pos_Offs_L_Z', 0),
('IvTek_Stamm_TeId', ''),
('AnzSubTe', 0),
('IvTourp_TOUR_TourId_TourNr', 'GE 2/120185'),
('IvTourp_TOUR_TourId_HostTourKz', 'HOST'),
('IvTts_THM_ThmId', 'PE'),
('IvTts_MaxLadeHoehe', 740),
('IvTour_VAST_Versandart', 'ST'),
('IvTourp_TOUR_TourId_IntLfdNr', 9016),
('IvTek_GesGew', 314.7),
('IvTourp_LiefSNr', '')])]}

View file

@ -0,0 +1 @@
WAMAS SYSLOG 00000120230413110200WATEKQ054376401426411929180QUAI-22 000000000000000000000000 0000GE 2/120185 HOST PE 000740ST9016000000314700

View file

@ -0,0 +1,26 @@
{'WATEPQ': [OrderedDict([('Telheader_Quelle', 'WAMAS'),
('Telheader_Ziel', 'SYSLOG'),
('Telheader_TelSeq', 24),
('Telheader_AnlZeit', '20230413110200'),
('Satzart', 'WATEPQ050'),
('IvTep_MId_Charge', '2723041Aé°°²¹370150'),
('IvTep_MId_MHD', '20250210'),
('IvTep_MId_ResNr', ''),
('IvTep_MId_WeNr', '12 eCAM 013370'),
('IvTep_MId_ThmKz', 'N'),
('IvTep_PrimThmKz', 'N'),
('IvTep_FifoDatum', '20250210'),
('IvTep_PosNr', 7),
('IvArt_Bestand_Einheit', 'PET'),
('IvArt_HOSTUNITS_HostEinh', ''),
('IvAusp_UrAusId_Mand', '000'),
('IvAusp_UrAusId_AusNr', '1673981/1700809'),
('IvAusp_UrAusId_HostAusKz', 'HOST'),
('IvAusp_HostPosNr', 61),
('IvArt_AId_Mand', '000'),
('IvArt_AId_ArtNr', '7055'),
('IvArt_AId_Var', '00000'),
('Mngs_Mng', 90.0),
('Mngs_Gew', 0.0),
('IvMatqk_HMATQ_HMatQ', 'DISPONIBLE'),
('IvTep_TeId', '376401426411929081')])]}

View file

@ -0,0 +1 @@
WAMAS SYSLOG 00002420230413110200WATEPQ0502723041Aé°°˛š370150 20250210 12 eCAM 013370 NN20250210000007PET 0001673981/1700809 HOST 0000610007055 00000000000090000000000000000DISPONIBLE 376401426411929081

View file

@ -0,0 +1,26 @@
{'WATEPQ': [OrderedDict([('Telheader_Quelle', 'WAMAS'),
('Telheader_Ziel', 'SYSLOG'),
('Telheader_TelSeq', 11),
('Telheader_AnlZeit', '20230413110200'),
('Satzart', 'WATEPQ050'),
('IvTep_MId_Charge', ''),
('IvTep_MId_MHD', '20231231'),
('IvTep_MId_ResNr', ''),
('IvTep_MId_WeNr', '12 eCAM 014020'),
('IvTep_MId_ThmKz', 'N'),
('IvTep_PrimThmKz', 'N'),
('IvTep_FifoDatum', '20231231'),
('IvTep_PosNr', 10),
('IvArt_Bestand_Einheit', 'PET'),
('IvArt_HOSTUNITS_HostEinh', ''),
('IvAusp_UrAusId_Mand', '000'),
('IvAusp_UrAusId_AusNr', '1673982/1701778'),
('IvAusp_UrAusId_HostAusKz', 'HOST'),
('IvAusp_HostPosNr', 21),
('IvArt_AId_Mand', '000'),
('IvArt_AId_ArtNr', '1176'),
('IvArt_AId_Var', '00000'),
('Mngs_Mng', 30.0),
('Mngs_Gew', 0.0),
('IvMatqk_HMATQ_HMatQ', 'DISPONIBLE'),
('IvTep_TeId', '376401426411929180')])]}

View file

@ -0,0 +1 @@
WAMAS SYSLOG 00001120230413110200WATEPQ050 20231231 12 eCAM 014020 NN20231231000010PET 0001673982/1701778 HOST 0000210001176 00000000000030000000000000000DISPONIBLE 376401426411929180

View file

@ -0,0 +1,21 @@
{'WATEPQ': [{'IvArt_AId_ArtNr': '34155',
'IvArt_AId_Mand': '000',
'IvArt_AId_Var': '00000',
'IvArt_Bestand_Einheit': 'PET',
'IvArt_HOSTUNITS_HostEinh': '',
'IvAusp_HostPosNr': '000131',
'IvAusp_UrAusId_AusNr': '1673982/1701778',
'IvAusp_UrAusId_HostAusKz': 'HOST',
'IvAusp_UrAusId_Mand': '000',
'IvMatqk_HMATQ_HMatQ': 'DISPONIBLE',
'IvTep_FifoDatum': '20240202',
'IvTep_MId_Charge': '6423033A370063',
'IvTep_MId_MHD': '20240202',
'IvTep_MId_ResNr': '',
'IvTep_MId_ThmKz': 'N',
'IvTep_MId_WeNr': '12 eCAM 012210',
'IvTep_PosNr': '000011',
'IvTep_PrimThmKz': 'N',
'IvTep_TeId': '376401426411929180',
'Mngs_Gew': '000000000000',
'Mngs_Mng': '000000048000'}]}

View file

@ -0,0 +1 @@
WAMAS SYSLOG 00001220230413110200WATEPQ0506423033A鰰<41><E9B0B0>370063 20240202 12 eCAM 012210 NN20240202000011PET 0001673982/1701778 HOST 00013100034155 00000000000048000000000000000DISPONIBLE 376401426411929180

View file

@ -0,0 +1,4 @@
WAMAS SYSLOG 00000120230413110200WATEKQ054376401426411929180QUAI-22 000000000000000000000000 0000GE 2/120185 HOST PE 000740ST9016000000314700
WAMAS SYSLOG 00001620230413110200WATEPQ050 20231030 12 eCAM 012630 NN20231030000015PET 0001673982/1701778 HOST 00015100053126 00000000000096000000000000000DISPONIBLE 376401426411929180
WAMAS SYSLOG 00005620230413110200AUSKQ00520001673982/1701778 HOST 1701778 0004009542 202304140000002023041305252320230413110128GE 2/120185 HOST
WAMAS SYSLOG 00005720230413110200AUSPQ00510001673982/1701778 HOST 1701778 00001100022056 00000DISPONIBLE 000000048000000000000000 PET 19700101 N

View file

@ -0,0 +1,6 @@
ODOO WAMAS 00000120230501000000KRETK0051000130377 HOST STDMAN0001040 MyCompany 1839 Arbor Way California 95380 Turlock US (623)-853-7197 wood.corner26@example.com 20230427000000
ODOO WAMAS 00000220230501000000KRETP0046000130377 HOST 0000200001151 0000020001151 00000DISPONIBLE 000001536000BOUT N
ODOO WAMAS 00000320230501000000KRETP0046000130377 HOST 0000300001156 0000030001156 00000DISPONIBLE 000005184000PET N
ODOO WAMAS 00000420230501000000KRETP0046000130377 HOST 0000400001160 0000040001160 00000DISPONIBLE 000003840000BOUT N
ODOO WAMAS 00000520230501000000KRETP0046000130377 HOST 0000500001162 0000050001162 00000DISPONIBLE 000003072000PET N
ODOO WAMAS 00000620230501000000KRETP0046000130377 HOST 0000600001176 0000060001176 00000DISPONIBLE 000003024000PET N

View file

@ -0,0 +1,6 @@
ODOO WAMAS 00000120230501000000KRETK0051000130377 HOST STDMAN0001040 MyCompany 1839 Arbor Way California 95380 Turlock US (623)-853-7197 wood.corner26@example.com 20230427000000
ODOO WAMAS 00000220230501000000KRETP0046000130377 HOST 0000200001151 0000020001151 00000DISPONIBLE 000001536000BOUT N
ODOO WAMAS 00000320230501000000KRETP0046000130377 HOST 0000300001156 0000030001156 00000DISPONIBLE 000005184000PET N
ODOO WAMAS 00000420230501000000KRETP0046000130377 HOST 0000400001160 0000040001160 00000DISPONIBLE 000003840000BOUT N
ODOO WAMAS 00000520230501000000KRETP0046000130377 HOST 0000500001162 0000050001162 00000DISPONIBLE 000003072000PET N
ODOO WAMAS 00000620230501000000KRETP0046000130377 HOST 0000600001176 0000060001176 00000DISPONIBLE 000003024000PET N

View file

@ -0,0 +1,6 @@
ODOO WAMAS 00000120230501000000KRETK0051000130377 HOST STDMAN0001040 MyCompany 1839 Arbor Way California 95380 Turlock US (623)-853-7197 wood.corner26@example.com 20230427000000
ODOO WAMAS 00000220230501000000KRETP0046000130377 HOST 0000200001151 0000020001151 00000DISPONIBLE 000001536000BOUT N
ODOO WAMAS 00000320230501000000KRETP0046000130377 HOST 0000300001156 0000030001156 00000DISPONIBLE 000005184000PET N
ODOO WAMAS 00000420230501000000KRETP0046000130377 HOST 0000400001160 0000040001160 00000DISPONIBLE 000003840000BOUT N
ODOO WAMAS 00000520230501000000KRETP0046000130377 HOST 0000500001162 0000050001162 00000DISPONIBLE 000003072000PET N
ODOO WAMAS 00000620230501000000KRETP0046000130377 HOST 0000600001176 0000060001176 00000DISPONIBLE 000003024000PET N

View file

@ -0,0 +1,6 @@
SYSLOG WAMAS 00000120231220091116WEAK00050000130377 HOST STDMAN0001040 Nestlé Waters Suisse SA Route de la Gare 1 Case postale 1525 Henniez +41 848 677 677 +41 26 668 68 68 customerservice.ch@waters.nestle.com 20230427000000
SYSLOG WAMAS 00002020231220091116WEAP00045000130377 HOST 0000200001151 00000 NDISPONIBLE 000001536000BOUT NORMAL 20230501000000 202305010000007910063 NNLG
SYSLOG WAMAS 00003020231220091116WEAP00045000130377 HOST 0000300001156 00000 NDISPONIBLE 000005184000PET NORMAL 20230501000000 202305010000007910105 NNLG
SYSLOG WAMAS 00004020231220091116WEAP00045000130377 HOST 0000400001160 00000 NDISPONIBLE 000003840000BOUT NORMAL 20230501000000 202305010000007910004 NNLG
SYSLOG WAMAS 00005020231220091116WEAP00045000130377 HOST 0000500001162 00000 NDISPONIBLE 000003072000PET NORMAL 20230501000000 2023050100000012156876 NNLG
SYSLOG WAMAS 00006020231220091116WEAP00045000130377 HOST 0000600001176 00000 NDISPONIBLE 000003024000PET NORMAL 20230501000000 202305010000007910044 NNLG

View file

@ -0,0 +1,6 @@
SYSLOG WAMAS 00000120231220091116WEAK00050000130377 HOST STDMAN0001040 Nestlé Waters Suisse SA Route de la Gare 1 Case postale 1525 Henniez +41 848 677 677 +41 26 668 68 68 customerservice.ch@waters.nestle.com 20230427000000
SYSLOG WAMAS 00002020231220091116WEAP00045000130377 HOST 0000200001151 00000 NDISPONIBLE 000001536000BOUT NORMAL 20230501000000 202305010000007910063 NNLG
SYSLOG WAMAS 00003020231220091116WEAP00045000130377 HOST 0000300001156 00000 NDISPONIBLE 000005184000PET NORMAL 20230501000000 202305010000007910105 NNLG
SYSLOG WAMAS 00004020231220091116WEAP00045000130377 HOST 0000400001160 00000 NDISPONIBLE 000003840000BOUT NORMAL 20230501000000 202305010000007910004 NNLG
SYSLOG WAMAS 00005020231220091116WEAP00045000130377 HOST 0000500001162 00000 NDISPONIBLE 000003072000PET NORMAL 20230501000000 2023050100000012156876 NNLG
SYSLOG WAMAS 00006020231220091116WEAP00045000130377 HOST 0000600001176 00000 NDISPONIBLE 000003024000PET NORMAL 20230501000000 202305010000007910044 NNLG

View file

@ -0,0 +1,6 @@
SYSLOG WAMAS 00000120231220091116WEAK00050000130377 HOST STDMAN0001040 Nestlé Waters Suisse SA Route de la Gare 1 Case postale 1525 Henniez +41 848 677 677 +41 26 668 68 68 customerservice.ch@waters.nestle.com 20230427000000
SYSLOG WAMAS 00002020231220091116WEAP00045000130377 HOST 0000200001151 00000 NDISPONIBLE 000001536000BOUT NORMAL 20230501000000 202305010000007910063 NNLG
SYSLOG WAMAS 00003020231220091116WEAP00045000130377 HOST 0000300001156 00000 NDISPONIBLE 000005184000PET NORMAL 20230501000000 202305010000007910105 NNLG
SYSLOG WAMAS 00004020231220091116WEAP00045000130377 HOST 0000400001160 00000 NDISPONIBLE 000003840000BOUT NORMAL 20230501000000 202305010000007910004 NNLG
SYSLOG WAMAS 00005020231220091116WEAP00045000130377 HOST 0000500001162 00000 NDISPONIBLE 000003072000PET NORMAL 20230501000000 2023050100000012156876 NNLG
SYSLOG WAMAS 00006020231220091116WEAP00045000130377 HOST 0000600001176 00000 NDISPONIBLE 000003024000PET NORMAL 20230501000000 202305010000007910044 NNLG

View file

@ -0,0 +1,6 @@
WAMAS ODOO 00000120231220091116KRETKQ050000130377 HOST 0001040 202304270000002023042708000020230427180000
WAMAS ODOO 00000220231220091116KRETPQ050000130377 HOST 0000200001151 0000020001151 00000DISPONIBLE 000001536000000000000000 BOUT 19700101
WAMAS ODOO 00000320231220091116KRETPQ050000130377 HOST 0000300001156 0000030001156 00000DISPONIBLE 000005184000000000000000 PET 19700101
WAMAS ODOO 00000420231220091116KRETPQ050000130377 HOST 0000400001160 0000040001160 00000DISPONIBLE 000003840000000000000000 BOUT 19700101
WAMAS ODOO 00000520231220091116KRETPQ050000130377 HOST 0000500001162 0000050001162 00000DISPONIBLE 000003072000000000000000 PET 19700101
WAMAS ODOO 00000620231220091116KRETPQ050000130377 HOST 0000600001176 0000060001176 00000DISPONIBLE 000003024000000000000000 PET 19700101

View file

@ -0,0 +1,6 @@
WAMAS ODOO 00000120231220091116KRETKQ050000130377 HOST 0001040 202304270000002023042708000020230427180000
WAMAS ODOO 00000220231220091116KRETPQ050000130377 HOST 0000200001151 0000020001151 00000DISPONIBLE 000000000000000000000000 BOUT 19700101
WAMAS ODOO 00000320231220091116KRETPQ050000130377 HOST 0000300001156 0000030001156 00000DISPONIBLE 000000000000000000000000 PET 19700101
WAMAS ODOO 00000420231220091116KRETPQ050000130377 HOST 0000400001160 0000040001160 00000DISPONIBLE 000000000000000000000000 BOUT 19700101
WAMAS ODOO 00000520231220091116KRETPQ050000130377 HOST 0000500001162 0000050001162 00000DISPONIBLE 000000000000000000000000 PET 19700101
WAMAS ODOO 00000620231220091116KRETPQ050000130377 HOST 0000600001176 0000060001176 00000DISPONIBLE 000000000000000000000000 PET 19700101

View file

@ -0,0 +1,6 @@
WAMAS ODOO 00000120231220091116KRETKQ050000130377 HOST 0001040 202304270000002023042708000020230427180000
WAMAS ODOO 00000220231220091116KRETPQ050000130377 HOST 0000200001151 0000020001151 00000DISPONIBLE 000000001000000000000000 BOUT 19700101
WAMAS ODOO 00000320231220091116KRETPQ050000130377 HOST 0000300001156 0000030001156 00000DISPONIBLE 000000001000000000000000 PET 19700101
WAMAS ODOO 00000420231220091116KRETPQ050000130377 HOST 0000400001160 0000040001160 00000DISPONIBLE 000000001000000000000000 BOUT 19700101
WAMAS ODOO 00000520231220091116KRETPQ050000130377 HOST 0000500001162 0000050001162 00000DISPONIBLE 000000001000000000000000 PET 19700101
WAMAS ODOO 00000620231220091116KRETPQ050000130377 HOST 0000600001176 0000060001176 00000DISPONIBLE 000000001000000000000000 PET 19700101

View file

@ -0,0 +1,6 @@
WAMAS ODOO 00000120231220091116WEAKQ0051000130377 HOST 19700101010000 19700101010000 20231220091116 0001040
WAMAS ODOO 00000220231220091116WEAPQ0050000130377 000130377 HOST 000020 0001151 00000DISPONIBLE 000001536000000000000000 BOUT N
WAMAS ODOO 00000320231220091116WEAPQ0050000130377 000130377 HOST 000030 0001156 00000DISPONIBLE 000005184000000000000000 PET N
WAMAS ODOO 00000420231220091116WEAPQ0050000130377 000130377 HOST 000040 0001160 00000DISPONIBLE 000003840000000000000000 BOUT N
WAMAS ODOO 00000520231220091116WEAPQ0050000130377 000130377 HOST 000050 0001162 00000DISPONIBLE 000003072000000000000000 PET N
WAMAS ODOO 00000620231220091116WEAPQ0050000130377 000130377 HOST 000060 0001176 00000DISPONIBLE 000003024000000000000000 PET N

View file

@ -0,0 +1,6 @@
WAMAS ODOO 00000120231220091116WEAKQ0051000130377 HOST 19700101010000 19700101010000 20231220091116 0001040
WAMAS ODOO 00000220231220091116WEAPQ0050000130377 000130377 HOST 000020 0001151 00000DISPONIBLE 000000000000000000000000 BOUT N
WAMAS ODOO 00000320231220091116WEAPQ0050000130377 000130377 HOST 000030 0001156 00000DISPONIBLE 000000000000000000000000 PET N
WAMAS ODOO 00000420231220091116WEAPQ0050000130377 000130377 HOST 000040 0001160 00000DISPONIBLE 000000000000000000000000 BOUT N
WAMAS ODOO 00000520231220091116WEAPQ0050000130377 000130377 HOST 000050 0001162 00000DISPONIBLE 000000000000000000000000 PET N
WAMAS ODOO 00000620231220091116WEAPQ0050000130377 000130377 HOST 000060 0001176 00000DISPONIBLE 000000000000000000000000 PET N

View file

@ -0,0 +1,6 @@
WAMAS ODOO 00000120231220091116WEAKQ0051000130377 HOST 19700101010000 19700101010000 20231220091116 0001040
WAMAS ODOO 00000220231220091116WEAPQ0050000130377 000130377 HOST 000020 0001151 00000DISPONIBLE 000000001000000000000000 BOUT N
WAMAS ODOO 00000320231220091116WEAPQ0050000130377 000130377 HOST 000030 0001156 00000DISPONIBLE 000000001000000000000000 PET N
WAMAS ODOO 00000420231220091116WEAPQ0050000130377 000130377 HOST 000040 0001160 00000DISPONIBLE 000000001000000000000000 BOUT N
WAMAS ODOO 00000520231220091116WEAPQ0050000130377 000130377 HOST 000050 0001162 00000DISPONIBLE 000000001000000000000000 PET N
WAMAS ODOO 00000620231220091116WEAPQ0050000130377 000130377 HOST 000060 0001176 00000DISPONIBLE 000000001000000000000000 PET N

View file

@ -0,0 +1,35 @@
import ast
import unittest
from freezegun import freeze_time
from ..dict2wamas import dict2wamas
from ..utils import file_open, file_path
class TestDict2wamas(unittest.TestCase):
maxDiff = None
def _test(self, msg_type, filename):
with file_open(
file_path("tests/samples/dict2wamas_input%s.dict" % filename)
) as infile, file_open(
file_path("tests/samples/dict2wamas_output%s.wamas" % filename)
) as outfile:
dict_input = ast.literal_eval(infile.read())
output = dict2wamas(dict_input, msg_type)
expected_output = outfile.read()
self.assertEqual(output, expected_output)
@freeze_time("2024-02-11 22:14:22")
def test_LST(self):
self._test("Supplier", "")
@freeze_time("2024-02-11 22:15:32")
def test_KSTAUS(self):
self._test("CustomerDeliveryPreferences", "_2")
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1,141 @@
import unittest
from datetime import date, datetime
from freezegun import freeze_time
from ..ubl2wamas import ubl2wamas
from ..utils import file_open, file_path, set_value_to_string
class TestUbl2wamas(unittest.TestCase):
maxDiff = None
def test_helpers(self):
dict_data = {
"str": [
{
"input_val": "WEAPQ0050",
"expected_output_val": "WEAPQ0050",
"length": 9,
"dp": False,
},
],
"int": [
{
"input_val": 30,
"expected_output_val": "000030",
"length": 6,
"dp": False,
},
{
"input_val": "30",
"expected_output_val": "000030",
"length": 6,
"dp": False,
},
],
"float": [
{
"input_val": 5184.0,
"expected_output_val": "000005184000",
"length": 12,
"dp": 3,
},
{
"input_val": "5184.0",
"expected_output_val": "000005184000",
"length": 12,
"dp": 3,
},
],
"date": [
{
"input_val": "2023-05-01",
"expected_output_val": "20230501",
"length": 8,
"dp": False,
},
{
"input_val": date(2023, 5, 1),
"expected_output_val": "20230501",
"length": 8,
"dp": False,
},
{
"input_val": datetime(2023, 5, 1, 0, 0),
"expected_output_val": "20230501",
"length": 8,
"dp": False,
},
],
"datetime": [
{
"input_val": "2023-05-01 06:57:23",
"expected_output_val": "20230501085723",
"length": 14,
"dp": False,
},
{
"input_val": datetime(2023, 5, 1, 6, 57, 23),
"expected_output_val": "20230501",
"length": 8,
"dp": False,
},
],
"bool": [
{
"input_val": "N",
"expected_output_val": "N",
"length": 1,
"dp": False,
},
],
}
for ttype in dict_data:
for data in dict_data[ttype]:
input_val = data["input_val"]
expected_output_val = data["expected_output_val"]
length = data["length"]
dp = data["dp"]
output_val = set_value_to_string(
input_val, ttype, length, dp, do_convert_tz=True
)
self.assertEqual(output_val, expected_output_val)
@freeze_time("2023-05-01")
def _convert_ubl2wamas(
self, input_filename, expected_output_filename, telegram_type
):
path = file_path("tests/samples/")
with file_open(path + input_filename) as inputfile, file_open(
path + expected_output_filename
) as outputfile:
str_input = inputfile.read()
output = ubl2wamas(str_input, telegram_type)
expected_output = outputfile.read().strip("\n")
self.assertEqual(output, expected_output)
def test_convert_ubl2wamas_picking(self):
input_file = "UBL2WAMAS-SAMPLE_AUSK_AUSP-DESPATCH_ADVICE2.xml"
expected_output = "UBL2WAMAS-SAMPLE_AUSK_AUSP.wamas"
msg_type = "Picking"
self._convert_ubl2wamas(input_file, expected_output, msg_type)
def test_convert_ubl2wamas_reception(self):
input_file = "UBL2WAMAS-SAMPLE_WEAK_WEAP-DESPATCH_ADVICE.xml"
expected_output = "UBL2WAMAS-SAMPLE_WEAK_WEAP.wamas"
msg_type = "Reception"
self._convert_ubl2wamas(input_file, expected_output, msg_type)
def test_convert_ubl2wamas_return(self):
input_file = "UBL2WAMAS-SAMPLE_KRETK_KRETP-DESPATCH_ADVICE.xml"
expected_output = "UBL2WAMAS-SAMPLE_KRETK_KRETP.wamas"
msg_type = "Return"
self._convert_ubl2wamas(input_file, expected_output, msg_type)
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1,79 @@
import unittest
import xmltodict
from dotty_dict import Dotty
from ..utils import (
_set_string_bool,
_set_string_float,
file_open,
file_path,
get_address_elements,
get_Adrs_Adr,
get_Adrs_Name,
get_Adrs_Name2,
get_Adrs_Name3,
get_Adrs_Name4,
)
class TestUtils(unittest.TestCase):
def testGetAddressNamePicking(self):
with file_open(
file_path("tests/samples/UBL2WAMAS-SAMPLE_AUSK_AUSP-DESPATCH_ADVICE.xml")
) as infile:
dict_item = Dotty(xmltodict.parse(infile.read()))
address_elements = get_address_elements(dict_item)
self.assertEqual(
address_elements,
{
"ContactName": "Chester Reed",
"PartyName": "YourCompany",
"Department": "Department_1",
"StreetName": "250 Executive Park Blvd, Suite 3400",
"AdditionalStreetName": "AdditionalStreetName_1",
},
)
self.assertEqual(get_Adrs_Name(address_elements), "Chester Reed")
self.assertEqual(get_Adrs_Name2(address_elements), "YourCompany")
self.assertEqual(get_Adrs_Name3(address_elements), "Department_1")
self.assertEqual(
get_Adrs_Name4(address_elements), "250 Executive Park Blvd, Suite 3400"
)
self.assertEqual(get_Adrs_Adr(address_elements), "AdditionalStreetName_1")
def testGetAddressNameFromDict(self):
address_elements = {
"ContactName": "Nom",
"PartyName": "YourCompany",
"Department": "Nom3",
"StreetName": "Nom4",
"AdditionalStreetName": "Adresse",
}
self.assertEqual(get_Adrs_Name(address_elements), "Nom")
self.assertEqual(get_Adrs_Name2(address_elements), "YourCompany")
self.assertEqual(get_Adrs_Name3(address_elements), "Nom3")
self.assertEqual(get_Adrs_Name4(address_elements), "Nom4")
self.assertEqual(get_Adrs_Adr(address_elements), "Adresse")
def test_set_string_bool(self):
# Input is boolean
self.assertEqual(_set_string_bool(False, 1, False), "N")
self.assertEqual(_set_string_bool(True, 1, False), "J")
# Input is string
self.assertEqual(_set_string_bool("N", 1, False), "N")
self.assertEqual(_set_string_bool("J", 1, False), "J")
def test_set_string_float(self):
# Positive
self.assertEqual(_set_string_float(3.6, 9, 3), "000003600")
self.assertEqual(_set_string_float(3.0, 9, 3), "000003000")
# Negative
self.assertEqual(_set_string_float(-3.6, 9, 3), "-00003600")
self.assertEqual(_set_string_float(-3.0, 9, 3), "-00003000")
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1,37 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import unittest
from pprint import pformat
from ..utils import file_open, file_path
from ..wamas2ubl import wamas2dict
class TestWamas2dict(unittest.TestCase):
maxDiff = None
def _test(self, filename):
with file_open(
file_path("tests/samples/%s.wamas" % filename)
) as infile, file_open(
file_path("tests/samples/%s.dict" % filename)
) as outfile:
str_input = infile.read()
expected_output = outfile.read()
output_prettified = pformat(wamas2dict(str_input))
self.assertEqual(output_prettified, expected_output)
def test_normal(self):
self._test("line_WATEPQ_-_normal")
def test_non_ascii(self):
self._test("line_WATEPQ_-_non_ascii")
def test_length_off(self):
self._test("line_WATEKQ_-_length_off_by_one_01")
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1,54 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import unittest
from freezegun import freeze_time
from ..utils import file_open, file_path
from ..wamas2ubl import wamas2ubl
class TestWamas2ubl(unittest.TestCase):
maxDiff = None
@freeze_time("2023-05-01")
def _convert_wamas2ubl(self, input_filename, expected_output_filename):
path = file_path("tests/samples/")
with file_open(path + input_filename) as inputfile, file_open(
path + expected_output_filename
) as outputfile:
str_input = inputfile.read()
output = "\n".join(wamas2ubl(str_input))
expected_output = outputfile.read()
self.assertEqual(output, expected_output)
def test_convert_wamas2ubl_picking(self):
input_file = "WAMAS2UBL-SAMPLE_AUSKQ_WATEKQ_WATEPQ.wamas"
lst_expected_output = "WAMAS2UBL-SAMPLE_AUSKQ_WATEKQ_WATEPQ-DESPATCH_ADVICE.xml"
self._convert_wamas2ubl(input_file, lst_expected_output)
def test_convert_wamas2ubl_reception_simple(self):
input_file = "WAMAS2UBL-SAMPLE_SIMPLE_WEAKQ_WEAPQ.wamas"
lst_expected_output = "WAMAS2UBL-SAMPLE_SIMPLE_WEAKQ_WEAPQ-DESPATCH_ADVICE.xml"
self._convert_wamas2ubl(input_file, lst_expected_output)
def test_convert_wamas2ubl_reception_combined(self):
"""
Test a reception with a single header concerning multiple receptions
This happens when a supplier deliver goods for multiple INs
"""
input_file = "WAMAS2UBL-SAMPLE_COMB_WEAKQ_WEAPQ.wamas"
lst_expected_output = "WAMAS2UBL-SAMPLE_COMB_WEAKQ_WEAPQ-DESPATCH_ADVICE.xml"
self._convert_wamas2ubl(input_file, lst_expected_output)
def test_convert_wamas2ubl_return(self):
input_file = "WAMAS2UBL-SAMPLE_KRETKQ_KRETPQ.wamas"
lst_expected_output = "WAMAS2UBL-SAMPLE_KRETKQ_KRETPQ-DESPATCH_ADVICE.xml"
self._convert_wamas2ubl(input_file, lst_expected_output)
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1,56 @@
import unittest
from freezegun import freeze_time
from ..utils import file_open, file_path
from ..wamas2wamas import wamas2wamas
class TestWamas2wamas(unittest.TestCase):
maxDiff = None
def _test(self, filename, processed_qty=None):
with file_open(
file_path("tests/samples/wamas2wamas_input_%s.wamas" % filename)
) as infile, file_open(
file_path("tests/samples/wamas2wamas_output_%s.wamas" % filename)
) as outfile:
str_input = infile.read()
output = wamas2wamas(str_input, processed_qty=processed_qty)
expected_output = outfile.read()
self.assertEqual(output, expected_output)
@freeze_time("2023-12-20 09:11:16")
def testWamas2wamas_wea_full(self):
"""Reception where the demand is fully processed"""
self._test("wea")
@freeze_time("2023-12-20 09:11:16")
def testWamas2wamas_wea_partial(self):
"""Reception where the demand is partially processed"""
self._test("wea_partial", processed_qty=1)
@freeze_time("2023-12-20 09:11:16")
def testWamas2wamas_wea_nothing(self):
"""Reception where the demand is not processed at all"""
self._test("wea_nothing", processed_qty=0)
@freeze_time("2023-12-20 09:11:16")
def testWamas2wamas_kret_full(self):
"""Customer return where the demand is fully processed"""
self._test("wea")
@freeze_time("2023-12-20 09:11:16")
def testWamas2wamas_kret_partial(self):
"""Customer return where the demand is partially processed"""
self._test("wea_partial", processed_qty=1)
@freeze_time("2023-12-20 09:11:16")
def testWamas2wamas_kret_nothing(self):
"""Customer return where the demand is not processed at all"""
self._test("wea_nothing", processed_qty=0)
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1,102 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import argparse
import logging
from pprint import pformat
import xmltodict
from dotty_dict import Dotty
from freezegun import freeze_time
from . import const, utils
_logger = logging.getLogger("ubl2wamas")
SUPPORTED_TYPES = list(const.SUPPORTED_UBL_TO_WAMAS.keys())
def ubl2list(infile, msg_type): # noqa: C901
res = []
my_dict = Dotty(xmltodict.parse(infile))
if msg_type not in SUPPORTED_TYPES:
raise Exception("Invalid document type: %s" % msg_type)
dict_telegram_type_loop = {
"WEAP": "DespatchAdvice.cac:DespatchLine",
"AUSP": "DespatchAdvice.cac:DespatchLine",
"KRETP": "DespatchAdvice.cac:DespatchLine",
}
line_idx = 0
for telegram_type in const.SUPPORTED_UBL_TO_WAMAS[msg_type]:
grammar = const.DICT_WAMAS_GRAMMAR[telegram_type]
loop_element = dict_telegram_type_loop.get(telegram_type, False)
len_loop = (
loop_element
and isinstance(my_dict[loop_element], list)
and len(my_dict[loop_element])
or 1
)
for idx_loop in range(len_loop):
line_idx += 1
line = utils.generate_wamas_dict(
my_dict,
grammar,
line_idx=line_idx,
len_loop=len_loop,
idx_loop=idx_loop,
)
if line:
res.append(line)
return res
def ubl2wamas(infile, msg_type):
lst_of_wamas_dicts = ubl2list(infile, msg_type)
wamas = "\n".join(utils.wamas_dict2line(d) for d in lst_of_wamas_dicts)
_logger.debug(lst_of_wamas_dicts)
return wamas
@freeze_time("2023-05-01")
def main():
parser = argparse.ArgumentParser(
description="Converts UBL document into message.",
)
parser.add_argument("-v", "--verbose", action="store_true", help="enable debug log")
parser.add_argument(
"-f",
"--format",
default="wamas",
choices=["dict", "wamas"],
help="result format",
)
parser.add_argument(
"-t", "--type", required=True, choices=SUPPORTED_TYPES, help="type of document"
)
parser.add_argument(
"-o", "--output", dest="outputfile", help="write result in this file"
)
parser.add_argument("inputfile", help="read message from this file")
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.DEBUG)
infile = utils.file_open(args.inputfile).read()
if args.format == "dict":
res = pformat(ubl2list(infile, args.type))
else:
res = ubl2wamas(infile, args.type)
if args.outputfile:
fd = utils.file_open(args.outputfile, "w")
fd.write(res)
else:
print(res) # pylint: disable=print-used
if __name__ == "__main__":
main()

View file

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="UTF-8" ?>
<DespatchAdvice
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"
>
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID><t t-raw="record.IvAusk_AusId_AusNr" /></cbc:ID>
<cbc:IssueDate><t t-raw="get_current_date()" /></cbc:IssueDate>
<cac:OrderReference>
<cbc:ID><t t-raw="record.IvAusk_ExtRef" /></cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('CustomerAssignedAccountID', '') or ''"
/></cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('PartyName', '') or ''"
/></cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('StreetName', '') or ''"
/></cbc:StreetName>
<cbc:CityName><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('CityName', '') or ''"
/></cbc:CityName>
<cbc:PostalZone><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('PostalZone', '') or ''"
/></cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Country.IdentificationCode', '') or ''"
/></cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('CompanyID', '') or ''"
/></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('TaxScheme.ID', '') or ''"
/></cbc:ID>
<cbc:TaxTypeCode><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('TaxScheme.TaxTypeCode', '') or ''"
/></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.Name', '') or ''"
/></cbc:Name>
<cbc:Telephone><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.Telephone', '') or ''"
/></cbc:Telephone>
<cbc:ElectronicMail><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.ElectronicMail', '') or ''"
/></cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeName="ODOO:ID"><t t-raw="record.IvAusk_KST_KuNr" /></cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('PartyName', '') or ''"
/></cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('StreetName', '') or ''"
/></cbc:StreetName>
<cbc:CityName><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CityName', '') or ''"
/></cbc:CityName>
<cbc:PostalZone><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('PostalZone', '') or ''"
/></cbc:PostalZone>
<cbc:CountrySubentity><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CountrySubentity', '') or ''"
/></cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Country.IdentificationCode', '') or ''"
/></cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CompanyID', '') or ''"
/></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('TaxScheme.ID', '') or ''"
/></cbc:ID>
<cbc:TaxTypeCode><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('TaxScheme.TaxTypeCode', '') or ''"
/></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Name', '') or ''"
/></cbc:Name>
<cbc:Telephone><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Telephone', '') or ''"
/></cbc:Telephone>
<cbc:Telefax><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Telefax', '') or ''"
/></cbc:Telefax>
<cbc:ElectronicMail><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.ElectronicMail', '') or ''"
/></cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID><t t-raw="record.IvAusk_RahmenTourId_TourNr" /></cbc:ID>
</cac:Shipment>
<cac:DespatchLine t-foreach="record.lines" t-as="line">
<cac:Shipment t-if="line.package">
<cac:TransportHandlingUnit>
<cac:ActualPackage>
<cbc:ID><t t-raw="line.package.IvTek_TeId" /></cbc:ID>
</cac:ActualPackage>
<cbc:TransportHandlingUnitTypeCode><t
t-raw="line.package.IvTts_THM_ThmId"
/></cbc:TransportHandlingUnitTypeCode>
</cac:TransportHandlingUnit>
<cac:GrossWeightMeasure>
<cbc:Measure><t t-raw="line.package.IvTek_GesGew" /></cbc:Measure>
</cac:GrossWeightMeasure>
</cac:Shipment>
<cbc:ID><t t-raw="line.IvAusp_HostPosNr" /></cbc:ID>
<cbc:DeliveredQuantity
t-att-unitCode="line.IvArt_Bestand_Einheit"
unitCodeListAgencyName="WAMAS"
>
<t
t-raw="hasattr(line,'Mngs_Mng') and line.Mngs_Mng or (hasattr(line, 'IvAusp_LiefMngsWamas_Mng') and line.IvAusp_LiefMngsWamas_Mng) or 0.0"
/>
</cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID />
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID />
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID t-if="line.IvArt_AId_ArtNr">
<t t-raw="line.IvArt_AId_ArtNr" />
</cbc:ID>
<cbc:ID t-if="line.IvAusp_MId_AId_ArtNr">
<t t-raw="line.IvAusp_MId_AId_ArtNr" />
</cbc:ID>
</cac:SellersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8" ?>
<DespatchAdvice
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"
>
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID><t t-raw="record.lines[0].IvWevp_WEAP_WeaId_WeaNr" /></cbc:ID>
<cbc:IssueDate><t t-raw="get_current_date()" /></cbc:IssueDate>
<cac:OrderReference>
<cbc:ID><t t-raw="record.lines[0].IvWeap_ExtRef" /></cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID><t
t-raw="record.LST_LiefNr"
/></cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('PartyName', '') or ''"
/></cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('StreetName', '') or ''"
/></cbc:StreetName>
<cbc:CityName><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('CityName', '') or ''"
/></cbc:CityName>
<cbc:PostalZone><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('PostalZone', '') or ''"
/></cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Country.IdentificationCode', '') or ''"
/></cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.Name', '') or ''"
/></cbc:Telephone>
<cbc:Telefax><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.Telefax', '') or ''"
/></cbc:Telefax>
<cbc:ElectronicMail><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.ElectronicMail', '') or ''"
/></cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('PartyName', '') or ''"
/></cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('StreetName', '') or ''"
/></cbc:StreetName>
<cbc:CityName><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CityName', '') or ''"
/></cbc:CityName>
<cbc:PostalZone><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('PostalZone', '') or ''"
/></cbc:PostalZone>
<cbc:CountrySubentity><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CountrySubentity', '') or ''"
/></cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Country.IdentificationCode', '') or ''"
/></cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CompanyID', '') or ''"
/></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('TaxScheme.ID', '') or ''"
/></cbc:ID>
<cbc:TaxTypeCode><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('TaxScheme.TaxTypeCode', '') or ''"
/></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Name', '') or ''"
/></cbc:Name>
<cbc:Telephone><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Telephone', '') or ''"
/></cbc:Telephone>
<cbc:Telefax><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Telefax', '') or ''"
/></cbc:Telefax>
<cbc:ElectronicMail><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.ElectronicMail', '') or ''"
/></cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID />
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate><t
t-raw="get_date(record.IvWevk_FertZeit)"
/></cbc:EndDate>
<cbc:EndTime><t
t-raw="get_time(record.IvWevk_FertZeit)"
/></cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine t-foreach="record.lines" t-as="line">
<cbc:ID><t t-raw="line.IvWeap_HostPosNr" /></cbc:ID>
<cbc:DeliveredQuantity
t-att-unitCode="line.IvArt_Bestand_Einheit"
unitCodeListAgencyName="WAMAS"
><t t-raw="line.IvWevp_LiefMngs_Mng" /></cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID />
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID><t t-raw="line.IvWevp_MId_AId_ArtNr" /></cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8" ?>
<DespatchAdvice
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2"
>
<cbc:UBLVersionID>2.2</cbc:UBLVersionID>
<cbc:ID><t t-raw="record.IvKretk_KretId_KretNr" /></cbc:ID>
<cbc:IssueDate><t t-raw="get_current_date()" /></cbc:IssueDate>
<cac:OrderReference>
<cbc:ID><t t-raw="record.IvKretk_ExtRef" /></cbc:ID>
</cac:OrderReference>
<cac:DespatchSupplierParty>
<cbc:CustomerAssignedAccountID><t
t-raw="record.IvKretk_KST_KuNr"
/></cbc:CustomerAssignedAccountID>
<cac:Party>
<cac:PartyName>
<cbc:Name><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('PartyName', '') or ''"
/></cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('StreetName', '') or ''"
/></cbc:StreetName>
<cbc:CityName><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('CityName', '') or ''"
/></cbc:CityName>
<cbc:PostalZone><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('PostalZone', '') or ''"
/></cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Country.IdentificationCode', '') or ''"
/></cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:Contact>
<cbc:Telephone><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.Name', '') or ''"
/></cbc:Telephone>
<cbc:Telefax><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.Telefax', '') or ''"
/></cbc:Telefax>
<cbc:ElectronicMail><t
t-raw="extra_data.get('DespatchSupplierParty', '') and extra_data['DespatchSupplierParty'].get('Contact.ElectronicMail', '') or ''"
/></cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DespatchSupplierParty>
<cac:DeliveryCustomerParty>
<cac:Party>
<cac:PartyName>
<cbc:Name><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('PartyName', '') or ''"
/></cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('StreetName', '') or ''"
/></cbc:StreetName>
<cbc:CityName><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CityName', '') or ''"
/></cbc:CityName>
<cbc:PostalZone><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('PostalZone', '') or ''"
/></cbc:PostalZone>
<cbc:CountrySubentity><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CountrySubentity', '') or ''"
/></cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Country.IdentificationCode', '') or ''"
/></cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('CompanyID', '') or ''"
/></cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('TaxScheme.ID', '') or ''"
/></cbc:ID>
<cbc:TaxTypeCode><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('TaxScheme.TaxTypeCode', '') or ''"
/></cbc:TaxTypeCode>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:Contact>
<cbc:Name><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Name', '') or ''"
/></cbc:Name>
<cbc:Telephone><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Telephone', '') or ''"
/></cbc:Telephone>
<cbc:Telefax><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.Telefax', '') or ''"
/></cbc:Telefax>
<cbc:ElectronicMail><t
t-raw="extra_data.get('DeliveryCustomerParty', '') and extra_data['DeliveryCustomerParty'].get('Contact.ElectronicMail', '') or ''"
/></cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:DeliveryCustomerParty>
<cac:Shipment>
<cbc:ID />
<cac:Delivery>
<cac:EstimatedDeliveryPeriod>
<cbc:EndDate><t
t-raw="get_date(record.IvKretk_FertZeit)"
/></cbc:EndDate>
<cbc:EndTime><t
t-raw="get_time(record.IvKretk_FertZeit)"
/></cbc:EndTime>
</cac:EstimatedDeliveryPeriod>
</cac:Delivery>
</cac:Shipment>
<cac:DespatchLine t-foreach="record.lines" t-as="line">
<cbc:ID><t t-raw="line.IvKretp_HostPosNr" /></cbc:ID>
<cbc:DeliveredQuantity
t-att-unitCode="line.IvArt_Bestand_Einheit"
unitCodeListAgencyName="WAMAS"
><t t-raw="line.IvKretp_AnmMngs_Mng" /></cbc:DeliveredQuantity>
<cac:OrderLineReference>
<cbc:LineID />
</cac:OrderLineReference>
<cac:Item>
<cac:BuyersItemIdentification>
<cbc:ID><t t-raw="line.IvKretp_MId_AId_ArtNr" /></cbc:ID>
</cac:BuyersItemIdentification>
</cac:Item>
</cac:DespatchLine>
</DespatchAdvice>

View file

@ -0,0 +1,461 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import ast
import logging
import os
import re
from collections import OrderedDict
from datetime import date, datetime, timedelta
from pprint import pformat
from random import randint, randrange
import pytz
from dateutil.parser import parse
from markupsafe import escape
from .const import (
DEFAULT_TIMEZONE,
DICT_CHILD_KEY,
DICT_CONVERT_WAMAS_TYPE,
DICT_DETECT_WAMAS_TYPE,
DICT_PARENT_KEY,
DICT_WAMAS_GRAMMAR,
SYSTEM_ERP,
SYSTEM_WAMAS,
)
_logger = logging.getLogger("wamas_utils")
def file_path(path):
return os.path.join(os.path.abspath(os.path.dirname(__file__)), path)
def file_open(path, mode="r"):
return open(path, mode, encoding="iso-8859-1")
def get_date(val):
val = parse(val)
if isinstance(val, datetime):
val = convert_tz(val, DEFAULT_TIMEZONE, "UTC").strftime("%Y-%m-%d")
return val
def get_time(val):
val = parse(val)
if isinstance(val, datetime):
val = convert_tz(val, DEFAULT_TIMEZONE, "UTC").strftime("%H:%M:%S")
return val
def get_current_date():
# return convert_tz(datetime.utcnow(), DEFAULT_TIMEZONE, "UTC").strftime("%Y-%m-%d")
return date.today()
def get_source(*args):
return SYSTEM_ERP
def get_destination(*args):
return SYSTEM_WAMAS
def get_source_q(*args):
return SYSTEM_WAMAS
def get_destination_q(*args):
return SYSTEM_ERP
def get_sequence_number(val=0):
return val
def get_current_datetime(val=0):
return datetime.utcnow()
def get_quantity_done(quantity, quantity_done=None):
return quantity if quantity_done is None else quantity_done
def _set_string(val, length, dp, **kwargs):
return str(val or "").ljust(length)[:length]
def _set_string_int(val, length, dp, **kwargs):
if isinstance(val, float):
val = int(val)
return str(val).rjust(length, "0")[:length]
def _set_string_float(val, length, dp, **kwargs):
try:
res = str(float(val or 0))
except ValueError as err:
raise Exception(
"The value '%s' is not the float type. Please check it again!" % res
) from err
# Support for the negative float
signed = ""
if res.startswith("-"):
signed = "-"
length = length - 1
res = res.lstrip("-")
str_whole_number, str_decimal_portion = res.split(".")
str_whole_number = str_whole_number.rjust(length - dp, "0")
str_decimal_portion = str_decimal_portion.ljust(dp, "0")
return signed + (str_whole_number + str_decimal_portion)[:length]
def _set_string_date(val, length, dp, **kwargs):
res = isinstance(val, str) and val != "" and parse(val) or val
if isinstance(res, date):
res = res.strftime("%Y%m%d")
elif isinstance(res, datetime):
if kwargs.get("do_convert_tz", False):
res = convert_tz(res, "UTC", DEFAULT_TIMEZONE)
res = res.date().strftime("%Y%m%d")
elif isinstance(res, str):
res = res.ljust(length)
elif not res:
res = ""
else:
raise Exception(
"The value '%s' is not the date type. Please check it again!" % res
)
return res[:length]
def _set_string_datetime(val, length, dp, **kwargs):
res = isinstance(val, str) and val != "" and parse(val) or val
if isinstance(res, (date, datetime)):
if kwargs.get("do_convert_tz", False):
res = convert_tz(res, "UTC", DEFAULT_TIMEZONE)
res = res.strftime("%Y%m%d%H%M%S")
elif isinstance(res, str):
res = res.ljust(length)
elif not res:
res = ""
else:
raise Exception(
"The value '%s' is not the date type. Please check it again!" % res
)
return res.ljust(length)[:length]
def _set_string_bool(val, length, dp, **kwargs):
res = "N"
if isinstance(val, str) and val:
res = val[:length]
elif isinstance(val, bool) and val:
res = "J"
return res
def set_value_to_string(val, ttype, length, dp, **kwargs):
setters = dict(
str=_set_string,
int=_set_string_int,
float=_set_string_float,
date=_set_string_date,
datetime=_set_string_datetime,
bool=_set_string_bool,
)
return setters[ttype](val, length, dp, **kwargs)
def get_random_str_num(*args):
range_start = 10 ** (args[0] - 1)
range_end = (10 ** args[0]) - 1
return str(randint(range_start, range_end))
def get_random_int_num(*args):
return randrange(9999)
def get_parent_id(*args):
dict_parent_id, dict_child_key, field, telegram_type_out = args
return dict_parent_id[dict_child_key[telegram_type_out][field]]
def get_random_quai(*args):
return "QUAI-%d" % randint(1, 999)
def get_date_from_field(*args):
dict_wamas, field, number, interval = args
res = parse(dict_wamas[field]) + timedelta(**{interval: number})
return res
def get_address_elements(dict_item, party_type="DeliveryCustomerParty"):
return {
"ContactName": dict_item.get(
f"DespatchAdvice.cac:{party_type}.cac:Party.cac:Contact.cbc:Name"
),
"PartyName": dict_item.get(
f"DespatchAdvice.cac:{party_type}.cac:Party.cac:PartyName.cbc:Name"
),
"Department": dict_item.get(
f"DespatchAdvice.cac:{party_type}.cac:Party.cac:PostalAddress.cbc:Department"
),
"StreetName": dict_item.get(
f"DespatchAdvice.cac:{party_type}.cac:Party.cac:PostalAddress.cbc:StreetName"
),
"AdditionalStreetName": dict_item.get(
f"DespatchAdvice.cac:{party_type}.cac:Party.cac:PostalAddress."
"cbc:AdditionalStreetName"
),
}
def _get_Name(a, index):
candidates = (
"ContactName",
"PartyName",
"Department",
"StreetName",
"AdditionalStreetName",
)
values = []
for c in candidates:
e = a.get(c)
if e and e not in values:
values.append(e)
# always drop last element, that's the address
values = values[index:-1]
return values[0] if values else None
def get_Adrs_Name(a):
return _get_Name(a, 0)
def get_Adrs_Name2(a):
return _get_Name(a, 1)
def get_Adrs_Name3(a):
return _get_Name(a, 2)
def get_Adrs_Name4(a):
return _get_Name(a, 3)
def get_Adrs_Adr(a):
return a["AdditionalStreetName"] or a["StreetName"] or a["Department"]
def get_index(idx):
return idx
def wamas_dict2line(wamas_dict):
"""Converts a wamas OrderedDict to a telegram."""
return "".join(wamas_dict.values())
def generate_wamas_line(dict_item, grammar, **kwargs):
"""Generate a wamas telegram."""
wamas_dict = generate_wamas_dict(dict_item, grammar, **kwargs)
return wamas_dict2line(wamas_dict)
def generate_wamas_dict(dict_item, grammar, **kwargs): # noqa: C901
"""Generate an OrderedDict with wamas field and value."""
dict_parent_id = kwargs.get("dict_parent_id", {})
telegram_type_out = kwargs.get("telegram_type_out", False)
dict_wamas_out = OrderedDict()
do_convert_tz = not kwargs.get("do_wamas2wamas", False)
for _key in grammar:
val = ""
ttype = grammar[_key].get("type", False)
length = grammar[_key].get("length", False)
dp = grammar[_key].get("dp", False)
ubl_path = grammar[_key].get("ubl_path", False)
dict_key = grammar[_key].get("dict_key", False)
df_val = grammar[_key].get("df_val", False)
df_func = grammar[_key].get("df_func", False)
if ubl_path:
# Get the `ubl_path` if it has multi lines
len_loop = kwargs.get("len_loop", False)
idx_loop = kwargs.get("idx_loop", False)
if len_loop and len_loop > 1:
ubl_path = "%s" in ubl_path and ubl_path % str(idx_loop) or ubl_path
else:
ubl_path = "%s" in ubl_path and ubl_path.replace(".%s", "") or ubl_path
# Handle the type of `ubl_path`
if isinstance(ubl_path, list):
lst_val = []
for _item in ubl_path:
lst_val.append(dict_item.get(_item) or "")
if lst_val:
val = " ".join(lst_val).strip()
elif isinstance(ubl_path, dict):
for _key in ubl_path:
if dict_item.get(_key, False):
val = dict_item.get(ubl_path[_key], "")
elif isinstance(ubl_path, str):
val = dict_item.get(ubl_path, "")
else:
val = ""
if not val and dict_key:
val = dict_item.get(dict_key, "")
if not val and df_val:
val = df_val
if not val and df_func:
args = (kwargs.get("line_idx", 0),)
if df_func == "get_parent_id":
args = (
dict_parent_id,
DICT_CHILD_KEY,
_key,
telegram_type_out,
)
elif df_func == "get_index":
args = (kwargs.get("idx_loop", 0),)
elif df_func == "get_random_str_num":
args = (length,)
elif df_func == "get_quantity_done":
if "BestMng" in dict_item.keys():
quantity = dict_item.get("BestMng", 0)
elif "SollMng" in dict_item.keys():
quantity = dict_item.get("SollMng", 0)
else:
raise Exception("Quantity field not found")
args = (quantity, kwargs.get("processed_qty"))
elif "get_date_from_field" in df_func:
args = (dict_wamas_out,)
args += ast.literal_eval(re.search(r"\((.*?)\)", df_func).group(0))
df_func = "get_date_from_field"
# TODO: Consider refactoring to use classes
# or provide a better way to determine arguments.
elif "get_Adrs_" in df_func:
if df_func.startswith("supplier"):
address_elements = get_address_elements(
dict_item, "DespatchSupplierParty"
)
df_func = df_func[9:]
else:
address_elements = get_address_elements(dict_item)
args = (address_elements,)
val = globals()[df_func](*args)
val = set_value_to_string(val, ttype, length, dp, do_convert_tz=do_convert_tz)
dict_wamas_out[_key] = val
lst_parent_key = DICT_PARENT_KEY.get(telegram_type_out, False)
if lst_parent_key and _key in lst_parent_key:
dict_parent_id[_key] = val
return dict_wamas_out
def generate_wamas_lines(dict_input, telegram_type, line_idx, wamas_lines):
line_idx += 1
grammar = DICT_WAMAS_GRAMMAR[telegram_type]
line = generate_wamas_line(dict_input, grammar, line_idx=line_idx)
if line:
wamas_lines.append(line)
return line_idx, wamas_lines
def get_grammar(telegram_type):
return DICT_WAMAS_GRAMMAR[telegram_type]
def fw2dict(line, grammar, telegram_type):
"""
Converts a fixed width string to a dict
Parameters:
line (str): The string to convert
grammar (OrderedDict): The field width definition in the format:
{ "k1": { "length": 3 }, "k2": { "length": 5 } }
telegram_type (str): Telegram type
Returns:
OrderedDict: Same keys as the grammar, values from the string
"""
# sanity checks
max_length = min_length = sum(f["length"] for f in grammar.values())
last_val = grammar[next(reversed(grammar))]
if last_val["type"] == "str":
min_length -= last_val["length"] + 1
if not min_length <= len(line) <= max_length:
raise Exception(
"Line of length {actual:d} does not match expected length of "
"{expected:d}:\n{line:s}".format(
actual=len(line),
expected=max_length,
line=line,
)
)
else:
line = line.ljust(max_length)
# actual parsing
res = OrderedDict()
offset = 0
for fname, fdef in grammar.items():
b = line[offset : offset + fdef["length"]]
offset += fdef["length"]
if fdef["type"] == "int":
val = int(b)
elif fdef["type"] == "float":
dp = fdef["dp"]
val = float(b[:-dp] + "." + b[-dp:])
else:
val = str(escape(b.rstrip()))
res[fname] = val
_logger.debug(pformat(res))
return res
def get_telegram_type(line):
# given by Satzart at pos 49, len 9
return re.split(r"(\d+)", line[40:49])[0]
def detect_wamas_type(infile):
"""
Detect the type of message
Parameters:
line (str): The wamas message
Returns:
str: Type of message
"""
wamas_type = DICT_DETECT_WAMAS_TYPE.get(get_telegram_type(infile), "Undefined")
return wamas_type
def convert_tz(dt_val, str_from_tz, str_to_tz):
from_tz = pytz.timezone(str_from_tz)
to_tz = pytz.timezone(str_to_tz)
from_tz_dt = from_tz.localize(dt_val)
to_tz_dt = from_tz_dt.astimezone(to_tz)
return to_tz_dt
def get_supported_telegram():
return DICT_WAMAS_GRAMMAR.keys()
def get_supported_telegram_w2w():
return DICT_CONVERT_WAMAS_TYPE

View file

@ -0,0 +1,229 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import argparse
import logging
from collections import OrderedDict
from pprint import pformat
from freezegun import freeze_time
from . import const, miniqweb, utils
# FIXME: replace by Dotty ?
from .structure import obj
_logger = logging.getLogger("wamas2ubl")
class Extractor:
def __init__(self, data):
self.data = data
self.transfers = {}
self.packages = {}
def get_head(self, telegram_type, key_name, head=None):
"""Converts a list of dict into a dict of dict
Parameters:
telegram_type: the key to get the list out of data
key_name: the key in the dict that serves as key in the new dict
head: the result dict that is build
"""
if telegram_type not in self.data:
raise ValueError("Missing telegram: %s" % telegram_type)
if head is None:
head = self.transfers
for item in self.data[telegram_type]:
key = item[key_name]
if key not in head:
head[key] = item
else:
_logger.debug(
"Redundant %s (transfer) record found, ignoring: %s",
telegram_type,
key,
)
def get_line(
self,
telegram_type,
transfer_key1_name,
transfer_key2_name=False,
package_key_name=False,
):
"""Process a list of dict as lines of the transfers
Parameters:
telegram_type: the key to get the list out of data
transfer_key1_name: the key in the dict that serves to identify the
parent in transfers
transfer_key2_name: the key in the dict that serves to identify a sub-transfer
package_key_name: the key in the dict that serves to identify the
related package
"""
transfers = {}
if telegram_type not in self.data:
raise ValueError("Missing telegram: %s" % telegram_type)
for line in self.data[telegram_type]:
key = line.get(transfer_key1_name)
if key not in self.transfers:
_logger.debug(
"Found %s (line) record for unknown transfer, ignoring: %s",
telegram_type,
key,
)
continue
# Create a key for the sub-transfer
if transfer_key2_name and line.get(transfer_key2_name):
key = (key, line[transfer_key2_name])
if key not in transfers:
# Copy parent transfer data
transfers[key] = OrderedDict(self.transfers[line[transfer_key1_name]])
transfers[key].setdefault("lines", []).append(line)
if not package_key_name:
continue
package_id = line[package_key_name]
package = self.packages.get(package_id)
if not package:
_logger.debug(
"Found %s (line) record with unknown package, ignoring: %s",
telegram_type,
package_id,
)
continue
line["package"] = package
transfers[key].setdefault("packages", []).append(package)
self.transfers = transfers
def wamas2dict(msg):
"""
Converts a wamas message to a dict
Parameters:
msg (str): The msg to convert
Returns:
dict: key=telegram type, value=list of OrderedDict
"""
result = {}
supported_telegrams = utils.get_supported_telegram()
for line in msg.splitlines():
if not line:
continue
telegram_type = utils.get_telegram_type(line)
# ignore useless telegram types
if telegram_type in const.LST_TELEGRAM_TYPE_IGNORE_W2D:
continue
if telegram_type not in supported_telegrams:
raise Exception("Invalid telegram type: %s" % telegram_type)
grammar = utils.get_grammar(telegram_type)
d = utils.fw2dict(line, grammar, telegram_type)
val = result.setdefault(telegram_type, [])
val.append(d)
_logger.debug(pformat(result))
return result
def dict2ubl(msg_type, data, extra_data=False):
if extra_data is False:
extra_data = {"DeliveryCustomerParty": {}, "DespatchSupplierParty": {}}
# Analyze/transform wamas file content
extractor = Extractor(data)
if msg_type == "ReceptionResponse":
extractor.get_head("WEAKQ", "IvWevk_WevId_WevNr")
extractor.get_line("WEAPQ", "IvWevp_WevId_WevNr", "IvWevp_WEAP_WeaId_WeaNr")
elif msg_type == "ReturnResponse":
extractor.get_head("KRETKQ", "IvKretk_KretId_KretNr")
extractor.get_line("KRETPQ", "IvKretp_KretId_KretNr")
elif msg_type == "PickingResponse":
extractor.get_head("AUSKQ", "IvAusk_AusId_AusNr")
if "WATEKQ" not in extractor.data and "WATEPQ" not in extractor.data:
extractor.get_line("AUSPQ", "IvAusp_UrAusId_AusNr")
else:
extractor.get_head("WATEKQ", "IvTek_TeId", extractor.packages)
extractor.get_line(
"WATEPQ", "IvAusp_UrAusId_AusNr", package_key_name="IvTep_TeId"
)
else:
raise Exception("Invalid message type: %s" % msg_type)
pickings = extractor.transfers
_logger.debug("Number of pickings: %d", len(pickings))
for order_id, picking in pickings.items():
_logger.debug("ID: %s", order_id)
packages = pickings[order_id].get("packages")
if packages:
_logger.debug("Number of packages: %s", len(packages))
_logger.debug(pformat(picking))
# Get template
ubl_template_path = const.DICT_UBL_TEMPLATE[msg_type]
with utils.file_open(utils.file_path(ubl_template_path)) as tmpl_file:
ubl_template = tmpl_file.read()
# Convert
ubls = []
for picking in pickings.values():
ubl = render_ubl(ubl_template, picking, extra_data=extra_data)
ubls.append(ubl)
_logger.debug("Number of UBL files generated: %d", len(ubls))
return ubls
def render_ubl(ubl_template, data, extra_data=False):
t = miniqweb.QWebXml(ubl_template)
# Convert dict to object to use dotted notation in template
globals_dict = {
"record": obj(data),
"get_date": utils.get_date,
"get_time": utils.get_time,
"get_current_date": utils.get_current_date,
"extra_data": extra_data,
}
xml = t.render(globals_dict)
return xml
def wamas2ubl(wamas_msg, extra_data=False):
data = wamas2dict(wamas_msg)
msg_type = utils.detect_wamas_type(wamas_msg)
return dict2ubl(msg_type, data, extra_data=extra_data)
@freeze_time("2023-05-01")
def main():
parser = argparse.ArgumentParser(
description="Converts wamas message into UBLs documents.",
)
parser.add_argument("-v", "--verbose", action="store_true", help="enable debug log")
parser.add_argument(
"-f", "--format", default="ubl", choices=["dict", "ubl"], help="result format"
)
parser.add_argument(
"-o", "--output", dest="outputfile", help="write result in this file"
)
parser.add_argument("inputfile", help="read message from this file")
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.DEBUG)
infile = utils.file_open(args.inputfile).read()
if args.format == "dict":
res = pformat(wamas2dict(infile))
else:
res = "\n".join(wamas2ubl(infile))
if args.outputfile:
fd = utils.file_open(args.outputfile, "w")
fd.write(res)
else:
print(res) # pylint: disable=print-used
if __name__ == "__main__":
main()

View file

@ -0,0 +1,76 @@
# Copyright 2023 Jacques-Etienne Baudoux (BCIM) <je@bcim.be>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import argparse
import logging
from pprint import pformat
from freezegun import freeze_time
from . import const, utils
from .wamas2ubl import wamas2dict
_logger = logging.getLogger("wamas2wamas")
def simulate_response(dict_wamas_in, processed_qty=None):
res = []
line_idx = 0
dict_parent_id = {}
for telegram_type_in, dicts in dict_wamas_in.items():
for telegram_type_out in const.DICT_CONVERT_WAMAS_TYPE[telegram_type_in]:
grammar_out = const.DICT_WAMAS_GRAMMAR[telegram_type_out]
for dict_item in dicts:
line_idx += 1
line = utils.generate_wamas_line(
dict_item,
grammar_out,
line_idx=line_idx,
dict_parent_id=dict_parent_id,
telegram_type_out=telegram_type_out,
do_wamas2wamas=True,
processed_qty=processed_qty,
)
if line:
res.append(line)
return res
def wamas2wamas(infile, processed_qty=None):
data = wamas2dict(infile)
_logger.debug(pformat(data))
wamas_lines = simulate_response(data, processed_qty=processed_qty)
return "\n".join(wamas_lines)
@freeze_time("2023-12-20 09:11:16")
def main():
parser = argparse.ArgumentParser(
description="Converts a wamas message into wamas response.",
)
parser.add_argument("-v", "--verbose", action="store_true", help="enable debug log")
parser.add_argument(
"-p",
"--processed-qty",
type=float,
dest="processed_qty",
help="quantity processed, by default complete quantity is processed",
)
parser.add_argument(
"-o", "--output", dest="outputfile", help="write result in this file"
)
parser.add_argument("inputfile", help="read message from this file")
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.DEBUG)
infile = utils.file_open(args.inputfile).read()
res = wamas2wamas(infile, args.processed_qty)
if args.outputfile:
fd = utils.file_open(args.outputfile, "w")
fd.write(res)
else:
print(res) # pylint: disable=print-used
if __name__ == "__main__":
main()

View file

@ -0,0 +1,16 @@
from . import (
weakq,
weapq,
watekq,
watepq,
weak,
weap,
ausk,
ausp,
auskq,
auspq,
kretkq,
kretpq,
kretk,
kretp,
)

View file

@ -0,0 +1,859 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "ART000061",
"df_func": False,
},
"Art_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "000",
"df_func": False,
},
"Art_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "default_code",
"df_val": False,
"df_func": False,
},
"Art_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "00000",
"df_func": False,
},
"Art_ArtBez": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "name",
"df_val": False,
"df_func": False,
},
"Art_ArtBez2": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_IntArtBez": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_Bestand_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "product_uom_wamas_code",
"df_val": False,
"df_func": False,
},
"Art_Anzeige_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "packaging_code",
"df_val": False,
"df_func": False,
},
"Art_HOSTUNITS_HostEinh": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_HostGewKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_NettoGew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": "weight",
"df_val": False,
"df_func": False,
},
"Art_AltAId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_AltAId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_AltAId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_ArtTyp": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": "item_type",
"df_val": False,
"df_func": False,
},
"Art_SORT_Sortiment": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": "wamas_assortment",
"df_val": False,
"df_func": False,
},
"Art_BestErfArtWa": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": "STK",
"df_func": False,
},
"Art_BestErfArtWe": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": "STK",
"df_func": False,
},
"Art_BestKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": "has_stock",
"df_val": False,
"df_func": False,
},
"Art_AbcWert": {
"type": "int",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": 999,
"df_func": False,
},
"Art_AKS_ArtKlasse": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": "wamas_class",
"df_val": False,
"df_func": False,
},
"Art_ArtGrp": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": "sale_ok_company",
"df_val": False,
"df_func": False,
},
"Art_WAGRP_WaGrpId": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": "GSMST",
"df_func": False,
},
"Art_InvGrp": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": "-",
"df_func": False,
},
"Art_AnbruchAnzErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": "sell_only_by_packaging",
"df_val": False,
"df_func": False,
},
"Art_ArtMischErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Art_AusPrMischErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Art_ChargeMischErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Art_ASCODE_ACode": {
"type": "str",
"length": 2,
"dp": False,
"dict_key": False,
"df_val": "ANFRAGE",
"df_func": False,
},
"Art_Aus_Schema": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": "ALL_WA",
"df_func": False,
},
"Art_StdAus_LagRf": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": False,
"df_val": "sdDEF",
"df_func": False,
},
"Art_TmpAus_LagRf": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": False,
"df_val": "sdDEF",
"df_func": False,
},
"Art_AutoAbsKzWa": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_ChangeAusPrErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_ChargePflWa": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Art_ChargePflWe": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": "compulsory_lot",
"df_val": False,
"df_func": False,
},
"Art_DisponentWe": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_FifoFen": {
"type": "int",
"length": 3,
"dp": False,
"dict_key": "fifo_window",
"df_val": False,
"df_func": False,
},
"Art_GanzTeMng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GanzTeSplittKz1": {
"type": "str",
"length": 7,
"dp": False,
"dict_key": False,
"df_val": "KANN",
"df_func": False,
},
"Art_GanzTeSplittKz2": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": "ORIGTE",
"df_func": False,
},
"Art_GewTolAbsWa": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": 999999999,
"df_func": False,
},
"Art_GewTolAbsWe": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": 999999999,
"df_func": False,
},
"Art_GewTolProzWa": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": 50,
"df_func": False,
},
"Art_GewTolProzWe": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": 50,
"df_func": False,
},
"Art_MaxDiffBasisAbsWa": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": 999999999,
"df_func": False,
},
"Art_MaxDiffBasisProzWa": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": 999.9,
"df_func": False,
},
"Art_MaxDiffGewAbsWa": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": 999999999,
"df_func": False,
},
"Art_MaxDiffGewProzWa": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": 999.9,
"df_func": False,
},
"Art_BestandTolAbsWe": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": 999999999,
"df_func": False,
},
"Art_BestandTolProzWe": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": 999.9,
"df_func": False,
},
"Art_Info": {
"type": "str",
"length": 77,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_LagWert": {
"type": "float",
"length": 14,
"dp": 6,
"dict_key": "list_price",
"df_val": False,
"df_func": False,
},
"Art_LBWE_LagIdWe": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": "eCAM",
"df_func": False,
},
"Art_MhdMischErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Art_MHDPflWa": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Art_MHDPflWe": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": "wamas_expiration_date",
"df_val": False,
"df_func": False,
},
"Art_MinderCheckKzHost": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Art_MinderCheckKzLls": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Art_RefEinheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_RefMng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_RestHaltProzWe": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": 100,
"df_func": False,
},
"Art_RestHaltTaWa": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": "removal_time",
"df_val": False,
"df_func": False,
},
"Art_RestHaltTaWe": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": "reception_validity_time",
"df_val": False,
"df_func": False,
},
"Art_SperrArtKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_SperrKzWa": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_StapelHoehe": {
"type": "int",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_Stapelkzahl": {
"type": "int",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": 100,
"df_func": False,
},
"Art_SumGewErfWe": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_ThmTauschErlWe": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_THM_ThmId": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": "packaging_level_palette_wamas_code",
"df_val": False,
"df_func": False,
},
"Art_UeberLiefErlWe": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Art_WartInt": {
"type": "int",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_WhrCode": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "CHF",
"df_func": False,
},
"Art_GefGutBuchs": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutStoffBez": {
"type": "str",
"length": 70,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutStoffBez2": {
"type": "str",
"length": 70,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutStoffBez3": {
"type": "str",
"length": 70,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutChemBez": {
"type": "str",
"length": 70,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutEinh": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutKlassCode": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutKlasse": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutUnNr": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutVerpGrp": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_GefGutZiffer": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_WaLvsSort_LvsSortiment": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_SatzKz": {
"type": "str",
"length": 1,
"dp": False,
"dict_key": "game_identifier",
"df_val": False,
"df_func": False,
},
"Art_StapelGew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": 99999,
"df_func": False,
},
"Art_ARTSTAT_ArtStatGrp": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": "item_stat_group",
"df_val": False,
"df_func": False,
},
"Art_LgSchwelleProz": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_Batch": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_ArtKtoKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_MatqMischErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_AbschlStatus": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "ANFRAGE",
"df_func": False,
},
"Art_BestErfArtWh": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": "STK",
"df_func": False,
},
"Art_ChargePflWh": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_MHDPflWh": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_WhSerienNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_WeSerienNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_WaSerienNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_PrueflosMngWe": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_SNr_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,251 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "ARTE00051",
"df_func": False,
},
"Arte_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "000",
"df_func": False,
},
"Arte_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "product",
"df_val": False,
"df_func": False,
},
"Arte_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "00000",
"df_func": False,
},
"Arte_Laenge": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": "length",
"df_val": False,
"df_func": False,
},
"Arte_Breite": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": "width",
"df_val": False,
"df_func": False,
},
"Arte_Hoehe": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": "height",
"df_val": False,
"df_func": False,
},
"Arte_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "code",
"df_val": False,
"df_func": False,
},
"Arte_Zaehler": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": "quantity",
"df_val": False,
"df_func": False,
},
"Arte_Nenner": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": "000001",
"df_func": False,
},
"Arte_GefGutPunkte": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_GEWKS_GewKlasse": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_HANDKS_HandKlasse": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_Info": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "code",
"df_val": False,
"df_func": False,
},
"Arte_InvMngKom": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_InvMngTpa": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_Lg_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_Lg_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_Lg_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_NachMng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_TeilNachMng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_OrigTeKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_StapelFakt": {
"type": "float",
"length": 4,
"dp": 1,
"dict_key": False,
"df_val": "100.0",
"df_func": False,
},
"Arte_TaraGew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": "weight",
"df_val": False,
"df_func": False,
},
"Arte_WeTeKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Arte_SatzKz": {
"type": "str",
"length": 1,
"dp": False,
"dict_key": "game_identifier",
"df_val": False,
"df_func": False,
},
"Arte_PrintArtLabWe": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
}
)

View file

@ -0,0 +1,91 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "ARTEAN001",
"df_func": False,
},
"ArtEan_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "000",
"df_func": False,
},
"ArtEan_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "product",
"df_val": False,
"df_func": False,
},
"ArtEan_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "00000",
"df_func": False,
},
"ArtEan_EAN": {
"type": "str",
"length": 14,
"dp": False,
"dict_key": "barcode",
"df_val": False,
"df_func": False,
},
"ArtEan_EST_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "product_uom",
"df_val": False,
"df_func": False,
},
"ArtEan_SatzKz": {
"type": "str",
"length": 1,
"dp": False,
"dict_key": "game_identifier",
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,743 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"ubl_path": False,
"df_val": "AUSK00056",
"df_func": False,
},
"RxAusk_AusId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxAusk_AusId_AusNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxAusk_AusId_HostAusKz": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"RxAusk_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cac:OrderReference.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxAusk_AUTYP_Typ": {
"type": "str",
"length": 6,
"dp": False,
"ubl_path": "DespatchAdvice.cac:Shipment.cac:ShipmentStage."
"cbc:TransportMeansTypeCode",
"df_val": False,
"df_func": False,
},
"RxAusk_KST_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxAusk_KST_KuNr": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty."
"cbc:CustomerAssignedAccountID",
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Name",
},
"RxAusk_Adrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Name2",
},
"RxAusk_Adrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Name3",
},
"RxAusk_Adrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Name4",
},
"RxAusk_Adrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PartyName.cbc:Title",
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Adr",
},
"RxAusk_Adrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PostalAddress.cbc:PostalZone",
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PostalAddress.cbc:CityName",
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:Contact.cbc:Telephone",
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:DeliveryContact."
"cbc:ElectronicMail",
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_Adrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PartyName.cbc:Name",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Name2",
},
"RxAusk_LiefAdrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Name3",
},
"RxAusk_LiefAdrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Name4",
},
"RxAusk_LiefAdrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PartyName.cbc:Title",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_Adrs_Adr",
},
"RxAusk_LiefAdrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PostalAddress.cbc:PostalZone",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PostalAddress.cbc:CityName",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PostalAddress.cbc:CountrySubentity",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:PostalAddress.cac:Country.cbc:IdentificationCode",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:Contact.cbc:Telephone",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:Contact.cbc:ElectronicMail",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DeliveryCustomerParty.cac:Party."
"cac:Contact.cbc:Telefax",
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_LiefAdrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_EndEmpfAdrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_GeplBereitTerm": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": [
"DespatchAdvice.cac:Shipment.cac:Delivery."
"cac:EstimatedDeliveryPeriod.cbc:EndDate",
"DespatchAdvice.cac:Shipment.cac:Delivery."
"cac:EstimatedDeliveryPeriod.cbc:EndTime",
],
"df_val": False,
"df_func": False,
},
"RxAusk_GeplEinStrat_LagRf": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": "DespatchAdvice.cac:Shipment.cac:Delivery.cac:Despatch."
"cac:DespatchLocation.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxAusk_Info2Wamas": {
"type": "str",
"length": 77,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:Note",
"df_val": False,
"df_func": False,
},
"RxAusk_AbladeStelle": {
"type": "str",
"length": 30,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_LiefTerm": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": "DespatchAdvice.cac:Shipment.cbc:DeliveryInstructions",
"df_val": False,
"df_func": False,
},
"RxAusk_BestZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": "DespatchAdvice.cac:OrderReference.cbc:IssueDate",
"df_val": False,
"df_func": False,
},
"RxAusk_ZustellTermin": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": "DespatchAdvice.cac:Shipment.cbc:DeliveryInstructions",
"df_val": False,
"df_func": False,
},
"RxAusk_ZustellZeitpunkt": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": "FRUEH",
"df_func": False,
},
"RxAusk_BereitstellTermin": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": "DespatchAdvice.cac:Shipment.cbc:DeliveryInstructions",
"df_val": False,
"df_func": False,
},
"RxAusk_BereitstellZeitpunkt": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": "FRUEH",
"df_func": False,
},
"RxAusk_RahmenTourId_TourNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cac:Shipment.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTourId_HostTourKz": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"RxAusk_RahmenTour_WA_Tor": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTourMaxGew": {
"type": "float",
"length": 12,
"dp": 3,
"ubl_path": "DespatchAdvice.cac:Shipment.cbc:GrossWeightMeasure",
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTourMaxStdLE": {
"type": "float",
"length": 7,
"dp": 3,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTourStdLEVol": {
"type": "float",
"length": 7,
"dp": 3,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTourFzId1": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTourFzId2": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTour_LKWT_LkwTyp": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": "CAM",
"df_func": False,
},
"RxAusk_RahmenTourLkwFahrer": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTourLkwBeifahrer": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_RahmenTour_S_SchichtId": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_VerlRfNr": {
"type": "int",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": 1,
"df_func": False,
},
"RxAusk_Prio": {
"type": "str",
"length": 1,
"dp": False,
"ubl_path": "DespatchAdvice.cac:Shipment.cbc:ShippingPriorityLevelCode",
"df_val": False,
"df_func": False,
},
"RxAuskI_Text": {
"type": "str",
"length": 70,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_MergeId": {
"type": "str",
"length": 30,
"dp": False,
"ubl_path": {
"DespatchAdvice.cac:Shipment."
"cbc:HandlingInstructions": "DespatchAdvice.cac:Shipment.cbc:ID"
},
"df_val": False,
"df_func": False,
},
"RxAusk_VAST_Versandart": {
"type": "str",
"length": 2,
"dp": False,
"ubl_path": False,
"df_val": "ST",
"df_func": False,
},
"RxAusk_Gepl2Step_LagRf": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusk_VplStrat": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": False,
"df_val": "Def_Strat",
"df_func": False,
},
}
)

View file

@ -0,0 +1,142 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_source_q",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_destination_q",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "AUSKQ0052",
"df_func": False,
},
"IvAusk_AusId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxAusk_AusId_Mand",
"df_val": False,
"df_func": False,
},
"IvAusk_AusId_AusNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusk_AusId_AusNr",
"df_val": False,
"df_func": False,
},
"IvAusk_AusId_HostAusKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxAusk_AusId_HostAusKz",
"df_val": False,
"df_func": False,
},
"IvAusk_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusk_ExtRef",
"df_val": False,
"df_func": False,
},
"IvAusk_KST_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxAusk_KST_Mand",
"df_val": False,
"df_func": False,
},
"IvAusk_KST_KuNr": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": "RxAusk_KST_KuNr",
"df_val": False,
"df_func": False,
},
"IvAusk_LiefTerm": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": "RxAusk_LiefTerm",
"df_val": False,
"df_func": False,
},
"IvAusk_StartZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvAusk_FertZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvAusk_RahmenTourId_TourNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusk_AusId_Mand",
"df_val": False,
"df_func": False,
},
"IvAusk_RahmenTourId_HostTourKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxAusk_RahmenTourId_HostTourKz",
"df_val": False,
"df_func": False,
},
"IvAusk_Info2Host": {
"type": "str",
"length": 77,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,297 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"ubl_path": False,
"df_val": "AUSP00054",
"df_func": False,
},
"RxAusp_AusId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxAusp_AusId_AusNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxAusp_AusId_HostAusKz": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"RxAusp_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_HostPosNr": {
"type": "int",
"length": 6,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s.cbc:ID",
"df_val": False,
"df_func": "get_index",
},
"RxAusp_MId_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxAusp_MId_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s.cac:Item."
"cac:SellersItemIdentification.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxAusp_MId_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": "00000",
"df_func": False,
},
"RxAusp_MId_ResNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"Matqgs_Matqg1": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": "DISPONIBLE",
"df_func": False,
},
"Matqgs_Matqg2": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"Matqgs_Matqg3": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_GrundPreis": {
"type": "float",
"length": 14,
"dp": 6,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_LadenVerPreis": {
"type": "float",
"length": 14,
"dp": 6,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_LadenVerWhrCode": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"BestMng": {
"type": "float",
"length": 12,
"dp": 3,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s."
"cbc:DeliveredQuantity.#text",
"df_val": False,
"df_func": False,
},
"HostEinheit": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s."
"cbc:DeliveredQuantity.@unitCode",
"df_val": False,
"df_func": False,
},
"RxAusp_WeiterPreis": {
"type": "float",
"length": 14,
"dp": 6,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_WeiterWhrCode": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_AktionWpKz": {
"type": "bool",
"length": 1,
"dp": False,
"ubl_path": False,
"df_val": "N",
"df_func": False,
},
"RxAusp_AktionLvpKz": {
"type": "bool",
"length": 1,
"dp": False,
"ubl_path": False,
"df_val": "N",
"df_func": False,
},
"RxAusp_AktionNr": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_VorVerNr": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_Info": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_HostBatch": {
"type": "bool",
"length": 1,
"dp": False,
"ubl_path": False,
"df_val": "N",
"df_func": False,
},
"RxAusp_BatchLagRf": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_MId_SerienNrGrp": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_MId_Charge": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxAusp_RestHaltTaWa": {
"type": "int",
"length": 4,
"dp": False,
"ubl_path": False,
"df_val": 0,
"df_func": False,
},
"RxAusp_AscFifo": {
"type": "bool",
"length": 1,
"dp": False,
"ubl_path": False,
"df_val": "N",
"df_func": False,
},
"RxAusp_WATeSplittId": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,190 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_source_q",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_destination_q",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "AUSPQ0051",
"df_func": False,
},
"IvAusp_UrAusId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxAusp_AusId_Mand",
"df_val": False,
"df_func": False,
},
"IvAusp_UrAusId_AusNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_AusId_AusNr",
"df_val": False,
"df_func": False,
},
"IvAusp_UrAusId_HostAusKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxAusp_AusId_HostAusKz",
"df_val": False,
"df_func": False,
},
"IvAusp_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_ExtRef",
"df_val": False,
"df_func": False,
},
"IvAusp_HostPosNr": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": "RxAusp_HostPosNr",
"df_val": False,
"df_func": False,
},
"IvAusp_MId_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxAusp_MId_AId_Mand",
"df_val": False,
"df_func": False,
},
"IvAusp_MId_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_MId_AId_ArtNr",
"df_val": False,
"df_func": False,
},
"IvAusp_MId_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxAusp_MId_AId_Var",
"df_val": False,
"df_func": False,
},
"IvMatqk_HMATQ_HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvAusp_LiefMngsWamas_Mng": {
"type": "int",
"length": 12,
"dp": False,
"dict_key": "BestMng",
"df_val": False,
"df_func": False,
},
"IvAusp_LiefMngsWamas_Gew": {
"type": "int",
"length": 12,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvArt_HOSTUNITS_HostEinh": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "HostEinheit",
"df_val": False,
"df_func": False,
},
"IvArt_Bestand_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "HostEinheit",
"df_val": False,
"df_func": False,
},
"IvAusp_MId_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_MId_Charge",
"df_val": False,
"df_func": False,
},
"IvAusp_Info": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "RxAusp_Info",
"df_val": False,
"df_func": False,
},
"IvAusp_MId_MHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"LiefSNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"AUSPQ0051": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,195 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "BKORR0051",
"df_func": False,
},
"Hostkorr_HostKorrKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "HOST",
"df_func": False,
},
"Invba_MId_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "000",
"df_func": False,
},
"Invba_MId_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_MId_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "00000",
"df_func": False,
},
"Invba_MId_SerienNrGrp": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_MId_ResNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_MId_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_MId_MHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_MId_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Matqk_HMATQ_HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_DiffMngs_Mng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_DiffMngs_Gew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_HOSTUNITS_HostEinh": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Art_Bestand_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_BuSchl": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Bschl_HostBuschlPlus": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Bschl_KOST_KostSte": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Invba_InvbaId": {
"type": "int",
"length": 7,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Sign": {
"type": "str",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,275 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"ubl_path": False,
"df_val": "KRETK0051",
"df_func": False,
},
"RxKretk_KretId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxKretk_KretId_KretNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxKretk_KretId_HostKretKz": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"RxKretk_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cac:OrderReference.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxKretk_KRETTYP_Typ": {
"type": "str",
"length": 6,
"dp": False,
"ubl_path": False,
"df_val": "RETCLI",
"df_func": False,
},
"RxKretk_KST_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxKretk_KST_KuNr": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cbc:CustomerAssignedAccountID",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name",
},
"RxKretk_Adrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name2",
},
"RxKretk_Adrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name3",
},
"RxKretk_Adrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name4",
},
"RxKretk_Adrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:Title",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Adr",
},
"RxKretk_Adrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:PostalAddress.cbc:PostalZone",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:PostalAddress.cbc:CityName",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:PostalAddress.cac:Country.cbc:IdentificationCode",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:Telephone",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:ElectronicMail",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:Telefax",
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxKretk_Adrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxKretk_KretFlaeche_FeldId": {
"type": "str",
"length": 14,
"dp": False,
"ubl_path": False,
"df_val": "SF-EM-RETCLI",
"df_func": False,
},
"RxKretk_Info2Wamas": {
"type": "str",
"length": 77,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:Note",
"df_val": False,
"df_func": False,
},
"RxKretk_LiefTerm": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": [
"DespatchAdvice.cac:Shipment.cac:Delivery."
"cac:EstimatedDeliveryPeriod.cbc:EndDate",
"DespatchAdvice.cac:Shipment.cac:Delivery."
"cac:EstimatedDeliveryPeriod.cbc:EndTime",
],
"df_val": False,
"df_func": False,
},
"RxKretk_TOR_Tor": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,126 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_source_q",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_destination_q",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "KRETKQ050",
"df_func": False,
},
"IvKretk_KretId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxKretk_KretId_Mand",
"df_val": False,
"df_func": False,
},
"IvKretk_KretId_KretNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxKretk_KretId_KretNr",
"df_val": False,
"df_func": False,
},
"IvKretk_KretId_HostKretKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxKretk_KretId_HostKretKz",
"df_val": False,
"df_func": False,
},
"IvKretk_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxKretk_ExtRef",
"df_val": False,
"df_func": False,
},
"IvKretk_KST_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxKretk_KST_Mand",
"df_val": False,
"df_func": False,
},
"IvKretk_KST_KuNr": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": "RxKretk_KST_KuNr",
"df_val": False,
"df_func": False,
},
"IvKretk_LiefTerm": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": "RxKretk_LiefTerm",
"df_val": False,
"df_func": False,
},
"IvKretk_StartZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_date_from_field('IvKretk_LiefTerm', 8, 'hours')",
},
"IvKretk_FertZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_date_from_field('IvKretk_LiefTerm', 18, 'hours')",
},
"IvKretk_Info2Host": {
"type": "str",
"length": 77,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,193 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"ubl_path": False,
"df_val": "KRETP0046",
"df_func": False,
},
"RxKretp_KretId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxKretp_KretId_KretNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxKretp_KretId_HostKretKz": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"RxKretp_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cac:OrderReference.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxKretp_HostPosNr": {
"type": "int",
"length": 6,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s.cbc:ID",
"df_val": False,
"df_func": "get_sequence_number",
},
"RxKretp_MId_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxKretp_MId_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s.cac:Item."
"cac:BuyersItemIdentification.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxKretp_MId_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": "00000",
"df_func": False,
},
"Matqgs_Matqg1": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": "DISPONIBLE",
"df_func": False,
},
"Matqgs_Matqg2": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"Matqgs_Matqg3": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"SollMng": {
"type": "float",
"length": 12,
"dp": 3,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s."
"cbc:DeliveredQuantity.#text",
"df_val": False,
"df_func": False,
},
"HostEinheit": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchLine.%s."
"cbc:DeliveredQuantity.@unitCode",
"df_val": False,
"df_func": False,
},
"RxKretp_MId_Charge": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxKretp_MId_MHD": {
"type": "date",
"length": 8,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxKretp_SatzKzKretp": {
"type": "str",
"length": 1,
"dp": False,
"ubl_path": False,
"df_val": "N",
"df_func": False,
},
"RxKretp_MId_SerienNrGrp": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxKretp_MId_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,174 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_source_q",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_destination_q",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "KRETPQ050",
"df_func": False,
},
"IvKretp_KretId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxKretp_KretId_Mand",
"df_val": False,
"df_func": False,
},
"IvKretp_KretId_KretNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxKretp_KretId_KretNr",
"df_val": False,
"df_func": False,
},
"IvKretp_KretId_HostKretKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxKretp_KretId_HostKretKz",
"df_val": False,
"df_func": False,
},
"IvKretp_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxKretp_ExtRef",
"df_val": False,
"df_func": False,
},
"IvKretp_HostPosNr": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": "RxKretp_HostPosNr",
"df_val": False,
"df_func": False,
},
"IvKretp_MId_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxKretp_MId_AId_Mand",
"df_val": False,
"df_func": False,
},
"IvKretp_MId_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxKretp_MId_AId_ArtNr",
"df_val": False,
"df_func": False,
},
"IvKretp_MId_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxKretp_MId_AId_Var",
"df_val": False,
"df_func": False,
},
"IvMatqk_HMATQ_HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "Matqgs_Matqg1",
"df_val": False,
"df_func": False,
},
"IvKretp_AnmMngs_Mng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": "get_quantity_done",
},
"IvKretp_AnmMngs_Gew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvArt_HOSTUNITS_HostEinh": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvArt_Bestand_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "HostEinheit",
"df_val": False,
"df_func": False,
},
"IvKretp_MId_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxKretp_MId_Charge",
"df_val": False,
"df_func": False,
},
"IvKretp_MId_MHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": "RxKretp_MId_MHD",
"df_val": "19700101",
"df_func": False,
},
"IvKretp_MId_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxKretp_MId_WeNr",
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,506 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "KST000052",
"df_func": False,
},
"Kst_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "000",
"df_func": False,
},
"Kst_KuNr": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": "ref",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_name",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_name2",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_name3",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_name4",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": "delivery_title",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_street",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": "delivery_zip",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_city",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_state",
"df_func": False,
},
"Kst_LiefAdrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": "delivery_country_code",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": "delivery_phone",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "delivery_email",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": "delivery_website",
"df_val": False,
"df_func": False,
},
"Kst_LiefAdrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_name",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_name2",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_name3",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_name4",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": "invoicing_title",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_street",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_Adrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": "invoicing_zip",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_city",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_state",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": "invoicing_country_code",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": "invoicing_phone",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_Adrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "invoicing_email",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": "invoicing_website",
"df_val": False,
"df_func": False,
},
"Kst_Adrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_DVRNr": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_UIDNr": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_LokKstTyp_MaxTEHoehe": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_KSTTYP_KstTypId": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": "Standard",
"df_func": False,
},
"Kst_LokKstTyp_EanQuittErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Kst_LokKstTyp_EartErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_LokKstTyp_EMatQErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_LokKstTyp_EtikettKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_LokKstTyp_FeldKQuittErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Kst_LokKstTyp_FeldQuittErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Kst_LokKstTyp_KomGewInitKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_LokKstTyp_KomMngInitKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Kst_LokKstTyp_KomPosInitKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Kst_LokKstTyp_KontErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_LokKstTyp_KontIntWa": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_LokKstTyp_KstGrp": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_LokKstTyp_LiefSAnz": {
"type": "int",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Kst_LokKstTyp_LiefSLay": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": "Standard",
"df_func": False,
},
"Kst_LokKstTyp_MkkErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_LokKstTyp_OkQuittErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_LokKstTyp_TeQuittErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Kst_LokKstTyp_UeberliefErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"Kst_SatzKz": {
"type": "str",
"length": 1,
"dp": False,
"dict_key": "game_identifier",
"df_val": False,
"df_func": False,
},
"Kst_SperrKzWa": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,91 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "KSTAUS050",
"df_func": False,
},
"KstAus_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "000",
"df_func": False,
},
"KstAus_KuNr": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": "ref",
"df_val": False,
"df_func": False,
},
"KstAus_ThmId": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": "wamas_code",
"df_val": False,
"df_func": False,
},
"KstAus_LagIdKom": {
"type": "str",
"length": 6,
"dp": False,
"dict_key": "picking_zone",
"df_val": False,
"df_func": False,
},
"KstAus_RfNr": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "priority_sequence",
"df_val": "0",
"df_func": False,
},
"KstAus_SatzKz": {
"type": "str",
"length": 1,
"dp": False,
"dict_key": "game_identifier",
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,187 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "LBA000051",
"df_func": False,
},
"Lba_HOSTSTOCK_HostStockKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "HOST",
"df_func": False,
},
"Lba_LfdNummer": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Variante": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_ResNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_SNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_vonMHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_bisMHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpChargeKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpWeNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpResNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpMHDKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpTeIdKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpSNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,187 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "LBABQ0052",
"df_func": False,
},
"Lba_HOSTSTOCK_HostStockKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "HOST",
"df_func": False,
},
"Lba_LfdNummer": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Variante": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_ResNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_SNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_vonMHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_bisMHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpChargeKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpWeNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpResNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpMHDKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpTeIdKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpSNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,187 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "LBAMQ0051",
"df_func": False,
},
"Lba_HOSTSTOCK_HostStockKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "HOST",
"df_func": False,
},
"Lba_LfdNummer": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Variante": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_ResNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_SNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_vonMHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_bisMHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpChargeKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpWeNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpResNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpMHDKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpTeIdKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_GrpSNrKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lba_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,179 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "LBAMQ0051",
"df_func": False,
},
"Lba_HOSTSTOCK_HostStockKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": "HOST",
"df_func": False,
},
"Lba_LfdNummer": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"TeId": {
"type": "str",
"length": 18,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Mngs_Mng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"BestEinh": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Mngs_Gew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"HostEinh": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_ResNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_SerienNrGrp": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_MHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"MId_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Seriennummer": {
"type": "int",
"length": 7,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,283 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"df_val": "LST000051",
"df_func": False,
},
"Lst_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": False,
"df_val": "000",
"df_func": False,
},
"Lst_LiefNr": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": "ref",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "name",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "name2",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "name3",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "name4",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": "title",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "street",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_Adrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": "zip",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "city",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "state",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"dict_key": "country_code",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": "phone",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": "email",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"dict_key": "website",
"df_val": False,
"df_func": False,
},
"Lst_Adrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_UIDNr": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_DVRNr": {
"type": "str",
"length": 15,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_LSTTYP_LstTypId": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": "Standard",
"df_func": False,
},
"Lst_LokLstTyp_AnzWeBeleg": {
"type": "int",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_LokLstTyp_LiefBewKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_LokLstTyp_StdLgTor": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_LokLstTyp_StdRetTor": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_LokLstTyp_StdWeTor": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"Lst_LokLstTyp_UebLiefErl": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "J",
"df_func": False,
},
"Lst_LokLstTyp_WeBelegLay": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": "Standard",
"df_func": False,
},
"Lst_SatzKz": {
"type": "str",
"length": 1,
"dp": False,
"dict_key": "game_identifier",
"df_val": False,
"df_func": False,
},
"Lst_PrueflosWeKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
}
)

View file

@ -0,0 +1,166 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_source_q",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_destination_q",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "WATEKQ054",
"df_func": False,
},
"IvTek_TeId": {
"type": "str",
"length": 18,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_random_str_num",
},
"IvTek_Pos_FeldId": {
"type": "str",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_random_quai",
},
"IvTek_Pos_Offs_L_X": {
"type": "int",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvTek_Pos_Offs_L_Y": {
"type": "int",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvTek_Pos_Offs_L_Z": {
"type": "int",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvTek_Stamm_TeId": {
"type": "str",
"length": 18,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"AnzSubTe": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvTourp_TOUR_TourId_TourNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusk_RahmenTourId_TourNr",
"df_val": False,
"df_func": False,
},
"IvTourp_TOUR_TourId_HostTourKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxAusk_AusId_HostAusKz",
"df_val": False,
"df_func": False,
},
"IvTts_THM_ThmId": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": "RO",
"df_func": False,
},
"IvTts_MaxLadeHoehe": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_random_int_num",
},
"IvTour_VAST_Versandart": {
"type": "str",
"length": 2,
"dp": False,
"dict_key": False,
"df_val": "ST",
"df_func": False,
},
"IvTourp_TOUR_TourId_IntLfdNr": {
"type": "int",
"length": 4,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_random_int_num",
},
"IvTek_GesGew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": "get_random_int_num",
},
"IvTourp_LiefSNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,214 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_source_q",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_destination_q",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "WATEPQ050",
"df_func": False,
},
"IvTep_MId_Charge": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_MId_Charge",
"df_val": False,
"df_func": False,
},
"IvTep_MId_MHD": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": "20240413",
"df_func": False,
},
"IvTep_MId_ResNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_MId_ResNr",
"df_val": False,
"df_func": False,
},
"IvTep_MId_WeNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvTep_MId_ThmKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"IvTep_PrimThmKz": {
"type": "bool",
"length": 1,
"dp": False,
"dict_key": False,
"df_val": "N",
"df_func": False,
},
"IvTep_FifoDatum": {
"type": "date",
"length": 8,
"dp": False,
"dict_key": False,
"df_val": "20240413",
"df_func": False,
},
"IvTep_PosNr": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvArt_Bestand_Einheit": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "HostEinheit",
"df_val": False,
"df_func": False,
},
"IvArt_HOSTUNITS_HostEinh": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvAusp_UrAusId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxAusp_AusId_Mand",
"df_val": False,
"df_func": False,
},
"IvAusp_UrAusId_AusNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_AusId_AusNr",
"df_val": False,
"df_func": False,
},
"IvAusp_UrAusId_HostAusKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxAusp_AusId_HostAusKz",
"df_val": False,
"df_func": False,
},
"IvAusp_HostPosNr": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": "RxAusp_HostPosNr",
"df_val": False,
"df_func": False,
},
"IvArt_AId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxAusp_MId_AId_Mand",
"df_val": False,
"df_func": False,
},
"IvArt_AId_ArtNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxAusp_MId_AId_ArtNr",
"df_val": False,
"df_func": False,
},
"IvArt_AId_Var": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxAusp_MId_AId_Var",
"df_val": False,
"df_func": False,
},
"Mngs_Mng": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": "BestMng",
"df_val": False,
"df_func": False,
},
"Mngs_Gew": {
"type": "float",
"length": 12,
"dp": 3,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvMatqk_HMATQ_HMatQ": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "Matqgs_Matqg1",
"df_val": False,
"df_func": False,
},
"IvTep_TeId": {
"type": "str",
"length": 18,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_parent_id",
},
}
)

View file

@ -0,0 +1,259 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_destination",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"ubl_path": False,
"df_val": "WEAK00050",
"df_func": False,
},
"RxWeak_WeaId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxWeak_WeaId_WeaNr": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxWeak_WeaId_HostWeaKz": {
"type": "str",
"length": 5,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "get_source",
},
"RxWeak_ExtRef": {
"type": "str",
"length": 20,
"dp": False,
"ubl_path": "DespatchAdvice.cac:OrderReference.cbc:ID",
"df_val": False,
"df_func": False,
},
"RxWeak_WEATYP_Typ": {
"type": "str",
"length": 6,
"dp": False,
"ubl_path": False,
"df_val": "STDMAN",
"df_func": False,
},
"RxWeak_LST_Mand": {
"type": "str",
"length": 3,
"dp": False,
"ubl_path": False,
"df_val": "000",
"df_func": False,
},
"RxWeak_LST_LiefNr": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cbc:CustomerAssignedAccountID",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_Name": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name",
},
"RxWeak_Adrs_Name2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name2",
},
"RxWeak_Adrs_Name3": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name3",
},
"RxWeak_Adrs_Name4": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Name4",
},
"RxWeak_Adrs_Anrede": {
"type": "str",
"length": 15,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:Title",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_Adr": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": "supplier_get_Adrs_Adr",
},
"RxWeak_Adrs_Adr2": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_PLZ": {
"type": "str",
"length": 10,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:PostalAddress.cbc:PostalZone",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_Ort": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:PostalAddress.cbc:CityName",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_OrtTeil": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_Land": {
"type": "str",
"length": 4,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:PostalAddress.cac:Country.cbc:IdentificationCode",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_Tel": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:Telephone",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_Fax": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:Telefax",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_Email": {
"type": "str",
"length": 40,
"dp": False,
"ubl_path": "DespatchAdvice.cac:DespatchSupplierParty."
"cac:Party.cac:Contact.cbc:ElectronicMail",
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_WWW": {
"type": "str",
"length": 35,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxWeak_Adrs_ILN": {
"type": "str",
"length": 13,
"dp": False,
"ubl_path": False,
"df_val": False,
"df_func": False,
},
"RxWeak_BestTerm": {
"type": "datetime",
"length": 14,
"dp": False,
"ubl_path": [
"DespatchAdvice.cac:Shipment.cac:Delivery."
"cac:PromiseDeliveryPeriod.cbc:EndDate",
"DespatchAdvice.cac:Shipment.cac:Delivery."
"cac:PromiseDeliveryPeriod.cbc:EndTime",
],
"df_val": False,
"df_func": False,
},
"RxWeak_Info2Wamas": {
"type": "str",
"length": 77,
"dp": False,
"ubl_path": "DespatchAdvice.cbc:Note",
"df_val": False,
"df_func": False,
},
}
)

View file

@ -0,0 +1,150 @@
from collections import OrderedDict
grammar = OrderedDict(
{
"Telheader_Quelle": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_source_q",
},
"Telheader_Ziel": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_destination_q",
},
"Telheader_TelSeq": {
"type": "int",
"length": 6,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_sequence_number",
},
"Telheader_AnlZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"Satzart": {
"type": "str",
"length": 9,
"dp": False,
"dict_key": False,
"df_val": "WEAKQ0051",
"df_func": False,
},
"IvWevk_WevId_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxWeak_WeaId_Mand",
"df_val": False,
"df_func": False,
},
"IvWevk_WevId_WevNr": {
"type": "str",
"length": 20,
"dp": False,
"dict_key": "RxWeak_WeaId_WeaNr",
"df_val": False,
"df_func": False,
},
"HostWeaKz": {
"type": "str",
"length": 5,
"dp": False,
"dict_key": "RxWeak_WeaId_HostWeaKz",
"df_val": False,
"df_func": False,
},
"IvWevk_LiefTerm": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": "19700101010000",
"df_func": False,
},
"IvWevk_LkwFahrer": {
"type": "str",
"length": 40,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvWevk_LkwKz": {
"type": "str",
"length": 10,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvWevk_EinfahrtZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": "19700101010000",
"df_func": False,
},
"IvWevk_StartZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvWevk_FertZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": "get_current_datetime",
},
"IvWevk_AnmZeit": {
"type": "datetime",
"length": 14,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"IvWevk_Info2Host": {
"type": "str",
"length": 77,
"dp": False,
"dict_key": False,
"df_val": False,
"df_func": False,
},
"LST_Mand": {
"type": "str",
"length": 3,
"dp": False,
"dict_key": "RxWeak_LST_Mand",
"df_val": False,
"df_func": False,
},
"LST_LiefNr": {
"type": "str",
"length": 13,
"dp": False,
"dict_key": "RxWeak_LST_LiefNr",
"df_val": False,
"df_func": False,
},
}
)

Some files were not shown because too many files have changed in this diff Show more