private int InserirPedidoVenda(SAPbobsCOM.Company oCompany, OrderPluggto pedidoPluggto) { try { if (oCompany.Connected) { OrdersDAL orderDAL = new OrdersDAL(oCompany); string messageError = ""; int oOrderNum = 0; Boolean inserir = true; foreach (Item item in pedidoPluggto.Order.items) { if (string.IsNullOrEmpty(item.sku) && inserir) { this.log.WriteLogTable(oCompany, EnumTipoIntegracao.PedidoVenda, pedidoPluggto.Order.id, "", EnumStatusIntegracao.Erro, "Um ou mais item(s) do pedido está com o código de referência inválido."); this.log.WriteLogPedido("Um ou mais item(s) do pedido está com o código de referência inválido."); inserir = false; } } if (inserir) { oOrderNum = orderDAL.InsertOrder(pedidoPluggto.Order, out messageError); } } return(0); } catch (Exception e) { this.log.WriteLogPedido("Exception InserirPedidoVenda " + e.Message); throw; } }
private void InserirCliente(SAPbobsCOM.Company company, OrderPluggto pedidoPluggto) { try { BusinessPartnersDAL bpDAL = new BusinessPartnersDAL(); string errorMessage; bpDAL.InserirBusinessPartner(company, pedidoPluggto, out errorMessage); } catch (Exception e) { this.log.WriteLogPedido("Exception inserirClientes " + e.Message); throw; } }
public void InserirBusinessPartner(SAPbobsCOM.Company company, OrderPluggto pedido, out string messageError) { int addBPNumber = 0; string document = string.Empty; Boolean isCorporate = false; //Boolean marketPlace = false; if (!String.IsNullOrEmpty(pedido.Order.payer_cpf)) { document = pedido.Order.payer_cpf; } else if (!String.IsNullOrEmpty(pedido.Order.payer_cnpj)) { document = pedido.Order.payer_cnpj; isCorporate = true; } try { CountyDAL countyDAL = new CountyDAL(); this.oCompany = company; int _groupCode = Convert.ToInt32(ConfigurationManager.AppSettings["GroupCode"]); int _splCode = Convert.ToInt32(ConfigurationManager.AppSettings["SlpCode"]); int _QoP = Convert.ToInt32(ConfigurationManager.AppSettings["QoP"]); int groupNum = Convert.ToInt32(ConfigurationManager.AppSettings["GroupNum"]); string indicadorIE = ConfigurationManager.AppSettings["IndicadorIE"]; string indicadorOpConsumidor = ConfigurationManager.AppSettings["IndicadorOpConsumidor"]; string gerente = ConfigurationManager.AppSettings["Gerente"]; int priceList = Convert.ToInt32(ConfigurationManager.AppSettings["PriceList"]); string cardCodePrefix = ConfigurationManager.AppSettings["CardCodePrefix"]; int categoriaCliente = Convert.ToInt32(ConfigurationManager.AppSettings["CategoriaCliente"]); this.log.WriteLogPedido("Inserindo Cliente " + cardCodePrefix + document); BusinessPartners oBusinessPartner = null; oBusinessPartner = (SAPbobsCOM.BusinessPartners)oCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners); BusinessPartners oBusinessPartnerUpdateTest = null; oBusinessPartnerUpdateTest = (SAPbobsCOM.BusinessPartners)oCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners); if (oBusinessPartnerUpdateTest.GetByKey(cardCodePrefix + document)) { oBusinessPartner = oBusinessPartnerUpdateTest; } //Setando campos padrões oBusinessPartner.CardCode = cardCodePrefix + document; if (isCorporate) { oBusinessPartner.CardForeignName = pedido.Order.payer_razao_social; } oBusinessPartner.CardName = pedido.Order.receiver_name + " " + pedido.Order.receiver_lastname; oBusinessPartner.EmailAddress = pedido.Order.receiver_email; oBusinessPartner.CardType = BoCardTypes.cCustomer; oBusinessPartner.GroupCode = _groupCode; oBusinessPartner.SalesPersonCode = _splCode; oBusinessPartner.PayTermsGrpCode = groupNum; oBusinessPartner.PriceListNum = priceList; //oBusinessPartner.CardForeignName = "Teste"; //Setando campos de usuário oBusinessPartner.UserFields.Fields.Item("U_TX_IndIEDest").Value = indicadorIE; oBusinessPartner.UserFields.Fields.Item("U_TX_IndFinal").Value = indicadorOpConsumidor; oBusinessPartner.UserFields.Fields.Item("U_Gerente").Value = gerente; oBusinessPartner.UserFields.Fields.Item("U_CategoriaCliente").Value = gerente; if (!string.IsNullOrEmpty(pedido.Order.receiver_phone_area)) { oBusinessPartner.Phone2 = pedido.Order.receiver_phone_area; } //removendo o ddd if (!String.IsNullOrEmpty(pedido.Order.receiver_phone)) { if (pedido.Order.receiver_phone.Length >= 9) { oBusinessPartner.Cellular = pedido.Order.receiver_phone.Substring(2); } else { oBusinessPartner.Cellular = pedido.Order.receiver_phone; } } else if (!String.IsNullOrEmpty(pedido.Order.receiver_phone2)) { if (pedido.Order.receiver_phone2.Length >= 9) { //oBusinessPartner.Phone1 = cliente.homePhone.Substring(2); oBusinessPartner.Phone1 = pedido.Order.receiver_phone2.Substring(2); } else { //oBusinessPartner.Phone1 = cliente.homePhone.Substring(2); oBusinessPartner.Phone1 = pedido.Order.receiver_phone2; } } string codMunicipio = string.Empty; codMunicipio = countyDAL.RecuperarCodigoMunicipio(pedido.Order.receiver_city, this.oCompany); //Adicionando endereços //COBRANÇA oBusinessPartner.Addresses.SetCurrentLine(0); oBusinessPartner.Addresses.AddressType = BoAddressType.bo_BillTo; oBusinessPartner.Addresses.AddressName = "COBRANCA"; oBusinessPartner.Addresses.City = pedido.Order.receiver_city; if (!String.IsNullOrEmpty(pedido.Order.receiver_address_complement) && pedido.Order.receiver_address_complement.Length <= 100) { oBusinessPartner.Addresses.BuildingFloorRoom = pedido.Order.receiver_address_complement; } //oBusinessPartner.Addresses.Country = "1058"; oBusinessPartner.Addresses.Block = pedido.Order.receiver_neighborhood; oBusinessPartner.Addresses.StreetNo = pedido.Order.receiver_address_number; oBusinessPartner.Addresses.ZipCode = pedido.Order.receiver_zipcode; oBusinessPartner.Addresses.State = pedido.Order.receiver_state; oBusinessPartner.Addresses.Street = pedido.Order.receiver_address; oBusinessPartner.Addresses.County = codMunicipio; //oBusinessPartner.Addresses.Country = "br"; oBusinessPartner.Addresses.Add(); //FATURAMENTO oBusinessPartner.Addresses.SetCurrentLine(1); oBusinessPartner.Addresses.AddressType = BoAddressType.bo_ShipTo; oBusinessPartner.Addresses.AddressName = "FATURAMENTO"; oBusinessPartner.Addresses.City = pedido.Order.receiver_city; if (!String.IsNullOrEmpty(pedido.Order.receiver_address_complement) && pedido.Order.receiver_address_complement.Length <= 100) { oBusinessPartner.Addresses.BuildingFloorRoom = pedido.Order.receiver_address_complement; } //oBusinessPartner.Addresses.Country = "1058"; oBusinessPartner.Addresses.Block = pedido.Order.receiver_neighborhood; oBusinessPartner.Addresses.StreetNo = pedido.Order.receiver_address_number; oBusinessPartner.Addresses.ZipCode = pedido.Order.receiver_zipcode; oBusinessPartner.Addresses.State = pedido.Order.receiver_state; oBusinessPartner.Addresses.Street = pedido.Order.receiver_address; oBusinessPartner.Addresses.County = codMunicipio; //oBusinessPartner.Addresses.Country = "br"; oBusinessPartner.Addresses.Add(); oBusinessPartner.FiscalTaxID.Address = "FATURAMENTO"; if (isCorporate) { oBusinessPartner.FiscalTaxID.TaxId0 = document; } else { oBusinessPartner.FiscalTaxID.TaxId4 = document; oBusinessPartner.FiscalTaxID.TaxId1 = "Isento"; } oBusinessPartner.FiscalTaxID.Add(); #region ENDEREÇO FOR /*for (int i = 0; i < 2; i++) * { * if (i > 0) * { * oBusinessPartner.Addresses.SetCurrentLine(i); * oBusinessPartner.Addresses.AddressType = BoAddressType.bo_ShipTo; * oBusinessPartner.Addresses.AddressName = "FATURAMENTO"; * } * else * { * oBusinessPartner.Addresses.SetCurrentLine(i); * oBusinessPartner.Addresses.AddressType = BoAddressType.bo_BillTo; * oBusinessPartner.Addresses.AddressName = "COBRANCA"; * * if (!oBusinessPartnerUpdateTest.GetByKey(cardCodePrefix + document)) * { * oBusinessPartner.Addresses.Add(); * } * } * * oBusinessPartner.Addresses.City = pedido.Order.receiver_city; * * if (!String.IsNullOrEmpty(pedido.Order.receiver_address_complement) && pedido.Order.receiver_address_complement.Length <= 100) * { * oBusinessPartner.Addresses.BuildingFloorRoom = pedido.Order.receiver_address_complement; * } * * //oBusinessPartner.Addresses.Country = "1058"; * oBusinessPartner.Addresses.Block = pedido.Order.receiver_neighborhood; * oBusinessPartner.Addresses.StreetNo = pedido.Order.receiver_address_number; * oBusinessPartner.Addresses.ZipCode = pedido.Order.receiver_zipcode; * oBusinessPartner.Addresses.State = pedido.Order.receiver_state; * oBusinessPartner.Addresses.Street = pedido.Order.receiver_address; * oBusinessPartner.Addresses.County = codMunicipio; * //oBusinessPartner.Addresses.Country = "br"; * * oBusinessPartner.Addresses.Add(); * }*/ #endregion oBusinessPartner.BilltoDefault = "COBRANCA"; oBusinessPartner.ShipToDefault = "FATURAMENTO"; BusinessPartners oBusinessPartnerUpdate = null; oBusinessPartnerUpdate = (SAPbobsCOM.BusinessPartners)oCompany.GetBusinessObject(BoObjectTypes.oBusinessPartners); if (oBusinessPartnerUpdate.GetByKey(cardCodePrefix + document)) { addBPNumber = oBusinessPartner.Update(); if (addBPNumber != 0) { messageError = oCompany.GetLastErrorDescription(); this.log.WriteLogTable(oCompany, EnumTipoIntegracao.Cliente, document, cardCodePrefix + document, EnumStatusIntegracao.Erro, messageError); } else { messageError = ""; this.log.WriteLogTable(oCompany, EnumTipoIntegracao.Cliente, document, cardCodePrefix + document, EnumStatusIntegracao.Sucesso, "Cliente atualizado com sucesso."); System.Runtime.InteropServices.Marshal.ReleaseComObject(oBusinessPartner); System.Runtime.InteropServices.Marshal.ReleaseComObject(oBusinessPartnerUpdate); System.Runtime.InteropServices.Marshal.ReleaseComObject(oBusinessPartnerUpdateTest); } } else { //Setando informações Fiscais //oBusinessPartner.FiscalTaxID.SetCurrentLine(0); /*if (isCorporate) * { * oBusinessPartner.FiscalTaxID.TaxId0 = document; * } * else { * * oBusinessPartner.FiscalTaxID.TaxId4 = document; * oBusinessPartner.FiscalTaxID.TaxId1 = "Isento"; * }*/ //oBusinessPartner.FiscalTaxID.Address = "FATURAMENTO"; //oBusinessPartner.FiscalTaxID.Add(); addBPNumber = oBusinessPartner.Add(); if (addBPNumber != 0) { messageError = oCompany.GetLastErrorDescription(); this.log.WriteLogTable(oCompany, EnumTipoIntegracao.Cliente, document, "", EnumStatusIntegracao.Erro, messageError); this.log.WriteLogPedido("Falha ao inserir cliente - " + messageError); } else { string CardCode = oCompany.GetNewObjectKey(); this.log.WriteLogTable(oCompany, EnumTipoIntegracao.Cliente, document, CardCode, EnumStatusIntegracao.Sucesso, "Cliente inserido com sucesso."); this.log.WriteLogPedido("Cliente " + CardCode + " inserido com sucesso."); messageError = ""; } } System.Runtime.InteropServices.Marshal.ReleaseComObject(oBusinessPartner); System.Runtime.InteropServices.Marshal.ReleaseComObject(oBusinessPartnerUpdateTest); System.Runtime.InteropServices.Marshal.ReleaseComObject(oBusinessPartnerUpdate); } catch (Exception e) { this.log.WriteLogTable(oCompany, EnumTipoIntegracao.Cliente, document, "", EnumStatusIntegracao.Erro, e.Message); this.log.WriteLogPedido("InserirBusinessPartner Exception: " + e.Message); throw; } }
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 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); } }