Created 10-30-2023 05:49 AM
Hi Team,
I would like to fetch values of tag"AltriDatiGestionali" into each line. whenever natura value is 3.5. I'm trying with the below logic but no luck can anyone help in this
INPUT:
{
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": [
{
"Natura": "N3.5",
"NumeroLinea": 1,
"Quantita": "3.00000000",
"PrezzoUnitario": "209.04000000",
"AliquotaIVA": "0.00",
"ScontoMaggiorazione": [
{
"Tipo": "SC",
"Percentuale": "42.00",
"Importo": "263.40"
}
],
"Descrizione": "A6510108918 COPERCHIO TESTATA CIL.",
"PrezzoTotale": "363.72000000"
},
{
"Natura": "N3.5",
"NumeroLinea": 2,
"Quantita": "7.00000000",
"PrezzoUnitario": "254.93000000",
"AliquotaIVA": "0.00",
"ScontoMaggiorazione": [
{
"Tipo": "SC",
"Percentuale": "42.00",
"Importo": "749.49"
}
],
"Descrizione": "A4634230112 DISCO DEL FRENO",
"PrezzoTotale": "1035.02000000"
},
{
"AltriDatiGestionali": {
"RiferimentoTesto": "22122013260655367-000180 DEL 20/12/2022",
"RiferimentoData": "22122013260655367-000180 DEL 20/12/2022",
"TipoDato": "INTENTO"
}
}
]
}
}
}
JOLT SPEC:
[
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"NumeroLinea": {
"*": {
"@(2,NumeroLinea)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].NumeroLinea"
}
},
"Descrizione": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].Descrizione",
"Quantita": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].Quantita",
"PrezzoUnitario": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].PrezzoUnitario",
"ScontoMaggiorazione": {
"*": {
"Tipo": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].ScontoMaggiorazione[&3].Tipo",
"Percentuale": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].ScontoMaggiorazione[&3].Percentuale",
"Importo": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].ScontoMaggiorazione[&3].Importo"
}
},
"PrezzoTotale": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].PrezzoTotale",
"AliquotaIVA": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].AliquotaIVA",
"Natura": {
"#3.5": {
"@(2,Natura)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Natura",
"@(3,AltriDatiGestionali)": {
"TipoDato": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&4].AltriDatiGestionali.TipoDato",
"RiferimentoTesto": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&2].AltriDatiGestionali[&2].RiferimentoTesto",
"RiferimentoData": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].AltriDatiGestionali[&3].RiferimentoData"
}
},
"*": {
"@(2,Natura)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Natura"
}
},
"EsigibilitaIVA": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].EsigibilitaIVA"
}
}
}
}
}
},
{ "operation": "modify-overwrite-beta", "spec": { "*": "=recursivelySquashNulls" } }
]
Expected Output:
{
"FatturaElettronicaBody" : {
"DatiBeniServizi" : {
"DettaglioLinee" : [ {
"NumeroLinea" : 1,
"Descrizione" : "A6510108918 COPERCHIO TESTATA CIL.",
"Quantita" : "3.00000000",
"PrezzoUnitario" : "209.04000000",
"ScontoMaggiorazione" : [ {
"Tipo" : "SC",
"Percentuale" : "42.00",
"Importo" : "263.40"
} ],
"PrezzoTotale" : "363.72000000",
"AliquotaIVA" : "0.00",
"Natura" : "N3.5",
"AltriDatiGestionali": {
"RiferimentoTesto": "22122013260655367-000180 DEL 20/12/2022",
"RiferimentoData": "22122013260655367-000180 DEL 20/12/2022",
"TipoDato": "INTENTO"
}
}, {
"NumeroLinea" : 2,
"Descrizione" : "A4634230112 DISCO DEL FRENO",
"Quantita" : "7.00000000",
"PrezzoUnitario" : "254.93000000",
"ScontoMaggiorazione" : [ {
"Tipo" : "SC",
"Percentuale" : "42.00",
"Importo" : "749.49"
} ],
"PrezzoTotale" : "1035.02000000",
"AliquotaIVA" : "0.00",
"Natura" : "N3.5",
"AltriDatiGestionali": {
"RiferimentoTesto": "22122013260655367-000180 DEL 20/12/2022",
"RiferimentoData": "22122013260655367-000180 DEL 20/12/2022",
"TipoDato": "INTENTO"
}
} ]
}
}
}
Created 10-30-2023 07:51 AM
Hi @PradNiFi1236 ,
I would try to do this in two shift operations: The first shift will extract "AltriDatiGestionali" value and put it in higher level than the array its contained in. The second shift will go into each "DettaglioLinee" element and extract each element where Natura value is 3.5N then redirect all the values accordingly and then redirect the "AltriDatiGestionali" from the first shift level to each element as well.
The jolt spec will be as follows:
[
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"AltriDatiGestionali": "FatturaElettronicaBody.DatiBeniServizi.AltriDatiGestionali",
"*": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].&"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"Natura": {
"N3.5": {
"$": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Natura",
"@(2,NumeroLinea)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].NumeroLinea",
"@(2,PrezzoUnitario)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].PrezzoUnitario",
"@(2,ScontoMaggiorazione)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].ScontoMaggiorazione",
"@(4,AltriDatiGestionali)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].AltriDatiGestionali"
}
}
}
}
}
}
}
}
]
Note: The spec doesn't include all key\value for each array element but you can follow the what specified to add others as needed.
Hope that helps.
Created 11-02-2023 10:21 AM
Thanks For the reply @SAMSAL , this is working for Natura 3.5, for if natura not in 3.5. we don't need block related to (AltriDatiGestionali), but i'm getting block of
"AltriDatiGestionali" : {
"RiferimentoData" : "--"
}
since i'm using modify-overwrite-beta operation tocompute these values. Could you please help in getting rid of this AltriDatiGestionali tag fields for Natura other than 3.5 value.
Regards,
Pradeep G
Created 11-02-2023 11:27 AM
Can you send me the spec as it seems to be different from what I provided? Also if you can simplify the input\spec and keep it isolated to the problem that will save me sometime.
Created on 11-08-2023 10:33 AM - edited 11-08-2023 10:37 AM
Hi @SAMSAL
Please find my input and spec below. my input currently consists natura value other than 3.5 i.e 3.1. Sometimes input won't contain natura value at all. So thats why my spec will a little different than yours. in this case i don't want AltriDatiGestionali tag , but since i'm using modify-overwrite-beta logic its getting as empty, how to get rid of this.
INPUT:
{
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": [
{
"Natura": "3.1",
"NumeroLinea": 1,
"Descrizione": "A2751500680 BOBINA DI ACCENSIONE",
"PrezzoTotale": "3718.26000000"
}
]
}
}
}
SPEC:
[
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"AltriDatiGestionali": "FatturaElettronicaBody.DatiBeniServizi.AltriDatiGestionali",
"*": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].&"
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"NumeroLinea": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].NumeroLinea",
"PrezzoTotale": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].PrezzoTotale",
"Descrizione": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].Descrizione",
"Natura": {
"N3.5": {
"$": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Natura",
"@(2,NumeroLinea)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].NumeroLinea",
"@(2,PrezzoTotale)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].PrezzoTotale",
"@(2,Descrizione)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Descrizione",
"@(4,AltriDatiGestionali)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].AltriDatiGestionali"
},
"*": {
"$": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Natura",
"@(2,NumeroLinea)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].NumeroLinea",
"@(2,PrezzoTotale)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].PrezzoTotale",
"@(2,Descrizione)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Descrizione"
}
}
}
}
}
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"AltriDatiGestionali": {
"splitRiferimentoTesto": "=split('-',@(1,RiferimentoTesto))",
"stringsize": "=size(@(1,splitRiferimentoTesto[0]))",
"RiferimentoTesto": "=substring(@(1,splitRiferimentoTesto[0]),26,@(1,stringsize))",
"stringsize1": "=size(@(1,splitRiferimentoTesto[1]))",
"RiferimentoD": "=substring(@(1,splitRiferimentoTesto[1]),11,@(1,stringsize1))",
"splitRiferimentoData": "=split('/',@(1,RiferimentoD))",
"RiferimentoData": "=concat(@(1,splitRiferimentoData[2]),'-',@(1,splitRiferimentoData[1]),'-',@(1,splitRiferimentoData[0]))"
}
}
}
}
}
}
},
{
"operation": "remove",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"AltriDatiGestionali": {
"splitRiferimentoTesto": "",
"splitRiferimentoData": "",
"stringsize": "",
"stringsize1": "",
"RiferimentoD": ""
}
}
}
}
}
}
},
{
"operation": "cardinality",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"NumeroLinea": "ONE",
"Descrizione": "ONE",
"Quantita": "ONE",
"PrezzoUnitario": "ONE",
"ScontoMaggiorazione": "ONE",
"AltriDatiGestionali": "ONE",
"PrezzoTotale": "ONE",
"AliquotaIVA": "ONE"
}
}
}
}
}
},
{ "operation": "modify-overwrite-beta", "spec": { "*": "=recursivelySquashNulls" } }
]
Created on 11-09-2023 07:09 AM - edited 11-09-2023 07:10 AM
Hi @PradNiFi1236 ,
It seems in your spec when you do the "modify-overwrite-beta" it will create the object "AltriDatiGestionali" on each array element regardless of the Natura value and it doesnt seem that there is an easy way to remove the unwanted "AltriDatiGestionali" without over complicating the spec. However if you can change the order of how you do things in the spec you might be able to avoid this problem all together , so instead of doing the following:
shift-1, shift-2, modify-overwrite-beta, remove, cardinality
you can change the order as follows:
shift-1, modify-overwrite-beta, remove, shift-2, cardinality
So basically after you isolate the "AltriDatiGestionali" object in the first shift , then you do the modification over there, then you remove unwanted fields and finally you shift to the element where Natura = N3.5 and finish with the cardinality. I dont think the recursivelySquashNulls modify at the end is doing anything so you can remove it.
Here is how the spec looks like:
[
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"AltriDatiGestionali": "FatturaElettronicaBody.DatiBeniServizi.AltriDatiGestionali",
"*": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].&"
}
}
}
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"AltriDatiGestionali": {
"splitRiferimentoTesto": "=split('-',@(1,RiferimentoTesto))",
"stringsize": "=size(@(1,splitRiferimentoTesto[0]))",
"RiferimentoTesto": "=substring(@(1,splitRiferimentoTesto[0]),26,@(1,stringsize))",
"stringsize1": "=size(@(1,splitRiferimentoTesto[1]))",
"RiferimentoD": "=substring(@(1,splitRiferimentoTesto[1]),11,@(1,stringsize1))",
"splitRiferimentoData": "=split('/',@(1,RiferimentoD))",
"RiferimentoData": "=concat(@(1,splitRiferimentoData[2]),'-',@(1,splitRiferimentoData[1]),'-',@(1,splitRiferimentoData[0]))"
}
}
}
}
}
,
{
"operation": "remove",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"AltriDatiGestionali": {
"splitRiferimentoTesto": "",
"splitRiferimentoData": "",
"stringsize": "",
"stringsize1": "",
"RiferimentoD": ""
}
}
}
}
}
,
{
"operation": "shift",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"NumeroLinea": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].NumeroLinea",
"PrezzoTotale": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].PrezzoTotale",
"Descrizione": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&1].Descrizione",
"Natura": {
"N3.5": {
"$": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Natura",
"@(2,NumeroLinea)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].NumeroLinea",
"@(2,PrezzoTotale)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].PrezzoTotale",
"@(2,Descrizione)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Descrizione",
"@(4,AltriDatiGestionali)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].AltriDatiGestionali"
},
"*": {
"$": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Natura",
"@(2,NumeroLinea)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].NumeroLinea",
"@(2,PrezzoTotale)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].PrezzoTotale",
"@(2,Descrizione)": "FatturaElettronicaBody.DatiBeniServizi.DettaglioLinee[&3].Descrizione"
}
}
}
}
}
}
}
}
,
{
"operation": "cardinality",
"spec": {
"FatturaElettronicaBody": {
"DatiBeniServizi": {
"DettaglioLinee": {
"*": {
"NumeroLinea": "ONE",
"Descrizione": "ONE",
"Quantita": "ONE",
"PrezzoUnitario": "ONE",
"ScontoMaggiorazione": "ONE",
"AltriDatiGestionali": "ONE",
"PrezzoTotale": "ONE",
"AliquotaIVA": "ONE"
}
}
}
}
}
}
]
If that helps please accept solution.
Thanks
Created on 11-09-2023 09:55 AM - edited 11-09-2023 10:01 AM
@SAMSAL , thanks for the quick response. As always you do.