public void IniciarIntegracaoRetornoNF(SAPbobsCOM.Company oCompany) { try { Repositorio repositorio = new Repositorio(); var jsonSerializeconfig = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; int contador = 0; if (oCompany.Connected) { OrdersDAL orders = new OrdersDAL(oCompany); SAPbobsCOM.Recordset recordSet = (Recordset)oCompany.GetBusinessObject(BoObjectTypes.BoRecordset); recordSet = orders.RecuperarNumeroNF(); if (recordSet.RecordCount > 0) { for (int i = 0; i < recordSet.RecordCount; i++) { contador = recordSet.RecordCount; this.log.WriteLogRetornoNF("Existem " + contador + "NF's a serem retornadas."); string nfKey = recordSet.Fields.Item("nfeKey").Value.ToString(); string docSAP = recordSet.Fields.Item("docSAP").Value.ToString(); string externalId = recordSet.Fields.Item("externalId").Value.ToString(); string idOrderPluggto = recordSet.Fields.Item("idOrderIntegracoesPluggto").Value.ToString(); string idOrderPluggto2 = recordSet.Fields.Item("idOrderIntegracoesPluggto2").Value.ToString(); string invoiceNumber = recordSet.Fields.Item("invoiceNumber").Value.ToString(); string invoiceOrderSeries = recordSet.Fields.Item("invoiceOrderSeries").Value.ToString(); string invoiceDate = recordSet.Fields.Item("invoiceDate").Value.ToString().Split(' ').FirstOrDefault(); CultureInfo provider = CultureInfo.InvariantCulture; DateTime invoiceDt = DateTime.ParseExact(invoiceDate, "dd/MM/yyyy", provider); invoiceDate = invoiceDt.ToString("yyyy-MM-dd"); Task <HttpResponseMessage> responseOrder = repositorio.RecuperarPedidoById(!string.IsNullOrEmpty(idOrderPluggto) ? idOrderPluggto:idOrderPluggto2); if (responseOrder.Result.IsSuccessStatusCode) { string jsonOrder = responseOrder.Result.Content.ReadAsStringAsync().Result; OrderPluggto orderPluggto = JsonConvert.DeserializeObject <OrderPluggto>(jsonOrder, jsonSerializeconfig); if (orderPluggto.Order.status.Equals("waiting_invoice")) { //Enviar dados e atualizar status Task <HttpResponseMessage> responseEnvioNF = repositorio.EnvioInfoNF(orderPluggto.Order, nfKey, invoiceNumber, invoiceOrderSeries, invoiceDate); int updatePedidoNum1 = orders.AtualizarPedidoVenda(oCompany, Convert.ToInt32(externalId)); if (responseEnvioNF.Result.IsSuccessStatusCode) { //atualizar Pedido Venda SAP //Atualizando campo de usuário U_EnvioNFVTEX int updatePedidoNum = orders.AtualizarPedidoVenda(oCompany, Convert.ToInt32(externalId)); if (updatePedidoNum == 0) { this.log.WriteLogTable(oCompany, EnumTipoIntegracao.NF, idOrderPluggto, docSAP, EnumStatusIntegracao.Sucesso, "Número NF " + invoiceNumber + " enviado para Pluggto com sucesso."); this.log.WriteLogRetornoNF("Número NF para o Pedido de Venda " + docSAP + " enviado para Pluggto com sucesso."); } else { this.log.WriteLogTable(oCompany, EnumTipoIntegracao.NF, idOrderPluggto, docSAP, EnumStatusIntegracao.Erro, "Número NF " + invoiceNumber + " retornado porém não foi possivél atualizar campo de usuário (U_EnvioNFPluggto) do Pedido de Venda"); this.log.WriteLogRetornoNF("Falha ao atualizar Pedido de Venda " + docSAP); } } else if (responseEnvioNF.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { this.GetNewAccessToken(); } else { var jsonResponseError = responseEnvioNF.Result.Content.ReadAsStringAsync().Result; var objResponse = JsonConvert.DeserializeObject <ResponseErrorRetNF>(jsonResponseError); this.log.WriteLogTable(oCompany, EnumTipoIntegracao.NF, idOrderPluggto, docSAP, EnumStatusIntegracao.Erro, objResponse.type + " " + objResponse.details); this.log.WriteLogRetornoNF(objResponse.type + " " + objResponse.details); } } } else if (responseOrder.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { this.GetNewAccessToken(); } recordSet.MoveNext(); } } else { this.log.WriteLogRetornoNF("Não há nenhuma NF a ser retornada."); } } else { this.log.WriteLogRetornoNF("Não conectado ao SAP."); } } catch (Exception e) { this.log.WriteLogRetornoNF("Exception IntegracaoService.IniciarIntegracaoRetornoNF " + e.Message); throw; } }
public void IniciarIntegracaoEstoque(SAPbobsCOM.Company oCompany) { try { Repositorio repositorio = new Repositorio(); WarehouseDAL whsDAL = new WarehouseDAL(); SAPbobsCOM.Recordset recordset = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset); recordset = whsDAL.RecuperarSaldoEstoqueSAP(oCompany); if (recordset != null && recordset.RecordCount > 0) { for (int i = 0; i < recordset.RecordCount; i++) { try { string _itemCode = recordset.Fields.Item("ItemCode").Value.ToString(); Int16 _onHand = System.Convert.ToInt16(recordset.Fields.Item("OnHand").Value.ToString()); Task <HttpResponseMessage> itemResp = repositorio.RecuperarItemPorSKU(_itemCode); if (itemResp.Result.IsSuccessStatusCode) { Task <HttpResponseMessage> responseAttEstoque = repositorio.AtualizarQuantidadeEstoque(_itemCode, _onHand); if (responseAttEstoque.Result.IsSuccessStatusCode) { this.log.WriteLogTable(oCompany, EnumTipoIntegracao.Estoque, _itemCode, _itemCode, EnumStatusIntegracao.Sucesso, "Estoque atualizado com sucesso."); this.log.WriteLogEstoque("Quantidade de estoque do Produto " + _itemCode + " atualizada com sucesso."); } else if (responseAttEstoque.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { this.GetNewAccessToken(); } } else if (itemResp.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { this.GetNewAccessToken(); } } catch (Exception) { throw; } recordset.MoveNext(); } } if (recordset != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(recordset); } } catch (Exception e) { this.log.WriteLogTable(oCompany, EnumTipoIntegracao.Estoque, "", "", EnumStatusIntegracao.Erro, e.Message); this.log.WriteLogEstoque("Exception IntegracaoService.IniciarIntegracaoEstoque " + e.Message); } }
public void IniciarIntegracaoPedido(SAPbobsCOM.Company oCompany) { try { Repositorio repositorio = new Repositorio(); var jsonSerializeconfig = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; Task <HttpResponseMessage> responseOrdersFiltered = repositorio.RecuperarPedidos(); if (responseOrdersFiltered.Result.IsSuccessStatusCode) { var jsonOrderFiltered = responseOrdersFiltered.Result.Content.ReadAsStringAsync().Result; OrderFiltered orderFiltered = JsonConvert.DeserializeObject <OrderFiltered>(jsonOrderFiltered, jsonSerializeconfig); if (orderFiltered.total > 0) { foreach (var orderResult in orderFiltered.result) { if (orderResult.order.status.Equals("approved")) { //recuperar pedido pluggto Task <HttpResponseMessage> responseOrder = repositorio.RecuperarPedidoById(orderResult.order.id); if (responseOrder.Result.IsSuccessStatusCode) { var jsonOrder = responseOrder.Result.Content.ReadAsStringAsync().Result; OrderPluggto pedido = JsonConvert.DeserializeObject <OrderPluggto>(jsonOrder, jsonSerializeconfig); //integrar cliente this.InserirCliente(oCompany, pedido); //inserir pedido pluggto this.InserirPedidoVenda(oCompany, pedido); //Atualizar status do pedido para waiting_invoice Task <HttpResponseMessage> responseAttStatusPedido = repositorio.AtualizarStatusPedido(pedido.Order.id); if (!responseAttStatusPedido.Result.IsSuccessStatusCode) { //logar não foi possível atualizar nota do pedido this.log.WriteLogTable(oCompany, EnumTipoIntegracao.PedidoVenda, pedido.Order.id, "", EnumStatusIntegracao.Erro, "Não foi possível atualizar status do pedido."); this.log.WriteLogPedido("Não foi possível atualizar status do pedido " + pedido.Order.id + " Erro:" + responseAttStatusPedido.Result.ReasonPhrase); } else if (responseAttStatusPedido.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { this.GetNewAccessToken(); } } else if (responseOrder.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { this.GetNewAccessToken(); } } } } } else if (responseOrdersFiltered.Result.StatusCode == System.Net.HttpStatusCode.Unauthorized) { this.GetNewAccessToken(); } } catch (Exception e) { this.log.WriteLogPedido("Exception IntegracaoService.IniciarIntegracaoPedido - Erro: " + e.Message); } }