>

상품 이동 및 결제라는 두 가지 거래가 있는데, 상품 이동은 상품 배송을 추적하고 상품 거래가 완료되면 결제 거래에서 결제를 확인합니다.

저는 아래 코드에서 작업 중입니다 :

   /**
 * 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);
          });       
}

올바로 확인하고 인터넷을 통해서도 검색했지만 코드의 문제점을 파악할 수 없습니다. 누군가가 코드로 나를 도울 수 있다면 감사합니다


  • 답변 # 1

    라인 x는 다음과 같아야합니다 :

     if(Payment.goods.deliveryStatus == 'IN_TRANSIT')
    
    

    31 행 :

    return distributorRegistry.update(Payment.distributor);
    
    

    라인 18과 25는 다음을 참조해야합니다.       Payment.goods.paymentStatus = 'TOTAL_AMOUNT_PAID';

    Payment.paymentStatus가 아님

    25 행에는 따옴표가 필요합니다 :       Payment.goods.paymentStatus = 'PARTIALLY_PAID';

    이 거래를 사용하면 효과가있었습니다 :

    {
      "$class": "org.acme.paysystem.Payment",
      "goods": "resource:org.acme.paysystem.Goods#1",
      "retailer": "resource:org.acme.paysystem.Retailer#a@b.com",
      "distributor": "resource:org.acme.paysystem.Distributor#a@b.com",
      "paymentStatus": "PARTIALLY_PAID"
    }
    
    

  • 이전 linux - CSV 파일에서 특정 숫자를 grep하는 방법
  • 다음 ios - UIAlertView 스크롤 문제