*/ $username = 'urano'; $password = 'urano123.,'; $url = 'https://bh.onehost.com.br/admin/api/get_produtos.json?integrar_balanca=1'; $pastaDestino = 'tmp'; $produtos = getProdutos($url, $username, $password); //Ordena pelo codigo de forma crescente usort($produtos, function ($a, $b){ return $a['Produto']['balanca_codigo'] > $b['Produto']['balanca_codigo']; }); $str = ''; //Gera os arquivos de acordo com o layout da URANO foreach($produtos as $produto) { $referencia = $produto['Produto']['balanca_codigo']; $referenciaComAte6Numeros = preg_match('/^[0-9]{1,6}$/', $referencia); if(!$referenciaComAte6Numeros) { continue; } $precoPorQuilo = $produto['Produto']['preco']; if($produto['Produto']['em_promocao']) { $precoPorQuilo = $produto['Produto']['preco_promocao']; } $validade = $produto['Produto']['balanca_validade']; if(strlen($validade) === 0) { $validade = 0; } $tipoProduto = $produto['Produto']['balanca_tipo_produto']; if(strlen($tipoProduto) === 0) { $tipoProduto = 'P'; } $codigoDepartamento = '01'; $str .= $codigoDepartamento; //Código do departamento $str .= ($tipoProduto == 'P' ? '0' : '1'); //Tipo de produto (0 venda por peso e 1 venda por unidade) $str .= sprintf('%06d', $referencia); //Código do item $str .= sprintf('%06d', round($precoPorQuilo * 100)); //Preço por KG ou Unitário $str .= sprintf('%03d', $validade); //Validade em dias $str .= str_pad(substr(slug($produto['Produto']['nome']), 0, 25), 25, ' ', STR_PAD_RIGHT); //Descritivo do item 1º linha $str .= str_repeat(' ', 25); //Descritivo do item 2º linha $str .= str_repeat('0', 6); //Código da Informação Extra do item $str .= str_repeat('0', 4); // Código da Imagem do Item $str .= str_repeat('0', 6); //Código da Informação Nutricional $str .= '1'; //Impressão da Data de Validade $str .= '0'; //Impressão da Data de Embalagem $str .= str_repeat('0', 4); //Código do Fornecedor $str .= str_repeat('0', 12); //Lote $str .= str_repeat('0', 11); //Código EAN-13 Especial $str .= '0'; //Versão do preço $str .= str_repeat('0', 4); //Código do Som $str .= str_repeat('0', 4); //Código de Tara Pré-determinada $str .= str_repeat('0', 4); //Código do Fracionador $str .= str_repeat('0', 4); //Código do Campo Extra 1 $str .= str_repeat('0', 4); //Código do Campo Extra 2 $str .= str_repeat('0', 4); //Código da Conservação $str .= str_repeat('0', 12); //EAN-13 de Fornecedor $str .= str_repeat('0', 6); //Percentual de Glaciamento $str .= '|'. $codigoDepartamento .'|'; //Sequencia de departamentos associados $str .= str_repeat(' ', 35); //Descritivo do Item – Terceira Linha $str .= str_repeat(' ', 35); //Descritivo do Item – Quarta Linha $str .= str_repeat('0', 6); //Código do Campo Extra 3 $str .= str_repeat('0', 6); //Código do Campo Extra 4 $str .= str_repeat('0', 6); //Código da mídia $str .= str_repeat('0', 6); //Preço promocional $str .= '0'; //Utiliza o fornecedor associado $str .= '||'; // Código de Fornecedor Associado $str .= '0'; //Solicita Tara na Balança $str .= '||';//Sequência de balanças onde o item não estará ativo. $str .= "\r\n"; } $arquivo = $pastaDestino . DIRECTORY_SEPARATOR . 'Itensmgv.txt'; file_put_contents($arquivo, $str); //Cria um arquivo vazio para "avisar" o MGV6 que deve carregar a lista de produtos touch($pastaDestino . DIRECTORY_SEPARATOR . 'ARQSOK.txt'); function getProdutos($url, $username, $password) { $process = curl_init($url); curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($process, CURLOPT_HEADER, 0); curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password); curl_setopt($process, CURLOPT_TIMEOUT, 30); curl_setopt($process, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($process, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); $returno = curl_exec($process); curl_close($process); $arRetorno = json_decode($returno, true); $produtos = $arRetorno['registros']; if(!is_array($produtos)) { echo "Erro ao buscar produtos\r\n"; exit(1); } return $produtos; } function slug($string, $replacement = ' ') { $quotedReplacement = preg_quote($replacement, '/'); $merge = array( '/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ', '/[\s\p{Zs}]+/mu' => $replacement, sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '', ); $_transliteration = array( '/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A', '/Æ|Ǽ/' => 'AE', '/Ä/' => 'Ae', '/Ç|Ć|Ĉ|Ċ|Č/' => 'C', '/Ð|Ď|Đ/' => 'D', '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E', '/Ĝ|Ğ|Ġ|Ģ|Ґ/' => 'G', '/Ĥ|Ħ/' => 'H', '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|І/' => 'I', '/IJ/' => 'IJ', '/Ĵ/' => 'J', '/Ķ/' => 'K', '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L', '/Ñ|Ń|Ņ|Ň/' => 'N', '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O', '/Œ/' => 'OE', '/Ö/' => 'Oe', '/Ŕ|Ŗ|Ř/' => 'R', '/Ś|Ŝ|Ş|Ș|Š/' => 'S', '/ẞ/' => 'SS', '/Ţ|Ț|Ť|Ŧ/' => 'T', '/Þ/' => 'TH', '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U', '/Ü/' => 'Ue', '/Ŵ/' => 'W', '/Ý|Ÿ|Ŷ/' => 'Y', '/Є/' => 'Ye', '/Ї/' => 'Yi', '/Ź|Ż|Ž/' => 'Z', '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a', '/ä|æ|ǽ/' => 'ae', '/ç|ć|ĉ|ċ|č/' => 'c', '/ð|ď|đ/' => 'd', '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e', '/ƒ/' => 'f', '/ĝ|ğ|ġ|ģ|ґ/' => 'g', '/ĥ|ħ/' => 'h', '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|і/' => 'i', '/ij/' => 'ij', '/ĵ/' => 'j', '/ķ/' => 'k', '/ĺ|ļ|ľ|ŀ|ł/' => 'l', '/ñ|ń|ņ|ň|ʼn/' => 'n', '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o', '/ö|œ/' => 'oe', '/ŕ|ŗ|ř/' => 'r', '/ś|ŝ|ş|ș|š|ſ/' => 's', '/ß/' => 'ss', '/ţ|ț|ť|ŧ/' => 't', '/þ/' => 'th', '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u', '/ü/' => 'ue', '/ŵ/' => 'w', '/ý|ÿ|ŷ/' => 'y', '/є/' => 'ye', '/ї/' => 'yi', '/ź|ż|ž/' => 'z', ); $map = $_transliteration + $merge; return preg_replace(array_keys($map), array_values($map), $string); }