private void afterGrava() { if (pDadosNfRetorno.validarCampoObrigatorio()) { if (bsOs.Count > 0) { if (MessageBox.Show("Confirma processamento retorno ordem serviço do fornecedor?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { //Buscar proxima etapa para as os CamadaDados.Servicos.TRegistro_LanServicoEvolucao rEvolucao = this.InserirEvolucao(); if (rEvolucao == null) { MessageBox.Show("Obrigatorio informar proxima etapa para continuar processamento.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } List <CamadaDados.Servicos.TRegistro_LanServico> lOs = new List <CamadaDados.Servicos.TRegistro_LanServico>(); for (int i = 0; i < bsOs.Count; i++) { lOs.Add(bsOs[i] as CamadaDados.Servicos.TRegistro_LanServico); } try { CamadaNegocio.Servicos.TCN_LanServico.DevolverOSFornecedor(lOs, rEvolucao, vl_frete.Value, null); MessageBox.Show("Ordens de serviço processadas com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); this.DialogResult = DialogResult.OK; } catch (Exception ex) { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else { MessageBox.Show("Obrigatorio informar ordem serviço para processar retorno fornecedor.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
private void afterInserirEvolucao() { if (bsOrdemServico.Current != null) { CamadaDados.Servicos.TRegistro_LanServicoEvolucao regEvolucao = null; if ((bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.Count > 0) { regEvolucao = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.OrderByDescending(p => p.Dt_inicio).Take(1).ToList()[0]; } bool st_loteprocessado = false; if (regEvolucao != null) { if (regEvolucao.St_envterceiro) { object obj = new CamadaDados.Servicos.TCD_Lote_X_Servicos().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "c.id_os", vOperador = "=", vVL_Busca = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Id_os.ToString() } }, "b.st_registro"); if (obj != null) { if (obj.ToString().Trim().ToUpper().Equals("A")) { if (!(MessageBox.Show("Ordem serviço esta amarrada a um lote que ainda não foi enviado.\r\n" + "O lançamento de uma nova evolução ira desamarrar a ordem de serviço do lote.\r\r\r\n" + "Deseja continuar?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)) { return; } } else { st_loteprocessado = true; } } else if (!(MessageBox.Show("Ordem de serviço não foi enviada para fornecedor.\r\n" + "Deseja continuar?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)) { return; } //Verificar se o lote esta processado if (st_loteprocessado) { //Verificar se existe alguma nota de retorno para a os obj = new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento_Item().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_ose_lote x " + "inner join tb_ose_lote_x_servico y " + "on x.cd_empresa = y.cd_empresa " + "and x.id_lote = y.id_lote " + "inner join tb_ose_servico z " + "on y.cd_empresa = z.cd_empresa " + "and y.id_os = z.id_os " + "where x.nr_pedido = a.nr_pedido " + "and z.cd_produtoos = a.cd_produto " + "and nf.tp_movimento = 'E' " + "and isnull(nf.st_registro, 'A') <> 'C')" } }, "nf.nr_notafiscal"); if (obj == null) { if (!(MessageBox.Show("Não existe nota de devolução do produto desta ordem de serviço.\r\n" + "Deseja alterar etapa evolução mesmo assim?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)) { return; } } else { MessageBox.Show("Nota Fiscal de retorno Nº " + obj.ToString().Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } } using (TFLan_Evolucao_Ordem_Servico fEvolucao = new TFLan_Evolucao_Ordem_Servico()) { fEvolucao.TP_Ordem = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Tp_ordemstr; if (regEvolucao != null) { fEvolucao.Etapa_atual = regEvolucao.Id_etapastr; } if (fEvolucao.ShowDialog() == DialogResult.OK) { (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.ForEach(p => { p.St_evolucao = "E"; p.Dt_final = CamadaDados.UtilData.Data_Servidor(); p.Cd_tecnico = string.IsNullOrEmpty(p.Cd_tecnico) ? fEvolucao.rEvolucao.Cd_tecnico : p.Cd_tecnico; }); CamadaDados.Servicos.Cadastros.TList_EtapaOrdem lEtapa = CamadaNegocio.Servicos.Cadastros.TCN_EtapaOrdem.Buscar(fEvolucao.rEvolucao.Id_etapa.Value.ToString(), string.Empty, null); if (lEtapa.Count > 0) { fEvolucao.rEvolucao.St_iniciarOS = lEtapa[0].St_iniciarOSbool; fEvolucao.rEvolucao.St_finalizarOS = lEtapa[0].St_finalizarOSbool; fEvolucao.rEvolucao.St_envterceiro = lEtapa[0].St_envterceirobool; if (fEvolucao.rEvolucao.St_finalizarOS) { fEvolucao.rEvolucao.St_evolucao = "E"; fEvolucao.rEvolucao.Dt_final = CamadaDados.UtilData.Data_Servidor(); } } //Verificar se a etapa que esta sendo inserida nao e de Envio para terceiro if (fEvolucao.rEvolucao.St_envterceiro) { if (MessageBox.Show("Evolução exige envio da ordem serviço para fornecedor.\r\n" + "Deseja amarrar ordem a um lote ja existente?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { using (TFLanLoteAberto fLote = new TFLanLoteAberto()) { fLote.Cd_empresa = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Cd_empresa; if (fLote.ShowDialog() == DialogResult.OK) { if (fLote.rLote != null) { (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).rLoteServico = new CamadaDados.Servicos.TRegistro_Lote_X_Servicos() { Cd_empresa = fLote.rLote.Cd_empresa, Id_lote = fLote.rLote.Id_lote, Id_os = (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Id_os } } } ; } } } //Verificar se a etapa e de finalizacao if (fEvolucao.rEvolucao.St_finalizarOS) { (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).St_os = "FE"; (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).Dt_finalizada = DateTime.Now; } //Inserir novo registro (bsOrdemServico.Current as CamadaDados.Servicos.TRegistro_LanServico).lEvolucao.Add( fEvolucao.rEvolucao); bsOrdemServico.ResetCurrentItem(); } } } else { MessageBox.Show("Não existe ordem de serviço selecionada.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } }