Skip to content

Design of the reference construct #317

Description

@larsolofsson

See current reference construct in issue #302.
When working with the reference construct, I have found that papiNet need to discuss some improvements.

When an item is referenced, e.g. a DeliveryNote, then the identifier of the item can be an id (UUID) or a number assigned by a party.
Currently the name of the reference type is ending with "Number", e.g. DeliveryNoteNumber.
The proposal is to remove "Number" from the the name of the reference type, e.g. to be just DeliveryNote.

Property Id (UUID) will not be used in use cases in version 5.0.0.
It can be added later, if needed in the future
The proposal is to remove property Id: (UUID) from the reference construct.

Name change of property assignedByIdentifierBySupplier?
Would assigningPartyIdentifierBySupplier or assignedByPartyIdentifierBySupplier be a better name?
The proposal is to change name .assignedByIdentifierBySupplier to assigningPartyIdentifierBySupplier

The proposal is to make the reference constract more compact and more flat by applying above proposals and replacing one object with 2 properties.

Image
              references:
                type: array
                minItems: 1
                items:
                  type: object
                  unevaluatedProperties: false
                  required:
                    - type
                    - assignedBy
                    - assigningPartyIdentifierBySupplier
                    - number
                  properties:
                    type:
                      description: The type of the referenced item.
                      type: string
                      enum:
                        - DeliveryNote
                        - DeliveryInstruction
                        - LoadingInstruction
                        - Shipment
                    assignedBy:
                      description: The business role of the assigning party.
                      type: string
                      enum:
                        - Forwarder
                        - Supplier
                        - WarehouseOperator
                    assigningPartyIdentifierBySupplier:
                      type: string
                      minLength: 1
                      description: The identifier of the assigning party assigned by the _Supplier_.
                    number:
                      type: string
                      minLength: 1
                      description: The identifier of the referenced item given by the assigning party.
                    dateTime:
                      type: string
                      format: date-time
                      description: |
                        The dateTime when the referenced item was created or updated. 
                        It MUST be local or UTC date-time expressed in ISO 8601
                    sequenceNumber:
                      type: integer
                      minimum: 0
                      description: A sequenceNumber in the referenced item.
                    lineItemNumber:
                      type: integer
                      minimum: 0
                      description: A lineItemNumber in the referenced item.

Current reference construct

              references:
                type: array
                minItems: 1
                items:
                  type: object
                  unevaluatedProperties: false
                  required:
                    - type
                    - assignedBy
                  anyOf:
                    - required:
                        - id
                    - required:
                        - identifier
                  properties:
                    type:
                      type: string
                      enum:
                        - DeliveryNoteNumber
                        - DeliveryInstructionNumber
                        - LoadingInstructionNumber
                        - ShipmentNumber
                    assignedBy:
                      description: The business role of the assigning party.
                      type: string
                      enum:
                        - Forwarder
                        - Supplier
                        - WarehouseOperator
                    id:
                      type: string
                      format: uuid
                    identifier:
                      type: object
                      unevaluatedProperties: false
                      required:
                        - value
                        - assignedByIdentifierBySupplier
                      properties:
                        value:
                          type: string
                          minLength: 1
                        assignedByIdentifierBySupplier:
                          type: string
                          minLength: 1
                          description: The identifier of the assigning party assigned by the _Supplier_.
                    dateTime:
                      type: string
                      format: date-time
                      description: It MUST be local or UTC date-time expressed in ISO 8601
                    sequenceNumber:
                      type: integer
                      minimum: 0
                    lineItemNumber:
                      type: integer
                      minimum: 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    MUST BE DISCUSSEDMust be discussed during the next CWG meeting

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions