Mini-Late Delivery and Penalty Payment

Author: Accord Project

minilatedeliveryandpenalty-payment@0.5.0 Contract ^0.21.0 303af0a4f298615d69b70a99e54212ecbf47f55c9e59f3eaeb5e9e9b03c1fcd2

A Late Delivery And Penalty (Mini, Capped, with Payment)

Download Archive Download Compiled Archive Open in Template Studio Open in VSCode Web

A Late Delivery And Penalty (Mini, Capped, with Payment)

A Late Delivery And Penalty Contract with a Penalty Cap and Emitting a Payment Obligation (Mini).

Template Text

Late Delivery and Penalty.

In case of delayed delivery of Goods, "Betty Buyer" shall pay to "Steve Seller" a penalty amounting to 10.5% of the total value of the Goods for every 2 days of delay. The total amount of penalty shall not, however, exceed 52% of the total value of the delayed goods. If the delay is more than 15 days, the Buyer is entitled to terminate this Contract.

Late Delivery and Penalty.

In case of delayed delivery of Goods, "Betty Buyer" shall pay to
"Steve Seller" a penalty amounting to 10.5% of the total
value of the Goods for every 2 days of delay. The total
amount of penalty shall not, however, exceed 52% of the
total value of the delayed goods. If the delay is more than
15 days, the Buyer is entitled to terminate this Contract.
Late Delivery and Penalty.

In case of delayed delivery of Goods, {{seller}} shall pay to
{{buyer}} a penalty amounting to {{penaltyPercentage}}% of the total
value of the Goods for every {{penaltyDuration}} of delay. The total
amount of penalty shall not, however, exceed {{capPercentage}}% of the
total value of the delayed goods. If the delay is more than
{{maximumDelay}}, the Buyer is entitled to terminate this Contract.
{
    "$class": "org.accordproject.minilatedeliveryandpenalty.MiniLateDeliveryContract",
    "buyer": {
        "$class": "org.accordproject.cicero.contract.AccordParty",
        "partyId": "Steve Seller"
    },
    "seller": {
        "$class": "org.accordproject.cicero.contract.AccordParty",
        "partyId": "Betty Buyer"
    },
    "penaltyDuration": {
        "$class": "org.accordproject.time.Duration",
        "amount": 2,
        "unit": "days"
    },
    "penaltyPercentage": 10.5,
    "capPercentage": 52,
    "maximumDelay": {
        "$class": "org.accordproject.time.Duration",
        "amount": 15,
        "unit": "days"
    },
    "contractId": "6268c702-e6e2-4480-8bf6-c66663fd7018"
}

Template Model

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace org.accordproject.minilatedeliveryandpenalty

import org.accordproject.cicero.contract.* from https://models.accordproject.org/cicero/contract.cto
import org.accordproject.cicero.runtime.* from https://models.accordproject.org/cicero/runtime.cto
import org.accordproject.time.* from https://models.accordproject.org/v2.0/time.cto

/**
 * Data Model for the LateDeliveryAndPenalty template.
 */
asset MiniLateDeliveryContract extends AccordContract {
  o AccordParty buyer         // Party to the contract (buyer)
  o AccordParty seller        // Party to the contract (seller)
  o Duration penaltyDuration  // Length of time resulting in penalty
  o Double penaltyPercentage  // Penalty percentage
  o Double capPercentage      // Maximum penalty percentage
  o Duration maximumDelay     // Maximum delay before termination
}

/**
 * Defines a request for the clause
 */
transaction LateRequest extends Request {
  o DateTime agreedDelivery
  o DateTime deliveredAt
  o Double goodsValue
}

/**
 * Defines a response for the clause
 */
transaction LateResponse extends Response {
  o Double penalty
  o Boolean buyerMayTerminate
}

Model Dependencies

Template Logic

Find the full logic for this template on on GitHub.

State Types

Type Sample JSON
org.accordproject.cicero.contract.AccordContractState
{
    "$class": "org.accordproject.cicero.contract.AccordContractState",
    "stateId": "8462baf1-cd1d-11ea-920c-ade26666d144"
}

Request Types

Type Sample JSON
org.accordproject.minilatedeliveryandpenalty.LateRequest
{
    "$class": "org.accordproject.minilatedeliveryandpenalty.LateRequest",
    "agreedDelivery": "2020-07-23T15:48:44.702-04:00",
    "deliveredAt": "2020-07-23T15:48:44.702-04:00",
    "goodsValue": 101.229,
    "transactionId": "846293e0-cd1d-11ea-920c-ade26666d144",
    "timestamp": "2020-07-23T15:48:44.702-04:00"
}

Response Types

Type Sample JSON
org.accordproject.minilatedeliveryandpenalty.LateResponse
{
    "$class": "org.accordproject.minilatedeliveryandpenalty.LateResponse",
    "penalty": 2.422,
    "buyerMayTerminate": false,
    "transactionId": "8462baf0-cd1d-11ea-920c-ade26666d144",
    "timestamp": "2020-07-23T15:48:44.703-04:00"
}

Events Types

Type Sample JSON
org.accordproject.cicero.runtime.PaymentObligation
{
    "$class": "org.accordproject.cicero.runtime.PaymentObligation",
    "amount": {
        "$class": "org.accordproject.money.MonetaryAmount",
        "doubleValue": 121.815,
        "currencyCode": "XUA"
    },
    "description": "Veniam.",
    "contract": "resource:org.accordproject.minilatedeliveryandpenalty.MiniLateDeliveryContract#4249",
    "promisor": "resource:org.accordproject.cicero.contract.AccordParty#5039",
    "promisee": "resource:org.accordproject.cicero.contract.AccordParty#0627",
    "deadline": "2020-07-23T15:48:44.703-04:00",
    "eventId": "8462baf2-cd1d-11ea-920c-ade26666d144",
    "timestamp": "2020-07-23T15:48:44.703-04:00"
}

Technical Integration

Please refer to the Cicero documentation for details and examples of how to integrate a call to a Cicero template into your application.

View the Latest code for this template on GitHub.