Support Questions

Find answers, ask questions, and share your expertise

division of two fields using jolt spec

avatar
Expert Contributor

i'm trying to perform Importo= importo/Quantita  for each line item value.

 

but unable get the division even though i've used =divide function. Could you please help me

input:

{
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": [
{
"NumeroLinea": 1,
"Quantita": "3.0",
"PrezzoUnitario": "311.55000000",
"AliquotaIVA": "22.00",
"ScontoMaggiorazione": [
{
"Tipo": "SC",
"Percentuale": "28.00",
"Importo": "261.69"
}
],
"Descrizione": "B66450458 SACCA DA GOLF",
"PrezzoTotale": "672.96000000"
},
{
"NumeroLinea": 2,
"Quantita": "1.00000000",
"PrezzoUnitario": "311.55000000",
"AliquotaIVA": "22.00",
"ScontoMaggiorazione": [
{
"Tipo": "SC",
"Percentuale": "28.00",
"Importo": "87.23000000"
}
],
"Descrizione": "B66450458 SACCA DA GOLF",
"PrezzoTotale": "224.32000000"
},
{
"NumeroLinea": 3,
"Quantita": "1.00000000",
"PrezzoUnitario": "311.55000000",
"AliquotaIVA": "22.00",
"ScontoMaggiorazione": [
{
"Tipo": "SC",
"Percentuale": "28.00",
"Importo": "87.23000000"
}
],
"Descrizione": "B66450458 SACCA DA GOLF",
"PrezzoTotale": "224.32000000"
},
{
"NumeroLinea": 4,
"Quantita": "3.00000000",
"PrezzoUnitario": "2150.00000000",
"AliquotaIVA": "22.00",
"ScontoMaggiorazione": [
{
"Tipo": "SC",
"Percentuale": "16.00",
"Importo": "1032.00000000"
}
],
"Descrizione": "A205330410780 INGRANAGGI E DIFFER. ANT.",
"PrezzoTotale": "5418.00000000"
},
{
"NumeroLinea": 5,
"Quantita": "7.00000000",
"PrezzoUnitario": "202.96000000",
"AliquotaIVA": "22.00",
"ScontoMaggiorazione": [
{
"Tipo": "SC",
"Percentuale": "19.00",
"Importo": "269.92000000"
}
],
"Descrizione": "A6510108918 COPERCHIO TESTATA CIL.",
"PrezzoTotale": "1150.80000000"
}
]
}
}
}

 

 

Jolt Spec:

[{
"operation": "modify-overwrite-beta",
"spec": {
"FatturaElettronicaBody": {
"DatiGenerali": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"ScontoMaggiorazione": {
"*": {
"Importo": "=divide(@(1,Importo),@(1,Quantita))"
}
}
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"NumeroLinea": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].NumeroLinea",
"Descrizione": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].Descrizione",
"Quantita": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].Quantita",
"PrezzoUnitario": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].PrezzoUnitario",
"ScontoMaggiorazione": {
"*": {
"Importo": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].ScontoMaggiorazione[&3].Importo"
}
}
}
}
}
}
}
}]

2 ACCEPTED SOLUTIONS

avatar
Super Guru

Hi,

Please see the modified spec below. The comments indicate what I had to do to make your modify-overwrite-beta spec works based on the input json. I hope it works.

 

[{
  "operation": "modify-overwrite-beta",
  "spec": {
    "FatturaElettronicaBody": {
      // The DatiGenerali level is not found in the input JSON
      // "DatiGenerali": {
      "DatiBeniServizi": {
        "DettaglioLinee": {
          "*": {
            //level3 
            "ScontoMaggiorazione": {
              // level2
              "*": {
                // Quantita is located level 3 and not level 1
                "Importo": "=divide(@(1,Importo),@(3,Quantita))"
              }
            }
          }
        }
      }
      //}
    }
  }
}]

 

 

View solution in original post

avatar
Super Guru

I think you had it right but you need to convert the division value into string before applying split on it. Here are the steps:

 

 

 "decImporto": "=divide(@(1,Importo),@(3,Quantita))",
 "strImporto": "=toString(@(1,decImporto))",
 "array_importo": "=split('[.]',@(1,strImporto))",
 "pad_importo": "=rightPad(@(1,array_importo[1]), 8, '0')",
 "Importo": "=concat(@(1,array_importo[0]),'.',@(1,pad_importo))"
      

 

View solution in original post

3 REPLIES 3

avatar
Super Guru

Hi,

Please see the modified spec below. The comments indicate what I had to do to make your modify-overwrite-beta spec works based on the input json. I hope it works.

 

[{
  "operation": "modify-overwrite-beta",
  "spec": {
    "FatturaElettronicaBody": {
      // The DatiGenerali level is not found in the input JSON
      // "DatiGenerali": {
      "DatiBeniServizi": {
        "DettaglioLinee": {
          "*": {
            //level3 
            "ScontoMaggiorazione": {
              // level2
              "*": {
                // Quantita is located level 3 and not level 1
                "Importo": "=divide(@(1,Importo),@(3,Quantita))"
              }
            }
          }
        }
      }
      //}
    }
  }
}]

 

 

avatar
Expert Contributor

Thanks @SAMSAL  for the quick help. division got worked

but after this division the value coming with 2 decimal values , where as i needed 8 decimal points after the dot. so far that i've used below logic in the same spec. but its giving empty value.

 

"ScontoMaggiorazione": {
"*": {
"first_Importo": "=divide(@(1,Importo),@(3,Quantita))",
"array_importo": "=split('.',@(1,first_Importo))",
"pad_importo": "=rightPad(@(1,array_importo[1]), 8, '0')",
"Importo": "=concat(@(1,array_importo[0]),'.',@(1,pad_importo))"
}

 

 

any idea on this too?

avatar
Super Guru

I think you had it right but you need to convert the division value into string before applying split on it. Here are the steps:

 

 

 "decImporto": "=divide(@(1,Importo),@(3,Quantita))",
 "strImporto": "=toString(@(1,decImporto))",
 "array_importo": "=split('[.]',@(1,strImporto))",
 "pad_importo": "=rightPad(@(1,array_importo[1]), 8, '0')",
 "Importo": "=concat(@(1,array_importo[0]),'.',@(1,pad_importo))"