public HttpResponseMessage AtualizacaoItensPedido(SZ4 sz4_)
 {
     if (sz4_ == null)
         return Request.CreateResponse<SZ4>(HttpStatusCode.BadRequest, sz4_);
     else
     {
         try
         {
             if (AtualizarItensPedidoVendaPreco(sz4_))
                 return Request.CreateResponse(HttpStatusCode.OK, "Cadastro Realizado" + sz4_.Z4_NUMPEDW);
             else
                 return Request.CreateResponse(HttpStatusCode.NotFound, "Erro na Gravação ");
         }
         catch (Exception)
         {
             return Request.CreateResponse<SZ4>(HttpStatusCode.InternalServerError, sz4_);
         }
     }
 }
        public string InsercaoPedidoAvant(FormCollection model)
        {
            var msg = "";
            HttpResponseMessage responsesz4;

            var mensagem = string.Empty;

            if (Convert.ToString(model["codprodutopedidoweb"]) != null)
            {
                if (Convert.ToString(model["codprodutopedidoweb"]) != "")
                {
                    if (model["txtcnpjcliente"] != null)
                    {

                        RequestDocumento = Convert.ToString(model["txtcnpjcliente"]);
                        ArrayLinha = Convert.ToString(model["codprodutopedidoweb"]).Split('|');
                        ArrayItens = Convert.ToString(model["itenspedidoobraweb"]).Split('|');
                        ArrayDescProduto = Convert.ToString(model["ArrayDescProduto"]).Split('|');
                        ArrayPrcVenda = Convert.ToString(model["ArrayPrcVenda"]).Split('|');
                        ArrayDescRamo = Convert.ToString(model["ArrayDescRamo"]).Split('|');
                        ArrayDescGe = Convert.ToString(model["ArrayDescGe"]).Split('|');
                        ArrayDescEsp = Convert.ToString(model["ArrayDescEsp"]).Split('|');
                        ArrayProdesc = Convert.ToString(model["ArrayProdesc"]).Split('|');
                        ArrayPrliq = Convert.ToString(model["ArrayPrliq"]).Split('|');
                        ArrayQuant = Convert.ToString(model["ArrayQuant"]).Split('|');
                        ArrayVlrTit = Convert.ToString(model["ArrayVlrTit"]).Split('|');
                        ArrayEstoqueProduto = Convert.ToString(model["ArrayEstoqueProduto"]).Split('|');

                        var Numpedidovenda = string.Empty;
                         PedidoWebVenda = Convert.ToString(model["txtpedidoweb"]);

                        // numero web de venda
                        string retorno = string.Empty;
                        string retorno2 = string.Empty;
                        string retorno3 = string.Empty;

                        if (client == null)
                        {
                            client = new HttpClient();
                            client.BaseAddress = new Uri(ConfigurationManager.AppSettings["url_servidor"]);
                            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                            HttpResponseMessage resultado = client.GetAsync("AVANT/Pedido/NumWeb").Result;
                            retorno = resultado.Content.ReadAsStringAsync().Result;

                            if (retorno != "[]")
                            {
                                JArray usuarioarrray = JArray.Parse(retorno);
                                foreach (JObject obj in usuarioarrray.Children<JObject>())
                                {
                                    foreach (JProperty prop in obj.Properties())
                                    {
                                        switch (prop.Name)
                                        {
                                            case "z3_NPEDWEB":
                                                Numpedidovenda = Convert.ToString(prop.Value);
                                                break;
                                            default:
                                                break;
                                        }
                                    }
                                }
                            }

                        }

                        for (var i = 0; i < ArrayLinha.Length; i++)
                        {
                            RequestCodigoProdutoAtual = Convert.ToString(ArrayLinha[i]);
                            if (RequestCodigoProdutoAtual != string.Empty)
                            {

                                poscodigo2 = Array.IndexOf(ArrayItens, RequestCodigoProdutoAtual);
                                if (Convert.ToInt32(Array.IndexOf(ArrayItens, RequestCodigoProdutoAtual)) >= 0)
                                {
                                    if (poscodigo2 > -1)
                                    {
                                        poscodigo2++;
                                        RequestDescProduto = ArrayItens[poscodigo2];
                                        // carregando a descricao do produto
                                    }
                                }
                                if (cs.IsCnpj(RequestDocumento))
                                {
                                    if (Convert.ToInt32(ArrayEstoqueProduto[i]) > 0)
                                    {
                                        integracao = true;
                                        // gravar o cabecalho
                                        CabecalhoDadosSZ3(model, "C", tipofrete, Numpedidovenda);

                                        // gerar os itens
                                        var _itens = new SZ4()
                                        {
                                            Z4_FILIAL = "010104",
                                            Z4_NUMPEDW = float.Parse(Numpedidovenda),
                                            Z4_ITEMPED = Convert.ToString(cont).PadLeft(2, '0'),
                                            Z4_CODPROD = ArrayDescProduto[i],
                                            Z4_DESCPRO = RequestDescProduto,
                                            Z4_UNVENDA = "UN",
                                            Z4_QTDE = float.Parse(ArrayQuant[i]),
                                            Z4_PRVEN =
                                            float.Parse(string.Format("{0:n2}", decimal.Round(decimal.Parse(ArrayPrcVenda[i].Replace(".", ",")), 2))),
                                            Z4_VLRTTIT = float.Parse(string.Format("{0:n2}",
                                                decimal.Round(decimal.Parse(ArrayVlrTit[i].Replace(".", ",")), 2))),
                                            Z4_DESCRA = float.Parse(ArrayDescRamo[i]),
                                            Z4_DESCGE = float.Parse(ArrayDescGe[i]),
                                            Z4_CODTRIB = "559",
                                            Z4_TRIBCLI =
                                            Convert.ToString(model["tpgrupotributariocliente"]),
                                            Z4_NUMCX = float.Parse("0"),
                                            Z4_NUMPED = "0",
                                            Z4_ORIGEM = "0",
                                            Z4_PRLIQ =
                                            float.Parse(string.Format("{0:n2}",
                                                decimal.Round(decimal.Parse(ArrayPrliq[i].Replace(".", ",")), 2))),
                                            Z4_TPOPERW = "51",
                                            Z4_PRORI = cs.ValorRamo(float.Parse(ArrayPrcVenda[i]),
                                                float.Parse(ArrayDescRamo[i])),
                                            Z4_DESCESP = float.Parse("0"),
                                            Z4_PRODESC = float.Parse(ArrayProdesc[i]),
                                            Z4_MKTCRD = "0",
                                            Z4_RESERVA = "S"
                                        };
                                        cont++;
                                        responsesz4 = client.PostAsync(ConfigurationManager.AppSettings["url_servidor"] + "AVANT/IntesPedido/Gravar",
                                        new StringContent(JsonConvert.SerializeObject(_itens).ToString(), Encoding.UTF8, "application/json")).Result;

                                    }

                                }
                            }
                        }

                        if (integracao && Numpedidovenda != string.Empty)
                        {
                            msg += "<br />Pedido gravado com sucesso N°: " + Numpedidovenda + "<br />Aguardando aprovação do gerente de vendas<br /><div style=\"margin-left:180px;\"><a id=\"botao_terminei_de_adicionar\" style=\"float:left; margin-right:10px;\" onclick=\"FecharBox('../Representante/Pedidos');\" class=\"btn btn-small btn-success\">ok</a></div>";
                        }
                    }
                }
            }
            return msg;
        }
        public void ProcessRequest(HttpContext context)
        {
            ArrayCabecalho = context.Request.QueryString["cabecalho"].Split('|');
            ArrayItens = context.Request.QueryString["itens"].Split('|');
            ArrayLinha = context.Request.QueryString["linha"].Split('|');

            HttpClient client = null;
            string retorno = string.Empty;
            if (client == null)
            {
                client = new HttpClient();
                client.BaseAddress = new Uri(ConfigurationManager.AppSettings["url_servidor"]);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage resultado = client.GetAsync("AVANT/Pedido/NumWeb").Result;
                retorno = resultado.Content.ReadAsStringAsync().Result;

                if (resultado.StatusCode != System.Net.HttpStatusCode.NotFound)
                {
                    if (retorno != "[]")
                    {

                        JArray usuarioarrray = JArray.Parse(retorno);
                        foreach (JObject obj in usuarioarrray.Children<JObject>())
                        {
                            foreach (JProperty prop in obj.Properties())
                            {
                                switch (prop.Name)
                                {
                                    case "z3_NPEDWEB":
                                        NumeroWeb = Convert.ToString(prop.Value);
                                        break;
                                     default:
                                        break;
                                }
                            }
                        }

                        if (NumeroWeb != string.Empty)
                        {

                            for (var i = 0; i < 1; i++)
                            {
                                otsz3.Z3_FILIAL = "010104";
                                otsz3.Z3_NPEDWEB = float.Parse(NumeroWeb);
                                otsz3.Z3_NPEDCLI = "";
                                otsz3.Z3_CNPJ = ArrayCabecalho[0];
                                otsz3.Z3_RAZASOC = ArrayCabecalho[1];
                                otsz3.Z3_WA1_COD = ArrayCabecalho[2];
                                otsz3.Z3_WA1_LOJ = ArrayCabecalho[3];
                                otsz3.Z3_NMFANTA = ArrayCabecalho[4];
                                otsz3.Z3_TIPOCLI = ArrayCabecalho[5];
                                otsz3.Z3_CODTRAN = ArrayCabecalho[6];
                                otsz3.Z3_NMTRANS = ArrayCabecalho[7];
                                otsz3.Z3_CEPCLI = ArrayCabecalho[8];
                                otsz3.Z3_ENDCLI = ArrayCabecalho[9];
                                otsz3.Z3_BAIRROC = ArrayCabecalho[10];

                                otsz3.Z3_DDDCLI = ArrayCabecalho[11];
                                otsz3.Z3_TELCLI = ArrayCabecalho[12];
                                otsz3.Z3_CODPGTO = ArrayCabecalho[13];
                                otsz3.Z3_DSCPGTO = ArrayCabecalho[14];
                                otsz3.Z3_COMIS = float.Parse("0");
                                otsz3.Z3_CODTSAC = "51";
                                otsz3.Z3_DSCTSAC = "VENDAS";
                                otsz3.Z3_OBS = "";

                                otsz3.Z3_GTRCLI = ArrayCabecalho[15];
                                GrpTrib = ArrayCabecalho[15];
                                otsz3.Z3_STATUS = status.SomenteGravar;
                                otsz3.Z3_EMISSAO = DateTime.Now.ToString("yyyyMMdd");

                                // trazendo o codigo do vendedor
                                otsz3.Z3_VEND = ArrayCabecalho[16];

                                otsz3.Z3_TOTPED = float.Parse(ArrayCabecalho[17].Replace(".", ",")); // login do representante logado no site
                                otsz3.Z3_INTEGRA = "N";
                                otsz3.Z3_PRODMKT = ArrayCabecalho[18]; // operação triangular
                                otsz3.Z3_FREPAGO = ArrayCabecalho[19]; // tipo de frete
                                otsz3.Z3_MUN = ArrayCabecalho[20];
                                otsz3.Z3_UF = ArrayCabecalho[21];
                                otsz3.Z3_REGIAO = ArrayCabecalho[22]; // trazer a regional selecionada
                                otsz3.Z3_EMAIL = ArrayCabecalho[23];
                                otsz3.Z3_HORA = DateTime.Now.ToShortTimeString();
                                RequestDescComissao = ArrayCabecalho[24];
                                pedido_exixtente = ArrayCabecalho[25];

                            }
                            cont = 1;

                            if (!pedido_exixtente.Equals("")) {

                                var otsz4s = new SZ4() {
                                    Z4_NUMPEDW = float.Parse(pedido_exixtente)
                                };

                                var otsz3s = new SZ3() {
                                    Z3_NPEDWEB = float.Parse(pedido_exixtente),
                                    Z3_TOTPED = float.Parse(ArrayCabecalho[17].Replace(".", ","))
                                };

                                var response = client.PostAsync(ConfigurationManager.AppSettings["url_servidor"] + "AVANT/IntesPedido/ExclusaoIntesParcial",
                              new StringContent(JsonConvert.SerializeObject(otsz4s).ToString(), Encoding.UTF8, "application/json")).Result;

                                var response2 = client.PostAsync(ConfigurationManager.AppSettings["url_servidor"] + "AVANT/IntesPedido/AtualizacaoTotalValores",
                           new StringContent(JsonConvert.SerializeObject(otsz3s).ToString(), Encoding.UTF8, "application/json")).Result;

                            }

                            HttpResponseMessage responsesz4;
                            if (ArrayLinha.Length > 0)
                            {
                                for (var i = 0; i < ArrayLinha.Length; i++)
                                {
                                    RequestCodigoProdutoAtual = Convert.ToString(ArrayLinha[i]);
                                    if (RequestCodigoProdutoAtual != string.Empty)
                                    {
                                        poscodigo = Array.IndexOf(ArrayItens, RequestCodigoProdutoAtual);

                                        if (Convert.ToInt32(Array.IndexOf(ArrayItens, RequestCodigoProdutoAtual)) >= 0)
                                        {
                                            if (poscodigo > -1)
                                            {
                                                RequestCodigo = ArrayItens[poscodigo];
                                                poscodigo++;
                                                RequestDescProduto = ArrayItens[poscodigo];
                                                poscodigo++;
                                                RequestPrvenda = ArrayItens[poscodigo].Replace(".", ",");
                                                poscodigo++;
                                                RequestRamo = ArrayItens[poscodigo].Replace(".",",");
                                                poscodigo++;
                                                RequestDescGe = ArrayItens[poscodigo].Replace(".",",");
                                                poscodigo++;
                                                RequestDescEsp = ArrayItens[poscodigo];
                                                poscodigo++;
                                                RequestProdesc = ArrayItens[poscodigo];
                                                poscodigo++;
                                                RequestPrLiq = ArrayItens[poscodigo].Replace(".", ",");
                                                poscodigo++;
                                                RequestQuant = ArrayItens[poscodigo];
                                                poscodigo++;
                                                RequestVlrTit = ArrayItens[poscodigo].Replace(".", ",");
                                                poscodigo++;
                                                RequestValorComissao = ArrayItens[poscodigo].Replace(".", ",");
                                            }
                                        }

                                        otsz4.Z4_FILIAL = "010104";
                                        if(pedido_exixtente != string.Empty)
                                            otsz4.Z4_NUMPEDW = float.Parse(pedido_exixtente);
                                        else
                                            otsz4.Z4_NUMPEDW = float.Parse(NumeroWeb);
                                        otsz4.Z4_ITEMPED = Convert.ToString(cont).PadLeft(2, '0');
                                        otsz4.Z4_CODPROD = RequestCodigo;
                                        otsz4.Z4_DESCPRO = RequestDescProduto;
                                        otsz4.Z4_UNVENDA = "UN";
                                        otsz4.Z4_QTDE = float.Parse(RequestQuant);
                                        otsz4.Z4_PRVEN =
                                            float.Parse(string.Format("{0:n2}", decimal.Round(decimal.Parse(RequestPrvenda), 2)));
                                        otsz4.Z4_VLRTTIT =
                                            float.Parse(string.Format("{0:n2}", decimal.Round(decimal.Parse(RequestVlrTit), 2)));
                                        otsz4.Z4_DESCRA = float.Parse(RequestRamo);
                                        otsz4.Z4_DESCGE = float.Parse(RequestDescGe);
                                        otsz4.Z4_CODTRIB = "559";
                                        otsz4.Z4_TRIBCLI = Convert.ToString(GrpTrib);
                                        otsz4.Z4_NUMCX = float.Parse("0");
                                        otsz4.Z4_NUMPED = "0";
                                        otsz4.Z4_ORIGEM = "0";
                                        otsz4.Z4_PRLIQ =
                                            float.Parse(string.Format("{0:n2}", decimal.Round(decimal.Parse(RequestPrLiq), 2)));
                                        otsz4.Z4_TPOPERW = "51";
                                        if (RequestDescEsp != string.Empty)
                                            otsz4.Z4_DESCESP = float.Parse(RequestDescEsp);
                                        else
                                            otsz4.Z4_DESCESP = float.Parse("0");
                                        otsz4.Z4_PRODESC = float.Parse(RequestProdesc);
                                        otsz4.Z4_PRORI = cs.ValorRamo(float.Parse(string.Format("{0:n2}", decimal.Round(decimal.Parse(RequestPrvenda), 2))),
                                                float.Parse(RequestRamo));

                                        otsz4.Z4_MKTCRD = "0";
                                        otsz4.Z4_RESERVA = "";
                                        otsz4.Z4_TPDESC = Convert.ToString(RequestDescComissao);
                                        otsz4.Z4_VLCOMIS = float.Parse(RequestValorComissao);
                                         responsesz4 = client.PostAsync(ConfigurationManager.AppSettings["url_local"] + "AVANT/IntesPedido/Gravar",
                                            new StringContent(JsonConvert.SerializeObject(otsz4).ToString(), Encoding.UTF8, "application/json")).Result;

                                        cont++;
                                    }
                                }
                            }

                            if (pedido_exixtente.Equals(""))
                            {
                                // fazendo post para api
                                var response = client.PostAsync(ConfigurationManager.AppSettings["url_local"] + "AVANT/Dados/SomenteGravar",
                                   new StringContent(JsonConvert.SerializeObject(otsz3).ToString(), Encoding.UTF8, "application/json")).Result;
                                //JsonConvert.SerializeObject(object) // serializando o objeto para enviar para o json

                                if (response.IsSuccessStatusCode)
                                    context.Response.Write("Pedido de venda Gravado com Sucesso Numero Web:" + otsz3.Z3_NPEDWEB);
                                else
                                    context.Response.Write("Erro na gravação do pedido favor entrar em contato com T.I Avant.");
                            }
                            else {
                                context.Response.Write("Atualizado o pedido de venda:" + pedido_exixtente);
                            }
                        }

                    }
                }
            }
        }
        public List<object> ItensPedidoVenda(string pedido)
        {
            StringBuilder sb = new StringBuilder();
            Models.banco.bd db = new Models.banco.bd();
            SqlCommand _cmd;
            SqlDataReader _ler;
            DataTable dt = new DataTable();
            List<Object> dados = new List<Object>();
            sb.Append("EXEC PROC_PORTALAVANTLED_ITENSEDITARVENDAS '" + pedido + "' ");
            try
            {
                db.Conectar();
                _cmd = new SqlCommand(sb.ToString(), db.conn);
                _ler = _cmd.ExecuteReader();
                dt.Load(_ler);
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow rw in dt.Rows)
                    {

                        var sz4 = new SZ4();
                        sz4.Z4_CODPROD = rw["CODIGO"].ToString().Trim();
                        sz4.Z4_DESCPRO = rw["PRODUTO"].ToString().Trim();
                        sz4.Z4_PRVEN = float.Parse(rw["PRC.VENDA"].ToString().Trim());
                        sz4.Z4_DESCRA = float.Parse(rw["RAMO"].ToString().Trim());
                        sz4.Z4_DESCGE = float.Parse(rw["GERENCIAL"].ToString().Trim());
                        sz4.Z4_DESCESP = float.Parse(rw["ESPECIAL"].ToString().Trim());
                        sz4.Z4_PRODESC = float.Parse(rw["PROMOCIONAL"].ToString().Trim());
                        sz4.Z4_VLCOMIS = float.Parse(rw["COMISSAO"].ToString().Trim());
                        sz4.Z4_PRLIQ = float.Parse(rw["PRC.LIQ"].ToString().Trim());
                        sz4.Z4_QTDE = float.Parse(rw["QTDE"].ToString().Trim());
                        sz4.Z4_VLRTTIT = float.Parse(rw["TOTAL"].ToString().Trim());

                        dados.Add(sz4);

                    }

                }

            }
            catch (Exception d)
            {

                throw new Exception("Erro no Acesso ao dados" + d.Message);
            }
            finally
            {
                db.Desconectar();
            }
            return dados;
        }
        public bool Inserir(SZ4 z4)
        {
            StringBuilder sb = new StringBuilder();
            var _db = new Models.banco.bd();
            SqlCommand _cmd;
            var enviar = false;
            sb.Append(" EXEC PROC_PORTALAVANTLED_SZ4 '" + z4.Z4_FILIAL + "', " + z4.Z4_NUMPEDW + ",'" +
                      z4.Z4_ITEMPED + "','" + z4.Z4_CODPROD + "' ,");
            sb.Append(" '" + z4.Z4_DESCPRO + "','" + z4.Z4_UNVENDA + "'," + z4.Z4_QTDE + ", " +
                      z4.Z4_PRVEN.ToString().Replace(",", ".") + ", ");
            sb.Append(" " + z4.Z4_VLRTTIT.ToString().Replace(",", ".") + "," + z4.Z4_DESCRA.ToString().Replace(",",".") + "," +
                      z4.Z4_DESCGE.ToString().Replace(",",".") + ",0,'1', " + z4.Z4_NUMCX + ", '" + z4.Z4_NUMPED + "', ");
            sb.Append(" '" + z4.Z4_ORIGEM + "'," + z4.Z4_PRLIQ.ToString().Replace(",", ".") + ",'" +
                      z4.Z4_TPOPERW + "'," + z4.Z4_DESCESP + "," + z4.Z4_PRODESC + ", ");
            sb.Append(" " + KeyTable() + ",'" + z4.Z4_MKTCRD + "'," + z4.Z4_PRORI.ToString().Replace(",", ".") +
                      ",'" + z4.Z4_RESERVA + "', '"+ z4.Z4_TPDESC+ "', "+z4.Z4_VLCOMIS+"  ");

            try
            {
                _db.Conectar();
                _cmd = new SqlCommand(sb.ToString(), _db.conn);
                _cmd.ExecuteNonQuery();
                enviar = true;

            }
            catch (SqlException g)
            {
                throw new Exception("Erro na Inserção de Dados" + g.Message);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                _db.Desconectar();
            }

            return enviar;
        }
        public bool ExclusaoItens(SZ4 sz4_)
        {
            StringBuilder sb = new StringBuilder();
            var _db = new Models.banco.bd();
            SqlCommand _cmd;
            var enviar = false;
            sb.Append(" EXEC PROC_PORTALAVANTLED_EXCLUSAOITENS '" + sz4_.Z4_NUMPEDW + "'");
            try
            {
                _db.Conectar();
                _cmd = new SqlCommand(sb.ToString(), _db.conn);
                _cmd.ExecuteNonQuery();
                enviar = true;

            }
            catch (SqlException g)
            {
                throw new Exception("Erro na Inserção de Dados" + g.Message);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                _db.Desconectar();
            }

            return enviar;
        }
        public bool AtualizarItensPedidoVendaPreco(SZ4 sz4_)
        {
            StringBuilder sb = new StringBuilder();
            var _db = new Models.banco.bd();
            SqlCommand _cmd;
            var enviar = false;

            sb.Append(" EXEC PROC_PORTALAVANTLED_ATUALIZARITENSPEDIDO "+sz4_.Z4_PRVEN.ToString().Replace(",", ".") + ","+sz4_.Z4_PRLIQ.ToString().Replace(",", ".") + ","+sz4_.Z4_VLRTTIT.ToString().Replace(",", ".") + ", "+ sz4_.R_E_C_N_O_+" ");
            try
            {
                _db.Conectar();
                _cmd = new SqlCommand(sb.ToString(), _db.conn);
                _cmd.ExecuteNonQuery();
                enviar = true;

            }
            catch (SqlException g)
            {
                throw new Exception("Erro na Inserção de Dados" + g.Message);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                _db.Desconectar();
            }
            return enviar;
        }