Ejemplo n.º 1
0
        /// <summary>
        /// Adiciona nova TbRecebimentoVenda
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static Int32 Add(string token, tbRecebimentoVenda param, painel_taxservices_dbContext _dbContext = null)
        {
            painel_taxservices_dbContext _db;

            if (_dbContext == null)
            {
                _db = new painel_taxservices_dbContext();
            }
            else
            {
                _db = _dbContext;
            }
            //DbContextTransaction transaction = _db.Database.BeginTransaction();
            try
            {
                _db.tbRecebimentoVendas.Add(param);
                _db.SaveChanges();
                //transaction.Commit();
                return(param.idRecebimentoVenda);
            }
            catch (Exception e)
            {
                //transaction.Rollback();
                if (e is DbEntityValidationException)
                {
                    string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e);
                    throw new Exception(erro.Equals("") ? "Falha ao salvar venda" : erro);
                }
                throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
            }
            finally
            {
                if (_dbContext == null)
                {
                    // Fecha conexão
                    _db.Database.Connection.Close();
                    _db.Dispose();
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Altera tbRecebimentoVenda
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static void Update(string token, tbRecebimentoVenda param, painel_taxservices_dbContext _dbContext = null)
        {
            painel_taxservices_dbContext _db;

            if (_dbContext == null)
            {
                _db = new painel_taxservices_dbContext();
            }
            else
            {
                _db = _dbContext;
            }
            //DbContextTransaction transaction = _db.Database.BeginTransaction();
            try
            {
                tbRecebimentoVenda value = _db.tbRecebimentoVendas
                                           .Where(e => e.idRecebimentoVenda.Equals(param.idRecebimentoVenda))
                                           .First <tbRecebimentoVenda>();

                if (param.nrCNPJ != null && param.nrCNPJ != value.nrCNPJ)
                {
                    value.nrCNPJ = param.nrCNPJ;
                }
                if (param.nrNSU != null && param.nrNSU != value.nrNSU)
                {
                    value.nrNSU = param.nrNSU;
                }
                if (param.dtVenda != null && param.dtVenda != value.dtVenda)
                {
                    value.dtVenda = param.dtVenda;
                }
                //if (param.cdAdquirente != null && param.cdAdquirente != value.cdAdquirente)
                //    value.cdAdquirente = param.cdAdquirente;
                if (param.dsBandeira != null && param.dsBandeira != value.dsBandeira)
                {
                    value.dsBandeira = param.dsBandeira;
                }
                if (param.vlVenda != null && param.vlVenda != value.vlVenda)
                {
                    value.vlVenda = param.vlVenda;
                }
                if (param.qtParcelas != null && param.qtParcelas != value.qtParcelas)
                {
                    value.qtParcelas = param.qtParcelas;
                }
                if (param.cdERP != null && param.cdERP != value.cdERP)
                {
                    value.cdERP = param.cdERP;
                }
                _db.SaveChanges();
                //transaction.Commit();
            }
            catch (Exception e)
            {
                //transaction.Rollback();
                if (e is DbEntityValidationException)
                {
                    string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e);
                    throw new Exception(erro.Equals("") ? "Falha ao atualizar venda" : erro);
                }
                throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message);
            }
            finally
            {
                if (_dbContext == null)
                {
                    // Fecha conexão
                    _db.Database.Connection.Close();
                    _db.Dispose();
                }
            }
        }
Ejemplo n.º 3
0
        private static void bw_DoWork(object sender, DoWorkEventArgs a)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            List <object> args = a.Argument as List <object>;
            painel_taxservices_dbContext _db = args[0] as painel_taxservices_dbContext;
            Semaphore     semaforo           = args[1] as Semaphore;
            Retorno       retorno            = args[2] as Retorno;
            Int32         idGrupo            = Convert.ToInt32(args[3]);
            ImportaVendas param = args[4] as ImportaVendas;

            List <dynamic> Registros = retorno.Registros as List <dynamic>;

            //List<dynamic> test = Registros.Where(t => Convert.ToString(t.nrCNPJ).Equals("08297710000480")).ToList();

            List <int> idsRecebimentoVenda = new List <int>();

            for (var k = 0; k < Registros.Count; k++)
            {
                dynamic vd = Registros[k];
                DbContextTransaction transaction = _db.Database.BeginTransaction();
                try
                {
                    string dsBandeira = vd.dsBandeira;
                    if (dsBandeira != null && dsBandeira.Length > 50)
                    {
                        dsBandeira = dsBandeira.Substring(0, 50);
                    }

                    string cdSacado = null;
                    try
                    {
                        cdSacado = vd.cdSacado;
                        cdSacado = cdSacado.Trim();
                    }
                    catch { }

                    string dsDetalhe = null;
                    try
                    {
                        dsDetalhe = vd.dsDetalhe;
                        dsDetalhe = dsDetalhe.Trim();
                    }
                    catch { }

                    if (cdSacado != null)
                    {
                        if (cdSacado.Equals(""))
                        {
                            cdSacado = null;
                        }
                        else if (cdSacado.Length > 10)
                        {
                            throw new Exception("Sacado '" + cdSacado + "' com mais de 10 caracteres!");
                        }
                    }

                    string nrCNPJ = vd.nrCNPJ;
                    //if (nrCNPJ.Equals("08297710000480"))
                    //    nrCNPJ += "";

                    tbRecebimentoVenda tbRecebimentoVenda = new tbRecebimentoVenda
                    {
                        dsBandeira = dsBandeira,
                        //cdAdquirente = vd.cdAdquirente,
                        cdERP      = vd.cdERP,
                        dtVenda    = vd.dtVenda,
                        nrCNPJ     = nrCNPJ,
                        nrNSU      = vd.nrNSU != null && !vd.nrNSU.ToString().Trim().Equals("") ? vd.nrNSU : "T" + vd.cdERP,
                        vlVenda    = Convert.ToDecimal(vd.vlVenda),
                        cdSacado   = cdSacado,
                        qtParcelas = Convert.ToByte(vd.qtParcelas),
                        dsDetalhe  = dsDetalhe,
                    };

                    tbRecebimentoVenda venda = _db.Database.SqlQuery <tbRecebimentoVenda>("SELECT V.*" +
                                                                                          " FROM card.tbRecebimentoVenda V (NOLOCK)" +
                                                                                          " WHERE V.nrCNPJ = '" + tbRecebimentoVenda.nrCNPJ + "'" +
                                                                                          " AND V.nrNSU = '" + tbRecebimentoVenda.nrNSU + "'" +
                                                                                          " AND V.dtVenda = '" + DataBaseQueries.GetDate(tbRecebimentoVenda.dtVenda) + "'" +
                                                                                          " AND V.cdERP = '" + tbRecebimentoVenda.cdERP + "'"
                                                                                          )
                                               .FirstOrDefault();

                    int idRecebimentoVenda = 0;
                    if (venda == null)
                    {
                        _db.Database.ExecuteSqlCommand("INSERT INTO card.tbRecebimentoVenda" +
                                                       " (nrCNPJ, nrNSU, cdERP, dtVenda, dsBandeira, vlVenda, qtParcelas, cdSacado, dsDetalhe)" +
                                                       " VALUES ('" + tbRecebimentoVenda.nrCNPJ + "'" +
                                                       ", '" + tbRecebimentoVenda.nrNSU + "'" +
                                                       ", '" + tbRecebimentoVenda.cdERP + "'" +
                                                       ", '" + DataBaseQueries.GetDate(tbRecebimentoVenda.dtVenda) + "'" +
                                                       //", " + tbRecebimentoVenda.cdAdquirente +
                                                       ", " + (tbRecebimentoVenda.dsBandeira == null ? "NULL" : "'" + tbRecebimentoVenda.dsBandeira + "'") +
                                                       ", " + tbRecebimentoVenda.vlVenda.ToString(CultureInfo.GetCultureInfo("en-GB")) +
                                                       ", " + tbRecebimentoVenda.qtParcelas +
                                                       ", " + (tbRecebimentoVenda.cdSacado != null ? "'" + tbRecebimentoVenda.cdSacado + "'" : "NULL") +
                                                       ", " + (tbRecebimentoVenda.dsDetalhe != null ? "'" + tbRecebimentoVenda.dsDetalhe + "'" : "NULL") +
                                                       ")");
                        _db.SaveChanges();
                        transaction.Commit();

                        // Obtém o id da venda
                        idRecebimentoVenda = _db.Database.SqlQuery <int>("SELECT V.idRecebimentoVenda" +
                                                                         " FROM card.tbRecebimentoVenda V (NOLOCK)" +
                                                                         " WHERE V.nrCNPJ = '" + tbRecebimentoVenda.nrCNPJ + "'" +
                                                                         " AND V.nrNSU = '" + tbRecebimentoVenda.nrNSU + "'" +
                                                                         " AND V.dtVenda = '" + DataBaseQueries.GetDate(tbRecebimentoVenda.dtVenda) + "'" +
                                                                         " AND V.cdERP = '" + tbRecebimentoVenda.cdERP + "'"
                                                                         )
                                             .FirstOrDefault();
                    }
                    else
                    {
                        _db.Database.ExecuteSqlCommand("UPDATE V" +
                                                       " SET V.dsBandeira = " + (tbRecebimentoVenda.dsBandeira == null ? "NULL" : "'" + tbRecebimentoVenda.dsBandeira + "'") +
                                                       //", V.nrNSU = '" + tbRecebimentoVenda.nrNSU + "'" +
                                                       ", V.vlVenda = " + tbRecebimentoVenda.vlVenda.ToString(CultureInfo.GetCultureInfo("en-GB")) +
                                                       ", V.qtParcelas = " + tbRecebimentoVenda.qtParcelas +
                                                       ", V.cdSacado = " + (tbRecebimentoVenda.cdSacado != null ? "'" + tbRecebimentoVenda.cdSacado + "'" : "NULL") +
                                                       ", V.dsDetalhe = " + (tbRecebimentoVenda.dsDetalhe != null ? "'" + tbRecebimentoVenda.dsDetalhe + "'" : "NULL") +
                                                       ", V.dsMensagem = NULL" +
                                                       ", V.dtAjuste = NULL" +
                                                       " FROM card.tbRecebimentoVenda V" +
                                                       " WHERE V.idRecebimentoVenda = " + venda.idRecebimentoVenda);
                        _db.SaveChanges();
                        transaction.Commit();

                        idRecebimentoVenda = venda.idRecebimentoVenda;
                    }

                    // Adiciona
                    //if (!idsRecebimentoVenda.Contains(idRecebimentoVenda))
                    idsRecebimentoVenda.Add(idRecebimentoVenda);
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    string json = JsonConvert.SerializeObject(vd);
                    string erro = String.Empty;
                    if (e is DbEntityValidationException)
                    {
                        erro = MensagemErro.getMensagemErro((DbEntityValidationException)e);
                    }
                    else
                    {
                        erro = e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message;
                    }
                    //throw new Exception("Venda: " + json + ". Erro: " + erro);
                    // Reporta o erro
                    retorno.Totais = new Dictionary <string, object>();
                    retorno.Totais.Add("erro", "Venda: " + json + ". Erro: " + erro);
                    break;
                }
            }


            // Avalia vendas que não foram atualizadas
            if (idsRecebimentoVenda.Count > 0 && param != null)
            {
                idsRecebimentoVenda = idsRecebimentoVenda.Distinct().ToList();
                string dtVenda = param.data.Substring(0, 4) + "-" + param.data.Substring(4, 2) + "-" + param.data.Substring(6, 2);
                string script  = "SELECT V.idRecebimentoVenda" +
                                 " FROM card.tbRecebimentoVenda V (NOLOCK)" +
                                 " JOIN cliente.empresa E (NOLOCK) ON E.nu_cnpj = V.nrCNPJ" +
                                 " WHERE V.dtVenda BETWEEN '" + dtVenda + "' AND '" + dtVenda + " 23:59:00'" +
                                 " AND " + (param.nrCNPJ == null ? "E.id_grupo = " + idGrupo : "V.nrCNPJ = '" + param.nrCNPJ + "'") +
                                 " AND V.idRecebimentoVenda NOT IN (" + string.Join(", ", idsRecebimentoVenda) + ")";
                int[] vendasASeremDeletadas = new int[0];
                try
                {
                    vendasASeremDeletadas = _db.Database.SqlQuery <int>(script).ToArray();
                }
                catch { }

                if (vendasASeremDeletadas != null && vendasASeremDeletadas.Length > 0)
                {
                    script = "UPDATE R" +
                             " SET R.idRecebimentoVenda = NULL" +
                             " FROM pos.Recebimento R" +
                             " JOIN card.tbRecebimentoVenda V ON R.idRecebimentoVenda = V.idRecebimentoVenda" +
                             " WHERE V.idRecebimentoVenda IN (" + string.Join(", ", vendasASeremDeletadas) + ")";
                    try
                    {
                        _db.Database.ExecuteSqlCommand(script);
                        // Deleta
                        script = "DELETE V" +
                                 " FROM card.tbRecebimentoVenda V" +
                                 " WHERE V.idRecebimentoVenda IN (" + string.Join(", ", vendasASeremDeletadas) + ")";
                        _db.Database.ExecuteSqlCommand(script);
                    }
                    catch { }
                }
            }

            semaforo.Release();
        }