# Jfiles to repeat node

**URL:** <https://clarionhub.com/t/jfiles-to-repeat-node/8320>\
**Category:** questions\
**Tags:** json\
**Created:** [June 20, 2025, 10:27am UTC](https://clarionhub.com/t/jfiles-to-repeat-node/8320 "2025-06-20T10:27:40Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![j6face](https://clarionhub.com/letter_avatar_proxy/v4/letter/j/bc79bd/32.png) [@j6face](https://clarionhub.com/u/j6face)\
**Post date:** [June 20, 2025, 10:27am UTC](https://clarionhub.com/t/jfiles-to-repeat-node/8320/1 "2025-06-20T10:27:40Z")

</div>

hi,  
i have this json

```json
 "TaxTotal": [
     {
       "TaxAmount": [
         {
           "_": 87.63,
           "currencyID": "MYR"
         }
       ],
       "TaxSubtotal": [
         {
           "TaxableAmount": [
             {
               "_": 87.63,
               "currencyID": "MYR"
             }
           ],
           "TaxAmount": [
             {
               "_": 87.63,
               "currencyID": "MYR"
             }
           ],
           "TaxCategory": [
             {
               "ID": [
                 {
                   "_": "01"
                 }
               ],
               "TaxScheme": [
                 {
                   "ID": [
                     {
                       "_": "OTH",
                       "schemeID": "UN/ECE 5153",
                       "schemeAgencyID": "6"
                     }
                   ]
                 }
               ]
             }
           ]
         }
       ]
     }
   ],

```

the TaxSubTotal can be repeated few times because of multiple tax.

my following jfiles codes create only one node. where is my mistake:

```clarion
! TaxTotal Section
InvoiceTaxTotalQueueType QUEUE,TYPE,NAME('TaxTotal')
TaxAmountQueueType &TaxAmountQueueType,NAME('TaxAmount | queue')
TaxSubtotalQueueType &TaxSubtotalQueueType,NAME('TaxSubtotal | queue')
                                   END

TaxAmountQueueType QUEUE,TYPE,NAME('TaxAmount')
_ REAL,NAME('_')
currencyID STRING(255),NAME('currencyID')
                                   END

TaxSubtotalQueueType QUEUE,TYPE,NAME('TaxSubtotal')
TaxableAmountQueueType &TaxableAmountQueueType,NAME('TaxableAmount | queue')
TaxAmountQueueType &TaxAmountQueueType,NAME('TaxAmount | queue')
PercentQueueType &PercentQueueType,NAME('Percent | opt | queue')
TaxCategoryQueueType &TaxCategoryQueueType,NAME('TaxCategory | queue')
                                   END

PercentQueueType QUEUE,TYPE,NAME('Percent')
_ REAL,NAME('_')
                                   END

TaxableAmountQueueType QUEUE,TYPE,NAME('TaxableAmount')
_ REAL,NAME('_')
currencyID STRING(255),NAME('currencyID')
                                   END

TaxCategoryQueueType QUEUE,TYPE,NAME('TaxCategory')
TaxCategoryIDQueueType &TaxCategoryIDQueueType,NAME('ID | queue')
TaxExemptionReasonQueueType &TaxExemptionReasonQueueType,NAME('TaxExemptionReason | opt | queue')
TaxSchemeQueueType &TaxSchemeQueueType,NAME('TaxScheme | queue')
                                   END

TaxCategoryIDQueueType QUEUE,TYPE,NAME('TaxCategoryID')
_ STRING(255),NAME('_')
                                   END

TaxSchemeQueueType QUEUE,TYPE,NAME('TaxScheme')
TaxSchemeIDQueueType &TaxSchemeIDQueueType,NAME('ID | queue')
                                   END

TaxExemptionReasonQueueType QUEUE,TYPE,NAME('TaxExemptionReason')
_ STRING(255),NAME('_')
                                   END

! Note: The TaxScheme ID structure should reference a specialized ID queue type
! with additional attributes for this specific context:
TaxSchemeIDQueueType QUEUE,TYPE,NAME('TaxSchemeID')
_ STRING(255),NAME('_')
schemeID STRING(255),NAME('schemeID')
schemeAgencyID STRING(255),NAME('schemeAgencyID')
                                   END

```

* * *

```clarion
TaxTotalElement ROUTINE   
 element.Invoice.TaxTotal.TaxAmountQueueType &= NEW TaxAmountQueueType

TaxSubTotalElement ROUTINE
 element.Invoice.TaxTotal.TaxSubtotalQueueType &= NEW TaxSubtotalQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType &= NEW TaxableAmountQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType &= NEW TaxAmountQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.PercentQueueType &= NEW PercentQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType &= NEW TaxCategoryQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType &= NEW TaxCategoryIDQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxExemptionReasonQueueType &= NEW TaxExemptionReasonQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType &= NEW TaxSchemeQueueType
 element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType &= NEW TaxSchemeIDQueueType    

do TaxTotalElement
do TaxSubTotalElement

  IF INH:Tax > 0 THEN   
    element.Invoice.TaxTotal.TaxAmountQueueType._ = INH:Tax + INH:Tax2 
    element.Invoice.TaxTotal.TaxAmountQueueType.currencyID = CLIP(INH:CurrencySign)
   
    add(element.Invoice.TaxTotal)
    add(element.Invoice.TaxTotal.TaxAmountQueueType)
         

    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType._ = INH:Tax
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType.currencyID = CLIP(INH:CurrencySign)
    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.PercentQueueType._ = INH:TaxPercentage
    

   element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType._ = CLIP(INH:TaxTypesCode1)

   ETT:TaxTypesCode = CLIP(INH:TaxTypesCode1)
   IF Access:TaxTypes.Fetch(ETT:KeyTaxTypesCode) = Level:Benign THEN 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType._ = CLIP(ETT:TaxTypesDesc)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeID = 'UN/ECE 5153' 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeAgencyID = '6'
   END 
    
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType)
        
        
 END 
        
  IF INH:Tax2 > 0 THEN  
        do TaxSubTotalElement
        
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType._ = INH:Tax2
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType.currencyID = CLIP(INH:CurrencySign)
    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.PercentQueueType._ = INH:TaxPercentage2
    

   element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType._ = CLIP(INH:TaxTypesCode2)

   ETT:TaxTypesCode = CLIP(INH:TaxTypesCode2)
   IF Access:TaxTypes.Fetch(ETT:KeyTaxTypesCode) = Level:Benign THEN 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType._ = CLIP(ETT:TaxTypesDesc)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeID = 'UN/ECE 5153' 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeAgencyID = '6'
    END   

   add(element.Invoice.TaxTotal.TaxSubtotalQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxableAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType)
   add(element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType)
        
  END   

  IF INH:TaxExemptionsDetails <> ' ' THEN 
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxExemptionReasonQueueType._ = CLIP(INH:TaxExemptionsDetails)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType._ = 0
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxAmountQueueType.currencyID = CLIP(INH:CurrencySign)
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxCategoryIDQueueType._ = 'E'    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType._ = 'OTH'    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeID = 'UN/ECE 5153'    
    element.Invoice.TaxTotal.TaxSubtotalQueueType.TaxCategoryQueueType.TaxSchemeQueueType.TaxSchemeIDQueueType.schemeAgencyID = 6    
 END

```
