protected void grdProduto_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "addObs") { try { var prodImpressao = ProdutoImpressaoDAO.Instance.GetElementByPrimaryKey(Glass.Conversoes.StrParaUint(e.CommandArgument.ToString())); uint idProdPedEsp = ProdutosPedidoEspelhoDAO.Instance.GetIdProdPedByEtiqueta(prodImpressao.NumEtiqueta); string obsAntiga = ((HiddenField)grdProduto.Rows[grdProduto.EditIndex].FindControl("hdfObs")).Value; string obsNova = ((TextBox)grdProduto.Rows[grdProduto.EditIndex].FindControl("txtObs")).Text; if (obsNova != null) { ProdutosPedidoEspelhoDAO.Instance.AtualizaObs(null, idProdPedEsp, obsNova); // Salva no log esta alteração, mesmo que o campo obs não exista nesta tabela // Põe a antiga observação em um objeto prodImpressao.Obs = obsAntiga; // Cria um objeto com a nova observação ProdutoImpressao prodImpressaoNovo = MetodosExtensao.Clonar(prodImpressao); prodImpressaoNovo.Obs = obsNova; LogAlteracaoDAO.Instance.LogProdutoImpressao(prodImpressao, prodImpressaoNovo); } } catch (Exception ex) { Glass.MensagemAlerta.ErrorMsg("Falha ao adicionar observação", ex, Page); } finally { grdProduto.EditIndex = -1; grdProduto.DataBind(); } } }
/// <summary> /// Realiza a leitura da expedição /// </summary> public void EfetuaLeitura(int idFunc, int idLiberarPedido, string numEtiqueta, int?idPedidoExp) { //Verifica se a etiqueta foi informada if (string.IsNullOrEmpty(numEtiqueta)) { throw new Exception("Informe a etiqueta."); } //Verifica se a liberação pode ser expedida. Glass.Data.DAL.LiberarPedidoDAO.Instance.ValidaLiberacaoParaExpedicaoBalcao((uint)idLiberarPedido); #region Multiplas Leituras com "P" if (numEtiqueta.ToUpper().Substring(0, 1).Equals("P")) { ProdutoPedidoProducaoDAO.Instance.ValidaEtiquetaProducao(null, ref numEtiqueta); var etiquetas = ProdutoPedidoProducaoDAO.Instance.GetEtiquetasByPedido(null, numEtiqueta.Substring(1).StrParaUint()); #region Salva na tabela de controle var idLeitura = LeituraEtiquetaPedidoPlanoCorteDAO.Instance.Insert(new LeituraEtiquetaPedidoPlanoCorte() { NumEtiquetaLida = numEtiqueta }); foreach (var e in etiquetas) { EtiquetaLidaPedidoPlanoCorteDAO.Instance.Insert(new EtiquetaLidaPedidoPlanoCorte() { IdLeituraEtiquetaPedPlanoCorte = idLeitura, NumEtiquetaReal = e }); } #endregion var erroEtq = new List <string>(); foreach (string e in etiquetas) { try { this.EfetuaLeitura(idFunc, idLiberarPedido, e, idPedidoExp); } catch { erroEtq.Add(e); } } if (erroEtq.Count > 0) { var erros = string.Join(",", erroEtq.ToArray()); ErroDAO.Instance.InserirFromException("Leitura com P", new Exception("Etiqueta: " + numEtiqueta + " Leituras: " + erros)); throw new Exception("Algumas leituras não foram efetuadas. Etiquetas: " + erros); } return; } #endregion if (numEtiqueta.Contains('=')) { var posicao = numEtiqueta.Split('-')[1].Split('/')[0].Split('.')[0].StrParaInt(); var intervaloEtiquetas = numEtiqueta.Split('/')[1].Split('='); var inicioIntervalo = intervaloEtiquetas[0].StrParaInt(); var fimIntervalo = intervaloEtiquetas[1].StrParaInt(); var produtosImpressao = ProdutoImpressaoDAO.Instance.GetByIdPedido(null, posicao, numEtiqueta.Split('-')[0].StrParaInt()).OrderBy(f => f.ItemEtiqueta); var etiquetas = new List <string>(); if (inicioIntervalo > fimIntervalo) { throw new Exception("item inicial maior que item final."); } if (fimIntervalo > produtosImpressao.Count()) { throw new Exception("Número de itens deve maior que a quantidade existente na posição."); } foreach (var item in produtosImpressao) { if (item.ItemEtiqueta >= inicioIntervalo && item.ItemEtiqueta <= fimIntervalo) { etiquetas.Add(item.IdPedido.ToString() + "-" + posicao + "." + item.ItemEtiqueta + "/" + item.QtdeProd); } } #region Salva na tabela de controle var idLeitura = LeituraEtiquetaPedidoPlanoCorteDAO.Instance.Insert(null, new LeituraEtiquetaPedidoPlanoCorte() { NumEtiquetaLida = numEtiqueta }); foreach (var e in etiquetas) { EtiquetaLidaPedidoPlanoCorteDAO.Instance.Insert(new EtiquetaLidaPedidoPlanoCorte() { IdLeituraEtiquetaPedPlanoCorte = idLeitura, NumEtiquetaReal = e }); } #endregion string msg = string.Empty; foreach (string e in etiquetas) { try { this.EfetuaLeitura(idFunc, idLiberarPedido, e, idPedidoExp); } catch (Exception ex) { msg = Glass.MensagemAlerta.FormatErrorMsg($"Falha ao marcar peça {e}.", ex); break; } } if (!string.IsNullOrEmpty(msg)) { throw new Exception(msg); } return; } using (var transaction = new GDATransaction()) { try { transaction.BeginTransaction(); //Verifica se a etiqueta é de chapa ou produção if (numEtiqueta.ToUpper().Substring(0, 1).Equals("N") || numEtiqueta.ToUpper().Substring(0, 1).Equals("R")) { ValidaLeituraChapaRetalho(transaction, idLiberarPedido, numEtiqueta, idPedidoExp); } else if (!numEtiqueta.ToUpper().Substring(0, 1).Equals("V")) { ValidaLeituraPeca(transaction, idLiberarPedido, numEtiqueta, idPedidoExp); } #region Volume if (numEtiqueta.ToUpper().Substring(0, 1).Equals("V")) { ServiceLocator.Current.GetInstance <Glass.PCP.Negocios.IVolumeFluxo>() .MarcaExpedicaoVolume(transaction, numEtiqueta, idLiberarPedido, true); } #endregion #region NF-e / Retalho else if (numEtiqueta.ToUpper().Substring(0, 1).Equals("N") || numEtiqueta.ToUpper().Substring(0, 1).Equals("R")) { var tipoEtiqueta = ProdutoImpressaoDAO.Instance.ObtemTipoEtiqueta(numEtiqueta); var idRetalho = tipoEtiqueta == ProdutoImpressaoDAO.TipoEtiqueta.Retalho ? Glass.Conversoes.StrParaUint(numEtiqueta.Substring(1, numEtiqueta.IndexOf('-') - 1)) : 0; var idProd = tipoEtiqueta == ProdutoImpressaoDAO.TipoEtiqueta.NotaFiscal ? ProdutosNfDAO.Instance.GetIdProdByEtiqueta(transaction, numEtiqueta) : RetalhoProducaoDAO.Instance.ObtemIdProd(transaction, idRetalho); if (idPedidoExp.GetValueOrDefault() == 0) { throw new Exception("Pedido não encontrado."); } var prodsPed = Glass.Data.DAL.ProdutosPedidoDAO.Instance.GetByPedidoProdutoForExpCarregamento(transaction, (uint)idPedidoExp.Value, idProd, true); // Agrupa os produtos do pedido pelo produto, buscando apenas aqueles que faltam dar saída var prodPed = MetodosExtensao.Agrupar(prodsPed.Where(f => f.Qtde > f.QtdSaida), new string[] { "IdProd" }, new string[] { "Qtde" }).FirstOrDefault(f => f.IdProd == idProd); var idProdImpressaoChapa = Glass.Data.DAL.ProdutoImpressaoDAO.Instance.ObtemIdProdImpressao(transaction, numEtiqueta, tipoEtiqueta); if (prodPed == null) { if (prodsPed.Count() == 0) { throw new Exception("Todas as peças deste pedido já foram expedidas."); } else { throw new Exception("Produto não encontrado no pedido ou já expedido."); } } //Faz o vinculo da chapa no corte para que a mesma não possa ser usada novamente Glass.Data.DAL.ChapaCortePecaDAO.Instance.Inserir(transaction, numEtiqueta, null, false, true); //Realiza a exp da chapa Glass.Data.DAL.ExpedicaoChapaDAO.Instance.Insert(transaction, new Glass.Data.Model.ExpedicaoChapa() { IdProdImpressaoChapa = (int)idProdImpressaoChapa, IdPedido = idPedidoExp.Value, SaidaBalcao = true, DataLeitura = DateTime.Now, IdFuncLeitura = idFunc }); //Marca no produto_impressão o id do pedido de expedição Glass.Data.DAL.ProdutoImpressaoDAO.Instance.AtualizaPedidoExpedicao(transaction, (uint)idPedidoExp, idProdImpressaoChapa); //Atualiza a chapa_trocada_devolvida marcando a mesma como utilizada ChapaTrocadaDevolvidaDAO.Instance.MarcarChapaComoUtilizada(transaction, numEtiqueta); MovEstoqueDAO.Instance.BaixaEstoqueChapa(transaction, (int)prodPed.IdProdPed, idProdImpressaoChapa); PedidoDAO.Instance.MarcaPedidoEntregue(transaction, prodPed.IdPedido); var idLoja = PedidoDAO.Instance.ObtemIdLoja(transaction, prodPed.IdPedido); if (PedidoDAO.Instance.GetTipoPedido(transaction, prodPed.IdPedido) != Glass.Data.Model.Pedido.TipoPedidoEnum.Producao) { ProdutoLojaDAO.Instance.RecalcularReserva(transaction, (int)idLoja, new List <int> { (int)prodPed.IdProd }); ProdutoLojaDAO.Instance.RecalcularLiberacao(transaction, (int)idLoja, new List <int> { (int)prodPed.IdProd }); } //Marca o retalho como vendido if (tipoEtiqueta == ProdutoImpressaoDAO.TipoEtiqueta.Retalho) { RetalhoProducaoDAO.Instance.AlteraSituacao(transaction, idRetalho, Glass.Data.Model.SituacaoRetalhoProducao.Vendido); } //Atualiza a situação do pedido PedidoDAO.Instance.AtualizaSituacaoProducao(transaction, (uint)idPedidoExp, null, DateTime.Now); } #endregion #region Pedido else { var idSetorCarregamento = SetorDAO.Instance.ObtemIdSetorExpCarregamento(transaction); var idsSetorEntregue = SetorDAO.Instance.ObterIdsSetorTipoEntregue(transaction); var idSetorLeitura = idsSetorEntregue?.Any(f => f > 0) ?? false?idsSetorEntregue.FirstOrDefault(f => f > 0) : 0; if (idSetorLeitura == 0) { throw new Exception("Não foi possível recuperar o setor de expedição de carregamento."); } ProdutoPedidoProducaoDAO.Instance.AtualizaSituacao(transaction, (uint)idFunc, null, numEtiqueta, (uint)idSetorLeitura, false, false, null, null, null, (uint?)idPedidoExp, 0, null, null, false, null, false, 0); } #endregion transaction.Commit(); transaction.Close(); } catch (Exception ex) { transaction.Rollback(); transaction.Close(); ErroDAO.Instance.InserirFromException("Expedição Balcão - Lib: " + idLiberarPedido + " - Etq:" + numEtiqueta, ex); throw ex; } } }
public override object Clone() { return(MetodosExtensao.Clonar(this, retalho)); }
public static string RetornaValorDetalhado(REL_GraficoAtendimentoFiltrosFixos tipoFiltro, string valor) { string[] codDetalhe = valor.Split(','); string retorno = string.Empty; switch (tipoFiltro) { case REL_GraficoAtendimentoFiltrosFixos.DetalheDeficiencia: List <string> valoresDetalhados = new List <string>(); foreach (var item in codDetalhe) { CFG_DeficienciaDetalhe def = new CFG_DeficienciaDetalhe { dfd_id = Convert.ToInt32(item) }; def = CFG_DeficienciaDetalheBO.GetDetalhamento(def); valoresDetalhados.Add(def.dfd_nome); } codDetalhe = valoresDetalhados.ToArray(); if (codDetalhe.Length == 1) { retorno = codDetalhe[0]; } else if (codDetalhe.Length == 2) { retorno = codDetalhe[0] + " e " + codDetalhe[1]; } else if (codDetalhe.Length >= 3) { string[] concat = new string[codDetalhe.Length - 1]; Array.Copy(codDetalhe, 0, concat, 0, codDetalhe.Length - 1); retorno = string.Join(", ", concat); retorno += " e " + codDetalhe[codDetalhe.Length - 1]; } else { retorno = string.Empty; } break; case REL_GraficoAtendimentoFiltrosFixos.FaixaIdade: retorno = codDetalhe.Length >= 2 ? codDetalhe[0] + " até " + codDetalhe[1] + " anos" : string.Empty; break; case REL_GraficoAtendimentoFiltrosFixos.Sexo: retorno = codDetalhe.Length >= 1 ? MetodosExtensao.SexoFormatado(Convert.ToInt32(codDetalhe[0])) : string.Empty; break; case REL_GraficoAtendimentoFiltrosFixos.PeriodoPreenchimento: retorno = codDetalhe.Length >= 2 ? codDetalhe[0] + " até " + codDetalhe[1] : string.Empty; break; case REL_GraficoAtendimentoFiltrosFixos.RacaCor: retorno = codDetalhe.Length >= 1 ? MetodosExtensao.RacaCorFormatado(Convert.ToInt32(codDetalhe[0])) : string.Empty; break; default: break; } return(retorno); }
/// <summary> /// Duplica o objeto atual. /// </summary> /// <returns></returns> public virtual object Clone() { return(MetodosExtensao.Clonar(this, _id)); }
public override object Clone() { return(MetodosExtensao.Clonar(this, produtoPedidoEspelho, NumeroPeca)); }