コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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);
            }
        }