I am developing an application in PHP, in which I am reading a JSON file (containing several electronic invoices) and need to save some tags contained in this JSON file in variables.
I started studying PHP a short time ago, I am currently able to read the Discrimination tags from the JSON file and did a very initial logic with some if's using strpos.
I need to read the entire string of the Discrimination tag and check if it contains the word "SUPPORT", "DEVELOPMENT" or "MAINTENANCE". And if you contain the specific term, save this result to a variable.
- Is my logic correct? Is there anything that can be done to optimize something in my code?
Following the JSON file:
{
"ConsultarNfseResposta": {
"ListaNfse": {
"CompNfse": [
{
"Nfse": {
"InfNfse": {
"Numero": "12651",
"CodigoVerificacao": "ECSV-FGRD",
"DataEmissao": "2017-07-25T17:51:12",
"NaturezaOperacao": "1",
"OptanteSimplesNacional": "1",
"IncentivadorCultural": "2",
"Competencia": "2017-07-25T00:00:00",
"Servico": {
"Valores": {
"ValorServicos": "2350",
"IssRetido": "2",
"BaseCalculo": "2350",
"Aliquota": "0.02",
"ValorLiquidoNfse": "2350"
},
"ItemListaServico": "0107",
"CodigoTributacaoMunicipio": "6209100",
"Discriminacao": "TAXA: MANUTENÇÃO",
"CodigoMunicipio": "2611606"
},
"PrestadorServico": {
"IdentificacaoPrestador": {
"Cnpj": "41069964000173",
"InscricaoMunicipal": "2427745"
},
"RazaoSocial": "INFORMATICA LTDA",
"Endereco": {
"Endereco": "RUA 241",
"Numero": "241",
"Bairro": "Exemplo",
"CodigoMunicipio": "2611606",
"Uf": "PE",
"Cep": "52030190"
},
"Contato": {
"Telefone": "33254854",
"Email": "[email protected]"
}
},
"TomadorServico": {
"IdentificacaoTomador": {
"CpfCnpj": {
"Cnpj": "00085803000196"
}
},
"RazaoSocial": "EXEMPLO - AFBR",
"Endereco": {
"Endereco": "ST 06",
"Bairro": "Asa Sul",
"CodigoMunicipio": "5300108",
"Uf": "DF",
"Cep": "15425845211"
},
"Contato": {
"Email": "[email protected]"
}
},
"OrgaoGerador": {
"CodigoMunicipio": "2611606",
"Uf": "PE"
}
}
}
},
{
"Nfse": {
"InfNfse": {
"Numero": "12658",
"CodigoVerificacao": "ECSV-NMBH",
"DataEmissao": "2017-07-25T17:51:12",
"NaturezaOperacao": "1",
"OptanteSimplesNacional": "1",
"IncentivadorCultural": "2",
"Competencia": "2017-07-24T00:00:00",
"Servico": {
"Valores": {
"ValorServicos": "9500",
"IssRetido": "2",
"BaseCalculo": "2350",
"Aliquota": "0.02",
"ValorLiquidoNfse": "2350"
},
"ItemListaServico": "0107",
"CodigoTributacaoMunicipio": "6209100",
"Discriminacao": "TAXA: DESENVOLVIMENTO",
"CodigoMunicipio": "2611606"
},
"PrestadorServico": {
"IdentificacaoPrestador": {
"Cnpj": "41069964000173",
"InscricaoMunicipal": "2427745"
},
"RazaoSocial": "INFORMATICA LTDA",
"Endereco": {
"Endereco": "RUA 241",
"Numero": "241",
"Bairro": "Exemplo",
"CodigoMunicipio": "2611606",
"Uf": "PE",
"Cep": "52030190"
},
"Contato": {
"Telefone": "33254854",
"Email": "[email protected]"
}
},
"TomadorServico": {
"IdentificacaoTomador": {
"CpfCnpj": {
"Cnpj": "958451368500014"
}
},
"RazaoSocial": "EXEMPLO - ATBR",
"Endereco": {
"Endereco": "ST 06",
"Bairro": "Asa Sul",
"CodigoMunicipio": "5300108",
"Uf": "DF",
"Cep": "15425845211"
},
"Contato": {
"Email": "[email protected]"
}
},
"OrgaoGerador": {
"CodigoMunicipio": "2611606",
"Uf": "PE"
}
}
}
},
{
"Nfse": {
"InfNfse": {
"Numero": "12659",
"CodigoVerificacao": "ECSV-HFGS",
"DataEmissao": "2017-07-25T17:51:12",
"NaturezaOperacao": "1",
"OptanteSimplesNacional": "1",
"IncentivadorCultural": "2",
"Competencia": "2017-07-25T00:00:00",
"Servico": {
"Valores": {
"ValorServicos": "7600",
"IssRetido": "2",
"BaseCalculo": "7600",
"Aliquota": "0.02",
"ValorLiquidoNfse": "7600"
},
"ItemListaServico": "0107",
"CodigoTributacaoMunicipio": "6209100",
"Discriminacao": "TAXA: SUPORTE",
"CodigoMunicipio": "2611606"
},
"PrestadorServico": {
"IdentificacaoPrestador": {
"Cnpj": "41069964000173",
"InscricaoMunicipal": "2427745"
},
"RazaoSocial": "INFORMATICA LTDA",
"Endereco": {
"Endereco": "RUA 241",
"Numero": "241",
"Bairro": "Exemplo",
"CodigoMunicipio": "2611606",
"Uf": "PE",
"Cep": "52030190"
},
"Contato": {
"Telefone": "33254854",
"Email": "[email protected]"
}
},
"TomadorServico": {
"IdentificacaoTomador": {
"CpfCnpj": {
"Cnpj": "95621548745210"
}
},
"RazaoSocial": "EXEMPLO - NOBR",
"Endereco": {
"Endereco": "ST 06",
"Bairro": "Asa Sul",
"CodigoMunicipio": "5300108",
"Uf": "DF",
"Cep": "15425845211"
},
"Contato": {
"Email": "[email protected]"
}
},
"OrgaoGerador": {
"CodigoMunicipio": "2611606",
"Uf": "PE"
}
}
}
}
]
}
}
}
And also what I've done with PHP:
<?php
$json_data = json_decode(file_get_contents('arquivo.json'));
foreach ($json_data->ConsultarNfseResposta->ListaNfse->CompNfse as $data) {
echo '<br>Número da nota: ' .$data->Nfse->InfNfse->Numero;
echo '<br>Valor da nota: ' .$data->Nfse->InfNfse->Servico->Valores->ValorServicos;
echo '<br>CNPJ do cliente: ' .$data->Nfse->InfNfse->TomadorServico->IdentificacaoTomador->CpfCnpj->Cnpj;
echo '<br>Discriminação do serviço: ' .$data->Nfse->InfNfse->Servico->Discriminacao;
echo '<br>';
$stringSuporte = 'SUPORTE';
$stringManutencao = 'MANUTENÇÃO';
$stringDesenvolvimento = 'DESENVOLVIMENTO';
$posSuporte = strpos($data->Nfse->InfNfse->Servico->Discriminacao, $stringSuporte);
$posManutencao = strpos($data->Nfse->InfNfse->Servico->Discriminacao, $stringManutencao);
$posDesenvolvimento = strpos($data->Nfse->InfNfse->Servico->Discriminacao, $stringDesenvolvimento);
if ($posSuporte == true) {
$servSuporte = $data->Nfse->InfNfse->Servico->Discriminacao;
echo '<b>String encontrada: </b>' .$servSuporte;
echo '<br>';
}
if ($posManutencao == true) {
$servManutencao = $data->Nfse->InfNfse->Servico->Discriminacao;
echo '<b>String encontrada: </b>' .$servManutencao;
echo '<br>';
}
if ($posDesenvolvimento == true) {
$servDesenvolvimento = $data->Nfse->InfNfse->Servico->Discriminacao;
echo '<b>String encontrada: </b>' .$servDesenvolvimento;
echo '<br>';
}
}
?>
The output of my program is currently resulting in the following:
Número da nota: 12651
Valor da nota: 2350
CNPJ do cliente: 00085803000196
Discriminação do serviço: TAXA: MANUTENÇÃO
String encontrada: TAXA: MANUTENÇÃO
Número da nota: 12658
Valor da nota: 9500
CNPJ do cliente: 958451368500014
Discriminação do serviço: TAXA: DESENVOLVIMENTO
String encontrada: TAXA: DESENVOLVIMENTO
Número da nota: 12659
Valor da nota: 7600
CNPJ do cliente: 95621548745210
Discriminação do serviço: TAXA: SUPORTE
String encontrada: TAXA: SUPORTE