问题描述
我有两笔交易GoodsMovement和Payment,Goodsmovement将跟踪货物的交付,而付款交易将检查货物是否已交付。
I have two transactions GoodsMovement and Payment, Goodsmovement will track delivery of Goods and Payment transaction will check for payments if goods are delivered.
我正在下面工作代码:
/**
* New model file
*/
namespace org.acme.paysystem
enum PaymentStatus{
o PARTIALLY_PAID
o TOTAL_AMOUNT_PAID
o NOT_PAID
}
enum DeliveryStatus{
o DELIVERED
o IN_TRANSIT
}
asset Goods identified by billNo{
o String billNo
o Double billAmount
o DateTime billDate
o DeliveryStatus deliveryStatus
o PaymentStatus paymentStatus default = 'NOT_PAID'
}
concept Address{
o String Country optional
o String City optional
o String Street optional
o String Zip optional
}
abstract participant user identified by email{
o String email
o String fname
o String lname
o Address address
}
participant Retailer extends user {
o String shopNo
o Double amountDue
o Double accountBalance
}
participant Distributor extends user{
o String PAN
o Double bankBalance
}
transaction Payment{
--> Goods goods
--> Retailer retailer
--> Distributor distributor
o PaymentStatus paymentStatus
}
transaction GoodsMovement {
--> Goods goods
o DeliveryStatus deliveryStatus
I haven't mentioned GoodsMovement transaction here since it's working as expected.
以下是脚本文件:
/**
* @param {org.acme.paysystem.Payment} Payment
* @transaction
*/
function Payment(Payment){
var paymentRecievedFlag = 0;
var amountRecieved = 0;
if(GoodsMovement == 'IN_TRANSIT')
{
console.log("Goods are IN_TRANSIT");
}
else
{
if ((Payment.retailer.accountBalance - Payment.goods.billAmount) > 0 ){
Payment.retailer.accountbalance -= Payment.goods.billAmount;
Payment.distributor.bankBalance += Payment.goods.billAmount;
Payment.paymentStatus = 'TOTAL_AMOUNT_PAID';
//Payment.goods.paymentStatus = 'TOTAL_AMOUNT_PAID';
}
else{
Payment.retailer.amountDue = Payment.goods.billAmount - Payment.retailer.accountBalance;
Payment.distributor.bankBalance += Payment.retailer.accountBalance;
Payment.paymentStatus = PARTIALLY_PAID;
}}
return getParticipantRegistry('org.acme.paysystem.Distributor')
.then(function(distributorRegistry){
return distributorRegistry.update(Payment.distributer);
})
.then(function(){
return getParticipantRegistry('org.acme.paysystem.Retailer');
})
.then(function(retailerRegistry){
return retailerRegistry.update(Payment.retailer);
})
.then(function(){
return getAssetRegistry('org.acme.paysystem.Goods');
})
.then(function(goodsRegistry){
return goodsRegistry.update(Payment.goods);
});
}
我已经正确检查并通过互联网搜索但我无法弄清楚我的代码有什么问题。谢谢,如果有人可以帮我解决代码
I have checked properly and search through Internet too but I'm not able to figure it out what's the problem with my code. Thanks if anyone could help me out with code
推荐答案
第x行应该是:
if(Payment.goods.deliveryStatus == 'IN_TRANSIT')
第31行应该是:
return distributorRegistry.update(Payment.distributor);
第18行和第25行应参考:
Payment.goods.paymentStatus ='TOTAL_AMOUNT_PAID' ;
line 18 and 25 should refer to: Payment.goods.paymentStatus = 'TOTAL_AMOUNT_PAID';
不是Payment.paymentStatus
not Payment.paymentStatus
第25行需要报价:
Payment.goods.paymentStatus = 'PARTIALLY_PAID';
line 25 needs quotes: Payment.goods.paymentStatus = 'PARTIALLY_PAID';
然后使用此交易 - 它有效:
Then using this transaction - it worked:
{
"$class": "org.acme.paysystem.Payment",
"goods": "resource:org.acme.paysystem.Goods#1",
"retailer": "resource:org.acme.paysystem.Retailer#[email protected]",
"distributor": "resource:org.acme.paysystem.Distributor#[email protected]",
"paymentStatus": "PARTIALLY_PAID"
}
这篇关于得到错误:预期资源或概念也检查过较旧的帖子,但它并没有帮助我解决我的代码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!