Exemple #1
0
 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);
         }
     }
 }
Exemple #2
0
        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);
            }
        }