JSON increment multiple request items in php

Asked

Viewed 67 times

1

Colleagues, this feature includes an order with a sales item. I would like her to insert not just one item, but several according to the amount I have in my database. I know I have to select at the base before, but what I’m not able to do is a foreach to include how many items of sale I have for my order.

The chunk of code I need to make dynamic and incremental is this:

"produto" => [
          "cfop" => "5.102",//dinamico
          "codigo_produto" => "1398561571",//dinamico
          "descricao" => "Mouse sem fio Microsoft",//dinamico
          "ncm" => "9504.10.99",
          "quantidade" => 1,//varia
          "tipo_desconto" => "V",//varia
          "unidade" => "UN",
          "valor_desconto" => 0,
          "valor_unitario" => 200
        ] 

Here is the full code:

 function getPedido() {
    $cod_pedido_integracao = 9;
  $pedido = [
    "cabecalho" => [
      "codigo_cliente" => 1398561351,//dinamico
      "codigo_pedido_integracao" => "$cod_pedido_integracao",//dinamico
      "data_previsao" => "21/12/2020",//dinamico
      "etapa" => "10",//fixo
      "numero_pedido" => "4",//dinamico
      "codigo_parcela" => "999",//fixo
      "quantidade_itens" => 2//dinamico
    ],
    "det" => [
      [
        "ide" => [
          "codigo_item_integracao" => "999"//fixo
        ],
        "inf_adic" => [
          "peso_bruto" => 150,//dinamico
          "peso_liquido" => 150//dinamico
        ],
        "produto" => [
          "cfop" => "5.102",//dinamico
          "codigo_produto" => "1398561571",//dinamico
          "descricao" => "Mouse sem fio Microsoft",//dinamico
          "ncm" => "9504.10.99",
          "quantidade" => 1,//varia
          "tipo_desconto" => "V",//varia
          "unidade" => "UN",
          "valor_desconto" => 0,
          "valor_unitario" => 200
        ]
      ]
    ],
    "frete" => [
      "modalidade" => "9"
    ],
    "informacoes_adicionais" => [
      "codigo_categoria" => "1.01.03",
      "codigo_conta_corrente" => 1398561339,
      "consumidor_final" => "S",
      "enviar_email" => "N"
    ],
    "lista_parcelas" => [
      "parcela" => [
        [
          "data_vencimento" => "22/12/2020",
          "numero_parcela" => 1,
          "percentual" => 50,
          "valor" => 100
        ],
        [
          "data_vencimento" => "08/02/2021",
          "numero_parcela" => 2,
          "percentual" => 50,
          "valor" => 100
        ]
      ]
    ]
  ];

  return $pedido;
}
  • You intend that your object $pedido have a list on produto? And this list of products was created with a foreach to add products? Would that be it??

  • That’s what I want to do.

1 answer

0

Perhaps its difficulty lies in the fact that its input is done with arrays. Transforming it into an object would be simpler to manipulate. Anyway it follows code changed to include a foreach from a list of products and add them to $pedido. This same logic could be made without the foreach, by directly assigning the value to $pedido["det"][0]["produtos"].

Fiddle: http://sandbox.onlinephpfunctions.com/code/d1d03cacc3fc672b2385ed00e6fdfcc65fa1722b

Code:

<?php
function getPedido() {
  $cod_pedido_integracao = 9;
  $pedido = [
    "cabecalho" => [
      "codigo_cliente" => 1398561351,//dinamico
      "codigo_pedido_integracao" => "$cod_pedido_integracao",//dinamico
      "data_previsao" => "21/12/2020",//dinamico
      "etapa" => "10",//fixo
      "numero_pedido" => "4",//dinamico
      "codigo_parcela" => "999",//fixo
      "quantidade_itens" => 2//dinamico
    ],
    "det" => [
      [
        "ide" => [
          "codigo_item_integracao" => "999"//fixo
        ],
        "inf_adic" => [
          "peso_bruto" => 150,//dinamico
          "peso_liquido" => 150//dinamico
        ],
        "produtos" => array()
      ]
    ],
    "frete" => [
      "modalidade" => "9"
    ],
    "informacoes_adicionais" => [
      "codigo_categoria" => "1.01.03",
      "codigo_conta_corrente" => 1398561339,
      "consumidor_final" => "S",
      "enviar_email" => "N"
    ],
    "lista_parcelas" => [
      "parcela" => [
        [
          "data_vencimento" => "22/12/2020",
          "numero_parcela" => 1,
          "percentual" => 50,
          "valor" => 100
        ],
        [
          "data_vencimento" => "08/02/2021",
          "numero_parcela" => 2,
          "percentual" => 50,
          "valor" => 100
        ]
      ]
    ]
  ];

  $produtos = array(
    [
      "cfop" => "1",//dinamico
      "codigo_produto" => "1398561571",//dinamico
      "descricao" => "Mouse sem fio Microsoft",//dinamico
      "ncm" => "9504.10.99",
      "quantidade" => 1,//varia
      "tipo_desconto" => "V",//varia
      "unidade" => "UN",
      "valor_desconto" => 0,
      "valor_unitario" => 200
    ],
    [
      "cfop" => "2",//dinamico
      "codigo_produto" => "1398561571",//dinamico
      "descricao" => "Mouse sem fio Microsoft",//dinamico
      "ncm" => "9504.10.99",
      "quantidade" => 1,//varia
      "tipo_desconto" => "V",//varia
      "unidade" => "UN",
      "valor_desconto" => 0,
      "valor_unitario" => 200
    ],
    [
      "cfop" => "3",//dinamico
      "codigo_produto" => "1398561571",//dinamico
      "descricao" => "Mouse sem fio Microsoft",//dinamico
      "ncm" => "9504.10.99",
      "quantidade" => 1,//varia
      "tipo_desconto" => "V",//varia
      "unidade" => "UN",
      "valor_desconto" => 0,
      "valor_unitario" => 200
    ]);

  foreach ($produtos as $produto) {
      array_push($pedido["det"][0]["produtos"], $produto);
  }

  return $pedido;
}

$pedido = getPedido();
var_dump($pedido["det"][0]["produtos"]);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.