Skip to content

Legacy

Deprecated

Since 6.10.13, everything in this page is deprecated. All those methods are called inside a context.

Purpose

O2C DSL contains major O2C App features promoted to core.

Methods

Binding name: p6.o2c


fromXml

Deprecated

Since 6.10.13, this method has been moved to the context.

Convert a transactionInfo in a GPathResult format to an easy to handle object TransactionInfo.

Syntax

TransactionInfoResponse p6.o2c.fromXml(GPathResult ti)
Example
final gpath = p6.pipeline.getXml 'xml'
def ti = p6.o2c.fromXml gpath

toXml

Deprecated

Since 6.10.13, this method has been moved to the context.

Convert a TransactionInfo object to a transactionInfo in a GPathResult.

Syntax

GPathResult p6.o2c.toXml(TransactionInfoResponse ti)
Example
final ti = p6.o2c.transactionInfo {...}
def gpath = p6.o2c.toXml ti

transactionInfo

Deprecated

Since 6.10.13, this method has been moved to the context.

Create a TransactionInfo.

Syntax

    GPathResult p6.o2c.transactionInfo {...}
Example
final ti = p6.o2c.transactionInfo {
    id  'Invoice_10AQ1312_95294f99-1a48-402d-97c2-8eb045deccc8'
    creationDate  '2024-11-20T15:16:59.328+0000'
    transactionType  'Invoice'
    transactionNumber  '10AQ1312'
    sourceSystem  'Supplier System'
    targetSystem  'Peppol'
    sender  ''
    finalRecipient  '115609021'
    transferProtocol  ''
    deliveredVia  'Peppol'
    sourceDocumentFormat  'XML'
    sourceDocumentURI  'p6file:///opt/p6core.data/resources/sshd/repository/customer_drop/Invoices/processed/Demo Data_Invoice_ENGLISH_200 lines.csv'
    sourceDocumentContentType  'text/plain'
    pivotDocumentFormat  'UBL'
    pivotDocumentURI  'p6file:///opt/p6core.data/resources/documents/Invoice/Invoice_10AQ1312_95294f99-1a48-402d-97c2-8eb045deccc8.xml'
    pivotDocumentContentType  'text/xml; charsetutf-8'
    targetDocumentFormat  'UBL'
    targetDocumentURI  'p6file:///opt/p6core.data/resources/documents/Invoice/Invoice_10AQ1312_95294f99-1a48-402d-97c2-8eb045deccc8.xml'
    targetDocumentContentType  'text/xml; charsetutf-8'
    attachments { attachment {
                    fileName  '10AQ1312.pdf'
                    uri  'p6file:///opt/p6core.data/resources/documents/10AQ1312.pdf'
                    contentType  'application/pdf'
                }}
    technicalStatusCode  'Incomplete'
    technicalStatusMessage  'Incomplete'
    technicalStatusComment  ''
    technicalStatusDate  '2024-11-20T15:17:12.983+0000'
    functionalStatusCode  ''
    functionalStatusMessage  ''
    functionalStatusComment  ''
    functionalStatusDate  ''
    standardStatusCode  'Incomplete'
    standardStatusMessage  'Document is incomplete, please review task'
    standardStatusComment  ''
    standardStatusDate  '2024-11-20T15:17:12.983+0000'
    flags(['aavisible':true, 'eunread':false])
    orgPaths(['//devops-na-test2'])
    keyValues {
        keyValue {
            key  'Seller Name'
            value  'Martinez-Barnes'
        }
        keyValue {
            key  'Buyer Name'
            value  'Firestone / Tires Plus'
        }
    }
}

status

Deprecated

Since 6.10.13, this method has been moved to the context.

Create a Status.

Syntax

TransactionInfoStatusResponse status{...}
Example
 final technicalStatus = p6.o2c.status {
    code 'Ready to check'
    message 'Transaction ready to be submitted to content validation engine'
    comment ''
}

save (With Closure)

Since 6.10.7

Deprecated

Since 6.10.13, this method has been moved to the context.

Save, can update Audit trail and route a TransactionInfo.

Syntax

void p6.o2c.save TransactionInfoResponse ti with {
    technicalStatus TransactionInfoStatusResponse
    functionalStatus TransactionInfoStatusResponse
    updateAuditTrail boolean 
    routingParams RoutingSettingDescription
    endpoint String 
}

If a Status is set to null, neither the status in the transactionInfo nor the AuditTrail will be updated. One of technicalStatus or functionalStatus must be provided.

Default value of updateAuditTrail is true, meaning records will be added to the AuditTrail:

  • record(s) of provided status(es)
  • record of Standard Status

Providing both routingParams AND endpoint will result in an error, as routingParams are used to retrieve an endpoint as per getTransactionNextEndpoint(). If endpoint is set to null, the transactionInfo won’t be rooted. If the value is empty the transactionInfo will be rooted to the DEFAULT_ENDPOINT = 'seda:p6router.TransactionRouter'. Otherwise, the transactionInfo will be rooted to the value provided.

Example
final ti = p6.o2c.transactionInfo {...}
final technicalStatusValue = p6.o2c.status {
    code 'Ready to check'
    message 'Transaction ready to be submitted to content validation engine'
    comment ''
}

p6.o2c.save ti with {
   technicalStatus technicalStatusValue
}

Update a TransactionInfo:

final gpath = p6.pipeline.getXml 'xml'
final ti = p6.o2c.fromXml gpath

def keyValue = p6.o2c.transaction.keyValue {
    key  'Currency'
    value  'EUR'
}
ti.addKeyValues([keyValue])

final technicalStatusValue = p6.o2c.status {
    code 'Incomplete'
    message 'Document is incomplete, please review task'
    comment ''
}        

p6.o2c.save ti with {
    technicalStatus technicalStatusValue
    updateAuditTrail false
    endpoint 'seda:p6router.PeppolTransactionRouter'
}

//OR

def setting = p6.o2c.settingDescription {
    supplierId 'supplier'
    network 'Peppol'
    tpId '1234'
    transactionType 'Invoice'
    statusType 'Technical'
    statusCode 'Ready to check'
}

p6.o2c.save ti with {
    technicalStatus technicalStatusValue
    updateAuditTrail false
    routingParams setting
}  

save

Deprecated

Since 6.10.11

Save, can update Audit trail and route a TransactionInfo.

Syntax

void p6.o2c.save(
    TransactionInfoResponse ti,
    TransactionInfoStatusResponse technicalStatus, 
    TransactionInfoStatusResponse functionalStatus, 
    boolean updateAuditTrail, 
    String endpoint
)

If a Status is set to null, neither the status in the transactionInfo nor the AuditTrail will be updated.

If boolean updateAuditTrail is set to true, records will be added to AuditTrail:

  • record(s) of provided status(es)
  • record of Standard Status

If endpoint is set to null, the transactionInfo won’t be rooted. If the value is empty the transactionInfo will be rooted to the DEFAULT_ENDPOINT = 'seda:p6router.TransactionRouter'. Otherwise, the transactionInfo will be rooted to the value provided.

Example

Creation of a TransactionInfo:

final ti = p6.o2c.transactionInfo {...}
final technicalStatus = p6.o2c.status {
    code 'Ready to check'
    message 'Transaction ready to be submitted to content validation engine'
    comment ''
}    
p6.o2c.save ti technicalStatus null true null

Update a TransactionInfo:

final gpath = p6.pipeline.getXml 'xml'
final ti = p6.o2c.fromXml gpath

def keyValue = p6.o2c.transaction.keyValue {
    key  'Currency'
    value  'EUR'
}
ti.addKeyValues([keyValue])

final technicalStatus = p6.o2c.status {
    code 'Incomplete'
    message 'Document is incomplete, please review task'
    comment ''
}
p6.o2c.save ti technicalStatus null false 'seda:p6router.PeppolTransactionRouter'

getTransactionNextEndpoint

Deprecated

Since 6.10.13, this method has been moved to the context.

Get Camel Endpoint from Setting-next-step-per-trx-status O2C table.

Syntax

String getTransactionNextEndpoint(RoutingSettingDescription settingDescription)
Example
def setting = p6.o2c.settingDescription {
    supplierId 'supplier'
    network 'Peppol'
    tpId '1234'
    transactionType 'Invoice'
    statusType 'Technical'
    statusCode 'Ready to check'
}
def endpoint = p6.o2c.getTransactionNextEndpoint setting

validateContentCheck

Deprecated

Since 6.10.13, this method has been moved to the context.

Validate the UBL document with the Content Check. Return a list of TransactionInfo Issues.
A list of all methods availabled for the Method column of UBL-pivot_Content-check table. A list of all field label and error translation sorted by Translation Key is available to use in Complex Check.

A TransactionInfo issue is composed of: - level: the level of error (ex:Error,ERP). - type: the type of the check (ex:Specific Check). - message: the error message. - field: the field label, it can be from the translation files or by default the FieldLabel column of UBL-pivot_Content-check table. - contentCheckFieldType: the field type for the custom form in Workflow Task view (ex:Any,Files,Number,Select,Text). - value: the value of the field. - path: the path used to set the corrected value. - listOfValues: The list of correct value to fix the error (not mandatory can be empty).

Syntax

List<TransactionInfoIssueResponse> validateContentCheck(String ubl, String endpoint, String customer, String transactionType)
Example
def invoice = p6.pipeline.get 'UBL'
def issues = validateContentCheck invoice 'Peppol' 'Martinez-Barnes' 'Invoice'

In the script of the Complex check, after the check, use the dsl to generate issues and set it in the pipeline as usual.

final fieldLabel = p6.i18n.translate('Amalto_O2C#contentcheck.fieldlabel.Invoice_CurrencyCode')
final error = p6.i18n.format(
                p6.i18n.translate('Amalto_O2C#contentcheck.error.currency'),
                ['name', fieldLabel, 'value', 'AAA']
)
def issues = p6.o2c.transactionInfo.issues {
            issue {
                level  'Error'
                type  'Specific Check'
                message  error
                field  fieldLabel
                contentCheckFieldType  'Select'
                value  'AAA'
                path  '/Invoice/DocumentCurrencyCode'
                listOfValues(['EUR', 'USD', 'GBP'])
            }
}
p6.pipeline.put 'complex_check_error' issues.toString()

final fieldLabel = p6.i18n.translate('Amalto_O2C#contentcheck.fieldlabel.Invoice_CurrencyCode')
final error = p6.i18n.format(
                p6.i18n.translate('Amalto_O2C#contentcheck.error.currency'),
                ['name', fieldLabel, 'value', 'AAA']
)
def issues = p6.o2c.transactionInfo.issues {
            issue {
               level  'Error'
               type  'Specific Check'
               message  error
               field  fieldLabel
               contentCheckFieldType  'Select'
               value  'AAA'
               path  '/Invoice/DocumentCurrencyCode'
               options {
                  option {
                   value 'EUR'
                   label 'Euro'
                  },
                  option {
                   value 'GBP'
                   label 'Livre Sterling'
                  }
               }
            }
}
p6.pipeline.put 'complex_check_error' issues.toString()