First, let’s address what it would take to get your code to compile. Secondly, we can address the overall design.
Your code does not compile as-is. The problem is in the test. Specifically the following does not work:
submit cms do
createCmd SellAsset with
asset = asset.Asset
newOwnerSolicitor = mishconDeReya
newOwner = silvia
notes = "Questa villa e' stata venduta"
The above does not work because asset
is not defined in this script and so asset.Asset
fails. To get the test to work with the current template design, you could create an Asset contract first before trying to create the SellAsset
.
Example implementation
module Main_I where
import Asset
import SellAsset
import Daml.Script
sell_asset_test : Script SellAssetId
sell_asset_test = script do
cms <- allocatePartyWithHint "CMS" (PartyIdHint "CMS")
claudia <- allocatePartyWithHint "Claudia" (PartyIdHint "Claudia")
christie<- allocatePartyWithHint "Christie" (PartyIdHint "Christie")
claudia_Budha <- allocatePartyWithHint "Claudia_Budha" (PartyIdHint "Claudia_Budha")
mishconDeReya <- allocatePartyWithHint "MishconDeReya" (PartyIdHint "MishconDeReya")
silvia <- allocatePartyWithHint "Silvia" (PartyIdHint "Silvia")
time <- getTime
assetId <- submit claudia do
createCmd Asset with
ownerSolicitor = claudia
owner = claudia
auctionHouse = christie
address = "1234 Address"
idCode = "Asset 2345"
a_description = "Asset 2345 description"
a_documents = []
a_docLink = ""
v_description = ""
v_documents = []
v_docLink = ""
date = time
Some asset <- queryContractId claudia assetId
sellAsset <- submit claudia do
createCmd SellAsset with
asset = asset
newOwnerSolicitor = mishconDeReya
newOwner = silvia
notes = "Questa villa e' stata venduta"
submit claudia do
exerciseCmd sellAsset AssetDocOffer_GetAsset
return sellAsset
However, you might want to take another look at the overall design. Your SellAsset
template includes a member of type Asset
. That means, the data for the Asset
is stored directly into your SellAsset
template. Typically, you would have an Asset
contract on the ledger. And then when you create the SellAsset
, you would not include the entire Asset
instance within the SellAsset
. Instead you would reference the asset with either:
- a
ContractId Asset
, in which case you could retrieve the Asset withfetch
. - the values used by the
Asset
’s key (for example,idCode
), in which case you could retrieve the Asset withfetchByKey
.
Here is a start at what SellAsset
would look like, referencing the Asset
by contract id:
template SellAsset
with
-- asset : Asset
assetId : ContractId Asset
ownerSolicitor : Party
owner : Party
auctionHouse : Party
newOwnerSolicitor:Party
newOwner:Party
notes: Text
With the above, you would get the Asset
using fetch
.
Here is a start at what SellAsset
would look like, referencing the Asset
by key:
template SellAsset
with
-- asset : Asset
idCode : Text
ownerSolicitor : Party
owner : Party
auctionHouse : Party
newOwnerSolicitor:Party
newOwner:Party
notes: Text
With the above, you would get the Asset
using fetchByKey
.
I hope that is helpful.