<?php

function MostraItemOs($p_numitem, $p_descricao, $p_codigo, $p_qtde, $p_unitario, $p_totalprd, $p_desc, $p_codpro, $ipi, $id, 
 $unitcomipi, $unitariofinal, $codos, $unidade, $qtdePorEmb, $qtdeEmb,$unEmb, $custo, $fotogr) {
    include '../auxiliar/parametros.inc';
    include_once '../bd/bd_produtos.inc';

    $p_ispalm = lecookie("ispalm");
    
    $p_valida_custo = $p_valida_pct_lucro == 1 && isset($p_pct_lucro_minimo) && is_numeric($p_pct_lucro_minimo);

    //vamos usar markup ao inves de margem de lucro pq os clientes estao acostumados com markup
    if ($p_valida_custo) {
        $lucro = (($unitariofinal - $custo)/$custo)*100;
    }

    $width = lecookie("width");
    $isMobileDevice = ($p_desabilita_layout_mobile <> 1) && isset($width) ? intval($width) <= 768 : null;

    if (!$isMobileDevice) {
    if($p_valida_custo && $lucro < $p_pct_lucro_minimo) {
        echo "<tr class='text-danger'> ";
        $p_bold = "<b>";
    }else{
        echo "<tr>"; 
        $p_bold = "";
    } 

    echo "<td>$p_bold <!--<a href = '../php/mostradetprod.php?codpro=$p_codpro&preco=$p_unitario'>-->$p_codigo<!--</a>--></td>";
    if (!$p_ispalm) {
        echo"<td>$p_bold $p_descricao</td>";
        echo"<td>$p_bold $unidade</td>";
    }

    echo"<td>$p_bold " . number_format($p_qtde, ($estoque_com_casas_decimais == 1) ? 2:0, ',', '.') . "</td>";
    if($p_usa_embalagem_produtos == 1) {
        echo"<td>$p_bold $qtdePorEmb</td>";
        echo"<td>$p_bold $unEmb</td>";
        echo"<td>$p_bold $qtdeEmb</td>";
    }

    echo"         <td>$p_bold R$" . number_format($p_unitario, 2, ',', '.') . "</td>";
    if (!$p_ispalm) {
        
        if($p_esconde_ipi != 1) {
            echo "
                <td>$p_bold $ipi%</td>
                <td>$p_bold R$" . number_format($unitcomipi, 2, ',', '.') . "</td>
            ";
        }

        echo" 
              <td>$p_bold " . number_format($p_desc, 2, ',', '.') . "%</td>
              <td>$p_bold R$" . number_format($unitariofinal, 2, ',', '.') . "</td>
        ";

        if($p_preco_minimo_sobre_venda == 1) {
            $codprodtabela = TrazValorCampo('os', 'npreco', 'codos', $codos);
            $precoMinimo = getPrecoMinimo($p_codpro, $codprodtabela);
            $margem = (1 - ($precoMinimo / $unitariofinal))*100;
            $margemFormatada = number_format($margem, 2, ',', '.');
            $margemClass = $margem < 0? 'text-red' : 'text-green';
            echo "<td class='$margemClass'>$p_bold  $margemFormatada%</td>";
        }
    }
    echo"    <td>$p_bold R$" . number_format($p_totalprd, 2, ',', '.') . "</td>";
   
    if (canEditVnd($codos)){
        echo " <td>
                    <a href='../php/excluiritem.php?numitem=$p_numitem&codpro=$p_codpro' style='color: #dd4b39; margin-right: 8px; font-size: 18px;'>
                        <i class='fa fa-trash'></i>
                    </a>
                    <a style='font-size: 18px;'
                    href='../html/alteraitem.php?numitem=$p_numitem&incalt=2&codigo=$p_codigo&descricao=$p_descricao&qtde=$p_qtde&unitario=$p_unitario&desc=$p_desc&codpro=$p_codpro'>
                        <i class='fa fa-edit'></i>
                    </a>
                    </td>";
    }


        echo "</tr>";
    } else {
        echo "<div class='produto__item'>
        <div class='produto__item__wrapper'>";

    
        echo "<div class='produto__item__details'>";
        echo "<strong class='produto__item__description'>$p_descricao</strong>";
        echo "<span>$p_codigo</span>";
        echo "</div>";
        echo "<div class='produto__item__options produto__item__preco'>
        <a href='../php/excluiritem.php?numitem=$p_numitem&codpro=$p_codpro' style='color: #dd4b39; margin-right: 8px; font-size: 18px;'>
            <i class='fa fa-trash'></i>
        </a>
        <a style='font-size: 18px;' href='../html/alteraitem.php?numitem=$p_numitem&incalt=2&codigo=$p_codigo&descricao=$p_descricao&qtde=$p_qtde&unitario=$p_unitario&desc=$p_desc&codpro=$p_codpro'>
            <i class='fa fa-edit'></i>
        </a>
        </div>";

        echo "</div>";

        echo "<div class='produto__item__wrapper'>";
        echo "<span class='produto__item__estoque'>
        <strong>Qtde</strong>
        <span>".number_format($p_qtde, ($estoque_com_casas_decimais == 1) ? 2:0, ',', '.') ."</span></span>
        
        <span class='produto__item__estoque'>
        <strong>UN</strong>
        <span>$unidade</span></span>";
        if($p_usa_embalagem_produtos == 1) {
            echo "<span class='produto__item__estoque'>
                <strong>Qtd. Por Emb.</strong>
            <span>$qtdePorEmb</span></span>";
            echo "<span class='produto__item__estoque'>
                <strong>UN Emb.</strong>
            <span>$unEmb</span></span>";
            echo "<span class='produto__item__estoque'>
                <strong>Qtde. Emb.</strong>
            <span>$qtdeEmb</span></span>";
        }   
        echo "<span class='produto__item__estoque'>
            <strong>Unitário</strong>
        <span>R$" . number_format($p_unitario, 2, ',', '.') . "</span></span>";
        

        echo "
            <span class='produto__item__estoque'>
                <strong>Desconto</strong>
                <span>" . number_format($p_desc, 2, ',', '.') . "%</span>
            </span>
            <span class='produto__item__estoque'>
                <strong>Unit Final</strong>
                <span>R$ " . number_format($unitariofinal, 2, ',', '.') . "</span>
            </span>
            <span class='produto__item__estoque'>
                <strong>Total</strong>
                <span>R$ " . number_format($p_totalprd, 2, ',', '.') . "</span>
            </span>
        </div>";

        echo "</div></div>";
    }
}






function Mostratra($p_codtra, $p_transp) {
    echo "<p>
                    <a href='../php/selectcamposos.php?transp=$p_transp&codtra=$p_codtra'>$p_transp</a>
                 </p> ";
}

function Mostraforma($p_codforma, $p_forma) {
    echo "<p>
                    <a name='$p_forma' href='../php/selectcamposos.php?forma=$p_forma&codforma=$p_codforma'>$p_forma</a>
                 </p> ";
}


function mostraTipoDePagamento($codigoTipo, $descricao) {
    echo "<p>
        <a href='../php/selectcamposos.php?tipoDePagamento=$descricao&codTipo=$codigoTipo'>$descricao</a>
    </p> ";
}

function MostraVendasEditaveis($p_dataosfin, $p_os, $p_total, $p_codos, $p_tipo) {

   
    echo "
    <tr>
    <td><a href='../php/abrevenda.php?codos=$p_codos'>$p_dataosfin</a></td>
    <td> $p_os </td>
    <td> $p_total </td> 
    </tr>";

    //se for venda cancelada
    if ($p_tipo == 4) {
        echo "canc.";
    }

    echo "</p> ";
}

function MostraVendasStatus($p_dataosfin, $p_os, $p_total, $p_codos) {
    echo "<p>
                   <a href='../php/alterastatus.php?codos=$p_codos'>$p_dataosfin</a> |
    $p_os | $p_total
                 </p> ";
}

//FUNCOES DA OS
//GERA O COD OS
function GeraCodLan() {
    include 'conecta.inc.php';

    $l_selectcodos = 'select GEN_ID(GNCODLANC,1) as codos from rdb$database';

    $l_res = ibase_query($con, $l_selectcodos); //cria o id q recebe o select
    $l_lin = ibase_fetch_row($l_res); //pega a unica linha que o select retorna
    return $l_lin[0]; //pega o campo pelo unico indice que o select retornou
}

function Getdesccli($cdVND) {
    include 'conecta.inc.php';
    
    //var_dump($cdVND);die();
    $l_selectcdcli = "SELECT COALESCE(C.DESCVENDA,0) AS DESCVENDA FROM CLIENTES C JOIN OS O ON O.CODCLI = C.CODCLI WHERE O.CODOS = $cdVND ROWS 1 TO 1";
 
    $l_res = ibase_query($con, $l_selectcdcli); //cria o id q recebe o select
    $l_lin = ibase_fetch_row($l_res); //pega a unica linha que o select retorna
    return $l_lin[0]; //pega o campo pelo unico indice que o select retornou
}

//INCLUI OS - retorna o codos que tem a nova os (para poder depois incluir os itens)
function IncluiOS($p_codcli, $p_codvnd, $p_codloja, $p_vvcodtiposai, $p_codtra, $p_codforma, $p_razao) {
    include '../idiomas/config.inc';

    if (!$p_codloja) {
        echo "$msg_nenhuma_loja_associada";
        exit;
    }
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    include "../bd/bd_clientes.inc";
    include "../bd/bd_produtos.inc";
    $l_codos = GeraCodLan();
    $l_codusu = lecookie('codusu'); /* palm */
    
    // utilizar a tabela de pre�o associada ao cadastro. Se n�o tiver nada associado usar a Tabela 5 � Consumidor
    $l_npreco = TrazValorCampo('clientes', 'codprodtabela', 'codcli', $p_codcli);
    if (!$l_npreco){
        $l_npreco = 5;
    }
    $l_tpfrete = TrazValorCampo('clientes', 'tpfrete', 'codcli', $p_codcli);
    if (!$l_tpfrete){
        $l_tpfrete = 4;
    }
    if ($seleciona_tabela_de_preco == 1)
        setcookie("tabelaDePrecos", $l_npreco, 0, '/');
    
    $Comissao = BuscaComissao($p_codcli);
	
    if ($p_osIniciaAberta == 1) {
		$dtosfin = 'Null';
		$hfim = 'Null';
    } else {
		$dtosfin = 'Current_date';
		$hfim = 'current_time';
    };
     

     $codTipo = $p_lancar_orcamentos == 1 ? 1 : 2;
     $codLojaSai = getLojaDeEstoque();

    // CRIA O INSERT /*palm*/
    $l_insereos = "INSERT INTO OS (codos, codcli, codvnd, dataos, comissao,
                horainicio, tipo, codloja,codlojasai, codtiposai,codtra, codforma,
                comfinanciamento, tipolanc, codusucria, codstatus, npreco,dataosfin, horatermino,revcons, tpfrete, ISBUSINESS)
                values( $l_codos, $p_codcli, $p_codvnd, current_date, $Comissao,
                current_time, $codTipo, $p_codloja,$codLojaSai, $p_vvcodtiposai ,$p_codtra,
    $p_codforma,'N',1,$l_codusu,$p_codstatus, $l_npreco, $dtosfin , $hfim, (select revcom from clientes where codcli = $p_codcli ), $l_tpfrete , 2)";
    
    //echo $l_insereos . "<br />"; //mostra o insert que executou - so para testes

    if (exec_sql_simples($con, $l_insereos)) {
        setcookie("codcli", $p_codcli, 0, '/');
        setcookie("razao", $p_razao, 0, '/');
        return setcookie("codos", $l_codos, 0, '/');
    } else {
        return false; //echo "<div id='msgerro'> ERRO AO LANCAR PEDIDO. CONTATE O SUPORTE</div>";
    }
}

function verificaCodTipoSai($codos){
    include "conecta.inc.php";
    $_selectOs = "select codtiposai from os where codos = $codos";
    $sql = ibase_query( $con, $_selectOs ); 
    $l_lin = ibase_fetch_row($sql);
    ibase_close($con);
    
    return $l_lin[0];
}


function verificaConsumo($codos){
    include "conecta.inc.php";
    $_selectOs = "select revcons from os where codos = $codos";
    $sql = ibase_query( $con, $_selectOs ); 
    $l_lin = ibase_fetch_row($sql);
    ibase_close($con);
    
    return $l_lin[0];
}

function verificaDadosOsEco($codos){
    include "conecta.inc.php";
    $sql = "select choper, chapadelvehiculo, ticketafv, DATA_ORIGEN, ACLARACION_ORIGEN, DOCUMENTO_ORIGEN, DATA_TRANSPORTISTA,
    ACLARACION_TRANSPORTISTA, DOCUMENTO_TRANSPORTISTA, DATA_RECEPTOR, ACLARACION_RECEPTOR, DOCUMENTO_RECEPTOR 
    from os where codos = $codos";
    if (cria_matriz_campos_pelo_sql($sql, $mestre)) {
        return $mestre[0];
    } 
}


//FINALIZA OS
function FinalizaOs($p_codos,$lat,$long) {

    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
	$dist = 0;
	
	//Se tem coordenadas na venda
	if (($lat != '') && ($long != '')) {
       $l_selectitensos = "select c.latitude , c.longitude from clientes c join os o on o.codcli = c.codcli where o.codos = $p_codos";

		$a_reg = qry($con, $l_selectitensos, $a_campos);

		if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
			$p_lat = $l_a_itens[0][latitude];
			$p_long = $l_a_itens[0][longitude];
		}	
	    
		$dist = calcDistancia($p_lat,$p_long,$lat,$long);
	}	



    $codTipo = $p_lancar_orcamentos == 1 ? 1 : 2;
    $codstatusFinal = $p_codstatusfin;

    if($p_limite_credito_analise_financeiro == 1) {
        include_once "../bd/bd_clientes.inc";
        include_once "../bd/bd_produtos.inc";

        $os = getOsByCodos($p_codos);
        $codcli = $os['codcli'];
        $totalVenda = $os['total'];
        $prazoLimite = getLimitCreditPrazoCliente($codcli);
        if(!is_null($prazoLimite) && $prazoLimite < date('Y-m-d')){
            $codstatusFinal = $p_status_analise_financeiro;
        }
        
            
        $creditoEstourado = verificaSeEstourouCredito($totalVenda, $codcli);
        if($creditoEstourado){
            $codstatusFinal = $p_status_analise_financeiro;
        }
    }


    
    if($p_preco_minimo_sobre_venda == 1) {
        include_once "../bd/bd_produtos.inc";

        $os = getOsByCodos($p_codos);
        $codprodtabela = $os['npreco'];
        $itens = getOsItensByCodos($p_codos);
        $totalPrecoMinimo = 0;

        foreach ($itens as $item) {
          $precoMinimo = getPrecoMinimo($item['codpro'], $codprodtabela);
          if(!is_nan($precoMinimo)) {
            $totalPrecoMinimo += $precoMinimo * $item['qtde'];
          }
        }

        if($totalPrecoMinimo != 0)
          $margem = (1 - ($totalPrecoMinimo/$os['total'])) * 100;
        else
          $margem = 0;

        if($margem < 0) {
            $codstatusFinal = $p_status_venda_abaixo_preco_minimo;
        }
    }

  
    if($p_vende_abaixo_do_preco_rede_ou_tabela == 1) {
        $itens = getOsItensByCodos($p_codos);

        foreach ($itens as $item) {
            if(($item["unitcomdesc"] + 0.01) < $item['precobase']) {
                $codstatusFinal = $p_status_produto_abaixo_do_preco_rede_ou_tabela;
                continue;
            }
        }
    }

    if($p_vende_para_cliente_restrito_com_status == 1) {
        $com_restricao = lecookie("com_restricao");
        if($com_restricao == "1") {
            $codstatusFinal = $p_status_venda_para_cliente_restrito;

        }
    }      



    if($p_finaliza_venda_ao_finalizar === 1) {
        $l_updateos = "update OS set codstatus =$codstatusFinal, latitude = '$lat', longitude = '$long', distancia = $dist, dataosfin=current_date, horatermino = current_time where codos = $p_codos";
        
    } else {
        $l_updateos = "update OS set codstatus =$codstatusFinal, tipo = $codTipo, latitude = '$lat', longitude = '$long', distancia = $dist where codos = $p_codos";
    }



    //echo $l_updateos; //mostra o comando que executou - so para testes
    //exit;

    return (exec_sql_simples($con, $l_updateos));
}




function alteraTabelaDePreco($codos, $tabela) {
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    $l_updateos = "UPDATE OS SET npreco = $tabela WHERE codos = $codos";


    return (exec_sql_simples($con, $l_updateos));
}



function alteraTipoDePagamento($codos, $codtipo) {
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    $l_updateos = "UPDATE OS SET codtipo = $codtipo WHERE codos = $codos";

    return (exec_sql_simples($con, $l_updateos));
}


function alteraFormaDePagamento($codos, $codforma) {
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    $l_updateos = "UPDATE OS SET codforma = $codforma WHERE codos = $codos";

    return (exec_sql_simples($con, $l_updateos));
}

function alteraTransportadora($codos, $codtra) {
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    $l_updateos = "UPDATE OS SET codtra = $codtra WHERE codos = $codos";

    return (exec_sql_simples($con, $l_updateos));
}

function alteraNotaRemessaReferenciada($codos, $notaRemessa) {
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    $l_updateos = "UPDATE OS SET referencia_nota_remessa = $notaRemessa WHERE codos = $codos";

    return (exec_sql_simples($con, $l_updateos));
}





function alteraPrecoDeItemDaOs($codos, $codpro, $preco) {

    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    // CRIA O update
    $l_updateos = "UPDATE OSITENSPRO SET unitario = $preco WHERE codos = $codos AND codpro = $codpro";

    //echo $l_updateos; //mostra o comando que executou - so para testes

    return (exec_sql_simples($con, $l_updateos));
}



function alteraPrecoMinimoDeItemDaOs($codos, $codpro, $preco) {

    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    // CRIA O update
    $l_updateos = "UPDATE OSITENSPRO SET precobase = $preco WHERE codos = $codos AND codpro = $codpro";

    //echo $l_updateos; //mostra o comando que executou - so para testes

    return (exec_sql_simples($con, $l_updateos));
}



//CANCELA OS (pedido)
function CancelaOs($p_codos) {

    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    // CRIA O update
    $l_updateos = "update OS set tipo = 4 where codos = $p_codos";

    //echo $l_updateos; //mostra o comando que executou - so para testes

    return (exec_sql_simples($con, $l_updateos));
}

function calcDistancia($lat_inicial, $long_inicial, $lat_final, $long_final)
{
    if((!$lat_inicial) || (!$long_inicial) ) {
        return 999999999;
    }
    
    $d2r = 0.017453292519943295769236;

    $dlong = ($long_final - $long_inicial) * $d2r;
    $dlat = ($lat_final - $lat_inicial) * $d2r;

    $temp_sin = sin($dlat/2.0);
    $temp_cos = cos($lat_inicial * $d2r);
    $temp_sin2 = sin($dlong/2.0);

    $a = ($temp_sin * $temp_sin) + ($temp_cos * $temp_cos) * ($temp_sin2 * $temp_sin2);
    $c = 2.0 * atan2(sqrt($a), sqrt(1.0 - $a));

    return 6368.1 * $c;
}

function DadosAdic(&$p_codloja, &$p_loja, &$p_codtra, &$p_transportadora, &$p_codforma, &$p_formapagto, &$p_codvnd, &$p_vendedor, &$p_razao, &$p_codtiposai, &$p_tiposai, $p_codcli, $p_codusu, $p_dtentrega, &$codTipo, &$tipoDePagamento) {
    include 'conecta.inc.php';
    include_once '../auxiliar/parametros.inc';
    include '../idiomas/config.inc';



    //MONTA O SELECT PRA TRAZER OS DADOS ADICIONAIS PRA INSERIR A OS
    $l_selectdadosadic = "SELECT 
                S.CODLOJA, 
                L.LOJA, 
                C.CODTRA,
                T.TRANSPORTADORA as transportadora,
                C.CODFORMA, 
                F.DESCRICAO, 
                S.CODVND, 
                V.VENDEDOR as vendedor,
                C.RAZAO as razao,

                C.codtipopag,
                tp.descricao as descricaotipopag

            FROM SENHAS S
            LEFT JOIN CLIENTES C ON 1=1
            LEFT JOIN CONFIGOS CO ON 1=1
            LEFT JOIN LOJAS L ON L.CODLOJA = S.CODLOJA
            LEFT JOIN TRANSPORTADORA T ON T.CODTRA = C.CODTRA
            LEFT JOIN FORMAS F ON F.CODFORMA = C.CODFORMA
            LEFT JOIN VENDEDORES V ON V.CODVND = S.CODVND
            LEFT JOIN tipospag tp ON tp.codtipo = c.codtipopag

            WHERE C.CODCLI = $p_codcli AND CODUSU = $p_codusu";


    //echo $l_selectdadosadic; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectdadosadic, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_adic)) {
        //se tiver resultado do select
        //passa o valor para as variaveis de referencia que ser? mostrado na pag de cadastro de clientes
        if (!$p_codloja) {
            $p_codloja = tratacamponulo($l_a_adic[0][codloja]);
        }
        if (!$p_loja) {
            $p_loja = tratacamponulo($l_a_adic[0][loja]);
        }
        if (!$p_codtra) {
            $p_codtra = tratacamponulo($l_a_adic[0][codtra]);
        }
        if (!$p_transportadora) {
            $p_transportadora = tratacamponulo($l_a_adic[0][transportadora]);
        }

        if (!$p_codforma) {
            $p_codforma = tratacamponulo($l_a_adic[0][codforma]);
        }
        if (!$p_formapagto) {
            $p_formapagto = tratacamponulo($l_a_adic[0][descricao]);
        }


        if (!$codTipo) {
            $codTipo = tratacamponulo($l_a_adic[0][codtipopag]);
        }

        if (!$tipoDePagamento) {
            $tipoDePagamento = tratacamponulo($l_a_adic[0][descricaotipopag]);
        }

        if (!$p_codvnd) {
            $p_codvnd = tratacamponulo($l_a_adic[0][codvnd]);
        }
        if (!$p_vendedor) {
            $p_vendedor = tratacamponulo($l_a_adic[0][vendedor]);
        }
        if (!$p_razao) {
            $p_razao = tratacamponulo($l_a_adic[0][razao]);
        }
        if (!$p_codtiposai) {
            $p_codtiposai = $p_codtiposai_padrao ;
        }
        if (!$p_tiposai) {
            $p_tiposai = 'Venda';
        }
    } else {
        echo "<div id='msgerro'>$msg_erro_inserir_os.</div>";
    }
}

//Busca Total da Os





















function BuscaTotOS($p_codos, &$p_totalos, &$p_desc, &$p_ipi, &$p_qtdefaltasubst, &$p_totalbruto, &$p_totalicmssubst, &$p_descpct, &$p_descvlr) {
    include 'conecta.inc.php';

//ATUALIZA O O.TOTAL DA TABELA OS
    $comando = "UPDATE OS SET TOTAL = (SELECT
        SUM(COALESCE(OI.TOTALCOMDESC,0) + COALESCE(OI.VLRSUBST,0) + COALESCE(OIS.totalcomdesc,0) )
        FROM
        OS o
        left JOIN OSITENSPRO OI ON OI.codos = o.codos
        left JOIN OSITENSSER OIS ON OIS.codos = o.codos
        WHERE o.CODOS = $p_codos  ) WHERE CODOS = $p_codos ";


    exec_sql_simples($con, $comando);

    //MONTA O SELECT PRA TRAZER OS DADOS ADICIONAIS PRA INSERIR A OS
    $l_selectdadosadic = "SELECT
    o.total,

cast((((sum(totalprd) - sum((coalesce(totalprd,0)-(coalesce(oi.descontopct,0) * coalesce(totalprd,0)/100)))) * 100 ) /
sum(iif(totalprd = 0, 1, totalprd))) as numeric(10,2)) as desconto,

sum((oi.unitcomdesc * oi.qtde) - (oi.unitcdescsemipi * oi.qtde)) as valipi,
        sum(((oi.unitcomdesc * oi.QTDEEXPFALTA) + (oi.QTDEEXPFALTA * (COALESCE(oi.VLRSUBST,0) / oi.QTDE)))) AS qtdefaltasubst,
    sum(oi.unitcomdesc * oi.qtde) as totalbruto,
    iif(sum(coalesce(oi.precobase,0)) = 0 , 0 , (sum( ((oi.precobase * oi.qtde) - (oi.unitcdescsemipi * oi.qtde))) / sum((iif(oi.precobase = 0, 1, oi.precobase) * oi.qtde) )*100)) as descontopct,
    o.toticmssubst,
    sum( ((oi.precobase * oi.qtde) - (oi.unitcdescsemipi * oi.qtde))) as descvlr

             from os o join ositenspro oi on oi.codos = o.codos  
   
    where o.codos = $p_codos

 group by  o.toticmssubst,o.total ";


    //  echo $l_selectdadosadic; die;//mostra o select - so para testes
    //MONTA MATRIZ
    //cria id do select
    $a_reg = qry($con, $l_selectdadosadic, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_adic)) {
        //se tiver resultado do select
        //passa o valor para as variaveis de referencia que ser? mostrado na pag de cadastro de clientes
        $p_totalos = $l_a_adic[0][total];
        $p_desc = $l_a_adic[0][desconto];
        $p_ipi = $l_a_adic[0][valipi];
        $p_qtdefaltasubst = $l_a_adic[0][qtdefaltasubst];
        $p_totalbruto = $l_a_adic[0][totalbruto];
        $p_totalicmssubst = $l_a_adic[0][toticmssubst];
        $p_descpct = $l_a_adic[0][descontopct];
        $p_descvlr = $l_a_adic[0][descvlr];

        if (!$p_totalos) {
            $p_totalos = 0;
        }
    }
}
























//ITENS DA OS
//GERA O NUMITEM
function GeraNumItem($p_codos) {
    include 'conecta.inc.php';

    $today = getdate();
    $numitem = ($today[hours] * 3600 ) + ($today[minutes] * 60 ) + ($today[seconds] );

    $l_selectnumitem = "select count(1) as recordcount from ositenspro  where codos = $p_codos";
    $l_res = ibase_query($con, $l_selectnumitem); //cria o id q recebe o select
    $l_lin = ibase_fetch_row($l_res); //pega a unica linha que o select retorna

    return ($numitem + $l_lin[0]); //pega o campo pelo unico indice que o select retornou
}

//INCLUI ITENS DA OS


function getIPI($p_codpro) {
    include 'conecta.inc.php';
    $sql = "
        select case
        when (p.ipivnd = 'S')
            then p.ipi
        when (p.ipivnd <> 'S')
            then '0'
        end from produtos p where p.codpro = $p_codpro
    ";

    $l_res = ibase_query($con, $sql); //cria o id q recebe o select
    $l_lin = ibase_fetch_row($l_res); //pega a unica linha que o select retorna
    return $l_lin[0];

}

function IncluiItensOs($produtoInsert) {

    include "../bd/conecta.inc.php";
    include "../auxiliar/parametros.inc";
    //include "../bd/bd_produtos.inc";
 
    BuscaDadosAdicProd($produtoInsert['codpro'], $p_custo);
    
    
    $ipi = getIPI($produtoInsert['codpro']);
    $ipi = $ipi ? $ipi : 0;

    if($usa_redes){
        $l_unitfim = $produtoInsert['precoBase']; 
    }else{
        $l_unitfim = $produtoInsert['unitario'];
    }
    
    if($produtoInsert['precoBase'] == 0){
        $precoBase = $produtoInsert['unitario'];
       
    }else{
        $precoBase = $produtoInsert['precoBase'];
    }

    if($p_usa_embalagem_produtos == 1){
        $l_unitfim = $produtoInsert['unitario'];
    }

    $l_desc = $produtoInsert['desconto'] * ($l_unitfim) / 100; //fa?o a conta aki pra colocar no insert depois

    $vlripi =  (($ipi/100)*$l_unitfim) * $produtoInsert['qtde'];

    $codTipo = $p_lancar_orcamentos == 1 ? 1 : 2;

    $camposEmbalagem = "";
    $valoresCamposEmbalagem = "";
    if($p_usa_embalagem_produtos == 1 && is_array($produtoInsert['embalagem'])) {
        $qtdePorEmbalagem = $produtoInsert['embalagem']['qtdePorEmbalagem'];
        $qtdeDeEmbalagens = $produtoInsert['embalagem']['qtdeDeEmbalagens'];
        $unEmb = $produtoInsert['embalagem']['unEmb'];
       
        $camposEmbalagem = ", qtdePorEmb, qtdeEmb, codprodemb";
        $valoresCamposEmbalagem = ", $qtdePorEmbalagem, $qtdeDeEmbalagens, '$unEmb'";
    }
  
    $l_insereitensos = "INSERT INTO OSITENSPRO (  codos
                                                , codpro
                                                , qtde
                                                , numitem
                                                , descontopct
                                                , unitario
                                                , custo
                                                , desconto
                                                , codlojasaii
                                                , codlojai
                                                , tipoi
                                                , precobase
                                                , comissao
                                                , ipi
                                                , vlripi
                                                , obs
                                                $camposEmbalagem
                                                )
                                        values(   " . $produtoInsert['codos'] . "
                                                , " . $produtoInsert['codpro'] . "
                                                , " . $produtoInsert['qtde'] . " 
                                                , " . $produtoInsert['numitem'] . "
                                                , " . $produtoInsert['desconto'] . "
                                                , $l_unitfim
                                                , $p_custo
                                                , $l_desc
                                                , (select codlojasai from os where codos = " . $produtoInsert['codos'] . ")
                                                , (select codloja from os where codos = " . $produtoInsert['codos'] . ")
                                                , $codTipo
                                                , $precoBase
                                                , " . ($produtoInsert['comissao'] == "" ? "NULL": $produtoInsert['comissao'] ) . "
                                                , $ipi
                                                , $vlripi 
                                                , '" . $produtoInsert['obsItem'] . "'
                                                $valoresCamposEmbalagem
                                            )";
    //echo $l_insereitensos;die; //mostra o insert que executou - so para testes
    //exit;
    return (exec_sql_simples($con, $l_insereitensos));
}


function getOSItens($codos) {
    $sql = "
        select
        (Extract (day from OI.prazoent) || '/' || extract(month from OI.prazoent) || '/' ||
                      Extract (year from OI.prazoent)) as prazoent,
                      p.codpro,
               numitem , codigo, descricao as descricao,
               cast(coalesce(oi.descontopct,0)as numeric(10,2)) as descontopct,
       cast(coalesce(qtde,0) as numeric(10,0)) as qtde,
       cast(coalesce(oi.precobase,0)as numeric(10,2)) as precobase,
       cast(coalesce(oi.unitario,0)as numeric(10,2)) as unitario,
       cast(coalesce(oi.UNITCOMDESC,0)as numeric(10,2)) as unitariofinal,
       cast((coalesce(oi.unitario,0) + ((coalesce(oi.unitario,0) * oi.ipi/100 )) )as numeric(10,2)) as unitcomipi,
   
       cast((oi.unitcomdescdiluido * oi.qtde ) as numeric(10,2)) as totalitem,
                 cast((coalesce(totalprd,0))as numeric(10,2)) as TotItemSemDesc,
               coalesce(total,0) as total, oi.desconto, oi.ipi from os o
           join ositenspro oi on oi.codos = o.codos
           join produtos p on p.codpro = oi.codpro where o.codos = $codos ";

    $result = qry($con, $sql, $a_campos);

    if (cria_matriz_campos($result, $a_campos, $itens)) {
        if(!isset($itens))
            return array();

        return $itens;
    }

}

//BUSCA E MOSTRA ITENS DA OS
function BuscaItensOs($p_codos, $p_campoordpedidos = false, $p_numitem = false, $totalOs=0) {

    include 'conecta.inc.php';
    include '../auxiliar/parametros.inc';
    include_once '../bd/bd_produtos.inc';
    include '../idiomas/config.inc';

    $p_ispalm = lecookie("ispalm");

    if (!$p_codos) {
        //echo "Sem OS";
        exit;
    }
    // palm
    //MONTA O SELECT PRA TRAZER OS ITENS
    $camposEmbalagem = "";
    if($p_usa_embalagem_produtos == 1)
        $camposEmbalagem = "qtdePorEmb, qtdeEmb, codProdEmb,";

    $l_selectitensos = "SELECT
                    (Extract (day from OI.prazoent) || '/' || extract(month from OI.prazoent) || '/' || Extract (year from OI.prazoent)) as prazoent,
                    p.codpro,
                    numitem,
                    codigo,
                    p.descricao as descricao,
                    cast(coalesce(oi.descontopct,0)as numeric(10,2)) as descontopct,
                    cast(coalesce(qtde,0) as numeric(10,2)) as qtde,
                    cast(coalesce(oi.unitario,0)as numeric(10,2)) as unitario,
                    cast(coalesce(oi.UNITCOMDESC,0)as numeric(10,2)) as unitariofinal,
                    cast((coalesce(oi.unitario,0) + ((coalesce(oi.unitario,0) * oi.ipi/100 )) )as numeric(10,2)) as unitcomipi,
                    cast((oi.unitcomdescdiluido * oi.qtde ) as numeric(10,2)) as totalitem,
                    cast((coalesce(totalprd,0))as numeric(10,2)) as TotItemSemDesc,
                    coalesce(total,0) as total,
                    oi.desconto,
                    oi.ipi, 
                    $camposEmbalagem
                    u.un as un,
                    coalesce(oi.custo,0) as custo

            FROM os o
                join ositenspro oi on oi.codos = o.codos
                join produtos p on p.codpro = oi.codpro
                LEFT JOIN unidades u on u.codun = p.codun
            WHERE o.codos = $p_codos ";
    // /palm

    if ($p_numitem) {
        $l_selectitensos .= " and numitem = $p_numitem ";
    }

    if ($p_campoordpedidos) {

        $l_selectitensos .= " order by $p_campoordpedidos ";
    }



    //echo $l_selectitensos;die; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectitensos, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        $qtdeTotal = 0;
        $totalPrecoMinimo = 0;
        $codprodtabela = TrazValorCampo('os', 'npreco', 'codos', $p_codos);

        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            $qtde = $l_a_itens[$i]['qtde'];
            if(!is_nan($qtde)) {
                $qtdeTotal += $qtde;
            }

            $precoMinimo = getPrecoMinimo($l_a_itens[$i]['codpro'], $codprodtabela);
          
            if(!is_nan($precoMinimo)) {
                $totalPrecoMinimo += $precoMinimo*$qtde;
               
            }

        }

        if($totalPrecoMinimo == 0)
            $totalPrecoMinimo=1;
        $margem = (1 - ($totalPrecoMinimo / $totalOs))*100;
        
        $margemClass = $margem < 0? 'text-red' : 'text-green';
        
        $width = lecookie("width");
        $isMobileDevice = ($p_desabilita_layout_mobile <> 1) && isset($width) ? intval($width) <= 768 : null;

        echo("<div class='box'>
            <div class='box-header with-border'>
              <h3 class='box-title'>Itens</h3>
            </div>
            <!-- /.box-header -->
            <div class='box-body table-responsive no-padding'>");

        if ( (!$isMobileDevice)  ) {
        $colunasIpi = "<th>$coluna_ipi</th>
        <th>$coluna_unit_ipi</th>";
        $colunasIpiFooter = "<th></th>
        <th></th>";

        if($p_esconde_ipi == 1) { 
            $colunasIpi = "";
            $colunasIpiFooter = "";
        }

        
        $colunaMargem = "";
        $colunaMargemFoot = "";
        if($p_preco_minimo_sobre_venda == 1) {
            $colunaMargem = "<th>$coluna_margem</th>";
            $colunaMargemFoot = "<th class='$margemClass'>" . number_format($margem, 2, ',', '.') . "%</th>";
        }

        $colunaEmbalagem = "";
        $colunaEmbalagemFoot = "";
        if($p_usa_embalagem_produtos == 1) {
            $colunaEmbalagem = "<th>$coluna_qtde_por_emb</th><th>$coluna_un_emb</th><th>$coluna_qtde_emb</th>";
            $colunaEmbalagemFoot = "<th></th><th></th>";
        }

            echo("
          <table class='table table-hover'>
            <tbody><tr>
              <th style='width: 10px'>$coluna_codigo</th>
              <th>$coluna_produto</th>
              <th>$coluna_un</th>
              <th>$coluna_qtde</th>
              $colunaEmbalagem
              <th style='width: 40px'>$coluna_unitario</th>
              $colunasIpi
              <th>$coluna_desconto</th>
              <th>$coluna_unit_final</th>
              $colunaMargem
              <th>$coluna_total</th>
              <th></th>
            </tr>");
            
            for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
                $id = $i % 2;
                $unEmb = getEmbalagemProdutoById($l_a_itens[$i][codprodemb]);
                MostraItemOs($l_a_itens[$i][numitem], $l_a_itens[$i][descricao], $l_a_itens[$i][codigo],
                        $l_a_itens[$i][qtde], $l_a_itens[$i][unitario], $l_a_itens[$i][totalitem],
                        $l_a_itens[$i][descontopct], $l_a_itens[$i][codpro], $l_a_itens[$i][ipi],
                        $id,$l_a_itens[$i][unitcomipi], $l_a_itens[$i][unitariofinal], $p_codos, $l_a_itens[$i][un],
                             $l_a_itens[$i][qtdeporemb], $l_a_itens[$i][qtdeemb],$unEmb[un],$l_a_itens[$i][custo], $l_a_itens[$i][fotogr]);
            };
        echo("  
        </tbody>
        <tfoot>
            <th></th>
            <th>$coluna_totais</th>
            <th></th>
            <th>" . number_format($qtdeTotal, ($estoque_com_casas_decimais == 1) ? 2:0, ',', '.')  . "</th>
            $colunaEmbalagemFoot
            <th></th>
            
            $colunasIpiFooter
            <th></th>
            <th></th>
            $colunaMargemFoot
            <th>R$" . number_format($totalOs, 2, ',', '.') . "</th>
            <th></th>
        </tfoot>
        </table>
            </div>"); 
        } else {
            for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
                $id = $i % 2;
                $unEmb = getEmbalagemProdutoById($l_a_itens[$i][codprodemb]);
                MostraItemOs($l_a_itens[$i][numitem], $l_a_itens[$i][descricao], $l_a_itens[$i][codigo],
                        $l_a_itens[$i][qtde], $l_a_itens[$i][unitario], $l_a_itens[$i][totalitem],
                        $l_a_itens[$i][descontopct], $l_a_itens[$i][codpro], $l_a_itens[$i][ipi],
                        $id,$l_a_itens[$i][unitcomipi], $l_a_itens[$i][unitariofinal], $p_codos, $l_a_itens[$i][un],
                         $l_a_itens[$i][qtdeporemb], $l_a_itens[$i][qtdeemb],$unEmb[un],$l_a_itens[$i][custo], $l_a_itens[$i][fotogr]);
            };
        }
     
        echo "</div></div>";
        
        return TRUE;
    } else {
        echo "
        <div class='alert alert-danger alert-dismissible'>
                <button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button>
                <h4><i class='icon fa fa-ban'></i> $msg_atencao</h4>
                $msg_nenhum_item_encontrado
              </div>";
        return FALSE;
    }
}

function BuscaItensDadosAdic($p_codos, $p_numitem, &$p_unitario) {

    include 'conecta.inc.php';

    //MONTA O SELECT PRA TRAZER OS ITENS
    $l_selectitensos = "select unitario from ositenspro where codos = $p_codos and numitem = $p_numitem";


    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectitensos, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        $p_unitario = $l_a_itens[0][unitario];
    }
}

//EXCLUI ITENS DA OS

function ExcluiItemOs($p_codos, $p_numitem) {

    include "conecta.inc.php";
    // CRIA O DELETE
    $l_deleteitemos = "delete from ositenspro where codos = $p_codos and numitem = $p_numitem";

    //echo $l_deleteitemos; //mostra o comando que executou - so para testes

    return (exec_sql_simples($con, $l_deleteitemos));
}

//ALTERA ITEM DA OS 

function updateUnitario($codos, $codpro, $unitario) {
    if(is_nan($unitario))
        return true;

    include 'conecta.inc.php';


    $update = "update ositenspro oi set unitario = $unitario WHERE codos = $codos AND codpro = $codpro";

    return (exec_sql_simples($con, $update));

}


function AlteraItemOs($p_codos, $p_numitem, $p_qtde, $p_desc, $p_unitario, $tipoDesconto, $obsItem = null, $codpro = 0) {
    include 'conecta.inc.php';
    include '../auxiliar/parametros.inc';


    //Cria o update
    $l_updateitemos = "update ositenspro oi set codpro = codpro ";


    if ($p_qtde) {
        $l_updateitemos .= " , qtde = $p_qtde";
    }

    if (($p_usa_embalagem_produtos == 1) && ($p_qtde) ) {
        $l_updateitemos .= " , qtdeemb = $p_qtde";
    }
    
    if(!is_null($obsItem)) {
    
        $l_updateitemos .= " , obs = '$obsItem' ";
    }



    //joga desconto alterando o valor unitario
    if ($p_desc) {
        if ($p_aplicdescpreco) {
            $p_unitario = (($p_unitario) - round(($p_unitario * $p_desc / 100), 3) );

            if (!$p_numitem) {
                //calcula no sql o valor unitario de todos os produtos da venda aplicando o desconto
                $p_unitario = "(SELECT VALORFINAL FROM TRUNCA( (select oi2.unitario from ositenspro oi2
                               where oi2.codos = oi.codos and oi2.numitem  = oi.numitem ),3)) -
                                (SELECT VALORFINAL FROM TRUNCA(  ((select oi2.unitario from ositenspro oi2
                               where oi2.codos = oi.codos and oi2.numitem  = oi.numitem ) * $p_desc/100),3))";
            }
            $l_updateitemos .= " , desconto = 0  ";
        } else {
            if (!$p_numitem) {
                $p_unitario = "(SELECT VALORFINAL FROM TRUNCA( (select oi2.unitario from ositenspro oi2
                           where oi2.codos = oi.codos and oi2.numitem  = oi.numitem ),3))";
            } else {
                BuscaItensDadosAdic($p_codos, $p_numitem, $p_unitario);
            }
            if($tipoDesconto == "absoluto") {
                $l_updateitemos .= " , desconto = $p_desc";
           } else {
                $l_updateitemos .= " , desconto = ($p_desc * ($p_unitario)/100) ";
           }
           
        }
    }

    $l_updateitemos .= " , unitario = $p_unitario ";
    
    
    if( ( $codpro <> 0 ) && ( habilitaDescontoPorQuantidade() )) {
        $codprodtabela = TrazValorCampo('os', 'npreco', 'codos', $p_codos);
        $precosPorQtd = array();
        $precosPorQtd = getPrecosPorQuantidade( $codpro , $codprodtabela, $p_qtde);
        $precoBase = $precosPorQtd[0]["valor"]; 
       // echo $precoBase; die;
        if (floatval($precoBase) > 0) {
            $l_updateitemos .= " , precobase = $precoBase ";
        }
    }
    

    if($tipoDesconto == "absoluto") {
        $l_updateitemos .= ", descontopct = (100*$p_desc) / ($p_unitario)";
   } else {
       $l_updateitemos .= ", descontopct = $p_desc";
    }
    
    $l_updateitemos .= " where codos = $p_codos";

     //var_dump($l_updateitemos);die();

    if ($p_numitem) {
        $l_updateitemos .= " and numitem = $p_numitem ";
    }

    //echo $l_updateitemos; die;//mostra o comando que executou - so para testes
    //exit;
    
    return (exec_sql_simples($con, $l_updateitemos));
}

//Busca Transportadoras

function BuscaTransportadoras($transp) {

    include 'conecta.inc.php';
    include '../idiomas/config.inc';

    //MONTA O SELECT PRA TRAZER OS ITENS
    $l_selecttra = "select codtra, transportadora from transportadora
                    where upper(transportadora) like upper('%$transp%') order by transportadora ";

    //echo $l_selecttra; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selecttra, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            MostraTra($l_a_itens[$i][codtra], $l_a_itens[$i][transportadora]);
        }
        RETURN TRUE;
    } else {
        echo "<div id='msgerro'>$msg_nenhum_registro_encontrado</div>";
        RETURN FALSE;
    }
}

//Busca Transportadoras

function BuscaFormasPagto($forma) {

    include 'conecta.inc.php';
    include '../idiomas/config.inc';


    //MONTA O SELECT PRA TRAZER OS ITENS
    $l_selectforma = "select codforma, descricao from formas
                    where COALESCE(ISMOSTRAAFV,0)=1 AND upper(descricao) like upper('%$forma%') order by descricao";

    // echo $l_selectforma; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectforma, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            Mostraforma($l_a_itens[$i][codforma], $l_a_itens[$i][descricao]);
        }
        RETURN TRUE;
    } else {
        echo "<div id='msgerro'>$msg_nenhum_registro_encontrado</div>";
        RETURN FALSE;
    }
}




function getTiposDeSaida() {
    
    include 'conecta.inc.php';
    

    $l_selectforma = "SELECT codtiposai, tiposaida as descricao FROM tiposaidas where COALESCE(ISMOSTRAAFV,0)=1";

    $a_reg = qry($con, $l_selectforma, $a_campos);
    
    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        return $l_a_itens;
    } else {
        return false;
    }
}

function BuscaTiposDePagamento() {

    include 'conecta.inc.php';
    include '../idiomas/config.inc';


    //MONTA O SELECT PRA TRAZER OS ITENS
    $l_selectforma = "SELECT codtipo, descricao FROM tipospag where COALESCE(ISMOSTRAAFV,0)=1 order by descricao";

    // echo $l_selectforma; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectforma, $a_campos);
    
    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente


        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            mostraTipoDePagamento($l_a_itens[$i][codtipo], $l_a_itens[$i][descricao]);
        }
        RETURN TRUE;
    } else {
        echo "<div id='msgerro'>$msg_nenhum_registro_encontrado</div>";
        RETURN FALSE;
    }
}




/*
 * matriz que traz os produtos da venda - usava isso pra ver se um produto ja foi incluso,
 *  so que eh melhor dar um select e buscar por esse produto. por isso nao uso mais essa fun??o
 */

function MatrizItensOs($p_codos) {

    include 'conecta.inc.php';
    include '../idiomas/config.inc';


    if (!$p_codos) {
        echo "$msg_erro_sem_os";
        exit;
    }

    //MONTA O SELECT PRA TRAZER OS ITENS
    $l_selectitensos = "select p.codpro, numitem , codigo, descricao as descricao,
                cast(coalesce(oi.descontopct,0)as numeric(10,2)) as descontopct,
        cast(coalesce(qtde,0) as numeric(10,0)) as qtde,
        cast(coalesce(oi.unitario,0)as numeric(10,2)) as unitario,
        cast((oi.unitcomdescdiluido * oi.qtde ) as numeric(10,2)) as totalprd,
                coalesce(total,0) as total, oi.desconto from os o
            join ositenspro oi on oi.codos = o.codos
            join produtos p on p.codpro = oi.codpro where o.codos = $p_codos ";


    //echo $l_selectitensos; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectitensos, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens))
    //se tiver resultado do select - quando encontra pelo menos um cliente
        RETURN $l_a_itens;
}

function ItemJaExistente($p_codos, $p_codpro) {
    $l_selectcli = "SELECT codpro from ositenspro where codos = $p_codos and codpro = $p_codpro";
    $a_reg = qry($con, $l_selectcli, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_cli)) {
        return true;
    } else {
        return false;
    }
}

function GeraPrazoEnt($p_codos, $p_datamin = false) {

    include 'conecta.inc.php';
    include_once '../auxiliar/datas.inc';


    $p_datamin = ConverteDtUSABR($p_datamin); //converte a dataminima para o padrao americano
    ///trata nulo, se nao for nulo joga as aspas simples pra gravar no banco
    if (!$p_datamin) {
        $p_datamin = 'null';
    } else {
        $p_datamin = "'" . $p_datamin . "'";
    }


    $comando = "INSERT INTO OSAUXPRAZO (CODOS, STATUS, DATAMIN, REGISTRO) VALUES(
    $p_codos, 1, $p_datamin, current_timestamp)";

    // echo $comando;

    return exec_sql_simples($con, $comando);
}

function BuscaPrazoEnt($p_codos, &$data1, &$valor1, &$data2, &$valor2, &$data3, &$valor3) {

    include 'conecta.inc.php';
    include_once '../auxiliar/datas.inc';
    include '../idiomas/config.inc';

    if (!$p_codos) {
        echo "$msg_erro_sem_os";
        exit;
    }

    //MONTA O SELECT
    $l_select = "select cast(data1 as date) as data1, cast(data2 as date) as data2,
          cast(data3 as date) as data3, cast(valor1 as numeric(10,2)) as valor1,
          cast(valor2 as numeric(10,2)) as valor2, cast(valor3 as numeric(10,2)) as valor3
          from OSAUXPRAZO where codos = $p_codos  and status = 3 order by registro desc rows 1 to 1";



    //echo $l_select; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {

            $data1 = ConverteDtUSABR($l_a_itens[$i][data1]);
            $data2 = ConverteDtUSABR($l_a_itens[$i][data2]);
            $data3 = ConverteDtUSABR($l_a_itens[$i][data3]);
            $valor1 = $l_a_itens[$i][valor1];
            $valor2 = $l_a_itens[$i][valor2];
            $valor3 = $l_a_itens[$i][valor3];
        }
        RETURN TRUE;
    }
}

function JaRegistrou($p_codos) {

    include 'conecta.inc.php';
    include '../idiomas/config.inc';

    if (!$p_codos) {
        echo "$msg_erro_sem_os";
        exit;
    }

    //MONTA O SELECT
    $l_select = "select codos from OSAUXPRAZO where codos = $p_codos
                order by registro desc rows 1 to 1";



    //echo $l_select; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {

            $os = $l_a_itens[$i][codos];
        }
        if ($os) {
            RETURN TRUE;
        } else {
            RETURN false;
        }
    }
}

function GetStatusOsAuxPrazo($p_codos) {
    include 'conecta.inc.php';
    include '../auxiliar/parametros.inc';
    include '../idiomas/config.inc';
    //crio uma nova conexao pra poder fecha-la depois
    //pra pegar sempre os dados atualizados
    //$banco = 'localhost:C:\wamp\www\PALM\bd\TESTEDINAMICO.gd';


    $con = ibase_connect($banco, $usuario, $senha, '');




    if (!$p_codos) {
        echo "$msg_erro_sem_os";
        exit;
    }

    //MONTA O SELECT
    $l_select = "select status from OSAUXPRAZO where codos = $p_codos
               order by status asc, registro desc ";



    //echo $l_select; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            $status = $l_a_itens[$i][status];
        }
        ibase_close($con); //fecha a conexao
        return $status;
    }
}

//para tirar as os e inclui-la depois... - pra garantir que estar? atualizado
function DeletaOsAuxPrazo($p_codos) {
    include 'conecta.inc.php';
    include '../idiomas/config.inc';

    $comando = "DELETE FROM OSAUXPRAZO WHERE CODOS = $p_codos";

    // echo $comando;

    return exec_sql_simples($con, $comando);
}

function MostraDetalhePrazos($p_codos) {

    include 'conecta.inc.php';
    include '../auxiliar/datas.inc';
    include '../idiomas/config.inc';

    if (!$p_codos) {
        echo "$msg_erro_sem_os";
        exit;
    }

    //MONTA O SELECT
    $l_select = "select p.codigo,p.descricao, cast(oi.qtde as numeric(10,0)) as qtde ,
                    cast(oi.prazoent as date) as prazoent
                    from ositenspro oi
                    join produtos p on p.codpro = oi.codpro
                    where oi.codos = $p_codos
                    order by oi.prazoent";



    //echo $l_select; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente
        echo " $coluna_codigo_descricao_qtde <br />  ";
        $p_prazoant = '';
        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            $p_codigo = $l_a_itens[$i][codigo];
            $p_descricao = $l_a_itens[$i][descricao];
            $p_qtde = $l_a_itens[$i][qtde];
            $p_prazoent = $l_a_itens[$i][prazoent];

            $p_prazoent = ConverteDtUSABR($p_prazoent); //converte a data

            if ($p_prazoant == $p_prazoent) {
                echo "<br />$p_codigo | $p_descricao  | $p_qtde ";
            } else {
                echo "<br /><br />$coluna_prazo_de_entrega $p_prazoent <hr />";
                echo "$p_codigo | $p_descricao  | $p_qtde ";
                $p_prazoant = $p_prazoent;
            }
        }
    }
}

function FaturamentoMinEntrega() {
    include '../auxiliar/parametros.inc';
     include 'conecta.inc.php';

    $con = ibase_connect($banco, $usuario, $senha, '');

    $l_select = "select FATURAMENTOMIN from CONFIGOS ROWS 1 TO 1 ";
    //echo $l_select; die;
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        $faturamentomin = $l_a_itens[0][faturamentomin];
        ibase_close($con); //fecha a conexao
        return $faturamentomin;
    }
}

function AbreVenda($p_codos) {
    include 'conecta.inc.php';
    include '../auxiliar/datas.inc';
    include '../idiomas/config.inc';

    if (!$p_codos) {
        echo "$msg_erro_sem_os";
        exit;
    }

    //MONTA O SELECT
    $l_select = "select c.codcli, c.razao, o.preventrega,
            o.codtra, o.codforma , f.descricao, t.transportadora, cast(substring(o.obs from 1 for 255) as varchar(255)) as obs, 
            cast(substring(o.obs2 from 1 for 255) as varchar(255)) as obs2
            from os o
            join clientes c on c.codcli = o.codcli
            left join transportadora t on t.codtra = o.codtra
            left join formas f on f.codforma = o.codforma
            where o.codos = $p_codos";


    //echo $l_select;die; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {

        $p_codcli = $l_a_itens[0][codcli];
        $p_razao = $l_a_itens[0][razao];
        $p_dtentrega = ConverteDtUSABR($l_a_itens[0][preventrega]);
        $p_codforma = $l_a_itens[0][codforma];
        $p_obs = $l_a_itens[0][obs];
        $p_obs2 = $l_a_itens[0][obs2];
        $p_forma = $l_a_itens[0][descricao];
        $p_codtra = $l_a_itens[0][codtra];
        $p_transportadora = $l_a_itens[0][transportadora];

        setcookie("codcli", $p_codcli, 0, '/');
        setcookie("razao", $p_razao, 0, '/');
        setcookie("dtentrega", $p_dtentrega, 0, '/');
        setcookie("obs", $p_obs, 0, '/');
        setcookie("obs_interno", $p_obs2, 0, '/');
        setcookie("forma", $p_forma, 0, '/');
        setcookie("codforma", $p_codforma, 0, '/');
        setcookie("transp", $p_transportadora, 0, '/');
        setcookie("codtra", $p_codtra, 0, '/');



        return setcookie("codos", $p_codos, 0, '/');
    }
}

function BuscaVendasEditaveis($p_codcli) {
    include 'conecta.inc.php';
    include '../auxiliar/parametros.inc';
    include '../auxiliar/datas.inc';
    include '../bd/bd_senhas.inc';
    include '../idiomas/config.inc';

    if ($abrevendacancelada == 1) {
        $tipo = "((o.tipo = 2 OR o.tipo = 1) or (o.tipo = 4))";
    } else {
        $tipo = "(o.tipo = 2 OR o.tipo = 1)";
    }

    
    
    $p_codvnd = GetCodVnd();
    //MONTA O SELECT PRA TRAZER OS ITENS
    $l_selectforma = "select o.codos, o.os, COALESCE(o.totServ, 0) + COALESCE(o.totprod, 0) as total, o.dataos,
                    o.tipo
                    from os o left join status st on st.codstatus = o.codstatus
                    where o.codcli = $p_codcli and o.codstatus = $p_codstatus
                    and o.codvnd = $p_codvnd and $tipo
                    order by o.dataos desc ";

    // echo $l_selectforma; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectforma, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            MostraVendasEditaveis(ConverteDtUSABR($l_a_itens[$i][dataos]),
                    $l_a_itens[$i][os], "R$ " . number_format($l_a_itens[$i][total], '2', ',', '.'),
                    $l_a_itens[$i][codos], $l_a_itens[$i][tipo]);
        }

        RETURN TRUE;
    } else {
        echo"<div class='callout callout-warning'>
                <h4>$msg_atencao</h4>

                <p>$msg_nenhuma_venda_encontrada</p>
              </div>";
        echo "<div id='msgerro'>.</div>";
        RETURN FALSE;
    }

}

function GetQtdeParcelas() {
    include '../auxiliar/parametros.inc';
     include 'conecta.inc.php';
    $codos = $_COOKIE['codos'];
    $con = ibase_connect($banco, $usuario, $senha, '');

    $l_select = "select f.quant from os o
                     join formas f on f.codforma = o.codforma where o.codos = $codos ";

    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        $quant = $l_a_itens[0][quant];
        ibase_close($con); //fecha a conexao
        return $quant;
    }
}

function AlteraStatusOs($p_codos) {

    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    // include "../bd/funcoes.inc";

    $p_codusu = lecookie("codusu");

    // CRIA O update
    $l_updateos = "update OS set codstatus = $p_codstatusfin where codos = $p_codos";

    $l_logstatus = "insert into osstatuslog (codos,codusu,codstatusnew,
            codstatusold, data,obs ) values ($p_codos, $p_codusu,
    $p_codstatusfin,$p_codstatus,current_timestamp, 'ALTERA??O VIA WEB') ";

    //echo $l_updateos; //mostra o comando que executou - so para testes
    //exit;
    exec_sql_simples($con, $l_logstatus);
    return (exec_sql_simples($con, $l_updateos));
}

//busca as vendas que foram digitadas pelo usuario que logou no sistema
function BuscaVendasEmDigitacao($p_codusu) {
    include 'conecta.inc.php';
    include '../auxiliar/parametros.inc';
    include '../auxiliar/datas.inc';
    include '../idiomas/config.inc';

    //MONTA O SELECT PRA TRAZER OS ITENS
    $l_selectforma = "select o.codos, o.os, o.total , o.dataos
                    from os o
                    where o.codusucria = $p_codusu and o.codstatus = $p_codstatus
                    and (o.tipo = 2 OR o.tipo = 1)
                    order by o.dataos desc  ";

    //echo $l_selectforma; //mostra o select - so para testes
    //MONTA MATRIZ QUE VAI TRAZER OS CLIENTES
    //cria id do select
    $a_reg = qry($con, $l_selectforma, $a_campos);


    include '../html/linkprincipal.php';
    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        //se tiver resultado do select - quando encontra pelo menos um cliente

        echo "<p class='titulopag'>$coluna_alterar_status</p>";
        echo "<p><br />$coluna_data_numVenda_total </p><BR /> <HR />";
        for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
            MostraVendasStatus(ConverteDtUSABR($l_a_itens[$i][dataos]),
                    $l_a_itens[$i][os], "R$ " . $l_a_itens[$i][total],
                    $l_a_itens[$i][codos], $l_a_itens[$i][tipo]);
        }

        RETURN TRUE;
    } else {
        echo "<div id='msgerro'>$msg_nenhuma_venda_encontrada</div>";
        RETURN FALSE;
    }

}

function retornaEstoque($codpro){
    include_once '../bd/conecta.inc.php';
    include '../auxiliar/parametros.inc';
    include_once '../bd/bd_senhas.inc';

    if ($p_habilita_estoque_na_busca == 1){
        $codvnd = GetCodVnd();
        $select = "select p.codpro,p.codigo, e.qtdeestoque, l.loja from produtos p
                   join estoque e on p.codpro = e.codpro
                   join lojas l on e.codloja = l.codloja
                   where p.codpro = $codpro";
        
    
        $a_reg = qry($con, $select, $a_campos);

        if (cria_matriz_campos($a_reg, $a_campos, $l_a_cli)) {
                return $l_a_cli;
        }
    }            
}

/* INICIO DA BUSCA DO HISTORICO DO VENDEDOR */


function getProductSaleHistoryByClient($codpro, $codcli, $dataInicial, $dataFinal, $codloja) {
    
    include_once '../bd/conecta.inc.php';
    include '../auxiliar/parametros.inc';
    include_once '../bd/bd_senhas.inc';

    $conditionLoja = "AND o.codloja = $codloja";
    if($p_historico_de_vendas_todas_lojas == 1) {
        $conditionLoja = '';
    
    }
    
    $codvnd = GetCodVnd();


    $select = "
            SELECT distinct
                o.codos,
                os,
                (Extract (day from o.dataos) || '/' || extract(month from o.dataos) || '/' || Extract (year from o.dataos)) dataos,
                oi.unitcomdesc,
                oi.unitario,
                oi.qtde,
                oi.totalcomdesc,
                oi.descontopct,
                l.loja


            FROM  os O
            JOIN ositenspro oi  ON Oi.CodOs = O.CodOs
            JOIN clientes c ON c.codcli = o.codcli
            JOIN lojas l ON o.codloja = l.codloja
            

            WHERE  (O.Tipo = 2 OR O.tipo = 1)
            AND (o.codvnd = $codvnd)
            AND o.codcli = $codcli
            AND oi.codpro = $codpro
            AND (o.dataos BETWEEN '$dataInicial' AND '$dataFinal')
            $conditionLoja

            GROUP BY o.codos,os , o.dataos, oi.unitario, oi.qtde, oi.unitcomdesc, oi.totalcomdesc, oi.descontopct,l.loja

            ORDER BY o.os DESC
            rows 1 to 10
            ";
     
//7899670600107	
        $a_reg = qry($con, $select, $a_campos);

        if (cria_matriz_campos($a_reg, $a_campos, $l_a_cli)) {
            return $l_a_cli;
        }
}




function BuscaHistVenda($p_codcli=false, $p_dtini=false, $p_dtfin=false, $p_loja=null, $p_tipoData='dataos', $tipoDeSaida = false, $p_statusVenda = 'todos', $p_tipoVenda = "2") {

    include '../bd/conecta.inc.php';
    include '../auxiliar/parametros.inc';
    include_once '../auxiliar/datas.inc';
    include '../bd/bd_senhas.inc';
    include '../idiomas/config.inc';

    if(!$tipoDeSaida)
        $tipoDeSaida = $p_codtiposai_padrao;

    if ($p_codcli) {
        $where = " and (o.codcli = $p_codcli) ";
    }

   
    if (($p_dtini) || ($p_dtfin)) {
        if ($p_dtini) {
            $p_dtini = ConverteDtUSABR($p_dtini);
        } else {
            $p_dtini = '01/01/1000';
        }

        if ($p_dtfin) {
            $p_dtfin = ConverteDtUSABR($p_dtfin);
        } else {
            $p_dtfin = '01/01/5000';
        }

        if($p_tipoData == 'dataosfin') {
            $where .= " and (o.dataosfin between '$p_dtini' and '$p_dtfin') ";
        } else {
            $where .= " AND (o.dataos between '$p_dtini' and '$p_dtfin')";
        }

    }

    if($p_loja) {

        $where .= " AND o.codloja = $p_loja";
    }

    $p_codusu = lecookie("codusu");
    if(isGerente($p_codusu)) {
        if ($p_buscaHistAssociaVndCadCli == 1){
            $condicaoCodVnd = " and (  ( o.codvnd in (select CODVND from senhas Where codgerente = $p_codusu)  or (c.codvnd in (select CODVND from senhas Where codgerente = $p_codusu) )  ) ) ";
        }else {
            $condicaoCodVnd = " and (o.codvnd in (select CODVND from senhas Where codgerente = $p_codusu) ) ";
        }
    } else {
        $p_codvnd = GetCodVnd();
        if ($p_buscaHistAssociaVndCadCli == 1){
            $condicaoCodVnd = " and ( (o.codvnd = $p_codvnd) or (c.codvnd = $p_codvnd) ) ";
        }else{
            $condicaoCodVnd = " and (o.codvnd = $p_codvnd) ";
        }
        
    }

    $condicaoCodStatus = "";
    if ($p_statusVenda == 'aberta') {
        $condicaoCodStatus = " AND o.codstatus = $p_codstatus";
    } else if ($p_statusVenda == 'finalizada') {
        $condicaoCodStatus = " AND o.codstatus = $p_codstatusfin";
    }

    $condicaoTipoVenda = " (O.Tipo = 2) ";
    if ($p_tipoVenda == 'todas') {
        $condicaoTipoVenda = " (O.Tipo in (1, 2) ) ";
    } else if ($p_tipoVenda == '1') {
        $condicaoTipoVenda = " (O.Tipo = 1) ";
    }
    
    $select = "
    SELECT distinct 
    cast(substring(o.obs from 1 for 500) as varchar(500)) as obs,
    o.codos,
    o.os ,
    o.tipo,
    c.razao,
    (Extract (day from o.dataos) || '/' || extract(month from o.dataos) || '/' || Extract (year from o.dataos)) dataos,
    (Extract (day from o.dataosfin) || '/' || extract(month from o.dataosfin) || '/' || Extract (year from o.dataosfin)) dataosfin,
    o.codstatus,
    coalesce(s.descricao,'') status,
    cast(o.total as numeric(10,2)) total,
    f.descricao as formapagto,
    tr.transportadora   as transp,
    c.end_ent,
    c.cidade_ent, 
    c.bairro_ent, 
    c.uf_ent, 
    c.cep_ent,
    NF.numnota,
    NF.chavenfe,
    NF.codnf,
    l.loja,
    coalesce(o.AFV_VNDBLQ,0) as afv_vndblq

             FROM  os O
             join clientes c on c.codcli = o.codcli
             left join ositenspro oi  ON Oi.CodOs = O.CodOs
             left join ositensser ois  ON ois.CodOs = O.CodOs
             left join status s on s.codstatus = o.codstatus
             left join formas f on f.codforma = o.codforma
             left join transportadora tr on tr.codtra = o.codtra
             left join notafiscal nf on nf.codos = o.codos
             join lojas l on l.codloja = o.codloja

             Where  $condicaoTipoVenda $condicaoCodVnd $condicaoCodStatus AND ((coalesce(oi.codos,0) <> 0) OR (coalesce(ois.codos,0) <> 0)) and coalesce(nf.anulada,0)= 0 and coalesce(nf.cancelada,0)= 0 AND o.codtiposai = $tipoDeSaida  $where
             group by o.obs, o.codos,os, o.tipo, c.razao,o.dataos, o.dataosfin, o.codstatus,s.descricao, o.total, f.descricao, transp,
             c.end_ent, c.cidade_ent, c.bairro_ent, c.uf_ent, c.cep_ent, nf.numnota, nf.chavenfe, NF.codnf, l.loja,o.AFV_VNDBLQ 
              
              order by o.dataos, o.os";

    $a_reg = qry($con, $select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_cli)) {
        
        for ($i = 0; $i <= (sizeof($l_a_cli) - 1); $i++) 
        {
            $total_vendas = $total_vendas + $l_a_cli[$i][total];
        }
    

    echo("<b><h4>$msg_total_de_vendas </b> &nbsp; " . number_format($total_vendas, 2, ',', '.') ." </h4><p>");
    $colunaEnvioEmail = "<th>$msg_envio_por_email</th>";

    if($ss_esconde_botao_email == 1)
        $colunaEnvioEmail = '';

    $colunaDANFE = '';
    if($p_habilita_emissao_de_nota == 1)
        $colunaDANFE = "<th>$DANFE</th><th>$coluna_xml_da_Nota</th>";

    

//echo  $select;
   echo("<div class='box-body table-responsive no-padding'>"); 
   echo('<table id="example2" class="table table-bordered table-hover">');
   echo('<thead>');
   echo("<tr>
            <th>$coluna_hist_loja</th>
            <th>$coluna_hist_pedido</th>
            <th>$coluna_hist_tipo</th>
            <th>$coluna_hist_data</th>
            <th>$coluna_hist_datafin</th>
            <th>$coluna_hist_status</th>
            <th>$coluna_hist_total</th>
            <th>$coluna_hist_cliente</th>
            $colunaEnvioEmail
            <th>$coluna_hist_nota_fiscal</th>
            <th>$coluna_hist_prazo_de_pagto</th>
            <th>$coluna_hist_transp</th>
            <th>$coluna_hist_obs</th>
            <th><img src='../layout/print.png' alt='Imprimir' /></th>
            $colunaDANFE
        </tr>");
   echo("</thead>");
   
        
        for ($i = 0; $i <= (sizeof($l_a_cli) - 1); $i++) {
            $obs = $l_a_cli[$i][obs];
            $codos = $l_a_cli[$i][codos];
            $os = $l_a_cli[$i][os];
            $tipo = $l_a_cli[$i][tipo];
            $dataos = $l_a_cli[$i][dataos];
            $dataosfin = $l_a_cli[$i][dataosfin];
            $status = $l_a_cli[$i][status];
            $codstatus = $l_a_cli[$i][codstatus];
            $total = $l_a_cli[$i][total];
            $cliente = $l_a_cli[$i][razao];
            $totsaldo = $l_a_cli[$i][totsaldo];
            $formapagto = $l_a_cli[$i][formapagto];
            $totsaldo = number_format($totsaldo, 2, ',', '.');
            $total = number_format($total, 2, ',', '.');
            $transp = $l_a_cli[$i][transp];
            $end_ent = $l_a_cli[$i][end_ent];
            $cidade_ent = $l_a_cli[$i][cidade_ent];
            $bairro_ent = $l_a_cli[$i][bairro_ent];
            $uf_ent = $l_a_cli[$i][uf_ent];
            $cep_ent = $l_a_cli[$i][cep_ent];
            $numnota = $l_a_cli[$i][numnota];
            $chaveNF = $l_a_cli[$i][chavenfe];
            $codNF = $l_a_cli[$i][codnf];
            $loja = $l_a_cli[$i][loja];
            $afv_vndblq = $l_a_cli[$i][afv_vndblq];

            $colunaEnvioEmailTD = "<td><a href='../pdf/impresso.php?codos=$codos&visualiza=0' target=_blank>$msg_envio_por_email</a></td>";

            if($ss_esconde_botao_email == 1)
                $colunaEnvioEmailTD = '';
           
                
            $colunaDANFETD = '';
            if($p_habilita_emissao_de_nota == 1) {
                if($chaveNF && $chaveNF != "") {
                    $colunaDANFETD = "
                            <td>
                                <a href='../php/download_danfe.php?chave=$chaveNF' target='_blank' class='btn btn-primary'>
                                    <i class='fa fa-file-text'></i>
                                </a>
                            </td>
                            <td>
                                <button title='Enviar Xml' target='_blank' class='btn btn-success btn-send-xml' value='$chaveNF' data-toggle='modal' data-target='#modal-envia-xml'>
                                    <i class='fa fa-whatsapp icon-btn-send-xml' style='font-size:1.3em' ></i>
                                </button>
                            </td>
                        ";
                } else {
                    $colunaDANFETD = "<td></td><td></td>";
                }
            }

            $columnOs = "<td>$os</td>";
            if($codstatus == $p_codstatus){
                $columnOs = "<td><a href='../php/abrevenda.php?codos=$codos'>$os</a></td>";  
            }

            $tipoImpresso = "produto";
            if($p_habilita_servicos == 1)
                $tipoImpresso = "servico";

            echo"<tr>
                    <td>$loja</td>
                    $columnOs
                    <td>" . ( $tipo=="1"? "Orç": "Vnd" ) . "</td>
                    <td>$dataos</td>
                    <td>$dataosfin</td>
                    <td>$status</td>
                    <td>R$$total</td>
                    <td>$cliente</td>
                    $colunaEnvioEmailTD
                    <td>$numnota</td>
                    <td>$formapagto</td>               
                    <td>$transp</td>               
                    <td>$obs</td> 
                    <td><a href='../pdf/impresso.php?codos=$codos&visualiza=1&tipo=$tipoImpresso' target=_blank>$bt_ver_impresso</a></td>
                            $colunaDANFETD
                </tr>";
        }

        echo " </table>";
        echo("</div>"); 
    }

}

function BuscaItens($codos) {

    $select = "
               SELECT

                 codigo,oi.ipi,
                 p.descricao as descricaoitem,
                 cast(coalesce(qtde,0) as integer) as qtde,
                 cast(coalesce(oi.unitario,0)as numeric(10,2)) as unitario,
                 cast(coalesce(precobase,0)as numeric(10,2)) as precobase,
                 cast((oi.unitcomdescdiluido * oi.qtde ) as numeric(10,2)) as totitemsemdesc,
                 cast(coalesce(unitcomdescdiluido,0)as numeric(10,2)) as unitarioipi,
                 cast(coalesce(oi.descontopct,0)as numeric(10,2)) as desconto,

                 (OI.Qtde - (Select coalesce(Sum(qtde),0) From ExpedicaoItens EI Where
                       Ei.CodOs = OI.CodOs and Ei.NumItemOs = Oi.NumItem)) as falta,

                 (Extract (day from OI.prazoent) || '/' || extract(month from OI.prazoent) || '/' ||
                       Extract (year from OI.prazoent)) as prazoent,
    
                 cast(coalesce(oi.UNITCOMDESC,0)as numeric(10,2)) as unitariofinal,
                 cast((coalesce(oi.unitario,0) + ((coalesce(oi.unitario,0) * oi.ipi/100 )) )as numeric(10,2)) as unitcomipi
    


                     FROM
                      OsItensPro OI
                          JOIN Os O ON Oi.CodOs = O.CodOs
                          join tiposaidas t on t.codtiposai = o.codtiposai
                          join produtos p on p.codpro = oi.codpro
                          left join status s on s.codstatus = o.codstatus

                     where o.codos = $codos;
                ";

    $a_reg = qry($con, $select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_cli)) {
        echo "<tr>

                           <td>Codigo</td>
                           <td colspan=5>Produto</td>
                           
                           <td>Qtde</td>
                           <td>Unit&aacute;rio</td>
                           <td>IPI</td>                           
                           <td>Unit Com IPI</td>
                           
                           <td>Desc</td>
                           <td>Unit Final</td>
                           <td>Total</td>
                           
                          
                      </tr>";

        for ($i = 0; $i <= (sizeof($l_a_cli) - 1); $i++) {

            $codigo = $l_a_cli[$i][codigo];
            $descricaoitem = $l_a_cli[$i][descricaoitem];
            $qtde = $l_a_cli[$i][qtde];
            $unitario = $l_a_cli[$i][unitario];
            $totitemsemdesc = $l_a_cli[$i][totitemsemdesc];
            $precobase = $l_a_cli[$i][precobase];
            $falta = $l_a_cli[$i][falta];
            $prazoent = $l_a_cli[$i][prazoent];
            $ipi = $l_a_cli[$i][ipi];
            $saldo = ($falta * $l_a_cli[$i][unitarioipi]);
            $unitcomipi = $l_a_cli[$i][unitcomipi];
            $unitariofinal = $l_a_cli[$i][unitariofinal];
            $desconto = $l_a_cli[$i][desconto];
           

            $saldo = number_format($saldo, 2, ',', '.');
            $unitario = number_format($unitario, 2, ',', '.');
            $unitcomipi = number_format($unitcomipi, 2, ',', '.');
            $unitariofinal = number_format($unitariofinal, 2, ',', '.');
            $precobase = number_format($precobase, 2, ',', '.');
            $totitemsemdesc = number_format($totitemsemdesc, 2, ',', '.');
            $desconto = number_format($desconto, 2, ',', '.');
            echo"<tr>

                              <td>$codigo</td>
                              <td colspan=5>$descricaoitem</td>
                              <td>$qtde</td>
                              <td>R$$unitario</td>
                              <td>$ipi%</td>
                              <td>R$$unitcomipi</td>
                              <td>$desconto%</td>
                              <td>R$$unitariofinal</td>
                              <td>R$$totitemsemdesc</td>
                            
                           </tr>
                     ";
        }
    }
}

function GetNumOs($codos) {
    include '../auxiliar/parametros.inc';
     include 'conecta.inc.php';

    if (!$codos) {
        return false;
    }
    $con = ibase_connect($banco, $usuario, $senha, '');

    $l_select = "select o.os from os o where o.codos = $codos ";
    //echo $l_select ; die;
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        $os = $l_a_itens[0][os];
        ibase_close($con); //fecha a conexao
        return $os;
    }
}

function GetMarkupOs($codos) {
    include '../auxiliar/parametros.inc';
     include 'conecta.inc.php';

    if (!$codos) {
        return false;
    }
    $con = ibase_connect($banco, $usuario, $senha, '');

    $l_select = "SELECT sum(unitcomdesc*qtde) as total,
                sum(custo*qtde) as custototal
                from ositenspro
                WHERE codos = $codos ";
    //echo $l_select ; die;
    $a_reg = qry($con, $l_select, $a_campos);

    if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
        $custo = $l_a_itens[0][custototal];
        $total = $l_a_itens[0][total];
        $lucro = (($total - $custo)/$custo)*100;
        ibase_close($con); //fecha a conexao
        return $lucro;
    }
}



function getInfoMasterImpresso($codos) {
    include '../auxiliar/parametros.inc';
    include_once '../bd/conecta.inc.php';

    $enderecoDeEntrega = "(c.end_ent || ' - ' ||   c.bairro_ent || ' - ' || c.cidade_ent || ' - ' || c.uf_ent || ' - ' || c.cep_ent)";
    if($p_mostra_endereco_transportadora_no_impresso == 1) {

        $enderecoDeEntrega = "(t.endereco || ' - ' ||   t.bairro || ' - ' || t.cidade || ' - ' || t.uf || ' - ' || t.cep)";
    }

    $sql = " select o.os, o.total, c.razao, c.cpcn, c.rgie, c.endereco, c.bairro, c.cidade,
                c.uf, c.cep, c.complemento, c.fone1, c.contato1 ,f.descricao as formapagto, tp.descricao as tipopagto,
                t.transportadora,
                (lpad(Extract (day from o.dataos),2,0) || '/' || lpad(extract(month from o.dataos),2,0) || '/' ||
                       Extract (year from o.dataos)) as dataos,
                v.vendedor,c.email, c.fax,
                $enderecoDeEntrega as enderecoentrega,
                (c.endcob || ' - ' ||   c.bairrocob || ' - ' || c.cidadecob || ' - ' || c.ufcob || ' - ' || c.cepcob) as enderecocobranca
                , o.totvlrsubst,
                l.loja,
                l.codloja,
                (lpad(Extract (day from o.preventrega),2,0) || '/' || lpad(extract(month from o.preventrega),2,0) || '/' ||
                       Extract (year from o.preventrega)) as preventrega

                from os o
                join clientes c on c.codcli = o.codcli
                join vendedores v on v.codvnd = o.codvnd
                left join lojas l on l.codloja = o.codloja
                left join formas f on f.codforma = o.codforma
                left join tipospag tp on tp.codtipo = o.codtipo
                left join transportadora t on t.codtra = o.codtra
                where o.codos = $codos ";

    if (cria_matriz_campos_pelo_sql($sql, $mestre)) {
        return $mestre[0];
    }
}

function getInfoProdImpressoEco($codos){
    include '../auxiliar/parametros.inc';
    include_once '../bd/conecta.inc.php'; 

    $sql = " select
    p.ESTADOFISICO,
    p.CATEGORIADESECHO,
    p.COMPOSICION,
    p.TIPODESTINO,
    p.TIPOTRANSPORTE,
    p.PESOBRUTO,
    oi.QTDE      
 from os o
     join ositenspro oi on oi.codos = o.codos
     join produtos p on p.codpro = oi.codpro
 where o.codos = $codos ";

 if (cria_matriz_campos_pelo_sql($sql, $itens)) {
     return $itens[0];
 }    

}

function getInfoMasterImpressoEco($codos) {
    include '../auxiliar/parametros.inc';
    include_once '../bd/conecta.inc.php';

    $enderecoDeEntrega = "(c.end_ent || ' - ' ||   c.bairro_ent || ' - ' || c.cidade_ent || ' - ' || c.uf_ent || ' - ' || c.cep_ent)";
    if($p_mostra_endereco_transportadora_no_impresso == 1) {

        $enderecoDeEntrega = "(t.endereco || ' - ' ||   t.bairro || ' - ' || t.cidade || ' - ' || t.uf || ' - ' || t.cep)";
    }
  
    $sql = " select o.os, o.total, c.razao, c.cpcn, c.rgie, c.endereco, c.bairro, c.cidade,
                c.uf, c.cep, c.complemento, c.fone1, c.contato1 ,f.descricao as formapagto, tp.descricao as tipopagto,
                t.transportadora,
                (Extract (day from o.dataos) || '/' || extract(month from o.dataos) || '/' ||
                       Extract (year from o.dataos)) as dataos,
                v.vendedor,c.email, c.fax,
                $enderecoDeEntrega as enderecoentrega,
                (c.endcob || ' - ' ||   c.bairrocob || ' - ' || c.cidadecob || ' - ' || c.ufcob || ' - ' || c.cepcob) as enderecocobranca
                , o.totvlrsubst,
                l.loja,
                l.codloja, l.razao as razaoLoja, l.endereco as endLoja, l.bairro as bairroLoja, l.cidade as cidadeLoja, l.cep as cepLoja, o.choper, o.chapadelvehiculo, 
                (Extract (day from o.DATA_ORIGEN) || '/' || extract(month from o.DATA_ORIGEN) || '/' ||
                       Extract (year from o.DATA_ORIGEN)) as DATA_ORIGEN, o.ACLARACION_ORIGEN, o.DOCUMENTO_ORIGEN,  (Extract (day from o.DATA_TRANSPORTISTA) || '/' || extract(month from o.DATA_TRANSPORTISTA) || '/' ||
                       Extract (year from o.DATA_TRANSPORTISTA)) as DATA_TRANSPORTISTA, o.ACLARACION_TRANSPORTISTA, o.DOCUMENTO_TRANSPORTISTA,
                       (Extract (day from o.DATA_RECEPTOR) || '/' || extract(month from o.DATA_RECEPTOR) || '/' ||
                       Extract (year from o.DATA_RECEPTOR)) as DATA_RECEPTOR, o.ACLARACION_RECEPTOR, o.DOCUMENTO_RECEPTOR

                from os o
                join clientes c on c.codcli = o.codcli
                join vendedores v on v.codvnd = o.codvnd
                left join lojas l on l.codloja = o.codloja
                left join formas f on f.codforma = o.codforma
                left join tipospag tp on tp.codtipo = o.codtipo
                left join transportadora t on t.codtra = o.codtra
                where o.codos = $codos ";

    if (cria_matriz_campos_pelo_sql($sql, $mestre)) {
        return $mestre[0];
    }
}



function getInfoFornecedorImpressoEco($codos) {
    include '../auxiliar/parametros.inc';
    include_once '../bd/conecta.inc.php';
    
    $p_codusu = lecookie("codusu");
  
    $sql = " SELECT F.RAZAO, F.ENDERECO, F.BAIRRO, F.CIDADE, F.RGIE FROM FORNECEDORES F
             JOIN SENHAS S ON F.CODFOR = S.CODFOR
             WHERE CODUSU = $p_codusu ";

    if (cria_matriz_campos_pelo_sql($sql, $mestre)) {
        return $mestre[0];
    }
}



function GeraImpressoEco($p_codos){

    include '../auxiliar/parametros.inc';
    include_once '../bd/conecta.inc.php';
    $os = GetNumOs($p_codos);
    $ticket = verificaDadosOsEco($p_codos);

    $html = "<table  border=0 width=100%>
    <br><br><br>
    <tr>
    <td width=500>
        <span>                            </span>
    </td>
    </tr>
    <tr>
    <td width=490 >
        <span>                                                      .</span>
    </td>
    <tr>
    <td align=center width=200>
        <h1 style='text-align: center'>
        <B>              N: " .$os ."</B>
        </h1>
        <h1 style='text-align: center'>
        <td width=538 >
        <span>                                                      .</span>
        </td>
        <td width=350 >
        <span>                                         .</span>
        </td>
        <B>                                             Ticket: " .$ticket["ticketafv"] ."</B>
        </h1>
    </td>
    </tr>";
            
 
    $mestre = getInfoMasterImpressoEco($p_codos);
  
    $itens = getInfoProdImpressoEco($p_codos);
    
    $forn = getInfoFornecedorImpressoEco($p_codos);

    $html .= MostraMestreImpressoEco($mestre[os], $mestre[razao], $mestre[cpcn],$mestre[rgie], 
                                    $mestre[endereco], $mestre[bairro], $mestre[cidade],
                                    $mestre[uf], $mestre[cep], $mestre[complemento], 
                                    $mestre[transportadora],$mestre[dataos], 
                                    $mestre[vendedor], 
                                    $mestre[razaoloja],$mestre[endloja],
                                    $mestre[bairroloja],$mestre[cidadeloja],$mestre[ceploja],$mestre[choper],$mestre[chapadelvehiculo],

                                    $mestre[data_origen],$mestre[aclaracion_origen],$mestre[documento_origen],$mestre[data_transportista],$mestre[aclaracion_transportista],$mestre[documento_transportista],
                                    $mestre[data_receptor],$mestre[aclaracion_receptor],$mestre[documento_receptor],


                                    $itens[estadofisico],$itens[categoriadesecho],$itens[composicion],$itens[tipodestino],$itens[tipotransporte],$itens[pesobruto],$itens[qtde],
                                    $forn[razao],$forn[endereco],$forn[bairro],$forn[cidade],$forn[rgie]
                                );
    
    return $html;
}


function GeraImpresso($p_codos, $mostrarel = true) {

    include '../auxiliar/parametros.inc';
    include_once '../bd/conecta.inc.php';
    include '../idiomas/config.inc';

    $html = "<font size=8  face=Arial color=black><div>
                <BR><BR><BR><BR><BR><BR><BR>
<table  border=0 width=100%>";

    if ($mostrarel) {
        echo $html;
    }
    //Busca Cabe?alho : N? da Venda, Raz?o, CNPJ/CPF, RG/IE, Endere?o Completo, Fone, Contato, Forma de Pagto.

    $mestre = getInfoMasterImpresso($p_codos);
    

    $html .= MostraMestreImpresso($mostrarel, $mestre[os], $mestre[razao], $mestre[cpcn],
                    $mestre[rgie], $mestre[endereco], $mestre[bairro], $mestre[cidade],
                    $mestre[uf], $mestre[cep], $mestre[complemento], $mestre[fone1],
                    $mestre[contato1], $mestre[formapagto], $mestre[tipopagto], $mestre[transportadora],
                    $mestre[dataos], $mestre[vendedor], $mestre[email],
                    $mestre[fax], $mestre[enderecoentrega], $mestre[enderecocobranca], $mestre[totvlrsubst],
                     "(" .$mestre[codloja] . ") " . $mestre[loja], $mestre[preventrega]);
    $formapagto = $mestre[formapagto]; //vai ser usado la em baixo


    //Busca Itens : C?digo Aux., %Desc., $Desc, Qtde, $Total (Unit. Final * Qtde).

    $sql = " select
                p.codigo
                , iif (oi.obs <> '',p.descricao || ' \ ' || CAST(substring(oi.obs from 1 for 250) as varchar(250)),p.descricao) as descricao
                , oi.desconto
                , oi.qtde
                , (oi.unitcomdesc * oi.qtde) as tot
                , oi.unitario
                , cast(oi.unitcomdesc as numeric(10,2)) as unitariofinal
                , cast(((oi.unitario * (oi.ipi/100 + 1) + (oi.vlrsubst / oi.qtde))) as numeric(10,2)) as consumidor
                , oi.ipi
                , (oi.vlrsubst / oi.qtde) as vlrsubst
                , oi.unitcomdesc
                , oi.descontopct
                        
            from os o
                join ositenspro oi on oi.codos = o.codos
                join produtos p on p.codpro = oi.codpro
            where o.codos = $p_codos ";
               

$colunaST = $p_esconde_st_impresso == 1 ? "" : "<td width=65 align=right>$r_coluna_vlr_st</td>";
$widthDescricao = 350;

if($p_esconde_st_impresso == 1)
    $widthDescricao += 65;



$border = $p_impresso_descricao_completa == 1 ? 0 : 1;
$tags = "</table><br /><br /><br />
<table border=$border, width=100% >
<tr>
<td width=30 align=left>$r_coluna_qtde</td>
<td width=75>Cod.</td>
<td width=$widthDescricao>$r_coluna_produto</td>
<td width=70 align=right>$r_coluna_unit</td>
$colunaST
<td width=45 align=right>$r_coluna_desc</td>
<td width=70 align=right>$r_coluna_unit_com_desc</td>
<td width=70 align=center>$r_coluna_total</td>

</tr>";
if($p_impresso_descricao_completa == 1)
    $tags .= "<hr>";

    $html .= $tags;

    if (cria_matriz_campos_pelo_sql($sql, $itens)) {
        for ($i = 0; $i <= (sizeof($itens) - 1); $i++) {
            $html .= MostraItensImpresso($mostrarel, $itens[$i][codigo], $itens[$i][descricao],
                            $itens[$i][descvenda], $itens[$i][qtde], $itens[$i][tot],
                            $itens[$i][unitario], $itens[$i][consumidor], $itens[$i][ipi], $itens[$i][vlrsubst], $itens[$i][unitariofinal], $itens[$i][descontopct]);
        }
    }


    $tags = "</table>";
    if ($mostrarel) {
        echo $tags;
    }
    $html .= $tags;


    //Busca Totais: Qtde, IPI, Total

    BuscaTotOS($p_codos, $p_totalos, $p_desc, $p_ipi, $p_qtdefaltasubst, $p_totalbruto, $p_totalicmssubst, $p_descpct, $p_descvlr);

    $tags = "<br />
<table border=0 width=80% >
<tr>
<td width=130 align=right>$r_coluna_subTotal " . number_format($p_totalbruto, 2, ',', '.') . "</td>
</tr>";

if($p_esconde_st_impresso !== 1) { 
    $tags .= "
<table border=0 width=80% >
<tr>
<td width=130 align=right>$r_coluna_total_da_st " . number_format($p_totalicmssubst, 2, ',', '.') . "</td>
</tr>";
}

$blobId = TrazValorCampo("os", "obs", "codos", $p_codos);
$blob = ibase_blob_open($blobId);
$obs = ibase_blob_get($blob,255);

$tags .= "
<tr>
<td width=130 align=right><b>$r_coluna_total_final " . number_format($p_totalos, 2, ',', '.') . "</b></td>
</tr>
</table>
<BR>

<table>
<tr>
<td width=790> $r_coluna_obs " . nl2br($obs) . " </td>
</tr>

</table>
";




    if ($mostrarel) {
        $tags .= "
<br><br><br><br><br>
<br><BR><BR><a href='javaScript:history.go(-1)'>
<img src='../layout/voltar.jpg' alt='Voltar' width='38' height='27' /></a>
";
    }
    $tags .= "
</div></font>"; // class='impresso' - div geral para manipular todo o relatorio

    if ($mostrarel) {
        echo $tags;
    }
    $html .= $tags;

    return $html;
}



function GeraImpresso58x35($p_codos) {

    include '../auxiliar/parametros.inc';
    include '../auxiliar/datas.inc';
    include_once '../bd/conecta.inc.php';
    include '../idiomas/config.inc';

    $height = 120;
    $heightCabecalho = 90;
    $widthCabecalho = 315;
    $mestre = getInfoMasterImpresso($p_codos);
    extract($mestre);
    
    $html = "<br><hr><table border=0 width=100%>
<tr>
<td width=$widthCabecalho height=10></td>
<td width=$widthCabecalho height=10></td>
</tr>
<tr>
<td width=$widthCabecalho height=$heightCabecalho><b>$r_58x35_coluna_numero_da_venda</b></td>
<td width=$widthCabecalho height=$heightCabecalho >" . $mestre['os'] . "</td>
</tr>
<tr>
<td width=$widthCabecalho height=$heightCabecalho><b>$r_58x35_coluna_data</b></td>
<td width=$widthCabecalho height=$heightCabecalho>" . IncDiasData($mestre['dataos'], 0) . "</td>
</tr>
<tr>
<td width=$widthCabecalho height=$heightCabecalho><b>$r_58x35_coluna_cliente</b></td>
<td width=$widthCabecalho height=$heightCabecalho>" . $mestre['razao'] . "</td>
</tr>
<tr>
<td width=$widthCabecalho height=$heightCabecalho><b>$r_58x35_coluna_vendedor</b></td>
<td width=$widthCabecalho height=$heightCabecalho>" . $mestre['vendedor'] . "</td>
</tr>
<tr>
<td width=$widthCabecalho height=$heightCabecalho><b>$r_58x35_coluna_prazo_de_pagto</b></td>
<td width=$widthCabecalho height=$heightCabecalho>" . $mestre['formapagto'] . "</td>
</tr>
<tr>
<td width=$widthCabecalho height=$heightCabecalho><b>$r_58x35_coluna_tipo_de_pagto</b></td>
<td width=$widthCabecalho height=$heightCabecalho>" . $mestre['tipopagto'] . "</td>
</tr>
</table>
<hr>
<br><br>
";


    $sql = " select
                p.codigo
                , iif (oi.obs <> '',p.descricao || ' \ ' || CAST(substring(oi.obs from 1 for 250) as varchar(250)),p.descricao) as descricao
                , oi.desconto
                , oi.qtde
                , (oi.unitcomdesc * oi.qtde) as tot
                , oi.unitario
                , cast(oi.unitcomdesc as numeric(10,2)) as unitariofinal
                , cast(((oi.unitario * (oi.ipi/100 + 1) + (oi.vlrsubst / oi.qtde))) as numeric(10,2)) as consumidor
                , oi.ipi
                , (oi.vlrsubst / oi.qtde) as vlrsubst
                , oi.unitcomdesc
                , oi.descontopct
                        
            from os o
                join ositenspro oi on oi.codos = o.codos
                join produtos p on p.codpro = oi.codpro
            where o.codos = $p_codos ";
               

            
$html .= "
<table border=1 width=100%>
<tr>
<td width=100 height=$height align=left>$r_58x35_coluna_qtde</td>
<td width=415 height=$height>$r_58x35_coluna_produto</td>
<td width=160 height=$height align=right>$r_58x35_coluna_unit</td>
<td width=160 height=$height align=center>$r_58x35_coluna_total</td>

</tr>";

    if (cria_matriz_campos_pelo_sql($sql, $itens)) {
        foreach ($itens as $item) {
            extract($item);
            
            $maxLength = 19;
            $decriptionLength = strlen($descricao);
            $descricaoPartes = array();

            if($decriptionLength > $maxLength)
                $descricao = substr($descricao, 0, $maxLength);
            $html .= "<tr>
<td width=100 height=$height align=center>" . number_format($qtde, 2, ',', '.') . "</td>
<td width=415 height=$height>$descricao</td>
<td width=160 align=right height=$height>R$ " . number_format($unitcomdesc, 2, ',', '.') . "</td>
<td width=160 align=right height=$height>R$ " . number_format($tot, 2, ',', '.') . "</td>
</tr>
";

        }
    }

    $html .= "</table>";

    $blobId = TrazValorCampo("os", "obs", "codos", $p_codos);
    $blob = ibase_blob_open($blobId);
    $obs = ibase_blob_get($blob,255);

$html .= "
<br>
<br>
<br>
<br>
<table border=0 width=100%>
<tr>
<td width=85>&nbsp;</td>
<td width=80>&nbsp;</td>
<td width=300>&nbsp;</td>
<td width=370 font=32px align=right>$r_58x35_coluna_total_final " . number_format($mestre['total'], 2, ',', '.') . "</td>
</tr>
</table>
<br>
<br>
<table >
<tr>
<td width=790> $r_58x35_coluna_obs " . nl2br($obs) . " </td>
</tr>
</table>
";


    return $html;
}




function GeraImpressoViaInternaModeloPadrao($p_codos) {

    include_once '../auxiliar/parametros.inc';
    include '../idiomas/config.inc';

    $html = "<font size=8  face=Arial color=black><div>
<table  border=0 width=100%>";


    $sql = " select o.os, c.razao, c.cpcn, c.rgie, c.endereco, c.bairro, c.cidade,
                c.uf, c.cep, c.complemento, c.fone1, c.contato1 ,f.descricao as formapagto,
                t.transportadora,
                (Extract (day from o.dataos) || '/' || extract(month from o.dataos) || '/' ||
                       Extract (year from o.dataos)) as dataos,
                v.vendedor,c.email, c.fax,
                (c.end_ent || ' - ' ||   c.bairro_ent || ' - ' || c.cidade_ent || ' - ' || c.uf_ent || ' - ' || c.cep_ent) as enderecoentrega,
                (c.endcob || ' - ' ||   c.bairrocob || ' - ' || c.cidadecob || ' - ' || c.ufcob || ' - ' || c.cepcob) as enderecocobranca
                , o.totvlrsubst

                from os o
                join clientes c on c.codcli = o.codcli
                left join formas f on f.codforma = o.codforma
                left join transportadora t on t.codtra = o.codtra
                join vendedores v on v.codvnd = o.codvnd
                where o.codos = $p_codos ";

    if (cria_matriz_campos_pelo_sql($sql, $mestre)) {
        $html .= MostraMestreImpressoInternoPadrao($mestre[0][os], $mestre[0][razao], $mestre[0][dataos]);
        $formapagto = $mestre[0][formapagto]; //vai ser usado la em baixo
    }


    //Busca Itens : C?digo Aux., %Desc., $Desc, Qtde, $Total (Unit. Final * Qtde).

    $sql = " select
                p.codigo
                , iif (oi.obs <> '',p.descricao || ' \ ' || CAST(substring(oi.obs from 1 for 250) as varchar(250)),p.descricao) as descricao
                , oi.qtde
                        
            from os o
                join ositenspro oi on oi.codos = o.codos
                join produtos p on p.codpro = oi.codpro
            where o.codos = $p_codos ";
               


$tags = "</table><br /><br /><br />
<table border=1 width=100% >
<tr>
<td width=35 align=left>$r_interno_coluna_qtde</td>
<td width=75>$r_interno_coluna_cod</td>
<td width=665>$r_interno_coluna_produto</td>
</tr>";

    $html .= $tags;

    if (cria_matriz_campos_pelo_sql($sql, $itens)) {
        for ($i = 0; $i <= (sizeof($itens) - 1); $i++) {
            $html .= MostraItensImpressoInternoPadrao($itens[$i][codigo], $itens[$i][descricao], $itens[$i][qtde]);
        }
    }


    $tags = "</table>";
    
    $html .= $tags;


    $html .= 
    "<br><br><table>
<tr>
<td width=790> $r_interno_coluna_obs " . TrazValorCampo("os", "cast(substring(obs2 from 1 for 255) as varchar(255))", "codos", $p_codos) . " </td>
</tr>

</table>";


    $tags .= "
</div></font>"; // class='impresso' - div geral para manipular todo o relatorio

    $html .= $tags;

    return $html;
}































//se precisar voltar, só voltar a utilizar a outra funcao
function MostraMestreImpressoInternoPadrao($p_os, $p_razao, $p_data) {
    include '../idiomas/config.inc';

    $tags = "<tr>
<td width=300>$r_interno_coluna_venda $p_os </td>
<td width=300>$r_interno_coluna_cliente $p_razao</td>
<td width=100>$r_interno_coluna_data $p_data</td>
</tr>
";
    return $tags;
}

function MostraMestreImpresso($mostrarel, $p_os, $p_razao, $p_cpcn, $p_rgie,
        $p_endereco, $p_bairro, $p_cidade, $p_uf, $p_cep, $p_complemento,
        $p_fone1, $p_contato1, $p_formapagto, $tipoPagamento, $p_transportadora, $p_data,
        $p_vendedor, $p_email, $p_fax, $p_enderecoEntrega, $tipoerecoCobranca, $p_totvlrsubst, $loja, $p_dtPrevEnt) {

include '../idiomas/config.inc';

$qtdeStr = strlen($p_enderecoEntrega);
$str = '';

if ($qtdeStr >= 94){
    $str = substr($p_enderecoEntrega, 94);
    $p_enderecoEntrega = str_replace($str, "", $p_enderecoEntrega);
}
if ($p_mostra_dt_preventrega_no_impresso == 1) {
    $prevEntrega = "<td width=150>$r_coluna_data_prev_ent $p_dtPrevEnt</td>";
}else{
    $prevEntrega = "";
}

    $tags = "<tr>
<td width=100>$r_coluna_venda $p_os </td>
<td width=150>$r_coluna_loja $loja </td>
<td width=290>$r_coluna_usuario $p_vendedor </td>
<td width=110>$r_coluna_data $p_data</td>
$prevEntrega
</tr>
<BR>
<tr>
<td width=500>$r_coluna_cliente $p_razao</td>
<td width=200>$r_coluna_vendedor $p_vendedor</td>
</tr>
<tr>
<td width=500>$r_coluna_CPF_CNPJ $p_cpcn</td>
<td>RG/$r_coluna_IE $p_rgie </td>
</tr>
<tr>
<td width=500>$r_coluna_endereco $p_endereco $p_complemento </td>
<td width=350>$r_coluna_bairro $p_bairro  </td>
</tr>
<tr>
<td width=500>$r_coluna_cidade $p_cidade </td>
<td width=150>$r_coluna_CEP $p_cep </td>
<td width=100>$r_coluna_UF $p_uf</td>
</tr>
<tr>
<td width=300>$r_coluna_fone $p_fone1</td>
<td width=200>$r_coluna_contato $p_contato1</td>
<td width=100>$r_coluna_fax $p_fax </td>
</tr>
<tr>
<td width=600>$r_coluna_email $p_email </td>
</tr>
<BR>
<tr>
<td width=790>$r_coluna_forma_pagto $p_formapagto</td>
</tr>
<tr>
<td width=790>$r_coluna_tipo_pagto $tipoPagamento</td>
</tr>
<tr>
<td width=790>$r_coluna_transportadora $p_transportadora </td>
</tr>
<tr>
<td width=790>$r_coluna_local_de_entrega $p_enderecoEntrega <br> $str</td>
</tr>
";

    if ($mostrarel) {
        echo $tags;
    }

    return $tags;
}


function MostraMestreImpressoEco($p_os, $p_razao, $p_cpcn, $p_rgie,
        $p_endereco, $p_bairro, $p_cidade, 
        $p_uf, $p_cep, $p_complemento,
        $p_transportadora, $p_data,
        $p_vendedor,
        $razaoLoja, $endLoja,
        $bairroLoja,$cidadeLoja,$cepLoja,$choper,$chapa,
        $data_origen,$aclaracion_origen,$documento_origen,$data_transportista,$aclaracion_transportista,$documento_transportista,$data_receptor,$aclaracion_receptor,$documento_receptor,
        $estadofisico,$categoriadesecho,$composicion,$tipodestino,$tipotransporte,$peso_bruto,$qtde,$forn_razao,$forn_endereco,
        $forn_bairro,$forn_cidade,$rgie) {

$peso_bruto = $peso_bruto * $qtde;

$tags ="<font size=9  face=Arial color=black>
<tr>
<td width=600>RESIDUOS ORGANICOS</td>
<td width=200>Fecha de OS: $p_data</td>
</tr>
<tr>
<td width=400>Estado Fisico: $estadofisico</td>
</tr>
<tr>
<td width=100>Categoria Desecho Principal: $categoriadesecho</td>
</tr>
<tr>
<td width=240>Tipo de Transporte: $tipotransporte</td>
</tr>
<tr>
<td width=250>Composicion: $composicion</td>
</tr>
<tr>
<td width=600>Tipo de Destino: $tipodestino</td>
<td width=240>Peso Bruto: $peso_bruto</td>
<BR>
</tr>

<tr>
<td width=600>ORIGEN</td>
<td width=300>Fecha de origen: $data_origen</td>
</tr>
<td>
<td width=450>Razon Social: $forn_razao</td>
</tr>
<tr>
<td width=450>Direccion: $forn_endereco</td>
</tr>
<tr>
<td width=350>Localidad: $forn_bairro</td>
<td width=200>Ruc: $rgie</td>
</tr>
<tr>
<td width=450>Aclaracion: $aclaracion_origen</td>
<td width=450>Documento: $documento_origen</td>
</tr>
<tr>
<td width=450>Firma Del Responsable: ______________________________________________________</td>
</tr>
<br>
<tr>
<td width=600>TRANSPORTISTA</td>
<td width=300>Fecha Transp: $data_transportista</td>
</tr>
<td>
<td width=450>Razon Social: ECO SOLUTIONS S.A</td>
</tr>
<tr>
<td width=450>Direccion: COLONIA ITA YABATE</td>
</tr>
<tr>
<td width=350>Localidad: NUEVA ITALIA</td>
<td width=200>Ruc: 80106667-0</td>
</tr>
<tr>
<td width=450>Responsable por la empresa de transporte: JULIO REZENDE MAURICIO NETO</td>
</tr>
<tr>
<td width=210>Chapa del vehiculo: $chapa</td>
<td width=240>Chofer: $choper</td>
<td width=200>Documento: $documento_transportista</td>
</tr>
<tr>
<td width=500>Aclaracion: $aclaracion_transportista</td>
</tr>
<tr>
<td width=450>Firma Del Responsable: ______________________________________________________</td>
</tr>
<br>
<tr>
<td width=600>RECEPTOR</td>
<td width=300>Fecha Receptor: $data_receptor</td>
</tr>
<td>
<td width=450>Razon Social: USPASA USINA PARAGUAYA</td>
</tr>
<tr>
<td width=450>Direccion: COLONIA ITA YABATE</td>
</tr>
<tr>
<td width=350>Localidad: NUEVA ITALIA</td>
<td width=200>Ruc: </td>
</tr>
<tr>
<td width=450>Aclaracion: $aclaracion_receptor </td>
<td width=450>Documento: $documento_receptor</td>
</tr>
<tr>
<td width=450>Firma Del Responsable: ______________________________________________________</td>
</tr>
</table>
";

    return $tags;
}





function MostraMestreImpressoServicos($mostrarel, $p_os, $p_razao, $p_cpcn, $p_rgie,
        $p_endereco, $p_bairro, $p_cidade, $p_uf, $p_cep, $p_complemento,
        $p_fone1, $p_contato1, $p_formapagto, $tipoPagamento, $p_transportadora, $p_data,
        $p_vendedor, $p_email, $p_fax, $p_enderecoEntrega, $tipoerecoCobranca, $p_totvlrsubst, $loja, $dadosAdicionais) {

    include '../idiomas/config.inc';

    $tags = "<tr>
<td width=170>$r_coluna_venda $p_os </td>
<td width=280>$r_coluna_loja $loja </td>
<td width=200>$r_coluna_usuario $p_vendedor </td>
<td width=150>$r_coluna_data $p_data</td>
</tr>
<BR>
<tr>
<td width=300>$r_coluna_cliente $p_razao</td>
<td width=200>$r_coluna_vendedor $p_vendedor</td>
<td width=100>$r_coluna_dados_adicionais $dadosAdicionais</td>
</tr>
<tr>
<td width=500>$r_coluna_CPF_CNPJ $p_cpcn</td>
<td>RG/$r_coluna_IE $p_rgie </td>
</tr>
<tr>
<td width=500>$r_coluna_endereco $p_endereco $p_complemento </td>
<td width=350>$r_coluna_bairro $p_bairro  </td>
</tr>
<tr>
<td width=500>$r_coluna_cidade $p_cidade </td>
<td width=150>$r_coluna_CEP $p_cep </td>
<td width=100>$r_coluna_UF $p_uf</td>
</tr>
<tr>
<td width=300>$r_coluna_fone $p_fone1</td>
<td width=200>$r_coluna_contato $p_contato1</td>
<td width=100>$r_coluna_fax $p_fax </td>
</tr>
<tr>
<td width=600>$r_coluna_email $p_email </td>
</tr>

<BR>

<tr>
<td width=790>$r_coluna_forma_pagto $p_formapagto</td>
</tr>
<tr>
<td width=790>$r_coluna_tipo_pagto $tipoPagamento</td>
</tr>

";

    return $tags;
}
















function MostraItensImpressoInternoPadrao($p_codigo, $p_descricao, $p_qtde) {

include '../auxiliar/parametros.inc';
$height=40;

$maxLength = 50;
$decriptionLength = strlen($p_descricao);
$descricaoPartes = array();

$descricao = $p_descricao;

    $tags = "
<tr>
<td width=35 height=$height align=center>" . number_format($p_qtde, 0, ',', '.') . "</td>
<td width=75 height=$height>$p_codigo</td>
<td width=665 height=$height>$descricao</td>
</tr>";

    return $tags;
}


function MostraItensImpresso($mostrarel, $p_codigo, $p_descricao, $p_desconto,
        $p_qtde, $p_tot, $p_unitariofinal, $p_consumidor, $p_ipi, $p_vlrsubst, $p_unitcdesc, $p_descontopct) {

include '../auxiliar/parametros.inc';
$height=40;
$colunaST = $p_esconde_st_impresso == 1 ? "" : "<td width=65 height=$height align=right>R$ " . number_format($p_vlrsubst, 2, ',', '.') . " </td>";
$widthDescricao = 350;

if($p_esconde_st_impresso == 1)
    $widthDescricao += 65;


    

$maxLength = 50;
$decriptionLength = strlen($p_descricao);
$descricaoPartes = array();

$descricao = $p_descricao;
$hasLineBreak = false;

if($p_impresso_descricao_completa == 1) {
    if($decriptionLength > $maxLength) {
        $hasLineBreak = true;
        $restoDaDescricao = substr($p_descricao, $maxLength);
        $descricao = substr($p_descricao, 0, $maxLength);
        for($i =0; $i < ($decriptionLength - $maxLength) / $maxLength; $i++){
            $descricaoPartes[$i] = substr($restoDaDescricao, $maxLength*($i), $maxLength);
        }
    }
} else {
    $descricao = substr($p_descricao, 0, $maxLength);
}
    $tags = "
<tr>
<td width=30 height=$height align=center>" . number_format($p_qtde, 2, ',', '.') . "</td>
<td width=75 height=$height>$p_codigo</td>
<td width=$widthDescricao height=$height>$descricao";


$tags .= "</td>
<td width=70 align=right height=$height>R$ " . number_format($p_unitariofinal, 2, ',', '.') . "</td>
" . $colunaST . "
<td width=45 align=right height=$height>" . number_format($p_descontopct, 2, ',', '.') . "</td>
<td width=70 align=right height=$height>R$ " . number_format($p_unitcdesc, 2, ',', '.') . "</td>
<td width=70 align=right height=$height>R$ " . number_format($p_tot, 2, ',', '.') . "</td>
</tr>
";

if(!$hasLineBreak && $p_impresso_descricao_completa == 1) {
    $tags .= "<hr>";
}

if($p_impresso_descricao_completa == 1) {
$subHeight = 28;
for($i =0; $i < count($descricaoPartes); $i++){

    if($descricaoPartes[$i]  == "") {
        continue;
    }

    $tags .= "
<tr>
<td width=105 height=$subHeight>.</td>
<td width=670 height=$subHeight border=0>" . $descricaoPartes[$i] . "</td>
</tr>";
}
}

if($hasLineBreak && $p_impresso_descricao_completa == 1) {
    $tags .= "<hr>";
}

    if ($mostrarel) {
        echo $tags;
    }

    return $tags;
}

function MostraItensEntrega($p_prazo, $p_vlrparcela, $p_vlrentrega) {

    $tags = "
<tr>
<td width=100>$p_prazo</td>
<td width=100 align=right>R$ " . number_format($p_vlrparcela, 2, ',', '.') . "</td>
<td width=100 align=right>R$ " . number_format($p_vlrentrega, 2, ',', '.') . "</td>
</tr>";


    return $tags;
}








function getOsItensByCodos($codos) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT cast(coalesce(oi.precobase,0) as numeric(10,2)) as precobase , 
    oi.*, p.*, n.ncm, oi.precobase as unitario, oi.cstipi as cstipi FROM ositenspro oi 
    JOIN produtos p ON p.codpro = oi.codpro  
    LEFT JOIN ncms n ON n.codncm = p.codncm
    WHERE codos = $codos";

    
    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        return $result;
    }

}

function getOsItem($codos, $numitem) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT 
        cast(coalesce(oi.precobase,0) as numeric(10,2)) as precobase ,oi.*, p.*, n.ncm, oi.unitario as unitario,
        CAST(substring(oi.obs from 1 for 250) as varchar(250)) as obs
        
    FROM ositenspro oi 
    JOIN produtos p ON p.codpro = oi.codpro  
    JOIN ncms n ON n.codncm = p.codncm
    WHERE codos = $codos AND numitem = $numitem";

    
    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        return $result[0];
    }

}



// function getNfItensByCodos($codos) {
//     include '../auxiliar/parametros.inc';
//     include 'conecta.inc.php';
//     include_once 'funcoes.inc';

//     $select = "SELECT ni.*, p.* FROM nfitens ni 
//     JOIN produtos p ON p.codpro = ni.codpro 

//     WHERE ni.codos = $codos";

    
//     $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
//     if (cria_matriz_campos($query, $a_campos, $result)) {
//         ibase_close($con); //fecha a conexao
//         return $result;
//     }

// }



function getIcmsUF($uf, $codloja) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT *  FROM uf  WHERE upper(uf) = '" . strtoupper($uf) .  "' AND codloja=$codloja ";

    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        return $result[0];
    }

}



function getStatusDescription($codstatus) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT descricao  FROM status  WHERE codstatus=$codstatus ";

    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        if(is_null($result[0]))
            return null;
            
        return $result[0]["descricao"];
    }

}




function getCodosByOs($os) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT codos FROM os WHERE os = $os";

    
    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        if(count($result) < 1)
            return null;
            
        return $result[0]['codos'];
    }
}


function getOsByCodos($codos) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT o.*, cast(substring(obs from 1 for 255) as varchar(255)) as obs FROM os o WHERE codos = $codos";

    
    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        return $result[0];
    }

}

function getTotalItensDaOs($codos) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT sum(totalcomdesc) as total FROM ositenspro WHERE codos = $codos";

    
    $query = ibase_query($con, $select); //cria o id q recebe o select
    $result = ibase_fetch_row($query); //pega a unica linha que o select retorna

    return $result[0];
}

function getTotalItensSemDesconto($codos) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT sum(totalprd) as total FROM ositenspro WHERE codos = $codos";

    
    $query = ibase_query($con, $select); //cria o id q recebe o select
    $result = ibase_fetch_row($query); //pega a unica linha que o select retorna

    return $result[0];
}

function getTipoDePagamento($codTipo) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT * FROM tipospag WHERE codtipo = $codTipo";

    
    
    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        return $result[0];
    }
}




function getFormaDePagamento($codforma) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';

    $select = "SELECT * FROM formas WHERE codforma = $codforma";

    
    
    $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
    if (cria_matriz_campos($query, $a_campos, $result)) {
        ibase_close($con); //fecha a conexao
        return $result[0];
    }
}

// function getTransportadora($codtra) {
//     include '../auxiliar/parametros.inc';
//     include 'conecta.inc.php';
//     include_once 'funcoes.inc';

//     $select = "SELECT * FROM transportadora WHERE codtra = $codtra";

    
    
//     $query = qry($con, $select, $a_campos); //cria o id q recebe o select
    
//     if (cria_matriz_campos($query, $a_campos, $result)) {
//         ibase_close($con); //fecha a conexao
//         return $result[0];
//     }
// }







function atualizaTotalDaOS($codos) {
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";

    if($p_habilita_servicos == 1) {
        $qry = "UPDATE OS SET total = totnf where codos = $codos";
    } else {
        $qry = "UPDATE OS SET total = totnf, totprod=totnf where codos = $codos";
    }
    exec_sql_simples($con, $qry);
}







function GetLimiteDesconto() {
    include 'conecta.inc.php';

    $con = ibase_connect($banco, $usuario, $senha, '');

     $p_codusu = lecookie("codusu");


    $l_selectnumitem = "SELECT COALESCE(OSMAXDESCITEM,-1) AS OS FROM SENHAS WHERE CODUSU = $p_codusu";
    $l_res = ibase_query($con, $l_selectnumitem); //cria o id q recebe o select
    $l_lin = ibase_fetch_row($l_res); //pega a unica linha que o select retorna
    return $l_lin[0]; //pega o campo pelo unico indice que o select retornou
}

function getTransportadoraPadrao() {
    include 'conecta.inc.php';
    include '../auxiliar/parametros.inc';

    $con = ibase_connect($banco, $usuario, $senha, '');



    $l_selectnumitem = "SELECT transportadora FROM transportadora WHERE codtra = $codigo_transportadora_padrao";
    $l_res = ibase_query($con, $l_selectnumitem); //cria o id q recebe o select
    $l_lin = ibase_fetch_row($l_res); //pega a unica linha que o select retorna
    return array( 
        "transportadora" => $l_lin[0],
        "codtra" => $codigo_transportadora_padrao
    ); //pega o campo pelo unico indice que o select retornou
}



function setStatusOnOS($codos, $codstatus) {
    $qry = "UPDATE os SET codstatus = $codstatus WHERE codos = $codos";
    return exec_sql_simples($con, $qry);
}
function getAllStatus() {
      
    $select = "SELECT descricao, codstatus  FROM status order by descricao";
    $result = qry($con, $select, $a_campos);

    if (cria_matriz_campos($result, $a_campos, $r)) {
        if(is_null($r))
            return array();
        return $r;
    }
    return array();
}

function getAllTiposDePagamento() {
      
    $select = "SELECT descricao, codtipo  FROM tipospag WHERE ismostraafv = 1 order by descricao";
    $result = qry($con, $select, $a_campos);

    if (cria_matriz_campos($result, $a_campos, $r)) {
        if(is_null($r))
            return array();
        return $r;
    }
    return array();
}

function getAllPrazoDePagamento() {
      
    $select = "SELECT descricao, codforma  FROM formas WHERE ismostraafv = 1 order by descricao";
    $result = qry($con, $select, $a_campos);

    if (cria_matriz_campos($result, $a_campos, $r)) {
        if(is_null($r))
            return array();
        return $r;
    }
    return array();
}

function getAllTransportadoras() {
      
    $select = "SELECT transportadora, codtra  FROM transportadora  order by transportadora";
    $result = qry($con, $select, $a_campos);

    if (cria_matriz_campos($result, $a_campos, $r)) {
        if(is_null($r))
            return array();
        return $r;
    }
    return array();
}



function getFormaDePagamentoDaOS($codos) {
    $select = "SELECT f.* FROM formas f JOIN os o ON o.codforma = f.codforma WHERE o.codos = '$codos'";
    $result = qry($con, $select, $a_campos);

    if (cria_matriz_campos($result, $a_campos, $r)) {
        if(!is_null($r) && count($r) > 0)
            return $r[0];
    }
    return null;
}





function getObsMascara() {
    $select = "SELECT CAST(substring(obsmascara from 1 for 250) as varchar(250)) as mascara from config";
    $result = qry($con, $select, $a_campos);

    if (cria_matriz_campos($result, $a_campos, $r)) {
        if(!is_null($r) && count($r) > 0)
            return $r[0]['mascara'];
    }
    return "";
}


function BuscaLotes($codos,$p_codpro, $p_numitem, $codloja) {

    include 'conecta.inc.php';
    include '../idiomas/config.inc';

    $usaLote = TrazValorCampo('produtos', 'islote', 'codpro', $p_codpro);

    if ($usaLote == 1){
        //MONTA O SELECT PRA TRAZER OS ITENS
        $l_select = "select e.codlote, e.qtdeestoque, cast(e.validade as date) as validade, cast(e.fabricacao as date) as fabricacao ,
            f.razao as fornecedor, f.codfor, coalesce(s.qtde,0) as qtdeusada
            from EstoqueLotes  E
            Join Fornecedores F on E.CodFor = F.CodFor
            left join saidalotes s on s.codlote = e.codlote and s.codpro = e.codpro and s.codsai = $codos and s.numitem = $p_numitem and s.codfor = e.codfor
            where e.CodLoja = $codloja and  e.CodPro = $p_codpro  and ( E.QtdeEstoque > 0 or  (coalesce(s.qtde,0)>0) ) order by validade asc, qtdeusada desc ";

        //echo $l_select; die ;//mostra o select - so para testes
        //cria id do select
        $a_reg = qry($con, $l_select, $a_campos);


        echo "<div class='box-body table-responsive no-padding'>  
                    <table class='table table-bordered table-hover'>
                    <thead>
                    <tr>
                        <th>$coluna_utilizado</th>
                        <th>$coluna_disponivel</th>
                        <th>$coluna_lote</th>
                        <th>$coluna_validade</th>
                        <th>$coluna_fabricacao</th>
                        <th>$coluna_fornecedor</th>
                    </tr>
                    </thead>   
                                
                    ";          

        if (cria_matriz_campos($a_reg, $a_campos, $l_a_itens)) {
            //se tiver resultado do select - quando encontra pelo menos um registro


            


            for ($i = 0; $i <= (sizeof($l_a_itens) - 1); $i++) {
                MostraLotes( $i, $l_a_itens[$i][codlote],
                    $l_a_itens[$i][qtdeestoque],
                    $l_a_itens[$i][validade],
                    $l_a_itens[$i][fabricacao],
                    $l_a_itens[$i][fornecedor],
                    $l_a_itens[$i][codfor],
                    $l_a_itens[$i][qtdeusada]            
                );

                            
            }


            echo "<input name='qtdelotes' id='qtdelotes' type='hidden'  value ='" . sizeof($l_a_itens) . "' />   ";
                

        
        }

        echo "</table> </div>";
    }

}



function MostraLotes($vi, $codlote, $qtdeEstoque, $validade,$fabricacao, $fornecedor, $codfor, $qtdeusada){
    
    include_once "../auxiliar/datas.inc";       
    
    echo" <tr><td><input class='form-control input-decimal'  size='6'  style='width: 70px; margin-right: 0' name='qtdeusada$vi' id='qtdeusada$vi' type='text' value=" .  number_format($qtdeusada, 2,',', '.') . " /></td>";    
    echo" <td> " . number_format($qtdeEstoque, 2,',', '.') ." </td>";
    echo "
            <td>$codlote 
            <input name='codlote$vi' type='hidden'  value ='" . $codlote . "' />  
            <input name='validade$vi' type='hidden'  value ='" . $validade . "' /> 
            <input name='fabricacao$vi' type='hidden'  value ='" . $fabricacao . "' /> 
            <input name='codfor$vi' type='hidden'  value ='" . $codfor . "' /> 
            </td> ";
    
    echo " <td> " . ConverteDtUSABR($validade) . " </td>";
    echo " <td> "  . ConverteDtUSABR($fabricacao) . " </td>";
        
    echo "<td> $fornecedor </td> </tr>";

}


function getLoteQtde($codos) {
    $select = "select
        sum(coalesce(s.qtde,0)) as qtdeusada,
        oi.qtde,
        p.descricao 
        from ositenspro oi
        join produtos p on p.codpro = oi.codpro
        left join EstoqueLotes E on e.codpro = oi.codpro
        left Join Fornecedores F on E.CodFor = F.CodFor
        left join saidalotes s on s.codlote = e.codlote and s.codpro = e.codpro and s.codsai = $codos  and s.codfor = e.codfor
        where coalesce(p.islote,0) = 1 and e.CodLoja = oi.codlojai and oi.codos = $codos
        group by 2,3
        ";
    $result = qry($con, $select, $a_campos);
    //echo $select; die;
    if (cria_matriz_campos($result, $a_campos, $r)) {
        if(!is_null($r) && count($r) > 0)
            return $r;
    }
    return null;
}





function BlqVendaPosImpresso($codos) {
    include "conecta.inc.php";
    include "../auxiliar/parametros.inc";
    $l_updateos = "UPDATE OS SET AFV_VNDBLQ = 1 WHERE codos = $codos";

    return (exec_sql_simples($con, $l_updateos));
}




function canEditVnd($codos) {
    include '../auxiliar/parametros.inc';
    include 'conecta.inc.php';
    include_once 'funcoes.inc';
    include_once '../bd/bd_senhas.inc';

    $p_codusu = lecookie("codusu");
    
    $canEdit = true;
    

    //bloqueia edi��o de venda quando vendedor n�o � gerente e ele j� imprimiu o pedido
    if ( ($p_bloqueia_editar_apos_impressao_vnd == 1) && (!isGerente($p_codusu)) ) {

        $select = "SELECT coalesce(AFV_VNDBLQ,0) as afv_vndblq FROM os WHERE codos = $codos";
        $query = ibase_query($con, $select); //cria o id q recebe o select
        $result = ibase_fetch_row($query); //pega a unica linha que o select retorna
        if ($result[0] == 1) {
            $canEdit = false;   
           
        };


    }

    return $canEdit;
}


?>



